import { with_opacity } from "../theme/color"
import {
    background,
    border,
    border_color,
    foreground,
    svg,
    text,
} from "./components"
import statusBar from "./status_bar"
import tabBar from "./tab_bar"
import { interactive } from "../element"
import { titlebar } from "./titlebar"
import { useTheme } from "../theme"
import { toolbar } from "./toolbar"

export default function workspace(): any {
    const theme = useTheme()

    const { is_light } = theme

    return {
        background: background(theme.lowest),
        blank_pane: {
            logo_container: {
                width: 256,
                height: 256,
            },
            logo: svg(
                with_opacity("#000000", theme.is_light ? 0.6 : 0.8),
                "icons/logo_96.svg",
                256,
                256
            ),

            logo_shadow: svg(
                with_opacity(
                    theme.is_light
                        ? "#FFFFFF"
                        : theme.lowest.base.default.background,
                    theme.is_light ? 1 : 0.6
                ),
                "icons/logo_96.svg",
                256,
                256
            ),
            keyboard_hints: {
                margin: {
                    top: 96,
                },
                corner_radius: 4,
            },
            keyboard_hint: interactive({
                base: {
                    ...text(theme.lowest, "sans", "variant", { size: "sm" }),
                    padding: {
                        top: 3,
                        left: 8,
                        right: 8,
                        bottom: 3,
                    },
                    corner_radius: 8,
                },
                state: {
                    hovered: {
                        ...text(theme.lowest, "sans", "active", { size: "sm" }),
                    },
                },
            }),

            keyboard_hint_width: 320,
        },
        joining_project_avatar: {
            corner_radius: 40,
            width: 80,
        },
        joining_project_message: {
            padding: 12,
            ...text(theme.lowest, "sans", { size: "lg" }),
        },
        external_location_message: {
            background: background(theme.middle, "accent"),
            border: border(theme.middle, "accent"),
            corner_radius: 6,
            padding: 12,
            margin: { bottom: 8, right: 8 },
            ...text(theme.middle, "sans", "accent", { size: "xs" }),
        },
        leader_border_opacity: 0.7,
        leader_border_width: 2.0,
        tab_bar: tabBar(),
        modal: {
            margin: {
                bottom: 52,
                top: 52,
            },
            cursor: "Arrow",
        },
        zoomed_background: {
            cursor: "Arrow",
            background: is_light
                ? with_opacity(background(theme.lowest), 0.8)
                : with_opacity(background(theme.highest), 0.6),
        },
        zoomed_pane_foreground: {
            margin: 16,
            shadow: theme.modal_shadow,
            border: border(theme.lowest, { overlay: true }),
        },
        zoomed_panel_foreground: {
            margin: 16,
            border: border(theme.lowest, { overlay: true }),
        },
        dock: {
            left: {
                border: border(theme.lowest, { right: true }),
            },
            bottom: {
                border: border(theme.lowest, { top: true }),
            },
            right: {
                border: border(theme.lowest, { left: true }),
            },
        },
        pane_divider: {
            color: border_color(theme.lowest),
            width: 1,
        },
        status_bar: statusBar(),
        titlebar: titlebar(),
        toolbar: toolbar(),
        disconnected_overlay: {
            ...text(theme.lowest, "sans"),
            background: with_opacity(background(theme.lowest), 0.8),
        },
        notification: {
            margin: { top: 10 },
            background: background(theme.middle),
            corner_radius: 6,
            padding: 12,
            border: border(theme.middle),
            shadow: theme.popover_shadow,
        },
        notifications: {
            width: 400,
            margin: { right: 10, bottom: 10 },
        },
        drop_target_overlay_color: with_opacity(
            foreground(theme.lowest, "variant"),
            0.5
        ),
    }
}
