{
  "$schema": "https://shadcn-vue.com/schema/registry-item.json",
  "name": "auth-sign-in",
  "title": "Auth Sign In",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-vue/blocks/auth-sign-in/AuthSignIn.vue",
      "content": "<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { Github, Chrome } from 'lucide-vue-next'\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Input } from '@/components/ui/input'\nimport { Label } from '@/components/ui/label'\nimport { Button } from '@/components/ui/button'\nimport { Checkbox } from '@/components/ui/checkbox'\nimport { Separator } from '@/components/ui/separator'\n\nwithDefaults(\n  defineProps<{\n    title?: string\n    description?: string\n    signUpHref?: string\n    forgotPasswordHref?: string\n    oauthProviders?: Array<'github' | 'google'>\n  }>(),\n  {\n    title: 'Welcome back',\n    description: 'Sign in to your account to continue',\n    signUpHref: '/sign-up',\n    forgotPasswordHref: '/forgot-password',\n    oauthProviders: () => ['github', 'google'],\n  },\n)\n\nconst emit = defineEmits<{\n  (e: 'submit', payload: { email: string; password: string; remember: boolean }): void\n  (e: 'oauth', provider: 'github' | 'google'): void\n}>()\n\nconst email = ref('')\nconst password = ref('')\nconst remember = ref(false)\n\nfunction onSubmit() {\n  emit('submit', { email: email.value, password: password.value, remember: remember.value })\n}\n</script>\n\n<template>\n  <div class=\"bg-background flex min-h-svh items-center justify-center p-6\">\n    <Card class=\"w-full max-w-sm\">\n      <CardHeader class=\"text-center\">\n        <CardTitle class=\"text-2xl\">{{ title }}</CardTitle>\n        <CardDescription>{{ description }}</CardDescription>\n      </CardHeader>\n      <CardContent>\n        <form class=\"space-y-4\" @submit.prevent=\"onSubmit\">\n          <div class=\"grid gap-2\">\n            <Label for=\"email\">Email</Label>\n            <Input\n              id=\"email\"\n              v-model=\"email\"\n              type=\"email\"\n              placeholder=\"you@company.com\"\n              autocomplete=\"email\"\n              required\n            />\n          </div>\n          <div class=\"grid gap-2\">\n            <div class=\"flex items-center justify-between\">\n              <Label for=\"password\">Password</Label>\n              <a\n                :href=\"forgotPasswordHref\"\n                class=\"text-muted-foreground hover:text-foreground text-xs underline-offset-4 hover:underline\"\n              >\n                Forgot password?\n              </a>\n            </div>\n            <Input id=\"password\" v-model=\"password\" type=\"password\" autocomplete=\"current-password\" required />\n          </div>\n          <div class=\"flex items-center gap-2\">\n            <Checkbox id=\"remember\" v-model=\"remember\" />\n            <Label for=\"remember\" class=\"text-sm font-normal\">Remember me for 30 days</Label>\n          </div>\n          <Button type=\"submit\" class=\"w-full\">Sign in</Button>\n        </form>\n\n        <template v-if=\"oauthProviders.length > 0\">\n          <div class=\"my-6 flex items-center gap-3\">\n            <Separator class=\"flex-1\" />\n            <span class=\"text-muted-foreground text-xs uppercase\">or continue with</span>\n            <Separator class=\"flex-1\" />\n          </div>\n          <div class=\"grid gap-2\" :class=\"oauthProviders.length > 1 ? 'sm:grid-cols-2' : ''\">\n            <Button\n              v-if=\"oauthProviders.includes('github')\"\n              variant=\"outline\"\n              type=\"button\"\n              @click=\"emit('oauth', 'github')\"\n            >\n              <Github class=\"mr-2 size-4\" />GitHub\n            </Button>\n            <Button\n              v-if=\"oauthProviders.includes('google')\"\n              variant=\"outline\"\n              type=\"button\"\n              @click=\"emit('oauth', 'google')\"\n            >\n              <Chrome class=\"mr-2 size-4\" />Google\n            </Button>\n          </div>\n        </template>\n      </CardContent>\n      <CardFooter class=\"justify-center\">\n        <p class=\"text-muted-foreground text-sm\">\n          Don't have an account?\n          <a :href=\"signUpHref\" class=\"text-foreground font-medium underline-offset-4 hover:underline\">Sign up</a>\n        </p>\n      </CardFooter>\n    </Card>\n  </div>\n</template>\n",
      "type": "registry:block",
      "target": "~/app/components/blocks/AuthSignIn.vue"
    }
  ],
  "dependencies": [
    "lucide-vue-next"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/vue/card.json",
    "https://uipkge.dev/r/vue/input.json",
    "https://uipkge.dev/r/vue/label.json",
    "https://uipkge.dev/r/vue/button.json",
    "https://uipkge.dev/r/vue/checkbox.json",
    "https://uipkge.dev/r/vue/separator.json"
  ],
  "description": "Full-page sign-in surface. Email + password + remember-me form, forgot-password and sign-up links, optional GitHub/Google OAuth row. Emits `submit` with the form payload and `oauth` with the chosen provider; consumer wires the actual auth call. Link targets are configurable via props.",
  "categories": [
    "auth"
  ]
}