import type { App } from 'vue';

import {
  AButton,
  BasicCaption,
  BasicHelp,
  JnpfAlert,
  JnpfBarcode,
  JnpfButton,
  JnpfCascader,
  JnpfCheckbox,
  JnpfCheckboxSingle,
  JnpfColorPicker,
  JnpfCron,
  JnpfDatePicker,
  JnpfDateRange,
  JnpfDivider,
  JnpfEditor,
  JnpfEmpty,
  JnpfIconPicker,
  JnpfIframe,
  JnpfInput,
  JnpfInputNumber,
  JnpfLink,
  JnpfNumberRange,
  JnpfQrcode,
  JnpfRadio,
  JnpfRate,
  JnpfSelect,
  JnpfSlider,
  JnpfSwitch,
  JnpfText,
  JnpfTextarea,
  JnpfTextTag,
  JnpfTimePicker,
  JnpfTimeRange,
  JnpfTreeSelect,
} from '@jnpf/ui';

import {
  Alert,
  AutoComplete,
  Avatar,
  Card,
  Cascader,
  Checkbox,
  Col,
  Collapse,
  Divider,
  Dropdown,
  Form,
  Image,
  Input,
  InputNumber,
  Layout,
  Menu,
  Popconfirm,
  Popover,
  Progress,
  Radio,
  Rate,
  Result,
  Row,
  Select,
  Slider,
  Space,
  Steps,
  Switch,
  Table,
  Tabs,
  Tag,
  Tooltip,
  Upload,
} from 'ant-design-vue';

import {
  JnpfAreaSelect,
  JnpfAutoComplete,
  JnpfCalculate,
  JnpfDateCalculate,
  JnpfGroupSelect,
  JnpfI18nInput,
  JnpfLocation,
  JnpfOcr,
  JnpfOpenData,
  JnpfOrganizeSelect,
  JnpfPopupAttr,
  JnpfPopupSelect,
  JnpfPopupTableSelect,
  JnpfPosSelect,
  JnpfRelationForm,
  JnpfRelationFormAttr,
  JnpfRelationQuery,
  JnpfRoleSelect,
  JnpfSign,
  JnpfSignature,
  JnpfUploadBtn,
  JnpfUploadFile,
  JnpfUploadImg,
  JnpfUploadImgSingle,
  JnpfUserSelect,
  JnpfUsersSelect,
} from '#/components/Jnpf';

const JnpfGroupTitle = BasicCaption;
JnpfGroupTitle.name = 'JnpfGroupTitle';

export function registerGlobComp(app: App) {
  app
    .use(Input)
    .use(InputNumber)
    .use(Layout)
    .use(Form)
    .use(Switch)
    .use(Dropdown)
    .use(Menu)
    .use(Select)
    .use(Table)
    .use(Checkbox)
    .use(Tabs)
    .use(Card)
    .use(Collapse)
    .use(Tooltip)
    .use(Row)
    .use(Col)
    .use(Popconfirm)
    .use(Popover)
    .use(Divider)
    .use(Slider)
    .use(Rate)
    .use(Alert)
    .use(AutoComplete)
    .use(Cascader)
    .use(Avatar)
    .use(Tag)
    .use(Space)
    .use(Steps)
    .use(Radio)
    .use(Progress)
    .use(Image)
    .use(Upload)
    .use(Result)
    .use(AButton)
    .use(BasicHelp)
    .use(JnpfAlert)
    .use(JnpfAreaSelect)
    .use(JnpfAutoComplete)
    .use(JnpfBarcode)
    .use(JnpfButton)
    .use(JnpfCalculate)
    .use(JnpfDateCalculate)
    .use(JnpfCascader)
    .use(JnpfCheckbox)
    .use(JnpfCheckboxSingle)
    .use(JnpfColorPicker)
    .use(JnpfCron)
    .use(JnpfDatePicker)
    .use(JnpfDateRange)
    .use(JnpfTimePicker)
    .use(JnpfTimeRange)
    .use(JnpfDivider)
    .use(JnpfEditor)
    .use(JnpfEmpty)
    .use(JnpfGroupTitle)
    .use(JnpfIconPicker)
    .use(JnpfIframe)
    .use(JnpfInput)
    .use(JnpfI18nInput)
    .use(JnpfInputNumber)
    .use(JnpfLink)
    .use(JnpfLocation)
    .use(JnpfNumberRange)
    .use(JnpfOpenData)
    .use(JnpfPopupAttr)
    .use(JnpfPopupSelect)
    .use(JnpfPopupTableSelect)
    .use(JnpfQrcode)
    .use(JnpfRadio)
    .use(JnpfRate)
    .use(JnpfRelationForm)
    .use(JnpfRelationFormAttr)
    .use(JnpfRelationQuery)
    .use(JnpfSelect)
    .use(JnpfSign)
    .use(JnpfSignature)
    .use(JnpfSlider)
    .use(JnpfSwitch)
    .use(JnpfText)
    .use(JnpfTextarea)
    .use(JnpfTextTag)
    .use(JnpfTreeSelect)
    .use(JnpfOcr)
    .use(JnpfOrganizeSelect)
    .use(JnpfPosSelect)
    .use(JnpfGroupSelect)
    .use(JnpfRoleSelect)
    .use(JnpfUserSelect)
    .use(JnpfUsersSelect)
    .use(JnpfUploadBtn)
    .use(JnpfUploadFile)
    .use(JnpfUploadImg)
    .use(JnpfUploadImgSingle);
}
