12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import { Form } from '@inertiajs/react';
- import { useRef } from 'react';
- import ProfileController from '@/actions/App/Http/Controllers/Settings/ProfileController';
- import { HeadingSmall } from '@/common/HeadingSmall';
- import { InputError } from '@/common/InputError';
- import { Button } from '@/shadcn/button';
- import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogTitle, DialogTrigger } from '@/shadcn/dialog';
- import { Input } from '@/shadcn/input';
- import { Label } from '@/shadcn/label';
- export function DeleteUser() {
- const passwordInput = useRef<HTMLInputElement>(null);
- return (
- <div className="space-y-6">
- <HeadingSmall title="Delete account" description="Delete your account and all of its resources" />
- <div className="space-y-4 rounded-lg border border-red-100 bg-red-50 p-4 dark:border-red-200/10 dark:bg-red-700/10">
- <div className="relative space-y-0.5 text-red-600 dark:text-red-100">
- <p className="font-medium">Warning</p>
- <p className="text-sm">Please proceed with caution, this cannot be undone.</p>
- </div>
- <Dialog>
- <DialogTrigger asChild>
- <Button variant="destructive">Delete account</Button>
- </DialogTrigger>
- <DialogContent>
- <DialogTitle>Are you sure you want to delete your account?</DialogTitle>
- <DialogDescription>
- Once your account is deleted, all of its resources and data will also be permanently deleted. Please enter your password
- to confirm you would like to permanently delete your account.
- </DialogDescription>
- <Form
- {...ProfileController.destroy.form()}
- options={{
- preserveScroll: true,
- }}
- onError={() => passwordInput.current?.focus()}
- resetOnSuccess
- className="space-y-6"
- >
- {({ resetAndClearErrors, processing, errors }) => (
- <>
- <div className="grid gap-2">
- <Label htmlFor="password" className="sr-only">
- Password
- </Label>
- <Input
- id="password"
- type="password"
- name="password"
- ref={passwordInput}
- placeholder="Password"
- autoComplete="current-password"
- />
- <InputError message={errors.password} />
- </div>
- <DialogFooter className="gap-2">
- <DialogClose asChild>
- <Button variant="secondary" onClick={() => resetAndClearErrors()}>
- Cancel
- </Button>
- </DialogClose>
- <Button variant="destructive" disabled={processing} asChild>
- <button type="submit">Delete account</button>
- </Button>
- </DialogFooter>
- </>
- )}
- </Form>
- </DialogContent>
- </Dialog>
- </div>
- </div>
- );
- }
|