Apply tenant theme on business login and polish login branding.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alireza Hassani
2026-08-07 18:37:13 +03:30
co-authored by Cursor
parent 56f6b23074
commit a48a24e6f2
12 changed files with 122 additions and 52 deletions
@@ -31,11 +31,11 @@
min-width: 220px;
padding: 6px;
border-radius: 10px;
border: 1px solid rgba(255, 255, 255, 0.55);
background: rgba(255, 255, 255, 0.28);
backdrop-filter: blur(48px) saturate(1.2);
-webkit-backdrop-filter: blur(48px) saturate(1.2);
box-shadow: var(--glass-shadow);
border: 1px solid rgba(255, 255, 255, 0.85);
background: rgba(255, 255, 255, 0.78);
backdrop-filter: blur(72px) saturate(1.35);
-webkit-backdrop-filter: blur(72px) saturate(1.35);
box-shadow: 0 12px 40px rgba(15, 23, 42, 0.16);
animation: menuIn 0.14s ease;
}
@@ -86,6 +86,12 @@
color: #ef4444;
}
.menuDivider {
height: 1px;
margin: 4px 6px;
background: rgba(148, 163, 184, 0.28);
}
@keyframes menuIn {
from {
opacity: 0;
@@ -1,6 +1,13 @@
import { useEffect, useRef, useState } from 'react'
import { createPortal } from 'react-dom'
import { Building2, ExternalLink, Globe, MoreHorizontal, UserRound } from 'lucide-react'
import {
Building2,
ExternalLink,
Globe,
MoreHorizontal,
Trash2,
UserRound,
} from 'lucide-react'
import styles from './BusinessActionsOverflowMenu.module.css'
type PopoverPosition = {
@@ -10,6 +17,7 @@ type PopoverPosition = {
interface DomainLinksOverflowMenuProps {
host: string
onRemove: () => void
}
function apexHost(host: string) {
@@ -28,7 +36,7 @@ function openHost(host: string) {
window.open(siteUrl(host), '_blank', 'noopener,noreferrer')
}
export function DomainLinksOverflowMenu({ host }: DomainLinksOverflowMenuProps) {
export function DomainLinksOverflowMenu({ host, onRemove }: DomainLinksOverflowMenuProps) {
const [open, setOpen] = useState(false)
const [popoverPos, setPopoverPos] = useState<PopoverPosition | null>(null)
const wrapRef = useRef<HTMLDivElement>(null)
@@ -126,8 +134,8 @@ export function DomainLinksOverflowMenu({ host }: DomainLinksOverflowMenuProps)
e.stopPropagation()
toggleOpen()
}}
title="Open sites"
aria-label={`Open sites for ${apex}`}
title="More actions"
aria-label={`More actions for ${apex}`}
aria-haspopup="menu"
aria-expanded={open}
>
@@ -141,7 +149,7 @@ export function DomainLinksOverflowMenu({ host }: DomainLinksOverflowMenuProps)
ref={popoverRef}
className={styles.menu}
role="menu"
aria-label={`Open sites for ${apex}`}
aria-label={`More actions for ${apex}`}
style={{
top: popoverPos.top,
left: popoverPos.left,
@@ -168,6 +176,19 @@ export function DomainLinksOverflowMenu({ host }: DomainLinksOverflowMenuProps)
</span>
</button>
))}
<div className={styles.menuDivider} role="separator" />
<button
type="button"
className={`${styles.item} ${styles.itemDanger}`}
role="menuitem"
onClick={() => {
setOpen(false)
onRemove()
}}
>
<Trash2 size={16} />
<span>Remove</span>
</button>
</div>,
document.body,
)}
@@ -50,11 +50,11 @@
max-width: 280px;
padding: 8px 10px;
border-radius: var(--radius-sm);
border: 1px solid rgba(255, 255, 255, 0.55);
background: rgba(255, 255, 255, 0.28);
backdrop-filter: blur(48px) saturate(1.2);
-webkit-backdrop-filter: blur(48px) saturate(1.2);
box-shadow: var(--glass-shadow);
border: 1px solid rgba(255, 255, 255, 0.85);
background: rgba(255, 255, 255, 0.78);
backdrop-filter: blur(72px) saturate(1.35);
-webkit-backdrop-filter: blur(72px) saturate(1.35);
box-shadow: 0 12px 40px rgba(15, 23, 42, 0.16);
}
.option {
+4 -11
View File
@@ -9,7 +9,6 @@ import {
Rocket,
RotateCcw,
Search,
Trash2,
Unlock,
} from 'lucide-react'
import { ConfirmDeleteModal } from '../components/ConfirmDeleteModal'
@@ -590,16 +589,10 @@ export function WebsitesPage() {
>
<Pencil size={16} />
</button>
<DomainLinksOverflowMenu host={domain.host} />
<button
type="button"
className={`${tableStyles.controlBtn} ${tableStyles.controlBtnDanger}`}
onClick={() => setRemoveTarget(domain)}
title="Remove"
aria-label="Remove"
>
<Trash2 size={16} />
</button>
<DomainLinksOverflowMenu
host={domain.host}
onRemove={() => setRemoveTarget(domain)}
/>
</div>
</td>
</tr>