Learning
shadcn/ui

Gyakorlati példák

Login form, Dialog/Modal, Dropdown menu és Toast értesítések minták shadcn/ui-val.

Gyakorlati példák

Login form

"use client"

import { useState } from "react"
import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"

export default function LoginPage() {
  const [isLoading, setIsLoading] = useState(false)

  async function handleSubmit(e: React.FormEvent) {
    e.preventDefault()
    setIsLoading(true)
    setIsLoading(false)
  }

  return (
    <div className="min-h-screen flex items-center justify-center">
      <Card className="w-[400px]">
        <CardHeader>
          <CardTitle className="text-2xl">Bejelentkezés</CardTitle>
          <CardDescription>Add meg az adataidat a folytatáshoz</CardDescription>
        </CardHeader>
        <CardContent>
          <form onSubmit={handleSubmit} className="space-y-4">
            <div className="space-y-2">
              <Label htmlFor="email">Email</Label>
              <Input id="email" type="email" required />
            </div>
            <div className="space-y-2">
              <Label htmlFor="password">Jelszó</Label>
              <Input id="password" type="password" required />
            </div>
            <Button type="submit" className="w-full" disabled={isLoading}>
              {isLoading ? "Betöltés..." : "Bejelentkezés"}
            </Button>
          </form>
        </CardContent>
      </Card>
    </div>
  )
}

Dialog / Modal

"use client"

import { Button } from "@/components/ui/button"
import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"

export default function ExampleDialog() {
  return (
    <Dialog>
      <DialogTrigger asChild>
        <Button variant="outline">Megnyitás</Button>
      </DialogTrigger>
      <DialogContent>
        <DialogHeader>
          <DialogTitle>Cím</DialogTitle>
          <DialogDescription>Leírás.</DialogDescription>
        </DialogHeader>
        <DialogFooter>
          <Button>Mentés</Button>
        </DialogFooter>
      </DialogContent>
    </Dialog>
  )
}

Rövid összefoglaló

  • Dialog/Dropdown/Toast komponensek Radix alapú interakciók.
  • Next.js-ben az interaktív példák jellemzően "use client"-et igényelnek.

On this page