Sonora
Publisher: martinlatrilleThemes in package: 4
A modern, dark color scheme with calming tones.
A modern, dark color scheme with calming tones.
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 |
|---|---|---|
| punctuation.definition.annotation, storage.type.annotation | #fab387 | — |
| meta.indexed-name.python, meta.item-access.python | #eba0ac | italic |
| keyword.declaration.function.arrow.js, storage.type.function.arrow.ts | #94e2d5 | — |
| text, source, variable.other.readwrite, punctuation.definition.variable | #cdd6f4 | — |
| constant.numeric, variable.other.constant, entity.name.constant, constant.language.boolean, constant.language.false, constant.language.true, keyword.other.unit.user-defined, keyword.other.unit.suffix.floating-point | #fab387 | — |
| constant.language, support.function.builtin | #f38ba8 | — |
| constant.language.null.js, constant.language.null.ts, constant.language.undefined.js, constant.language.undefined.ts, support.type.builtin.ts | #cba6f7 | — |
| meta.interpolation.cs | #cdd6f4 | — |
| comment.block.documentation.cs | #cdd6f4 | — |
| storage.modifier.specifier.extern.cpp | #cba6f7 | — |
| storage.modifier.reference.cpp | #94e2d5 | — |
| storage.type.class.doxygen | — | |
| entity.name.scope-resolution.template.call.cpp, entity.name.scope-resolution.parameter.cpp, entity.name.scope-resolution.cpp, entity.name.scope-resolution.function.definition.cpp | #f9e2af | — |
| source.css meta.attribute-selector | #a6e3a1 | — |
| keyword.other.unit.percentage.css | #fab387 | — |
| source.css meta.property-list variable, meta.property-list variable.other.less, meta.property-list variable.other.less punctuation.definition.variable.less | #89b4fa | — |
| support.type.vendored.property-name | #89dceb | — |
| entity.name.class, entity.other.inherited-class, support.class, meta.function-call.constructor, entity.name.struct | #f9e2af | italic |
| source.css entity.other.attribute-name.class.css, entity.other.attribute-name.parent-selector.css punctuation.definition.entity.css | #f9e2af | — |
| comment meta.annotation.go | #eba0ac | — |
| comment, punctuation.definition.comment | #9399b2 | italic |
| support.class.component, support.class.component.jsx, support.class.component.tsx, support.class.component.vue | #f5c2e7 | |
| punctuation.decorator.ts | #89b4fa | italic |
| meta.annotation variable.function, meta.annotation variable.annotation.function, meta.annotation punctuation.definition.annotation, meta.decorator, punctuation.decorator | #fab387 | — |
| meta.diff.header.from-file, meta.diff.header.to-file, punctuation.definition.from-file.diff, punctuation.definition.to-file.diff | #89b4fa | — |
| markup.deleted.diff | #f38ba8 | — |
| markup.inserted.diff | #a6e3a1 | — |
| entity.name.enum | #f9e2af | italic |
| meta.enum variable.other.readwrite, variable.other.enummember | #94e2d5 | — |
| meta.property.object | #94e2d5 | — |
| meta.export variable.other.readwrite.js | #eba0ac | — |
| keyword.operator.expression.in.js, keyword.operator.expression.in.ts, keyword.operator.expression.infer.ts, keyword.operator.expression.instanceof.js, keyword.operator.expression.instanceof.ts, keyword.operator.expression.is, keyword.operator.expression.keyof.ts, keyword.operator.expression.of.js, keyword.operator.expression.of.ts, keyword.operator.expression.typeof.ts | #cba6f7 | — |
| constant.language.gdscript | #fab387 | — |
| support.function.builtin.gdscript | #89b4fa | — |
| constant.language.go | #fab387 | — |
| string.unquoted.alias.graphql | #f2cdcd | — |
| constant.character.enum.graphql | #94e2d5 | — |
| meta.objectvalues.graphql constant.object.key.graphql string.unquoted.graphql | #f2cdcd | — |
| variable.graphql | #cdd6f4 | — |
| keyword.other.doctype, meta.tag.sgml.doctype punctuation.definition.tag, meta.tag.metadata.doctype entity.name.tag, meta.tag.metadata.doctype punctuation.definition.tag | #cba6f7 | — |
| entity.other.attribute-name | #f9e2af | — |
| entity.name.tag | #89b4fa | |
| variable.other.constant.js, variable.other.constant.ts, variable.other.property.js, variable.other.property.ts | #cdd6f4 | — |
| variable.other.jsdoc, comment.block.documentation variable.other | #eba0ac | |
| storage.type.class.jsdoc | — | |
| constant.language.json, constant.language.yaml | #fab387 | — |
| keyword.other.definition.ini, punctuation.support.type.property-name.json, support.type.property-name.json, punctuation.support.type.property-name.toml, support.type.property-name.toml, entity.name.tag.yaml, punctuation.support.type.property-name.yaml, support.type.property-name.yaml | #89b4fa | |
| constant.other.enum.java | #94e2d5 | — |
| storage.modifier.import.java | #cdd6f4 | — |
| comment.block.javadoc.java keyword.other.documentation.javadoc.java | — | |
| constant.language.julia | #fab387 | — |
| support.function.macro.julia | #94e2d5 | italic |
| constant.other.symbol.julia | #eba0ac | — |
| text.tex support.function.be | #89dceb | — |
| constant.other.general.math.tex | #f2cdcd | — |
| text.tex keyword.control.preamble | #94e2d5 | — |
| source.css meta.property-value variable, source.css meta.property-value variable.other.less, source.css meta.property-value variable.other.less punctuation.definition.variable.less, meta.definition.variable.scss | #eba0ac | — |
| variable.language.liquid | #f5c2e7 | — |
| comment.line.double-dash.documentation.lua storage.type.annotation.lua | #cba6f7 | |
| comment.line.double-dash.documentation.lua entity.name.variable.lua, comment.line.double-dash.documentation.lua variable.lua | #cdd6f4 | — |
| punctuation.definition.link, markup.underline.link | #89b4fa | — |
| punctuation.definition.raw.markdown, punctuation.definition.raw.quarto, markup.inline.raw.string.markdown, markup.inline.raw.string.quarto, markup.raw.block.markdown, markup.raw.block.quarto | #a6e3a1 | — |
| text.html.markdown punctuation.definition.link.title, text.html.quarto punctuation.definition.link.title, string.other.link.title.markdown, string.other.link.title.quarto, markup.link, punctuation.definition.constant.markdown, punctuation.definition.constant.quarto, constant.other.reference.link.markdown, constant.other.reference.link.quarto, markup.substitution.attribute-reference | #b4befe | — |
| punctuation.definition.list.begin.markdown, punctuation.definition.list.begin.quarto, markup.list.bullet | #94e2d5 | — |
| markup.quote, punctuation.definition.quote.begin | #f5c2e7 | — |
| meta.separator.markdown | #94e2d5 | — |
| fenced_code.block.language | #89dceb | — |
| markup.fenced_code.block punctuation.definition, markup.raw support.asciidoc | #9399b2 | — |
| markup.heading.quarto | — | bold |
| markup.changed.diff | #fab387 | — |
| entity.name.namespace | #f9e2af | — |
| entity.other.attribute-name.multipart.nix, entity.other.attribute-name.single.nix | #89b4fa | — |
| meta.embedded variable.parameter.name.nix | #b4befe | |
| variable.parameter.name.nix | #cdd6f4 | |
| string.unquoted.path.nix | #f5c2e7 | |
| support.constant.node, support.type.object.module.js | #cba6f7 | — |
| variable.object.property | #cdd6f4 | — |
| punctuation.separator.operator.css | #94e2d5 | — |
| support.attribute.builtin, meta.attribute.php | #f9e2af | — |
| constant.language.php | #cba6f7 | — |
| meta.function.parameters.php punctuation.definition.variable.php | #eba0ac | — |
| text.html.php support.function | #89dceb | — |
| keyword.other.phpdoc.php | — | |
| punctuation | #9399b2 | |
| keyword.control.directive, punctuation.definition.directive | #f9e2af | — |
| support.type.property-name.css, support.type.property-name.less | #89b4fa | |
| source.css entity.other.attribute-name.pseudo-class | #94e2d5 | — |
| keyword.operator, punctuation.accessor, punctuation.definition.generic, meta.function.closure punctuation.section.parameters, punctuation.definition.tag, punctuation.separator.key-value | #94e2d5 | — |
| variable.parameter.function.language.special.self.python, variable.language.special.self.python | #f38ba8 | italic |
| support.variable.magic.python, meta.function-call.arguments.python | #cdd6f4 | — |
| support.function.magic.python | #89dceb | italic |
| support.type.exception.python, support.function.builtin.python | #fab387 | — |
| storage.type.string.python | #a6e3a1 | italic |
| meta.function.parameters.python | — | |
| meta.function-call.arguments.r | #cdd6f4 | — |
| meta.function-call.r | #89b4fa | — |
| keyword.control.anchor.regexp | #cba6f7 | — |
| punctuation.definition.character-class.regexp | #f9e2af | — |
| constant.other.character-class.regexp | #f5c2e7 | — |
| constant.character.numeric.regexp | #fab387 | — |
| punctuation.definition.group.regexp, keyword.other.back-reference.regexp | #a6e3a1 | — |
| punctuation.definition.group.no-capture.regexp, meta.assertion.look-ahead.regexp, meta.assertion.negative-look-ahead.regexp | #89b4fa | — |
| keyword.operator.quantifier.regexp | #94e2d5 | — |
| constant.other.character-class.range.regexp | #f5e0dc | — |
| string.regexp.ts | #cdd6f4 | — |
| string.regexp punctuation.definition.string.begin, string.regexp punctuation.definition.string.end | #f5c2e7 | — |
| punctuation.brackets.angle.rust | #89dceb | — |
| meta.annotation.rust, meta.annotation.rust punctuation, meta.attribute.rust, punctuation.definition.attribute.rust | #f9e2af | italic |
| meta.attribute.rust string.quoted.double.rust, meta.attribute.rust string.quoted.single.char.rust | — | |
| meta.function.call.rust variable.other.rust | #cdd6f4 | — |
| constant.other.caps.rust | #fab387 | — |
| meta.enum.rust storage.type.source.rust | #94e2d5 | — |
| meta.function.definition.rust variable.other.rust | #eba0ac | — |
| meta.function.call.rust | #89b4fa | — |
| meta.generic.rust | #fab387 | — |
| entity.name.impl.rust | #f9e2af | italic |
| entity.name.function.macro.rules.rust, storage.type.module.rust, storage.modifier.rust, storage.type.struct.rust, storage.type.enum.rust, storage.type.trait.rust, storage.type.union.rust, storage.type.impl.rust, storage.type.rust, storage.type.function.rust, storage.type.type.rust | #cba6f7 | |
| storage.modifier.lifetime.rust, entity.name.type.lifetime | #89b4fa | italic |
| support.macro.rust, meta.macro.rust support.function.rust, entity.name.function.macro.rust | #89b4fa | italic |
| variable.other.metavariable.name.rust, meta.macro.metavariable.rust keyword.operator.macro.dollar.rust | #f5c2e7 | — |
| entity.name.module.rust | #fab387 | — |
| meta.function.return-type.rust meta.generic.rust storage.type.rust | #cdd6f4 | — |
| variable.language.self.rust | #f38ba8 | — |
| string.quoted.double.rust constant.other.placeholder.rust | #f5c2e7 | — |
| storage.type.source.rust | #f9e2af | — |
| entity.name.trait.rust | #f9e2af | italic |
| entity.name.type.numeric.rust | #cba6f7 | |
| entity.name.union.rust | #f9e2af | — |
| entity.name.tag.heredoc.shell | #cba6f7 | — |
| meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation, meta.function-call.arguments.shell punctuation.definition.variable.shell, meta.function-call.arguments.shell punctuation.section.interpolation | #f38ba8 | — |
| meta.string meta.interpolation.parameter.shell variable.other.readwrite | #fab387 | italic |
| string.quoted.double.shell variable.other.normal.shell | #cdd6f4 | — |
| comment.line.shebang, comment.line.shebang punctuation.definition.comment, comment.line.shebang, punctuation.definition.comment.shebang.shell, meta.shebang.shell | #f5c2e7 | italic |
| comment.line.shebang constant.language | #94e2d5 | italic |
| text.html constant.character.entity, text.html constant.character.entity punctuation, constant.character.entity.xml, constant.character.entity.xml punctuation, constant.character.entity.js.jsx, constant.character.entity.js.jsx punctuation, constant.character.entity.tsx, constant.character.entity.tsx punctuation | #f38ba8 | — |
| string.template variable, string variable | #cdd6f4 | — |
| constant.other.time.datetime.offset.toml | #f5c2e7 | — |
| support.type.property-name.table, entity.name.section.group-title.ini | #f9e2af | — |
| variable.language.this, variable.language.this punctuation.definition.variable | #f38ba8 | — |
| keyword.operator.new | — | bold |
| punctuation.definition.typeparameters | #89dceb | — |
| meta.type, meta.type-alias, support.type, entity.name.type | #f9e2af | italic |
| punctuation.definition.anchor.yaml, punctuation.definition.alias.yaml | #f5c2e7 | — |
| entity.name.type.anchor.yaml, variable.other.alias.yaml | #f9e2af | |
| entity.other.document.begin.yaml | #f5c2e7 | — |
| constant.character.escape | #f5c2e7 | — |
| variable.other.env | #89b4fa | — |
| string.quoted variable.other.env | #cdd6f4 | — |
| entity.name.function, meta.function-call.method, support.function, support.function.misc, variable.function | #89b4fa | italic |
| entity.name.tag.documentation | #cba6f7 | — |
| meta.type, meta.type-alias, support.type, entity.name.type | #f9e2af | italic |
| entity.other.attribute-name.documentation | #f38ba8 | — |
| comment meta.annotation.parameters.go | #fab387 | — |
| heading.1.markdown punctuation.definition.heading.markdown, heading.1.markdown, heading.1.quarto punctuation.definition.heading.quarto, heading.1.quarto, markup.heading.atx.1.mdx, markup.heading.atx.1.mdx punctuation.definition.heading.mdx, markup.heading.setext.1.markdown, markup.heading.heading-0.asciidoc | #f38ba8 | — |
| heading.2.markdown punctuation.definition.heading.markdown, heading.2.markdown, heading.2.quarto punctuation.definition.heading.quarto, heading.2.quarto, markup.heading.atx.2.mdx, markup.heading.atx.2.mdx punctuation.definition.heading.mdx, markup.heading.setext.2.markdown, markup.heading.heading-1.asciidoc | #fab387 | — |
| heading.3.markdown punctuation.definition.heading.markdown, heading.3.markdown, heading.3.quarto punctuation.definition.heading.quarto, heading.3.quarto, markup.heading.atx.3.mdx, markup.heading.atx.3.mdx punctuation.definition.heading.mdx, markup.heading.heading-2.asciidoc | #f9e2af | — |
| heading.4.markdown punctuation.definition.heading.markdown, heading.4.markdown, heading.4.quarto punctuation.definition.heading.quarto, heading.4.quarto, markup.heading.atx.4.mdx, markup.heading.atx.4.mdx punctuation.definition.heading.mdx, markup.heading.heading-3.asciidoc | #a6e3a1 | — |
| heading.5.markdown punctuation.definition.heading.markdown, heading.5.markdown, heading.5.quarto punctuation.definition.heading.quarto, heading.5.quarto, markup.heading.atx.5.mdx, markup.heading.atx.5.mdx punctuation.definition.heading.mdx, markup.heading.heading-4.asciidoc | #74c7ec | — |
| heading.6.markdown punctuation.definition.heading.markdown, heading.6.markdown, heading.6.quarto punctuation.definition.heading.quarto, heading.6.quarto, markup.heading.atx.6.mdx, markup.heading.atx.6.mdx punctuation.definition.heading.mdx, markup.heading.heading-5.asciidoc | #b4befe | — |
| storage.modifier.implements | #cba6f7 | — |
| keyword, keyword.operator.word, keyword.operator.new, variable.language.super, support.type.primitive, storage.type, storage.modifier, punctuation.definition.keyword | #cba6f7 | — |
| markup.bold | #f38ba8 | bold |
| markup.heading.typst | #f38ba8 | — |
| markup.italic | #f38ba8 | italic |
| markup.strikethrough | #a6adc8 | strikethrough |
| constant.language.python | #fab387 | — |
| meta.function-call.python | #89b4fa | — |
| entity.name.function.decorator.python, punctuation.definition.decorator.python | #fab387 | italic |
| support.token.decorator.python, meta.function.decorator.identifier.python | #89dceb | — |
| keyword.control.flow.python, keyword.operator.logical.python | #cba6f7 | — |
| constant.character.format.placeholder.other.python | #f5c2e7 | — |
| storage.type.function.python | #cba6f7 | — |
| source.css constant.other.unicode-range | #fab387 | — |
| source.css variable.parameter.url | #a6e3a1 | |
| source.shell punctuation.section.interpolation, punctuation.definition.evaluation.backticks.shell | #94e2d5 | — |
| string, punctuation.definition.string | #a6e3a1 | — |
| support.type.object.console.js | #cdd6f4 | — |
| variable.parameter, meta.function.parameters | #eba0ac | italic |
| variable.parameter.generic | #f9e2af | — |
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}!`;
}