{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "command",
  "type": "registry:ui",
  "title": "Command",
  "description": "Command palette primitives for Tile UI.",
  "dependencies": [
    "react-dom"
  ],
  "devDependencies": [
    "sass"
  ],
  "registryDependencies": [
    "@tile-ui/core",
    "@tile-ui/portal",
    "@tile-ui/styles"
  ],
  "files": [
    {
      "path": "packages/react/src/components/command/command.tsx",
      "type": "registry:ui",
      "target": "components/ui/command/command.tsx",
      "content": "import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { commandStyleKeys, matchCommandItem } from '../lib/core';\nimport type { CommandBaseProps, CommandFilterFn } from '../lib/core';\nimport { usePortalContainer, type PortalContainer } from '../portal';\nimport styles from './command.module.scss';\n\ninterface CommandContextValue {\n\tsearch: string;\n\tsetSearch: (value: string) => void;\n\tfilter?: CommandFilterFn;\n\tloop: boolean;\n\titemsRef: React.RefObject<HTMLElement[]>;\n\tvisibleCount: number;\n\treportVisibility: (visible: boolean) => void;\n}\n\nconst CommandContext = createContext<CommandContextValue | null>(null);\n\nfunction useCommandContext(): CommandContextValue {\n\tconst context = useContext(CommandContext);\n\tif (!context) {\n\t\tthrow new Error('Command 子组件必须位于 <Command> 内部。');\n\t}\n\treturn context;\n}\n\nfunction CommandSearchIcon() {\n\treturn (\n\t\t<svg\n\t\t\tclassName={styles[commandStyleKeys.inputIcon]}\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\twidth=\"16\"\n\t\t\theight=\"16\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"2\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t\taria-hidden=\"true\">\n\t\t\t<circle cx=\"11\" cy=\"11\" r=\"8\" />\n\t\t\t<path d=\"m21 21-4.3-4.3\" />\n\t\t</svg>\n\t);\n}\n\nexport interface CommandProps extends React.HTMLAttributes<HTMLDivElement>, CommandBaseProps {}\n\nconst Command = React.forwardRef<HTMLDivElement, CommandProps>(({ className = '', items, groups, filter, loop = true, children, ...props }, ref) => {\n\tconst [search, setSearch] = useState('');\n\tconst itemsRef = useRef<HTMLElement[]>([]);\n\tconst [visibleCount, setVisibleCount] = useState(0);\n\n\tconst reportVisibility = useCallback((visible: boolean) => {\n\t\tsetVisibleCount((count) => count + (visible ? 1 : -1));\n\t}, []);\n\n\tconst value = { search, setSearch, filter, loop, itemsRef, visibleCount, reportVisibility };\n\n\tconst renderDataItems = (defs: { value: string; label?: string; keywords?: string[]; disabled?: boolean; shortcut?: string }[]) =>\n\t\tdefs.map((item) => (\n\t\t\t<CommandItem key={item.value} value={item.value} keywords={item.keywords} disabled={item.disabled}>\n\t\t\t\t{item.label ?? item.value}\n\t\t\t\t{item.shortcut ? <CommandShortcut>{item.shortcut}</CommandShortcut> : null}\n\t\t\t</CommandItem>\n\t\t));\n\n\tlet content = children;\n\tif (groups && groups.length > 0) {\n\t\tcontent = groups.map((group) => (\n\t\t\t<CommandGroup key={group.value} heading={group.label}>\n\t\t\t\t{renderDataItems(group.items)}\n\t\t\t</CommandGroup>\n\t\t));\n\t} else if (items && items.length > 0) {\n\t\tcontent = renderDataItems(items);\n\t}\n\n\treturn (\n\t\t<CommandContext.Provider value={value}>\n\t\t\t<div ref={ref} className={`${styles[commandStyleKeys.root]} ${className}`} {...props}>\n\t\t\t\t{content}\n\t\t\t</div>\n\t\t</CommandContext.Provider>\n\t);\n});\nCommand.displayName = 'Command';\n\nexport interface CommandInputProps extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst CommandInput = React.forwardRef<HTMLInputElement, CommandInputProps>(({ className = '', value, onChange, onKeyDown, ...props }, ref) => {\n\tconst context = useCommandContext();\n\tconst { itemsRef, loop } = context;\n\n\tfunction handleChange(event: React.ChangeEvent<HTMLInputElement>) {\n\t\tonChange?.(event);\n\t\tcontext.setSearch(event.target.value);\n\t}\n\n\tfunction handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {\n\t\tonKeyDown?.(event);\n\t\tif (event.defaultPrevented) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst items = itemsRef.current.filter((item) => !item.hasAttribute('hidden') && item.getAttribute('data-disabled') !== 'true');\n\t\tif (items.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentIndex = items.findIndex((item) => item.getAttribute('data-selected') === 'true');\n\n\t\tconst highlight = (next: number) => {\n\t\t\titems.forEach((item) => item.removeAttribute('data-selected'));\n\t\t\titems[next].setAttribute('data-selected', 'true');\n\t\t\titems[next].scrollIntoView({ block: 'nearest' });\n\t\t};\n\n\t\tconst nextFrom = (direction: 1 | -1): number => {\n\t\t\tif (currentIndex < 0) {\n\t\t\t\treturn direction === 1 ? 0 : items.length - 1;\n\t\t\t}\n\t\t\tconst next = currentIndex + direction;\n\t\t\tif (next < 0) {\n\t\t\t\treturn loop ? items.length - 1 : 0;\n\t\t\t}\n\t\t\tif (next >= items.length) {\n\t\t\t\treturn loop ? 0 : items.length - 1;\n\t\t\t}\n\t\t\treturn next;\n\t\t};\n\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\tevent.preventDefault();\n\t\t\t\thighlight(nextFrom(1));\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tevent.preventDefault();\n\t\t\t\thighlight(nextFrom(-1));\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tevent.preventDefault();\n\t\t\t\t(currentIndex >= 0 ? items[currentIndex] : items[0]).click();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={styles[commandStyleKeys.inputWrapper]}>\n\t\t\t<CommandSearchIcon />\n\t\t\t<input\n\t\t\t\tref={ref}\n\t\t\t\tvalue={value ?? context.search}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\tclassName={`${styles[commandStyleKeys.input]} ${className}`}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t</div>\n\t);\n});\nCommandInput.displayName = 'CommandInput';\n\nexport interface CommandListProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CommandList = React.forwardRef<HTMLDivElement, CommandListProps>(({ className = '', children, ...props }, ref) => {\n\tconst { itemsRef, loop } = useCommandContext();\n\n\tfunction handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n\t\tconst items = itemsRef.current.filter((item) => !item.hasAttribute('hidden') && item.getAttribute('data-disabled') !== 'true');\n\t\tif (items.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentIndex = items.findIndex((item) => item.getAttribute('data-selected') === 'true');\n\n\t\tconst highlight = (next: number) => {\n\t\t\titems.forEach((item) => item.removeAttribute('data-selected'));\n\t\t\titems[next].setAttribute('data-selected', 'true');\n\t\t\titems[next].scrollIntoView({ block: 'nearest' });\n\t\t};\n\n\t\tconst nextFrom = (direction: 1 | -1): number => {\n\t\t\tif (currentIndex < 0) {\n\t\t\t\treturn direction === 1 ? 0 : items.length - 1;\n\t\t\t}\n\t\t\tconst next = currentIndex + direction;\n\t\t\tif (next < 0) {\n\t\t\t\treturn loop ? items.length - 1 : 0;\n\t\t\t}\n\t\t\tif (next >= items.length) {\n\t\t\t\treturn loop ? 0 : items.length - 1;\n\t\t\t}\n\t\t\treturn next;\n\t\t};\n\n\t\tswitch (event.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\tevent.preventDefault();\n\t\t\t\thighlight(nextFrom(1));\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tevent.preventDefault();\n\t\t\t\thighlight(nextFrom(-1));\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tevent.preventDefault();\n\t\t\t\t(currentIndex >= 0 ? items[currentIndex] : items[0]).click();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn (\n\t\t<div ref={ref} className={`${styles[commandStyleKeys.list]} ${className}`} onKeyDown={handleKeyDown} {...props}>\n\t\t\t{children}\n\t\t</div>\n\t);\n});\nCommandList.displayName = 'CommandList';\n\nexport interface CommandEmptyProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CommandEmpty = React.forwardRef<HTMLDivElement, CommandEmptyProps>(({ className = '', children, ...props }, ref) => {\n\tconst { visibleCount } = useCommandContext();\n\tif (visibleCount > 0) {\n\t\treturn null;\n\t}\n\tconst classes = [styles[commandStyleKeys.empty], className].filter(Boolean).join(' ');\n\treturn (\n\t\t<div ref={ref} className={classes} {...props}>\n\t\t\t{children}\n\t\t</div>\n\t);\n});\nCommandEmpty.displayName = 'CommandEmpty';\n\nexport interface CommandGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n\theading?: string;\n}\n\nconst CommandGroup = React.forwardRef<HTMLDivElement, CommandGroupProps>(({ className = '', heading, children, ...props }, ref) => {\n\treturn (\n\t\t<div ref={ref} className={`${styles[commandStyleKeys.group]} ${className}`} {...props}>\n\t\t\t{heading ? <div className={styles[commandStyleKeys.groupLabel]}>{heading}</div> : null}\n\t\t\t<div className={styles[commandStyleKeys.groupContent]}>{children}</div>\n\t\t</div>\n\t);\n});\nCommandGroup.displayName = 'CommandGroup';\n\nexport interface CommandItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'value' | 'onSelect'> {\n\tvalue: string;\n\tkeywords?: string[];\n\tdisabled?: boolean;\n\tonSelect?: (value: string) => void;\n}\n\nconst CommandItem = React.forwardRef<HTMLDivElement, CommandItemProps>(({ className = '', value, keywords, disabled = false, onSelect, children, ...props }, ref) => {\n\tconst context = useCommandContext();\n\tconst itemRef = useRef<HTMLDivElement | null>(null);\n\tconst { filter: filterFn, search, itemsRef, reportVisibility } = context;\n\n\tconst matches = useMemo(() => {\n\t\tif (filterFn) {\n\t\t\treturn filterFn(value, search, keywords);\n\t\t}\n\t\treturn matchCommandItem({ value, keywords }, search);\n\t}, [value, keywords, search, filterFn]);\n\n\tuseEffect(() => {\n\t\tconst element = itemRef.current;\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\t\titemsRef.current.push(element);\n\t\treturn () => {\n\t\t\titemsRef.current = itemsRef.current.filter((item) => item !== element);\n\t\t};\n\t}, [itemsRef]);\n\n\tuseEffect(() => {\n\t\tif (matches) {\n\t\t\treportVisibility(true);\n\t\t\treturn () => reportVisibility(false);\n\t\t}\n\t}, [matches, reportVisibility]);\n\n\tfunction setRef(element: HTMLDivElement | null) {\n\t\titemRef.current = element;\n\t\tif (typeof ref === 'function') {\n\t\t\tref(element);\n\t\t} else if (ref) {\n\t\t\tref.current = element;\n\t\t}\n\t}\n\n\tfunction handleClick() {\n\t\tif (disabled) {\n\t\t\treturn;\n\t\t}\n\t\tonSelect?.(value);\n\t}\n\n\tconst classes = [styles[commandStyleKeys.item], className].filter(Boolean).join(' ');\n\treturn (\n\t\t<div ref={setRef} tabIndex={-1} hidden={!matches} data-disabled={disabled} className={classes} onClick={handleClick} {...props}>\n\t\t\t{children}\n\t\t</div>\n\t);\n});\nCommandItem.displayName = 'CommandItem';\n\nexport interface CommandSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CommandSeparator = React.forwardRef<HTMLDivElement, CommandSeparatorProps>(({ className = '', ...props }, ref) => {\n\tconst classes = [styles[commandStyleKeys.separator], className].filter(Boolean).join(' ');\n\treturn <div ref={ref} className={classes} {...props} />;\n});\nCommandSeparator.displayName = 'CommandSeparator';\n\nexport interface CommandShortcutProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nconst CommandShortcut = React.forwardRef<HTMLSpanElement, CommandShortcutProps>(({ className = '', children, ...props }, ref) => {\n\tconst classes = [styles[commandStyleKeys.shortcut], className].filter(Boolean).join(' ');\n\treturn (\n\t\t<span ref={ref} className={classes} {...props}>\n\t\t\t{children}\n\t\t</span>\n\t);\n});\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport interface CommandDialogProps {\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\ttitle?: string;\n\tdescription?: string;\n\tclassName?: string;\n\tshowCloseButton?: boolean;\n\tcontainer?: PortalContainer;\n\tchildren?: React.ReactNode;\n}\n\nconst CommandDialog = ({\n\topen = false,\n\tonOpenChange,\n\ttitle = 'Command Palette',\n\tdescription = 'Search for a command to run...',\n\tclassName = '',\n\tshowCloseButton = true,\n\tcontainer,\n\tchildren,\n}: CommandDialogProps) => {\n\tconst portalContainer = usePortalContainer(container);\n\tif (!open) {\n\t\treturn null;\n\t}\n\n\tfunction handleOverlayClick() {\n\t\tonOpenChange?.(false);\n\t}\n\n\tfunction handleCloseClick() {\n\t\tonOpenChange?.(false);\n\t}\n\n\tfunction handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n\t\tif (event.key === 'Escape') {\n\t\t\tonOpenChange?.(false);\n\t\t}\n\t}\n\n\tconst content = (\n\t\t<div onKeyDown={handleKeyDown}>\n\t\t\t<div className={styles[commandStyleKeys.dialogOverlay]} onClick={handleOverlayClick} />\n\t\t\t<div className={`${styles[commandStyleKeys.dialogContent]} ${className}`} role=\"dialog\" aria-modal=\"true\">\n\t\t\t\t<h2 className={styles[commandStyleKeys.dialogTitle]}>{title}</h2>\n\t\t\t\t<p className={styles[commandStyleKeys.dialogDescription]}>{description}</p>\n\t\t\t\t{children}\n\t\t\t\t{showCloseButton && (\n\t\t\t\t\t<button type=\"button\" aria-label=\"关闭\" className={styles[commandStyleKeys.dialogClose]} onClick={handleCloseClick}>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\t\t\taria-hidden=\"true\">\n\t\t\t\t\t\t\t<path d=\"M18 6 6 18\" />\n\t\t\t\t\t\t\t<path d=\"m6 6 12 12\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n\n\tif (!portalContainer) {\n\t\treturn null;\n\t}\n\n\treturn createPortal(content, portalContainer);\n};\nCommandDialog.displayName = 'CommandDialog';\n\nexport { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator, CommandShortcut, CommandDialog };\nexport default Command;\n"
    },
    {
      "path": "packages/styles/scss/components/command.module.scss",
      "type": "registry:file",
      "target": "components/ui/command/command.module.scss",
      "content": "@use '../../../styles/variables/colors' as *;\n\n// 根容器\n.root {\n\tdisplay: flex;\n\twidth: 100%;\n\theight: 100%;\n\tflex-direction: column;\n\toverflow: hidden;\n\tborder-radius: var(--tile-command-radius, $radius);\n\tbackground-color: var(--tile-command-background, $popover);\n\tcolor: var(--tile-command-foreground, $popover-foreground);\n}\n\n// 输入框容器\n.inputWrapper {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--tile-command-input-gap, $spacing-2);\n\tborder-bottom: 1px solid var(--tile-command-border, $border);\n\tpadding: var(--tile-command-input-padding, 0 $spacing-3);\n}\n\n// 搜索输入框\n.input {\n\tdisplay: flex;\n\twidth: 100%;\n\theight: var(--tile-command-input-height, 2.5rem);\n\tborder: none;\n\tbackground: transparent;\n\tpadding: $spacing-2 0;\n\tfont-size: var(--tile-command-font-size, $text-sm);\n\tcolor: var(--tile-command-foreground, $foreground);\n\toutline: none;\n\n\t&::placeholder {\n\t\tcolor: var(--tile-command-subtle, $muted-foreground);\n\t}\n\n\t&[data-disabled='true'] {\n\t\tcursor: not-allowed;\n\t\topacity: 0.5;\n\t}\n}\n\n// 输入框图标\n.inputIcon {\n\tpointer-events: none;\n\tflex-shrink: 0;\n\twidth: 1rem;\n\theight: 1rem;\n\tcolor: var(--tile-command-subtle, $muted-foreground);\n\topacity: var(--tile-command-icon-opacity, 0.5);\n}\n\n// 列表容器\n.list {\n\tmax-height: 300px;\n\toverflow-x: hidden;\n\toverflow-y: auto;\n\tpadding: var(--tile-command-list-padding, $spacing-1);\n}\n\n// 空状态\n.empty {\n\tpadding: var(--tile-command-empty-padding, $spacing-6);\n\ttext-align: center;\n\tfont-size: var(--tile-command-font-size, $text-sm);\n\tcolor: var(--tile-command-subtle, $muted-foreground);\n}\n\n// 分组容器\n.group {\n\toverflow: hidden;\n\tpadding: $spacing-1;\n\tcolor: var(--tile-command-foreground, $foreground);\n}\n\n// 分组标题\n.groupLabel {\n\tpadding: $spacing-1_5 $spacing-2;\n\tfont-size: $text-xs;\n\tfont-weight: var(--tile-command-label-font-weight, $font-medium);\n\tcolor: var(--tile-command-subtle, $muted-foreground);\n}\n\n// 分组内容\n.groupContent {\n\tdisplay: block;\n}\n\n// 命令项\n.item {\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: $spacing-2;\n\tborder-radius: var(--tile-command-item-radius, $radius-sm);\n\tpadding: var(--tile-command-item-padding, $spacing-1_5 $spacing-2);\n\tfont-size: var(--tile-command-font-size, $text-sm);\n\tline-height: $leading-normal;\n\tcolor: var(--tile-command-foreground, $popover-foreground);\n\toutline: none;\n\tcursor: default;\n\tuser-select: none;\n\n\t&[data-selected='true'] {\n\t\tbackground-color: var(--tile-command-highlight-background, $accent);\n\t\tcolor: var(--tile-command-highlight-foreground, $accent-foreground);\n\t}\n\n\t&[data-disabled='true'] {\n\t\tpointer-events: none;\n\t\topacity: 0.5;\n\t}\n\n\t& > svg {\n\t\tpointer-events: none;\n\t\tflex-shrink: 0;\n\t\twidth: 1rem;\n\t\theight: 1rem;\n\t\tcolor: var(--tile-command-subtle, $muted-foreground);\n\t}\n}\n\n// 分隔线\n.separator {\n\tmargin: $spacing-1 (-$spacing-1);\n\theight: 1px;\n\tbackground-color: var(--tile-command-border, $border);\n}\n\n// 快捷键文本\n.shortcut {\n\tmargin-left: auto;\n\tfont-size: $text-xs;\n\tletter-spacing: 0.1em;\n\tcolor: var(--tile-command-subtle, $muted-foreground);\n}\n\n// 对话框遮罩\n.dialogOverlay {\n\tposition: fixed;\n\tinset: 0;\n\tz-index: $z-modal;\n\tbackground-color: var(--tile-command-overlay, color-mix(in srgb, $overlay 80%, transparent));\n}\n\n// 对话框容器\n.dialogContent {\n\tposition: fixed;\n\tz-index: $z-modal;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 100%;\n\tmax-width: 32rem;\n\ttransform: translate(-50%, -50%);\n\toverflow: hidden;\n\tborder-radius: var(--tile-command-radius, $radius-lg);\n\tborder: 1px solid var(--tile-command-border, $border);\n\tbackground-color: var(--tile-command-background, $popover);\n\tpadding: 0;\n\tbox-shadow: var(--tile-command-dialog-shadow, $shadow-lg);\n\toutline: none;\n}\n\n// 对话框标题\n.dialogTitle {\n\tposition: absolute;\n\twidth: 1px;\n\theight: 1px;\n\tpadding: 0;\n\tmargin: -1px;\n\toverflow: hidden;\n\tclip: rect(0, 0, 0, 0);\n\twhite-space: nowrap;\n\tborder: 0;\n}\n\n// 对话框描述\n.dialogDescription {\n\tposition: absolute;\n\twidth: 1px;\n\theight: 1px;\n\tpadding: 0;\n\tmargin: -1px;\n\toverflow: hidden;\n\tclip: rect(0, 0, 0, 0);\n\twhite-space: nowrap;\n\tborder: 0;\n}\n\n// 对话框关闭按钮\n.dialogClose {\n\tposition: absolute;\n\ttop: $spacing-3;\n\tright: $spacing-3;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: $spacing-1;\n\tborder: none;\n\tborder-radius: $radius;\n\tbackground-color: transparent;\n\tcolor: var(--tile-command-subtle, $muted-foreground);\n\topacity: 0.7;\n\tcursor: pointer;\n\ttransition: opacity $transition-fast;\n\toutline: none;\n\n\t&:hover {\n\t\topacity: 1;\n\t}\n\n\t& > svg {\n\t\tpointer-events: none;\n\t\twidth: 1rem;\n\t\theight: 1rem;\n\t}\n}\n"
    },
    {
      "path": "packages/react/src/components/command/index.ts",
      "type": "registry:ui",
      "target": "components/ui/command/index.ts",
      "content": "export {\n\tCommand,\n\tCommandInput,\n\tCommandList,\n\tCommandEmpty,\n\tCommandGroup,\n\tCommandItem,\n\tCommandSeparator,\n\tCommandShortcut,\n\tCommandDialog,\n\ttype CommandProps,\n\ttype CommandInputProps,\n\ttype CommandListProps,\n\ttype CommandEmptyProps,\n\ttype CommandGroupProps,\n\ttype CommandItemProps,\n\ttype CommandSeparatorProps,\n\ttype CommandShortcutProps,\n\ttype CommandDialogProps,\n} from './command';\n"
    }
  ]
}
