ui: overhaul home page, style guide, account settings - Home page: bg-background, border-based org cards, material icons, compact typography - Style guide: new header with back button, rounded-xl swatches, consistent section headings - Account settings: replace bg-background rounded-[32px] with border-based rounded-xl cards - svelte-check: 0 errors, vitest: 112/112 passed
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { getContext } from "svelte";
|
import { getContext } from "svelte";
|
||||||
import { Button, Card, Modal, Input } from "$lib/components/ui";
|
import { Button, Modal, Input } from "$lib/components/ui";
|
||||||
import { createOrganization, generateSlug } from "$lib/api/organizations";
|
import { createOrganization, generateSlug } from "$lib/api/organizations";
|
||||||
import { toasts } from "$lib/stores/toast.svelte";
|
import { toasts } from "$lib/stores/toast.svelte";
|
||||||
import type { SupabaseClient } from "@supabase/supabase-js";
|
import type { SupabaseClient } from "@supabase/supabase-js";
|
||||||
@@ -58,108 +58,53 @@
|
|||||||
<title>Organizations | Root</title>
|
<title>Organizations | Root</title>
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
<div class="min-h-screen bg-dark">
|
<div class="min-h-screen bg-background">
|
||||||
<header class="border-b border-light/10 bg-surface">
|
<!-- Header -->
|
||||||
<div
|
<header class="border-b border-light/5">
|
||||||
class="max-w-6xl mx-auto px-6 py-4 flex items-center justify-between"
|
<div class="max-w-5xl mx-auto px-6 py-4 flex items-center justify-between">
|
||||||
>
|
<div class="flex items-center gap-3">
|
||||||
<h1 class="text-xl font-bold text-light">Root Org</h1>
|
<span class="material-symbols-rounded text-primary" style="font-size: 28px; font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 28;">hub</span>
|
||||||
<div class="flex items-center gap-4">
|
<span class="font-heading text-h4 text-white">Root</span>
|
||||||
<a href="/style" class="text-sm text-light/60 hover:text-light"
|
</div>
|
||||||
>Style Guide</a
|
<div class="flex items-center gap-2">
|
||||||
>
|
<a href="/style" class="px-3 py-1.5 text-[12px] text-light/40 hover:text-white hover:bg-dark/50 rounded-lg transition-colors">Style Guide</a>
|
||||||
<form method="POST" action="/auth/logout">
|
<form method="POST" action="/auth/logout">
|
||||||
<Button variant="tertiary" size="sm" type="submit"
|
<Button variant="tertiary" size="sm" type="submit">Sign Out</Button>
|
||||||
>Sign Out</Button
|
|
||||||
>
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main class="max-w-6xl mx-auto px-6 py-8">
|
<main class="max-w-5xl mx-auto px-6 py-8">
|
||||||
<div class="flex items-center justify-between mb-8">
|
<div class="flex items-center justify-between mb-6">
|
||||||
<div>
|
<div>
|
||||||
<h2 class="text-2xl font-bold text-light">
|
<h2 class="font-heading text-h3 text-white">Your Organizations</h2>
|
||||||
Your Organizations
|
<p class="text-body-sm text-light/40 mt-1">Select an organization to get started</p>
|
||||||
</h2>
|
|
||||||
<p class="text-light/50 mt-1">
|
|
||||||
Select an organization to get started
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
<Button onclick={() => (showCreateModal = true)}>
|
<Button size="sm" icon="add" onclick={() => (showCreateModal = true)}>New Organization</Button>
|
||||||
<svg
|
|
||||||
class="w-4 h-4 mr-2"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
>
|
|
||||||
<line x1="12" y1="5" x2="12" y2="19" />
|
|
||||||
<line x1="5" y1="12" x2="19" y2="12" />
|
|
||||||
</svg>
|
|
||||||
New Organization
|
|
||||||
</Button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{#if organizations.length === 0}
|
{#if organizations.length === 0}
|
||||||
<Card>
|
<div class="bg-dark/30 border border-light/5 rounded-xl p-12 text-center">
|
||||||
<div class="p-12 text-center">
|
<span class="material-symbols-rounded text-light/20 mb-3 block" style="font-size: 48px; font-variation-settings: 'FILL' 0, 'wght' 300, 'GRAD' 0, 'opsz' 48;">groups</span>
|
||||||
<svg
|
<h3 class="font-heading text-body text-white mb-1">No organizations yet</h3>
|
||||||
class="w-16 h-16 mx-auto mb-4 text-light/30"
|
<p class="text-body-sm text-light/40 mb-6">Create your first organization to start collaborating</p>
|
||||||
viewBox="0 0 24 24"
|
<Button size="sm" icon="add" onclick={() => (showCreateModal = true)}>Create Organization</Button>
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="1.5"
|
|
||||||
>
|
|
||||||
<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" />
|
|
||||||
<circle cx="9" cy="7" r="4" />
|
|
||||||
<path d="M23 21v-2a4 4 0 0 0-3-3.87" />
|
|
||||||
<path d="M16 3.13a4 4 0 0 1 0 7.75" />
|
|
||||||
</svg>
|
|
||||||
<h3 class="text-lg font-medium text-light mb-2">
|
|
||||||
No organizations yet
|
|
||||||
</h3>
|
|
||||||
<p class="text-light/50 mb-6">
|
|
||||||
Create your first organization to start collaborating
|
|
||||||
</p>
|
|
||||||
<Button onclick={() => (showCreateModal = true)}
|
|
||||||
>Create Organization</Button
|
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
|
||||||
{:else}
|
{:else}
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3">
|
||||||
{#each organizations as org}
|
{#each organizations as org}
|
||||||
<a href="/{org.slug}" class="block group">
|
<a href="/{org.slug}" class="block group">
|
||||||
<Card
|
<div class="bg-dark/30 border border-light/5 hover:border-light/10 rounded-xl p-5 transition-all h-full">
|
||||||
class="h-full hover:ring-1 hover:ring-primary/50 transition-all"
|
<div class="flex items-start justify-between mb-3">
|
||||||
>
|
<div class="w-10 h-10 bg-primary/10 rounded-xl flex items-center justify-center text-primary font-heading text-body">
|
||||||
<div class="p-6">
|
|
||||||
<div
|
|
||||||
class="flex items-start justify-between mb-4"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="w-12 h-12 bg-primary/20 rounded-xl flex items-center justify-center text-primary font-bold text-lg"
|
|
||||||
>
|
|
||||||
{org.name.charAt(0).toUpperCase()}
|
{org.name.charAt(0).toUpperCase()}
|
||||||
</div>
|
</div>
|
||||||
<span
|
<span class="text-[10px] px-2 py-0.5 bg-light/5 rounded-md text-light/40 capitalize font-body">{org.role}</span>
|
||||||
class="text-xs px-2 py-1 bg-light/10 rounded text-light/60 capitalize"
|
|
||||||
>
|
|
||||||
{org.role}
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
<h3
|
<h3 class="font-heading text-body-sm text-white group-hover:text-primary transition-colors">{org.name}</h3>
|
||||||
class="text-lg font-semibold text-light group-hover:text-primary transition-colors"
|
<p class="text-[11px] text-light/30 mt-0.5 font-body">/{org.slug}</p>
|
||||||
>
|
|
||||||
{org.name}
|
|
||||||
</h3>
|
|
||||||
<p class="text-sm text-light/40 mt-1">
|
|
||||||
/{org.slug}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</Card>
|
|
||||||
</a>
|
</a>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -227,17 +227,17 @@
|
|||||||
<title>Account Settings | Root</title>
|
<title>Account Settings | Root</title>
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
<div class="flex-1 p-6">
|
<div class="flex-1 p-6 overflow-auto">
|
||||||
<div class="grid grid-cols-1 lg:grid-cols-3 gap-4">
|
<div class="grid grid-cols-1 lg:grid-cols-3 gap-4">
|
||||||
<!-- Profile Section -->
|
<!-- Profile Section -->
|
||||||
<div class="bg-background rounded-[32px] p-6 flex flex-col gap-6">
|
<div class="bg-dark/30 border border-light/5 rounded-xl p-5 flex flex-col gap-5">
|
||||||
<h2 class="font-heading text-h3 text-white">
|
<h2 class="font-heading text-body text-white">
|
||||||
{m.account_profile()}
|
{m.account_profile()}
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<!-- Avatar -->
|
<!-- Avatar -->
|
||||||
<div class="flex flex-col gap-3">
|
<div class="flex flex-col gap-3">
|
||||||
<span class="font-body text-body-sm text-light"
|
<span class="font-body text-body-sm text-light/60"
|
||||||
>{m.account_photo()}</span
|
>{m.account_photo()}</span
|
||||||
>
|
>
|
||||||
<div class="flex items-center gap-4">
|
<div class="flex items-center gap-4">
|
||||||
@@ -306,8 +306,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Appearance Section -->
|
<!-- Appearance Section -->
|
||||||
<div class="bg-background rounded-[32px] p-6 flex flex-col gap-6">
|
<div class="bg-dark/30 border border-light/5 rounded-xl p-5 flex flex-col gap-5">
|
||||||
<h2 class="font-heading text-h3 text-white">
|
<h2 class="font-heading text-body text-white">
|
||||||
{m.account_appearance()}
|
{m.account_appearance()}
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
@@ -325,7 +325,7 @@
|
|||||||
|
|
||||||
<!-- Accent Color -->
|
<!-- Accent Color -->
|
||||||
<div class="flex flex-col gap-2">
|
<div class="flex flex-col gap-2">
|
||||||
<span class="font-body text-body-sm text-light"
|
<span class="font-body text-body-sm text-light/60"
|
||||||
>{m.account_accent_color()}</span
|
>{m.account_accent_color()}</span
|
||||||
>
|
>
|
||||||
<div class="flex flex-wrap gap-2 items-center">
|
<div class="flex flex-wrap gap-2 items-center">
|
||||||
@@ -363,10 +363,10 @@
|
|||||||
<!-- Use Org Theme -->
|
<!-- Use Org Theme -->
|
||||||
<div class="flex items-center justify-between">
|
<div class="flex items-center justify-between">
|
||||||
<div>
|
<div>
|
||||||
<p class="font-body text-body text-white">
|
<p class="font-body text-body-sm text-white">
|
||||||
{m.account_use_org_theme()}
|
{m.account_use_org_theme()}
|
||||||
</p>
|
</p>
|
||||||
<p class="font-body text-[12px] text-light/50">
|
<p class="font-body text-[11px] text-light/40">
|
||||||
{m.account_use_org_theme_desc()}
|
{m.account_use_org_theme_desc()}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -388,20 +388,20 @@
|
|||||||
|
|
||||||
<!-- Language -->
|
<!-- Language -->
|
||||||
<div class="flex flex-col gap-2">
|
<div class="flex flex-col gap-2">
|
||||||
<span class="font-body text-body-sm text-light"
|
<span class="font-body text-body-sm text-light/60"
|
||||||
>{m.account_language()}</span
|
>{m.account_language()}</span
|
||||||
>
|
>
|
||||||
<p class="font-body text-[12px] text-light/50">
|
<p class="font-body text-[11px] text-light/40">
|
||||||
{m.account_language_desc()}
|
{m.account_language_desc()}
|
||||||
</p>
|
</p>
|
||||||
<div class="flex gap-2 mt-1">
|
<div class="flex gap-2 mt-1">
|
||||||
{#each locales as locale}
|
{#each locales as locale}
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="px-4 py-2 rounded-full text-sm font-medium transition-colors {currentLocale ===
|
class="px-3 py-1.5 rounded-lg text-[12px] font-medium transition-colors {currentLocale ===
|
||||||
locale
|
locale
|
||||||
? 'bg-primary text-night'
|
? 'bg-primary text-background'
|
||||||
: 'bg-light/10 text-light/70 hover:bg-light/20'}"
|
: 'bg-light/5 text-light/50 hover:bg-light/10'}"
|
||||||
onclick={() => handleLanguageChange(locale)}
|
onclick={() => handleLanguageChange(locale)}
|
||||||
>
|
>
|
||||||
{localeLabels[locale] ?? locale}
|
{localeLabels[locale] ?? locale}
|
||||||
@@ -418,16 +418,16 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Security & Sessions Section -->
|
<!-- Security & Sessions Section -->
|
||||||
<div class="bg-background rounded-[32px] p-6 flex flex-col gap-6">
|
<div class="bg-dark/30 border border-light/5 rounded-xl p-5 flex flex-col gap-5">
|
||||||
<h2 class="font-heading text-h3 text-white">
|
<h2 class="font-heading text-body text-white">
|
||||||
{m.account_security()}
|
{m.account_security()}
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div class="flex flex-col gap-2">
|
<div class="flex flex-col gap-2">
|
||||||
<p class="font-body text-body text-white">
|
<p class="font-body text-body-sm text-white">
|
||||||
{m.account_password()}
|
{m.account_password()}
|
||||||
</p>
|
</p>
|
||||||
<p class="font-body text-body-sm text-light/50">
|
<p class="font-body text-[11px] text-light/40">
|
||||||
{m.account_password_desc()}
|
{m.account_password_desc()}
|
||||||
</p>
|
</p>
|
||||||
<div class="mt-2">
|
<div class="mt-2">
|
||||||
@@ -452,11 +452,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="border-t border-light/10 pt-4 flex flex-col gap-2">
|
<div class="border-t border-light/5 pt-4 flex flex-col gap-2">
|
||||||
<p class="font-body text-body text-white">
|
<p class="font-body text-body-sm text-white">
|
||||||
{m.account_active_sessions()}
|
{m.account_active_sessions()}
|
||||||
</p>
|
</p>
|
||||||
<p class="font-body text-body-sm text-light/50">
|
<p class="font-body text-[11px] text-light/40">
|
||||||
{m.account_sessions_desc()}
|
{m.account_sessions_desc()}
|
||||||
</p>
|
</p>
|
||||||
<div class="mt-2">
|
<div class="mt-2">
|
||||||
|
|||||||
@@ -36,97 +36,76 @@
|
|||||||
<title>Style Guide | Root</title>
|
<title>Style Guide | Root</title>
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
<div class="min-h-screen bg-dark p-8">
|
<div class="min-h-screen bg-background">
|
||||||
<div class="max-w-6xl mx-auto space-y-12">
|
|
||||||
<!-- Back Button -->
|
|
||||||
<a
|
|
||||||
href="/"
|
|
||||||
class="inline-flex items-center gap-2 text-light/60 hover:text-light transition-colors"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="w-5 h-5"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
fill="none"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-width="2"
|
|
||||||
>
|
|
||||||
<path d="M19 12H5M12 19l-7-7 7-7" />
|
|
||||||
</svg>
|
|
||||||
Back to Home
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<header class="text-center space-y-4">
|
<header class="border-b border-light/5">
|
||||||
<h1 class="text-4xl font-bold text-light">Root Style Guide</h1>
|
<div class="max-w-5xl mx-auto px-6 py-4 flex items-center justify-between">
|
||||||
<p class="text-light/60">All UI components and their variants</p>
|
<div class="flex items-center gap-3">
|
||||||
|
<a href="/" class="p-1.5 text-light/40 hover:text-white hover:bg-dark/50 rounded-lg transition-colors">
|
||||||
|
<span class="material-symbols-rounded" style="font-size: 20px;">arrow_back</span>
|
||||||
|
</a>
|
||||||
|
<span class="font-heading text-body text-white">Style Guide</span>
|
||||||
|
<span class="text-[11px] text-light/30 font-body">All UI components and their variants</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<!-- Colors - Figma Design System -->
|
<div class="max-w-5xl mx-auto px-6 py-8 space-y-10">
|
||||||
|
|
||||||
|
<!-- Colors -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Colors</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
<div class="grid grid-cols-2 md:grid-cols-4 lg:grid-cols-8 gap-3">
|
||||||
>
|
<div class="space-y-1.5">
|
||||||
Colors
|
<div class="w-full h-16 rounded-xl bg-background border border-light/10"></div>
|
||||||
</h2>
|
<p class="text-[12px] text-light/60 font-body">Background</p>
|
||||||
<div class="grid grid-cols-2 md:grid-cols-4 lg:grid-cols-6 gap-4">
|
<code class="text-[10px] text-light/30">#05090F</code>
|
||||||
<div class="space-y-2">
|
|
||||||
<div
|
|
||||||
class="w-full h-20 rounded-[32px] bg-background border border-light/20"
|
|
||||||
></div>
|
|
||||||
<p class="text-sm text-light/60">Background</p>
|
|
||||||
<code class="text-xs text-light/40">#05090F</code>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="space-y-2">
|
<div class="space-y-1.5">
|
||||||
<div class="w-full h-20 rounded-[32px] bg-night"></div>
|
<div class="w-full h-16 rounded-xl bg-night"></div>
|
||||||
<p class="text-sm text-light/60">Night</p>
|
<p class="text-[12px] text-light/60 font-body">Night</p>
|
||||||
<code class="text-xs text-light/40">#0A121F</code>
|
<code class="text-[10px] text-light/30">#0A121F</code>
|
||||||
</div>
|
</div>
|
||||||
<div class="space-y-2">
|
<div class="space-y-1.5">
|
||||||
<div class="w-full h-20 rounded-[32px] bg-dark"></div>
|
<div class="w-full h-16 rounded-xl bg-dark"></div>
|
||||||
<p class="text-sm text-light/60">Dark</p>
|
<p class="text-[12px] text-light/60 font-body">Dark</p>
|
||||||
<code class="text-xs text-light/40">#14243E</code>
|
<code class="text-[10px] text-light/30">#14243E</code>
|
||||||
</div>
|
</div>
|
||||||
<div class="space-y-2">
|
<div class="space-y-1.5">
|
||||||
<div class="w-full h-20 rounded-[32px] bg-light"></div>
|
<div class="w-full h-16 rounded-xl bg-light"></div>
|
||||||
<p class="text-sm text-light/60">Light</p>
|
<p class="text-[12px] text-light/60 font-body">Light</p>
|
||||||
<code class="text-xs text-light/40">#E5E6F0</code>
|
<code class="text-[10px] text-light/30">#E5E6F0</code>
|
||||||
</div>
|
</div>
|
||||||
<div class="space-y-2">
|
<div class="space-y-1.5">
|
||||||
<div class="w-full h-20 rounded-[32px] bg-primary"></div>
|
<div class="w-full h-16 rounded-xl bg-primary"></div>
|
||||||
<p class="text-sm text-light/60">Primary</p>
|
<p class="text-[12px] text-light/60 font-body">Primary</p>
|
||||||
<code class="text-xs text-light/40">#00A3E0</code>
|
<code class="text-[10px] text-light/30">#00A3E0</code>
|
||||||
</div>
|
</div>
|
||||||
<div class="space-y-2">
|
<div class="space-y-1.5">
|
||||||
<div class="w-full h-20 rounded-[32px] bg-success"></div>
|
<div class="w-full h-16 rounded-xl bg-success"></div>
|
||||||
<p class="text-sm text-light/60">Success</p>
|
<p class="text-[12px] text-light/60 font-body">Success</p>
|
||||||
<code class="text-xs text-light/40">#33E000</code>
|
<code class="text-[10px] text-light/30">#33E000</code>
|
||||||
</div>
|
</div>
|
||||||
<div class="space-y-2">
|
<div class="space-y-1.5">
|
||||||
<div class="w-full h-20 rounded-[32px] bg-warning"></div>
|
<div class="w-full h-16 rounded-xl bg-warning"></div>
|
||||||
<p class="text-sm text-light/60">Warning</p>
|
<p class="text-[12px] text-light/60 font-body">Warning</p>
|
||||||
<code class="text-xs text-light/40">#FFAB00</code>
|
<code class="text-[10px] text-light/30">#FFAB00</code>
|
||||||
</div>
|
</div>
|
||||||
<div class="space-y-2">
|
<div class="space-y-1.5">
|
||||||
<div class="w-full h-20 rounded-[32px] bg-error"></div>
|
<div class="w-full h-16 rounded-xl bg-error"></div>
|
||||||
<p class="text-sm text-light/60">Error</p>
|
<p class="text-[12px] text-light/60 font-body">Error</p>
|
||||||
<code class="text-xs text-light/40">#E03D00</code>
|
<code class="text-[10px] text-light/30">#E03D00</code>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Buttons -->
|
<!-- Buttons -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Buttons</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Buttons
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="space-y-6">
|
<div class="space-y-5">
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Variants</h3>
|
||||||
Variants
|
|
||||||
</h3>
|
|
||||||
<div class="flex flex-wrap gap-3">
|
<div class="flex flex-wrap gap-3">
|
||||||
<Button variant="primary">Primary</Button>
|
<Button variant="primary">Primary</Button>
|
||||||
<Button variant="secondary">Secondary</Button>
|
<Button variant="secondary">Secondary</Button>
|
||||||
@@ -137,9 +116,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Sizes</h3>
|
||||||
Sizes
|
|
||||||
</h3>
|
|
||||||
<div class="flex flex-wrap items-center gap-3">
|
<div class="flex flex-wrap items-center gap-3">
|
||||||
<Button size="sm">Small</Button>
|
<Button size="sm">Small</Button>
|
||||||
<Button size="md">Medium</Button>
|
<Button size="md">Medium</Button>
|
||||||
@@ -148,9 +125,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">With Icons</h3>
|
||||||
With Icons (Material Symbols)
|
|
||||||
</h3>
|
|
||||||
<div class="flex flex-wrap items-center gap-3">
|
<div class="flex flex-wrap items-center gap-3">
|
||||||
<Button icon="add">Add Item</Button>
|
<Button icon="add">Add Item</Button>
|
||||||
<Button variant="secondary" icon="edit">Edit</Button>
|
<Button variant="secondary" icon="edit">Edit</Button>
|
||||||
@@ -160,9 +135,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">States</h3>
|
||||||
States
|
|
||||||
</h3>
|
|
||||||
<div class="flex flex-wrap gap-3">
|
<div class="flex flex-wrap gap-3">
|
||||||
<Button>Normal</Button>
|
<Button>Normal</Button>
|
||||||
<Button disabled>Disabled</Button>
|
<Button disabled>Disabled</Button>
|
||||||
@@ -171,9 +144,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Full Width</h3>
|
||||||
Full Width
|
|
||||||
</h3>
|
|
||||||
<div class="max-w-sm">
|
<div class="max-w-sm">
|
||||||
<Button fullWidth icon="rocket_launch"
|
<Button fullWidth icon="rocket_launch"
|
||||||
>Full Width Button</Button
|
>Full Width Button</Button
|
||||||
@@ -185,11 +156,7 @@
|
|||||||
|
|
||||||
<!-- Inputs -->
|
<!-- Inputs -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Inputs</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Inputs
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="grid md:grid-cols-2 gap-6">
|
<div class="grid md:grid-cols-2 gap-6">
|
||||||
<Input
|
<Input
|
||||||
@@ -229,11 +196,7 @@
|
|||||||
|
|
||||||
<!-- Textarea -->
|
<!-- Textarea -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Textarea</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Textarea
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="grid md:grid-cols-2 gap-6">
|
<div class="grid md:grid-cols-2 gap-6">
|
||||||
<Textarea
|
<Textarea
|
||||||
@@ -251,11 +214,7 @@
|
|||||||
|
|
||||||
<!-- Select -->
|
<!-- Select -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Select</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Select
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="grid md:grid-cols-2 gap-6">
|
<div class="grid md:grid-cols-2 gap-6">
|
||||||
<Select
|
<Select
|
||||||
@@ -273,17 +232,11 @@
|
|||||||
|
|
||||||
<!-- Avatars -->
|
<!-- Avatars -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Avatars</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Avatars
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="space-y-6">
|
<div class="space-y-5">
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Sizes</h3>
|
||||||
Sizes
|
|
||||||
</h3>
|
|
||||||
<div class="flex items-end gap-4">
|
<div class="flex items-end gap-4">
|
||||||
<Avatar name="John Doe" size="sm" />
|
<Avatar name="John Doe" size="sm" />
|
||||||
<Avatar name="John Doe" size="md" />
|
<Avatar name="John Doe" size="md" />
|
||||||
@@ -293,9 +246,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">With Status</h3>
|
||||||
With Status (placeholder)
|
|
||||||
</h3>
|
|
||||||
<div class="flex items-center gap-4">
|
<div class="flex items-center gap-4">
|
||||||
<Avatar name="Online User" size="lg" />
|
<Avatar name="Online User" size="lg" />
|
||||||
<Avatar name="Away User" size="lg" />
|
<Avatar name="Away User" size="lg" />
|
||||||
@@ -305,9 +256,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Color Generation</h3>
|
||||||
Different Names (Color Generation)
|
|
||||||
</h3>
|
|
||||||
<div class="flex items-center gap-4">
|
<div class="flex items-center gap-4">
|
||||||
<Avatar name="Alice" size="lg" />
|
<Avatar name="Alice" size="lg" />
|
||||||
<Avatar name="Bob" size="lg" />
|
<Avatar name="Bob" size="lg" />
|
||||||
@@ -321,17 +270,11 @@
|
|||||||
|
|
||||||
<!-- Chips -->
|
<!-- Chips -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Chips</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Chips
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="space-y-6">
|
<div class="space-y-5">
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Variants</h3>
|
||||||
Variants
|
|
||||||
</h3>
|
|
||||||
<div class="flex flex-wrap gap-3">
|
<div class="flex flex-wrap gap-3">
|
||||||
<Chip variant="primary">Primary</Chip>
|
<Chip variant="primary">Primary</Chip>
|
||||||
<Chip variant="success">Success</Chip>
|
<Chip variant="success">Success</Chip>
|
||||||
@@ -345,11 +288,7 @@
|
|||||||
|
|
||||||
<!-- List Items -->
|
<!-- List Items -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">List Items</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
List Items
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="max-w-[240px] space-y-2">
|
<div class="max-w-[240px] space-y-2">
|
||||||
<ListItem icon="info">Default Item</ListItem>
|
<ListItem icon="info">Default Item</ListItem>
|
||||||
@@ -364,11 +303,7 @@
|
|||||||
|
|
||||||
<!-- Org Header -->
|
<!-- Org Header -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Organization Header</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Organization Header
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="max-w-[240px] space-y-4">
|
<div class="max-w-[240px] space-y-4">
|
||||||
<OrgHeader name="Acme Corp" role="Admin" />
|
<OrgHeader name="Acme Corp" role="Admin" />
|
||||||
@@ -379,11 +314,7 @@
|
|||||||
|
|
||||||
<!-- Calendar Day -->
|
<!-- Calendar Day -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Calendar Day</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Calendar Day
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="flex gap-1 max-w-[720px]">
|
<div class="flex gap-1 max-w-[720px]">
|
||||||
<CalendarDay day="Mon" isHeader />
|
<CalendarDay day="Mon" isHeader />
|
||||||
@@ -403,17 +334,11 @@
|
|||||||
|
|
||||||
<!-- Badges -->
|
<!-- Badges -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Badges</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Badges
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="space-y-6">
|
<div class="space-y-5">
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Variants</h3>
|
||||||
Variants
|
|
||||||
</h3>
|
|
||||||
<div class="flex flex-wrap gap-3">
|
<div class="flex flex-wrap gap-3">
|
||||||
<Badge variant="default">Default</Badge>
|
<Badge variant="default">Default</Badge>
|
||||||
<Badge variant="primary">Primary</Badge>
|
<Badge variant="primary">Primary</Badge>
|
||||||
@@ -425,9 +350,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Sizes</h3>
|
||||||
Sizes
|
|
||||||
</h3>
|
|
||||||
<div class="flex flex-wrap items-center gap-3">
|
<div class="flex flex-wrap items-center gap-3">
|
||||||
<Badge size="sm">Small</Badge>
|
<Badge size="sm">Small</Badge>
|
||||||
<Badge size="md">Medium</Badge>
|
<Badge size="md">Medium</Badge>
|
||||||
@@ -439,11 +362,7 @@
|
|||||||
|
|
||||||
<!-- Cards -->
|
<!-- Cards -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Cards</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Cards
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="grid md:grid-cols-3 gap-6">
|
<div class="grid md:grid-cols-3 gap-6">
|
||||||
<Card variant="default">
|
<Card variant="default">
|
||||||
@@ -469,17 +388,11 @@
|
|||||||
|
|
||||||
<!-- Toggle -->
|
<!-- Toggle -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Toggle</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Toggle
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="space-y-6">
|
<div class="space-y-5">
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Sizes</h3>
|
||||||
Sizes
|
|
||||||
</h3>
|
|
||||||
<div class="flex items-center gap-6">
|
<div class="flex items-center gap-6">
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
<Toggle size="sm" />
|
<Toggle size="sm" />
|
||||||
@@ -497,9 +410,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">States</h3>
|
||||||
States
|
|
||||||
</h3>
|
|
||||||
<div class="flex items-center gap-6">
|
<div class="flex items-center gap-6">
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
<Toggle />
|
<Toggle />
|
||||||
@@ -520,17 +431,11 @@
|
|||||||
|
|
||||||
<!-- Spinners -->
|
<!-- Spinners -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Spinners</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Spinners
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="space-y-6">
|
<div class="space-y-5">
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Sizes</h3>
|
||||||
Sizes
|
|
||||||
</h3>
|
|
||||||
<div class="flex items-center gap-6">
|
<div class="flex items-center gap-6">
|
||||||
<Spinner size="sm" />
|
<Spinner size="sm" />
|
||||||
<Spinner size="md" />
|
<Spinner size="md" />
|
||||||
@@ -539,9 +444,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Colors</h3>
|
||||||
Colors
|
|
||||||
</h3>
|
|
||||||
<div class="flex items-center gap-6">
|
<div class="flex items-center gap-6">
|
||||||
<Spinner color="primary" />
|
<Spinner color="primary" />
|
||||||
<Spinner color="light" />
|
<Spinner color="light" />
|
||||||
@@ -555,11 +458,7 @@
|
|||||||
|
|
||||||
<!-- Modal -->
|
<!-- Modal -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Modal</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Modal
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<Button onclick={() => (modalOpen = true)}>Open Modal</Button>
|
<Button onclick={() => (modalOpen = true)}>Open Modal</Button>
|
||||||
@@ -584,18 +483,12 @@
|
|||||||
|
|
||||||
<!-- Typography -->
|
<!-- Typography -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Typography</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Typography
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<div class="space-y-6">
|
<div class="space-y-5">
|
||||||
<!-- Headings (Tilt Warp) -->
|
<!-- Headings (Tilt Warp) -->
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Headings — Tilt Warp</h3>
|
||||||
Headings — Tilt Warp
|
|
||||||
</h3>
|
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<div class="flex items-baseline gap-4">
|
<div class="flex items-baseline gap-4">
|
||||||
<span
|
<span
|
||||||
@@ -644,9 +537,7 @@
|
|||||||
|
|
||||||
<!-- Button Text (Tilt Warp) -->
|
<!-- Button Text (Tilt Warp) -->
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Button Text — Tilt Warp</h3>
|
||||||
Button Text — Tilt Warp
|
|
||||||
</h3>
|
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<div class="flex items-baseline gap-4">
|
<div class="flex items-baseline gap-4">
|
||||||
<span
|
<span
|
||||||
@@ -680,9 +571,7 @@
|
|||||||
|
|
||||||
<!-- Body Text (Work Sans) -->
|
<!-- Body Text (Work Sans) -->
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-light/80 mb-3">
|
<h3 class="text-body-sm font-heading text-light/60 mb-2">Body — Work Sans</h3>
|
||||||
Body — Work Sans
|
|
||||||
</h3>
|
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<div class="flex items-baseline gap-4">
|
<div class="flex items-baseline gap-4">
|
||||||
<span
|
<span
|
||||||
@@ -721,11 +610,7 @@
|
|||||||
|
|
||||||
<!-- Toasts -->
|
<!-- Toasts -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Toasts</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
|
||||||
>
|
|
||||||
Toasts
|
|
||||||
</h2>
|
|
||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
<Toast
|
<Toast
|
||||||
variant="success"
|
variant="success"
|
||||||
@@ -752,15 +637,9 @@
|
|||||||
|
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Logo</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
<p class="text-[12px] text-light/40 font-body">Brand logo component with size variants.</p>
|
||||||
>
|
<div class="flex items-center gap-8 bg-dark/30 border border-light/5 p-5 rounded-xl">
|
||||||
Logo
|
|
||||||
</h2>
|
|
||||||
<p class="text-light/60">
|
|
||||||
Brand logo component with size variants.
|
|
||||||
</p>
|
|
||||||
<div class="flex items-center gap-8 bg-night p-6 rounded-xl">
|
|
||||||
<div class="flex flex-col items-center gap-2">
|
<div class="flex flex-col items-center gap-2">
|
||||||
<Logo size="sm" />
|
<Logo size="sm" />
|
||||||
<span class="text-xs text-light/60">Small</span>
|
<span class="text-xs text-light/60">Small</span>
|
||||||
@@ -774,16 +653,9 @@
|
|||||||
|
|
||||||
<!-- ContentHeader -->
|
<!-- ContentHeader -->
|
||||||
<section class="space-y-4">
|
<section class="space-y-4">
|
||||||
<h2
|
<h2 class="font-heading text-body text-white border-b border-light/5 pb-2">Content Header</h2>
|
||||||
class="text-2xl font-semibold text-light border-b border-light/10 pb-2"
|
<p class="text-[12px] text-light/40 font-body">Page header component with avatar, title, action button, and more menu.</p>
|
||||||
>
|
<div class="bg-dark/30 border border-light/5 p-5 rounded-xl space-y-4">
|
||||||
Content Header
|
|
||||||
</h2>
|
|
||||||
<p class="text-light/60">
|
|
||||||
Page header component with avatar, title, action button, and
|
|
||||||
more menu.
|
|
||||||
</p>
|
|
||||||
<div class="bg-night p-6 rounded-xl space-y-4">
|
|
||||||
<ContentHeader
|
<ContentHeader
|
||||||
title="Page Title"
|
title="Page Title"
|
||||||
actionLabel="+ New"
|
actionLabel="+ New"
|
||||||
@@ -796,10 +668,8 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Footer -->
|
<!-- Footer -->
|
||||||
<footer class="text-center py-8 border-t border-light/10">
|
<footer class="text-center py-8 border-t border-light/5">
|
||||||
<p class="text-light/40 text-sm">
|
<p class="text-[11px] text-light/30 font-body">Root Organization Platform — Style Guide</p>
|
||||||
Root Organization Platform - Style Guide
|
|
||||||
</p>
|
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user