Skip to content

feat(budget-sources): hierarchical area tree + dense columnar line rows#1285

Merged
steilerDev merged 2 commits into
betafrom
feat/source-lines-ux-refinement
Apr 18, 2026
Merged

feat(budget-sources): hierarchical area tree + dense columnar line rows#1285
steilerDev merged 2 commits into
betafrom
feat/source-lines-ux-refinement

Conversation

@steilerDev
Copy link
Copy Markdown
Owner

Summary

User feedback on the budget-source-lines panel:

  • Denser rows
  • Area headers show full hierarchy (indentation + ancestor hint)
  • Hierarchical area tree — nested areas render nested, with cascading selection (check a parent area → all descendants selected)
  • Parent-item groups visually separated by a left-border accent
  • Dropped badges in favour of a 5-column row layout: checkbox | description | type | status | amount
  • New i18n keys for localized invoice status ("Paid" / "Claimed" / "Pending" / "Quotation" / "Not invoiced") and ancestor hint

Test plan

  • Typecheck clean
  • Stylelint clean
  • 54 unit tests pass (refactored for new markup)
  • CI Quality Gates green
  • E2E tests still pass against the new DOM structure

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

User feedback on source-lines panel:

- Denser line rows — reduce vertical padding to var(--spacing-0-5)
- Area headers now show own name with indentation by depth; ancestor
  chain rendered as a muted "under Ground Floor" hint below the name
- Areas render hierarchically: nested areas are children of their
  parent in the display, indented by depth
- Area group checkbox now cascades selection across the entire subtree
  (descendant areas + their lines), tri-state reflects subtree state
- Parent-item blocks separated by a left-border accent for clear
  visual grouping
- Line row grid expanded to 5 columns: checkbox | description | type
  | status | amount. Budget type = confidence label; budget status =
  localized invoice status ("Paid" / "Claimed" / "Pending" / ...) or
  "Not invoiced" when no invoice is linked. Category/vendor subtext
  dropped to reduce visual noise
- Mobile falls back to 2-row layout with type · status below

New i18n keys under sources.lines.* (English only — translator
handles DE):
  invoiceStatus.{none, pending, paid, claimed, quotation}
  underArea

Co-Authored-By: Claude frontend-developer (Haiku) <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

Thank you for your submission! We require all contributors to sign our Contributor License Agreement before we can accept your contribution.

To sign, please comment on this PR with:
I have read the CLA Document and I hereby sign the CLA


I have read the CLA Document and I hereby sign the CLA


Frank Steiler seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot.

… mocks

Component crashed when area.ancestors was undefined (older mock fixtures
and any pre-field callers). Add nullish-coalescing defaults throughout
the tree-build. Also update E2E area mocks to include ancestors: [] so
they match the production response shape.

Co-Authored-By: Claude frontend-developer (Haiku) <noreply@anthropic.com>
Co-Authored-By: Claude e2e-test-engineer (Sonnet 4.6) <noreply@anthropic.com>
@steilerDev steilerDev merged commit 54f9461 into beta Apr 18, 2026
27 of 32 checks passed
@steilerDev steilerDev deleted the feat/source-lines-ux-refinement branch April 18, 2026 13:04
@github-actions github-actions Bot locked and limited conversation to collaborators Apr 18, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant