/*
*               dotfiles - components.d.ts
*
*   Created by Janis Hutz 03/22/2025, Licensed under the GPL V3 License
*           https://janishutz.com, development@janishutz.com
*
*
*/

import type { UIComponent, ResultElement } from "./rendering";


export interface App extends ResultElement {
    /**
     * The app start command that will be executed
     */
    command: string;
}

// TODO: Finish
export interface DictionaryEntry extends ResultElement {
    /**
     * Execute no command
     */
    action: null;


    /**
     * The dictionary definition
     */
    definition: string;
}

export interface CMDOutput extends ResultElement {
    /**
     * Stdout from the command that was run
     */
    result: string;
}

export interface Calculation extends ResultElement {
    /**
     * THe calculation result
     */
    result: string;
}


/* ************* *
 * UI Components *
 * ************* */
 
export interface LargeUIComponent extends UIComponent {
    /**
     * The number of items to display per line. Image size will automatically be scaled
     * based on width
     */
    itemsPerLine: number;
}

export interface MediumUIComponent extends UIComponent {}

export interface ListUIComponent extends UIComponent {}

export interface DictionaryUIComponent extends UIComponent {
    elements: DictionaryEntry[];
}

export interface CMDOutputUIComponent extends UIComponent {
    elements: CMDOutput[];
}

export interface CalculationUIComponent extends UIComponent {
    elements: Calculation[];
}
