$settings * @param array $render_args * @throws \InvalidArgumentException When no setting is supplied. */ public function __construct( public readonly string $id, public readonly string $label, public readonly string $description, public readonly FieldType $type, public readonly array $settings, public readonly array $render_args = array(), public readonly Requirement $requirement = Requirement::Always, // Descriptions are hard-escaped, so a documentation link is carried as // data and rendered as its own anchor rather than as inline markup. public readonly string $doc_url = '', public readonly string $doc_label = '', ) { if ( array() === $settings ) { throw new \InvalidArgumentException( 'A field must own at least one setting.' ); } } public function primary(): SettingDefinition { return $this->settings[0]; } }