Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions plugins/theme-abyss-teal/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"id": "readergo.theme.abyss-teal",
"name": "Abyss Teal",
"version": "1.0.0",
"description": "Deep ocean workspace with teal phosphor accents and calm DM Sans typography.",
"category": "theme",
"provides": [
"theme-provider",
"font-provider"
],
"requires": [],
"permissions": [],
"trust": "trusted",
"source": "external",
"main": "dist/ui.js",
"runtime": "local",
"autoActivate": true,
"compile": {
"ui": "./src/index.ts"
},
"style": "Ocean · Dark · Teal phosphor",
"tags": [
"dark",
"ocean",
"teal",
"calm"
],
"longDescription": "A deep-ocean workspace for focused reading and writing. Cool teal actuators sit on trench-dark panels with soft cyan focus rings. Best when you want a calm, aquatic alternative to purple-heavy dark themes.",
"preview": {
"background": "198 40% 7%",
"foreground": "186 35% 92%",
"card": "198 32% 11%",
"primary": "174 62% 48%",
"accent": "186 70% 52%",
"border": "196 24% 22%",
"muted": "198 26% 13%",
"type": "dark"
}
}
73 changes: 73 additions & 0 deletions plugins/theme-abyss-teal/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { Plugin, PluginContext } from '@readergo/plugin-sdk';

const DM_SANS = {
id: 'dm-sans-abyss',
name: 'DM Sans',
family: "'DM Sans', system-ui, sans-serif",
category: 'sans' as const,
cssUrl: 'https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,600;0,9..40,700;1,9..40,400&display=swap',
targets: ['all'] as const,
};

const THEME = {
id: 'abyss-teal',
name: 'Abyss Teal',
type: 'dark' as const,
author: 'ReaderGo Studio',
description: 'Deep ocean trench palette with teal phosphor signals and soft cyan focus rings.',
colors: {
background: '198 40% 7%',
foreground: '186 35% 92%',
card: '198 32% 11%',
cardForeground: '186 35% 92%',
border: '196 24% 22%',
primary: '174 62% 48%',
primaryForeground: '198 40% 6%',
secondary: '198 28% 15%',
secondaryForeground: '186 30% 86%',
muted: '198 26% 13%',
mutedForeground: '190 14% 55%',
accent: '186 70% 52%',
accentForeground: '198 40% 6%',
destructive: '4 70% 52%',
destructiveForeground: '0 0% 100%',
success: '160 50% 42%',
successForeground: '0 0% 100%',
warning: '38 80% 52%',
warningForeground: '198 40% 6%',
info: '186 70% 52%',
infoForeground: '198 40% 6%',
input: '198 30% 10%',
ring: '174 62% 48%',
heading1: '174 70% 68%',
heading2: '186 55% 66%',
heading3: '190 40% 64%',
},
fonts: { display: DM_SANS, body: DM_SANS, editor: DM_SANS, mono: DM_SANS },
materials: {
radius: '0.55rem',
radius2xl: '0.9rem',
surfaceBlur: '8px',
shadowMd: '0 4px 18px rgb(0 40 50 / 0.45)',
},
};

export const AbyssTealThemePlugin: Plugin = {
manifest: {
id: 'readergo.theme.abyss-teal',
name: 'Abyss Teal',
version: '1.0.0',
description: 'Deep ocean workspace with teal phosphor accents and calm DM Sans typography.',
category: 'feature',
provides: ['theme-provider', 'font-provider'],
permissions: [],
},
async activate(context: PluginContext) {
await context.registerCapability('theme-provider', { getThemes: () => [THEME] });
await context.registerCapability('font-provider', { getFonts: () => [DM_SANS] });
},
deactivate() {},
};

export default AbyssTealThemePlugin;
20 changes: 19 additions & 1 deletion plugins/theme-amber-terminal/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"name": "Amber CRT Terminal",
"version": "1.0.0",
"description": "Vintage 1980s monochrome phosphor amber theme on matte obsidian for retro computing aesthetics.",
"category": "feature",
"category": "theme",
"provides": [
"theme-provider",
"font-provider"
Expand All @@ -17,5 +17,23 @@
"autoActivate": true,
"compile": {
"ui": "./src/index.ts"
},
"style": "Retro CRT · Dark · Monochrome amber",
"tags": [
"dark",
"retro",
"crt",
"monospace"
],
"longDescription": "1980s phosphor terminal vibes: radiant amber ink on matte obsidian, VT323 monospace everywhere. Ideal for telemetry-heavy workspaces and nostalgia without sacrificing readability.",
"preview": {
"background": "0 0% 8%",
"foreground": "38 95% 62%",
"card": "0 0% 12%",
"primary": "38 95% 54%",
"accent": "38 95% 54%",
"border": "38 45% 24%",
"muted": "0 0% 13%",
"type": "dark"
}
}
39 changes: 39 additions & 0 deletions plugins/theme-arcade-neon/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"id": "readergo.theme.arcade-neon",
"name": "Arcade Neon",
"version": "1.0.0",
"description": "Night-arcade dark with magenta and cyan neon signals plus Orbitron display type.",
"category": "theme",
"provides": [
"theme-provider",
"font-provider"
],
"requires": [],
"permissions": [],
"trust": "trusted",
"source": "external",
"main": "dist/ui.js",
"runtime": "local",
"autoActivate": true,
"compile": {
"ui": "./src/index.ts"
},
"style": "Synthwave · Dark · Neon magenta/cyan",
"tags": [
"dark",
"neon",
"arcade",
"display"
],
"longDescription": "Night-arcade cabinet black with hard geometric radii, magenta primary, and cyan accent LEDs. Orbitron headings sell the scoreboard feel - loud by design for creative sessions.",
"preview": {
"background": "260 30% 6%",
"foreground": "300 20% 94%",
"card": "260 28% 10%",
"primary": "320 85% 58%",
"accent": "180 90% 48%",
"border": "280 25% 22%",
"muted": "260 20% 12%",
"type": "dark"
}
}
94 changes: 94 additions & 0 deletions plugins/theme-arcade-neon/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { Plugin, PluginContext } from '@readergo/plugin-sdk';

const ORBITRON = {
id: 'orbitron-arcade',
name: 'Orbitron',
family: "'Orbitron', system-ui, sans-serif",
category: 'display' as const,
cssUrl: 'https://fonts.googleapis.com/css2?family=Orbitron:wght@500;600;700&display=swap',
targets: ['display'] as const,
};

const EXO = {
id: 'exo-2-arcade',
name: 'Exo 2',
family: "'Exo 2', system-ui, sans-serif",
category: 'sans' as const,
cssUrl: 'https://fonts.googleapis.com/css2?family=Exo+2:ital,wght@0,400;0,600;0,700;1,400&display=swap',
targets: ['body', 'editor', 'all'] as const,
};

const THEME = {
id: 'arcade-neon',
name: 'Arcade Neon',
type: 'dark' as const,
author: 'ReaderGo Studio',
description: 'Cabinet-black night with magenta / cyan neon actuators and hard geometric chrome.',
colors: {
background: '260 30% 6%',
foreground: '300 20% 94%',
card: '260 28% 10%',
cardForeground: '300 20% 94%',
border: '280 25% 22%',
primary: '320 85% 58%',
primaryForeground: '260 40% 6%',
secondary: '260 22% 14%',
secondaryForeground: '180 40% 80%',
muted: '260 20% 12%',
mutedForeground: '270 12% 55%',
accent: '180 90% 48%',
accentForeground: '260 40% 6%',
destructive: '0 85% 55%',
destructiveForeground: '0 0% 100%',
success: '150 80% 45%',
successForeground: '260 40% 6%',
warning: '45 95% 55%',
warningForeground: '260 40% 6%',
info: '180 90% 48%',
infoForeground: '260 40% 6%',
input: '260 26% 9%',
ring: '320 85% 58%',
heading1: '320 90% 72%',
heading2: '180 85% 65%',
heading3: '280 50% 70%',
},
fonts: { display: ORBITRON, body: EXO, editor: EXO, mono: EXO },
materials: {
radius: '0.25rem',
radiusSm: '0.15rem',
radiusMd: '0.2rem',
radiusLg: '0.25rem',
radiusXl: '0.35rem',
radius2xl: '0.45rem',
surfaceBlur: '0px',
shadowMd: '0 0 0 1px rgb(255 0 180 / 0.15), 0 8px 24px rgb(0 0 0 / 0.55)',
insetHighlight: 'inset 0 1px 0 rgb(255 100 220 / 0.15)',
},
stylesheet: `
background-image:
radial-gradient(ellipse at 10% 0%, rgb(255 0 160 / 0.12), transparent 40%),
radial-gradient(ellipse at 90% 100%, rgb(0 255 220 / 0.1), transparent 45%),
linear-gradient(180deg, transparent 60%, rgb(0 0 0 / 0.35));
`,
stylesheetScoped: true,
};

export const ArcadeNeonThemePlugin: Plugin = {
manifest: {
id: 'readergo.theme.arcade-neon',
name: 'Arcade Neon',
version: '1.0.0',
description: 'Night-arcade dark with magenta and cyan neon signals plus Orbitron display type.',
category: 'feature',
provides: ['theme-provider', 'font-provider'],
permissions: [],
},
async activate(context: PluginContext) {
await context.registerCapability('theme-provider', { getThemes: () => [THEME] });
await context.registerCapability('font-provider', { getFonts: () => [ORBITRON, EXO] });
},
deactivate() {},
};

export default ArcadeNeonThemePlugin;
20 changes: 19 additions & 1 deletion plugins/theme-catppuccin/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"name": "Catppuccin Mocha",
"version": "1.0.0",
"description": "Soothing pastel dark theme (Mocha) with mauve accents and Nunito typography.",
"category": "feature",
"category": "theme",
"provides": [
"theme-provider",
"font-provider"
Expand All @@ -17,5 +17,23 @@
"autoActivate": true,
"compile": {
"ui": "./src/index.ts"
},
"style": "Pastel · Dark · Mocha comfort",
"tags": [
"dark",
"pastel",
"mocha",
"soft"
],
"longDescription": "Catppuccin Mocha pastel dark: soft mauve accents, low-glare surfaces, and Nunito typography. A cozy late-night palette that stays gentle on the eyes.",
"preview": {
"background": "240 21% 15%",
"foreground": "226 64% 88%",
"card": "240 21% 12%",
"primary": "267 84% 81%",
"accent": "316 72% 78%",
"border": "237 16% 23%",
"muted": "240 21% 18%",
"type": "dark"
}
}
20 changes: 19 additions & 1 deletion plugins/theme-eink/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"name": "E-Ink Reading Suite",
"version": "1.0.0",
"description": "Comprehensive high-contrast monochromatic e-paper themes, print typography, and anti-ghosting performance optimizations for E-Ink tablets and distraction-free reading.",
"category": "feature",
"category": "theme",
"provides": [
"theme-provider",
"font-provider"
Expand All @@ -17,5 +17,23 @@
"autoActivate": true,
"compile": {
"ui": "./src/index.ts"
},
"style": "E-paper · Multi-mode · High contrast",
"tags": [
"eink",
"reading",
"print",
"high-contrast"
],
"longDescription": "Suite of e-paper atmospheres (Carta, Warm, Night, High Contrast) with print typography and anti-ghosting CSS. Built for distraction-free reading on E-Ink tablets and stark focus modes.",
"preview": {
"background": "0 0% 100%",
"foreground": "0 0% 0%",
"card": "0 0% 100%",
"primary": "0 0% 0%",
"accent": "0 0% 35%",
"border": "0 0% 0%",
"muted": "0 0% 93%",
"type": "light"
}
}
39 changes: 39 additions & 0 deletions plugins/theme-forest-moss/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"id": "readergo.theme.forest-moss",
"name": "Forest Moss",
"version": "1.0.0",
"description": "Canopy-dark greens with lichen accents and Literata reading typography.",
"category": "theme",
"provides": [
"theme-provider",
"font-provider"
],
"requires": [],
"permissions": [],
"trust": "trusted",
"source": "external",
"main": "dist/ui.js",
"runtime": "local",
"autoActivate": true,
"compile": {
"ui": "./src/index.ts"
},
"style": "Nature · Dark · Canopy green",
"tags": [
"dark",
"green",
"reading",
"organic"
],
"longDescription": "Under-canopy greens with lichen yellow accents and Literata for long-form reading. Feels like a desk under trees - organic, quiet, and easy on night vision.",
"preview": {
"background": "140 22% 9%",
"foreground": "90 18% 90%",
"card": "140 18% 13%",
"primary": "118 42% 48%",
"accent": "72 45% 48%",
"border": "140 14% 22%",
"muted": "140 12% 15%",
"type": "dark"
}
}
Loading
Loading