Skip to content

feat: invoice versioning UI, multilingual i18n, advanced filtering & bookmarks - #840

Merged
Kingsman-99 merged 1 commit into
Stellar-split:mainfrom
shake-070:feat/invoice-versioning-i18n-filtering-bookmarking
Sep 28, 2026
Merged

Kingsman-99 merged 1 commit into
Stellar-split:mainfrom
shake-070:feat/invoice-versioning-i18n-filtering-bookmarking

Conversation

@shake-070

Copy link
Copy Markdown

Summary

This PR implements four feature issues in a single, cohesive batch, adding first-class invoice management tools to StellarSplit.


#802 — Invoice Versioning UI

Significantly enhanced with a full version-management experience:

  • Version number badges — every history entry is labelled v1, v2… with a latest indicator on the newest entry.
  • Side-by-side comparison — select up to 2 versions and open a modal that diffs each changed field column-by-column.
  • Restore — a per-entry Restore button (hidden for latest) prompts a confirmation modal before queuing the restore, then shows an inline success notice.
  • Existing diff panel (Show diff / Hide diff) is preserved and fully compatible with the new version UI.

Closes #802


#803 — Multilingual i18n

Added complete translation key sets for all three new feature groups (versionHistory, advancedFilters, bookmarks) to all four locale files:

Locale File
English src/messages/en.json
Spanish src/messages/es.json
Portuguese src/messages/pt.json
French src/messages/fr.json

Every label, placeholder, error message, and ARIA string used by the new components is covered.

Closes #803


#804 — Advanced Invoice Filtering

New useAdvancedInvoiceFilters hook + AdvancedInvoiceFilters component:

  • Amount range — min/max USDC inputs filter invoices by total recipient amount.
  • Tag multi-select — autocomplete-powered tag picker with keyboard support (Enter/comma to add, Backspace to remove last tag).
  • Creator address — partial-match filter on the Stellar public key of the invoice creator.
  • Active-filter badge on the trigger button shows the count of active rules at a glance.
  • All rules are persisted to localStorage so the session survives a page reload.
  • Collapsible panel with outside-click and Escape key dismissal.

Closes #804


#805 — Invoice Bookmarking & Collections

New useInvoiceBookmarks hook + InvoiceCollectionsPanel / BookmarkButton components:

  • Bookmark toggle — one-click bookmark/unbookmark with optional note; persisted to localStorage.
  • Named collections — create, rename, and delete collections with duplicate-name validation.
  • Add/remove invoices from any collection via dropdown or checkbox menu.
  • BookmarkButton is a standalone icon button ready to drop into any invoice card or detail page.
  • InvoiceBookmarkActions combines the bookmark toggle with a collections picker for the invoice detail view.
  • InvoiceCollectionsPanel provides a full management UI with Bookmarks and Collections tabs, collection drill-down, and inline rename/delete.

Closes #805


Files changed

File Change
src/components/VersionHistory.tsx Enhanced — version numbers, comparison modal, restore
src/components/AdvancedInvoiceFilters.tsx New — collapsible filter panel
src/components/InvoiceCollectionsPanel.tsx New — bookmark & collections UI
src/hooks/useAdvancedInvoiceFilters.ts New — filter rules hook + applyAdvancedFilters helper
src/hooks/useInvoiceBookmarks.ts New — bookmarks & collections hook
src/messages/en.json i18n keys for all new features
src/messages/es.json Spanish translations
src/messages/pt.json Portuguese translations
src/messages/fr.json French translations

…llar-split#802 Stellar-split#803 Stellar-split#804 Stellar-split#805)

- Stellar-split#802: Enhance VersionHistory component with version number badges (v1, v2…),
  'latest' indicator, select-for-comparison checkboxes, side-by-side
  ComparisonView modal, Restore button with confirmation modal, and
  post-restore toast notification.

- Stellar-split#803: Add multilingual i18n keys for all new features (versionHistory,
  advancedFilters, bookmarks) to all four locale files: en, es, pt, fr.

- Stellar-split#804: Implement useAdvancedInvoiceFilters hook with localStorage persistence
  and applyAdvancedFilters helper. Add AdvancedInvoiceFilters UI component with
  collapsible panel, amount range (min/max USDC), tag multi-select with
  autocomplete, creator address filter, active-filter badge, and mobile-
  responsive layout.

- Stellar-split#805: Implement useInvoiceBookmarks hook with localStorage persistence for
  bookmarks (with notes) and named collections (CRUD). Add
  InvoiceCollectionsPanel component with bookmarks tab, collections tab,
  create/rename/delete collections, add/remove invoices from collections,
  and BookmarkButton / InvoiceBookmarkActions sub-components.
@drips-wave

drips-wave Bot commented Sep 27, 2026

Copy link
Copy Markdown

@shake-070 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@vercel

vercel Bot commented Sep 27, 2026

Copy link
Copy Markdown

@shake-070 is attempting to deploy a commit to the kingsman-99's projects Team on Vercel.

A member of the Team first needs to authorize it.

@Kingsman-99
Kingsman-99 merged commit 456ecdf into Stellar-split:main Sep 28, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants