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 | #eba570 | italic |
| storage.modifier.static, storage.modifier.const | #8069dc | 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 | #dd85ec | italic |
| keyword.control.export | #8069dc | — |
| keyword.control.import | #8069dc | — |
| keyword.operator.new, keyword.operator.new.ts, keyword.control.new | #ff5555 | — |
| keyword.operator.delete, keyword.operator.expression.delete, keyword.operator.expression.delete.ts | #ff5555 | — |
| keyword.operator.void, keyword.operator.expression.void, keyword.operator.expression.void.ts | #ff5555 | — |
| keyword.operator.typeof, keyword.operator.expression.typeof, keyword.operator.expression.typeof.ts | #ab70dd | — |
| keyword.operator.instanceof, keyword.operator.expression.instanceof, keyword.operator.expression.instanceof.ts | #ab70dd | — |
| keyword.operator.keyof, keyword.operator.expression.keyof, keyword.operator.expression.keyof.ts | #ab70dd | — |
| keyword.operator.infer, keyword.operator.expression.infer, keyword.operator.expression.infer.ts | #ab70dd | — |
| keyword.operator.is, keyword.operator.expression.is, keyword.operator.expression.is.ts | #ab70dd | — |
| keyword.operator.in, keyword.operator.expression.in, keyword.operator.expression.in.ts | #ab70dd | — |
| keyword.operator.as, keyword.control.as | #ab70dd | — |
| keyword.operator.logical.not, punctuation.definition.exclamation | #e25f82 | — |
| keyword.operator.ternary, punctuation.definition.question | #e25f82 | — |
| keyword.operator.ternary.colon, punctuation.separator.colon | #e25f82 | — |
| keyword.operator.accessor, punctuation.accessor | #c0caf5 | — |
| keyword.operator.arrow, storage.type.function.arrow | #ff5555 | — |
| storage.type.const | #ba72e9 | bold |
| storage.type.let | #ba72e9 | — |
| storage.type.var | #ba72e9 | — |
| storage.type.function | #ba72e9 | bold |
| storage.type.class | #ba72e9 | — |
| storage.type.interface | #ba72e9 | — |
| storage.type.type | #ba72e9 | — |
| storage.type.enum | #ba72e9 | — |
| keyword.control.conditional | #ba4248 | — |
| keyword.control.loop | #a268de | — |
| keyword.control.conditional, keyword.control.loop, keyword.control.trycatch, keyword.control.import, keyword.control.export | #a268de | — |
| keyword.control.return | #a268de | — |
| keyword, variable.language.this | #f25179 | — |
| storage.modifier | #8069dc | — |
| 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 | #f25179 | — |
| keyword.operator.comparison | #b86bd0 | — |
| keyword.operator.logical | #ed4f88 | — |
| keyword.operator.assignment | #9aa5ce | — |
| keyword.operator.optional, punctuation.accessor.optional | #e96793 | — |
| keyword.operator.coalescing, keyword.operator.nullish | #b86bd0 | — |
| keyword.operator.bitwise | #ed4f88 | — |
| keyword.operator | #f25179 | — |
| comment, comment.line, comment.block, comment.block.documentation, punctuation.definition.comment | #586075 | — |
| comment.keyword, comment.keyword.todo, comment.keyword.fixme, comment.keyword.note, storage.type.class.jsdoc | #586075 | bold |
| string.regexp, string.regexp.source, string.regexp.character-class | #e07850 | — |
| constant.character.escape.anchor.regexp, constant.character.escape.boundary.regexp | #ff5555 | — |
| keyword.operator.quantifier.regexp | #f25179 | — |
| entity.name.namespace, storage.type.namespace | #ba72e9 | bold |
| entity.name.module, storage.type.module | #8069dc | bold |
| entity.name.constant, variable.other.constant | #8069dc | bold |
| entity.name.enum, storage.type.enum | #46aadb | bold |
| variable.other.enummember, constant.other.enummember | #e25f82 | — |
| meta.decorator, entity.name.function.decorator | #8069dc | italic |
| entity.name.type.parameter, variable.parameter.generic | #e267bc | italic |
| punctuation.definition.interpolation, meta.interpolation | #8ab56c | — |
| meta.template.expression, punctuation.definition.template-expression | #8ab56c | — |
| variable, variable.other.readwrite, variable.other.assignment, support.variable | #c0caf5 | — |
| variable.language, variable.other.local | #c6cff6 | — |
| variable.parameter, meta.parameter | #da94b0 | — |
| variable.other.global, support.variable.global | #eba570 | — |
| variable.other.constant, variable.other.constant.object | #a9b1d6 | — |
| entity.name.function, meta.function-call, support.function | #4f8be4 | — |
| entity.name.function.member, meta.method-call | #587fdf | — |
| entity.name.function.constructor, support.function.constructor | #c4b39d | — |
| meta.function.async | #dd85ec | italic |
| entity.name.class, entity.name.type.class, support.class | #aa7ce9 | bold |
| entity.name.interface, entity.name.type.interface | #9766db | italic |
| entity.name.type, entity.name.type.alias | #46aadb | — |
| support.type.primitive | #46aadb | — |
| storage.type | #ba72e9 | bold |
| variable.other.property, meta.property.object | #47b8f2 | — |
| variable.other.property.static, meta.field.declaration | #d66ee8 | — |
| variable.other.property.static, support.variable.static | #eba570 | — |
| entity.name.tag, meta.tag | #df62c2 | — |
| entity.other.attribute-name, meta.attribute | #47b8f2 | — |
| entity.other.attribute-name.html | #47b8f2 | — |
| 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 | #8092e1 | — |
| punctuation.definition.tag, punctuation.definition.tag.begin, punctuation.definition.tag.end | #586075 | — |
| 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 | #8f93ed | — |
| 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 | #c077e0 | — |
| support.type.property-name.css, meta.property-name.css | #47b8f2 | — |
| 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 | #df62c2 | — |
| punctuation.separator.key-value.css | #586075 | — |
| 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 | #8069dc | — |
| support.module, entity.name.module | #8069dc | — |
| meta.decorator, entity.name.function.decorator | #8069dc | — |
| string.template, punctuation.definition.template-expression | #8ab56c | — |
| meta.template.expression | #9aa5ce | — |
| entity.other.inherited-class | #aa7ce9 | italic |
| variable.other.property, support.variable.property | #47b8f2 | — |
| meta.object-literal.method, entity.name.function.method | #587fdf | — |
| meta.brace.square, punctuation.dereference | #9aa5ce | — |
| punctuation.definition.block, punctuation.section.block, meta.brace.curly, punctuation.curlybrace.open, punctuation.curlybrace.close | #47bdc0 | — |
| meta.brace.square, punctuation.squarebracket.open, punctuation.squarebracket.close | #47bdc0 | — |
| meta.brace, punctuation.section | #47bdc0 | — |
| punctuation.definition.group, meta.group, punctuation.parenthesis.open, punctuation.parenthesis.close | #d8ac87 | — |
| keyword.operator | #f25179 | — |
| punctuation.separator, punctuation.separator.comma, punctuation.separator.semicolon, punctuation.terminator | #939cbd | — |
| keyword.operator.accessor, punctuation.accessor | #c0caf5 | — |
| punctuation.definition.string.begin, punctuation.definition.string.end | #72bd8a | — |
| 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 | #c077e0 | — |
| support.class.component, entity.name.tag.tsx, entity.name.tag.jsx, support.class.component.tsx, support.class.component.jsx | #aa7ce9 | bold |
| variable.other.readwrite.alias.react, meta.attribute.tsx, meta.attribute.jsx | #47b8f2 | — |
| variable.other.readwrite.state.react | #c6cff6 | — |
| entity.name.function.hook, support.function.react, variable.other.hook | #587fdf | italic |
| support.function.dom, meta.attribute.event | #4f8be4 | — |
| meta.jsx, meta.jsx.children, meta.jsx.attributes | #c0caf5 | — |
| punctuation.definition.tag.jsx, punctuation.definition.tag.begin.jsx, punctuation.definition.tag.end.jsx | #586075 | — |
| 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 | #aa7ce9 | — |
| 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 | #586075 | — |
| entity.other.attribute-name.html.vue | #8069dc | — |
| 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 | #8069dc | — |
| punctuation.attribute-shorthand.bind.html.vue | #48bfbf | — |
| punctuation.attribute-shorthand.event.html.vue | #e25fb8 | — |
| punctuation.attribute-shorthand.slot.html.vue | #ab70dd | — |
| punctuation.separator.key-value.html.vue | #586075 | — |
| punctuation.definition.string.begin.html.vue, punctuation.definition.string.end.html.vue | #c077e0 | — |
| meta.embedded.expression.vue, punctuation.definition.interpolation.vue, punctuation.definition.interpolation.begin.html.vue, punctuation.definition.interpolation.end.html.vue | #47bdc0 | — |
| meta.tag.template, entity.name.tag.template | #df62c2 | — |
| meta.tag.script, entity.name.tag.script | #ba72e9 | — |
| meta.tag.style, entity.name.tag.style | #47b8f2 | — |
| entity.name.tag.angular, meta.tag.angular, support.class.component.ng | #aa7ce9 | — |
| entity.other.attribute-name.angular, meta.attribute.angular | #8069dc | — |
| support.class.service, entity.name.service | #c4b39d | — |
| meta.decorator.angular, entity.name.function.decorator.angular | #8069dc | italic |
| variable.other.readwrite.ts, meta.embedded.expression.ts | #c0caf5 | — |
| meta.brace.erb, punctuation.definition.expression | #9aa5ce | — |
| entity.name.tag.svelte, support.class.component.svelte | #aa7ce9 | — |
| meta.tag.svelte.start, meta.tag.svelte.end | #df62c2 | — |
| entity.other.attribute-name.svelte, meta.directive.svelte | #8069dc | — |
| keyword.control.svelte, meta.reactive.svelte | #a268de | italic |
| meta.binding.pattern.ts, variable.parameter.svelte | #47b8f2 | — |
| meta.embedded.expression, punctuation.definition.template-expression, meta.interpolation | #ed4f88 | — |
| string.template, punctuation.definition.template | #8ab56c | — |
| meta.directive, keyword.control.directive | #a268de | — |
| support.module, support.class.builtin | #8069dc | — |
| support.function.builtin, entity.name.function.builtin | #587fdf | — |
| meta.function.async, support.function.async | #dd85ec | italic |
| variable.other.state, variable.other.context | #c6cff6 | — |
| keyword.other.special-method.dockerfile, keyword.other.dockerfile | #a268de | — |
| entity.name.function.dockerfile, support.constant.dockerfile | #4f8be4 | — |
| variable.other.dockerfile, string.unquoted.dockerfile | #8ab56c | — |
| string.unquoted.path.dockerfile, string.quoted.path.dockerfile | #47b8f2 | — |
| entity.name.tag.yaml, string.unquoted.plain.yaml, variable.other.yaml | #47b8f2 | — |
| string.quoted.single.yaml, string.quoted.double.yaml | #8ab56c | — |
| punctuation.definition.block.sequence.item.yaml, punctuation.separator.key-value.mapping.yaml | #586075 | — |
| constant.language.boolean.yaml, constant.numeric.yaml | #e25f82 | — |
| support.type.property-name.json, meta.object-literal.key.json | #47b8f2 | — |
| string.quoted.double.json, constant.language.json | #8ab56c | — |
| punctuation.separator.dictionary.pair.json, punctuation.definition.dictionary.begin.json | #586075 | — |
| constant.numeric.json | #eba570 | — |
| markup.heading, entity.name.section.markdown | #df62c2 | bold |
| markup.underline.link.markdown, string.other.link.title.markdown | #8ab56c | — |
| markup.inline.raw.markdown, markup.fenced_code.block.markdown | #8ab56c | — |
| markup.bold.markdown | #df62c2 | bold |
| markup.italic.markdown | #df62c2 | italic |
| beginning.punctuation.definition.list.markdown, punctuation.definition.list.begin.markdown | #586075 | — |
| markup.quote.markdown, punctuation.definition.quote.begin.markdown | #47b8f2 | — |
| meta.separator.markdown | #586075 | bold |
| markup.table.markdown | #c0caf5 | — |
| entity.name.function.shell, support.function.builtin.shell | #4f8be4 | — |
| variable.other.normal.shell, variable.language.shell | #c0caf5 | — |
| support.function.builtin.shell, keyword.control.shell | #a268de | — |
| string.quoted.other.shell, string.quoted.single.shell | #8ab56c | — |
| variable.other.bracket.shell, punctuation.definition.variable.shell | #9aa5ce | — |
| keyword.other.apacheconf, entity.name.tag.apacheconf | #ba72e9 | — |
| string.unquoted.apacheconf, variable.other.apacheconf | #8ab56c | — |
| string.regexp.apacheconf, string.quoted.double.apacheconf | #47b8f2 | — |
| entity.name.function.makefile, meta.function.makefile | #4f8be4 | bold |
| variable.other.makefile, variable.language.makefile | #eba570 | — |
| keyword.control.makefile | #a268de | — |
| support.function.makefile | #587fdf | — |
| entity.name.function.lua, support.function.library.lua | #4f8be4 | — |
| keyword.control.lua | #a268de | — |
| support.function.library.lua, variable.other.global.lua | #42b5c6 | — |
| variable.other.env, entity.name.variable.env | #eba570 | — |
| string.unquoted.env, string.quoted.env | #8ab56c | — |
| comment.line.number-sign.env | #586075 | — |
| keyword.control.directive, meta.preprocessor | #ff5555 | — |
| entity.name.function.preprocessor, constant.other.preprocessor | #eba570 | — |
| entity.name.section.ini | #ba72e9 | bold |
| keyword.other.definition.ini | #47b8f2 | — |
| string.unquoted.ini, string.quoted.ini | #8ab56c | — |
| entity.other.attribute-name.toml | #47b8f2 | — |
| string.quoted.toml, constant.numeric.toml | #8ab56c | — |
| meta.tag.inline.toml | #ba72e9 | — |
| variable | #c0caf5 | — |
| variable.declaration | #c882ef | — |
| variable.defaultLibrary | #42b5c6 | — |
| variable.readonly | #a9b1d6 | — |
| variable.global | #eba570 | — |
| variable.local | #c6cff6 | — |
| parameter | #da94b0 | — |
| parameter.declaration | #da94b0 | — |
| property | #47b8f2 | — |
| property.declaration | #98d1f6 | — |
| property.defaultLibrary | #56bef3 | — |
| function | #4f8be4 | — |
| function.declaration | #4f8be4 | — |
| method | #587fdf | — |
| method.declaration | #587fdf | — |
| constructor | #c4b39d | — |
| function.defaultLibrary | #4f8be4 | — |
| type | #46aadb | — |
| class | #aa7ce9 | — |
| interface | #9766db | — |
| typeParameter | #e267bc | — |
| enum | #46aadb | — |
| struct | #46aadb | — |
| keyword | #ba72e9 | — |
| modifier | #8069dc | — |
| operator | #f25179 | — |
| *.async, *.await, keyword.async, keyword.await | #dd85ec | italic |
| comment | #586075 | — |
| string | #8ab56c | — |
| number | #eba570 | — |
| boolean | #e25f82 | — |
| namespace | #42b5c6 | — |
| module | #8069dc | — |
| decorator | #8069dc | — |
| *.defaultLibrary | #42b5c6 | — |
| method.defaultLibrary | #587fdf | — |
| function.defaultLibrary | #4f8be4 | — |
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}!`;
}