mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			01b27f0f3e
			...
			tailwind-4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					d5f8d0af2c | ||
| 
						 | 
					4b9809dd70 | 
							
								
								
									
										2047
									
								
								frontend/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2047
									
								
								frontend/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										9
									
								
								frontend/package.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										9
									
								
								frontend/package.json
									
									
									
										generated
									
									
									
								
							@@ -65,6 +65,7 @@
 | 
			
		||||
    "@antfu/eslint-config": "^4.16.1",
 | 
			
		||||
    "@eslint-react/eslint-plugin": "^1.52.2",
 | 
			
		||||
    "@next/eslint-plugin-next": "^15.3.4",
 | 
			
		||||
    "@tailwindcss/postcss": "^4.1.14",
 | 
			
		||||
    "@tanstack/eslint-plugin-query": "^5.68.0",
 | 
			
		||||
    "@types/node": "^22.13.16",
 | 
			
		||||
    "@types/react": "npm:types-react@19.0.0-rc.1",
 | 
			
		||||
@@ -77,15 +78,13 @@
 | 
			
		||||
    "eslint-plugin-format": "^1.0.1",
 | 
			
		||||
    "eslint-plugin-react-hooks": "^5.2.0",
 | 
			
		||||
    "eslint-plugin-react-refresh": "^0.4.20",
 | 
			
		||||
    "jsdom": "^25.0.1",
 | 
			
		||||
    "postcss": "^8.5.3",
 | 
			
		||||
    "prettier": "^3.5.3",
 | 
			
		||||
    "prettier-plugin-tailwindcss": "^0.6.11",
 | 
			
		||||
    "tailwindcss": "^3.4.17",
 | 
			
		||||
    "prettier-plugin-tailwindcss": "^0.6.14",
 | 
			
		||||
    "tailwindcss": "^4.1.14",
 | 
			
		||||
    "tailwindcss-animate": "^1.0.7",
 | 
			
		||||
    "tailwindcss-animated": "^1.1.2",
 | 
			
		||||
    "typescript": "^5.8.2",
 | 
			
		||||
    "vite-tsconfig-paths": "^5.1.4"
 | 
			
		||||
    "typescript": "^5.8.2"
 | 
			
		||||
  },
 | 
			
		||||
  "overrides": {
 | 
			
		||||
    "@types/react": "npm:types-react@19.0.0-rc.1",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
/** @type {import('postcss-load-config').Config} */
 | 
			
		||||
const config = {
 | 
			
		||||
  plugins: {
 | 
			
		||||
    tailwindcss: {},
 | 
			
		||||
    '@tailwindcss/postcss': {},
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Outline",
 | 
			
		||||
    "slug": "outline",
 | 
			
		||||
    "slug": "outline-solid",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        12
 | 
			
		||||
    ],
 | 
			
		||||
 
 | 
			
		||||
@@ -315,7 +315,7 @@ export default function JSONGenerator() {
 | 
			
		||||
            </Button>
 | 
			
		||||
          </div>
 | 
			
		||||
 | 
			
		||||
          <pre className="mt-4 p-4 bg-secondary rounded shadow overflow-x-scroll">
 | 
			
		||||
          <pre className="mt-4 p-4 bg-secondary rounded shadow-sm overflow-x-scroll">
 | 
			
		||||
            {JSON.stringify(script, null, 2)}
 | 
			
		||||
          </pre>
 | 
			
		||||
        </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -47,8 +47,8 @@ export default function Page() {
 | 
			
		||||
                  <AnimatedGradientText>
 | 
			
		||||
                    <div
 | 
			
		||||
                      className={cn(
 | 
			
		||||
                        `absolute inset-0 block size-full animate-gradient bg-gradient-to-r from-[#ffaa40]/50 via-[#9c40ff]/50 to-[#ffaa40]/50 bg-[length:var(--bg-size)_100%] [border-radius:inherit] [mask:linear-gradient(#fff_0_0)_content-box,linear-gradient(#fff_0_0)]`,
 | 
			
		||||
                        `p-px ![mask-composite:subtract]`,
 | 
			
		||||
                        `absolute inset-0 block size-full animate-gradient bg-linear-to-r from-[#ffaa40]/50 via-[#9c40ff]/50 to-[#ffaa40]/50 bg-size-[var(--bg-size)_100%] rounded-[inherit] [mask:linear-gradient(#fff_0_0)_content-box,linear-gradient(#fff_0_0)]`,
 | 
			
		||||
                        `p-px mask-subtract!`,
 | 
			
		||||
                      )}
 | 
			
		||||
                    />
 | 
			
		||||
                    ❤️
 | 
			
		||||
@@ -56,7 +56,7 @@ export default function Page() {
 | 
			
		||||
                    <Separator className="mx-2 h-4" orientation="vertical" />
 | 
			
		||||
                    <span
 | 
			
		||||
                      className={cn(
 | 
			
		||||
                        `animate-gradient bg-gradient-to-r from-[#ffaa40] via-[#9c40ff] to-[#ffaa40] bg-[length:var(--bg-size)_100%] bg-clip-text text-transparent`,
 | 
			
		||||
                        `animate-gradient bg-linear-to-r from-[#ffaa40] via-[#9c40ff] to-[#ffaa40] bg-size-[var(--bg-size)_100%] bg-clip-text text-transparent`,
 | 
			
		||||
                        `inline`,
 | 
			
		||||
                      )}
 | 
			
		||||
                    >
 | 
			
		||||
 
 | 
			
		||||
@@ -120,7 +120,7 @@ export default function ScriptAccordion({
 | 
			
		||||
                      query: { id: script.slug, category: category.name },
 | 
			
		||||
                    }}
 | 
			
		||||
                    prefetch={false}
 | 
			
		||||
                    className={`flex cursor-pointer items-center justify-between gap-1 px-1 py-1 text-muted-foreground hover:rounded-lg hover:bg-accent/60 hover:dark:bg-accent/20 ${selectedScript === script.slug
 | 
			
		||||
                    className={`flex cursor-pointer items-center justify-between gap-1 px-1 py-1 text-muted-foreground hover:rounded-lg hover:bg-accent/60 dark:hover:bg-accent/20 ${selectedScript === script.slug
 | 
			
		||||
                      ? "rounded-lg bg-accent font-semibold dark:bg-accent/30 dark:text-white"
 | 
			
		||||
                      : ""
 | 
			
		||||
                    }`}
 | 
			
		||||
 
 | 
			
		||||
@@ -84,7 +84,7 @@ export function LatestScripts({ items }: { items: Category[] }) {
 | 
			
		||||
      )}
 | 
			
		||||
      <div className="min-w flex w-full flex-row flex-wrap gap-4">
 | 
			
		||||
        {latestScripts.slice(startIndex, endIndex).map(script => (
 | 
			
		||||
          <Card key={script.slug} className="min-w-[250px] flex-1 flex-grow bg-accent/30">
 | 
			
		||||
          <Card key={script.slug} className="min-w-[250px] flex-1 grow bg-accent/30">
 | 
			
		||||
            <CardHeader>
 | 
			
		||||
              <CardTitle className="flex items-center gap-3">
 | 
			
		||||
                <div className="flex h-16 w-16 min-w-16 items-center justify-center rounded-lg bg-accent p-1">
 | 
			
		||||
@@ -148,7 +148,7 @@ export function MostViewedScripts({ items }: { items: Category[] }) {
 | 
			
		||||
      )}
 | 
			
		||||
      <div className="min-w flex w-full flex-row flex-wrap gap-4">
 | 
			
		||||
        {mostViewedScripts.map(script => (
 | 
			
		||||
          <Card key={script.slug} className="min-w-[250px] flex-1 flex-grow bg-accent/30">
 | 
			
		||||
          <Card key={script.slug} className="min-w-[250px] flex-1 grow bg-accent/30">
 | 
			
		||||
            <CardHeader>
 | 
			
		||||
              <CardTitle className="flex items-center gap-3">
 | 
			
		||||
                <div className="flex size-16 min-w-16 items-center justify-center rounded-lg bg-accent p-1">
 | 
			
		||||
 
 | 
			
		||||
@@ -35,10 +35,10 @@ function ScriptHeader({ item }: { item: Script }) {
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <div className="flex flex-col lg:flex-row gap-6 w-full">
 | 
			
		||||
      <div className="flex flex-col md:flex-row gap-6 flex-grow">
 | 
			
		||||
        <div className="flex-shrink-0">
 | 
			
		||||
      <div className="flex flex-col md:flex-row gap-6 grow">
 | 
			
		||||
        <div className="shrink-0">
 | 
			
		||||
          <Image
 | 
			
		||||
            className="h-32 w-32 rounded-xl bg-gradient-to-br from-accent/40 to-accent/60 object-contain p-3 shadow-lg transition-transform hover:scale-105"
 | 
			
		||||
            className="h-32 w-32 rounded-xl bg-linear-to-br from-accent/40 to-accent/60 object-contain p-3 shadow-lg transition-transform hover:scale-105"
 | 
			
		||||
            src={item.logo || `/${basePath}/logo.png`}
 | 
			
		||||
            width={400}
 | 
			
		||||
            onError={e => ((e.currentTarget as HTMLImageElement).src = `/${basePath}/logo.png`)}
 | 
			
		||||
@@ -47,7 +47,7 @@ function ScriptHeader({ item }: { item: Script }) {
 | 
			
		||||
            unoptimized
 | 
			
		||||
          />
 | 
			
		||||
        </div>
 | 
			
		||||
        <div className="flex flex-col justify-between flex-grow space-y-4">
 | 
			
		||||
        <div className="flex flex-col justify-between grow space-y-4">
 | 
			
		||||
          <div className="space-y-2">
 | 
			
		||||
            <div className="flex items-start justify-between">
 | 
			
		||||
              <div>
 | 
			
		||||
@@ -140,7 +140,7 @@ export function ScriptItem({ item, setSelectedScript }: ScriptItemProps) {
 | 
			
		||||
          </button>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div className="rounded-xl border border-border bg-accent/30 backdrop-blur-sm shadow-sm">
 | 
			
		||||
        <div className="rounded-xl border border-border bg-accent/30 backdrop-blur-xs shadow-xs">
 | 
			
		||||
          <div className="p-6 space-y-6">
 | 
			
		||||
            <Suspense fallback={<div className="animate-pulse h-32 bg-accent/20 rounded-xl" />}>
 | 
			
		||||
              <ScriptHeader item={item} />
 | 
			
		||||
@@ -149,7 +149,7 @@ export function ScriptItem({ item, setSelectedScript }: ScriptItemProps) {
 | 
			
		||||
            <Description item={item} />
 | 
			
		||||
            <Alerts item={item} />
 | 
			
		||||
 | 
			
		||||
            <div className="mt-4 rounded-lg border shadow-sm">
 | 
			
		||||
            <div className="mt-4 rounded-lg border shadow-xs">
 | 
			
		||||
              <div className="flex gap-3 px-4 py-2 bg-accent/25">
 | 
			
		||||
                <h2 className="text-lg font-semibold">
 | 
			
		||||
                  How to
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ export default function Alerts({ item }: { item: Script }) {
 | 
			
		||||
    <>
 | 
			
		||||
      {item?.notes?.length > 0
 | 
			
		||||
        && item.notes.map((note: NoteProps, index: number) => (
 | 
			
		||||
          <div key={index} className="mt-4 flex flex-col shadow-sm gap-2">
 | 
			
		||||
          <div key={index} className="mt-4 flex flex-col shadow-xs gap-2">
 | 
			
		||||
            <p
 | 
			
		||||
              className={cn(
 | 
			
		||||
                "inline-flex items-center gap-2 rounded-lg border p-2 pl-4 text-sm",
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ export default function DefaultPassword({ item }: { item: Script }) {
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <div className="mt-4 rounded-lg border shadow-sm">
 | 
			
		||||
    <div className="mt-4 rounded-lg border shadow-xs">
 | 
			
		||||
      <div className="flex gap-3 px-4 py-2 bg-accent/25">
 | 
			
		||||
        <h2 className="text-lg font-semibold">Default Login Credentials</h2>
 | 
			
		||||
      </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -14,19 +14,19 @@ import {
 | 
			
		||||
import { cn } from "@/lib/utils";
 | 
			
		||||
 | 
			
		||||
const buttonVariants = cva(
 | 
			
		||||
  "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[box-shadow,_color,_background-color,_border-color,_outline-color,_text-decoration-color,_fill,_stroke] 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",
 | 
			
		||||
  "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[box-shadow,color,background-color,border-color,outline-color,text-decoration-color,fill,stroke] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-hidden 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: {
 | 
			
		||||
        default:
 | 
			
		||||
          "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
 | 
			
		||||
        accent: "bg-accent text-accent-foreground shadow-xs hover:bg-accent/90",
 | 
			
		||||
          "bg-primary text-primary-foreground shadow-2xs hover:bg-primary/90",
 | 
			
		||||
        accent: "bg-accent text-accent-foreground shadow-2xs hover:bg-accent/90",
 | 
			
		||||
        destructive:
 | 
			
		||||
          "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
 | 
			
		||||
          "bg-destructive text-white shadow-2xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
 | 
			
		||||
        outline:
 | 
			
		||||
          "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
 | 
			
		||||
          "border bg-background shadow-2xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
 | 
			
		||||
        secondary:
 | 
			
		||||
          "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
 | 
			
		||||
          "bg-secondary text-secondary-foreground shadow-2xs hover:bg-secondary/80",
 | 
			
		||||
        ghost:
 | 
			
		||||
          "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
 | 
			
		||||
        link: "text-primary underline-offset-4 hover:underline",
 | 
			
		||||
 
 | 
			
		||||
@@ -18,14 +18,14 @@ import { Button as ButtonPrimitive } from "@/components/animate-ui/primitives/bu
 | 
			
		||||
import { cn } from "@/lib/utils";
 | 
			
		||||
 | 
			
		||||
const buttonVariants = cva(
 | 
			
		||||
  "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[box-shadow,_color,_background-color,_border-color,_outline-color,_text-decoration-color,_fill,_stroke] 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",
 | 
			
		||||
  "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[box-shadow,color,background-color,border-color,outline-color,text-decoration-color,fill,stroke] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-hidden 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: {
 | 
			
		||||
        default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
 | 
			
		||||
        accent: "bg-accent text-accent-foreground shadow-xs hover:bg-accent/90",
 | 
			
		||||
        default: "bg-primary text-primary-foreground shadow-2xs hover:bg-primary/90",
 | 
			
		||||
        accent: "bg-accent text-accent-foreground shadow-2xs hover:bg-accent/90",
 | 
			
		||||
        outline:
 | 
			
		||||
          "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
 | 
			
		||||
          "border bg-background shadow-2xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
 | 
			
		||||
        ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
 | 
			
		||||
      },
 | 
			
		||||
      size: {
 | 
			
		||||
 
 | 
			
		||||
@@ -12,12 +12,12 @@ export default function AnimatedGradientText({
 | 
			
		||||
  return (
 | 
			
		||||
    <div
 | 
			
		||||
      className={cn(
 | 
			
		||||
        "group relative mx-auto flex max-w-fit flex-row items-center justify-center rounded-2xl bg-white/40 px-4 py-1.5 text-sm font-medium shadow-[inset_0_-8px_10px_#8fdfff1f] backdrop-blur-sm transition-shadow duration-500 ease-out [--bg-size:300%] hover:shadow-[inset_0_-5px_10px_#8fdfff3f] dark:bg-black/40",
 | 
			
		||||
        "group relative mx-auto flex max-w-fit flex-row items-center justify-center rounded-2xl bg-white/40 px-4 py-1.5 text-sm font-medium shadow-[inset_0_-8px_10px_#8fdfff1f] backdrop-blur-xs transition-shadow duration-500 ease-out [--bg-size:300%] hover:shadow-[inset_0_-5px_10px_#8fdfff3f] dark:bg-black/40",
 | 
			
		||||
        className,
 | 
			
		||||
      )}
 | 
			
		||||
    >
 | 
			
		||||
      <div
 | 
			
		||||
        className="absolute inset-0 block h-full w-full animate-gradient bg-gradient-to-r from-[#ffaa40]/50 via-[#9c40ff]/50 to-[#ffaa40]/50 bg-[length:var(--bg-size)_100%] p-[1px] [border-radius:inherit] ![mask-composite:subtract] [mask:linear-gradient(#fff_0_0)_content-box,linear-gradient(#fff_0_0)]"
 | 
			
		||||
        className="absolute inset-0 block h-full w-full animate-gradient bg-linear-to-r from-[#ffaa40]/50 via-[#9c40ff]/50 to-[#ffaa40]/50 bg-size-[var(--bg-size)_100%] p-px rounded-[inherit] mask-subtract! [mask:linear-gradient(#fff_0_0)_content-box,linear-gradient(#fff_0_0)]"
 | 
			
		||||
      />
 | 
			
		||||
 | 
			
		||||
      {children}
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ import * as React from "react";
 | 
			
		||||
import { cn } from "@/lib/utils";
 | 
			
		||||
 | 
			
		||||
const badgeVariants = cva(
 | 
			
		||||
  "inline-flex items-center rounded-full border px-1.5 py-0.1 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
 | 
			
		||||
  "inline-flex items-center rounded-full border px-1.5 py-0.1 text-xs font-semibold transition-colors focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2",
 | 
			
		||||
  {
 | 
			
		||||
    variants: {
 | 
			
		||||
      variant: {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ import * as React from "react";
 | 
			
		||||
import { cn } from "@/lib/utils";
 | 
			
		||||
 | 
			
		||||
const buttonVariants = cva(
 | 
			
		||||
  "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
 | 
			
		||||
  "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
 | 
			
		||||
  {
 | 
			
		||||
    variants: {
 | 
			
		||||
      variant: {
 | 
			
		||||
@@ -25,15 +25,15 @@ const buttonVariants = cva(
 | 
			
		||||
        ringHover:
 | 
			
		||||
          "bg-primary text-primary-foreground transition-all duration-300 hover:bg-primary/90 hover:ring-2 hover:ring-primary/90 hover:ring-offset-2",
 | 
			
		||||
        shine:
 | 
			
		||||
          "text-primary-foreground animate-shine bg-gradient-to-r from-primary via-primary/75 to-primary bg-[length:400%_100%] ",
 | 
			
		||||
          "text-primary-foreground animate-shine bg-linear-to-r from-primary via-primary/75 to-primary bg-size-[400%_100%] ",
 | 
			
		||||
        gooeyRight:
 | 
			
		||||
          "text-primary-foreground relative bg-primary z-0 overflow-hidden transition-all duration-500 before:absolute before:inset-0 before:-z-10 before:translate-x-[150%] before:translate-y-[150%] before:scale-[2.5] before:rounded-[100%] before:bg-gradient-to-r from-zinc-400 before:transition-transform before:duration-1000  hover:before:translate-x-[0%] hover:before:translate-y-[0%] ",
 | 
			
		||||
          "text-primary-foreground relative bg-primary z-0 overflow-hidden transition-all duration-500 before:absolute before:inset-0 before:-z-10 before:translate-x-[150%] before:translate-y-[150%] before:scale-[2.5] before:rounded-[100%] before:bg-linear-to-r from-zinc-400 before:transition-transform before:duration-1000  hover:before:translate-x-[0%] hover:before:translate-y-[0%] ",
 | 
			
		||||
        gooeyLeft:
 | 
			
		||||
          "text-primary-foreground relative bg-primary z-0 overflow-hidden transition-all duration-500 after:absolute after:inset-0 after:-z-10 after:translate-x-[-150%] after:translate-y-[150%] after:scale-[2.5] after:rounded-[100%] after:bg-gradient-to-l from-zinc-400 after:transition-transform after:duration-1000  hover:after:translate-x-[0%] hover:after:translate-y-[0%] ",
 | 
			
		||||
          "text-primary-foreground relative bg-primary z-0 overflow-hidden transition-all duration-500 after:absolute after:inset-0 after:-z-10 after:translate-x-[-150%] after:translate-y-[150%] after:scale-[2.5] after:rounded-[100%] after:bg-linear-to-l from-zinc-400 after:transition-transform after:duration-1000  hover:after:translate-x-[0%] hover:after:translate-y-[0%] ",
 | 
			
		||||
        linkHover1:
 | 
			
		||||
          "relative after:absolute after:bg-primary after:bottom-2 after:h-[1px] after:w-2/3 after:origin-bottom-left after:scale-x-100 hover:after:origin-bottom-right hover:after:scale-x-0 after:transition-transform after:ease-in-out after:duration-300",
 | 
			
		||||
          "relative after:absolute after:bg-primary after:bottom-2 after:h-px after:w-2/3 after:origin-bottom-left after:scale-x-100 hover:after:origin-bottom-right hover:after:scale-x-0 after:transition-transform after:ease-in-out after:duration-300",
 | 
			
		||||
        linkHover2:
 | 
			
		||||
          "relative after:absolute after:bg-primary after:bottom-2 after:h-[1px] after:w-2/3 after:origin-bottom-right after:scale-x-0 hover:after:origin-bottom-left hover:after:scale-x-100 after:transition-transform after:ease-in-out after:duration-300",
 | 
			
		||||
          "relative after:absolute after:bg-primary after:bottom-2 after:h-px after:w-2/3 after:origin-bottom-right after:scale-x-0 hover:after:origin-bottom-left hover:after:scale-x-100 after:transition-transform after:ease-in-out after:duration-300",
 | 
			
		||||
      },
 | 
			
		||||
      size: {
 | 
			
		||||
        default: "h-10 px-4 py-2",
 | 
			
		||||
@@ -96,7 +96,7 @@ const Button = React.forwardRef<
 | 
			
		||||
        )}
 | 
			
		||||
        <Slottable>{props.children}</Slottable>
 | 
			
		||||
        {Icon && iconPlacement === "right" && (
 | 
			
		||||
          <div className="w-0 translate-x-[100%] pl-0 opacity-0 transition-all duration-200 group-hover:w-5 group-hover:translate-x-0 group-hover:pl-2 group-hover:opacity-100">
 | 
			
		||||
          <div className="w-0 translate-x-full pl-0 opacity-0 transition-all duration-200 group-hover:w-5 group-hover:translate-x-0 group-hover:pl-2 group-hover:opacity-100">
 | 
			
		||||
            <Icon />
 | 
			
		||||
          </div>
 | 
			
		||||
        )}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ const Card = React.forwardRef<
 | 
			
		||||
  <div
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "rounded-lg border text-card-foreground shadow-sm",
 | 
			
		||||
      "rounded-lg border text-card-foreground shadow-xs",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    {...props}
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ import { Separator } from "./separator";
 | 
			
		||||
import { Button } from "./button";
 | 
			
		||||
 | 
			
		||||
const buttonVariants = cva(
 | 
			
		||||
  "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
 | 
			
		||||
  "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
 | 
			
		||||
  {
 | 
			
		||||
    variants: {
 | 
			
		||||
      variant: {
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ const CommandInput = React.forwardRef<
 | 
			
		||||
    <CommandPrimitive.Input
 | 
			
		||||
      ref={ref}
 | 
			
		||||
      className={cn(
 | 
			
		||||
        "flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
 | 
			
		||||
        "flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
 | 
			
		||||
        className,
 | 
			
		||||
      )}
 | 
			
		||||
      {...props}
 | 
			
		||||
@@ -118,7 +118,7 @@ const CommandItem = React.forwardRef<
 | 
			
		||||
  <CommandPrimitive.Item
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50",
 | 
			
		||||
      "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    {...props}
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,7 @@ const DialogContent = React.forwardRef<
 | 
			
		||||
      {...props}
 | 
			
		||||
    >
 | 
			
		||||
      {children}
 | 
			
		||||
      <DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground">
 | 
			
		||||
      <DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground">
 | 
			
		||||
        <X className="h-4 w-4" />
 | 
			
		||||
        <span className="sr-only">Close</span>
 | 
			
		||||
      </DialogPrimitive.Close>
 | 
			
		||||
 
 | 
			
		||||
@@ -27,7 +27,7 @@ const DropdownMenuSubTrigger = React.forwardRef<
 | 
			
		||||
  <DropdownMenuPrimitive.SubTrigger
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",
 | 
			
		||||
      "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden focus:bg-accent data-[state=open]:bg-accent",
 | 
			
		||||
      inset && "pl-8",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
@@ -47,7 +47,7 @@ const DropdownMenuSubContent = React.forwardRef<
 | 
			
		||||
  <DropdownMenuPrimitive.SubContent
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
 | 
			
		||||
      "z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    {...props}
 | 
			
		||||
@@ -65,7 +65,7 @@ const DropdownMenuContent = React.forwardRef<
 | 
			
		||||
      ref={ref}
 | 
			
		||||
      sideOffset={sideOffset}
 | 
			
		||||
      className={cn(
 | 
			
		||||
        "glass z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover/50 p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
 | 
			
		||||
        "glass z-50 min-w-32 overflow-hidden rounded-md border bg-popover/50 p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
 | 
			
		||||
        className,
 | 
			
		||||
      )}
 | 
			
		||||
      {...props}
 | 
			
		||||
@@ -83,7 +83,7 @@ const DropdownMenuItem = React.forwardRef<
 | 
			
		||||
  <DropdownMenuPrimitive.Item
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "relative flex cursor-default select-none items-center rounded-sm px-2 py-1 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
 | 
			
		||||
      "relative flex cursor-default select-none items-center rounded-sm px-2 py-1 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
 | 
			
		||||
      inset && "pl-8",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
@@ -99,7 +99,7 @@ const DropdownMenuCheckboxItem = React.forwardRef<
 | 
			
		||||
  <DropdownMenuPrimitive.CheckboxItem
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
 | 
			
		||||
      "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    checked={checked}
 | 
			
		||||
@@ -123,7 +123,7 @@ const DropdownMenuRadioItem = React.forwardRef<
 | 
			
		||||
  <DropdownMenuPrimitive.RadioItem
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
 | 
			
		||||
      "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    {...props}
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
 | 
			
		||||
      <input
 | 
			
		||||
        type={type}
 | 
			
		||||
        className={cn(
 | 
			
		||||
          "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
 | 
			
		||||
          "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
 | 
			
		||||
          className,
 | 
			
		||||
        )}
 | 
			
		||||
        ref={ref}
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
 | 
			
		||||
const NavigationMenuItem = NavigationMenuPrimitive.Item;
 | 
			
		||||
 | 
			
		||||
const navigationMenuTriggerStyle = cva(
 | 
			
		||||
  "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50",
 | 
			
		||||
  "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-hidden disabled:pointer-events-none disabled:opacity-50 data-active:bg-accent/50 data-[state=open]:bg-accent/50",
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
const NavigationMenuTrigger = React.forwardRef<
 | 
			
		||||
@@ -56,7 +56,7 @@ const NavigationMenuTrigger = React.forwardRef<
 | 
			
		||||
    {children}
 | 
			
		||||
    {" "}
 | 
			
		||||
    <ChevronDown
 | 
			
		||||
      className="relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180"
 | 
			
		||||
      className="relative top-px ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180"
 | 
			
		||||
      aria-hidden="true"
 | 
			
		||||
    />
 | 
			
		||||
  </NavigationMenuPrimitive.Trigger>
 | 
			
		||||
@@ -87,7 +87,7 @@ const NavigationMenuViewport = React.forwardRef<
 | 
			
		||||
  <div className={cn("absolute left-0 top-full flex justify-center")}>
 | 
			
		||||
    <NavigationMenuPrimitive.Viewport
 | 
			
		||||
      className={cn(
 | 
			
		||||
        "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
 | 
			
		||||
        "origin-top-center relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-(--radix-navigation-menu-viewport-width)",
 | 
			
		||||
        className,
 | 
			
		||||
      )}
 | 
			
		||||
      ref={ref}
 | 
			
		||||
@@ -105,7 +105,7 @@ const NavigationMenuIndicator = React.forwardRef<
 | 
			
		||||
  <NavigationMenuPrimitive.Indicator
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
 | 
			
		||||
      "top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    {...props}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ const PopoverContent = React.forwardRef<
 | 
			
		||||
      align={align}
 | 
			
		||||
      sideOffset={sideOffset}
 | 
			
		||||
      className={cn(
 | 
			
		||||
        "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
 | 
			
		||||
        "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
 | 
			
		||||
        className,
 | 
			
		||||
      )}
 | 
			
		||||
      {...props}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ const SelectTrigger = React.forwardRef<
 | 
			
		||||
  <SelectPrimitive.Trigger
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
 | 
			
		||||
      "flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    {...props}
 | 
			
		||||
@@ -75,7 +75,7 @@ const SelectContent = React.forwardRef<
 | 
			
		||||
    <SelectPrimitive.Content
 | 
			
		||||
      ref={ref}
 | 
			
		||||
      className={cn(
 | 
			
		||||
        "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
 | 
			
		||||
        "relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
 | 
			
		||||
        position === "popper"
 | 
			
		||||
        && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
 | 
			
		||||
        className,
 | 
			
		||||
@@ -88,7 +88,7 @@ const SelectContent = React.forwardRef<
 | 
			
		||||
        className={cn(
 | 
			
		||||
          "p-1",
 | 
			
		||||
          position === "popper"
 | 
			
		||||
          && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]",
 | 
			
		||||
          && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)",
 | 
			
		||||
        )}
 | 
			
		||||
      >
 | 
			
		||||
        {children}
 | 
			
		||||
@@ -118,7 +118,7 @@ const SelectItem = React.forwardRef<
 | 
			
		||||
  <SelectPrimitive.Item
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
 | 
			
		||||
      "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    {...props}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ const Separator = React.forwardRef<
 | 
			
		||||
      orientation={orientation}
 | 
			
		||||
      className={cn(
 | 
			
		||||
        "shrink-0 bg-border",
 | 
			
		||||
        orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
 | 
			
		||||
        orientation === "horizontal" ? "h-px w-full" : "h-full w-px",
 | 
			
		||||
        className,
 | 
			
		||||
      )}
 | 
			
		||||
      {...props}
 | 
			
		||||
 
 | 
			
		||||
@@ -65,7 +65,7 @@ const SheetContent = React.forwardRef<
 | 
			
		||||
      {...props}
 | 
			
		||||
    >
 | 
			
		||||
      {children}
 | 
			
		||||
      <SheetPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary">
 | 
			
		||||
      <SheetPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary">
 | 
			
		||||
        <X className="h-4 w-4" />
 | 
			
		||||
        <span className="sr-only">Close</span>
 | 
			
		||||
      </SheetPrimitive.Close>
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ const Switch = React.forwardRef<
 | 
			
		||||
>(({ className, ...props }, ref) => (
 | 
			
		||||
  <SwitchPrimitives.Root
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
 | 
			
		||||
      "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    {...props}
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ const TableFooter = React.forwardRef<
 | 
			
		||||
  <tfoot
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
 | 
			
		||||
      "border-t bg-muted/50 font-medium last:[&>tr]:border-b-0",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    {...props}
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@ const TabsTrigger = React.forwardRef<
 | 
			
		||||
  <TabsPrimitive.Trigger
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
 | 
			
		||||
      "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-xs",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    {...props}
 | 
			
		||||
@@ -44,7 +44,7 @@ const TabsContent = React.forwardRef<
 | 
			
		||||
  <TabsPrimitive.Content
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
 | 
			
		||||
      "mt-2 ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    {...props}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,7 @@ const Textarea = React.forwardRef<
 | 
			
		||||
  return (
 | 
			
		||||
    <textarea
 | 
			
		||||
      className={cn(
 | 
			
		||||
        "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
 | 
			
		||||
        "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
 | 
			
		||||
        className,
 | 
			
		||||
      )}
 | 
			
		||||
      ref={ref}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ const TooltipContent = React.forwardRef<
 | 
			
		||||
    ref={ref}
 | 
			
		||||
    sideOffset={sideOffset}
 | 
			
		||||
    className={cn(
 | 
			
		||||
      "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",
 | 
			
		||||
      "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-tooltip-content-transform-origin)",
 | 
			
		||||
      className,
 | 
			
		||||
    )}
 | 
			
		||||
    {...props}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,147 @@
 | 
			
		||||
@tailwind base;
 | 
			
		||||
@tailwind components;
 | 
			
		||||
@tailwind utilities;
 | 
			
		||||
@import 'tailwindcss';
 | 
			
		||||
 | 
			
		||||
@custom-variant dark (&:is(.dark *));
 | 
			
		||||
 | 
			
		||||
@utility container {
 | 
			
		||||
  margin-inline: auto;
 | 
			
		||||
  padding-inline: 2rem;
 | 
			
		||||
  @media (width >= --theme(--breakpoint-sm)) {
 | 
			
		||||
    max-width: none;
 | 
			
		||||
  }
 | 
			
		||||
  @media (width >= 1400px) {
 | 
			
		||||
    max-width: 1400px;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@theme {
 | 
			
		||||
  --color-border: hsl(var(--border));
 | 
			
		||||
  --color-input: hsl(var(--input));
 | 
			
		||||
  --color-ring: hsl(var(--ring));
 | 
			
		||||
  --color-background: hsl(var(--background));
 | 
			
		||||
  --color-foreground: hsl(var(--foreground));
 | 
			
		||||
 | 
			
		||||
  --color-primary: hsl(var(--primary));
 | 
			
		||||
  --color-primary-foreground: hsl(var(--primary-foreground));
 | 
			
		||||
 | 
			
		||||
  --color-secondary: hsl(var(--secondary));
 | 
			
		||||
  --color-secondary-foreground: hsl(var(--secondary-foreground));
 | 
			
		||||
 | 
			
		||||
  --color-destructive: hsl(var(--destructive));
 | 
			
		||||
  --color-destructive-foreground: hsl(var(--destructive-foreground));
 | 
			
		||||
 | 
			
		||||
  --color-muted: hsl(var(--muted));
 | 
			
		||||
  --color-muted-foreground: hsl(var(--muted-foreground));
 | 
			
		||||
 | 
			
		||||
  --color-accent: hsl(var(--accent));
 | 
			
		||||
  --color-accent-foreground: hsl(var(--accent-foreground));
 | 
			
		||||
 | 
			
		||||
  --color-popover: hsl(var(--popover));
 | 
			
		||||
  --color-popover-foreground: hsl(var(--popover-foreground));
 | 
			
		||||
 | 
			
		||||
  --color-card: hsl(var(--card));
 | 
			
		||||
  --color-card-foreground: hsl(var(--card-foreground));
 | 
			
		||||
 | 
			
		||||
  --radius-lg: var(--radius);
 | 
			
		||||
  --radius-md: calc(var(--radius) - 2px);
 | 
			
		||||
  --radius-sm: calc(var(--radius) - 4px);
 | 
			
		||||
 | 
			
		||||
  --animate-accordion-down: accordion-down 0.2s ease-out;
 | 
			
		||||
  --animate-accordion-up: accordion-up 0.2s ease-out;
 | 
			
		||||
  --animate-shine: shine 8s ease-in-out infinite;
 | 
			
		||||
  --animate-gradient: gradient 8s linear infinite;
 | 
			
		||||
 | 
			
		||||
  @keyframes accordion-down {
 | 
			
		||||
    from {
 | 
			
		||||
      height: 0;
 | 
			
		||||
    }
 | 
			
		||||
    to {
 | 
			
		||||
      height: var(--radix-accordion-content-height);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  @keyframes accordion-up {
 | 
			
		||||
    from {
 | 
			
		||||
      height: var(--radix-accordion-content-height);
 | 
			
		||||
    }
 | 
			
		||||
    to {
 | 
			
		||||
      height: 0;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  @keyframes shine {
 | 
			
		||||
    from {
 | 
			
		||||
      background-position: 200% 0;
 | 
			
		||||
    }
 | 
			
		||||
    to {
 | 
			
		||||
      background-position: -200% 0;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  @keyframes gradient {
 | 
			
		||||
    to {
 | 
			
		||||
      background-position: var(--bg-size) 0;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  @keyframes shine-pulse {
 | 
			
		||||
    0% {
 | 
			
		||||
      background-position: 0% 0%;
 | 
			
		||||
    }
 | 
			
		||||
    50% {
 | 
			
		||||
      background-position: 100% 100%;
 | 
			
		||||
    }
 | 
			
		||||
    to {
 | 
			
		||||
      background-position: 0% 0%;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  @keyframes moveHorizontal {
 | 
			
		||||
    0% {
 | 
			
		||||
      transform: translateX(-50%) translateY(-10%);
 | 
			
		||||
    }
 | 
			
		||||
    50% {
 | 
			
		||||
      transform: translateX(50%) translateY(10%);
 | 
			
		||||
    }
 | 
			
		||||
    100% {
 | 
			
		||||
      transform: translateX(-50%) translateY(-10%);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  @keyframes moveInCircle {
 | 
			
		||||
    0% {
 | 
			
		||||
      transform: rotate(0deg);
 | 
			
		||||
    }
 | 
			
		||||
    50% {
 | 
			
		||||
      transform: rotate(180deg);
 | 
			
		||||
    }
 | 
			
		||||
    100% {
 | 
			
		||||
      transform: rotate(360deg);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  @keyframes moveVertical {
 | 
			
		||||
    0% {
 | 
			
		||||
      transform: translateY(-50%);
 | 
			
		||||
    }
 | 
			
		||||
    50% {
 | 
			
		||||
      transform: translateY(50%);
 | 
			
		||||
    }
 | 
			
		||||
    100% {
 | 
			
		||||
      transform: translateY(-50%);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  The default border color has changed to `currentcolor` in Tailwind CSS v4,
 | 
			
		||||
  so we've added these compatibility styles to make sure everything still
 | 
			
		||||
  looks the same as it did with Tailwind CSS v3.
 | 
			
		||||
 | 
			
		||||
  If we ever want to remove these styles, we need to add an explicit border
 | 
			
		||||
  color utility to any element that depends on these defaults.
 | 
			
		||||
*/
 | 
			
		||||
@layer base {
 | 
			
		||||
  *,
 | 
			
		||||
  ::after,
 | 
			
		||||
  ::before,
 | 
			
		||||
  ::backdrop,
 | 
			
		||||
  ::file-selector-button {
 | 
			
		||||
    border-color: var(--color-gray-200, currentcolor);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@layer base {
 | 
			
		||||
  :root {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,181 +0,0 @@
 | 
			
		||||
/* eslint-disable ts/no-require-imports */
 | 
			
		||||
//
 | 
			
		||||
import type { Config } from "tailwindcss";
 | 
			
		||||
 | 
			
		||||
const {
 | 
			
		||||
  default: flattenColorPalette,
 | 
			
		||||
} = require("tailwindcss/lib/util/flattenColorPalette");
 | 
			
		||||
const svgToDataUri = require("mini-svg-data-uri");
 | 
			
		||||
 | 
			
		||||
const config = {
 | 
			
		||||
  darkMode: ["class"],
 | 
			
		||||
  content: [
 | 
			
		||||
    "./pages/**/*.{ts,tsx}",
 | 
			
		||||
    "./components/**/*.{ts,tsx}",
 | 
			
		||||
    "./app/**/*.{ts,tsx}",
 | 
			
		||||
    "./src/**/*.{ts,tsx}",
 | 
			
		||||
  ],
 | 
			
		||||
  prefix: "",
 | 
			
		||||
  theme: {
 | 
			
		||||
    container: {
 | 
			
		||||
      center: true,
 | 
			
		||||
      padding: "2rem",
 | 
			
		||||
      screens: {
 | 
			
		||||
        "2xl": "1400px",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    extend: {
 | 
			
		||||
      colors: {
 | 
			
		||||
        border: "hsl(var(--border))",
 | 
			
		||||
        input: "hsl(var(--input))",
 | 
			
		||||
        ring: "hsl(var(--ring))",
 | 
			
		||||
        background: "hsl(var(--background))",
 | 
			
		||||
        foreground: "hsl(var(--foreground))",
 | 
			
		||||
        primary: {
 | 
			
		||||
          DEFAULT: "hsl(var(--primary))",
 | 
			
		||||
          foreground: "hsl(var(--primary-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
        secondary: {
 | 
			
		||||
          DEFAULT: "hsl(var(--secondary))",
 | 
			
		||||
          foreground: "hsl(var(--secondary-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
        destructive: {
 | 
			
		||||
          DEFAULT: "hsl(var(--destructive))",
 | 
			
		||||
          foreground: "hsl(var(--destructive-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
        muted: {
 | 
			
		||||
          DEFAULT: "hsl(var(--muted))",
 | 
			
		||||
          foreground: "hsl(var(--muted-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
        accent: {
 | 
			
		||||
          DEFAULT: "hsl(var(--accent))",
 | 
			
		||||
          foreground: "hsl(var(--accent-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
        popover: {
 | 
			
		||||
          DEFAULT: "hsl(var(--popover))",
 | 
			
		||||
          foreground: "hsl(var(--popover-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
        card: {
 | 
			
		||||
          DEFAULT: "hsl(var(--card))",
 | 
			
		||||
          foreground: "hsl(var(--card-foreground))",
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      borderRadius: {
 | 
			
		||||
        lg: "var(--radius)",
 | 
			
		||||
        md: "calc(var(--radius) - 2px)",
 | 
			
		||||
        sm: "calc(var(--radius) - 4px)",
 | 
			
		||||
      },
 | 
			
		||||
      keyframes: {
 | 
			
		||||
        "accordion-down": {
 | 
			
		||||
          from: { height: "0" },
 | 
			
		||||
          to: { height: "var(--radix-accordion-content-height)" },
 | 
			
		||||
        },
 | 
			
		||||
        "accordion-up": {
 | 
			
		||||
          from: { height: "var(--radix-accordion-content-height)" },
 | 
			
		||||
          to: { height: "0" },
 | 
			
		||||
        },
 | 
			
		||||
        "shine": {
 | 
			
		||||
          from: { backgroundPosition: "200% 0" },
 | 
			
		||||
          to: { backgroundPosition: "-200% 0" },
 | 
			
		||||
        },
 | 
			
		||||
        "gradient": {
 | 
			
		||||
          to: {
 | 
			
		||||
            backgroundPosition: "var(--bg-size) 0",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        "shine-pulse": {
 | 
			
		||||
          "0%": {
 | 
			
		||||
            "background-position": "0% 0%",
 | 
			
		||||
          },
 | 
			
		||||
          "50%": {
 | 
			
		||||
            "background-position": "100% 100%",
 | 
			
		||||
          },
 | 
			
		||||
          "to": {
 | 
			
		||||
            "background-position": "0% 0%",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        "moveHorizontal": {
 | 
			
		||||
          "0%": {
 | 
			
		||||
            transform: "translateX(-50%) translateY(-10%)",
 | 
			
		||||
          },
 | 
			
		||||
          "50%": {
 | 
			
		||||
            transform: "translateX(50%) translateY(10%)",
 | 
			
		||||
          },
 | 
			
		||||
          "100%": {
 | 
			
		||||
            transform: "translateX(-50%) translateY(-10%)",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        "moveInCircle": {
 | 
			
		||||
          "0%": {
 | 
			
		||||
            transform: "rotate(0deg)",
 | 
			
		||||
          },
 | 
			
		||||
          "50%": {
 | 
			
		||||
            transform: "rotate(180deg)",
 | 
			
		||||
          },
 | 
			
		||||
          "100%": {
 | 
			
		||||
            transform: "rotate(360deg)",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        "moveVertical": {
 | 
			
		||||
          "0%": {
 | 
			
		||||
            transform: "translateY(-50%)",
 | 
			
		||||
          },
 | 
			
		||||
          "50%": {
 | 
			
		||||
            transform: "translateY(50%)",
 | 
			
		||||
          },
 | 
			
		||||
          "100%": {
 | 
			
		||||
            transform: "translateY(-50%)",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
      animation: {
 | 
			
		||||
        "accordion-down": "accordion-down 0.2s ease-out",
 | 
			
		||||
        "accordion-up": "accordion-up 0.2s ease-out",
 | 
			
		||||
        "shine": "shine 8s ease-in-out infinite",
 | 
			
		||||
        "gradient": "gradient 8s linear infinite",
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  plugins: [
 | 
			
		||||
    require(`tailwindcss-animated`),
 | 
			
		||||
    require("tailwindcss-animate"),
 | 
			
		||||
    addVariablesForColors,
 | 
			
		||||
    function ({ matchUtilities, theme }: any) {
 | 
			
		||||
      matchUtilities(
 | 
			
		||||
        {
 | 
			
		||||
          "bg-grid": (value: any) => ({
 | 
			
		||||
            backgroundImage: `url("${svgToDataUri(
 | 
			
		||||
              `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="none" stroke="${value}"><path d="M0 .5H31.5V32"/></svg>`,
 | 
			
		||||
            )}")`,
 | 
			
		||||
          }),
 | 
			
		||||
          "bg-grid-small": (value: any) => ({
 | 
			
		||||
            backgroundImage: `url("${svgToDataUri(
 | 
			
		||||
              `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="8" height="8" fill="none" stroke="${value}"><path d="M0 .5H31.5V32"/></svg>`,
 | 
			
		||||
            )}")`,
 | 
			
		||||
          }),
 | 
			
		||||
          "bg-dot": (value: any) => ({
 | 
			
		||||
            backgroundImage: `url("${svgToDataUri(
 | 
			
		||||
              `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="16" height="16" fill="none"><circle fill="${value}" id="pattern-circle" cx="10" cy="10" r="1.6257413380501518"></circle></svg>`,
 | 
			
		||||
            )}")`,
 | 
			
		||||
          }),
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          values: flattenColorPalette(theme("backgroundColor")),
 | 
			
		||||
          type: "color",
 | 
			
		||||
        },
 | 
			
		||||
      );
 | 
			
		||||
    },
 | 
			
		||||
  ],
 | 
			
		||||
} satisfies Config;
 | 
			
		||||
 | 
			
		||||
function addVariablesForColors({ addBase, theme }: any) {
 | 
			
		||||
  const allColors = flattenColorPalette(theme("colors"));
 | 
			
		||||
  const newVars = Object.fromEntries(
 | 
			
		||||
    Object.entries(allColors).map(([key, val]) => [`--${key}`, val]),
 | 
			
		||||
  );
 | 
			
		||||
  addBase({
 | 
			
		||||
    ":root": newVars,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default config;
 | 
			
		||||
		Reference in New Issue
	
	Block a user