Skip to content

Commit 446aea9

Browse files
feat: new layout
1 parent d58640f commit 446aea9

File tree

11 files changed

+690
-569
lines changed

11 files changed

+690
-569
lines changed

src/backend/.python-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3.14

src/backend/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ dev = "fastapi dev ./app/main.py"
4949
packages = ["app"]
5050

5151
[tool.uv]
52-
default-groups = ["dev"]
52+
default-groups = "all"
5353
package = true
5454

5555
[project.scripts]
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import Root from "./tabs.svelte";
2+
import Content from "./tabs-content.svelte";
3+
import List from "./tabs-list.svelte";
4+
import Trigger from "./tabs-trigger.svelte";
5+
6+
export {
7+
Root,
8+
Content,
9+
List,
10+
Trigger,
11+
//
12+
Root as Tabs,
13+
Content as TabsContent,
14+
List as TabsList,
15+
Trigger as TabsTrigger,
16+
};
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<script lang="ts">
2+
import { Tabs as TabsPrimitive } from "bits-ui";
3+
import { cn } from "$lib/utils.js";
4+
5+
let {
6+
ref = $bindable(null),
7+
class: className,
8+
...restProps
9+
}: TabsPrimitive.ContentProps = $props();
10+
</script>
11+
12+
<TabsPrimitive.Content
13+
bind:ref
14+
data-slot="tabs-content"
15+
class={cn("flex-1 outline-none", className)}
16+
{...restProps}
17+
/>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<script lang="ts">
2+
import { Tabs as TabsPrimitive } from "bits-ui";
3+
import { cn } from "$lib/utils.js";
4+
5+
let {
6+
ref = $bindable(null),
7+
class: className,
8+
...restProps
9+
}: TabsPrimitive.ListProps = $props();
10+
</script>
11+
12+
<TabsPrimitive.List
13+
bind:ref
14+
data-slot="tabs-list"
15+
class={cn(
16+
"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
17+
className
18+
)}
19+
{...restProps}
20+
/>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<script lang="ts">
2+
import { Tabs as TabsPrimitive } from "bits-ui";
3+
import { cn } from "$lib/utils.js";
4+
5+
let {
6+
ref = $bindable(null),
7+
class: className,
8+
...restProps
9+
}: TabsPrimitive.TriggerProps = $props();
10+
</script>
11+
12+
<TabsPrimitive.Trigger
13+
bind:ref
14+
data-slot="tabs-trigger"
15+
class={cn(
16+
"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
17+
className
18+
)}
19+
{...restProps}
20+
/>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<script lang="ts">
2+
import { Tabs as TabsPrimitive } from "bits-ui";
3+
import { cn } from "$lib/utils.js";
4+
5+
let {
6+
ref = $bindable(null),
7+
value = $bindable(""),
8+
class: className,
9+
...restProps
10+
}: TabsPrimitive.RootProps = $props();
11+
</script>
12+
13+
<TabsPrimitive.Root
14+
bind:ref
15+
bind:value
16+
data-slot="tabs"
17+
class={cn("flex flex-col gap-2", className)}
18+
{...restProps}
19+
/>

src/frontend/src/routes/(web_crypto)/(navbar_and_footer)/(login_required)/+layout.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
</script>
1616

1717
{#if userData.isLoading}
18-
Loading...
18+
<div class="min-h-screen">Loading...</div>
1919
{:else if [null, undefined].includes(userData.data)}
2020
Login Required
2121
{:else}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<script lang="ts">
2+
import { page } from '$app/state';
3+
import { goto } from '$app/navigation';
4+
import * as Tabs from '$lib/components/ui/tabs';
5+
6+
let { children } = $props();
7+
8+
const tabs = [
9+
{ name: 'Profile', href: '/admin/user' },
10+
{ name: 'Project Settings', href: '/admin/config' }
11+
];
12+
</script>
13+
14+
<div class="min-h-screen w-full bg-background pb-20">
15+
<Tabs.Root value={page.url.pathname} class="w-full">
16+
<div class="mx-auto flex w-full max-w-5xl items-center px-6 pt-6 md:px-10">
17+
<Tabs.List class="grid w-100 grid-cols-2">
18+
{#each tabs as tab}
19+
<Tabs.Trigger value={tab.href} onclick={() => goto(tab.href)}>
20+
{tab.name}
21+
</Tabs.Trigger>
22+
{/each}
23+
</Tabs.List>
24+
</div>
25+
26+
<main class="mx-auto flex w-full max-w-5xl flex-col gap-8 p-6 md:p-10">
27+
<div class="flex-1 space-y-6">
28+
{@render children()}
29+
</div>
30+
</main>
31+
</Tabs.Root>
32+
</div>

0 commit comments

Comments
 (0)