import MtDatepicker from "./components/form/mt-datepicker/mt-datepicker.vue";
import MtBanner from "./components/feedback-indicator/mt-banner/mt-banner.vue";
import MtBadge from "./components/feedback-indicator/mt-badge/mt-badge.vue";
import MtLoader from "./components/feedback-indicator/mt-loader/mt-loader.vue";
import MtProgressBar from "./components/feedback-indicator/mt-progress-bar/mt-progress-bar.vue";
import MtButton from "./components/form/mt-button/mt-button.vue";
import MtChart, { type ChartOptions } from "./components/charts/mt-chart/mt-chart.vue";
import MtCheckbox from "./components/form/mt-checkbox/mt-checkbox.vue";
import MtRadioGroupRoot from "./components/form/mt-radio-group/mt-radio-group-root.vue";
import MtRadioGroupIndicator from "./components/form/mt-radio-group/mt-radio-group-indicator.vue";
import MtRadioGroupList from "./components/form/mt-radio-group/mt-radio-group-list.vue";
import MtRadioGroupItem from "./components/form/mt-radio-group/mt-radio-group-item.vue";
import MtRadioGroupCustomItem from "./components/form/mt-radio-group/mt-radio-group-custom-item.vue";
import MtColorpicker from "./components/form/mt-colorpicker/mt-colorpicker.vue";
import MtEmailField from "./components/form/mt-email-field/mt-email-field.vue";
import MtHelpText from "./components/form/mt-help-text/mt-help-text.vue";
import MtLink from "./components/navigation/mt-link/mt-link.vue";
import MtNumberField from "./components/form/mt-number-field/mt-number-field.vue";
import MtPasswordField from "./components/form/mt-password-field/mt-password-field.vue";
import MtSelect from "./components/form/mt-select/mt-select.vue";
import MtSlider from "@/components/form/mt-slider/mt-slider.vue";
import MtSwitch from "./components/form/mt-switch/mt-switch.vue";
import MtTextField from "./components/form/mt-text-field/mt-text-field.vue";
import MtTextarea from "./components/form/mt-textarea/mt-textarea.vue";
import MtIcon from "./components/icons-media/mt-icon/mt-icon.vue";
import MtCard from "./components/layout/mt-card/mt-card.vue";
import MtEmptyState from "./components/layout/mt-empty-state/mt-empty-state.vue";
import MtTabs from "./components/navigation/mt-tabs/mt-tabs.vue";
import MtDataTable from "./components/table-and-list/mt-data-table/mt-data-table.vue";
import MtPagination from "./components/table-and-list/mt-pagination/mt-pagination.vue";
import MtSkeletonBar from "./components/feedback-indicator/mt-skeleton-bar/mt-skeleton-bar.vue";
import MtToast, { type Toast } from "./components/feedback-indicator/mt-toast/mt-toast.vue";
import MtSnackbar from "./components/feedback-indicator/mt-snackbar/mt-snackbar.vue";
import MtAvatar from "./components/icons-media/mt-avatar/mt-avatar.vue";
import {
  useSnackbar,
  type Snackbar,
} from "./components/feedback-indicator/mt-snackbar/composables/use-snackbar";
import MtPromoBadge from "./components/feedback-indicator/mt-promo-badge/mt-promo-badge.vue";
import MtPopover from "./components/overlay/mt-popover/mt-popover.vue";
import MtPopoverItem from "./components/overlay/mt-popover-item/mt-popover-item.vue";
import MtPopoverItemResult from "./components/overlay/mt-popover-item-result/mt-popover-item-result.vue";
import MtFloatingUi from "./components/_internal/mt-floating-ui/mt-floating-ui.vue";
import MtModal from "./components/overlay/mt-modal/mt-modal.vue";
import MtModalRoot from "./components/overlay/mt-modal/sub-components/mt-modal-root.vue";
import MtModalClose from "./components/overlay/mt-modal/sub-components/mt-modal-close.vue";
import MtModalTrigger from "./components/overlay/mt-modal/sub-components/mt-modal-trigger.vue";
import MtModalAction from "./components/overlay/mt-modal/sub-components/mt-modal-action.vue";
import MtText from "./components/content/mt-text/mt-text.vue";
import MtInset from "./components/layout/mt-inset/mt-inset.vue";
import MtThemeProvider from "./components/theme/mt-theme-provider.vue";
import TooltipDirective from "./directives/tooltip.directive";
import DeviceHelperPlugin from "./plugin/device-helper.plugin";
import MtTooltip from "./components/overlay/mt-tooltip/mt-tooltip.vue";
import MtTextEditor from "./components/form/mt-text-editor/mt-text-editor.vue";
import MtTextEditorToolbarButton from "./components/form/mt-text-editor/_internal/mt-text-editor-toolbar-button.vue";
import MtSearch from "./components/navigation/mt-search/mt-search.vue";
import MtUrlField from "./components/form/mt-url-field/mt-url-field.vue";
import MtUnitField from "./components/form/mt-unit-field/mt-unit-field.vue";
import MtEntityDataTable from "./components/entity/mt-entity-data-table/mt-entity-data-table.vue";
import MtEntitySelect from "./components/entity/mt-entity-select/mt-entity-select.vue";
import MtActionMenu from "./components/action-menu/mt-action-menu/mt-action-menu.vue";
import MtActionMenuItem from "./components/action-menu/mt-action-menu-item/mt-action-menu-item.vue";
import MtActionMenuGroup from "./components/action-menu/mt-action-menu-group/mt-action-menu-group.vue";
import {
  DropdownMenuRoot,
  DropdownMenuPortal,
  DropdownMenuTrigger,
  DropdownMenuSub,
} from "reka-ui";
// Import SCSS for styling
import "./components/assets/scss/all.scss";

// Importing types
import type {
  Filter,
  Option,
} from "./components/table-and-list/mt-data-table/mt-data-table.interfaces";

export {
  MtBanner,
  MtBadge,
  MtLoader,
  MtProgressBar,
  MtButton,
  MtCheckbox,
  MtRadioGroupRoot,
  MtRadioGroupIndicator,
  MtRadioGroupList,
  MtRadioGroupItem,
  MtRadioGroupCustomItem,
  MtColorpicker,
  MtDatepicker,
  MtEmailField,
  MtChart,
  MtLink,
  MtNumberField,
  MtPasswordField,
  MtSelect,
  MtSlider,
  MtSwitch,
  MtTextField,
  MtTextarea,
  MtTextEditor,
  MtTextEditorToolbarButton,
  MtIcon,
  MtCard,
  MtEmptyState,
  MtHelpText,
  MtTabs,
  MtDataTable,
  MtPagination,
  MtSkeletonBar,
  MtToast,
  MtSnackbar,
  MtPromoBadge,
  MtPopover,
  MtPopoverItem,
  MtPopoverItemResult,
  MtTooltip,
  MtFloatingUi,
  MtModal,
  MtModalRoot,
  MtModalTrigger,
  MtModalClose,
  MtModalAction,
  MtText,
  MtInset,
  MtSearch,
  MtUrlField,
  MtThemeProvider,
  MtUnitField,
  MtEntityDataTable,
  MtEntitySelect,
  TooltipDirective,
  MtAvatar,
  MtActionMenu,
  MtActionMenuItem,
  MtActionMenuGroup,
  DropdownMenuRoot as MtDropdownMenuRoot,
  DropdownMenuPortal as MtDropdownMenuPortal,
  DropdownMenuTrigger as MtDropdownMenuTrigger,
  DropdownMenuSub as MtDropdownMenuSub,
  DeviceHelperPlugin,
  useSnackbar,
  // @deprecated
  MtBanner as SwBanner,
  // @deprecated
  MtLoader as SwLoader,
  // @deprecated
  MtProgressBar as SwProgressBar,
  // @deprecated
  MtButton as SwButton,
  // @deprecated
  MtCheckbox as SwCheckbox,
  // @deprecated
  MtColorpicker as SwColorpicker,
  // @deprecated
  MtDatepicker as SwDatepicker,
  // @deprecated
  MtEmailField as SwEmailField,
  // @deprecated
  MtNumberField as SwNumberField,
  // @deprecated
  MtPasswordField as SwPasswordField,
  // @deprecated
  MtSelect as SwSelect,
  // @deprecated
  MtSwitch as SwSwitch,
  // @deprecated
  MtTextField as SwTextField,
  // @deprecated
  MtTextarea as SwTextarea,
  // @deprecated
  MtIcon as SwIcon,
  // @deprecated
  MtCard as SwCard,
  // @deprecated
  MtTabs as SwTabs,
  // @deprecated
  MtDataTable as SwDataTable,
  // @deprecated
  MtPagination as SwPagination,
  // @deprecated
  MtSkeletonBar as SwSkeletonBar,
};

// Exporting types
export type { Filter, Option, Toast, Snackbar, ChartOptions };
export type { Editor } from "@tiptap/vue-3";
export type { default as Link } from "@tiptap/extension-link";
