diff --git a/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/EditorTheme/elements.ts b/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/EditorTheme/elements.ts new file mode 100644 index 00000000000..a7c0552e67c --- /dev/null +++ b/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/EditorTheme/elements.ts @@ -0,0 +1,16 @@ +import { PreferenceText as PreferenceTextBase } from '@codesandbox/common/lib/components/Preference/PreferenceText'; +import styled from 'styled-components'; + +export const BigTitle = styled.h2` + font-weight: 600; + color: white; + font-size: 1rem; + padding-top: 1.5rem; + margin-bottom: 0.5rem; +`; + +export const PreferenceText = styled(PreferenceTextBase)` + font-family: 'Source Code Pro'; + font-size: 0.8rem; + width: 100%; +`; diff --git a/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/EditorTheme/index.tsx b/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/EditorTheme/index.tsx new file mode 100644 index 00000000000..5bf22a7fab4 --- /dev/null +++ b/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/EditorTheme/index.tsx @@ -0,0 +1,59 @@ +import React, { FunctionComponent } from 'react'; + +import { useOvermind } from 'app/overmind'; + +import { Rule, SubDescription } from '../../elements'; +import { BigTitle, PreferenceText } from './elements'; + +export const EditorTheme: FunctionComponent = () => { + const { + actions: { + preferences: { settingChanged }, + }, + state: { + preferences: { settings }, + }, + } = useOvermind(); + + const bindValue = (name: string, setUndefined?: boolean) => ({ + setValue: value => settingChanged({ name, value }), + value: setUndefined ? settings[name] || undefined : settings[name], + }); + + return ( +
+ Editor Theme + + + You can select your editor theme by selecting File {'->'} Preferences{' '} + {'->'} Color Theme in the menu bar. + + + + + + Custom VSCode Theme + + + + After changing this setting you + {"'"} + ll have to reload the browser and select {'"'} + Custom + {'"'} as your color theme. + + + Developer: Generate Color Scheme From Current Settings' +4. Copy the contents and paste them here!`} + rows={7} + {...bindValue('manualCustomVSCodeTheme', true)} + /> +
+ ); +}; diff --git a/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/elements.ts b/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/elements.ts deleted file mode 100644 index 525a94aa0e1..00000000000 --- a/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/elements.ts +++ /dev/null @@ -1,9 +0,0 @@ -import styled from 'styled-components'; - -export const BigTitle = styled.h2` - font-weight: 600; - color: white; - font-size: 1rem; - padding-top: 1.5rem; - margin-bottom: 0.5rem; -`; diff --git a/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/index.tsx b/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/index.tsx index 5755daf56e7..99ef56a62e2 100644 --- a/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/index.tsx +++ b/packages/app/src/app/pages/common/Modals/PreferencesModal/Appearance/index.tsx @@ -1,186 +1,20 @@ -import { PreferenceText } from '@codesandbox/common/lib/components/Preference/PreferenceText'; -import themes from '@codesandbox/common/lib/themes'; -import { useOvermind } from 'app/overmind'; -import React from 'react'; +import React, { FunctionComponent } from 'react'; -import { - PaddedPreference, - PreferenceContainer, - Rule, - SubContainer, - SubDescription, - Title, -} from '../elements'; +import { PreferenceContainer, SubContainer, Title } from '../elements'; import VSCodePlaceholder from '../VSCodePlaceholder'; -import { BigTitle } from './elements'; -export const Appearance: React.FC = () => { - const { - state: { - preferences: { settings }, - }, - actions: { - preferences: { settingChanged }, - }, - } = useOvermind(); +import { EditorTheme } from './EditorTheme'; - const bindValue = (name: string, setUndefined?: boolean) => ({ - value: setUndefined ? settings[name] || undefined : settings[name], - setValue: value => - settingChanged({ - name, - value, - }), - }); +export const Appearance: FunctionComponent = () => ( +
+ Appearance - const fontOptions = ['Menlo', 'Dank Mono', 'Source Code Pro']; - const themeOptions = themes.map(t => t.name); + + + - return ( -
- Appearance - - - - - - - - - We use{' '} - - Dank Mono - {' '} - as default font, you can also use locally installed fonts - - {!fontOptions.includes(settings.fontFamily) && ( - - )} - - - - Whether we should enable{' '} - - font ligatures - - . - - - - - - - Hide all distracting elements, perfect for lessons and - presentations. - - - - {settings.experimentVSCode ? ( -
- Editor Theme - - You can select your editor theme by selecting File {'->'}{' '} - Preferences {'->'} Color Theme in the menu bar. - - - - - Custom VSCode Theme - - - - After changing this setting you - {"'"} - ll have to reload the browser and select {'"'} - Custom - {'"'} as your color theme. - - - Developer: Generate Color Scheme From Current Settings' -4. Copy the contents and paste them here!`} - {...bindValue('manualCustomVSCodeTheme', true)} - /> -
- ) : ( -
- Editor Theme - - - - This will be overwritten if you enter a custom theme. - - - - - Custom VSCode Theme - - - Developer: Generate Color Scheme From Current Settings' -4. Copy the contents and paste them here!`} - {...bindValue('customVSCodeTheme', true)} - /> -
- )} -
-
-
- ); -}; + +
+
+
+); diff --git a/packages/common/src/components/Preference/PreferenceText/elements.ts b/packages/common/src/components/Preference/PreferenceText/elements.ts new file mode 100644 index 00000000000..797125fe89a --- /dev/null +++ b/packages/common/src/components/Preference/PreferenceText/elements.ts @@ -0,0 +1,11 @@ +import styled from 'styled-components'; + +import InputBase, { TextArea as TextAreaBase } from '../../Input'; + +export const Input = styled(InputBase)` + width: 9rem; +`; + +export const TextArea = styled(TextAreaBase)` + width: 9rem; +`; diff --git a/packages/common/src/components/Preference/PreferenceText.tsx b/packages/common/src/components/Preference/PreferenceText/index.tsx similarity index 89% rename from packages/common/src/components/Preference/PreferenceText.tsx rename to packages/common/src/components/Preference/PreferenceText/index.tsx index 66800ccece7..3b02d358899 100644 --- a/packages/common/src/components/Preference/PreferenceText.tsx +++ b/packages/common/src/components/Preference/PreferenceText/index.tsx @@ -5,7 +5,7 @@ import { FunctionComponent, } from 'react'; -import Input, { TextArea } from '../Input'; +import { Input, TextArea } from './elements'; type Props = { block?: boolean; @@ -15,7 +15,6 @@ type Props = { setValue: (value: string) => void; value: string; } & Pick, 'style'>; - export const PreferenceText: FunctionComponent = ({ isTextArea, placeholder, @@ -28,10 +27,9 @@ export const PreferenceText: FunctionComponent = ({ }; return createElement(isTextArea ? TextArea : Input, { - style: { width: '9rem' }, - value, - placeholder, onChange: handleChange, + placeholder, + value, ...props, }); };