{
  "slug": "onboarding",
  "name": "Employee Onboarding",
  "description": "Collects new-starter details and tracks them through a Pending \u2192 Reviewing \u2192 Approved/Rejected workflow. Includes a right-to-work file upload and HR review actions.",
  "icon": "user-plus",
  "roles": [
    {
      "name": "hr",
      "label": "HR Reviewer",
      "level": 2,
      "permissions": [
        "notifications"
      ],
      "badgeClass": "badge-info"
    }
  ],
  "options": [
    {
      "name": "namespace",
      "label": "Namespace",
      "default": "onboarding",
      "hint": "Single name that cascades into every slug below. Change this once and the collection, form, and actions all rename in lockstep - or override the individual slugs below to break the chain."
    },
    {
      "name": "collectionSlug",
      "label": "Collection slug",
      "default": "{{namespace}}",
      "hint": "Where submitted starter records are stored"
    },
    {
      "name": "formSlug",
      "label": "Form slug",
      "default": "{{namespace}}-form",
      "hint": "Embedded via [form name=\"...\" /]"
    },
    {
      "name": "actionPrefix",
      "label": "Action slug prefix",
      "default": "{{namespace}}",
      "hint": "Per-action slugs: <prefix>-review, <prefix>-approve, <prefix>-reject"
    },
    {
      "name": "hrEmail",
      "label": "HR email (optional)",
      "default": "",
      "hint": "If set, scaffolds an HR user account that can review and approve onboarding submissions. Leave blank to skip."
    },
    {
      "name": "hrPassword",
      "label": "HR initial password (optional)",
      "default": "",
      "hint": "Required when HR email is set. The HR user can change this immediately via their profile after first login."
    }
  ],
  "collection": {
    "title": "Onboarding",
    "description": "New-starter onboarding submissions",
    "fields": [
      {
        "name": "fullName",
        "label": "Full name",
        "type": "text",
        "required": true
      },
      {
        "name": "email",
        "label": "Work email",
        "type": "email",
        "required": true
      },
      {
        "name": "phone",
        "label": "Phone number",
        "type": "text"
      },
      {
        "name": "startDate",
        "label": "Start date",
        "type": "date",
        "required": true
      },
      {
        "name": "role",
        "label": "Role / position",
        "type": "text",
        "required": true
      },
      {
        "name": "manager",
        "label": "Manager",
        "type": "text"
      },
      {
        "name": "residencyStatus",
        "label": "Right-to-work status",
        "type": "multiselect",
        "required": true,
        "options": [
          {
            "value": "uk-national",
            "label": "UK national"
          },
          {
            "value": "settled-status",
            "label": "Settled status"
          },
          {
            "value": "visa-required",
            "label": "Visa required"
          },
          {
            "value": "other",
            "label": "Other"
          }
        ]
      },
      {
        "name": "rightToWorkDoc",
        "label": "Right-to-work document",
        "type": "file",
        "required": false,
        "file": {
          "accept": "application/pdf,image/jpeg,image/png",
          "maxSize": 5242880
        }
      },
      {
        "name": "references",
        "label": "Reference contacts",
        "type": "textarea",
        "required": false,
        "placeholder": "Name, email, relationship - one per line"
      },
      {
        "name": "notes",
        "label": "Notes for HR",
        "type": "textarea"
      },
      {
        "name": "status",
        "label": "Status",
        "type": "select",
        "required": false,
        "options": [
          {
            "value": "pending",
            "label": "Pending review"
          },
          {
            "value": "reviewing",
            "label": "Reviewing"
          },
          {
            "value": "approved",
            "label": "Approved"
          },
          {
            "value": "rejected",
            "label": "Rejected"
          }
        ]
      }
    ],
    "api": {
      "read": {
        "enabled": false
      },
      "create": {
        "enabled": false
      },
      "update": {
        "enabled": false
      },
      "delete": {
        "enabled": false
      }
    },
    "rowAccess": {
      "update": {
        "ownerField": "createdBy",
        "fallbackRoles": [
          "admin",
          "super-admin"
        ]
      },
      "delete": {
        "ownerField": "createdBy",
        "fallbackRoles": [
          "admin",
          "super-admin"
        ]
      }
    }
  },
  "form": {
    "title": "Employee Onboarding",
    "description": "Welcome aboard - let's get you set up.",
    "fields": [
      {
        "name": "fullName",
        "label": "Full name",
        "type": "text",
        "required": true,
        "placeholder": "Alex Morgan"
      },
      {
        "name": "email",
        "label": "Work email",
        "type": "email",
        "required": true,
        "placeholder": "alex@company.com"
      },
      {
        "name": "phone",
        "label": "Phone number",
        "type": "text",
        "required": false
      },
      {
        "name": "startDate",
        "label": "Start date",
        "type": "date",
        "required": true
      },
      {
        "name": "role",
        "label": "Role you're starting",
        "type": "text",
        "required": true
      },
      {
        "name": "manager",
        "label": "Your manager",
        "type": "text",
        "required": false
      },
      {
        "name": "residencyStatus",
        "label": "Right-to-work status",
        "type": "select",
        "required": true,
        "options": [
          {
            "value": "uk-national",
            "label": "UK national"
          },
          {
            "value": "settled-status",
            "label": "Settled status"
          },
          {
            "value": "visa-required",
            "label": "Visa required"
          },
          {
            "value": "other",
            "label": "Other"
          }
        ]
      },
      {
        "name": "rightToWorkDoc",
        "label": "Right-to-work document",
        "type": "file",
        "required": true,
        "file": {
          "accept": "application/pdf,image/jpeg,image/png",
          "maxSize": 5242880
        },
        "helper": "PDF, JPEG or PNG - up to 5 MB"
      },
      {
        "name": "references",
        "label": "Reference contacts",
        "type": "textarea",
        "required": false,
        "placeholder": "Name, email, relationship - one per line"
      }
    ],
    "settings": {
      "submitText": "Send to HR",
      "successMessage": "Thanks - HR will review your details shortly.",
      "honeypot": true,
      "rateLimitPerMinute": 3,
      "actionSlug": ""
    },
    "actions": {
      "collection": {
        "enabled": true,
        "slug": ""
      },
      "email": {
        "enabled": false
      },
      "webhook": {
        "enabled": false
      }
    }
  },
  "users": [
    {
      "email":           "{{hrEmail}}",
      "name":            "HR Lead",
      "password":        "{{hrPassword}}",
      "role":            "hr",
      "additionalRoles": []
    }
  ],
  "actions": [
    {
      "slug": "{{actionPrefix}}-review",
      "title": "Move to reviewing",
      "description": "HR has picked this up and started checks.",
      "collection": "{{collectionSlug}}",
      "trigger": {
        "label": "Mark as reviewing",
        "icon": "eye",
        "style": "primary"
      },
      "transition": {
        "field": "status",
        "from": [
          "pending"
        ],
        "to": "reviewing"
      },
      "access": {
        "roles": [
          "hr",
          "admin",
          "super-admin"
        ]
      },
      "steps": [
        {
          "type": "updateField",
          "config": {
            "field": "status",
            "value": "reviewing"
          }
        }
      ]
    },
    {
      "slug": "{{actionPrefix}}-approve",
      "title": "Approve",
      "description": "Right-to-work and references checked; cleared to start.",
      "collection": "{{collectionSlug}}",
      "trigger": {
        "label": "Approve",
        "icon": "check-circle",
        "style": "success",
        "confirmMessage": "Mark this starter as approved?"
      },
      "transition": {
        "field": "status",
        "from": [
          "reviewing"
        ],
        "to": "approved"
      },
      "access": {
        "roles": [
          "hr",
          "admin",
          "super-admin"
        ]
      },
      "steps": [
        {
          "type": "updateField",
          "config": {
            "field": "status",
            "value": "approved"
          }
        },
        {
          "type": "email",
          "config": {
            "to": "{{entry.data.email}}",
            "subject": "Welcome - you're cleared to start",
            "template": "Hi {{entry.data.fullName}},\n\nGreat news - your onboarding paperwork has been approved. Your first day is {{entry.data.startDate}}.\n\nIf you have any questions before then, just reply to this email.\n\nThe HR team"
          }
        }
      ]
    },
    {
      "slug": "{{actionPrefix}}-reject",
      "title": "Reject",
      "description": "Information missing or right-to-work check failed.",
      "collection": "{{collectionSlug}}",
      "trigger": {
        "label": "Reject",
        "icon": "x-circle",
        "style": "danger",
        "confirmMessage": "Reject this onboarding submission?"
      },
      "transition": {
        "field": "status",
        "from": [
          "pending",
          "reviewing"
        ],
        "to": "rejected"
      },
      "access": {
        "roles": [
          "hr",
          "admin",
          "super-admin"
        ]
      },
      "steps": [
        {
          "type": "updateField",
          "config": {
            "field": "status",
            "value": "rejected"
          }
        }
      ]
    }
  ],
  "wireForm": true,
  "snippet": "[form name=\"{{formSlug}}\" /]\n\n## All onboarding submissions\n\n[collection slug=\"{{collectionSlug}}\" display=\"cards\" columns=\"2\" title-field=\"fullName\" searchable filterable=\"status,residencyStatus\" sortable transitions /]"
}