Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 194709df0c | |||
| 20f625be60 | |||
| 66a5fd84ae | |||
| 44d7401947 | |||
| f973e48561 | |||
| de186b7ff9 | |||
| 244d526933 |
+16
-18
@@ -55,7 +55,7 @@
|
||||
--card-foreground: oklch(89.24% 0.079 263.24);
|
||||
--popover: oklch(20.3% 0.05 282.86);
|
||||
--popover-foreground: oklch(89.24% 0.079 263.24);
|
||||
--primary: oklch(81.45% 0.159 300.53);
|
||||
--primary: oklch(72.08% 0.196 356.34);
|
||||
--primary-foreground: oklch(20.22% 0.048 282.86);
|
||||
--secondary: oklch(42.99% 0.031 270.49);
|
||||
--secondary-foreground: oklch(89.24% 0.079 263.24);
|
||||
@@ -67,8 +67,8 @@
|
||||
--destructive-foreground: oklch(20.22% 0.048 282.86);
|
||||
--border: oklch(27.7% 0.041 276.87);
|
||||
--input: oklch(27.7% 0.041 276.87);
|
||||
--ring: oklch(81.45% 0.159 300.53);
|
||||
--chart-1: oklch(81.45% 0.159 300.53);
|
||||
--ring: oklch(72.08% 0.196 356.34);
|
||||
--chart-1: oklch(72.08% 0.196 356.34);
|
||||
--chart-2: oklch(77.19% 0.121 223.01);
|
||||
--chart-3: oklch(79.1% 0.119 150.21);
|
||||
--chart-4: oklch(79.74% 0.167 57.97);
|
||||
@@ -76,12 +76,12 @@
|
||||
--sidebar: oklch(13.29% 0.036 282.86);
|
||||
--sidebar-background: oklch(13.29% 0.036 282.86);
|
||||
--sidebar-foreground: oklch(89.24% 0.079 263.24);
|
||||
--sidebar-primary: oklch(81.45% 0.159 300.53);
|
||||
--sidebar-primary: oklch(72.08% 0.196 356.34);
|
||||
--sidebar-primary-foreground: oklch(20.22% 0.048 282.86);
|
||||
--sidebar-accent: oklch(75.21% 0.121 293.01);
|
||||
--sidebar-accent-foreground: oklch(20.22% 0.048 282.86);
|
||||
--sidebar-border: oklch(35.13% 0.03 273.31);
|
||||
--sidebar-ring: oklch(81.45% 0.159 300.53);
|
||||
--sidebar-ring: oklch(72.08% 0.196 356.34);
|
||||
}
|
||||
|
||||
@theme inline {
|
||||
@@ -108,20 +108,18 @@
|
||||
--color-popover: var(--popover);
|
||||
--color-popover-foreground: var(--popover-foreground);
|
||||
--color-primary: var(--primary);
|
||||
--color-primary-50: #fefdff;
|
||||
--color-primary-100: #faf6fe;
|
||||
--color-primary-200: #f2e9fc;
|
||||
--color-primary-300: #e9dbfa;
|
||||
--color-primary-400: #e1cef9;
|
||||
--color-primary-500: #d9c0f7;
|
||||
--color-primary-600: #c6a0f3;
|
||||
--color-primary-700: #b381ef;
|
||||
--color-primary-800: #a061eb;
|
||||
--color-primary-900: #8d41e7;
|
||||
--color-primary-950: #8331e5;
|
||||
--color-primary-50: #ffe5f1;
|
||||
--color-primary-100: #ffcce2;
|
||||
--color-primary-200: #ff99c5;
|
||||
--color-primary-300: #ff66a8;
|
||||
--color-primary-400: #ff338b;
|
||||
--color-primary-500: #ff006e;
|
||||
--color-primary-600: #cc0058;
|
||||
--color-primary-700: #990042;
|
||||
--color-primary-800: #66002c;
|
||||
--color-primary-900: #330016;
|
||||
--color-primary-950: #24000f;
|
||||
--color-primary-foreground: var(--primary-foreground);
|
||||
--color-primary-50: #fefdff;
|
||||
--color-primary-100: #faf6fe;
|
||||
--color-secondary: var(--secondary);
|
||||
--color-secondary-foreground: var(--secondary-foreground);
|
||||
--color-muted: var(--muted);
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<script lang="ts">
|
||||
//TODO: maybe dynamic background images fetched from ezpp?
|
||||
|
||||
const COUNT = 120;
|
||||
const COUNT = 60;
|
||||
|
||||
function rand(min: number, max: number) {
|
||||
return Math.random() * (max - min) + min;
|
||||
}
|
||||
|
||||
const streaks = Array.from({ length: COUNT }).map(() => {
|
||||
const streaks = Array.from({ length: COUNT }).map((_, i) => {
|
||||
const depth = rand(0, 2);
|
||||
|
||||
const scale = 0.6 + depth * 0.8;
|
||||
@@ -19,8 +19,8 @@
|
||||
return {
|
||||
width: rand(180, 320) * scale,
|
||||
height: rand(16, 32) * scale,
|
||||
x: rand(-80, 100),
|
||||
y: rand(-80, 100),
|
||||
x: (i / COUNT) * 200 - 50,
|
||||
y: ((i * 137.5) % 100) - 20,
|
||||
opacity: 0.25 + depth * 0.65,
|
||||
duration,
|
||||
delay: rand(0, duration),
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<DropdownMenuPrimitive.Item
|
||||
bind:ref
|
||||
class={cn(
|
||||
'data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',
|
||||
'data-[highlighted]:bg-primary data-[highlighted]:text-primary-foreground relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',
|
||||
inset && 'pl-8',
|
||||
className
|
||||
)}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
bind:ref
|
||||
{value}
|
||||
class={cn(
|
||||
'data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
|
||||
'data-[highlighted]:bg-primary-300 data-[highlighted]:text-primary-foreground relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
|
||||
className
|
||||
)}
|
||||
{...restProps}
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
|
||||
import '@fontsource/sora';
|
||||
import '@fontsource/space-mono';
|
||||
import AnimatedBg from '@/components/ui/animated-bg/AnimatedBg.svelte';
|
||||
|
||||
let { children } = $props();
|
||||
|
||||
@@ -178,5 +179,8 @@
|
||||
</AlertDialog.Root>
|
||||
|
||||
<main>
|
||||
<div class="opacity-30">
|
||||
<AnimatedBg />
|
||||
</div>
|
||||
{@render children()}
|
||||
</main>
|
||||
|
||||
+16
-19
@@ -24,7 +24,7 @@
|
||||
} from '@/global';
|
||||
import {
|
||||
LoaderCircle,
|
||||
Music2,
|
||||
Music,
|
||||
Wifi,
|
||||
WifiOff,
|
||||
Drum,
|
||||
@@ -871,9 +871,6 @@
|
||||
</AlertDialog.Root>
|
||||
|
||||
<div class="grid grid-cols-[0.085fr_1fr] h-[100vh] relative">
|
||||
<div class="absolute top-0 left-0 w-full h-[100vh] opacity-30 z-0">
|
||||
<AnimatedBg />
|
||||
</div>
|
||||
<div
|
||||
class="p-3 border-r border-r-theme-900 flex flex-col items-center gap-2 z-10 bg-black/40 backdrop-blur-sm"
|
||||
>
|
||||
@@ -882,17 +879,17 @@
|
||||
</div>
|
||||
<Badge class="text-[0.5rem] py-0 px-2">{$launcherVersion || 'dev'}</Badge>
|
||||
<Button
|
||||
class="flex size-12 items-center gap-2 {selectedView === 'home'
|
||||
? 'bg-pink-300/50'
|
||||
: 'bg-black/20'} hover:bg-pink-300/50 rounded-[0.85rem] p-3 mt-3"
|
||||
class="flex size-12 items-center gap-2 border {selectedView === 'home'
|
||||
? 'bg-pink-300/50 border-pink-300/50'
|
||||
: 'bg-black/20 border-black/20'} hover:bg-pink-300/50 hover:border-pink-300/50 rounded-[0.85rem] p-3 mt-3"
|
||||
onclick={() => (selectedView = 'home')}
|
||||
>
|
||||
<House class="text-theme-200 !size-5" />
|
||||
</Button>
|
||||
<Button
|
||||
class="flex size-12 items-center gap-2 {selectedView === 'settings'
|
||||
? 'bg-pink-300/50'
|
||||
: 'bg-black/20'} hover:bg-pink-300/50 rounded-[0.85rem] p-3 mt-3"
|
||||
class="flex size-12 items-center gap-2 border {selectedView === 'settings'
|
||||
? 'bg-pink-300/50 border-pink-300/50'
|
||||
: 'bg-black/20 border-black/20'} hover:bg-pink-300/50 hover:border-pink-300/50 rounded-[0.85rem] p-3 mt-3"
|
||||
onclick={() => (selectedView = 'settings')}
|
||||
>
|
||||
<Settings class="text-theme-200 !size-5" />
|
||||
@@ -945,14 +942,14 @@
|
||||
{#if selectedView === 'home'}
|
||||
<div
|
||||
class="flex flex-col-reverse h-full"
|
||||
in:fly={{ duration: 400, delay: 400, y: 10, opacity: 0 }}
|
||||
out:fly={{ duration: 400, y: -10, opacity: 0 }}
|
||||
in:fly={{ duration: 400, delay: 400, y: 5, opacity: 0 }}
|
||||
out:fly={{ duration: 400, y: -5, opacity: 0 }}
|
||||
>
|
||||
<div class="relative z-10 px-8 py-4 flex items-center justify-between">
|
||||
<div class="flex items-center gap-4">
|
||||
{#if $osuInstallationPath !== ''}
|
||||
<div class="flex items-center gap-2">
|
||||
<Music2 class="size-3.5 text-blue-400" />
|
||||
<Music class="size-3.5 text-blue-400" />
|
||||
<span class="text-[11px] text-white/70 font-medium">
|
||||
{#if !$beatmapSets && $beatmapSets !== 0}
|
||||
<LoaderCircle class="animate-spin" size={12} />
|
||||
@@ -1067,8 +1064,8 @@
|
||||
{#if $currentUserInfo}
|
||||
<div
|
||||
class="m-1 w-72 h-48 bg-black/40 backdrop-blur-sm rounded-md border border-black/40 flex flex-col items-center p-3"
|
||||
in:fly={{ duration: 400, y: 10, opacity: 0 }}
|
||||
out:fly={{ duration: 400, y: -10, opacity: 0 }}
|
||||
in:fly={{ duration: 400, y: 5, opacity: 0 }}
|
||||
out:fly={{ duration: 400, y: -5, opacity: 0 }}
|
||||
>
|
||||
<Select.Root
|
||||
type="single"
|
||||
@@ -1220,8 +1217,8 @@
|
||||
{:else if selectedView === 'settings'}
|
||||
<div
|
||||
class="h-[100vh] w-full flex flex-col items-center justify-center"
|
||||
in:fly={{ duration: 400, delay: 400, y: 10, opacity: 0 }}
|
||||
out:fly={{ duration: 400, y: -10, opacity: 0 }}
|
||||
in:fly={{ duration: 400, delay: 400, y: 5, opacity: 0 }}
|
||||
out:fly={{ duration: 400, y: -5, opacity: 0 }}
|
||||
>
|
||||
<div class="p-8 w-full">
|
||||
<div class="bg-black/40 backdrop-blur-sm py-8 px-6 rounded-lg">
|
||||
@@ -1422,8 +1419,8 @@
|
||||
{:else if selectedView === 'login'}
|
||||
<div
|
||||
class="h-[100vh] w-full flex flex-col items-center justify-center"
|
||||
in:fly={{ duration: 400, delay: 400, y: 10, opacity: 0 }}
|
||||
out:fly={{ duration: 400, y: -10, opacity: 0 }}
|
||||
in:fly={{ duration: 400, delay: 400, y: 5, opacity: 0 }}
|
||||
out:fly={{ duration: 400, y: -5, opacity: 0 }}
|
||||
>
|
||||
<div class="p-8 px-52 w-full">
|
||||
<form onsubmit={performLogin} class="bg-black/40 backdrop-blur-sm rounded-lg p-8">
|
||||
|
||||
Reference in New Issue
Block a user