Initial commit: Open sourcing all of the Maple Open Technologies code.

This commit is contained in:
Bartlomiej Mika 2025-12-02 14:33:08 -05:00
commit 755d54a99d
2010 changed files with 448675 additions and 0 deletions

View file

@ -0,0 +1,104 @@
// File Path: web/frontend/src/components/UIX/GDPRFooter/GDPRFooter.jsx
// GDPRFooter Component - Reusable footer with security features and GDPR information
import React, { memo, useMemo } from "react";
import { useUIXTheme } from "../themes/useUIXTheme.jsx";
import {
ShieldCheckIcon,
ServerIcon,
GlobeAltIcon,
HeartIcon,
} from "@heroicons/react/24/outline";
/**
* GDPRFooter Component
* Displays security features and GDPR compliance information
*
* @param {string} className - Additional CSS classes
* @param {string} containerClassName - Additional classes for the outer container
*/
const GDPRFooter = memo(function GDPRFooter({
className = "",
containerClassName = ""
}) {
const { getThemeClasses } = useUIXTheme();
// Memoize theme classes
const themeClasses = useMemo(
() => ({
borderSecondary: getThemeClasses("border-secondary"),
bgCard: getThemeClasses("bg-card"),
}),
[getThemeClasses],
);
return (
<div className={`flex-shrink-0 border-t ${themeClasses.borderSecondary} ${themeClasses.bgCard}/50 backdrop-blur-sm relative z-10 ${containerClassName}`}>
<div className={`max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6 ${className}`}>
{/* Security Features */}
<div className="flex flex-col sm:flex-row items-center justify-center space-y-4 sm:space-y-0 sm:space-x-8 text-sm">
<div className="flex items-center space-x-2">
<ShieldCheckIcon className={`h-4 w-4 ${getThemeClasses("icon-success")}`} />
<span className={getThemeClasses("text-secondary")}>
ChaCha20-Poly1305 Encryption
</span>
</div>
<div className="flex items-center space-x-2">
<ServerIcon className={`h-4 w-4 ${getThemeClasses("icon-info")}`} />
<span className={getThemeClasses("text-secondary")}>Canadian Hosted</span>
</div>
<div className="flex items-center space-x-2">
<GlobeAltIcon className={`h-4 w-4 ${getThemeClasses("icon-privacy")}`} />
<span className={getThemeClasses("text-secondary")}>Privacy First</span>
</div>
<div className="flex items-center space-x-2">
<HeartIcon className={`h-4 w-4 ${getThemeClasses("icon-featured")}`} />
<span className={getThemeClasses("text-secondary")}>Made in Canada</span>
</div>
</div>
{/* GDPR Information */}
<div className={`mt-4 text-center text-xs ${getThemeClasses("text-secondary")} space-y-2`}>
<p>
<strong>Data Controller:</strong> Maple Open Tech Inc. |{" "}
<strong>Location:</strong> Canada (Adequate protection under GDPR Art. 45)
</p>
<p>
<strong>Your GDPR Rights:</strong> Access, rectify, erase, restrict processing, data portability, object to processing, withdraw consent, and lodge a complaint with your supervisory authority.
</p>
<p>
<a
href="/privacy-policy"
className={`${getThemeClasses("link-primary")} underline`}
target="_blank"
rel="noopener noreferrer"
>
Privacy Policy
</a>
{" | "}
<a
href="/terms-of-service"
className={`${getThemeClasses("link-primary")} underline`}
target="_blank"
rel="noopener noreferrer"
>
Terms of Service
</a>
{" | "}
<strong>Contact DPO:</strong>{" "}
<a
href="mailto:privacy@mapleopentech.ca"
className={`${getThemeClasses("link-primary")} underline`}
>
privacy@mapleopentech.ca
</a>
</p>
</div>
</div>
</div>
);
});
GDPRFooter.displayName = "GDPRFooter";
export default GDPRFooter;