mirror of
https://github.com/snowykami/neo-blog.git
synced 2025-09-26 11:06:23 +00:00
feat: 添加新的颜色样式,更新全局样式和组件以支持更多用户颜色选项
This commit is contained in:
@ -1,6 +1,13 @@
|
||||
@import "tailwindcss";
|
||||
@import "tw-animate-css";
|
||||
@import "./styles/blue.css";
|
||||
@import "./styles/green.css";
|
||||
@import "./styles/orange.css";
|
||||
@import "./styles/red.css";
|
||||
@import "./styles/rose.css";
|
||||
@import "./styles/violet.css";
|
||||
@import "./styles/yellow.css";
|
||||
|
||||
|
||||
@custom-variant dark (&:is(.dark *));
|
||||
|
||||
|
@ -10,6 +10,8 @@ import { Toaster } from "@/components/ui/sonner"
|
||||
import { getLoginUser } from "@/api/user";
|
||||
import { NuqsAdapter } from 'nuqs/adapters/next/app'
|
||||
import "./globals.css";
|
||||
|
||||
|
||||
const geistSans = Geist({
|
||||
variable: "--font-geist-sans",
|
||||
subsets: ["latin"],
|
||||
@ -30,12 +32,13 @@ export default async function RootLayout({
|
||||
}: Readonly<{
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
|
||||
const token = (await cookies()).get("token")?.value || "";
|
||||
const refreshToken = (await cookies()).get("refresh_token")?.value || "";
|
||||
const user = await getLoginUser({ token, refreshToken }).then(res => res.data).catch(() => null);
|
||||
|
||||
return (
|
||||
<html lang={await getFirstLocale() || "en"} className="h-full">
|
||||
<html lang={await getFirstLocale() || "en"} className="h-full" user-color="blue">
|
||||
<body
|
||||
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
|
||||
>
|
||||
|
@ -1,4 +1,4 @@
|
||||
:root {
|
||||
:root[user-color="blue"] {
|
||||
--radius: 0.65rem;
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.141 0.005 285.823);
|
||||
@ -33,7 +33,7 @@
|
||||
--sidebar-ring: oklch(0.623 0.214 259.815);
|
||||
}
|
||||
|
||||
.dark {
|
||||
.dark[user-color="blue"] {
|
||||
--background: oklch(0.141 0.005 285.823);
|
||||
--foreground: oklch(0.985 0 0);
|
||||
--card: oklch(0.21 0.006 285.885);
|
||||
|
@ -1,4 +1,4 @@
|
||||
:root {
|
||||
:root[user-color="green"] {
|
||||
--radius: 0.65rem;
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.141 0.005 285.823);
|
||||
@ -33,7 +33,7 @@
|
||||
--sidebar-ring: oklch(0.723 0.219 149.579);
|
||||
}
|
||||
|
||||
.dark {
|
||||
.dark[user-color="green"] {
|
||||
--background: oklch(0.141 0.005 285.823);
|
||||
--foreground: oklch(0.985 0 0);
|
||||
--card: oklch(0.21 0.006 285.885);
|
||||
|
@ -1,4 +1,4 @@
|
||||
:root {
|
||||
:root[user-color="orange"] {
|
||||
--radius: 0.65rem;
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.141 0.005 285.823);
|
||||
@ -33,7 +33,7 @@
|
||||
--sidebar-ring: oklch(0.705 0.213 47.604);
|
||||
}
|
||||
|
||||
.dark {
|
||||
.dark[user-color="orange"] {
|
||||
--background: oklch(0.141 0.005 285.823);
|
||||
--foreground: oklch(0.985 0 0);
|
||||
--card: oklch(0.21 0.006 285.885);
|
||||
|
@ -1,4 +1,4 @@
|
||||
:root {
|
||||
:root[user-color="red"] {
|
||||
--radius: 0.65rem;
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.141 0.005 285.823);
|
||||
@ -33,7 +33,7 @@
|
||||
--sidebar-ring: oklch(0.637 0.237 25.331);
|
||||
}
|
||||
|
||||
.dark {
|
||||
.dark[user-color="red"] {
|
||||
--background: oklch(0.141 0.005 285.823);
|
||||
--foreground: oklch(0.985 0 0);
|
||||
--card: oklch(0.21 0.006 285.885);
|
||||
|
@ -1,4 +1,4 @@
|
||||
:root {
|
||||
:root[user-color="rose"] {
|
||||
--radius: 0.65rem;
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.141 0.005 285.823);
|
||||
@ -33,7 +33,7 @@
|
||||
--sidebar-ring: oklch(0.645 0.246 16.439);
|
||||
}
|
||||
|
||||
.dark {
|
||||
.dark[user-color="rose"] {
|
||||
--background: oklch(0.141 0.005 285.823);
|
||||
--foreground: oklch(0.985 0 0);
|
||||
--card: oklch(0.21 0.006 285.885);
|
||||
|
@ -1,4 +1,4 @@
|
||||
:root {
|
||||
:root[user-color="violet"] {
|
||||
--radius: 0.65rem;
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.141 0.005 285.823);
|
||||
@ -33,7 +33,7 @@
|
||||
--sidebar-ring: oklch(0.606 0.25 292.717);
|
||||
}
|
||||
|
||||
.dark {
|
||||
.dark[user-color="violet"] {
|
||||
--background: oklch(0.141 0.005 285.823);
|
||||
--foreground: oklch(0.985 0 0);
|
||||
--card: oklch(0.21 0.006 285.885);
|
||||
|
@ -1,4 +1,4 @@
|
||||
:root {
|
||||
:root[user-color="violet"] {
|
||||
--radius: 0.65rem;
|
||||
--background: oklch(1 0 0);
|
||||
--foreground: oklch(0.141 0.005 285.823);
|
||||
@ -33,7 +33,7 @@
|
||||
--sidebar-ring: oklch(0.795 0.184 86.047);
|
||||
}
|
||||
|
||||
.dark {
|
||||
.dark[user-color="violet"] {
|
||||
--background: oklch(0.141 0.005 285.823);
|
||||
--foreground: oklch(0.985 0 0);
|
||||
--card: oklch(0.21 0.006 285.885);
|
||||
|
@ -37,20 +37,23 @@ export function AvatarWithDropdownMenu() {
|
||||
</DropdownMenuTrigger>
|
||||
|
||||
<DropdownMenuContent className="w-auto" align="start">
|
||||
{user && <DropdownMenuLabel>
|
||||
<div className="flex items-center gap-2 px-1 py-1.5 text-left text-sm">
|
||||
<div className="grid flex-1 text-left text-sm leading-tight">
|
||||
<span className="truncate font-medium">{formatDisplayName(user)}</span>
|
||||
<span className="text-muted-foreground truncate text-xs">
|
||||
{user.email}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</DropdownMenuLabel>}
|
||||
{user &&
|
||||
<>
|
||||
<DropdownMenuLabel>
|
||||
<div className="flex items-center gap-2 p-0 text-left text-sm">
|
||||
<div className="grid flex-1 text-left text-sm leading-tight">
|
||||
<span className="truncate font-medium">{formatDisplayName(user)}</span>
|
||||
<span className="text-muted-foreground truncate text-xs">
|
||||
{user.email}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</DropdownMenuLabel>
|
||||
<DropdownMenuSeparator /></>}
|
||||
|
||||
{user &&
|
||||
<>
|
||||
<DropdownMenuGroup>
|
||||
<DropdownMenuGroup className="p-0">
|
||||
<DropdownMenuItem asChild>
|
||||
<Link href={`/u/${user?.username}`}>Profile</Link>
|
||||
</DropdownMenuItem>
|
||||
|
7
web/src/types/css.d.ts
vendored
Normal file
7
web/src/types/css.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
declare module "*.css";
|
||||
declare module "*.scss";
|
||||
declare module "*.sass";
|
||||
declare module "*.less";
|
||||
declare module "*.styl";
|
||||
declare module "*.module.css";
|
||||
declare module "*.module.scss";
|
Reference in New Issue
Block a user