import { FC } from 'react'

import type { Props as WAccordionProps } from './components/Accordion/Accordion.tsx'
import type { Props as WAlertProps } from './components/Alert/Alert.tsx'
import type { Props as WAspectRatioProps } from './components/AspectRatio/AspectRatio.tsx'
import type { Props as WAvatarProps } from './components/Avatar/Avatar.tsx'
import type { Props as WBadgeProps } from './components/Badge/Badge.tsx'
import type { Props as WBannerProps } from './components/Banner/Banner.tsx'
import type { Props as WBottomNavigationProps } from './components/BottomNavigation/BottomNavigation.tsx'
import type { Props as WBreadcrumbProps } from './components/Breadcrumb/Breadcrumb.tsx'
import type { Props as WButtonProps } from './components/Button/Button.tsx'
import type { Props as WCardProps } from './components/Card/Card.tsx'
import type { Props as WCarouselProps } from './components/Carousel/Carousel.tsx'
import type { Props as WCarouselItemProps } from './components/CarouselItem/CarouselItem.tsx'
import type { Props as WCheckboxProps } from './components/Checkbox/Checkbox.tsx'
import type { Props as WCollapsibleProps } from './components/Collapsible/Collapsible.tsx'
import type { Props as WConditionalWrapperProps } from './components/ConditionalWrapper/ConditionalWrapper.tsx'
import type { Props as WContextMenuProps } from './components/ContextMenu/ContextMenu.tsx'
import type { Props as WCopyProps } from './components/Copy/Copy.tsx'
import type { Props as WCounterProps } from './components/Counter/Counter.tsx'
import type { Props as WDataTableProps } from './components/DataTable/DataTable.tsx'
import type { Props as WFlexProps } from './components/Flex/Flex.tsx'
import type { Props as WFooterProps } from './components/Footer/Footer.tsx'
import type { Props as WGridProps } from './components/Grid/Grid.tsx'
import type { Props as WGroupProps } from './components/Group/Group.tsx'
import type { Props as WIconProps } from './components/Icon/Icon.tsx'
import type { Props as WImageProps } from './components/Image/Image.tsx'
import type { Props as WImageLoaderProps } from './components/ImageLoader/ImageLoader.tsx'
import type { Props as WInputProps } from './components/Input/Input.tsx'
import type { Props as WKbdProps } from './components/Kbd/Kbd.tsx'
import type { Props as WListProps } from './components/List/List.tsx'
import type { Props as WMasonryProps } from './components/Masonry/Masonry.tsx'
import type { Props as WMenuProps } from './components/Menu/Menu.tsx'
import type { Props as WModalProps } from './components/Modal/Modal.tsx'
import type { Props as WOTPInputProps } from './components/OTPInput/OTPInput.tsx'
import type { Props as WPaginationProps } from './components/Pagination/Pagination.tsx'
import type { Props as WPopoverProps } from './components/Popover/Popover.tsx'
import type { Props as WProgressProps } from './components/Progress/Progress.tsx'
import type { Props as WRadioProps } from './components/Radio/Radio.tsx'
import type { Props as WRangeSliderProps } from './components/RangeSlider/RangeSlider.tsx'
import type { Props as WRatingProps } from './components/Rating/Rating.tsx'
import type { Props as WRibbonProps } from './components/Ribbon/Ribbon.tsx'
import type { Props as WSelectProps } from './components/Select/Select.tsx'
import type { Props as WSheetProps } from './components/Sheet/Sheet.tsx'
import type { Props as WSidebarProps } from './components/Sidebar/Sidebar.tsx'
import type { Props as WSkeletonProps } from './components/Skeleton/Skeleton.tsx'
import type { Props as WSliderProps } from './components/Slider/Slider.tsx'
import type { Props as WSpeedDialProps } from './components/SpeedDial/SpeedDial.tsx'
import type { Props as WSpinnerProps } from './components/Spinner/Spinner.tsx'
import type { Props as WSpoilerProps } from './components/Spoiler/Spoiler.tsx'
import type { Props as WStepperProps } from './components/Stepper/Stepper.tsx'
import type { Props as WSwitchProps } from './components/Switch/Switch.tsx'
import type { Props as WTabProps } from './components/Tab/Tab.tsx'
import type { Props as WTableProps } from './components/Table/Table.tsx'
import type { Props as WTabsProps } from './components/Tabs/Tabs.tsx'
import type { Props as WTextareaProps } from './components/Textarea/Textarea.tsx'
import type { Props as WThemeSwitcherProps } from './components/ThemeSwitcher/ThemeSwitcher.tsx'
import type { Props as WTimelineProps } from './components/Timeline/Timeline.tsx'
import type { Props as WTimelineItemProps } from './components/TimelineItem/TimelineItem.tsx'
import type { Props as WToastProps } from './components/Toast/Toast.tsx'

import type { DataTableEventType as WDataTableEventType, HeadingObject as WHeadingObject } from './components/DataTable/datatable.ts'
import type { ListEventType as WListEventType } from './components/List/list.ts'
import type { PaginationEventType as WPaginationEventType } from './components/Pagination/pagination.ts'
import type { RangeSliderEventType as WRangeSliderEventType } from './components/RangeSlider/rangeslider.ts'
import type { SelectEventType as WSelectEventType } from './components/Select/select.ts'

declare module 'webcoreui/react' {
    export const Accordion: FC<WAccordionProps>
	export const Alert: FC<WAlertProps>
	export const AspectRatio: FC<WAspectRatioProps>
	export const Avatar: FC<WAvatarProps>
	export const Badge: FC<WBadgeProps>
	export const Banner: FC<WBannerProps>
	export const BottomNavigation: FC<WBottomNavigationProps>
	export const Breadcrumb: FC<WBreadcrumbProps>
	export const Button: FC<WButtonProps>
	export const Card: FC<WCardProps>
	export const Carousel: FC<WCarouselProps>
	export const CarouselItem: FC<WCarouselItemProps>
	export const Checkbox: FC<WCheckboxProps>
	export const Collapsible: FC<WCollapsibleProps>
	export const ConditionalWrapper: FC<WConditionalWrapperProps>
	export const ContextMenu: FC<WContextMenuProps>
	export const Copy: FC<WCopyProps>
	export const Counter: FC<WCounterProps>
	export const DataTable: FC<WDataTableProps>
	export const Flex: FC<WFlexProps>
	export const Footer: FC<WFooterProps>
	export const Grid: FC<WGridProps>
	export const Group: FC<WGroupProps>
	export const Icon: FC<WIconProps>
	export const Image: FC<WImageProps>
	export const ImageLoader: FC<WImageLoaderProps>
	export const Input: FC<WInputProps>
	export const Kbd: FC<WKbdProps>
	export const List: FC<WListProps>
	export const Masonry: FC<WMasonryProps>
	export const Menu: FC<WMenuProps>
	export const Modal: FC<WModalProps>
	export const OTPInput: FC<WOTPInputProps>
	export const Pagination: FC<WPaginationProps>
	export const Popover: FC<WPopoverProps>
	export const Progress: FC<WProgressProps>
	export const Radio: FC<WRadioProps>
	export const RangeSlider: FC<WRangeSliderProps>
	export const Rating: FC<WRatingProps>
	export const Ribbon: FC<WRibbonProps>
	export const Select: FC<WSelectProps>
	export const Sheet: FC<WSheetProps>
	export const Sidebar: FC<WSidebarProps>
	export const Skeleton: FC<WSkeletonProps>
	export const Slider: FC<WSliderProps>
	export const SpeedDial: FC<WSpeedDialProps>
	export const Spinner: FC<WSpinnerProps>
	export const Spoiler: FC<WSpoilerProps>
	export const Stepper: FC<WStepperProps>
	export const Switch: FC<WSwitchProps>
	export const Tab: FC<WTabProps>
	export const Table: FC<WTableProps>
	export const Tabs: FC<WTabsProps>
	export const Textarea: FC<WTextareaProps>
	export const ThemeSwitcher: FC<WThemeSwitcherProps>
	export const Timeline: FC<WTimelineProps>
	export const TimelineItem: FC<WTimelineItemProps>
	export const Toast: FC<WToastProps>

    export type AccordionProps = WAccordionProps
	export type AlertProps = WAlertProps
	export type AspectRatioProps = WAspectRatioProps
	export type AvatarProps = WAvatarProps
	export type BadgeProps = WBadgeProps
	export type BannerProps = WBannerProps
	export type BottomNavigationProps = WBottomNavigationProps
	export type BreadcrumbProps = WBreadcrumbProps
	export type ButtonProps = WButtonProps
	export type CardProps = WCardProps
	export type CarouselProps = WCarouselProps
	export type CarouselItemProps = WCarouselItemProps
	export type CheckboxProps = WCheckboxProps
	export type CollapsibleProps = WCollapsibleProps
	export type ConditionalWrapperProps = WConditionalWrapperProps
	export type ContextMenuProps = WContextMenuProps
	export type CopyProps = WCopyProps
	export type CounterProps = WCounterProps
	export type DataTableProps = WDataTableProps
	export type FlexProps = WFlexProps
	export type FooterProps = WFooterProps
	export type GridProps = WGridProps
	export type GroupProps = WGroupProps
	export type IconProps = WIconProps
	export type ImageProps = WImageProps
	export type ImageLoaderProps = WImageLoaderProps
	export type InputProps = WInputProps
	export type KbdProps = WKbdProps
	export type ListProps = WListProps
	export type MasonryProps = WMasonryProps
	export type MenuProps = WMenuProps
	export type ModalProps = WModalProps
	export type OTPInputProps = WOTPInputProps
	export type PaginationProps = WPaginationProps
	export type PopoverProps = WPopoverProps
	export type ProgressProps = WProgressProps
	export type RadioProps = WRadioProps
	export type RangeSliderProps = WRangeSliderProps
	export type RatingProps = WRatingProps
	export type RibbonProps = WRibbonProps
	export type SelectProps = WSelectProps
	export type SheetProps = WSheetProps
	export type SidebarProps = WSidebarProps
	export type SkeletonProps = WSkeletonProps
	export type SliderProps = WSliderProps
	export type SpeedDialProps = WSpeedDialProps
	export type SpinnerProps = WSpinnerProps
	export type SpoilerProps = WSpoilerProps
	export type StepperProps = WStepperProps
	export type SwitchProps = WSwitchProps
	export type TabProps = WTabProps
	export type TableProps = WTableProps
	export type TabsProps = WTabsProps
	export type TextareaProps = WTextareaProps
	export type ThemeSwitcherProps = WThemeSwitcherProps
	export type TimelineProps = WTimelineProps
	export type TimelineItemProps = WTimelineItemProps
	export type ToastProps = WToastProps

    export type DataTableEventType = WDataTableEventType
	export type HeadingObject = WHeadingObject
	export type ListEventType = WListEventType
	export type PaginationEventType = WPaginationEventType
	export type RangeSliderEventType = WRangeSliderEventType
	export type SelectEventType = WSelectEventType
}