Skip to content

Commit f300754

Browse files
Merge pull request #146 from ShivanshCoding36/master
[ECWoC] feat: created a resuable footer component, privacy policy, terms and conditions pages
2 parents 650906c + da0f6d9 commit f300754

5 files changed

Lines changed: 161 additions & 1 deletion

File tree

LocalMind-Frontend/src/app/App.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { useState } from 'react'
22
import MainLoader from '../features/Dashboard/V1/Component/Loader/MainLoader'
33
import Navbar from '../shared/component/v1/Navbar'
44
import AppRoutes from './routes/AppRoutes'
5+
import Footer from '../shared/component/v1/Footer'
56

67
const App: React.FC = () => {
78
const [Loader, setLoader] = useState(true)
@@ -16,6 +17,8 @@ const App: React.FC = () => {
1617

1718
{/* All application routes including Chat Page */}
1819
<AppRoutes />
20+
21+
<Footer />
1922
</>
2023
)
2124
}

LocalMind-Frontend/src/app/routes/AppRoutes.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import SignUp from '../../features/Auth/SignUp'
55
import LoginPage from '../../shared/component/v1/LoginPage'
66
import ForgotPwd from '../../shared/component/v1/ForgotPwd'
77
import ResetPassword from '../../shared/component/v1/ResetPassword'
8+
import PrivacyPolicy from './features/Pages/PrivacyPolicy'
9+
import TermsConditions from './features/Pages/TermsConditions'
810

911
const AppRoutes: React.FC = () => {
1012
return (
@@ -17,7 +19,7 @@ const AppRoutes: React.FC = () => {
1719
<Route path="/login" element={<LoginPage />} />
1820
<Route path="/forgot-password" element={<ForgotPassword />} />
1921
<Route path="/reset-password/:token" element={<ResetPassword />} />
20-
22+
2123
{/* Register Page - TODO: Create dedicated RegisterPage component */}
2224
<Route path="/register" element={<LoginPage />} />
2325

@@ -27,6 +29,10 @@ const AppRoutes: React.FC = () => {
2729
{/* Reset Password Page */}
2830
<Route path="/reset-password/:token" element={<ResetPassword />} />
2931

32+
{/* Legal Pages */}
33+
34+
<Route path="/privacy-policy" element={<PrivacyPolicy />} />
35+
<Route path="/terms-conditions" element={<TermsConditions />} />
3036
{/* Chat Page */}
3137
</Routes>
3238
)
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import React from 'react'
2+
const PrivacyPolicy: React.FC = () => {
3+
return (
4+
<div className="flex flex-col min-h-screen">
5+
<div className="flex-grow max-w-3xl mx-auto px-4 py-12">
6+
<h1 className="text-3xl font-bold text-gray-900 mb-6">
7+
Privacy Policy
8+
</h1>
9+
10+
<p className="text-gray-700 mb-4">
11+
At LocalMind, your privacy matters. This Privacy Policy explains what
12+
information we collect, how we use it, and your rights regarding your
13+
personal data.
14+
</p>
15+
16+
<section className="mb-4">
17+
<h2 className="text-xl font-semibold text-gray-800 mb-2">
18+
Information We Collect
19+
</h2>
20+
<p className="text-gray-700 text-sm">
21+
We do not collect, share, or sell personal information. LocalMind
22+
operates locally, on your device, without tracking or analytics.
23+
</p>
24+
</section>
25+
26+
<section className="mb-4">
27+
<h2 className="text-xl font-semibold text-gray-800 mb-2">
28+
Use of Data
29+
</h2>
30+
<p className="text-gray-700 text-sm">
31+
Any data you input is processed locally within the app and is never
32+
sent to external servers unless you explicitly configure integrations.
33+
</p>
34+
</section>
35+
36+
<section className="mb-4">
37+
<h2 className="text-xl font-semibold text-gray-800 mb-2">
38+
Contact Us
39+
</h2>
40+
<p className="text-gray-700 text-sm">
41+
For questions about this policy, email us at support@localmind.dev
42+
</p>
43+
</section>
44+
</div>
45+
46+
</div>
47+
)
48+
}
49+
50+
export default PrivacyPolicy
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import React from 'react'
2+
3+
const TermsConditions: React.FC = () => {
4+
return (
5+
<div className="flex flex-col min-h-screen">
6+
<div className="flex-grow max-w-3xl mx-auto px-4 py-12">
7+
<h1 className="text-3xl font-bold text-gray-900 mb-6">
8+
Terms & Conditions
9+
</h1>
10+
11+
<p className="text-gray-700 mb-4">
12+
These Terms & Conditions govern your use of the LocalMind platform.
13+
By accessing or using LocalMind, you agree to be bound by these terms.
14+
</p>
15+
16+
<section className="mb-4">
17+
<h2 className="text-xl font-semibold text-gray-800 mb-2">
18+
Use License
19+
</h2>
20+
<p className="text-gray-700 text-sm">
21+
You are granted a limited, non-exclusive, non-transferable license to
22+
use LocalMind for personal or internal use only.
23+
</p>
24+
</section>
25+
26+
<section className="mb-4">
27+
<h2 className="text-xl font-semibold text-gray-800 mb-2">
28+
Limitations
29+
</h2>
30+
<p className="text-gray-700 text-sm">
31+
LocalMind is provided “as-is.” We are not liable for any damages
32+
arising from the use of the platform.
33+
</p>
34+
</section>
35+
36+
<section className="mb-4">
37+
<h2 className="text-xl font-semibold text-gray-800 mb-2">
38+
Governing Law
39+
</h2>
40+
<p className="text-gray-700 text-sm">
41+
These Terms are governed by the laws of the applicable jurisdiction
42+
where LocalMind is operated.
43+
</p>
44+
</section>
45+
</div>
46+
47+
</div>
48+
)
49+
}
50+
51+
export default TermsConditions
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import React from 'react'
2+
import { Link } from 'react-router-dom'
3+
4+
const Footer: React.FC = () => {
5+
const currentYear = new Date().getFullYear()
6+
7+
return (
8+
<footer className="bg-gray-900 text-white py-8 px-4 md:px-12">
9+
<div className="max-w-7xl mx-auto grid grid-cols-1 md:grid-cols-3 gap-6">
10+
{/* Brand + Description */}
11+
<div>
12+
<h3 className="text-xl font-bold">LocalMind</h3>
13+
<p className="mt-2 text-sm text-gray-300">
14+
Your Data. Your AI. No Compromises.
15+
</p>
16+
</div>
17+
18+
{/* Navigation Links */}
19+
<div className="flex flex-col space-y-2 text-sm">
20+
<Link to="/" className="hover:underline">
21+
Home
22+
</Link>
23+
<Link to="/privacy-policy" className="hover:underline">
24+
Privacy Policy
25+
</Link>
26+
<Link to="/terms-conditions" className="hover:underline">
27+
Terms & Conditions
28+
</Link>
29+
<Link to="/docs" className="hover:underline">
30+
Docs
31+
</Link>
32+
</div>
33+
34+
{/* Social / Info */}
35+
<div className="text-sm text-gray-300">
36+
<p>Built with ❤️ by NexGenStudioDev</p>
37+
<p className="mt-1">No tracking. No data capture.</p>
38+
</div>
39+
</div>
40+
41+
<hr className="border-gray-800 my-6" />
42+
43+
<p className="text-center text-xs text-gray-500">
44+
&copy; {currentYear} LocalMind. All rights reserved.
45+
</p>
46+
</footer>
47+
)
48+
}
49+
50+
export default Footer

0 commit comments

Comments
 (0)