feat: add self-serve "Get Started" registration CTA to nav + hero
Visitors previously had no path to create a client account -- only a Client Login link. Both CTAs now route through aura-auth's /register with next= pointed at the client portal's service catalog.
This commit is contained in:
+13
-8
@@ -123,18 +123,22 @@ const TerminalRain = () => {
|
|||||||
const HERO_TXT = {
|
const HERO_TXT = {
|
||||||
en: {
|
en: {
|
||||||
pill: "Accepting new projects · Q3 2026",
|
pill: "Accepting new projects · Q3 2026",
|
||||||
|
getStarted: "Get Started Free",
|
||||||
viewServices: "View Services",
|
viewServices: "View Services",
|
||||||
getQuote: "Get a Quote",
|
|
||||||
lastShipped: "Last shipped: 2 days ago",
|
lastShipped: "Last shipped: 2 days ago",
|
||||||
},
|
},
|
||||||
bn: {
|
bn: {
|
||||||
pill: "নতুন প্রজেক্ট নেওয়া হচ্ছে · Q3 2026",
|
pill: "নতুন প্রজেক্ট নেওয়া হচ্ছে · Q3 2026",
|
||||||
|
getStarted: "ফ্রি শুরু করুন",
|
||||||
viewServices: "সার্ভিস দেখুন",
|
viewServices: "সার্ভিস দেখুন",
|
||||||
getQuote: "কোট নিন",
|
|
||||||
lastShipped: "সর্বশেষ শিপড: ২ দিন আগে",
|
lastShipped: "সর্বশেষ শিপড: ২ দিন আগে",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Same self-serve destination as the nav's "Get Started" -- lands a fresh signup straight on the
|
||||||
|
// client portal's service catalog instead of a blank dashboard.
|
||||||
|
const HERO_REGISTER_URL = "https://auth.auraajenticai.cloud/register?next=" + encodeURIComponent("https://client.auraajenticai.cloud/services");
|
||||||
|
|
||||||
const Hero = ({ headlinePrefix, headlineSuffix, lang = "en" }) => {
|
const Hero = ({ headlinePrefix, headlineSuffix, lang = "en" }) => {
|
||||||
const D = PORTFOLIO_DATA;
|
const D = PORTFOLIO_DATA;
|
||||||
const prefix = headlinePrefix || "Agentic AI &";
|
const prefix = headlinePrefix || "Agentic AI &";
|
||||||
@@ -210,24 +214,25 @@ const Hero = ({ headlinePrefix, headlineSuffix, lang = "en" }) => {
|
|||||||
|
|
||||||
{/* CTAs */}
|
{/* CTAs */}
|
||||||
<div style={{ display: "flex", gap: 12, marginTop: 40, flexWrap: "wrap" }}>
|
<div style={{ display: "flex", gap: 12, marginTop: 40, flexWrap: "wrap" }}>
|
||||||
<a href="#work" style={{
|
<a href={HERO_REGISTER_URL} style={{
|
||||||
display: "inline-flex",
|
display: "inline-flex",
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
gap: 8,
|
gap: 8,
|
||||||
padding: "12px 20px",
|
padding: "12px 20px",
|
||||||
background: "var(--text)",
|
background: "linear-gradient(110deg, var(--accent), var(--accent-2))",
|
||||||
color: "var(--bg)",
|
color: "#fff",
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
fontWeight: 500,
|
fontWeight: 500,
|
||||||
borderRadius: 10,
|
borderRadius: 10,
|
||||||
|
textDecoration: "none",
|
||||||
transition: "transform 0.15s",
|
transition: "transform 0.15s",
|
||||||
}}
|
}}
|
||||||
onMouseEnter={e => e.currentTarget.style.transform = "translateY(-1px)"}
|
onMouseEnter={e => e.currentTarget.style.transform = "translateY(-1px)"}
|
||||||
onMouseLeave={e => e.currentTarget.style.transform = "none"}
|
onMouseLeave={e => e.currentTarget.style.transform = "none"}
|
||||||
>
|
>
|
||||||
{t.viewServices} <Icons.Arrow size={14} />
|
{t.getStarted} <Icons.Arrow size={14} />
|
||||||
</a>
|
</a>
|
||||||
<a href="#contact" style={{
|
<a href="#work" style={{
|
||||||
display: "inline-flex",
|
display: "inline-flex",
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
gap: 8,
|
gap: 8,
|
||||||
@@ -240,7 +245,7 @@ const Hero = ({ headlinePrefix, headlineSuffix, lang = "en" }) => {
|
|||||||
borderRadius: 10,
|
borderRadius: 10,
|
||||||
textDecoration: "none",
|
textDecoration: "none",
|
||||||
}}>
|
}}>
|
||||||
{t.getQuote} <Icons.ArrowUpRight size={14} />
|
{t.viewServices} <Icons.ArrowUpRight size={14} />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
+37
-4
@@ -8,10 +8,14 @@ const NAV_LINKS = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
const NAV_TXT = {
|
const NAV_TXT = {
|
||||||
en: { search: "Search", getQuote: "Get a Quote", clientLogin: "Client Login" },
|
en: { search: "Search", getQuote: "Get a Quote", clientLogin: "Client Login", getStarted: "Get Started" },
|
||||||
bn: { search: "খুঁজুন", getQuote: "কোট নিন", clientLogin: "ক্লায়েন্ট লগইন" },
|
bn: { search: "খুঁজুন", getQuote: "কোট নিন", clientLogin: "ক্লায়েন্ট লগইন", getStarted: "শুরু করুন" },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Where a self-serve account should land right after signing up -- the client portal's own
|
||||||
|
// service catalog, not a blank dashboard. aura-auth's /register already reads and honors `next`.
|
||||||
|
const REGISTER_URL = "https://auth.auraajenticai.cloud/register?next=" + encodeURIComponent("https://client.auraajenticai.cloud/services");
|
||||||
|
|
||||||
const Nav = ({ onCmdK, theme, onToggleTheme, accent, lang, onToggleLang, route }) => {
|
const Nav = ({ onCmdK, theme, onToggleTheme, accent, lang, onToggleLang, route }) => {
|
||||||
const [scrolled, setScrolled] = React.useState(false);
|
const [scrolled, setScrolled] = React.useState(false);
|
||||||
const [menuOpen, setMenuOpen] = React.useState(false);
|
const [menuOpen, setMenuOpen] = React.useState(false);
|
||||||
@@ -149,6 +153,20 @@ const Nav = ({ onCmdK, theme, onToggleTheme, accent, lang, onToggleLang, route }
|
|||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="https://auth.auraajenticai.cloud/login" className="nav-login-btn" style={{
|
<a href="https://auth.auraajenticai.cloud/login" className="nav-login-btn" style={{
|
||||||
|
padding: "8px 12px",
|
||||||
|
background: "transparent",
|
||||||
|
border: "1px solid var(--line)",
|
||||||
|
borderRadius: 8,
|
||||||
|
color: "var(--text-dim)",
|
||||||
|
fontSize: 13,
|
||||||
|
fontWeight: 500,
|
||||||
|
textDecoration: "none",
|
||||||
|
whiteSpace: "nowrap",
|
||||||
|
}}>
|
||||||
|
{t.clientLogin}
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href={REGISTER_URL} className="nav-signup-btn" style={{
|
||||||
display: "flex",
|
display: "flex",
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
gap: 6,
|
gap: 6,
|
||||||
@@ -161,7 +179,7 @@ const Nav = ({ onCmdK, theme, onToggleTheme, accent, lang, onToggleLang, route }
|
|||||||
textDecoration: "none",
|
textDecoration: "none",
|
||||||
whiteSpace: "nowrap",
|
whiteSpace: "nowrap",
|
||||||
}}>
|
}}>
|
||||||
{t.clientLogin} <Icons.Arrow size={13} />
|
{t.getStarted} <Icons.Arrow size={13} />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -206,6 +224,7 @@ const Nav = ({ onCmdK, theme, onToggleTheme, accent, lang, onToggleLang, route }
|
|||||||
}
|
}
|
||||||
@media (max-width: 480px) {
|
@media (max-width: 480px) {
|
||||||
.nav-login-btn { display: none !important; }
|
.nav-login-btn { display: none !important; }
|
||||||
|
.nav-signup-btn { display: none !important; }
|
||||||
.nav-hamburger { display: flex !important; }
|
.nav-hamburger { display: flex !important; }
|
||||||
}
|
}
|
||||||
`}</style>
|
`}</style>
|
||||||
@@ -283,6 +302,20 @@ const Nav = ({ onCmdK, theme, onToggleTheme, accent, lang, onToggleLang, route }
|
|||||||
<a
|
<a
|
||||||
href="https://auth.auraajenticai.cloud/login"
|
href="https://auth.auraajenticai.cloud/login"
|
||||||
onClick={() => setMenuOpen(false)}
|
onClick={() => setMenuOpen(false)}
|
||||||
|
style={{
|
||||||
|
padding: "8px 14px",
|
||||||
|
background: "transparent",
|
||||||
|
border: "1px solid var(--line)",
|
||||||
|
color: "var(--text-dim)",
|
||||||
|
fontSize: 13,
|
||||||
|
fontWeight: 500,
|
||||||
|
borderRadius: 8,
|
||||||
|
textDecoration: "none",
|
||||||
|
}}
|
||||||
|
>{t.clientLogin}</a>
|
||||||
|
<a
|
||||||
|
href={REGISTER_URL}
|
||||||
|
onClick={() => setMenuOpen(false)}
|
||||||
style={{
|
style={{
|
||||||
padding: "8px 14px",
|
padding: "8px 14px",
|
||||||
background: "var(--text)",
|
background: "var(--text)",
|
||||||
@@ -292,7 +325,7 @@ const Nav = ({ onCmdK, theme, onToggleTheme, accent, lang, onToggleLang, route }
|
|||||||
borderRadius: 8,
|
borderRadius: 8,
|
||||||
textDecoration: "none",
|
textDecoration: "none",
|
||||||
}}
|
}}
|
||||||
>{t.clientLogin}</a>
|
>{t.getStarted}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user