toolbarDropdownMenu.ts

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