// @flow
import { StyleSheet } from 'react-native';

import { BoxModel, ColorPalette, createStyleSheet } from '../../../base/styles';

// Toolbox, toolbar:

/**
 * The style of toolbar buttons.
 */
const toolbarButton = {
    backgroundColor: ColorPalette.white,
    borderRadius: 20,
    borderWidth: 0,
    flex: 0,
    flexDirection: 'row',
    height: 40,
    justifyContent: 'center',

    // XXX We probably tested BoxModel.margin and discovered it to be too small
    // for our taste.
    marginHorizontal: 7,
    opacity: 0.7,
    width: 40
};

/**
 * The icon style of the toolbar buttons.
 */
const toolbarButtonIcon = {
    alignSelf: 'center',
    color: ColorPalette.darkGrey,
    fontSize: 22
};

/**
 * The Toolbox and toolbar related styles.
 */
const styles = createStyleSheet({
    /**
     * The style of the toolbar button which hangs the current conference up.
     */
    hangupButton: {
        ...toolbarButton,
        backgroundColor: ColorPalette.red,
        borderRadius: 30,
        height: 60,
        width: 60
    },

    /**
     * The icon style of toolbar buttons which hangs the current conference up.
     */
    hangupButtonIcon: {
        ...toolbarButtonIcon,
        color: ColorPalette.white,
        fontSize: 24
    },

    /**
     * The style of the toolbar.
     */
    toolbar: {
        alignItems: 'center',
        bottom: 0,
        flex: 0,
        flexDirection: 'row',
        justifyContent: 'center',
        left: 0,
        marginBottom: BoxModel.margin / 2,
        paddingHorizontal: BoxModel.margin,
        position: 'absolute',
        right: 0
    },

    /**
     * The style of toolbar buttons.
     */
    toolbarButton,

    /**
     * The icon style of the toolbar buttons.
     */
    toolbarButtonIcon,

    /**
     * The style of the root/top-level {@link Container} of {@link Toolbox}.
     * This is the narrow layout version which locates the toolbar on top of
     * the filmstrip, at the bottom of the screen.
     */
    toolboxNarrow: {
        flexDirection: 'column',
        flexGrow: 1
    },

    /**
     * The style of the root/top-level {@link Container} of {@link Toolbox}.
     * This is the wide layout version which locates the toolbar at the bottom
     * of the screen.
     */
    toolboxWide: {
        ...StyleSheet.absoluteFillObject
    },

    /**
     * The style of toolbar buttons which display white icons.
     */
    whiteToolbarButton: {
        ...toolbarButton,
        backgroundColor: ColorPalette.buttonUnderlay
    },

    /**
     * The icon style of toolbar buttons which display white icons.
     */
    whiteToolbarButtonIcon: {
        ...toolbarButtonIcon,
        color: ColorPalette.white
    }
});

export default styles;

/**
 * Styles for the hangup button.
 */
export const hangupButtonStyles = {
    iconStyle: styles.whiteToolbarButtonIcon,
    style: styles.hangupButton,
    underlayColor: ColorPalette.buttonUnderlay
};

/**
 * Styles for buttons in the toolbar.
 */
export const toolbarButtonStyles = {
    iconStyle: styles.toolbarButtonIcon,
    style: styles.toolbarButton
};

/**
 * Styles for toggled buttons in the toolbar.
 */
export const toolbarToggledButtonStyles = {
    iconStyle: styles.whiteToolbarButtonIcon,
    style: styles.whiteToolbarButton
};

// Overflow menu:

/**
 * Styles for the {@code OverflowMenu} items.
 *
 * These have been implemented as per the Material Design guidelines:
 * {@link https://material.io/guidelines/components/bottom-sheets.html}.
 */
const overflowMenuStyles = createStyleSheet({
    /**
     * Container style for a {@code ToolboxItem} rendered in the
     * {@code OverflowMenu}.
     */
    container: {
        alignItems: 'center',
        flexDirection: 'row',
        height: 48
    },

    /**
     * Style for the {@code Icon} element in a {@code ToolboxItem} rendered in
     * the {@code OverflowMenu}.
     */
    icon: {
        fontSize: 24
    },

    /**
     * Style for the label in a {@code ToolboxItem} rendered in the
     * {@code OverflowMenu}.
     */
    label: {
        flex: 1,
        fontSize: 16,
        marginLeft: 32,
        opacity: 0.90
    }
});

export const overflowMenuItemStyles = {
    iconStyle: overflowMenuStyles.icon,
    labelStyle: overflowMenuStyles.label,
    style: overflowMenuStyles.container,
    underlayColor: '#eee'
};
