import SmartDownloadLink from './SmartDownloadLink.vue'
import SmartModuleLink from './SmartModuleLink.vue'
import SmartEditor from './SmartEditor.vue'
import SmartEditorField from './SmartEditorField.vue'
import SmartEditorCustomField from './SmartEditorCustomField.vue'
import SmartEditorFieldset from './SmartEditorFieldset.vue'
import SmartViewer from './SmartViewer.vue'
import SmartViewerField from './SmartViewerField.vue'
import SmartViewerCustomField from './SmartViewerCustomField.vue'
import SmartSelect from './SmartSelect.vue'
import SmartAutocomplete from './SmartAutocomplete.vue'
import SmartBreadcrumb from './SmartBreadcrumb.vue'
import SmartCard from './SmartCard.vue'
import SmartCardTabs from './SmartCardTabs.vue'
import SmartTimestamps from './SmartTimestamps.vue'
import SmartFeedback from './SmartFeedback.vue'
import SmartModal from './SmartModal.vue'
import SmartPhone from './SmartPhone.vue'
import SmartRte from './SmartRte.vue'
import SmartManager from './SmartManager.vue'

import {Utils} from './lib/utils'
import {Auth} from './hooks/auth'
import {Feedback} from './hooks/feedback'
import {Storage} from './hooks/storage'
import {useDefinitions, configureDefinitions} from './hooks/definitions'
import {Validation} from './validations'

import { provideApolloClient } from '@vue/apollo-composable'

const configureSmartUi = (apolloClient, definitions) => {
  provideApolloClient(apolloClient)
  configureDefinitions(definitions)
  Validation.configureSmartValidation()
}

export {
  configureSmartUi,
  useDefinitions,
  Utils,
  Auth,
  Feedback,
  Storage,
  Validation,
  SmartDownloadLink,
  SmartPhone,
  SmartRte,
  SmartModal,
  SmartModuleLink,
  SmartFeedback,
  SmartBreadcrumb,
  SmartCard,
  SmartCardTabs,
  SmartTimestamps,
  SmartAutocomplete,
  SmartSelect,
  SmartManager,
  SmartEditor,
  SmartEditorField,
  SmartEditorCustomField,
  SmartEditorFieldset,
  SmartViewer,
  SmartViewerField,
  SmartViewerCustomField
}
