diff --git a/apps/ui/components/command-menu.tsx b/apps/ui/components/command-menu.tsx index d3963435e..0615c4447 100644 --- a/apps/ui/components/command-menu.tsx +++ b/apps/ui/components/command-menu.tsx @@ -8,7 +8,7 @@ import { Search01Icon, } from "@hugeicons/core-free-icons"; import { HugeiconsIcon } from "@hugeicons/react"; -import { useRouter } from "next/navigation"; +import Link from "next/link"; import type { ComponentProps } from "react"; import * as React from "react"; import { useConfig } from "@/hooks/use-config"; @@ -53,7 +53,6 @@ export function CommandMenu({ tree: typeof source.pageTree; navItems?: { href: string; label: string }[]; }) { - const router = useRouter(); const isMac = useIsMac(); const [config] = useConfig(); const { copyToClipboard } = useCopyToClipboard(); @@ -142,14 +141,6 @@ export function CommandMenu({ [packageManager], ); - const handleItemClick = React.useCallback( - (item: PageItem) => { - setOpen(false); - router.push(item.url); - }, - [router], - ); - React.useEffect(() => { const down = (e: KeyboardEvent) => { if ((e.key === "k" && (e.metaKey || e.ctrlKey)) || e.key === "/") { @@ -206,9 +197,14 @@ export function CommandMenu({ {(item: PageItem) => ( handleItemClick(item)} - value={item.value} + render={ + setOpen(false)} + /> + } >
- Go to Page + Go to Page
{copyPayload && ( -
+
{copyPayload} {isMac ? "⌘" : "Ctrl"} diff --git a/apps/ui/public/r/command.json b/apps/ui/public/r/command.json index 88db68254..a64e8e7a9 100644 --- a/apps/ui/public/r/command.json +++ b/apps/ui/public/r/command.json @@ -11,7 +11,7 @@ "files": [ { "path": "registry/default/ui/command.tsx", - "content": "\"use client\";\n\nimport { Dialog as CommandDialogPrimitive } from \"@base-ui/react/dialog\";\nimport { SearchIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"@/registry/default/lib/utils\";\nimport {\n Autocomplete,\n AutocompleteCollection,\n AutocompleteEmpty,\n AutocompleteGroup,\n AutocompleteGroupLabel,\n AutocompleteInput,\n AutocompleteItem,\n AutocompleteList,\n AutocompleteSeparator,\n} from \"@/registry/default/ui/autocomplete\";\n\nconst CommandInputContext = React.createContext<{\n inputRef: React.RefObject | null;\n}>({\n inputRef: null,\n});\n\nconst CommandDialog = CommandDialogPrimitive.Root;\n\nconst CommandDialogPortal = CommandDialogPrimitive.Portal;\n\nfunction CommandDialogTrigger(props: CommandDialogPrimitive.Trigger.Props) {\n return (\n \n );\n}\n\nfunction CommandDialogBackdrop({\n className,\n ...props\n}: CommandDialogPrimitive.Backdrop.Props) {\n return (\n \n );\n}\n\nfunction CommandDialogViewport({\n className,\n ...props\n}: CommandDialogPrimitive.Viewport.Props) {\n return (\n \n );\n}\n\nfunction CommandDialogPopup({\n className,\n children,\n ...props\n}: CommandDialogPrimitive.Popup.Props) {\n const inputRef = React.useRef(null);\n\n return (\n \n \n \n \n \n {children}\n \n \n \n \n );\n}\n\nfunction Command({\n autoHighlight = \"always\",\n keepHighlight = true,\n open = true,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandInput({\n className,\n placeholder = undefined,\n ...props\n}: React.ComponentProps) {\n const { inputRef } = React.useContext(CommandInputContext);\n\n return (\n
\n }\n {...props}\n />\n
\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandEmpty({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandPanel({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandGroupLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandCollection({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n \n );\n}\n\nfunction CommandFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Command,\n CommandCollection,\n CommandDialog,\n CommandDialogPopup,\n CommandDialogTrigger,\n CommandEmpty,\n CommandFooter,\n CommandGroup,\n CommandGroupLabel,\n CommandInput,\n CommandItem,\n CommandList,\n CommandPanel,\n CommandSeparator,\n CommandShortcut,\n};\n", + "content": "\"use client\";\n\nimport { Dialog as CommandDialogPrimitive } from \"@base-ui/react/dialog\";\nimport { SearchIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { cn } from \"@/registry/default/lib/utils\";\nimport {\n Autocomplete,\n AutocompleteCollection,\n AutocompleteEmpty,\n AutocompleteGroup,\n AutocompleteGroupLabel,\n AutocompleteInput,\n AutocompleteItem,\n AutocompleteList,\n AutocompleteSeparator,\n} from \"@/registry/default/ui/autocomplete\";\n\nconst CommandDialog = CommandDialogPrimitive.Root;\n\nconst CommandDialogPortal = CommandDialogPrimitive.Portal;\n\nfunction CommandDialogTrigger(props: CommandDialogPrimitive.Trigger.Props) {\n return (\n \n );\n}\n\nfunction CommandDialogBackdrop({\n className,\n ...props\n}: CommandDialogPrimitive.Backdrop.Props) {\n return (\n \n );\n}\n\nfunction CommandDialogViewport({\n className,\n ...props\n}: CommandDialogPrimitive.Viewport.Props) {\n return (\n \n );\n}\n\nfunction CommandDialogPopup({\n className,\n children,\n ...props\n}: CommandDialogPrimitive.Popup.Props) {\n return (\n \n \n \n \n {children}\n \n \n \n );\n}\n\nfunction Command({\n autoHighlight = \"always\",\n keepHighlight = true,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandInput({\n className,\n placeholder = undefined,\n ...props\n}: React.ComponentProps) {\n return (\n
\n }\n {...props}\n />\n
\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandEmpty({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandPanel({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandGroupLabel({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandCollection({\n ...props\n}: React.ComponentProps) {\n return ;\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n \n );\n}\n\nfunction CommandFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nexport {\n Command,\n CommandCollection,\n CommandDialog,\n CommandDialogPopup,\n CommandDialogTrigger,\n CommandEmpty,\n CommandFooter,\n CommandGroup,\n CommandGroupLabel,\n CommandInput,\n CommandItem,\n CommandList,\n CommandPanel,\n CommandSeparator,\n CommandShortcut,\n};\n", "type": "registry:ui" } ] diff --git a/apps/ui/public/r/menu.json b/apps/ui/public/r/menu.json index fb536a1e3..163287419 100644 --- a/apps/ui/public/r/menu.json +++ b/apps/ui/public/r/menu.json @@ -8,7 +8,7 @@ "files": [ { "path": "registry/default/ui/menu.tsx", - "content": "\"use client\";\n\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { cn } from \"@/registry/default/lib/utils\";\n\nconst Menu = MenuPrimitive.Root;\n\nconst MenuPortal = MenuPrimitive.Portal;\n\nfunction MenuTrigger(props: MenuPrimitive.Trigger.Props) {\n return ;\n}\n\nfunction MenuPopup({\n children,\n className,\n sideOffset = 4,\n align = \"center\",\n alignOffset,\n side = \"bottom\",\n ...props\n}: MenuPrimitive.Popup.Props & {\n align?: MenuPrimitive.Positioner.Props[\"align\"];\n sideOffset?: MenuPrimitive.Positioner.Props[\"sideOffset\"];\n alignOffset?: MenuPrimitive.Positioner.Props[\"alignOffset\"];\n side?: MenuPrimitive.Positioner.Props[\"side\"];\n}) {\n return (\n \n \n \n
\n {children}\n
\n \n \n
\n );\n}\n\nfunction MenuGroup(props: MenuPrimitive.Group.Props) {\n return ;\n}\n\nfunction MenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n \n );\n}\n\nfunction MenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: MenuPrimitive.CheckboxItem.Props) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction MenuRadioGroup(props: MenuPrimitive.RadioGroup.Props) {\n return ;\n}\n\nfunction MenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction MenuGroupLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean;\n}) {\n return (\n \n );\n}\n\nfunction MenuSeparator({ className, ...props }: MenuPrimitive.Separator.Props) {\n return (\n \n );\n}\n\nfunction MenuShortcut({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n \n );\n}\n\nfunction MenuSub(props: MenuPrimitive.SubmenuRoot.Props) {\n return ;\n}\n\nfunction MenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n \n {children}\n \n \n );\n}\n\nfunction MenuSubPopup({\n className,\n sideOffset = 0,\n alignOffset,\n align = \"start\",\n ...props\n}: MenuPrimitive.Popup.Props & {\n align?: MenuPrimitive.Positioner.Props[\"align\"];\n sideOffset?: MenuPrimitive.Positioner.Props[\"sideOffset\"];\n alignOffset?: MenuPrimitive.Positioner.Props[\"alignOffset\"];\n}) {\n const defaultAlignOffset = align !== \"center\" ? -5 : undefined;\n\n return (\n \n );\n}\n\nexport {\n Menu,\n Menu as DropdownMenu,\n MenuPortal,\n MenuPortal as DropdownMenuPortal,\n MenuTrigger,\n MenuTrigger as DropdownMenuTrigger,\n MenuPopup,\n MenuPopup as DropdownMenuContent,\n MenuGroup,\n MenuGroup as DropdownMenuGroup,\n MenuItem,\n MenuItem as DropdownMenuItem,\n MenuCheckboxItem,\n MenuCheckboxItem as DropdownMenuCheckboxItem,\n MenuRadioGroup,\n MenuRadioGroup as DropdownMenuRadioGroup,\n MenuRadioItem,\n MenuRadioItem as DropdownMenuRadioItem,\n MenuGroupLabel,\n MenuGroupLabel as DropdownMenuLabel,\n MenuSeparator,\n MenuSeparator as DropdownMenuSeparator,\n MenuShortcut,\n MenuShortcut as DropdownMenuShortcut,\n MenuSub,\n MenuSub as DropdownMenuSub,\n MenuSubTrigger,\n MenuSubTrigger as DropdownMenuSubTrigger,\n MenuSubPopup,\n MenuSubPopup as DropdownMenuSubContent,\n};\n", + "content": "\"use client\";\n\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\";\nimport { ChevronRightIcon } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { cn } from \"@/registry/default/lib/utils\";\n\nconst Menu = MenuPrimitive.Root;\n\nconst MenuPortal = MenuPrimitive.Portal;\n\nfunction MenuTrigger(props: MenuPrimitive.Trigger.Props) {\n return ;\n}\n\nfunction MenuPopup({\n children,\n className,\n sideOffset = 4,\n align = \"center\",\n alignOffset,\n side = \"bottom\",\n ...props\n}: MenuPrimitive.Popup.Props & {\n align?: MenuPrimitive.Positioner.Props[\"align\"];\n sideOffset?: MenuPrimitive.Positioner.Props[\"sideOffset\"];\n alignOffset?: MenuPrimitive.Positioner.Props[\"alignOffset\"];\n side?: MenuPrimitive.Positioner.Props[\"side\"];\n}) {\n return (\n \n \n \n
\n {children}\n
\n \n \n
\n );\n}\n\nfunction MenuGroup(props: MenuPrimitive.Group.Props) {\n return ;\n}\n\nfunction MenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n \n );\n}\n\nfunction MenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: MenuPrimitive.CheckboxItem.Props) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction MenuRadioGroup(props: MenuPrimitive.RadioGroup.Props) {\n return ;\n}\n\nfunction MenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props) {\n return (\n \n \n \n \n \n \n {children}\n \n );\n}\n\nfunction MenuGroupLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean;\n}) {\n return (\n \n );\n}\n\nfunction MenuSeparator({ className, ...props }: MenuPrimitive.Separator.Props) {\n return (\n \n );\n}\n\nfunction MenuShortcut({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n \n );\n}\n\nfunction MenuSub(props: MenuPrimitive.SubmenuRoot.Props) {\n return ;\n}\n\nfunction MenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean;\n}) {\n return (\n \n {children}\n \n \n );\n}\n\nfunction MenuSubPopup({\n className,\n sideOffset = 0,\n alignOffset,\n align = \"start\",\n ...props\n}: MenuPrimitive.Popup.Props & {\n align?: MenuPrimitive.Positioner.Props[\"align\"];\n sideOffset?: MenuPrimitive.Positioner.Props[\"sideOffset\"];\n alignOffset?: MenuPrimitive.Positioner.Props[\"alignOffset\"];\n}) {\n const defaultAlignOffset = align !== \"center\" ? -5 : undefined;\n\n return (\n \n );\n}\n\nexport {\n Menu,\n Menu as DropdownMenu,\n MenuPortal,\n MenuPortal as DropdownMenuPortal,\n MenuTrigger,\n MenuTrigger as DropdownMenuTrigger,\n MenuPopup,\n MenuPopup as DropdownMenuContent,\n MenuGroup,\n MenuGroup as DropdownMenuGroup,\n MenuItem,\n MenuItem as DropdownMenuItem,\n MenuCheckboxItem,\n MenuCheckboxItem as DropdownMenuCheckboxItem,\n MenuRadioGroup,\n MenuRadioGroup as DropdownMenuRadioGroup,\n MenuRadioItem,\n MenuRadioItem as DropdownMenuRadioItem,\n MenuGroupLabel,\n MenuGroupLabel as DropdownMenuLabel,\n MenuSeparator,\n MenuSeparator as DropdownMenuSeparator,\n MenuShortcut,\n MenuShortcut as DropdownMenuShortcut,\n MenuSub,\n MenuSub as DropdownMenuSub,\n MenuSubTrigger,\n MenuSubTrigger as DropdownMenuSubTrigger,\n MenuSubPopup,\n MenuSubPopup as DropdownMenuSubContent,\n};\n", "type": "registry:ui" } ], diff --git a/apps/ui/public/r/p-command-1.json b/apps/ui/public/r/p-command-1.json index e9ff40581..97ed6294b 100644 --- a/apps/ui/public/r/p-command-1.json +++ b/apps/ui/public/r/p-command-1.json @@ -14,7 +14,7 @@ "files": [ { "path": "registry/default/particles/p-command-1.tsx", - "content": "\"use client\";\n\nimport { ArrowDownIcon, ArrowUpIcon, CornerDownLeftIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"@/registry/default/ui/button\";\nimport {\n Command,\n CommandCollection,\n CommandDialog,\n CommandDialogPopup,\n CommandDialogTrigger,\n CommandEmpty,\n CommandFooter,\n CommandGroup,\n CommandGroupLabel,\n CommandInput,\n CommandItem,\n CommandList,\n CommandPanel,\n CommandSeparator,\n CommandShortcut,\n} from \"@/registry/default/ui/command\";\nimport { Kbd, KbdGroup } from \"@/registry/default/ui/kbd\";\n\nexport interface Item {\n value: string;\n label: string;\n shortcut?: string;\n}\n\nexport interface Group {\n value: string;\n items: Item[];\n}\n\nexport const suggestions: Item[] = [\n { label: \"Linear\", shortcut: \"⌘L\", value: \"linear\" },\n { label: \"Figma\", shortcut: \"⌘F\", value: \"figma\" },\n { label: \"Slack\", shortcut: \"⌘S\", value: \"slack\" },\n { label: \"YouTube\", shortcut: \"⌘Y\", value: \"youtube\" },\n { label: \"Raycast\", shortcut: \"⌘R\", value: \"raycast\" },\n];\n\nexport const commands: Item[] = [\n { label: \"Clipboard History\", shortcut: \"⌘⇧C\", value: \"clipboard-history\" },\n { label: \"Import Extension\", shortcut: \"⌘I\", value: \"import-extension\" },\n { label: \"Create Snippet\", shortcut: \"⌘N\", value: \"create-snippet\" },\n { label: \"System Preferences\", shortcut: \"⌘,\", value: \"system-preferences\" },\n { label: \"Window Management\", shortcut: \"⌘⇧W\", value: \"window-management\" },\n];\n\nexport const groupedItems: Group[] = [\n { items: suggestions, value: \"Suggestions\" },\n { items: commands, value: \"Commands\" },\n];\n\nexport default function Particle() {\n const [open, setOpen] = React.useState(false);\n\n function handleItemClick(_item: Item) {\n setOpen(false);\n }\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === \"j\" && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setOpen((open) => !open);\n console.log(\"down\");\n }\n };\n\n document.addEventListener(\"keydown\", down);\n return () => document.removeEventListener(\"keydown\", down);\n }, []);\n\n return (\n \n }>\n Open Command Palette\n ⌘J\n \n \n \n \n \n No results found.\n \n {(group: Group, _index: number) => (\n \n \n {group.value}\n \n {(item: Item) => (\n handleItemClick(item)}\n value={item.value}\n >\n {item.label}\n {item.shortcut && (\n {item.shortcut}\n )}\n \n )}\n \n \n \n \n )}\n \n \n \n
\n
\n \n \n \n \n \n \n \n \n Navigate\n
\n
\n \n \n \n Open\n
\n
\n
\n \n \n K\n \n Close\n
\n
\n
\n
\n
\n );\n}\n", + "content": "\"use client\";\n\nimport { ArrowDownIcon, ArrowUpIcon, CornerDownLeftIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Button } from \"@/registry/default/ui/button\";\nimport {\n Command,\n CommandCollection,\n CommandDialog,\n CommandDialogPopup,\n CommandDialogTrigger,\n CommandEmpty,\n CommandFooter,\n CommandGroup,\n CommandGroupLabel,\n CommandInput,\n CommandItem,\n CommandList,\n CommandPanel,\n CommandSeparator,\n CommandShortcut,\n} from \"@/registry/default/ui/command\";\nimport { Kbd, KbdGroup } from \"@/registry/default/ui/kbd\";\n\nexport interface Item {\n value: string;\n label: string;\n shortcut?: string;\n}\n\nexport interface Group {\n value: string;\n items: Item[];\n}\n\nexport const suggestions: Item[] = [\n { label: \"Linear\", shortcut: \"⌘L\", value: \"linear\" },\n { label: \"Figma\", shortcut: \"⌘F\", value: \"figma\" },\n { label: \"Slack\", shortcut: \"⌘S\", value: \"slack\" },\n { label: \"YouTube\", shortcut: \"⌘Y\", value: \"youtube\" },\n { label: \"Raycast\", shortcut: \"⌘R\", value: \"raycast\" },\n];\n\nexport const commands: Item[] = [\n { label: \"Clipboard History\", shortcut: \"⌘⇧C\", value: \"clipboard-history\" },\n { label: \"Import Extension\", shortcut: \"⌘I\", value: \"import-extension\" },\n { label: \"Create Snippet\", shortcut: \"⌘N\", value: \"create-snippet\" },\n { label: \"System Preferences\", shortcut: \"⌘,\", value: \"system-preferences\" },\n { label: \"Window Management\", shortcut: \"⌘⇧W\", value: \"window-management\" },\n];\n\nexport const groupedItems: Group[] = [\n { items: suggestions, value: \"Suggestions\" },\n { items: commands, value: \"Commands\" },\n];\n\nexport default function Particle() {\n const [open, setOpen] = React.useState(false);\n\n function handleItemClick(_item: Item) {\n setOpen(false);\n }\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === \"j\" && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setOpen((open) => !open);\n }\n };\n\n document.addEventListener(\"keydown\", down);\n return () => document.removeEventListener(\"keydown\", down);\n }, []);\n\n return (\n \n }>\n Open Command Palette\n ⌘J\n \n \n \n \n \n No results found.\n \n {(group: Group, _index: number) => (\n \n \n {group.value}\n \n {(item: Item) => (\n handleItemClick(item)}\n value={item.value}\n >\n {item.label}\n {item.shortcut && (\n {item.shortcut}\n )}\n \n )}\n \n \n \n \n )}\n \n \n \n
\n
\n \n \n \n \n \n \n \n \n Navigate\n
\n
\n \n \n \n Open\n
\n
\n
\n Esc\n Close\n
\n
\n
\n
\n
\n );\n}\n", "type": "registry:block" } ], diff --git a/apps/ui/registry/default/particles/p-command-1.tsx b/apps/ui/registry/default/particles/p-command-1.tsx index 9be621e0f..d9fa64fb7 100644 --- a/apps/ui/registry/default/particles/p-command-1.tsx +++ b/apps/ui/registry/default/particles/p-command-1.tsx @@ -66,7 +66,6 @@ export default function Particle() { if (e.key === "j" && (e.metaKey || e.ctrlKey)) { e.preventDefault(); setOpen((open) => !open); - console.log("down"); } }; @@ -131,10 +130,7 @@ export default function Particle() {
- - - K - + Esc Close
diff --git a/apps/ui/registry/default/ui/command.tsx b/apps/ui/registry/default/ui/command.tsx index 83a8c95c7..831fe3880 100644 --- a/apps/ui/registry/default/ui/command.tsx +++ b/apps/ui/registry/default/ui/command.tsx @@ -2,7 +2,7 @@ import { Dialog as CommandDialogPrimitive } from "@base-ui/react/dialog"; import { SearchIcon } from "lucide-react"; -import * as React from "react"; +import type * as React from "react"; import { cn } from "@/registry/default/lib/utils"; import { Autocomplete, @@ -16,12 +16,6 @@ import { AutocompleteSeparator, } from "@/registry/default/ui/autocomplete"; -const CommandInputContext = React.createContext<{ - inputRef: React.RefObject | null; -}>({ - inputRef: null, -}); - const CommandDialog = CommandDialogPrimitive.Root; const CommandDialogPortal = CommandDialogPrimitive.Portal; @@ -72,8 +66,6 @@ function CommandDialogPopup({ children, ...props }: CommandDialogPrimitive.Popup.Props) { - const inputRef = React.useRef(null); - return ( @@ -84,12 +76,9 @@ function CommandDialogPopup({ className, )} data-slot="command-dialog-popup" - initialFocus={inputRef} {...props} > - - {children} - + {children} @@ -99,14 +88,14 @@ function CommandDialogPopup({ function Command({ autoHighlight = "always", keepHighlight = true, - open = true, ...props }: React.ComponentProps) { return ( ); @@ -117,17 +106,15 @@ function CommandInput({ placeholder = undefined, ...props }: React.ComponentProps) { - const { inputRef } = React.useContext(CommandInputContext); - return (
} {...props} @@ -231,9 +218,9 @@ function CommandSeparator({ function CommandShortcut({ className, ...props }: React.ComponentProps<"kbd">) { return ( - ) { +function MenuShortcut({ className, ...props }: React.ComponentProps<"kbd">) { return ( - | null; -}>({ - inputRef: null, -}); - const CommandDialog = CommandDialogPrimitive.Root; const CommandDialogPortal = CommandDialogPrimitive.Portal; @@ -72,8 +66,6 @@ function CommandDialogPopup({ children, ...props }: CommandDialogPrimitive.Popup.Props) { - const inputRef = React.useRef(null); - return ( @@ -84,12 +76,9 @@ function CommandDialogPopup({ className, )} data-slot="command-dialog-popup" - initialFocus={inputRef} {...props} > - - {children} - + {children} @@ -99,14 +88,14 @@ function CommandDialogPopup({ function Command({ autoHighlight = "always", keepHighlight = true, - open = true, ...props }: React.ComponentProps) { return ( ); @@ -117,17 +106,15 @@ function CommandInput({ placeholder = undefined, ...props }: React.ComponentProps) { - const { inputRef } = React.useContext(CommandInputContext); - return (
} {...props} @@ -231,9 +218,9 @@ function CommandSeparator({ function CommandShortcut({ className, ...props }: React.ComponentProps<"kbd">) { return ( - ) { +function MenuShortcut({ className, ...props }: React.ComponentProps<"kbd">) { return ( -