toolbarDropdownMenu.ts

 1import { ColorScheme } from "../theme/colorScheme"
 2import { background, border, text } from "./components"
 3import { interactive, toggleable } from "../element"
 4export default function dropdownMenu(colorScheme: ColorScheme) {
 5  let layer = colorScheme.middle
 6
 7  return {
 8    rowHeight: 30,
 9    background: background(layer),
10    border: border(layer),
11    shadow: colorScheme.popoverShadow,
12    header: interactive({
13      base: {
14        ...text(layer, "sans", { size: "sm" }),
15        secondaryText: text(layer, "sans", {
16          size: "sm",
17          color: "#aaaaaa",
18        }),
19        secondaryTextSpacing: 10,
20        padding: { left: 8, right: 8, top: 2, bottom: 2 },
21        cornerRadius: 6,
22        background: background(layer, "on"),
23        border: border(layer, "on", { overlay: true }),
24      },
25      state: {
26        hovered: {
27          background: background(layer, "hovered"),
28          ...text(layer, "sans", "hovered", { size: "sm" }),
29        },
30      },
31    }),
32    sectionHeader: {
33      ...text(layer, "sans", { size: "sm" }),
34      padding: { left: 8, right: 8, top: 8, bottom: 8 },
35    },
36    item: toggleable({
37      base:
38        interactive({
39          base: {
40            ...text(layer, "sans", { size: "sm" }),
41            secondaryTextSpacing: 10,
42            secondaryText: text(layer, "sans", { size: "sm" }),
43            padding: { left: 18, right: 18, top: 2, bottom: 2 },
44          },
45          state: {
46            hovered: {
47              background: background(layer, "hovered"),
48              ...text(layer, "sans", "hovered", { size: "sm" }),
49            },
50          },
51        }),
52      state: {
53        active: {
54          default: {
55            background: background(layer, "active"),
56          },
57          hovered: {
58            background: background(layer, "active"),
59          },
60        }
61      }
62    }
63    ),
64  }
65}