diff --git a/packages/react/src/index.js b/packages/react/src/index.js index f5bdbb35..b2195134 100644 --- a/packages/react/src/index.js +++ b/packages/react/src/index.js @@ -8,4 +8,5 @@ export { default as usePostMessage } from './hooks/usePostMessage'; export { default as useKeydown } from './hooks/useKeydown'; export { default as useEvent } from './hooks/useEvent'; export { default as strudelTheme } from './themes/strudel-theme'; +export { default as protracker } from './themes/protracker'; export { default as cx } from './cx'; diff --git a/packages/react/src/themes/algoboy.js b/packages/react/src/themes/algoboy.js index b4db09de..38cba0fc 100644 --- a/packages/react/src/themes/algoboy.js +++ b/packages/react/src/themes/algoboy.js @@ -35,5 +35,6 @@ export default createTheme({ { tag: t.propertyName, color: '#0f380f' }, { tag: t.className, color: '#0f380f' }, { tag: t.invalid, color: '#0f380f' }, + { tag: [t.unit, t.punctuation], color: '#0f380f' }, ], }); diff --git a/packages/react/src/themes/blackscreen.js b/packages/react/src/themes/blackscreen.js index ac9627c3..135285a3 100644 --- a/packages/react/src/themes/blackscreen.js +++ b/packages/react/src/themes/blackscreen.js @@ -33,5 +33,6 @@ export default createTheme({ { tag: t.propertyName, color: 'white' }, { tag: t.className, color: 'white' }, { tag: t.invalid, color: 'white' }, + { tag: [t.unit, t.punctuation], color: 'white' }, ], }); diff --git a/packages/react/src/themes/bluescreen.js b/packages/react/src/themes/bluescreen.js index 4f72d8c5..aa6489d6 100644 --- a/packages/react/src/themes/bluescreen.js +++ b/packages/react/src/themes/bluescreen.js @@ -36,5 +36,6 @@ export default createTheme({ { tag: t.propertyName, color: 'white' }, { tag: t.className, color: 'white' }, { tag: t.invalid, color: 'white' }, + { tag: [t.unit, t.punctuation], color: 'white' }, ], }); diff --git a/packages/react/src/themes/protracker.js b/packages/react/src/themes/protracker.js new file mode 100644 index 00000000..c1bd761e --- /dev/null +++ b/packages/react/src/themes/protracker.js @@ -0,0 +1,50 @@ +import { tags as t } from '@lezer/highlight'; +import { createTheme } from '@uiw/codemirror-themes'; + +let colorA = '#3f51e6'; +let colorB = '#f9db4a'; +let colorC = '#9f2822'; +let colorD = '#959595'; + +export const settings = { + background: '#00000f', + foreground: colorB, // whats that? + caret: colorC, + selection: colorD, + selectionMatch: colorA, + lineHighlight: '#22222280', // panel bg + lineBackground: '#00000090', + gutterBackground: 'transparent', + gutterForeground: '#8a919966', +}; + +//let punctuation = colorA; +let keywords = colorB; +let punctuation = colorD; +let mini = colorB; + +export default createTheme({ + theme: 'dark', + settings, + styles: [ + { tag: t.keyword, color: colorA }, + { tag: t.operator, color: mini }, + { tag: t.special(t.variableName), color: colorA }, + { tag: t.typeName, color: colorA }, + { tag: t.atom, color: colorA }, + { tag: t.number, color: mini }, + { tag: t.definition(t.variableName), color: colorA }, + { tag: t.string, color: mini }, + { tag: t.special(t.string), color: mini }, + { tag: t.comment, color: punctuation }, + { tag: t.variableName, color: colorA }, + { tag: t.tagName, color: colorA }, + { tag: t.bracket, color: punctuation }, + { tag: t.meta, color: colorA }, + { tag: t.attributeName, color: colorA }, + { tag: t.propertyName, color: colorA }, // methods + { tag: t.className, color: colorA }, + { tag: t.invalid, color: colorC }, + { tag: [t.unit, t.punctuation], color: punctuation }, + ], +}); diff --git a/packages/react/src/themes/strudel-theme.js b/packages/react/src/themes/strudel-theme.js index 36987c33..4ae31060 100644 --- a/packages/react/src/themes/strudel-theme.js +++ b/packages/react/src/themes/strudel-theme.js @@ -40,5 +40,6 @@ export default createTheme({ { tag: t.className, color: '#decb6b' }, { tag: t.invalid, color: '#ffffff' }, + { tag: [t.unit, t.punctuation], color: '#82aaff' }, ], }); diff --git a/website/src/repl/themes.mjs b/website/src/repl/themes.mjs index af70c9eb..6d6219cc 100644 --- a/website/src/repl/themes.mjs +++ b/website/src/repl/themes.mjs @@ -34,6 +34,7 @@ import strudelTheme from '@strudel.cycles/react/src/themes/strudel-theme'; import bluescreen, { settings as bluescreenSettings } from '@strudel.cycles/react/src/themes/bluescreen'; import blackscreen, { settings as blackscreenSettings } from '@strudel.cycles/react/src/themes/blackscreen'; import whitescreen, { settings as whitescreenSettings } from '@strudel.cycles/react/src/themes/whitescreen'; +import protracker, { settings as protrackerSettings } from '@strudel.cycles/react/src/themes/protracker'; import algoboy, { settings as algoboySettings } from '@strudel.cycles/react/src/themes/algoboy'; import terminal, { settings as terminalSettings } from '@strudel.cycles/react/src/themes/terminal'; @@ -42,6 +43,7 @@ export const themes = { bluescreen, blackscreen, whitescreen, + protracker, algoboy, terminal, abcdef, @@ -95,6 +97,7 @@ export const settings = { bluescreen: bluescreenSettings, blackscreen: blackscreenSettings, whitescreen: whitescreenSettings, + protracker: protrackerSettings, algoboy: algoboySettings, terminal: terminalSettings, abcdef: {