{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "card-login-tailwind",
  "type": "registry:item",
  "title": "Card Login (Tailwind)",
  "description": "A login card component with email/password fields and social login options.",
  "registryDependencies": [
    "https://roiui.com/r/badge-tailwind.json",
    "https://roiui.com/r/button-tailwind.json",
    "https://roiui.com/r/card-tailwind.json",
    "https://roiui.com/r/checkbox-tailwind.json",
    "https://roiui.com/r/field-tailwind.json"
  ],
  "files": [
    {
      "path": "registry/brook/tailwind/blocks/card-login/components/card-login.tsx",
      "content": "\"use client\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { Badge } from \"@/registry/brook/tailwind/ui/badge\";\nimport { Button } from \"@/registry/brook/tailwind/ui/button\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"@/registry/brook/tailwind/ui/card\";\nimport { Checkbox, CheckboxIndicator } from \"@/registry/brook/tailwind/ui/checkbox\";\nimport { Field, FieldError, FieldLabel } from \"@/registry/brook/tailwind/ui/field\";\nimport { Form, FormActions, FormGroup } from \"@/registry/brook/tailwind/ui/form\";\nimport { Input } from \"@/registry/brook/tailwind/ui/input\";\n\nexport function CardLogin() {\n  const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    const formData = new FormData(e.currentTarget);\n    console.log(\"Form submitted:\", Object.fromEntries(formData));\n  };\n\n  return (\n    <Card className={cn(\"!p-5 mx-auto w-full max-w-[440px] rounded-[var(--radius-lg)]\", \"max-sm:!p-4\")}>\n      <CardHeader>\n        <CardTitle className={cn(\"ml-1\", \"max-sm:text-xl max-sm:leading-[1.3]\")}>Sign In</CardTitle>\n      </CardHeader>\n      <CardContent>\n        <Form onSubmit={handleSubmit}>\n          <FormGroup>\n            <Field className=\"pb-1\">\n              <FieldLabel className={cn(\"ml-1\", \"max-sm:text-sm\")}>Email</FieldLabel>\n              <Input\n                autoComplete=\"email\"\n                name=\"email\"\n                placeholder=\"Enter your email…\"\n                required\n                spellCheck={false}\n                type=\"email\"\n              />\n              <FieldError />\n            </Field>\n\n            <Field>\n              <div className={cn(\"flex w-full items-center justify-between\", \"max-sm:mb-1.5\")}>\n                <FieldLabel className={cn(\"ml-1\", \"max-sm:text-sm\")}>Password</FieldLabel>\n                <button\n                  className={cn(\n                    \"mr-1 cursor-pointer border-none bg-transparent p-0 font-light text-[var(--secondary-foreground)] text-sm leading-5 transition-colors duration-200\",\n                    \"hover:text-[var(--foreground)]\",\n                    \"max-sm:mr-0 max-sm:min-h-11 max-sm:p-2 max-sm:text-sm\"\n                  )}\n                  type=\"button\"\n                >\n                  Forgot password?\n                </button>\n              </div>\n              <Input\n                autoComplete=\"current-password\"\n                name=\"password\"\n                placeholder=\"Enter your password…\"\n                required\n                type=\"password\"\n              />\n              <FieldError />\n            </Field>\n\n            <label\n              className={cn(\n                \"mt-2 ml-1 flex cursor-pointer items-center gap-2 font-light text-sm leading-5\",\n                \"max-sm:min-h-11 max-sm:items-center max-sm:gap-2.5 max-sm:text-sm\"\n              )}\n              htmlFor=\"remember-me\"\n            >\n              <Checkbox defaultChecked={false} id=\"remember-me\" name=\"rememberMe\">\n                <CheckboxIndicator>\n                  <Check size={16} strokeWidth={3} />\n                </CheckboxIndicator>\n              </Checkbox>\n              <span\n                className={cn(\n                  \"cursor-pointer text-[var(--secondary-foreground)]\",\n                  \"hover:text-[var(--foreground)]\",\n                  \"max-sm:text-sm\"\n                )}\n              >\n                Remember me\n              </span>\n            </label>\n          </FormGroup>\n\n          <FormActions>\n            <Button\n              className=\"relative w-full [:active,[data-pressed]]:scale-[0.993]\"\n              type=\"submit\"\n            >\n              Sign In\n            </Button>\n          </FormActions>\n        </Form>\n      </CardContent>\n      <div className=\"flex items-center gap-4\">\n        <div className=\"h-px flex-1 bg-[var(--border)]\" />\n        <span\n          className={cn(\"px-2 font-normal text-[var(--muted-foreground)] text-xs leading-5\", \"max-sm:text-[0.8125rem]\")}\n        >\n          OR\n        </span>\n        <div className=\"h-px flex-1 bg-[var(--border)]\" />\n      </div>\n      <div className=\"flex flex-col gap-3\">\n        <Button\n          className={cn(\n            \"relative flex w-full gap-2 [:active,[data-pressed]]:scale-[0.993]\",\n            \"max-sm:min-h-11 max-sm:gap-2.5 max-sm:text-[0.9375rem]\"\n          )}\n          variant=\"outline\"\n        >\n          <AppleIcon className={cn(\"-ml-2 h-5 w-5\", \"max-sm:-ml-1 max-sm:h-[1.125rem] max-sm:w-[1.125rem]\")} />\n          Apple\n        </Button>\n        <Button\n          className={cn(\n            \"relative flex w-full gap-2 [:active,[data-pressed]]:scale-[0.993]\",\n            \"max-sm:min-h-11 max-sm:gap-2.5 max-sm:text-[0.9375rem]\"\n          )}\n          variant=\"outline\"\n        >\n          <GoogleIcon className={cn(\"h-5 w-5\", \"max-sm:h-[1.125rem] max-sm:w-[1.125rem]\")} />\n          Google\n          <Badge className={cn(\"absolute right-3\", \"max-sm:right-2\")} size=\"sm\" variant=\"info\">\n            Last used\n          </Badge>\n        </Button>\n      </div>\n      <div\n        className={cn(\n          \"-ml-5 -mr-5 -mb-5 -mt-2 w-[calc(100%+40px)] rounded-b-[var(--radius-lg)] bg-[var(--mix-card-35-trans)] py-5 text-center text-sm leading-5\",\n          \"max-sm:-ml-4 max-sm:-mr-4 max-sm:-mb-4 max-sm:w-[calc(100%+2rem)] max-sm:py-4 max-sm:text-[0.9375rem]\"\n        )}\n      >\n        <span className=\"text-[var(--muted-foreground)]\">No account? </span>\n        <button\n          className=\"cursor-pointer border-none bg-transparent p-0 font-inherit text-[var(--secondary-foreground)] hover:text-[var(--foreground)]\"\n          type=\"button\"\n        >\n          Sign up\n        </button>\n      </div>\n    </Card>\n  );\n}\n\nfunction AppleIcon({ className }: { className?: string }) {\n  return (\n    <svg aria-hidden=\"true\" className={className} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n}\n\nfunction GoogleIcon({ className }: { className?: string }) {\n  return (\n    <svg aria-hidden=\"true\" className={className} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path\n        d=\"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n}\n",
      "type": "registry:file",
      "target": "~/components/blocks/card-login/card-login.tsx"
    }
  ]
}