diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte deleted file mode 100644 index cc88df0e..00000000 --- a/src/routes/+page.svelte +++ /dev/null @@ -1,2 +0,0 @@ -

Welcome to SvelteKit

-

Visit svelte.dev/docs/kit to read the documentation

diff --git a/src/routes/[username]/+page.server.ts b/src/routes/[username]/+page.server.ts deleted file mode 100644 index e4216f1c..00000000 --- a/src/routes/[username]/+page.server.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { PageServerLoad } from './$types' -import { error } from '@sveltejs/kit' -import { userAdapter } from '$lib/api/adapters/user.adapter' -import { parseParty } from '$lib/api/schemas/party' - -export const load: PageServerLoad = async ({ params, url, depends, locals }) => { - depends('app:profile') - const username = params.username - const pageParam = url.searchParams.get('page') - const page = pageParam ? Math.max(1, parseInt(pageParam, 10) || 1) : 1 - const tab = url.searchParams.get('tab') === 'favorites' ? 'favorites' : 'teams' - const isOwner = locals.session?.account?.username === username - - try { - if (tab === 'favorites' && isOwner) { - const fav = await userAdapter.getFavorites({ page }) - return { - user: { username } as any, - items: fav.items, - page: fav.page, - total: fav.total, - totalPages: fav.totalPages, - perPage: fav.perPage, - tab, - isOwner - } - } - - const { user, items, total, totalPages, perPage } = await userAdapter.getProfile(username, page) - const parties = items.map((p) => parseParty(p)) - return { user, items: parties, page, total, totalPages, perPage, tab, isOwner } - } catch (e: any) { - throw error(e?.status || 502, e?.message || 'Failed to load profile') - } -} diff --git a/src/routes/[username]/+page.svelte b/src/routes/[username]/+page.svelte deleted file mode 100644 index 4174c130..00000000 --- a/src/routes/[username]/+page.svelte +++ /dev/null @@ -1,263 +0,0 @@ - - -
-
- {#if data.user?.avatar?.picture} - {`Avatar - {:else} - - {/if} -
-

{data.user.username}

- -
-
- - {#if partiesQuery.isLoading} -
- -

Loading {tab}...

-
- {:else if partiesQuery.isError} -
- -

Failed to load {tab}: {partiesQuery.error?.message || 'Unknown error'}

- -
- {:else if isEmpty} -
-

{tab === 'favorites' ? 'No favorite teams yet' : 'No teams found'}

-
- {:else} -
- - - {#if showSentinel} -
- {/if} - - {#if partiesQuery.isFetchingNextPage} -
- - Loading more... -
- {/if} - - {#if !partiesQuery.hasNextPage && items().length > 0} -
-

You've seen all {tab === 'favorites' ? 'favorites' : 'teams'}!

-
- {/if} -
- {/if} -
- - diff --git a/src/routes/about/+page.svelte b/src/routes/about/+page.svelte deleted file mode 100644 index ba6ecd61..00000000 --- a/src/routes/about/+page.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -{@html data.seo} - -

{m.hello_world({ name: 'World' })}

-
{JSON.stringify(data, null, 2)}
diff --git a/src/routes/about/+page.ts b/src/routes/about/+page.ts deleted file mode 100644 index 662ce0ad..00000000 --- a/src/routes/about/+page.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { PUBLIC_SIERO_API_URL } from '$env/static/public' - -export const load = async ({ fetch }) => { - const apiBase = PUBLIC_SIERO_API_URL || 'http://localhost:3000' - const response = await fetch(`${apiBase}/api/v1/version`) - const status = await response.json() - return { status } -} diff --git a/src/routes/api/settings/+server.ts b/src/routes/api/settings/+server.ts deleted file mode 100644 index 4c9f745c..00000000 --- a/src/routes/api/settings/+server.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { json } from '@sveltejs/kit' -import type { RequestHandler } from './$types' -import { setUserCookie } from '$lib/auth/cookies' -import type { UserCookie } from '$lib/types/UserCookie' - -export const POST: RequestHandler = async ({ cookies, request }) => { - try { - const userCookie = await request.json() as UserCookie - - // Calculate expiry date (60 days from now) - const expires = new Date() - expires.setDate(expires.getDate() + 60) - - // Set the user cookie with the updated data - setUserCookie(cookies, userCookie, { - secure: true, - expires - }) - - return json({ success: true }) - } catch (error) { - console.error('Failed to update settings cookie:', error) - return json({ error: 'Failed to update settings' }, { status: 500 }) - } -} \ No newline at end of file diff --git a/src/routes/collection/+page.svelte b/src/routes/collection/+page.svelte deleted file mode 100644 index 6a629bc0..00000000 --- a/src/routes/collection/+page.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - Collection - - -
-

Collection

-

Your collection in Granblue Fantasy

- -
- - diff --git a/src/routes/database/+layout.server.ts b/src/routes/database/+layout.server.ts deleted file mode 100644 index afba17c3..00000000 --- a/src/routes/database/+layout.server.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { redirect } from '@sveltejs/kit' -import type { LayoutServerLoad } from './$types' - -export const load: LayoutServerLoad = async ({ locals, url }) => { - // Check authentication first - if (!locals.session.isAuthenticated) { - throw redirect(302, '/login') - } - - // Check role authorization - const role = locals.session.account?.role ?? 0 - if (role < 7) { - // Redirect to home with no indication of why (security best practice) - throw redirect(302, '/') - } - - return { - role, - user: locals.session.user - } -} diff --git a/src/routes/database/+layout.svelte b/src/routes/database/+layout.svelte deleted file mode 100644 index da54141d..00000000 --- a/src/routes/database/+layout.svelte +++ /dev/null @@ -1,30 +0,0 @@ - - -{@render children?.()} - - diff --git a/src/routes/database/+page.server.ts b/src/routes/database/+page.server.ts deleted file mode 100644 index 9fa3bb74..00000000 --- a/src/routes/database/+page.server.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { redirect } from '@sveltejs/kit' -import type { PageServerLoad } from './$types' - -export const load: PageServerLoad = async ({ locals }) => { - // Double-check authorization at page level - if (!locals.session.isAuthenticated) { - throw redirect(302, '/login') - } - - const role = locals.session.account?.role ?? 0 - if (role < 7) { - throw redirect(302, '/') - } - - return {} -} \ No newline at end of file diff --git a/src/routes/database/+page.ts b/src/routes/database/+page.ts deleted file mode 100644 index 547d4f51..00000000 --- a/src/routes/database/+page.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { redirect } from '@sveltejs/kit' -import type { PageLoad } from './$types' - -export const load: PageLoad = async () => { - throw redirect(302, '/database/weapons') -} - diff --git a/src/routes/database/characters/+page.server.ts b/src/routes/database/characters/+page.server.ts deleted file mode 100644 index 0e8782f3..00000000 --- a/src/routes/database/characters/+page.server.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { redirect } from '@sveltejs/kit' -import type { PageServerLoad } from './$types' - -export const load: PageServerLoad = async ({ locals }) => { - // Enforce authorization at individual page level - if (!locals.session.isAuthenticated) { - throw redirect(302, '/login') - } - - const role = locals.session.account?.role ?? 0 - if (role < 7) { - throw redirect(302, '/') - } - - return {} -} \ No newline at end of file diff --git a/src/routes/database/characters/+page.svelte b/src/routes/database/characters/+page.svelte deleted file mode 100644 index bf0672a3..00000000 --- a/src/routes/database/characters/+page.svelte +++ /dev/null @@ -1,76 +0,0 @@ - - - - -
- -
- - diff --git a/src/routes/database/characters/[id]/+page.server.ts b/src/routes/database/characters/[id]/+page.server.ts deleted file mode 100644 index 7a9dfb21..00000000 --- a/src/routes/database/characters/[id]/+page.server.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { PageServerLoad } from './$types' -import { entityAdapter } from '$lib/api/adapters/entity.adapter' -import { error } from '@sveltejs/kit' - -export const load: PageServerLoad = async ({ params, parent }) => { - try { - // Get parent data to access role - const parentData = await parent() - - const character = await entityAdapter.getCharacter(params.id) - - if (!character) { - throw error(404, 'Character not found') - } - - return { - character, - role: parentData.role - } - } catch (err) { - console.error('Failed to load character:', err) - - if (err instanceof Error && 'status' in err && err.status === 404) { - throw error(404, 'Character not found') - } - - throw error(500, 'Failed to load character') - } -} \ No newline at end of file diff --git a/src/routes/database/characters/[id]/+page.svelte b/src/routes/database/characters/[id]/+page.svelte deleted file mode 100644 index 6e8f8b55..00000000 --- a/src/routes/database/characters/[id]/+page.svelte +++ /dev/null @@ -1,596 +0,0 @@ - - - - -
- {#if character} -
- - - {#if saveSuccess || saveError} -
- {#if saveSuccess} - Changes saved successfully! - {/if} - - {#if saveError} - {saveError} - {/if} -
- {/if} - -
- - {#if editMode} - - - - {:else} - - - {/if} - - - - {#if character.uncap} - - - - {/if} - - {#if editMode} - - - - - {/if} - - {#if editMode} - - - - - - - {:else} - - - {#if character.race?.[1]} - - {/if} - - - - {/if} - - - - {#if editMode} - - - - {:else} - - - {#if flb} - - {/if} - {/if} - - - - {#if editMode} - - - - {:else} - - - {#if flb} - - {/if} - {/if} - - - {#if !editMode && relatedQuery.data?.length} - - - - {/if} -
-
- {:else} -
-

Character Not Found

-

The character you're looking for could not be found.

- -
- {/if} -
- - diff --git a/src/routes/database/summons/+page.server.ts b/src/routes/database/summons/+page.server.ts deleted file mode 100644 index 0e8782f3..00000000 --- a/src/routes/database/summons/+page.server.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { redirect } from '@sveltejs/kit' -import type { PageServerLoad } from './$types' - -export const load: PageServerLoad = async ({ locals }) => { - // Enforce authorization at individual page level - if (!locals.session.isAuthenticated) { - throw redirect(302, '/login') - } - - const role = locals.session.account?.role ?? 0 - if (role < 7) { - throw redirect(302, '/') - } - - return {} -} \ No newline at end of file diff --git a/src/routes/database/summons/+page.svelte b/src/routes/database/summons/+page.svelte deleted file mode 100644 index 6cefc831..00000000 --- a/src/routes/database/summons/+page.svelte +++ /dev/null @@ -1,91 +0,0 @@ - - - - -
- -
- - diff --git a/src/routes/database/summons/[id]/+page.server.ts b/src/routes/database/summons/[id]/+page.server.ts deleted file mode 100644 index 7f6d9b0e..00000000 --- a/src/routes/database/summons/[id]/+page.server.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { PageServerLoad } from './$types' -import { entityAdapter } from '$lib/api/adapters/entity.adapter' -import { error } from '@sveltejs/kit' - -export const load: PageServerLoad = async ({ params, parent }) => { - try { - // Get parent data to access role - const parentData = await parent() - - const summon = await entityAdapter.getSummon(params.id) - - if (!summon) { - throw error(404, 'Summon not found') - } - - return { - summon, - role: parentData.role - } - } catch (err) { - console.error('Failed to load summon:', err) - - if (err instanceof Error && 'status' in err && err.status === 404) { - throw error(404, 'Summon not found') - } - - throw error(500, 'Failed to load summon') - } -} \ No newline at end of file diff --git a/src/routes/database/summons/[id]/+page.svelte b/src/routes/database/summons/[id]/+page.svelte deleted file mode 100644 index 684dab1b..00000000 --- a/src/routes/database/summons/[id]/+page.svelte +++ /dev/null @@ -1,267 +0,0 @@ - - - - -
- {#if summon} -
- - - - - - {#if flb} - - {/if} - {#if ulb} - - {/if} - {#if transcendence} - - {/if} - - - - - - {#if flb} - - {/if} - {#if ulb} - - {/if} - {#if transcendence} - - {/if} - - - - - {#if summon.uncap} - - - - {/if} - - -
-

Call Effect

-
- {#if summon.callName || summon.callDescription} -
-

{summon.callName || 'Call Effect'}

-

- {summon.callDescription || 'No description available'} -

-
- {:else} -

No call effect information available

- {/if} -
- -

Aura Effect

-
- {#if summon.auraName || summon.auraDescription} -
-

{summon.auraName || 'Aura Effect'}

-

- {summon.auraDescription || 'No description available'} -

-
- {:else} -

No aura effect information available

- {/if} -
- - {#if summon.subAuraName || summon.subAuraDescription} -

Sub Aura Effect

-
-
-

{summon.subAuraName || 'Sub Aura Effect'}

-

- {summon.subAuraDescription || 'No description available'} -

-
-
- {/if} -
-
- {:else} -
-

Summon Not Found

-

The summon you're looking for could not be found.

- -
- {/if} -
- - diff --git a/src/routes/database/weapons/+page.server.ts b/src/routes/database/weapons/+page.server.ts deleted file mode 100644 index 0e8782f3..00000000 --- a/src/routes/database/weapons/+page.server.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { redirect } from '@sveltejs/kit' -import type { PageServerLoad } from './$types' - -export const load: PageServerLoad = async ({ locals }) => { - // Enforce authorization at individual page level - if (!locals.session.isAuthenticated) { - throw redirect(302, '/login') - } - - const role = locals.session.account?.role ?? 0 - if (role < 7) { - throw redirect(302, '/') - } - - return {} -} \ No newline at end of file diff --git a/src/routes/database/weapons/+page.svelte b/src/routes/database/weapons/+page.svelte deleted file mode 100644 index 9225a255..00000000 --- a/src/routes/database/weapons/+page.svelte +++ /dev/null @@ -1,99 +0,0 @@ - - - - -
- -
- - diff --git a/src/routes/database/weapons/[id]/+page.server.ts b/src/routes/database/weapons/[id]/+page.server.ts deleted file mode 100644 index 32ff8a12..00000000 --- a/src/routes/database/weapons/[id]/+page.server.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { PageServerLoad } from './$types' -import { entityAdapter } from '$lib/api/adapters/entity.adapter' -import { error } from '@sveltejs/kit' - -export const load: PageServerLoad = async ({ params, parent }) => { - try { - // Get parent data to access role - const parentData = await parent() - - const weapon = await entityAdapter.getWeapon(params.id) - - if (!weapon) { - throw error(404, 'Weapon not found') - } - - return { - weapon, - role: parentData.role - } - } catch (err) { - console.error('Failed to load weapon:', err) - - if (err instanceof Error && 'status' in err && err.status === 404) { - throw error(404, 'Weapon not found') - } - - throw error(500, 'Failed to load weapon') - } -} \ No newline at end of file diff --git a/src/routes/database/weapons/[id]/+page.svelte b/src/routes/database/weapons/[id]/+page.svelte deleted file mode 100644 index 2ec64b04..00000000 --- a/src/routes/database/weapons/[id]/+page.svelte +++ /dev/null @@ -1,241 +0,0 @@ - - - - -
- {#if weapon} -
- - - - - - {#if weapon.uncap} - - - - {/if} - - - - - - {#if flb} - - {/if} - {#if ulb} - - {/if} - - - - - - {#if flb} - - {/if} - {#if ulb} - - {/if} - - -
-

Skills

-
- {#if weapon.weapon_skills && weapon.weapon_skills.length > 0} - {#each weapon.weapon_skills as skill} -
-

{skill.name || 'Unknown Skill'}

-

{skill.description || 'No description available'}

-
- {/each} - {:else} -

No skills available

- {/if} -
-
-
- {:else} -
-

Weapon Not Found

-

The weapon you're looking for could not be found.

- -
- {/if} -
- - diff --git a/src/routes/guides/+page.svelte b/src/routes/guides/+page.svelte deleted file mode 100644 index dcdf41fb..00000000 --- a/src/routes/guides/+page.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - Guides - - -
-

Guides

-

Guides and resources for Granblue Fantasy players.

- -
- - diff --git a/src/routes/me/+page.server.ts b/src/routes/me/+page.server.ts deleted file mode 100644 index dcb2b66e..00000000 --- a/src/routes/me/+page.server.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { PageServerLoad } from './$types' -import { redirect } from '@sveltejs/kit' - -export const load: PageServerLoad = async ({ locals }) => { - const username = locals.session?.account?.username - if (!username) throw redirect(302, '/auth/login') - throw redirect(302, `/${encodeURIComponent(username)}`) -} - diff --git a/src/routes/me/+page.svelte b/src/routes/me/+page.svelte deleted file mode 100644 index b1ecd5e7..00000000 --- a/src/routes/me/+page.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - -

Welcome, {data.account.username}!

- -
-

Account

-
    -
  • User ID: {data.account.userId}
  • -
  • Role: {data.account.role}
  • -
- -
-

Preferences

-
    -
  • Language: {data.user.language}
  • -
  • Theme: {data.user.theme}
  • -
  • Gender: {data.user.gender}
  • -
  • Element: {data.user.element}
  • -
  • Picture: {data.user.picture}
  • -
-
- -
- -
-
diff --git a/src/routes/settings/+page.server.ts b/src/routes/settings/+page.server.ts deleted file mode 100644 index b332732e..00000000 --- a/src/routes/settings/+page.server.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { redirect } from '@sveltejs/kit' -import type { PageServerLoad } from './$types' -import { getAccountFromCookies, getUserFromCookies } from '$lib/auth/cookies' - -export const load: PageServerLoad = async ({ cookies, url }) => { - const account = getAccountFromCookies(cookies) - const currentUser = getUserFromCookies(cookies) - - // Redirect to login if not authenticated - if (!account || !currentUser) { - throw redirect(303, `/login?redirect=${encodeURIComponent(url.pathname)}`) - } - - return { - account, - currentUser - } -} \ No newline at end of file diff --git a/src/routes/settings/+page.svelte b/src/routes/settings/+page.svelte deleted file mode 100644 index 464bf059..00000000 --- a/src/routes/settings/+page.svelte +++ /dev/null @@ -1,366 +0,0 @@ - - - - -
-
-

Account Settings

-

@{account.username}

- -
- {#if error} -
{error}
- {/if} - - {#if success} -
Settings saved successfully!
- {/if} - -
- -
- -
-
- {currentPicture?.name[locale] -
- -
- - -
- -
- - - {#if account.role === 9} -
- -
- {/if} -
- -
- - -
- -
-
- - diff --git a/src/routes/teams/[id]/+page.server.ts b/src/routes/teams/[id]/+page.server.ts deleted file mode 100644 index 793374bc..00000000 --- a/src/routes/teams/[id]/+page.server.ts +++ /dev/null @@ -1,28 +0,0 @@ -import type { PageServerLoad } from './$types' -import { partyAdapter } from '$lib/api/adapters/party.adapter' - -export const load: PageServerLoad = async ({ params, locals }) => { - const authUserId = locals.session?.account?.userId - - let partyFound = false - let party = null - let canEdit = false - - try { - // Fetch the party using adapter - party = await partyAdapter.getByShortcode(params.id) - partyFound = true - - // Determine if user can edit - canEdit = authUserId ? party.user?.id === authUserId : false - } catch (err) { - // Error is expected for test/invalid IDs - } - - return { - party: party ? structuredClone(party) : null, - canEdit: Boolean(canEdit), - partyFound, - authUserId: authUserId || null - } -} diff --git a/src/routes/teams/[id]/+page.svelte b/src/routes/teams/[id]/+page.svelte deleted file mode 100644 index a953737d..00000000 --- a/src/routes/teams/[id]/+page.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - -{#if party} - -{:else} -
-

Party not found

-

No party data available for this code.

-
-{/if} diff --git a/src/routes/teams/explore/+page.server.ts b/src/routes/teams/explore/+page.server.ts deleted file mode 100644 index 0a23671b..00000000 --- a/src/routes/teams/explore/+page.server.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type { PageServerLoad } from './$types' -import { error } from '@sveltejs/kit' -import { partyAdapter } from '$lib/api/adapters/party.adapter' - -export const load: PageServerLoad = async ({ url, depends }) => { - depends('app:parties:list') - - const pageParam = url.searchParams.get('page') - const page = pageParam ? Math.max(1, parseInt(pageParam, 10) || 1) : 1 - - - try { - const response = await partyAdapter.list({ page }) - - return { - items: response.results, - page, - total: response.total, - totalPages: response.totalPages, - perPage: response.perPage || 20 - } - } catch (e: any) { - console.error('[explore/+page.server.ts] Failed to load teams:', { - error: e, - message: e?.message, - status: e?.status, - stack: e?.stack, - details: e?.details - }) - const errorMessage = `Failed to load teams: ${e?.message || 'Unknown error'}. Status: ${e?.status || 'unknown'}` - throw error(e?.status || 502, errorMessage) - } -} - diff --git a/src/routes/teams/explore/+page.svelte b/src/routes/teams/explore/+page.svelte deleted file mode 100644 index 31cd93fe..00000000 --- a/src/routes/teams/explore/+page.svelte +++ /dev/null @@ -1,168 +0,0 @@ - - -
-
-

Explore Teams

-
- - {#if partiesQuery.isLoading} -
- -

Loading teams...

-
- {:else if partiesQuery.isError} -
- -

Failed to load teams: {partiesQuery.error?.message || 'Unknown error'}

- -
- {:else if isEmpty} -
-

No teams found

-
- {:else} -
- - - {#if showSentinel} -
- {/if} - - {#if partiesQuery.isFetchingNextPage} -
- - Loading more... -
- {/if} - - {#if !partiesQuery.hasNextPage && items.length > 0} -
-

You've reached the end of all teams!

-
- {/if} -
- {/if} -
- - diff --git a/src/routes/teams/new/+page.svelte b/src/routes/teams/new/+page.svelte deleted file mode 100644 index 7994dac0..00000000 --- a/src/routes/teams/new/+page.svelte +++ /dev/null @@ -1,820 +0,0 @@ - - - - -
-
-
-
-
-

Create a new team

-

Search and click items to add them to your grid

-
- -
- - - -
- {#if activeTab === GridType.Weapon} - - {:else if activeTab === GridType.Summon} - - {:else} -
- { - console.log('Open accessory selection sidebar') - }} - /> - -
- {/if} -
-
-
-
- - - - - - - Error Creating Team - - {errorMessage} - - - {#if errorDetails.length > 0} -
-

Details:

-
    - {#each errorDetails as detail} -
  • {detail}
  • - {/each} -
-
- {/if} - -
- - OK - -
-
-
-
- - diff --git a/src/routes/teams/new/+page.ts b/src/routes/teams/new/+page.ts deleted file mode 100644 index eb6d1a40..00000000 --- a/src/routes/teams/new/+page.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { PageLoad } from './$types' - -export const load: PageLoad = async ({ parent }) => { - const parentData = await parent() - - return { - isAuthenticated: parentData.isAuthenticated ?? false, - currentUser: parentData.currentUser ?? null - } -} diff --git a/src/routes/test/+layout.svelte b/src/routes/test/+layout.svelte deleted file mode 100644 index 7b7a236a..00000000 --- a/src/routes/test/+layout.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - -
- -
- - \ No newline at end of file diff --git a/src/routes/test/context-menu/+page.svelte b/src/routes/test/context-menu/+page.svelte deleted file mode 100644 index c9a79b14..00000000 --- a/src/routes/test/context-menu/+page.svelte +++ /dev/null @@ -1,140 +0,0 @@ - - -
-

Context Menu Test Page

- -

- Test both interaction methods: -

-
    -
  • Right-click on the weapon image to open the context menu
  • -
  • Hover over the weapon to see the gear button appear
  • -
  • Click the gear button to open the dropdown menu
  • -
- -
-
- - {#snippet trigger()} - Test weapon - {/snippet} - - {#snippet contextMenu()} - - {/snippet} - - {#snippet dropdownMenu()} - - {/snippet} - -
Hover me or right-click
-
-
- -
- Last action: {message} -
-
- - \ No newline at end of file diff --git a/src/routes/test/images/+page.svelte b/src/routes/test/images/+page.svelte deleted file mode 100644 index 1f8d1ed5..00000000 --- a/src/routes/test/images/+page.svelte +++ /dev/null @@ -1,450 +0,0 @@ - - -
-

Image Utility Test Page

- -
-
-

Resource Type

-
- {#each ['character', 'weapon', 'summon'] as type} - - {/each} -
-
- -
-

Image Variant

-
- {#each availableVariants as v} - - {/each} -
-
- -
-

Item Selection

-
- - {#each sampleIds[resourceType] as item} - - {/each} -
-
- -
-
- - {#if resourceType === 'character'} -
-

Character Pose

-
- -
- - {#if customPose} -
- {#each ['01', '02', '03', '04'] as p} - - {/each} -
- {:else} -
- - -
Calculated Pose: {calculatedPose}
-
- {/if} - - {#if itemId === '3030182000'} -
-

Gran/Djeeta Element

-
- {#each [{ value: 0, label: 'None' }, { value: 1, label: 'Wind' }, { value: 2, label: 'Fire' }, { value: 3, label: 'Water' }, { value: 4, label: 'Earth' }, { value: 5, label: 'Dark' }, { value: 6, label: 'Light' }] as elem} - - {/each} -
-
- {/if} -
- {/if} - - {#if resourceType === 'weapon' && variant === 'grid'} -
-

Weapon Element (Grid Only)

-
- {#each [{ value: 0, label: 'Default' }, { value: 1, label: 'Wind' }, { value: 2, label: 'Fire' }, { value: 3, label: 'Water' }, { value: 4, label: 'Earth' }, { value: 5, label: 'Dark' }, { value: 6, label: 'Light' }] as elem} - - {/each} -
-
- {/if} -
- -
-
-

Generated URL

- {imageUrl} -
- Directory: {resourceType}-{variant} - Extension: {fileExtension} -
-
- -
-

Image Preview

-
- Test image { - e.currentTarget.classList.add('error') - }} - on:load={(e) => { - e.currentTarget.classList.remove('error') - }} - /> -
-

Note: Image will show error state if file doesn't exist

-
-
-
- -