-
{
- navOpen = true;
- }} class="flex items-center justify-between w-full px-4 bg-white border-b h-14 md:hidden">
+
{
+ navOpen = true;
+ }}
+ class="flex items-center justify-between w-full px-4 bg-white border-b h-14 md:hidden">
+
+
diff --git a/src/components/donations/AddDonationModal.svelte b/src/components/donations/AddDonationModal.svelte
new file mode 100644
index 00000000..f6858e6d
--- /dev/null
+++ b/src/components/donations/AddDonationModal.svelte
@@ -0,0 +1,288 @@
+
+
+
+
+{#if modal_open}
+
{
+ modal_open = false;
+ }}>
+
+
+
+
+
+
+
+
+
+
+ {#if is_fixed}{$_('create-a-new-fixed-donation')}{:else}{$_('create-a-new-distance-donation')}{/if}
+
+
+
+
+ {$_('please-provide-the-nessecary-information-to-create-a-new-donation')}
+
+
+
+
+
+
+
+ {#if !is_fixed}
+
+
+
+
+ {/if}
+
+
+
+
+ €
+
+ {#if !is_amount_valid}
+
+ {$_('donation-amount-must-be-greater-that-0-00eur')}
+
+ {/if}
+
+
+
+
+
+
+
+
+
+
+
+
+{/if}
diff --git a/src/components/donations/DonationDetail.svelte b/src/components/donations/DonationDetail.svelte
new file mode 100644
index 00000000..3c770589
--- /dev/null
+++ b/src/components/donations/DonationDetail.svelte
@@ -0,0 +1,265 @@
+
+
+{#await donor_promise && runner_promise && promise}
+ {$_('loading-donation-details')}
+{:then}
+
+
+
+
+
+ {$_('total-donation-amount')}:
+ {(editable.amount / 100)
+ .toFixed(2)
+ .toLocaleString('de-DE', { valute: 'EUR' })}€
+
+
+
+
+
+ {#if original_data.responseType == 'DISTANCEDONATION'}
+
+
+
+
+ {/if}
+
+
+
+
+ €
+
+ {#if !is_amount_valid}
+
+ {$_('donation-amount-must-be-greater-that-0-00eur')}
+
+ {/if}
+
+
+{:catch error}
+
+{/await}
diff --git a/src/components/donations/Donations.svelte b/src/components/donations/Donations.svelte
new file mode 100644
index 00000000..629e65c1
--- /dev/null
+++ b/src/components/donations/Donations.svelte
@@ -0,0 +1,29 @@
+
+
+
+
+{#if store.state.jwtinfo.userdetails.permissions.includes('DONATION:CREATE')}
+
+{/if}
diff --git a/src/components/donations/DonationsEmptyState.svelte b/src/components/donations/DonationsEmptyState.svelte
new file mode 100644
index 00000000..d19419bd
--- /dev/null
+++ b/src/components/donations/DonationsEmptyState.svelte
@@ -0,0 +1,12 @@
+
+
+
+
+
+ There are no donations yet
+ add your fist donation
+
+
diff --git a/src/components/donations/DonationsOverview.svelte b/src/components/donations/DonationsOverview.svelte
new file mode 100644
index 00000000..d067c1f6
--- /dev/null
+++ b/src/components/donations/DonationsOverview.svelte
@@ -0,0 +1,202 @@
+
+
+{#if store.state.jwtinfo.userdetails.permissions.includes('DONATION:GET')}
+ {#await donations_promise}
+
+
donations are being loaded
+
{$_('this-might-take-a-moment')}
+
+ {:then}
+ {#if current_donations.length === 0}
+
+ {:else}
+
+
+ {/if}
+ {:catch error}
+
+
+ {$_('general_promise_error')}
+ {error}
+
+
+ {/await}
+{/if}
diff --git a/src/components/donations/donations.svg b/src/components/donations/donations.svg
new file mode 100644
index 00000000..13a97190
--- /dev/null
+++ b/src/components/donations/donations.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/donors/AddDonorModal.svelte b/src/components/donors/AddDonorModal.svelte
new file mode 100644
index 00000000..aa85749f
--- /dev/null
+++ b/src/components/donors/AddDonorModal.svelte
@@ -0,0 +1,404 @@
+
+
+{#if modal_open}
+
{
+ modal_open = false;
+ }}>
+
+
+
+
+
+
+
+
+
+ {$_('create-a-new-donor')}
+
+
+
+ {$_('please-provide-the-nessecary-information-to-add-a-new-donor')}
+
+
+
+
+
+
+
+
+
+
+
+
+
+{/if}
diff --git a/src/components/donors/ConfirmDonorDeletion.svelte b/src/components/donors/ConfirmDonorDeletion.svelte
new file mode 100644
index 00000000..01100045
--- /dev/null
+++ b/src/components/donors/ConfirmDonorDeletion.svelte
@@ -0,0 +1,92 @@
+
+
+{#if modal_open}
+
+
+
+
+
+
+
+
+
+
+ {$_('attention')}
+
+
+
+ {$_(
+ 'do-you-want-to-delete-this-donor-with-all-related-donations'
+ )}
+
+ {$_('all-associated-donations-will-get-deleted-as-well')}
+
+
+
+
+
+
+
+
+
+
+
+
+{/if}
diff --git a/src/components/donors/DonorDetail.svelte b/src/components/donors/DonorDetail.svelte
new file mode 100644
index 00000000..bb88f84a
--- /dev/null
+++ b/src/components/donors/DonorDetail.svelte
@@ -0,0 +1,406 @@
+
+
+
+{#await promise && donation_promise}
+ {$_('loading-donor-details')}
+{:then}
+
+{:catch error}
+
+{/await}
diff --git a/src/components/donors/Donors.svelte b/src/components/donors/Donors.svelte
new file mode 100644
index 00000000..b879b8d0
--- /dev/null
+++ b/src/components/donors/Donors.svelte
@@ -0,0 +1,29 @@
+
+
+
+
+{#if store.state.jwtinfo.userdetails.permissions.includes('DONOR:CREATE')}
+
+{/if}
diff --git a/src/components/donors/DonorsEmptyState.svelte b/src/components/donors/DonorsEmptyState.svelte
new file mode 100644
index 00000000..4cf520a3
--- /dev/null
+++ b/src/components/donors/DonorsEmptyState.svelte
@@ -0,0 +1,12 @@
+
+
+
+
+
+ {$_('there-are-no-donors-yet')}
+ {$_('add-your-first-donor')}
+
+
diff --git a/src/components/donors/DonorsOverview.svelte b/src/components/donors/DonorsOverview.svelte
new file mode 100644
index 00000000..86ddf16a
--- /dev/null
+++ b/src/components/donors/DonorsOverview.svelte
@@ -0,0 +1,212 @@
+
+
+
{
+ modal_open = false;
+ active_deletes[event.detail.id] = false;
+ }}
+ bind:modal_open
+ bind:delete_donor />
+{#if store.state.jwtinfo.userdetails.permissions.includes('DONOR:GET')}
+ {#await donors_promise && donation_promise}
+
+
{$_('donors-are-being-loaded')}
+
{$_('this-might-take-a-moment')}
+
+ {:then}
+ {#if current_donors.length === 0}
+
+ {:else}
+
+
+ {/if}
+ {:catch error}
+
+
+ {$_('general_promise_error')}
+ {error}
+
+
+ {/await}
+{/if}
diff --git a/src/components/donors/donors_empty.svg b/src/components/donors/donors_empty.svg
new file mode 100644
index 00000000..6602b11a
--- /dev/null
+++ b/src/components/donors/donors_empty.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/orgs/AddOrgModal.svelte b/src/components/orgs/AddOrgModal.svelte
index 5ea70162..05e3e637 100644
--- a/src/components/orgs/AddOrgModal.svelte
+++ b/src/components/orgs/AddOrgModal.svelte
@@ -167,17 +167,17 @@
+ class="font-medium text-gray-700">{$_('address')}
{#if address_checked === true}