Settings

A plugin can provide settings.
Those settings will be merged in the existing settings and will be stored in settings.json only when the user hits Save on the settings-page.
Always make sure to use default values when accessing them!
To provide additional settings implement the Settings provider and add a method provideSettings like this:

use Voyager\Admin\Contracts\Plugins\GenericPlugin;
use Voyager\Admin\Contracts\Plugins\Features\Provider\Settings;

class MyPlugin implements GenericPlugin, Settings
{
    public function provideSettings(): array
    {
        return [
            [
                'type'          => 'text',
                'group'         => 'My group',
                'name'          => 'My setting',
                'key'           => 'my_setting',
                'value'         => 'Value',
                'translatable'  => false,
                'info'          => 'This is a setting provided by a plugin',
                'options'       => [],
                'validation'    => [],
            ],
            [
                'type'          => 'text',
                'group'         => 'My group',
                'name'          => 'My second setting',
                'key'           => 'my_second_setting',
                'value'         => 'Value',
                'translatable'  => false,
                'info'          => 'This is another setting provided by a plugin',
                'options'       => [],
                'validation'    => [],
            ]
        ];
    }
}

INFO

Make sure to always return an array containing settings (as an array).
The best way to generate this setting is to simply create it through the UI and then copy/paste it from your settings.json file.

WARNING

Whenever a setting with a matching group and key already exists, your provided setting will be ignored!