input-group-dropdown-demo

PreviousNext
Docs
kanpekiexample

Preview

Loading preview…
registry/examples/input-group/input-group-dropdown-demo.tsx
"use client";

import { ChevronDownIcon } from "lucide-react";
import { useState } from "react";
import { InputGroup } from "~/registry/ui/input-group";
import { Menu } from "~/registry/ui/menu";
import { Popover } from "~/registry/ui/popover";

export function InputGroupDropdown() {
  const [selectedDomain, setSelectedDomain] = useState(".com");

  return (
    <InputGroup.Root>
      <InputGroup.Input placeholder="example" />
      <InputGroup.Addon align="inline-end">
        <Menu.Root>
          <InputGroup.Button>
            {selectedDomain}
            <ChevronDownIcon />
          </InputGroup.Button>
          <Popover.Content>
            <Menu.Content>
              <Menu.Item onAction={() => setSelectedDomain(".com")}>
                .com
              </Menu.Item>
              <Menu.Item onAction={() => setSelectedDomain(".org")}>
                .org
              </Menu.Item>
              <Menu.Item onAction={() => setSelectedDomain(".net")}>
                .net
              </Menu.Item>
              <Menu.Item onAction={() => setSelectedDomain(".io")}>
                .io
              </Menu.Item>
            </Menu.Content>
          </Popover.Content>
        </Menu.Root>
      </InputGroup.Addon>
    </InputGroup.Root>
  );
}

Installation

npx shadcn@latest add @kanpeki/input-group-dropdown-demo

Usage

import { InputGroupDropdownDemo } from "@/components/input-group-dropdown-demo"
<InputGroupDropdownDemo />