Friendly Dark
Publisher: Satou FukumiThemes in package: 6
A friendly dark theme - new ErrorDark! ✨
A friendly dark theme - new ErrorDark! ✨
Full workbench mockup using this variant's colors and tokenColors.
Loading...
Workbench UI color keys from the theme JSON colors map.
TextMate scopes and font styles (syntax highlighting rules).
| scope | foreground | fontStyle |
|---|---|---|
| entity.name.type.enum | #48cae4 | |
| variable.other.enummember | #48cae4 | italic |
| variable.other.env, support.constant.math, variable.other.constant, variable.other.readwrite, variable.other.object, support.type.object.module, source.js support.type.object.module keyword.operator.accessor, variable.language.this | #E5C07B | |
| support.variable.magic.python | #E06C75 | |
| variable.parameter, entity.name.label | #ac92f3 | |
| entity.name.function, variable.function, meta.require, support.function.any-method, variable.language.super | #61AFEF | |
| variable.other.readwrite.alias, meta.import variable.other.readwrite, variable.object.property, variable.other.property, variable.other.constant.property, variable.other.object.property, support.variable.property | #E06C75 | |
| keyword.operator.bitwise, keyword.operator.assignment, keyword.operator.logical, keyword.operator.type, keyword.operator.arithmetic, keyword.operator.comparison, keyword.operator.decrement, keyword.operator.increment, keyword.operator.relational | #56B6C2 | |
| keyword, keyword.operator.expression, keyword.operator.assignment.c, keyword.operator.comparison.c, keyword.operator.c, keyword.operator.increment.c, keyword.operator.decrement.c, keyword.operator.bitwise.shift.c, keyword.operator.assignment.cpp, keyword.operator.comparison.cpp, keyword.operator.cpp, keyword.operator.increment.cpp, keyword.operator.decrement.cpp, keyword.operator.bitwise.shift.cpp, storage.type, storage.modifier, punctuation.definition.template-expression | #d47bda | |
| keyword.other.unit | #E06C75 | italic |
| entity.name.type, support.class, entity.name.type.class, support.class, entity.name.type.class, entity.other.inherited-class, support.class.component | #ee7ba7 | |
| support.type.primitive | #D19A66 | |
| constant, constant.numeric, support.type.builtin | #D19A66 | |
| comment | #5C6370 | |
| keyword.operator.accessor, keyword.operator.type.annotation, keyword.operator.optional | #abb2bf | |
| punctuation.accessor, punctuation.separator | #abb2bf | |
| support.constant.json | #D19A66 | — |
| source.json meta.structure.dictionary.json > string.quoted.json | #E06C75 | — |
| source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string | #E06C75 | — |
| source.json meta.structure.dictionary.json > value.json > string.quoted.json,source.json meta.structure.array.json > value.json > string.quoted.json,source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation,source.json meta.structure.array.json > value.json > string.quoted.json > punctuation | #98C379 | — |
| source.json meta.structure.dictionary.json > constant.language.json,source.json meta.structure.array.json > constant.language.json | #56B6C2 | — |
| support.type.property-name.json | #E06C75 | — |
| support.type.property-name.json punctuation | #E06C75 | — |
| entity.name.tag | #E06C75 | — |
| constant.character.entity | #E06C75 | — |
| entity.other.attribute-name, entity.other.attribute-name.attribute | #cd5686 | — |
| meta.tag.attributes variable.other.readwrite.tsx | #cd5686 | — |
| entity.other.attribute-name.id | #61AFEF | — |
| entity.other.attribute-name.class.css | #D19A66 | — |
| support.function | #56B6C2 | |
| selector.sass | #E06C75 | — |
| support.constant.property-value.css, support.constant.property-value.scss, meta.property-value support.type.property-name | #D19A66 | — |
| keyword.operator.css,keyword.operator.scss,keyword.operator.less | #56B6C2 | — |
| support.constant.color.w3c-standard-color-name.css,support.constant.color.w3c-standard-color-name.scss | #D19A66 | — |
| meta.attribute-selector | #98C379 | |
| keyword.operator.less | #D19A66 | |
| entity.other.attribute-name.pseudo-class | #56B6C2 | |
| punctuation.separator.list.comma.css, support.type.property-name, source.css meta.attribute.style.html, variable.parameter.keyframe-list | #ABB2BF | — |
| invalid.illegal.bad-ampersand.html | #ABB2BF | — |
| text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade | #C678DD | — |
| text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade | #C678DD | — |
| invalid.deprecated.entity.other.attribute-name.html | #D19A66 | — |
| invalid.illegal.unrecognized-tag.html | #E06C75 | — |
| variable.scss, variable.sass, variable.css, variable.other.less, variable.other.interpolation.less | #E06C75 | — |
| entity.name.function.scss, entity.name.function.sass, entity.name.function.css | #abb2bf | |
| constant.other.character-class.regexp | #E06C75 | — |
| keyword.operator.quantifier.regexp | #D19A66 | — |
| string.regexp | #56B6C2 | — |
| keyword.operator.regexp.php | #C678DD | — |
| constant.character.character-class.regexp.xi | #E06C75 | — |
| constant.regexp.xi | #C678DD | — |
| support.other.parenthesis.regexp | #D19A66 | — |
| string.regexp | #E06C75 | — |
| emphasis md | #C678DD | — |
| entity.name.section.markdown | #E06C75 | — |
| punctuation.definition.heading.markdown | #E06C75 | — |
| punctuation.definition.list.begin.markdown | #E5C07B | — |
| punctuation.definition.bold.markdown | #D19A66 | — |
| markup.inline.raw.markdown | #98C379 | — |
| markup.inline.raw.string.markdown | #98C379 | — |
| punctuation.definition.raw.markdown | #E5C07B | — |
| punctuation.definition.list.markdown | #E5C07B | — |
| punctuation.definition.string.begin.markdown, punctuation.definition.string.end.markdown, punctuation.definition.metadata.markdown | #E06C75 | — |
| beginning.punctuation.definition.list.markdown | #E06C75 | — |
| punctuation.definition.metadata.markdown | #E06C75 | — |
| markup.underline.link.markdown,markup.underline.link.image.markdown | #C678DD | — |
| string.other.link.title.markdown,string.other.link.description.markdown | #61AFEF | — |
| beginning.punctuation.definition.quote.markdown.xi | #98C379 | — |
| beginning.punctuation.definition.list.markdown.xi | #7F848E | — |
| entity.name.label.cs, markup.heading.setext.1.markdown, markup.heading.setext.2.markdown | #E06C75 | — |
| markup.quote.markdown | #5C6370 | — |
| meta.embedded | #abb2bf | — |
| string, punctuation.definition.string.begin.html.vue, punctuation.definition.string.end.html.vue, support.constant.classname.twin, support.type.arbitrary-style.prop.twin, meta.var.expr meta.embedded.expression | #98C379 | |
| string.unquoted.asciidoc,markup.other.url.asciidoc | #61AFEF | — |
| storage.modifier.reference, storage.modifier.pointer | #56B6C2 | |
| punctuation.separator.colon.range-based.cpp | #C678DD | |
| variable.other.class.php, variable.other.php | #E06C75 | — |
| text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade | #C678DD | — |
| text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade | #C678DD | — |
| support.other.namespace.use.php,support.other.namespace.use-as.php,entity.other.alias.php,meta.interface.php | #E5C07B | — |
| keyword.operator.error-control.php | #C678DD | — |
| keyword.operator.type.php | #C678DD | — |
| entity.name.type.class.php, support.class.php | #E5C07B | — |
| punctuation.section.array.begin.php | #ABB2BF | — |
| punctuation.section.array.end.php | #ABB2BF | — |
| invalid.illegal.non-null-typehinted.php | #F44747 | — |
| storage.type.php,meta.other.type.phpdoc.php,keyword.other.type.php,keyword.other.array.phpdoc.php | #E5C07B | — |
| meta.function-call.php,meta.function-call.object.php,meta.function-call.static.php | #61AFEF | — |
| punctuation.definition.parameters.begin.bracket.round.php,punctuation.definition.parameters.end.bracket.round.php,punctuation.separator.delimiter.php,punctuation.section.scope.begin.php,punctuation.section.scope.end.php,punctuation.terminator.expression.php,punctuation.definition.arguments.begin.bracket.round.php,punctuation.definition.arguments.end.bracket.round.php,punctuation.definition.storage-type.begin.bracket.round.php,punctuation.definition.storage-type.end.bracket.round.php,punctuation.definition.array.begin.bracket.round.php,punctuation.definition.array.end.bracket.round.php,punctuation.definition.begin.bracket.round.php,punctuation.definition.end.bracket.round.php,punctuation.definition.begin.bracket.curly.php,punctuation.definition.end.bracket.curly.php,punctuation.definition.section.switch-block.end.bracket.curly.php,punctuation.definition.section.switch-block.start.bracket.curly.php,punctuation.definition.section.switch-block.begin.bracket.curly.php,punctuation.definition.section.switch-block.end.bracket.curly.php | #ABB2BF | — |
| support.constant.ext.php,support.constant.std.php,support.constant.core.php,support.constant.parser-token.php | #D19A66 | — |
| entity.name.goto-label.php,support.other.php | #61AFEF | — |
| keyword.operator.logical.php,keyword.operator.bitwise.php,keyword.operator.arithmetic.php | #56B6C2 | — |
| keyword.operator.regexp.php | #C678DD | — |
| keyword.operator.comparison.php | #56B6C2 | — |
| keyword.operator.heredoc.php,keyword.operator.nowdoc.php | #C678DD | — |
| punctuation.section.embedded.begin.php, punctuation.section.embedded.end.php | #BE5046 | — |
| support.other.namespace.php | #ABB2BF | — |
| entity.name.variable.parameter.php,punctuation.separator.colon.php,constant.other.php | #ABB2BF | — |
Full workbench mockup using this variant's colors and tokenColors.
Loading...
Workbench UI color keys from the theme JSON colors map.
TextMate scopes and font styles (syntax highlighting rules).
| scope | foreground | fontStyle |
|---|---|---|
| comment | #505067 | — |
| support.other.variable, variable.language.this | #11C9C9 | underline italic |
| variable.other.constant, meta.definition.variable.js | #00E1FF | underline bold |
| string | #A6FA62 | — |
| constant.numeric | #A6FA62 | — |
| meta.object-literal.key, support.variable.property | #9C8FE6 | — |
| constant.language | #7873AE | — |
| constant.character, constant.other | #7873AE | — |
| variable, variable.other, variable.other.property | #00E1FF | |
| keyword | #7873AE | — |
| storage | #7873AE | |
| storage.type | #585480 | |
| entity.name.class | #7873AE | underline |
| entity.other.inherited-class | #7873AE | |
| entity.name.function | #FFFFFF | |
| variable.parameter | #C8C7D5 | |
| entity.name.tag | #585480 | |
| entity.other.attribute-name | #7873AE | |
| support.function | #A6FA62 | |
| support.constant | #7873AE | |
| support.type, support.class | #7873AE | |
| invalid | #CF433E | |
| invalid.deprecated | #CF433E | — |
| meta.structure.dictionary.json string.quoted.double.json | #A6FA62 | — |
| meta.diff, meta.diff.header | #505067 | — |
| markup.deleted | #E61F44 | — |
| markup.inserted | #A6E22E | — |
| markup.changed | #F7B83D | — |
| constant.numeric.line-number.find-in-files - match | #8FBE00A0 | — |
| entity.name.filename.find-in-files | #E6DB74 | — |
| keyword.other | #727291 | — |
| meta.property-value, support.constant.property-value, constant.other.color | #A6FA62 | — |
| meta.structure.dictionary.json string.quoted.double.json | #7873AE | — |
| meta.structure.dictionary.value.json string.quoted.double.json | #A6FA62 | — |
| meta.property-name support.type.property-name, meta.property-name.css, meta.property-list.css, meta.property-name.scss, meta.property-list.scss | #4EC9B0 | |
| meta.property-value punctuation.separator.key-value | #C8C7D5 | — |
| keyword.other.use, keyword.other.function.use, keyword.other.namespace, keyword.other.new, keyword.other.special-method, keyword.other.unit, keyword.other.use-as | #585480 | — |
| meta.use support.class.builtin, meta.other.inherited-class support.class.builtin | #585480 | |
| variable.parameter.function | #A6FA62 | |
| entity.name.section.markdown | #7873AE | — |
| punctuation.definition.heading.markdown | #7873AE | — |
| markup.raw.inline.markdown | #A6FA62 | — |
| punctuation.definition.bold.markdown, punctuation.definition.italic.markdown | #7873AE | — |
| punctuation.definition.string.begin.markdown, punctuation.definition.string.end.markdown | #7873AE | — |
| punctuation.definition.metadata.markdown | #7873AE | — |
| markup.underline.link.markdown, markup.underline.link.image.markdown, meta.image.inline.markdown | #585480 | |
| markup.bold.markdown, markup.italic.markdown | #585480 | — |
| markup.italic.markdown | — | italic |
| markup.bold.markdown | — | bold |
| markup.raw.block.markdown | #664E4D | — |
| markup.deleted.git_gutter | #E61F44 | — |
| markup.inserted.git_gutter | #A7DA1E | — |
| markup.changed.git_gutter | #F7B83D | — |
| meta.template.expression | #C8C7D5 | — |
| entity.name.function.constructor, entity.name.function.destructor | — | italic |
| entity.other.attribute-name | — | italic |
| keyword.operator.new, keyword.operator.delete | #C586C0 | italic |
| keyword.other, keyword.operator.logical | #569CD6 | — |
| keyword.control | #C586C0 | |
| storage.type.modifier.access | #AA00FF | italic |
| storage.modifier.const, storage.modifier.constexpr, storage.modifier.specifier, storage.modifier.async | #FF6BCB | — |
| string, string.quoted, meta.structure.dictionary | #CE9178 | — |
| comment | — | |
| entity.name.function.preprocessor, meta.preprocessor | #569CD6 | italic |
| keyword.other.unit | #B5CEA8 | italic |
| constant.numeric | #B5CEA8 | — |
| variable.parameter | #00E1FF | — |
| meta.preprocessor | #569CD6 | — |
| keyword.operator | #D4D4D4 | |
| keyword.other.using | #C586C0 | italic |
| storage.type | #569CD6 | — |
| meta.return-type, support.class, support.type, entity.other.attribute, entity.name.class, storage.type.numeric.go, storage.type.byte.go, storage.type.boolean.go, storage.type.string.go, storage.type.uintptr.go, storage.type.error.go, storage.type.rune.go, storage.type.cs, storage.type.generic.cs, storage.type.modifier.cs, storage.type.variable.cs, storage.type.annotation.java, storage.type.generic.java, storage.type.java, storage.type.object.array.java, storage.type.primitive.array.java, storage.type.primitive.java, storage.type.token.java, storage.type.groovy, storage.type.annotation.groovy, storage.type.parameters.groovy, storage.type.generic.groovy, storage.type.object.array.groovy, storage.type.primitive.array.groovy, storage.type.primitive.groovy | #4EC9B0 | — |
| entity.name.function, support.function, support.constant.handlebars, source.powershell variable.other.member, entity.name.operator.custom-literal, entity.name.function.operator | #DCDCAA | — |
| constant.language | #569CD6 | italic |
| storage.modifier | #569CD6 | — |
| punctuation.separator, punctuation.terminator, punctuation.section, punctuation.definition.function | #D4D4D4 | — |
| punctuation.definition.string.json | #A6FA62 | — |
| token.info-token | #6796E6 | — |
| token.warn-token | #CD9731 | — |
| token.error-token | #F44747 | — |
| token.debug-token | #B267E6 | — |
| keyword.operator.cast, keyword.operator.sizeof, keyword.operator.typeid | #569CD6 | italic |
| entity.name.tag | #569CD6 | — |
| support.constant.property, keyword.operator.expression | #C586C0 | underline |
| meta.function.definition, meta.body.function.definition, entity.name.type | #55FFAADD | — |
| meta.using-namespace, entity.name.namespace, entity.name.scope-resolution | #4EC9B0 | italic |
| comment | — | |
| entity.name.function.member.static | #55FF00 | |
| variable.other.enummember | #FFF49E | — |
export interface User {
id: string;
name: string;
role: "admin" | "member";
tags: string[];
}
/**
* Fetch user data by ID
* @param id
* @returns User object or null if ID is invalid
*/
export async function fetchUser(id: string): Promise<User | null> {
if (!id) {
return null;
}
const response = await fetch(`/api/users/${id}`, {
method: "GET",
headers: { Accept: "application/json" },
});
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
return (await response.json()) as User;
}
function greet(user: User): string {
// Simple greeting function that uses the user's name
return `Hello, ${user.name}!`;
}
export interface User {
id: string;
name: string;
role: "admin" | "member";
tags: string[];
}
/**
* Fetch user data by ID
* @param id
* @returns User object or null if ID is invalid
*/
export async function fetchUser(id: string): Promise<User | null> {
if (!id) {
return null;
}
const response = await fetch(`/api/users/${id}`, {
method: "GET",
headers: { Accept: "application/json" },
});
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
return (await response.json()) as User;
}
function greet(user: User): string {
// Simple greeting function that uses the user's name
return `Hello, ${user.name}!`;
}