start menu

This commit is contained in:
punkfairie 2025-02-23 10:39:12 -08:00
parent cd899127a1
commit 16eeeda5e9
Signed by: punkfairie
GPG key ID: B3C5488E9A1A7CA6
6 changed files with 2348 additions and 16 deletions

2205
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -11,6 +11,7 @@
"devDependencies": { "devDependencies": {
"@tailwindcss/forms": "^0.5.2", "@tailwindcss/forms": "^0.5.2",
"@tailwindcss/postcss": "^4.0.0", "@tailwindcss/postcss": "^4.0.0",
"@vitejs/plugin-legacy": "^6.0.1",
"alpinejs": "^3.4.2", "alpinejs": "^3.4.2",
"axios": "^1.7.4", "axios": "^1.7.4",
"concurrently": "^9.0.1", "concurrently": "^9.0.1",
@ -21,6 +22,7 @@
"prettier-plugin-blade": "^2.1.19", "prettier-plugin-blade": "^2.1.19",
"prettier-plugin-tailwindcss": "^0.6.11", "prettier-plugin-tailwindcss": "^0.6.11",
"tailwindcss": "^4.0.7", "tailwindcss": "^4.0.7",
"terser": "^5.39.0",
"vite": "^6.0.11" "vite": "^6.0.11"
} }
} }

View file

@ -41,12 +41,19 @@ @layer base {
background-image: url("../images/bg.jpg"); background-image: url("../images/bg.jpg");
background-size: cover; background-size: cover;
background-color: #e1c0b9; background-color: #e1c0b9;
height: 100vh;
width: 100vw;
} }
body { body {
margin-left: 20px; margin-left: 20px;
margin-top: 20px; margin-top: 20px;
} }
/* For Alpine.js */
[x-cloak] {
display: none !important;
}
} }
@layer components { @layer components {
@ -65,4 +72,69 @@ @layer components {
button { button {
cursor: pointer; cursor: pointer;
} }
.window hr {
height: 1px;
border-top: 1px solid var(--button-shadow);
background-color: var(--button-hilight);
}
nav.window {
position: fixed;
bottom: 28px;
left: 4px;
z-index: 50;
width: calc(var(--spacing) * 60);
padding: 1px;
}
nav.window > .wrapper {
border-left: 24px solid;
border-image-slice: 1;
border-image-source: linear-gradient(
to top,
var(--active-title),
var(--gradient-active-title)
);
margin: 2px;
min-height: calc(var(--spacing) * 29);
}
nav.window > .wrapper > .links {
padding-left: 2px;
padding-right: 2px;
}
nav.window > .wrapper > h1 {
position: absolute;
bottom: 0;
transform-origin: bottom left;
transform: rotate(-90deg);
font-family: Tahoma, Verdana, Segoe, sans-serif;
font-size: var(--text-lg);
line-height: var(--text-lg--line-height);
color: var(--color-white);
margin-bottom: 8px;
margin-left: 3px;
font-weight: 900;
}
nav.window > .wrapper > .links > a {
text-decoration: none;
color: var(--window-text);
display: block;
font-size: 12px;
height: 30px;
padding: 1px 2px;
}
nav.window > .wrapper > .links > a > img {
height: 30px;
margin-right: 6px;
vertical-align: middle;
}
nav.window > .wrapper > .links > a:hover {
background-color: var(--hilight);
}
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 B

View file

@ -29,21 +29,74 @@
{{-- </div> --}} {{-- </div> --}}
{{-- </div> --}} {{-- </div> --}}
{{-- </nav> --}} {{-- </nav> --}}
<nav <div x-data="{ open: false }">
class="window fixed bottom-0 left-0 box-border flex h-[30px] w-screen justify-between" <nav
> class="window"
<button class="min-w-0 p-1 text-[12px] leading-0 font-bold"> x-show="open"
<img x-cloak
src="{{ Vite::asset('resources/images/logo.svg') }}" x-on:click.outside="open = false"
alt="Windows Logo" x-transition.duration.200ms
class="relative top-[1px] w-4" x-transition.opacity
/> >
Start <div class="wrapper">
</button> <h1>
Retro
<span class="font-thin">Fairie</span>
</h1>
<div class="links">
<a href="/">
<img
src="{{ Vite::asset('resources/images/startmenu/desktop.png') }}"
alt="desktop"
/>
Home
</a>
<hr />
@auth
<a href="{{ route('admin') }}">Admin</a>
<hr />
<a href="{{ route('logout') }}">
<img
src="{{ Vite::asset('resources/images/startmenu/key.png') }}"
alt="key"
/>
Log Out
</a>
@else
<a href="{{ route('login') }}">
<img
src="{{ Vite::asset('resources/images/startmenu/key.png') }}"
alt="key"
/>
Log In
</a>
@endauth
</div>
</div>
</nav>
<div <div
class="status-bar-field max-w-fit px-2 leading-[20px]" class="window fixed bottom-0 left-0 box-border flex h-[30px] w-screen justify-between"
x-data >
x-text="new Date().toLocaleTimeString(undefined, { timeStyle: 'short' })" <button
></div> class="min-w-0 p-1 text-[12px] leading-0 font-bold"
</nav> x-on:click="open = ! open"
>
<img
src="{{ Vite::asset('resources/images/logo.svg') }}"
alt="Windows Logo"
class="relative top-[1px] w-4"
/>
Start
</button>
<div
class="status-bar-field max-w-fit px-2 leading-[20px]"
x-data
x-text="new Date().toLocaleTimeString(undefined, { timeStyle: 'short' })"
></div>
</div>
</div>