Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
c72326a
feat(templates): improve bit Boilerplate dev container setup #12215 (…
yasmoradi Mar 25, 2026
44492ed
feat(blazorui): add missing new Icon parameters to BitFileUpload #122…
msynk Mar 28, 2026
4367f09
feat(blazorui): add missing new ItemCheckIcon parameter to BitDropdow…
msynk Mar 28, 2026
b23cb12
feat(blazorui): add missing new ClearButtonIcon parameter to BitTextF…
msynk Mar 28, 2026
2978f80
feat(templates): use same IConnectionMultiplexer for redis backplance…
yasmoradi Mar 29, 2026
ff7da72
feat(websites): use redis for bitplatform todo sample demo #12223 (#1…
yasmoradi Mar 29, 2026
7dbe31c
feat(templates): simplify agents.md for bit Boilerplate #12228 (#12229)
yasmoradi Mar 29, 2026
a7e5ed3
feat(blazorui): add new Icon parameters to BitSwiper #12225 (#12226)
msynk Mar 30, 2026
f975321
feat(blazorui): add missing new Icon parameter to BitPersona #12230 (…
msynk Mar 30, 2026
3cc98a7
feat(deps): update project dependencies #12234 (#12235)
yasmoradi Mar 30, 2026
2e702e4
feat(websites): update total nuget packages download counter #12238 (…
yasmoradi Mar 30, 2026
a0e0197
feat(websites): bit blazorui website initial experimental mcp endpoin…
yasmoradi Mar 30, 2026
6843e7f
feat(blazorui): add new Icon parameter to BitAccordion #12232 (#12233)
msynk Mar 30, 2026
b9af52b
feat(blazorui): add new Icon parameters to BitDialog #12242 (#12243)
msynk Mar 31, 2026
4af0612
feat(prerelease): v-10.4.4-pre-01 #12244 (#12245)
msynk Mar 31, 2026
4952363
feat(templates): add ai-sdlc (software dev lifecycle) agent to bit Bo…
yasmoradi Mar 31, 2026
5b7e531
feat(blazorui): add new Icon parameter to BitProPanel #12246 (#12247)
msynk Apr 3, 2026
3142ba2
fix(blazorui): resolve change type issues in BitNumberField #12227 (#…
zahra-yousefi Apr 5, 2026
9dfb439
feat(deps): update project dependencies #12253 (#12254)
yasmoradi Apr 11, 2026
4cc435b
feat(blazorui): add missing features to BitCard #12251 (#12252)
msynk Apr 13, 2026
ada36f4
fix(blazorui): resolve CancellationTokenSource disposal issues in mul…
msynk Apr 14, 2026
81f2109
feat(blazorui): utilize ReadOnly parameter in BitDropdown #12257 (#12…
msynk Apr 15, 2026
92115fb
feat(prerelease): v-10.4.4-pre-02 #12259 (#12260)
msynk Apr 15, 2026
71e0207
feat(blazorui): add BitTagsInput component #11074 (#12263)
msynk Apr 18, 2026
267ff49
feat(blazorui): add Event feature to BitCalendar #12261 (#12262)
msynk Apr 18, 2026
11c0dc8
feat(deps): update project dependencies #12265 (#12266)
yasmoradi Apr 18, 2026
bec2df4
feat(blazorui): add missing features to BitPersona #12250 (#12264)
msynk Apr 19, 2026
19f78b8
feat(templates): add CallerArgumentExpression support to improve Wrap…
Cyrus-Sushiant Apr 20, 2026
c37c6f4
feat(blazorui): add missing sample code to BitDropdown demo page #122…
zahra-yousefi Apr 24, 2026
7212f65
fix(blaozrui): resolve callout position issues in BitDateRangePicker …
msynk Apr 25, 2026
4b1a75e
feat(blazorui): correct mismatched example code in Culture sample of …
zahra-yousefi Apr 25, 2026
e221f58
feat(blazorui): add missing variable definition to Validation sample …
zahra-yousefi Apr 25, 2026
8a0bfd2
fix(blazorui): correct the typo in Template section of BitCalendar de…
zahra-yousefi Apr 25, 2026
d78fcf4
feat(deps): update project dependencies #12281 (#12282)
yasmoradi Apr 26, 2026
5691d38
fix(blazorui): correct a typo in example 12 of BitDatePicker demo pag…
zahra-yousefi Apr 26, 2026
65d07a0
feat(blazorui): add missing code from example 14 of BitDatePicker dem…
zahra-yousefi Apr 26, 2026
25329de
fix(blazorui): correct sample code in example 12 of BitButton demo pa…
zahra-yousefi Apr 27, 2026
0648971
feat(blazorui): add missing code to example 10 of BitButton demo #122…
zahra-yousefi Apr 27, 2026
499fba7
feat(blazorui): update code snippet of example 1 of BitPersona demo #…
zahra-yousefi Apr 27, 2026
60a2f55
feat(blazorui): add GhostText parameter to BitTextField #11390 (#12269)
msynk Apr 28, 2026
c73a926
feat(blazorui): correct variable and parameter names demo examples in…
zahra-yousefi Apr 28, 2026
faf3838
feat(blazorui): correct parameter names of demo examples of BitModal …
zahra-yousefi Apr 28, 2026
23aaca2
feat(templates): add Twilio health check to Boilerplate #12297 (#12300)
Cyrus-Sushiant May 3, 2026
54a323c
feat(templates): downgrade the HTTP version to version 2 in Boilerpla…
Cyrus-Sushiant May 4, 2026
a28c738
Fix docs info of FloatPosition parameter of BitButton #12305 (#12306)
zahra-yousefi May 4, 2026
7abe14f
fix(blazorui): correct docs info of DefaultIsShown parameter of BitTo…
zahra-yousefi May 4, 2026
891809f
fix(blazorui): correct Type value of ButtonType docs in BitMenuButton…
zahra-yousefi May 4, 2026
beefafa
feat(source generators): replace ISourceGenerator with IIncrementalGe…
msynk May 5, 2026
04a1935
feat(deps): update project dependencies #12311 (#12312)
yasmoradi May 7, 2026
51d59dc
feat(templates): improve HealthCheck in Boilerplate #12299 (#12314)
Cyrus-Sushiant May 10, 2026
762ae3a
feat(blazorui): apply required improvements to theme system of Blazor…
msynk May 10, 2026
bca598a
feat(prerelease): v-10.4.4-pre-03 #12280 (#12315)
msynk May 10, 2026
98b51b2
fix(templates): correct duplicate messages in ClientAppMessage class …
zahra-yousefi May 11, 2026
f0d0f10
fix(blazorui): resolve positioning issues of callouts #11183 (#12302)
msynk May 11, 2026
a6257bf
feat(templates): add missing copilot-instructions.md file to Boilerpl…
zahra-yousefi May 12, 2026
5a73e90
feat(blazorui): apply BitMenuButton improvements #11007 (#12317)
msynk May 12, 2026
85a4864
feat(blazorui): add Color parameter to BitDropdown #10693 (#12323)
msynk May 13, 2026
fa5ca7c
feat(prerelease): v-10.4.4-pre-04 #12321 (#12324)
msynk May 13, 2026
a93b5b8
feat(templates): add mcp.json to root of Boilerplate #12327 (#12328)
zahra-yousefi May 16, 2026
8ed4bdb
feat(templates): update lsp.json in Boilerplate #12322 (#12329)
zahra-yousefi May 16, 2026
2893a3f
feat(templates): add Microsoft.EntityFrameworkCore.Design to prevent …
yasmoradi May 16, 2026
aa89337
feat(templates): improve test speed: remove unnecessary Aspire resour…
yasmoradi May 16, 2026
51ac3a5
feat(templates): add WithOtlpExporter() to infrastructure resources i…
yasmoradi May 16, 2026
893996e
feat(infra): add contribute-to-bitplatform agent skill #12338 (#12339)
yasmoradi May 16, 2026
70e0180
fix(infra): dotnet dev-certs --trust continues #12340 (#12341)
yasmoradi May 16, 2026
c7ec1be
feat(deps): update project dependencies #12325 (#12326)
yasmoradi May 16, 2026
36f3f22
feat(release): v-10.4.4 #12330 (#12342)
msynk May 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
},
"ghcr.io/devcontainers/features/node:1": { "version": "24" }
},
"image": "mcr.microsoft.com/dotnet/sdk:10.0.201",
"image": "mcr.microsoft.com/dotnet/sdk:10.0.203",
"postStartCommand": "dotnet workload install wasm-tools && dotnet dev-certs https --trust",
"waitFor": "onCreateCommand",
"customizations": {
Expand Down
125 changes: 125 additions & 0 deletions .github/agents/contribute-to-bitplatform.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
---
name: contribute-to-bitplatform
description: Guides you through the full contribution workflow for bitfoundation/bitplatform — from writing a focused Issue, to branching on your fork, implementing the change, and opening a well-formed Pull Request.
---

# Contribute to bitplatform

You are an expert guide for the `bitfoundation/bitplatform` contribution workflow.
Walk the user through every step below in order, pausing to ask for any missing information before proceeding to the next step.

## Prerequisites

- The user has already **forked** `bitfoundation/bitplatform` to their own GitHub account (`origin`).
- The local repository has two remotes configured:
- `upstream` → `https://github.com/bitfoundation/bitplatform.git`
- `origin` → `https://github.com/<your-username>/bitplatform.git`

Verify both remotes exist with:
```bash
git remote -v
```

If either remote is missing, help the user add it before continuing.

---

## Step 1 — Sync your fork with upstream

Before doing anything else, ensure the local `develop` branch is up to date:

```bash
git fetch upstream
git checkout develop
git merge upstream/develop
git push origin develop
```

---

## Step 2 — Create a focused Issue on bitfoundation/bitplatform

A good Issue describes **the problem**, not the solution.

### Choosing a Label
Pick **one** primary label from the table below.
If multiple apply, prefer the most specific one.

| Label | Use when |
|-------|----------|
| `bug` | Something is broken or behaves incorrectly |
| `enhancement` | Improving an existing feature |
| `area / BlazorUI` | Relates to bit BlazorUI components |
| `area / templates` | Relates to the bit Boilerplate project template |
| `area / Bswup` | Relates to the bit Bswup PWA service-worker |
| `area / Butil` | Relates to the bit Butil browser APIs |
| `area / Besql` | Relates to the bit Besql client-side SQLite Entity Framework Core |
| `area / pipeline` | Relates to CI/CD or GitHub Actions |
| `dependencies` | Dependency version updates |
| `documentation` | Docs, comments, README |
| `performance` | Speed or memory improvements |
| `security` | Security-related fixes or hardening |
| `testing` | Test coverage, test infrastructure |
| `question` | Asking for clarification or guidance |

After the Issue is created, note the **Issue number** — you will need it in Step 5.

---

## Step 3 — Create a branch on your fork

Branch off of the latest `upstream/develop`:

```bash
git fetch upstream
git checkout -b <branch-name> upstream/develop
```

### Branch Naming Convention
`<type>/<short-kebab-description>` — for example:
- `fix/bitbutton-disabled-pointer-events`
- `feat/add-dark-mode-toggle`
- `docs/update-contributing-guide`

---

## Step 4 — Implement the change

---

## Step 5 — Push and open a Pull Request

Push your branch to your fork:

```bash
git push origin <branch-name>
```

### PR Title
Use the **exact same conventional-commit format** as the Issue title, and append the Issue number:

```
<prefix>(<scope>): <short description> #<issue-number>
```

Example:
```
fix(BlazorUI): BitButton disabled state ignores pointer-events in Safari #1234
```

### PR Description Template

```markdown
## Summary
<One or two sentences explaining what this PR does.>

## Changes
- <Bullet list of concrete changes made.>

## Related Issue
This closes #<issue-number>
```

---

Now begin: ask the user to describe the change they want to make, then walk them through each step above.
2 changes: 1 addition & 1 deletion .github/workflows/admin-sample.cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ jobs:

- uses: maxim-lobanov/setup-xcode@v1.7.0
with:
xcode-version: '26.2'
xcode-version: '26.4'

- uses: actions/setup-node@v6
with:
Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/bit.full.ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,6 @@ jobs:
- name: Create project from template with PostgreSQL
run: dotnet new bit-bp --name TestPostgreSQL --database PostgreSQL --module Sales --signalR --aspire --redis

- name: Trust dotnet cert
run: dotnet dev-certs https --trust # Necessary for aspire related resources

- name: Create appsettings.json for Client.Web
run: |
echo '{"ServerAddress":"/"}' > TestPostgreSQL/src/Client/TestPostgreSQL.Client.Web/wwwroot/appsettings.json
Expand All @@ -86,6 +83,10 @@ jobs:
dotnet tool restore
dotnet ef migrations add Initial --verbose

- name: Trust dotnet cert
continue-on-error: true
run: dotnet dev-certs https --trust # Necessary for aspire related resources

- name: Build and run tests
id: run-test-postgresql
run: |
Expand Down Expand Up @@ -527,4 +528,4 @@ jobs:
run: dotnet build src/Websites/Platform/Bit.Websites.Platform.slnx -c Release

- name: Build Sales website in Release mode
run: dotnet build src/Websites/Sales/Bit.Websites.Sales.slnx -c Release
run: dotnet build src/Websites/Sales/Bit.Websites.Sales.slnx -c Release
2 changes: 1 addition & 1 deletion .github/workflows/blazorui.demo.cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ jobs:

- uses: maxim-lobanov/setup-xcode@v1.7.0
with:
xcode-version: '26.2'
xcode-version: '26.4'

- uses: actions/setup-node@v6
with:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/todo-sample.cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
cd src/Templates/Boilerplate && dotnet build -c Release
dotnet pack -c Release -o . -p:ReleaseVersion=0.0.0 -p:PackageVersion=0.0.0
dotnet new install Bit.Boilerplate.0.0.0.nupkg
cd ../../../ && dotnet new bit-bp --name TodoSample --database PostgreSQL --sample --appInsights --apiServerUrl ${{ env.SERVER_API_ADDRESS }} --webAppUrl ${{ env.SERVER_WEB_ADDRESS }} --filesStorage AzureBlobStorage --notification --captcha reCaptcha --offlineDb --signalR --ads --api Standalone
cd ../../../ && dotnet new bit-bp --name TodoSample --database PostgreSQL --sample --appInsights --apiServerUrl ${{ env.SERVER_API_ADDRESS }} --webAppUrl ${{ env.SERVER_WEB_ADDRESS }} --filesStorage AzureBlobStorage --notification --captcha reCaptcha --offlineDb --signalR --ads --api Standalone --redis

- name: Use Bit.ResxTranslator
run: |
Expand Down Expand Up @@ -458,7 +458,7 @@ jobs:

- uses: maxim-lobanov/setup-xcode@v1.7.0
with:
xcode-version: '26.2'
xcode-version: '26.4'

- name: Create project from Boilerplate
run: |
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
![License](https://img.shields.io/github/license/bitfoundation/bitplatform.svg)
![Release CI Status](https://github.com/bitfoundation/bitplatform/actions/workflows/bit.ci.release.yml/badge.svg)
![NuGet version](https://img.shields.io/nuget/v/bit.blazorui.svg?logo=nuget)
[![Nuget downloads](https://img.shields.io/badge/packages_download-8.8M-blue.svg?logo=nuget)](https://www.nuget.org/profiles/bit-foundation)
[![Nuget downloads](https://img.shields.io/badge/packages_download-9M-blue.svg?logo=nuget)](https://www.nuget.org/profiles/bit-foundation)
[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/bitfoundation/bitplatform.svg)](http://isitmaintained.com/project/bitfoundation/bitplatform "Average time to resolve an issue")
[![Percentage of issues still open](http://isitmaintained.com/badge/open/bitfoundation/bitplatform.svg)](http://isitmaintained.com/project/bitfoundation/bitplatform "Percentage of issues still open")
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/bitfoundation/bitplatform)
Expand Down
2 changes: 1 addition & 1 deletion src/Besql/Bit.Besql/wwwroot/bit-besql.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var BitBesql = window.BitBesql || {};
BitBesql.version = window['bit-besql version'] = '10.4.3';
BitBesql.version = window['bit-besql version'] = '10.4.4';

BitBesql.persist = async function besqlPersist(fileName) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.5" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.8" />
</ItemGroup>

<ItemGroup>
Expand Down
6 changes: 3 additions & 3 deletions src/Besql/Demo/Bit.Besql.Demo/Bit.Besql.Demo.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

<ItemGroup>
<ProjectReference Include="..\Bit.Besql.Demo.Client\Bit.Besql.Demo.Client.csproj" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="10.0.5" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="10.0.8" />
</ItemGroup>

<ItemGroup>
Expand All @@ -17,11 +17,11 @@
and open Nuget Package Manager Console, and select `Bit.Besql.Demo.Client` project as default project
Then run either Add-Migration MigrationName -OutputDir Data\Migrations or
Optimize-DbContext -OutputDir Data\CompiledModel commands. -->
<PackageReference Include="Microsoft.EntityFrameworkCore.Tasks" Version="10.0.5">
<PackageReference Include="Microsoft.EntityFrameworkCore.Tasks" Version="10.0.8">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.5">
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.8">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Expand Down
2 changes: 1 addition & 1 deletion src/Bit.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<PackageProjectUrl>https://github.com/bitfoundation/bitplatform</PackageProjectUrl>

<!-- Version -->
<ReleaseVersion>10.4.3</ReleaseVersion>
<ReleaseVersion>10.4.4</ReleaseVersion>
<PackageVersion>$(ReleaseVersion)</PackageVersion>
<PackageReleaseNotes>https://github.com/bitfoundation/bitplatform/releases/tag/v-$(ReleaseVersion)</PackageReleaseNotes>
<Version Condition=" '$(Configuration)' == 'Release' ">$([System.String]::Copy($(ReleaseVersion)).Replace('-pre-', '.'))</Version>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<Project>
<ItemGroup>
<Content Remove="$(NuGetPackageRoot)/bit.blazores2019/10.4.3/contentFiles/any/net9.0/wwwroot/_framework/*.js" Condition="$(TargetFramework.Contains('net9.0'))" />
<Content Include="$(NuGetPackageRoot)/bit.blazores2019/10.4.3/contentFiles/any/net9.0/wwwroot/_framework/*.js" Condition="$(TargetFramework.Contains('net9.0'))">
<Content Remove="$(NuGetPackageRoot)/bit.blazores2019/10.4.4/contentFiles/any/net9.0/wwwroot/_framework/*.js" Condition="$(TargetFramework.Contains('net9.0'))" />
<Content Include="$(NuGetPackageRoot)/bit.blazores2019/10.4.4/contentFiles/any/net9.0/wwwroot/_framework/*.js" Condition="$(TargetFramework.Contains('net9.0'))">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<Link>wwwroot\_framework\%(Filename)%(Extension)</Link>
</Content>
<Content Remove="$(NuGetPackageRoot)/bit.blazores2019/10.4.3/contentFiles/any/net10.0/wwwroot/_framework/*.js" Condition="$(TargetFramework.Contains('net10.0'))" />
<Content Include="$(NuGetPackageRoot)/bit.blazores2019/10.4.3/contentFiles/any/net10.0/wwwroot/_framework/*.js" Condition="$(TargetFramework.Contains('net10.0'))">
<Content Remove="$(NuGetPackageRoot)/bit.blazores2019/10.4.4/contentFiles/any/net10.0/wwwroot/_framework/*.js" Condition="$(TargetFramework.Contains('net10.0'))" />
<Content Include="$(NuGetPackageRoot)/bit.blazores2019/10.4.4/contentFiles/any/net10.0/wwwroot/_framework/*.js" Condition="$(TargetFramework.Contains('net10.0'))">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
<Link>wwwroot\_framework\%(Filename)%(Extension)</Link>
Expand Down
8 changes: 4 additions & 4 deletions src/BlazorUI/Bit.BlazorUI.Assets/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/BlazorUI/Bit.BlazorUI.Assets/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"devDependencies": {
"sass": "1.98.0"
"sass": "1.99.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" PrivateAssets="all" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" PrivateAssets="all" />
<PackageReference Include="Jint" Version="4.6.4" PrivateAssets="all" />
<PackageReference Include="Jint" Version="4.9.1" PrivateAssets="all" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -501,6 +501,9 @@ protected virtual async ValueTask DisposeAsync(bool disposing)
{
if (_disposed || disposing is false) return;

_pendingDataLoadCancellationTokenSource?.Cancel();
_pendingDataLoadCancellationTokenSource?.Dispose();

_currentPageItemsChanged.Dispose();

try
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,9 @@ private async Task<List<TItem>> LoadMoreItems()
if (ItemsProvider is null || _globalCts is not null) return [];

var items = _currentItems;

if (IsDisposed) return items;

var localCts = new CancellationTokenSource();

_globalCts = localCts;
Expand Down Expand Up @@ -177,6 +180,7 @@ private async Task<List<TItem>> LoadMoreItems()
}

StateHasChanged();

return items;
}

Expand All @@ -203,6 +207,7 @@ protected override async ValueTask DisposeAsync(bool disposing)

if (_globalCts is not null)
{
_globalCts.Cancel();
_globalCts.Dispose();
_globalCts = null;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@namespace Bit.BlazorUI
@namespace Bit.BlazorUI
@inherits BitComponentBase

<BitPanel AriaLabel="@AriaLabel"
Expand Down Expand Up @@ -42,10 +42,16 @@

@if (ShowCloseButton)
{
var closeIcon = BitIconInfo.From(CloseIcon, CloseIconName ?? "Cancel");

<button @onclick="ClosePanel"
type="button"
title="Close"
aria-label="Close"
style="@Styles?.CloseButton"
class="bit-ppl-cls @Classes?.CloseButton">
<i style="@Styles?.CloseIcon" class="bit-icon bit-icon--Cancel @Classes?.CloseIcon" />
<i style="@Styles?.CloseIcon"
class="@closeIcon?.GetCssClasses() @Classes?.CloseIcon" />
</button>
}
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,26 @@ public partial class BitProPanel : BitComponentBase
/// </summary>
[Parameter] public BitProPanelClassStyles? Classes { get; set; }

/// <summary>
/// Gets or sets the icon to display in the close button using custom CSS classes for external icon libraries.
/// Takes precedence over <see cref="CloseIconName"/> when both are set.
/// </summary>
/// <remarks>
/// Use this property to render icons from external libraries like FontAwesome, Material Icons, or Bootstrap Icons.
/// For built-in Fluent UI icons, use <see cref="CloseIconName"/> instead.
/// </remarks>
[Parameter] public BitIconInfo? CloseIcon { get; set; }

/// <summary>
/// Gets or sets the name of the icon to display in the close button from the built-in Fluent UI icons.
/// </summary>
/// <remarks>
/// The icon name should be from the Fluent UI icon set (e.g., <c>BitIconName.Cancel</c>).
/// <br />
/// For external icon libraries, use <see cref="CloseIcon"/> instead.
/// </remarks>
[Parameter] public string? CloseIconName { get; set; }

/// <summary>
/// The template used to render the footer section of the panel.
/// </summary>
Expand Down
Loading
Loading