Skip to content

Unified class-based styling, PathIcon icon set and SearchBox redesign - #382

Open
hendrikmennen wants to merge 8 commits into
mainfrom
style-rework
Open

hendrikmennen wants to merge 8 commits into
mainfrom
style-rework

Conversation

@hendrikmennen

@hendrikmennen hendrikmennen commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Adds one shared, class-based design layer on top of Avalonia SimpleTheme in OneWare.Essentials, and moves the views over to it so the IDE and plugins look the same.

Design system (src/OneWare.Essentials/Styles/)

  • OneWareTheme.axaml is the entry point, included once from OneWare.Core/App.axaml. Plugins get it from the host.
  • Tokens: Tokens.axaml plus TokensDark.axaml / TokensLight.axaml. They keep the SimpleTheme key names and add status colors, radii, spacing, font sizes and control and icon sizes. The dark theme keeps the original OneWare palette.
  • Controls/*.axaml holds one style file per control family. The Buttons, Borders, TextBoxes, ComboBoxes, ListBox, TreeView, TabControl, Menu, ScrollViewer and Expander styles moved here from OneWare.Core/Styles.
  • Class vocabulary:
    • text: h1–h4, muted, caption, …
    • buttons: primary, secondary, ghost, danger, link, icon, …
    • surfaces: card, panel, inset, badge, callout, …
    • layout: toolbar, form, form-row, …
  • Inputs get a default Height of 24 instead of a MinHeight, so an inline Height on a view still wins.
  • Menus: submenu and dropdown popups now use the same elevated surface as context menus, and the gap between icon and text is smaller.

Icons

  • Styles/Icons.axaml adds 152 monochrome Icon.* geometries. They are scaled to a 24×24 frame with consistent optical size.
  • A new PathIcon theme makes icons inherit Foreground, so they follow button, hover and selection colors. Classes: small, large, muted, accent, success, warning, error.
  • The old single-color DrawingImage keys still exist as thin wrappers, so IconModel and C# callers keep working. Multi-color icons are unchanged.
  • About 100 view usages are converted from <Image Source=…> to <PathIcon Data=…>.

SearchBox

  • SearchBox is now a single TextBox with a leading search icon, a clear button that shows only when there is text, and a new IsBusy spinner.
  • The extra wrapper borders around it are removed in ErrorList, PackageManager, ProjectExplorer, LibraryExplorer, SearchList and the PinPlanner.

Views

  • Inline colors, borders, font sizes and local styles are replaced with classes across Core, ApplicationCommands, CloudIntegration, PackageManager, SourceControl, Settings, the FPGA project system, WaveFormViewer, SerialMonitor and others.
  • Chat and Copilot views are intentionally unchanged.

Docs and tooling

  • New docs/Styling.md covers tokens, classes, icons and SearchBox. docs/PluginDevelopment.md gets a Styling section.
  • Help → Style Gallery (Debug builds only) shows every class and icon in dark and light side by side.

Testing

  • dotnet build OneWare.slnx succeeds and dotnet test OneWare.slnx passes.
  • The style gallery and several views were checked in headless renders.

Companion plugin PR: one-ware/OneWare.AI#739. It runs against the current Essentials package and uses DynamicResource Icon.* until the package version is bumped.

hendrikmennen and others added 8 commits September 29, 2026 16:18
Restore the Viewbox in the PathIcon template so geometries that are not
square (e.g. the DropDownButton chevron) are centered instead of being
drawn at the top.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.

1 participant