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:
16        interactive({
17          base: {
18            iconSpacing: 8,
19            iconWidth: 14,
20            padding: { left: 6, right: 6, top: 2, bottom: 2 },
21            cornerRadius: 6,
22            label: text(layer, "sans", { size: "sm" }),
23            keystroke: {
24              ...text(layer, "sans", "variant", {
25                size: "sm",
26                weight: "bold",
27              }),
28              padding: { left: 3, right: 3 },
29            },
30          },
31          state: {
32            hovered: {
33              background: background(layer, "hovered"),
34              label: text(layer, "sans", "hovered", { size: "sm" }),
35              keystroke: {
36                ...text(layer, "sans", "hovered", {
37                  size: "sm",
38                  weight: "bold",
39                }),
40                padding: { left: 3, right: 3 },
41              },
42            },
43          },
44        }),
45      state: {
46        active: {
47          default: {
48            background: background(layer, "active"),
49          },
50          hovered: {
51            background: background(layer, "active"),
52          },
53        }
54      }
55    }
56    ),
57
58    separator: {
59      background: borderColor(layer),
60      margin: { top: 2, bottom: 2 },
61    },
62  }
63}