Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
89fd18d
chore: Bump version to 0.1.0; enhance project initialization process …
Shewart Dec 8, 2025
b697d75
chore: Update Tailwind CSS version from 4.1.14 to 4.1.17 in ShellUICo…
Shewart Dec 8, 2025
9fee3b3
refactor: Update component properties to use new binding syntax and i…
Shewart Dec 8, 2025
17d9e83
refactor: Update CSS variables and styles for improved theming; add n…
Shewart Dec 8, 2025
c8a3947
feat: Initialize ShellUI.Preview project with core components, routin…
Shewart Dec 12, 2025
2364aca
refactor: Update component classes to use Shell.Cn for improved styli…
Shewart Dec 12, 2025
7b44e5f
feat: Add new model classes for Command, Context Menu, Data Table, St…
Shewart Dec 12, 2025
cdef618
feat: Introduce new variant classes for Alert, Avatar, Badge, Button,…
Shewart Dec 12, 2025
3659c40
feat: Refactor UI components to utilize new variant classes and impro…
Shewart Dec 12, 2025
0e4af83
feat: Add Shell utility class for class name management and update pr…
Shewart Dec 12, 2025
055bbb6
chore: Update project version from 1.0.0 to 0.1.0 in ShellUI.Core.csp…
Shewart Dec 12, 2025
d5a2909
feat: Add project reference to ShellUI.Components in ShellUI.CLI.cspr…
Shewart Dec 12, 2025
cac68de
feat: Add new UI components and update project version to 0.1.0; incl…
Shewart Dec 12, 2025
e718d14
chore: Update Tailwind CSS integration from v4.1.14 to v4.1.17 in REA…
Shewart Dec 12, 2025
a7d35d6
chore: Update project status and release notes to reflect version 0.1…
Shewart Dec 12, 2025
83839e7
feat: Introduce new variant classes and templates for Alert, Avatar, …
Shewart Dec 12, 2025
d26d871
feat: Extend ComponentRegistry to include new variant templates and c…
Shewart Dec 12, 2025
977c289
feat: Update README and CLI to reflect the addition of 4 new componen…
Shewart Dec 13, 2025
5f2c582
feat: Introduce new UI components and variants for enhanced styling a…
Shewart Dec 13, 2025
de5b9f6
feat: Add unit and integration tests for ShellUI CLI commands, ensuri…
Shewart Dec 13, 2025
ac91944
feat: Add CI and Release workflows for automated build, test, and dep…
Shewart Dec 13, 2025
36c7ff6
feat: Update README and project status to reflect the addition of 4 n…
Shewart Dec 16, 2025
61731b8
chore: Update GitHub links across documentation and components to ref…
Shewart Jan 6, 2026
0efb3d1
feat: Implement asynchronous component installation during initializa…
Shewart Jan 10, 2026
51f523d
feat: Add ShellTemplate and update component registry to include new …
Shewart Jan 10, 2026
732dfd6
chore: Remove version numbers from project files for ShellUI CLI, Com…
Shewart Jan 12, 2026
48ba4b6
chore: Remove version numbers from all component templates in ShellUI…
Shewart Jan 16, 2026
f8a1230
feat: Refactor ComponentMetadata to compute version dynamically from …
Shewart Jan 16, 2026
970f01b
chore: Update license information and unify author metadata across Sh…
Shewart Jan 16, 2026
1807568
feat: Introduce centralized versioning and release preparation script…
Shewart Jan 16, 2026
eb46ef4
fix: update tests to use placeholder namespace pattern
Shewart Jan 16, 2026
e700451
fix: pin SDK to 9.0.x and fix NuGet pack for CI
Shewart Jan 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
40 changes: 40 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: CI

on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]

jobs:
build-and-test:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
9.0.x

- name: Restore dependencies
run: dotnet restore

- name: Build
run: dotnet build --no-restore --configuration Release

- name: Run tests
run: dotnet test --no-restore --configuration Release --verbosity normal

- name: Pack NuGet packages
run: dotnet pack --no-build --configuration Release -p:ContinuousIntegrationBuild=true

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: nuget-packages
path: |
**/*.nupkg
**/*.snupkg
37 changes: 37 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Release

on:
push:
tags:
- 'v*.*.*'

jobs:
publish:
runs-on: ubuntu-latest
if: github.event.repository.fork == false

steps:
- uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
9.0.x

- name: Restore dependencies
run: dotnet restore

- name: Build
run: dotnet build --no-restore --configuration Release

- name: Run tests
run: dotnet test --no-restore --configuration Release

- name: Pack NuGet packages
run: dotnet pack --no-restore --configuration Release

- 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
30 changes: 30 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<!-- Centralized ShellUI Version - Update this single file to version all components -->
<PropertyGroup>
<ShellUIVersion>0.1.0</ShellUIVersion>
<ShellUIVersionSuffix></ShellUIVersionSuffix>
</PropertyGroup>

<!-- Common properties for all ShellUI projects -->
<PropertyGroup>
<Version>$(ShellUIVersion)</Version>
<Version Condition="'$(ShellUIVersionSuffix)' != ''">$(ShellUIVersion)-$(ShellUIVersionSuffix)</Version>
<AssemblyVersion>$(ShellUIVersion)</AssemblyVersion>
<FileVersion>$(ShellUIVersion)</FileVersion>
<InformationalVersion>$(Version)</InformationalVersion>
</PropertyGroup>

<!-- Common package metadata -->
<PropertyGroup>
<Authors>ShellUI</Authors>
<Company>ShellUI</Company>
<Product>ShellUI</Product>
<Copyright>© $([System.DateTime]::Now.Year) ShellUI. All rights reserved.</Copyright>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<PackageTags>blazor;ui;components;tailwindcss;shadcn</PackageTags>
<RepositoryUrl>https://github.com/shellui-dev/shellui</RepositoryUrl>
<RepositoryType>git</RepositoryType>
</PropertyGroup>
</Project>
2 changes: 1 addition & 1 deletion LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) [year] [fullname]
Copyright (c) 2025-2026 ShellUI

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
@namespace BlazorInteractiveServer.Components.Demo
@using BlazorInteractiveServer.Components

<section class="border border-border rounded-lg p-6 bg-card">
<h2 class="text-2xl font-semibold mb-4 text-card-foreground">Advanced Forms</h2>
Expand Down Expand Up @@ -46,7 +47,7 @@
<div class="space-y-4">
<div>
<Label>Select Technology</Label>
<Combobox SelectedValue="@_selectedTech" SelectedValueChanged="@HandleSelectedTechChanged"
<Combobox Value="@_selectedTech" ValueChanged="@HandleSelectedTechChanged"
Options="TechOptions"
Placeholder="Search technology..." />
@if (!string.IsNullOrEmpty(_selectedTech))
Expand All @@ -56,7 +57,7 @@
</div>
<div>
<Label>Select Framework</Label>
<Combobox SelectedValue="@_selectedFramework" SelectedValueChanged="@HandleSelectedFrameworkChanged"
<Combobox Value="@_selectedFramework" ValueChanged="@HandleSelectedFrameworkChanged"
Options="FrameworkOptions"
Placeholder="Search framework..." />
@if (!string.IsNullOrEmpty(_selectedFramework))
Expand All @@ -73,15 +74,15 @@
<div class="space-y-4 max-w-xs">
<div>
<Label class="font-bold">With clear</Label>
<DatePicker SelectedDate="@_selectedDate" SelectedDateChanged="@HandleSelectedDateChanged" Placeholder="Pick a date" />
<DatePicker Value="@_selectedDate" ValueChanged="@HandleSelectedDateChanged" Placeholder="Pick a date" />
@if (_selectedDate.HasValue)
{
<p class="text-sm text-muted-foreground mt-2">Selected: @_selectedDate.Value.ToString("MMMM dd, yyyy")</p>
}
</div>
<div>
<Label class="font-bold">Without clear</Label>
<DatePicker SelectedDate="@_selectedDate2" SelectedDateChanged="@HandleSelectedDate2Changed" Placeholder="Pick a date" AllowClear="false" />
<DatePicker Value="@_selectedDate2" ValueChanged="@HandleSelectedDate2Changed" Placeholder="Pick a date" AllowClear="false" />
@if (_selectedDate2.HasValue)
{
<p class="text-sm text-muted-foreground mt-2">Selected: @_selectedDate2.Value.ToString("MMMM dd, yyyy")</p>
Expand All @@ -106,7 +107,7 @@
<div>
<h3 class="text-xl font-semibold mb-2 text-card-foreground">Time Picker</h3>
<div class="max-w-xs">
<TimePicker SelectedTime="@_selectedTime" SelectedTimeChanged="@HandleSelectedTimeChanged" Placeholder="Pick a time" Step="15" />
<TimePicker Value="@_selectedTime" ValueChanged="@HandleSelectedTimeChanged" Placeholder="Pick a time" Step="15" />
@if (_selectedTime.HasValue)
{
<p class="text-sm text-muted-foreground mt-2">Selected: @_selectedTime.Value.ToString(@"hh\:mm")</p>
Expand Down Expand Up @@ -134,8 +135,10 @@
</Form>
@if (_formSubmitted)
{
<Alert Variant="success" Title="Success" ClassName="mt-4">
Form submitted successfully!
<Alert Variant="@AlertVariant.Success" Title="Success" Class="mt-4">
<ChildContent>
Form submitted successfully!
</ChildContent>
</Alert>
}
</div>
Expand Down Expand Up @@ -287,4 +290,3 @@
await FormSubmittedChanged.InvokeAsync(_formSubmitted);
}
}

32 changes: 18 additions & 14 deletions NET9/BlazorInteractiveServer/Components/Demo/BadgesDialogDemo.razor
Original file line number Diff line number Diff line change
@@ -1,26 +1,31 @@
@using BlazorInteractiveServer.Components.UI
@using BlazorInteractiveServer.Components

<section class="border border-border rounded-lg p-6 bg-card">
<h2 class="text-2xl font-semibold mb-4 text-card-foreground">Badges & Dialog</h2>
<div class="flex flex-wrap gap-4 mb-4">
<Badge Variant="default">Default</Badge>
<Badge Variant="secondary">Secondary</Badge>
<Badge Variant="destructive">Destructive</Badge>
<Badge Variant="success">Success</Badge>
<Badge Variant="warning">Warning</Badge>
<Badge Variant="info">Info</Badge>
<Badge Variant="@BadgeVariant.Default">Default</Badge>
<Badge Variant="@BadgeVariant.Secondary">Secondary</Badge>
<Badge Variant="@BadgeVariant.Destructive">Destructive</Badge>
<Badge Variant="@BadgeVariant.Success">Success</Badge>
<Badge Variant="@BadgeVariant.Warning">Warning</Badge>
<Badge Variant="@BadgeVariant.Info">Info</Badge>
</div>
<Button @onclick="OpenDialog">Open Dialog</Button>
</section>

<Dialog IsOpen="isDialogOpen" Title="ShellUI Dialog" Description="This is a demo of the Dialog component." OnClose="CloseDialog">
<ChildContent>
<Dialog Open="isDialogOpen" OpenChanged="@(v => isDialogOpen = v)">
<DialogContent>
<DialogHeader>
<DialogTitle>ShellUI Dialog</DialogTitle>
<DialogDescription>This is a demo of the Dialog component.</DialogDescription>
</DialogHeader>
<p>This dialog demonstrates the ShellUI Dialog component. You can put any content here!</p>
</ChildContent>
<Footer>
<Button Variant="outline" @onclick="CloseDialog">Cancel</Button>
<Button @onclick="CloseDialog">Confirm</Button>
</Footer>
<DialogFooter>
<Button Variant="@ButtonVariant.Outline" @onclick="CloseDialog">Cancel</Button>
<Button @onclick="CloseDialog">Confirm</Button>
</DialogFooter>
</DialogContent>
</Dialog>

@code {
Expand All @@ -36,4 +41,3 @@
isDialogOpen = false;
}
}

22 changes: 11 additions & 11 deletions NET9/BlazorInteractiveServer/Components/Demo/ButtonsDemo.razor
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
@using BlazorInteractiveServer.Components.UI
@using BlazorInteractiveServer.Components

<section class="border border-border rounded-lg p-6 bg-card">
<h2 class="text-2xl font-semibold mb-4 text-card-foreground">Variants</h2>
<div class="flex flex-wrap gap-4">
<Button Variant="default" OnClick="HandleClick">Default</Button>
<Button Variant="secondary" OnClick="HandleClick">Secondary</Button>
<Button Variant="destructive" OnClick="HandleClick">Destructive</Button>
<Button Variant="outline" OnClick="HandleClick">Outline</Button>
<Button Variant="ghost" OnClick="HandleClick">Ghost</Button>
<Button Variant="link" OnClick="HandleClick">Link</Button>
<Button Variant="@ButtonVariant.Default" OnClick="HandleClick">Default</Button>
<Button Variant="@ButtonVariant.Secondary" OnClick="HandleClick">Secondary</Button>
<Button Variant="@ButtonVariant.Destructive" OnClick="HandleClick">Destructive</Button>
<Button Variant="@ButtonVariant.Outline" OnClick="HandleClick">Outline</Button>
<Button Variant="@ButtonVariant.Ghost" OnClick="HandleClick">Ghost</Button>
<Button Variant="@ButtonVariant.Link" OnClick="HandleClick">Link</Button>
</div>
</section>

<section class="border border-border rounded-lg p-6 bg-card">
<h2 class="text-2xl font-semibold mb-4 text-card-foreground">Sizes</h2>
<div class="flex flex-wrap items-center gap-4">
<Button Size="sm" OnClick="HandleClick">Small</Button>
<Button Size="md" OnClick="HandleClick">Medium</Button>
<Button Size="lg" OnClick="HandleClick">Large</Button>
<Button Size="icon" OnClick="HandleClick">+</Button>
<Button Size="@ButtonSize.Sm" OnClick="HandleClick">Small</Button>
<Button Size="@ButtonSize.Default" OnClick="HandleClick">Medium</Button>
<Button Size="@ButtonSize.Lg" OnClick="HandleClick">Large</Button>
<Button Size="@ButtonSize.Icon" OnClick="HandleClick">+</Button>
</div>
</section>

Expand Down Expand Up @@ -48,4 +49,3 @@
isLoading = false;
}
}

38 changes: 22 additions & 16 deletions NET9/BlazorInteractiveServer/Components/Demo/CardsAlertsDemo.razor
Original file line number Diff line number Diff line change
@@ -1,35 +1,41 @@
@using BlazorInteractiveServer.Components.UI
@using BlazorInteractiveServer.Components

<div class="grid md:grid-cols-2 gap-6">
<section class="border border-border rounded-lg p-6 bg-card">
<h2 class="text-2xl font-semibold mb-4 text-card-foreground">Card</h2>
<Card>
<Header>
<h3 class="text-lg font-semibold">Card Title</h3>
<p class="text-sm text-muted-foreground">Card description goes here.</p>
</Header>
<ChildContent>
<CardHeader>
<CardTitle>Card Title</CardTitle>
<CardDescription>Card description goes here.</CardDescription>
</CardHeader>
<CardContent>
<p>This is the main content of the card. It can contain any content you want.</p>
</ChildContent>
<Footer>
<Button Variant="outline" Size="sm">Action</Button>
</Footer>
</CardContent>
<CardFooter>
<Button Variant="@ButtonVariant.Outline" Size="@ButtonSize.Sm">Action</Button>
</CardFooter>
</Card>
</section>

<section class="border border-border rounded-lg p-6 bg-card">
<h2 class="text-2xl font-semibold mb-4 text-card-foreground">Alerts</h2>
<div class="space-y-4">
<Alert Variant="default" Title="Info">
This is an informational alert.
<Alert Variant="@AlertVariant.Default" Title="Info">
<ChildContent>
This is an informational alert.
</ChildContent>
</Alert>
<Alert Variant="success" Title="Success">
Operation completed successfully!
<Alert Variant="@AlertVariant.Success" Title="Success">
<ChildContent>
Operation completed successfully!
</ChildContent>
</Alert>
<Alert Variant="warning" Title="Warning">
Please check your input.
<Alert Variant="@AlertVariant.Warning" Title="Warning">
<ChildContent>
Please check your input.
</ChildContent>
</Alert>
</div>
</section>
</div>

Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
@namespace BlazorInteractiveServer.Components.Demo
@using BlazorInteractiveServer.Components

<section class="border border-border rounded-lg p-6 bg-card">
<h2 class="text-2xl font-semibold mb-4 text-card-foreground">Complex Components</h2>
Expand All @@ -18,7 +19,7 @@
Title="Are you sure?"
Description="This action cannot be undone. This will permanently delete your account and remove your data from our servers."
ConfirmText="Delete Account"
ConfirmVariant="destructive"
ConfirmVariant="@ButtonVariant.Destructive"
CancelText="Cancel"
OnConfirm="HandleAlertConfirm"
OnCancel="HandleAlertCancel"
Expand Down Expand Up @@ -89,7 +90,7 @@
<h3 class="text-xl font-semibold mb-2 text-card-foreground">Hover Card</h3>
<HoverCard>
<ChildContent>
<Button Variant="outline">@HoverCardText</Button>
<Button Variant="@ButtonVariant.Outline">@HoverCardText</Button>
</ChildContent>
<CardContent>
<div class="space-y-2">
Expand Down Expand Up @@ -328,4 +329,3 @@
</svg>";
}
}

Loading