Skip to content

Commit

Permalink
Font Size: UI Setting
Browse files Browse the repository at this point in the history
  • Loading branch information
enricoros committed Feb 7, 2024
1 parent 75e909e commit 7ba315c
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/apps/settings-modal/SettingsModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { PreferencesTab } from '~/common/layout/optima/useOptimaLayout';
import { useIsMobile } from '~/common/components/useMatchMedia';

import { AppChatSettingsAI } from './AppChatSettingsAI';
import { AppChatSettingsUI } from './AppChatSettingsUI';
import { AppChatSettingsUI } from './settings-ui/AppChatSettingsUI';
import { UxLabsSettings } from './UxLabsSettings';
import { VoiceSettings } from './VoiceSettings';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import { useIsMobile } from '~/common/components/useMatchMedia';
import { useOptimaLayout } from '~/common/layout/optima/useOptimaLayout';
import { useUIPreferencesStore } from '~/common/state/store-ui';

import { SettingTextSize } from './SettingTextSize';


// configuration
const SHOW_PURPOSE_FINDER = false;
Expand Down Expand Up @@ -44,13 +46,15 @@ export function AppChatSettingsUI() {
centerMode, setCenterMode,
doubleClickToEdit, setDoubleClickToEdit,
enterIsNewline, setEnterIsNewline,
messageTextSize, setMessageTextSize,
renderMarkdown, setRenderMarkdown,
showPersonaFinder, setShowPersonaFinder,
zenMode, setZenMode,
} = useUIPreferencesStore(state => ({
centerMode: state.centerMode, setCenterMode: state.setCenterMode,
doubleClickToEdit: state.doubleClickToEdit, setDoubleClickToEdit: state.setDoubleClickToEdit,
enterIsNewline: state.enterIsNewline, setEnterIsNewline: state.setEnterIsNewline,
messageTextSize: state.messageTextSize, setMessageTextSize: state.setMessageTextSize,
renderMarkdown: state.renderMarkdown, setRenderMarkdown: state.setRenderMarkdown,
showPersonaFinder: state.showPersonaFinder, setShowPersonaFinder: state.setShowPersonaFinder,
zenMode: state.zenMode, setZenMode: state.setZenMode,
Expand Down Expand Up @@ -113,6 +117,8 @@ export function AppChatSettingsUI() {
]}
value={zenMode} onChange={setZenMode} />

<SettingTextSize textSize={messageTextSize} onChangeTextSize={setMessageTextSize} />

{!isPwa() && !isMobile && (
<FormRadioControl
title='Page Size'
Expand Down
58 changes: 58 additions & 0 deletions src/apps/settings-modal/settings-ui/SettingTextSize.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import * as React from 'react';

import { Box, FormControl, IconButton, Step, Stepper } from '@mui/joy';

import type { UIMessageTextSize } from '~/common/state/store-ui';
import { FormLabelStart } from '~/common/components/forms/FormLabelStart';


export function SettingTextSize({ textSize, onChangeTextSize }: {
textSize: UIMessageTextSize,
onChangeTextSize: (size: UIMessageTextSize) => void,
}) {
return (
<FormControl orientation='horizontal' sx={{ justifyContent: 'space-between' }}>
<FormLabelStart title='Text Size'
description={textSize === 'xs' ? 'Extra Small' : textSize === 'sm' ? 'Small' : 'Default'} />
<Stepper sx={{
maxWidth: 160,
width: '100%',
fontWeight: 'initial',
'--Step-connectorThickness': '2px',
'--StepIndicator-size': '2rem',
}}>
{(['xs', 'sm', 'md'] as UIMessageTextSize[]).map(sizeKey => {
const isActive = sizeKey === textSize;
return (
<Step
key={sizeKey}
onClick={() => onChangeTextSize(sizeKey)}
indicator={
<IconButton
size='sm'
variant={isActive ? 'outlined' : 'soft'}
// color={isActive ? 'primary' : 'neutral'}
sx={{
// style
fontSize: sizeKey,
// borderRadius: !isActive ? '50%' : undefined,
borderRadius: '50%',
width: '1rem',
height: '1rem',
// style when active
'--variant-borderWidth': '2px',
borderColor: 'primary.solidBg',
}}
>
<Box>
{sizeKey}
</Box>
</IconButton>
}
/>
);
})}
</Stepper>
</FormControl>
);
}

0 comments on commit 7ba315c

Please sign in to comment.