nitro-v36-with-renderer-v36
/
src /
components /
achievements /
achievement-list /
AchievementListView.tsx
AchievementListView.tsx 1.6 Ko
Télécharger le fichier
import { AchievementData } from '@octane/renderer';
import { CSSProperties, FC } from 'react';
import { NativeTextTree } from '../../../common/native-text/NativeTextTree';
import { AchievementListItemView } from './AchievementListItemView';
interface AchievementListViewProps {
achievements: AchievementData[];
isScrollable: boolean;
}
export const AchievementListView: FC<AchievementListViewProps> = (props) => {
const { achievements = [], isScrollable } = props;
const itemCount = Math.max(isScrollable ? 10 : 12, achievements.length);
return (
<NativeTextTree>
<div className={`air-achievements-list${isScrollable ? ' is-scrollable has-classic-scrollbar' : ''}`}>
<svg className="air-achievements-color-filters" width="0" height="0" aria-hidden="true">
<filter id="air-achievement-unseen-tint" colorInterpolationFilters="sRGB">
<feColorMatrix type="matrix" values="0.768627451 0 0 0 0 0 1 0 0 0 0 0 0.498039216 0 0 0 0 0 1 0" />
</filter>
</svg>
<div className="air-achievements-list-grid" style={{ '--air-achievement-columns': isScrollable ? 5 : 6 } as CSSProperties}>
{Array.from({ length: itemCount }, (_, index) => {
const achievement = achievements?.[index] ?? null;
return <AchievementListItemView key={achievement?.achievementId ?? `empty-${index}`} achievement={achievement} />;
})}
</div>
</div>
</NativeTextTree>
);
};
