import Accordion from '@/components/accordion/Accordion';
import AccordionTab from '@/components/accordiontab/AccordionTab';
import AutoComplete from '@/components/autocomplete/AutoComplete';
import Avatar from '@/components/avatar/Avatar';
import AvatarGroup from '@/components/avatargroup/AvatarGroup';
import Badge from '@/components/badge/Badge';
import BadgeDirective from '@/components/badgedirective/BadgeDirective';
import BlockUI from '@/components/blockui/BlockUI';
import Breadcrumb from '@/components/breadcrumb/Breadcrumb';
import Button from '@/components/button/Button';
import Calendar from '@/components/calendar/Calendar';
import Card from '@/components/card/Card';
import Carousel from '@/components/carousel/Carousel';
import CascadeSelect from '@/components/cascadeselect/CascadeSelect';
import Chart from '@/components/chart/Chart';
import Checkbox from '@/components/checkbox/Checkbox';
import Chip from '@/components/chip/Chip';
import Chips from '@/components/chips/Chips';
import ColorPicker from '@/components/colorpicker/ColorPicker';
import Column from '@/components/column/Column';
import ColumnGroup from '@/components/columngroup/ColumnGroup';
import PrimeVue from '@/components/config/PrimeVue';
import ConfirmationService from '@/components/confirmationservice/ConfirmationService';
import ConfirmDialog from '@/components/confirmdialog/ConfirmDialog';
import ConfirmPopup from '@/components/confirmpopup/ConfirmPopup';
import ContextMenu from '@/components/contextmenu/ContextMenu';
import DataTable from '@/components/datatable/DataTable';
import DataView from '@/components/dataview/DataView';
import DataViewLayoutOptions from '@/components/dataviewlayoutoptions/DataViewLayoutOptions';
import DeferredContent from '@/components/deferredcontent/DeferredContent';
import Dialog from '@/components/dialog/Dialog';
import DialogService from '@/components/dialogservice/DialogService';
import Divider from '@/components/divider/Divider';
import Dock from '@/components/dock/Dock';
import Dropdown from '@/components/dropdown/Dropdown';
import DynamicDialog from '@/components/dynamicdialog/DynamicDialog';
import Editor from '@/components/editor/Editor';
import Fieldset from '@/components/fieldset/Fieldset';
import FileUpload from '@/components/fileupload/FileUpload';
import FocusTrap from '@/components/focustrap/FocusTrap';
import FullCalendar from '@/components/fullcalendar/FullCalendar';
import Galleria from '@/components/galleria/Galleria';
import Image from '@/components/image/Image';
import InlineMessage from '@/components/inlinemessage/InlineMessage';
import Inplace from '@/components/inplace/Inplace';
import InputMask from '@/components/inputmask/InputMask';
import InputNumber from '@/components/inputnumber/InputNumber';
import InputSwitch from '@/components/inputswitch/InputSwitch';
import InputText from '@/components/inputtext/InputText';
import Knob from '@/components/knob/Knob';
import Listbox from '@/components/listbox/Listbox';
import MegaMenu from '@/components/megamenu/MegaMenu';
import Menu from '@/components/menu/Menu';
import Menubar from '@/components/menubar/Menubar';
import Message from '@/components/message/Message';
import MultiSelect from '@/components/multiselect/MultiSelect';
import OrderList from '@/components/orderlist/OrderList';
import OrganizationChart from '@/components/organizationchart/OrganizationChart';
import OverlayPanel from '@/components/overlaypanel/OverlayPanel';
import Paginator from '@/components/paginator/Paginator';
import Panel from '@/components/panel/Panel';
import PanelMenu from '@/components/panelmenu/PanelMenu';
import Password from '@/components/password/Password';
import PickList from '@/components/picklist/PickList';
import ProgressBar from '@/components/progressbar/ProgressBar';
import ProgressSpinner from '@/components/progressspinner/ProgressSpinner';
import RadioButton from '@/components/radiobutton/RadioButton';
import Rating from '@/components/rating/Rating';
import Ripple from '@/components/ripple/Ripple';
import Row from '@/components/row/Row';
import ScrollPanel from '@/components/scrollpanel/ScrollPanel';
import ScrollTop from '@/components/scrolltop/ScrollTop';
import SelectButton from '@/components/selectbutton/SelectButton';
import Sidebar from '@/components/sidebar/Sidebar';
import Skeleton from '@/components/skeleton/Skeleton';
import Slider from '@/components/slider/Slider';
import SpeedDial from '@/components/speeddial/SpeedDial';
import SplitButton from '@/components/splitbutton/SplitButton';
import Splitter from '@/components/splitter/Splitter';
import SplitterPanel from '@/components/splitterpanel/SplitterPanel';
import Steps from '@/components/steps/Steps';
import StyleClass from '@/components/styleclass/StyleClass';
import TabMenu from '@/components/tabmenu/TabMenu';
import TabPanel from '@/components/tabpanel/TabPanel';
import TabView from '@/components/tabview/TabView';
import Tag from '@/components/tag/Tag';
import Terminal from '@/components/terminal/Terminal';
import Textarea from '@/components/textarea/Textarea';
import TieredMenu from '@/components/tieredmenu/TieredMenu';
import Timeline from '@/components/timeline/Timeline';
import Toast from '@/components/toast/Toast';
import ToastService from '@/components/toastservice/ToastService';
import ToggleButton from '@/components/togglebutton/ToggleButton';
import Toolbar from '@/components/toolbar/Toolbar';
import Tooltip from '@/components/tooltip/Tooltip';
import Tree from '@/components/tree/Tree';
import TreeSelect from '@/components/treeselect/TreeSelect';
import TreeTable from '@/components/treetable/TreeTable';
import TriStateCheckbox from '@/components/tristatecheckbox/TriStateCheckbox';
import VirtualScroller from '@/components/virtualscroller/VirtualScroller';

import CodeHighlight from '@/layouts/AppCodeHighlight';
import AppDemoActions from '@/layouts/AppDemoActions';
import AppInputStyleSwitch from '@/layouts/AppInputStyleSwitch';
import DevelopmentSection from '@/layouts/DevelopmentSection';
import DocApiSection from '@/layouts/doc/DocApiSection';
import DocComponent from '@/layouts/doc/DocComponent';
import DocSectionCode from '@/layouts/doc/DocSectionCode';
import DocSectionNav from '@/layouts/doc/DocSectionNav';
import DocSections from '@/layouts/doc/DocSections';
import DocSectionText from '@/layouts/doc/DocSectionText';

export default defineNuxtPlugin((nuxtApp) => {
    nuxtApp.vueApp.use(PrimeVue, { ripple: true });

    nuxtApp.vueApp.use(ToastService);
    nuxtApp.vueApp.use(ConfirmationService);
    nuxtApp.vueApp.use(DialogService);

    nuxtApp.vueApp.directive('badge', BadgeDirective);
    nuxtApp.vueApp.directive('tooltip', Tooltip);
    nuxtApp.vueApp.directive('ripple', Ripple);
    nuxtApp.vueApp.directive('styleclass', StyleClass);
    nuxtApp.vueApp.directive('code', CodeHighlight);
    nuxtApp.vueApp.directive('focustrap', FocusTrap);

    nuxtApp.vueApp.component('Accordion', Accordion);
    nuxtApp.vueApp.component('AccordionTab', AccordionTab);
    nuxtApp.vueApp.component('Avatar', Avatar);
    nuxtApp.vueApp.component('AvatarGroup', AvatarGroup);
    nuxtApp.vueApp.component('AutoComplete', AutoComplete);
    nuxtApp.vueApp.component('Badge', Badge);
    nuxtApp.vueApp.component('BlockUI', BlockUI);
    nuxtApp.vueApp.component('Breadcrumb', Breadcrumb);
    nuxtApp.vueApp.component('Button', Button);
    nuxtApp.vueApp.component('Calendar', Calendar);
    nuxtApp.vueApp.component('Card', Card);
    nuxtApp.vueApp.component('Carousel', Carousel);
    nuxtApp.vueApp.component('CascadeSelect', CascadeSelect);
    nuxtApp.vueApp.component('Chart', Chart);
    nuxtApp.vueApp.component('Checkbox', Checkbox);
    nuxtApp.vueApp.component('Chip', Chip);
    nuxtApp.vueApp.component('Chips', Chips);
    nuxtApp.vueApp.component('ColorPicker', ColorPicker);
    nuxtApp.vueApp.component('Column', Column);
    nuxtApp.vueApp.component('ColumnGroup', ColumnGroup);
    nuxtApp.vueApp.component('ConfirmDialog', ConfirmDialog);
    nuxtApp.vueApp.component('ConfirmPopup', ConfirmPopup);
    nuxtApp.vueApp.component('ContextMenu', ContextMenu);
    nuxtApp.vueApp.component('DataTable', DataTable);
    nuxtApp.vueApp.component('DataView', DataView);
    nuxtApp.vueApp.component('DataViewLayoutOptions', DataViewLayoutOptions);
    nuxtApp.vueApp.component('DeferredContent', DeferredContent);
    nuxtApp.vueApp.component('Dialog', Dialog);
    nuxtApp.vueApp.component('DynamicDialog', DynamicDialog);
    nuxtApp.vueApp.component('Divider', Divider);
    nuxtApp.vueApp.component('Dock', Dock);
    nuxtApp.vueApp.component('Dropdown', Dropdown);
    nuxtApp.vueApp.component('Editor', Editor);
    nuxtApp.vueApp.component('Fieldset', Fieldset);
    nuxtApp.vueApp.component('FileUpload', FileUpload);
    nuxtApp.vueApp.component('FullCalendar', FullCalendar);
    nuxtApp.vueApp.component('Image', Image);
    nuxtApp.vueApp.component('InlineMessage', InlineMessage);
    nuxtApp.vueApp.component('Inplace', Inplace);
    nuxtApp.vueApp.component('InputMask', InputMask);
    nuxtApp.vueApp.component('InputNumber', InputNumber);
    nuxtApp.vueApp.component('InputSwitch', InputSwitch);
    nuxtApp.vueApp.component('InputText', InputText);
    nuxtApp.vueApp.component('Knob', Knob);
    nuxtApp.vueApp.component('Listbox', Listbox);
    nuxtApp.vueApp.component('MegaMenu', MegaMenu);
    nuxtApp.vueApp.component('Menu', Menu);
    nuxtApp.vueApp.component('Menubar', Menubar);
    nuxtApp.vueApp.component('Message', Message);
    nuxtApp.vueApp.component('MultiSelect', MultiSelect);
    nuxtApp.vueApp.component('OrderList', OrderList);
    nuxtApp.vueApp.component('OrganizationChart', OrganizationChart);
    nuxtApp.vueApp.component('OverlayPanel', OverlayPanel);
    nuxtApp.vueApp.component('Paginator', Paginator);
    nuxtApp.vueApp.component('Panel', Panel);
    nuxtApp.vueApp.component('PanelMenu', PanelMenu);
    nuxtApp.vueApp.component('Password', Password);
    nuxtApp.vueApp.component('PickList', PickList);
    nuxtApp.vueApp.component('ProgressBar', ProgressBar);
    nuxtApp.vueApp.component('ProgressSpinner', ProgressSpinner);
    nuxtApp.vueApp.component('RadioButton', RadioButton);
    nuxtApp.vueApp.component('Rating', Rating);
    nuxtApp.vueApp.component('Row', Row);
    nuxtApp.vueApp.component('ScrollPanel', ScrollPanel);
    nuxtApp.vueApp.component('ScrollTop', ScrollTop);
    nuxtApp.vueApp.component('SelectButton', SelectButton);
    nuxtApp.vueApp.component('Slider', Slider);
    nuxtApp.vueApp.component('Sidebar', Sidebar);
    nuxtApp.vueApp.component('Skeleton', Skeleton);
    nuxtApp.vueApp.component('SpeedDial', SpeedDial);
    nuxtApp.vueApp.component('SplitButton', SplitButton);
    nuxtApp.vueApp.component('Splitter', Splitter);
    nuxtApp.vueApp.component('SplitterPanel', SplitterPanel);
    nuxtApp.vueApp.component('Steps', Steps);
    nuxtApp.vueApp.component('TabView', TabView);
    nuxtApp.vueApp.component('TabPanel', TabPanel);
    nuxtApp.vueApp.component('TabMenu', TabMenu);
    nuxtApp.vueApp.component('Tag', Tag);
    nuxtApp.vueApp.component('Terminal', Terminal);
    nuxtApp.vueApp.component('Textarea', Textarea);
    nuxtApp.vueApp.component('TieredMenu', TieredMenu);
    nuxtApp.vueApp.component('Timeline', Timeline);
    nuxtApp.vueApp.component('Toast', Toast);
    nuxtApp.vueApp.component('Toolbar', Toolbar);
    nuxtApp.vueApp.component('ToggleButton', ToggleButton);
    nuxtApp.vueApp.component('Tree', Tree);
    nuxtApp.vueApp.component('TreeSelect', TreeSelect);
    nuxtApp.vueApp.component('TreeTable', TreeTable);
    nuxtApp.vueApp.component('TriStateCheckbox', TriStateCheckbox);
    nuxtApp.vueApp.component('Galleria', Galleria);
    nuxtApp.vueApp.component('VirtualScroller', VirtualScroller);

    nuxtApp.vueApp.component('AppDemoActions', AppDemoActions);
    nuxtApp.vueApp.component('AppInputStyleSwitch', AppInputStyleSwitch);
    nuxtApp.vueApp.component('DevelopmentSection', DevelopmentSection);
    nuxtApp.vueApp.component('DocSections', DocSections);
    nuxtApp.vueApp.component('DocSectionText', DocSectionText);
    nuxtApp.vueApp.component('DocSectionCode', DocSectionCode);
    nuxtApp.vueApp.component('DocSectionNav', DocSectionNav);
    nuxtApp.vueApp.component('DocApiSection', DocApiSection);
    nuxtApp.vueApp.component('DocComponent', DocComponent);
});
