Skip to content

Commit

Permalink
feat(theme): add console theme (#632)
Browse files Browse the repository at this point in the history
* feat: add `console` theme

* chore: add readme to new theme and root
  • Loading branch information
dalejo96 authored Feb 18, 2024
1 parent 042b6c9 commit d2a17b0
Show file tree
Hide file tree
Showing 10 changed files with 264 additions and 1 deletion.
3 changes: 2 additions & 1 deletion core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ npm install @uiw/react-codemirror --save
| [`@uiw/codemirror-theme-basic`](https://uiwjs.github.io/react-codemirror/#/theme/data/bbedit) | [![npm version](https://img.shields.io/npm/v/@uiw/codemirror-theme-basic.svg)](https://www.npmjs.com/package/@uiw/codemirror-theme-basic) [![NPM Downloads](https://img.shields.io/npm/dm/@uiw/codemirror-theme-basic.svg?style=flat)](https://www.npmjs.com/package/@uiw/codemirror-theme-basic) |
| [`@uiw/codemirror-theme-bbedit`](https://uiwjs.github.io/react-codemirror/#/theme/data/bbedit) | [![npm version](https://img.shields.io/npm/v/@uiw/codemirror-theme-bbedit.svg)](https://www.npmjs.com/package/@uiw/codemirror-theme-bbedit) [![NPM Downloads](https://img.shields.io/npm/dm/@uiw/codemirror-theme-bbedit.svg?style=flat)](https://www.npmjs.com/package/@uiw/codemirror-theme-bbedit) |
| [`@uiw/codemirror-theme-bespin`](https://uiwjs.github.io/react-codemirror/#/theme/data/bespin) | [![npm version](https://img.shields.io/npm/v/@uiw/codemirror-theme-bespin.svg)](https://www.npmjs.com/package/@uiw/codemirror-theme-bespin) [![NPM Downloads](https://img.shields.io/npm/dm/@uiw/codemirror-theme-bespin.svg?style=flat)](https://www.npmjs.com/package/@uiw/codemirror-theme-bespin) |
| [`@uiw/codemirror-theme-console`](https://uiwjs.github.io/react-codemirror/#/theme/data/console) | [![npm version](https://img.shields.io/npm/v/@uiw/codemirror-theme-console.svg)](https://www.npmjs.com/package/@uiw/codemirror-theme-console) [![NPM Downloads](https://img.shields.io/npm/dm/@uiw/codemirror-theme-console.svg?style=flat)](https://www.npmjs.com/package/@uiw/codemirror-theme-console) |
| [`@uiw/codemirror-theme-copilot`](https://uiwjs.github.io/react-codemirror/#/theme/data/copilot) | [![npm version](https://img.shields.io/npm/v/@uiw/codemirror-theme-copilot.svg)](https://www.npmjs.com/package/@uiw/codemirror-theme-copilot) [![NPM Downloads](https://img.shields.io/npm/dm/@uiw/codemirror-theme-copilot.svg?style=flat)](https://www.npmjs.com/package/@uiw/codemirror-theme-copilot) |
| [`@uiw/codemirror-theme-duotone`](https://uiwjs.github.io/react-codemirror/#/theme/data/duotone/light) | [![npm version](https://img.shields.io/npm/v/@uiw/codemirror-theme-duotone.svg)](https://www.npmjs.com/package/@uiw/codemirror-theme-duotone) [![NPM Downloads](https://img.shields.io/npm/dm/@uiw/codemirror-theme-duotone.svg?style=flat)](https://www.npmjs.com/package/@uiw/codemirror-theme-duotone) |
| [`@uiw/codemirror-theme-dracula`](https://uiwjs.github.io/react-codemirror/#/theme/data/dracula) | [![npm version](https://img.shields.io/npm/v/@uiw/codemirror-theme-dracula.svg)](https://www.npmjs.com/package/@uiw/codemirror-theme-dracula) [![NPM Downloads](https://img.shields.io/npm/dm/@uiw/codemirror-theme-dracula.svg?style=flat)](https://www.npmjs.com/package/@uiw/codemirror-theme-dracula) |
Expand Down Expand Up @@ -193,13 +194,13 @@ export default function App() {
```

## Codemirror Merge

A component that highlights the changes between two versions of a file in a side-by-side view, highlighting added, modified, or deleted lines of code.

```bash
npm install react-codemirror-merge --save
```


```jsx
import CodeMirrorMerge from 'react-codemirror-merge';
import { EditorView } from 'codemirror';
Expand Down
102 changes: 102 additions & 0 deletions themes/console/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
<!--rehype:ignore:start-->

# Console Theme (dark/light)

<!--rehype:ignore:end-->

[![Buy me a coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-048754?logo=buymeacoffee)](https://jaywcjlove.github.io/#/sponsor)
[![npm version](https://img.shields.io/npm/v/@uiw/codemirror-theme-console.svg)](https://www.npmjs.com/package/@uiw/codemirror-theme-console)

<!--missing images-->

## Motivation

One of the usages for react-codemirror is a logger component, but there is no theme with the required styles for achieving the desired feature. This theme is intended to be used when you want to have plain text in a console or terminal viewer.

## Install

```bash
npm install @uiw/codemirror-theme-console --save
```

```jsx
import { consoleLight, consoleLightInit, consoleDark, consoleDarkInit } from '@uiw/codemirror-theme-console';
// Or
import { consoleDark, consoleDarkInit } from '@uiw/codemirror-theme-console/dark';
import { consoleLight, consoleLightInit } from '@uiw/codemirror-theme-console/light';

<CodeMirror theme={consoleLight} />
<CodeMirror
theme={consoleLightInit({
settings: {
caret: '#c6c6c6',
fontFamily: 'monospace',
}
})}
/>
```

## API

```tsx
import { CreateThemeOptions } from '@uiw/codemirror-themes';
export declare const defaultSettingsConsoleLight: CreateThemeOptions['settings'];
export declare const consoleLightInit: (options?: Partial<CreateThemeOptions>) => import('@codemirror/state').Extension;
export declare const consoleLight: import('@codemirror/state').Extension;
export declare const defaultSettingsConsoleDark: CreateThemeOptions['settings'];
export declare const consoleDarkInit: (options?: Partial<CreateThemeOptions>) => import('@codemirror/state').Extension;
export declare const consoleDark: import('@codemirror/state').Extension;
```

## Usage

```jsx
import CodeMirror from '@uiw/react-codemirror';
import { consoleLight, consoleDark } from '@uiw/codemirror-theme-console';
import { javascript } from '@codemirror/lang-javascript';

function App() {
return (
<CodeMirror
value="INFO:waitress:Serving on http://0.0.0.0:5000"
height="200px"
theme={consoleLight}
onChange={(value, viewUpdate) => {
console.log('value:', value);
}}
/>
);
}
export default App;
```

```js
import { EditorView } from '@codemirror/view';
import { EditorState } from '@codemirror/state';
import { javascript } from '@codemirror/lang-javascript';
import { consoleLight, consoleDark } from '@uiw/codemirror-theme-console';

const state = EditorState.create({
doc: 'my source code',
extensions: [consoleDark],
});

const view = new EditorView({
parent: document.querySelector('#editor'),
state,
});
```

## Contributors

As always, thanks to our amazing contributors!

<a href="https://github.com/uiwjs/react-codemirror/graphs/contributors">
<img src="https://uiwjs.github.io/react-codemirror/CONTRIBUTORS.svg" />
</a>

Made with [github-action-contributors](https://github.com/jaywcjlove/github-action-contributors).

## License

Licensed under the MIT License.
6 changes: 6 additions & 0 deletions themes/console/dark.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
declare module '@uiw/codemirror-theme-console/dark' {
import { CreateThemeOptions } from '@uiw/codemirror-themes';
export const defaultSettingsConsoleDark: CreateThemeOptions['settings'];
export const consoleDarkInit: (options?: Partial<CreateThemeOptions>) => import('@codemirror/state').Extension;
export const consoleDark: import('@codemirror/state').Extension;
}
6 changes: 6 additions & 0 deletions themes/console/light.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
declare module '@uiw/codemirror-theme-console/light' {
import { CreateThemeOptions } from '@uiw/codemirror-themes';
export const defaultSettingsConsoleLight: CreateThemeOptions['settings'];
export const consoleLightInit: (options?: Partial<CreateThemeOptions>) => import('@codemirror/state').Extension;
export const consoleLight: import('@codemirror/state').Extension;
}
61 changes: 61 additions & 0 deletions themes/console/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
{
"name": "@uiw/codemirror-theme-console",
"version": "1.0.0",
"description": "Theme console for CodeMirror.",
"homepage": "https://uiwjs.github.io/react-codemirror/#/theme/data/console/light",
"author": "David Villamarin <[email protected]>",
"license": "MIT",
"main": "./cjs/index.js",
"module": "./esm/index.js",
"exports": {
"./README.md": "./README.md",
".": {
"import": "./esm/index.js",
"types": "./cjs/index.d.ts",
"require": "./cjs/index.js"
},
"./light": {
"import": "./esm/light.js",
"types": "./cjs/light.d.ts",
"require": "./cjs/light.js"
},
"./dark": {
"import": "./esm/dark.js",
"types": "./cjs/dark.d.ts",
"require": "./cjs/dark.js"
}
},
"scripts": {
"watch": "tsbb watch src/*.ts --use-babel",
"build": "tsbb build src/*.ts --use-babel"
},
"repository": {
"type": "git",
"url": "https://github.com/uiwjs/react-codemirror.git"
},
"files": [
"dark.d.ts",
"light.d.ts",
"src",
"esm",
"cjs"
],
"dependencies": {
"@uiw/codemirror-themes": "4.21.21"
},
"keywords": [
"codemirror",
"codemirror6",
"theme",
"console",
"syntax",
"ide",
"code"
],
"jest": {
"coverageReporters": [
"lcov",
"json-summary"
]
}
}
27 changes: 27 additions & 0 deletions themes/console/src/dark.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { createTheme, CreateThemeOptions } from '@uiw/codemirror-themes';

export const defaultSettingsConsoleDark: CreateThemeOptions['settings'] = {
background: '#000',
foreground: '#fff',
caret: '#fff',
selection: '#3e4865',
selectionMatch: '#2a3967',
gutterBackground: '#000',
gutterForeground: '#ada9a9',
gutterActiveForeground: '#000',
lineHighlight: '#828282',
};

export const consoleDarkInit = (options?: Partial<CreateThemeOptions>) => {
const { theme = 'dark', settings = {}, styles = [] } = options || {};
return createTheme({
theme: theme,
settings: {
...defaultSettingsConsoleDark,
...settings,
},
styles: [...styles],
});
};

export const consoleDark = consoleDarkInit();
2 changes: 2 additions & 0 deletions themes/console/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './dark';
export * from './light';
27 changes: 27 additions & 0 deletions themes/console/src/light.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { createTheme, CreateThemeOptions } from '@uiw/codemirror-themes';

export const defaultSettingsConsoleLight: CreateThemeOptions['settings'] = {
background: '#fff',
foreground: '#000',
caret: '#000',
selection: '#d6ddf2',
selectionMatch: '#6d85cf',
gutterBackground: '#fff',
gutterForeground: '#ada9a9',
gutterActiveForeground: '#000',
lineHighlight: '#c7c5c5',
};

export const consoleLightInit = (options?: Partial<CreateThemeOptions>) => {
const { theme = 'light', settings = {}, styles = [] } = options || {};
return createTheme({
theme: theme,
settings: {
...defaultSettingsConsoleLight,
...settings,
},
styles: [...styles],
});
};

export const consoleLight = consoleLightInit();
9 changes: 9 additions & 0 deletions themes/console/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../../tsconfig",
"include": ["src"],
"compilerOptions": {
"outDir": "./cjs",
"baseUrl": ".",
"noEmit": false
}
}
22 changes: 22 additions & 0 deletions www/src/router.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,28 @@ export const routes: MenuRouteObject[] = [
/>
),
},
{
path: 'data/console/light',
label: 'Console Light',
element: (
<Preview
mode="light"
themePkg="@uiw/codemirror-theme-console"
path={() => import('@uiw/codemirror-theme-console/README.md')}
/>
),
},
{
path: 'data/console/dark',
label: 'Console Dark',
element: (
<Preview
mode="dark"
themePkg="@uiw/codemirror-theme-console"
path={() => import('@uiw/codemirror-theme-console/README.md')}
/>
),
},
{
path: 'data/dracula',
label: 'dracula',
Expand Down

0 comments on commit d2a17b0

Please sign in to comment.