feat: new logo, fixed layout, misc

This commit is contained in:
Luka Dekanozishvili 2026-01-25 17:44:58 +01:00
parent 5f2984824d
commit 5c78528f4c
15 changed files with 52 additions and 111 deletions

View file

@ -8,16 +8,7 @@
<div class="hidden sm:block"></div>
<div class="hidden sm:block"></div>
<aside>
<svg
width="50"
height="50"
viewBox="0 0 24 24"
fill-rule="evenodd"
clip-rule="evenodd"
class="fill-current">
<path
d="M22.672 15.226l-2.432.811.841 2.515c.33 1.019-.209 2.127-1.23 2.456-1.15.325-2.148-.321-2.463-1.226l-.84-2.518-5.013 1.677.84 2.517c.391 1.203-.434 2.542-1.831 2.542-.88 0-1.601-.564-1.86-1.314l-.842-2.516-2.431.809c-1.135.328-2.145-.317-2.463-1.229-.329-1.018.211-2.127 1.231-2.456l2.432-.809-1.621-4.823-2.432.808c-1.355.384-2.558-.59-2.558-1.839 0-.817.509-1.582 1.327-1.846l2.433-.809-.842-2.515c-.33-1.02.211-2.129 1.232-2.458 1.02-.329 2.13.209 2.461 1.229l.842 2.515 5.011-1.677-.839-2.517c-.403-1.238.484-2.553 1.843-2.553.819 0 1.585.509 1.85 1.326l.841 2.517 2.431-.81c1.02-.33 2.131.211 2.461 1.229.332 1.018-.21 2.126-1.23 2.456l-2.433.809 1.622 4.823 2.433-.809c1.242-.401 2.557.484 2.557 1.838 0 .819-.51 1.583-1.328 1.847m-8.992-6.428l-5.01 1.675 1.619 4.828 5.011-1.674-1.62-4.829z"></path>
</svg>
<svg class="size-14" viewBox="-2 -2 139 157"><path style="fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:11px" d="M130.887 54.969 67.444 78.214 4 54.969l13.51-35.9L67.444 4l49.934 15.069zm-5.273 39.517-58.17 22.969-58.17-22.969h-.01m111.93 33.229-53.75 21.68-53.75-21.68m-.001 0L4.004 54.967m126.88 0-9.689 72.748M67.444 78.214v71.182"/></svg>
<p>
© 2025-{year} HexName
<br/>

View file

@ -2,7 +2,7 @@
import { goto } from "$app/navigation";
import { PUBLIC_BACKEND_API_HOST } from "$env/static/public";
import { auth, setUserLoggedOut } from "./auth.svelte";
async function toggleMfa() {
try {
const res = await fetch(`${PUBLIC_BACKEND_API_HOST}/api/v1/user/update-mfa`, {
@ -27,9 +27,23 @@
}
}
let { sideMenuOpen = $bindable(), isMobile } = $props()
let { sideMenuOpen = $bindable() } = $props()
let innerWidth: number | null | undefined = $state();
let isMobile: boolean = $derived.by(() =>{
if (!innerWidth) return false;
return innerWidth < 768;
});
let isXs: boolean = $derived.by(() =>{
if (!innerWidth) return false;
return innerWidth < 480;
});
</script>
<svelte:window bind:innerWidth/>
<div class="backdrop-blur bg-white/6 fixed navbar shadow-sm top-0 z-40 py-0" id="main-navbar">
<div class="navbar-start md:min-w-60">
{#if auth.isAuthenticated || isMobile}
@ -41,7 +55,14 @@
</li></ul>
</button>
{/if}
<ul class="menu pl-0"><li><a href="/" class="text-xl font-semibold">HexName</a></li></ul>
<ul class="menu pl-0">
<li class="flex flex-row">
<a href="/" class="text-xl font-semibold pl-2 ml-1">
<svg class="size-6.5 translate-x-0.5 translate-y-0.25 stroke-primary-content" viewBox="-2 -2 139 157"><path style="fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:11px" d="M130.887 54.969 67.444 78.214 4 54.969l13.51-35.9L67.444 4l49.934 15.069zm-5.273 39.517-58.17 22.969-58.17-22.969h-.01m111.93 33.229-53.75 21.68-53.75-21.68m-.001 0L4.004 54.967m126.88 0-9.689 72.748M67.444 78.214v71.182"/></svg>
HexName
</a>
</li>
</ul>
</div>
<div class="navbar m-0 md:min-w-50 p-0">
<ul class="menu menu-horizontal not-md:hidden m-auto justify-center items-center">
@ -82,8 +103,12 @@
</div>
{:else}
<div class="xs:gap-4 flex">
<a href="/register"><button style="box-shadow: 0 0 10px rgba(0,0,0,0.6)" class="btn btn-primary break-keep whitespace-nowrap rounded-lg">Create an account</button></a>
<a href="/login"><button style="box-shadow: 0 0 10px rgba(0,0,0,0.6)" class="btn btn-outline btn-secondary whitespace-nowrap border-2 rounded-lg not-xs:hidden">Log in</button></a>
{#if isXs}
<a href="/register"><button style="box-shadow: 0 0 10px rgba(0,0,0,0.6)" class="btn btn-primary break-keep whitespace-nowrap rounded-lg">Register</button></a>
{:else}
<a href="/register"><button style="box-shadow: 0 0 10px rgba(0,0,0,0.6)" class="btn btn-primary break-keep whitespace-nowrap rounded-lg">Create an account</button></a>
{/if}
<a href="/login"><button style="box-shadow: 0 0 10px rgba(0,0,0,0.6)" class="btn btn-outline btn-secondary whitespace-nowrap border-2 rounded-lg not-xs:hidden">Log in</button></a>
</div>
{/if}
</div>

View file

@ -24,6 +24,11 @@
{#if isDashboard}
<li class="bg-base-300 opacity-0 lg:opacity-100 h-screen fixed -z-1 w-60 top-0 left-0 m-0"></li>
{/if}
<li class="xs:hidden block">
<a href="/register">Register</a>
<a href="/login">Log in</a>
</li>
<div class="xs:hidden divider m-0"></div>
<li class="md:hidden block">
<a href="/">Home</a>
<a href="/about">About us</a>

View file

@ -1,14 +0,0 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="107"
height="128"
viewBox="0 0 107 128"
>
<title>svelte-logo</title><path
d="M94.157 22.819c-10.4-14.885-30.94-19.297-45.792-9.835L22.282 29.608A29.92 29.92 0 0 0 8.764 49.65a31.5 31.5 0 0 0 3.108 20.231 30 30 0 0 0-4.477 11.183 31.9 31.9 0 0 0 5.448 24.116c10.402 14.887 30.942 19.297 45.791 9.835l26.083-16.624A29.92 29.92 0 0 0 98.235 78.35a31.53 31.53 0 0 0-3.105-20.232 30 30 0 0 0 4.474-11.182 31.88 31.88 0 0 0-5.447-24.116"
style="fill: #ff3e00"
/><path
d="M45.817 106.582a20.72 20.72 0 0 1-22.237-8.243 19.17 19.17 0 0 1-3.277-14.503 18 18 0 0 1 .624-2.435l.49-1.498 1.337.981a33.6 33.6 0 0 0 10.203 5.098l.97.294-.09.968a5.85 5.85 0 0 0 1.052 3.878 6.24 6.24 0 0 0 6.695 2.485 5.8 5.8 0 0 0 1.603-.704L69.27 76.28a5.43 5.43 0 0 0 2.45-3.631 5.8 5.8 0 0 0-.987-4.371 6.24 6.24 0 0 0-6.698-2.487 5.7 5.7 0 0 0-1.6.704l-9.953 6.345a19 19 0 0 1-5.296 2.326 20.72 20.72 0 0 1-22.237-8.243 19.17 19.17 0 0 1-3.277-14.502 17.99 17.99 0 0 1 8.13-12.052l26.081-16.623a19 19 0 0 1 5.3-2.329 20.72 20.72 0 0 1 22.237 8.243 19.17 19.17 0 0 1 3.277 14.503 18 18 0 0 1-.624 2.435l-.49 1.498-1.337-.98a33.6 33.6 0 0 0-10.203-5.1l-.97-.294.09-.968a5.86 5.86 0 0 0-1.052-3.878 6.24 6.24 0 0 0-6.696-2.485 5.8 5.8 0 0 0-1.602.704L37.73 51.72a5.42 5.42 0 0 0-2.449 3.63 5.79 5.79 0 0 0 .986 4.372 6.24 6.24 0 0 0 6.698 2.486 5.8 5.8 0 0 0 1.602-.704l9.952-6.342a19 19 0 0 1 5.295-2.328 20.72 20.72 0 0 1 22.237 8.242 19.17 19.17 0 0 1 3.277 14.503 18 18 0 0 1-8.13 12.053l-26.081 16.622a19 19 0 0 1-5.3 2.328"
style="fill: #fff"
/>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

BIN
src/lib/assets/favicon.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
src/lib/assets/home-og.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

1
src/lib/assets/logo.svg Normal file
View file

@ -0,0 +1 @@
<svg viewBox="-18 -9 170 170"><path style="fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:11px" d="M130.887 54.969 67.444 78.214 4 54.969l13.51-35.9L67.444 4l49.934 15.069zm-5.273 39.517-58.17 22.969-58.17-22.969h-.01m111.93 33.229-53.75 21.68-53.75-21.68m-.001 0L4.004 54.967m126.88 0-9.689 72.748M67.444 78.214v71.182"/></svg>

After

Width:  |  Height:  |  Size: 368 B

BIN
src/lib/assets/logo.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -3,7 +3,7 @@ export function slideIn(node: HTMLElement) {
([entry]) => {
if (entry.isIntersecting) {
node.classList.add("opacity-100");
node.classList.remove("opacity-0", "lg:translate-x-60", "lg:-translate-x-60", "translate-x-30", "-translate-x-30", "lg:-translate-x-60", "not-lg:translate-y-40");
node.classList.remove("opacity-0", "lg:translate-x-60", "lg:-translate-x-60", "translate-x-25", "-translate-x-25", "lg:-translate-x-60", "not-lg:translate-y-40");
observer.unobserve(node);
}
},

View file

@ -1,8 +1,9 @@
<script lang="ts">
import './layout.css';
import { onMount } from 'svelte';
import favicon from '$lib/assets/favicon.svg';
// import homeOg from '$lib/assets/home-og.png';
import favicon from '$lib/assets/favicon.webp';
import homeOg from '$lib/assets/home-og.png';
import MainNavbar from '$lib/MainNavbar.svelte';
import SideMenu from '$lib/SideMenu.svelte';
import { auth, initUserAuthStatus } from '$lib/auth.svelte';
@ -33,49 +34,27 @@
afterNavigate(() => {
sideMenuOpen = isDashboard && window.matchMedia('(min-width: 1024px)').matches;
})
let innerWidth: number | null | undefined = $state();
let isMobile: boolean = $derived.by(() =>{
if (!innerWidth) return false;
return innerWidth < 768;
});
</script>
<svelte:window bind:innerWidth/>
<svelte:head>
<link rel="icon" href={favicon}/>
<link rel="apple-touch-icon" href={favicon}>
<!-- <meta name="twitter:image" content={homeOg}>
<meta property="og:image" content={homeOg}> -->
<meta name="twitter:image" content={homeOg}>
<meta property="og:image" content={homeOg}>
<meta property="og:url" content="{page.url.toString()}">
<meta name="twitter:url" content="{page.url.toString()}">
</svelte:head>
<main class="bg-base-300">
<MainNavbar bind:sideMenuOpen {isMobile}/>
<MainNavbar bind:sideMenuOpen/>
<div class="flex flex-row min-h-0 flex-grow">
<!-- {#if auth.isAuthenticated} -->
<div class={sideMenuOpen && isDashboard ? "w-0 lg:w-60" : "w-0"}>
<SideMenu bind:sideMenuOpen={sideMenuOpen} {isDashboard}/>
</div>
<!-- {/if} -->
<div class={sideMenuOpen && isDashboard ? "w-0 lg:w-60" : "w-0"}>
<SideMenu bind:sideMenuOpen={sideMenuOpen} {isDashboard}/>
</div>
<div class="flex-grow mt-16 bg-base-300 not-sm:overflow-auto">
{@render children()}
<Footer/>
</div>
</div>
</main>
<!-- <div class="flex flex-col h-screen">
<MainNavbar/>
<div class="flex flex-row min-h-0 flex-grow">
{#if auth.isAuthenticated}
<SideMenu/>
{/if}
<div class="flex-grow overflow-auto sm:p-12 bg-base-300">
{@render children()}
</div>
</div>
</div> -->

View file

@ -109,7 +109,7 @@
</div>
<div class="grid grid-cols-1 lg:grid-cols-[1fr_auto_1fr] overflow-none -mt-4 lg:my-8 justify-items-center items-center not-lg:max-w-120 max-w-full justify-items-stretch">
<div use:slideIn class="flex flex-col stats w-50 max-w-72 h-100 not-lg:-mt-14 lg:pt-10 opacity-0 -translate-x-30 lg:-translate-x-60 ease-out transition-[transform, opacity] will-change-transform duration-1300 not-lg:order-1">
<div use:slideIn class="flex flex-col stats w-50 max-w-72 h-100 not-lg:-mt-14 lg:pt-10 opacity-0 -translate-x-25 lg:-translate-x-60 ease-out transition-[transform, opacity] will-change-transform duration-1300 not-lg:order-1">
<div class="stat place-items-center border-none">
<div class="stat-title">Our domains</div>
<div class="stat-value">3</div>
@ -153,7 +153,7 @@
</div>
</figure>
<div use:slideIn class="flex flex-col stats w-50 max-w-72 h-100 not-lg:-mt-14 lg:pt-10 opacity-0 translate-x-30 lg:translate-x-60 ease-out transition-[transform, opacity] will-change-transform duration-1300 not-lg:order-1">
<div use:slideIn class="flex flex-col stats w-50 max-w-72 h-100 not-lg:-mt-14 lg:pt-10 opacity-0 translate-x-25 lg:translate-x-60 ease-out transition-[transform, opacity] will-change-transform duration-1300 not-lg:order-1">
<div class="stat place-items-center border-none">
<div class="stat-title">Cost</div>
<div class="stat-value">0$</div>

View file

@ -46,6 +46,7 @@
<div class="hero bg-base-200 mb-16">
<div class="hero-content flex-col sm:flex-row-reverse">
<div class="skeleton h-32 w-32"></div>
<img
class="max-w-sm rounded-lg shadow-2xl"
alt="man in suit"

View file

@ -57,13 +57,6 @@
<div class="divider"></div>
<h2 class="legend text-2xl font-bold p-4 m-4">Questions about our services</h2>
<!-- <div class="flex justify-center p-4 m-4">
<h2 class="text-4xl font-semibold max-w-2xl">
<span class="bg-gradient-to-t from-primary to-base-300">Questions</span> about our services
</h2>
</div> -->
<div class="collapse collapse-arrow bg-base-200 border border-base-300">
<input type="radio"/>
<div class="collapse-title font-semibold">What is HexName?</div>
@ -100,7 +93,6 @@
</div>
</div>
<div class="collapse collapse-arrow bg-base-200 border border-base-300">
<input type="radio"/>
<div class="collapse-title font-semibold">How do I use my DDNS token to update my A/AAAA record?</div>
@ -129,9 +121,6 @@
</div>
</div>
<div class="collapse collapse-arrow bg-base-200 border border-base-300">
<input type="radio"/>
<div class="collapse-title font-semibold">Is this service really free?</div>
@ -216,7 +205,7 @@
<div class="collapse-title font-semibold">How does HexName make money?</div>
<div class="collapse-content text-sm">
<div class="p-2">
I don't make a cent lol
I don't lol
</div>
</div>
</div>

View file

@ -38,44 +38,8 @@
--noise: 0;
}
@plugin "daisyui/theme" {
name: "light";
default: false;
prefersdark: false;
color-scheme: "light";
--color-font: oklch(14% 0.005 285.823);
--color-base-100: oklch(100% 0 0);
--color-base-200: oklch(98% 0 0);
--color-base-300: oklch(95% 0 0);
--color-base-content: oklch(92% 0.013 255.508);
--color-primary: oklch(48% 0.243 264.376);
--color-primary-content: oklch(93% 0.032 255.585);
--color-secondary: #ff0076;
--color-secondary-content: oklch(94% 0.028 342.258);
--color-accent: oklch(77% 0.152 181.912);
--color-accent-content: oklch(38% 0.063 188.416); --color-neutral: oklch(14% 0.005 285.823);
--color-neutral-content: oklch(92% 0.004 286.32);
--color-info: oklch(74% 0.16 232.661);
--color-info-content: oklch(29% 0.066 243.157);
--color-success: oklch(79% 0.209 151.711);
--color-success-content: oklch(39% 0.095 152.535);
--color-warning: oklch(90% 0.182 98.111);
--color-warning-content: oklch(42% 0.095 57.708);
--color-error: oklch(64% 0.246 16.439);
--color-error-content: oklch(27% 0.105 12.094);
--radius-selector: 0.5rem;
--radius-field: 0.25rem;
--radius-box: 0.5rem;
--size-selector: 0.25rem;
--size-field: 0.25rem;
--border: 1px;
--depth: 0;
--noise: 0;
}
@theme {
--breakpoint-xs: 410px;
--breakpoint-xs: 390px;
--animate-fadeInDown: fadeInDown 1s ease-in;
@keyframes fadeInDown {