{
    type: 'tabs',
    i18n: true,
    items: {
        // main tab
        mainTab: {
            type: 'panel',
            label: 'Main settings',
            items: {
                bind: {
                    newLine: true,
                    type: 'ip',
                    listenOnAllPorts: true,
                    label: 'IP',
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 5,
                },
                port: {
                    type: 'port',
                    min: 1,
                    label: 'Port',
                    xs: 12,
                    sm: 12,
                    md: 4,
                    lg: 3,
                },
                secure: {
                    newLine: true,
                    type: 'checkbox',
                    label: 'Secure(HTTPS)',
                    xs: 12,
                    sm: 12,
                    md: 6,
                    lg: 5,
                },
                _certs: {
                    type: 'certificates',
                    newLine: true,
                    hidden: '!data.secure',
                    xs: 12,
                    sm: 12,
                },
                auth: {
                    newLine: true,
                    type: 'checkbox',
                    confirm: {
                        condition: '!data.secure && data.auth',
                        title: 'Warning!',
                        text: 'Unsecure_Auth',
                        ok: 'Ignore warning',
                        cancel: 'Disable authentication',
                        type: 'warning',
                        alsoDependsOn: ['secure'],
                    },
                    label: 'Authentication',
                    xs: 12,
                    sm: 12,
                    md: 6,
                    lg: 2,
                },
                noBasicAuth: {
                    type: 'checkbox',
                    hidden: '!data.auth',
                    label: 'Disable basic authentication',
                    xs: 12,
                    sm: 12,
                    md: 6,
                    lg: 2,
                },
                defaultUser: {
                    hidden: '!!data.auth',
                    type: 'user',
                    label: 'Run as',
                    xs: 12,
                    sm: 12,
                    md: 6,
                    lg: 2,
                },
                ttl: {
                    hidden: '!data.auth',
                    type: 'number',
                    label: 'Login timeout',
                    help: 'sec - minimum 120, recommended 3600',
                    min: 120,
                    max: 31536000,
                    default: 3600,
                    xs: 12,
                    sm: 12,
                    md: 6,
                    lg: 2,
                },
                autoUpdate: {
                    newLine: true,
                    type: 'select',
                    label: 'Auto update',
                    options: [
                        {
                            label: 'manually',
                            value: 0,
                        },
                        {
                            label: 'every 12 hours',
                            value: 12,
                        },
                        {
                            label: 'every day',
                            value: 24,
                        },
                        {
                            label: 'every 2 days',
                            value: 48,
                        },
                        {
                            label: 'every 3 days',
                            value: 72,
                        },
                        {
                            label: 'every week',
                            value: 168,
                        },
                        {
                            label: 'every 2 weeks',
                            value: 336,
                        },
                    ],
                    xs: 12,
                    sm: 12,
                    md: 6,
                    lg: 2,
                },
                thresholdValue: {
                    type: 'number',
                    min: 50,
                    label: 'Events threshold value',
                    xs: 12,
                    sm: 12,
                    md: 4,
                    lg: 2,
                },
                language: {
                    newLine: true,
                    label: 'Language for only this instance',
                    system: true,
                    type: 'language',
                    noTranslation: true,
                    xs: 12,
                    sm: 12,
                    md: 4,
                    lg: 2,
                },
                doNotCheckPublicIP: {
                    newLine: true,
                    label: 'Do not check if this instance is available from internet',
                    type: 'checkbox',
                    xs: 12,
                    sm: 12,
                    md: 4,
                    lg: 4,
                    hidden: '!!data.auth',
                },
                disableMcp: {
                    type: 'checkbox',
                    newLine: true,
                    label: 'EOS Assist deaktivieren',
                    sx: 12,
                }
            },
        },
        eosSecurityTab: {
            type: 'panel',
            label: 'EOS Sicherheit',
            items: {
                _eosSecurityInfo: {
                    type: 'staticText',
                    newLine: true,
                    text: 'EOS Sicherheit sperrt den internen Legacy-Admin-Zugang, blendet ihn f\u00fcr Installateur- und Endkundenrollen aus und sch\u00fctzt ausgew\u00e4hlte Systemadapter. Updates bleiben m\u00f6glich, weil keine harte nondeletable-Sperre verwendet wird.',
                    xs: 12,
                    sm: 12,
                },
                eosLockLegacyAdmin: {
                    newLine: true,
                    type: 'checkbox',
                    label: 'Alten Admin-Zugang sperren',
                    help: 'Hält admin.0 deaktiviert und bindet ihn nur lokal auf den Fallback-Port. Nur Administratoren dürfen diese Sperre für Wartung kurz deaktivieren.',
                    xs: 12,
                    sm: 12,
                    md: 6,
                    lg: 4,
                },
                eosLegacyAdminLockBind: {
                    type: 'text',
                    label: 'Lokale Bind-Adresse des alten Admin',
                    hidden: '!data.eosLockLegacyAdmin',
                    xs: 12,
                    sm: 12,
                    md: 6,
                    lg: 3,
                },
                eosLegacyAdminLockPort: {
                    type: 'port',
                    label: 'Lokaler Fallback-Port des alten Admin',
                    hidden: '!data.eosLockLegacyAdmin',
                    min: 1,
                    xs: 12,
                    sm: 12,
                    md: 6,
                    lg: 3,
                },
                eosHideLegacyAdminFromNonAdmins: {
                    newLine: true,
                    type: 'checkbox',
                    label: 'Alten Admin vor Installateur und Endkunde ausblenden',
                    help: 'Nur Benutzer der EOS-Administratorgruppen sehen den internen Legacy-Admin und admin.0. Installateur- und Endkundenrollen sehen diesen Bereich nicht.',
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 5,
                },
                eosSecurityAdminGroups: {
                    newLine: true,
                    type: 'table',
                    label: 'EOS Administratorgruppen',
                    help: 'Nur Mitglieder dieser Gruppen d\u00fcrfen gesperrte EOS-Systembereiche sehen und warten. system.group.administrator ist immer enthalten.',
                    xs: 12,
                    sm: 12,
                    items: [
                        {
                            type: 'text',
                            title: 'Gruppe',
                            attr: 'group',
                            width: '30%',
                            filter: false,
                            sort: false,
                            default: 'system.group.administrator',
                        },
                        {
                            type: 'text',
                            title: 'Beschreibung',
                            attr: 'note',
                            width: '55%',
                            filter: false,
                            sort: false,
                            default: '',
                        },
                        {
                            type: 'checkbox',
                            title: 'Aktiv',
                            attr: 'enabled',
                            width: '15%',
                            default: true,
                        },
                    ],
                },
                eosServiceGroups: {
                    newLine: true,
                    type: 'table',
                    label: 'NexoWatt Admin-/Servicegruppen',
                    help: 'Mitglieder dieser Gruppen erhalten wie Administratoren vollständigen Zugriff inklusive Sicherheit, Benutzerverwaltung und Expertenmodus.',
                    xs: 12,
                    sm: 12,
                    items: [
                        {
                            type: 'text',
                            title: 'Gruppe',
                            attr: 'group',
                            width: '30%',
                            filter: false,
                            sort: false,
                            default: 'system.group.nexowatt-service',
                        },
                        {
                            type: 'text',
                            title: 'Beschreibung',
                            attr: 'note',
                            width: '55%',
                            filter: false,
                            sort: false,
                            default: 'NexoWatt Admin / Service',
                        },
                        {
                            type: 'checkbox',
                            title: 'Aktiv',
                            attr: 'enabled',
                            width: '15%',
                            default: true,
                        },
                    ],
                },
                eosInstallerGroups: {
                    newLine: true,
                    type: 'table',
                    label: 'EOS Installateurgruppen',
                    help: 'Mitglieder dieser Gruppen erhalten die Installateur-Rolle: Inbetriebnahme, Geräte-/Adapterkonfiguration und Fehlersuche ohne Admin-/Service-Sicherheitsverwaltung.',
                    xs: 12,
                    sm: 12,
                    items: [
                        {
                            type: 'text',
                            title: 'Gruppe',
                            attr: 'group',
                            width: '30%',
                            filter: false,
                            sort: false,
                            default: 'system.group.installateur',
                        },
                        {
                            type: 'text',
                            title: 'Beschreibung',
                            attr: 'note',
                            width: '55%',
                            filter: false,
                            sort: false,
                            default: 'Installateur / Inbetriebnahme',
                        },
                        {
                            type: 'checkbox',
                            title: 'Aktiv',
                            attr: 'enabled',
                            width: '15%',
                            default: true,
                        },
                    ],
                },
                eosEndUserGroups: {
                    newLine: true,
                    type: 'table',
                    label: 'EOS Endkundengruppen',
                    help: 'Mitglieder dieser Gruppen werden auf das Endkunden-Cockpit geführt und sehen keine Admin-/Systembereiche.',
                    xs: 12,
                    sm: 12,
                    items: [
                        {
                            type: 'text',
                            title: 'Gruppe',
                            attr: 'group',
                            width: '30%',
                            filter: false,
                            sort: false,
                            default: 'system.group.endkunde',
                        },
                        {
                            type: 'text',
                            title: 'Beschreibung',
                            attr: 'note',
                            width: '55%',
                            filter: false,
                            sort: false,
                            default: 'Endkunde / Bediener',
                        },
                        {
                            type: 'checkbox',
                            title: 'Aktiv',
                            attr: 'enabled',
                            width: '15%',
                            default: true,
                        },
                    ],
                },
                eosRequireFirstLoginPassword: {
                    newLine: true,
                    type: 'checkbox',
                    label: 'Persönliches Passwort bei erster Anmeldung erzwingen',
                    help: 'Installateur- und Endkundenrollen müssen nach der ersten erfolgreichen Anmeldung ein eigenes Passwort vergeben. Administrator/NexoWatt Service bleibt unverändert.',
                    default: true,
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 5,
                },
                eosFirstLoginPasswordMinLength: {
                    type: 'number',
                    label: 'Mindestlänge des ersten Passworts',
                    help: 'Zulässig sind 8 bis 64 Zeichen. Zusätzlich werden Groß-/Kleinbuchstaben, Zahl und Sonderzeichen verlangt.',
                    min: 8,
                    max: 64,
                    default: 10,
                    xs: 12,
                    sm: 6,
                    md: 4,
                    lg: 3,
                },
                eosAutoAssignDefaultRoleUsers: {
                    newLine: true,
                    type: 'checkbox',
                    label: 'Standardkonten automatisch den EOS Rollen zuordnen',
                    help: 'Stellt die Standardkonten installer und guest bereit, ordnet vorhandene Alternativkonten den passenden Rollen zu und bereitet die einmalige Erstanmeldung vor.',
                    default: true,
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 5,
                },
                eosPasswordlessFirstLogin: {
                    newLine: true,
                    type: 'checkbox',
                    label: 'Einmalige Erstanmeldung ohne Passwort erlauben',
                    help: 'Nur ausdrücklich vorbereitete Installateur- und Endkunden-/Gast-Konten können sich einmalig ohne Passwort aktivieren und müssen unmittelbar ein persönliches Passwort vergeben. Admin/Service ist ausgeschlossen.',
                    default: true,
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 5,
                },
                eosPasswordlessFirstLoginPrivateNetworkOnly: {
                    type: 'checkbox',
                    label: 'Erstanmeldung auf lokales/privates Netzwerk begrenzen',
                    help: 'Verhindert eine kennwortlose Erstaktivierung über öffentliche Client-Adressen. Für Verkaufsgeräte empfohlen und standardmäßig aktiv.',
                    default: true,
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 5,
                },
                eosPasswordClaimTtlMinutes: {
                    type: 'number',
                    label: 'Gültigkeit der Erstaktivierung (Minuten)',
                    help: 'Der kurzlebige Aktivierungsnachweis verfällt automatisch. Zulässig sind 3 bis 30 Minuten.',
                    min: 3,
                    max: 30,
                    default: 10,
                    xs: 12,
                    sm: 6,
                    md: 4,
                    lg: 3,
                },
                eosProtectAdapterDeletion: {
                    newLine: true,
                    type: 'checkbox',
                    label: 'Systemadapter vor L\u00f6schen sch\u00fctzen',
                    help: 'Schützt ausgewählte Adapter in der EOS Oberfläche vor Löschen, Stoppen und kritischen Änderungen durch Installateur- und Endkundenrollen. Adaptereigene Funktionen und Updates bleiben möglich.',
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 5,
                },
                eosApplyAdminOnlyAclToProtectedAdapters: {
                    newLine: true,
                    type: 'checkbox',
                    label: 'Strengen ACL-Schutz f\u00fcr gesch\u00fctzte Adapter aktivieren',
                    help: 'Optionaler harter ACL-Schutz. Standardm\u00e4\u00dfig sch\u00fctzt EOS nur die Oberfl\u00e4che, damit Adapter wie BackItUp weiterhin uneingeschr\u00e4nkt laufen und Updates m\u00f6glich bleiben.',
                    hidden: '!data.eosProtectAdapterDeletion',
                    default: false,
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 5,
                },
                eosProtectedAdapters: {
                    newLine: true,
                    type: 'table',
                    label: 'Gesch\u00fctzte Systemadapter',
                    hidden: '!data.eosProtectAdapterDeletion',
                    xs: 12,
                    sm: 12,
                    items: [
                        {
                            type: 'text',
                            title: 'Adapter',
                            attr: 'adapter',
                            width: '30%',
                            filter: false,
                            sort: false,
                            default: 'backitup',
                        },
                        {
                            type: 'text',
                            title: 'Beschreibung',
                            attr: 'note',
                            width: '55%',
                            filter: false,
                            sort: false,
                            default: '',
                        },
                        {
                            type: 'checkbox',
                            title: 'Aktiv',
                            attr: 'enabled',
                            width: '15%',
                            default: true,
                        },
                    ],
                },
            },
        },
        loadingTab: {
            type: 'panel',
            label: 'Loading background',
            items: {
                loadingBackgroundColor: {
                    type: 'color',
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 4,
                    label: 'Background color of the loading screen',
                },
                loadingHideLogo: {
                    newLine: true,
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 4,
                    type: 'checkbox',
                    label: 'Hide logo',
                },
                loadingBackgroundImage: {
                    newLine: true,
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 4,
                    type: 'checkbox',
                    label: 'Use background image',
                },
                'loading-bg.png': {
                    newLine: true,
                    type: 'image',
                    hidden: '!data.loadingBackgroundImage',
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 4,
                    accept: { 'image/png': [] },
                    label: 'Upload image',
                    crop: true,
                },
            },
        },
        leTab: {
            type: 'panel',
            label: "Let's Encrypt SSL",
            hidden: '!data.secure',
            items: {
                _image: {
                    type: 'staticImage',
                    tooltip: "Read about Let's Encrypt certificates",
                    href: './README.md#lets-encrypt-zertifikate',
                    src: '../../img/le.png',
                    style: {
                        width: 200,
                        height: 59,
                    },
                },
                _staticText: {
                    type: 'staticText',
                    text: 'Use the ACME certificate module for Let’s Encrypt certificates',
                },
            },
        },
        loginTab: {
            type: 'panel',
            label: 'Login background',
            hidden: '!data.auth',
            items: {
                loginBackgroundColor: {
                    type: 'color',
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 4,
                    label: 'Background color of the login screen',
                },
                loginHideLogo: {
                    newLine: true,
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 4,
                    type: 'checkbox',
                    label: 'Hide logo',
                },
                loginMotto: {
                    newLine: true,
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 4,
                    type: 'text',
                    label: 'Own motto',
                },
                loginBackgroundImage: {
                    newLine: true,
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 4,
                    type: 'checkbox',
                    label: 'Use background image',
                },
                'login-bg.png': {
                    newLine: true,
                    type: 'image',
                    hidden: '!data.loginBackgroundImage',
                    xs: 12,
                    sm: 12,
                    md: 8,
                    lg: 4,
                    accept: { 'image/png': [] },
                    label: 'Upload image',
                    crop: true,
                },
            },
        },
        instancesTab: {
            type: 'panel',
            label: 'Access to instances',
            items: {
                _text1: {
                    type: 'staticText',
                    text: 'There is a option to allow access to the specific configuration pages of selected instances.',
                },
                accessLimit: {
                    newLine: true,
                    type: 'checkbox',
                    label: 'Allow access only to specific instances',
                },
                applyRights: {
                    newLine: true,
                    type: 'checkbox',
                    label: 'Apply access rights for selected instances',
                },
                accessAllowedConfigs: {
                    i18n: true,
                    type: 'custom',
                    hidden: '!data.accessLimit',
                    newLine: true,
                    url: 'custom/customComponents.js',
                    name: 'AdminComponentEasyAccessSet/Components/ConfigCustomEasyAccess',
                    bundlerType: 'module',
                },
            },
        },
        reverseProxyTab: {
            type: 'panel',
            label: 'Reverse proxy',
            items: {
                _explanation: {
                    type: 'staticText',
                    text: 'You can use EOS Admin behind a reverse proxy.',
                },
                reverseProxy: {
                    xs: 12,
                    sm: 12,
                    newLine: true,
                    type: 'table',
                    items: [
                        {
                            type: 'text',
                            width: '50%',
                            title: 'Global path',
                            attr: 'globalPath',
                            filter: false,
                            sort: false,
                            default: '/iobroker/',
                        },
                        // {"type": "text", "width": "20%", "title": "Domain", "attr": "domain", "filter": false, "sort": false, "default": "*"},
                        { type: 'staticText', text: '=>', noTranslation: true, width: 20 },
                        {
                            type: 'table',
                            width: '50%',
                            attr: 'paths',
                            filter: false,
                            sort: false,
                            default: [{ instance: 'web.0', path: '/web/' }],
                            items: [
                                {
                                    type: 'instance',
                                    width: 200,
                                    title: { en: 'Instance' },
                                    attr: 'instance',
                                    filter: false,
                                    sort: false,
                                    default: 'web.0',
                                },
                                {
                                    type: 'text',
                                    width: '80%',
                                    title: { en: 'Instance path behind proxy' },
                                    attr: 'path',
                                    filter: false,
                                    sort: false,
                                    default: '/web/',
                                },
                            ],
                        },
                    ],
                },
            },
        },
    },
}
