import React from 'react';
import { useNavigate } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { useQuery } from '@tanstack/react-query';
import { ChevronRight, HelpCircle } from 'lucide-react';
import { YStack, XStack } from '@tamagui/stacks';
import { SizableText as Text } from '@tamagui/text';
import { YGroup } from '@tamagui/group';
import { ListItem } from '@tamagui/list-item';
import { MobileShell } from './components/MobileShell';
import { MobileCard, CTAButton, SkeletonCard } from './components/Primitives';
import { useAdminTheme } from './theme';
import { useBackNavigation } from './hooks/useBackNavigation';
import { adminPath, ADMIN_PROFILE_PATH } from '../constants';
import { fetchHelpCenterArticles, type HelpCenterArticleSummary } from '../api';
const FAQ_SLUGS = new Set(['admin-issue-resolution']);
function isFaqArticle(article: HelpCenterArticleSummary): boolean {
const title = article.title?.toLowerCase() ?? '';
return FAQ_SLUGS.has(article.slug) || article.slug.startsWith('faq-') || title.includes('faq');
}
export default function MobileHelpCenterPage() {
const navigate = useNavigate();
const { t, i18n } = useTranslation(['management', 'dashboard']);
const theme = useAdminTheme();
const back = useBackNavigation(ADMIN_PROFILE_PATH);
const locale = i18n.language;
const { data, isLoading, isError, refetch } = useQuery({
queryKey: ['mobile', 'help-center', locale],
queryFn: () => fetchHelpCenterArticles(locale),
});
const articles = Array.isArray(data) ? data : [];
const faqArticles = articles.filter(isFaqArticle);
const guideArticles = articles.filter((article) => !isFaqArticle(article));
return (
{isLoading ? (
) : null}
{isError ? (
{t('dashboard:help.error', 'Help could not be loaded.')}
refetch()}
fullWidth={false}
/>
) : null}
{!isLoading && !isError ? (
navigate(adminPath(`/mobile/help/${encodeURIComponent(slug)}`))}
/>
navigate(adminPath(`/mobile/help/${encodeURIComponent(slug)}`))}
/>
) : null}
);
}
function HelpSection({
title,
items,
emptyLabel,
icon: IconCmp,
onSelect,
}: {
title: string;
items: HelpCenterArticleSummary[];
emptyLabel: string;
icon?: React.ComponentType<{ size?: number; color?: string }>;
onSelect: (slug: string) => void;
}) {
const theme = useAdminTheme();
return (
{IconCmp ? (
) : null}
{title}
{items.length === 0 ? (
{emptyLabel}
) : (
{items.map((item) => (
onSelect(item.slug)}
title={
{item.title}
}
subTitle={
item.summary ? (
{item.summary}
) : undefined
}
iconAfter={}
/>
))}
)}
);
}