Path: blob/master/src/packages/next/components/antd-menu-items.tsx
1447 views
/*1* This file is part of CoCalc: Copyright © 2021 Sagemath, Inc.2* License: MS-RSL – see LICENSE.md for details3*/45import type { MenuProps } from "antd";6import { ReactNode } from "react";78import AIAvatar from "@cocalc/frontend/components/ai-avatar";9import { Icon, isIconName } from "@cocalc/frontend/components/icon";1011export type MenuItem = Required<MenuProps>["items"][number];12export type MenuItems = MenuItem[];1314export function menuItem(15key: React.Key,16label: React.ReactNode,17icon?: React.ReactNode | string,18children?: MenuItem[],19danger?: boolean,20): MenuItem {21if (typeof icon === "string") {22if (isIconName(icon)) {23icon = <Icon name={icon} />;24} else if (icon === "ai") {25icon = (26<AIAvatar size={18} style={{ position: "relative", top: "-12px" }} />27);28}29}30return {31key,32icon,33children,34label,35danger,36} as MenuItem;37}3839export function menuGroup(40key: React.Key,41label: React.ReactNode,42children: MenuItem[],43icon?: ReactNode,44): MenuItem {45return {46key,47children,48label,49type: "group",50icon,51} as MenuItem;52}535455