(function registerCrawlRunForm(global) {
  'use strict';

  function CrawlRunForm(props) {
    var React = global.React;
    var useState = React.useState;
    var defaults = props && props.defaults || {};
    var onSubmit = props && props.onSubmit || function noop() {};
    var disabled = props && props.disabled;
    var statePair = useState({
      startUrl: defaults.startUrl || '',
      maxPages: defaults.maxPages || 25,
      maxDepth: defaults.maxDepth || 3,
      respectRobots: defaults.respectRobots !== false,
      includeSitemap: defaults.includeSitemap !== false,
      includeExternalLinks: Boolean(defaults.includeExternalLinks),
      adapter: defaults.adapter || 'internal',
      crawlAuthorizationAccepted: false
    });
    var form = statePair[0];
    var setForm = statePair[1];

    function update(field, value) {
      setForm(function patch(prev) {
        var next = Object.assign({}, prev);
        next[field] = value;
        return next;
      });
    }

    function submit(event) {
      event.preventDefault();
      onSubmit({
        startUrl: form.startUrl,
        maxPages: Number(form.maxPages) || 25,
        maxDepth: Number(form.maxDepth) || 3,
        respectRobots: form.respectRobots,
        includeSitemap: form.includeSitemap,
        includeExternalLinks: form.includeExternalLinks,
        adapter: form.adapter,
        crawlAuthorizationAccepted: form.crawlAuthorizationAccepted,
        policyVersion: '2026-06-19',
        consentSource: 'free_seo_crawl_form'
      });
    }

    return React.createElement('form', { className: 'free-seo-crawl-form free-seo-form', onSubmit: submit }, [
      React.createElement('label', { key: 'url', className: 'free-seo-field free-seo-field--url' }, [
        React.createElement('span', { key: 'label' }, 'Start URL'),
        React.createElement('input', {
          key: 'input',
          className: 'free-seo-input',
          type: 'url',
          required: true,
          placeholder: 'https://example.com/',
          value: form.startUrl,
          disabled: disabled,
          onChange: function handleChange(event) { update('startUrl', event.target.value); }
        })
      ]),
      React.createElement('div', { key: 'grid', className: 'free-seo-form-grid' }, [
        React.createElement('label', { key: 'pages', className: 'free-seo-field' }, [
          React.createElement('span', { key: 'label' }, 'Max pages'),
          React.createElement('input', {
            key: 'input',
            className: 'free-seo-input',
            type: 'number', min: '1', max: '10000', value: form.maxPages, disabled: disabled,
            onChange: function handleChange(event) { update('maxPages', event.target.value); }
          })
        ]),
        React.createElement('label', { key: 'depth', className: 'free-seo-field' }, [
          React.createElement('span', { key: 'label' }, 'Max depth'),
          React.createElement('input', {
            key: 'input',
            className: 'free-seo-input',
            type: 'number', min: '0', max: '20', value: form.maxDepth, disabled: disabled,
            onChange: function handleChange(event) { update('maxDepth', event.target.value); }
          })
        ]),
        React.createElement('label', { key: 'adapter', className: 'free-seo-field' }, [
          React.createElement('span', { key: 'label' }, 'Adapter'),
          React.createElement('select', {
            key: 'select', className: 'free-seo-select', value: form.adapter, disabled: disabled,
            onChange: function handleChange(event) { update('adapter', event.target.value); }
          }, [
            React.createElement('option', { key: 'internal', value: 'internal' }, 'Internal local crawler'),
            React.createElement('option', { key: 'open', value: 'open-seo-crawler' }, 'Open SEO Crawler command'),
            React.createElement('option', { key: 'libre', value: 'librecrawl' }, 'Self-hosted LibreCrawl')
          ])
        ])
      ]),
      React.createElement('div', { key: 'checks', className: 'free-seo-check-row' }, [
        React.createElement('label', { key: 'robots', className: 'free-seo-check' }, React.createElement('input', {
          type: 'checkbox', checked: form.respectRobots, disabled: disabled,
          onChange: function handleChange(event) { update('respectRobots', event.target.checked); }
        }), React.createElement('span', null, 'Respect robots.txt')),
        React.createElement('label', { key: 'sitemap', className: 'free-seo-check' }, React.createElement('input', {
          type: 'checkbox', checked: form.includeSitemap, disabled: disabled,
          onChange: function handleChange(event) { update('includeSitemap', event.target.checked); }
        }), React.createElement('span', null, 'Include sitemap discovery')),
        React.createElement('label', { key: 'external', className: 'free-seo-check' }, React.createElement('input', {
          type: 'checkbox', checked: form.includeExternalLinks, disabled: disabled,
          onChange: function handleChange(event) { update('includeExternalLinks', event.target.checked); }
        }), React.createElement('span', null, 'Store external link samples'))
      ]),
      React.createElement('label', { key: 'legal', className: 'free-seo-check free-seo-legal-check' }, [
        React.createElement('input', {
          key: 'input',
          type: 'checkbox',
          required: true,
          checked: form.crawlAuthorizationAccepted,
          disabled: disabled,
          onChange: function handleChange(event) { update('crawlAuthorizationAccepted', event.target.checked); }
        }),
        React.createElement('span', { key: 'text' }, 'I confirm I own this website or have documented authority to crawl, audit, and analyse it. I will not use JiffyScore to bypass access controls, probe private networks, or scan systems without permission.')
      ]),
      React.createElement('button', { key: 'submit', className: 'button button-primary', type: 'submit', disabled: disabled }, disabled ? 'Running crawl...' : 'Run technical crawl')
    ]);
  }

  global.FreeSeoCrawlRunForm = CrawlRunForm;
})(typeof window !== 'undefined' ? window : globalThis);
