<?php

declare(strict_types=1);

namespace CliqThemes\UI\Contracts;

/**
 * Represents an admin page definition that can be rendered by the CliqThemes UI library.
 */
interface Page
{
    /**
     * Unique slug used for the WordPress admin page and REST routing.
     */
    public function slug(): string;

    /**
     * Human readable page title displayed in the header.
     */
    public function title(): string;

    /**
     * Capability required to access the page.
     */
    public function capability(): string;

    /**
     * Optional parent slug for submenu registration.
     */
    public function parent(): ?string;

    /**
     * Optional menu position hint.
     */
    public function position(): ?int;

    /**
     * Optional dashicon or base64 menu icon string.
     */
    public function icon(): ?string;

    /**
     * Script handle that powers the React surface.
     */
    public function scriptHandle(): string;

    /**
     * Identifier for the data provider backing the page.
     */
    public function dataProvider(): ?string;
}
