aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-11-30 16:44:58 -0800
committerAdam Soltys <[email protected]>2023-11-30 16:44:58 -0800
commit3c97ac12bdb8e201d75261e62a176f08d9cbdb1c (patch)
tree70bd62644f0d86a45480a2b86ab7dc4a0aa2959c /src
parent4972b423fe4f88bcef1b790b2287e2db3517b529 (diff)
downloadcoinos-ui-3c97ac12bdb8e201d75261e62a176f08d9cbdb1c.tar.gz
coinos-ui-3c97ac12bdb8e201d75261e62a176f08d9cbdb1c.zip
page transitions
Diffstat (limited to 'src')
-rw-r--r--src/components/AppHeader.svelte4
-rw-r--r--src/routes/(app)/+layout.svelte5
-rw-r--r--src/routes/(app)/[username]/+layout.svelte52
-rw-r--r--src/routes/(app)/[username]/settings/[...tab]/+page.svelte38
4 files changed, 82 insertions, 17 deletions
diff --git a/src/components/AppHeader.svelte b/src/components/AppHeader.svelte
index ae162e1f..53b31de4 100644
--- a/src/components/AppHeader.svelte
+++ b/src/components/AppHeader.svelte
@@ -142,4 +142,8 @@
.z {
z-index: 100;
}
+
+ header {
+ view-transition-name: header;
+ }
</style>
diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte
index 7f4e3c7b..3422d358 100644
--- a/src/routes/(app)/+layout.svelte
+++ b/src/routes/(app)/+layout.svelte
@@ -10,8 +10,6 @@
import { warning, protectedRoutes } from '$lib/utils';
import { t, locale } from '$lib/translations';
- const localeLocalStorageKey = 'sveltekit-i18n-locale';
-
export let data;
let { rate, user, subject, token, rates } = data;
@@ -22,6 +20,7 @@
};
onMount(async () => {
+ let localeLocalStorageKey = 'sveltekit-i18n-locale';
let localStorageLocale = localStorage.getItem(localeLocalStorageKey);
if (localStorageLocale) locale.set(localStorageLocale);
@@ -32,7 +31,7 @@
if (browser) {
let log = console.log;
checkSocket();
- expireTimer = setTimeout(expirePin, user.locktime * 1000 || 300000);
+ expireTimer = setTimeout(expirePin, user.locktime * 1000 || 300000);
// if (window.NDEFReader) {
// try {
diff --git a/src/routes/(app)/[username]/+layout.svelte b/src/routes/(app)/[username]/+layout.svelte
index b2efa894..54fcd600 100644
--- a/src/routes/(app)/[username]/+layout.svelte
+++ b/src/routes/(app)/[username]/+layout.svelte
@@ -1,7 +1,57 @@
<script>
import { AppHeader } from '$comp';
+ import { onNavigate } from '$app/navigation';
export let data;
+
+ onNavigate((navigation) => {
+ if (!document.startViewTransition) return;
+
+ return new Promise((resolve) => {
+ document.startViewTransition(async () => {
+ resolve();
+ await navigation.complete;
+ });
+ });
+ });
</script>
<AppHeader {data} />
-<slot />
+<div class="content">
+ <slot />
+</div>
+
+<style>
+ @keyframes fade-in {
+ from {
+ opacity: 0;
+ }
+ }
+
+ @keyframes fade-out {
+ to {
+ opacity: 0;
+ }
+ }
+
+ @keyframes slide-from-right {
+ from {
+ transform: translateX(60px);
+ }
+ }
+
+ @keyframes slide-to-left {
+ to {
+ transform: translateX(-60px);
+ }
+ }
+
+ :root::view-transition-old(root) {
+ animation: 280ms cubic-bezier(0.4, 0, 1, 1) both fade-out,
+ 180ms cubic-bezier(0.4, 0, 0.2, 1) both slide-to-left;
+ }
+
+ :root::view-transition-new(root) {
+ animation: 280ms cubic-bezier(0, 0, 0.2, 1) 80ms both fade-in,
+ 180ms cubic-bezier(0.4, 0, 0.2, 1) both slide-from-right;
+ }
+</style>
diff --git a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte
index a3afce62..933fa1f6 100644
--- a/src/routes/(app)/[username]/settings/[...tab]/+page.svelte
+++ b/src/routes/(app)/[username]/settings/[...tab]/+page.svelte
@@ -121,6 +121,10 @@
}
}
+ if (user.email !== prev.email) {
+ await post('/api/verify', { test: true });
+ }
+
const response = await fetch(formElement.action, {
method: 'POST',
body: data
@@ -156,20 +160,22 @@
<input type="hidden" name="pin" value={$pin} />
<div class="mt-24 mb-20 px-3 md:px-0 w-full md:w-[400px] mx-auto space-y-8">
- <h1 class="text-center text-3xl md:text-4xl font-semibold mb-10">
- {$t('user.settings.header')}
- </h1>
+ <div class="header">
+ <h1 class="text-center text-3xl md:text-4xl font-semibold mb-10">
+ {$t('user.settings.header')}
+ </h1>
- <div class="font-bold flex justify-around items-center border-b pb-3 text-secondary">
- {#each tabs.filter((t) => t.name !== 'shopify') as { name, key }}
- <a href={`/${user.username}/settings/${name}`}>
- <button
- class="hover:opacity-80"
- class:text-black={tab === name || (tab === 'shopify' && name === 'pos')}
- >{$t(`user.settings.${key}`)}</button
- >
- </a>
- {/each}
+ <div class="font-bold flex justify-around items-center border-b pb-3 text-secondary">
+ {#each tabs.filter((t) => t.name !== 'shopify') as { name, key }}
+ <a href={`/${user.username}/settings/${name}`}>
+ <button
+ class="hover:opacity-80"
+ class:text-black={tab === name || (tab === 'shopify' && name === 'pos')}
+ >{$t(`user.settings.${key}`)}</button
+ >
+ </a>
+ {/each}
+ </div>
</div>
<svelte:component this={comp} {user} {rates} {submit} />
@@ -192,3 +198,9 @@
</button>
</div>
</form>
+
+<style>
+ .header {
+ view-transition-name: tabs;
+ }
+</style>