contextMenu.ts

 1import { ColorScheme } from "../theme/colorScheme"
 2import { background, border, borderColor, text } from "./components"
 3import { interactive, toggleable } from "../element"
 4
 5export default function contextMenu(colorScheme: ColorScheme) {
 6    let layer = colorScheme.middle
 7    return {
 8        background: background(layer),
 9        cornerRadius: 10,
10        padding: 4,
11        shadow: colorScheme.popoverShadow,
12        border: border(layer),
13        keystrokeMargin: 30,
14        item: toggleable(
15            interactive({
16                base: {
17                    iconSpacing: 8,
18                    iconWidth: 14,
19                    padding: { left: 6, right: 6, top: 2, bottom: 2 },
20                    cornerRadius: 6,
21                    label: text(layer, "sans", { size: "sm" }),
22                    keystroke: {
23                        ...text(layer, "sans", "variant", {
24                            size: "sm",
25                            weight: "bold",
26                        }),
27                        padding: { left: 3, right: 3 },
28                    },
29                },
30                state: {
31                    hovered: {
32                        background: background(layer, "hovered"),
33                        label: text(layer, "sans", "hovered", { size: "sm" }),
34                        keystroke: {
35                            ...text(layer, "sans", "hovered", {
36                                size: "sm",
37                                weight: "bold",
38                            }),
39                            padding: { left: 3, right: 3 },
40                        },
41                    },
42                },
43            }),
44            {
45                default: {
46                    background: background(layer, "active"),
47                },
48                hovered: {
49                    background: background(layer, "active"),
50                },
51            }
52        ),
53
54        separator: {
55            background: borderColor(layer),
56            margin: { top: 2, bottom: 2 },
57        },
58    }
59}