import React, { useState, useEffect } from 'react'; import Icon from './CanvasIcon'; import { MOD } from './platform'; const TOUR_KEY = 'canvas-tour-seen-launchpad-v1'; const STEPS = [ { title: 'Welcome to your Career Canvas', icon: 'flag', body: 'This is your internship-search workspace. Two views — Insights (highlights from your chats) and Workspace (a customizable dashboard of widgets). It starts empty so you can build it the way you want.', }, { title: 'Add widgets from the palette', icon: 'plus', body: `Click "Add widget" on the Workspace view, or hit ${MOD}+K and search. There are 30+ widgets — application boards, deadlines, resume writing, networking logs, plus challenge widgets that push back on weak plans.`, }, { title: 'Make it yours', icon: 'layout', body: 'Drag widget headers to reorder. Click the size pill (S/M/L) to resize. Hover and click trash to remove. Layout and content auto-save to your browser.', }, { title: 'Try the challenge widgets', icon: 'gavel', body: 'Reviewer 2, Devil\'s Advocate, and Scope Realism are tuned to push back, not validate. They\'re where your search plan gets sharpened. Add them when you\'re ready for honest feedback.', }, ]; const CanvasWelcomeTour = ({ forceShow = false, onClose }) => { const [step, setStep] = useState(0); const [visible, setVisible] = useState(false); useEffect(() => { const seen = localStorage.getItem(TOUR_KEY); if (forceShow || !seen) setVisible(true); }, [forceShow]); const dismiss = () => { localStorage.setItem(TOUR_KEY, '1'); setVisible(false); if (onClose) onClose(); }; if (!visible) return null; const s = STEPS[step]; const isLast = step === STEPS.length - 1; return (
{ if (e.target === e.currentTarget) dismiss(); }}>
e.stopPropagation()}>
{s.title}
Step {step + 1} of {STEPS.length}

{s.body}

{STEPS.map((_, i) => ( setStep(i)} style={{ width: 8, height: 8, borderRadius: '50%', cursor: 'pointer', background: i === step ? 'var(--canvas-accent)' : 'var(--canvas-surface-3)', transition: 'background .15s', }}/> ))}
{step > 0 && ( )} {!isLast && ( )}
); }; export default CanvasWelcomeTour;