diff --git a/packages/tui/test/theme/gallery/README.md b/packages/tui/test/theme/gallery/README.md new file mode 100644 index 0000000000..92f0afda94 --- /dev/null +++ b/packages/tui/test/theme/gallery/README.md @@ -0,0 +1,37 @@ +# TUI theme screenshot gallery + +This gallery runs one repeatable OpenCode Drive workflow for every V1 theme in a directory. Each theme runs in +light and dark mode and produces a flat set of screenshots covering the home screen, markdown, permission prompt, +form prompt, and session switcher. + +It expects `opencode-drive` to be installed globally and available on `PATH`. + +The checked-in fixtures include selected built-in OpenCode themes and community themes from +[`vaprdev/opencode-themes`](https://github.com/vaprdev/opencode-themes). Theme-specific attribution and licenses +remain documented in that source repository. + +## Run + +Place theme JSON files in `themes/`, then run from the repository root: + +```sh +bun packages/tui/test/theme/gallery/run.ts +``` + +Custom input and output directories can be passed as positional arguments: + +```sh +bun packages/tui/test/theme/gallery/run.ts ./my-themes ./theme-screenshots +``` + +Output files are named `--.png` in one flat directory. Existing files with the same names are +overwritten. Runs are sequential so each isolated OpenCode Drive instance owns its own ports and artifacts. + +The current TUI discovers V1 theme files and migrates them to V2 at runtime. Native V2 JSON files are reported as +unsupported and make the runner exit nonzero; they are not converted or silently rendered with a fallback theme. + +Before changing the scenario, typecheck it with: + +```sh +opencode-drive check packages/tui/test/theme/gallery/scenario.ts +``` diff --git a/packages/tui/test/theme/gallery/run.ts b/packages/tui/test/theme/gallery/run.ts new file mode 100644 index 0000000000..a766ace9fa --- /dev/null +++ b/packages/tui/test/theme/gallery/run.ts @@ -0,0 +1,79 @@ +import path from "node:path" +import { mkdir } from "node:fs/promises" + +const root = path.resolve(import.meta.dir, "../../../../..") +const themes = path.resolve(Bun.argv[2] ?? path.join(import.meta.dir, "themes")) +const screenshots = path.resolve(Bun.argv[3] ?? path.join(import.meta.dir, "screenshots")) +const scenario = path.join(import.meta.dir, "scenario.ts") +const files = await Array.fromAsync(new Bun.Glob("**/*.json").scan({ cwd: themes, absolute: true })) + +if (!files.length) { + console.error(`No JSON themes found in ${themes}`) + process.exit(1) +} + +await mkdir(screenshots, { recursive: true }) + +const failures: string[] = [] +const slugs = new Set() + +for (const file of files.sort()) { + const source = await Bun.file(file).json().catch(() => undefined) + const slug = path.basename(file, ".json").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "") + if (!slug) { + failures.push(`${file}: filename does not produce a usable theme prefix`) + continue + } + if (slugs.has(slug)) { + failures.push(`${file}: duplicate theme prefix "${slug}"`) + continue + } + slugs.add(slug) + + if (!isRecord(source)) { + failures.push(`${file}: invalid JSON theme object`) + continue + } + if (source.version === 2) { + failures.push(`${file}: native V2 theme loading is not supported by the TUI yet`) + continue + } + if (!isRecord(source.theme)) { + failures.push(`${file}: expected a V1 theme with a "theme" object`) + continue + } + + for (const mode of ["light", "dark"] as const) { + const name = `theme-gallery-${slug}-${mode}-${process.pid}` + console.log(`\n[${slug}/${mode}] capturing screenshots`) + const child = Bun.spawn( + ["opencode-drive", "start", "--name", name, "--script", scenario, "--dev", root], + { + cwd: root, + env: { + ...process.env, + OPENCODE_THEME_GALLERY_FILE: file, + OPENCODE_THEME_GALLERY_MODE: mode, + OPENCODE_THEME_GALLERY_OUTPUT: screenshots, + OPENCODE_THEME_GALLERY_SLUG: slug, + }, + stdout: "inherit", + stderr: "inherit", + }, + ) + const exit = await child.exited + if (exit !== 0) failures.push(`${file} (${mode}): OpenCode Drive exited with ${exit}`) + } +} + +if (failures.length) { + console.error("\nTheme gallery completed with errors:") + failures.forEach((failure) => console.error(`- ${failure}`)) + process.exit(1) +} + +console.log(`\nScreenshots written to ${screenshots}`) + +function isRecord(value: unknown): value is Record { + return !!value && typeof value === "object" && !Array.isArray(value) +} diff --git a/packages/tui/test/theme/gallery/scenario.ts b/packages/tui/test/theme/gallery/scenario.ts new file mode 100644 index 0000000000..431b142147 --- /dev/null +++ b/packages/tui/test/theme/gallery/scenario.ts @@ -0,0 +1,123 @@ +import path from "node:path" +import { mkdir } from "node:fs/promises" +import { defineScript, wait } from "opencode-drive" + +const file = required("OPENCODE_THEME_GALLERY_FILE") +const mode = required("OPENCODE_THEME_GALLERY_MODE") +const output = required("OPENCODE_THEME_GALLERY_OUTPUT") +const slug = required("OPENCODE_THEME_GALLERY_SLUG") +const themeName = `gallery-${slug}` + +export default defineScript({ + async setup({ fs, config }) { + await fs.writeFile("README.md", "# Theme gallery fixture\n\nA stable project for OpenCode TUI screenshots.\n") + await fs.writeFile("src/example.ts", "export const palette = ['neutral', 'accent', 'interactive']\n") + await fs.writeFile(`.opencode/themes/${themeName}.json`, await Bun.file(file).text()) + await fs.writeFile( + ".opencode/cli.json", + `${JSON.stringify({ + theme: { name: themeName, mode }, + }, undefined, 2)}\n`, + ) + config.permissions = [ + { action: "*", resource: "*", effect: "allow" }, + { action: "shell", resource: "*", effect: "ask" }, + ] + }, + async run({ llm, ui }) { + await mkdir(output, { recursive: true }) + llm.title((_request, index) => (index === 0 ? "Theme gallery" : `Theme gallery ${index + 1}`)) + + await ui.waitFor((state) => state.focused.editor) + await ui.waitFor("local") + await wait(750) + await capture(ui, "01-home") + + await ui.submit("Show me a compact markdown theme specimen") + await llm.send( + llm.reasoning("I will provide a stable markdown sample for the theme gallery."), + llm.text( + [ + "# Theme Review", + "", + "A compact response with **strong text**, *emphasis*, and an `inline token`.", + "", + "> Good themes preserve hierarchy without losing contrast.", + "", + "- Neutral surfaces", + "- Interactive accents", + "- Success, warning, and error feedback", + "", + "```ts", + "const mode = 'gallery'", + "```", + ].join("\n"), + ), + ) + await ui.waitFor("Theme Review") + await capture(ui, "02-markdown") + + const permission = llm.send( + llm.toolCall({ + id: "theme-gallery-permission", + index: 0, + name: "shell", + input: { command: "printf 'theme gallery permission'" }, + }), + ) + await ui.submit("Run a protected command so I can inspect the permission prompt") + await ui.waitFor("Permission required") + await capture(ui, "03-permission") + await ui.enter() + await permission + await llm.send(llm.text("The protected command completed successfully.")) + await ui.waitFor("completed successfully") + + const form = llm.send( + llm.toolCall({ + id: "theme-gallery-question", + index: 0, + name: "question", + input: { + questions: [ + { + header: "Theme direction", + question: "Which direction should this theme emphasize?", + options: [ + { label: "Balanced", description: "Keep surfaces and accents evenly weighted" }, + { label: "Expressive", description: "Give accent colors more visual presence" }, + { label: "Quiet", description: "Favor neutral surfaces and restrained contrast" }, + ], + }, + ], + }, + }), + ) + await ui.submit("Ask me for a theme direction") + await ui.waitFor("Which direction should this theme emphasize?") + await capture(ui, "04-form") + await ui.enter() + await form + await llm.send(llm.text("The theme review form was submitted.")) + await ui.waitFor("form was submitted") + + await ui.submit("/new") + await ui.waitFor((state) => state.focused.editor) + await ui.submit("Create a second session for the session switcher gallery") + await llm.send(llm.text("This second session makes the switcher state visible.")) + await ui.submit("/sessions") + await ui.waitFor("Sessions") + await capture(ui, "05-session-switcher") + }, +}) + +async function capture(ui: { screenshot(name?: string): Promise }, state: string) { + const source = await ui.screenshot(`${slug}-${mode}-${state}`) + await Bun.write(path.join(output, `${slug}-${mode}-${state}.png`), Bun.file(source)) +} + +function required(name: string) { + const value = process.env[name] + if (!value) throw new Error(`${name} is required`) + return value +} diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-01-home.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-01-home.png new file mode 100644 index 0000000000..85fd02bb77 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-02-markdown.png new file mode 100644 index 0000000000..dce9575ea0 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-03-permission.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-03-permission.png new file mode 100644 index 0000000000..13085991f2 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-04-form.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-04-form.png new file mode 100644 index 0000000000..6db777de88 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-05-session-switcher.png new file mode 100644 index 0000000000..97e17a97dc Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-dark-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-01-home.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-01-home.png new file mode 100644 index 0000000000..5aede0fb5e Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-02-markdown.png new file mode 100644 index 0000000000..f1fc274b0b Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-03-permission.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-03-permission.png new file mode 100644 index 0000000000..440e39ea6f Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-04-form.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-04-form.png new file mode 100644 index 0000000000..a49492ecf5 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-05-session-switcher.png new file mode 100644 index 0000000000..5e8e9b63e3 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-dark-light-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-01-home.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-01-home.png new file mode 100644 index 0000000000..a7f62e3fe6 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-02-markdown.png new file mode 100644 index 0000000000..a79f4bd217 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-03-permission.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-03-permission.png new file mode 100644 index 0000000000..21e352d901 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-04-form.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-04-form.png new file mode 100644 index 0000000000..7e64cfe02c Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-05-session-switcher.png new file mode 100644 index 0000000000..dae6d3a307 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-dark-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-01-home.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-01-home.png new file mode 100644 index 0000000000..7b5a7f0820 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-02-markdown.png new file mode 100644 index 0000000000..cd857594ac Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-03-permission.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-03-permission.png new file mode 100644 index 0000000000..a73cef1af4 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-04-form.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-04-form.png new file mode 100644 index 0000000000..c9205f0c77 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-05-session-switcher.png new file mode 100644 index 0000000000..ee71654fd7 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/candy-pop-light-light-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/matchalk-dark-01-home.png b/packages/tui/test/theme/gallery/screenshots/matchalk-dark-01-home.png new file mode 100644 index 0000000000..f0bc95aecd Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/matchalk-dark-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/matchalk-dark-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/matchalk-dark-02-markdown.png new file mode 100644 index 0000000000..14d7197b9f Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/matchalk-dark-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/matchalk-dark-03-permission.png b/packages/tui/test/theme/gallery/screenshots/matchalk-dark-03-permission.png new file mode 100644 index 0000000000..a9a6a3edae Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/matchalk-dark-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/matchalk-dark-04-form.png b/packages/tui/test/theme/gallery/screenshots/matchalk-dark-04-form.png new file mode 100644 index 0000000000..d312a6cddf Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/matchalk-dark-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/matchalk-dark-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/matchalk-dark-05-session-switcher.png new file mode 100644 index 0000000000..dd26826220 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/matchalk-dark-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/matchalk-light-01-home.png b/packages/tui/test/theme/gallery/screenshots/matchalk-light-01-home.png new file mode 100644 index 0000000000..260dccce75 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/matchalk-light-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/matchalk-light-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/matchalk-light-02-markdown.png new file mode 100644 index 0000000000..4476d92077 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/matchalk-light-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/matchalk-light-03-permission.png b/packages/tui/test/theme/gallery/screenshots/matchalk-light-03-permission.png new file mode 100644 index 0000000000..137d8d9539 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/matchalk-light-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/matchalk-light-04-form.png b/packages/tui/test/theme/gallery/screenshots/matchalk-light-04-form.png new file mode 100644 index 0000000000..960932bf43 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/matchalk-light-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/matchalk-light-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/matchalk-light-05-session-switcher.png new file mode 100644 index 0000000000..d6f4b64031 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/matchalk-light-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/nightowl-dark-01-home.png b/packages/tui/test/theme/gallery/screenshots/nightowl-dark-01-home.png new file mode 100644 index 0000000000..020450156e Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/nightowl-dark-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/nightowl-dark-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/nightowl-dark-02-markdown.png new file mode 100644 index 0000000000..96f887b402 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/nightowl-dark-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/nightowl-dark-03-permission.png b/packages/tui/test/theme/gallery/screenshots/nightowl-dark-03-permission.png new file mode 100644 index 0000000000..4eead57f71 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/nightowl-dark-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/nightowl-dark-04-form.png b/packages/tui/test/theme/gallery/screenshots/nightowl-dark-04-form.png new file mode 100644 index 0000000000..6d66d8efdd Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/nightowl-dark-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/nightowl-dark-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/nightowl-dark-05-session-switcher.png new file mode 100644 index 0000000000..3d6dc50047 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/nightowl-dark-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/nightowl-light-01-home.png b/packages/tui/test/theme/gallery/screenshots/nightowl-light-01-home.png new file mode 100644 index 0000000000..e8e8f5b2e3 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/nightowl-light-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/nightowl-light-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/nightowl-light-02-markdown.png new file mode 100644 index 0000000000..0047a335d3 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/nightowl-light-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/nightowl-light-03-permission.png b/packages/tui/test/theme/gallery/screenshots/nightowl-light-03-permission.png new file mode 100644 index 0000000000..247e65b8bc Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/nightowl-light-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/nightowl-light-04-form.png b/packages/tui/test/theme/gallery/screenshots/nightowl-light-04-form.png new file mode 100644 index 0000000000..b9c3d97621 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/nightowl-light-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/nightowl-light-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/nightowl-light-05-session-switcher.png new file mode 100644 index 0000000000..c131bcd7c3 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/nightowl-light-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/opencode-dark-01-home.png b/packages/tui/test/theme/gallery/screenshots/opencode-dark-01-home.png new file mode 100644 index 0000000000..73cfc31508 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/opencode-dark-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/opencode-dark-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/opencode-dark-02-markdown.png new file mode 100644 index 0000000000..4169d9d601 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/opencode-dark-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/opencode-dark-03-permission.png b/packages/tui/test/theme/gallery/screenshots/opencode-dark-03-permission.png new file mode 100644 index 0000000000..5c57f54fb2 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/opencode-dark-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/opencode-dark-04-form.png b/packages/tui/test/theme/gallery/screenshots/opencode-dark-04-form.png new file mode 100644 index 0000000000..252bb25dbe Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/opencode-dark-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/opencode-dark-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/opencode-dark-05-session-switcher.png new file mode 100644 index 0000000000..6c8db1bda8 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/opencode-dark-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/opencode-light-01-home.png b/packages/tui/test/theme/gallery/screenshots/opencode-light-01-home.png new file mode 100644 index 0000000000..d6b54f5f19 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/opencode-light-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/opencode-light-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/opencode-light-02-markdown.png new file mode 100644 index 0000000000..5611898fce Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/opencode-light-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/opencode-light-03-permission.png b/packages/tui/test/theme/gallery/screenshots/opencode-light-03-permission.png new file mode 100644 index 0000000000..a5648b64f9 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/opencode-light-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/opencode-light-04-form.png b/packages/tui/test/theme/gallery/screenshots/opencode-light-04-form.png new file mode 100644 index 0000000000..481262f5db Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/opencode-light-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/opencode-light-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/opencode-light-05-session-switcher.png new file mode 100644 index 0000000000..df86354e88 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/opencode-light-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/poimandres-dark-01-home.png b/packages/tui/test/theme/gallery/screenshots/poimandres-dark-01-home.png new file mode 100644 index 0000000000..bdfb0fa28d Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/poimandres-dark-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/poimandres-dark-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/poimandres-dark-02-markdown.png new file mode 100644 index 0000000000..a0ade76c8f Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/poimandres-dark-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/poimandres-dark-03-permission.png b/packages/tui/test/theme/gallery/screenshots/poimandres-dark-03-permission.png new file mode 100644 index 0000000000..4a9cb28c54 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/poimandres-dark-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/poimandres-dark-04-form.png b/packages/tui/test/theme/gallery/screenshots/poimandres-dark-04-form.png new file mode 100644 index 0000000000..6e2641425d Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/poimandres-dark-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/poimandres-dark-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/poimandres-dark-05-session-switcher.png new file mode 100644 index 0000000000..1000d5ac36 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/poimandres-dark-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/poimandres-light-01-home.png b/packages/tui/test/theme/gallery/screenshots/poimandres-light-01-home.png new file mode 100644 index 0000000000..286ed20ce2 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/poimandres-light-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/poimandres-light-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/poimandres-light-02-markdown.png new file mode 100644 index 0000000000..dacda50f1b Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/poimandres-light-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/poimandres-light-03-permission.png b/packages/tui/test/theme/gallery/screenshots/poimandres-light-03-permission.png new file mode 100644 index 0000000000..63876dbdd9 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/poimandres-light-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/poimandres-light-04-form.png b/packages/tui/test/theme/gallery/screenshots/poimandres-light-04-form.png new file mode 100644 index 0000000000..a3478b84b1 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/poimandres-light-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/poimandres-light-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/poimandres-light-05-session-switcher.png new file mode 100644 index 0000000000..f313c2aece Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/poimandres-light-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/solarized-dark-01-home.png b/packages/tui/test/theme/gallery/screenshots/solarized-dark-01-home.png new file mode 100644 index 0000000000..d06a8aa7ad Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/solarized-dark-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/solarized-dark-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/solarized-dark-02-markdown.png new file mode 100644 index 0000000000..03e20989c6 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/solarized-dark-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/solarized-dark-03-permission.png b/packages/tui/test/theme/gallery/screenshots/solarized-dark-03-permission.png new file mode 100644 index 0000000000..75b78f990c Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/solarized-dark-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/solarized-dark-04-form.png b/packages/tui/test/theme/gallery/screenshots/solarized-dark-04-form.png new file mode 100644 index 0000000000..05eb1f1f82 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/solarized-dark-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/solarized-dark-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/solarized-dark-05-session-switcher.png new file mode 100644 index 0000000000..111cf36574 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/solarized-dark-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/solarized-light-01-home.png b/packages/tui/test/theme/gallery/screenshots/solarized-light-01-home.png new file mode 100644 index 0000000000..d22583539c Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/solarized-light-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/solarized-light-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/solarized-light-02-markdown.png new file mode 100644 index 0000000000..1032c640a8 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/solarized-light-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/solarized-light-03-permission.png b/packages/tui/test/theme/gallery/screenshots/solarized-light-03-permission.png new file mode 100644 index 0000000000..df51932159 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/solarized-light-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/solarized-light-04-form.png b/packages/tui/test/theme/gallery/screenshots/solarized-light-04-form.png new file mode 100644 index 0000000000..fa90f64a5a Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/solarized-light-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/solarized-light-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/solarized-light-05-session-switcher.png new file mode 100644 index 0000000000..028897da55 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/solarized-light-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-01-home.png b/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-01-home.png new file mode 100644 index 0000000000..d2eece9b25 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-02-markdown.png new file mode 100644 index 0000000000..1d6934080c Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-03-permission.png b/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-03-permission.png new file mode 100644 index 0000000000..18eceb2c7c Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-04-form.png b/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-04-form.png new file mode 100644 index 0000000000..bfbc4f2d2f Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-05-session-switcher.png new file mode 100644 index 0000000000..efe116759b Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/synthwave84-dark-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/synthwave84-light-01-home.png b/packages/tui/test/theme/gallery/screenshots/synthwave84-light-01-home.png new file mode 100644 index 0000000000..ce41c752c4 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/synthwave84-light-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/synthwave84-light-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/synthwave84-light-02-markdown.png new file mode 100644 index 0000000000..e178f9affc Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/synthwave84-light-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/synthwave84-light-03-permission.png b/packages/tui/test/theme/gallery/screenshots/synthwave84-light-03-permission.png new file mode 100644 index 0000000000..e77d1b56d8 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/synthwave84-light-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/synthwave84-light-04-form.png b/packages/tui/test/theme/gallery/screenshots/synthwave84-light-04-form.png new file mode 100644 index 0000000000..4e76f87573 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/synthwave84-light-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/synthwave84-light-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/synthwave84-light-05-session-switcher.png new file mode 100644 index 0000000000..0817ef344c Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/synthwave84-light-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/vercel-dark-01-home.png b/packages/tui/test/theme/gallery/screenshots/vercel-dark-01-home.png new file mode 100644 index 0000000000..251640951b Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/vercel-dark-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/vercel-dark-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/vercel-dark-02-markdown.png new file mode 100644 index 0000000000..64a70accb5 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/vercel-dark-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/vercel-dark-03-permission.png b/packages/tui/test/theme/gallery/screenshots/vercel-dark-03-permission.png new file mode 100644 index 0000000000..df756ba47c Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/vercel-dark-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/vercel-dark-04-form.png b/packages/tui/test/theme/gallery/screenshots/vercel-dark-04-form.png new file mode 100644 index 0000000000..1e8e5bdd61 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/vercel-dark-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/vercel-dark-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/vercel-dark-05-session-switcher.png new file mode 100644 index 0000000000..e3f9417804 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/vercel-dark-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/vercel-light-01-home.png b/packages/tui/test/theme/gallery/screenshots/vercel-light-01-home.png new file mode 100644 index 0000000000..a37ed3f09f Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/vercel-light-01-home.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/vercel-light-02-markdown.png b/packages/tui/test/theme/gallery/screenshots/vercel-light-02-markdown.png new file mode 100644 index 0000000000..74dbbbb959 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/vercel-light-02-markdown.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/vercel-light-03-permission.png b/packages/tui/test/theme/gallery/screenshots/vercel-light-03-permission.png new file mode 100644 index 0000000000..3181b70b14 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/vercel-light-03-permission.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/vercel-light-04-form.png b/packages/tui/test/theme/gallery/screenshots/vercel-light-04-form.png new file mode 100644 index 0000000000..400a01587c Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/vercel-light-04-form.png differ diff --git a/packages/tui/test/theme/gallery/screenshots/vercel-light-05-session-switcher.png b/packages/tui/test/theme/gallery/screenshots/vercel-light-05-session-switcher.png new file mode 100644 index 0000000000..70221be8d5 Binary files /dev/null and b/packages/tui/test/theme/gallery/screenshots/vercel-light-05-session-switcher.png differ diff --git a/packages/tui/test/theme/gallery/themes/candy-pop-dark.json b/packages/tui/test/theme/gallery/themes/candy-pop-dark.json new file mode 100644 index 0000000000..f677a88d78 --- /dev/null +++ b/packages/tui/test/theme/gallery/themes/candy-pop-dark.json @@ -0,0 +1,79 @@ +{ + "$schema": "https://opencode.ai/theme.json", + "defs": { + "bg": "#2e1a47", + "panel": "#371f54", + "element": "#4a2b7a", + "borderSubtle": "#553183", + "border": "#683b9f", + "text": "#ffffff", + "textSoft": "#e0c3fc", + "textMuted": "#b39ddb", + "pink": "#ec4899", + "pinkBright": "#f472b6", + "purple": "#a78bfa", + "cyan": "#22d3ee", + "green": "#34d399", + "greenBright": "#6ee7b7", + "yellow": "#facc15", + "red": "#fb7185", + "addedBg": "#2f294e", + "removedBg": "#3f214c", + "contextBg": "#371f54", + "addedLineBg": "#304052", + "removedLineBg": "#54294f" + }, + "theme": { + "primary": "pink", + "secondary": "cyan", + "accent": "pinkBright", + "error": "red", + "warning": "yellow", + "success": "green", + "info": "cyan", + "text": "text", + "textMuted": "textMuted", + "background": "bg", + "backgroundPanel": "panel", + "backgroundElement": "element", + "backgroundMenu": "element", + "border": "border", + "borderActive": "pink", + "borderSubtle": "borderSubtle", + "diffAdded": "green", + "diffRemoved": "red", + "diffContext": "textMuted", + "diffHunkHeader": "pink", + "diffHighlightAdded": "greenBright", + "diffHighlightRemoved": "pinkBright", + "diffAddedBg": "addedBg", + "diffRemovedBg": "removedBg", + "diffContextBg": "contextBg", + "diffLineNumber": "textMuted", + "diffAddedLineNumberBg": "addedLineBg", + "diffRemovedLineNumberBg": "removedLineBg", + "markdownText": "text", + "markdownHeading": "pink", + "markdownLink": "cyan", + "markdownLinkText": "pinkBright", + "markdownCode": "green", + "markdownBlockQuote": "purple", + "markdownEmph": "pinkBright", + "markdownStrong": "text", + "markdownHorizontalRule": "border", + "markdownListItem": "pink", + "markdownListEnumeration": "cyan", + "markdownImage": "cyan", + "markdownImageText": "pinkBright", + "markdownCodeBlock": "textSoft", + "syntaxComment": "textMuted", + "syntaxKeyword": "pink", + "syntaxFunction": "cyan", + "syntaxVariable": "text", + "syntaxString": "green", + "syntaxNumber": "yellow", + "syntaxType": "pinkBright", + "syntaxOperator": "textSoft", + "syntaxPunctuation": "textMuted" + } +} diff --git a/packages/tui/test/theme/gallery/themes/candy-pop-light.json b/packages/tui/test/theme/gallery/themes/candy-pop-light.json new file mode 100644 index 0000000000..53007cf964 --- /dev/null +++ b/packages/tui/test/theme/gallery/themes/candy-pop-light.json @@ -0,0 +1,80 @@ +{ + "$schema": "https://opencode.ai/theme.json", + "defs": { + "bg": "#fdf2f8", + "panel": "#fce7f3", + "element": "#fbcfe8", + "menu": "#ffffff", + "borderSubtle": "#fbcfe8", + "border": "#f9a8d4", + "text": "#831843", + "textSoft": "#9d174d", + "textMuted": "#be185d", + "pink": "#db2777", + "pinkBright": "#be185d", + "purple": "#7c3aed", + "cyan": "#0891b2", + "green": "#059669", + "greenBright": "#047857", + "yellow": "#d97706", + "red": "#e11d48", + "addedBg": "#e0f2e8", + "removedBg": "#fce1e8", + "contextBg": "#fce7f3", + "addedLineBg": "#c9ead9", + "removedLineBg": "#f8cbd7" + }, + "theme": { + "primary": "pink", + "secondary": "cyan", + "accent": "pinkBright", + "error": "red", + "warning": "yellow", + "success": "green", + "info": "cyan", + "text": "text", + "textMuted": "textMuted", + "background": "bg", + "backgroundPanel": "panel", + "backgroundElement": "element", + "backgroundMenu": "menu", + "border": "border", + "borderActive": "pink", + "borderSubtle": "borderSubtle", + "diffAdded": "green", + "diffRemoved": "red", + "diffContext": "textMuted", + "diffHunkHeader": "pink", + "diffHighlightAdded": "greenBright", + "diffHighlightRemoved": "pinkBright", + "diffAddedBg": "addedBg", + "diffRemovedBg": "removedBg", + "diffContextBg": "contextBg", + "diffLineNumber": "textMuted", + "diffAddedLineNumberBg": "addedLineBg", + "diffRemovedLineNumberBg": "removedLineBg", + "markdownText": "text", + "markdownHeading": "pink", + "markdownLink": "cyan", + "markdownLinkText": "pinkBright", + "markdownCode": "green", + "markdownBlockQuote": "purple", + "markdownEmph": "pinkBright", + "markdownStrong": "text", + "markdownHorizontalRule": "border", + "markdownListItem": "pink", + "markdownListEnumeration": "cyan", + "markdownImage": "cyan", + "markdownImageText": "pinkBright", + "markdownCodeBlock": "textSoft", + "syntaxComment": "textMuted", + "syntaxKeyword": "pink", + "syntaxFunction": "cyan", + "syntaxVariable": "text", + "syntaxString": "green", + "syntaxNumber": "yellow", + "syntaxType": "pinkBright", + "syntaxOperator": "textSoft", + "syntaxPunctuation": "textMuted" + } +} diff --git a/packages/tui/test/theme/gallery/themes/matchalk.json b/packages/tui/test/theme/gallery/themes/matchalk.json new file mode 100644 index 0000000000..0219113d81 --- /dev/null +++ b/packages/tui/test/theme/gallery/themes/matchalk.json @@ -0,0 +1,75 @@ +{ + "$schema": "https://opencode.ai/theme.json", + "defs": { + "bg": "#1C2427", + "panel": "#273136", + "element": "#323E45", + "borderSubtle": "#304E37", + "text": "#D1DED3", + "textMuted": "#9AAEA7", + "commentMuted": "#60777D", + "green": "#7EB08A", + "tan": "#D2B48C", + "pink": "#FF819F", + "purple": "#BA8EAF", + "blue": "#7EA4B0", + "violet": "#8A7EB0", + "addedBg": "#2B3D33", + "removedBg": "#4D3740", + "contextBg": "#222A2E", + "addedLineBg": "#3A5244", + "removedLineBg": "#60414B" + }, + "theme": { + "primary": "green", + "secondary": "tan", + "accent": "pink", + "error": "pink", + "warning": "purple", + "success": "green", + "info": "tan", + "text": "text", + "textMuted": "textMuted", + "background": "bg", + "backgroundPanel": "panel", + "backgroundElement": "element", + "border": "element", + "borderActive": "green", + "borderSubtle": "borderSubtle", + "diffAdded": "green", + "diffRemoved": "pink", + "diffContext": "textMuted", + "diffHunkHeader": "tan", + "diffHighlightAdded": "green", + "diffHighlightRemoved": "pink", + "diffAddedBg": "addedBg", + "diffRemovedBg": "removedBg", + "diffContextBg": "contextBg", + "diffLineNumber": "blue", + "diffAddedLineNumberBg": "addedLineBg", + "diffRemovedLineNumberBg": "removedLineBg", + "markdownText": "text", + "markdownHeading": "tan", + "markdownLink": "tan", + "markdownLinkText": "green", + "markdownCode": "tan", + "markdownBlockQuote": "blue", + "markdownEmph": "text", + "markdownStrong": "text", + "markdownHorizontalRule": "tan", + "markdownListItem": "tan", + "markdownListEnumeration": "tan", + "markdownImage": "tan", + "markdownImageText": "pink", + "markdownCodeBlock": "green", + "syntaxComment": "commentMuted", + "syntaxKeyword": "tan", + "syntaxFunction": "green", + "syntaxVariable": "text", + "syntaxString": "purple", + "syntaxNumber": "blue", + "syntaxType": "blue", + "syntaxOperator": "tan", + "syntaxPunctuation": "blue" + } +} diff --git a/packages/tui/test/theme/gallery/themes/nightowl.json b/packages/tui/test/theme/gallery/themes/nightowl.json new file mode 100644 index 0000000000..d123396de3 --- /dev/null +++ b/packages/tui/test/theme/gallery/themes/nightowl.json @@ -0,0 +1,221 @@ +{ + "$schema": "https://opencode.ai/theme.json", + "defs": { + "nightOwlBg": "#011627", + "nightOwlFg": "#d6deeb", + "nightOwlBlue": "#82AAFF", + "nightOwlCyan": "#7fdbca", + "nightOwlGreen": "#c5e478", + "nightOwlYellow": "#ecc48d", + "nightOwlOrange": "#F78C6C", + "nightOwlRed": "#EF5350", + "nightOwlPink": "#ff5874", + "nightOwlPurple": "#c792ea", + "nightOwlMuted": "#5f7e97", + "nightOwlGray": "#637777", + "nightOwlLightGray": "#89a4bb", + "nightOwlPanel": "#0b253a" + }, + "theme": { + "primary": { + "dark": "nightOwlBlue", + "light": "nightOwlBlue" + }, + "secondary": { + "dark": "nightOwlCyan", + "light": "nightOwlCyan" + }, + "accent": { + "dark": "nightOwlPurple", + "light": "nightOwlPurple" + }, + "error": { + "dark": "nightOwlRed", + "light": "nightOwlRed" + }, + "warning": { + "dark": "nightOwlYellow", + "light": "nightOwlYellow" + }, + "success": { + "dark": "nightOwlGreen", + "light": "nightOwlGreen" + }, + "info": { + "dark": "nightOwlBlue", + "light": "nightOwlBlue" + }, + "text": { + "dark": "nightOwlFg", + "light": "nightOwlFg" + }, + "textMuted": { + "dark": "nightOwlMuted", + "light": "nightOwlMuted" + }, + "background": { + "dark": "nightOwlBg", + "light": "nightOwlBg" + }, + "backgroundPanel": { + "dark": "nightOwlPanel", + "light": "nightOwlPanel" + }, + "backgroundElement": { + "dark": "nightOwlPanel", + "light": "nightOwlPanel" + }, + "border": { + "dark": "nightOwlMuted", + "light": "nightOwlMuted" + }, + "borderActive": { + "dark": "nightOwlBlue", + "light": "nightOwlBlue" + }, + "borderSubtle": { + "dark": "nightOwlMuted", + "light": "nightOwlMuted" + }, + "diffAdded": { + "dark": "nightOwlGreen", + "light": "nightOwlGreen" + }, + "diffRemoved": { + "dark": "nightOwlRed", + "light": "nightOwlRed" + }, + "diffContext": { + "dark": "nightOwlMuted", + "light": "nightOwlMuted" + }, + "diffHunkHeader": { + "dark": "nightOwlMuted", + "light": "nightOwlMuted" + }, + "diffHighlightAdded": { + "dark": "nightOwlGreen", + "light": "nightOwlGreen" + }, + "diffHighlightRemoved": { + "dark": "nightOwlRed", + "light": "nightOwlRed" + }, + "diffAddedBg": { + "dark": "#0a2e1a", + "light": "#0a2e1a" + }, + "diffRemovedBg": { + "dark": "#2d1b1b", + "light": "#2d1b1b" + }, + "diffContextBg": { + "dark": "nightOwlPanel", + "light": "nightOwlPanel" + }, + "diffLineNumber": { + "dark": "#7791a6", + "light": "#7791a6" + }, + "diffAddedLineNumberBg": { + "dark": "#0a2e1a", + "light": "#0a2e1a" + }, + "diffRemovedLineNumberBg": { + "dark": "#2d1b1b", + "light": "#2d1b1b" + }, + "markdownText": { + "dark": "nightOwlFg", + "light": "nightOwlFg" + }, + "markdownHeading": { + "dark": "nightOwlBlue", + "light": "nightOwlBlue" + }, + "markdownLink": { + "dark": "nightOwlCyan", + "light": "nightOwlCyan" + }, + "markdownLinkText": { + "dark": "nightOwlBlue", + "light": "nightOwlBlue" + }, + "markdownCode": { + "dark": "nightOwlGreen", + "light": "nightOwlGreen" + }, + "markdownBlockQuote": { + "dark": "nightOwlMuted", + "light": "nightOwlMuted" + }, + "markdownEmph": { + "dark": "nightOwlPurple", + "light": "nightOwlPurple" + }, + "markdownStrong": { + "dark": "nightOwlYellow", + "light": "nightOwlYellow" + }, + "markdownHorizontalRule": { + "dark": "nightOwlMuted", + "light": "nightOwlMuted" + }, + "markdownListItem": { + "dark": "nightOwlBlue", + "light": "nightOwlBlue" + }, + "markdownListEnumeration": { + "dark": "nightOwlCyan", + "light": "nightOwlCyan" + }, + "markdownImage": { + "dark": "nightOwlCyan", + "light": "nightOwlCyan" + }, + "markdownImageText": { + "dark": "nightOwlBlue", + "light": "nightOwlBlue" + }, + "markdownCodeBlock": { + "dark": "nightOwlFg", + "light": "nightOwlFg" + }, + "syntaxComment": { + "dark": "nightOwlGray", + "light": "nightOwlGray" + }, + "syntaxKeyword": { + "dark": "nightOwlPurple", + "light": "nightOwlPurple" + }, + "syntaxFunction": { + "dark": "nightOwlBlue", + "light": "nightOwlBlue" + }, + "syntaxVariable": { + "dark": "nightOwlFg", + "light": "nightOwlFg" + }, + "syntaxString": { + "dark": "nightOwlYellow", + "light": "nightOwlYellow" + }, + "syntaxNumber": { + "dark": "nightOwlOrange", + "light": "nightOwlOrange" + }, + "syntaxType": { + "dark": "nightOwlGreen", + "light": "nightOwlGreen" + }, + "syntaxOperator": { + "dark": "nightOwlCyan", + "light": "nightOwlCyan" + }, + "syntaxPunctuation": { + "dark": "nightOwlFg", + "light": "nightOwlFg" + } + } +} diff --git a/packages/tui/test/theme/gallery/themes/opencode.json b/packages/tui/test/theme/gallery/themes/opencode.json new file mode 100644 index 0000000000..e92dca8c2f --- /dev/null +++ b/packages/tui/test/theme/gallery/themes/opencode.json @@ -0,0 +1,245 @@ +{ + "$schema": "https://opencode.ai/theme.json", + "defs": { + "darkStep1": "#0a0a0a", + "darkStep2": "#141414", + "darkStep3": "#1e1e1e", + "darkStep4": "#282828", + "darkStep5": "#323232", + "darkStep6": "#3c3c3c", + "darkStep7": "#484848", + "darkStep8": "#606060", + "darkStep9": "#fab283", + "darkStep10": "#ffc09f", + "darkStep11": "#808080", + "darkStep12": "#eeeeee", + "darkSecondary": "#5c9cf5", + "darkAccent": "#9d7cd8", + "darkRed": "#e06c75", + "darkOrange": "#f5a742", + "darkGreen": "#7fd88f", + "darkCyan": "#56b6c2", + "darkYellow": "#e5c07b", + "lightStep1": "#ffffff", + "lightStep2": "#fafafa", + "lightStep3": "#f5f5f5", + "lightStep4": "#ebebeb", + "lightStep5": "#e1e1e1", + "lightStep6": "#d4d4d4", + "lightStep7": "#b8b8b8", + "lightStep8": "#a0a0a0", + "lightStep9": "#3b7dd8", + "lightStep10": "#2968c3", + "lightStep11": "#8a8a8a", + "lightStep12": "#1a1a1a", + "lightSecondary": "#7b5bb6", + "lightAccent": "#d68c27", + "lightRed": "#d1383d", + "lightOrange": "#d68c27", + "lightGreen": "#3d9a57", + "lightCyan": "#318795", + "lightYellow": "#b0851f" + }, + "theme": { + "primary": { + "dark": "darkStep9", + "light": "lightStep9" + }, + "secondary": { + "dark": "darkSecondary", + "light": "lightSecondary" + }, + "accent": { + "dark": "darkAccent", + "light": "lightAccent" + }, + "error": { + "dark": "darkRed", + "light": "lightRed" + }, + "warning": { + "dark": "darkOrange", + "light": "lightOrange" + }, + "success": { + "dark": "darkGreen", + "light": "lightGreen" + }, + "info": { + "dark": "darkCyan", + "light": "lightCyan" + }, + "text": { + "dark": "darkStep12", + "light": "lightStep12" + }, + "textMuted": { + "dark": "darkStep11", + "light": "lightStep11" + }, + "background": { + "dark": "darkStep1", + "light": "lightStep1" + }, + "backgroundPanel": { + "dark": "darkStep2", + "light": "lightStep2" + }, + "backgroundElement": { + "dark": "darkStep3", + "light": "lightStep3" + }, + "border": { + "dark": "darkStep7", + "light": "lightStep7" + }, + "borderActive": { + "dark": "darkStep8", + "light": "lightStep8" + }, + "borderSubtle": { + "dark": "darkStep6", + "light": "lightStep6" + }, + "diffAdded": { + "dark": "#4fd6be", + "light": "#1e725c" + }, + "diffRemoved": { + "dark": "#c53b53", + "light": "#c53b53" + }, + "diffContext": { + "dark": "#828bb8", + "light": "#7086b5" + }, + "diffHunkHeader": { + "dark": "#828bb8", + "light": "#7086b5" + }, + "diffHighlightAdded": { + "dark": "#b8db87", + "light": "#4db380" + }, + "diffHighlightRemoved": { + "dark": "#e26a75", + "light": "#f52a65" + }, + "diffAddedBg": { + "dark": "#20303b", + "light": "#d5e5d5" + }, + "diffRemovedBg": { + "dark": "#37222c", + "light": "#f7d8db" + }, + "diffContextBg": { + "dark": "darkStep2", + "light": "lightStep2" + }, + "diffLineNumber": { + "dark": "#8f8f8f", + "light": "#595959" + }, + "diffAddedLineNumberBg": { + "dark": "#1b2b34", + "light": "#c5d5c5" + }, + "diffRemovedLineNumberBg": { + "dark": "#2d1f26", + "light": "#e7c8cb" + }, + "markdownText": { + "dark": "darkStep12", + "light": "lightStep12" + }, + "markdownHeading": { + "dark": "darkAccent", + "light": "lightAccent" + }, + "markdownLink": { + "dark": "darkStep9", + "light": "lightStep9" + }, + "markdownLinkText": { + "dark": "darkCyan", + "light": "lightCyan" + }, + "markdownCode": { + "dark": "darkGreen", + "light": "lightGreen" + }, + "markdownBlockQuote": { + "dark": "darkYellow", + "light": "lightYellow" + }, + "markdownEmph": { + "dark": "darkYellow", + "light": "lightYellow" + }, + "markdownStrong": { + "dark": "darkOrange", + "light": "lightOrange" + }, + "markdownHorizontalRule": { + "dark": "darkStep11", + "light": "lightStep11" + }, + "markdownListItem": { + "dark": "darkStep9", + "light": "lightStep9" + }, + "markdownListEnumeration": { + "dark": "darkCyan", + "light": "lightCyan" + }, + "markdownImage": { + "dark": "darkStep9", + "light": "lightStep9" + }, + "markdownImageText": { + "dark": "darkCyan", + "light": "lightCyan" + }, + "markdownCodeBlock": { + "dark": "darkStep12", + "light": "lightStep12" + }, + "syntaxComment": { + "dark": "darkStep11", + "light": "lightStep11" + }, + "syntaxKeyword": { + "dark": "darkAccent", + "light": "lightAccent" + }, + "syntaxFunction": { + "dark": "darkStep9", + "light": "lightStep9" + }, + "syntaxVariable": { + "dark": "darkRed", + "light": "lightRed" + }, + "syntaxString": { + "dark": "darkGreen", + "light": "lightGreen" + }, + "syntaxNumber": { + "dark": "darkOrange", + "light": "lightOrange" + }, + "syntaxType": { + "dark": "darkYellow", + "light": "lightYellow" + }, + "syntaxOperator": { + "dark": "darkCyan", + "light": "lightCyan" + }, + "syntaxPunctuation": { + "dark": "darkStep12", + "light": "lightStep12" + } + } +} diff --git a/packages/tui/test/theme/gallery/themes/poimandres.json b/packages/tui/test/theme/gallery/themes/poimandres.json new file mode 100644 index 0000000000..a87e04ee3f --- /dev/null +++ b/packages/tui/test/theme/gallery/themes/poimandres.json @@ -0,0 +1,78 @@ +{ + "$schema": "https://opencode.ai/theme.json", + "defs": { + "bg": "#1b1e28", + "panel": "#202430", + "element": "#303340", + "borderSubtle": "#252834", + "text": "#a6accd", + "textMuted": "#767c9d", + "offWhite": "#e4f0fb", + "blue": "#ADD7FF", + "cyan": "#89ddff", + "mint": "#5DE4c7", + "green": "#5fb3a1", + "typeBlue": "#91B4D5", + "slate": "#7390AA", + "red": "#d0679d", + "pink": "#f087bd", + "yellow": "#fffac2", + "addedBg": "#233037", + "removedBg": "#332631", + "contextBg": "#1e212c", + "addedLineBg": "#2b3c40", + "removedLineBg": "#422938" + }, + "theme": { + "primary": "blue", + "secondary": "mint", + "accent": "cyan", + "error": "red", + "warning": "yellow", + "success": "mint", + "info": "cyan", + "text": "text", + "textMuted": "textMuted", + "background": "bg", + "backgroundPanel": "panel", + "backgroundElement": "element", + "border": "element", + "borderActive": "blue", + "borderSubtle": "borderSubtle", + "diffAdded": "green", + "diffRemoved": "red", + "diffContext": "textMuted", + "diffHunkHeader": "cyan", + "diffHighlightAdded": "mint", + "diffHighlightRemoved": "pink", + "diffAddedBg": "addedBg", + "diffRemovedBg": "removedBg", + "diffContextBg": "contextBg", + "diffLineNumber": "slate", + "diffAddedLineNumberBg": "addedLineBg", + "diffRemovedLineNumberBg": "removedLineBg", + "markdownText": "offWhite", + "markdownHeading": "offWhite", + "markdownLink": "blue", + "markdownLinkText": "mint", + "markdownCode": "typeBlue", + "markdownBlockQuote": "mint", + "markdownEmph": "slate", + "markdownStrong": "offWhite", + "markdownHorizontalRule": "textMuted", + "markdownListItem": "blue", + "markdownListEnumeration": "blue", + "markdownImage": "blue", + "markdownImageText": "mint", + "markdownCodeBlock": "blue", + "syntaxComment": "textMuted", + "syntaxKeyword": "text", + "syntaxFunction": "blue", + "syntaxVariable": "offWhite", + "syntaxString": "mint", + "syntaxNumber": "mint", + "syntaxType": "typeBlue", + "syntaxOperator": "typeBlue", + "syntaxPunctuation": "text" + } +} diff --git a/packages/tui/test/theme/gallery/themes/solarized.json b/packages/tui/test/theme/gallery/themes/solarized.json new file mode 100644 index 0000000000..ddf5d3ae86 --- /dev/null +++ b/packages/tui/test/theme/gallery/themes/solarized.json @@ -0,0 +1,223 @@ +{ + "$schema": "https://opencode.ai/theme.json", + "defs": { + "base03": "#002b36", + "base02": "#073642", + "base01": "#586e75", + "base00": "#657b83", + "base0": "#839496", + "base1": "#93a1a1", + "base2": "#eee8d5", + "base3": "#fdf6e3", + "yellow": "#b58900", + "orange": "#cb4b16", + "red": "#dc322f", + "magenta": "#d33682", + "violet": "#6c71c4", + "blue": "#268bd2", + "cyan": "#2aa198", + "green": "#859900" + }, + "theme": { + "primary": { + "dark": "blue", + "light": "blue" + }, + "secondary": { + "dark": "violet", + "light": "violet" + }, + "accent": { + "dark": "cyan", + "light": "cyan" + }, + "error": { + "dark": "red", + "light": "red" + }, + "warning": { + "dark": "yellow", + "light": "yellow" + }, + "success": { + "dark": "green", + "light": "green" + }, + "info": { + "dark": "orange", + "light": "orange" + }, + "text": { + "dark": "base0", + "light": "base00" + }, + "textMuted": { + "dark": "base01", + "light": "base1" + }, + "background": { + "dark": "base03", + "light": "base3" + }, + "backgroundPanel": { + "dark": "base02", + "light": "base2" + }, + "backgroundElement": { + "dark": "#073642", + "light": "#eee8d5" + }, + "border": { + "dark": "base02", + "light": "base2" + }, + "borderActive": { + "dark": "base01", + "light": "base1" + }, + "borderSubtle": { + "dark": "#073642", + "light": "#eee8d5" + }, + "diffAdded": { + "dark": "green", + "light": "green" + }, + "diffRemoved": { + "dark": "red", + "light": "red" + }, + "diffContext": { + "dark": "base01", + "light": "base1" + }, + "diffHunkHeader": { + "dark": "base01", + "light": "base1" + }, + "diffHighlightAdded": { + "dark": "green", + "light": "green" + }, + "diffHighlightRemoved": { + "dark": "red", + "light": "red" + }, + "diffAddedBg": { + "dark": "#073642", + "light": "#eee8d5" + }, + "diffRemovedBg": { + "dark": "#073642", + "light": "#eee8d5" + }, + "diffContextBg": { + "dark": "base02", + "light": "base2" + }, + "diffLineNumber": { + "dark": "#8b9b9f", + "light": "#5f6969" + }, + "diffAddedLineNumberBg": { + "dark": "#073642", + "light": "#eee8d5" + }, + "diffRemovedLineNumberBg": { + "dark": "#073642", + "light": "#eee8d5" + }, + "markdownText": { + "dark": "base0", + "light": "base00" + }, + "markdownHeading": { + "dark": "blue", + "light": "blue" + }, + "markdownLink": { + "dark": "cyan", + "light": "cyan" + }, + "markdownLinkText": { + "dark": "violet", + "light": "violet" + }, + "markdownCode": { + "dark": "green", + "light": "green" + }, + "markdownBlockQuote": { + "dark": "base01", + "light": "base1" + }, + "markdownEmph": { + "dark": "yellow", + "light": "yellow" + }, + "markdownStrong": { + "dark": "orange", + "light": "orange" + }, + "markdownHorizontalRule": { + "dark": "base01", + "light": "base1" + }, + "markdownListItem": { + "dark": "blue", + "light": "blue" + }, + "markdownListEnumeration": { + "dark": "cyan", + "light": "cyan" + }, + "markdownImage": { + "dark": "cyan", + "light": "cyan" + }, + "markdownImageText": { + "dark": "violet", + "light": "violet" + }, + "markdownCodeBlock": { + "dark": "base0", + "light": "base00" + }, + "syntaxComment": { + "dark": "base01", + "light": "base1" + }, + "syntaxKeyword": { + "dark": "green", + "light": "green" + }, + "syntaxFunction": { + "dark": "blue", + "light": "blue" + }, + "syntaxVariable": { + "dark": "cyan", + "light": "cyan" + }, + "syntaxString": { + "dark": "cyan", + "light": "cyan" + }, + "syntaxNumber": { + "dark": "magenta", + "light": "magenta" + }, + "syntaxType": { + "dark": "yellow", + "light": "yellow" + }, + "syntaxOperator": { + "dark": "green", + "light": "green" + }, + "syntaxPunctuation": { + "dark": "base0", + "light": "base00" + } + } +} diff --git a/packages/tui/test/theme/gallery/themes/synthwave84.json b/packages/tui/test/theme/gallery/themes/synthwave84.json new file mode 100644 index 0000000000..6ed47fe0b6 --- /dev/null +++ b/packages/tui/test/theme/gallery/themes/synthwave84.json @@ -0,0 +1,226 @@ +{ + "$schema": "https://opencode.ai/theme.json", + "defs": { + "background": "#262335", + "backgroundAlt": "#1e1a29", + "backgroundPanel": "#2a2139", + "foreground": "#ffffff", + "foregroundMuted": "#848bbd", + "pink": "#ff7edb", + "pinkBright": "#ff92df", + "cyan": "#36f9f6", + "cyanBright": "#72f1f8", + "yellow": "#fede5d", + "yellowBright": "#fff95d", + "orange": "#ff8b39", + "orangeBright": "#ff9f43", + "purple": "#b084eb", + "purpleBright": "#c792ea", + "red": "#fe4450", + "redBright": "#ff5e5b", + "green": "#72f1b8", + "greenBright": "#97f1d8" + }, + "theme": { + "primary": { + "dark": "cyan", + "light": "#00bcd4" + }, + "secondary": { + "dark": "pink", + "light": "#e91e63" + }, + "accent": { + "dark": "purple", + "light": "#9c27b0" + }, + "error": { + "dark": "red", + "light": "#f44336" + }, + "warning": { + "dark": "yellow", + "light": "#ff9800" + }, + "success": { + "dark": "green", + "light": "#4caf50" + }, + "info": { + "dark": "orange", + "light": "#ff5722" + }, + "text": { + "dark": "foreground", + "light": "#262335" + }, + "textMuted": { + "dark": "foregroundMuted", + "light": "#5c5c8a" + }, + "background": { + "dark": "#262335", + "light": "#fafafa" + }, + "backgroundPanel": { + "dark": "#1e1a29", + "light": "#f5f5f5" + }, + "backgroundElement": { + "dark": "#2a2139", + "light": "#eeeeee" + }, + "border": { + "dark": "#495495", + "light": "#e0e0e0" + }, + "borderActive": { + "dark": "cyan", + "light": "#00bcd4" + }, + "borderSubtle": { + "dark": "#241b2f", + "light": "#f0f0f0" + }, + "diffAdded": { + "dark": "green", + "light": "#4caf50" + }, + "diffRemoved": { + "dark": "red", + "light": "#f44336" + }, + "diffContext": { + "dark": "foregroundMuted", + "light": "#5c5c8a" + }, + "diffHunkHeader": { + "dark": "purple", + "light": "#9c27b0" + }, + "diffHighlightAdded": { + "dark": "greenBright", + "light": "#4caf50" + }, + "diffHighlightRemoved": { + "dark": "redBright", + "light": "#f44336" + }, + "diffAddedBg": { + "dark": "#1a3a2a", + "light": "#e8f5e9" + }, + "diffRemovedBg": { + "dark": "#3a1a2a", + "light": "#ffebee" + }, + "diffContextBg": { + "dark": "#1e1a29", + "light": "#f5f5f5" + }, + "diffLineNumber": { + "dark": "#959bc1", + "light": "textMuted" + }, + "diffAddedLineNumberBg": { + "dark": "#1a3a2a", + "light": "#e8f5e9" + }, + "diffRemovedLineNumberBg": { + "dark": "#3a1a2a", + "light": "#ffebee" + }, + "markdownText": { + "dark": "foreground", + "light": "#262335" + }, + "markdownHeading": { + "dark": "pink", + "light": "#e91e63" + }, + "markdownLink": { + "dark": "cyan", + "light": "#00bcd4" + }, + "markdownLinkText": { + "dark": "purple", + "light": "#9c27b0" + }, + "markdownCode": { + "dark": "green", + "light": "#4caf50" + }, + "markdownBlockQuote": { + "dark": "foregroundMuted", + "light": "#5c5c8a" + }, + "markdownEmph": { + "dark": "yellow", + "light": "#ff9800" + }, + "markdownStrong": { + "dark": "orange", + "light": "#ff5722" + }, + "markdownHorizontalRule": { + "dark": "#495495", + "light": "#e0e0e0" + }, + "markdownListItem": { + "dark": "cyan", + "light": "#00bcd4" + }, + "markdownListEnumeration": { + "dark": "purple", + "light": "#9c27b0" + }, + "markdownImage": { + "dark": "cyan", + "light": "#00bcd4" + }, + "markdownImageText": { + "dark": "purple", + "light": "#9c27b0" + }, + "markdownCodeBlock": { + "dark": "foreground", + "light": "#262335" + }, + "syntaxComment": { + "dark": "foregroundMuted", + "light": "#5c5c8a" + }, + "syntaxKeyword": { + "dark": "pink", + "light": "#e91e63" + }, + "syntaxFunction": { + "dark": "orange", + "light": "#ff5722" + }, + "syntaxVariable": { + "dark": "foreground", + "light": "#262335" + }, + "syntaxString": { + "dark": "yellow", + "light": "#ff9800" + }, + "syntaxNumber": { + "dark": "purple", + "light": "#9c27b0" + }, + "syntaxType": { + "dark": "cyan", + "light": "#00bcd4" + }, + "syntaxOperator": { + "dark": "pink", + "light": "#e91e63" + }, + "syntaxPunctuation": { + "dark": "foreground", + "light": "#262335" + } + } +} diff --git a/packages/tui/test/theme/gallery/themes/vercel.json b/packages/tui/test/theme/gallery/themes/vercel.json new file mode 100644 index 0000000000..119e562114 --- /dev/null +++ b/packages/tui/test/theme/gallery/themes/vercel.json @@ -0,0 +1,245 @@ +{ + "$schema": "https://opencode.ai/theme.json", + "defs": { + "background100": "#0A0A0A", + "background200": "#000000", + "gray100": "#1A1A1A", + "gray200": "#1F1F1F", + "gray300": "#292929", + "gray400": "#2E2E2E", + "gray500": "#454545", + "gray600": "#878787", + "gray700": "#8F8F8F", + "gray900": "#A1A1A1", + "gray1000": "#EDEDED", + "blue600": "#0099FF", + "blue700": "#0070F3", + "blue900": "#52A8FF", + "blue1000": "#EBF8FF", + "red700": "#E5484D", + "red900": "#FF6166", + "red1000": "#FDECED", + "amber700": "#FFB224", + "amber900": "#F2A700", + "amber1000": "#FDF4DC", + "green700": "#46A758", + "green900": "#63C46D", + "green1000": "#E6F9E9", + "teal700": "#12A594", + "teal900": "#0AC7AC", + "purple700": "#8E4EC6", + "purple900": "#BF7AF0", + "pink700": "#E93D82", + "pink900": "#F75590", + "highlightPink": "#FF0080", + "highlightPurple": "#F81CE5", + "cyan": "#50E3C2", + "lightBackground": "#FFFFFF", + "lightGray100": "#FAFAFA", + "lightGray200": "#EAEAEA", + "lightGray600": "#666666", + "lightGray1000": "#171717" + }, + "theme": { + "primary": { + "dark": "blue700", + "light": "blue700" + }, + "secondary": { + "dark": "blue900", + "light": "#0062D1" + }, + "accent": { + "dark": "purple700", + "light": "purple700" + }, + "error": { + "dark": "red700", + "light": "#DC3545" + }, + "warning": { + "dark": "amber700", + "light": "#FF9500" + }, + "success": { + "dark": "green700", + "light": "#388E3C" + }, + "info": { + "dark": "blue900", + "light": "blue700" + }, + "text": { + "dark": "gray1000", + "light": "lightGray1000" + }, + "textMuted": { + "dark": "gray600", + "light": "lightGray600" + }, + "background": { + "dark": "background200", + "light": "lightBackground" + }, + "backgroundPanel": { + "dark": "gray100", + "light": "lightGray100" + }, + "backgroundElement": { + "dark": "gray300", + "light": "lightGray200" + }, + "border": { + "dark": "gray200", + "light": "lightGray200" + }, + "borderActive": { + "dark": "gray500", + "light": "#999999" + }, + "borderSubtle": { + "dark": "gray100", + "light": "#EAEAEA" + }, + "diffAdded": { + "dark": "green900", + "light": "green700" + }, + "diffRemoved": { + "dark": "red900", + "light": "red700" + }, + "diffContext": { + "dark": "gray600", + "light": "lightGray600" + }, + "diffHunkHeader": { + "dark": "gray600", + "light": "lightGray600" + }, + "diffHighlightAdded": { + "dark": "green900", + "light": "green700" + }, + "diffHighlightRemoved": { + "dark": "red900", + "light": "red700" + }, + "diffAddedBg": { + "dark": "#0B1D0F", + "light": "#E6F9E9" + }, + "diffRemovedBg": { + "dark": "#2A1314", + "light": "#FDECED" + }, + "diffContextBg": { + "dark": "background200", + "light": "lightBackground" + }, + "diffLineNumber": { + "dark": "#8a8a8a", + "light": "textMuted" + }, + "diffAddedLineNumberBg": { + "dark": "#0F2613", + "light": "#D6F5D6" + }, + "diffRemovedLineNumberBg": { + "dark": "#3C1618", + "light": "#FFE5E5" + }, + "markdownText": { + "dark": "gray1000", + "light": "lightGray1000" + }, + "markdownHeading": { + "dark": "purple900", + "light": "purple700" + }, + "markdownLink": { + "dark": "blue900", + "light": "blue700" + }, + "markdownLinkText": { + "dark": "teal900", + "light": "teal700" + }, + "markdownCode": { + "dark": "green900", + "light": "green700" + }, + "markdownBlockQuote": { + "dark": "gray600", + "light": "lightGray600" + }, + "markdownEmph": { + "dark": "amber900", + "light": "amber700" + }, + "markdownStrong": { + "dark": "pink900", + "light": "pink700" + }, + "markdownHorizontalRule": { + "dark": "gray500", + "light": "#999999" + }, + "markdownListItem": { + "dark": "gray1000", + "light": "lightGray1000" + }, + "markdownListEnumeration": { + "dark": "blue900", + "light": "blue700" + }, + "markdownImage": { + "dark": "teal900", + "light": "teal700" + }, + "markdownImageText": { + "dark": "cyan", + "light": "teal700" + }, + "markdownCodeBlock": { + "dark": "gray1000", + "light": "lightGray1000" + }, + "syntaxComment": { + "dark": "gray600", + "light": "#888888" + }, + "syntaxKeyword": { + "dark": "pink900", + "light": "pink700" + }, + "syntaxFunction": { + "dark": "purple900", + "light": "purple700" + }, + "syntaxVariable": { + "dark": "blue900", + "light": "blue700" + }, + "syntaxString": { + "dark": "green900", + "light": "green700" + }, + "syntaxNumber": { + "dark": "amber900", + "light": "amber700" + }, + "syntaxType": { + "dark": "teal900", + "light": "teal700" + }, + "syntaxOperator": { + "dark": "pink900", + "light": "pink700" + }, + "syntaxPunctuation": { + "dark": "gray1000", + "light": "lightGray1000" + } + } +} diff --git a/packages/tui/tsconfig.json b/packages/tui/tsconfig.json index ac9f4c63f7..e6e77b26ee 100644 --- a/packages/tui/tsconfig.json +++ b/packages/tui/tsconfig.json @@ -6,5 +6,6 @@ "jsxImportSource": "@opentui/solid", "lib": ["ESNext", "DOM", "DOM.Iterable"], "noUncheckedIndexedAccess": false - } + }, + "exclude": ["test/theme/gallery/scenario.ts"] }