diff --git a/CONTRACT.md b/CONTRACT.md index 61d0025..6b1286e 100644 --- a/CONTRACT.md +++ b/CONTRACT.md @@ -2,7 +2,7 @@ ## Status -This document defines the draft `1.0` catalog document shape. Catalog and package version `0.1.0` remain pre-1.0 and may change incompatibly before a stable release. Registry publication is outside this repository change. +This document defines the draft `1.0` catalog document shape. Catalog and package version `0.2.0` remain pre-1.0 and may change incompatibly before a stable release. Registry publication is outside this repository change. The JSON Schema at [`schemas/catalog.schema.json`](./schemas/catalog.schema.json) is the machine-readable source of truth. [`catalog/catalog.json`](./catalog/catalog.json) is the only source catalog. Generated Cargo and npm copies must not be edited directly. The schema is copied into both packages; `$schema` is an editor-facing canonical repository URL and runtime consumers do not fetch it. @@ -24,7 +24,7 @@ Theme identifiers use the Stack language identifier form. Active identifiers are `fallbacks.missingThemeId` must identify an active core theme. `fallbacks.missingIconId` must identify an icon present in every active theme with one stable subject. A renderer emits the applicable missing-resource diagnostic before selecting these records; fallback data does not hide the missing request. -`catalogRevision` is generated metadata rather than a source field. It is a `sha256:` digest over the normalized source catalog followed by every referenced SVG path and byte sequence in path order. The revision therefore changes when semantic catalog data, provenance, or icon bytes change, without requiring a Git commit to contain its own commit identifier. +`catalogRevision` is generated metadata rather than a source field. It is a `sha256:` digest over the normalized source catalog followed by every unique referenced SVG path and byte sequence in path order. The revision therefore changes when semantic catalog data, provenance, or icon bytes change, without requiring a Git commit to contain its own commit identifier. ## Theme records @@ -53,7 +53,7 @@ Advances use integer font design units. `glyphAdvances` keys are uppercase Unico ## Icon metadata and provenance -Icon identifiers are unique within one theme. Each icon requires `id`, a stable logical `subject`, and `asset`; `description` is optional. When the same icon identifier appears in multiple themes, its `subject` must be identical so theme switching cannot change its meaning. +Icon identifiers are unique within one theme. Each icon requires `id`, a stable logical `subject`, and `asset`; `description` is optional. When the same icon identifier appears in multiple themes, its `subject` must be identical so theme switching cannot change its meaning. Themes may reference one shared asset path only when the logical icon identifier and complete asset metadata are identical; reusing a path for different or conflicting metadata is rejected. An icon asset requires a repository-relative SVG `path`, four-integer `viewBox`, and `provenance`. Provenance requires: diff --git a/Cargo.lock b/Cargo.lock index c165369..2722201 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -77,7 +77,7 @@ dependencies = [ [[package]] name = "stack-theme" -version = "0.1.0" +version = "0.2.0" dependencies = [ "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 73ecf08..63733da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ edition = "2024" license = "Apache-2.0" repository = "https://github.com/stack-sh/theme" rust-version = "1.85" -version = "0.1.0" +version = "0.2.0" [workspace.dependencies] serde = { version = "1.0", features = ["derive"] } diff --git a/README.md b/README.md index 750093d..a78b2b3 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ The draft catalog contract is defined by [`CONTRACT.md`](./CONTRACT.md) and [`schemas/catalog.schema.json`](./schemas/catalog.schema.json). The canonical source is [`catalog/catalog.json`](./catalog/catalog.json); Cargo and npm artifacts are generated from that source with one content revision. -The current `0.1.0` catalog contains the core `default`, `light`, and `dark` themes, repository-authored fallbacks for every Stack 1.0 node kind, and versioned host-independent font metrics. Neither package has been released to a registry yet. +The current `0.2.0` catalog contains the core `default`, `light`, and `dark` themes, repository-authored fallbacks for every Stack 1.0 node kind, 12 provider-neutral explicit icons, and versioned host-independent font metrics. The explicit icon identifiers are `api`, `web`, `mobile`, `desktop`, `server`, `container`, `cluster`, `cloud`, `scheduler`, `webhook`, `identity`, and `observability`. Neither package has been released to a registry yet. ## Scope diff --git a/THIRD_PARTY_LICENSES.md b/THIRD_PARTY_LICENSES.md index 076a353..e738d5d 100644 --- a/THIRD_PARTY_LICENSES.md +++ b/THIRD_PARTY_LICENSES.md @@ -1,6 +1,6 @@ # Third-party licenses -No third-party fonts, icons, or other runtime assets are bundled in this repository. The 30 core SVG assets and `stack_sans` metrics are repository-authored Apache-2.0 work with provenance recorded in the canonical catalog. +No third-party fonts, icons, or other runtime assets are bundled in this repository. The 30 theme-specific fallback SVGs, 12 shared explicit icon SVGs, and `stack_sans` metrics are repository-authored Apache-2.0 work with provenance recorded in the canonical catalog. The repository uses the following third-party libraries: diff --git a/assets/core/api.svg b/assets/core/api.svg new file mode 100644 index 0000000..a9f9f4e --- /dev/null +++ b/assets/core/api.svg @@ -0,0 +1,3 @@ + diff --git a/assets/core/cloud.svg b/assets/core/cloud.svg new file mode 100644 index 0000000..8147310 --- /dev/null +++ b/assets/core/cloud.svg @@ -0,0 +1,3 @@ + diff --git a/assets/core/cluster.svg b/assets/core/cluster.svg new file mode 100644 index 0000000..9f7a21c --- /dev/null +++ b/assets/core/cluster.svg @@ -0,0 +1,6 @@ + diff --git a/assets/core/container.svg b/assets/core/container.svg new file mode 100644 index 0000000..c7934fd --- /dev/null +++ b/assets/core/container.svg @@ -0,0 +1,4 @@ + diff --git a/assets/core/desktop.svg b/assets/core/desktop.svg new file mode 100644 index 0000000..dd7e166 --- /dev/null +++ b/assets/core/desktop.svg @@ -0,0 +1,4 @@ + diff --git a/assets/core/identity.svg b/assets/core/identity.svg new file mode 100644 index 0000000..7de2068 --- /dev/null +++ b/assets/core/identity.svg @@ -0,0 +1,5 @@ + diff --git a/assets/core/mobile.svg b/assets/core/mobile.svg new file mode 100644 index 0000000..e1a14c4 --- /dev/null +++ b/assets/core/mobile.svg @@ -0,0 +1,4 @@ + diff --git a/assets/core/observability.svg b/assets/core/observability.svg new file mode 100644 index 0000000..00737bb --- /dev/null +++ b/assets/core/observability.svg @@ -0,0 +1,4 @@ + diff --git a/assets/core/scheduler.svg b/assets/core/scheduler.svg new file mode 100644 index 0000000..f9351e7 --- /dev/null +++ b/assets/core/scheduler.svg @@ -0,0 +1,6 @@ + diff --git a/assets/core/server.svg b/assets/core/server.svg new file mode 100644 index 0000000..c1d42c7 --- /dev/null +++ b/assets/core/server.svg @@ -0,0 +1,5 @@ + diff --git a/assets/core/web.svg b/assets/core/web.svg new file mode 100644 index 0000000..4c88880 --- /dev/null +++ b/assets/core/web.svg @@ -0,0 +1,4 @@ + diff --git a/assets/core/webhook.svg b/assets/core/webhook.svg new file mode 100644 index 0000000..1eb1770 --- /dev/null +++ b/assets/core/webhook.svg @@ -0,0 +1,4 @@ + diff --git a/catalog/catalog.json b/catalog/catalog.json index b2cefc9..ba3ee98 100644 --- a/catalog/catalog.json +++ b/catalog/catalog.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/stack-sh/theme/main/schemas/catalog.schema.json", "schemaVersion": "1.0", - "catalogVersion": "0.1.0", + "catalogVersion": "0.2.0", "reservedThemeIds": [], "fallbacks": { "missingThemeId": "default", @@ -98,7 +98,19 @@ { "id": "kind-cache", "subject": "Disposable cache", "asset": { "path": "assets/default/kind-cache.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/default", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, { "id": "kind-queue", "subject": "Asynchronous queue or stream", "asset": { "path": "assets/default/kind-queue.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/default", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, { "id": "kind-storage", "subject": "Blob or file storage", "asset": { "path": "assets/default/kind-storage.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/default", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, - { "id": "kind-external", "subject": "External system", "asset": { "path": "assets/default/kind-external.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/default", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } } + { "id": "kind-external", "subject": "External system", "asset": { "path": "assets/default/kind-external.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/default", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "api", "subject": "Application programming interface", "asset": { "path": "assets/core/api.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "web", "subject": "Web application", "asset": { "path": "assets/core/web.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "mobile", "subject": "Mobile application", "asset": { "path": "assets/core/mobile.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "desktop", "subject": "Desktop application", "asset": { "path": "assets/core/desktop.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "server", "subject": "Server host", "asset": { "path": "assets/core/server.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "container", "subject": "Application container", "asset": { "path": "assets/core/container.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "cluster", "subject": "Compute cluster", "asset": { "path": "assets/core/cluster.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "cloud", "subject": "Cloud environment", "asset": { "path": "assets/core/cloud.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "scheduler", "subject": "Scheduled execution", "asset": { "path": "assets/core/scheduler.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "webhook", "subject": "Webhook endpoint", "asset": { "path": "assets/core/webhook.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "identity", "subject": "Identity and access", "asset": { "path": "assets/core/identity.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "observability", "subject": "Observability system", "asset": { "path": "assets/core/observability.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } } ] }, { @@ -130,7 +142,19 @@ { "id": "kind-cache", "subject": "Disposable cache", "asset": { "path": "assets/light/kind-cache.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, { "id": "kind-queue", "subject": "Asynchronous queue or stream", "asset": { "path": "assets/light/kind-queue.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, { "id": "kind-storage", "subject": "Blob or file storage", "asset": { "path": "assets/light/kind-storage.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, - { "id": "kind-external", "subject": "External system", "asset": { "path": "assets/light/kind-external.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } } + { "id": "kind-external", "subject": "External system", "asset": { "path": "assets/light/kind-external.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "api", "subject": "Application programming interface", "asset": { "path": "assets/core/api.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "web", "subject": "Web application", "asset": { "path": "assets/core/web.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "mobile", "subject": "Mobile application", "asset": { "path": "assets/core/mobile.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "desktop", "subject": "Desktop application", "asset": { "path": "assets/core/desktop.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "server", "subject": "Server host", "asset": { "path": "assets/core/server.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "container", "subject": "Application container", "asset": { "path": "assets/core/container.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "cluster", "subject": "Compute cluster", "asset": { "path": "assets/core/cluster.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "cloud", "subject": "Cloud environment", "asset": { "path": "assets/core/cloud.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "scheduler", "subject": "Scheduled execution", "asset": { "path": "assets/core/scheduler.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "webhook", "subject": "Webhook endpoint", "asset": { "path": "assets/core/webhook.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "identity", "subject": "Identity and access", "asset": { "path": "assets/core/identity.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "observability", "subject": "Observability system", "asset": { "path": "assets/core/observability.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } } ] }, { @@ -162,7 +186,19 @@ { "id": "kind-cache", "subject": "Disposable cache", "asset": { "path": "assets/dark/kind-cache.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, { "id": "kind-queue", "subject": "Asynchronous queue or stream", "asset": { "path": "assets/dark/kind-queue.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, { "id": "kind-storage", "subject": "Blob or file storage", "asset": { "path": "assets/dark/kind-storage.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, - { "id": "kind-external", "subject": "External system", "asset": { "path": "assets/dark/kind-external.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } } + { "id": "kind-external", "subject": "External system", "asset": { "path": "assets/dark/kind-external.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "api", "subject": "Application programming interface", "asset": { "path": "assets/core/api.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "web", "subject": "Web application", "asset": { "path": "assets/core/web.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "mobile", "subject": "Mobile application", "asset": { "path": "assets/core/mobile.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "desktop", "subject": "Desktop application", "asset": { "path": "assets/core/desktop.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "server", "subject": "Server host", "asset": { "path": "assets/core/server.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "container", "subject": "Application container", "asset": { "path": "assets/core/container.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "cluster", "subject": "Compute cluster", "asset": { "path": "assets/core/cluster.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "cloud", "subject": "Cloud environment", "asset": { "path": "assets/core/cloud.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "scheduler", "subject": "Scheduled execution", "asset": { "path": "assets/core/scheduler.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "webhook", "subject": "Webhook endpoint", "asset": { "path": "assets/core/webhook.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "identity", "subject": "Identity and access", "asset": { "path": "assets/core/identity.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } }, + { "id": "observability", "subject": "Observability system", "asset": { "path": "assets/core/observability.svg", "viewBox": [0, 0, 24, 24], "provenance": { "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", "modified": false, "redistribution": { "cargo": true, "npm": true, "wasm": true, "commercialApplications": true } } } } ] } ] diff --git a/crates/stack-theme/assets/core/api.svg b/crates/stack-theme/assets/core/api.svg new file mode 100644 index 0000000..a9f9f4e --- /dev/null +++ b/crates/stack-theme/assets/core/api.svg @@ -0,0 +1,3 @@ + diff --git a/crates/stack-theme/assets/core/cloud.svg b/crates/stack-theme/assets/core/cloud.svg new file mode 100644 index 0000000..8147310 --- /dev/null +++ b/crates/stack-theme/assets/core/cloud.svg @@ -0,0 +1,3 @@ + diff --git a/crates/stack-theme/assets/core/cluster.svg b/crates/stack-theme/assets/core/cluster.svg new file mode 100644 index 0000000..9f7a21c --- /dev/null +++ b/crates/stack-theme/assets/core/cluster.svg @@ -0,0 +1,6 @@ + diff --git a/crates/stack-theme/assets/core/container.svg b/crates/stack-theme/assets/core/container.svg new file mode 100644 index 0000000..c7934fd --- /dev/null +++ b/crates/stack-theme/assets/core/container.svg @@ -0,0 +1,4 @@ + diff --git a/crates/stack-theme/assets/core/desktop.svg b/crates/stack-theme/assets/core/desktop.svg new file mode 100644 index 0000000..dd7e166 --- /dev/null +++ b/crates/stack-theme/assets/core/desktop.svg @@ -0,0 +1,4 @@ + diff --git a/crates/stack-theme/assets/core/identity.svg b/crates/stack-theme/assets/core/identity.svg new file mode 100644 index 0000000..7de2068 --- /dev/null +++ b/crates/stack-theme/assets/core/identity.svg @@ -0,0 +1,5 @@ + diff --git a/crates/stack-theme/assets/core/mobile.svg b/crates/stack-theme/assets/core/mobile.svg new file mode 100644 index 0000000..e1a14c4 --- /dev/null +++ b/crates/stack-theme/assets/core/mobile.svg @@ -0,0 +1,4 @@ + diff --git a/crates/stack-theme/assets/core/observability.svg b/crates/stack-theme/assets/core/observability.svg new file mode 100644 index 0000000..00737bb --- /dev/null +++ b/crates/stack-theme/assets/core/observability.svg @@ -0,0 +1,4 @@ + diff --git a/crates/stack-theme/assets/core/scheduler.svg b/crates/stack-theme/assets/core/scheduler.svg new file mode 100644 index 0000000..f9351e7 --- /dev/null +++ b/crates/stack-theme/assets/core/scheduler.svg @@ -0,0 +1,6 @@ + diff --git a/crates/stack-theme/assets/core/server.svg b/crates/stack-theme/assets/core/server.svg new file mode 100644 index 0000000..c1d42c7 --- /dev/null +++ b/crates/stack-theme/assets/core/server.svg @@ -0,0 +1,5 @@ + diff --git a/crates/stack-theme/assets/core/web.svg b/crates/stack-theme/assets/core/web.svg new file mode 100644 index 0000000..4c88880 --- /dev/null +++ b/crates/stack-theme/assets/core/web.svg @@ -0,0 +1,4 @@ + diff --git a/crates/stack-theme/assets/core/webhook.svg b/crates/stack-theme/assets/core/webhook.svg new file mode 100644 index 0000000..1eb1770 --- /dev/null +++ b/crates/stack-theme/assets/core/webhook.svg @@ -0,0 +1,4 @@ + diff --git a/crates/stack-theme/src/generated/catalog.json b/crates/stack-theme/src/generated/catalog.json index 778982b..055c96d 100644 --- a/crates/stack-theme/src/generated/catalog.json +++ b/crates/stack-theme/src/generated/catalog.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/stack-sh/theme/main/schemas/catalog.schema.json", "schemaVersion": "1.0", - "catalogVersion": "0.1.0", + "catalogVersion": "0.2.0", "reservedThemeIds": [], "fallbacks": { "missingThemeId": "default", @@ -501,23 +501,1068 @@ } } } + }, + { + "id": "api", + "subject": "Application programming interface", + "asset": { + "path": "assets/core/api.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "web", + "subject": "Web application", + "asset": { + "path": "assets/core/web.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "mobile", + "subject": "Mobile application", + "asset": { + "path": "assets/core/mobile.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "desktop", + "subject": "Desktop application", + "asset": { + "path": "assets/core/desktop.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "server", + "subject": "Server host", + "asset": { + "path": "assets/core/server.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "container", + "subject": "Application container", + "asset": { + "path": "assets/core/container.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "cluster", + "subject": "Compute cluster", + "asset": { + "path": "assets/core/cluster.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "cloud", + "subject": "Cloud environment", + "asset": { + "path": "assets/core/cloud.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "scheduler", + "subject": "Scheduled execution", + "asset": { + "path": "assets/core/scheduler.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "webhook", + "subject": "Webhook endpoint", + "asset": { + "path": "assets/core/webhook.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "identity", + "subject": "Identity and access", + "asset": { + "path": "assets/core/identity.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "observability", + "subject": "Observability system", + "asset": { + "path": "assets/core/observability.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + } + ] + }, + { + "id": "light", + "name": "Stack Light", + "description": "Warm neutral surfaces for documents with light backgrounds.", + "palette": { + "canvas": "#FAF9F6", + "surface": "#FFFFFF", + "surfaceMuted": "#EEEAE3", + "text": "#1C1917", + "textMuted": "#57534E", + "border": "#78716C", + "accent": "#005DBB", + "danger": "#A52A1A", + "connector": "#57534E" + }, + "typography": { + "fontMetricsId": "stack_sans", + "nodeLabelSizeMilliPx": 14000, + "nodeDetailSizeMilliPx": 12000, + "groupLabelSizeMilliPx": 13000, + "edgeLabelSizeMilliPx": 11000, + "lineHeightPermille": 1400, + "labelWeight": 600, + "detailWeight": 400 + }, + "nodeKindFallbacks": { + "actor": { + "shape": "circle", + "fill": "surface", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-actor" + }, + "client": { + "shape": "rounded-rectangle", + "fill": "surface", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 8000, + "fallbackIconId": "kind-client" + }, + "service": { + "shape": "rounded-rectangle", + "fill": "surface", + "stroke": "accent", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 8000, + "fallbackIconId": "kind-service" + }, + "function": { + "shape": "hexagon", + "fill": "surfaceMuted", + "stroke": "accent", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-function" + }, + "worker": { + "shape": "capsule", + "fill": "surface", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 16000, + "fallbackIconId": "kind-worker" + }, + "database": { + "shape": "cylinder", + "fill": "surface", + "stroke": "accent", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-database" + }, + "cache": { + "shape": "cylinder", + "fill": "surfaceMuted", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-cache" + }, + "queue": { + "shape": "capsule", + "fill": "surfaceMuted", + "stroke": "accent", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 16000, + "fallbackIconId": "kind-queue" + }, + "storage": { + "shape": "rounded-rectangle", + "fill": "surface", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 4000, + "fallbackIconId": "kind-storage" + }, + "external": { + "shape": "hexagon", + "fill": "surfaceMuted", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-external" + } + }, + "connector": { + "stroke": "connector", + "text": "textMuted", + "labelBackground": "canvas", + "widthMilliPx": 1250, + "arrowSizeMilliPx": 6500 + }, + "icons": [ + { + "id": "kind-actor", + "subject": "Human actor", + "asset": { + "path": "assets/light/kind-actor.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-client", + "subject": "Client application or device", + "asset": { + "path": "assets/light/kind-client.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-service", + "subject": "Long-running service", + "asset": { + "path": "assets/light/kind-service.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-function", + "subject": "On-demand function", + "asset": { + "path": "assets/light/kind-function.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-worker", + "subject": "Background worker", + "asset": { + "path": "assets/light/kind-worker.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-database", + "subject": "Durable database", + "asset": { + "path": "assets/light/kind-database.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-cache", + "subject": "Disposable cache", + "asset": { + "path": "assets/light/kind-cache.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-queue", + "subject": "Asynchronous queue or stream", + "asset": { + "path": "assets/light/kind-queue.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-storage", + "subject": "Blob or file storage", + "asset": { + "path": "assets/light/kind-storage.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-external", + "subject": "External system", + "asset": { + "path": "assets/light/kind-external.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "api", + "subject": "Application programming interface", + "asset": { + "path": "assets/core/api.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "web", + "subject": "Web application", + "asset": { + "path": "assets/core/web.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "mobile", + "subject": "Mobile application", + "asset": { + "path": "assets/core/mobile.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "desktop", + "subject": "Desktop application", + "asset": { + "path": "assets/core/desktop.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "server", + "subject": "Server host", + "asset": { + "path": "assets/core/server.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "container", + "subject": "Application container", + "asset": { + "path": "assets/core/container.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "cluster", + "subject": "Compute cluster", + "asset": { + "path": "assets/core/cluster.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "cloud", + "subject": "Cloud environment", + "asset": { + "path": "assets/core/cloud.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "scheduler", + "subject": "Scheduled execution", + "asset": { + "path": "assets/core/scheduler.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "webhook", + "subject": "Webhook endpoint", + "asset": { + "path": "assets/core/webhook.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "identity", + "subject": "Identity and access", + "asset": { + "path": "assets/core/identity.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "observability", + "subject": "Observability system", + "asset": { + "path": "assets/core/observability.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } } ] }, { - "id": "light", - "name": "Stack Light", - "description": "Warm neutral surfaces for documents with light backgrounds.", + "id": "dark", + "name": "Stack Dark", + "description": "High-contrast cool surfaces for dark canvases.", "palette": { - "canvas": "#FAF9F6", - "surface": "#FFFFFF", - "surfaceMuted": "#EEEAE3", - "text": "#1C1917", - "textMuted": "#57534E", - "border": "#78716C", - "accent": "#005DBB", - "danger": "#A52A1A", - "connector": "#57534E" + "canvas": "#0B1020", + "surface": "#141B2D", + "surfaceMuted": "#1E293B", + "text": "#F8FAFC", + "textMuted": "#CBD5E1", + "border": "#94A3B8", + "accent": "#69A7FF", + "danger": "#FF8A9A", + "connector": "#CBD5E1" }, "typography": { "fontMetricsId": "stack_sans", @@ -625,15 +1670,15 @@ "stroke": "connector", "text": "textMuted", "labelBackground": "canvas", - "widthMilliPx": 1250, - "arrowSizeMilliPx": 6500 + "widthMilliPx": 1750, + "arrowSizeMilliPx": 7500 }, "icons": [ { "id": "kind-actor", "subject": "Human actor", "asset": { - "path": "assets/light/kind-actor.svg", + "path": "assets/dark/kind-actor.svg", "viewBox": [ 0, 0, @@ -641,7 +1686,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -660,7 +1705,7 @@ "id": "kind-client", "subject": "Client application or device", "asset": { - "path": "assets/light/kind-client.svg", + "path": "assets/dark/kind-client.svg", "viewBox": [ 0, 0, @@ -668,7 +1713,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -687,7 +1732,7 @@ "id": "kind-service", "subject": "Long-running service", "asset": { - "path": "assets/light/kind-service.svg", + "path": "assets/dark/kind-service.svg", "viewBox": [ 0, 0, @@ -695,7 +1740,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -714,7 +1759,7 @@ "id": "kind-function", "subject": "On-demand function", "asset": { - "path": "assets/light/kind-function.svg", + "path": "assets/dark/kind-function.svg", "viewBox": [ 0, 0, @@ -722,7 +1767,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -741,7 +1786,7 @@ "id": "kind-worker", "subject": "Background worker", "asset": { - "path": "assets/light/kind-worker.svg", + "path": "assets/dark/kind-worker.svg", "viewBox": [ 0, 0, @@ -749,7 +1794,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -768,7 +1813,7 @@ "id": "kind-database", "subject": "Durable database", "asset": { - "path": "assets/light/kind-database.svg", + "path": "assets/dark/kind-database.svg", "viewBox": [ 0, 0, @@ -776,7 +1821,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -795,7 +1840,7 @@ "id": "kind-cache", "subject": "Disposable cache", "asset": { - "path": "assets/light/kind-cache.svg", + "path": "assets/dark/kind-cache.svg", "viewBox": [ 0, 0, @@ -803,7 +1848,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -822,7 +1867,7 @@ "id": "kind-queue", "subject": "Asynchronous queue or stream", "asset": { - "path": "assets/light/kind-queue.svg", + "path": "assets/dark/kind-queue.svg", "viewBox": [ 0, 0, @@ -830,7 +1875,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -849,7 +1894,7 @@ "id": "kind-storage", "subject": "Blob or file storage", "asset": { - "path": "assets/light/kind-storage.svg", + "path": "assets/dark/kind-storage.svg", "viewBox": [ 0, 0, @@ -857,7 +1902,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -876,7 +1921,7 @@ "id": "kind-external", "subject": "External system", "asset": { - "path": "assets/light/kind-external.svg", + "path": "assets/dark/kind-external.svg", "viewBox": [ 0, 0, @@ -884,7 +1929,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -898,139 +1943,66 @@ } } } - } - ] - }, - { - "id": "dark", - "name": "Stack Dark", - "description": "High-contrast cool surfaces for dark canvases.", - "palette": { - "canvas": "#0B1020", - "surface": "#141B2D", - "surfaceMuted": "#1E293B", - "text": "#F8FAFC", - "textMuted": "#CBD5E1", - "border": "#94A3B8", - "accent": "#69A7FF", - "danger": "#FF8A9A", - "connector": "#CBD5E1" - }, - "typography": { - "fontMetricsId": "stack_sans", - "nodeLabelSizeMilliPx": 14000, - "nodeDetailSizeMilliPx": 12000, - "groupLabelSizeMilliPx": 13000, - "edgeLabelSizeMilliPx": 11000, - "lineHeightPermille": 1400, - "labelWeight": 600, - "detailWeight": 400 - }, - "nodeKindFallbacks": { - "actor": { - "shape": "circle", - "fill": "surface", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-actor" - }, - "client": { - "shape": "rounded-rectangle", - "fill": "surface", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 8000, - "fallbackIconId": "kind-client" - }, - "service": { - "shape": "rounded-rectangle", - "fill": "surface", - "stroke": "accent", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 8000, - "fallbackIconId": "kind-service" - }, - "function": { - "shape": "hexagon", - "fill": "surfaceMuted", - "stroke": "accent", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-function" - }, - "worker": { - "shape": "capsule", - "fill": "surface", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 16000, - "fallbackIconId": "kind-worker" - }, - "database": { - "shape": "cylinder", - "fill": "surface", - "stroke": "accent", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-database" - }, - "cache": { - "shape": "cylinder", - "fill": "surfaceMuted", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-cache" }, - "queue": { - "shape": "capsule", - "fill": "surfaceMuted", - "stroke": "accent", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 16000, - "fallbackIconId": "kind-queue" + { + "id": "api", + "subject": "Application programming interface", + "asset": { + "path": "assets/core/api.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } }, - "storage": { - "shape": "rounded-rectangle", - "fill": "surface", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 4000, - "fallbackIconId": "kind-storage" + { + "id": "web", + "subject": "Web application", + "asset": { + "path": "assets/core/web.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } }, - "external": { - "shape": "hexagon", - "fill": "surfaceMuted", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-external" - } - }, - "connector": { - "stroke": "connector", - "text": "textMuted", - "labelBackground": "canvas", - "widthMilliPx": 1750, - "arrowSizeMilliPx": 7500 - }, - "icons": [ { - "id": "kind-actor", - "subject": "Human actor", + "id": "mobile", + "subject": "Mobile application", "asset": { - "path": "assets/dark/kind-actor.svg", + "path": "assets/core/mobile.svg", "viewBox": [ 0, 0, @@ -1038,8 +2010,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1054,10 +2026,10 @@ } }, { - "id": "kind-client", - "subject": "Client application or device", + "id": "desktop", + "subject": "Desktop application", "asset": { - "path": "assets/dark/kind-client.svg", + "path": "assets/core/desktop.svg", "viewBox": [ 0, 0, @@ -1065,8 +2037,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1081,10 +2053,10 @@ } }, { - "id": "kind-service", - "subject": "Long-running service", + "id": "server", + "subject": "Server host", "asset": { - "path": "assets/dark/kind-service.svg", + "path": "assets/core/server.svg", "viewBox": [ 0, 0, @@ -1092,8 +2064,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1108,10 +2080,10 @@ } }, { - "id": "kind-function", - "subject": "On-demand function", + "id": "container", + "subject": "Application container", "asset": { - "path": "assets/dark/kind-function.svg", + "path": "assets/core/container.svg", "viewBox": [ 0, 0, @@ -1119,8 +2091,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1135,10 +2107,10 @@ } }, { - "id": "kind-worker", - "subject": "Background worker", + "id": "cluster", + "subject": "Compute cluster", "asset": { - "path": "assets/dark/kind-worker.svg", + "path": "assets/core/cluster.svg", "viewBox": [ 0, 0, @@ -1146,8 +2118,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1162,10 +2134,10 @@ } }, { - "id": "kind-database", - "subject": "Durable database", + "id": "cloud", + "subject": "Cloud environment", "asset": { - "path": "assets/dark/kind-database.svg", + "path": "assets/core/cloud.svg", "viewBox": [ 0, 0, @@ -1173,8 +2145,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1189,10 +2161,10 @@ } }, { - "id": "kind-cache", - "subject": "Disposable cache", + "id": "scheduler", + "subject": "Scheduled execution", "asset": { - "path": "assets/dark/kind-cache.svg", + "path": "assets/core/scheduler.svg", "viewBox": [ 0, 0, @@ -1200,8 +2172,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1216,10 +2188,10 @@ } }, { - "id": "kind-queue", - "subject": "Asynchronous queue or stream", + "id": "webhook", + "subject": "Webhook endpoint", "asset": { - "path": "assets/dark/kind-queue.svg", + "path": "assets/core/webhook.svg", "viewBox": [ 0, 0, @@ -1227,8 +2199,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1243,10 +2215,10 @@ } }, { - "id": "kind-storage", - "subject": "Blob or file storage", + "id": "identity", + "subject": "Identity and access", "asset": { - "path": "assets/dark/kind-storage.svg", + "path": "assets/core/identity.svg", "viewBox": [ 0, 0, @@ -1254,8 +2226,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1270,10 +2242,10 @@ } }, { - "id": "kind-external", - "subject": "External system", + "id": "observability", + "subject": "Observability system", "asset": { - "path": "assets/dark/kind-external.svg", + "path": "assets/core/observability.svg", "viewBox": [ 0, 0, @@ -1281,8 +2253,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", diff --git a/crates/stack-theme/src/generated/metadata.rs b/crates/stack-theme/src/generated/metadata.rs index 3b43315..dc9ea83 100644 --- a/crates/stack-theme/src/generated/metadata.rs +++ b/crates/stack-theme/src/generated/metadata.rs @@ -1,9 +1,21 @@ // Generated by scripts/generate.mjs. Do not edit. -pub const CATALOG_VERSION: &str = "0.1.0"; -pub const CATALOG_REVISION: &str = "sha256:b54ca3435931675d36d6a69b5154a0bd6ce2cbae1cfe14a20a095a8e24f8bae4"; +pub const CATALOG_VERSION: &str = "0.2.0"; +pub const CATALOG_REVISION: &str = "sha256:d3a8a5a9d2100e496af3fd7adf389788f4a77508bf749a108183a2abf8f681e1"; pub fn icon_svg(asset_path: &str) -> Option<&'static str> { match asset_path { + "assets/core/api.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/core/api.svg"))), + "assets/core/cloud.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/core/cloud.svg"))), + "assets/core/cluster.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/core/cluster.svg"))), + "assets/core/container.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/core/container.svg"))), + "assets/core/desktop.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/core/desktop.svg"))), + "assets/core/identity.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/core/identity.svg"))), + "assets/core/mobile.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/core/mobile.svg"))), + "assets/core/observability.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/core/observability.svg"))), + "assets/core/scheduler.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/core/scheduler.svg"))), + "assets/core/server.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/core/server.svg"))), + "assets/core/web.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/core/web.svg"))), + "assets/core/webhook.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/core/webhook.svg"))), "assets/dark/kind-actor.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/dark/kind-actor.svg"))), "assets/dark/kind-cache.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/dark/kind-cache.svg"))), "assets/dark/kind-client.svg" => Some(include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/assets/dark/kind-client.svg"))), diff --git a/docs/core-theme-review.md b/docs/core-theme-review.md index 3351b05..cbf43f3 100644 --- a/docs/core-theme-review.md +++ b/docs/core-theme-review.md @@ -1,15 +1,16 @@ # Core theme review -Review date: 2026-09-03 +Review date: 2026-09-04 -Catalog version: `0.1.0` +Catalog version: `0.2.0` -Catalog revision: `sha256:b54ca3435931675d36d6a69b5154a0bd6ce2cbae1cfe14a20a095a8e24f8bae4` +Catalog revision: `sha256:d3a8a5a9d2100e496af3fd7adf389788f4a77508bf749a108183a2abf8f681e1` ## Automated evidence - The catalog validator accepts `default`, `light`, and `dark` with all ten Stack 1.0 node-kind fallbacks and explicit recovery through `default` / `kind-external` for missing non-core themes or icons. - Each theme uses ten distinct logical icon identifiers and at least four fallback shapes, so kinds remain distinguishable without color. +- Each theme exposes the same 12 provider-neutral explicit icon identifiers and subjects. Their 36 catalog references resolve to 12 shared, repository-authored SVG assets with identical metadata. - Text and danger colors meet a `4.5:1` contrast floor against the surface. Borders, accents, and connectors meet a `3:1` non-text contrast floor. - The deterministic `stack_sans` metrics cover explicit narrow glyphs, default advances, pinned wide Unicode ranges, CJK, and emoji without host font measurement. - Cargo and npm artifacts expose identical catalog, schema, assets, version, and content revision data. @@ -17,14 +18,15 @@ Catalog revision: `sha256:b54ca3435931675d36d6a69b5154a0bd6ce2cbae1cfe14a20a095a ## Visual evidence -The dependency-free review page was served from the repository root and checked in headless Chromium at `1440 x 1000` and `390 x 844` CSS pixels. +The dependency-free review page was served from the repository root and checked in isolated headless Chrome at `1440 x 1000` and `390 x 844` CSS pixels. -- All three theme sections, 30 node fallbacks, and 30 embedded SVG icons rendered. +- All three theme sections, 30 node fallbacks, 36 explicit icon cards, and 66 embedded SVG references rendered. +- The 12 explicit identifiers appeared once and in the same order in every theme; every SVG retained `currentColor` styling. - Every node kind retained a recognizable subject and a non-color shape cue in each theme. - The Japanese and emoji typography sample rendered within every theme card. -- The narrow viewport had no horizontal overflow after wrapping the content revision metadata. -- The browser console and page-error log were empty at both viewports. +- Both viewports had no horizontal overflow or clipped explicit icon card, and the heading order remained `h1` → `h2` → `h3`. +- Browser console warnings and errors, page errors, and failed network requests were empty at both viewports. ## License evidence -All runtime SVG assets and the deterministic metrics table are repository-authored Apache-2.0 work. No third-party runtime font, icon, or image is bundled. Development dependencies remain listed in [`THIRD_PARTY_LICENSES.md`](../THIRD_PARTY_LICENSES.md). +All 42 unique runtime SVG assets and the deterministic metrics table are repository-authored Apache-2.0 work. No third-party runtime font, icon, or image is bundled. Development dependencies remain listed in [`THIRD_PARTY_LICENSES.md`](../THIRD_PARTY_LICENSES.md). diff --git a/package-lock.json b/package-lock.json index 2d853b7..f30f64c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "stack-theme-workspace", - "version": "0.1.0", + "version": "0.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "stack-theme-workspace", - "version": "0.1.0", + "version": "0.2.0", "workspaces": [ "packages/theme" ], @@ -475,7 +475,7 @@ }, "packages/theme": { "name": "@stack-sh/theme", - "version": "0.1.0", + "version": "0.2.0", "license": "Apache-2.0" } } diff --git a/package.json b/package.json index ec5a9e1..df3cc53 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "stack-theme-workspace", "private": true, - "version": "0.1.0", + "version": "0.2.0", "workspaces": [ "packages/theme" ], diff --git a/packages/theme/README.md b/packages/theme/README.md index 09e23a5..d7f0dad 100644 --- a/packages/theme/README.md +++ b/packages/theme/README.md @@ -3,3 +3,5 @@ `@stack-sh/theme` exposes the typed Stack theme catalog and embeds the same generated catalog revision as the `stack-theme` Cargo crate. The package is browser-safe and performs no filesystem, network, clock, locale, or host-font access. See the repository's [`CONTRACT.md`](https://github.com/stack-sh/theme/blob/main/CONTRACT.md) for the catalog and compatibility contract. + +Catalog `0.2.0` includes 12 provider-neutral explicit icons shared by the `default`, `light`, and `dark` themes. Resolve an icon's catalog asset path through `iconSvg()`; do not treat a logical icon identifier as a filesystem path or URL. diff --git a/packages/theme/assets/core/api.svg b/packages/theme/assets/core/api.svg new file mode 100644 index 0000000..a9f9f4e --- /dev/null +++ b/packages/theme/assets/core/api.svg @@ -0,0 +1,3 @@ + diff --git a/packages/theme/assets/core/cloud.svg b/packages/theme/assets/core/cloud.svg new file mode 100644 index 0000000..8147310 --- /dev/null +++ b/packages/theme/assets/core/cloud.svg @@ -0,0 +1,3 @@ + diff --git a/packages/theme/assets/core/cluster.svg b/packages/theme/assets/core/cluster.svg new file mode 100644 index 0000000..9f7a21c --- /dev/null +++ b/packages/theme/assets/core/cluster.svg @@ -0,0 +1,6 @@ + diff --git a/packages/theme/assets/core/container.svg b/packages/theme/assets/core/container.svg new file mode 100644 index 0000000..c7934fd --- /dev/null +++ b/packages/theme/assets/core/container.svg @@ -0,0 +1,4 @@ + diff --git a/packages/theme/assets/core/desktop.svg b/packages/theme/assets/core/desktop.svg new file mode 100644 index 0000000..dd7e166 --- /dev/null +++ b/packages/theme/assets/core/desktop.svg @@ -0,0 +1,4 @@ + diff --git a/packages/theme/assets/core/identity.svg b/packages/theme/assets/core/identity.svg new file mode 100644 index 0000000..7de2068 --- /dev/null +++ b/packages/theme/assets/core/identity.svg @@ -0,0 +1,5 @@ + diff --git a/packages/theme/assets/core/mobile.svg b/packages/theme/assets/core/mobile.svg new file mode 100644 index 0000000..e1a14c4 --- /dev/null +++ b/packages/theme/assets/core/mobile.svg @@ -0,0 +1,4 @@ + diff --git a/packages/theme/assets/core/observability.svg b/packages/theme/assets/core/observability.svg new file mode 100644 index 0000000..00737bb --- /dev/null +++ b/packages/theme/assets/core/observability.svg @@ -0,0 +1,4 @@ + diff --git a/packages/theme/assets/core/scheduler.svg b/packages/theme/assets/core/scheduler.svg new file mode 100644 index 0000000..f9351e7 --- /dev/null +++ b/packages/theme/assets/core/scheduler.svg @@ -0,0 +1,6 @@ + diff --git a/packages/theme/assets/core/server.svg b/packages/theme/assets/core/server.svg new file mode 100644 index 0000000..c1d42c7 --- /dev/null +++ b/packages/theme/assets/core/server.svg @@ -0,0 +1,5 @@ + diff --git a/packages/theme/assets/core/web.svg b/packages/theme/assets/core/web.svg new file mode 100644 index 0000000..4c88880 --- /dev/null +++ b/packages/theme/assets/core/web.svg @@ -0,0 +1,4 @@ + diff --git a/packages/theme/assets/core/webhook.svg b/packages/theme/assets/core/webhook.svg new file mode 100644 index 0000000..1eb1770 --- /dev/null +++ b/packages/theme/assets/core/webhook.svg @@ -0,0 +1,4 @@ + diff --git a/packages/theme/catalog-metadata.json b/packages/theme/catalog-metadata.json index e34c6c1..bf1d8e1 100644 --- a/packages/theme/catalog-metadata.json +++ b/packages/theme/catalog-metadata.json @@ -1,4 +1,4 @@ { - "catalogVersion": "0.1.0", - "catalogRevision": "sha256:b54ca3435931675d36d6a69b5154a0bd6ce2cbae1cfe14a20a095a8e24f8bae4" + "catalogVersion": "0.2.0", + "catalogRevision": "sha256:d3a8a5a9d2100e496af3fd7adf389788f4a77508bf749a108183a2abf8f681e1" } diff --git a/packages/theme/catalog.generated.js b/packages/theme/catalog.generated.js index f825f9f..8d120cf 100644 --- a/packages/theme/catalog.generated.js +++ b/packages/theme/catalog.generated.js @@ -2,7 +2,7 @@ const catalogData = { "$schema": "https://raw.githubusercontent.com/stack-sh/theme/main/schemas/catalog.schema.json", "schemaVersion": "1.0", - "catalogVersion": "0.1.0", + "catalogVersion": "0.2.0", "reservedThemeIds": [], "fallbacks": { "missingThemeId": "default", @@ -502,23 +502,1068 @@ const catalogData = { } } } + }, + { + "id": "api", + "subject": "Application programming interface", + "asset": { + "path": "assets/core/api.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "web", + "subject": "Web application", + "asset": { + "path": "assets/core/web.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "mobile", + "subject": "Mobile application", + "asset": { + "path": "assets/core/mobile.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "desktop", + "subject": "Desktop application", + "asset": { + "path": "assets/core/desktop.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "server", + "subject": "Server host", + "asset": { + "path": "assets/core/server.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "container", + "subject": "Application container", + "asset": { + "path": "assets/core/container.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "cluster", + "subject": "Compute cluster", + "asset": { + "path": "assets/core/cluster.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "cloud", + "subject": "Cloud environment", + "asset": { + "path": "assets/core/cloud.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "scheduler", + "subject": "Scheduled execution", + "asset": { + "path": "assets/core/scheduler.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "webhook", + "subject": "Webhook endpoint", + "asset": { + "path": "assets/core/webhook.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "identity", + "subject": "Identity and access", + "asset": { + "path": "assets/core/identity.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "observability", + "subject": "Observability system", + "asset": { + "path": "assets/core/observability.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + } + ] + }, + { + "id": "light", + "name": "Stack Light", + "description": "Warm neutral surfaces for documents with light backgrounds.", + "palette": { + "canvas": "#FAF9F6", + "surface": "#FFFFFF", + "surfaceMuted": "#EEEAE3", + "text": "#1C1917", + "textMuted": "#57534E", + "border": "#78716C", + "accent": "#005DBB", + "danger": "#A52A1A", + "connector": "#57534E" + }, + "typography": { + "fontMetricsId": "stack_sans", + "nodeLabelSizeMilliPx": 14000, + "nodeDetailSizeMilliPx": 12000, + "groupLabelSizeMilliPx": 13000, + "edgeLabelSizeMilliPx": 11000, + "lineHeightPermille": 1400, + "labelWeight": 600, + "detailWeight": 400 + }, + "nodeKindFallbacks": { + "actor": { + "shape": "circle", + "fill": "surface", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-actor" + }, + "client": { + "shape": "rounded-rectangle", + "fill": "surface", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 8000, + "fallbackIconId": "kind-client" + }, + "service": { + "shape": "rounded-rectangle", + "fill": "surface", + "stroke": "accent", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 8000, + "fallbackIconId": "kind-service" + }, + "function": { + "shape": "hexagon", + "fill": "surfaceMuted", + "stroke": "accent", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-function" + }, + "worker": { + "shape": "capsule", + "fill": "surface", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 16000, + "fallbackIconId": "kind-worker" + }, + "database": { + "shape": "cylinder", + "fill": "surface", + "stroke": "accent", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-database" + }, + "cache": { + "shape": "cylinder", + "fill": "surfaceMuted", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-cache" + }, + "queue": { + "shape": "capsule", + "fill": "surfaceMuted", + "stroke": "accent", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 16000, + "fallbackIconId": "kind-queue" + }, + "storage": { + "shape": "rounded-rectangle", + "fill": "surface", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 4000, + "fallbackIconId": "kind-storage" + }, + "external": { + "shape": "hexagon", + "fill": "surfaceMuted", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-external" + } + }, + "connector": { + "stroke": "connector", + "text": "textMuted", + "labelBackground": "canvas", + "widthMilliPx": 1250, + "arrowSizeMilliPx": 6500 + }, + "icons": [ + { + "id": "kind-actor", + "subject": "Human actor", + "asset": { + "path": "assets/light/kind-actor.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-client", + "subject": "Client application or device", + "asset": { + "path": "assets/light/kind-client.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-service", + "subject": "Long-running service", + "asset": { + "path": "assets/light/kind-service.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-function", + "subject": "On-demand function", + "asset": { + "path": "assets/light/kind-function.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-worker", + "subject": "Background worker", + "asset": { + "path": "assets/light/kind-worker.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-database", + "subject": "Durable database", + "asset": { + "path": "assets/light/kind-database.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-cache", + "subject": "Disposable cache", + "asset": { + "path": "assets/light/kind-cache.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-queue", + "subject": "Asynchronous queue or stream", + "asset": { + "path": "assets/light/kind-queue.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-storage", + "subject": "Blob or file storage", + "asset": { + "path": "assets/light/kind-storage.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-external", + "subject": "External system", + "asset": { + "path": "assets/light/kind-external.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "api", + "subject": "Application programming interface", + "asset": { + "path": "assets/core/api.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "web", + "subject": "Web application", + "asset": { + "path": "assets/core/web.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "mobile", + "subject": "Mobile application", + "asset": { + "path": "assets/core/mobile.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "desktop", + "subject": "Desktop application", + "asset": { + "path": "assets/core/desktop.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "server", + "subject": "Server host", + "asset": { + "path": "assets/core/server.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "container", + "subject": "Application container", + "asset": { + "path": "assets/core/container.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "cluster", + "subject": "Compute cluster", + "asset": { + "path": "assets/core/cluster.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "cloud", + "subject": "Cloud environment", + "asset": { + "path": "assets/core/cloud.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "scheduler", + "subject": "Scheduled execution", + "asset": { + "path": "assets/core/scheduler.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "webhook", + "subject": "Webhook endpoint", + "asset": { + "path": "assets/core/webhook.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "identity", + "subject": "Identity and access", + "asset": { + "path": "assets/core/identity.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "observability", + "subject": "Observability system", + "asset": { + "path": "assets/core/observability.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } } ] }, { - "id": "light", - "name": "Stack Light", - "description": "Warm neutral surfaces for documents with light backgrounds.", + "id": "dark", + "name": "Stack Dark", + "description": "High-contrast cool surfaces for dark canvases.", "palette": { - "canvas": "#FAF9F6", - "surface": "#FFFFFF", - "surfaceMuted": "#EEEAE3", - "text": "#1C1917", - "textMuted": "#57534E", - "border": "#78716C", - "accent": "#005DBB", - "danger": "#A52A1A", - "connector": "#57534E" + "canvas": "#0B1020", + "surface": "#141B2D", + "surfaceMuted": "#1E293B", + "text": "#F8FAFC", + "textMuted": "#CBD5E1", + "border": "#94A3B8", + "accent": "#69A7FF", + "danger": "#FF8A9A", + "connector": "#CBD5E1" }, "typography": { "fontMetricsId": "stack_sans", @@ -626,15 +1671,15 @@ const catalogData = { "stroke": "connector", "text": "textMuted", "labelBackground": "canvas", - "widthMilliPx": 1250, - "arrowSizeMilliPx": 6500 + "widthMilliPx": 1750, + "arrowSizeMilliPx": 7500 }, "icons": [ { "id": "kind-actor", "subject": "Human actor", "asset": { - "path": "assets/light/kind-actor.svg", + "path": "assets/dark/kind-actor.svg", "viewBox": [ 0, 0, @@ -642,7 +1687,7 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -661,7 +1706,7 @@ const catalogData = { "id": "kind-client", "subject": "Client application or device", "asset": { - "path": "assets/light/kind-client.svg", + "path": "assets/dark/kind-client.svg", "viewBox": [ 0, 0, @@ -669,7 +1714,7 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -688,7 +1733,7 @@ const catalogData = { "id": "kind-service", "subject": "Long-running service", "asset": { - "path": "assets/light/kind-service.svg", + "path": "assets/dark/kind-service.svg", "viewBox": [ 0, 0, @@ -696,7 +1741,7 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -715,7 +1760,7 @@ const catalogData = { "id": "kind-function", "subject": "On-demand function", "asset": { - "path": "assets/light/kind-function.svg", + "path": "assets/dark/kind-function.svg", "viewBox": [ 0, 0, @@ -723,7 +1768,7 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -742,7 +1787,7 @@ const catalogData = { "id": "kind-worker", "subject": "Background worker", "asset": { - "path": "assets/light/kind-worker.svg", + "path": "assets/dark/kind-worker.svg", "viewBox": [ 0, 0, @@ -750,7 +1795,7 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -769,7 +1814,7 @@ const catalogData = { "id": "kind-database", "subject": "Durable database", "asset": { - "path": "assets/light/kind-database.svg", + "path": "assets/dark/kind-database.svg", "viewBox": [ 0, 0, @@ -777,7 +1822,7 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -796,7 +1841,7 @@ const catalogData = { "id": "kind-cache", "subject": "Disposable cache", "asset": { - "path": "assets/light/kind-cache.svg", + "path": "assets/dark/kind-cache.svg", "viewBox": [ 0, 0, @@ -804,7 +1849,7 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -823,7 +1868,7 @@ const catalogData = { "id": "kind-queue", "subject": "Asynchronous queue or stream", "asset": { - "path": "assets/light/kind-queue.svg", + "path": "assets/dark/kind-queue.svg", "viewBox": [ 0, 0, @@ -831,7 +1876,7 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -850,7 +1895,7 @@ const catalogData = { "id": "kind-storage", "subject": "Blob or file storage", "asset": { - "path": "assets/light/kind-storage.svg", + "path": "assets/dark/kind-storage.svg", "viewBox": [ 0, 0, @@ -858,7 +1903,7 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -877,7 +1922,7 @@ const catalogData = { "id": "kind-external", "subject": "External system", "asset": { - "path": "assets/light/kind-external.svg", + "path": "assets/dark/kind-external.svg", "viewBox": [ 0, 0, @@ -885,7 +1930,7 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -899,139 +1944,66 @@ const catalogData = { } } } - } - ] - }, - { - "id": "dark", - "name": "Stack Dark", - "description": "High-contrast cool surfaces for dark canvases.", - "palette": { - "canvas": "#0B1020", - "surface": "#141B2D", - "surfaceMuted": "#1E293B", - "text": "#F8FAFC", - "textMuted": "#CBD5E1", - "border": "#94A3B8", - "accent": "#69A7FF", - "danger": "#FF8A9A", - "connector": "#CBD5E1" - }, - "typography": { - "fontMetricsId": "stack_sans", - "nodeLabelSizeMilliPx": 14000, - "nodeDetailSizeMilliPx": 12000, - "groupLabelSizeMilliPx": 13000, - "edgeLabelSizeMilliPx": 11000, - "lineHeightPermille": 1400, - "labelWeight": 600, - "detailWeight": 400 - }, - "nodeKindFallbacks": { - "actor": { - "shape": "circle", - "fill": "surface", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-actor" - }, - "client": { - "shape": "rounded-rectangle", - "fill": "surface", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 8000, - "fallbackIconId": "kind-client" - }, - "service": { - "shape": "rounded-rectangle", - "fill": "surface", - "stroke": "accent", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 8000, - "fallbackIconId": "kind-service" - }, - "function": { - "shape": "hexagon", - "fill": "surfaceMuted", - "stroke": "accent", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-function" - }, - "worker": { - "shape": "capsule", - "fill": "surface", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 16000, - "fallbackIconId": "kind-worker" - }, - "database": { - "shape": "cylinder", - "fill": "surface", - "stroke": "accent", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-database" - }, - "cache": { - "shape": "cylinder", - "fill": "surfaceMuted", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-cache" }, - "queue": { - "shape": "capsule", - "fill": "surfaceMuted", - "stroke": "accent", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 16000, - "fallbackIconId": "kind-queue" + { + "id": "api", + "subject": "Application programming interface", + "asset": { + "path": "assets/core/api.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } }, - "storage": { - "shape": "rounded-rectangle", - "fill": "surface", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 4000, - "fallbackIconId": "kind-storage" + { + "id": "web", + "subject": "Web application", + "asset": { + "path": "assets/core/web.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } }, - "external": { - "shape": "hexagon", - "fill": "surfaceMuted", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-external" - } - }, - "connector": { - "stroke": "connector", - "text": "textMuted", - "labelBackground": "canvas", - "widthMilliPx": 1750, - "arrowSizeMilliPx": 7500 - }, - "icons": [ { - "id": "kind-actor", - "subject": "Human actor", + "id": "mobile", + "subject": "Mobile application", "asset": { - "path": "assets/dark/kind-actor.svg", + "path": "assets/core/mobile.svg", "viewBox": [ 0, 0, @@ -1039,8 +2011,8 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1055,10 +2027,10 @@ const catalogData = { } }, { - "id": "kind-client", - "subject": "Client application or device", + "id": "desktop", + "subject": "Desktop application", "asset": { - "path": "assets/dark/kind-client.svg", + "path": "assets/core/desktop.svg", "viewBox": [ 0, 0, @@ -1066,8 +2038,8 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1082,10 +2054,10 @@ const catalogData = { } }, { - "id": "kind-service", - "subject": "Long-running service", + "id": "server", + "subject": "Server host", "asset": { - "path": "assets/dark/kind-service.svg", + "path": "assets/core/server.svg", "viewBox": [ 0, 0, @@ -1093,8 +2065,8 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1109,10 +2081,10 @@ const catalogData = { } }, { - "id": "kind-function", - "subject": "On-demand function", + "id": "container", + "subject": "Application container", "asset": { - "path": "assets/dark/kind-function.svg", + "path": "assets/core/container.svg", "viewBox": [ 0, 0, @@ -1120,8 +2092,8 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1136,10 +2108,10 @@ const catalogData = { } }, { - "id": "kind-worker", - "subject": "Background worker", + "id": "cluster", + "subject": "Compute cluster", "asset": { - "path": "assets/dark/kind-worker.svg", + "path": "assets/core/cluster.svg", "viewBox": [ 0, 0, @@ -1147,8 +2119,8 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1163,10 +2135,10 @@ const catalogData = { } }, { - "id": "kind-database", - "subject": "Durable database", + "id": "cloud", + "subject": "Cloud environment", "asset": { - "path": "assets/dark/kind-database.svg", + "path": "assets/core/cloud.svg", "viewBox": [ 0, 0, @@ -1174,8 +2146,8 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1190,10 +2162,10 @@ const catalogData = { } }, { - "id": "kind-cache", - "subject": "Disposable cache", + "id": "scheduler", + "subject": "Scheduled execution", "asset": { - "path": "assets/dark/kind-cache.svg", + "path": "assets/core/scheduler.svg", "viewBox": [ 0, 0, @@ -1201,8 +2173,8 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1217,10 +2189,10 @@ const catalogData = { } }, { - "id": "kind-queue", - "subject": "Asynchronous queue or stream", + "id": "webhook", + "subject": "Webhook endpoint", "asset": { - "path": "assets/dark/kind-queue.svg", + "path": "assets/core/webhook.svg", "viewBox": [ 0, 0, @@ -1228,8 +2200,8 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1244,10 +2216,10 @@ const catalogData = { } }, { - "id": "kind-storage", - "subject": "Blob or file storage", + "id": "identity", + "subject": "Identity and access", "asset": { - "path": "assets/dark/kind-storage.svg", + "path": "assets/core/identity.svg", "viewBox": [ 0, 0, @@ -1255,8 +2227,8 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1271,10 +2243,10 @@ const catalogData = { } }, { - "id": "kind-external", - "subject": "External system", + "id": "observability", + "subject": "Observability system", "asset": { - "path": "assets/dark/kind-external.svg", + "path": "assets/core/observability.svg", "viewBox": [ 0, 0, @@ -1282,8 +2254,8 @@ const catalogData = { 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1302,6 +2274,18 @@ const catalogData = { ] }; const iconAssetsData = { + "assets/core/api.svg": "\n", + "assets/core/cloud.svg": "\n", + "assets/core/cluster.svg": "\n", + "assets/core/container.svg": "\n", + "assets/core/desktop.svg": "\n", + "assets/core/identity.svg": "\n", + "assets/core/mobile.svg": "\n", + "assets/core/observability.svg": "\n", + "assets/core/scheduler.svg": "\n", + "assets/core/server.svg": "\n", + "assets/core/web.svg": "\n", + "assets/core/webhook.svg": "\n", "assets/dark/kind-actor.svg": "\n", "assets/dark/kind-cache.svg": "\n", "assets/dark/kind-client.svg": "\n", @@ -1345,8 +2329,8 @@ function deepFreeze(value) { } export const catalog = deepFreeze(catalogData); -export const catalogVersion = "0.1.0"; -export const catalogRevision = "sha256:b54ca3435931675d36d6a69b5154a0bd6ce2cbae1cfe14a20a095a8e24f8bae4"; +export const catalogVersion = "0.2.0"; +export const catalogRevision = "sha256:d3a8a5a9d2100e496af3fd7adf389788f4a77508bf749a108183a2abf8f681e1"; export const iconAssets = deepFreeze(iconAssetsData); export function iconSvg(assetPath) { return iconAssets[assetPath]; diff --git a/packages/theme/catalog.json b/packages/theme/catalog.json index 778982b..055c96d 100644 --- a/packages/theme/catalog.json +++ b/packages/theme/catalog.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/stack-sh/theme/main/schemas/catalog.schema.json", "schemaVersion": "1.0", - "catalogVersion": "0.1.0", + "catalogVersion": "0.2.0", "reservedThemeIds": [], "fallbacks": { "missingThemeId": "default", @@ -501,23 +501,1068 @@ } } } + }, + { + "id": "api", + "subject": "Application programming interface", + "asset": { + "path": "assets/core/api.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "web", + "subject": "Web application", + "asset": { + "path": "assets/core/web.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "mobile", + "subject": "Mobile application", + "asset": { + "path": "assets/core/mobile.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "desktop", + "subject": "Desktop application", + "asset": { + "path": "assets/core/desktop.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "server", + "subject": "Server host", + "asset": { + "path": "assets/core/server.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "container", + "subject": "Application container", + "asset": { + "path": "assets/core/container.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "cluster", + "subject": "Compute cluster", + "asset": { + "path": "assets/core/cluster.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "cloud", + "subject": "Cloud environment", + "asset": { + "path": "assets/core/cloud.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "scheduler", + "subject": "Scheduled execution", + "asset": { + "path": "assets/core/scheduler.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "webhook", + "subject": "Webhook endpoint", + "asset": { + "path": "assets/core/webhook.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "identity", + "subject": "Identity and access", + "asset": { + "path": "assets/core/identity.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "observability", + "subject": "Observability system", + "asset": { + "path": "assets/core/observability.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + } + ] + }, + { + "id": "light", + "name": "Stack Light", + "description": "Warm neutral surfaces for documents with light backgrounds.", + "palette": { + "canvas": "#FAF9F6", + "surface": "#FFFFFF", + "surfaceMuted": "#EEEAE3", + "text": "#1C1917", + "textMuted": "#57534E", + "border": "#78716C", + "accent": "#005DBB", + "danger": "#A52A1A", + "connector": "#57534E" + }, + "typography": { + "fontMetricsId": "stack_sans", + "nodeLabelSizeMilliPx": 14000, + "nodeDetailSizeMilliPx": 12000, + "groupLabelSizeMilliPx": 13000, + "edgeLabelSizeMilliPx": 11000, + "lineHeightPermille": 1400, + "labelWeight": 600, + "detailWeight": 400 + }, + "nodeKindFallbacks": { + "actor": { + "shape": "circle", + "fill": "surface", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-actor" + }, + "client": { + "shape": "rounded-rectangle", + "fill": "surface", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 8000, + "fallbackIconId": "kind-client" + }, + "service": { + "shape": "rounded-rectangle", + "fill": "surface", + "stroke": "accent", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 8000, + "fallbackIconId": "kind-service" + }, + "function": { + "shape": "hexagon", + "fill": "surfaceMuted", + "stroke": "accent", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-function" + }, + "worker": { + "shape": "capsule", + "fill": "surface", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 16000, + "fallbackIconId": "kind-worker" + }, + "database": { + "shape": "cylinder", + "fill": "surface", + "stroke": "accent", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-database" + }, + "cache": { + "shape": "cylinder", + "fill": "surfaceMuted", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-cache" + }, + "queue": { + "shape": "capsule", + "fill": "surfaceMuted", + "stroke": "accent", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 16000, + "fallbackIconId": "kind-queue" + }, + "storage": { + "shape": "rounded-rectangle", + "fill": "surface", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 4000, + "fallbackIconId": "kind-storage" + }, + "external": { + "shape": "hexagon", + "fill": "surfaceMuted", + "stroke": "border", + "text": "text", + "accent": "accent", + "cornerRadiusMilliPx": 0, + "fallbackIconId": "kind-external" + } + }, + "connector": { + "stroke": "connector", + "text": "textMuted", + "labelBackground": "canvas", + "widthMilliPx": 1250, + "arrowSizeMilliPx": 6500 + }, + "icons": [ + { + "id": "kind-actor", + "subject": "Human actor", + "asset": { + "path": "assets/light/kind-actor.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-client", + "subject": "Client application or device", + "asset": { + "path": "assets/light/kind-client.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-service", + "subject": "Long-running service", + "asset": { + "path": "assets/light/kind-service.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-function", + "subject": "On-demand function", + "asset": { + "path": "assets/light/kind-function.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-worker", + "subject": "Background worker", + "asset": { + "path": "assets/light/kind-worker.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-database", + "subject": "Durable database", + "asset": { + "path": "assets/light/kind-database.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-cache", + "subject": "Disposable cache", + "asset": { + "path": "assets/light/kind-cache.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-queue", + "subject": "Asynchronous queue or stream", + "asset": { + "path": "assets/light/kind-queue.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-storage", + "subject": "Blob or file storage", + "asset": { + "path": "assets/light/kind-storage.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "kind-external", + "subject": "External system", + "asset": { + "path": "assets/light/kind-external.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceRevision": "core-fallback-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "api", + "subject": "Application programming interface", + "asset": { + "path": "assets/core/api.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "web", + "subject": "Web application", + "asset": { + "path": "assets/core/web.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "mobile", + "subject": "Mobile application", + "asset": { + "path": "assets/core/mobile.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "desktop", + "subject": "Desktop application", + "asset": { + "path": "assets/core/desktop.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "server", + "subject": "Server host", + "asset": { + "path": "assets/core/server.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "container", + "subject": "Application container", + "asset": { + "path": "assets/core/container.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "cluster", + "subject": "Compute cluster", + "asset": { + "path": "assets/core/cluster.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "cloud", + "subject": "Cloud environment", + "asset": { + "path": "assets/core/cloud.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "scheduler", + "subject": "Scheduled execution", + "asset": { + "path": "assets/core/scheduler.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "webhook", + "subject": "Webhook endpoint", + "asset": { + "path": "assets/core/webhook.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "identity", + "subject": "Identity and access", + "asset": { + "path": "assets/core/identity.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } + }, + { + "id": "observability", + "subject": "Observability system", + "asset": { + "path": "assets/core/observability.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } } ] }, { - "id": "light", - "name": "Stack Light", - "description": "Warm neutral surfaces for documents with light backgrounds.", + "id": "dark", + "name": "Stack Dark", + "description": "High-contrast cool surfaces for dark canvases.", "palette": { - "canvas": "#FAF9F6", - "surface": "#FFFFFF", - "surfaceMuted": "#EEEAE3", - "text": "#1C1917", - "textMuted": "#57534E", - "border": "#78716C", - "accent": "#005DBB", - "danger": "#A52A1A", - "connector": "#57534E" + "canvas": "#0B1020", + "surface": "#141B2D", + "surfaceMuted": "#1E293B", + "text": "#F8FAFC", + "textMuted": "#CBD5E1", + "border": "#94A3B8", + "accent": "#69A7FF", + "danger": "#FF8A9A", + "connector": "#CBD5E1" }, "typography": { "fontMetricsId": "stack_sans", @@ -625,15 +1670,15 @@ "stroke": "connector", "text": "textMuted", "labelBackground": "canvas", - "widthMilliPx": 1250, - "arrowSizeMilliPx": 6500 + "widthMilliPx": 1750, + "arrowSizeMilliPx": 7500 }, "icons": [ { "id": "kind-actor", "subject": "Human actor", "asset": { - "path": "assets/light/kind-actor.svg", + "path": "assets/dark/kind-actor.svg", "viewBox": [ 0, 0, @@ -641,7 +1686,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -660,7 +1705,7 @@ "id": "kind-client", "subject": "Client application or device", "asset": { - "path": "assets/light/kind-client.svg", + "path": "assets/dark/kind-client.svg", "viewBox": [ 0, 0, @@ -668,7 +1713,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -687,7 +1732,7 @@ "id": "kind-service", "subject": "Long-running service", "asset": { - "path": "assets/light/kind-service.svg", + "path": "assets/dark/kind-service.svg", "viewBox": [ 0, 0, @@ -695,7 +1740,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -714,7 +1759,7 @@ "id": "kind-function", "subject": "On-demand function", "asset": { - "path": "assets/light/kind-function.svg", + "path": "assets/dark/kind-function.svg", "viewBox": [ 0, 0, @@ -722,7 +1767,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -741,7 +1786,7 @@ "id": "kind-worker", "subject": "Background worker", "asset": { - "path": "assets/light/kind-worker.svg", + "path": "assets/dark/kind-worker.svg", "viewBox": [ 0, 0, @@ -749,7 +1794,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -768,7 +1813,7 @@ "id": "kind-database", "subject": "Durable database", "asset": { - "path": "assets/light/kind-database.svg", + "path": "assets/dark/kind-database.svg", "viewBox": [ 0, 0, @@ -776,7 +1821,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -795,7 +1840,7 @@ "id": "kind-cache", "subject": "Disposable cache", "asset": { - "path": "assets/light/kind-cache.svg", + "path": "assets/dark/kind-cache.svg", "viewBox": [ 0, 0, @@ -803,7 +1848,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -822,7 +1867,7 @@ "id": "kind-queue", "subject": "Asynchronous queue or stream", "asset": { - "path": "assets/light/kind-queue.svg", + "path": "assets/dark/kind-queue.svg", "viewBox": [ 0, 0, @@ -830,7 +1875,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -849,7 +1894,7 @@ "id": "kind-storage", "subject": "Blob or file storage", "asset": { - "path": "assets/light/kind-storage.svg", + "path": "assets/dark/kind-storage.svg", "viewBox": [ 0, 0, @@ -857,7 +1902,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -876,7 +1921,7 @@ "id": "kind-external", "subject": "External system", "asset": { - "path": "assets/light/kind-external.svg", + "path": "assets/dark/kind-external.svg", "viewBox": [ 0, 0, @@ -884,7 +1929,7 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/light", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", "sourceRevision": "core-fallback-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", @@ -898,139 +1943,66 @@ } } } - } - ] - }, - { - "id": "dark", - "name": "Stack Dark", - "description": "High-contrast cool surfaces for dark canvases.", - "palette": { - "canvas": "#0B1020", - "surface": "#141B2D", - "surfaceMuted": "#1E293B", - "text": "#F8FAFC", - "textMuted": "#CBD5E1", - "border": "#94A3B8", - "accent": "#69A7FF", - "danger": "#FF8A9A", - "connector": "#CBD5E1" - }, - "typography": { - "fontMetricsId": "stack_sans", - "nodeLabelSizeMilliPx": 14000, - "nodeDetailSizeMilliPx": 12000, - "groupLabelSizeMilliPx": 13000, - "edgeLabelSizeMilliPx": 11000, - "lineHeightPermille": 1400, - "labelWeight": 600, - "detailWeight": 400 - }, - "nodeKindFallbacks": { - "actor": { - "shape": "circle", - "fill": "surface", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-actor" - }, - "client": { - "shape": "rounded-rectangle", - "fill": "surface", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 8000, - "fallbackIconId": "kind-client" - }, - "service": { - "shape": "rounded-rectangle", - "fill": "surface", - "stroke": "accent", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 8000, - "fallbackIconId": "kind-service" - }, - "function": { - "shape": "hexagon", - "fill": "surfaceMuted", - "stroke": "accent", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-function" - }, - "worker": { - "shape": "capsule", - "fill": "surface", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 16000, - "fallbackIconId": "kind-worker" - }, - "database": { - "shape": "cylinder", - "fill": "surface", - "stroke": "accent", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-database" - }, - "cache": { - "shape": "cylinder", - "fill": "surfaceMuted", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-cache" }, - "queue": { - "shape": "capsule", - "fill": "surfaceMuted", - "stroke": "accent", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 16000, - "fallbackIconId": "kind-queue" + { + "id": "api", + "subject": "Application programming interface", + "asset": { + "path": "assets/core/api.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } }, - "storage": { - "shape": "rounded-rectangle", - "fill": "surface", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 4000, - "fallbackIconId": "kind-storage" + { + "id": "web", + "subject": "Web application", + "asset": { + "path": "assets/core/web.svg", + "viewBox": [ + 0, + 0, + 24, + 24 + ], + "provenance": { + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", + "copyright": "Stack contributors", + "licenseSpdx": "Apache-2.0", + "licenseFile": "LICENSE", + "modified": false, + "redistribution": { + "cargo": true, + "npm": true, + "wasm": true, + "commercialApplications": true + } + } + } }, - "external": { - "shape": "hexagon", - "fill": "surfaceMuted", - "stroke": "border", - "text": "text", - "accent": "accent", - "cornerRadiusMilliPx": 0, - "fallbackIconId": "kind-external" - } - }, - "connector": { - "stroke": "connector", - "text": "textMuted", - "labelBackground": "canvas", - "widthMilliPx": 1750, - "arrowSizeMilliPx": 7500 - }, - "icons": [ { - "id": "kind-actor", - "subject": "Human actor", + "id": "mobile", + "subject": "Mobile application", "asset": { - "path": "assets/dark/kind-actor.svg", + "path": "assets/core/mobile.svg", "viewBox": [ 0, 0, @@ -1038,8 +2010,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1054,10 +2026,10 @@ } }, { - "id": "kind-client", - "subject": "Client application or device", + "id": "desktop", + "subject": "Desktop application", "asset": { - "path": "assets/dark/kind-client.svg", + "path": "assets/core/desktop.svg", "viewBox": [ 0, 0, @@ -1065,8 +2037,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1081,10 +2053,10 @@ } }, { - "id": "kind-service", - "subject": "Long-running service", + "id": "server", + "subject": "Server host", "asset": { - "path": "assets/dark/kind-service.svg", + "path": "assets/core/server.svg", "viewBox": [ 0, 0, @@ -1092,8 +2064,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1108,10 +2080,10 @@ } }, { - "id": "kind-function", - "subject": "On-demand function", + "id": "container", + "subject": "Application container", "asset": { - "path": "assets/dark/kind-function.svg", + "path": "assets/core/container.svg", "viewBox": [ 0, 0, @@ -1119,8 +2091,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1135,10 +2107,10 @@ } }, { - "id": "kind-worker", - "subject": "Background worker", + "id": "cluster", + "subject": "Compute cluster", "asset": { - "path": "assets/dark/kind-worker.svg", + "path": "assets/core/cluster.svg", "viewBox": [ 0, 0, @@ -1146,8 +2118,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1162,10 +2134,10 @@ } }, { - "id": "kind-database", - "subject": "Durable database", + "id": "cloud", + "subject": "Cloud environment", "asset": { - "path": "assets/dark/kind-database.svg", + "path": "assets/core/cloud.svg", "viewBox": [ 0, 0, @@ -1173,8 +2145,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1189,10 +2161,10 @@ } }, { - "id": "kind-cache", - "subject": "Disposable cache", + "id": "scheduler", + "subject": "Scheduled execution", "asset": { - "path": "assets/dark/kind-cache.svg", + "path": "assets/core/scheduler.svg", "viewBox": [ 0, 0, @@ -1200,8 +2172,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1216,10 +2188,10 @@ } }, { - "id": "kind-queue", - "subject": "Asynchronous queue or stream", + "id": "webhook", + "subject": "Webhook endpoint", "asset": { - "path": "assets/dark/kind-queue.svg", + "path": "assets/core/webhook.svg", "viewBox": [ 0, 0, @@ -1227,8 +2199,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1243,10 +2215,10 @@ } }, { - "id": "kind-storage", - "subject": "Blob or file storage", + "id": "identity", + "subject": "Identity and access", "asset": { - "path": "assets/dark/kind-storage.svg", + "path": "assets/core/identity.svg", "viewBox": [ 0, 0, @@ -1254,8 +2226,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", @@ -1270,10 +2242,10 @@ } }, { - "id": "kind-external", - "subject": "External system", + "id": "observability", + "subject": "Observability system", "asset": { - "path": "assets/dark/kind-external.svg", + "path": "assets/core/observability.svg", "viewBox": [ 0, 0, @@ -1281,8 +2253,8 @@ 24 ], "provenance": { - "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/dark", - "sourceRevision": "core-fallback-v1", + "sourceUrl": "https://github.com/stack-sh/theme/tree/main/assets/core", + "sourceRevision": "core-icons-v1", "copyright": "Stack contributors", "licenseSpdx": "Apache-2.0", "licenseFile": "LICENSE", diff --git a/packages/theme/package.json b/packages/theme/package.json index f7223f8..5eb4e50 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -1,6 +1,6 @@ { "name": "@stack-sh/theme", - "version": "0.1.0", + "version": "0.2.0", "description": "Canonical Stack theme catalog contract and embedded catalog data", "type": "module", "license": "Apache-2.0", diff --git a/review/index.html b/review/index.html index 9c73bb5..e1ee8e4 100644 --- a/review/index.html +++ b/review/index.html @@ -3,6 +3,7 @@
+