Skip to content

feat(design-system): add core design-system components#338

Merged
DigiBanks99 merged 25 commits into
mainfrom
feat/321-design-system-infra
May 22, 2026
Merged

feat(design-system): add core design-system components#338
DigiBanks99 merged 25 commits into
mainfrom
feat/321-design-system-infra

Conversation

@DigiBanks99
Copy link
Copy Markdown
Owner

@DigiBanks99 DigiBanks99 commented May 20, 2026

Summary- add Tailwind CSS v4 design-system infrastructure across the Menlo app, libraries, and Storybook- define Catppuccin theme tokens, semantic colors, and Nunito Sans as the shared visual foundation- add a reusable ThemeService in menlo-lib and initialize it during app bootstrap- add Storybook Foundations documentation for colours, typography, spacing, icons, and shadows/radii in menlo-lib- add the standalone mnl-button, mnl-input, and mnl-select atoms with signal-based APIs, CVA integration for the form controls, Storybook docs, and exhaustive Vitest coverage in menlo-lib- add the standalone mnl-form-field and mnl-amount-input molecules with accessible label/error composition, currency-prefix formatting, CVA wiring, Storybook docs, and full coverage in menlo-lib- add the standalone mnl-tab-bar molecule and mnl-page-shell organism with router-aware active state handling, responsive mobile/desktop navigation, page-scroll reset on route changes, Storybook docs, and full coverage in menlo-lib- add the standalone mnl-panel molecule with viewport-aware auto/sheet/dialog modes, focus trapping, dismissal handling, body scroll locking, Storybook docs, and full coverage in menlo-lib- add the standalone mnl-toggle and mnl-badge atoms with signal APIs, CVA and keyboard support for the toggle, Storybook docs, and full Vitest coverage in menlo-lib- wire the authenticated app shell to the new page shell organism without migrating the route content yet- refresh the tracked documentation.json artifact after Storybook validation and keep repo formatting aligned with the validation gates## Validation- pushd src\ui\web; pnpm format && pnpm lint && pnpm test && pnpm build && popd- pushd src\ui\web; pnpm build-storybook && pnpm build-storybook:lib && pnpm audit --audit-level moderate && pnpm licenses list --json && popd- dotnet restore Menlo.slnx- dotnet format Menlo.slnx --verify-no-changes --no-restore- dotnet build Menlo.slnx --no-restore --configuration Release- dotnet test Menlo.slnx --no-build --configuration Release --verbosity minimal --collect:"XPlat Code Coverage" --results-directory .\coverage\issue-331 --logger trx --logger "console;verbosity=minimal"- .\scripts\check-api-coverage-baseline.ps1 -CoverageDir coverage\issue-331 -Threshold 70 -HeadSha HEAD- dotnet list Menlo.slnx package --vulnerable --include-transitive- aspire start --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --isolated --non-interactive --nologo --format Json- aspire wait web-ui --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --status up --timeout 180 --non-interactive --nologo- aspire describe web-ui --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --format Json --non-interactive --nologo- HTTP 200 from http://localhost:4200/Closes #321Closes #322Closes #323Closes #324Closes #329Closes #330Closes #331Closes #325Relates to #320## Update: Issue #326- add the standalone mnl-progress and mnl-avatar atoms with accessible progress semantics, image fallback handling, Storybook stories, and Vitest coverage in menlo-lib- rerun Playwright from a clean dev-server instance to avoid stale Vite overlays before completing audit and license validationCloses #326## Update: Issue #328- add the standalone mnl-card and mnl-stat molecules with padding variants, projected header/footer slots, interactive hover treatment, and badge-backed trend states in menlo-lib- add Storybook coverage and focused Vitest suites for slot projection, interactive rendering, and conditional trend badges so the home and budget-list migrations can compose these primitives confidently### Validation- pushd src\ui\web; pnpm nx test menlo-lib --runInBand && pnpm lint && pnpm test && pnpm build && pnpm build-storybook && pnpm build-storybook:lib && pnpm audit --audit-level moderate && pnpm licenses list --json && popd- dotnet restore Menlo.slnx- dotnet format Menlo.slnx --verify-no-changes --no-restore- dotnet build Menlo.slnx --no-restore --configuration Release- dotnet test Menlo.slnx --no-build --configuration Release --verbosity minimal --collect:"XPlat Code Coverage" --results-directory .\coverage\issue-328 --logger trx --logger "console;verbosity=minimal"- .\scripts\check-api-coverage-baseline.ps1 -CoverageDir coverage\issue-328 -Threshold 70 -HeadSha HEAD- dotnet list Menlo.slnx package --vulnerable --include-transitive- aspire start --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --isolated --non-interactive --nologo --format Json- aspire wait web-ui --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --status up --timeout 180 --non-interactive --nologo- aspire describe --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --format Json --non-interactive --nologo- HTTP 200 from http://localhost:4200/Closes #328

Update: Issue #332

  • add the standalone mnl-list-item and mnl-page-header molecules with projected slots, interactive and selected states, theme-aware gradient tokens, Storybook coverage, and Vitest suites in menlo-lib
  • refresh shared theme preview variables and the tracked Storybook documentation artifact so the new molecules render consistently across Latte and Mocha in app and docs builds

Validation

  • pushd src\ui\web; pnpm format && pnpm lint && pnpm test && pnpm build && pnpm build-storybook && pnpm build-storybook:lib && pnpm audit --audit-level moderate && pnpm licenses list --json && popd
  • dotnet restore Menlo.slnx
  • dotnet format Menlo.slnx --verify-no-changes --no-restore
  • dotnet build Menlo.slnx --no-restore --configuration Release
  • dotnet test Menlo.slnx --no-build --configuration Release --verbosity minimal --collect:"XPlat Code Coverage" --results-directory .\coverage\issue-332-full --logger trx --logger "console;verbosity=minimal"
  • .\scripts\check-api-coverage-baseline.ps1 -CoverageDir coverage\issue-332-full -Threshold 70 -HeadSha HEAD
  • dotnet list Menlo.slnx package --vulnerable --include-transitive
  • aspire start --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --isolated --non-interactive --nologo --format Json
  • aspire wait web-ui --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --status up --timeout 180 --non-interactive --nologo
  • aspire describe web-ui --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --format Json --non-interactive --nologo
  • HTTP 200 from http://localhost:4200/

Closes #332

Update: Issue #335

  • migrate the menlo-app home page to mnl-page-header, mnl-card, mnl-stat, mnl-button, and mnl-badge, removing the bespoke landing-page styling
  • restyle the embedded budget widget with design-system primitives so the home route keeps its budget summary and navigation behaviour without hardcoded colours
  • align menlo-lib's public-api.ts with src/index.ts for page-header exports and document routed mnl-button usage in AGENTS.md

Validation

  • pushd src\ui\web; pnpm nx format:check --files="projects/menlo-app/src/app/home/home.component.ts,projects/menlo-app/src/app/home/home.component.html,projects/menlo-app/src/app/home/budget-widget.component.ts,projects/menlo-app/src/app/home/home.component.spec.ts,projects/menlo-app/src/app/home/budget-widget.component.spec.ts,projects/menlo-lib/src/public-api.ts" && pnpm lint && pnpm test && pnpm build && pnpm build-storybook && pnpm build-storybook:lib && pnpm audit --audit-level moderate && pnpm licenses list --json && popd
  • dotnet restore Menlo.slnx
  • dotnet format Menlo.slnx --verify-no-changes --no-restore
  • dotnet build Menlo.slnx --no-restore --configuration Release
  • dotnet test Menlo.slnx --no-build --configuration Release --verbosity minimal --collect:"XPlat Code Coverage" --results-directory .\coverage\issue-335-full --logger trx --logger "console;verbosity=minimal"
  • .\scripts\check-api-coverage-baseline.ps1 -CoverageDir coverage\issue-335-full -Threshold 70 -HeadSha HEAD
  • dotnet list Menlo.slnx package --vulnerable --include-transitive
  • aspire start --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --isolated --non-interactive --nologo --format Json
  • aspire wait web-ui --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --status up --timeout 180 --non-interactive --nologo
  • aspire describe web-ui --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --format Json --non-interactive --nologo
  • HTTP 200 from http://localhost:4200/
  • pushd src\ui\web; pnpm test:e2e && popd

Closes #335

Update: Issue #336

  • migrate the budget list page to mnl-page-header, mnl-card, mnl-progress, mnl-badge, and mnl-button, replacing the bespoke SCSS-driven layout
  • route budget list actions through the host component so mnl-button drives navigation to budget detail without reintroducing page-specific button styles
  • add component tests for seeded rendering, overspend/error variants, the empty state CTA, and budget-detail navigation while deleting the old budget-list.component.scss

Validation

  • pushd src\ui\web; pnpm run lint && pnpm run build:all:prod && pnpm run test && pnpm run test:e2e && pnpm audit --audit-level moderate && pnpm licenses list --json && popd
  • dotnet format Menlo.slnx --verify-no-changes --no-restore
  • dotnet test Menlo.slnx --no-restore --nologo
  • dotnet list package --vulnerable --include-transitive

Coverage note

  • pnpm exec nx run-many --target=test --all --outputStyle=static -- --coverage still fails on this branch because menlo-app and menlo-lib both enforce 100% global coverage across pre-existing uncovered files outside issue Design System: Migration - Budget List Page #336. budget-list.component.ts itself is 100% covered locally.

Closes #336

Update: Issue #333

  • add the standalone mnl-form-layout organism with projected title, section, and action slots plus a sticky action bar that stays within mnl-panel boundaries
  • add realistic Storybook coverage for dialog, dark-mode, and mobile sheet layouts so the budget-form migration has a shared reference implementation
  • export the organism through both src/index.ts and public-api.ts, and refresh the tracked documentation.json artifact

Validation

  • pushd src\ui\web; pnpm run lint && pnpm run test && pnpm run build:all:prod && pnpm audit --audit-level moderate && pnpm run start && popd
  • pushd src\ui\web; pnpm exec nx format:check --files="projects/menlo-lib/src/index.ts,projects/menlo-lib/src/public-api.ts,projects/menlo-lib/src/lib/organisms/form-layout/form-layout.component.ts,projects/menlo-lib/src/lib/organisms/form-layout/form-layout.component.spec.ts,projects/menlo-lib/src/lib/organisms/form-layout/form-layout.stories.ts,projects/menlo-lib/src/lib/organisms/form-layout/index.ts" && pnpm exec nx test menlo-lib -- --coverage && pnpm exec nx build-storybook menlo-lib && pnpm licenses list --json > coverage\licenses-menlo-web.json && popd

Coverage note

  • pnpm exec nx test menlo-lib -- --coverage still trips the library's existing project-wide 100% threshold because other pre-existing files on this branch remain uncovered; src/lib/organisms/form-layout/form-layout.component.ts itself is 100% covered.

Closes #333

Update: Issue #327

  • add the standalone mnl-toast atom with semantic variants, optional dismiss actions, auto-dismiss timing, reduced-motion-aware transitions, and ARIA live-region semantics in menlo-lib
  • add MnlToastService plus a root-level toast outlet portal so consumers can stack up to three active notifications without page-specific overlay wiring
  • add Storybook coverage, Vitest suites, and refresh the tracked documentation.json artifact for the toast surface

Validation

  • pushd src\ui\web; pnpm lint && pnpm test && pnpm build && pnpm build-storybook && pnpm build-storybook:lib && pnpm audit --audit-level moderate && pnpm licenses list --json && popd
  • dotnet restore Menlo.slnx
  • dotnet format Menlo.slnx --verify-no-changes --no-restore
  • dotnet build Menlo.slnx --no-restore --configuration Release
  • dotnet test Menlo.slnx --no-build --configuration Release --verbosity minimal --collect:"XPlat Code Coverage" --results-directory .\coverage\issue-327-full --logger trx --logger "console;verbosity=minimal"
  • .\scripts\check-api-coverage-baseline.ps1 -CoverageDir coverage\issue-327-full -Threshold 70 -HeadSha HEAD
  • dotnet list Menlo.slnx package --vulnerable --include-transitive
  • aspire start --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --isolated --non-interactive --nologo --format Json
  • aspire wait web-ui --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --status healthy --timeout 240 --non-interactive --nologo
  • aspire describe web-ui --apphost src\api\Menlo.AppHost\Menlo.AppHost.csproj --format Json --non-interactive --nologo
  • HTTP 200 from http://localhost:4200/

Notes

  • Existing Storybook font-asset resolution warnings still appear during static builds and remain runtime-safe.
  • The existing �udget-analytics.component.scss size-budget warning persists and is unrelated to Design System: Atom - Toast + Toast Service #327.

Closes #327

Update: Issue #337

  • migrate the budget detail page, category management surfaces, and item create/edit/fill-forward/delete workflows onto mnl-page-header, mnl-card, mnl-list-item, mnl-form-layout, mnl-form-field, mnl-amount-input, mnl-panel, and MnlToastService
  • preserve the existing Vitest and Playwright selector contracts by adding configurable test IDs to shared buttons, inputs, selects, amount inputs, form-field errors, and panel roots instead of falling back to page-specific controls
  • update the affected budget item specs for localized amount formatting and validate the single-item create workflow end to end against the Aspire-hosted app

Validation

  • Set-Location src\\ui\\web; pnpm format && pnpm lint && pnpm test && pnpm build && pnpm test:e2e && pnpm audit --audit-level moderate && pnpm licenses list --json
  • dotnet format --verify-no-changes
  • dotnet test Menlo.slnx
  • dotnet list package --vulnerable --include-transitive
  • aspire start --isolated --non-interactive --format Json --apphost src\\api\\Menlo.AppHost\\Menlo.AppHost.csproj
  • aspire wait web-ui-xhgbuhtq --status healthy --timeout 180 --non-interactive --apphost src\\api\\Menlo.AppHost\\Menlo.AppHost.csproj
  • HTTP 200 from http://localhost:4200/
  • pnpm exec playwright test e2e/budget-item-create.spec.ts --workers=1

Note

Closes #337

Update: Issue #334

  • add a reusable chart palette helper for menlo-lib and export it through the shared theme surface
  • add Foundations/Charts Storybook coverage plus the ApexCharts dependencies needed for the new design-system chart demos
  • refresh the tracked documentation.json artifact after the chart surface changes

Validation

  • pushd src\ui\web; pnpm exec nx lint menlo-lib && pnpm exec nx test menlo-lib --watch=false && pnpm exec nx run menlo-lib:build-storybook && popd

Closes #334

Update: Storybook rendering

  • remove the TypeScript-only preview annotation that the lib Storybook runtime was serving directly to the browser
  • escape the literal Lucide import braces in the foundations icons story so Angular can compile the template reliably
  • verify Avatar and the full menlo-lib Storybook surface with Playwright; all 35 story iframes render without console errors

Refs #320

Coverage update

  • Added targeted menlo-app and menlo-lib spec coverage to satisfy the frontend CI thresholds and unblock the PR.

Add the design-system infrastructure for Menlo's web workspace.

- wire Tailwind CSS v4 through PostCSS for the Angular app, libraries, and Storybook
- define Catppuccin palette tokens, semantic theme colors, and Nunito Sans defaults
- add a reusable ThemeService with signal-based state, localStorage persistence, and html.dark wiring
- export the theme infrastructure from menlo-lib and initialize it in the app bootstrap path
- add a Storybook infrastructure smoke story and patched dependency overrides needed for a clean audit

Refs #321
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@codecov
Copy link
Copy Markdown

codecov Bot commented May 20, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Add Storybook foundation documentation stories for colours, typography,
spacing, icons, and shadows/radii so the design-system tokens are
discoverable before atom work starts.

The new stories render Latte and Mocha side-by-side, document Tailwind
class recipes, and keep the work scoped to menlo-lib while preserving the
existing infrastructure branch.

Closes #322
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@DigiBanks99 DigiBanks99 changed the title feat(design-system): add tailwind theme infrastructure feat(design-system): add infrastructure and foundation stories May 20, 2026
Add the standalone mnl-button to menlo-lib so the design-system branch can start composing interactive controls from a shared primitive.

The component now ships variant and size inputs, loading and disabled behavior, projected icon slots, Storybook documentation, and focused unit coverage for the interaction guards. The menlo-lib coverage config now excludes Storybook-only foundation helpers so the strict coverage gate stays meaningful without parser failures in docs-only files.

Closes #323
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@DigiBanks99 DigiBanks99 changed the title feat(design-system): add infrastructure and foundation stories feat(design-system): add infrastructure, foundations, and button atom May 20, 2026
DigiBanks99 and others added 2 commits May 20, 2026 19:17
Load the shared Tailwind v4 entrypoint with the @tailwindcss/container-queries plugin so issue #321 matches its documented infrastructure contract instead of only installing the package.

Regenerate documentation.json after the Storybook validation run so the tracked API/docs metadata reflects the design-system sources already present on this branch.

Refs #321
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add the mnl-input and mnl-select atoms to menlo-lib with signal-based APIs, ControlValueAccessor support, Storybook coverage, and exhaustive Vitest coverage so the design-system branch can start composing consistent form flows.\n\nThe change also fixes the published menlo-lib type metadata for Vite dev resolution, refreshes generated frontend docs/assets, and applies the repo-local formatting cleanup required for the validation gates to stay green.\n\nCloses #324\nRelates to #320\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@DigiBanks99 DigiBanks99 changed the title feat(design-system): add infrastructure, foundations, and button atom feat(design-system): add infrastructure, foundations, and core atoms May 20, 2026
Closes #329
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@DigiBanks99 DigiBanks99 changed the title feat(design-system): add infrastructure, foundations, and core atoms feat(design-system): add infrastructure, core atoms, and form molecules May 20, 2026
DigiBanks99 and others added 2 commits May 20, 2026 21:10
Add the responsive navigation shell for issue #330 so Menlo can switch between a mobile bottom tab bar and a desktop sidebar without duplicating layout logic in the app.

This adds the new menlo-lib tab bar and page shell components with router-aware active states, scroll reset behaviour, Storybook coverage, and exhaustive tests, and wires the authenticated app shell into the new organism.

Closes #330
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add the standalone mnl-panel molecule to menlo-lib with viewport-aware auto/sheet/dialog modes, focus trapping, dismissal outputs, scroll locking, Storybook coverage, and Vitest coverage.

Refresh the generated Storybook documentation artifact so the new component is reflected in tracked docs.

Closes #331
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@DigiBanks99 DigiBanks99 changed the title feat(design-system): add infrastructure, core atoms, and form molecules feat(design-system): add core design-system components May 20, 2026
DigiBanks99 and others added 16 commits May 20, 2026 21:59
Add the standalone mnl-toggle and mnl-badge atoms with Storybook coverage, Vitest suites, and barrel exports so the design system can support boolean inputs and status pills for the next migration slices.

Refresh documentation.json after the Storybook build and capture the ng-packagr template-visibility learning in AGENTS for follow-on component work.

Closes #325
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add the progress bar and avatar atoms for the Menlo design system so downstream card and budget list work can compose accessible status and identity primitives.

This adds standalone Angular components, Storybook coverage, unit tests, barrel exports, and a brief repo learning from the Playwright validation lane.

Closes #326
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add the reusable mnl-card and mnl-stat molecules to menlo-lib so the design-system branch can compose dashboard and budget summary surfaces from shared containers instead of bespoke markup.

The new components include Storybook documentation for padding, projection, and trend variants, focused Vitest coverage for slot projection and conditional trend rendering, and the barrel exports needed for downstream migrations.

Closes #328
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- add the mnl-list-item and mnl-page-header molecules with theme-aware gradients, projection slots, stories, and Vitest coverage
- refresh exports, foundation preview variables, and the generated Storybook documentation artifact for the new design-system surfaces

Closes #332
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move the Menlo home experience onto the new design-system primitives so the landing page uses the shared page header, cards, stats, buttons, and badges instead of bespoke styling.

Also restyle the home budget widget and align the menlo-lib public API export so the app can consume the page header from the packaged library surface.

Closes #335
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Closes #336
Relates to #320

Validated with:
- pnpm run lint
- pnpm run build:all:prod
- pnpm run test
- pnpm run test:e2e
- pnpm audit --audit-level moderate
- pnpm licenses list --json
- dotnet format Menlo.slnx --verify-no-changes --no-restore
- dotnet test Menlo.slnx --no-restore --nologo
- dotnet list package --vulnerable --include-transitive

Note: `pnpm exec nx run-many --target=test --all --outputStyle=static -- --coverage` still fails on pre-existing 100% global coverage gates in `menlo-app` and `menlo-lib` outside issue #336; `budget-list.component.ts` is 100% covered.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Introduce the mnl-form-layout organism in menlo-lib as the presentation shell for multi-section forms.

This adds projected title and action slots, a sticky action bar that works inside mnl-panel, realistic Storybook coverage, focused Vitest coverage, barrel exports, and refreshed generated documentation so the budget-form migration can depend on a stable shared layout.

Closes #333

Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add the new mnl-toast primitive and MnlToastService for stacked feedback notifications in menlo-lib.

This covers the design-system feedback surface needed before the remaining budget-form migration work in issue #320 and ships the related tests, Storybook stories, and refreshed documentation metadata.

Closes #327
Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Migrate the budget detail page, category management flows, and item create/edit/fill-forward/delete workflows onto the shared menlo-lib design-system primitives while preserving the existing budget API behaviour and test selectors.\n\nAdd configurable test IDs to the shared form controls and panel so the migrated workspace keeps its Vitest and Playwright contracts without falling back to raw bespoke controls, and update the affected budget form specs for formatted amount input behaviour.\n\nValidation completed with pnpm format, pnpm lint, pnpm test, pnpm build, pnpm test:e2e, pnpm audit --audit-level moderate, pnpm licenses list --json, dotnet format --verify-no-changes, dotnet test Menlo.slnx, dotnet list package --vulnerable --include-transitive, and Aspire-backed HTTP/Playwright validation on localhost:4200.\n\nCloses #337\nRelates to #320\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add the Menlo chart palette helper, export it through the theme surface, and document the new chart foundation stories for the design system. This also records the required ApexCharts dependencies and refreshed generated UI documentation for the library surface.

Closes #334
Refs #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the TypeScript-only preview annotation that Storybook was serving directly to the browser and escape the literal Lucide import braces in the icons foundations story so Angular can parse the template.

Refs #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
chore: upgrade Aspire packages to version 13.3.5

fix: refactor AppHost to use AddViteApp and enable browser logs

test: enhance app routing tests for better coverage

test: improve app component tests for routing behavior

feat(toggle): implement MnlToggleComponent with improved accessibility
Add targeted app and library spec coverage for the remaining uncovered frontend branches so the PR test gate can pass locally and in CI.

Relates to #320

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The web-ui resource was showing as Running (Unhealthy) after switching from
AddJavaScriptApp to AddViteApp in feat/321-design-system-infra. The Vite
development server was binding to IPv6 only (::1:4200), while the API's reverse
proxy attempted connections via IPv4 (127.0.0.1:4200), causing the health check
to fail and reverse proxy to time out.

Fixes by:
1. Setting HOST environment variable to 127.0.0.1 in AppHost.cs
2. Explicitly configuring Vite server.host to 127.0.0.1 in vite.config.mts

Result: web-ui resource now shows Running (Healthy) and reverse proxy works
correctly.

Related: feat/321-design-system-infra
Prefer Services:web-ui:http:0 for SPA proxy resolution in development and keep connection string fallback.

Rename AppHost web-ui endpoint name from https to http to match actual HTTP endpoint configuration.

This resolves intermittent API root timeouts and blank page loads when proxying to the web-ui dev server.
@DigiBanks99 DigiBanks99 merged commit 6321f53 into main May 22, 2026
9 of 12 checks passed
@DigiBanks99 DigiBanks99 deleted the feat/321-design-system-infra branch May 22, 2026 07:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant