Skip to content

feat: draw charts with ShellCharts instead of ApexCharts - #79

Draft
Shewart wants to merge 4 commits into
mainfrom
feat/shell-charts
Draft

Shewart wants to merge 4 commits into
mainfrom
feat/shell-charts

Conversation

@Shewart

@Shewart Shewart commented Oct 24, 2026

Copy link
Copy Markdown
Contributor

Moves every chart, in the NuGet package and the CLI templates, from Blazor-ApexCharts to ShellCharts. ShellCharts draws SVG in Blazor and reads the theme's --chart-1 … --chart-5, --border and --muted-foreground directly, so about 150 lines of ApexCharts style overrides are gone.

Draft until ShellCharts.Blazor 0.1.0-alpha is on NuGet. Restore fails until then. shellui-dev/shell-charts#3 should merge before that tag.

Changes

  • The nine charts keep their parameters (Data, XValue, YValue, Name, Theme, Title, Subtitle, Height, Width, ShowLegend, Class).
  • New ChartFrame (and a chart-frame template): the card a chart sits in, with title and subtitle. It can also hold a custom ShellCharts chart. Theme swaps the --chart-N palette on it.
  • charts.css (template) and shellui-theme.css (package) now import the ShellCharts stylesheet.
  • chart now pulls in ShellCharts.Blazor instead of Blazor-ApexCharts.
  • The chart templates are copies of the package files under the app's namespace. A new test compares whole files, since most charts no longer have an @code block.
  • The demo app's charts, charts.css and app.css are updated, and its multi-series example uses shared data.

Breaking changes

  • ChartSeries no longer takes Data or XValue. Every series reads the MultiSeriesChart's Data and XValue, one item per category with a YValue per series.
  • ShowToolbar does nothing and is marked [Obsolete].
  • ChartVariants.GetOptions (the ApexCharts options builder) is gone. ChartTheme stays.

Checked

  • The solution builds with no warnings. All 540 tests pass on net8.0 and net10.0.
  • In the demo app, the dashboard's bar, line and area charts, the multi-series bar-and-line chart, and the pie, donut, radar and radial charts all render. Theme="Colorful" recolours.

The chart components and their CLI templates now wrap ShellCharts.Blazor,
which reads the theme's --chart-1..5 and colours directly, so the
ApexCharts stylesheet overrides are gone. ChartFrame is the card the
charts sit in, and can hold a custom ShellCharts chart.

Breaking: ChartSeries no longer takes Data or XValue; every series
reads the MultiSeriesChart's. ShowToolbar does nothing.
RadialChart values are percentages, as before.
Most charts are now markup with no @code block, so the sync test
compares the whole file.
Copilot AI balanced review requested due to automatic review settings October 24, 2026 05:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@Shewart Shewart mentioned this pull request Oct 30, 2026
Shewart added a commit that referenced this pull request Oct 30, 2026
Release notes and version references for 0.4.0, the 0.4 stable release.

It fixes a hang in `shellui add` on .NET 8 and 9 apps that this
release's smoke test found, and the 0.4.0 notes describe those fixes.

**In this release** (on main, plus #80)
- #76: PromptSuggestions, Reasoning, ToolCall, Field, JsonViewer
- #77: a real resizable panel group (`ResizablePanelGroup` / `Panel` /
`Handle`)
- #78: `shellui migrate`
- #74: .NET 8 support, `shellui add all`, `shellui doctor`,
`SonnerService.Clear`, destructive context menu items, safelist fix
- the whole 0.4 alpha line (alpha.1 to alpha.3), summed up for people
upgrading from 0.3.6
- #80: `add` no longer hangs on .NET 8/9, the CLI rolls forward to newer
runtimes, `doctor` stops calling a fresh `app.css` stale, `list` counts
fixed

Not in it: #79 (ShellCharts instead of ApexCharts) stays a draft for a
later release.

**This PR**
- `Directory.Build.props`: empty suffix, so both packages build as
`0.4.0`
- README, VERSIONING_STRATEGY, CLI_INSTALLATION, CLI_SYNTAX, FAQ,
QUICKSTART and the version fallbacks move to `0.4.0`. The latest stable
was still listed as 0.3.5, so 0.3.6 is now the previous stable. Installs
no longer need `--version`.
- `docs/RELEASE_NOTES.md`: the 0.4.0 section.
`scripts/extract-release-notes.sh 0.4.0` extracts it.

**Release checks.** Packed 0.4.0, with #80, installed from a local
folder into a private tool path, using a throwaway NuGet cache so
nothing local shadows the published packages.
- Release build: 0 warnings. 540 tests on net8.0 and net10.0 (542 with
#80).
- Every command in a fresh .NET 10 app: `init --yes`, `add all` (244
files), `list`, `remove`, `update`, `migrate --dry-run`, `theme apply`,
`theme update`, `doctor`. Builds 0/0.
- `init` and `add all` in fresh .NET 8 and .NET 9 apps build 0/0 and
`doctor` is clean. Before #80, `add all` hung on both.
- All 98 direct targets together, including the `dashboard-*` and
`auth-*` blocks, in `my-app` (.NET 10): 0/0, `doctor` clean.
- Upgrade from the published 0.4.0-alpha.3:
  - An app with a page using the old APIs builds on alpha.3.
- 0.4.0 `update` rewrites 55 components and replaces the targets file,
and the app builds 0/0.
- `migrate` rewrites the page (DatePicker, TimePicker, Pagination), it
builds 0/0, and `doctor` is clean.
- CLI templates in a browser:
- suggestion chips; Reasoning folds to "Thought for 2 seconds"; Field
shows the EditForm error; JSON tree folds
  - Resizable drags from 30/70 to 55/45
  - no console errors
- Packed `ShellUI.Components` in a .NET 8 app with `shellui-all.css`, in
light and dark mode:
- the new components render; the resizable drag and suggestion chips
work
  - Dialog focus trap: Tab stays inside, Escape closes and returns focus
- `shellui.js` loads through the package's JS initializer, with no
console errors

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants