From 4d1c01776f0ca0de992ee24ce68b9f4c413cd76e Mon Sep 17 00:00:00 2001
From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com>
Date: Tue, 10 Mar 2026 17:46:21 -0500
Subject: [PATCH] feat(web): enhance transaction display and account management
features
---
src/FiscalOS.API/Institutions/Get/Endpoint.cs | 1 +
src/FiscalOS.API/Institutions/Get/Response.cs | 4 +
src/FiscalOS.Web/src/assets/css/reset.css | 20 +-
.../src/components/CircleSpinner.vue | 21 +
.../src/components/NavSidebar.vue | 77 ++--
.../src/components/ProtectedLayout.vue | 4 +
.../src/components/TransactionCard.vue | 63 ++-
src/FiscalOS.Web/src/router/index.ts | 22 +-
.../src/services/institutionService.ts | 3 +-
src/FiscalOS.Web/src/views/AccountsView.vue | 405 ++++++++++++++++++
src/FiscalOS.Web/src/views/HomeView.vue | 210 ---------
.../src/views/TransactionsView.vue | 60 ++-
12 files changed, 616 insertions(+), 274 deletions(-)
create mode 100644 src/FiscalOS.Web/src/components/CircleSpinner.vue
create mode 100644 src/FiscalOS.Web/src/views/AccountsView.vue
delete mode 100644 src/FiscalOS.Web/src/views/HomeView.vue
diff --git a/src/FiscalOS.API/Institutions/Get/Endpoint.cs b/src/FiscalOS.API/Institutions/Get/Endpoint.cs
index 5df5a15..27c5094 100644
--- a/src/FiscalOS.API/Institutions/Get/Endpoint.cs
+++ b/src/FiscalOS.API/Institutions/Get/Endpoint.cs
@@ -19,6 +19,7 @@ internal static class Endpoint
var user = await appDbContext.Users
.Include(u => u.Institutions)
.ThenInclude(i => i.Accounts)
+ .ThenInclude(a => a.Metadata)
.FirstOrDefaultAsync(u => u.Id == userId);
if (user is null)
diff --git a/src/FiscalOS.API/Institutions/Get/Response.cs b/src/FiscalOS.API/Institutions/Get/Response.cs
index e0aa56d..55e8e8c 100644
--- a/src/FiscalOS.API/Institutions/Get/Response.cs
+++ b/src/FiscalOS.API/Institutions/Get/Response.cs
@@ -24,6 +24,7 @@ internal sealed record Response
internal sealed record AccountDto
{
public string Id { get; init; } = string.Empty;
+ public string ProviderId { get; init; } = string.Empty;
public string Name { get; init; } = string.Empty;
[JsonConstructor]
@@ -36,6 +37,9 @@ internal sealed record AccountDto
return new()
{
Id = account.Id.ToString(),
+ ProviderId = account.Metadata is PlaidAccountMetadata plaidMetadata
+ ? plaidMetadata.PlaidId
+ : string.Empty,
Name = account.Name,
};
}
diff --git a/src/FiscalOS.Web/src/assets/css/reset.css b/src/FiscalOS.Web/src/assets/css/reset.css
index 53390eb..8dfe6f6 100644
--- a/src/FiscalOS.Web/src/assets/css/reset.css
+++ b/src/FiscalOS.Web/src/assets/css/reset.css
@@ -24,6 +24,24 @@ input {
color: inherit;
}
+select {
+ font-family: inherit;
+ font-size: inherit;
+ color: inherit;
+ background-color: inherit;
+}
+
+option {
+ font-family: inherit;
+ font-size: inherit;
+ color: inherit;
+ background-color: inherit;
+}
+
+option :hover {
+ background-color: var(--bg-element);
+}
+
a {
text-decoration: none;
color: inherit;
@@ -41,4 +59,4 @@ img {
table {
width: 100%;
border-collapse: collapse;
-}
+}
\ No newline at end of file
diff --git a/src/FiscalOS.Web/src/components/CircleSpinner.vue b/src/FiscalOS.Web/src/components/CircleSpinner.vue
new file mode 100644
index 0000000..9cb7d85
--- /dev/null
+++ b/src/FiscalOS.Web/src/components/CircleSpinner.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
diff --git a/src/FiscalOS.Web/src/components/NavSidebar.vue b/src/FiscalOS.Web/src/components/NavSidebar.vue
index 5911724..a2c3370 100644
--- a/src/FiscalOS.Web/src/components/NavSidebar.vue
+++ b/src/FiscalOS.Web/src/components/NavSidebar.vue
@@ -39,23 +39,29 @@
>
{{ transaction.description }}
+{{ transaction.description }}
-