import { DetailedHTMLProps, HTMLAttributes, ComponentType, ButtonHTMLAttributes, InputHTMLAttributes, SelectHTMLAttributes, TextareaHTMLAttributes } from 'react';
// ============================================================================
// COMPONENT PROPS interfaces
// ============================================================================
export interface FluentButtonProps extends DetailedHTMLProps, HTMLButtonElement> {
variant?: 'primary' | 'secondary' | 'outline';
size?: 'sm' | 'md' | 'lg';
loading?: boolean;
}
export interface FluentCardProps extends DetailedHTMLProps, HTMLElement> {
variant?: 'elevated' | 'outlined' | 'filled';
padding?: string;
}
export interface FluentInputProps extends DetailedHTMLProps, HTMLInputElement> {
variant?: string;
}
export interface FluentSelectProps extends DetailedHTMLProps, HTMLSelectElement> {}
export interface FluentCheckboxProps extends DetailedHTMLProps, HTMLInputElement> {}
export interface FluentRadioProps extends DetailedHTMLProps, HTMLInputElement> {}
export interface FluentTextareaProps extends DetailedHTMLProps, HTMLTextAreaElement> {}
export interface FluentSwitchProps extends DetailedHTMLProps, HTMLElement> {
checked?: boolean;
disabled?: boolean;
}
export interface FluentSliderProps extends DetailedHTMLProps, HTMLElement> {
min?: number;
max?: number;
value?: number;
}
export interface FluentProgressProps extends DetailedHTMLProps, HTMLElement> {
value?: number;
max?: number;
}
export interface FluentBadgeProps extends DetailedHTMLProps, HTMLElement> {
variant?: 'primary' | 'success' | 'warning' | 'error';
}
export interface FluentAvatarProps extends DetailedHTMLProps, HTMLElement> {
src?: string;
size?: 'sm' | 'md' | 'lg';
initials?: string;
}
export interface FluentModalProps extends DetailedHTMLProps, HTMLElement> {
open?: boolean;
}
export interface FluentToastProps extends DetailedHTMLProps, HTMLElement> {
open?: boolean;
text?: string;
}
export interface FluentTabsProps extends DetailedHTMLProps, HTMLElement> {
selected?: string;
}
export interface FluentAccordionProps extends DetailedHTMLProps, HTMLElement> {
open?: boolean;
}
export interface FluentTooltipProps extends DetailedHTMLProps, HTMLElement> {
text?: string;
position?: 'top' | 'bottom' | 'left' | 'right';
}
export interface FluentBreadcrumbProps extends DetailedHTMLProps, HTMLElement> {}
export interface FluentChipProps extends DetailedHTMLProps, HTMLElement> {}
export interface FluentDropdownProps extends DetailedHTMLProps, HTMLElement> {
open?: boolean;
}
export interface FluentMenuProps extends DetailedHTMLProps, HTMLElement> {}
export interface FluentPaginationProps extends DetailedHTMLProps, HTMLElement> {
page?: number;
pages?: number;
}
export interface FluentNotificationProps extends DetailedHTMLProps, HTMLElement> {
open?: boolean;
title?: string;
message?: string;
}
export interface FluentTableProps extends DetailedHTMLProps, HTMLElement> {
sortable?: boolean;
}
export interface FluentTextProps extends DetailedHTMLProps, HTMLElement> {
size?: 'sm' | 'md' | 'lg';
weight?: 'normal' | 'bold';
}
export interface FluentTitleProps extends DetailedHTMLProps, HTMLElement> {
level?: number;
}
export interface FluentSkeletonProps extends DetailedHTMLProps, HTMLElement> {
width?: string;
height?: string;
}
export interface FluentSpinnerProps extends DetailedHTMLProps, HTMLElement> {}
export interface FluentStepperProps extends DetailedHTMLProps, HTMLElement> {
current?: number;
total?: number;
}
export interface FluentAvatarGroupProps extends DetailedHTMLProps, HTMLElement> {
max?: number;
overlap?: string;
}
export interface FluentFormProps extends DetailedHTMLProps, HTMLElement> {
novalidate?: boolean;
}
export interface FluentFormMessageProps extends DetailedHTMLProps, HTMLElement> {
for?: string;
}
export interface FluentLabelProps extends DetailedHTMLProps, HTMLElement> {
for?: string;
}
export interface FluentModalAdvancedProps extends DetailedHTMLProps, HTMLElement> {
open?: boolean;
}
export interface FluentAutocompleteProps extends DetailedHTMLProps, HTMLElement> {}
export interface FluentCheckboxGroupProps extends DetailedHTMLProps, HTMLElement> {}
export interface FluentRadioGroupProps extends DetailedHTMLProps, HTMLElement> {}
export interface FluentDatepickerProps extends DetailedHTMLProps, HTMLElement> {}
export interface FluentPopoverProps extends DetailedHTMLProps, HTMLElement> {
open?: boolean;
}
// ============================================================================
// GLOBAL JSX DEFINITIONS
// ============================================================================
declare global {
namespace JSX {
interface IntrinsicElements {
'fluent-button': FluentButtonProps;
'fluent-card': FluentCardProps;
'fluent-input': FluentInputProps;
'fluent-select': FluentSelectProps;
'fluent-checkbox': FluentCheckboxProps;
'fluent-radio': FluentRadioProps;
'fluent-switch': FluentSwitchProps;
'fluent-slider': FluentSliderProps;
'fluent-progress': FluentProgressProps;
'fluent-badge': FluentBadgeProps;
'fluent-avatar': FluentAvatarProps;
'fluent-modal': FluentModalProps;
'fluent-toast': FluentToastProps;
'fluent-tabs': FluentTabsProps;
'fluent-accordion': FluentAccordionProps;
'fluent-tooltip': FluentTooltipProps;
'fluent-breadcrumb': FluentBreadcrumbProps;
'fluent-chip': FluentChipProps;
'fluent-dropdown': FluentDropdownProps;
'fluent-menu': FluentMenuProps;
'fluent-pagination': FluentPaginationProps;
'fluent-notification': FluentNotificationProps;
'fluent-table': FluentTableProps;
'fluent-text': FluentTextProps;
'fluent-title': FluentTitleProps;
'fluent-skeleton': FluentSkeletonProps;
'fluent-spinner': FluentSpinnerProps;
'fluent-stepper': FluentStepperProps;
'fluent-avatar-group': FluentAvatarGroupProps;
'fluent-form': FluentFormProps;
'fluent-form-message': FluentFormMessageProps;
'fluent-label': FluentLabelProps;
'fluent-modal-advanced': FluentModalAdvancedProps;
'fluent-autocomplete': FluentAutocompleteProps;
'fluent-checkbox-group': FluentCheckboxGroupProps;
'fluent-radio-group': FluentRadioGroupProps;
'fluent-datepicker': FluentDatepickerProps;
'fluent-popover': FluentPopoverProps;
}
}
}
export {};