e.stopPropagation()} role="dialog" aria-modal="true" aria-label={page === "picker" ? (editingColor?.name ?? "Edit color") : page === "colors" ? "Colors" : "Settings"} tabindex="-1"> {#if page === "picker"}

{editingColor?.name ?? (editingColorId ? "Edit color" : "New color")}

(page = "colors")} /> {:else if page === "colors"}

Colors

{:else}

Settings

Preferences
{#if haptics.supported} {/if}
Colors
Theme
{#each modes as o} {/each}
{#if session && config.dataMode}
Where your tasks live

Each mode syncs directly from your client to your PDS. Private mode uses the ATProto spaces alpha.

{#each ["private", "public"] as const as m} {/each}
{/if}
Export your data
{/if}
{#if pendingMode} {@const to = dataModes[pendingMode]} {@const from = dataModes[pendingMode === "private" ? "public" : "private"]}
!switching && (pendingMode = null)}>
e.stopPropagation()} role="dialog" aria-modal="true" aria-label="Confirm data mode change" tabindex="-1">

Switch to {to.label}?

Your tasks move from {from.where} into {to.where}.

How the migration works

Every task on this device is copied into {to.where}, overwriting any record already there with the same id.

{#if pendingMode === "public"} Your permissioned space is then emptied, and your PDS records become the source of truth. {:else} Your PDS records are then removed, and your permissioned space becomes the source of truth. {/if}

Your tasks stay on this device the whole time.

{#if switchError}

{switchError}

{/if}
{/if}