refactor: enhance UI components and navigation structure, implement export functionality for wizard steps, and update routing for improved user experience

This commit is contained in:
Jennie Robinson Faber 2025-08-16 13:17:36 +01:00
parent 37ab8d7bab
commit d7e52293e4
18 changed files with 3802 additions and 3318 deletions

View file

@ -1,10 +1,24 @@
<template>
<div class="space-y-4">
<div>
<div class="flex items-center justify-between mb-6">
<h3 class="text-2xl font-black text-black">
<div class="max-w-4xl mx-auto space-y-6">
<!-- Section Header with Export Controls -->
<div class="flex items-center justify-between mb-8">
<div>
<h3 class="text-2xl font-black text-black mb-2">
Where will your money come from?
</h3>
<p class="text-neutral-600">
Add sources like client work, grants, product sales, or donations.
</p>
</div>
<div class="flex items-center gap-3">
<UButton
variant="outline"
color="gray"
size="sm"
@click="exportStreams">
<UIcon name="i-heroicons-arrow-down-tray" class="mr-1" />
Export
</UButton>
<UButton
v-if="streams.length > 0"
@click="addRevenueStream"
@ -29,7 +43,7 @@
No revenue streams yet
</h4>
<p class="text-sm text-neutral-500 mb-4">
Add sources like client work, grants, product sales, or donations.
Get started by adding your first revenue source.
</p>
<UButton
@click="addRevenueStream"
@ -247,4 +261,24 @@ function addRevenueStream() {
function removeStream(id: string) {
streamsStore.removeStream(id);
}
function exportStreams() {
const exportData = {
streams: streams.value,
exportedAt: new Date().toISOString(),
section: "revenue",
};
const blob = new Blob([JSON.stringify(exportData, null, 2)], {
type: "application/json",
});
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = `coop-revenue-${new Date().toISOString().split("T")[0]}.json`;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
}
</script>