Home / File/ preset-selector.tsx — ui Source File

preset-selector.tsx — ui Source File

Architecture documentation for preset-selector.tsx, a tsx file in the ui codebase. 10 imports, 1 dependents.

File tsx ComponentRegistry UIPrimitives 10 imports 1 dependents 1 functions

Entity Profile

Dependency Diagram

graph LR
  bcef1eae_4d51_c200_0240_a1d4444e1067["preset-selector.tsx"]
  c9664b21_a307_cd72_cb44_078034b48f50["presets.ts"]
  bcef1eae_4d51_c200_0240_a1d4444e1067 --> c9664b21_a307_cd72_cb44_078034b48f50
  1d2a5291_032f_3b17_68dc_75e76c999c83["Preset"]
  bcef1eae_4d51_c200_0240_a1d4444e1067 --> 1d2a5291_032f_3b17_68dc_75e76c999c83
  1d141819_425e_b5fd_4c8e_32f7c6a42cf2["react"]
  bcef1eae_4d51_c200_0240_a1d4444e1067 --> 1d141819_425e_b5fd_4c8e_32f7c6a42cf2
  f5b0b1d9_de2f_9c31_0bcd_4adbd07581cb["navigation"]
  bcef1eae_4d51_c200_0240_a1d4444e1067 --> f5b0b1d9_de2f_9c31_0bcd_4adbd07581cb
  83796271_4368_20bb_9a9c_e1714e7440de["react-popover"]
  bcef1eae_4d51_c200_0240_a1d4444e1067 --> 83796271_4368_20bb_9a9c_e1714e7440de
  d39cd1e4_1b2d_9aa2_1d29_fd0b4bfb61c3["lucide-react"]
  bcef1eae_4d51_c200_0240_a1d4444e1067 --> d39cd1e4_1b2d_9aa2_1d29_fd0b4bfb61c3
  79081a1f_55a3_945a_fb8c_d53d6d3eab81["utils"]
  bcef1eae_4d51_c200_0240_a1d4444e1067 --> 79081a1f_55a3_945a_fb8c_d53d6d3eab81
  aa2f3ec6_f291_3763_88ec_65a3f5ad5939["button"]
  bcef1eae_4d51_c200_0240_a1d4444e1067 --> aa2f3ec6_f291_3763_88ec_65a3f5ad5939
  64c05bed_da32_06a4_3b53_12b3830eb50b["command"]
  bcef1eae_4d51_c200_0240_a1d4444e1067 --> 64c05bed_da32_06a4_3b53_12b3830eb50b
  e33b0d79_0534_28ec_a112_ac16ee736e09["popover"]
  bcef1eae_4d51_c200_0240_a1d4444e1067 --> e33b0d79_0534_28ec_a112_ac16ee736e09
  f546dde4_68c5_f623_9286_65aeda13ccc5["page.tsx"]
  f546dde4_68c5_f623_9286_65aeda13ccc5 --> bcef1eae_4d51_c200_0240_a1d4444e1067
  style bcef1eae_4d51_c200_0240_a1d4444e1067 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"use client"

import * as React from "react"
import { useRouter } from "next/navigation"
import { PopoverProps } from "@radix-ui/react-popover"
import { Check, ChevronsUpDown } from "lucide-react"

import { cn } from "@/lib/utils"
import { Button } from "@/registry/new-york/ui/button"
import {
  Command,
  CommandEmpty,
  CommandGroup,
  CommandInput,
  CommandItem,
  CommandList,
} from "@/registry/new-york/ui/command"
import {
  Popover,
  PopoverContent,
  PopoverTrigger,
} from "@/registry/new-york/ui/popover"

import { Preset } from "../data/presets"

interface PresetSelectorProps extends PopoverProps {
  presets: Preset[]
}

export function PresetSelector({ presets, ...props }: PresetSelectorProps) {
  const [open, setOpen] = React.useState(false)
  const [selectedPreset, setSelectedPreset] = React.useState<Preset>()
  const router = useRouter()

  return (
    <Popover open={open} onOpenChange={setOpen} {...props}>
      <PopoverTrigger asChild>
        <Button
          variant="outline"
          role="combobox"
          aria-label="Load a preset..."
          aria-expanded={open}
          className="flex-1 justify-between md:max-w-[200px] lg:max-w-[300px]"
        >
          {selectedPreset ? selectedPreset.name : "Load a preset..."}
          <ChevronsUpDown className="opacity-50" />
        </Button>
      </PopoverTrigger>
      <PopoverContent className="w-[300px] p-0">
        <Command>
          <CommandInput placeholder="Search presets..." />
          <CommandList>
            <CommandEmpty>No presets found.</CommandEmpty>
            <CommandGroup heading="Examples">
              {presets.map((preset) => (
                <CommandItem
                  key={preset.id}
                  onSelect={() => {
                    setSelectedPreset(preset)
                    setOpen(false)
                  }}
                >
                  {preset.name}
                  <Check
                    className={cn(
                      "ml-auto",
                      selectedPreset?.id === preset.id
                        ? "opacity-100"
                        : "opacity-0"
                    )}
                  />
                </CommandItem>
              ))}
            </CommandGroup>
            <CommandGroup className="pt-0">
              <CommandItem onSelect={() => router.push("/examples")}>
                More examples
              </CommandItem>
            </CommandGroup>
          </CommandList>
        </Command>
      </PopoverContent>
    </Popover>
  )
}

Subdomains

Functions

Dependencies

  • Preset
  • button
  • command
  • lucide-react
  • navigation
  • popover
  • presets.ts
  • react
  • react-popover
  • utils

Frequently Asked Questions

What does preset-selector.tsx do?
preset-selector.tsx is a source file in the ui codebase, written in tsx. It belongs to the ComponentRegistry domain, UIPrimitives subdomain.
What functions are defined in preset-selector.tsx?
preset-selector.tsx defines 1 function(s): PresetSelector.
What does preset-selector.tsx depend on?
preset-selector.tsx imports 10 module(s): Preset, button, command, lucide-react, navigation, popover, presets.ts, react, and 2 more.
What files import preset-selector.tsx?
preset-selector.tsx is imported by 1 file(s): page.tsx.
Where is preset-selector.tsx in the architecture?
preset-selector.tsx is located at deprecated/www/app/(app)/examples/playground/components/preset-selector.tsx (domain: ComponentRegistry, subdomain: UIPrimitives, directory: deprecated/www/app/(app)/examples/playground/components).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free