Compare commits
	
		
			19 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						827fb317bc
	
				 | 
					
					
						|||
| 
						
						
							
						
						edd5da89a7
	
				 | 
					
					
						|||
| 
						
						
							
						
						27187b428d
	
				 | 
					
					
						|||
| 
						
						
							
						
						e28f543d89
	
				 | 
					
					
						|||
| 
						
						
							
						
						1ec8e2186b
	
				 | 
					
					
						|||
| 
						
						
							
						
						657fb04f1b
	
				 | 
					
					
						|||
| 
						
						
							
						
						dc1e6b7a67
	
				 | 
					
					
						|||
| 
						
						
							
						
						77a432817e
	
				 | 
					
					
						|||
| 
						
						
							
						
						31a4ff9d90
	
				 | 
					
					
						|||
| 
						
						
							
						
						cb315d94fd
	
				 | 
					
					
						|||
| 
						
						
							
						
						32f72df105
	
				 | 
					
					
						|||
| 
						
						
							
						
						724e84441e
	
				 | 
					
					
						|||
| 
						
						
							
						
						ecd418c5db
	
				 | 
					
					
						|||
| 
						
						
							
						
						5dcb4cb508
	
				 | 
					
					
						|||
| 
						
						
							
						
						9c03e359a4
	
				 | 
					
					
						|||
| 
						
						
							
						
						1505080afd
	
				 | 
					
					
						|||
| 
						
						
							
						
						8cb6093f0b
	
				 | 
					
					
						|||
| 
						
						
							
						
						7a92adcd3a
	
				 | 
					
					
						|||
| 
						
						
							
						
						27396e17f2
	
				 | 
					
					
						
							
								
								
									
										33
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -2,9 +2,42 @@
 | 
			
		||||
 | 
			
		||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
 | 
			
		||||
 | 
			
		||||
#### [1.12.1](https://git.odit.services/lfk/frontend/compare/1.12.0...1.12.1)
 | 
			
		||||
 | 
			
		||||
- fix(donations): Don't show enter payment for anon donations [`32f72df`](https://git.odit.services/lfk/frontend/commit/32f72df10583a08efb26e0983c0c5c829ab03e19)
 | 
			
		||||
- chore(deps): Fresh lock [`1ec8e21`](https://git.odit.services/lfk/frontend/commit/1ec8e2186bdcd69c2acbc785feef4927973bc986)
 | 
			
		||||
- fix(donations): Support anon donations in deletion modal [`27187b4`](https://git.odit.services/lfk/frontend/commit/27187b428da1e757f85392d77d49670f51a19829)
 | 
			
		||||
- fix(donations): Don't show details for anon donations [`ecd418c`](https://git.odit.services/lfk/frontend/commit/ecd418c5db0910d64cdf5336d72a10ebff38e065)
 | 
			
		||||
- refactor(i18n): Update translations [`77a4328`](https://git.odit.services/lfk/frontend/commit/77a432817ef644ff1be8a5ebcd284b7d67f742bd)
 | 
			
		||||
- fix(donations): Remove paid from anon donations [`31a4ff9`](https://git.odit.services/lfk/frontend/commit/31a4ff9d909742df3ed3d6cecae57870e287afcc)
 | 
			
		||||
- fix(donations): Move amount to extra line [`edd5da8`](https://git.odit.services/lfk/frontend/commit/edd5da89a7e741d48078125f68b6dd6d3d88a7a1)
 | 
			
		||||
- refactor(i18n): Shortened translation [`657fb04`](https://git.odit.services/lfk/frontend/commit/657fb04f1b5b439ef5fac834740ba00548b758de)
 | 
			
		||||
- feat(donation): Use new endpoint for creating anon donations [`e28f543`](https://git.odit.services/lfk/frontend/commit/e28f543d89efff80a84131df59bfb26a5ea92d14)
 | 
			
		||||
- fix(donations): Translate modal title [`dc1e6b7`](https://git.odit.services/lfk/frontend/commit/dc1e6b7a67c4761a007ffe3b71fd851fb569fb7c)
 | 
			
		||||
- chore(deps): Bump @odit/lfk-client-js [`cb315d9`](https://git.odit.services/lfk/frontend/commit/cb315d94fd2331bd49aa6d54b9ca0bfbf11f00d9)
 | 
			
		||||
- feat(shared): Hide link while keeping width [`724e844`](https://git.odit.services/lfk/frontend/commit/724e84441e8b71b7d89a8c3804467edebfd58365)
 | 
			
		||||
 | 
			
		||||
#### [1.12.0](https://git.odit.services/lfk/frontend/compare/1.11.5...1.12.0)
 | 
			
		||||
 | 
			
		||||
> 28 April 2025
 | 
			
		||||
 | 
			
		||||
- feat: anonymous donations [`9c03e35`](https://git.odit.services/lfk/frontend/commit/9c03e359a4e8f43452475b02bcabcb354987ab75)
 | 
			
		||||
- refactor: use modern tailwindcss features [`1505080`](https://git.odit.services/lfk/frontend/commit/1505080afdd8b272b76584e2777df732001ce004)
 | 
			
		||||
- chore(release): 1.12.0 [`5dcb4cb`](https://git.odit.services/lfk/frontend/commit/5dcb4cb508b204c5634804811a9f37db78e764ce)
 | 
			
		||||
 | 
			
		||||
#### [1.11.5](https://git.odit.services/lfk/frontend/compare/1.11.4...1.11.5)
 | 
			
		||||
 | 
			
		||||
> 25 April 2025
 | 
			
		||||
 | 
			
		||||
- chore(release): 1.11.5 [`8cb6093`](https://git.odit.services/lfk/frontend/commit/8cb6093f0b3474c0952a8a51a47683262fc31f8f)
 | 
			
		||||
- fix(cards): Update table for edit events [`27396e1`](https://git.odit.services/lfk/frontend/commit/27396e17f2cd8be72c9c8100afe6ec75ac66dceb)
 | 
			
		||||
 | 
			
		||||
#### [1.11.4](https://git.odit.services/lfk/frontend/compare/1.11.3...1.11.4)
 | 
			
		||||
 | 
			
		||||
> 25 April 2025
 | 
			
		||||
 | 
			
		||||
- feat(CardAssign): styled buttons [`f9993c6`](https://git.odit.services/lfk/frontend/commit/f9993c60f565d7270b3a269e934b42b945c24b99)
 | 
			
		||||
- chore(release): 1.11.4 [`fefd5c8`](https://git.odit.services/lfk/frontend/commit/fefd5c8237b91ac7fd7ecf467a6feb1100f84811)
 | 
			
		||||
- feat(CardAssignment): support EAN13 [`8e314f8`](https://git.odit.services/lfk/frontend/commit/8e314f8676e5c189c09a33c9a382a8b984af5e30)
 | 
			
		||||
 | 
			
		||||
#### [1.11.3](https://git.odit.services/lfk/frontend/compare/1.11.2...1.11.3)
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
 | 
			
		||||
  <body>
 | 
			
		||||
    <span style="display: none; visibility: hidden" id="buildinfo"
 | 
			
		||||
      >RELEASE_INFO-1.11.4-RELEASE_INFO</span
 | 
			
		||||
      >RELEASE_INFO-1.12.1-RELEASE_INFO</span
 | 
			
		||||
    >
 | 
			
		||||
    <noscript>You need to enable JavaScript to run this app.</noscript>
 | 
			
		||||
    <script src="/env.js"></script>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "@odit/lfk-frontend",
 | 
			
		||||
  "version": "1.11.4",
 | 
			
		||||
  "version": "1.12.1",
 | 
			
		||||
  "type": "module",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "i18n-order": "node order.js",
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@bwip-js/browser": "^4.6.0",
 | 
			
		||||
    "@fontsource/athiti": "^5.2.5",
 | 
			
		||||
    "@odit/lfk-client-js": "1.2.4",
 | 
			
		||||
    "@odit/lfk-client-js": "1.2.5",
 | 
			
		||||
    "@paralleldrive/cuid2": "2.2.2",
 | 
			
		||||
    "@tailwindcss/vite": "^4.1.4",
 | 
			
		||||
    "@tanstack/svelte-table": "8.9.1",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							@@ -15,8 +15,8 @@ importers:
 | 
			
		||||
        specifier: ^5.2.5
 | 
			
		||||
        version: 5.2.5
 | 
			
		||||
      '@odit/lfk-client-js':
 | 
			
		||||
        specifier: 1.2.4
 | 
			
		||||
        version: 1.2.4
 | 
			
		||||
        specifier: 1.2.5
 | 
			
		||||
        version: 1.2.5
 | 
			
		||||
      '@paralleldrive/cuid2':
 | 
			
		||||
        specifier: 2.2.2
 | 
			
		||||
        version: 2.2.2
 | 
			
		||||
@@ -491,8 +491,8 @@ packages:
 | 
			
		||||
  '@octokit/types@13.10.0':
 | 
			
		||||
    resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==}
 | 
			
		||||
 | 
			
		||||
  '@odit/lfk-client-js@1.2.4':
 | 
			
		||||
    resolution: {integrity: sha512-eJRsjtpMm/VsQ1v2I+inMWCZmzL+WoOvsA+hj8IGsyCVn0td+z/HAwQ0SuXXNZpLPL3qSlENHXjFNrgztExEgA==}
 | 
			
		||||
  '@odit/lfk-client-js@1.2.5':
 | 
			
		||||
    resolution: {integrity: sha512-a5vwqpjFXB5cVOCmjC/tZVi9OXJS8aMesNidSqwK2cwA/oC5yTJAqxKXGDhq9k/JLLipVGDJdaKMYmYVzRWkgA==}
 | 
			
		||||
 | 
			
		||||
  '@odit/license-exporter@0.2.0':
 | 
			
		||||
    resolution: {integrity: sha512-RRyfQzDLoyLQlGSd8ThJQ3h0fiCe4tkmm935AUvSVQWP+p88FcnI4iaktKBJJVBnIpDhkv/7sDSA5dFc/QMM5w==}
 | 
			
		||||
@@ -2412,7 +2412,7 @@ snapshots:
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@octokit/openapi-types': 24.2.0
 | 
			
		||||
 | 
			
		||||
  '@odit/lfk-client-js@1.2.4': {}
 | 
			
		||||
  '@odit/lfk-client-js@1.2.5': {}
 | 
			
		||||
 | 
			
		||||
  '@odit/license-exporter@0.2.0':
 | 
			
		||||
    dependencies:
 | 
			
		||||
 
 | 
			
		||||
@@ -122,7 +122,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
 
 | 
			
		||||
@@ -115,7 +115,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
 
 | 
			
		||||
@@ -109,7 +109,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
@@ -162,7 +162,7 @@
 | 
			
		||||
                      name="enabled"
 | 
			
		||||
                      type="checkbox"
 | 
			
		||||
                      checked={editable.enabled}
 | 
			
		||||
                      class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
                      class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
                    />
 | 
			
		||||
                    {$_("this-card-is")}
 | 
			
		||||
                    {#if editable.enabled}
 | 
			
		||||
 
 | 
			
		||||
@@ -180,11 +180,9 @@
 | 
			
		||||
    bind:runner
 | 
			
		||||
    bind:editable
 | 
			
		||||
    bind:original_data
 | 
			
		||||
    on:dataUpdated={(event) => {
 | 
			
		||||
      current_cards[
 | 
			
		||||
        current_cards.findIndex((c) => c.id === event.detail.card.id)
 | 
			
		||||
      ] = event.detail.card;
 | 
			
		||||
      current_cards = current_cards;
 | 
			
		||||
    on:dataUpdated={(editevent) => {
 | 
			
		||||
      console.log(editevent.detail.card)
 | 
			
		||||
      current_cards = current_cards.filter((c) => c.id !== editevent.detail.card.id).concat([editevent.detail.card]).sort((a, b) => a.code - b.code);
 | 
			
		||||
      options.update((options) => ({
 | 
			
		||||
        ...options,
 | 
			
		||||
        data: current_cards,
 | 
			
		||||
 
 | 
			
		||||
@@ -65,7 +65,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
 
 | 
			
		||||
@@ -167,7 +167,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
@@ -345,7 +345,7 @@
 | 
			
		||||
                      id="comments"
 | 
			
		||||
                      name="comments"
 | 
			
		||||
                      type="checkbox"
 | 
			
		||||
                      class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
                      class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
                    />
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="ml-3 text-sm">
 | 
			
		||||
 
 | 
			
		||||
@@ -300,7 +300,7 @@
 | 
			
		||||
					id="comments"
 | 
			
		||||
					name="comments"
 | 
			
		||||
					type="checkbox"
 | 
			
		||||
					class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
					class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
				/>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="ml-3 text-sm">
 | 
			
		||||
 
 | 
			
		||||
@@ -1,340 +1,380 @@
 | 
			
		||||
<script>
 | 
			
		||||
  import { _ } from "svelte-i18n";
 | 
			
		||||
  import { clickOutside } from "../base/outsideclick";
 | 
			
		||||
	import { _ } from "svelte-i18n";
 | 
			
		||||
	import { clickOutside } from "../base/outsideclick";
 | 
			
		||||
 | 
			
		||||
  import {
 | 
			
		||||
    DonationService,
 | 
			
		||||
    DonorService,
 | 
			
		||||
    RunnerService,
 | 
			
		||||
  } from "@odit/lfk-client-js";
 | 
			
		||||
  import Select from "svelte-select";
 | 
			
		||||
  import { createEventDispatcher, onMount } from "svelte";
 | 
			
		||||
  import toast from "svelte-french-toast";
 | 
			
		||||
  export let modal_open;
 | 
			
		||||
  const dispatch = createEventDispatcher();
 | 
			
		||||
  const getDonorLabel = (option) =>
 | 
			
		||||
    option.firstname + " " + (option.middlename || "") + " " + option.lastname;
 | 
			
		||||
  const filterDonors = (label, filterText, option) =>
 | 
			
		||||
    label.toLowerCase().includes(filterText.toLowerCase()) ||
 | 
			
		||||
    option.value.id.toString().startsWith(filterText.toLowerCase());
 | 
			
		||||
  $: donor = 0;
 | 
			
		||||
  $: runner = 0;
 | 
			
		||||
  $: donors = [];
 | 
			
		||||
  $: runners = [];
 | 
			
		||||
  $: is_fixed = false;
 | 
			
		||||
  $: is_paid = false;
 | 
			
		||||
  $: amount_input = 0;
 | 
			
		||||
  $: processed_last_submit = true;
 | 
			
		||||
  $: is_amount_valid = amount_input > 0;
 | 
			
		||||
  $: createbtnenabled = is_amount_valid;
 | 
			
		||||
  (() => {
 | 
			
		||||
    document.onkeydown = (e) => {
 | 
			
		||||
      e = e || window.event;
 | 
			
		||||
      if (e.key === "Escape") {
 | 
			
		||||
        modal_open = false;
 | 
			
		||||
      }
 | 
			
		||||
      if (e.keyCode === 13) {
 | 
			
		||||
        if (createbtnenabled === true) {
 | 
			
		||||
          createbtnenabled = false;
 | 
			
		||||
          submit();
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    };
 | 
			
		||||
  })();
 | 
			
		||||
  function submit() {
 | 
			
		||||
    if (processed_last_submit === true) {
 | 
			
		||||
      let amount_cent = Math.floor(amount_input * 100);
 | 
			
		||||
      processed_last_submit = false;
 | 
			
		||||
      toast.loading($_("adding-donation"));
 | 
			
		||||
      if (is_fixed) {
 | 
			
		||||
        let postdata = {
 | 
			
		||||
          donor,
 | 
			
		||||
          amount: amount_cent,
 | 
			
		||||
          paidAmount: 0,
 | 
			
		||||
        };
 | 
			
		||||
        if (is_paid) {
 | 
			
		||||
          postdata.paidAmount = amount_cent;
 | 
			
		||||
        }
 | 
			
		||||
        DonationService.donationControllerPostFixed(postdata)
 | 
			
		||||
          .then((result) => {
 | 
			
		||||
            donor = donors[0].id || 0;
 | 
			
		||||
            runner = runners[0].id || 0;
 | 
			
		||||
            amount_input = 0;
 | 
			
		||||
            modal_open = false;
 | 
			
		||||
            //
 | 
			
		||||
            toast.dismiss();
 | 
			
		||||
            toast.success($_("donation_added"));
 | 
			
		||||
            dispatch("created", { donations: [result] });
 | 
			
		||||
          })
 | 
			
		||||
          .catch((err) => {
 | 
			
		||||
            //
 | 
			
		||||
          })
 | 
			
		||||
          .finally(() => {
 | 
			
		||||
            processed_last_submit = true;
 | 
			
		||||
          });
 | 
			
		||||
      } else {
 | 
			
		||||
        let postdata = {
 | 
			
		||||
          donor,
 | 
			
		||||
          runner,
 | 
			
		||||
          amountPerDistance: amount_cent,
 | 
			
		||||
        };
 | 
			
		||||
        DonationService.donationControllerPostDistance(postdata)
 | 
			
		||||
          .then((result) => {
 | 
			
		||||
            donor = donors[0].id || 0;
 | 
			
		||||
            runner = runners[0].id || 0;
 | 
			
		||||
            amount_input = 0;
 | 
			
		||||
            modal_open = false;
 | 
			
		||||
            //
 | 
			
		||||
            toast.dismiss();
 | 
			
		||||
            toast.success($_("donation_added"));
 | 
			
		||||
            dispatch("created", { donations: [result] });
 | 
			
		||||
          })
 | 
			
		||||
          .catch((err) => {
 | 
			
		||||
            //
 | 
			
		||||
          })
 | 
			
		||||
          .finally(() => {
 | 
			
		||||
            processed_last_submit = true;
 | 
			
		||||
          });
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
	import {
 | 
			
		||||
		DonationService,
 | 
			
		||||
		DonorService,
 | 
			
		||||
		RunnerService,
 | 
			
		||||
	} from "@odit/lfk-client-js";
 | 
			
		||||
	import Select from "svelte-select";
 | 
			
		||||
	import { createEventDispatcher, onMount } from "svelte";
 | 
			
		||||
	import toast from "svelte-french-toast";
 | 
			
		||||
	export let modal_open;
 | 
			
		||||
	const dispatch = createEventDispatcher();
 | 
			
		||||
	const getDonorLabel = (option) =>
 | 
			
		||||
		option.firstname + " " + (option.middlename || "") + " " + option.lastname;
 | 
			
		||||
	const filterDonors = (label, filterText, option) =>
 | 
			
		||||
		label.toLowerCase().includes(filterText.toLowerCase()) ||
 | 
			
		||||
		option.value.id.toString().startsWith(filterText.toLowerCase());
 | 
			
		||||
	$: donor = 0;
 | 
			
		||||
	$: runner = 0;
 | 
			
		||||
	$: donors = [];
 | 
			
		||||
	$: runners = [];
 | 
			
		||||
	$: type = "distance";
 | 
			
		||||
	$: is_paid = false;
 | 
			
		||||
	$: amount_input = 0;
 | 
			
		||||
	$: processed_last_submit = true;
 | 
			
		||||
	$: is_amount_valid = amount_input > 0;
 | 
			
		||||
	$: createbtnenabled = is_amount_valid;
 | 
			
		||||
	(() => {
 | 
			
		||||
		document.onkeydown = (e) => {
 | 
			
		||||
			e = e || window.event;
 | 
			
		||||
			if (e.key === "Escape") {
 | 
			
		||||
				modal_open = false;
 | 
			
		||||
			}
 | 
			
		||||
			if (e.keyCode === 13) {
 | 
			
		||||
				if (createbtnenabled === true) {
 | 
			
		||||
					createbtnenabled = false;
 | 
			
		||||
					submit();
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		};
 | 
			
		||||
	})();
 | 
			
		||||
	function submit() {
 | 
			
		||||
		if (processed_last_submit === true) {
 | 
			
		||||
			let amount_cent = Math.floor(amount_input * 100);
 | 
			
		||||
			processed_last_submit = false;
 | 
			
		||||
			toast.loading($_("adding-donation"));
 | 
			
		||||
			if (type === "fixed") {
 | 
			
		||||
				let postdata = {
 | 
			
		||||
					donor,
 | 
			
		||||
					amount: amount_cent,
 | 
			
		||||
					paidAmount: 0,
 | 
			
		||||
				};
 | 
			
		||||
				if (is_paid) {
 | 
			
		||||
					postdata.paidAmount = amount_cent;
 | 
			
		||||
				}
 | 
			
		||||
				DonationService.donationControllerPostFixed(postdata)
 | 
			
		||||
					.then((result) => {
 | 
			
		||||
						donor = donors[0].id || 0;
 | 
			
		||||
						runner = runners[0].id || 0;
 | 
			
		||||
						amount_input = 0;
 | 
			
		||||
						modal_open = false;
 | 
			
		||||
						//
 | 
			
		||||
						toast.dismiss();
 | 
			
		||||
						toast.success($_("donation_added"));
 | 
			
		||||
						dispatch("created", { donations: [result] });
 | 
			
		||||
					})
 | 
			
		||||
					.catch((err) => {
 | 
			
		||||
						//
 | 
			
		||||
					})
 | 
			
		||||
					.finally(() => {
 | 
			
		||||
						processed_last_submit = true;
 | 
			
		||||
					});
 | 
			
		||||
			} else if (type === "anonymous") {
 | 
			
		||||
				let postdata = {
 | 
			
		||||
					amount: amount_cent,
 | 
			
		||||
				};
 | 
			
		||||
				DonationService.donationControllerPostAnonymous(postdata)
 | 
			
		||||
					.then((result) => {
 | 
			
		||||
						amount_input = 0;
 | 
			
		||||
						modal_open = false;
 | 
			
		||||
						//
 | 
			
		||||
						toast.dismiss();
 | 
			
		||||
						toast.success($_("donation_added"));
 | 
			
		||||
						dispatch("created", { donations: [result] });
 | 
			
		||||
					})
 | 
			
		||||
					.catch((err) => {
 | 
			
		||||
						//
 | 
			
		||||
					})
 | 
			
		||||
					.finally(() => {
 | 
			
		||||
						processed_last_submit = true;
 | 
			
		||||
					});
 | 
			
		||||
			} else if (type === "distance") {
 | 
			
		||||
				let postdata = {
 | 
			
		||||
					donor,
 | 
			
		||||
					runner,
 | 
			
		||||
					amountPerDistance: amount_cent,
 | 
			
		||||
				};
 | 
			
		||||
				DonationService.donationControllerPostDistance(postdata)
 | 
			
		||||
					.then((result) => {
 | 
			
		||||
						donor = donors[0].id || 0;
 | 
			
		||||
						runner = runners[0].id || 0;
 | 
			
		||||
						amount_input = 0;
 | 
			
		||||
						modal_open = false;
 | 
			
		||||
						//
 | 
			
		||||
						toast.dismiss();
 | 
			
		||||
						toast.success($_("donation_added"));
 | 
			
		||||
						dispatch("created", { donations: [result] });
 | 
			
		||||
					})
 | 
			
		||||
					.catch((err) => {
 | 
			
		||||
						//
 | 
			
		||||
					})
 | 
			
		||||
					.finally(() => {
 | 
			
		||||
						processed_last_submit = true;
 | 
			
		||||
					});
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  onMount(async () => {
 | 
			
		||||
    donors = (await DonorService.donorControllerGetAll()).map(
 | 
			
		||||
      (r) => {
 | 
			
		||||
        return { label: getDonorLabel(r), value: r };
 | 
			
		||||
      }
 | 
			
		||||
    );
 | 
			
		||||
    runners = (await RunnerService.runnerControllerGetAll()).map(
 | 
			
		||||
      (r) => {
 | 
			
		||||
        return { label: getDonorLabel(r), value: r };
 | 
			
		||||
      }
 | 
			
		||||
    );
 | 
			
		||||
  });
 | 
			
		||||
	onMount(async () => {
 | 
			
		||||
		donors = (await DonorService.donorControllerGetAll()).map((r) => {
 | 
			
		||||
			return { label: getDonorLabel(r), value: r };
 | 
			
		||||
		});
 | 
			
		||||
		runners = (await RunnerService.runnerControllerGetAll()).map((r) => {
 | 
			
		||||
			return { label: getDonorLabel(r), value: r };
 | 
			
		||||
		});
 | 
			
		||||
	});
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
{#if modal_open}
 | 
			
		||||
  <div
 | 
			
		||||
    class="fixed z-10 inset-0 overflow-y-hidden"
 | 
			
		||||
    use:clickOutside
 | 
			
		||||
    on:click_outside={() => {
 | 
			
		||||
      modal_open = false;
 | 
			
		||||
    }}
 | 
			
		||||
  >
 | 
			
		||||
    <div
 | 
			
		||||
      class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4"
 | 
			
		||||
    >
 | 
			
		||||
      <div class="fixed inset-0 transition-opacity" aria-hidden="true">
 | 
			
		||||
        <div
 | 
			
		||||
          class="absolute inset-0 bg-gray-500 opacity-75"
 | 
			
		||||
          data-id="modal_backdrop"
 | 
			
		||||
        />
 | 
			
		||||
      </div>
 | 
			
		||||
      <span
 | 
			
		||||
        class="hidden sm:inline-block sm:align-middle sm:h-screen"
 | 
			
		||||
        aria-hidden="true">​</span
 | 
			
		||||
      >
 | 
			
		||||
      <div
 | 
			
		||||
        class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw] relative z-10"
 | 
			
		||||
        role="dialog"
 | 
			
		||||
        aria-modal="true"
 | 
			
		||||
        aria-labelledby="modal-headline"
 | 
			
		||||
      >
 | 
			
		||||
        <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl">
 | 
			
		||||
          <div class="">
 | 
			
		||||
            <div
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
                width="24"
 | 
			
		||||
                height="24"
 | 
			
		||||
                ><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
                <path
 | 
			
		||||
                  d="M14 2a8 8 0 013.3 15.3A8 8 0 116.7 6.7 8 8 0 0114 2zm-3 7H9v1a2.5 2.5 0 00-.16 5h2.25a.5.5 0 010 1H7v2h2v1h2v-1a2.5 2.5 0 00.16-5H8.91a.5.5 0 010-1H13v-2h-2V9zm3-5a5.99 5.99 0 00-4.48 2.01 8 8 0 018.47 8.47A6 6 0 0014 4z"
 | 
			
		||||
                /></svg
 | 
			
		||||
              >
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="mt-3">
 | 
			
		||||
              <h3 class="text-lg leading-6 font-medium text-gray-900">
 | 
			
		||||
                {#if is_fixed}
 | 
			
		||||
                  {$_("create-a-new-fixed-donation")}
 | 
			
		||||
                {:else}{$_("create-a-new-distance-donation")}{/if}
 | 
			
		||||
	<div
 | 
			
		||||
		class="fixed z-10 inset-0 overflow-y-hidden"
 | 
			
		||||
		use:clickOutside
 | 
			
		||||
		on:click_outside={() => {
 | 
			
		||||
			modal_open = false;
 | 
			
		||||
		}}
 | 
			
		||||
	>
 | 
			
		||||
		<div
 | 
			
		||||
			class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4"
 | 
			
		||||
		>
 | 
			
		||||
			<div class="fixed inset-0 transition-opacity" aria-hidden="true">
 | 
			
		||||
				<div
 | 
			
		||||
					class="absolute inset-0 bg-neutral-500 opacity-75"
 | 
			
		||||
					data-id="modal_backdrop"
 | 
			
		||||
				/>
 | 
			
		||||
			</div>
 | 
			
		||||
			<span
 | 
			
		||||
				class="hidden sm:inline-block sm:align-middle sm:h-screen"
 | 
			
		||||
				aria-hidden="true">​</span
 | 
			
		||||
			>
 | 
			
		||||
			<div
 | 
			
		||||
				class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw] relative z-10"
 | 
			
		||||
				role="dialog"
 | 
			
		||||
				aria-modal="true"
 | 
			
		||||
				aria-labelledby="modal-headline"
 | 
			
		||||
			>
 | 
			
		||||
				<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl">
 | 
			
		||||
					<div class="">
 | 
			
		||||
						<div
 | 
			
		||||
							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
						>
 | 
			
		||||
							<svg
 | 
			
		||||
								class="size-6 text-blue-600"
 | 
			
		||||
								fill="currentColor"
 | 
			
		||||
								xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
								viewBox="0 0 24 24"
 | 
			
		||||
								width="24"
 | 
			
		||||
								height="24"
 | 
			
		||||
								><path fill="none" d="M0 0h24v24H0z" />
 | 
			
		||||
								<path
 | 
			
		||||
									d="M14 2a8 8 0 013.3 15.3A8 8 0 116.7 6.7 8 8 0 0114 2zm-3 7H9v1a2.5 2.5 0 00-.16 5h2.25a.5.5 0 010 1H7v2h2v1h2v-1a2.5 2.5 0 00.16-5H8.91a.5.5 0 010-1H13v-2h-2V9zm3-5a5.99 5.99 0 00-4.48 2.01 8 8 0 018.47 8.47A6 6 0 0014 4z"
 | 
			
		||||
								/></svg
 | 
			
		||||
							>
 | 
			
		||||
						</div>
 | 
			
		||||
						<div class="mt-3">
 | 
			
		||||
              <h3 class="text-xl leading-6 font-medium text-neutral-900">
 | 
			
		||||
                {$_("add-donation")}
 | 
			
		||||
              </h3>
 | 
			
		||||
              <label class="content-center align-middle object-center">
 | 
			
		||||
                <span class="text-base" class:text-gray-300={is_fixed}
 | 
			
		||||
                  >{$_("distance-donation")}</span
 | 
			
		||||
                >
 | 
			
		||||
                <input
 | 
			
		||||
                  class="toggle relative w-10 h-5 transition-all duration-200 ease-in-out bg-gray-400 rounded-full shadow-inner outline-none appearance-none align-middle"
 | 
			
		||||
                  type="checkbox"
 | 
			
		||||
                  bind:checked={is_fixed}
 | 
			
		||||
                />
 | 
			
		||||
                <span class="ml-2 text-base" class:text-gray-300={!is_fixed}
 | 
			
		||||
                  >{$_("fixed-donation")}</span
 | 
			
		||||
                >
 | 
			
		||||
              </label>
 | 
			
		||||
              <div class="mb-6">
 | 
			
		||||
                <p class="text-sm text-gray-500">
 | 
			
		||||
                  {$_(
 | 
			
		||||
                    "please-provide-the-nessecary-information-to-create-a-new-donation"
 | 
			
		||||
                  )}
 | 
			
		||||
                </p>
 | 
			
		||||
              </div>
 | 
			
		||||
              <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left">
 | 
			
		||||
                <div class="col-span-6">
 | 
			
		||||
                  <label
 | 
			
		||||
                    for="donor"
 | 
			
		||||
                    class="block text-sm font-medium text-gray-700"
 | 
			
		||||
                    >{$_("donor")}</label
 | 
			
		||||
                  >
 | 
			
		||||
                  <Select
 | 
			
		||||
                    containerClasses="rounded-l-md mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm sm:text-sm border-gray-300 border bg-gray-50 text-neutral-800 rounded-md p-2"
 | 
			
		||||
                    itemFilter={(label, filterText, option) =>
 | 
			
		||||
                      filterDonors(label, filterText, option)}
 | 
			
		||||
                    items={donors}
 | 
			
		||||
                    showChevron={true}
 | 
			
		||||
                    placeholder={$_("search-for-donor-name-or-id")}
 | 
			
		||||
                    noOptionsMessage={$_("no-donors-found")}
 | 
			
		||||
                    on:select={(selectedValue) =>
 | 
			
		||||
                      (donor = selectedValue.detail.value.id)}
 | 
			
		||||
                    on:clear={() => (donors = null)}
 | 
			
		||||
                  />
 | 
			
		||||
                </div>
 | 
			
		||||
                {#if !is_fixed}
 | 
			
		||||
                  <div class="col-span-6">
 | 
			
		||||
                    <label
 | 
			
		||||
                      for="donor"
 | 
			
		||||
                      class="block text-sm font-medium text-gray-700"
 | 
			
		||||
                      >{$_("runner")}</label
 | 
			
		||||
                    >
 | 
			
		||||
                    <Select
 | 
			
		||||
                      containerClasses="rounded-l-md mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm sm:text-sm border-gray-300 border bg-gray-50 text-neutral-800 rounded-md p-2"
 | 
			
		||||
                      itemFilter={(label, filterText, option) =>
 | 
			
		||||
                        filterDonors(label, filterText, option)}
 | 
			
		||||
                      items={runners}
 | 
			
		||||
                      showChevron={true}
 | 
			
		||||
                      placeholder={$_("search-for-runner-by-name-or-id")}
 | 
			
		||||
                      noOptionsMessage={$_("no-runners-found")}
 | 
			
		||||
                      on:select={(selectedValue) =>
 | 
			
		||||
                        (runner = selectedValue.detail.value.id)}
 | 
			
		||||
                      on:clear={() => (runner = null)}
 | 
			
		||||
                    />
 | 
			
		||||
                  </div>
 | 
			
		||||
                {/if}
 | 
			
		||||
                <div class="col-span-6">
 | 
			
		||||
                  <label
 | 
			
		||||
                    for="donation_amount_eur"
 | 
			
		||||
                    class="block text-sm font-medium text-gray-700"
 | 
			
		||||
                  >
 | 
			
		||||
                    {#if !is_fixed}
 | 
			
		||||
                      {$_("amount-per-kilometer")}
 | 
			
		||||
                    {:else}{$_("donation-amount")}{/if}</label
 | 
			
		||||
                  >
 | 
			
		||||
                  <div class="mt-1 flex rounded-md shadow-sm">
 | 
			
		||||
                    <input
 | 
			
		||||
                      autocomplete="off"
 | 
			
		||||
                      class:border-red-500={!is_amount_valid}
 | 
			
		||||
                      class:focus:border-red-500={!is_amount_valid}
 | 
			
		||||
                      class:focus:ring-red-500={!is_amount_valid}
 | 
			
		||||
                      bind:value={amount_input}
 | 
			
		||||
                      type="number"
 | 
			
		||||
                      step="0.01"
 | 
			
		||||
                      name="donation_amount_eur"
 | 
			
		||||
                      class="focus:ring-indigo-500 focus:border-indigo-500 flex-1 block w-full rounded-none rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-neutral-800 p-2"
 | 
			
		||||
                      placeholder="2.00"
 | 
			
		||||
                    />
 | 
			
		||||
                    <span
 | 
			
		||||
                      class="inline-flex items-center px-3 rounded-r-md border border-gray-300 bg-gray-50 text-gray-500 text-sm"
 | 
			
		||||
                      >€</span
 | 
			
		||||
                    >
 | 
			
		||||
                  </div>
 | 
			
		||||
                  {#if !is_amount_valid}
 | 
			
		||||
                    <span
 | 
			
		||||
                      class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1"
 | 
			
		||||
                    >
 | 
			
		||||
                      {$_("donation-amount-must-be-greater-that-0-00eur")}
 | 
			
		||||
                    </span>
 | 
			
		||||
                  {/if}
 | 
			
		||||
                </div>
 | 
			
		||||
                {#if is_fixed}
 | 
			
		||||
                  <div class="col-span-6">
 | 
			
		||||
                    <label
 | 
			
		||||
                      for="paid"
 | 
			
		||||
                      class="block text-sm font-medium text-gray-700"
 | 
			
		||||
                      >{$_("already-paid")}</label
 | 
			
		||||
                    >
 | 
			
		||||
                    <p class="text-gray-500">
 | 
			
		||||
                      <input
 | 
			
		||||
                        id="paid"
 | 
			
		||||
                        bind:checked={is_paid}
 | 
			
		||||
                        name="paid"
 | 
			
		||||
                        type="checkbox"
 | 
			
		||||
                        class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
                      />
 | 
			
		||||
                      <span class="align-text-bottom">
 | 
			
		||||
                        {#if is_paid}
 | 
			
		||||
                          {$_("paid")}
 | 
			
		||||
                        {:else}
 | 
			
		||||
                          {$_("open")}
 | 
			
		||||
                        {/if}
 | 
			
		||||
                      </span>
 | 
			
		||||
                    </p>
 | 
			
		||||
                  </div>
 | 
			
		||||
                {/if}
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10">
 | 
			
		||||
          <button
 | 
			
		||||
            disabled={!createbtnenabled}
 | 
			
		||||
            class:opacity-50={!createbtnenabled}
 | 
			
		||||
            on:click={submit}
 | 
			
		||||
            type="button"
 | 
			
		||||
            class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
 | 
			
		||||
          >
 | 
			
		||||
            {$_("create")}
 | 
			
		||||
          </button>
 | 
			
		||||
          <button
 | 
			
		||||
            on:click={() => {
 | 
			
		||||
              modal_open = false;
 | 
			
		||||
            }}
 | 
			
		||||
            type="button"
 | 
			
		||||
            class="w-full justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 hidden lg:block"
 | 
			
		||||
          >
 | 
			
		||||
            {$_("cancel")}
 | 
			
		||||
          </button>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
							<nav
 | 
			
		||||
								class="relative z-0 flex border border-neutral-200 rounded-xl overflow-hidden mb-2"
 | 
			
		||||
							>
 | 
			
		||||
								<button
 | 
			
		||||
									on:click={() => {
 | 
			
		||||
										type = "distance";
 | 
			
		||||
									}}
 | 
			
		||||
									type="button"
 | 
			
		||||
									id="bar-with-underline-item-1"
 | 
			
		||||
									class:donation_active_tab={type === "distance"}
 | 
			
		||||
									class:donation_inactive_tab={type !== "distance"}
 | 
			
		||||
									aria-selected={type === "distance"}
 | 
			
		||||
									role="tab"
 | 
			
		||||
								>
 | 
			
		||||
									{$_("spende_pro_km")}
 | 
			
		||||
								</button>
 | 
			
		||||
								<button
 | 
			
		||||
									on:click={() => {
 | 
			
		||||
										type = "fixed";
 | 
			
		||||
									}}
 | 
			
		||||
									type="button"
 | 
			
		||||
									id="bar-with-underline-item-2"
 | 
			
		||||
									class:donation_active_tab={type === "fixed"}
 | 
			
		||||
									class:donation_inactive_tab={type !== "fixed"}
 | 
			
		||||
									aria-selected={type === "fixed"}
 | 
			
		||||
									role="tab"
 | 
			
		||||
								>
 | 
			
		||||
									{$_("festbetrag")}
 | 
			
		||||
								</button>
 | 
			
		||||
								<button
 | 
			
		||||
									on:click={() => {
 | 
			
		||||
										type = "anonymous";
 | 
			
		||||
									}}
 | 
			
		||||
									type="button"
 | 
			
		||||
									id="bar-with-underline-item-3"
 | 
			
		||||
									class:donation_active_tab={type === "anonymous"}
 | 
			
		||||
									class:donation_inactive_tab={type !== "anonymous"}
 | 
			
		||||
									aria-selected={type === "anonymous"}
 | 
			
		||||
									role="tab"
 | 
			
		||||
								>
 | 
			
		||||
									{$_("anonyme_spende")}
 | 
			
		||||
								</button>
 | 
			
		||||
							</nav>
 | 
			
		||||
 | 
			
		||||
							<div class="grid grid-cols-6 gap-2 lg:gap-6 text-left">
 | 
			
		||||
								{#if type === "anonymous"}
 | 
			
		||||
									<div class="col-span-6">
 | 
			
		||||
										<label
 | 
			
		||||
											for="donation_amount_eur"
 | 
			
		||||
											class="block text-sm font-medium text-neutral-900"
 | 
			
		||||
										>
 | 
			
		||||
											{$_("donation-amount")}</label
 | 
			
		||||
										>
 | 
			
		||||
										<div class="mt-1 flex rounded-md shadow-sm">
 | 
			
		||||
											<input
 | 
			
		||||
												autocomplete="off"
 | 
			
		||||
												class:border-red-500={!is_amount_valid}
 | 
			
		||||
												class:focus:border-red-500={!is_amount_valid}
 | 
			
		||||
												class:focus:ring-red-500={!is_amount_valid}
 | 
			
		||||
												bind:value={amount_input}
 | 
			
		||||
												type="number"
 | 
			
		||||
												step="0.01"
 | 
			
		||||
												name="donation_amount_eur"
 | 
			
		||||
												class="focus:ring-indigo-500 focus:border-indigo-500 flex-1 block w-full rounded-none rounded-l-md sm:text-sm border-neutral-300 border bg-neutral-50 text-neutral-800 p-2"
 | 
			
		||||
												placeholder="2.00"
 | 
			
		||||
											/>
 | 
			
		||||
											<span
 | 
			
		||||
												class="inline-flex items-center px-3 rounded-r-md border border-neutral-300 bg-neutral-50 text-neutral-500 text-sm"
 | 
			
		||||
												>€</span
 | 
			
		||||
											>
 | 
			
		||||
										</div>
 | 
			
		||||
										{#if !is_amount_valid}
 | 
			
		||||
											<span
 | 
			
		||||
												class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1"
 | 
			
		||||
											>
 | 
			
		||||
												{$_("donation-amount-must-be-greater-that-0-00eur")}
 | 
			
		||||
											</span>
 | 
			
		||||
										{/if}
 | 
			
		||||
									</div>
 | 
			
		||||
								{:else}
 | 
			
		||||
									<div class="col-span-6">
 | 
			
		||||
										<label
 | 
			
		||||
											for="donor"
 | 
			
		||||
											class="block text-sm font-medium text-neutral-900"
 | 
			
		||||
											>{$_("donor")}</label
 | 
			
		||||
										>
 | 
			
		||||
										<Select
 | 
			
		||||
											containerClasses="rounded-l-md mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm sm:text-sm border-neutral-300 border bg-neutral-50 text-neutral-800 rounded-md p-2"
 | 
			
		||||
											itemFilter={(label, filterText, option) =>
 | 
			
		||||
												filterDonors(label, filterText, option)}
 | 
			
		||||
											items={donors}
 | 
			
		||||
											showChevron={true}
 | 
			
		||||
											placeholder={$_("search-for-donor-name-or-id")}
 | 
			
		||||
											noOptionsMessage={$_("no-donors-found")}
 | 
			
		||||
											on:select={(selectedValue) =>
 | 
			
		||||
												(donor = selectedValue.detail.value.id)}
 | 
			
		||||
											on:clear={() => (donors = null)}
 | 
			
		||||
										/>
 | 
			
		||||
									</div>
 | 
			
		||||
									{#if type === "distance"}
 | 
			
		||||
										<div class="col-span-6">
 | 
			
		||||
											<label
 | 
			
		||||
												for="donor"
 | 
			
		||||
												class="block text-sm font-medium text-neutral-900"
 | 
			
		||||
												>{$_("runner")}</label
 | 
			
		||||
											>
 | 
			
		||||
											<Select
 | 
			
		||||
												containerClasses="rounded-l-md mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm sm:text-sm border-neutral-300 border bg-neutral-50 text-neutral-800 rounded-md p-2"
 | 
			
		||||
												itemFilter={(label, filterText, option) =>
 | 
			
		||||
													filterDonors(label, filterText, option)}
 | 
			
		||||
												items={runners}
 | 
			
		||||
												showChevron={true}
 | 
			
		||||
												placeholder={$_("search-for-runner-by-name-or-id")}
 | 
			
		||||
												noOptionsMessage={$_("no-runners-found")}
 | 
			
		||||
												on:select={(selectedValue) =>
 | 
			
		||||
													(runner = selectedValue.detail.value.id)}
 | 
			
		||||
												on:clear={() => (runner = null)}
 | 
			
		||||
											/>
 | 
			
		||||
										</div>
 | 
			
		||||
									{/if}
 | 
			
		||||
									<div class="col-span-6">
 | 
			
		||||
										<label
 | 
			
		||||
											for="donation_amount_eur"
 | 
			
		||||
											class="block text-sm font-medium text-neutral-900"
 | 
			
		||||
										>
 | 
			
		||||
											{#if type === "fixed"}
 | 
			
		||||
												{$_("donation-amount")}
 | 
			
		||||
											{:else}{$_("amount-per-kilometer")}{/if}</label
 | 
			
		||||
										>
 | 
			
		||||
										<div class="mt-1 flex rounded-md shadow-sm">
 | 
			
		||||
											<input
 | 
			
		||||
												autocomplete="off"
 | 
			
		||||
												class:border-red-500={!is_amount_valid}
 | 
			
		||||
												class:focus:border-red-500={!is_amount_valid}
 | 
			
		||||
												class:focus:ring-red-500={!is_amount_valid}
 | 
			
		||||
												bind:value={amount_input}
 | 
			
		||||
												type="number"
 | 
			
		||||
												step="0.01"
 | 
			
		||||
												name="donation_amount_eur"
 | 
			
		||||
												class="focus:ring-indigo-500 focus:border-indigo-500 flex-1 block w-full rounded-none rounded-l-md sm:text-sm border-neutral-300 border bg-neutral-50 text-neutral-800 p-2"
 | 
			
		||||
												placeholder="2.00"
 | 
			
		||||
											/>
 | 
			
		||||
											<span
 | 
			
		||||
												class="inline-flex items-center px-3 rounded-r-md border border-neutral-300 bg-neutral-50 text-neutral-500 text-sm"
 | 
			
		||||
												>€</span
 | 
			
		||||
											>
 | 
			
		||||
										</div>
 | 
			
		||||
										{#if !is_amount_valid}
 | 
			
		||||
											<span
 | 
			
		||||
												class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1"
 | 
			
		||||
											>
 | 
			
		||||
												{$_("donation-amount-must-be-greater-that-0-00eur")}
 | 
			
		||||
											</span>
 | 
			
		||||
										{/if}
 | 
			
		||||
									</div>
 | 
			
		||||
								{/if}
 | 
			
		||||
								{#if type === "fixed"}
 | 
			
		||||
									<div class="flex">
 | 
			
		||||
										<input
 | 
			
		||||
											bind:checked={is_paid}
 | 
			
		||||
											type="checkbox"
 | 
			
		||||
											class="shrink-0 mt-0.5 border-neutral-200 rounded-sm text-blue-600 focus:ring-blue-500 checked:border-blue-500 disabled:opacity-50 disabled:pointer-events-none"
 | 
			
		||||
											id="hs-default-checkbox"
 | 
			
		||||
										/>
 | 
			
		||||
										<label
 | 
			
		||||
											for="hs-default-checkbox"
 | 
			
		||||
											class="text-base text-neutral-900 ms-2 font-medium"
 | 
			
		||||
											>{$_("already-paid")}</label
 | 
			
		||||
										>
 | 
			
		||||
									</div>
 | 
			
		||||
								{/if}
 | 
			
		||||
							</div>
 | 
			
		||||
						</div>
 | 
			
		||||
					</div>
 | 
			
		||||
				</div>
 | 
			
		||||
				<div
 | 
			
		||||
					class="bg-neutral-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"
 | 
			
		||||
				>
 | 
			
		||||
					<button
 | 
			
		||||
						disabled={!createbtnenabled}
 | 
			
		||||
						class:opacity-50={!createbtnenabled}
 | 
			
		||||
						on:click={submit}
 | 
			
		||||
						type="button"
 | 
			
		||||
						class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
 | 
			
		||||
					>
 | 
			
		||||
						{$_("create")}
 | 
			
		||||
					</button>
 | 
			
		||||
					<button
 | 
			
		||||
						on:click={() => {
 | 
			
		||||
							modal_open = false;
 | 
			
		||||
						}}
 | 
			
		||||
						type="button"
 | 
			
		||||
						class="w-full justify-center rounded-md border border-neutral-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-neutral-900 hover:bg-neutral-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 hidden lg:block"
 | 
			
		||||
					>
 | 
			
		||||
						{$_("cancel")}
 | 
			
		||||
					</button>
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
{/if}
 | 
			
		||||
 | 
			
		||||
<style>
 | 
			
		||||
  .toggle:before {
 | 
			
		||||
    content: "";
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    width: 1.25rem;
 | 
			
		||||
    height: 1.25rem;
 | 
			
		||||
    border-radius: 50%;
 | 
			
		||||
    top: 0;
 | 
			
		||||
    left: 0;
 | 
			
		||||
    transform: scale(1.1);
 | 
			
		||||
    box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.2);
 | 
			
		||||
    background-color: white;
 | 
			
		||||
    transition: 0.2s ease-in-out;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .toggle:checked {
 | 
			
		||||
    /* @apply: bg-indigo-400; */
 | 
			
		||||
    background-color: #7f9cf5;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .toggle:checked:before {
 | 
			
		||||
    left: 1.25rem;
 | 
			
		||||
  }
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -107,7 +107,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@
 | 
			
		||||
      firstname: "",
 | 
			
		||||
      lastname: "",
 | 
			
		||||
    },
 | 
			
		||||
    amount: 0,
 | 
			
		||||
  };
 | 
			
		||||
  const dispatch = createEventDispatcher();
 | 
			
		||||
  onMount(() => {
 | 
			
		||||
@@ -68,7 +69,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
@@ -86,8 +87,12 @@
 | 
			
		||||
              </h3>
 | 
			
		||||
              <div class="w-full">
 | 
			
		||||
                <span class="inline-block"
 | 
			
		||||
                  ><b>{$_("donor")}</b>: {delete_donation.donor.firstname}
 | 
			
		||||
                  {delete_donation.donor.lastname}</span
 | 
			
		||||
                  >{#if delete_donation.donor}<b>{$_("donor")}</b>: {delete_donation.donor.firstname}
 | 
			
		||||
                  {delete_donation.donor.lastname}{:else}{$_("anonymer_sponsor")}{/if}
 | 
			
		||||
                  <br>
 | 
			
		||||
                  <b>{$_("amount")}</b>: {`${(delete_donation.amount / 100)
 | 
			
		||||
          .toFixed(2)
 | 
			
		||||
          .toLocaleString("de-DE", { valute: "EUR" })}€`}</span
 | 
			
		||||
                >
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,21 @@
 | 
			
		||||
<script>
 | 
			
		||||
  import { _ } from "svelte-i18n";
 | 
			
		||||
  export let donor;
 | 
			
		||||
	import { _ } from "svelte-i18n";
 | 
			
		||||
	export let donor;
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
{#if !donor || donor.firstname == 0}
 | 
			
		||||
  {$_("donor-has-no-associated-donations")}
 | 
			
		||||
	<span
 | 
			
		||||
		class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800 border border-current"
 | 
			
		||||
		>{$_('anonymer_sponsor')}</span
 | 
			
		||||
	>
 | 
			
		||||
{:else}
 | 
			
		||||
  <div class="flex items-center">
 | 
			
		||||
    <a
 | 
			
		||||
      href="../donors/{donor.id}"
 | 
			
		||||
      class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800 border border-current"
 | 
			
		||||
      >{donor.firstname}
 | 
			
		||||
      {#if donor.middlename}{donor.middlename}{/if}
 | 
			
		||||
      {donor.lastname}</a
 | 
			
		||||
    >
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="flex items-center">
 | 
			
		||||
		<a
 | 
			
		||||
			href="../donors/{donor.id}"
 | 
			
		||||
			class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800 border border-current"
 | 
			
		||||
			>{donor.firstname}
 | 
			
		||||
			{#if donor.middlename}{donor.middlename}{/if}
 | 
			
		||||
			{donor.lastname}</a
 | 
			
		||||
		>
 | 
			
		||||
	</div>
 | 
			
		||||
{/if}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,10 +9,15 @@
 | 
			
		||||
  export let paymentAction;
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
{#if paymentAction}
 | 
			
		||||
<button
 | 
			
		||||
  on:click={paymentAction}
 | 
			
		||||
  class="text-[#025a21] hover:text-green-900 mr-4">{$_("enter-payment")}</button
 | 
			
		||||
>
 | 
			
		||||
{:else}
 | 
			
		||||
<span class="inline-block opacity-0 cursor-default mr-4" style="">{$_("enter-payment")}</span>
 | 
			
		||||
 | 
			
		||||
{/if}
 | 
			
		||||
<TableActions
 | 
			
		||||
  bind:detailsAction
 | 
			
		||||
  bind:detailsLink
 | 
			
		||||
 
 | 
			
		||||
@@ -112,18 +112,25 @@
 | 
			
		||||
      accessorKey: "actions",
 | 
			
		||||
      header: () => $_("action"),
 | 
			
		||||
      cell: (info) => {
 | 
			
		||||
        let detailsLink
 | 
			
		||||
        let paymentAction
 | 
			
		||||
        if (info.row.original.donor != undefined){
 | 
			
		||||
          detailsLink = `./${info.row.original.id}`
 | 
			
		||||
          paymentAction = () => {
 | 
			
		||||
            active_edits = current_donations.filter(
 | 
			
		||||
              (r) => r.id == info.row.original.id
 | 
			
		||||
            );
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        return renderComponent(DonationTableAction, {
 | 
			
		||||
          detailsLink: `./${info.row.original.id}`,
 | 
			
		||||
          detailsLink: detailsLink,
 | 
			
		||||
          deleteAction: () => {
 | 
			
		||||
            active_deletes = current_donations.filter(
 | 
			
		||||
              (r) => r.id == info.row.original.id
 | 
			
		||||
            );
 | 
			
		||||
          },
 | 
			
		||||
          paymentAction: () => {
 | 
			
		||||
            active_edits = current_donations.filter(
 | 
			
		||||
              (r) => r.id == info.row.original.id
 | 
			
		||||
            );
 | 
			
		||||
          },
 | 
			
		||||
          paymentAction: paymentAction,
 | 
			
		||||
          deleteEnabled:
 | 
			
		||||
            store.state.jwtinfo.userdetails.permissions.includes(
 | 
			
		||||
              "DONATION:DELETE"
 | 
			
		||||
 
 | 
			
		||||
@@ -155,7 +155,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
@@ -309,7 +309,7 @@
 | 
			
		||||
                      id="comments"
 | 
			
		||||
                      name="comments"
 | 
			
		||||
                      type="checkbox"
 | 
			
		||||
                      class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
                      class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
                    />
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="ml-3 text-sm">
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,7 @@
 | 
			
		||||
							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
						>
 | 
			
		||||
							<svg
 | 
			
		||||
								class="h-6 w-6 text-blue-600"
 | 
			
		||||
								class="size-6 text-blue-600"
 | 
			
		||||
								fill="currentColor"
 | 
			
		||||
								xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
								viewBox="0 0 24 24"
 | 
			
		||||
 
 | 
			
		||||
@@ -314,7 +314,7 @@
 | 
			
		||||
					id="comments"
 | 
			
		||||
					name="comments"
 | 
			
		||||
					type="checkbox"
 | 
			
		||||
					class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
					class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
				/>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="ml-3">
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,7 @@
 | 
			
		||||
						>
 | 
			
		||||
							<svg
 | 
			
		||||
								fill="currentColor"
 | 
			
		||||
								class="h-6 w-6 text-blue-600"
 | 
			
		||||
								class="size-6 text-blue-600"
 | 
			
		||||
								xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
								viewBox="0 0 24 24"
 | 
			
		||||
								width="24"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,103 +0,0 @@
 | 
			
		||||
<script>
 | 
			
		||||
  let open = false;
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<div class="md:flex flex-col md:flex-row h-screen w-full">
 | 
			
		||||
  <div
 | 
			
		||||
    class="flex flex-col w-full md:w-64 text-gray-700 bg-white dark-mode:text-gray-200 dark-mode:bg-gray-800 flex-shrink-0"
 | 
			
		||||
  >
 | 
			
		||||
    <div
 | 
			
		||||
      class="flex-shrink-0 px-8 py-4 flex flex-row items-center justify-between"
 | 
			
		||||
    >
 | 
			
		||||
      <a
 | 
			
		||||
        href="/#/test"
 | 
			
		||||
        class="text-lg font-semibold tracking-widest text-gray-900 uppercase rounded-lg dark-mode:text-white focus:outline-none focus:shadow-outline"
 | 
			
		||||
        >Sidebar</a
 | 
			
		||||
      >
 | 
			
		||||
      <button
 | 
			
		||||
        class="rounded-lg md:hidden focus:outline-none focus:shadow-outline"
 | 
			
		||||
      >
 | 
			
		||||
        <svg fill="currentColor" viewBox="0 0 20 20" class="w-6 h-6">
 | 
			
		||||
          {#if open}
 | 
			
		||||
            <path
 | 
			
		||||
              fill-rule="evenodd"
 | 
			
		||||
              d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
 | 
			
		||||
              clip-rule="evenodd"
 | 
			
		||||
            />
 | 
			
		||||
          {/if}
 | 
			
		||||
          {#if !open}
 | 
			
		||||
            <path
 | 
			
		||||
              fill-rule="evenodd"
 | 
			
		||||
              d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM9 15a1 1 0 011-1h6a1 1 0 110 2h-6a1 1 0 01-1-1z"
 | 
			
		||||
              clip-rule="evenodd"
 | 
			
		||||
            />
 | 
			
		||||
          {/if}
 | 
			
		||||
        </svg>
 | 
			
		||||
      </button>
 | 
			
		||||
    </div>
 | 
			
		||||
    <nav
 | 
			
		||||
      :class:block={open}
 | 
			
		||||
      :class:hidden={!open}
 | 
			
		||||
      class="flex-grow md:block px-4 pb-4 md:pb-0 md:overflow-y-auto"
 | 
			
		||||
    >
 | 
			
		||||
      <a
 | 
			
		||||
        class="block px-4 py-2 mt-2 text-sm font-semibold text-gray-900 bg-gray-200 rounded-lg dark-mode:bg-gray-700 dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline"
 | 
			
		||||
        href="#">Blog</a
 | 
			
		||||
      >
 | 
			
		||||
      <a
 | 
			
		||||
        class="block px-4 py-2 mt-2 text-sm font-semibold text-gray-900 bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline"
 | 
			
		||||
        href="#">Portfolio</a
 | 
			
		||||
      >
 | 
			
		||||
      <a
 | 
			
		||||
        class="block px-4 py-2 mt-2 text-sm font-semibold text-gray-900 bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline"
 | 
			
		||||
        href="#">About</a
 | 
			
		||||
      >
 | 
			
		||||
      <a
 | 
			
		||||
        class="block px-4 py-2 mt-2 text-sm font-semibold text-gray-900 bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline"
 | 
			
		||||
        href="#">Contact</a
 | 
			
		||||
      >
 | 
			
		||||
      <div class="relative">
 | 
			
		||||
        <button
 | 
			
		||||
          on:click={() => {
 | 
			
		||||
            open = !open;
 | 
			
		||||
          }}
 | 
			
		||||
          class="flex flex-row items-center w-full px-4 py-2 mt-2 text-sm font-semibold text-left bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:focus:bg-gray-600 dark-mode:hover:bg-gray-600 md:block hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline"
 | 
			
		||||
        >
 | 
			
		||||
          <span>Dropdown</span>
 | 
			
		||||
          <svg
 | 
			
		||||
            fill="currentColor"
 | 
			
		||||
            viewBox="0 0 20 20"
 | 
			
		||||
            class="inline w-4 h-4 mt-1 ml-1 transition-transform duration-200 transform md:-mt-1"
 | 
			
		||||
            ><path
 | 
			
		||||
              fill-rule="evenodd"
 | 
			
		||||
              d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"
 | 
			
		||||
              clip-rule="evenodd"
 | 
			
		||||
            /></svg
 | 
			
		||||
          >
 | 
			
		||||
        </button>
 | 
			
		||||
        <div
 | 
			
		||||
          class:block={open}
 | 
			
		||||
          class:hidden={!open}
 | 
			
		||||
          class="absolute right-0 w-full mt-2 origin-top-right rounded-md shadow-lg"
 | 
			
		||||
        >
 | 
			
		||||
          <div
 | 
			
		||||
            class="px-2 py-2 bg-white rounded-md shadow dark-mode:bg-gray-800"
 | 
			
		||||
          >
 | 
			
		||||
            <a
 | 
			
		||||
              class="block px-4 py-2 mt-2 text-sm font-semibold bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 md:mt-0 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline"
 | 
			
		||||
              href="#">Link #1</a
 | 
			
		||||
            >
 | 
			
		||||
            <a
 | 
			
		||||
              class="block px-4 py-2 mt-2 text-sm font-semibold bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 md:mt-0 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline"
 | 
			
		||||
              href="#">Link #2</a
 | 
			
		||||
            >
 | 
			
		||||
            <a
 | 
			
		||||
              class="block px-4 py-2 mt-2 text-sm font-semibold bg-transparent rounded-lg dark-mode:bg-transparent dark-mode:hover:bg-gray-600 dark-mode:focus:bg-gray-600 dark-mode:focus:text-white dark-mode:hover:text-white dark-mode:text-gray-200 md:mt-0 hover:text-gray-900 focus:text-gray-900 hover:bg-gray-200 focus:bg-gray-200 focus:outline-none focus:shadow-outline"
 | 
			
		||||
              href="#">Link #3</a
 | 
			
		||||
            >
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </nav>
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
@@ -92,7 +92,7 @@
 | 
			
		||||
              <svg
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 640 512"
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                width="24"
 | 
			
		||||
                height="24"
 | 
			
		||||
 
 | 
			
		||||
@@ -113,7 +113,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
@@ -170,7 +170,7 @@
 | 
			
		||||
                      id="comments"
 | 
			
		||||
                      name="comments"
 | 
			
		||||
                      type="checkbox"
 | 
			
		||||
                      class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
                      class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
                    />
 | 
			
		||||
                  </div>
 | 
			
		||||
                  <div class="ml-3 text-sm">
 | 
			
		||||
 
 | 
			
		||||
@@ -56,7 +56,7 @@
 | 
			
		||||
							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
						>
 | 
			
		||||
							<svg
 | 
			
		||||
								class="h-6 w-6 text-blue-600"
 | 
			
		||||
								class="size-6 text-blue-600"
 | 
			
		||||
								fill="currentColor"
 | 
			
		||||
								width="24"
 | 
			
		||||
								height="24"
 | 
			
		||||
 
 | 
			
		||||
@@ -246,7 +246,7 @@
 | 
			
		||||
						id="toggle_selfservice_feature"
 | 
			
		||||
						name="toggle_selfservice_feature"
 | 
			
		||||
						type="checkbox"
 | 
			
		||||
						class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
						class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
					/>
 | 
			
		||||
				</div>
 | 
			
		||||
				<div class="ml-3 text-sm">
 | 
			
		||||
@@ -303,7 +303,7 @@
 | 
			
		||||
								id="toggle_address_checkbox"
 | 
			
		||||
								name="toggle_address_checkbox"
 | 
			
		||||
								type="checkbox"
 | 
			
		||||
								class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
								class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
							/>
 | 
			
		||||
						</div>
 | 
			
		||||
						<div class="ml-3 text-sm">
 | 
			
		||||
 
 | 
			
		||||
@@ -159,7 +159,7 @@
 | 
			
		||||
											<input
 | 
			
		||||
												bind:checked={o.is_selected}
 | 
			
		||||
												type="checkbox"
 | 
			
		||||
												class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
												class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
											/>
 | 
			
		||||
										</td>
 | 
			
		||||
										<td class="px-6 py-4 whitespace-nowrap">
 | 
			
		||||
 
 | 
			
		||||
@@ -55,7 +55,7 @@
 | 
			
		||||
							<svg
 | 
			
		||||
								xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
								viewBox="0 0 24 24"
 | 
			
		||||
								class="h-6 w-6 text-blue-600"
 | 
			
		||||
								class="size-6 text-blue-600"
 | 
			
		||||
								fill="currentColor"
 | 
			
		||||
								width="24"
 | 
			
		||||
								height="24"
 | 
			
		||||
 
 | 
			
		||||
@@ -150,7 +150,7 @@
 | 
			
		||||
              <svg
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                width="24"
 | 
			
		||||
                height="24"
 | 
			
		||||
 
 | 
			
		||||
@@ -64,7 +64,7 @@
 | 
			
		||||
              <svg
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                width="24"
 | 
			
		||||
                height="24"
 | 
			
		||||
 
 | 
			
		||||
@@ -225,7 +225,7 @@
 | 
			
		||||
							<svg
 | 
			
		||||
								xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
								viewBox="0 0 24 24"
 | 
			
		||||
								class="h-6 w-6 text-blue-600"
 | 
			
		||||
								class="size-6 text-blue-600"
 | 
			
		||||
								fill="currentColor"
 | 
			
		||||
								width="24"
 | 
			
		||||
								height="24"
 | 
			
		||||
 
 | 
			
		||||
@@ -99,7 +99,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
 
 | 
			
		||||
@@ -66,7 +66,7 @@
 | 
			
		||||
              <svg
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                width="24"
 | 
			
		||||
                height="24"
 | 
			
		||||
 
 | 
			
		||||
@@ -103,7 +103,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
@@ -178,7 +178,7 @@
 | 
			
		||||
                      name="enabled"
 | 
			
		||||
                      type="checkbox"
 | 
			
		||||
                      checked={enabled}
 | 
			
		||||
                      class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
                      class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
                    />
 | 
			
		||||
                    {$_("this-scanstation-is")}
 | 
			
		||||
                    {#if enabled}{$_("enabled")}{:else}{$_("disabled")}{/if}
 | 
			
		||||
 
 | 
			
		||||
@@ -53,7 +53,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
 
 | 
			
		||||
@@ -86,7 +86,7 @@
 | 
			
		||||
							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
						>
 | 
			
		||||
							<svg
 | 
			
		||||
								class="h-6 w-6 text-blue-600"
 | 
			
		||||
								class="size-6 text-blue-600"
 | 
			
		||||
								fill="currentColor"
 | 
			
		||||
								xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
								viewBox="0 0 24 24"
 | 
			
		||||
 
 | 
			
		||||
@@ -178,7 +178,7 @@
 | 
			
		||||
					name="enabled"
 | 
			
		||||
					type="checkbox"
 | 
			
		||||
					checked={editable.enabled}
 | 
			
		||||
					class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
					class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
				/>
 | 
			
		||||
				{$_("this-scanstation-is")}
 | 
			
		||||
				{#if editable.enabled}{$_("enabled")}{:else}{$_("disabled")}{/if}
 | 
			
		||||
 
 | 
			
		||||
@@ -54,7 +54,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,8 @@
 | 
			
		||||
	<button on:click={detailsAction} class="text-indigo-600 hover:text-indigo-900"
 | 
			
		||||
		>{$_("details")}</button
 | 
			
		||||
	>
 | 
			
		||||
{:else}
 | 
			
		||||
<span class="inline-block opacity-0 cursor-default" style="">{$_("details")}</span>
 | 
			
		||||
{/if}
 | 
			
		||||
{#if deleteEnabled}
 | 
			
		||||
	<button
 | 
			
		||||
 
 | 
			
		||||
@@ -89,7 +89,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
 
 | 
			
		||||
@@ -52,7 +52,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
 
 | 
			
		||||
@@ -63,7 +63,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
                viewBox="0 0 24 24"
 | 
			
		||||
 
 | 
			
		||||
@@ -100,7 +100,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                width="24"
 | 
			
		||||
                height="24"
 | 
			
		||||
 
 | 
			
		||||
@@ -55,7 +55,7 @@
 | 
			
		||||
							class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
						>
 | 
			
		||||
							<svg
 | 
			
		||||
								class="h-6 w-6 text-blue-600"
 | 
			
		||||
								class="size-6 text-blue-600"
 | 
			
		||||
								fill="currentColor"
 | 
			
		||||
								width="24"
 | 
			
		||||
								height="24"
 | 
			
		||||
 
 | 
			
		||||
@@ -144,7 +144,7 @@
 | 
			
		||||
											<input
 | 
			
		||||
												bind:checked={t.is_selected}
 | 
			
		||||
												type="checkbox"
 | 
			
		||||
												class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
												class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
											/>
 | 
			
		||||
										</td>
 | 
			
		||||
										<td class="px-6 py-4 whitespace-nowrap">
 | 
			
		||||
 
 | 
			
		||||
@@ -98,7 +98,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="none"
 | 
			
		||||
                width="24"
 | 
			
		||||
                height="24"
 | 
			
		||||
 
 | 
			
		||||
@@ -115,7 +115,7 @@
 | 
			
		||||
              class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
 | 
			
		||||
            >
 | 
			
		||||
              <svg
 | 
			
		||||
                class="h-6 w-6 text-blue-600"
 | 
			
		||||
                class="size-6 text-blue-600"
 | 
			
		||||
                fill="currentColor"
 | 
			
		||||
                width="24"
 | 
			
		||||
                height="24"
 | 
			
		||||
 
 | 
			
		||||
@@ -192,7 +192,7 @@
 | 
			
		||||
					name="enabled"
 | 
			
		||||
					type="checkbox"
 | 
			
		||||
					checked={editable_userdata.enabled}
 | 
			
		||||
					class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
					class="focus:ring-indigo-500 size-4 text-indigo-600 border-gray-300 rounded"
 | 
			
		||||
				/>
 | 
			
		||||
				{$_("set-the-user-active-inactive")}
 | 
			
		||||
			</p>
 | 
			
		||||
 
 | 
			
		||||
@@ -41,6 +41,8 @@
 | 
			
		||||
    "already-paid": "Bereits bezahlt",
 | 
			
		||||
    "amount": "Anzahl",
 | 
			
		||||
    "amount-per-kilometer": "Betrag pro Kilometer",
 | 
			
		||||
    "anonyme_spende": "Anonyme Spende",
 | 
			
		||||
    "anonymer_sponsor": "👻 Anonym",
 | 
			
		||||
    "apartment-suite-etc": "Apartment, Wohnung, etc.",
 | 
			
		||||
    "api-endpoint": "API-Endpunkt",
 | 
			
		||||
    "application_name": "Lauf für Kaya! - Admin",
 | 
			
		||||
@@ -224,6 +226,7 @@
 | 
			
		||||
    "error_on_login": "😢Fehler beim Login",
 | 
			
		||||
    "everything-concerning-your-profile": "Alles zu deinem Profil",
 | 
			
		||||
    "faq": "FAQ",
 | 
			
		||||
    "festbetrag": "Festbetrag",
 | 
			
		||||
    "filename_sponsoringquittungsliste": "SponsoringQuittungsListe",
 | 
			
		||||
    "filter-by-organization-team": "Filtern nach Organisation / Team",
 | 
			
		||||
    "first-name": "Vorname",
 | 
			
		||||
@@ -418,6 +421,7 @@
 | 
			
		||||
    "settings": "Einstellungen",
 | 
			
		||||
    "settings-for-your-profile": "Die Einstellungen deines Accounts",
 | 
			
		||||
    "something-about-the-group": "Infos zur Gruppe",
 | 
			
		||||
    "spende_pro_km": "Spende pro km",
 | 
			
		||||
    "sponsoring-quittungs-liste_herunterladen": "Sponsoring-Quittungs-Liste herunterladen",
 | 
			
		||||
    "sponsorings": "Sponsoringerklaerungen",
 | 
			
		||||
    "station-deleted": "Scannerstation gelöscht",
 | 
			
		||||
 
 | 
			
		||||
@@ -41,6 +41,8 @@
 | 
			
		||||
    "already-paid": "Already paid",
 | 
			
		||||
    "amount": "Amount",
 | 
			
		||||
    "amount-per-kilometer": "Amount per kilometer",
 | 
			
		||||
    "anonyme_spende": "Anonymous",
 | 
			
		||||
    "anonymer_sponsor": "👻 Anonymous",
 | 
			
		||||
    "apartment-suite-etc": "Apartment, suite, etc.",
 | 
			
		||||
    "api-endpoint": "API-Endpoint",
 | 
			
		||||
    "application_name": "Lauf für Kaya! - Admin",
 | 
			
		||||
@@ -224,6 +226,7 @@
 | 
			
		||||
    "error_on_login": "Error on login",
 | 
			
		||||
    "everything-concerning-your-profile": "Everything concerning your profile",
 | 
			
		||||
    "faq": "FAQ",
 | 
			
		||||
    "festbetrag": "Fixed amount",
 | 
			
		||||
    "filename_sponsoringquittungsliste": "DonorReceiptList",
 | 
			
		||||
    "filter-by-organization-team": "Filter by Organization/ Team",
 | 
			
		||||
    "first-name": "First name",
 | 
			
		||||
@@ -418,6 +421,7 @@
 | 
			
		||||
    "settings": "Settings",
 | 
			
		||||
    "settings-for-your-profile": "Settings for your profile",
 | 
			
		||||
    "something-about-the-group": "Something about the group...",
 | 
			
		||||
    "spende_pro_km": "Per Kilometer",
 | 
			
		||||
    "sponsoring-quittungs-liste_herunterladen": "Download donor receipt list",
 | 
			
		||||
    "sponsorings": "Sponsorings",
 | 
			
		||||
    "station-deleted": "station deleted",
 | 
			
		||||
 
 | 
			
		||||
@@ -25,3 +25,9 @@
 | 
			
		||||
#html5-qrcode-button-camera-stop {
 | 
			
		||||
	@apply px-2 inline-flex text-lg leading-5 font-semibold rounded-md border border-current bg-red-100 text-red-800 mb-2 cursor-pointer;
 | 
			
		||||
}
 | 
			
		||||
.donation_inactive_tab {
 | 
			
		||||
	@apply min-w-0 flex-1 bg-white first:border-s-0 border-s border-b-2 border-neutral-200 py-4 px-4 text-neutral-800 hover:text-neutral-700 text-sm font-medium text-center overflow-hidden hover:bg-neutral-200 cursor-pointer focus:z-10 focus:outline-hidden focus:bg-neutral-200 disabled:opacity-50 disabled:pointer-events-none;
 | 
			
		||||
}
 | 
			
		||||
.donation_active_tab {
 | 
			
		||||
	@apply min-w-0 flex-1 bg-blue-400 text-white first:border-s-0 border-s border-b-2 border-neutral-200 py-4 px-4 text-sm font-medium text-center overflow-hidden cursor-pointer focus:outline-hidden;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user