
// import library
import { library } from '@fortawesome/fontawesome-svg-core';
import { fas } from '@fortawesome/pro-solid-svg-icons';
import { fad } from '@fortawesome/pro-duotone-svg-icons';
import { far } from '@fortawesome/pro-regular-svg-icons';
import { fab } from '@fortawesome/free-brands-svg-icons';

// add libraries
library.add(far, fab, fad, fas);


// import local
import Link from './components/Link';
import ScrollBar from './components/Scroll/Bar';

// auth
import AuthContext from './contexts/Auth';
import AuthProvider from './providers/Auth';

// socket
import SocketContext from './contexts/Socket';
import SocketProvider from './providers/Socket';

// task
import DesktopContext from './contexts/Desktop';
import DesktopProvider from './providers/Desktop';

// theme
import ThemeContext from './contexts/Theme';
import ThemeProvider from './providers/Theme';

// hooks
import useId from './hooks/useId';
import useAcls from './hooks/useAcls';
import useNFTs from './hooks/useNFTs';
import useApps from './hooks/useApps';
import useFeed from './hooks/useFeed';
import usePost from './hooks/usePost';
import useAuth from './hooks/useAuth';
import usePosts from './hooks/usePosts';
import useThemes from './hooks/useThemes';
import useParams from './hooks/useParams';
import useTyping from './hooks/useTyping';
import useSocket from './hooks/useSocket';
import useSpaces from './hooks/useSpaces';
import useFollow from './hooks/useFollow';
import useMember from './hooks/useMember';
import useInstall from './hooks/useInstall';
import useDesktop from './hooks/useDesktop';

// desktop ui
import App from './components/App/index';
import Task from './components/Task/index';
import Route from './components/Route/index';
import Button from './components/Button/index';
import Window from './components/Window/index';
import Desktop from './components/Desktop/index';
import TaskBar from './components/Task/Bar';
import WindowBar from './components/Window/Bar';

// nft ui
import NFTList from './components/NFT/List';
import NFTImage from './components/NFT/Image';
import NFTPicker from './components/NFT/Picker';
import NFTAvatar from './components/NFT/Avatar';

// post ui
import Post from './components/Post/index';
import PostList from './components/Post/List';
import PostCreate from './components/Post/Create';
import PostTyping from './components/Post/Typing';


// export default
export {
  // desktop ui
  App,
  Task,
  Route,
  Button,
  Window,
  Desktop,
  TaskBar,
  WindowBar,

  // misc ui
  Link,
  ScrollBar,

  // auth
  AuthContext,
  AuthProvider,

  // socket
  SocketContext,
  SocketProvider,

  // desktop
  DesktopContext,
  DesktopProvider,

  // theme
  ThemeContext,
  ThemeProvider,

  // hooks
  useId,
  useAcls,
  useNFTs,
  useFeed,
  usePost,
  useAuth,
  useApps,
  usePosts,
  useThemes,
  useTyping,
  useSocket,
  useSpaces,
  useParams,
  useFollow,
  useMember,
  useInstall,
  useDesktop,

  // nft ui
  NFTList,
  NFTImage,
  NFTPicker,
  NFTAvatar,

  // removing
  Post,
  PostList,
  PostCreate,
  PostTyping,
};