GrantForge Bot
Deploy to Hugging Face
afd56bc
import { useState, useEffect } from 'react';
// @ts-ignore
import { Joyride, Step, STATUS } from 'react-joyride';
interface OnboardingTourProps {
run: boolean;
steps?: Step[];
onFinish: () => void;
}
const defaultGlobalSteps: Step[] = [
{
target: '.sidebar-menu',
content: 'Tutaj znajduje si臋 g艂贸wne menu aplikacji, dzi臋ki kt贸remu przejdziesz do swoich projekt贸w i ustawie艅.',
},
{
target: '.new-project-btn',
content: 'Kliknij ten przycisk, aby wygenerowa膰 nowy wniosek o dofinansowanie przy pomocy sztucznej inteligencji.',
},
{
target: '.projects-list',
content: 'W tym miejscu zobaczysz wszystkie swoje aktualne i zako艅czone projekty.',
},
{
target: '.user-profile-menu',
content: 'Tutaj zarz膮dzasz swoim kontem, subskrypcj膮 oraz znajdziesz przycisk wylogowania.',
}
];
export const OnboardingTour: React.FC<OnboardingTourProps> = ({ run, steps = defaultGlobalSteps, onFinish }) => {
const [mounted, setMounted] = useState(false);
useEffect(() => {
setMounted(true);
}, []);
const handleJoyrideCallback = (data: any) => {
const { status, action } = data;
const finishedStatuses: string[] = [STATUS.FINISHED, STATUS.SKIPPED];
if (finishedStatuses.includes(status) || action === 'close') {
onFinish();
}
};
if (!mounted) return null;
return (
<Joyride
steps={steps}
run={run}
continuous={true}
showSkipButton={true}
showProgress={true}
callback={handleJoyrideCallback}
styles={{
options: {
arrowColor: 'var(--bg-elevated)',
backgroundColor: 'var(--bg-elevated)',
textColor: 'var(--text-primary)',
primaryColor: 'var(--accent-green)',
overlayColor: 'rgba(0, 0, 0, 0.7)',
zIndex: 10000,
},
tooltipContainer: {
textAlign: 'left'
},
buttonNext: {
backgroundColor: 'var(--accent-green)',
color: '#000',
fontWeight: 800,
},
buttonBack: {
color: 'var(--text-secondary)'
},
buttonSkip: {
color: 'var(--text-muted)'
}
}}
locale={{ next: 'Dalej', back: 'Cofnij', skip: 'Pomi艅', last: 'Zako艅cz' }}
/>
);
};