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:
khondokartowsif171
2026-08-23 22:28:29 +06:00
parent 46c85f7864
commit ca12491a49
2 changed files with 50 additions and 12 deletions
+13 -8
View File
@@ -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
View File
@@ -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>
)} )}