修复后台首页样式与弹窗问题

This commit is contained in:
2025-11-20 18:32:43 +08:00
parent 7e3d873a96
commit 5933394cda
4 changed files with 20 additions and 44 deletions

View File

@@ -6,7 +6,7 @@ import {merge} from '@/lib/utils'
type AdminLayoutProps = { type AdminLayoutProps = {
navbar: ReactNode navbar: ReactNode
header: ReactNode header: ReactNode
content: ReactNode children: ReactNode
} }
export default function Layout(props: AdminLayoutProps) { export default function Layout(props: AdminLayoutProps) {
@@ -70,11 +70,11 @@ export default function Layout(props: AdminLayoutProps) {
className={merge( className={merge(
`transition-[margin] duration-300 ease-in-out`, `transition-[margin] duration-300 ease-in-out`,
`absolute inset-0 overflow-hidden`, `absolute inset-0 overflow-hidden`,
`mt-[64px]`, `mt-16`,
`md:ml-[64px]`, `md:ml-16`,
`lg:data-[expand=true]:ml-[200px]`, `lg:data-[expand=true]:ml-[200px]`,
)}> )}>
{props.content} {props.children}
</div> </div>
</div> </div>
) )

View File

@@ -36,7 +36,7 @@ export default function Navbar(props: NavbarProps) {
<Link <Link
href="/" href="/"
className={merge( className={merge(
`flex-none h-[64px] flex items-center justify-center`, `flex-none h-16 flex items-center justify-center`,
)}> )}>
<Image src={logoAvatar} alt="logo" className="w-10 h-10 object-contain"/> <Image src={logoAvatar} alt="logo" className="w-10 h-10 object-contain"/>
<Image <Image
@@ -89,13 +89,13 @@ function NavTitle(props: {
`group-data-[expand=false]:h-4`, `group-data-[expand=false]:h-4`,
)}> )}>
<span className={merge( <span className={merge(
`transition-[opacity] duration-200 ease-in-out absolute mx-4`, `transition-opacity duration-200 ease-in-out absolute mx-4`,
`group-data-[expand=true]:delay-100 group-data-[expand=true]:opacity-100 group-data-[expand=false]:opacity-0`, `group-data-[expand=true]:delay-100 group-data-[expand=true]:opacity-100 group-data-[expand=false]:opacity-0`,
)}> )}>
{props.label} {props.label}
</span> </span>
<span className={merge( <span className={merge(
`transition-[opacity] duration-200 ease-in-out absolute w-full border-b block`, `transition-opacity duration-200 ease-in-out absolute w-full border-b block`,
`group-data-[expand=false]:delay-100 group-data-[expand=false]:opacity-100 group-data-[expand=true]:opacity-0`, `group-data-[expand=false]:delay-100 group-data-[expand=false]:opacity-100 group-data-[expand=true]:opacity-0`,
)}> )}>
</span> </span>
@@ -129,7 +129,7 @@ function NavItem(props: {
<TooltipTrigger asChild> <TooltipTrigger asChild>
<Link <Link
className={merge( className={merge(
`transition-[padding] duration-300 ease-in-out`, `transition-[padding,background] duration-300 ease-in-out`,
`flex items-center rounded-md gap-2 whitespace-nowrap`, `flex items-center rounded-md gap-2 whitespace-nowrap`,
`hover:bg-gray-100`, `hover:bg-gray-100`,
`group-data-[expand=true]:px-4`, `group-data-[expand=true]:px-4`,

View File

@@ -1,21 +0,0 @@
'use client'
import {ChangePasswordDialog} from '@/components/composites/dialogs/change-password-dialog'
import {RealnameAuthDialog} from '@/components/composites/dialogs/realname-auth-dialog'
import {User} from '@/lib/models'
export function PasswordSetupWrapper({profile}: {profile: User}) {
return (
<>
<RealnameAuthDialog
hasAuthenticated={!!profile.id_token}
triggerClassName="hidden"
defaultOpen={!profile.id_token}
/>
<ChangePasswordDialog
triggerClassName="hidden"
defaultOpen={profile.has_password}
/>
</>
)
}

View File

@@ -23,20 +23,17 @@ export default async function AdminLayout(props: AdminLayoutProps) {
<Layout <Layout
navbar={<Navbar/>} navbar={<Navbar/>}
header={<Header profile={profile}/>} header={<Header profile={profile}/>}
content={( >
<> {props.children}
{props.children} <RealnameAuthDialog
<RealnameAuthDialog hasAuthenticated={!!profile.id_token}
hasAuthenticated={!!profile.id_token} triggerClassName="hidden"
triggerClassName="hidden" defaultOpen={!profile.id_token}
defaultOpen={!profile.id_token} />
/> <ChangePasswordDialog
<ChangePasswordDialog triggerClassName="hidden"
triggerClassName="hidden" defaultOpen={!profile.has_password}
defaultOpen={profile.has_password} />
/> </Layout>
</>
)}
/>
) )
} }