Mariana by Ryan
Publisher: Ryan OlsonThemes in package: 7
Port of the default Sublime Text 4 theme
Port of the default Sublime Text 4 theme
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, punctuation.definition.comment | #a6acb9 | — |
| string, support.type.property-name.json | #99c794 | — |
| punctuation.definition - punctuation.definition.numeric.base | #5fb4b4 | — |
| constant.numeric | #f9ae58 | — |
| storage.type.numeric | #c695c6 | italic |
| constant.language | #ec5f66 | italic |
| constant.character, constant.other | #c695c6 | — |
| variable.member | #ec5f66 | — |
| keyword - keyword.operator, keyword.operator.word | #c695c6 | — |
| keyword.control | #c695c6 | — |
| keyword.operator | #f97b58 | — |
| punctuation.separator, punctuation.terminator | #a6acb9 | — |
| punctuation.section | #ffffff | — |
| punctuation.accessor | #a6acb9 | — |
| punctuation.definition.annotation | #5fb4b4 | — |
| variable.other.dollar.only.js, variable.other.object.dollar.only.js, variable.type.dollar.only.js, support.class.dollar.only.js | #5fb4b4 | — |
| storage | #ec5f66 | — |
| storage.type | #c695c6 | italic |
| entity.name.function | #5fb4b4 | — |
| meta.function-call entity.name.function | #6699cc | — |
| entity.name - (entity.name.section | entity.name.tag | entity.name.label) | #f9ae58 | — |
| entity.name.type - string.entity.name.type | #f9ae58 | — |
| entity.name.package - string.entity.name.package | #f9ae58 | — |
| entity.other.inherited-class | #5fb4b4 | italic |
| variable.parameter | #f9ae58 | — |
| variable.language | #ec5f66 | italic |
| entity.name.tag, support.class.component | #ec5f66 | — |
| entity.other.attribute-name | #c695c6 | — |
| variable.function, variable.annotation | #6699cc | — |
| support.function, support.macro | #6699cc | italic |
| support.constant | #c695c6 | italic |
| support.type, support.class | #6699cc | italic |
| invalid | #ec5f66 | bold |
| invalid.deprecated | #f9ae58 | bold |
| entity.name.tag.yaml | #5fb4b4 | — |
| source.yaml string.unquoted | #d8dee9 | — |
| markup.heading | — | bold |
| markup.heading punctuation.definition.heading | #f97b58 | — |
| markup.heading.1 punctuation.definition.heading | #ec5f66 | — |
| string.other.link, markup.underline.link | #6699cc | — |
| markup.bold | — | bold |
| markup.italic | — | italic |
| markup.underline | — | underline |
| markup.italic markup.bold | markup.bold markup.italic | — | italic bold |
| markup.underline markup.bold | markup.bold markup.underline | — | bold underline |
| markup.underline markup.italic | markup.italic markup.underline | — | italic underline |
| markup.bold markup.italic markup.underline | markup.bold markup.underline markup.italic | markup.italic markup.bold markup.underline | markup.italic markup.underline markup.bold | markup.underline markup.bold markup.italic | markup.underline markup.italic markup.bold | — | bold italic underline |
| punctuation.definition.thematic-break | #f9ae58 | — |
| markup.list.numbered.bullet | #99c794 | — |
| markup.quote punctuation.definition.blockquote, markup.list punctuation.definition.list_item | #f9ae58 | — |
| markup.raw | — | — |
| markup.raw.inline | — | — |
| (text punctuation.definition.italic | text punctuation.definition.bold) | #c695c6 | — |
| meta.diff, meta.diff.header | #c695c6 | — |
| markup.deleted | #ec5f66 | — |
| markup.inserted | #99c794 | — |
| markup.changed | #f9ae58 | — |
| support.type.property-name - support.type.property-name.json | #d8dee9 | — |
| constant.numeric.line-number.match | #ec5f66 | — |
| message.error | #ec5f66 | — |
| diff.deleted | — | — |
| diff.deleted.char | — | — |
| diff.inserted | — | — |
| diff.inserted.char | — | — |
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}!`;
}