// ~/src/siteplane/components/command/command.tsx "use client"; import type * as React from "react"; import { DialogPopup, DialogPrimitive as CommandDialogPrimitive, } from "../dialog"; import { KitDialogPopup } from "../dialog/dialog-internal"; import { Kbd } from "../kbd"; import { Separator } from "../separator"; import { type SiteplaneControlSize, useSiteplaneUI, } from "../../system/provider/siteplane-ui-provider"; import { cn } from "../../system/utils/cn"; import { slotClass } from "../../system/utils/slot-class"; import { Autocomplete, type AutocompletePrimitive, AutocompleteCollection, AutocompleteEmpty, AutocompleteGroup, AutocompleteGroupLabel, AutocompleteInput, AutocompleteItem, AutocompleteList, AutocompleteSeparator, } from "../autocomplete"; import { KitAutocompleteInput, KitAutocompleteItem, } from "../autocomplete/autocomplete-internal"; export { Dialog as CommandDialog, DialogPortal as CommandDialogPortal, DialogCreateHandle as CommandCreateHandle, DialogTrigger as CommandDialogTrigger, DialogBackdrop as CommandDialogBackdrop, DialogViewport as CommandDialogViewport, } from "../dialog"; export function CommandDialogPopup( props: React.ComponentProps, ): React.ReactElement { return ( ); } export const Command: typeof Autocomplete = ({ autoHighlight = "always", keepHighlight = true, ...props }: Omit, "items"> & { items?: readonly ItemValue[] | undefined; }): React.ReactElement => { return ( ); }; /** * The search row follows the control size, as the results below it do: 40, 44, * 48 and 60 px from sm to xl, the palette's 48 px at the default lg (Lukas, * 13 October 2026). */ const commandInputHeights = { sm: "h-10", md: "h-11", lg: "h-12", xl: "h-15", } as const satisfies Record; export function CommandInput({ className, placeholder = undefined, size, ...props }: React.ComponentProps): React.ReactElement { // The row follows the provider; a size given to the input sizes its text. const { controlSize } = useSiteplaneUI(); return (
); } export function CommandList({ className, ...props }: React.ComponentProps): React.ReactElement { return ( ); } export function CommandEmpty({ className, ...props }: React.ComponentProps): React.ReactElement { return ( ); } export function CommandPanel({ className, children, ...props }: React.ComponentProps<"div">): React.ReactElement { return (
{children}
); } export function CommandGroup({ className, ...props }: React.ComponentProps): React.ReactElement { return ( ); } export function CommandGroupLabel({ className, ...props }: React.ComponentProps): React.ReactElement { return ( ); } export function CommandCollection({ ...props }: React.ComponentProps): React.ReactElement { return ; } export function CommandItem({ className, ...props }: React.ComponentProps): React.ReactElement { // The rows follow the control size (design-rework.css); an xl row writes in // 16 px, so its icon grows to 18 px. const { controlSize } = useSiteplaneUI(); return ( ); } export function CommandSeparator({ className, ...props }: React.ComponentProps): React.ReactElement { return ( ); } export function CommandShortcut({ className, ...props }: React.ComponentProps<"kbd">): React.ReactElement { return ( ); } export function CommandFooter({ className, children, ...props }: React.ComponentProps<"div">): React.ReactElement { return (
{children}
); } export { CommandDialogPrimitive }; // ~/src/siteplane/components/command/index.ts export * from "./command";