Add business dashboard dark mode from Super Admin theme setting.

Login and in-app surfaces follow tenant themeMode, matching customer dark tokens, with themed switches and tighter card/table chrome.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alireza Hassani
2026-08-31 13:40:40 +03:30
co-authored by Cursor
parent 65012717d0
commit e9400c2281
83 changed files with 586 additions and 193 deletions
@@ -1,6 +1,7 @@
import { useEffect, useState } from 'react'
import { useEffect, useRef, useState } from 'react'
import { createPortal } from 'react-dom'
import { AlertTriangle, X } from 'lucide-react'
import { lockBodyScroll, unlockBodyScroll } from '../utils/lockBodyScroll'
import styles from './ConfirmDeleteModal.module.css'
interface ConfirmDeleteModalProps {
@@ -22,6 +23,8 @@ export function ConfirmDeleteModal({
}: ConfirmDeleteModalProps) {
const [mounted, setMounted] = useState(open)
const [closing, setClosing] = useState(false)
const onCancelRef = useRef(onCancel)
onCancelRef.current = onCancel
useEffect(() => {
if (open) {
@@ -40,16 +43,15 @@ export function ConfirmDeleteModal({
useEffect(() => {
if (!mounted || closing) return
const onKey = (e: KeyboardEvent) => {
if (e.key === 'Escape') onCancel()
if (e.key === 'Escape') onCancelRef.current()
}
const prevOverflow = document.body.style.overflow
document.body.style.overflow = 'hidden'
lockBodyScroll()
document.addEventListener('keydown', onKey)
return () => {
document.body.style.overflow = prevOverflow
unlockBodyScroll()
document.removeEventListener('keydown', onKey)
}
}, [mounted, closing, onCancel])
}, [mounted, closing])
if (!mounted) return null