diff --git a/themes/eclipse/README.md b/themes/eclipse/README.md
index aff1f1a47..29b6e31f8 100644
--- a/themes/eclipse/README.md
+++ b/themes/eclipse/README.md
@@ -16,6 +16,28 @@
npm install @uiw/codemirror-theme-eclipse --save
```
+```jsx
+import { eclipse, eclipseInit } from '@uiw/codemirror-theme-github';
+
+
+
+```
+
+## API
+
+```tsx
+import { CreateThemeOptions } from '@uiw/codemirror-themes';
+export declare const eclipseInit: (options?: CreateThemeOptions) => import('@codemirror/state').Extension;
+export declare const eclipse: import('@codemirror/state').Extension;
+```
+
## Usage
```jsx
diff --git a/themes/eclipse/src/index.ts b/themes/eclipse/src/index.ts
index 202b448f4..77a53ceef 100644
--- a/themes/eclipse/src/index.ts
+++ b/themes/eclipse/src/index.ts
@@ -1,31 +1,38 @@
import { tags as t } from '@lezer/highlight';
-import { createTheme } from '@uiw/codemirror-themes';
+import { createTheme, CreateThemeOptions } from '@uiw/codemirror-themes';
-export const eclipse = createTheme({
- theme: 'light',
- settings: {
- background: '#fff',
- foreground: '#000',
- caret: '#FFFFFF',
- selection: '#d7d4f0',
- selectionMatch: '#d7d4f0',
- gutterBackground: '#f7f7f7',
- gutterForeground: '#999',
- lineHighlight: '#e8f2ff',
- },
- styles: [
- { tag: [t.comment], color: '#3F7F5F' },
- { tag: [t.documentMeta], color: '#FF1717' },
- { tag: t.keyword, color: '#7F0055', fontWeight: 'bold' },
- { tag: t.atom, color: '#00f' },
- { tag: t.number, color: '#164' },
- { tag: t.propertyName, color: '#164' },
- { tag: [t.variableName, t.definition(t.variableName)], color: '#0000C0' },
- { tag: t.function(t.variableName), color: '#0000C0' },
- { tag: t.string, color: '#2A00FF' },
- { tag: t.operator, color: 'black' },
- { tag: t.tagName, color: '#170' },
- { tag: t.attributeName, color: '#00c' },
- { tag: t.link, color: '#219' },
- ],
-});
+export const eclipseInit = (options?: CreateThemeOptions) => {
+ const { theme = 'light', settings = {}, styles = [] } = options || {};
+ return createTheme({
+ theme: theme,
+ settings: {
+ background: '#fff',
+ foreground: '#000',
+ caret: '#FFFFFF',
+ selection: '#d7d4f0',
+ selectionMatch: '#d7d4f0',
+ gutterBackground: '#f7f7f7',
+ gutterForeground: '#999',
+ lineHighlight: '#e8f2ff',
+ ...settings,
+ },
+ styles: [
+ { tag: [t.comment], color: '#3F7F5F' },
+ { tag: [t.documentMeta], color: '#FF1717' },
+ { tag: t.keyword, color: '#7F0055', fontWeight: 'bold' },
+ { tag: t.atom, color: '#00f' },
+ { tag: t.number, color: '#164' },
+ { tag: t.propertyName, color: '#164' },
+ { tag: [t.variableName, t.definition(t.variableName)], color: '#0000C0' },
+ { tag: t.function(t.variableName), color: '#0000C0' },
+ { tag: t.string, color: '#2A00FF' },
+ { tag: t.operator, color: 'black' },
+ { tag: t.tagName, color: '#170' },
+ { tag: t.attributeName, color: '#00c' },
+ { tag: t.link, color: '#219' },
+ ...styles,
+ ],
+ });
+};
+
+export const eclipse = eclipseInit();