diff --git a/frontend/src/lib/components/Comments.svelte b/frontend/src/lib/components/Comments.svelte index 7832fdc..93a0acd 100644 --- a/frontend/src/lib/components/Comments.svelte +++ b/frontend/src/lib/components/Comments.svelte @@ -1,5 +1,6 @@ + +{#if known} + + + +{/if} diff --git a/frontend/src/lib/components/IconButton.svelte b/frontend/src/lib/components/IconButton.svelte new file mode 100644 index 0000000..7337458 --- /dev/null +++ b/frontend/src/lib/components/IconButton.svelte @@ -0,0 +1,40 @@ + + + diff --git a/frontend/src/lib/components/IconSprite.svelte b/frontend/src/lib/components/IconSprite.svelte new file mode 100644 index 0000000..bcaf629 --- /dev/null +++ b/frontend/src/lib/components/IconSprite.svelte @@ -0,0 +1,13 @@ + + + + diff --git a/frontend/src/lib/components/Lightbox.svelte b/frontend/src/lib/components/Lightbox.svelte index c75a602..5af7be3 100644 --- a/frontend/src/lib/components/Lightbox.svelte +++ b/frontend/src/lib/components/Lightbox.svelte @@ -2,6 +2,7 @@ import { api } from '$lib/api'; import type { Photo } from '$lib/types'; import Comments from './Comments.svelte'; + import Icon from './Icon.svelte'; interface Props { photos: Photo[]; @@ -55,9 +56,11 @@ class="bg-bg/95 fixed inset-0 z-50 flex flex-col" role="dialog" aria-modal="true" + tabindex="-1" onclick={(e) => { if (e.target === e.currentTarget) onClose(); }} + onkeydown={onKey} ontouchstart={onTouchStart} ontouchend={onTouchEnd} > @@ -67,23 +70,37 @@ {#if fresh?.download_url} Скачать + + Скачать + {/if} + +
- + + {#if current} › + +
{#if current} diff --git a/frontend/src/lib/components/PhotoGrid.svelte b/frontend/src/lib/components/PhotoGrid.svelte index a023df4..b7bbcb6 100644 --- a/frontend/src/lib/components/PhotoGrid.svelte +++ b/frontend/src/lib/components/PhotoGrid.svelte @@ -1,4 +1,5 @@ -
+
{#each options as option (option.value)} - + /> {/each}
diff --git a/frontend/src/lib/components/Uploader.svelte b/frontend/src/lib/components/Uploader.svelte index 4a46907..69bd165 100644 --- a/frontend/src/lib/components/Uploader.svelte +++ b/frontend/src/lib/components/Uploader.svelte @@ -1,5 +1,6 @@ +
- 📷 Galo + + + Galo +
{#if auth.isAuthenticated} + + Выйти + {:else} - Войти + + + Войти + {/if}
diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte index 6906b20..0ce6b47 100644 --- a/frontend/src/routes/+page.svelte +++ b/frontend/src/routes/+page.svelte @@ -1,5 +1,6 @@ {#if error}

{error}

{/if} @@ -105,9 +117,12 @@ removeMember(member.user_id)} > + + Удалить + {:else} {member.role} {/if} @@ -148,11 +163,26 @@ />
- + + Создать ссылку + {#if inviteUrl} -

Ссылка: {inviteUrl}

+
+ Ссылка: {inviteUrl} + +
{/if} {/if} diff --git a/frontend/src/routes/albums/[id]/settings/+page.svelte b/frontend/src/routes/albums/[id]/settings/+page.svelte index d5884be..debf745 100644 --- a/frontend/src/routes/albums/[id]/settings/+page.svelte +++ b/frontend/src/routes/albums/[id]/settings/+page.svelte @@ -2,6 +2,7 @@ import { page } from '$app/stores'; import { goto } from '$app/navigation'; import { api } from '$lib/api'; + import Icon from '$lib/components/Icon.svelte'; import type { Album, ShareLink } from '$lib/types'; const albumId = $derived($page.params.id); @@ -81,7 +82,10 @@ {#if error}

{error}

{/if} @@ -103,7 +107,13 @@ class="border-border bg-bg text-text w-full rounded-lg border px-3 py-2" > - + {#if saved}Сохранено{/if} @@ -117,9 +127,13 @@ class="border-border bg-bg text-text w-32 rounded-lg border px-2 py-1.5" /> - + + Создать ссылку +
    {#each shareLinks as link (link.id)} @@ -129,7 +143,14 @@ · /share/{link.token} {#if !link.revoked_at} - + {/if} {/each} @@ -138,6 +159,10 @@ + + Удалить альбом + + diff --git a/frontend/src/routes/invites/[token]/+page.svelte b/frontend/src/routes/invites/[token]/+page.svelte index b74c3ac..71b728e 100644 --- a/frontend/src/routes/invites/[token]/+page.svelte +++ b/frontend/src/routes/invites/[token]/+page.svelte @@ -2,6 +2,7 @@ import { page } from '$app/stores'; import { goto } from '$app/navigation'; import { api } from '$lib/api'; + import Icon from '$lib/components/Icon.svelte'; import { auth } from '$lib/stores/auth.svelte'; const token = $derived($page.params.token); @@ -43,13 +44,20 @@ type="button" disabled={busy} onclick={accept} - class="bg-primary text-primary-fg rounded-lg px-5 py-2.5 font-medium" + class="bg-primary text-primary-fg inline-flex items-center gap-2 rounded-lg px-5 py-2.5 font-medium" > + {busy ? 'Принятие…' : 'Принять приглашение'} {:else}

    Войдите или зарегистрируйтесь, чтобы принять приглашение.

    - Войти + + + Войти + {/if} {:else}

    Загрузка…

    diff --git a/frontend/src/routes/share/[token]/+page.svelte b/frontend/src/routes/share/[token]/+page.svelte index ee341d8..89e28cd 100644 --- a/frontend/src/routes/share/[token]/+page.svelte +++ b/frontend/src/routes/share/[token]/+page.svelte @@ -1,6 +1,7 @@