diff --git a/src/App.jsx b/src/App.jsx index 94f8d27..a23d6b5 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -15,6 +15,8 @@ import GovernancePage from './pages/GovernancePage' import SettingsPage from './pages/SettingsPage' import Footer from './components/layout/Footer' import Support from './pages/Support' +import TermsPage from './pages/TermsPage' +import PrivacyPage from './pages/PrivacyPage' function Layout({ children }) { return ( @@ -40,7 +42,9 @@ function AppContent() { } /> } /> } /> - } /> + } /> + } /> + } /> } /> diff --git a/src/components/layout/Footer.jsx b/src/components/layout/Footer.jsx index 4b69ed1..69008bd 100644 --- a/src/components/layout/Footer.jsx +++ b/src/components/layout/Footer.jsx @@ -9,8 +9,7 @@ import { import { HiOutlineMail } from "react-icons/hi"; import Logo from "../../assests/og-logo.svg?react"; import { useTheme } from "../../context/ThemeContext"; -import { BsHeart, BsHeartFill } from "react-icons/bs"; -import { color } from "d3"; +import { BsHeartFill } from "react-icons/bs"; const footerLinks = [ { @@ -31,7 +30,7 @@ const footerLinks = [ }, { label: "Support Us", - href:"/support-us" + href: "/support-us" } ]; @@ -106,24 +105,49 @@ export default function Footer() { aria-label="Footer Navigation" className="flex flex-wrap items-center gap-x-6 gap-y-3 justify-center" > - {footerLinks.map((item) => ( - { - e.currentTarget.style.color = "var(--accent)"; - }} - onMouseLeave={(e) => { - e.currentTarget.style.color = "var(--text2)"; - }} - > - {item.label} - - ))} + {footerLinks.map((item) => { + const isExternal = item.href.startsWith("http") || item.href.startsWith("mailto:"); + const linkStyle = { + color: "var(--text2)", + transition: "color 0.2s ease", + }; + + if (isExternal) { + return ( + { + e.currentTarget.style.color = "var(--accent)"; + }} + onMouseLeave={(e) => { + e.currentTarget.style.color = "var(--text2)"; + }} + > + {item.label} + + ); + } + + return ( + { + e.currentTarget.style.color = "var(--accent)"; + }} + onMouseLeave={(e) => { + e.currentTarget.style.color = "var(--text2)"; + }} + > + {item.label} + + ); + })} {/* SOCIAL LINKS */} diff --git a/src/pages/PrivacyPage.jsx b/src/pages/PrivacyPage.jsx new file mode 100644 index 0000000..c30c345 --- /dev/null +++ b/src/pages/PrivacyPage.jsx @@ -0,0 +1,70 @@ +import React from 'react' +import { Link } from 'react-router-dom' +import { FiArrowLeft, FiShield } from 'react-icons/fi' +import { C, PageTitle } from '../components/UI' + +export default function PrivacyPage() { + return ( +
+
+ + Back to Home + +
+ + + +
+
+
+ +

1. Zero Server-Side Storage

+
+

+ OrgExplorer is a 100% client-side application. There is no backend server, tracking database, or third-party analytics telemetry. All data processing occurs locally within your browser. +

+
+ +
+

2. Personal Access Tokens (PAT)

+

+ When you enter a GitHub Personal Access Token in Settings: +

+
    +
  • It is saved solely in your browser's localStorage.
  • +
  • It is sent directly to https://api.github.com in the Authorization header for authenticated GitHub requests.
  • +
  • It is never transmitted to any other server, proxy, or logging service.
  • +
  • You can clear or remove it at any time from the Settings page.
  • +
+
+ +
+

3. Local Caching (IndexedDB & LocalStorage)

+

+ To optimize performance and reduce GitHub API rate limit consumption, query responses are cached locally on your device in IndexedDB (with a 1-hour expiration) and recent searches are kept in localStorage. You can clear this cache anytime in Settings. +

+
+ +
+

4. Third-Party Services

+

+ OrgExplorer connects to GitHub's public API to retrieve repository, issue, and contributor data. GitHub's privacy practices are governed by GitHub Privacy Statement. +

+
+
+
+ ) +} diff --git a/src/pages/TermsPage.jsx b/src/pages/TermsPage.jsx new file mode 100644 index 0000000..e9dac0d --- /dev/null +++ b/src/pages/TermsPage.jsx @@ -0,0 +1,64 @@ +import React from 'react' +import { Link } from 'react-router-dom' +import { FiArrowLeft, FiFileText } from 'react-icons/fi' +import { C, PageTitle } from '../components/UI' + +export default function TermsPage() { + return ( +
+
+ + Back to Home + +
+ + + +
+
+
+ +

1. Open Source License & Usage

+
+

+ OrgExplorer is an open-source project maintained by AOSSIE under the MIT License. You are free to use, modify, and distribute it in accordance with the terms of the MIT license. +

+
+ +
+

2. GitHub API Compliance

+

+ OrgExplorer interacts directly with the public GitHub REST API from your browser. By using OrgExplorer, you agree to comply with GitHub's Terms of Service and adhere to GitHub API rate limits and acceptable use policies. +

+
+ +
+

3. Personal Access Tokens (PAT)

+

+ If you provide a GitHub Personal Access Token (PAT), it is stored exclusively in your browser's local storage and used solely to authenticate your client-side requests to the GitHub API. OrgExplorer does not transmit, store, or log your credentials on any external server. +

+
+ +
+

4. Disclaimer of Warranty

+

+ OrgExplorer is provided "AS IS", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability. +

+
+
+
+ ) +}