mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-03 19:17:11 -05:00 
			
		
		
		
	refactor(web): supporter badge (#11656)
* refactor(web): supporter badge * add style lang
This commit is contained in:
		
							parent
							
								
									4a42a72bd3
								
							
						
					
					
						commit
						96481aae5d
					
				@ -142,46 +142,4 @@ input:focus-visible {
 | 
				
			|||||||
  .scrollbar-stable {
 | 
					  .scrollbar-stable {
 | 
				
			||||||
    scrollbar-gutter: stable both-edges;
 | 
					    scrollbar-gutter: stable both-edges;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* Supporter Effect */
 | 
					 | 
				
			||||||
  .supporter-effect {
 | 
					 | 
				
			||||||
    position: relative;
 | 
					 | 
				
			||||||
    border: 0px solid transparent;
 | 
					 | 
				
			||||||
    background-clip: padding-box;
 | 
					 | 
				
			||||||
    animation: gradient 10s ease infinite;
 | 
					 | 
				
			||||||
    z-index: 1;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  .supporter-effect:hover:after {
 | 
					 | 
				
			||||||
    position: absolute;
 | 
					 | 
				
			||||||
    top: 0px;
 | 
					 | 
				
			||||||
    bottom: 0px;
 | 
					 | 
				
			||||||
    left: 0px;
 | 
					 | 
				
			||||||
    right: 0px;
 | 
					 | 
				
			||||||
    background: linear-gradient(
 | 
					 | 
				
			||||||
      to right,
 | 
					 | 
				
			||||||
      rgba(16, 132, 254, 0.25),
 | 
					 | 
				
			||||||
      rgba(229, 125, 175, 0.25),
 | 
					 | 
				
			||||||
      rgba(254, 36, 29, 0.25),
 | 
					 | 
				
			||||||
      rgba(255, 183, 0, 0.25),
 | 
					 | 
				
			||||||
      rgba(22, 193, 68, 0.25)
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
    content: '';
 | 
					 | 
				
			||||||
    border-radius: 8px;
 | 
					 | 
				
			||||||
    animation: gradient 10s ease infinite;
 | 
					 | 
				
			||||||
    background-size: 400% 400%;
 | 
					 | 
				
			||||||
    z-index: -1;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @keyframes gradient {
 | 
					 | 
				
			||||||
    0% {
 | 
					 | 
				
			||||||
      background-position: 0% 50%;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    50% {
 | 
					 | 
				
			||||||
      background-position: 100% 50%;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    100% {
 | 
					 | 
				
			||||||
      background-position: 0% 50%;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -16,6 +16,7 @@
 | 
				
			|||||||
  import { handleError } from '$lib/utils/handle-error';
 | 
					  import { handleError } from '$lib/utils/handle-error';
 | 
				
			||||||
  import { preferences } from '$lib/stores/user.store';
 | 
					  import { preferences } from '$lib/stores/user.store';
 | 
				
			||||||
  import { getButtonVisibility } from '$lib/utils/purchase-utils';
 | 
					  import { getButtonVisibility } from '$lib/utils/purchase-utils';
 | 
				
			||||||
 | 
					  import SupporterBadge from '$lib/components/shared-components/side-bar/supporter-badge.svelte';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  let showMessage = false;
 | 
					  let showMessage = false;
 | 
				
			||||||
  let isOpen = false;
 | 
					  let isOpen = false;
 | 
				
			||||||
@ -83,14 +84,7 @@
 | 
				
			|||||||
        class="w-full"
 | 
					        class="w-full"
 | 
				
			||||||
        type="button"
 | 
					        type="button"
 | 
				
			||||||
      >
 | 
					      >
 | 
				
			||||||
        <div
 | 
					        <SupporterBadge />
 | 
				
			||||||
          class="flex gap-1 mt-2 place-items-center dark:bg-immich-dark-primary/10 bg-gray-200/50 p-2 border supporter-effect rounded-lg transition-all"
 | 
					 | 
				
			||||||
        >
 | 
					 | 
				
			||||||
          <div class="h-6 w-6">
 | 
					 | 
				
			||||||
            <ImmichLogo noText />
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
          <p class="dark:text-gray-100">{$t('purchase_account_info')}</p>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
      </button>
 | 
					      </button>
 | 
				
			||||||
    {:else if !$isPurchased && showBuyButton}
 | 
					    {:else if !$isPurchased && showBuyButton}
 | 
				
			||||||
      <button
 | 
					      <button
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,47 @@
 | 
				
			|||||||
 | 
					<script lang="ts">
 | 
				
			||||||
 | 
					  import { t } from 'svelte-i18n';
 | 
				
			||||||
 | 
					  import ImmichLogo from '../immich-logo.svelte';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  export let centered = false;
 | 
				
			||||||
 | 
					  export let logoSize: 'sm' | 'lg' = 'sm';
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div
 | 
				
			||||||
 | 
					  class="flex gap-1 mt-2 place-items-center dark:bg-immich-dark-primary/10 bg-gray-200/50 p-2 rounded-lg bg-clip-padding border border-transparent relative supporter-effect"
 | 
				
			||||||
 | 
					  class:place-content-center={centered}
 | 
				
			||||||
 | 
					>
 | 
				
			||||||
 | 
					  <ImmichLogo class={logoSize === 'sm' ? 'size-6' : 'size-8'} noText />
 | 
				
			||||||
 | 
					  <p class="dark:text-gray-100">{$t('purchase_account_info')}</p>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style lang="postcss">
 | 
				
			||||||
 | 
					  .supporter-effect::after {
 | 
				
			||||||
 | 
					    @apply absolute inset-0 rounded-lg opacity-0 transition-opacity content-[''];
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .supporter-effect:hover::after {
 | 
				
			||||||
 | 
					    @apply opacity-100;
 | 
				
			||||||
 | 
					    background: linear-gradient(
 | 
				
			||||||
 | 
					      to right,
 | 
				
			||||||
 | 
					      rgba(16, 132, 254, 0.25),
 | 
				
			||||||
 | 
					      rgba(229, 125, 175, 0.25),
 | 
				
			||||||
 | 
					      rgba(254, 36, 29, 0.25),
 | 
				
			||||||
 | 
					      rgba(255, 183, 0, 0.25),
 | 
				
			||||||
 | 
					      rgba(22, 193, 68, 0.25)
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    animation: gradient 10s ease infinite;
 | 
				
			||||||
 | 
					    background-size: 400% 400%;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @keyframes gradient {
 | 
				
			||||||
 | 
					    0% {
 | 
				
			||||||
 | 
					      background-position: 0% 50%;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    50% {
 | 
				
			||||||
 | 
					      background-position: 100% 50%;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    100% {
 | 
				
			||||||
 | 
					      background-position: 0% 50%;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
@ -9,7 +9,7 @@
 | 
				
			|||||||
  import Icon from '$lib/components/elements/icon.svelte';
 | 
					  import Icon from '$lib/components/elements/icon.svelte';
 | 
				
			||||||
  import { mdiAlertCircleOutline } from '@mdi/js';
 | 
					  import { mdiAlertCircleOutline } from '@mdi/js';
 | 
				
			||||||
  import { purchaseStore } from '$lib/stores/purchase.store';
 | 
					  import { purchaseStore } from '$lib/stores/purchase.store';
 | 
				
			||||||
  import ImmichLogo from '$lib/components/shared-components/immich-logo.svelte';
 | 
					  import SupporterBadge from '$lib/components/shared-components/side-bar/supporter-badge.svelte';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  export let data: PageData;
 | 
					  export let data: PageData;
 | 
				
			||||||
  let showLicenseActivated = false;
 | 
					  let showLicenseActivated = false;
 | 
				
			||||||
@ -30,14 +30,7 @@
 | 
				
			|||||||
      {/if}
 | 
					      {/if}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      {#if $isPurchased}
 | 
					      {#if $isPurchased}
 | 
				
			||||||
        <div
 | 
					        <SupporterBadge logoSize="lg" centered />
 | 
				
			||||||
          class="flex gap-1 mt-2 place-items-center place-content-center dark:bg-immich-dark-primary/10 bg-gray-200/50 p-2 border rounded-lg dark:text-white supporter-effect"
 | 
					 | 
				
			||||||
        >
 | 
					 | 
				
			||||||
          <div class="h-8 w-8">
 | 
					 | 
				
			||||||
            <ImmichLogo noText />
 | 
					 | 
				
			||||||
          </div>
 | 
					 | 
				
			||||||
          <p>{$t('purchase_account_info')}</p>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
      {/if}
 | 
					      {/if}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      {#if showLicenseActivated || data.isActivated === true}
 | 
					      {#if showLicenseActivated || data.isActivated === true}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user