nitro-v36-with-renderer-v36
/
src /
components /
catalog /
views /
catalog-rail /
CatalogRailItemView.tsx
CatalogRailItemView.tsx 1.6 Ko
Télécharger le fichier
import { FC } from 'react';
import { ICatalogNode } from '../../../../api';
import { BaseButton } from '../../../../common/BaseButton';
import { CatalogIconView } from '../catalog-icon/CatalogIconView';
import { Hint } from '../../../../common/Tooltip';
import { NativeTextTree } from '../../../../common/native-text/NativeTextTree';
interface CatalogRailItemViewProps {
node: ICatalogNode;
isActive: boolean;
onClick: () => void;
}
export const CatalogRailItemView: FC<CatalogRailItemViewProps> = (props) => {
const { node, isActive, onClick } = props;
return (
<NativeTextTree>
<Hint content={node.localization}><BaseButton
aria-pressed={isActive}
type="button"
className={`flex w-full items-center gap-2 px-1.5 py-1.5 rounded-lg cursor-pointer transition-all duration-150 shrink-0 ${isActive ? 'bg-white shadow-catalog-card ring-1 ring-catalog-accent/30' : 'hover:bg-white/60'}`}
onClick={onClick}
>
<div className="w-8 h-8 flex items-center justify-center shrink-0">
<CatalogIconView icon={node.iconId} className="w-6 h-6" />
</div>
<span
className={`text-[11px] font-medium whitespace-nowrap overflow-hidden opacity-0 group-hover:opacity-100 transition-opacity duration-200 truncate ${isActive ? 'text-catalog-accent' : 'text-catalog-text'}`}
>
{node.localization}
</span>
</BaseButton></Hint>
</NativeTextTree>
);
};
