privacy-policy terms&conditions refuncpolicy cookies page added

This commit is contained in:
2025-12-10 16:48:22 +05:30
parent 670db0c07a
commit e56ca0537c
13 changed files with 1062 additions and 698 deletions

View File

@@ -9,6 +9,37 @@ import {
Instagram,
MessageCircle,
} from "lucide-react";
import Link from "next/link";
const footerLinks = [
{
title: "Product",
items: [
{ label: "Features", url: "/features" },
{ label: "HRMS", url: "/hrms" },
{ label: "ATS", url: "/ats" },
{ label: "CRM", url: "/crm" },
],
},
{
title: "Company",
items: [
{ label: "About Us", url: "/about" },
{ label: "Careers", url: "/careers" },
{ label: "Blog", url: "/blog" },
{ label: "Contact", url: "/contact" },
],
},
{
title: "Support",
items: [
{ label: "Privacy Policy", url: "/privacy-policy" },
{ label: "Terms of Service", url: "/terms-and-conditions" },
{ label: "Refund Policy", url: "/refund-policy" },
{ label: "GDPR & Cookies", url: "/gdpr-cookies" },
],
},
];
const Footer = () => {
return (
@@ -17,14 +48,12 @@ const Footer = () => {
<div className="absolute inset-0 opacity-5 bg-gradient-to-br from-purple-600 to-pink-600 blur-3xl" />
<div className="relative max-w-7xl mx-auto px-6 flex flex-wrap justify-between gap-10">
{/* Brand (Logo Update Section) */}
<motion.div
whileHover={{ scale: 1.03 }}
className="min-w-[230px] flex-1"
>
<div className="flex items-center mb-4 gap-3">
{/* White background for logo */}
<div className="w-50 h-12 bg-white rounded-xl flex items-center justify-center shadow-lg">
{/* Replace this image with your actual logo */}
@@ -43,36 +72,43 @@ const Footer = () => {
{/* Social Icons */}
<div className="flex gap-4 mt-6">
{[Facebook, Instagram, MessageCircle, Twitter, Linkedin, Github].map(
(Icon, idx) => (
<Icon
key={idx}
className="w-6 h-6 hover:text-white hover:scale-110 transition cursor-pointer"
/>
)
)}
{[
Facebook,
Instagram,
MessageCircle,
Twitter,
Linkedin,
Github,
].map((Icon, idx) => (
<Icon
key={idx}
className="w-6 h-6 hover:text-white hover:scale-110 transition cursor-pointer"
/>
))}
</div>
</motion.div>
{/* Footer Links */}
{[
["Product", ["Features", "Solutions", "Pricing", "Security"]],
["Company", ["About Us", "Careers", "Blog", "Contact"]],
["Support", ["FAQ", "Help Center", "Guides"]],
].map((col, idx) => (
{/* Footer Links */}
{footerLinks.map((col, idx) => (
<motion.div
key={idx}
whileHover={{ scale: 1.02 }}
className="min-w-[140px]"
>
<h4 className="font-semibold text-white text-lg mb-4">{col[0]}</h4>
<h4 className="font-semibold text-white text-lg mb-4">
{col.title}
</h4>
<ul className="space-y-3">
{(col[1] as string[]).map((item, i) => (
{col.items.map((item, i) => (
<li
key={i}
className="hover:text-white cursor-pointer text-sm opacity-80 hover:opacity-100 transition"
className="text-sm opacity-80 hover:opacity-100 transition"
>
{item}
<Link href={item.url} className="hover:text-white">
{item.label}
</Link>
</li>
))}
</ul>
@@ -88,4 +124,4 @@ const Footer = () => {
);
};
export default Footer;
export default Footer;

View File

@@ -31,7 +31,7 @@ export default function AboutUs() {
<div className="min-h-screen bg-gray-50 text-gray-900">
{/* HERO */}
<section className="py-28 bg-gradient-to-r from-blue-600 to-purple-600 text-white text-center">
<section className="py-28 bg-gradient-to-b from-white to-blue-50 text-center">
<motion.h1
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
@@ -77,7 +77,8 @@ export default function AboutUs() {
</motion.div>
</section>
{/* COMPANY STORY TIMELINE */}
{/* COMPANY STORY TIMELINE }
<section className="py-24 bg-white">
<div className="text-center mb-16">
<h2 className="text-4xl font-bold text-gray-900 mb-4">Our Journey</h2>
@@ -112,9 +113,9 @@ export default function AboutUs() {
</motion.div>
))}
</div>
</section>
</section> */}
{/* LEADERSHIP SECTION */}
{/* LEADERSHIP SECTION }
<section className="py-24 max-w-7xl mx-auto px-6">
<div className="text-center mb-12">
<h2 className="text-4xl font-bold mb-3">Leadership Team</h2>
@@ -149,7 +150,7 @@ export default function AboutUs() {
</motion.div>
))}
</div>
</section>
</section> */}
{/* CTA */}
<section className="py-24 bg-gradient-to-r from-purple-600 to-blue-600 text-center text-white">

View File

@@ -41,7 +41,7 @@ export default function BlogPage() {
return (
<main className="bg-white">
{/* HERO */}
<section className="py-24 px-6 text-center bg-gradient-to-b from-purple-600 via-blue-600 to-indigo-700 text-white">
<section className="py-24 px-6 text-center bg-gradient-to-b from-white to-blue-50">
<motion.h1
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}

View File

@@ -35,7 +35,7 @@ export default function Careers() {
<div className="min-h-screen bg-gray-50 text-gray-900">
{/* HERO */}
<section className="py-24 text-center bg-gradient-to-r from-blue-600 to-purple-600 text-white">
<section className="py-24 text-center bg-gradient-to-b from-white to-blue-50">
<motion.h1
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}

View File

@@ -0,0 +1,153 @@
"use client";
import { motion } from "framer-motion";
import { Globe, ShieldCheck, Cookie, FileText } from "lucide-react";
export default function GDPRCookiesPage() {
return (
<div className="bg-gray-50">
{/* HEADER */}
<section className="bg-sky-200 text-gray-900 py-20 px-6">
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
className="max-w-5xl mx-auto text-center"
>
<div className="w-20 h-20 mx-auto mb-6 flex items-center justify-center bg-white/30 backdrop-blur-xl rounded-3xl shadow-2xl">
<ShieldCheck className="w-10 h-10" />
</div>
<h1 className="text-4xl md:text-6xl font-bold mb-4">
GDPR & Cookies Policy
</h1>
<p className="text-lg md:text-xl max-w-3xl mx-auto">
Transparent data processing and privacy practices aligned with GDPR and global standards.
</p>
</motion.div>
</section>
{/* MAIN CONTENT */}
<section className="max-w-5xl mx-auto py-16 px-6 space-y-16">
{/* GDPR MAIN SECTION */}
<PolicySection
icon={<Globe className="w-8 h-8 text-emerald-600" />}
title="GDPR & Data Processing"
content={
<p>
<strong>Controller vs Processor:</strong> For recruitment data uploaded by customers
(applicant CVs, interview notes, candidate profiles), Winixco acts as a{" "}
<strong>Data Processor</strong>, while the subscribing customer is the{" "}
<strong>Data Controller</strong>. For user account data collected directly by Winixco
(such as admin accounts), Winixco acts as the <strong>Data Controller</strong>.
</p>
}
/>
{/* DPA SECTION */}
<PolicySection
icon={<FileText className="w-8 h-8 text-emerald-700" />}
title="Data Processing Addendum (DPA)"
content={
<>
<p className="mb-4">
We provide a DPA upon request or include it in our subscription agreements. The DPA covers:
</p>
<ul className="list-disc ml-6 space-y-2 leading-relaxed">
<li>Permitted processing activities (hosting, storage, backups, customer support).</li>
<li>Security measures including encryption, access controls, and logging.</li>
<li>Sub-processor list and advance notification of changes.</li>
<li>Support for data subject rights and data deletion/return upon contract termination.</li>
</ul>
</>
}
/>
{/* GDPR RIGHTS SECTION */}
<PolicySection
icon={<ShieldCheck className="w-8 h-8 text-green-700" />}
title="GDPR Rights & Assistance"
content={
<p>
We help customers fulfill GDPR data subject requests (access, correction, deletion,
portability) for data processed on their behalf. Customers may contact{" "}
<a href="mailto:support@winixco.com" className="text-blue-600 underline">
support@winixco.com
</a>{" "}
with request details and proof of identity where applicable.
</p>
}
/>
{/* INTERNATIONAL TRANSFERS */}
<PolicySection
icon={<Globe className="w-8 h-8 text-emerald-800" />}
title="Standard Contractual Clauses & International Transfers"
content={
<p>
For transfers of personal data from the EU to countries without adequacy decisions,
we rely on legally recognized safeguards such as Standard Contractual Clauses (SCCs).
Customers may request copies of applicable safeguards.
</p>
}
/>
{/* COOKIES SECTION */}
<PolicySection
icon={<Cookie className="w-8 h-8 text-amber-600" />}
title="Cookies & Tracking"
content={
<>
<p className="mb-4">
We use cookies and similar technologies to operate and secure the service, authenticate
users, remember preferences, and perform analytics. Cookie preferences can be managed via
browser settings or platform tools. Cookie categories include:
</p>
<ul className="list-disc ml-6 space-y-2 leading-relaxed">
<li>
<strong>Essential:</strong> Required for authentication and platform functionality.
</li>
<li>
<strong>Performance & Analytics:</strong> Helps us understand usage and improve features.
</li>
<li>
<strong>Marketing:</strong> Used only with user consent to deliver updates and product information.
</li>
</ul>
</>
}
/>
</section>
</div>
);
}
/* ---------------------- Reusable Component ---------------------- */
function PolicySection({
icon,
title,
content,
}: {
icon?: React.ReactNode;
title: string;
content: React.ReactNode;
}) {
return (
<motion.div
initial={{ opacity: 0, y: 15 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
className="bg-white rounded-3xl p-8 md:p-10 shadow-lg border border-gray-200"
>
{icon && <div className="mb-4">{icon}</div>}
<h2 className="text-2xl md:text-3xl font-bold text-gray-900 mb-4">
{title}
</h2>
<div className="text-gray-700 leading-relaxed">{content}</div>
</motion.div>
);
}

View File

@@ -0,0 +1,229 @@
"use client";
import { motion } from "framer-motion";
import { Shield, Lock, Globe, UserCheck, FileText } from "lucide-react";
export default function PrivacyPolicyPage() {
return (
<div className="bg-gray-50">
{/* HEADER SECTION */}
<section className="bg-sky-200 text-gray-900 py-20 px-6">
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
className="max-w-5xl mx-auto text-center"
>
<div className="w-20 h-20 mx-auto mb-6 flex items-center justify-center bg-white/20 backdrop-blur-xl rounded-3xl shadow-2xl">
<Shield className="w-10 h-10" />
</div>
<h1 className="text-4xl md:text-6xl font-bold mb-4">
Privacy Policy
</h1>
<p className="text-lg md:text-xl max-w-3xl mx-auto">
Your trust matters. We protect your data with top-tier security,
transparency, and compliance.
</p>
</motion.div>
</section>
{/* MAIN CONTENT */}
<section className="max-w-5xl mx-auto py-16 px-6 space-y-16">
{/* INTRO */}
<PolicySection
icon={<FileText className="w-8 h-8 text-blue-600" />}
title="Privacy Policy"
content={
<p>
This Privacy Policy explains how <strong>Winixco</strong> collects,
uses, discloses, and protects personal data of users of our
AI-powered ATS and SaaS platform worldwide.
</p>
}
/>
{/* 1. Data We Collect */}
<PolicySection
icon={<UserCheck className="w-8 h-8 text-purple-600" />}
title="1. Data We Collect"
content={
<ul className="list-disc ml-6 space-y-2 leading-relaxed">
<li>
<strong>Account & Contact Data:</strong> name, company, business
email, phone number, billing address, job title.
</li>
<li>
<strong>Credentials:</strong> secure login details (hashed).
</li>
<li>
<strong>Payment & Billing:</strong> payment identifiers processed
via PCI-compliant providers.
</li>
<li>
<strong>Usage & Analytics:</strong> logs, session times, IP,
device/browser details, audit logs.
</li>
<li>
<strong>Recruitment Data (customer uploaded):</strong> resumes,
candidate info, interview details, assessments.
</li>
<li>
<strong>Support & Communications:</strong> emails, chat
transcripts, survey responses.
</li>
</ul>
}
/>
{/* 2. How We Use Data */}
<PolicySection
icon={<Shield className="w-8 h-8 text-blue-700" />}
title="2. How We Use Your Data"
content={
<ul className="list-disc ml-6 space-y-2">
<li>Provide and operate the Service.</li>
<li>Process subscriptions, billing & payments.</li>
<li>Manage accounts and hiring workflows.</li>
<li>Improve features and AI models (anonymized where possible).</li>
<li>Prevent fraud, abuse & security incidents.</li>
<li>Comply with legal obligations.</li>
</ul>
}
/>
{/* 3. Legal Bases */}
<PolicySection
icon={<Lock className="w-8 h-8 text-indigo-600" />}
title="3. Legal Bases for Processing"
content={
<ul className="list-disc ml-6 space-y-2">
<li>
<strong>Contractual necessity</strong> required to provide the
Service.
</li>
<li>
<strong>Legitimate interests</strong> security, fraud
prevention, product improvement.
</li>
<li>
<strong>Consent</strong> marketing communication.
</li>
</ul>
}
/>
{/* 4. Sharing */}
<PolicySection
icon={<Globe className="w-8 h-8 text-blue-500" />}
title="4. Sharing & Disclosures"
content={
<ul className="list-disc ml-6 space-y-2">
<li>
Shared with trusted service providers (payment, hosting,
analytics, email, identity).
</li>
<li>
Applicant data processed only under customer instruction.
</li>
<li>
Legal disclosures only when required by law.
</li>
</ul>
}
/>
{/* 59 Remaining Sections */}
<PolicySection
title="5. Data Retention"
content={
<p>
We retain data only as long as necessary for service delivery or
legal compliance. Customers may export or request deletion anytime.
</p>
}
/>
<PolicySection
title="6. Security"
content={
<p>
We apply encryption, access controls, monitoring, and best-practice
safeguards. In case of a data incident, affected users and
regulators will be notified as required.
</p>
}
/>
<PolicySection
title="7. International Transfers"
content={
<p>
Data may be transferred globally. We use legal safeguards such as
Standard Contractual Clauses for international transfers.
</p>
}
/>
<PolicySection
title="8. Your Rights & Controls"
content={
<ul className="list-disc ml-6 space-y-2">
<li>Access, rectify, delete or export your data.</li>
<li>Restrict or object to processing.</li>
<li>Withdraw consent for marketing.</li>
<li>
Contact:{" "}
<a
href="mailto:support@winixco.com"
className="text-blue-600 underline"
>
support@winixco.com
</a>
</li>
</ul>
}
/>
<PolicySection
title="9. Children"
content={
<p>
Our service is not intended for children under 16. Contact us if
you believe a child has provided data.
</p>
}
/>
</section>
</div>
);
}
/* ---------------------- REUSABLE SECTION COMPONENT ---------------------- */
function PolicySection({
icon,
title,
content,
}: {
icon?: React.ReactNode;
title: string;
content: React.ReactNode;
}) {
return (
<motion.div
initial={{ opacity: 0, y: 15 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
className="bg-white rounded-3xl p-8 md:p-10 shadow-lg border border-gray-200"
>
{icon && <div className="mb-4">{icon}</div>}
<h2 className="text-2xl md:text-3xl font-bold text-gray-900 mb-4">
{title}
</h2>
<div className="text-gray-700 leading-relaxed">{content}</div>
</motion.div>
);
}

View File

@@ -0,0 +1,150 @@
"use client";
import { motion } from "framer-motion";
import { RotateCcw, FileWarning, CreditCard, Mail, Shield } from "lucide-react";
export default function RefundCancellationPage() {
return (
<div className="bg-gray-50">
{/* HEADER SECTION */}
<section className="bg-sky-200 text-gray-900 py-20 px-6">
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
className="max-w-5xl mx-auto text-center"
>
<div className="w-20 h-20 mx-auto mb-6 flex items-center justify-center bg-white/30 backdrop-blur-xl rounded-3xl shadow-2xl">
<RotateCcw className="w-10 h-10" />
</div>
<h1 className="text-4xl md:text-6xl font-bold mb-4">
Refund & Cancellation Policy
</h1>
<p className="text-lg md:text-xl max-w-3xl mx-auto">
Clear, transparent, and customer-first refund guidelines for all Winixco SaaS users.
</p>
</motion.div>
</section>
{/* MAIN CONTENT */}
<section className="max-w-5xl mx-auto py-16 px-6 space-y-16">
{/* 1. Cancellation */}
<PolicySection
icon={<FileWarning className="w-8 h-8 text-red-600" />}
title="1. Cancellation"
content={
<p>
Customers may cancel subscriptions at any time via the dashboard or by contacting
support. Cancellation takes effect at the end of the current billing period unless
otherwise stated in the plan. No partial-period refunds will be provided except as
specified in this policy.
</p>
}
/>
{/* 2. Refund Eligibility */}
<PolicySection
icon={<Shield className="w-8 h-8 text-rose-700" />}
title="2. Refund Eligibility"
content={
<ul className="list-disc ml-6 space-y-2 leading-relaxed">
<li>
<strong>Technical failure:</strong> If a significant service outage occurs and Winixco
fails to restore service in a reasonable timeframe, partial refunds or credits may be
issued as per SLA.
</li>
<li>
<strong>Duplicate or erroneous charges:</strong> Incorrect or duplicate charges will
be refunded after verification.
</li>
<li>
<strong>Trial-related charges:</strong> If a user is incorrectly charged at the end of
a trial, the charge will be refunded upon timely request.
</li>
</ul>
}
/>
{/* 3. Non-Refundable Items */}
<PolicySection
icon={<CreditCard className="w-8 h-8 text-pink-600" />}
title="3. Non-Refundable Items"
content={
<ul className="list-disc ml-6 space-y-2 leading-relaxed">
<li>Monthly subscription fees</li>
<li>Annual subscription fees once activated</li>
<li>AI credits consumed</li>
<li>Setup charges or onboarding fees</li>
<li>Custom integrations</li>
<li><strong>Cloud Storage charges</strong></li>
</ul>
}
/>
{/* 4. Refund Process */}
<PolicySection
icon={<Mail className="w-8 h-8 text-red-700" />}
title="4. Refund Process"
content={
<ol className="list-decimal ml-6 space-y-3 leading-relaxed">
<li>
Contact{" "}
<a href="mailto:support@winixco.com" className="text-blue-600 underline">
support@winixco.com
</a>{" "}
with subscription or order details.
</li>
<li>We will acknowledge your request within 3 business days and may request documentation.</li>
<li>
If approved, refunds will be processed to the original payment method within 714
business days (processing time varies by provider).
</li>
</ol>
}
/>
{/* 5. Chargebacks */}
<PolicySection
icon={<RotateCcw className="w-8 h-8 text-rose-800" />}
title="5. Chargebacks"
content={
<p>
Initiating a chargeback with your bank may result in temporary account suspension while
we investigate. If a chargeback is found to be invalid, Winixco reserves the right to
reinstate charges and recover outstanding fees.
</p>
}
/>
</section>
</div>
);
}
/* ---------------------- REUSABLE SECTION COMPONENT ---------------------- */
function PolicySection({
icon,
title,
content,
}: {
icon?: React.ReactNode;
title: string;
content: React.ReactNode;
}) {
return (
<motion.div
initial={{ opacity: 0, y: 15 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
className="bg-white rounded-3xl p-8 md:p-10 shadow-lg border border-gray-200"
>
{icon && <div className="mb-4">{icon}</div>}
<h2 className="text-2xl md:text-3xl font-bold text-gray-900 mb-4">
{title}
</h2>
<div className="text-gray-700 leading-relaxed">{content}</div>
</motion.div>
);
}

View File

@@ -0,0 +1,235 @@
"use client";
import { motion } from "framer-motion";
import { FileText, Scale, UserCheck, Wallet, Lock } from "lucide-react";
export default function TermsPage() {
return (
<div className="bg-gray-50">
{/* HEADER SECTION */}
<section className="bg-sky-200 text-gray-900 py-20 px-6">
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
className="max-w-5xl mx-auto text-center"
>
<div className="w-20 h-20 mx-auto mb-6 flex items-center justify-center bg-white/20 backdrop-blur-xl rounded-3xl shadow-2xl">
<Scale className="w-10 h-10" />
</div>
<h1 className="text-4xl md:text-6xl font-bold mb-4">
Terms & Conditions
</h1>
<p className="text-lg md:text-xl max-w-3xl mx-auto">
Please read these Terms carefully before using Winixcos SaaS
platform. By using our service, you agree to these terms.
</p>
</motion.div>
</section>
{/* CONTENT SECTION */}
<section className="max-w-5xl mx-auto py-16 px-6 space-y-16">
{/* INTRO */}
<TermsSection
icon={<FileText className="w-8 h-8 text-blue-600" />}
title="Terms of Service (SaaS)"
content={
<p>
<strong>Scope.</strong> These Terms govern your use of Winixcos SaaS
platform, including web application, APIs, and related services.
</p>
}
/>
{/* 1. Account Registration */}
<TermsSection
icon={<UserCheck className="w-8 h-8 text-purple-600" />}
title="1. Account Registration"
content={
<p>
Customers must provide accurate information and keep account
credentials secure. You are liable for all activity under your
account.
</p>
}
/>
{/* 2. Subscriptions & Billing */}
<TermsSection
icon={<Wallet className="w-8 h-8 text-blue-700" />}
title="2. Subscriptions & Billing"
content={
<ul className="list-disc ml-6 space-y-2 leading-relaxed">
<li>
Subscriptions are offered on monthly or annual plans. Billing
cycles begin on activation date.
</li>
<li>
By subscribing you authorize Winixco (and our payment processors)
to charge the payment method you provide for recurring fees until
subscription cancellation.
</li>
<li>
We may offer trial periods trial usage and limits will be
disclosed. At the end of a trial, charges begin automatically
unless cancelled before the trial ends.
</li>
</ul>
}
/>
{/* 3. Non-Refundable Items */}
<TermsSection
icon={<Lock className="w-8 h-8 text-indigo-600" />}
title="3. Non-Refundable Items"
content={
<div>
<p className="mb-4">
The following items are explicitly non-refundable once charged or
consumed:
</p>
<ul className="list-disc ml-6 space-y-2">
<li>Monthly subscription fees</li>
<li>Annual subscription fees once activated</li>
<li>AI credits consumed</li>
<li>Setup or onboarding fees</li>
<li>Custom integrations</li>
<li>
<strong>Cloud Storage charges</strong> (storage for customer data
and backups)
</li>
</ul>
</div>
}
/>
{/* 4. Usage Limits */}
<TermsSection
title="4. Usage Limits & Fair Use"
content={
<p>
Plans may include limits (users, API calls, AI credits, storage).
Excess usage may be billed or throttled. Fraudulent or abusive use
may result in suspension.
</p>
}
/>
{/* 5. Customer Data */}
<TermsSection
title="5. Customer Data & Ownership"
content={
<p>
Customers retain ownership of all uploaded recruitment data.
Winixco processes such data only to provide services. Customers are
responsible for obtaining necessary consents from job applicants
and other data subjects.
</p>
}
/>
{/* 6. Service Levels */}
<TermsSection
title="6. Service Levels & Support"
content={
<p>
We aim for high availability but cannot guarantee uninterrupted
service. SLAs and support response times depend on your subscription
plan.
</p>
}
/>
{/* 7. Intellectual Property */}
<TermsSection
title="7. Intellectual Property"
content={
<p>
Winixco owns the Service, trademarks, and software. Customers
receive a limited license to use the Service during their
subscription.
</p>
}
/>
{/* 8. Confidentiality */}
<TermsSection
title="8. Confidentiality"
content={
<p>
Both parties must protect confidential information of the other and
disclose it only when required to provide the Service or by law.
</p>
}
/>
{/* 9. Limitations */}
<TermsSection
title="9. Limitations of Liability"
content={
<p>
Winixcos total liability will not exceed the fees paid in the 12
months prior to a claim. We are not liable for indirect or
consequential damages.
</p>
}
/>
{/* 10. Termination */}
<TermsSection
title="10. Termination"
content={
<p>
Either party may terminate subscriptions per agreed terms. Customers
may export their data for a limited period after termination. Data
may be deleted after this window.
</p>
}
/>
{/* 11. Governing Law */}
<TermsSection
title="11. Governing Law & Jurisdiction"
content={
<p>
These Terms are governed by the laws of <strong>India</strong>.
Global customers agree to resolve disputes via arbitration in India
or mutually agreed jurisdiction.
</p>
}
/>
</section>
</div>
);
}
/* ---------------------- REUSABLE COMPONENT ---------------------- */
function TermsSection({
icon,
title,
content,
}: {
icon?: React.ReactNode;
title: string;
content: React.ReactNode;
}) {
return (
<motion.div
initial={{ opacity: 0, y: 15 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
className="bg-white rounded-3xl p-8 md:p-10 shadow-lg border border-gray-200"
>
{icon && <div className="mb-4">{icon}</div>}
<h2 className="text-2xl md:text-3xl font-bold text-gray-900 mb-4">
{title}
</h2>
<div className="text-gray-700 leading-relaxed">{content}</div>
</motion.div>
);
}