pending-wrapper-demo

PreviousNext
Docs
diceuiexample

Preview

Loading preview…
examples/pending-wrapper-demo.tsx
"use client";

import { Loader2 } from "lucide-react";
import * as React from "react";
import { Button } from "@/components/ui/button";
import { Pending } from "@/registry/default/components/pending";

export default function PendingWrapperDemo() {
  const [isSubmitting, setIsSubmitting] = React.useState(false);

  const onSubmit = React.useCallback(() => {
    setIsSubmitting(true);
    // Simulate API call
    setTimeout(() => {
      setIsSubmitting(false);
    }, 2000);
  }, []);

  return (
    <div className="flex flex-col items-center gap-4">
      <Pending isPending={isSubmitting}>
        <Button onClick={onSubmit}>
          {isSubmitting && <Loader2 className="size-4 animate-spin" />}
          {isSubmitting ? "Submitting..." : "Submit with Wrapper"}
        </Button>
      </Pending>

      <p className="text-muted-foreground text-sm">
        Using the <code className="text-xs">{"<Pending>"}</code> wrapper
        component
      </p>
    </div>
  );
}

Installation

npx shadcn@latest add @diceui/pending-wrapper-demo

Usage

import { PendingWrapperDemo } from "@/components/pending-wrapper-demo"
<PendingWrapperDemo />