From 22bde61ac2824add53c9ab429fbea14dfecef099 Mon Sep 17 00:00:00 2001 From: Shewart Date: Fri, 16 Jan 2026 23:26:10 +0200 Subject: [PATCH 1/2] feat: add GitHub Release creation and release notes for v0.1.0 --- .github/workflows/release.yml | 23 ++++++++++- RELEASE_NOTES.md | 72 +++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 RELEASE_NOTES.md diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3774638..1f2247d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,6 +5,9 @@ on: tags: - 'v*.*.*' +permissions: + contents: write + jobs: publish: runs-on: ubuntu-latest @@ -29,9 +32,27 @@ jobs: run: dotnet test --no-restore --configuration Release - name: Pack NuGet packages - run: dotnet pack --no-restore --configuration Release + run: dotnet pack --no-build --configuration Release -p:ContinuousIntegrationBuild=true - name: Publish to NuGet run: | dotnet nuget push **/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate dotnet nuget push **/*.snupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate + + - name: Extract version from tag + id: version + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + name: ShellUI v${{ steps.version.outputs.VERSION }} + body_path: RELEASE_NOTES.md + draft: false + prerelease: ${{ contains(github.ref, '-') }} + files: | + src/ShellUI.CLI/bin/Release/*.nupkg + src/ShellUI.Components/bin/Release/*.nupkg + src/ShellUI.Core/bin/Release/*.nupkg + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md new file mode 100644 index 0000000..c108059 --- /dev/null +++ b/RELEASE_NOTES.md @@ -0,0 +1,72 @@ +# ShellUI v0.1.0 🎉 + +> Beautiful, accessible Blazor components inspired by shadcn/ui + +## ✨ Highlights + +This is the **first official release** of ShellUI - a CLI-first Blazor component library that brings the shadcn/ui philosophy to .NET developers. + +### 🚀 What's Included + +#### CLI Tool (`ShellUI.CLI`) +- **`shellui init`** - Initialize your Blazor project with Tailwind CSS +- **`shellui add `** - Add individual components to your project +- **`shellui list`** - List all available components +- **`shellui remove `** - Remove installed components +- **`shellui update`** - Update components to the latest version + +#### Components Library (`ShellUI.Components`) +Pre-built components for NuGet installation: +- **Button** - Interactive button with variants (default, destructive, outline, secondary, ghost, link) +- **Badge** - Status indicators with multiple variants +- **Alert** - Notification banners with icons +- **Card** - Content containers with header, content, and footer sections +- **Input** - Form input fields +- **Label** - Accessible form labels +- **Separator** - Visual dividers +- **Shell utilities** - `Shell.Cn()` for Tailwind class merging + +## 📦 Installation + +### Option 1: CLI (Recommended) +```bash +# Install the CLI globally +dotnet tool install -g ShellUI.CLI + +# Initialize your project +shellui init + +# Add components +shellui add button badge alert card +``` + +### Option 2: NuGet Package +```bash +dotnet add package ShellUI.Components +``` + +## 🎨 Styling + +ShellUI uses **Tailwind CSS v4** with CSS variables for theming. The `shellui init` command automatically sets up: +- Tailwind CSS standalone CLI (no Node.js required) +- CSS variables for light/dark themes +- Component styling aligned with shadcn/ui + +## 📋 Requirements + +- .NET 9.0 or later +- Blazor Server, WebAssembly, or Interactive modes + +## 🔗 Links + +- **Documentation**: https://shellui.dev +- **GitHub**: https://github.com/shellui-dev/shellui +- **NuGet**: https://www.nuget.org/packages/ShellUI.Components + +## 🙏 Acknowledgments + +Inspired by [shadcn/ui](https://ui.shadcn.com/) - the beautiful React component library. + +--- + +**Full Changelog**: https://github.com/shellui-dev/shellui/commits/v0.1.0 From 2f77f2bc53b1f8a0f50ca6885e4d1d643ac1c7c6 Mon Sep 17 00:00:00 2001 From: Shewart Date: Fri, 16 Jan 2026 23:58:06 +0200 Subject: [PATCH 2/2] feat: add logo to README, move release notes to docs, update release workflow --- .github/workflows/release.yml | 2 +- README.md | 23 +- RELEASE_NOTES.md => docs/RELEASE_NOTES.md | 0 docs/ReleaseNotes.md | 325 ---------------------- images/Shellui-dark.png | Bin 0 -> 3661 bytes images/Shellui-light.png | Bin 0 -> 4202 bytes 6 files changed, 22 insertions(+), 328 deletions(-) rename RELEASE_NOTES.md => docs/RELEASE_NOTES.md (100%) delete mode 100644 docs/ReleaseNotes.md create mode 100644 images/Shellui-dark.png create mode 100644 images/Shellui-light.png diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1f2247d..94cc4fe 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -47,7 +47,7 @@ jobs: uses: softprops/action-gh-release@v2 with: name: ShellUI v${{ steps.version.outputs.VERSION }} - body_path: RELEASE_NOTES.md + body_path: docs/RELEASE_NOTES.md draft: false prerelease: ${{ contains(github.ref, '-') }} files: | diff --git a/README.md b/README.md index 36a0e8e..29df0d5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,25 @@ -# ShellUI +

+ + + + ShellUI Logo + +

+ +

ShellUI

+ +

+ A modern, CLI-first Blazor component library inspired by shadcn/ui.
+ Copy components directly into your project and customize them to match your needs. +

+ +

+ NuGet + CLI + License +

-A modern, CLI-first Blazor component library inspired by shadcn/ui. Copy components directly into your project and customize them to match your needs. +--- **New here? Check out the [Quick Start](#quick-start) section below!** diff --git a/RELEASE_NOTES.md b/docs/RELEASE_NOTES.md similarity index 100% rename from RELEASE_NOTES.md rename to docs/RELEASE_NOTES.md diff --git a/docs/ReleaseNotes.md b/docs/ReleaseNotes.md deleted file mode 100644 index 9d98a29..0000000 --- a/docs/ReleaseNotes.md +++ /dev/null @@ -1,325 +0,0 @@ -# ShellUI Release Notes - -## Version 0.1.0 (Current) - December 2025 - -### 🎉 Release v0.1.0 - The "shadcn" Refactor - -Major architectural overhaul to align with **shadcn/ui** patterns. - -**Key Changes:** -- **Composition over Configuration:** Components broken down into sub-components (e.g., `Card` -> `CardHeader`, `CardContent`, `CardFooter`). -- **Variant Pattern:** Adopted `cva`-style variants using `Shell.Cn` utility and Enums (e.g., `ButtonVariant.Destructive`). -- **Tailwind v4.1.17:** Full upgrade to latest Tailwind CSS. -- **CLI Improvements:** - - Auto-cleanup of Bootstrap files. - - Improved loading states. - - Standalone Tailwind CLI support. - -### Version 0.0.3 - November 2025 - -### 🎉 Release v0.0.3 - Fixed v0.0.2 Issues - -ShellUI v0.0.3 is now available on NuGet! This release fixes issues from v0.0.2 and includes improved documentation and package metadata. - -### What's Included - -- ✅ **CLI Tool** (`ShellUI.CLI` v0.0.3) - Install globally: `dotnet tool install -g ShellUI.CLI` -- ✅ **Components Package** (`ShellUI.Components` v0.0.3) - Install: `dotnet add package ShellUI.Components` -- ✅ **Templates Package** (`ShellUI.Templates` v0.0.3) - Internal dependency for CLI - -### Features - -1. **69 Production-Ready Components** - - Form: Button, Input, Textarea, Select, Checkbox, Switch, RadioGroup, Slider, etc. - - Layout: Card, Dialog, Sheet, Drawer, Popover, Tooltip, Separator, etc. - - Navigation: Navbar, Sidebar, NavigationMenu, Menubar, Breadcrumb, Pagination, Tabs - - Data Display: Table, DataTable, Badge, Avatar, Alert, Toast, Skeleton, Progress, Loading - - Interactive: Dropdown, Accordion, Toggle, ThemeToggle, Command, ContextMenu, HoverCard - - Advanced: Carousel, Stepper, EmptyState, FileUpload, Calendar, DatePicker, etc. - -2. **Hybrid Distribution Model** - - **CLI-First**: Copy components to your project for full customization - - **NuGet Option**: Traditional package install for quick starts - - Use both together - NuGet for speed, CLI for customization - -3. **Tailwind CSS v4.1.17** - - Standalone CLI (no Node.js required!) - - Automatic dark mode support - - Theme-aware components - - Customizable design tokens - -4. **Developer Experience** - - Simple setup: `dotnet shellui init` - - Add components: `dotnet shellui add button card dialog` - - Full source code ownership - - Easy customization - -### Installation - -**CLI Tool:** -```bash -dotnet tool install -g ShellUI.CLI -``` - -**Components Package:** -```bash -dotnet add package ShellUI.Components -``` - -### Quick Start - -```bash -# Initialize ShellUI in your project -dotnet shellui init - -# Add components -dotnet shellui add button input card dialog - -# Or use NuGet package -dotnet add package ShellUI.Components -``` - -### Documentation - -- [Getting Started Guide](../README.md) -- [Architecture Documentation](ARCHITECTURE.md) -- [Component Reference](../README.md#available-components) -- [CLI Usage Guide](CLI_SYNTAX.md) - -### Known Limitations - -- This is a pre-release version (0.0.3) -- Some advanced features may be missing -- Documentation is being actively improved -- Breaking changes may occur before v1.0.0 - -### What's Next - -- More components (targeting 70+) -- Enhanced documentation -- Component examples and demos -- Performance optimizations -- Community feedback integration - ---- - -## Version 0.0.1 (November 2025) - -### Initial Release - -- First NuGet package release -- Basic CLI functionality -- Core component set -- Tailwind CSS integration - ---- - -## Project Transformation Announcement - -ShellUI is a complete transformation into a modern, CLI-first component library for Blazor, inspired by shadcn/ui. - -### Key Features - -1. **CLI-First Approach** - - Install globally: `dotnet tool install -g ShellUI.CLI` - - Initialize project: `dotnet shellui init` - - Add components: `dotnet shellui add button card alert` - - Components are copied to your project, not locked in packages - -2. **Tailwind CSS v4 Integration** - - Modern utility-first CSS framework - - Automatic dark mode support - - Customizable design tokens - - Optimized for production - -3. **Component Library** - - 69 production-ready components - - Fully accessible (WCAG 2.1 AA compliant) - - Works with Blazor Server, WASM, and SSR - - Customizable to your needs - -4. **Developer Experience** - - Copy-paste ready components - - Full control over code - - TypeScript-like DX with C# - - Comprehensive documentation - -### Breaking Changes from Sysinfocus simple/ui - -If you're migrating from Sysinfocus simple/ui: - -1. **Installation Method Changed** - - Old: `dotnet add package Sysinfocus.AspNetCore.Components` - - New: `dotnet shellui init` + `dotnet shellui add [component]` - -2. **Styling Approach Changed** - - Old: Custom CSS framework with built-in styles - - New: Tailwind CSS utility classes - -3. **Component Distribution Changed** - - Old: NuGet package with compiled components - - New: CLI that copies source code to your project - -4. **Setup Process Changed** - - Old: Manual configuration in Program.cs, _Imports.razor, etc. - - New: Automated setup via `dotnet shellui init` - -A comprehensive migration guide will be available before v1.0 release. - -### For Existing Sysinfocus simple/ui Users - -**Don't worry!** The original Sysinfocus simple/ui library is still available and functional. This repo has been forked to create ShellUI as a separate, modern alternative. - -If you're using Sysinfocus simple/ui: -- Continue using it - it works great! -- Watch this repo for ShellUI updates -- A migration guide will be provided when ShellUI v1.0 is released - -### Contributing - -We're actively developing ShellUI and will welcome contributions once we reach alpha release. For now: - -- Star the repo to follow progress -- Watch for release announcements -- Check milestone progress in [MILESTONES.md](MILESTONES.md) -- Open issues for suggestions (labeled as "Future Consideration") - -### Stay Updated - -- GitHub: Watch this repository for updates -- Issues: Track progress and report bugs -- Discussions: Join conversations about the project - ---- - -## Previous Sysinfocus simple/ui Release Notes - -Below are the historical release notes from the original Sysinfocus simple/ui library that this project was forked from. These versions are part of the old architecture and will not receive further updates in this repository. - -For the original Sysinfocus simple/ui library, visit: [Original Repository](https://github.com/Sysinfocus/simple-ui) - ---- - -### Version 0.0.3.3 (Legacy - Sysinfocus simple/ui) - -**New / Updates / Bug fixes** -1. Fixed `EmptyTemplate` bug in DataTable component -2. Updated Checkbox component to highlight border when hovered/focused -3. Updated RadioGroupItem component to highlight border when hovered/focused -4. Added SafeAreaView component -5. Updated Calendar component smart year navigation -6. Fixed Select component placeholder styling -7. Replaced base font to Google Font "Geist" -8. Fixed Drawer component bottom padding - ---- - -### Version 0.0.3.2 (Legacy - Sysinfocus simple/ui) - -**New / Updates / Bug fixes** -1. Fixed Icon component OnClick bug when Disabled -2. Added ContainerStyle property to Input component -3. Fixed DatePicker component DateTime issue - ---- - -### Version 0.0.3.1 (Legacy - Sysinfocus simple/ui) - -**New / Updates / Bug fixes** -1. Added ServerSentEvents component -2. Fixed Input component UI -3. Fixed Select component submit action issue - ---- - -### Version 0.0.3.0 (Legacy - Sysinfocus simple/ui) - -**New / Updates / Bug fixes** -1. Fixed Input component UI and binding issue -2. Added DisableMove property to Pills component -3. Other minor UI fixes - ---- - -### Version 0.0.2.9 (Legacy - Sysinfocus simple/ui) - -**New / Updates / Bug fixes** -1. Updated Input component to support Format attribute -2. Updated Treeview component events -3. Added Prefix and Suffix attributes to Input -4. Added browser extension methods -5. Added MarkdownPreview component -6. Other minor UI fixes - ---- - -### Version 0.0.2.8 (Legacy - Sysinfocus simple/ui) - -**New / Updates / Bug fixes** -1. Fixed bug for Tabs component -2. Updated Scheduler component -3. Other minor UI fixes - ---- - -### Version 0.0.2.7 (Legacy - Sysinfocus simple/ui) - -**New / Updates / Bug fixes** -1. ResizeObserver component added -2. Fixed scrollIntoViewIfNeeded bug -3. Other minor UI fixes - ---- - -### Version 0.0.2.6 (Legacy - Sysinfocus simple/ui) - -**New / Updates / Bug fixes** -1. TabPages component added -2. Presenter component added -3. Pills component added -4. Updated Input component Format parameter -5. Fixed Tabs component event issue -6. Streamlined box-shadow -7. Other minor UI fixes - ---- - -### Version 0.0.2.5 (Legacy - Sysinfocus simple/ui) - -**New / Updates / Bug fixes** -1. Sidebar component added -2. Timeline component added -3. Updated BrowserExtensions -4. Other minor UI fixes - ---- - -### Version 0.0.2.4 (Legacy - Sysinfocus simple/ui) - -**New / Updates / Bug fixes** -1. ColorPicker component added -2. Notification component added -3. Updated Icon component with FluentUI and Lucide icons -4. Updated BrowserExtensions with clipboard and share methods -5. Other minor UI fixes - ---- - -For complete legacy release history, see commit history before project transformation. - ---- - -## Acknowledgments - -ShellUI is built on the foundation of [Sysinfocus simple/ui](https://github.com/Sysinfocus/simple-ui) by [@sysinfocus](https://github.com/Sysinfocus). We're grateful for their work in creating the original component library. - -This transformation takes the project in a new direction, inspired by the CLI-first approach of [shadcn/ui](https://ui.shadcn.com/). - -## License - -MIT License - See LICENSE.txt for details - ---- - -**Have questions or suggestions?** -Open an issue on GitHub or start a discussion! diff --git a/images/Shellui-dark.png b/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