import React from "react"; import classnames from "classnames"; import { useTranslation } from "react-i18next"; import { convertI18nText, I18nText } from "@/common"; import { PaletteColorType } from "@/palette"; export type MenuItem = | { type: "divider"; } | { type: "button"; text: I18nText; iconClassName?: string; color?: PaletteColorType; onClick: () => void; }; export type MenuItems = MenuItem[]; export interface MenuProps { items: MenuItems; className?: string; onItemClicked?: () => void; } const Menu: React.FC = ({ items, className, onItemClicked }) => { const { t } = useTranslation(); return (
{items.map((item, index) => { if (item.type === "divider") { return
; } else { return (
{ item.onClick(); onItemClicked?.(); }} > {item.iconClassName != null ? ( ) : null} {convertI18nText(item.text, t)}
); } })}
); }; export default Menu;