- {#each filteredReceipts as receipt (receipt.id)}
+
+
+ {#each STATUS_OPTIONS as status}
+ {@const count = status === "New" ? countNew : status === "Data Entered" ? countDataEntered : null}
+
+ {/each}
+
+
+ {#if tabReceipts.length === 0}
-
-
- {userName(receipt)}
-
-
- {receipt.Type ?? "—"}
- {receipt.Status ?? "—"}
-
- {formatDateLocal(receipt.created)}
-
-
+
+ No receipts with status “{activeTab}”.
- {/each}
+ {:else}
+
+ {/if}
{/if}
@@ -127,8 +224,8 @@
action="/receipts?/create"
submitLabel="Create"
error={form?.error}
- defaultType={form?.Type ?? "Purchase"}
- defaultDescription={form?.Description ?? ""}
+ defaultType={(form as { Type?: string })?.Type ?? "Purchase"}
+ defaultDescription={(form as { Description?: string })?.Description ?? ""}
onSuccess={onReceiptCreateSuccess}
/>
diff --git a/src/routes/receipts/[id]/+page.server.ts b/src/routes/receipts/[id]/+page.server.ts
index 0181ba9c..bd93ceed 100644
--- a/src/routes/receipts/[id]/+page.server.ts
+++ b/src/routes/receipts/[id]/+page.server.ts
@@ -1,14 +1,13 @@
import { error, fail, redirect } from "@sveltejs/kit";
import type { Actions, PageServerLoad } from "./$types";
-import type { StackqReceipt } from "$lib/types/receipts";
-import type { ReceiptDataShape } from "$lib/types/receipts";
+import type { StackqReceipt, ReceiptDataShape } from "$lib/types/receipts";
+import { STATUS_OPTIONS } from "$lib/types/receipts";
import { convertHeicFileToJpegIfNeeded } from "$lib/convert-heic-server";
import { parseNumWithDefault } from "$lib/parse-form";
import { validateImageUpload } from "$lib/validate-image-upload";
const COLLECTION = "Stackq_Receipts";
-const STATUS_OPTIONS = ["New", "Data Entered", "Reviewed", "Consolidated"] as const;
const TYPE_OPTIONS = ["Purchase", "Gas"] as const;
const MAX_LINE_ITEMS = 500;
diff --git a/src/routes/receipts/[id]/+page.svelte b/src/routes/receipts/[id]/+page.svelte
index d26f6082..6b74bbd5 100644
--- a/src/routes/receipts/[id]/+page.svelte
+++ b/src/routes/receipts/[id]/+page.svelte
@@ -13,11 +13,10 @@
import ChevronDownIcon from "@lucide/svelte/icons/chevron-down";
import ChevronUpIcon from "@lucide/svelte/icons/chevron-up";
import Loader2Icon from "@lucide/svelte/icons/loader-2";
- import type { StackqReceipt } from "$lib/types/receipts";
- import type { ReceiptLineItem } from "$lib/types/receipts";
+ import type { StackqReceipt, ReceiptLineItem } from "$lib/types/receipts";
+ import { STATUS_OPTIONS } from "$lib/types/receipts";
const COLLECTION = "Stackq_Receipts";
- const STATUS_OPTIONS = ["New", "Data Entered", "Reviewed", "Consolidated"] as const;
const TYPE_OPTIONS = ["Purchase", "Gas"] as const;
let { data, form }: { data: { receipt: StackqReceipt }; form?: { error?: string; form?: string } } = $props();