From 5fafe7311b93f50141ed52c02d8979cd0c6e8288 Mon Sep 17 00:00:00 2001 From: Shewart Date: Tue, 6 Oct 2026 15:41:31 +0200 Subject: [PATCH 1/3] chore: use the ShellDocs mark as the package icon and preview favicon --- Directory.Build.props | 2 ++ README.md | 2 ++ assets/icon.png | Bin 0 -> 8677 bytes examples/ShellDocs.Preview/Components/App.razor | 3 +++ .../wwwroot/apple-touch-icon.png | Bin 0 -> 5003 bytes examples/ShellDocs.Preview/wwwroot/favicon.png | Bin 0 -> 561 bytes examples/ShellDocs.Preview/wwwroot/favicon.svg | 1 + 7 files changed, 8 insertions(+) create mode 100644 assets/icon.png create mode 100644 examples/ShellDocs.Preview/wwwroot/apple-touch-icon.png create mode 100644 examples/ShellDocs.Preview/wwwroot/favicon.png create mode 100644 examples/ShellDocs.Preview/wwwroot/favicon.svg diff --git a/Directory.Build.props b/Directory.Build.props index 5c9c478..89de84f 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -27,6 +27,7 @@ git blazor;docs;documentation;framework;shellui;shadcn;fumadocs;tailwind README.md + icon.png true snupkg true @@ -39,6 +40,7 @@ + diff --git a/README.md b/README.md index ddc4861..bccd3be 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ + + # ShellDocs **The docs framework for .NET.** Markdown-driven documentation sites with live Blazor component previews, versioned docs, `Cmd+K` search, and a static export. Styled with shadcn-shaped design tokens and composable with any Blazor component library. The fumadocs / shadcn pattern, ported to .NET. diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..dcbf55bde05b5c06dbf458aa3bf97d24f30589e1 GIT binary patch literal 8677 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 ShellDocs — the docs framework for .NET + + + diff --git a/examples/ShellDocs.Preview/wwwroot/apple-touch-icon.png b/examples/ShellDocs.Preview/wwwroot/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5c77fc73a8c2e8d12394adadc13abadfb9108085 GIT binary patch literal 5003 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 From dfdf0808715b70aa8fd22831da489058960ec879 Mon Sep 17 00:00:00 2001 From: Shewart Date: Tue, 6 Oct 2026 16:00:24 +0200 Subject: [PATCH 2/3] docs: show the dark ShellDocs mark in the README on dark themes --- README.md | 5 ++++- assets/icon-dark.png | Bin 0 -> 8673 bytes 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 assets/icon-dark.png diff --git a/README.md b/README.md index bccd3be..f11a88d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ - + + + + # ShellDocs diff --git a/assets/icon-dark.png b/assets/icon-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..110b2e4ef5a02363f4065e83dfe5d40828d23d40 GIT binary patch literal 8673 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 literal 0 HcmV?d00001 From 5e4f8f656dba0fd382ee1c226f18bbdb4d8501d7 Mon Sep 17 00:00:00 2001 From: Shewart Date: Wed, 7 Oct 2026 12:12:08 +0200 Subject: [PATCH 3/3] docs: Markdown logo in the README so it renders on NuGet too All six packages ship this README, and nuget.org renders Markdown only, so the block would show as raw HTML there. It is now a Markdown image of assets/readme-logo.svg: the brand tile at 64 px, ink on light and paper on dark through prefers-color-scheme, drawn with md-files brand/generate.py. assets/icon-dark.png is no longer used. --- README.md | 5 +---- assets/icon-dark.png | Bin 8673 -> 0 bytes assets/readme-logo.svg | 1 + 3 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 assets/icon-dark.png create mode 100644 assets/readme-logo.svg diff --git a/README.md b/README.md index f11a88d..78dc291 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,4 @@ - - - - +![ShellDocs](https://raw.githubusercontent.com/shellui-dev/shelldocs/main/assets/readme-logo.svg) # ShellDocs diff --git a/assets/icon-dark.png b/assets/icon-dark.png deleted file mode 100644 index 110b2e4ef5a02363f4065e83dfe5d40828d23d40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8673 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 diff --git a/assets/readme-logo.svg b/assets/readme-logo.svg new file mode 100644 index 0000000..f100849 --- /dev/null +++ b/assets/readme-logo.svg @@ -0,0 +1 @@ +