/* workspace.jsx — resume + job description input screen */
(function () {
  const { useState, useRef } = React;
  const Icon = window.Icon;

  function Dropzone({ filled, onFile }) {
    const [drag, setDrag] = useState(false);
    const inp = useRef(null);
    return React.createElement('div', {
      className: 'drop' + (drag ? ' drag' : ''),
      onClick: () => inp.current && inp.current.click(),
      onDragOver: (e) => { e.preventDefault(); setDrag(true); },
      onDragLeave: () => setDrag(false),
      onDrop: (e) => { e.preventDefault(); setDrag(false); onFile && onFile(); },
    },
      React.createElement('input', { ref: inp, type: 'file', accept: '.pdf,.docx,.txt', hidden: true, onChange: () => onFile && onFile() }),
      React.createElement('div', { className: 'drop-ic' }, React.createElement(Icon.upload, null)),
      React.createElement('div', null,
        React.createElement('div', { className: 'drop-t' },
          filled ? 'jordan_avery_resume.pdf' : React.createElement(React.Fragment, null, React.createElement('b', null, 'Click to upload'), ' or drag & drop')),
        React.createElement('div', { className: 'drop-s' }, filled ? 'Parsed · 1 page · 482 words' : 'Max 5MB'),
      ),
      React.createElement('div', { className: 'drop-formats' },
        ['PDF', 'DOCX', 'TXT'].map((f) => React.createElement('span', { key: f, className: 'fmt' }, f))),
    );
  }

  function TrustOption({ active, icon, title, text, onClick }) {
    return React.createElement('button', { className: 'trust-opt' + (active ? ' active' : ''), onClick },
      React.createElement('span', { className: 'trust-opt-ic' }, React.createElement(Icon[icon], null)),
      React.createElement('span', null,
        React.createElement('b', null, title),
        React.createElement('small', null, text),
      ),
    );
  }

  function Workspace({ resume, setResume, jd, setJd, mode, setMode, onGenerate, onClear, trustMode, setTrustMode }) {
    const { Segmented } = window.UI;
    const canGen = resume.trim().length > 0 && jd.trim().length > 0;
    const words = (s) => s.trim() ? s.trim().split(/\s+/).length : 0;

    return React.createElement('div', { className: 'wrap page' },
      React.createElement('div', { className: 'ws-head' },
        React.createElement('h1', { className: 'ws-title' }, 'Tailor your application in ', React.createElement('span', { className: 'accent' }, 'seconds')),
        React.createElement('p', { className: 'ws-sub' }, 'Paste your resume and a job description — we’ll match keywords and rewrite for the role.'),
      ),

      React.createElement('div', { className: 'cols' },
        /* left: resume */
        React.createElement('div', { className: 'panel card' },
          React.createElement('div', { className: 'panel-head' },
            React.createElement('div', { className: 'panel-h' },
              React.createElement('div', { className: 'panel-ic' }, React.createElement(Icon.doc, null)),
              React.createElement('h2', null, 'Your Resume'),
            ),
            resume.trim()
              ? React.createElement('span', { className: 'filled-flag' }, React.createElement(Icon.checkCircle, null), 'Ready')
              : React.createElement('span', { className: 'panel-count' }, words(resume), ' words'),
          ),
          React.createElement(Dropzone, { filled: false, onFile: () => setResume(window.DATA.SAMPLE_RESUME) }),
          React.createElement('div', { className: 'divider-or' }, React.createElement('span', null, 'or paste your resume')),
          React.createElement('textarea', {
            className: 'ta' + (resume ? ' filled' : ''), value: resume, spellCheck: false,
            onChange: (e) => setResume(e.target.value),
            placeholder: 'Paste the full text of your current resume here…',
          }),
          React.createElement('div', { className: 'ws-jd-fill', style: { marginTop: '12px' } },
            !resume.trim() && React.createElement('button', { className: 'btn btn-soft btn-sm', onClick: () => setResume(window.DATA.SAMPLE_RESUME) },
              React.createElement(Icon.plus, null), 'Use sample resume')),
          React.createElement('div', { className: 'helper' }, React.createElement(Icon.checkCircle, null),
            'We’ll preserve your experience while tailoring wording to the role.'),
        ),

        /* right: jd */
        React.createElement('div', { className: 'panel card' },
          React.createElement('div', { className: 'panel-head' },
            React.createElement('div', { className: 'panel-h' },
              React.createElement('div', { className: 'panel-ic' }, React.createElement(Icon.target, null)),
              React.createElement('h2', null, 'Job Description'),
            ),
            jd.trim()
              ? React.createElement('span', { className: 'filled-flag' }, React.createElement(Icon.checkCircle, null), 'Ready')
              : React.createElement('span', { className: 'panel-count' }, words(jd), ' words'),
          ),
          React.createElement('textarea', {
            className: 'ta' + (jd ? ' filled' : ''), value: jd, spellCheck: false,
            style: { minHeight: '352px' },
            onChange: (e) => setJd(e.target.value),
            placeholder: 'Paste the full job posting here — title, responsibilities, and requirements…',
          }),
          React.createElement('div', { className: 'ws-jd-fill', style: { marginTop: '12px' } },
            !jd.trim() && React.createElement('button', { className: 'btn btn-soft btn-sm', onClick: () => setJd(window.DATA.SAMPLE_JD) },
              React.createElement(Icon.plus, null), 'Use a sample posting')),
          React.createElement('div', { className: 'helper' }, React.createElement(Icon.checkCircle, null),
            'Paste the full job description for best keyword matching.'),
        ),
      ),

      /* action bar */
      React.createElement('div', { className: 'actionbar' },
        React.createElement('div', { className: 'actionbar-l' },
          React.createElement('span', { className: 'actionbar-label' }, 'Generate'),
          React.createElement(Segmented, {
            value: mode, onChange: setMode,
            options: [
              { value: 'resume', label: 'Resume', icon: 'doc' },
              { value: 'cover', label: 'Cover Letter', icon: 'mail' },
              { value: 'ats', label: 'ATS Report', icon: 'target' },
              { value: 'full', label: 'Full Application', icon: 'sparkle' },
            ],
          }),
        ),
        React.createElement('div', { className: 'actionbar-r' },
          React.createElement('button', { className: 'btn btn-ghost', onClick: onClear, disabled: !resume && !jd },
            React.createElement(Icon.x, null), 'Clear'),
          React.createElement('button', { className: 'btn btn-primary btn-lg', onClick: onGenerate, disabled: !canGen },
            React.createElement(Icon.sparkle, null), 'Generate Tailored Application'),
        ),
      ),

      React.createElement('div', { className: 'platform-grid' },
        React.createElement('div', { className: 'card platform-card' },
          React.createElement('div', { className: 'platform-head' },
            React.createElement('div', { className: 'sec-ic' }, React.createElement(Icon.checkCircle, null)),
            React.createElement('div', null,
              React.createElement('div', { className: 'sec-title' }, 'Truth-safe tailoring'),
              React.createElement('div', { className: 'sec-sub' }, 'Choose how aggressively Resum3 can translate your experience.'),
            ),
          ),
          React.createElement('div', { className: 'trust-options' },
            React.createElement(TrustOption, {
              active: trustMode === 'safe',
              icon: 'lock',
              title: 'Evidence only',
              text: 'Add keywords only when your resume already supports them.',
              onClick: () => setTrustMode('safe'),
            }),
            React.createElement(TrustOption, {
              active: trustMode === 'balanced',
              icon: 'target',
              title: 'Balanced',
              text: 'Allow supported reframes and ask for approval on stretches.',
              onClick: () => setTrustMode('balanced'),
            }),
            React.createElement(TrustOption, {
              active: trustMode === 'bold',
              icon: 'sparkle',
              title: 'Bold',
              text: 'Suggest more ambitious wording, clearly marked for review.',
              onClick: () => setTrustMode('bold'),
            }),
          ),
        ),
        React.createElement('div', { className: 'card platform-card insight-card' },
          React.createElement('div', { className: 'eyebrow' }, 'Platform preview'),
          React.createElement('div', { className: 'insight-title' }, 'Every keyword gets a paper trail.'),
          React.createElement('p', null, 'Results will show the job phrase, matching resume evidence, exact placement, and review status for each ATS keyword.'),
          React.createElement('div', { className: 'mini-flow' },
            ['Job requirement', 'Resume proof', 'Tailored edit', 'User approval'].map((s, i) =>
              React.createElement('span', { key: s }, s, i < 3 && React.createElement(Icon.chevron, null))),
          ),
        ),
      ),
      React.createElement('div', { style: { height: '48px' } }),
    );
  }

  window.Workspace = Workspace;
})();
