gg
Deploy Iddaai Frontend / build-and-deploy (push) Successful in 2m19s

This commit is contained in:
2026-05-18 00:08:59 +03:00
parent 71a6ed320c
commit a70848164e
10 changed files with 526 additions and 50 deletions
+14
View File
@@ -61,6 +61,20 @@ export default function Footer() {
>
{t("terms-of-service")}
</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>
</Flex>
</Box>
+52
View File
@@ -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>
);
}
+42 -44
View File
@@ -498,8 +498,8 @@ export default function MatchDetailContent() {
{/* ══════════════════════════════════════════════ */}
<Box
position="sticky"
top={0}
zIndex={10}
top="57px"
zIndex={9}
bg={tabBg}
borderBottomWidth="1px"
borderColor={borderColor}
@@ -743,24 +743,6 @@ export default function MatchDetailContent() {
</Button>
</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 ? (
<VStack gap={3} align="stretch">
<Skeleton h="120px" borderRadius="xl" />
@@ -769,31 +751,52 @@ export default function MatchDetailContent() {
</VStack>
) : 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} />
{/* AI Uzman Yorumu — prediction yüklendikten sonra ayrıca çekiliyor */}
<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>
{commentaryLoading ? (
{/* AI Uzman Yorumu */}
{commentaryLoading ? (
<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>
<VStack align="stretch" gap={2}>
<Skeleton h="16px" borderRadius="md" />
<Skeleton h="16px" borderRadius="md" w="90%" />
<Skeleton h="16px" borderRadius="md" w="75%" />
<Skeleton h="14px" borderRadius="md" />
<Skeleton h="14px" borderRadius="md" w="85%" />
<Skeleton h="14px" borderRadius="md" w="70%" />
</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">
{commentaryData.data.commentary}
</Text>
) : (
<Text fontSize="sm" color="fg.subtle">
Yorum üretilemedi.
</Text>
)}
</Card.Body>
</Card.Root>
</Card.Body>
</Card.Root>
) : null}
</>
) : (
<Card.Root borderColor={borderColor} borderRadius="xl">
@@ -1129,11 +1132,6 @@ function SidelinedColumn({
</Text>
</HStack>
</VStack>
{player.matchesMissed !== undefined && player.matchesMissed > 0 && (
<Badge colorPalette="red" variant="subtle" fontSize="2xs">
{player.matchesMissed} {t("matches-missed")}
</Badge>
)}
</Flex>
</Box>
))}