{party.name || '(untitled party)'}

{#if party.user} {@const avatarFile = party.user.avatar?.picture || ''} {@const ensurePng = (name: string) => (/\.png$/i.test(name) ? name : `${name}.png`)} {@const to2x = (name: string) => /\.png$/i.test(name) ? name.replace(/\.png$/i, '@2x.png') : `${name}@2x.png`} {@const avatarSrc = avatarFile ? `/profile/${ensurePng(avatarFile)}` : ''} {@const avatarSrcSet = avatarFile ? `${avatarSrc} 1x, /profile/${to2x(avatarFile)} 2x` : ''} {/if}
{#if canEdit()} {/if} {#if authUserId} {/if} {#if party.user?.id === authUserId} {/if}
{#if party.description || party.raid}
{#if party.description}
e.key === 'Enter' && openDescriptionPanel()} aria-label="View full description" >

Description

{/if} {#if party.raid}

Raid

{typeof party.raid.name === 'string' ? party.raid.name : party.raid.name?.en || party.raid.name?.ja || 'Unknown Raid'} {#if party.raid.group} Difficulty: {party.raid.group.difficulty} {/if}
{/if}
{/if} {#if error} {/if}
{#if activeTab === GridType.Weapon} {:else if activeTab === GridType.Summon} {:else}
{ // TODO: Open accessory selection sidebar console.log('Open accessory selection sidebar') }} />
{/if}
{#snippet children()}
{/snippet} {#snippet footer()} {/snippet}
{#snippet children()}

Are you sure you want to delete this party?

{party.name || 'Unnamed Party'}

⚠️ This action cannot be undone.

{/snippet} {#snippet footer()} {/snippet}
{ conflictData = null // Find next empty slot after conflict resolution const nextEmptySlot = findNextEmptySlot(party, activeTab) if (nextEmptySlot !== SLOT_NOT_FOUND) { selectedSlot = nextEmptySlot } }} onCancel={() => { conflictData = null }} />