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            base: 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                    clicked: {
43                        background: background(layer, "pressed"),
44                    },
45                },
46            }),
47            state: {
48                active: {
49                    default: {
50                        background: background(layer, "active"),
51                    },
52                    hovered: {
53                        background: background(layer, "hovered"),
54                    },
55                    clicked: {
56                        background: background(layer, "pressed"),
57                    },
58                },
59            },
60        }),
61
62        separator: {
63            background: borderColor(layer),
64            margin: { top: 2, bottom: 2 },
65        },
66    }
67}