///
import type { AnchorHTMLAttributes, ReactNode } from "react";
import type { IconNames } from "./icons/iconNames";
import { UrlObject } from "url";
export type TComponentIcon = ReactNode;
export type BaseComponentSizes = "sm" | "md" | "lg";
export interface GenericKeys {
[key: string]: string;
}
export interface DeepGenericKeys {
[key: string]: string | DeepGenericKeys;
}
export interface IconConfigFile {
name: string;
icons: GenericKeys;
}
export interface IconSymbol {
unicode: string;
entity: string;
}
export interface Icon {
name: IconNames;
symbol: IconSymbol;
}
export interface IconObject {
[key: string]: IconSymbol;
}
export interface ClassName {
className?: string;
}
export type ButtonHierarchy = "primary" | "secondary" | "tertiary" | "destructive";
export type ButtonVariants = "filled" | "outlined" | "ghost" | "basic" | "custom";
export type Url = UrlObject | string;
export type LinkTag = React.ComponentType<{
children: ReactNode;
className?: string;
href: Url;
role?: string;
}>;
export interface DefaultLink extends ClassName, Required, "href">> {
}
export interface IDropdownPosition {
top: number;
left?: number;
}
export interface DropdownPositionProps {
position?: IDropdownPosition;
setDropdownHeight(height: number): void;
setDropdownWidth(width: number): void;
}
export interface InputTexts {
label?: ReactNode;
supportingText?: ReactNode;
errorMessage?: ReactNode;
}