Select Sheet and Map Columns

First, select which sheet contains your member data, then map the columns to the required fields.

{#if hasSavedMapping && !showMappingEditor}

Configuration Complete

Spreadsheet: {savedSheetInfo?.name}

Sheet: {selectedSheetName}

Column mapping loaded from your previous session.
Everything is ready to proceed to the next step.

{:else}

Step 1: Select Sheet

{#if isLoadingSheets}
Loading sheets...
{:else if error}

{error}

{:else if availableSheets.length === 0}

No sheets found

This spreadsheet doesn't appear to contain any sheets.

{:else}

Spreadsheet: {$selectedSheet?.name}

Choose sheet:

{#each availableSheets as sheetName}
handleSheetSelect(sheetName)} onkeydown={(e) => e.key === 'Enter' && handleSheetSelect(sheetName)} >
{#if selectedSheetName === sheetName}
{/if}

{sheetName}

{#if selectedSheetName === sheetName}
{/if}
{/each}
{/if}

Step 2: Map Columns

{#if isLoadingData}
Loading sheet data...
{:else if sheetHeaders.length === 0}

Select a sheet above to map columns

{:else}

Map the columns from your sheet to the required fields:

{#each requiredFields as field}
{/each}
{#if previewData.length > 0}

Data Preview:

{#each Array.from({ length: Math.min(Math.max(sheetHeaders.length, previewData[0]?.length || 0), 26) }, (_, i) => i) as index} {/each} {#each previewData as row} {#each Array.from({ length: Math.min(Math.max(sheetHeaders.length, row.length), 26) }, (_, i) => i) as index} {/each} {/each}
{sheetHeaders[index] || `Column ${String.fromCharCode(65 + index)}`} {#if Object.values(mappedIndices).includes(index)}
{requiredFields.find((f) => mappedIndices[f.key] === index)?.label}
{/if}
{row[index] || ''}
{/if} {#if mappingComplete}

✓ All required fields are mapped! You can continue to the next step.

{:else}

Please map all required fields to continue.

{/if}
{/if}
{/if}