feat: ShellIcons.Maui preview, XAML path generator, static docs site on ShellDocs 0.1.7 - #2
Merged
Merged
Conversation
…rived icons, including Icon and IconCatalog classes, geometry handling, and comprehensive README documentation
…ation generation steps
…mproved icon browsing experience - Updated site tagline to reflect support for .NET MAUI. - Adjusted navigation links to point to the correct documentation paths. - Added IconBrowser component for searching and copying icon components. - Removed ReconnectModal component and associated files to streamline the layout. - Updated project dependencies to the latest alpha versions. - Enhanced documentation with new icons page and MAUI getting started guide.
…JSON icon processing - Introduced IconMetadataReader for extracting metadata from JSON files. - Added MauiIconGenerator to generate icon-related source files from SVG and JSON inputs. - Implemented PathNormalizer for converting SVG path data to a format compatible with MAUI. - Created SvgShapeReader to parse SVG elements and convert them into XAML-compatible shapes. - Established project structure with a new .csproj file for ShellIcons.Generator.Xaml.
…unctionality - Introduced PathNormalizerTests to validate path normalization logic with various SVG path inputs. - Added SvgShapeReaderTests to ensure correct parsing of SVG elements and attributes. - Implemented OffCanvasTests to verify behavior of shapes outside the viewBox. - Enhanced project file to include necessary source files for testing.
- Introduced CatalogTests to validate icon enumeration and parsing functionality. - Added ControlTests to ensure correct behavior of icon controls and their properties. - Implemented GeometryTests to verify icon geometry parsing and grid alignment. - Created XamlTests to check XAML namespace resolution and coexistence of typed and Maui images. - Established project structure with necessary files for testing ShellIcons.Maui.
…ild clarity - Added entries to .gitignore for nupkgs and publish directories to streamline build processes. - Updated README to reflect the new MAUI quickstart section and improved documentation links. - Introduced ShellIcons.Maui.slnx to separate MAUI projects from the main solution for easier management.
- Introduced CHANGELOG.md to document notable changes and versioning for ShellIcons packages. - Added RELEASING.md to outline the process for publishing ShellIcons.Blazor to NuGet and creating GitHub Releases. - Included detailed instructions for versioning, environment setup, and release approval processes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the MAUI target from the design notes as an unpublished preview, and gets the docs site ready to deploy. ShellDocs 0.1.7-alpha's
shelldocs buildnow outputs a real static site, sodocs.ymlcan publish to shellicons.shellui.dev. No runtime SVG parsing on MAUI: icons are converted to path data at build time and drawn as nativePathshapes.release.ymlstill packs onlyShellIcons.Blazor.ShellIcons.Maui (preview)
<icons:ChevronRight />) for all 1,555 icons; each carries its own path data, so unused icons are trimmedIcondispatcher with anIconNameenum, so an icon can be a binding or a component parameter:<icons:Icon Name="{Binding StatusIcon}" />IconCatalog: tags and categories from Lucide's metadata,TryParsefor ids, names and Lucide aliases ("home"→House), andSearchSize,StrokeThickness,AbsoluteStroke,Color(bindable; black/white by app theme when unset),Title→SemanticProperties.Description. Icons areInputTransparent, so taps reach the host control.https://shellicons.dev/maui;<icons:Image>coexists with MAUI's<Image>XAML path generator (
ShellIcons.Generator.Xaml)<path>,<circle>,<ellipse>,<rect>(corner radii),<line>,<polyline>,<polygon>S/T)fill="currentColor"shapes get a second, filled path; every other icon is one native viewAspect=Noneplus a scale transform keeps icons on Lucide's 24×24 grid; the stroke width is scaled separatelySHELLICONS002(unsupported SVG such as<g>ortransform),SHELLICONS004(name can't be an enum member),SHELLICONS005(shape outside the viewBox, dropped)Naming.KebabToPascal)Docs site (ShellDocs 0.1.3 → 0.1.7-alpha)
docs.ymlpins the CLI and passes--site-url, which addssitemap.xml,robots.txtandog:tags./iconsto/docs/iconsas a component used fromcontent/docs/icons.md. The build only prerenderscontent/pages, so the old route would have 404'd.App.razor: plain asset paths instead of the template's hashed@Assets[…]URLs, which 404 on a static host (the scoped-CSS bundle among them)<HeadOutlet>gets the same render mode as<Routes>)<ChevronRightIcon />Solutions and CI
ShellIcons.Maui.slnx, soShellIcons.slnxstill builds without the MAUI workloadsRepo docs
CHANGELOG.md:Unreleasedcovers the merged Blazor changes and this PRRELEASING.md: the release flow for maintainers (bump version + CHANGELOG, tag, approve thereleaseenvironment); owner-only setup is marked as donecatalog/custom/README.md: which SVG features convert to MAUI.gitignore: now coverspublish/(static docs output) andnupkgs/Fixes found along the way
save-off.svghas a stray shape entirely outside the viewBox. Browsers clip it; a nativePathwould draw it beside the icon, so it's dropped for MAUI.Breaking changes
ShellIcons.Blazorconsumers. The docs site's icon browser URL changes from/iconsto/docs/icons, but the site hasn't been deployed yet.Test plan
dotnet build ShellIcons.slnx: 0 warnings, 0 errorsdotnet test ShellIcons.slnx: 101/101 (57 generator, 44 Blazor). New tests cover the path parser, the shape converter, the metadata reader and off-canvas detection.dotnet build ShellIcons.Maui.slnx: 0 warnings, 0 errors fornet10.0, Android, iOS, Mac Catalyst and Windowsdotnet test tests/ShellIcons.Maui.Tests: 34/34, headless. Includes:IconName,icons:Imagenext to MAUI'sImage)save-offshape)shelldocs build: 16 pages prerenderedShellIcons.Maui(not verified yet)Follow-ups
ShellIcons.Mauion devices, give it its own package readme, and add it torelease.yml(Windows or macOS job with the MAUI workload)meta.jsontitle(the sidebar shows "Maui"), prerender custom@pageroutes, and fix the scaffoldedApp.razor. Tracked in shelldocs'SHELLDOCS_FIXES.md.<Version>inDirectory.Build.propsbefore the next tag.0.1.0-alphais already on NuGet.iconcomponent toShellIcons.Mauionce it ships (sameIconName/Iconnames)