Seth commited on
Commit ·
ef3e137
1
Parent(s): 3e30e4e
update
Browse files
backend/app/tenant_routes.py
CHANGED
|
@@ -49,7 +49,7 @@ def _invite_email_body(
|
|
| 49 |
) -> str:
|
| 50 |
by = inviter_name or inviter_email or "Your teammate"
|
| 51 |
return (
|
| 52 |
-
f"{by} invited you to join the workspace \"{workspace_name}\" on
|
| 53 |
f"Accept the invitation by opening this link while signed in with Google as {invitee_email}:\n"
|
| 54 |
f"{invite_url}\n\n"
|
| 55 |
f"This link expires in 7 days.\n"
|
|
@@ -131,7 +131,7 @@ async def create_invitation(body: InviteBody, tc: TenantContext = Depends(requir
|
|
| 131 |
)
|
| 132 |
elif inviter:
|
| 133 |
try:
|
| 134 |
-
subject = f'Invitation to join "{workspace_name}" on
|
| 135 |
body_text = _invite_email_body(
|
| 136 |
inviter.name or "",
|
| 137 |
inviter.email or "",
|
|
|
|
| 49 |
) -> str:
|
| 50 |
by = inviter_name or inviter_email or "Your teammate"
|
| 51 |
return (
|
| 52 |
+
f"{by} invited you to join the workspace \"{workspace_name}\" on EZOFIS Revenue CRM.\n\n"
|
| 53 |
f"Accept the invitation by opening this link while signed in with Google as {invitee_email}:\n"
|
| 54 |
f"{invite_url}\n\n"
|
| 55 |
f"This link expires in 7 days.\n"
|
|
|
|
| 131 |
)
|
| 132 |
elif inviter:
|
| 133 |
try:
|
| 134 |
+
subject = f'Invitation to join "{workspace_name}" on EZOFIS Revenue CRM'
|
| 135 |
body_text = _invite_email_body(
|
| 136 |
inviter.name or "",
|
| 137 |
inviter.email or "",
|
frontend/index.html
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8" />
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 6 |
-
<title>
|
| 7 |
</head>
|
| 8 |
<body>
|
| 9 |
<div id="root"></div>
|
|
|
|
| 3 |
<head>
|
| 4 |
<meta charset="UTF-8" />
|
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
| 6 |
+
<title>EZOFIS Revenue CRM</title>
|
| 7 |
</head>
|
| 8 |
<body>
|
| 9 |
<div id="root"></div>
|
frontend/src/components/layout/AppHeader.jsx
CHANGED
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
| 2 |
import { Link, useLocation } from 'react-router-dom';
|
| 3 |
import { Zap } from 'lucide-react';
|
| 4 |
import { Button } from "@/components/ui/button";
|
|
|
|
| 5 |
|
| 6 |
const MENU_ITEMS = [
|
| 7 |
{ label: 'Campaigns', href: '/' },
|
|
@@ -28,8 +29,8 @@ export default function AppHeader({ rightContent }) {
|
|
| 28 |
<Zap className="h-5 w-5 text-white" />
|
| 29 |
</div>
|
| 30 |
<div>
|
| 31 |
-
<h1 className="font-bold text-slate-800 text-lg">
|
| 32 |
-
<p className="text-xs text-slate-500">
|
| 33 |
</div>
|
| 34 |
</div>
|
| 35 |
<nav className="hidden md:flex items-center gap-2">
|
|
|
|
| 2 |
import { Link, useLocation } from 'react-router-dom';
|
| 3 |
import { Zap } from 'lucide-react';
|
| 4 |
import { Button } from "@/components/ui/button";
|
| 5 |
+
import { APP_NAME, APP_TAGLINE } from '@/lib/branding';
|
| 6 |
|
| 7 |
const MENU_ITEMS = [
|
| 8 |
{ label: 'Campaigns', href: '/' },
|
|
|
|
| 29 |
<Zap className="h-5 w-5 text-white" />
|
| 30 |
</div>
|
| 31 |
<div>
|
| 32 |
+
<h1 className="font-bold text-slate-800 text-lg">{APP_NAME}</h1>
|
| 33 |
+
<p className="text-xs text-slate-500">{APP_TAGLINE}</p>
|
| 34 |
</div>
|
| 35 |
</div>
|
| 36 |
<nav className="hidden md:flex items-center gap-2">
|
frontend/src/components/layout/AppShell.jsx
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
| 13 |
import { Button } from '@/components/ui/button';
|
| 14 |
import { cn } from '@/lib/utils';
|
| 15 |
import GoogleAuthBar from '@/components/layout/GoogleAuthBar';
|
|
|
|
| 16 |
|
| 17 |
const NAV_ITEMS = [
|
| 18 |
{ label: 'Campaigns', href: '/', icon: LayoutDashboard },
|
|
@@ -75,9 +76,9 @@ export default function AppShell({ title, subtitle, rightContent, children }) {
|
|
| 75 |
</div>
|
| 76 |
<div className="min-w-0 flex-1">
|
| 77 |
<h1 className="font-bold text-slate-800 text-lg leading-tight truncate">
|
| 78 |
-
|
| 79 |
</h1>
|
| 80 |
-
<p className="text-xs text-slate-500 truncate">
|
| 81 |
</div>
|
| 82 |
</>
|
| 83 |
)}
|
|
|
|
| 13 |
import { Button } from '@/components/ui/button';
|
| 14 |
import { cn } from '@/lib/utils';
|
| 15 |
import GoogleAuthBar from '@/components/layout/GoogleAuthBar';
|
| 16 |
+
import { APP_NAME, APP_TAGLINE } from '@/lib/branding';
|
| 17 |
|
| 18 |
const NAV_ITEMS = [
|
| 19 |
{ label: 'Campaigns', href: '/', icon: LayoutDashboard },
|
|
|
|
| 76 |
</div>
|
| 77 |
<div className="min-w-0 flex-1">
|
| 78 |
<h1 className="font-bold text-slate-800 text-lg leading-tight truncate">
|
| 79 |
+
{APP_NAME}
|
| 80 |
</h1>
|
| 81 |
+
<p className="text-xs text-slate-500 truncate">{APP_TAGLINE}</p>
|
| 82 |
</div>
|
| 83 |
</>
|
| 84 |
)}
|
frontend/src/lib/branding.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/** Product name and tagline shown across the UI. */
|
| 2 |
+
export const APP_NAME = 'EZOFIS Revenue CRM';
|
| 3 |
+
export const APP_TAGLINE = 'Your autonomous revenue agent and pipeline engine';
|
frontend/src/pages/SignIn.jsx
CHANGED
|
@@ -3,6 +3,7 @@ import { useSearchParams } from 'react-router-dom';
|
|
| 3 |
import { Loader2, Zap } from 'lucide-react';
|
| 4 |
import { Button } from '@/components/ui/button';
|
| 5 |
import { cn } from '@/lib/utils';
|
|
|
|
| 6 |
import { useAuth } from '@/context/AuthContext';
|
| 7 |
|
| 8 |
export default function SignIn() {
|
|
@@ -69,8 +70,8 @@ export default function SignIn() {
|
|
| 69 |
<div className="mb-4 flex h-14 w-14 items-center justify-center rounded-2xl bg-gradient-to-br from-violet-600 to-purple-600 shadow-lg shadow-violet-200">
|
| 70 |
<Zap className="h-7 w-7 text-white" aria-hidden />
|
| 71 |
</div>
|
| 72 |
-
<h1 className="text-2xl font-bold text-slate-800">
|
| 73 |
-
<p className="mt-
|
| 74 |
</div>
|
| 75 |
|
| 76 |
<p className="mb-6 text-center text-slate-600">
|
|
|
|
| 3 |
import { Loader2, Zap } from 'lucide-react';
|
| 4 |
import { Button } from '@/components/ui/button';
|
| 5 |
import { cn } from '@/lib/utils';
|
| 6 |
+
import { APP_NAME, APP_TAGLINE } from '@/lib/branding';
|
| 7 |
import { useAuth } from '@/context/AuthContext';
|
| 8 |
|
| 9 |
export default function SignIn() {
|
|
|
|
| 70 |
<div className="mb-4 flex h-14 w-14 items-center justify-center rounded-2xl bg-gradient-to-br from-violet-600 to-purple-600 shadow-lg shadow-violet-200">
|
| 71 |
<Zap className="h-7 w-7 text-white" aria-hidden />
|
| 72 |
</div>
|
| 73 |
+
<h1 className="text-2xl font-bold text-slate-800">{APP_NAME}</h1>
|
| 74 |
+
<p className="mt-2 text-sm text-slate-500">{APP_TAGLINE}</p>
|
| 75 |
</div>
|
| 76 |
|
| 77 |
<p className="mb-6 text-center text-slate-600">
|