session-desktop/ts/components/settings/SessionSettingsHeader.tsx
2023-03-08 17:39:29 +11:00

61 lines
1.9 KiB
TypeScript

import React from 'react';
import styled from 'styled-components';
import { assertUnreachable } from '../../types/sqlSharedTypes';
import { SessionSettingCategory, SettingsViewProps } from './SessionSettings';
type Props = Pick<SettingsViewProps, 'category'>;
const StyledSettingsHeader = styled.div`
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
height: var(--main-view-header-height);
`;
const StyledHeaderTittle = styled.div`
line-height: var(--main-view-header-height);
font-weight: bold;
font-size: var(--font-size-lg);
text-align: center;
flex-grow: 1;
`;
export const SettingsHeader = (props: Props) => {
const { category } = props;
let categoryTitle: string | null = null;
switch (category) {
case SessionSettingCategory.Appearance:
categoryTitle = window.i18n('appearanceSettingsTitle');
break;
case SessionSettingCategory.Conversations:
categoryTitle = window.i18n('conversationsSettingsTitle');
break;
case SessionSettingCategory.Notifications:
categoryTitle = window.i18n('notificationsSettingsTitle');
break;
case SessionSettingCategory.Help:
categoryTitle = window.i18n('helpSettingsTitle');
break;
case SessionSettingCategory.Permissions:
categoryTitle = window.i18n('permissionsSettingsTitle');
break;
case SessionSettingCategory.Privacy:
categoryTitle = window.i18n('privacySettingsTitle');
break;
case SessionSettingCategory.ClearData:
case SessionSettingCategory.MessageRequests:
case SessionSettingCategory.RecoveryPhrase:
throw new Error(`no header for should be tried to be rendered for "${category}"`);
default:
assertUnreachable(category, `SettingsHeader "${category}"`);
}
return (
<StyledSettingsHeader>
<StyledHeaderTittle>{categoryTitle}</StyledHeaderTittle>
</StyledSettingsHeader>
);
};