diff --git a/frontend/src/lib/components/OnboardingGuide.svelte b/frontend/src/lib/components/OnboardingGuide.svelte
new file mode 100644
index 0000000..58c8167
--- /dev/null
+++ b/frontend/src/lib/components/OnboardingGuide.svelte
@@ -0,0 +1,85 @@
+
+
+{#if visible}
+
+
+
+
+
+ {#each steps as _, i}
+
+ {/each}
+
+
+
+
+
{steps[step].icon}
+
{steps[step].title}
+
{steps[step].body}
+
+
+
+
+
+
+
+
+
+{/if}
diff --git a/frontend/src/routes/export/+page.svelte b/frontend/src/routes/export/+page.svelte
index d9fd7e8..e0eb76f 100644
--- a/frontend/src/routes/export/+page.svelte
+++ b/frontend/src/routes/export/+page.svelte
@@ -16,6 +16,8 @@
html: JobStatus;
}
+ const HTML_GUIDE_KEY = 'eventsnap_html_guide_seen';
+
let status = $state(null);
let showHtmlGuide = $state(false);
let loading = $state(true);
@@ -75,10 +77,15 @@
}
function downloadHtml() {
- showHtmlGuide = true;
+ if (localStorage.getItem(HTML_GUIDE_KEY)) {
+ window.location.href = '/api/v1/export/html';
+ } else {
+ showHtmlGuide = true;
+ }
}
function confirmHtmlDownload() {
+ localStorage.setItem(HTML_GUIDE_KEY, '1');
showHtmlGuide = false;
window.location.href = '/api/v1/export/html';
}
diff --git a/frontend/src/routes/feed/+page.svelte b/frontend/src/routes/feed/+page.svelte
index fa24442..f5f05da 100644
--- a/frontend/src/routes/feed/+page.svelte
+++ b/frontend/src/routes/feed/+page.svelte
@@ -7,6 +7,7 @@
import FeedGrid from '$lib/components/FeedGrid.svelte';
import HashtagChips from '$lib/components/HashtagChips.svelte';
import LightboxModal from '$lib/components/LightboxModal.svelte';
+ import OnboardingGuide from '$lib/components/OnboardingGuide.svelte';
import type { FeedUpload, FeedResponse, HashtagCount } from '$lib/types';
let uploads = $state([]);
@@ -223,3 +224,6 @@
onlike={handleLike}
/>
{/if}
+
+
+