1
0
mirror of https://github.com/pavlobu/deskreen.git synced 2025-05-16 15:30:20 -07:00
deskreen/app/components/SettingsOverlay/SettingRowLabelAndInput.tsx
Pavlo Buidenkov b925803d9f better client UI code
huge work done on sharing desktop session
2020-11-22 17:07:01 +02:00

60 lines
1.6 KiB
TypeScript

import React, { useContext } from 'react';
import { Row, Col } from 'react-flexbox-grid';
import { Icon, Text } from '@blueprintjs/core';
import { createStyles, makeStyles } from '@material-ui/core/styles';
import { SettingsContext } from '../../containers/SettingsProvider';
const useStylesWithTheme = (isDarkTheme: boolean) =>
makeStyles(() =>
createStyles({
oneSettingRow: {
color: isDarkTheme ? '#CED9E0 !important' : '#5C7080 !important',
fontSize: '18px',
fontWeight: 900,
},
settingRowIcon: {
margin: '10px',
color: isDarkTheme ? '#BFCCD6' : '#8A9BA8',
},
})
);
interface SettingRowLabelAndInput {
icon: string;
label: string;
input: React.ReactNode;
}
export default function SettingRowLabelAndInput(
props: SettingRowLabelAndInput
) {
const { icon, label, input } = props;
const { isDarkTheme } = useContext(SettingsContext);
const getClassesCallback = useStylesWithTheme(isDarkTheme);
return (
<Row middle="xs" between="xs">
<Col xs={6}>
<Row middle="xs" className={getClassesCallback().oneSettingRow}>
<Col>
<Icon
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore: ok here
icon={icon}
iconSize={25}
className={getClassesCallback().settingRowIcon}
/>
</Col>
<Col>
<Text>{label}</Text>
</Col>
</Row>
</Col>
<Col xs={6}>
<Row>{input}</Row>
</Col>
</Row>
);
}