ConceptPortal-public/rsconcept/frontend/src/pages/ManualsPage/TopicsList.tsx

38 lines
1.0 KiB
TypeScript
Raw Normal View History

import clsx from 'clsx';
2023-12-26 14:23:51 +03:00
import { HelpTopic } from '@/models/miscellaneous';
import { prefixes } from '@/utils/constants';
import { describeHelpTopic, labelHelpTopic } from '@/utils/labels';
2023-08-23 18:11:42 +03:00
interface TopicsListProps {
2023-12-28 14:04:44 +03:00
activeTopic: HelpTopic;
onChangeTopic: (newTopic: HelpTopic) => void;
2023-08-23 18:11:42 +03:00
}
function TopicsList({ activeTopic, onChangeTopic }: TopicsListProps) {
return (
2023-12-28 14:04:44 +03:00
<div
2023-12-30 19:43:24 +03:00
className={clsx('sticky top-0 left-0', 'min-w-[13rem] self-start', 'border-x', 'clr-controls', '', 'select-none')}
2023-12-28 14:04:44 +03:00
>
{Object.values(HelpTopic).map((topic, index) => (
<div
key={`${prefixes.topic_list}${index}`}
className={clsx(
'px-3 py-1',
'border-y',
'clr-hover',
'cursor-pointer',
activeTopic === topic && 'clr-selected'
)}
title={describeHelpTopic(topic)}
onClick={() => onChangeTopic(topic)}
>
{labelHelpTopic(topic)}
</div>
2023-12-28 14:04:44 +03:00
))}
</div>
);
2023-08-23 18:11:42 +03:00
}
2023-12-28 14:04:44 +03:00
export default TopicsList;