/**
 * Tipagem dos dados de entrada dos componentes de celulas 
 */

import type { LucideIcon } from "lucide-vue-next";

export type tiposTabelaCelulas = {
  textoSimples: {
    texto: string;
    acao?: () => void;
  };
  textoTruncado: {
    texto: string;
    acao?: () => void;
  };
  numero: {
    numero: number;
    /** Texto opcional exibido antes do número (ex.: "R$", "≈"). */
    prefixo?: string;
    /** Texto opcional exibido depois do número (ex.: "kg", "%"). */
    sufixo?: string;
    acao?: () => void;
  };

  tags: {
    opcoes: {
      /** Texto exibido dentro da tag. */
      rotulo: string;
      /** Cor do chip (segue as cores do Vuetify, ex.: "primary", "success", "error"). */
      cor?: string;
      /** Ícone (Lucide) opcional exibido antes do rótulo. */
      icone?: LucideIcon;
      /** Ação opcional da tag. Quando existir, o chip vira clicável. */
      acao?: () => void;
    }[];
  };

  data: {
    /** Valor em ISO 8601 (ex.: "2026-01-09T16:15:00Z"). */
    valor: string;
    /** Define o formato de exibição. */
    formato: "data" | "data_hora" | "relativo";
    /** Ação opcional ao clicar no valor. */
    acao?: () => void;
  };
};

export type tipoTabelaCelula = keyof tiposTabelaCelulas;

