Add SMS templates UI, prepaid balance settings, and list filter layout.

Business settings manage templates and balance; Super Admin verifies templates and tops up via SMS settings; filters use a separate panel with even field gaps.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alireza Hassani
2026-09-08 16:24:26 +03:30
co-authored by Cursor
parent 8f0b4cef85
commit 0eb19bbebd
27 changed files with 2324 additions and 527 deletions
@@ -6,6 +6,7 @@ import {
ExternalLink,
FileText,
Globe,
MessageSquareText,
MoreHorizontal,
Trash2,
UserRound,
@@ -24,6 +25,7 @@ interface BusinessActionsOverflowMenuProps {
/** Primary apex domain host when set — enables website / dashboard links. */
host?: string | null
onAiPrompts: () => void
onSmsSettings: () => void
onAllUsers: () => void
onWipeData: () => void
onRemove: () => void
@@ -49,6 +51,7 @@ export function BusinessActionsOverflowMenu({
businessName,
host,
onAiPrompts,
onSmsSettings,
onAllUsers,
onWipeData,
onRemove,
@@ -92,7 +95,7 @@ export function BusinessActionsOverflowMenu({
const size = popoverRef.current
? { width: popoverRef.current.offsetWidth, height: popoverRef.current.offsetHeight }
: { width: 220, height: linkItems.length ? 280 : 160 }
: { width: 220, height: linkItems.length ? 320 : 200 }
setPopoverPos(fitFixedPopover(rect, size, 'end'))
}
@@ -209,6 +212,18 @@ export function BusinessActionsOverflowMenu({
<FileText size={16} />
<span>AI prompts</span>
</button>
<button
type="button"
className={styles.item}
role="menuitem"
onClick={() => {
setOpen(false)
onSmsSettings()
}}
>
<MessageSquareText size={16} />
<span>SMS settings</span>
</button>
<button
type="button"
className={styles.item}
+2 -1
View File
@@ -1,5 +1,5 @@
import { NavLink, useNavigate } from 'react-router-dom'
import { Home, Building2, Users, Globe, FileText, Settings, HelpCircle, LogOut } from 'lucide-react'
import { Home, Building2, Users, Globe, FileText, MessageSquareText, Settings, HelpCircle, LogOut } from 'lucide-react'
import { useAuth } from '../context/AuthContext'
import meshkeeLogo from '../assets/meshkee-logo.png'
import styles from './Sidebar.module.css'
@@ -10,6 +10,7 @@ const navItems = [
{ icon: Users, label: 'Users', to: '/users' },
{ icon: Globe, label: 'Websites', to: '/websites' },
{ icon: FileText, label: 'Templates', to: '/templates' },
{ icon: MessageSquareText, label: 'SMS Templates', to: '/sms-templates' },
{ icon: Settings, label: 'Settings', to: '/settings' },
]