diff --git a/src/docs-main.tsx b/src/docs-main.tsx index 36252c1..7ca1a98 100644 --- a/src/docs-main.tsx +++ b/src/docs-main.tsx @@ -1,21 +1,19 @@ -import { RouterProvider, createRouter } from '@tanstack/react-router' -import { routeTree } from './docs/routeTree.gen' +import { RouterProvider, createRouter } from '@tanstack/react-router'; +import { routeTree } from './docs/routeTree.gen'; +const basepath = import.meta.env.MODE === 'github-pages' ? '/sci-comp-ui' : ''; -const basepath = - import.meta.env.MODE === 'github-pages' ? '/sci-comp-ui' : '' - - -const router = createRouter({ routeTree, basepath }) +const router = createRouter({ routeTree, basepath }); declare module '@tanstack/react-router' { - interface Register { - router: typeof router - } + interface Register { + router: typeof router; + } } -import './styles/globals.css' +import './styles/index.css'; +import './styles/theme.css'; export default function DocsApp() { - return + return ; } diff --git a/src/index.ts b/src/index.ts index 0645b42..0254480 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ -import './styles/globals.css' - -export * from './ui' -export { cn } from './lib/utils' +import './styles/index.css'; +import './styles/theme.css'; +export * from './ui'; +export { cn } from './lib/utils'; diff --git a/src/main.tsx b/src/main.tsx index ba1ac2f..6dfac5f 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,27 +1,27 @@ -import { StrictMode } from 'react' -import ReactDOM from 'react-dom/client' +import { StrictMode } from 'react'; +import ReactDOM from 'react-dom/client'; // Only import router-related code when building docs -const isDocs = import.meta.env.MODE === 'docs' || import.meta.env.MODE === 'github-pages' +const isDocs = import.meta.env.MODE === 'docs' || import.meta.env.MODE === 'github-pages'; if (isDocs) { - // Docs build - include router - import('./docs-main').then(({ default: DocsApp }) => { - const rootElement = document.getElementById('root')! - if (!rootElement.innerHTML) { - const root = ReactDOM.createRoot(rootElement) - root.render( - - - , - ) - } - }) + // Docs build - include router + import('./docs-main').then(({ default: DocsApp }) => { + const rootElement = document.getElementById('root')!; + if (!rootElement.innerHTML) { + const root = ReactDOM.createRoot(rootElement); + root.render( + + + + ); + } + }); } else { - // Library build - simple entry point - import('./styles/globals.css') - - // For library builds, we just need to ensure styles are loaded - // The actual components are exported from src/index.ts - console.log('SciComp UI Library loaded') -} \ No newline at end of file + // Library build - simple entry point + import('./styles/theme.css'); + + // For library builds, we just need to ensure styles are loaded + // The actual components are exported from src/index.ts + console.log('SciComp UI Library loaded'); +} diff --git a/src/styles/globals.css b/src/styles/globals.css deleted file mode 100644 index cc700ad..0000000 --- a/src/styles/globals.css +++ /dev/null @@ -1,138 +0,0 @@ -@import "tailwindcss"; -@import "tw-animate-css"; - -@source "./src/**/*.{js,ts,jsx,tsx}"; -@source "./index.html"; - -@custom-variant dark (&:is(.dark *)); - -:root { - --background: oklch(1 0 0); - --foreground: oklch(0.145 0 0); - --card: oklch(1 0 0); - --card-foreground: oklch(0.145 0 0); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.145 0 0); - --primary: oklch(0.623 0.214 259.815); - --primary-foreground: oklch(0.97 0.014 254.604); - --warning: oklch(0.795 0.184 86.047); - --warning-foreground: oklch(0.421 0.095 57.708); - --success: oklch(0.723 0.219 149.579); - --success-foreground: oklch(0.982 0.018 155.826); - --secondary: oklch(0.97 0 0); - --secondary-foreground: oklch(0.205 0 0); - --muted: oklch(0.97 0 0); - --muted-foreground: oklch(0.556 0 0); - --accent: oklch(0.97 0 0); - --accent-foreground: oklch(0.205 0 0); - --destructive: oklch(0.577 0.245 27.325); - --destructive-foreground: oklch(0.97 0.0187 8.55); - --border: oklch(0.922 0 0); - --input: oklch(0.922 0 0); - --ring: oklch(0.708 0 0); - --chart-1: oklch(0.646 0.222 41.116); - --chart-2: oklch(0.6 0.118 184.704); - --chart-3: oklch(0.398 0.07 227.392); - --chart-4: oklch(0.828 0.189 84.429); - --chart-5: oklch(0.769 0.188 70.08); - --radius: 0.625rem; - --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.145 0 0); - --sidebar-primary: oklch(0.205 0 0); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.97 0 0); - --sidebar-accent-foreground: oklch(0.205 0 0); - --sidebar-border: oklch(0.922 0 0); - --sidebar-ring: oklch(0.708 0 0); -} - -.dark { - --background: oklch(0.145 0 0); - --foreground: oklch(0.985 0 0); - --card: oklch(0.145 0 0); - --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.145 0 0); - --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.623 0.214 259.815); - --primary-foreground: oklch(0.97 0.014 254.604); - --warning: oklch(0.795 0.184 86.047); - --warning-foreground: oklch(0.421 0.095 57.708); - --success: oklch(0.723 0.219 149.579); - --success-foreground: oklch(0.982 0.018 155.826); - --secondary: oklch(0.269 0 0); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.269 0 0); - --muted-foreground: oklch(0.708 0 0); - --accent: oklch(0.269 0 0); - --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.396 0.141 25.723); - --destructive-foreground: oklch(0.637 0.237 25.331); - --border: oklch(0.269 0 0); - --input: oklch(0.269 0 0); - --ring: oklch(0.439 0 0); - --chart-1: oklch(0.488 0.243 264.376); - --chart-2: oklch(0.696 0.17 162.48); - --chart-3: oklch(0.769 0.188 70.08); - --chart-4: oklch(0.627 0.265 303.9); - --chart-5: oklch(0.645 0.246 16.439); - --sidebar: oklch(0.205 0 0); - --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.488 0.243 264.376); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.269 0 0); - --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(0.269 0 0); - --sidebar-ring: oklch(0.439 0 0); -} - -@theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-warning: var(--warning); - --color-warning-foreground: var(--warning-foreground); - --color-success: var(--success); - --color-success-foreground: var(--success-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-destructive-foreground: var(--destructive-foreground); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); -} - -@layer base { - * { - @apply border-border outline-ring/50; - } - body { - @apply bg-background text-foreground; - } -} \ No newline at end of file diff --git a/src/styles/index.css b/src/styles/index.css new file mode 100644 index 0000000..e455c4e --- /dev/null +++ b/src/styles/index.css @@ -0,0 +1,250 @@ +@import 'tailwindcss'; +@import 'tw-animate-css'; + +@source "./src/**/*.{js,ts,jsx,tsx}"; +@source "./index.html"; + +@custom-variant dark (&:is(.dark *)); + +/* TAILWINDCSS VARIABLES */ +@theme { + /* BREAKPOINTS */ + --breakpoint-sm: 37.5rem; /* ≥ 600px */ + --breakpoint-md: 47.5rem; /* ≥ 760px */ + --breakpoint-lg: 60rem; /* ≥ 960px */ + --breakpoint-xl: 80rem; /* ≥ 1280px */ + --breakpoint-2xl: 90rem; /* ≥ 1440px */ + --breakpoint-3xl: 120rem; /* ≥ 1920px */ + --breakpoint-4xl: 160rem; /* ≥ 2560px */ + --breakpoint-5xl: 200rem; /* ≥ 3200px */ + + /* ANSTO PALETTE */ + --color-ansto-grey: oklch(0.4638 0.0035 264.53); + --color-ansto-flag: oklch(0.3462 0.0929 259.73); + --color-ansto-blue: oklch(0.5501 0.1441 246.83); + --color-ansto-seafoam: oklch(0.7399 0.1088 195.06); + --color-ansto-yellow: oklch(0.8132 0.1516 73.51); + --color-ansto-purple: oklch(0.4633 0.0987 312.91); + --color-ansto-green: oklch(0.5077 0.1328 152.26); + + /* GLOBAL PALETTE */ + --color-white: oklch(1 0 0); + --color-black: oklch(0.2178 0 0); + --color-grey: var(--color-ansto-grey); + --color-text: oklch(0.4017 0 0); + --color-dev: oklch(0.6565 0.2349 13.34); + + /* USER PALETTE */ + --color-gradient: var(--color-ansto-blue); + --color-gradient-light: var(--color-ansto-seafoam); + --color-gradient-medium: var(--color-ansto-blue); + --color-gradient-dark: var(--color-ansto-flag); + + /* ADMIN PALETTE */ + --color-admin: var(--color-ansto-purple); + --color-admin-light: oklch(0.5135 0.1856 321.59); + --color-admin-medium: var(--color-ansto-purple); + --color-admin-dark: oklch(0.3258 0.0773 298.83); + + /* DISABLED PALETTE */ + --color-disabled: var(--color-disabled-medium); + --color-disabled-light: color-mix(in oklch, var(--color-grey) 30%, #fff); + --color-disabled-medium: color-mix(in oklch, var(--color-grey) 70%, #fff); + --color-disabled-dark: var(--color-grey); + + /* ALERT PALETTE */ + --color-alert: oklch(0.6083 0.209 27.03); + --color-alert-light: color-mix(in oklch, var(--color-alert) 15%, #fff); + --color-alert-medium: var(--color-alert); + --color-alert-dark: oklch(0.5016 0.1887 27.48); + + /* WARNING PALETTE */ + --color-warning: var(--color-ansto-yellow); + --color-warning-light: color-mix(in oklch, var(--color-warning) 15%, #fff); + --color-warning-medium: var(--color-ansto-yellow); + --color-warning-dark: oklch(0.7244 0.1603 66.17); + + /* SUCCESS PALETTE */ + --color-success: var(--color-ansto-green); + --color-success-medium: var(--color-ansto-green); + + /* FONTS */ + --font-fira-sans: 'Fira Sans', 'Tahoma', 'sans-serif', ui-sans-serif, system-ui, sans-serif; + --font-poppins: 'Poppins', 'Tahoma', ui-sans-serif, system-ui, sans-serif; + --font-sans: var(--font-fira-sans); + + /* TYPOGRAPHY */ + --text-xs: 0.75rem; /* 12px */ + --text-xs--line-height: 1.834em; /* 22/12 */ + --text-sm: 0.875rem; /* 14px */ + --text-sm--line-height: 1.572em; /* 22/14 */ + --text-base: 1rem; /* 16px */ + --text-base--line-height: 1.5em; /* 24/16 */ + --text-base--font-weight: var(--font-weight-light); + --text-lg: 1.125rem; /* 18px */ + --text-lg--line-height: 1.444em; /* 26/18*/ + --text-lg--font-weight: var(--font-weight-light); + + /* TRANSITION DURATIONS */ + --duration-shorter: 80ms; + --duration-short: 160ms; + --duration-default: 240ms; + --duration-long: 320ms; + --duration-longer: 400ms; + + /* SHADOWS */ + --shadow-box: + 0 0 4px 0 --alpha(var(--color-gradient-light) / 0.2), 0 0 2px 0 --alpha(var(--color-disabled-medium) / 0.3); + --shadow-button: + 0 1px 1px 0 --alpha(var(--color-disabled-medium) / 0.3), 0 0 2px 0 --alpha(var(--color-disabled-medium) / 0.3); + --shadow-button-focus: + 0 1px 1px 0 --alpha(var(--color-disabled-medium) / 0.3), 0 0 2px 0 --alpha(var(--color-disabled-medium) / 0.3), + 0 0 2px 0 --alpha(var(--color-disabled-medium) / 0.3); + + /* Z INDEX */ + --z-input: 2; + --z-menu: 100; + --z-tooltip: 200; + --z-overlay: 300; +} + +/* RADIX UI VARIABLES */ +@theme { + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.623 0.214 259.815); + --primary-foreground: oklch(0.97 0.014 254.604); + --warning: oklch(0.795 0.184 86.047); + --warning-foreground: oklch(0.421 0.095 57.708); + --success: oklch(0.723 0.219 149.579); + --success-foreground: oklch(0.982 0.018 155.826); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.97 0.0187 8.55); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --radius: 0.625rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +/* RADIX UI VARIABLES */ +@variant dark { + @theme { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.145 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.145 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.623 0.214 259.815); + --primary-foreground: oklch(0.97 0.014 254.604); + --warning: oklch(0.795 0.184 86.047); + --warning-foreground: oklch(0.421 0.095 57.708); + --success: oklch(0.723 0.219 149.579); + --success-foreground: oklch(0.982 0.018 155.826); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.269 0 0); + --input: oklch(0.269 0 0); + --ring: oklch(0.439 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(0.269 0 0); + --sidebar-ring: oklch(0.439 0 0); + } +} + +/* RADIX UI VARIABLES */ +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-warning: var(--warning); + --color-warning-foreground: var(--warning-foreground); + --color-success: var(--success); + --color-success-foreground: var(--success-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +@layer base { + /* Font Kern */ + :root { + -moz-font-feature-settings: 'kern', 'mgrk'; + -moz-font-feature-settings: 'kern=1', 'mgrk=1'; + -moz-osx-font-smoothing: grayscale; + -webkit-font-feature-settings: 'kern', 'mgrk'; + -webkit-font-smoothing: antialiased; + color-scheme: light dark; + font-feature-settings: 'kern', 'mgrk'; + text-rendering: optimizeLegibility; + } +} diff --git a/src/styles/theme.css b/src/styles/theme.css new file mode 100644 index 0000000..e455c4e --- /dev/null +++ b/src/styles/theme.css @@ -0,0 +1,250 @@ +@import 'tailwindcss'; +@import 'tw-animate-css'; + +@source "./src/**/*.{js,ts,jsx,tsx}"; +@source "./index.html"; + +@custom-variant dark (&:is(.dark *)); + +/* TAILWINDCSS VARIABLES */ +@theme { + /* BREAKPOINTS */ + --breakpoint-sm: 37.5rem; /* ≥ 600px */ + --breakpoint-md: 47.5rem; /* ≥ 760px */ + --breakpoint-lg: 60rem; /* ≥ 960px */ + --breakpoint-xl: 80rem; /* ≥ 1280px */ + --breakpoint-2xl: 90rem; /* ≥ 1440px */ + --breakpoint-3xl: 120rem; /* ≥ 1920px */ + --breakpoint-4xl: 160rem; /* ≥ 2560px */ + --breakpoint-5xl: 200rem; /* ≥ 3200px */ + + /* ANSTO PALETTE */ + --color-ansto-grey: oklch(0.4638 0.0035 264.53); + --color-ansto-flag: oklch(0.3462 0.0929 259.73); + --color-ansto-blue: oklch(0.5501 0.1441 246.83); + --color-ansto-seafoam: oklch(0.7399 0.1088 195.06); + --color-ansto-yellow: oklch(0.8132 0.1516 73.51); + --color-ansto-purple: oklch(0.4633 0.0987 312.91); + --color-ansto-green: oklch(0.5077 0.1328 152.26); + + /* GLOBAL PALETTE */ + --color-white: oklch(1 0 0); + --color-black: oklch(0.2178 0 0); + --color-grey: var(--color-ansto-grey); + --color-text: oklch(0.4017 0 0); + --color-dev: oklch(0.6565 0.2349 13.34); + + /* USER PALETTE */ + --color-gradient: var(--color-ansto-blue); + --color-gradient-light: var(--color-ansto-seafoam); + --color-gradient-medium: var(--color-ansto-blue); + --color-gradient-dark: var(--color-ansto-flag); + + /* ADMIN PALETTE */ + --color-admin: var(--color-ansto-purple); + --color-admin-light: oklch(0.5135 0.1856 321.59); + --color-admin-medium: var(--color-ansto-purple); + --color-admin-dark: oklch(0.3258 0.0773 298.83); + + /* DISABLED PALETTE */ + --color-disabled: var(--color-disabled-medium); + --color-disabled-light: color-mix(in oklch, var(--color-grey) 30%, #fff); + --color-disabled-medium: color-mix(in oklch, var(--color-grey) 70%, #fff); + --color-disabled-dark: var(--color-grey); + + /* ALERT PALETTE */ + --color-alert: oklch(0.6083 0.209 27.03); + --color-alert-light: color-mix(in oklch, var(--color-alert) 15%, #fff); + --color-alert-medium: var(--color-alert); + --color-alert-dark: oklch(0.5016 0.1887 27.48); + + /* WARNING PALETTE */ + --color-warning: var(--color-ansto-yellow); + --color-warning-light: color-mix(in oklch, var(--color-warning) 15%, #fff); + --color-warning-medium: var(--color-ansto-yellow); + --color-warning-dark: oklch(0.7244 0.1603 66.17); + + /* SUCCESS PALETTE */ + --color-success: var(--color-ansto-green); + --color-success-medium: var(--color-ansto-green); + + /* FONTS */ + --font-fira-sans: 'Fira Sans', 'Tahoma', 'sans-serif', ui-sans-serif, system-ui, sans-serif; + --font-poppins: 'Poppins', 'Tahoma', ui-sans-serif, system-ui, sans-serif; + --font-sans: var(--font-fira-sans); + + /* TYPOGRAPHY */ + --text-xs: 0.75rem; /* 12px */ + --text-xs--line-height: 1.834em; /* 22/12 */ + --text-sm: 0.875rem; /* 14px */ + --text-sm--line-height: 1.572em; /* 22/14 */ + --text-base: 1rem; /* 16px */ + --text-base--line-height: 1.5em; /* 24/16 */ + --text-base--font-weight: var(--font-weight-light); + --text-lg: 1.125rem; /* 18px */ + --text-lg--line-height: 1.444em; /* 26/18*/ + --text-lg--font-weight: var(--font-weight-light); + + /* TRANSITION DURATIONS */ + --duration-shorter: 80ms; + --duration-short: 160ms; + --duration-default: 240ms; + --duration-long: 320ms; + --duration-longer: 400ms; + + /* SHADOWS */ + --shadow-box: + 0 0 4px 0 --alpha(var(--color-gradient-light) / 0.2), 0 0 2px 0 --alpha(var(--color-disabled-medium) / 0.3); + --shadow-button: + 0 1px 1px 0 --alpha(var(--color-disabled-medium) / 0.3), 0 0 2px 0 --alpha(var(--color-disabled-medium) / 0.3); + --shadow-button-focus: + 0 1px 1px 0 --alpha(var(--color-disabled-medium) / 0.3), 0 0 2px 0 --alpha(var(--color-disabled-medium) / 0.3), + 0 0 2px 0 --alpha(var(--color-disabled-medium) / 0.3); + + /* Z INDEX */ + --z-input: 2; + --z-menu: 100; + --z-tooltip: 200; + --z-overlay: 300; +} + +/* RADIX UI VARIABLES */ +@theme { + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.623 0.214 259.815); + --primary-foreground: oklch(0.97 0.014 254.604); + --warning: oklch(0.795 0.184 86.047); + --warning-foreground: oklch(0.421 0.095 57.708); + --success: oklch(0.723 0.219 149.579); + --success-foreground: oklch(0.982 0.018 155.826); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --destructive-foreground: oklch(0.97 0.0187 8.55); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --radius: 0.625rem; + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +/* RADIX UI VARIABLES */ +@variant dark { + @theme { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.145 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.145 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.623 0.214 259.815); + --primary-foreground: oklch(0.97 0.014 254.604); + --warning: oklch(0.795 0.184 86.047); + --warning-foreground: oklch(0.421 0.095 57.708); + --success: oklch(0.723 0.219 149.579); + --success-foreground: oklch(0.982 0.018 155.826); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.396 0.141 25.723); + --destructive-foreground: oklch(0.637 0.237 25.331); + --border: oklch(0.269 0 0); + --input: oklch(0.269 0 0); + --ring: oklch(0.439 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(0.269 0 0); + --sidebar-ring: oklch(0.439 0 0); + } +} + +/* RADIX UI VARIABLES */ +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-warning: var(--warning); + --color-warning-foreground: var(--warning-foreground); + --color-success: var(--success); + --color-success-foreground: var(--success-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +@layer base { + /* Font Kern */ + :root { + -moz-font-feature-settings: 'kern', 'mgrk'; + -moz-font-feature-settings: 'kern=1', 'mgrk=1'; + -moz-osx-font-smoothing: grayscale; + -webkit-font-feature-settings: 'kern', 'mgrk'; + -webkit-font-smoothing: antialiased; + color-scheme: light dark; + font-feature-settings: 'kern', 'mgrk'; + text-rendering: optimizeLegibility; + } +}