import { useState } from "react"; import { Accordion, Group, Text, Tooltip, UnstyledButton, } from "@mantine/core"; import type { FormulaFn } from "@docmost/base-formula/client"; import classes from "@/ee/base/styles/formula.module.css"; const CATEGORIES = ["logic", "math", "string", "date", "coercion"] as const; export function FunctionPalette({ registry, onInsert, }: { registry: ReadonlyMap; onInsert: (name: string) => void; }) { const [open, setOpen] = useState("logic"); const byCat = new Map(); for (const fn of registry.values()) { if (!byCat.has(fn.category)) byCat.set(fn.category, []); byCat.get(fn.category)!.push(fn); } return ( {CATEGORIES.map((cat) => { const fns = byCat.get(cat) ?? []; return ( {cat} {fns.length} {fns.map((fn) => ( onInsert(fn.name)} className={classes.fnChip} > {fn.name} () ))} ); })} ); }