diff --git a/src/lib/components/ThreeColumnPhotoGrid.svelte b/src/lib/components/ThreeColumnPhotoGrid.svelte
new file mode 100644
index 0000000..2c9d347
--- /dev/null
+++ b/src/lib/components/ThreeColumnPhotoGrid.svelte
@@ -0,0 +1,290 @@
+
+
+
+ {#each gridItems as { item, spanFull }}
+
+ {/each}
+
+
+
diff --git a/src/lib/components/ViewModeSelector.svelte b/src/lib/components/ViewModeSelector.svelte
index cf2a21f..fdbbe2f 100644
--- a/src/lib/components/ViewModeSelector.svelte
+++ b/src/lib/components/ViewModeSelector.svelte
@@ -16,25 +16,12 @@
onWidthChange?: (width: 'normal' | 'wide') => void
}
- let {
- mode = 'masonry',
- width = 'normal',
- onModeChange,
- onWidthChange
- }: Props = $props()
+ let { mode = 'two-column', width = 'wide', onModeChange, onWidthChange }: Props = $props()
-
-
-
-
+
-
+
{#if mode !== 'horizontal'}
-
+
-
-
+
+
{/if}
@@ -96,18 +91,18 @@
align-items: center;
gap: $unit-2x;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
-
+
@include breakpoint('phone') {
display: none;
}
}
-
+
.mode-section,
.width-section {
display: flex;
gap: $unit-half;
}
-
+
.separator {
flex: 1;
min-width: $unit-2x;
diff --git a/src/routes/photos/+page.svelte b/src/routes/photos/+page.svelte
index 0461b68..45c01a2 100644
--- a/src/routes/photos/+page.svelte
+++ b/src/routes/photos/+page.svelte
@@ -28,7 +28,7 @@
// Initialize view mode from URL or default
const urlMode = $page.url.searchParams.get('view') as ViewMode
let viewMode = $state(
- urlMode && ['masonry', 'single', 'two-column', 'horizontal'].includes(urlMode) ? urlMode : 'masonry'
+ urlMode && ['masonry', 'single', 'two-column', 'horizontal'].includes(urlMode) ? urlMode : 'two-column'
)
// Track loaded photo IDs to prevent duplicates
@@ -46,7 +46,7 @@
viewMode = mode
if (browser) {
const url = new URL($page.url)
- if (mode === 'masonry') {
+ if (mode === 'two-column') {
url.searchParams.delete('view')
} else {
url.searchParams.set('view', mode)