new masonry layout for dashboard

This commit is contained in:
grngxd 2025-07-29 23:02:40 +01:00
parent 361c4e0b62
commit c0563b844a
2 changed files with 25 additions and 14 deletions

View file

@ -10,7 +10,9 @@ import { isSettingsOpen } from "~/lib/stores";
const StorageAndPlan = component$(() => {
return (
<div>
<p>current plan: stereo free</p>
<p>current plan: stereo pro+</p>
<p>storage used: 3.8 / 15 GB</p>
<p>upgrade your plan for more features</p>
</div>
);
});
@ -31,6 +33,14 @@ const PrivacyAndSecurity = component$(() => {
);
});
const DangerZone = component$(() => {
return (
<div>
<p>delete your account and data here</p>
</div>
);
});
export default component$(() => {
const open = useNanostore$<boolean>(isSettingsOpen);
@ -50,8 +60,9 @@ export default component$(() => {
const categories = useSignal([
{ name: "storage & plan", component: StorageAndPlan },
{ name: "api & integrations" , component: Integrations },
{ name: "privacy & security" , component: PrivacyAndSecurity }
{ name: "api & integrations", component: Integrations },
{ name: "privacy & security", component: PrivacyAndSecurity },
{ name: "danger zone", component: DangerZone }
])
const selectedCategory = useSignal(0);
@ -81,17 +92,17 @@ export default component$(() => {
onClick$={e => e.stopPropagation()}
class="flex gap-8 bg-black/30 bg-gradient-to-t from-stereo/20 to-transparent p-8 rounded-3xl shadow-lg w-4/7 h-4/7"
>
<div class="flex flex-col justify-between flex-1/4 border-r-2 border-white/25">
<div class="flex flex-col justify-between flex-1/4 border-r-2 border-white/15">
<h1 class="text-2xl">settings</h1>
<div>
{categories.value.map((category, i) => (
<div
key={category.name}
class={[
"group py-2 px-3 transition-colors cursor-pointer rounded-l-xl",
"group py-2 px-3 transition-colors cursor-pointer rounded-l-xl select-none",
selectedCategory.value === i
? "bg-white/20 text-white"
: "hover:bg-white/15 text-white/75 hover:text-white"
? "bg-white/10 text-white"
: "hover:bg-white/5 text-white/75 hover:text-white"
].join(" ")}
onClick$={() => (selectedCategory.value = i)}
>
@ -101,7 +112,7 @@ export default component$(() => {
))}
</div>
</div>
<div class="flex flex-col flex-3/4 text-lg">
<div class="flex flex-col flex-3/4 text-lg overflow-clip">
<h1 class="text-2xl mb-4">{categories.value[selectedCategory.value].name}</h1>
<SelectedComponent.value />
</div>