diff --git a/src/app/globals.css b/src/app/globals.css index 79a25a9..ec97843 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -8,6 +8,7 @@ --font-heading: 'Comfortaa', sans-serif; --font-label: 'Varela Round', sans-serif; + --font-button: 'Varela Round', sans-serif; --transparent: transparent; @@ -26,6 +27,7 @@ --neutral-900: oklch(1 0 0); --background: var(--neutral-800); + --background-reversed: var(--neutral-000); --base: var(--neutral-800); --text: var(--neutral-000); --text-alt: var(--neutral-900); @@ -46,6 +48,11 @@ --active-secondary: oklch(0.4254 0.133 272.15); --disabled-secondary: oklch(0.4937 0.1697 271.26 / 0.5); + --muted: var(--color-neutral-700); + --hover-muted: var(--color-neutral-600); + --active-muted: var(--color-neutral-400); + --disabled-muted: var(--color-neutral-400); + --card: var(--neutral-800); /* ------------------- */ @@ -64,8 +71,6 @@ --secondary-foreground: oklch(0.21 0.034 264.665); - --muted: oklch(0.967 0.003 264.542); - --muted-foreground: oklch(0.551 0.027 264.364); --accent: oklch(0.967 0.003 264.542); @@ -125,6 +130,7 @@ @theme inline { --font-heading: var(--font-heading); --font-label: var(--font-label); + --font-button: var(--font-button); --transparent: var(--transparent); @@ -136,12 +142,14 @@ --color-neutral-400: var(--neutral-400); --color-neutral-500: var(--neutral-500); --color-neutral-600: var(--neutral-600); + --color-neutral-650: var(--neutral-650); --color-neutral-700: var(--neutral-700); --color-neutral-750: var(--neutral-750); --color-neutral-800: var(--neutral-800); --color-neutral-900: var(--neutral-900); --color-background: var(--neutral-750); + --color-background-reversed: var(--background-reversed); --color-base: var(--neutral-800); --color-text: var(--text); --color-text-alt: var(--text-alt); @@ -163,6 +171,11 @@ --color-active-secondary: var(--active-secondary); --color-disabled-secondary: var(--disabled-secondary); + --color-muted: var(--muted); + --color-hover-muted: var(--hover-muted); + --color-active-muted: var(--active-muted); + --color-disabled-muted: var(--disabled-muted); + /* Custom values */ --radius-sm: calc(var(--radius) - 4px); @@ -252,12 +265,14 @@ --neutral-450: oklch(0.6 0 0); --neutral-500: oklch(0.5486 0 0); --neutral-600: oklch(0.4495 0 0); + --neutral-650: oklch(0.425 0 0); --neutral-700: oklch(0.3407 0 0); --neutral-750: oklch(0.2972 0 0); --neutral-800: oklch(0.2264 0 0); --neutral-900: oklch(0 0 0); --background: var(--neutral-750); + --background-reversed: var(--neutral-000); --base: var(--neutral-750); --text: var(--neutral-000); --text-alt: var(--neutral-900); @@ -277,6 +292,11 @@ --active-secondary: oklch(0.4471 0.15 271.61); --disabled-secondary: oklch(0.6065 0.213 271.11 / 0.4); + --muted: var(--color-neutral-650); + --hover-muted: var(--color-neutral-500); + --active-muted: var(--color-neutral-400); + --disabled-muted: var(--color-neutral-400); + --card: var(--neutral-750); /* ------------------- */ @@ -295,8 +315,6 @@ --secondary-foreground: oklch(0.985 0.002 247.839); - --muted: oklch(0.278 0.033 256.848); - --muted-foreground: oklch(0.707 0.022 261.325); --accent: oklch(0.278 0.033 256.848); diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index f49fb8f..adaa1c3 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -41,7 +41,7 @@ export default async function LoginPage() { - + {providerMap.length > 0} @@ -57,7 +57,7 @@ export default async function LoginPage() { - + diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index 70e198d..7c005aa 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -251,7 +251,7 @@ export default function SettingsPage() { Define your typical available hours (e.g., Monday-Friday, 9 AM - 5 PM).

- @@ -302,10 +302,14 @@ export default function SettingsPage() {
- -
@@ -398,7 +402,9 @@ export default function SettingsPage() {
- +

Prevent specific users from seeing your calendar or booking time. diff --git a/src/components/custom-ui/button.tsx b/src/components/custom-ui/button.tsx index f45fcd7..5b53423 100644 --- a/src/components/custom-ui/button.tsx +++ b/src/components/custom-ui/button.tsx @@ -5,24 +5,29 @@ import { cva, type VariantProps } from 'class-variance-authority'; import { cn } from '@/lib/utils'; const buttonVariants = cva( - "radius-lg inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-label transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", + "radius-lg inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-button transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", { variants: { variant: { primary: - 'bg-primary text-text shadow-xs hover:bg-hover-primary active:bg-active-primary', + 'bg-primary text-text shadow-xs hover:bg-hover-primary active:bg-active-primary disabled:bg-disabled-primary', secondary: - 'bg-secondary text-text-alt shadow-xs hover:bg-hover-secondary active:bg-active-secondary', - outline: - 'border-2 border-primary bg-transparent text-text shadow-xs hover:bg-primary hover:border-neutral-000 hover:border-1.5 hover:text-neutral-000 active:bg-active-primary', - ghost: - 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50', + 'bg-secondary text-text-alt shadow-xs hover:bg-hover-secondary active:bg-active-secondary disabled:bg-disabled-secondary', + muted: + 'bg-muted text-text shadow-xs hover:bg-hover-muted active:bg-active-muted disabled:bg-disabled-muted', + outline_primary: + 'bg-background border-2 text-text shadow-xs hover:bg-primary border-primary hover:border-background-reversed active:bg-active-primary disabled:bg-disabled-primary', + outline_secondary: + 'bg-background border-2 text-text shadow-xs hover:bg-secondary border-secondary hover:border-background-reversed active:bg-active-secondary disabled:bg-disabled-secondary', + outline_muted: + 'bg-background border-2 text-text shadow-xs hover:bg-muted border-muted hover:border-background-reversed active:bg-active-muted disabled:bg-disabled-muted', + link: 'text-text underline-offset-4 hover:underline', }, size: { default: 'h-9 px-4 py-2 has-[>svg]:px-3', - sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5', - lg: 'h-10 rounded-md px-6 has-[>svg]:px-4', + sm: 'h-8 gap-1.5 px-3 has-[>svg]:px-2.5', + lg: 'h-10 px-6 has-[>svg]:px-4', icon: 'size-9', }, }, @@ -34,7 +39,7 @@ const buttonVariants = cva( ); function Button({ - className = 'font-label', + className, variant, size, asChild = false, diff --git a/src/components/custom-ui/login-card.tsx b/src/components/custom-ui/login-card.tsx index 616a45c..6544fba 100644 --- a/src/components/custom-ui/login-card.tsx +++ b/src/components/custom-ui/login-card.tsx @@ -7,7 +7,33 @@ function Card({ className, ...props }: React.ComponentProps<'div'>) {

+
) {
) {
) { type={type} data-slot='input' className={cn( - 'file:text-destructive placeholder:text-text-muted-input selection:bg-muted-input selection:text-text dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-text-input shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-label disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', - 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]', - 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive', + /* Text */ + 'text-text-input selection:text-text md:text-sm file:text-destructive file:text-sm placeholder:text-text-muted-input', + /* Background */ + 'bg-transparent selection:bg-muted-input file:bg-transparent', + /* Border */ + 'rounded-md border border-input focus-visible:border-ring aria-invalid:border-destructive file:border-0', + /* Font */ + 'file:font-label', + /* Cursor */ + 'disabled:pointer-events-none disabled:cursor-not-allowed', + /* Ring */ + 'focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40', + /* Outline */ + 'outline-none', + /* Shadow */ + 'shadow-md transition-[color,box-shadow] ', + /* Opacity */ + 'disabled:opacity-50 ', + /* Scaling */ + 'h-9 w-full min-w-0 file:h-7', + /* Spacing */ + 'px-3 py-1', + /* Alignment */ + 'flex file:inline-flex', + /* Miscellaneous */ + /* ////////// */ className, )} {...props} diff --git a/src/components/ui/label.tsx b/src/components/ui/label.tsx index 3364d98..16acf98 100644 --- a/src/components/ui/label.tsx +++ b/src/components/ui/label.tsx @@ -13,7 +13,33 @@ function Label({ {children} @@ -107,7 +171,34 @@ function SelectItem({ diff --git a/src/components/ui/tabs.tsx b/src/components/ui/tabs.tsx index 4a9fbd0..76b16c3 100644 --- a/src/components/ui/tabs.tsx +++ b/src/components/ui/tabs.tsx @@ -26,8 +26,34 @@ function TabsList({ @@ -42,7 +68,35 @@ function TabsTrigger({ Login -
diff --git a/src/components/user/sso-login-button.tsx b/src/components/user/sso-login-button.tsx index 76eac83..dc070b5 100644 --- a/src/components/user/sso-login-button.tsx +++ b/src/components/user/sso-login-button.tsx @@ -11,7 +11,7 @@ export default function SSOLogin({ }) { return (
{ 'use server'; await signIn(provider); diff --git a/src/components/user/theme-picker.tsx b/src/components/user/theme-picker.tsx index 37a2ceb..2a1649d 100644 --- a/src/components/user/theme-picker.tsx +++ b/src/components/user/theme-picker.tsx @@ -18,7 +18,7 @@ export function ThemePicker() { return ( -