Download src/components/features/command-menu/command-menu-trigger.tsx from SaylorTwift/openhands: direct link, hf CLI and curl.
- Browser
- Download file 2.68 kB
-
https://huggingface.co/SaylorTwift/openhands/resolve/main/src/components/features/command-menu/command-menu-trigger.tsx
- Command line
-
hf download hf://SaylorTwift/openhands/src/components/features/command-menu/command-menu-trigger.tsx
-
curl -L -o command-menu-trigger.tsx https://huggingface.co/SaylorTwift/openhands/resolve/main/src/components/features/command-menu/command-menu-trigger.tsx
2.68 kB
| import React from "react"; | |
| import { Search } from "lucide-react"; | |
| import { useTranslation } from "react-i18next"; | |
| import { I18nKey } from "#/i18n/declaration"; | |
| import { StyledTooltip } from "#/components/shared/buttons/styled-tooltip"; | |
| import { useCommandMenuStore } from "#/stores/command-menu-store"; | |
| import { cn } from "#/utils/utils"; | |
| import { SidebarCollapsedIconSlot } from "#/components/features/sidebar/sidebar-collapsed-icon-slot"; | |
| import { | |
| SIDEBAR_ICON_SLOT_CLASS, | |
| sidebarNavLabelClassName, | |
| sidebarNavRowClassName, | |
| } from "#/components/features/sidebar/sidebar-layout"; | |
| interface CommandMenuTriggerProps { | |
| collapsed: boolean; | |
| } | |
| const COMMAND_MENU_TRIGGER_TEST_ID = "command-menu-trigger"; | |
| const COMMAND_MENU_TRIGGER_ICON_SIZE = 18; | |
| export function CommandMenuTrigger({ collapsed }: CommandMenuTriggerProps) { | |
| const { t } = useTranslation("openhands"); | |
| const open = useCommandMenuStore((state) => state.open); | |
| const label = t(I18nKey.COMMAND_MENU$OPEN_LABEL); | |
| const trigger = ( | |
| <button | |
| type="button" | |
| data-testid={COMMAND_MENU_TRIGGER_TEST_ID} | |
| aria-label={label} | |
| onClick={open} | |
| className={cn( | |
| sidebarNavRowClassName({ collapsed }), | |
| collapsed | |
| ? "cursor-pointer" | |
| : "group justify-between border border-[var(--oh-border-subtle)] bg-[var(--oh-surface)]/50 hover:border-[var(--oh-border)] hover:bg-[var(--oh-surface-raised)]", | |
| )} | |
| > | |
| <span className="flex min-w-0 items-center gap-2"> | |
| {collapsed ? ( | |
| <SidebarCollapsedIconSlot active={false}> | |
| <Search | |
| width={COMMAND_MENU_TRIGGER_ICON_SIZE} | |
| height={COMMAND_MENU_TRIGGER_ICON_SIZE} | |
| /> | |
| </SidebarCollapsedIconSlot> | |
| ) : ( | |
| <span | |
| className={cn( | |
| SIDEBAR_ICON_SLOT_CLASS, | |
| "text-[var(--oh-muted)] group-hover:text-white", | |
| )} | |
| aria-hidden="true" | |
| > | |
| <Search | |
| width={COMMAND_MENU_TRIGGER_ICON_SIZE} | |
| height={COMMAND_MENU_TRIGGER_ICON_SIZE} | |
| /> | |
| </span> | |
| )} | |
| <span className={sidebarNavLabelClassName(collapsed)}>{label}</span> | |
| </span> | |
| {!collapsed ? ( | |
| <kbd className="rounded-md border border-[var(--oh-border)] bg-black/20 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-[0.12em] text-[var(--oh-text-dim)]"> | |
| {t(I18nKey.COMMAND_MENU$SHORTCUT)} | |
| </kbd> | |
| ) : null} | |
| </button> | |
| ); | |
| if (collapsed) { | |
| return ( | |
| <StyledTooltip content={label} placement="right"> | |
| {trigger} | |
| </StyledTooltip> | |
| ); | |
| } | |
| return trigger; | |
| } | |