{"id":16208505,"url":"https://github.com/ehmicky/terminal-theme","last_synced_at":"2026-03-16T13:03:44.063Z","repository":{"id":40569259,"uuid":"343906260","full_name":"ehmicky/terminal-theme","owner":"ehmicky","description":"🎨 Use a color theme for your code's terminal output","archived":false,"fork":false,"pushed_at":"2025-03-12T20:19:49.000Z","size":11560,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-13T13:06:42.235Z","etag":null,"topics":["ansi","bash","chalk","cli","color","colors","config","configuration","console","javascript","library","nodejs","option","rgb","shell","terminal","theme","tty","typescript","windows"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ehmicky.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-02T20:38:47.000Z","updated_at":"2025-03-12T20:19:54.000Z","dependencies_parsed_at":"2024-04-22T20:27:43.444Z","dependency_job_id":"cd349862-9826-4ef4-abb8-57dd12594639","html_url":"https://github.com/ehmicky/terminal-theme","commit_stats":{"total_commits":435,"total_committers":1,"mean_commits":435.0,"dds":0.0,"last_synced_commit":"528cbdc655012938b72e08b4c9d68587a8553fac"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehmicky%2Fterminal-theme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehmicky%2Fterminal-theme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehmicky%2Fterminal-theme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ehmicky%2Fterminal-theme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ehmicky","download_url":"https://codeload.github.com/ehmicky/terminal-theme/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244389705,"owners_count":20444991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansi","bash","chalk","cli","color","colors","config","configuration","console","javascript","library","nodejs","option","rgb","shell","terminal","theme","tty","typescript","windows"],"created_at":"2024-10-10T10:17:20.714Z","updated_at":"2026-03-16T13:03:44.058Z","avatar_url":"https://github.com/ehmicky.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ehmicky/design/main/terminal-theme/terminal-theme_dark.svg\"/\u003e\n  \u003cimg alt=\"terminal-theme logo\" src=\"https://raw.githubusercontent.com/ehmicky/design/main/terminal-theme/terminal-theme.svg\" width=\"500\"/\u003e\n\u003c/picture\u003e\n\n[![Node](https://img.shields.io/badge/-Node.js-808080?logo=node.js\u0026colorA=404040\u0026logoColor=66cc33)](https://www.npmjs.com/package/terminal-theme)\n[![TypeScript](https://img.shields.io/badge/-Typed-808080?logo=typescript\u0026colorA=404040\u0026logoColor=0096ff)](/src/main.d.ts)\n[![Codecov](https://img.shields.io/badge/-Tested%20100%25-808080?logo=codecov\u0026colorA=404040)](https://codecov.io/gh/ehmicky/terminal-theme)\n[![Mastodon](https://img.shields.io/badge/-Mastodon-808080.svg?logo=mastodon\u0026colorA=404040\u0026logoColor=9590F9)](https://fosstodon.org/@ehmicky)\n[![Medium](https://img.shields.io/badge/-Medium-808080.svg?logo=medium\u0026colorA=404040)](https://medium.com/@ehmicky)\n\n🎨 Use a color theme for your code's terminal output.\n\nA color theme enforces consistency and simplifies updating styles.\n\nYour code specifies the default theme: [styles](#available-styles) and\ncategories associated to them. Users\n[can then optionally override it](#user-theme).\n\nThis supports [256 colors, Truecolor](#available-styles) and terminal colors\ndetection, thanks to [`chalk`](https://github.com/chalk/chalk).\n\n# Example\n\n```js\nimport terminalTheme from 'terminal-theme'\n\n// Any category/key is possible\nconst defaultTheme = {\n  error: 'red bold',\n  success: 'green',\n  title: 'white bold',\n  // Truecolor is supported\n  subtitle: 'rgb-150-100-100',\n}\nconst { error, success, title, subtitle } = await terminalTheme(defaultTheme)\nconsole.log(success('example')) // Print in green color\n```\n\n# User theme\n\nUsers can override the `defaultTheme` by creating a `terminal-theme.yml` in the\ncurrent or any parent directory.\n\n```yml\nerror: yellow bold\nsuccess: cyan\n```\n\nOr programmatically:\n\n```js\nconst { error, success, title, subtitle } = await terminalTheme({\n  ...defaultTheme,\n  ...userTheme,\n})\nconsole.log(success('example'))\n```\n\n# Install\n\n```\nnpm install terminal-theme\n```\n\nThis package works in Node.js \u003e=18.18.0.\n\nThis is an ES module. It must be loaded using\n[an `import` or `import()` statement](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c),\nnot `require()`. If TypeScript is used, it must be configured to\n[output ES modules](https://www.typescriptlang.org/docs/handbook/esm-node.html),\nnot CommonJS.\n\n# API\n\n## terminalTheme(defaultTheme, options?)\n\n`defaultTheme`: `object`\\\n`options`: `object`\\\n_Return value_: `Promise\u003cobject\u003e`\n\n### defaultTheme\n\nThe `defaultTheme` argument is an object where each:\n\n- Key is a category with consistent styles. Examples include `error`, `success`,\n  `link`, `header`, etc.\n- Value is a space-separated list of [styles](#available-styles). Some styles\n  require dash-separated arguments.\n\n```js\nconst defaultTheme = {\n  // Single style, without arguments\n  success: 'green',\n  // Single style, with arguments\n  warning: 'rgb-226-126-26',\n  // Multiple styles\n  error: 'red bold',\n}\n```\n\n### Return value\n\nThe return value is a promise resolving to an object where each:\n\n- Key is a category defined in the theme.\n- Value is a function applying [styles](#available-styles) to a string.\n\n```js\nconst { error, success } = await terminalTheme({\n  error: 'red',\n  success: 'green',\n})\nconsole.log(success('example'))\n```\n\n### options\n\n#### colors\n\n_Type_: `boolean`\\\n_Default_: `undefined`\n\nWhether colors should be enabled/disabled, regardless of terminal support.\nColors support is automatically detected, so this is only meant to override that\ndefault behavior.\n\n#### stream\n\n_Type_:\n[`Stream`](https://nodejs.org/api/stream.html#stream_class_stream_writable)\\\n_Default_: [`process.stdout`](https://nodejs.org/api/process.html#process_process_stdout)\n\nStream used to detect colors support. This should be the file or terminal where\nthe colors are output.\n\n#### cwd\n\n_Type_: `string`\\\n_Default_: `process.cwd()`\n\nCurrent directory. Used when [looking for `terminal-theme.yml`](#user-theme).\n\n# Available styles\n\n```sh\n# Standard styles\nbold underline inverse reset\n\n# Those styles do not always work on Windows\ndim italic hidden strikethrough\n\n# Hidden when the terminal does not support colors\nvisible\n\n# Basic colors\nblack red green yellow blue magenta cyan white gray\nblackBright redBright greenBright yellowBright blueBright\nmagentaBright cyanBright whiteBright\n\n# Advanced colors\nhex-ffffff\nrgb-255-255-255\n\n# Background colors\nbgBlack bgRed bgGreen bgYellow bgBlue bgMagenta bgCyan bgWhite bgGray\nbgBlackBright bgRedBright bgGreenBright bgYellowBright bgBlueBright\nbgMagentaBright bgCyanBright bgWhiteBright\nbgHex-* bgRgb-*\n```\n\n# Related projects\n\n- [`colors-option`](https://github.com/ehmicky/colors-option): Let users toggle\n  colors.\n- [`chalk-string`](https://github.com/ehmicky/chalk-string): Chalk with style\n  strings.\n\n# Support\n\nFor any question, _don't hesitate_ to [submit an issue on GitHub](../../issues).\n\nEveryone is welcome regardless of personal background. We enforce a\n[Code of conduct](CODE_OF_CONDUCT.md) in order to promote a positive and\ninclusive environment.\n\n# Contributing\n\nThis project was made with ❤️. The simplest way to give back is by starring and\nsharing it online.\n\nIf the documentation is unclear or has a typo, please click on the page's `Edit`\nbutton (pencil icon) and suggest a correction.\n\nIf you would like to help us fix a bug or add a new feature, please check our\n[guidelines](CONTRIBUTING.md). Pull requests are welcome!\n\n\u003c!-- Thanks go to our wonderful contributors: --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003c!--\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://fosstodon.org/@ehmicky\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/8136211?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eehmicky\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/ehmicky/terminal-theme/commits?author=ehmicky\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#design-ehmicky\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"#ideas-ehmicky\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/ehmicky/terminal-theme/commits?author=ehmicky\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n--\u003e\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehmicky%2Fterminal-theme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fehmicky%2Fterminal-theme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fehmicky%2Fterminal-theme/lists"}