diff --git a/src/lib/assets/cursor.svg b/src/lib/assets/cursor.svg
new file mode 100644
index 0000000..ab3858d
--- /dev/null
+++ b/src/lib/assets/cursor.svg
@@ -0,0 +1,106 @@
+
diff --git a/src/lib/assets/favicon.svg b/src/lib/assets/favicon.svg
index cc5dc66..a63789a 100644
--- a/src/lib/assets/favicon.svg
+++ b/src/lib/assets/favicon.svg
@@ -1 +1,23 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/lib/assets/flower.svg b/src/lib/assets/flower.svg
index 101ed26..df751c6 100644
--- a/src/lib/assets/flower.svg
+++ b/src/lib/assets/flower.svg
@@ -1,5 +1,5 @@
diff --git a/src/lib/components/ui/Artwork/DescriptionCard.svelte b/src/lib/components/ui/Artwork/DescriptionCard.svelte
index e45878a..a3a9729 100644
--- a/src/lib/components/ui/Artwork/DescriptionCard.svelte
+++ b/src/lib/components/ui/Artwork/DescriptionCard.svelte
@@ -2,7 +2,7 @@
let { title = 'Title', description = 'Description Description Description' } = $props();
-
-
{title}
+
diff --git a/src/lib/components/ui/FlowerCursor.svelte b/src/lib/components/ui/FlowerCursor.svelte
new file mode 100644
index 0000000..6ff5dd7
--- /dev/null
+++ b/src/lib/components/ui/FlowerCursor.svelte
@@ -0,0 +1,68 @@
+
+
+{#if visible}
+
+

+
+{/if}
+
+
diff --git a/src/lib/components/ui/Header.svelte b/src/lib/components/ui/Header.svelte
index f614129..b85d323 100644
--- a/src/lib/components/ui/Header.svelte
+++ b/src/lib/components/ui/Header.svelte
@@ -1,4 +1,6 @@
-
-
-
-
+
+ (01)
+ (02)
+ (03)
+ (04)
+ {caption}
+
+
+
+
+
+
diff --git a/src/lib/components/ui/upload/SnsFeedUpload.svelte b/src/lib/components/ui/upload/SnsFeedUpload.svelte
index e501dec..586e164 100644
--- a/src/lib/components/ui/upload/SnsFeedUpload.svelte
+++ b/src/lib/components/ui/upload/SnsFeedUpload.svelte
@@ -4,13 +4,13 @@
import { hydrateDevUpload } from '$lib/dev/hydrateUpload.js';
import { getFlowObject, isDevSeeded } from '$lib/flowerFlow/session.js';
- let { primaryFile = $bindable(null) } = $props();
+ let { primaryFile = $bindable(null), caption = 'upload their feed!' } = $props();
let firstFile = $state(null);
- let secondFile = $state(null);
$effect(() => {
- primaryFile = firstFile ?? secondFile ?? null;
+ const next = firstFile ?? null;
+ if (primaryFile !== next) primaryFile = next;
});
onMount(async () => {
@@ -23,7 +23,6 @@
try {
const files = await hydrateDevUpload(/** @type {Record
} */ (tiles));
if (files.first) firstFile = files.first;
- if (files.second) secondFile = files.second;
} catch {
// dev seed 실패 시 빈 타일 유지
}
@@ -31,45 +30,89 @@
-
-
+
+ (01)
+ {caption}
+
+
+
diff --git a/src/lib/components/ui/upload/UploadTile.svelte b/src/lib/components/ui/upload/UploadTile.svelte
index 8c93c55..8b566ee 100644
--- a/src/lib/components/ui/upload/UploadTile.svelte
+++ b/src/lib/components/ui/upload/UploadTile.svelte
@@ -3,7 +3,13 @@
// the chosen image (cover) when filled. Layout (size / grid placement) is
// supplied by the parent via `class` and `style` so the same tile works in
// both the moodboard and the SNS feed.
- let { label = null, class: klass = '', style = '', file = $bindable(null) } = $props();
+ let {
+ label = null,
+ showLabel = true,
+ class: klass = '',
+ style = '',
+ file = $bindable(null)
+ } = $props();
let preview = $state(null);
@@ -44,14 +50,14 @@
{#if preview}
-
- {#if label}
+
+ {#if label && showLabel}
{label}
{/if}
Change
@@ -63,7 +69,7 @@
class="flex size-10 items-center justify-center rounded-full border border-current text-xl leading-none"
aria-hidden="true">+
- {#if label}
+ {#if label && showLabel}
{label}
{/if}
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 0c1bdb9..52b7b35 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -2,15 +2,19 @@
import './layout.css';
import favicon from '$lib/assets/favicon.svg';
import DevSeedButton from '$lib/components/dev/DevSeedButton.svelte';
+ import FlowerCursor from '$lib/components/ui/FlowerCursor.svelte';
let { children } = $props();