Skip to content

Commit 66b74cf

Browse files
committed
Update source files to new version
1 parent b35b70b commit 66b74cf

12 files changed

+603
-392
lines changed

index.html

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
77
<title>Kanz.AI</title>
8+
<meta name="description" content="Kanz.ai is your trusted partner for AI-driven document management, built for the complexities of the financial industry." />
9+
<meta name="robots" content="index, follow" />
10+
<link rel="sitemap" type="application/xml" href="/sitemap.xml" />
811
</head>
912
<body>
1013
<div id="root"></div>

package-lock.json

+51
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
"react-router-dom": "^6.20.0",
1717
"react-markdown": "^8.0.7",
1818
"react-hot-toast": "^2.4.1",
19-
"@emailjs/browser": "^3.11.0"
19+
"@emailjs/browser": "^3.11.0",
20+
"react-helmet-async": "^1.3.0"
2021
},
2122
"devDependencies": {
2223
"@types/react": "^18.2.37",

public/robots.txt

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
User-agent: *
2+
Allow: /
3+
4+
Sitemap: https://kanz.ai/sitemap.xml

public/sitemap.xml

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3+
<url>
4+
<loc>https://kanz.ai/</loc>
5+
<lastmod>2024-01-01</lastmod>
6+
<changefreq>daily</changefreq>
7+
<priority>1.0</priority>
8+
</url>
9+
<url>
10+
<loc>https://kanz.ai/about</loc>
11+
<lastmod>2024-01-01</lastmod>
12+
<changefreq>daily</changefreq>
13+
<priority>0.8</priority>
14+
</url>
15+
<url>
16+
<loc>https://kanz.ai/features</loc>
17+
<lastmod>2024-01-01</lastmod>
18+
<changefreq>daily</changefreq>
19+
<priority>0.8</priority>
20+
</url>
21+
<url>
22+
<loc>https://kanz.ai/how-it-works</loc>
23+
<lastmod>2024-01-01</lastmod>
24+
<changefreq>daily</changefreq>
25+
<priority>0.8</priority>
26+
</url>
27+
<url>
28+
<loc>https://kanz.ai/use-cases</loc>
29+
<lastmod>2024-01-01</lastmod>
30+
<changefreq>daily</changefreq>
31+
<priority>0.8</priority>
32+
</url>
33+
<url>
34+
<loc>https://kanz.ai/knowledge-base</loc>
35+
<lastmod>2024-01-01</lastmod>
36+
<changefreq>daily</changefreq>
37+
<priority>0.7</priority>
38+
</url>
39+
<url>
40+
<loc>https://kanz.ai/contact</loc>
41+
<lastmod>2024-01-01</lastmod>
42+
<changefreq>daily</changefreq>
43+
<priority>0.7</priority>
44+
</url>
45+
<url>
46+
<loc>https://kanz.ai/request-access</loc>
47+
<lastmod>2024-01-01</lastmod>
48+
<changefreq>daily</changefreq>
49+
<priority>0.9</priority>
50+
</url>
51+
</urlset>

src/App.tsx

+25-22
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react';
22
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
3+
import { HelmetProvider } from 'react-helmet-async';
34
import { AuthProvider } from './contexts/AuthContext';
45
import { Toaster } from 'react-hot-toast';
56
import Navbar from './components/Navbar';
@@ -16,28 +17,30 @@ import RequestAccess from './pages/RequestAccess';
1617

1718
function App() {
1819
return (
19-
<AuthProvider>
20-
<Router>
21-
<div className="min-h-screen flex flex-col">
22-
<Navbar />
23-
<main className="flex-grow">
24-
<Routes>
25-
<Route path="/" element={<Home />} />
26-
<Route path="/about" element={<About />} />
27-
<Route path="/features" element={<Features />} />
28-
<Route path="/how-it-works" element={<HowItWorks />} />
29-
<Route path="/use-cases" element={<UseCases />} />
30-
<Route path="/knowledge-base" element={<KnowledgeBase />} />
31-
<Route path="/contact" element={<Contact />} />
32-
<Route path="/login" element={<Login />} />
33-
<Route path="/request-access" element={<RequestAccess />} />
34-
</Routes>
35-
</main>
36-
<Footer />
37-
<Toaster position="top-center" />
38-
</div>
39-
</Router>
40-
</AuthProvider>
20+
<HelmetProvider>
21+
<AuthProvider>
22+
<Router>
23+
<div className="min-h-screen flex flex-col">
24+
<Navbar />
25+
<main className="flex-grow">
26+
<Routes>
27+
<Route path="/" element={<Home />} />
28+
<Route path="/about" element={<About />} />
29+
<Route path="/features" element={<Features />} />
30+
<Route path="/how-it-works" element={<HowItWorks />} />
31+
<Route path="/use-cases" element={<UseCases />} />
32+
<Route path="/knowledge-base" element={<KnowledgeBase />} />
33+
<Route path="/contact" element={<Contact />} />
34+
<Route path="/login" element={<Login />} />
35+
<Route path="/request-access" element={<RequestAccess />} />
36+
</Routes>
37+
</main>
38+
<Footer />
39+
<Toaster position="top-center" />
40+
</div>
41+
</Router>
42+
</AuthProvider>
43+
</HelmetProvider>
4144
);
4245
}
4346

src/components/Navbar.tsx

+38-2
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,16 @@ const Navbar = () => {
1515

1616
const navItems = [
1717
{ name: 'Home', path: '/' },
18-
{ name: 'About', path: '/about' },
1918
{ name: 'Features', path: '/features' },
2019
{ name: 'How It Works', path: '/how-it-works' },
2120
{ name: 'Use Cases', path: '/use-cases' },
22-
{ name: 'Knowledge Base', path: '/knowledge-base' },
21+
{ name: 'About', path: '/about' },
2322
{ name: 'Contact', path: '/contact' },
23+
];
24+
25+
const secondaryNavItems = [
2426
{ name: 'Request Access', path: '/request-access' },
27+
{ name: 'Knowledge Base', path: '/knowledge-base' },
2528
];
2629

2730
const handleTryFree = () => {
@@ -41,6 +44,7 @@ const Navbar = () => {
4144

4245
{/* Desktop menu */}
4346
<div className="hidden md:flex items-center space-x-4">
47+
{/* Primary Navigation */}
4448
{navItems.map((item) => (
4549
<Link
4650
key={item.name}
@@ -50,6 +54,21 @@ const Navbar = () => {
5054
{item.name}
5155
</Link>
5256
))}
57+
58+
{/* Divider */}
59+
<span className="h-6 w-px bg-gray-200"></span>
60+
61+
{/* Secondary Navigation */}
62+
{secondaryNavItems.map((item) => (
63+
<Link
64+
key={item.name}
65+
to={item.path}
66+
className="text-gray-700 hover:text-blue-600 px-3 py-2 rounded-md text-sm font-medium transition-colors"
67+
>
68+
{item.name}
69+
</Link>
70+
))}
71+
5372
{isAuthenticated ? (
5473
<button
5574
onClick={handleLogout}
@@ -91,6 +110,7 @@ const Navbar = () => {
91110
{isOpen && (
92111
<div className="md:hidden">
93112
<div className="px-2 pt-2 pb-3 space-y-1 sm:px-3">
113+
{/* Primary Navigation */}
94114
{navItems.map((item) => (
95115
<Link
96116
key={item.name}
@@ -101,6 +121,22 @@ const Navbar = () => {
101121
{item.name}
102122
</Link>
103123
))}
124+
125+
{/* Divider */}
126+
<div className="my-2 border-t border-gray-200"></div>
127+
128+
{/* Secondary Navigation */}
129+
{secondaryNavItems.map((item) => (
130+
<Link
131+
key={item.name}
132+
to={item.path}
133+
className="text-gray-700 hover:text-blue-600 block px-3 py-2 rounded-md text-base font-medium"
134+
onClick={() => setIsOpen(false)}
135+
>
136+
{item.name}
137+
</Link>
138+
))}
139+
104140
{isAuthenticated ? (
105141
<button
106142
onClick={() => {

src/components/SEO.tsx

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import React from 'react';
2+
import { Helmet } from 'react-helmet-async';
3+
4+
interface SEOProps {
5+
title: string;
6+
description: string;
7+
canonical?: string;
8+
}
9+
10+
const SEO: React.FC<SEOProps> = ({ title, description, canonical }) => {
11+
const baseUrl = 'https://kanz.ai';
12+
const fullTitle = `${title} | Kanz.ai`;
13+
14+
return (
15+
<Helmet>
16+
<title>{fullTitle}</title>
17+
<meta name="description" content={description} />
18+
{canonical && <link rel="canonical" href={`${baseUrl}${canonical}`} />}
19+
<meta property="og:title" content={fullTitle} />
20+
<meta property="og:description" content={description} />
21+
<meta property="og:type" content="website" />
22+
{canonical && <meta property="og:url" content={`${baseUrl}${canonical}`} />}
23+
<meta name="twitter:card" content="summary_large_image" />
24+
<meta name="twitter:title" content={fullTitle} />
25+
<meta name="twitter:description" content={description} />
26+
</Helmet>
27+
);
28+
};
29+
30+
export default SEO;

0 commit comments

Comments
 (0)