// PericopeInput — top-of-page hero input with intent detection + 3-action branch.
// Parses references like: Rom 8:28, Romans 8:28-30, Ro 8.28, Rom. viii.28, etc.
function parseReference(raw) {
  if (!raw) return null;
  const q = raw.trim().replace(/\s+/g, ' ');
  // Very permissive: <book>[.]?\s+<chap>[:\.,]<verse>[-–<verse2>]?
  const bookMatch = q.match(/^([1-3]?\s?[A-Za-zÀ-ÿ.]{2,18})\.?\s+([ivxIVX]+|\d{1,3})[:.,]?\s?([ivxIVX]+|\d{1,3})?(?:\s*[-–]\s*(\d{1,3}))?$/);
  if (!bookMatch) return null;
  const rawBook = bookMatch[1].toLowerCase().replace(/\s+/g,'').replace(/\./g,'');
  const chap = bookMatch[2];
  const v1 = bookMatch[3];
  const v2 = bookMatch[4];

  // Book alias map (subset — enough for demo)
  const aliases = {
    rom:'rom', romans:'rom', ro:'rom', romanos:'rom',
    mat:'mat', matt:'mat', matthew:'mat', mateo:'mat',
    mrk:'mrk', mk:'mrk', mark:'mrk', marcos:'mrk',
    luk:'luk', lk:'luk', luke:'luk', lucas:'luk',
    jhn:'jhn', jn:'jhn', john:'jhn', juan:'jhn',
    act:'act', acts:'act', hechos:'act',
    '1co':'1co', '1cor':'1co', '1corinthians':'1co',
    '2co':'2co', '2cor':'2co', '2corinthians':'2co',
    gal:'gal', galatians:'gal', galatas:'gal',
    eph:'eph', ephesians:'eph',
    php:'php', phil:'php', philippians:'php',
    col:'col', colossians:'col',
    heb:'heb', hebrews:'heb', hebreos:'heb',
    rev:'rev', revelation:'rev', apocalypse:'rev',
    jas:'jas', james:'jas',
    '1pe':'1pe', '1pet':'1pe',
    '1jn':'1jn', '1john':'1jn',
    gen:'gen', genesis:'gen', ge:'gen',
    exo:'exo', exodus:'exo', ex:'exo',
    psa:'psa', ps:'psa', psalm:'psa', psalms:'psa',
    isa:'isa', isaiah:'isa', is:'isa',
    dan:'dan', daniel:'dan',
  };
  const book = aliases[rawBook];
  if (!book) return null;

  return { book, chap, v1, v2, raw: q };
}

function PericopeInput({ onResolve, onFocusChange }) {
  const [value, setValue] = React.useState('');
  const [focused, setFocused] = React.useState(false);
  const [resolved, setResolved] = React.useState(null);

  const ref = parseReference(value);
  const mode = value.length === 0 ? 'idle' : (ref ? 'reference' : 'search');

  React.useEffect(() => { onFocusChange && onFocusChange(focused); }, [focused]);

  const submit = () => {
    if (ref) {
      setResolved(ref);
      onResolve && onResolve(ref);
    }
  };

  const examples = ['Rom 8:28–30', 'Acts 15', 'Jn 3:16', 'Gen 1:1', 'divine patience foreknowledge'];

  return React.createElement(React.Fragment, null,
    React.createElement('div', {
      className: 'amos-ref-input ' + (focused ? 'focused' : '')
    },
      React.createElement('span', {
        className: 'ri-mode ' + (mode === 'reference' ? 'reference' : mode === 'search' ? 'search' : '')
      },
        React.createElement('span', { className: 'dot' }),
        mode === 'reference' ? 'Pericope' : mode === 'search' ? 'Search' : 'Start typing'
      ),
      React.createElement('input', {
        value, 
        onChange: (e) => { setValue(e.target.value); setResolved(null); },
        onFocus: () => setFocused(true),
        onBlur: () => setFocused(false),
        onKeyDown: (e) => { if (e.key === 'Enter') submit(); },
        placeholder: 'Enter a pericope reference  —  or search the corpus',
        autoFocus: false
      }),
      React.createElement('button', { className: 'ri-submit', onClick: submit },
        mode === 'reference' ? 'Open pericope' : 'Search',
        window.I.arrowRight(13)
      )
    ),

    !resolved && React.createElement('div', { className: 'amos-ref-hints' },
      React.createElement('b', null, 'Try:'),
      examples.map(ex =>
        React.createElement('span', {
          key: ex,
          className: 'ex',
          onClick: () => {
            setValue(ex);
            const r = parseReference(ex);
            if (r) { setResolved(r); onResolve && onResolve(r); }
          }
        }, ex)
      ),
      React.createElement('span', { style: { marginLeft:'auto', color:'rgba(6,31,39,.4)' } },
        'Accepts  Rom 8:28 · Romanos 8,28 · Rom. viii.28'
      )
    )
  );
}

// Resolved 3-action branch card
function PericopeBranch({ pref, onRetrieve, onCommission, onCrossCorpus, onDismiss }) {
  // NOTE: the prop is 'pref', NOT 'ref' — 'ref' is a reserved React prop that
  // React strips, which made this whole branch render null for every reference.
  if (!pref) return null;
  const label = (pref.book || 'ref').toUpperCase() + ' ' + (pref.chap || '') + (pref.v1 ? ':' + pref.v1 : '') + (pref.v2 ? '–' + pref.v2 : '');

  return React.createElement('section', { className: 'amos-ref-branch' },
    React.createElement('div', { className: 'rb-left' },
      React.createElement('div', { className: 'rb-kicker' }, 'Resolved pericope · choose an action'),
      React.createElement('h3', null, label),
      React.createElement('div', { className: 'rb-sub' },
        'Three ways in: see everything that already exists for this passage, commission new work, or search how the whole corpus receives it.'
      )
    ),
    React.createElement('div', { className: 'rb-actions' },
      React.createElement('button', {
        className: 'rb-action retrieve',
        onClick: () => onRetrieve && onRetrieve(pref)
      },
        React.createElement('span', { className: 'rb-ico' }, window.I.open(18)),
        React.createElement('span', null,
          React.createElement('div', { className: 'rb-a-head' }, 'Retrieve'),
          React.createElement('div', { className: 'rb-a-sub' }, 'Open what exists — modes, languages, seals')
        )
      ),
      React.createElement('button', {
        className: 'rb-action commission',
        onClick: () => onCommission && onCommission(pref)
      },
        React.createElement('span', { className: 'rb-ico' }, window.I.sparkle(18)),
        React.createElement('span', null,
          React.createElement('div', { className: 'rb-a-head' }, 'Commission'),
          React.createElement('div', { className: 'rb-a-sub' }, 'Request new work — availability × price')
        )
      ),
      React.createElement('button', {
        className: 'rb-action cross',
        onClick: () => onCrossCorpus && onCrossCorpus(pref)
      },
        React.createElement('span', { className: 'rb-ico' }, window.I.cite(18)),
        React.createElement('span', null,
          React.createElement('div', { className: 'rb-a-head' }, 'Cross-corpus'),
          React.createElement('div', { className: 'rb-a-sub' }, 'Reception across seven traditions')
        )
      ),
      React.createElement('button', {
        className: 'amos-icon-btn',
        style: { marginLeft: 4 },
        onClick: onDismiss,
        title: 'Dismiss'
      }, window.I.x(14))
    )
  );
}

Object.assign(window, { PericopeInput, PericopeBranch, parseReference });
