From 0e01b43ee0440adeede4bcb66699af13332235e4 Mon Sep 17 00:00:00 2001 From: Shephard Tseisi Date: Fri, 24 Jul 2026 19:14:22 +0200 Subject: [PATCH 1/4] feat: add site-level CSS overrides and brand logos for ShellUI.Docs Introduced a new CSS file for ShellUI.Docs to apply site-level styling overrides, ensuring consistent typography and branding. Added light and dark variants of the ShellUI logo for improved visual integration across the documentation site. This update enhances the overall aesthetic and user experience. --- .../wwwroot/images/Shellui-dark.png | Bin 0 -> 3661 bytes .../wwwroot/images/Shellui-light.png | Bin 0 -> 4202 bytes src/ShellUI.Docs/wwwroot/site.css | 38 ++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 src/ShellUI.Docs/wwwroot/images/Shellui-dark.png create mode 100644 src/ShellUI.Docs/wwwroot/images/Shellui-light.png create mode 100644 src/ShellUI.Docs/wwwroot/site.css diff --git a/src/ShellUI.Docs/wwwroot/images/Shellui-dark.png b/src/ShellUI.Docs/wwwroot/images/Shellui-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..eaa3f2a1addb1f8dd17ae41cafa9bd43933b07a4 GIT binary patch literal 3661 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 JrG|Cre*py7-zES6 literal 0 HcmV?d00001 diff --git a/src/ShellUI.Docs/wwwroot/site.css b/src/ShellUI.Docs/wwwroot/site.css new file mode 100644 index 0000000..fee3f5a --- /dev/null +++ b/src/ShellUI.Docs/wwwroot/site.css @@ -0,0 +1,38 @@ +/* Site-level overrides for ShellUI.Docs. + Loads LAST in the App.razor cascade so anything here wins over + ShellDocs and ShellUI theme files. */ + +/* ShellUI's shellui-theme.css declares `--font-sans: Geist, sans-serif;` but + never ships or imports the Geist webfont, so the browser falls through to + `sans-serif` (system default). ShellDocs' tokens.css already loads Inter, + so we restore its declaration here — after ShellUI's cascade — so the whole + docs site inherits the same Inter aesthetic as shelldocs.dev. Same for the + mono stack. */ +:root { + --font-sans: 'Inter var', 'Inter', ui-sans-serif, system-ui, -apple-system, + BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --font-mono: ui-monospace, 'JetBrains Mono', 'SF Mono', Menlo, Consolas, monospace; +} + +body { + font-family: var(--font-sans); +} + +/* Brand logo — ShellDocs' DocsSidebarHeader and DocsHeader render an empty + .docs-*-logo-dot placeholder (a solid rounded square). Swap it for our + actual logo via background-image. `!important` is required because the + original declarations live in Blazor scoped CSS (`.foo[b-xyz]`) whose + attribute-selector specificity beats a plain class selector loaded later. + Light/dark variants toggle off the `:root.dark` class the theme script + stamps in App.razor. */ +.docs-sidebar-logo-dot, +.docs-header-logo-dot { + width: 1.375rem !important; + height: 1.375rem !important; + border-radius: 0 !important; + background: url('/images/Shellui-light.png') center/contain no-repeat !important; +} +:root.dark .docs-sidebar-logo-dot, +:root.dark .docs-header-logo-dot { + background-image: url('/images/Shellui-dark.png') !important; +} From d22f0fc868535b03726f71effae0f3a2c45c1b20 Mon Sep 17 00:00:00 2001 From: Shephard Tseisi Date: Fri, 24 Jul 2026 19:15:21 +0200 Subject: [PATCH 2/4] feat: add foundational components for ShellUI.Docs Introduced several key components for the ShellUI.Docs project, including the main application layout, routing, and documentation pages. This update establishes the structure for the documentation site, featuring a home page, a dynamic docs page with navigation, and a routing mechanism to handle different documentation paths. Additionally, a new imports file centralizes common using directives for better organization and maintainability. --- src/ShellUI.Docs/Components/App.razor | 49 +++++++++++++++ .../Components/Pages/DocsPage.razor | 62 +++++++++++++++++++ src/ShellUI.Docs/Components/Pages/Home.razor | 46 ++++++++++++++ src/ShellUI.Docs/Components/Routes.razor | 9 +++ src/ShellUI.Docs/Components/_Imports.razor | 15 +++++ 5 files changed, 181 insertions(+) create mode 100644 src/ShellUI.Docs/Components/App.razor create mode 100644 src/ShellUI.Docs/Components/Pages/DocsPage.razor create mode 100644 src/ShellUI.Docs/Components/Pages/Home.razor create mode 100644 src/ShellUI.Docs/Components/Routes.razor create mode 100644 src/ShellUI.Docs/Components/_Imports.razor diff --git a/src/ShellUI.Docs/Components/App.razor b/src/ShellUI.Docs/Components/App.razor new file mode 100644 index 0000000..6d30b55 --- /dev/null +++ b/src/ShellUI.Docs/Components/App.razor @@ -0,0 +1,49 @@ +@using ShellUI.Docs.Components + + + + + + ShellUI — shadcn-flavoured Blazor components + + + @* Cascade order matters — later files override earlier ones: + 1. ShellDocs.Tokens — neutral token baseline (--foreground, --card, …) + 2. ShellDocs theme — docs-chrome-specific extensions + 3. ShellUI theme — brand palette; overrides tokens where they collide + 4. ShellUI utilities — compiled Tailwind classes used by ShellUI components + 5. Site styles — this project's own overrides *@ + + + + + + + + + + + + + + + + + + diff --git a/src/ShellUI.Docs/Components/Pages/DocsPage.razor b/src/ShellUI.Docs/Components/Pages/DocsPage.razor new file mode 100644 index 0000000..41e5724 --- /dev/null +++ b/src/ShellUI.Docs/Components/Pages/DocsPage.razor @@ -0,0 +1,62 @@ +@page "/docs/{*Path:nonfile}" +@layout DocsLayout +@using Microsoft.AspNetCore.Components.Sections +@inject NavigationGraph Graph +@inject MarkdownRenderer Renderer + +@_title + +@if (_document is not null) +{ + + + + + + +} +else +{ +
+

Page not found

+

The page @Path doesn't exist yet.

+

Back to introduction

+
+} + + + +@code { + [Parameter] public string? Path { get; set; } + + private RenderedDocument? _document; + private string _title = ""; + private NavigationNode? _prev; + private NavigationNode? _next; + + protected override void OnParametersSet() + { + var url = "/docs" + (string.IsNullOrEmpty(Path) ? "" : "/" + Path); + var node = Graph.ResolveByUrl(url); + if (node?.Path is not null && System.IO.File.Exists(node.Path)) + { + _document = Renderer.RenderFile(node.Path); + _title = node.Title + " — ShellUI"; + (_prev, _next) = Graph.GetPrevNext(node); + } + else + { + _document = null; + _title = "Not found — ShellUI"; + _prev = null; + _next = null; + } + } +} diff --git a/src/ShellUI.Docs/Components/Pages/Home.razor b/src/ShellUI.Docs/Components/Pages/Home.razor new file mode 100644 index 0000000..da52480 --- /dev/null +++ b/src/ShellUI.Docs/Components/Pages/Home.razor @@ -0,0 +1,46 @@ +@page "/" +@layout HomeLayout + +ShellUI — shadcn-flavoured Blazor components + +@* Placeholder landing until the content branch adds a real hero. Keeps the + scaffold branch focused on wiring; a proper home page ships in + content/intro-and-3-proof-components. *@ +
+

ShellUI

+

shadcn-flavoured Blazor components — the CLI-first component library.

+

+ Read the docs +

+
+ + diff --git a/src/ShellUI.Docs/Components/Routes.razor b/src/ShellUI.Docs/Components/Routes.razor new file mode 100644 index 0000000..efd2153 --- /dev/null +++ b/src/ShellUI.Docs/Components/Routes.razor @@ -0,0 +1,9 @@ + + + + + + Not found — ShellUI +

Page not found.

+
+
diff --git a/src/ShellUI.Docs/Components/_Imports.razor b/src/ShellUI.Docs/Components/_Imports.razor new file mode 100644 index 0000000..1fae973 --- /dev/null +++ b/src/ShellUI.Docs/Components/_Imports.razor @@ -0,0 +1,15 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Microsoft.AspNetCore.Components +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using ShellDocs.Components +@using ShellDocs.Components.Chrome +@using ShellDocs.Components.Content +@using ShellDocs.Components.Layouts +@using ShellDocs.Core +@using ShellDocs.Markdown +@using ShellUI.Docs.Components From b4562f2a9ab558d808c48ba5198090c356571d06 Mon Sep 17 00:00:00 2001 From: Shephard Tseisi Date: Fri, 24 Jul 2026 19:15:52 +0200 Subject: [PATCH 3/4] feat: add installation and introduction documentation for ShellUI Created new documentation pages for "Installation" and "Introduction" to guide users in setting up ShellUI in Blazor projects. The installation page outlines the setup process, while the introduction page provides an overview of ShellUI's features and benefits. Additionally, updated the meta.json file to include these new pages in the documentation structure. --- src/ShellUI.Docs/content/docs/installation.md | 17 +++++++++++++ src/ShellUI.Docs/content/docs/introduction.md | 25 +++++++++++++++++++ src/ShellUI.Docs/content/docs/meta.json | 4 +++ 3 files changed, 46 insertions(+) create mode 100644 src/ShellUI.Docs/content/docs/installation.md create mode 100644 src/ShellUI.Docs/content/docs/introduction.md create mode 100644 src/ShellUI.Docs/content/docs/meta.json diff --git a/src/ShellUI.Docs/content/docs/installation.md b/src/ShellUI.Docs/content/docs/installation.md new file mode 100644 index 0000000..e0ac6a3 --- /dev/null +++ b/src/ShellUI.Docs/content/docs/installation.md @@ -0,0 +1,17 @@ +--- +title: Installation +description: Set up ShellUI in a new or existing Blazor project. +order: 2 +--- + +# Installation + +Two paths depending on whether you're starting fresh or attaching to an existing Blazor project. + + +Full installation walkthrough migrates in the next content branch. This page exists so the scaffold has a second navigable route. + + +## Next + +- **[Introduction](/docs/introduction)** — back to the overview diff --git a/src/ShellUI.Docs/content/docs/introduction.md b/src/ShellUI.Docs/content/docs/introduction.md new file mode 100644 index 0000000..6e0c9de --- /dev/null +++ b/src/ShellUI.Docs/content/docs/introduction.md @@ -0,0 +1,25 @@ +--- +title: Introduction +description: What ShellUI is and why it exists. +order: 1 +--- + +# Introduction + +ShellUI is a Blazor component library inspired by shadcn/ui — CLI-first, source-owned, Tailwind-styled. Every component you install lands as source in your project so you can restyle, extend, or delete it without a package upgrade. + +## What you get + +- 60+ accessible, keyboard-first Blazor components +- Tailwind-driven, shadcn-flavoured design tokens +- `shellui add ` CLI — copy source into your project on demand +- SSR + WASM compatible out of the box + +## Where next + +- **[Installation](/docs/installation)** — get ShellUI running in a new or existing Blazor project +- **[Components](/docs/components)** — the full component reference + + +This docs site is being built with [ShellDocs](https://github.com/shellui-dev/shelldocs) — the docs framework by the same team. Content is being migrated from the previous Fumadocs-based site page-by-page. + diff --git a/src/ShellUI.Docs/content/docs/meta.json b/src/ShellUI.Docs/content/docs/meta.json new file mode 100644 index 0000000..39818ee --- /dev/null +++ b/src/ShellUI.Docs/content/docs/meta.json @@ -0,0 +1,4 @@ +{ + "title": "Documentation", + "pages": ["introduction", "installation"] +} From 1d3ddada1e92f714e66189121ae0d408477bce00 Mon Sep 17 00:00:00 2001 From: Shephard Tseisi Date: Fri, 24 Jul 2026 19:16:34 +0200 Subject: [PATCH 4/4] feat: add ShellUI.Docs project with initial setup and components Created the ShellUI.Docs project, including the main Program.cs file for the documentation site, a project file for configuration, and launch settings for local development. Updated the solution file to include the new documentation project and its dependencies, establishing a foundation for future documentation enhancements. --- ShellUI.slnx | 5 ++ src/ShellUI.Docs/Program.cs | 51 +++++++++++++++++++ .../Properties/launchSettings.json | 13 +++++ src/ShellUI.Docs/ShellUI.Docs.csproj | 47 +++++++++++++++++ 4 files changed, 116 insertions(+) create mode 100644 src/ShellUI.Docs/Program.cs create mode 100644 src/ShellUI.Docs/Properties/launchSettings.json create mode 100644 src/ShellUI.Docs/ShellUI.Docs.csproj diff --git a/ShellUI.slnx b/ShellUI.slnx index 36ca80f..c7b4adc 100644 --- a/ShellUI.slnx +++ b/ShellUI.slnx @@ -8,10 +8,15 @@ + + + + + diff --git a/src/ShellUI.Docs/Program.cs b/src/ShellUI.Docs/Program.cs new file mode 100644 index 0000000..ae7202e --- /dev/null +++ b/src/ShellUI.Docs/Program.cs @@ -0,0 +1,51 @@ +using ShellDocs.Components; +using ShellUI.Docs.Components; + +var builder = WebApplication.CreateBuilder(args); + +builder.WebHost.UseStaticWebAssets(); + +builder.Services.AddRazorComponents() + .AddInteractiveServerComponents(); + +builder.Services.AddShellDocs(o => +{ + o.ContentRoot = Path.Combine(builder.Environment.ContentRootPath, "content"); + o.SiteName = "ShellUI"; + o.SiteTagline = "shadcn-flavoured Blazor components"; + o.GitHubRepo = "shellui-dev/shellui"; + o.LayoutVariant = DocsLayoutVariant.Sidebar; + + o.AddNavLink("Documentation", "/docs/introduction"); + o.AddNavLink("Components", "/docs/components"); + + /* Sidebar package selector — one entry per ShellUI monorepo package. + ShellDocs' PackageSelector hides itself if fewer than 2 packages are + declared; four is comfortably above that threshold. RootUrl paths are + matched by longest-prefix against the current URL to resolve which + package is "active". IconPath is optional — omit to fall through to + the default box glyph. */ + o.AddPackage("shellui", "ShellUI", "The component library.", "/docs/introduction", "M3 3h7v7H3z M14 3h7v7h-7z M3 14h7v7H3z M14 14h7v7h-7z"); + o.AddPackage("shellui.components", "ShellUI.Components", "60+ Blazor primitives.", "/docs/components", "M12 2 4 6v6c0 5 3.5 9.5 8 10 4.5-.5 8-5 8-10V6z"); + o.AddPackage("shellui.cli", "ShellUI.CLI", "Add, list, scaffold.", "/docs/cli", "m8 6-6 6 6 6 M16 6l6 6-6 6"); + o.AddPackage("shellui.templates", "ShellUI.Templates", "Starter markdown + files.", "/docs/templates", "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z M14 2l6 6 M14 2v6h6"); + + /* Register every public ShellUI component under its type name so any of + them can be embedded in markdown via