This commit is contained in:
+2
-1
@@ -793,5 +793,6 @@
|
|||||||
"of": "/",
|
"of": "/",
|
||||||
"remaining": "remaining"
|
"remaining": "remaining"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"refund-policy": "Refund Policy"
|
||||||
}
|
}
|
||||||
+2
-1
@@ -793,5 +793,6 @@
|
|||||||
"of": "/",
|
"of": "/",
|
||||||
"remaining": "kalan"
|
"remaining": "kalan"
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"refund-policy": "İade Politikası"
|
||||||
}
|
}
|
||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/// <reference types="next" />
|
/// <reference types="next" />
|
||||||
/// <reference types="next/image-types/global" />
|
/// <reference types="next/image-types/global" />
|
||||||
import "./.next/types/routes.d.ts";
|
import "./.next/dev/types/routes.d.ts";
|
||||||
|
|
||||||
// NOTE: This file should not be edited
|
// NOTE: This file should not be edited
|
||||||
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
|
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
|
||||||
|
|||||||
@@ -0,0 +1,150 @@
|
|||||||
|
import { Metadata } from "next";
|
||||||
|
import { getLocale } from "next-intl/server";
|
||||||
|
import LegalPage from "@/components/legal/legal-page";
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const locale = await getLocale();
|
||||||
|
const isTr = locale === "tr";
|
||||||
|
return {
|
||||||
|
title: isTr ? "Gizlilik ve Güvenlik Politikası — iddaai" : "Privacy & Security Policy — iddaai",
|
||||||
|
description: isTr
|
||||||
|
? "iddaai olarak kişisel verilerinizi nasıl işlediğimizi öğrenin."
|
||||||
|
: "Learn how iddaai processes your personal data.",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const contentTR = {
|
||||||
|
title: "Gizlilik ve Güvenlik Politikası",
|
||||||
|
lastUpdated: "Son güncelleme: Mayıs 2026",
|
||||||
|
sections: [
|
||||||
|
{
|
||||||
|
title: "1. Toplanan Veriler",
|
||||||
|
content: [
|
||||||
|
"Hesap oluşturma sırasında: ad, e-posta adresi ve şifre (şifrelenmiş olarak saklanır).",
|
||||||
|
"Kullanım verileri: görüntülenen sayfalar, yapılan analizler, kupon işlemleri.",
|
||||||
|
"Ödeme işlemleri Paddle tarafından gerçekleştirilir; kredi kartı bilgileriniz hiçbir şekilde sunucularımızda saklanmaz.",
|
||||||
|
"Teknik veriler: IP adresi, tarayıcı türü, cihaz bilgisi.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "2. Verilerin Kullanım Amacı",
|
||||||
|
content: [
|
||||||
|
"Hizmet sunumu ve hesap yönetimi.",
|
||||||
|
"Kişiselleştirilmiş analiz ve tahmin deneyimi sağlamak.",
|
||||||
|
"Platform güvenliğini sağlamak ve kötüye kullanımı önlemek.",
|
||||||
|
"Yasal yükümlülükleri yerine getirmek.",
|
||||||
|
"Hizmet güncellemeleri ve önemli bildirimler için e-posta göndermek (pazarlama e-postaları için ayrıca onayınız alınır).",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "3. Veri Paylaşımı",
|
||||||
|
content: [
|
||||||
|
"Kişisel verileriniz üçüncü taraflarla satılmaz veya kiralanmaz.",
|
||||||
|
"Paddle (ödeme işlemcisi) ve gerekli teknik altyapı sağlayıcıları ile yalnızca hizmet sunumu kapsamında paylaşılır.",
|
||||||
|
"Yasal zorunluluk halinde yetkili makamlarla paylaşım yapılabilir.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "4. Çerezler",
|
||||||
|
content: [
|
||||||
|
"Platform, oturum yönetimi ve kullanıcı deneyimini iyileştirmek amacıyla çerezler kullanır.",
|
||||||
|
"Zorunlu çerezler platformun çalışması için gereklidir. Analitik çerezler ise tarayıcı ayarlarınızdan devre dışı bırakılabilir.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "5. Veri Güvenliği",
|
||||||
|
content: [
|
||||||
|
"Verileriniz HTTPS ile şifreli bağlantı üzerinden iletilir.",
|
||||||
|
"Şifreler bcrypt algoritmasıyla hashlenerek saklanır.",
|
||||||
|
"Düzenli güvenlik denetimleri gerçekleştirilir.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "6. Haklarınız",
|
||||||
|
content: [
|
||||||
|
"Verilerinize erişim, düzeltme ve silme hakkına sahipsiniz.",
|
||||||
|
"Pazarlama iletişimlerinden istediğiniz zaman çıkabilirsiniz.",
|
||||||
|
"Talep ve şikayetler için: destek@iddaai.com",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "7. Veri Saklama",
|
||||||
|
content: "Hesabınızı sildiğinizde kişisel verileriniz 30 gün içinde sistemlerimizden kalıcı olarak silinir. Yasal zorunluluk gerektiren veriler ilgili mevzuat süresince saklanır.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "8. İletişim",
|
||||||
|
content: "Gizlilik politikasıyla ilgili sorularınız için: destek@iddaai.com",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
const contentEN = {
|
||||||
|
title: "Privacy & Security Policy",
|
||||||
|
lastUpdated: "Last updated: May 2026",
|
||||||
|
sections: [
|
||||||
|
{
|
||||||
|
title: "1. Data Collected",
|
||||||
|
content: [
|
||||||
|
"During account creation: name, email address, and password (stored encrypted).",
|
||||||
|
"Usage data: pages viewed, analyses performed, coupon transactions.",
|
||||||
|
"Payment transactions are handled by Paddle; your credit card information is never stored on our servers.",
|
||||||
|
"Technical data: IP address, browser type, device information.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "2. Purpose of Data Use",
|
||||||
|
content: [
|
||||||
|
"Service delivery and account management.",
|
||||||
|
"Providing a personalized analysis and prediction experience.",
|
||||||
|
"Ensuring platform security and preventing abuse.",
|
||||||
|
"Fulfilling legal obligations.",
|
||||||
|
"Sending emails for service updates and important notifications (marketing emails require separate consent).",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "3. Data Sharing",
|
||||||
|
content: [
|
||||||
|
"Your personal data is never sold or rented to third parties.",
|
||||||
|
"Shared only with Paddle (payment processor) and necessary technical infrastructure providers within the scope of service delivery.",
|
||||||
|
"May be shared with authorities in case of legal obligation.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "4. Cookies",
|
||||||
|
content: [
|
||||||
|
"The platform uses cookies for session management and to improve user experience.",
|
||||||
|
"Essential cookies are required for the platform to function. Analytical cookies can be disabled in your browser settings.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "5. Data Security",
|
||||||
|
content: [
|
||||||
|
"Your data is transmitted via HTTPS encrypted connection.",
|
||||||
|
"Passwords are stored hashed using the bcrypt algorithm.",
|
||||||
|
"Regular security audits are conducted.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "6. Your Rights",
|
||||||
|
content: [
|
||||||
|
"You have the right to access, correct, and delete your data.",
|
||||||
|
"You can opt out of marketing communications at any time.",
|
||||||
|
"For requests and complaints: support@iddaai.com",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "7. Data Retention",
|
||||||
|
content: "When you delete your account, your personal data will be permanently removed from our systems within 30 days. Data required by legal obligations will be retained for the relevant statutory period.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "8. Contact",
|
||||||
|
content: "For questions about the privacy policy: support@iddaai.com",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default async function PrivacyPage() {
|
||||||
|
const locale = await getLocale();
|
||||||
|
const content = locale === "tr" ? contentTR : contentEN;
|
||||||
|
return <LegalPage {...content} />;
|
||||||
|
}
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
import { Metadata } from "next";
|
||||||
|
import { getLocale } from "next-intl/server";
|
||||||
|
import LegalPage from "@/components/legal/legal-page";
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const locale = await getLocale();
|
||||||
|
const isTr = locale === "tr";
|
||||||
|
return {
|
||||||
|
title: isTr ? "İade Politikası — iddaai" : "Refund Policy — iddaai",
|
||||||
|
description: isTr
|
||||||
|
? "iddaai abonelik iptali ve iade koşulları hakkında bilgi edinin."
|
||||||
|
: "Learn about iddaai subscription cancellation and refund conditions.",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const contentTR = {
|
||||||
|
title: "İade Politikası",
|
||||||
|
lastUpdated: "Son güncelleme: Mayıs 2026",
|
||||||
|
sections: [
|
||||||
|
{
|
||||||
|
title: "1. Genel İlkeler",
|
||||||
|
content: [
|
||||||
|
"iddaai olarak müşteri memnuniyetini ön planda tutuyoruz. Abonelik satın alımlarında adil bir iade politikası uygulamaktayız.",
|
||||||
|
"Tüm ödemeler Paddle altyapısı üzerinden güvenli şekilde işlenir.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "2. İptal ve İade Koşulları",
|
||||||
|
content: [
|
||||||
|
"Aylık abonelikler: Ödeme tarihinden itibaren 7 gün içinde herhangi bir neden göstermeksizin iade talebinde bulunabilirsiniz.",
|
||||||
|
"Yıllık abonelikler: Ödeme tarihinden itibaren 14 gün içinde iade talep edebilirsiniz.",
|
||||||
|
"Belirtilen süreler dolduktan sonra yapılan iade talepleri, istisnai durumlar dışında kabul edilmez.",
|
||||||
|
"Ücretsiz deneme süresini kullandıktan sonra yapılan ödemelerde deneme süresi iade kapsamı dışındadır.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "3. İade Süreci",
|
||||||
|
content: [
|
||||||
|
"İade talebini destek@iddaai.com adresine e-posta göndererek veya hesabınızdaki destek kanalı üzerinden iletebilirsiniz.",
|
||||||
|
"Talebiniz en geç 3 iş günü içinde değerlendirilir.",
|
||||||
|
"Onaylanan iadeler, ödemenin yapıldığı ödeme yöntemine 5-10 iş günü içinde yansıtılır.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "4. İade Edilmeyecek Durumlar",
|
||||||
|
content: [
|
||||||
|
"Kullanım koşullarını ihlal etmeniz nedeniyle hesabınızın askıya alınması veya kapatılması.",
|
||||||
|
"İade süresinin dolmasından sonra yapılan talepler (istisnai durumlar hariç).",
|
||||||
|
"Kısmi ay kullanımları için orantılı iade yapılmaz.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "5. Abonelik İptali",
|
||||||
|
content: [
|
||||||
|
"Aboneliğinizi istediğiniz zaman iptal edebilirsiniz. İptal işlemi, mevcut dönem sonunda geçerli olur.",
|
||||||
|
"İptal sonrasında hesabınız abonelik bitiş tarihine kadar aktif kalmaya devam eder.",
|
||||||
|
"İptal için hesabınızdaki Abonelik Yönetimi bölümünü veya destek@iddaai.com adresini kullanabilirsiniz.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "6. İletişim",
|
||||||
|
content: "İade ve iptal talepleriniz için: destek@iddaai.com",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
const contentEN = {
|
||||||
|
title: "Refund Policy",
|
||||||
|
lastUpdated: "Last updated: May 2026",
|
||||||
|
sections: [
|
||||||
|
{
|
||||||
|
title: "1. General Principles",
|
||||||
|
content: [
|
||||||
|
"At iddaai, we prioritize customer satisfaction and apply a fair refund policy for subscription purchases.",
|
||||||
|
"All payments are securely processed via the Paddle infrastructure.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "2. Cancellation and Refund Conditions",
|
||||||
|
content: [
|
||||||
|
"Monthly subscriptions: You may request a refund within 7 days of payment without providing any reason.",
|
||||||
|
"Annual subscriptions: You may request a refund within 14 days of payment.",
|
||||||
|
"Refund requests made after the specified periods will not be accepted, except in exceptional circumstances.",
|
||||||
|
"Payments made after using a free trial period are not eligible for refund for the trial period.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "3. Refund Process",
|
||||||
|
content: [
|
||||||
|
"You can submit a refund request by emailing support@iddaai.com or through the support channel in your account.",
|
||||||
|
"Your request will be reviewed within 3 business days.",
|
||||||
|
"Approved refunds will be reflected to the original payment method within 5-10 business days.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "4. Non-Refundable Situations",
|
||||||
|
content: [
|
||||||
|
"Suspension or closure of your account due to violation of terms of service.",
|
||||||
|
"Requests made after the refund period has expired (except in exceptional circumstances).",
|
||||||
|
"No proportional refunds are made for partial month usage.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "5. Subscription Cancellation",
|
||||||
|
content: [
|
||||||
|
"You may cancel your subscription at any time. The cancellation takes effect at the end of the current billing period.",
|
||||||
|
"After cancellation, your account remains active until the subscription end date.",
|
||||||
|
"To cancel, use the Subscription Management section in your account or contact support@iddaai.com.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "6. Contact",
|
||||||
|
content: "For refund and cancellation requests: support@iddaai.com",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default async function RefundPolicyPage() {
|
||||||
|
const locale = await getLocale();
|
||||||
|
const content = locale === "tr" ? contentTR : contentEN;
|
||||||
|
return <LegalPage {...content} />;
|
||||||
|
}
|
||||||
@@ -0,0 +1,138 @@
|
|||||||
|
import { Metadata } from "next";
|
||||||
|
import { getLocale } from "next-intl/server";
|
||||||
|
import LegalPage from "@/components/legal/legal-page";
|
||||||
|
|
||||||
|
export async function generateMetadata(): Promise<Metadata> {
|
||||||
|
const locale = await getLocale();
|
||||||
|
const isTr = locale === "tr";
|
||||||
|
return {
|
||||||
|
title: isTr ? "Kullanım Koşulları — iddaai" : "Terms of Service — iddaai",
|
||||||
|
description: isTr
|
||||||
|
? "iddaai platformunu kullanmadan önce kullanım koşullarını okuyunuz."
|
||||||
|
: "Please read our terms of service before using the iddaai platform.",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const contentTR = {
|
||||||
|
title: "Kullanım Koşulları",
|
||||||
|
lastUpdated: "Son güncelleme: Mayıs 2026",
|
||||||
|
sections: [
|
||||||
|
{
|
||||||
|
title: "1. Genel Hükümler",
|
||||||
|
content: [
|
||||||
|
"Bu Kullanım Koşulları, iddaai.com platformunu kullanan tüm kullanıcılar için geçerlidir. Platformu kullanarak bu koşulları kabul etmiş sayılırsınız.",
|
||||||
|
"iddaai, yapay zeka destekli spor analiz ve tahmin hizmetleri sunan bir bilgi platformudur. Sunulan analizler bilgilendirme amaçlıdır; kesin sonuç garantisi içermez.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "2. Hizmetin Kapsamı",
|
||||||
|
content: [
|
||||||
|
"iddaai, futbol ve diğer spor dallarına yönelik AI tabanlı istatistik analizleri, maç tahminleri ve olasılık değerlendirmeleri sunar.",
|
||||||
|
"Platform, kullanıcılara bahis kararlarında yardımcı olmak amacıyla tasarlanmıştır. Ancak hiçbir analiz kesin kazanç garantisi vermez.",
|
||||||
|
"Hizmetlerimiz; Tüm Maçlar, Tahminler, Kadro Analizleri, Kuponlar ve Karşılıklı Karşılaşma istatistiklerini kapsar.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "3. Kullanıcı Yükümlülükleri",
|
||||||
|
content: [
|
||||||
|
"Platformu yalnızca yasal amaçlarla kullanmayı kabul edersiniz.",
|
||||||
|
"Bahis oynamanın yasal olduğu ülke veya bölgede ikamet etmekten ve yasal yaşı (18+) karşılamaktan tamamen siz sorumlusunuz.",
|
||||||
|
"Hesap bilgilerinizi üçüncü şahıslarla paylaşmamalısınız.",
|
||||||
|
"Platformun içeriklerini izinsiz kopyalamak, dağıtmak veya ticari amaçla kullanmak yasaktır.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "4. Sorumluluk Reddi",
|
||||||
|
content: [
|
||||||
|
"iddaai'nin sunduğu analizler ve tahminler tamamen bilgilendirme amaçlıdır. Bahis kayıplarından iddaai sorumlu tutulamaz.",
|
||||||
|
"Platform, bahis şirketleri ile herhangi bir bağlantısı bulunmamaktadır ve herhangi bir bahis şirketini tavsiye etmez.",
|
||||||
|
"Sunulan istatistikler ve olasılıklar, geçmiş veriler ve yapay zeka modelleri kullanılarak üretilmekte olup geleceği kesin olarak tahmin etmez.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "5. Ücretli Üyelik",
|
||||||
|
content: [
|
||||||
|
"Bazı özellikler ücretli abonelik gerektirir. Abonelik detayları Fiyatlandırma sayfasında belirtilmiştir.",
|
||||||
|
"Ödemeler Paddle altyapısı üzerinden güvenli biçimde işlenir.",
|
||||||
|
"İptal ve iade koşulları için Geri Ödeme Politikamızı inceleyiniz.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "6. Fikri Mülkiyet",
|
||||||
|
content: "Platform üzerindeki tüm içerik, tasarım, yazılım ve analizler iddaai'ye aittir. İzinsiz kullanım yasal işlem başlatılmasına neden olabilir.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "7. Değişiklikler",
|
||||||
|
content: "iddaai, bu koşulları önceden bildirim yapmaksızın değiştirme hakkını saklı tutar. Güncel koşullar her zaman bu sayfada yayınlanır.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "8. İletişim",
|
||||||
|
content: "Kullanım koşullarıyla ilgili sorularınız için: destek@iddaai.com",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
const contentEN = {
|
||||||
|
title: "Terms of Service",
|
||||||
|
lastUpdated: "Last updated: May 2026",
|
||||||
|
sections: [
|
||||||
|
{
|
||||||
|
title: "1. General Terms",
|
||||||
|
content: [
|
||||||
|
"These Terms of Service apply to all users of the iddaai.com platform. By using the platform, you agree to these terms.",
|
||||||
|
"iddaai is an information platform offering AI-powered sports analysis and prediction services. The analyses provided are for informational purposes only and do not guarantee specific outcomes.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "2. Scope of Service",
|
||||||
|
content: [
|
||||||
|
"iddaai provides AI-based statistical analyses, match predictions, and probability assessments for football and other sports.",
|
||||||
|
"The platform is designed to assist users in making betting decisions. However, no analysis guarantees a definite win.",
|
||||||
|
"Our services include All Matches, Predictions, Squad Analyses, Coupons, and Head-to-Head statistics.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "3. User Obligations",
|
||||||
|
content: [
|
||||||
|
"You agree to use the platform for legal purposes only.",
|
||||||
|
"You are solely responsible for ensuring that sports betting is legal in your country or region and that you meet the legal age requirement (18+).",
|
||||||
|
"You must not share your account credentials with third parties.",
|
||||||
|
"Copying, distributing, or using the platform's content for commercial purposes without permission is prohibited.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "4. Disclaimer",
|
||||||
|
content: [
|
||||||
|
"The analyses and predictions provided by iddaai are purely for informational purposes. iddaai cannot be held responsible for betting losses.",
|
||||||
|
"The platform has no affiliation with any bookmaker and does not endorse any betting company.",
|
||||||
|
"Statistics and probabilities are generated using historical data and AI models and do not predict the future with certainty.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "5. Paid Membership",
|
||||||
|
content: [
|
||||||
|
"Some features require a paid subscription. Subscription details are listed on the Pricing page.",
|
||||||
|
"Payments are securely processed via the Paddle infrastructure.",
|
||||||
|
"For cancellation and refund conditions, please review our Refund Policy.",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "6. Intellectual Property",
|
||||||
|
content: "All content, design, software, and analyses on the platform belong to iddaai. Unauthorized use may result in legal action.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "7. Changes",
|
||||||
|
content: "iddaai reserves the right to modify these terms without prior notice. The current terms are always published on this page.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "8. Contact",
|
||||||
|
content: "For questions about the terms of service: support@iddaai.com",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default async function TermsPage() {
|
||||||
|
const locale = await getLocale();
|
||||||
|
const content = locale === "tr" ? contentTR : contentEN;
|
||||||
|
return <LegalPage {...content} />;
|
||||||
|
}
|
||||||
@@ -61,6 +61,20 @@ export default function Footer() {
|
|||||||
>
|
>
|
||||||
{t("terms-of-service")}
|
{t("terms-of-service")}
|
||||||
</ChakraLink>
|
</ChakraLink>
|
||||||
|
<ChakraLink
|
||||||
|
as={Link}
|
||||||
|
href="/refund-policy"
|
||||||
|
fontSize="sm"
|
||||||
|
color="fg.muted"
|
||||||
|
focusRing="none"
|
||||||
|
textDecor="none"
|
||||||
|
transition="color 0.2s"
|
||||||
|
_hover={{
|
||||||
|
color: { base: "primary.500", _dark: "primary.300" },
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{t("refund-policy")}
|
||||||
|
</ChakraLink>
|
||||||
</HStack>
|
</HStack>
|
||||||
</Flex>
|
</Flex>
|
||||||
</Box>
|
</Box>
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { Box, Heading, Text, VStack } from "@chakra-ui/react";
|
||||||
|
|
||||||
|
interface Section {
|
||||||
|
title: string;
|
||||||
|
content: string | string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface LegalPageProps {
|
||||||
|
title: string;
|
||||||
|
lastUpdated: string;
|
||||||
|
sections: Section[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function LegalPage({ title, lastUpdated, sections }: LegalPageProps) {
|
||||||
|
return (
|
||||||
|
<Box maxW="3xl" mx="auto" px={{ base: 4, md: 8 }} py={12}>
|
||||||
|
<VStack align="start" gap={8}>
|
||||||
|
<Box>
|
||||||
|
<Heading as="h1" size="2xl" mb={2}>
|
||||||
|
{title}
|
||||||
|
</Heading>
|
||||||
|
<Text fontSize="sm" color="fg.muted">
|
||||||
|
{lastUpdated}
|
||||||
|
</Text>
|
||||||
|
</Box>
|
||||||
|
|
||||||
|
{sections.map((section, i) => (
|
||||||
|
<Box key={i} w="full">
|
||||||
|
<Heading as="h2" size="md" mb={3}>
|
||||||
|
{section.title}
|
||||||
|
</Heading>
|
||||||
|
{Array.isArray(section.content) ? (
|
||||||
|
<VStack align="start" gap={2}>
|
||||||
|
{section.content.map((para, j) => (
|
||||||
|
<Text key={j} color="fg.muted" lineHeight="1.8">
|
||||||
|
{para}
|
||||||
|
</Text>
|
||||||
|
))}
|
||||||
|
</VStack>
|
||||||
|
) : (
|
||||||
|
<Text color="fg.muted" lineHeight="1.8">
|
||||||
|
{section.content}
|
||||||
|
</Text>
|
||||||
|
)}
|
||||||
|
</Box>
|
||||||
|
))}
|
||||||
|
</VStack>
|
||||||
|
</Box>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -498,8 +498,8 @@ export default function MatchDetailContent() {
|
|||||||
{/* ══════════════════════════════════════════════ */}
|
{/* ══════════════════════════════════════════════ */}
|
||||||
<Box
|
<Box
|
||||||
position="sticky"
|
position="sticky"
|
||||||
top={0}
|
top="57px"
|
||||||
zIndex={10}
|
zIndex={9}
|
||||||
bg={tabBg}
|
bg={tabBg}
|
||||||
borderBottomWidth="1px"
|
borderBottomWidth="1px"
|
||||||
borderColor={borderColor}
|
borderColor={borderColor}
|
||||||
@@ -743,24 +743,6 @@ export default function MatchDetailContent() {
|
|||||||
</Button>
|
</Button>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
||||||
{/* Pre-match disclaimer */}
|
|
||||||
<Flex
|
|
||||||
align="center"
|
|
||||||
gap={2}
|
|
||||||
bg={disclaimerBg}
|
|
||||||
borderWidth="1px"
|
|
||||||
borderColor={disclaimerBorder}
|
|
||||||
borderRadius="lg"
|
|
||||||
px={3}
|
|
||||||
py={2}
|
|
||||||
mb={4}
|
|
||||||
>
|
|
||||||
<LuInfo size={14} style={{ flexShrink: 0 }} />
|
|
||||||
<Text fontSize="xs" color="fg.muted">
|
|
||||||
{tPred("pre-match-disclaimer")}
|
|
||||||
</Text>
|
|
||||||
</Flex>
|
|
||||||
|
|
||||||
{predLoading || isPredFetching ? (
|
{predLoading || isPredFetching ? (
|
||||||
<VStack gap={3} align="stretch">
|
<VStack gap={3} align="stretch">
|
||||||
<Skeleton h="120px" borderRadius="xl" />
|
<Skeleton h="120px" borderRadius="xl" />
|
||||||
@@ -769,31 +751,52 @@ export default function MatchDetailContent() {
|
|||||||
</VStack>
|
</VStack>
|
||||||
) : prediction ? (
|
) : prediction ? (
|
||||||
<>
|
<>
|
||||||
|
{/* Pre-match disclaimer — sadece prediction varken göster */}
|
||||||
|
<Flex
|
||||||
|
align="center"
|
||||||
|
gap={2}
|
||||||
|
bg={disclaimerBg}
|
||||||
|
borderWidth="1px"
|
||||||
|
borderColor={disclaimerBorder}
|
||||||
|
borderRadius="lg"
|
||||||
|
px={3}
|
||||||
|
py={2}
|
||||||
|
mb={4}
|
||||||
|
>
|
||||||
|
<LuInfo size={14} style={{ flexShrink: 0 }} />
|
||||||
|
<Text fontSize="xs" color="fg.muted">
|
||||||
|
{tPred("pre-match-disclaimer")}
|
||||||
|
</Text>
|
||||||
|
</Flex>
|
||||||
<PredictionCard prediction={prediction} />
|
<PredictionCard prediction={prediction} />
|
||||||
{/* AI Uzman Yorumu — prediction yüklendikten sonra ayrıca çekiliyor */}
|
{/* AI Uzman Yorumu */}
|
||||||
<Card.Root bg={cardBg} borderColor={borderColor} borderRadius="2xl">
|
{commentaryLoading ? (
|
||||||
<Card.Body gap={3}>
|
<Card.Root bg={cardBg} borderColor={borderColor} borderRadius="2xl">
|
||||||
<Flex align="center" gap={2}>
|
<Card.Body gap={3}>
|
||||||
<LuBrain size={16} />
|
<Flex align="center" gap={2}>
|
||||||
<Text fontWeight="semibold" fontSize="sm">AI Uzman Yorumu</Text>
|
<LuBrain size={16} />
|
||||||
</Flex>
|
<Text fontWeight="semibold" fontSize="sm">AI Uzman Yorumu</Text>
|
||||||
{commentaryLoading ? (
|
</Flex>
|
||||||
<VStack align="stretch" gap={2}>
|
<VStack align="stretch" gap={2}>
|
||||||
<Skeleton h="16px" borderRadius="md" />
|
<Skeleton h="14px" borderRadius="md" />
|
||||||
<Skeleton h="16px" borderRadius="md" w="90%" />
|
<Skeleton h="14px" borderRadius="md" w="85%" />
|
||||||
<Skeleton h="16px" borderRadius="md" w="75%" />
|
<Skeleton h="14px" borderRadius="md" w="70%" />
|
||||||
</VStack>
|
</VStack>
|
||||||
) : commentaryData?.data?.commentary ? (
|
</Card.Body>
|
||||||
|
</Card.Root>
|
||||||
|
) : commentaryData?.data?.commentary ? (
|
||||||
|
<Card.Root bg={cardBg} borderColor={borderColor} borderRadius="2xl">
|
||||||
|
<Card.Body gap={3}>
|
||||||
|
<Flex align="center" gap={2}>
|
||||||
|
<LuBrain size={16} />
|
||||||
|
<Text fontWeight="semibold" fontSize="sm">AI Uzman Yorumu</Text>
|
||||||
|
</Flex>
|
||||||
<Text fontSize="sm" color="fg.muted" lineHeight="1.7">
|
<Text fontSize="sm" color="fg.muted" lineHeight="1.7">
|
||||||
{commentaryData.data.commentary}
|
{commentaryData.data.commentary}
|
||||||
</Text>
|
</Text>
|
||||||
) : (
|
</Card.Body>
|
||||||
<Text fontSize="sm" color="fg.subtle">
|
</Card.Root>
|
||||||
Yorum üretilemedi.
|
) : null}
|
||||||
</Text>
|
|
||||||
)}
|
|
||||||
</Card.Body>
|
|
||||||
</Card.Root>
|
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
<Card.Root borderColor={borderColor} borderRadius="xl">
|
<Card.Root borderColor={borderColor} borderRadius="xl">
|
||||||
@@ -1129,11 +1132,6 @@ function SidelinedColumn({
|
|||||||
</Text>
|
</Text>
|
||||||
</HStack>
|
</HStack>
|
||||||
</VStack>
|
</VStack>
|
||||||
{player.matchesMissed !== undefined && player.matchesMissed > 0 && (
|
|
||||||
<Badge colorPalette="red" variant="subtle" fontSize="2xs">
|
|
||||||
{player.matchesMissed} {t("matches-missed")}
|
|
||||||
</Badge>
|
|
||||||
)}
|
|
||||||
</Flex>
|
</Flex>
|
||||||
</Box>
|
</Box>
|
||||||
))}
|
))}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user