import { BackIcon } from "outline-icons"; import * as React from "react"; import styled from "styled-components"; import Flex from "~/components/Flex"; import Key from "~/components/Key"; import { CommandBarAction } from "~/types"; type Props = { action: CommandBarAction; active: boolean; }; function CommandBarItem( { action, active }: Props, ref: React.RefObject ) { return ( {action.icon ? ( React.cloneElement(action.icon, { size: 22, }) ) : ( )} {action.name} {action.children?.length ? "…" : ""} {action.shortcut?.length ? (
{action.shortcut.map((sc: string) => ( {sc} ))}
) : null}
); } const Icon = styled.div` width: 22px; height: 22px; color: ${(props) => props.theme.textSecondary}; `; const Text = styled(Flex)` overflow: hidden; text-overflow: ellipsis; flex-shrink: 1; `; const Item = styled.div<{ active?: boolean }>` font-size: 15px; padding: 12px 16px; background: ${(props) => props.active ? props.theme.menuItemSelected : "none"}; display: flex; align-items: center; justify-content: space-between; cursor: pointer; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; min-width: 0; `; const ForwardIcon = styled(BackIcon)` transform: rotate(180deg); `; export default React.forwardRef(CommandBarItem);