30 changed files with 2024 additions and 451 deletions
-
195src/app/intro/intro-client.tsx
-
262src/app/questions-list/sections-request.tsx
-
57src/components/Componentes/navigation-button.tsx
-
273src/components/Componentes/terms-sheet.tsx
-
42src/components/Componentes/ui-icon.tsx
-
1src/icons.tsx
-
69src/translations/locales/ar.json
-
69src/translations/locales/az.json
-
69src/translations/locales/bn.json
-
69src/translations/locales/da.json
-
69src/translations/locales/de.json
-
68src/translations/locales/en.json
-
69src/translations/locales/es.json
-
68src/translations/locales/fa.json
-
69src/translations/locales/fr.json
-
71src/translations/locales/gu.json
-
69src/translations/locales/ha.json
-
68src/translations/locales/he.json
-
69src/translations/locales/hi.json
-
68src/translations/locales/id.json
-
68src/translations/locales/ks.json
-
68src/translations/locales/pt.json
-
68src/translations/locales/ru.json
-
68src/translations/locales/sw.json
-
68src/translations/locales/tg.json
-
68src/translations/locales/tr.json
-
68src/translations/locales/ul.json
-
68src/translations/locales/ur.json
-
68src/translations/locales/uz.json
-
69src/translations/locales/zh.json
@ -0,0 +1,273 @@ |
|||||
|
"use client"; |
||||
|
|
||||
|
import { Ic } from "@/icons"; |
||||
|
import Button from "@/components/Componentes/button"; |
||||
|
import InformationSheet from "@/components/Componentes/information-sheet"; |
||||
|
import { useI18n } from "@/translations/provider"; |
||||
|
|
||||
|
export type TermItem = { |
||||
|
title: string; |
||||
|
description: string; |
||||
|
}; |
||||
|
|
||||
|
export type TermSection = { |
||||
|
category: string; |
||||
|
items: TermItem[]; |
||||
|
}; |
||||
|
|
||||
|
export const TERMS_SECTIONS: TermSection[] = [ |
||||
|
{ |
||||
|
category: "1. Acceptance of Rules and Platform Goal", |
||||
|
items: [ |
||||
|
{ |
||||
|
title: "Full Acceptance of Agreement", |
||||
|
description: |
||||
|
"Registration and use of any part of the application means reading and fully accepting all rules. If you do not agree, you must refrain from further use.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Changes and Updates", |
||||
|
description: |
||||
|
"The application reserves the right to edit the rules when necessary, and your continued use will constitute acceptance of the new changes.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Exclusive Goal of the Application", |
||||
|
description: |
||||
|
"This platform is designed solely for matchmaking and permanent marriage. Use with the purpose of dating, temporary relationships, or entertainment is prohibited.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Age and Legal Capacity Requirement", |
||||
|
description: |
||||
|
"Use of services is allowed only for individuals over 18 years of age who have the legal and religious capacity for marriage.", |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
category: "2. User Account, Security, and Authentication", |
||||
|
items: [ |
||||
|
{ |
||||
|
title: "Accuracy of Personal Information", |
||||
|
description: |
||||
|
"The user is obliged to enter all identity, occupational, educational, and marital status information completely accurately and honestly.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Prohibition of Fake Accounts", |
||||
|
description: |
||||
|
"Creating an account using the identity, name, mobile number, or photos of others, as well as creating multiple user accounts, is a serious violation.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Maintaining Account Security", |
||||
|
description: |
||||
|
"The responsibility for maintaining the confidentiality of the password and login code lies with the user, and transferring or renting the account to another person is prohibited.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Introducing a Trusted Person", |
||||
|
description: |
||||
|
"To enhance security, users can introduce a trusted family member. This information is used strictly for security and urgent cases.", |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
category: "3. Communications, Ethics, and User Behavior", |
||||
|
items: [ |
||||
|
{ |
||||
|
title: "Mutual Respect", |
||||
|
description: |
||||
|
"Conversations must be ethical and purposeful. Sending offensive, sexual, obscene, threatening, or harassing messages is strictly prohibited.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Respecting Others' Privacy", |
||||
|
description: |
||||
|
"Saving, sending, or publishing screenshots of conversations and photos of other users outside the application is a violation of privacy.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Absolute Prohibition of Financial Requests", |
||||
|
description: |
||||
|
"Requesting money, loans, gift cards, cryptocurrency, or any financial benefit from other users under any pretext is prohibited.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Prohibition of Commercial Activity", |
||||
|
description: |
||||
|
"Any advertising, marketing, selling goods, or raising capital within the application environment is considered a violation.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Respectful End of Conversation", |
||||
|
description: |
||||
|
"If the other party does not wish to continue the communication, the user is obliged to respect their decision and refrain from pursuing or causing harassment.", |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
category: "4. Privacy, Data, and Intellectual Property", |
||||
|
items: [ |
||||
|
{ |
||||
|
title: "Personal Information Protection", |
||||
|
description: |
||||
|
"The application is committed to protecting your sensitive information in accordance with the privacy policy and will not sell it to third parties without permission.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Public Profile Display", |
||||
|
description: |
||||
|
"By completing the profile, the user consents to their public information being displayed to other qualified users for service delivery.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Account Deletion Rules", |
||||
|
description: |
||||
|
"Upon requesting account deletion, your information is removed from public view, but necessary data for legal and security requirements will remain archived in the system.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Intellectual Property Rights", |
||||
|
description: |
||||
|
"All rights to software codes, design, database, and brand name belong to the platform, and any copying or scraping is prohibited.", |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
category: "5. Financial Terms and Subscriptions", |
||||
|
items: [ |
||||
|
{ |
||||
|
title: "Nature of Paid Services", |
||||
|
description: |
||||
|
"Payment is solely for using premium features and software infrastructure and does not provide any guarantee for marriage or finding a spouse.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Refund Policy", |
||||
|
description: |
||||
|
"Paid fees are non-refundable, except in definitive cases of system technical errors.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Disclaimer for External Transactions", |
||||
|
description: |
||||
|
"The application holds no responsibility for financial transactions between users or outside the application's official payment gateway.", |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
category: "6. Monitoring, Violations, and Legal Prosecution", |
||||
|
items: [ |
||||
|
{ |
||||
|
title: "Confidential Reporting", |
||||
|
description: |
||||
|
"Users must report violations, suspicious behavior, or financial requests through the report violation option. The identity of the reporter remains confidential.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Authorities of Application Moderators", |
||||
|
description: |
||||
|
"The platform reserves the right to block, restrict, or suspend the user account without prior notice if any violation or breach of rules is detected.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Cooperation with Law Enforcement", |
||||
|
description: |
||||
|
"In the event of cybercrimes, fraud, or threats, the application will refer the necessary information to judicial and law enforcement authorities.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Dispute Resolution", |
||||
|
description: |
||||
|
"Any legal dispute must first be pursued through application support. If no agreement is reached, the competent authority will be the courts of the city where the application is registered.", |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
category: "7. Disclaimer and In-Person Meetings", |
||||
|
items: [ |
||||
|
{ |
||||
|
title: "Role of the Application", |
||||
|
description: |
||||
|
"This platform is only a facilitator for initial communication and does not replace family background research, counseling, and pre-marital investigations.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Responsibility for Accuracy of Claims", |
||||
|
description: |
||||
|
"Accurate verification of users' claims regarding their financial, occupational, marital, and health status is the responsibility of the user and their family.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Responsibility for In-Person Meetings", |
||||
|
description: |
||||
|
"Planning and deciding to meet in person is entirely the responsibility of the users, and the application assumes no liability for any incidents or potential damages.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Safety Recommendations in Meetings", |
||||
|
description: |
||||
|
"It is strongly recommended that initial meetings be held in crowded public places, and that a family member or a trusted person be kept informed.", |
||||
|
}, |
||||
|
{ |
||||
|
title: "Force Majeure Conditions", |
||||
|
description: |
||||
|
"In the event of occurrences beyond control, such as a nationwide internet outage, natural disasters, or sanctions, the application will have no liability for temporary service outages.", |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
export type TermsSheetProps = { |
||||
|
isOpen?: boolean; |
||||
|
onClose?: () => void; |
||||
|
}; |
||||
|
|
||||
|
export function TermsSheet({ isOpen, onClose }: TermsSheetProps) { |
||||
|
const { dictionary: t } = useI18n(); |
||||
|
|
||||
|
const termsTitle = t["terms & conditions"] || "Terms & Conditions"; |
||||
|
const gotItLabel = t["Got it"] || "Got it"; |
||||
|
|
||||
|
return ( |
||||
|
<InformationSheet |
||||
|
isOpen={Boolean(isOpen)} |
||||
|
icon={null} |
||||
|
showCloseButton={false} |
||||
|
title={({ close }) => ( |
||||
|
<span className="flex w-full items-start justify-between gap-3 text-start"> |
||||
|
<span className="text-[14px] leading-5 font-bold tracking-normal text-[#8B8B8B]"> |
||||
|
{termsTitle} |
||||
|
</span> |
||||
|
<button |
||||
|
type="button" |
||||
|
aria-label={t["Close terms and conditions"] || "Close terms and conditions"} |
||||
|
className="-mt-0.5 flex size-6 shrink-0 items-center justify-center text-[#8F8F8F] cursor-pointer" |
||||
|
onClick={close} |
||||
|
> |
||||
|
<Ic name="close" aria-hidden="true" className="size-5" /> |
||||
|
</button> |
||||
|
</span> |
||||
|
)} |
||||
|
description={ |
||||
|
<div className="h-[56dvh] max-h-[60dvh] space-y-4 overflow-y-auto pr-1 text-start text-[12px] leading-[1.45] text-[#4C4C4C]"> |
||||
|
{TERMS_SECTIONS.map((section, idx) => ( |
||||
|
<div key={idx} className="space-y-2"> |
||||
|
<h4 className="text-[13px] font-bold text-[#F14B46]"> |
||||
|
{(t as Record<string, string>)[section.category] || section.category} |
||||
|
</h4> |
||||
|
<ul className="space-y-2 list-disc ps-4 marker:text-[#2B2B2B]"> |
||||
|
{section.items.map((item, itemIdx) => { |
||||
|
const translatedTitle = |
||||
|
(t as Record<string, string>)[item.title] || item.title; |
||||
|
const translatedDesc = |
||||
|
(t as Record<string, string>)[item.description] || |
||||
|
item.description; |
||||
|
return ( |
||||
|
<li key={itemIdx} className="leading-relaxed"> |
||||
|
<span className="font-bold text-[#262626]"> |
||||
|
{translatedTitle}:{" "} |
||||
|
</span> |
||||
|
<span className="font-normal text-[#525252]"> |
||||
|
{translatedDesc} |
||||
|
</span> |
||||
|
</li> |
||||
|
); |
||||
|
})} |
||||
|
</ul> |
||||
|
</div> |
||||
|
))} |
||||
|
</div> |
||||
|
} |
||||
|
buttons={({ close }) => ( |
||||
|
<Button className="rounded-[8px]" onClick={close}> |
||||
|
{gotItLabel} |
||||
|
</Button> |
||||
|
)} |
||||
|
onClose={onClose} |
||||
|
className="text-start" |
||||
|
/> |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
export default TermsSheet; |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue