import type { Feature } from '@rspress/core'; import { useFrontmatter } from '@rspress/core/runtime'; import { renderHtmlOrText, SvgWrapper, useLinkNavigate, } from '@rspress/core/theme'; import type { JSX } from 'react'; import './index.scss'; import { useCardAnimation } from './useCardAnimation'; const getGridClass = (feature: Feature): string => { const { span } = feature; switch (span) { case 2: return 'rp-home-feature__item--span-2'; case 3: return 'rp-home-feature__item--span-3'; case 4: return 'rp-home-feature__item--span-4'; case 6: return 'rp-home-feature__item--span-6'; case undefined: return 'rp-home-feature__item--span-4'; default: return ''; } }; function HomeFeatureItem({ feature }: { feature: Feature }): JSX.Element { const { icon, title, details, link } = feature; const { innerProps, outerProps, outerRef, shineDom } = useCardAnimation(); const navigate = useLinkNavigate(); return (
{ if (link) { navigate(link); } }} >
{icon ? (
) : null}

{title}

{shineDom}
); } export function HomeFeature({ features: featuresProp, }: { features?: Feature[]; }): JSX.Element { const { frontmatter } = useFrontmatter(); const features = featuresProp ?? frontmatter?.features; return (
{features?.map(feature => { return ; })}
); }