| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- "use client";
- import { useState } from "react";
- import { useRouter } from "next/navigation";
- import { createLayoutConfiguration } from "@/app/actions/layout-configurations";
- import { Button } from "@/components/ui/button";
- import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog";
- import { Input } from "@/components/ui/input";
- import { Label } from "@/components/ui/label";
- import { toast } from "@/hooks/use-toast";
- import { Plus } from "lucide-react";
- export function CreateLayoutConfigurationDialog() {
- const [open, setOpen] = useState(false);
- const [name, setName] = useState("");
- const [loading, setLoading] = useState(false);
- const router = useRouter();
- async function handleSubmit(e: React.FormEvent) {
- e.preventDefault();
- if (!name.trim()) {
- toast({
- title: "Error",
- description: "Please enter a configuration name",
- variant: "destructive",
- });
- return;
- }
- setLoading(true);
- try {
- const result = await createLayoutConfiguration(name.trim());
- if (result.success) {
- toast({
- title: "Success",
- description: "Layout configuration created successfully",
- });
- setOpen(false);
- setName("");
- router.refresh();
- } else {
- toast({
- title: "Error",
- description: result.error,
- variant: "destructive",
- });
- }
- } catch {
- toast({
- title: "Error",
- description: "Failed to create layout configuration",
- variant: "destructive",
- });
- } finally {
- setLoading(false);
- }
- }
- return (
- <Dialog open={open} onOpenChange={setOpen}>
- <DialogTrigger asChild>
- <Button>
- <Plus className="mr-2 h-4 w-4" />
- Create Configuration
- </Button>
- </DialogTrigger>
- <DialogContent>
- <DialogHeader>
- <DialogTitle>Create New Layout Configuration</DialogTitle>
- <DialogDescription>
- Enter a name for your new layout configuration.
- </DialogDescription>
- </DialogHeader>
- <form onSubmit={handleSubmit}>
- <div className="grid gap-4 py-4">
- <div className="grid gap-2">
- <Label htmlFor="name">Configuration Name</Label>
- <Input
- id="name"
- value={name}
- onChange={(e) => setName(e.target.value)}
- placeholder="Enter configuration name"
- disabled={loading}
- />
- </div>
- </div>
- <DialogFooter>
- <Button type="submit" disabled={loading}>
- {loading ? "Creating..." : "Create"}
- </Button>
- </DialogFooter>
- </form>
- </DialogContent>
- </Dialog>
- );
- }
|