From 89bbf560623d5311ebf5efc7b1acb930730990f8 Mon Sep 17 00:00:00 2001 From: h Date: Fri, 16 Oct 2026 03:38:31 +0000 Subject: [PATCH] feat(budgets,categories,tags): in-place limits with pace, category shares, tag tree and clean-up --- src/lib/components/budgets/BudgetForm.svelte | 205 +++++++ src/lib/components/budgets/LimitCell.svelte | 148 +++++ src/lib/components/budgets/MeterBar.svelte | 42 ++ src/lib/components/budgets/NoBudget.svelte | 68 +++ src/lib/components/budgets/PeriodNav.svelte | 82 +++ src/lib/components/budgets/PoolBox.svelte | 146 +++++ src/lib/components/budgets/ShowBudget.svelte | 354 ++++++++++++ src/lib/components/budgets/data.ts | 283 ++++++++++ .../components/budgets/period-path.svelte.ts | 34 ++ .../components/categories/BreakdownBox.svelte | 64 +++ .../components/categories/CategoryForm.svelte | 107 ++++ .../components/categories/CurrencyTabs.svelte | 28 + src/lib/components/categories/Field.svelte | 27 + .../components/categories/GroupsBox.svelte | 47 ++ src/lib/components/categories/ListMenu.svelte | 70 +++ .../components/categories/MoneyList.svelte | 29 + .../components/categories/NoCategory.svelte | 68 +++ .../components/categories/PeriodList.svelte | 60 +++ .../categories/PeriodSidebar.svelte | 65 +++ .../components/categories/ShowCategory.svelte | 185 +++++++ src/lib/components/categories/data.ts | 89 +++ src/lib/components/categories/flow.ts | 56 ++ src/lib/components/categories/form.ts | 20 + src/lib/components/categories/sums.ts | 243 +++++++++ src/lib/components/categories/url.ts | 13 + src/lib/components/tags/Duplicates.svelte | 115 ++++ src/lib/components/tags/MergeField.svelte | 123 +++++ src/lib/components/tags/RenameField.svelte | 111 ++++ src/lib/components/tags/ShowTag.svelte | 280 ++++++++++ src/lib/components/tags/TagForm.svelte | 113 ++++ src/lib/components/tags/actions.ts | 98 ++++ src/lib/components/tags/tree.ts | 221 ++++++++ src/routes/+layout.svelte | 2 +- .../[[start=date]]/[[end=date]]/+page.svelte | 508 ++++++++++++++++++ src/routes/budgets/create/+page.svelte | 10 + src/routes/budgets/delete/[id=id]/+page.ts | 5 + src/routes/budgets/edit/[id=id]/+page.svelte | 31 ++ .../[[start=date]]/[[end=date]]/+page.svelte | 5 + .../budgets/list/no-budget/all/+page.svelte | 5 + .../show/[id=id]/[[limit=id]]/+page.svelte | 8 + src/routes/categories/+page.svelte | 362 +++++++++++++ src/routes/categories/create/+page.svelte | 10 + src/routes/categories/delete/[id=id]/+page.ts | 5 + .../categories/edit/[id=id]/+page.svelte | 31 ++ .../[[start=date]]/[[end=date]]/+page.svelte | 5 + .../list/no-category/all/+page.svelte | 5 + .../[[start=date]]/[[end=date]]/+page.svelte | 8 + .../categories/show/[id=id]/all/+page.svelte | 8 + src/routes/tags/+page.svelte | 472 ++++++++++++++++ src/routes/tags/create/+page.svelte | 10 + src/routes/tags/delete/[tag]/+page.ts | 5 + src/routes/tags/edit/[tag]/+page.svelte | 31 ++ .../[[start=date]]/[[end=date]]/+page.svelte | 8 + src/routes/tags/show/[tag]/all/+page.svelte | 8 + 54 files changed, 5135 insertions(+), 1 deletion(-) create mode 100644 src/lib/components/budgets/BudgetForm.svelte create mode 100644 src/lib/components/budgets/LimitCell.svelte create mode 100644 src/lib/components/budgets/MeterBar.svelte create mode 100644 src/lib/components/budgets/NoBudget.svelte create mode 100644 src/lib/components/budgets/PeriodNav.svelte create mode 100644 src/lib/components/budgets/PoolBox.svelte create mode 100644 src/lib/components/budgets/ShowBudget.svelte create mode 100644 src/lib/components/budgets/data.ts create mode 100644 src/lib/components/budgets/period-path.svelte.ts create mode 100644 src/lib/components/categories/BreakdownBox.svelte create mode 100644 src/lib/components/categories/CategoryForm.svelte create mode 100644 src/lib/components/categories/CurrencyTabs.svelte create mode 100644 src/lib/components/categories/Field.svelte create mode 100644 src/lib/components/categories/GroupsBox.svelte create mode 100644 src/lib/components/categories/ListMenu.svelte create mode 100644 src/lib/components/categories/MoneyList.svelte create mode 100644 src/lib/components/categories/NoCategory.svelte create mode 100644 src/lib/components/categories/PeriodList.svelte create mode 100644 src/lib/components/categories/PeriodSidebar.svelte create mode 100644 src/lib/components/categories/ShowCategory.svelte create mode 100644 src/lib/components/categories/data.ts create mode 100644 src/lib/components/categories/flow.ts create mode 100644 src/lib/components/categories/form.ts create mode 100644 src/lib/components/categories/sums.ts create mode 100644 src/lib/components/categories/url.ts create mode 100644 src/lib/components/tags/Duplicates.svelte create mode 100644 src/lib/components/tags/MergeField.svelte create mode 100644 src/lib/components/tags/RenameField.svelte create mode 100644 src/lib/components/tags/ShowTag.svelte create mode 100644 src/lib/components/tags/TagForm.svelte create mode 100644 src/lib/components/tags/actions.ts create mode 100644 src/lib/components/tags/tree.ts create mode 100644 src/routes/budgets/[[start=date]]/[[end=date]]/+page.svelte create mode 100644 src/routes/budgets/create/+page.svelte create mode 100644 src/routes/budgets/delete/[id=id]/+page.ts create mode 100644 src/routes/budgets/edit/[id=id]/+page.svelte create mode 100644 src/routes/budgets/list/no-budget/[[start=date]]/[[end=date]]/+page.svelte create mode 100644 src/routes/budgets/list/no-budget/all/+page.svelte create mode 100644 src/routes/budgets/show/[id=id]/[[limit=id]]/+page.svelte create mode 100644 src/routes/categories/+page.svelte create mode 100644 src/routes/categories/create/+page.svelte create mode 100644 src/routes/categories/delete/[id=id]/+page.ts create mode 100644 src/routes/categories/edit/[id=id]/+page.svelte create mode 100644 src/routes/categories/list/no-category/[[start=date]]/[[end=date]]/+page.svelte create mode 100644 src/routes/categories/list/no-category/all/+page.svelte create mode 100644 src/routes/categories/show/[id=id]/[[start=date]]/[[end=date]]/+page.svelte create mode 100644 src/routes/categories/show/[id=id]/all/+page.svelte create mode 100644 src/routes/tags/+page.svelte create mode 100644 src/routes/tags/create/+page.svelte create mode 100644 src/routes/tags/delete/[tag]/+page.ts create mode 100644 src/routes/tags/edit/[tag]/+page.svelte create mode 100644 src/routes/tags/show/[tag]/[[start=date]]/[[end=date]]/+page.svelte create mode 100644 src/routes/tags/show/[tag]/all/+page.svelte diff --git a/src/lib/components/budgets/BudgetForm.svelte b/src/lib/components/budgets/BudgetForm.svelte new file mode 100644 index 0000000..21f6c0b --- /dev/null +++ b/src/lib/components/budgets/BudgetForm.svelte @@ -0,0 +1,205 @@ + + +
+
+ + + + + {#if budget} + + + + {/if} + + + + + + {#if autoType !== "none"} + + + + + + + + + + {/if} + {#if budget} + +