<%
  const isEditSupervisor = mode === 'edit';
  const supervisorData = isEditSupervisor && supervisor ? supervisor : {};
  const formRoles = Array.isArray(roles) ? roles : [];
  const formLocale = typeof lang === 'string' && lang.toLowerCase().startsWith('en') ? 'en' : 'ar';
  const currentRoleId = supervisorData && supervisorData.role && supervisorData.role.role
    ? String(supervisorData.role.role)
    : '';
  const currentStatus = supervisorData.status || 'active';
  const formText = formLocale === 'ar'
    ? {
        avatarTitle: 'صورة المشرف',
        avatarHelper: 'PNG / JPG / JPEG فقط — صورة واضحة ومربعة.',
        chooseImage: 'اختيار صورة',
        invalidImage: 'اختر صورة بصيغة PNG أو JPG أو JPEG فقط',
        name: 'الاسم الكامل',
        namePlaceholder: 'اكتب اسم المشرف',
        nameRequired: 'اسم المشرف مطلوب',
        email: 'البريد الإلكتروني',
        emailPlaceholder: 'name@example.com',
        emailRequired: 'البريد الإلكتروني مطلوب',
        emailInvalid: 'أدخل بريدًا إلكترونيًا صحيحًا',
        phone: 'رقم الجوال',
        phonePlaceholder: '05xxxxxxxx',
        phoneRequired: 'رقم الجوال مطلوب',
        phoneInvalid: 'أدخل رقم جوال صحيحًا من 10 أرقام',
        role: 'دور الوصول',
        rolePlaceholder: 'اختر دور المشرف',
        roleRequired: 'دور الوصول مطلوب',
        noRoles: 'لا توجد أدوار متاحة',
        status: 'حالة الحساب',
        active: 'نشط',
        blocked: 'محظور',
        statusRequired: 'حالة الحساب مطلوبة',
        password: isEditSupervisor ? 'كلمة مرور جديدة' : 'كلمة المرور',
        passwordPlaceholder: isEditSupervisor ? 'اتركها فارغة للاحتفاظ بالحالية' : 'أدخل كلمة مرور قوية',
        passwordRequired: 'كلمة المرور مطلوبة',
        passwordInvalid: 'استخدم أحرفًا كبيرة وصغيرة ورقمًا ورمزًا',
        optional: 'اختياري'
      }
    : {
        avatarTitle: 'Supervisor photo',
        avatarHelper: 'PNG / JPG / JPEG only — use a clear square image.',
        chooseImage: 'Choose image',
        invalidImage: 'Choose a PNG, JPG, or JPEG image only',
        name: 'Full name',
        namePlaceholder: 'Enter supervisor name',
        nameRequired: 'Supervisor name is required',
        email: 'Email address',
        emailPlaceholder: 'name@example.com',
        emailRequired: 'Email is required',
        emailInvalid: 'Enter a valid email address',
        phone: 'Phone number',
        phonePlaceholder: '05xxxxxxxx',
        phoneRequired: 'Phone number is required',
        phoneInvalid: 'Enter a valid 10-digit phone number',
        role: 'Access role',
        rolePlaceholder: 'Select supervisor role',
        roleRequired: 'Access role is required',
        noRoles: 'No roles available',
        status: 'Account status',
        active: 'Active',
        blocked: 'Blocked',
        statusRequired: 'Account status is required',
        password: isEditSupervisor ? 'New password' : 'Password',
        passwordPlaceholder: isEditSupervisor ? 'Leave blank to keep the current password' : 'Enter a strong password',
        passwordRequired: 'Password is required',
        passwordInvalid: 'Use uppercase, lowercase, a number, and a symbol',
        optional: 'Optional'
      };
  const avatarSource = supervisorData.image || '/admin/assets/img/front-pages/icons/user.png';
%>

<div class="kt-people-upload" data-people-upload>
  <span class="kt-people-upload__preview">
    <img
      src="<%= avatarSource %>"
      alt=""
      data-people-upload-preview
      data-people-image
      data-people-image-fallback="/admin/assets/img/front-pages/icons/user.png"
    >
  </span>
  <span class="kt-people-upload__copy">
    <strong><%= formText.avatarTitle %></strong>
    <span><%= formText.avatarHelper %></span>
    <small data-people-upload-name></small>
    <small class="kt-people-field__error" data-people-upload-error hidden></small>
  </span>
  <label class="kt-people-btn kt-people-btn--secondary" for="supervisor-avatar">
    <i class="ti ti-photo-up" aria-hidden="true"></i>
    <span><%= formText.chooseImage %></span>
  </label>
  <input
    id="supervisor-avatar"
    type="file"
    name="avatar"
    accept="image/png,image/jpeg,image/jpg"
    data-people-upload-input
    data-invalid-file-message="<%= formText.invalidImage %>"
  >
</div>

<div class="kt-people-form__grid">
  <div class="kt-people-field" data-people-field>
    <label for="supervisor-name"><%= formText.name %></label>
    <input
      class="kt-people-field__control"
      id="supervisor-name"
      type="text"
      name="name"
      value="<%= supervisorData.name || '' %>"
      placeholder="<%= formText.namePlaceholder %>"
      minlength="2"
      maxlength="120"
      required
      autocomplete="name"
      data-required-message="<%= formText.nameRequired %>"
      data-invalid-message="<%= formText.nameRequired %>"
    >
    <small class="kt-people-field__error" data-people-field-error hidden></small>
  </div>

  <div class="kt-people-field" data-people-field>
    <label for="supervisor-email"><%= formText.email %></label>
    <input
      class="kt-people-field__control"
      id="supervisor-email"
      type="email"
      name="email"
      value="<%= supervisorData.email || '' %>"
      placeholder="<%= formText.emailPlaceholder %>"
      required
      autocomplete="email"
      dir="ltr"
      data-required-message="<%= formText.emailRequired %>"
      data-invalid-message="<%= formText.emailInvalid %>"
    >
    <small class="kt-people-field__error" data-people-field-error hidden></small>
  </div>

  <div class="kt-people-field" data-people-field>
    <label for="supervisor-phone"><%= formText.phone %></label>
    <input
      class="kt-people-field__control"
      id="supervisor-phone"
      type="tel"
      name="phone"
      value="<%= supervisorData.phone || '' %>"
      placeholder="<%= formText.phonePlaceholder %>"
      inputmode="numeric"
      pattern="[0-9]{10}"
      maxlength="10"
      required
      autocomplete="tel"
      dir="ltr"
      data-required-message="<%= formText.phoneRequired %>"
      data-invalid-message="<%= formText.phoneInvalid %>"
    >
    <small class="kt-people-field__error" data-people-field-error hidden></small>
  </div>

  <div class="kt-people-field" data-people-field>
    <label id="supervisor-role-label"><%= formText.role %></label>
    <div
      class="kt-people-select"
      data-people-select
      data-placeholder="<%= formText.rolePlaceholder %>"
    >
      <select
        name="role"
        required
        data-people-native-select
        aria-labelledby="supervisor-role-label"
        data-required-message="<%= formText.roleRequired %>"
      >
        <option value=""><%= formText.rolePlaceholder %></option>
        <% formRoles.forEach((role) => { %>
          <%
            const roleId = role.roleId || role._id || '';
            const roleLabel = role.name && typeof role.name === 'object'
              ? (role.name[formLocale] || role.name.ar || role.name.en || '')
              : (role.name || '');
          %>
          <option value="<%= roleId %>" <%= String(roleId) === currentRoleId ? 'selected' : '' %>>
            <%= roleLabel %>
          </option>
        <% }) %>
      </select>
      <button
        class="kt-people-select__trigger"
        type="button"
        role="combobox"
        aria-haspopup="listbox"
        aria-expanded="false"
        aria-labelledby="supervisor-role-label supervisor-role-value"
        data-people-select-trigger
      >
        <span class="kt-people-select__value">
          <span class="kt-people-select__value-dot" aria-hidden="true"></span>
          <span id="supervisor-role-value" data-people-select-value><%= formText.rolePlaceholder %></span>
        </span>
        <span class="kt-people-select__chevron" aria-hidden="true">
          <i class="ti ti-chevron-down"></i>
        </span>
      </button>
      <div class="kt-people-select__menu" role="listbox" data-people-select-menu hidden>
        <% if (!formRoles.length) { %>
          <span class="kt-people-select__option"><%= formText.noRoles %></span>
        <% } %>
        <% formRoles.forEach((role, index) => { %>
          <%
            const roleId = role.roleId || role._id || '';
            const roleLabel = role.name && typeof role.name === 'object'
              ? (role.name[formLocale] || role.name.ar || role.name.en || '')
              : (role.name || '');
          %>
          <button
            class="kt-people-select__option"
            id="supervisor-role-option-<%= index %>"
            type="button"
            role="option"
            tabindex="-1"
            data-people-select-option
            data-value="<%= roleId %>"
            aria-selected="<%= String(roleId) === currentRoleId ? 'true' : 'false' %>"
          >
            <span><%= roleLabel %></span>
            <i class="ti ti-check kt-people-select__check" aria-hidden="true"></i>
          </button>
        <% }) %>
      </div>
    </div>
    <small class="kt-people-field__error" data-people-field-error hidden></small>
  </div>

  <div class="kt-people-field" data-people-field>
    <label id="supervisor-status-label"><%= formText.status %></label>
    <div class="kt-people-select" data-people-select data-placeholder="<%= formText.status %>">
      <select
        name="status"
        required
        data-people-native-select
        aria-labelledby="supervisor-status-label"
        data-required-message="<%= formText.statusRequired %>"
      >
        <option value="active" <%= currentStatus === 'active' ? 'selected' : '' %>><%= formText.active %></option>
        <option value="block" <%= currentStatus === 'block' ? 'selected' : '' %>><%= formText.blocked %></option>
      </select>
      <button
        class="kt-people-select__trigger"
        type="button"
        role="combobox"
        aria-haspopup="listbox"
        aria-expanded="false"
        aria-labelledby="supervisor-status-label supervisor-status-value"
        data-people-select-trigger
      >
        <span class="kt-people-select__value">
          <span class="kt-people-select__value-dot" aria-hidden="true"></span>
          <span id="supervisor-status-value" data-people-select-value></span>
        </span>
        <span class="kt-people-select__chevron" aria-hidden="true">
          <i class="ti ti-chevron-down"></i>
        </span>
      </button>
      <div class="kt-people-select__menu" role="listbox" data-people-select-menu hidden>
        <% [{ value: 'active', label: formText.active }, { value: 'block', label: formText.blocked }].forEach((option, index) => { %>
          <button
            class="kt-people-select__option"
            id="supervisor-status-option-<%= index %>"
            type="button"
            role="option"
            tabindex="-1"
            data-people-select-option
            data-value="<%= option.value %>"
            aria-selected="<%= currentStatus === option.value ? 'true' : 'false' %>"
          >
            <span><%= option.label %></span>
            <i class="ti ti-check kt-people-select__check" aria-hidden="true"></i>
          </button>
        <% }) %>
      </div>
    </div>
    <small class="kt-people-field__error" data-people-field-error hidden></small>
  </div>

  <div class="kt-people-field" data-people-field>
    <label for="supervisor-password">
      <%= formText.password %>
      <% if (isEditSupervisor) { %><small>(<%= formText.optional %>)</small><% } %>
    </label>
    <div class="kt-people-password">
      <input
        class="kt-people-field__control"
        id="supervisor-password"
        type="password"
        name="password"
        placeholder="<%= formText.passwordPlaceholder %>"
        <%= isEditSupervisor ? '' : 'required' %>
        autocomplete="new-password"
        data-required-message="<%= formText.passwordRequired %>"
        data-invalid-message="<%= formText.passwordInvalid %>"
      >
      <button
        class="kt-people-password__toggle"
        type="button"
        data-people-password-toggle
        aria-label="<%= formText.password %>"
        aria-pressed="false"
      >
        <i class="ti ti-eye" aria-hidden="true"></i>
      </button>
    </div>
    <small class="kt-people-field__hint"><%= formText.passwordInvalid %></small>
    <small class="kt-people-field__error" data-people-field-error hidden></small>
  </div>
</div>
