Skip to content

Commit a11cdc2

Browse files
Imporved design
Signed-off-by: Benjamin Strasser <bp.strasser@gmail.com>
1 parent d388fa9 commit a11cdc2

4 files changed

Lines changed: 89 additions & 24 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { default as ThemeSelector } from './theme-selector.svelte'
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<script lang="ts">
2+
import Sun from 'lucide-svelte/icons/sun'
3+
import Moon from 'lucide-svelte/icons/moon'
4+
import Computer from 'lucide-svelte/icons/computer'
5+
6+
import { ModeWatcher, mode, setMode } from 'mode-watcher'
7+
let currentMode: 'dark' | 'light' | 'system' = $mode || 'system'
8+
9+
$: {
10+
setMode(currentMode)
11+
}
12+
</script>
13+
14+
<ModeWatcher />
15+
16+
<div class="inline-flex w-auto items-center rounded-full border border-primary">
17+
<input
18+
type="radio"
19+
id="system"
20+
name="mode"
21+
class="hidden"
22+
value={'system'}
23+
bind:group={currentMode}
24+
/>
25+
<label
26+
for="system"
27+
class="flex h-8 w-8 cursor-pointer items-center justify-center rounded-full {currentMode ===
28+
'system'
29+
? 'selected'
30+
: ''}"
31+
>
32+
<Computer class="h-[1.2rem] w-[1.2rem]" />
33+
</label>
34+
35+
<input
36+
type="radio"
37+
id="light"
38+
name="mode"
39+
class="hidden"
40+
value={'light'}
41+
bind:group={currentMode}
42+
/>
43+
<label
44+
for="light"
45+
class="flex h-8 w-8 cursor-pointer items-center justify-center rounded-full {currentMode ===
46+
'light'
47+
? 'selected'
48+
: ''}"
49+
>
50+
<Sun class="h-[1.2rem] w-[1.2rem]" />
51+
</label>
52+
53+
<input
54+
type="radio"
55+
id="dark"
56+
name="mode"
57+
class="hidden"
58+
value={'dark'}
59+
bind:group={currentMode}
60+
/>
61+
<label
62+
for="dark"
63+
class="flex h-8 w-8 cursor-pointer items-center justify-center rounded-full {currentMode ===
64+
'dark'
65+
? 'selected'
66+
: ''}"
67+
>
68+
<Moon class="h-[1.2rem] w-[1.2rem]" />
69+
</label>
70+
</div>
71+
72+
<!--
73+
This is obviously not a sound implementation of the selected attribute, but I do not get it to work so this is fine until I get it to work.
74+
-->
75+
<style lang="pcss">
76+
.selected {
77+
@apply border border-primary;
78+
}
79+
</style>

src/routes/(auth)/+layout.svelte

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<script lang="ts">
22
import Check from 'lucide-svelte/icons/check'
3+
4+
import { ThemeSelector } from '$components/ui/theme-selector'
35
</script>
46

57
<div class="flex h-screen">
@@ -13,18 +15,18 @@
1315

1416
<!-- Middle Section -->
1517
<div
16-
class="flex flex-grow flex-col items-start justify-center space-y-4 p-6 text-2xl font-bold"
18+
class="flex flex-grow flex-col items-start justify-center space-y-4 p-6 text-2xl font-semibold"
1719
>
1820
<div class="flex items-center">
19-
<span class="mr-2 rounded-full bg-background p-1"><Check /></span>
21+
<span class="mr-2.5 rounded-full bg-background p-1.5"><Check strokeWidth={1} /></span>
2022
<span>Efficiently translate your content</span>
2123
</div>
2224
<div class="flex items-center">
23-
<span class="mr-2 rounded-full bg-background p-1"><Check /></span>
25+
<span class="mr-2.5 rounded-full bg-background p-1.5"><Check strokeWidth={1} /></span>
2426
<span>Open source and self hosting</span>
2527
</div>
2628
<div class="flex items-center">
27-
<span class="mr-2 rounded-full bg-background p-1"><Check /></span>
29+
<span class="mr-2.5 rounded-full bg-background p-1.5"><Check strokeWidth={1} /></span>
2830
<span>Seamless AI-Autocompletion integrations</span>
2931
</div>
3032
</div>
@@ -36,6 +38,9 @@
3638
<p>Not for everyone, but for most.</p>
3739
</div>
3840
</div>
41+
<div class="p-6">
42+
<ThemeSelector />
43+
</div>
3944
</div>
4045

4146
<div class="my-auto w-1/2"><slot></slot></div>

src/routes/+layout.svelte

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,9 @@
11
<script>
22
import '../app.pcss'
3-
import { ModeWatcher } from 'mode-watcher'
4-
5-
import Sun from 'lucide-svelte/icons/sun'
6-
import Moon from 'lucide-svelte/icons/moon'
7-
8-
import { toggleMode } from 'mode-watcher'
9-
import { Button } from '$components/ui/button/index'
10-
113
import { Toaster } from '$components/ui/sonner'
124
</script>
135

146
<main class="h-screen w-screen">
15-
<ModeWatcher />
16-
17-
<Button on:click={toggleMode} variant="outline" size="icon">
18-
<Sun
19-
class="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0"
20-
/>
21-
<Moon
22-
class="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100"
23-
/>
24-
<span class="sr-only">Toggle theme</span>
25-
</Button>
26-
277
<slot></slot>
288

299
<Toaster />

0 commit comments

Comments
 (0)