Tokyo Modern
Publisher: lodThemes in package: 1
Beautiful modern dark theme for VS Code with carefully crafted colors and contemporary design
Beautiful modern dark theme for VS Code with carefully crafted colors and contemporary design
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 |
|---|---|---|
| keyword.control.yield, keyword.generator.asterisk | #ad8bed | italic |
| storage.modifier.static, storage.modifier.const | #5e92cf | bold |
| keyword.control.flow.tsx, keyword.control.flow.ts, keyword.control.flow.jsx, keyword.control.flow.js, storage.modifier.async.tsx, storage.modifier.async.ts, storage.modifier.async.jsx, storage.modifier.async.js, storage.modifier.async | #e080dd | italic |
| keyword.control.export | #996dd4 | — |
| keyword.control.import | #996dd4 | — |
| keyword.operator.new, keyword.operator.new.ts, keyword.control.new | #f95367 | — |
| keyword.operator.delete, keyword.operator.expression.delete, keyword.operator.expression.delete.ts | #f95367 | — |
| keyword.operator.void, keyword.operator.expression.void, keyword.operator.expression.void.ts | #f95367 | — |
| keyword.operator.typeof, keyword.operator.expression.typeof, keyword.operator.expression.typeof.ts | #c46cda | — |
| keyword.operator.instanceof, keyword.operator.expression.instanceof, keyword.operator.expression.instanceof.ts | #c46cda | — |
| keyword.operator.keyof, keyword.operator.expression.keyof, keyword.operator.expression.keyof.ts | #c46cda | — |
| keyword.operator.infer, keyword.operator.expression.infer, keyword.operator.expression.infer.ts | #c46cda | — |
| keyword.operator.is, keyword.operator.expression.is, keyword.operator.expression.is.ts | #c46cda | — |
| keyword.operator.in, keyword.operator.expression.in, keyword.operator.expression.in.ts, keyword.operator.of, keyword.operator.expression.of, keyword.operator.expression.of.ts | #c46cda | — |
| keyword.operator.as, keyword.control.as | #c46cda | — |
| keyword.operator.type | #939cbd | — |
| keyword.operator.type.modifier | #5e92cf | — |
| keyword.operator.logical.not, punctuation.definition.exclamation | #f48164 | — |
| keyword.operator.ternary, punctuation.definition.question | #f48164 | — |
| keyword.operator.ternary.colon, punctuation.separator.colon | #f48164 | — |
| keyword.operator.accessor, punctuation.accessor | #a9b1d6 | — |
| keyword.operator.arrow, storage.type.function.arrow | #f95367 | — |
| storage.type.const | #996dd4 | bold |
| storage.type.let | #996dd4 | — |
| storage.type.var | #996dd4 | — |
| storage.type.function | #996dd4 | bold |
| storage.type.class | #996dd4 | — |
| storage.type.interface | #996dd4 | — |
| storage.type.type | #996dd4 | — |
| storage.type.enum | #996dd4 | — |
| keyword.control.conditional | #bf7ad5 | — |
| keyword.control.loop | #8a8ade | — |
| keyword.control.trycatch | #8a8ade | — |
| keyword.control.return | #8a8ade | — |
| keyword.control.type, keyword.control.type.ts, keyword.control.type.tsx | #e091ee | — |
| keyword.control.from, keyword.control.from.ts, keyword.control.from.tsx, keyword.control.from.js, keyword.control.from.jsx | #b45fe6 | — |
| keyword.control | #8a8ade | — |
| keyword, variable.language.this | #f25179 | — |
| variable.language.super, variable.language.self | #f25179 | — |
| storage.modifier.visibility.rust | #5e92cf | bold |
| storage.modifier.mut.rust | #6a99e7 | — |
| storage.modifier | #5e92cf | — |
| constant.numeric, constant.numeric.integer, constant.numeric.float, constant.numeric.hex, constant.numeric.oct, constant.numeric.binary | #eba570 | — |
| string, string.quoted, string.template, string.unquoted | #8ab56c | — |
| constant.language.boolean, constant.language.boolean.true, constant.language.boolean.false | #e25f82 | — |
| constant.language.null, constant.language.undefined, constant.language.none | #b483c5 | — |
| constant.language, constant.other.caps, support.constant | #eba570 | — |
| keyword.operator.arithmetic | #f45e74 | — |
| keyword.operator.assignment.compound, keyword.operator.assignment.compound.ts, keyword.operator.assignment.compound.js, keyword.operator.assignment.compound.bitwise.ts, keyword.operator.assignment.compound.bitwise.js | #f45e74 | — |
| keyword.operator.increment, keyword.operator.increment.ts, keyword.operator.increment.js, keyword.operator.decrement, keyword.operator.decrement.ts, keyword.operator.decrement.js | #eb4e4e | — |
| keyword.operator.comparison | #b86bd0 | — |
| keyword.operator.logical | #ed4f88 | — |
| keyword.operator.assignment | #97a0cf | — |
| keyword.operator.optional, punctuation.accessor.optional | #e96793 | — |
| keyword.operator.coalescing, keyword.operator.nullish | #ec7a7c | — |
| keyword.operator.bitwise | #ed4f88 | — |
| keyword.operator | #f45e74 | — |
| comment, comment.line, comment.block, comment.block.documentation, punctuation.definition.comment | #60687f | — |
| comment.keyword, comment.keyword.todo, comment.keyword.fixme, comment.keyword.note, storage.type.class.jsdoc | #60687f | bold |
| string.regexp, string.regexp.source, string.regexp.character-class | #e07850 | — |
| constant.character.escape.anchor.regexp, constant.character.escape.boundary.regexp | #f95367 | — |
| keyword.operator.quantifier.regexp | #f45e74 | — |
| entity.name.namespace, storage.type.namespace | #996dd4 | bold |
| entity.name.module, storage.type.module | #5e92cf | bold |
| entity.name.constant | #5e92cf | bold |
| entity.name.type.enum | #ce79ec | bold |
| variable.other.enummember, constant.other.enummember | #eba570 | — |
| meta.decorator, entity.name.function.decorator | #5e92cf | italic |
| entity.name.type.parameter, variable.parameter.generic | #cd5daa | italic |
| punctuation.definition.template-expression, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end, punctuation.definition.interpolation, punctuation.definition.interpolation.begin, punctuation.definition.interpolation.end | #b4968a | — |
| meta.template.expression, meta.interpolation, meta.embedded.expression | #8c96b6 | — |
| variable, variable.other.readwrite, variable.other.assignment, support.variable | #a9b1d6 | — |
| variable.language, variable.other.local | #8ab2d1 | — |
| variable.parameter, meta.parameter | #da94b0 | — |
| variable.other.global, support.variable.global | #73be47 | — |
| variable.other.constant, variable.other.constant.object | #91b3dd | — |
| entity.name.function, meta.function-call, support.function | #538fe5 | — |
| entity.name.function.member, meta.method-call | #499beb | — |
| entity.name.function.constructor, support.function.constructor | #c4b39d | — |
| meta.function.async | #e080dd | italic |
| entity.name.class, entity.name.type.class, support.class | #668deb | bold |
| entity.name.interface, entity.name.type.interface | #7787df | italic |
| entity.name.type, entity.name.type.alias | #b472e9 | — |
| support.type.primitive | #4ac9a7 | — |
| support.type.builtin | #ec8778 | — |
| entity.name.type.module | #b472e9 | — |
| storage.type | #996dd4 | bold |
| variable.other.property, meta.property.object | #71a4ac | — |
| meta.object-literal.key | #a5969d | — |
| meta.object-literal.key.string | #71a4ac | — |
| variable.other.property.static, meta.field.declaration | #d66ee8 | — |
| support.variable.static | #bd66c3 | — |
| entity.name.tag, meta.tag | #e685cf | — |
| entity.other.attribute-name, meta.attribute | #71a4ac | — |
| entity.other.attribute-name.html | #71a4ac | — |
| meta.tag.custom.start.html entity.other.attribute-name.html, meta.tag.custom entity.other.attribute-name.html, meta.tag.custom.start.html entity.other.attribute-name.class.html, meta.tag.custom.start.html entity.other.attribute-name.id.html | #69b7af | — |
| meta.attribute.unrecognized entity.other.attribute-name.html, meta.attribute.unrecognized.html entity.other.attribute-name.html | #6f9de6 | — |
| punctuation.definition.tag, punctuation.definition.tag.begin, punctuation.definition.tag.end | #748da8 | — |
| string.quoted.double.html, string.quoted.single.html, string.quoted.double.vue, string.quoted.single.vue, string.quoted.double.xml, string.quoted.single.xml, string.quoted.double.svg, string.quoted.single.svg, string.unquoted.attribute-value.html | #8ab56c | — |
| punctuation.definition.string.begin.html, punctuation.definition.string.end.html, punctuation.definition.string.begin.vue, punctuation.definition.string.end.vue, punctuation.definition.string.begin.xml, punctuation.definition.string.end.xml, punctuation.definition.string.begin.svg, punctuation.definition.string.end.svg | #ac7be7 | — |
| support.type.property-name.css, meta.property-name.css | #71a4ac | — |
| support.constant.property-value.css, meta.property-value.css | #8ab56c | — |
| entity.name.tag.css, entity.other.attribute-name.class.css, entity.other.attribute-name.id.css | #e685cf | — |
| punctuation.separator.key-value.css | #748da8 | — |
| support.constant.color.w3c-standard-color-name.css | #eba570 | — |
| punctuation.definition.entity.css, entity.other.attribute-name.parent-selector-suffix.css, variable.scss, entity.other.attribute-name.pseudo-class.css, entity.other.attribute-name.pseudo-element.css | #5e92cf | — |
| support.module, entity.name.module | #5e92cf | — |
| meta.decorator, entity.name.function.decorator | #5e92cf | — |
| string.template | #8ab56c | — |
| entity.other.inherited-class | #668deb | italic |
| variable.other.property, support.variable.property | #71a4ac | — |
| meta.object-literal.method, entity.name.function.method | #499beb | — |
| punctuation.dereference | #97a0cf | — |
| punctuation.definition.block, punctuation.section.block, meta.brace.curly, punctuation.curlybrace.open, punctuation.curlybrace.close | #b4968a | — |
| meta.brace.square, punctuation.squarebracket.open, punctuation.squarebracket.close | #b4968a | — |
| meta.brace, punctuation.section | #b4968a | — |
| punctuation.definition.group, meta.group, punctuation.parenthesis.open, punctuation.parenthesis.close | #be9777 | — |
| keyword.operator | #f45e74 | — |
| punctuation.separator, punctuation.separator.comma, punctuation.separator.semicolon, punctuation.terminator | #8c96b6 | — |
| keyword.operator.accessor, punctuation.accessor | #a9b1d6 | — |
| punctuation.definition.string.begin, punctuation.definition.string.end | #72bd8a | — |
| keyword.function.go, keyword.type.go, keyword.struct.go, keyword.interface.go, keyword.const.go, keyword.var.go, keyword.package.go | #996dd4 | — |
| keyword.map.go, keyword.channel.go | #4ac9a7 | — |
| storage.type.boolean.go, storage.type.numeric.go, storage.type.string.go, storage.type.byte.go, storage.type.rune.go, storage.type.uintptr.go, storage.type.error.go | #4ac9a7 | — |
| entity.name.type.trait, entity.name.type.trait.rs | #7787df | — |
| keyword.closure, keyword.closure.rs | #8a8ade | — |
| constant.language.symbol.rs, support.constant.symbol.rs | #eba570 | — |
| support.class.component, entity.name.tag.tsx, entity.name.tag.jsx, support.class.component.tsx, support.class.component.jsx | #668deb | bold |
| variable.other.readwrite.alias.react, meta.attribute.tsx, meta.attribute.jsx | #71a4ac | — |
| variable.other.readwrite.state.react | #8ab2d1 | — |
| entity.name.function.hook, support.function.react, variable.other.hook | #499beb | italic |
| support.function.dom, meta.attribute.event | #538fe5 | — |
| meta.jsx, meta.jsx.children, meta.jsx.attributes | #a9b1d6 | — |
| punctuation.definition.tag.jsx, punctuation.definition.tag.begin.jsx, punctuation.definition.tag.end.jsx | #748da8 | — |
| entity.name.tag.vue, meta.tag.vue, support.class.component.vue, entity.name.tag.$1.html.vue, entity.name.tag.$2.html.vue, entity.name.tag.$3.html.vue | #668deb | — |
| punctuation.definition.tag.begin.html.vue, punctuation.definition.tag.end.html.vue, punctuation.definition.tag.begin.vue, punctuation.definition.tag.end.vue, punctuation.definition.tag.vue | #748da8 | — |
| entity.other.attribute-name.html.vue | #8d78e1 | — |
| keyword.control.conditional.vue | #f36353 | — |
| keyword.control.loop.vue | #e68f60 | — |
| meta.attribute.directive.vue, entity.other.attribute-name.vue, punctuation.definition.directive.vue, meta.directive.vue | #8d78e1 | — |
| punctuation.attribute-shorthand.bind.html.vue | #48bfbf | — |
| punctuation.attribute-shorthand.event.html.vue | #e25fb8 | — |
| punctuation.attribute-shorthand.slot.html.vue | #8a8ad3 | — |
| punctuation.separator.key-value.html.vue | #748da8 | — |
| punctuation.definition.string.begin.html.vue, punctuation.definition.string.end.html.vue | #ac7be7 | — |
| meta.embedded.expression.vue, punctuation.definition.interpolation.vue, punctuation.definition.interpolation.begin.html.vue, punctuation.definition.interpolation.end.html.vue | #b4968a | — |
| meta.tag.template, entity.name.tag.template | #e685cf | — |
| meta.tag.script, entity.name.tag.script | #996dd4 | — |
| meta.tag.style, entity.name.tag.style | #4ec8b7 | — |
| entity.name.tag.angular, meta.tag.angular, support.class.component.ng | #668deb | — |
| entity.other.attribute-name.angular, meta.attribute.angular | #5e92cf | — |
| support.class.service, entity.name.service | #c4b39d | — |
| meta.decorator.angular, entity.name.function.decorator.angular | #5e92cf | italic |
| variable.other.readwrite.ts, meta.embedded.expression.ts | #a9b1d6 | — |
| meta.brace.erb, punctuation.definition.expression | #97a0cf | — |
| entity.name.tag.svelte, support.class.component.svelte | #668deb | — |
| meta.tag.svelte.start, meta.tag.svelte.end | #e685cf | — |
| entity.other.attribute-name.svelte, meta.directive.svelte | #5e92cf | — |
| keyword.control.svelte, meta.reactive.svelte | #8a8ade | italic |
| meta.binding.pattern.ts, variable.parameter.svelte | #71a4ac | — |
| string.template, punctuation.definition.template | #8ab56c | — |
| meta.directive, keyword.control.directive | #8a8ade | — |
| support.module, support.class.builtin | #5e92cf | — |
| support.function.builtin, entity.name.function.builtin | #499beb | — |
| meta.function.async, support.function.async | #e080dd | italic |
| variable.other.state, variable.other.context | #8ab2d1 | — |
| keyword.other.special-method.dockerfile, keyword.other.dockerfile | #8a8ade | — |
| entity.name.function.dockerfile, support.constant.dockerfile | #538fe5 | — |
| variable.other.dockerfile, string.unquoted.dockerfile | #8ab56c | — |
| string.unquoted.path.dockerfile, string.quoted.path.dockerfile | #71a4ac | — |
| entity.name.tag.yaml, string.unquoted.plain.yaml, variable.other.yaml | #a5969d | — |
| string.quoted.single.yaml, string.quoted.double.yaml | #8ab56c | — |
| punctuation.definition.block.sequence.item.yaml, punctuation.separator.key-value.mapping.yaml | #748da8 | — |
| constant.language.boolean.yaml, constant.numeric.yaml | #e25f82 | — |
| support.type.property-name.json, meta.object-literal.key.json | #71a4ac | — |
| string.quoted.double.json, constant.language.json | #8ab56c | — |
| punctuation.separator.dictionary.pair.json, punctuation.definition.dictionary.begin.json | #748da8 | — |
| constant.numeric.json | #eba570 | — |
| markup.heading, entity.name.section.markdown | #e685cf | bold |
| markup.underline.link.markdown, string.other.link.title.markdown | #8ab56c | — |
| markup.inline.raw.markdown, markup.fenced_code.block.markdown | #8ab56c | — |
| markup.bold.markdown | #e685cf | bold |
| markup.italic.markdown | #e685cf | italic |
| beginning.punctuation.definition.list.markdown, punctuation.definition.list.begin.markdown | #748da8 | — |
| markup.quote.markdown, punctuation.definition.quote.begin.markdown | #71a4ac | — |
| meta.separator.markdown | #748da8 | — |
| markup.table.markdown | #a9b1d6 | — |
| markup.raw.block.markdown | #8ab56c | — |
| markup.heading.setext.1.markdown, markup.heading.setext.2.markdown | #e685cf | bold |
| entity.name.function.shell, support.function.builtin.shell | #538fe5 | — |
| variable.other.normal.shell, variable.language.shell | #a9b1d6 | — |
| keyword.control.shell | #8a8ade | — |
| string.quoted.other.shell, string.quoted.single.shell | #8ab56c | — |
| variable.other.bracket.shell, punctuation.definition.variable.shell | #97a0cf | — |
| keyword.other.apacheconf, entity.name.tag.apacheconf | #996dd4 | — |
| string.unquoted.apacheconf, variable.other.apacheconf | #8ab56c | — |
| string.regexp.apacheconf, string.quoted.double.apacheconf | #71a4ac | — |
| entity.name.function.makefile, meta.function.makefile | #538fe5 | bold |
| variable.other.makefile, variable.language.makefile | #73be47 | — |
| keyword.control.makefile | #8a8ade | — |
| support.function.makefile | #499beb | — |
| entity.name.function.lua | #538fe5 | — |
| keyword.control.lua | #8a8ade | — |
| support.function.library.lua, variable.other.global.lua | #42b5c6 | — |
| variable.other.env, entity.name.variable.env | #73be47 | — |
| string.unquoted.env, string.quoted.env | #8ab56c | — |
| comment.line.number-sign.env | #60687f | — |
| meta.preprocessor | #8a8ade | — |
| entity.name.function.preprocessor, constant.other.preprocessor | #eba570 | — |
| entity.name.section.ini | #996dd4 | bold |
| keyword.other.definition.ini | #a5969d | — |
| string.unquoted.ini, string.quoted.ini | #8ab56c | — |
| entity.other.attribute-name.toml | #a5969d | — |
| string.quoted.toml, constant.numeric.toml | #8ab56c | — |
| meta.tag.inline.toml | #996dd4 | — |
| keyword.control.import.python, keyword.control.from.python, keyword.control.except.python, keyword.control.raise.python, keyword.control.try.python, keyword.control.finally.python, keyword.control.pass.python | #8a8ade | — |
| support.type.exception.python | #4ac9a7 | — |
| support.type.python | #4ac9a7 | — |
| support.function.magic.python | #499beb | — |
| variable.parameter.function.python | #da94b0 | — |
| variable | #a9b1d6 | — |
| variable.declaration | #c882ef | — |
| variable.defaultLibrary | #42b5c6 | — |
| variable.readonly | #91b3dd | — |
| variable.global | #73be47 | — |
| variable.local | #8ab2d1 | — |
| parameter | #da94b0 | — |
| parameter.declaration | #da94b0 | — |
| property | #71a4ac | — |
| property.declaration | #a5969d | — |
| property.defaultLibrary | #48bbe6 | — |
| function | #538fe5 | — |
| function.declaration | #538fe5 | — |
| method | #499beb | — |
| method.declaration | #499beb | — |
| constructor | #c4b39d | — |
| function.defaultLibrary | #538fe5 | — |
| class | #668deb | — |
| interface | #7787df | — |
| typeParameter | #cd5daa | — |
| modifier | #5e92cf | — |
| enumMember | #eba570 | — |
| macro | #5e92cf | — |
| keyword.async, keyword.await | #e080dd | italic |
| comment | #60687f | — |
| string | #8ab56c | — |
| number | #eba570 | — |
| boolean | #e25f82 | — |
| namespace | #42b5c6 | — |
| module | #5e92cf | — |
| decorator | #5e92cf | — |
| *.defaultLibrary | #42b5c6 | — |
| method.defaultLibrary | #499beb | — |
| function.defaultLibrary | #538fe5 | — |
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}!`;
}