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", { size: "sm", color: "#aaaaaa" }),
17                secondaryTextSpacing: 10,
18                padding: { left: 8, right: 8, top: 2, bottom: 2 },
19                cornerRadius: 6,
20                background: background(layer, "on"),
21                border: border(layer, "on", { overlay: true })
22            },
23            state: {
24                hovered: {
25                    background: background(layer, "hovered"),
26                    ...text(layer, "sans", "hovered", { size: "sm" }),
27                }
28            }
29        })
30        ,
31        sectionHeader: {
32            ...text(layer, "sans", { size: "sm" }),
33            padding: { left: 8, right: 8, top: 8, bottom: 8 },
34        },
35        item: toggleable(interactive({
36            base: {
37                ...text(layer, "sans", { size: "sm" }),
38                secondaryTextSpacing: 10,
39                secondaryText: text(layer, "sans", { size: "sm" }),
40                padding: { left: 18, right: 18, top: 2, bottom: 2 }
41            }, state: {
42                hovered: {
43                    background: background(layer, "hovered"),
44                    ...text(layer, "sans", "hovered", { size: "sm" }),
45                }
46            }
47        }), {
48            default: {
49                background: background(layer, "active"),
50            },
51            hovered: {
52                background: background(layer, "active"),
53            },
54        })
55    }
56}