select-wipe-demo

PreviousNext
Docs
pureuiexample

Preview

Loading preview…
registry/pure-ui/examples/select/select-wipe-demo.tsx
import { CheckCheck } from "lucide-react";

import {
  Select,
  SelectIcon,
  SelectItem,
  SelectItemText,
  SelectList,
  SelectPopup,
  SelectTrigger,
  SelectValue,
} from "@/registry/pure-ui/ui/select";

const fonts = [
  { label: "Sans-serif", value: "sans" },
  { label: "Serif", value: "serif" },
  { label: "Monospace", value: "mono" },
  { label: "Cursive", value: "cursive" },
];

export const SelectWipeDemo = () => {
  const sides = [
    "right",
    "top",
    "bottom",
    "left",
    "inline-start",
    "inline-end",
  ] as const;

  const alignments = ["start", "center", "end"] as const;

  return (
    <div className="flex flex-col items-center gap-3 w-full">
      {sides.map((side) => {
        return (
          <div
            className="flex flex-col gap-1 border-b border-border/40 last:border-b-0 pb-5 last:pb-0"
            key={side}
          >
            <p>
              Side:{" "}
              <span className="text-muted-foreground capitalize">{side}</span>
            </p>
            <div className="flex flex-wrap gap-4">
              {alignments.map((alignment) => {
                return (
                  <Select key={alignment + side} items={fonts}>
                    <SelectTrigger className="h-7 w-fit">
                      <SelectIcon>
                        <CheckCheck className="size-3.5 text-secondary-foreground" />
                      </SelectIcon>
                      <SelectValue
                        placeholder={`${alignment}`}
                        className="capitalize"
                      />
                    </SelectTrigger>
                    <SelectPopup
                      side={side}
                      align={alignment}
                      animationPreset="wipe"
                      className="min-w-45"
                    >
                      <SelectList>
                        {fonts.map((font) => {
                          return (
                            <SelectItem key={font.value} value={font.value}>
                              <SelectItemText>{font.label}</SelectItemText>
                            </SelectItem>
                          );
                        })}
                      </SelectList>
                    </SelectPopup>
                  </Select>
                );
              })}
            </div>
          </div>
        );
      })}
    </div>
  );
};

Installation

npx shadcn@latest add @pureui/select-wipe-demo

Usage

import { SelectWipeDemo } from "@/components/select-wipe-demo"
<SelectWipeDemo />