import React from 'react' import { isDark } from '../../../../utils/theme' import { DefaultLayout } from '../../../components/DefaultLayout' import { resolveIcon } from '../../../components/iconRegistry' import type { PosterProps } from '../../../types/ctx' import type { HelpData } from './types' /** 菜单分组类型:从 HelpData 逐步索引派生,types.ts 不再单独导出子类型 */ type MenuGroup = NonNullable[number] /** 菜单项类型:同上,由 MenuGroup 继续索引得到 */ type MenuItem = MenuGroup['items'][number] /** * 获取图标组件,兜底为默认图标 * @param icon - 图标:可以是字符串或带颜色的对象 * @returns React 图标组件类型 */ const getIconForItem = (icon?: MenuItem['icon']): React.ComponentType => { if (!icon) return resolveIcon('ph:question-fill') const name = typeof icon === 'string' ? icon : icon.name return resolveIcon(name) } /** * 菜单项组件 * 展示单个功能的图标、标题和描述 */ const MenuItemComponent: React.FC<{ /** 菜单项数据 */ item: MenuItem /** 主题色 */ themeColor: string }> = ({ item, themeColor }) => { const IconComponent = getIconForItem(item.icon) const iconColor = typeof item.icon === 'object' && item.icon?.color ? item.icon.color : themeColor return (

{item.title}

{item.description}

) } /** * 菜单分组组件 */ const MenuGroupComponent: React.FC<{ /** 分组数据 */ group: MenuGroup /** 主题色 */ themeColor: string }> = ({ group, themeColor }) => { return (
{/* 分组标题 */}

{group.title}

{group.items.map((item, idx) => ( ))}
{group.subGroups?.map((sub, i) => (

{sub.title}

{sub.items.map((item, idx) => ( ))}
))}
) } /** * 帮助页面组件 */ export const Help: React.FC> = React.memo((props) => { const title = props.data?.title || 'KKK PLUGIN' const menuData = props.data?.menu || [] const dark = isDark(props.ctx) // 弥散光颜色配置 const glowColors = dark ? { primary: 'rgba(59, 130, 246, 0.4)', // Blue secondary: 'rgba(139, 92, 246, 0.3)', // Violet accent: 'rgba(6, 182, 212, 0.25)' // Cyan } : { primary: 'rgba(56, 189, 248, 0.5)', // Sky secondary: 'rgba(167, 139, 250, 0.4)', // Violet accent: 'rgba(45, 212, 191, 0.3)' // Teal } // 内容主题色轮换 const contentColors = dark ? ['#60a5fa', '#a78bfa', '#2dd4bf'] // Blue-400, Violet-400, Teal-400 : ['#2563eb', '#7c3aed', '#0d9488'] // Blue-600, Violet-600, Teal-600 return ( {/* 1. 弥散光背景层 */}
{/* 2. 杂色纹理层 */}
{/* 3. 背景大字装饰 */}
GUIDE
{/* 4. 四周装饰性图形点缀 */}
{/* 左上角:矩阵点阵 */}
{[...Array(16)].map((_, i) => (
))}
{/* 右上角 */}
SYS.32.91
{/* 左侧边缘 */}
{[...Array(20)].map((_, i) => (
0.5 ? '4px' : '2px', width: Math.random() * 100 + '%' }} /> ))}
{/* 右侧边缘 */}
{/* 底部装饰 */}
{/* 左下角装饰条纹 */}
{/* 右下角大圆环 */}
{/* 5. 主要内容区域 */}
{/* 头部区域 */}
SYSTEM_READY

COMMANDS

CURRENT MODULE
{title}
{/* 菜单列表区域 */}
{menuData.map((group, index) => { // 轮换颜色 const themeColor = contentColors[index % contentColors.length] return })}
) }) Help.displayName = 'Help' export default Help