├── .prettierignore ├── .gitattributes ├── packages ├── coreui-vue │ ├── .browserslistrc │ ├── tsconfig.json │ ├── src │ │ ├── shims-vue.d.ts │ │ ├── directives │ │ │ └── index.ts │ │ ├── composables │ │ │ ├── index.ts │ │ │ ├── useUniqueId.ts │ │ │ └── usePopper.ts │ │ ├── components │ │ │ ├── nav │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CNavTitle.spec.ts.snap │ │ │ │ │ │ ├── CNavGroupItems.spec.ts.snap │ │ │ │ │ │ ├── CNav.spec.ts.snap │ │ │ │ │ │ ├── CNavLink.spec.ts.snap │ │ │ │ │ │ ├── CNavItem.spec.ts.snap │ │ │ │ │ │ └── CNavGroup.spec.ts.snap │ │ │ │ │ ├── CNavTitle.spec.ts │ │ │ │ │ └── CNavGroupItems.spec.ts │ │ │ │ ├── CNavGroupItems.ts │ │ │ │ ├── CNavTitle.ts │ │ │ │ └── index.ts │ │ │ ├── sidebar │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CSidebarNav.spec.ts.snap │ │ │ │ │ │ ├── CSidebarBrand.spec.ts.snap │ │ │ │ │ │ ├── CSidebarFooter.spec.ts.snap │ │ │ │ │ │ ├── CSidebarHeader.spec.ts.snap │ │ │ │ │ │ ├── CSidebarToggler.spec.ts.snap │ │ │ │ │ │ └── CSidebar.spec.ts.snap │ │ │ │ │ ├── CSidebarNav.spec.ts │ │ │ │ │ ├── CSidebarBrand.spec.ts │ │ │ │ │ ├── CSidebarFooter.spec.ts │ │ │ │ │ ├── CSidebarHeader.spec.ts │ │ │ │ │ └── CSidebarToggler.spec.ts │ │ │ │ ├── CSidebarFooter.ts │ │ │ │ ├── CSidebarHeader.ts │ │ │ │ ├── CSidebarToggler.ts │ │ │ │ └── CSidebarBrand.ts │ │ │ ├── alert │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CAlertLink.spec.ts.snap │ │ │ │ │ │ └── CAlertHeading.spec.ts.snap │ │ │ │ │ └── CAlertLink.spec.ts │ │ │ │ ├── CAlertLink.ts │ │ │ │ ├── index.ts │ │ │ │ └── CAlertHeading.ts │ │ │ ├── card │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CCardBody.spec.ts.snap │ │ │ │ │ │ ├── CCardGroup.spec.ts.snap │ │ │ │ │ │ ├── CCardFooter.spec.ts.snap │ │ │ │ │ │ ├── CCardLink.spec.ts.snap │ │ │ │ │ │ ├── CCardImageOverlay.spec.ts.snap │ │ │ │ │ │ ├── CCardImage.spec.ts.snap │ │ │ │ │ │ ├── CCardText.spec.ts.snap │ │ │ │ │ │ ├── CCard.spec.ts.snap │ │ │ │ │ │ ├── CCardTitle.spec.ts.snap │ │ │ │ │ │ ├── CCardHeader.spec.ts.snap │ │ │ │ │ │ └── CCardSubtitle.spec.ts.snap │ │ │ │ │ ├── CCardBody.spec.ts │ │ │ │ │ ├── CCardFooter.spec.ts │ │ │ │ │ ├── CCardGroup.spec.ts │ │ │ │ │ └── CCardImageOverlay.spec.ts │ │ │ │ ├── CCardBody.ts │ │ │ │ ├── CCardGroup.ts │ │ │ │ ├── CCardFooter.ts │ │ │ │ ├── CCardImageOverlay.ts │ │ │ │ ├── CCardText.ts │ │ │ │ ├── CCardTitle.ts │ │ │ │ ├── CCardHeader.ts │ │ │ │ ├── CCardSubtitle.ts │ │ │ │ └── CCardLink.ts │ │ │ ├── table │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CTableCaption.spec.ts.snap │ │ │ │ │ │ ├── CTableBody.spec.ts.snap │ │ │ │ │ │ ├── CTableFoot.spec.ts.snap │ │ │ │ │ │ ├── CTableHead.spec.ts.snap │ │ │ │ │ │ ├── CTableHeaderCell.spec.ts.snap │ │ │ │ │ │ ├── CTableRow.spec.ts.snap │ │ │ │ │ │ ├── CTableDataCell.spec.ts.snap │ │ │ │ │ │ └── CTable.spec.ts.snap │ │ │ │ │ └── CTableCaption.spec.ts │ │ │ │ ├── CTableCaption.ts │ │ │ │ ├── types.ts │ │ │ │ ├── CTableBody.ts │ │ │ │ ├── CTableFoot.ts │ │ │ │ └── CTableHead.ts │ │ │ ├── dropdown │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CDropdownDivider.spec.ts.snap │ │ │ │ │ │ ├── CDropdownHeader.spec.ts.snap │ │ │ │ │ │ ├── CDropdownMenu.spec.ts.snap │ │ │ │ │ │ ├── CDropdownItem.spec.ts.snap │ │ │ │ │ │ ├── CDropdown.spec.ts.snap │ │ │ │ │ │ └── CDropdownToggle.spec.ts.snap │ │ │ │ │ └── CDropdownDivider.spec.ts │ │ │ │ ├── CDropdownDivider.ts │ │ │ │ ├── types.ts │ │ │ │ └── CDropdownHeader.ts │ │ │ ├── modal │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CModalBody.spec.ts.snap │ │ │ │ │ │ ├── CModalFooter.spec.ts.snap │ │ │ │ │ │ ├── CModalTitle.spec.ts.snap │ │ │ │ │ │ └── CModalHeader.spec.ts.snap │ │ │ │ │ ├── CModalBody.spec.ts │ │ │ │ │ └── CModalFooter.spec.ts │ │ │ │ ├── CModalBody.ts │ │ │ │ ├── CModalFooter.ts │ │ │ │ ├── CModalTitle.ts │ │ │ │ ├── index.ts │ │ │ │ └── CModalHeader.ts │ │ │ ├── tabs │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CTabContent.spec.ts.snap │ │ │ │ │ │ └── CTabPane.spec.ts.snap │ │ │ │ │ └── CTabContent.spec.ts │ │ │ │ ├── CTabContent.ts │ │ │ │ └── index.ts │ │ │ ├── toast │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CToastBody.spec.ts.snap │ │ │ │ │ │ ├── CToaster.spec.ts.snap │ │ │ │ │ │ ├── CToastClose.spec.ts.snap │ │ │ │ │ │ └── CToastHeader.spec.ts.snap │ │ │ │ │ └── CToastBody.spec.ts │ │ │ │ ├── CToastBody.ts │ │ │ │ ├── CToastHeader.ts │ │ │ │ └── index.ts │ │ │ ├── form │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CFormFloating.spec.ts.snap │ │ │ │ │ │ ├── CForm.spec.ts.snap │ │ │ │ │ │ ├── CFormText.spec.ts.snap │ │ │ │ │ │ ├── CFormLabel.spec.ts.snap │ │ │ │ │ │ ├── CInputGroup.spec.ts.snap │ │ │ │ │ │ ├── CInputGroupText.spec.ts.snap │ │ │ │ │ │ ├── CFormRange.spec.ts.snap │ │ │ │ │ │ ├── CFormSelect.spec.ts.snap │ │ │ │ │ │ ├── CFormTextarea.spec.ts.snap │ │ │ │ │ │ ├── CFormFeedback.spec.ts.snap │ │ │ │ │ │ ├── CFormSwitch.spec.ts.snap │ │ │ │ │ │ ├── CFormInput.spec.ts.snap │ │ │ │ │ │ └── CFormCheck.spec.ts.snap │ │ │ │ │ └── CFormFloating.spec.ts │ │ │ │ ├── CFormFloating.ts │ │ │ │ ├── CFormText.ts │ │ │ │ ├── CInputGroupText.ts │ │ │ │ ├── CForm.ts │ │ │ │ ├── CFormLabel.ts │ │ │ │ └── CInputGroup.ts │ │ │ ├── header │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CHeaderText.spec.ts.snap │ │ │ │ │ │ ├── CHeaderDivider.spec.ts.snap │ │ │ │ │ │ ├── CHeaderBrand.spec.ts.snap │ │ │ │ │ │ ├── CHeaderNav.spec.ts.snap │ │ │ │ │ │ ├── CHeader.spec.ts.snap │ │ │ │ │ │ └── CHeaderToggler.spec.ts.snap │ │ │ │ │ ├── CHeaderText.spec.ts │ │ │ │ │ └── CHeaderDivider.spec.ts │ │ │ │ ├── CHeaderText.ts │ │ │ │ ├── CHeaderDivider.ts │ │ │ │ ├── CHeaderBrand.ts │ │ │ │ ├── CHeaderToggler.ts │ │ │ │ └── CHeaderNav.ts │ │ │ ├── navbar │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CNavbarText.spec.ts.snap │ │ │ │ │ │ ├── CNavbarNav.spec.ts.snap │ │ │ │ │ │ ├── CNavbarToggler.spec.ts.snap │ │ │ │ │ │ ├── CNavbar.spec.ts.snap │ │ │ │ │ │ └── CNavbarBrand.spec.ts.snap │ │ │ │ │ └── CNavbarText.spec.ts │ │ │ │ ├── CNavbarText.ts │ │ │ │ ├── CNavbarToggler.ts │ │ │ │ ├── CNavbarNav.ts │ │ │ │ ├── index.ts │ │ │ │ └── CNavbarBrand.ts │ │ │ ├── accordion │ │ │ │ ├── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ ├── CAccordion.spec.ts.snap │ │ │ │ │ │ ├── CAccordionItem.spec.ts.snap │ │ │ │ │ │ ├── CAccordionButton.spec.ts.snap │ │ │ │ │ │ ├── CAccordionHeader.spec.ts.snap │ │ │ │ │ │ └── CAccordionBody.spec.ts.snap │ │ │ │ ├── CAccordionHeader.ts │ │ │ │ ├── CAccordionBody.ts │ │ │ │ └── CAccordionButton.ts │ │ │ ├── button-group │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CButtonToolbar.spec.ts.snap │ │ │ │ │ │ └── CButtonGroup.spec.ts.snap │ │ │ │ │ └── CButtonToolbar.spec.ts │ │ │ │ ├── CButtonToolbar.ts │ │ │ │ └── index.ts │ │ │ ├── offcanvas │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── COffcanvasBody.spec.ts.snap │ │ │ │ │ │ ├── COffcanvasHeader.spec.ts.snap │ │ │ │ │ │ └── COffcanvasTitle.spec.ts.snap │ │ │ │ │ ├── COffcanvasBody.spec.ts │ │ │ │ │ └── COffcanvasHeader.spec.ts │ │ │ │ ├── COffcanvasBody.ts │ │ │ │ ├── COffcanvasHeader.ts │ │ │ │ ├── COffcanvasTitle.ts │ │ │ │ └── index.ts │ │ │ ├── carousel │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ ├── CCarouselCaption.spec.ts.snap │ │ │ │ │ │ └── CCarouselItem.spec.ts.snap │ │ │ │ │ └── CCarouselCaption.spec.ts │ │ │ │ ├── CCarouselCaption.ts │ │ │ │ └── index.ts │ │ │ ├── link │ │ │ │ ├── index.ts │ │ │ │ └── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ └── CLink.spec.ts.snap │ │ │ ├── badge │ │ │ │ ├── index.ts │ │ │ │ └── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ └── CBadge.spec.ts.snap │ │ │ ├── image │ │ │ │ ├── index.ts │ │ │ │ └── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ └── CImage.spec.ts.snap │ │ │ ├── avatar │ │ │ │ ├── index.ts │ │ │ │ └── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ └── CAvatar.spec.ts.snap │ │ │ ├── button │ │ │ │ ├── index.ts │ │ │ │ └── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ └── CButton.spec.ts.snap │ │ │ ├── footer │ │ │ │ ├── index.ts │ │ │ │ └── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ └── CFooter.spec.ts.snap │ │ │ ├── callout │ │ │ │ ├── index.ts │ │ │ │ ├── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ └── CCallout.spec.ts.snap │ │ │ │ └── CCallout.ts │ │ │ ├── popover │ │ │ │ └── index.ts │ │ │ ├── spinner │ │ │ │ ├── index.ts │ │ │ │ └── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ └── CSpinner.spec.ts.snap │ │ │ ├── tooltip │ │ │ │ └── index.ts │ │ │ ├── backdrop │ │ │ │ ├── index.ts │ │ │ │ ├── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ └── CBackdrop.spec.ts.snap │ │ │ │ │ └── CBackdrop.spec.ts │ │ │ │ └── CBackdrop.ts │ │ │ ├── collapse │ │ │ │ ├── index.ts │ │ │ │ └── __test__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ └── CCollapse.spec.ts.snap │ │ │ ├── breadcrumb │ │ │ │ ├── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ ├── CBreadcrumb.spec.ts.snap │ │ │ │ │ │ └── CBreadcrumbItem.spec.ts.snap │ │ │ │ ├── index.ts │ │ │ │ └── CBreadcrumb.ts │ │ │ ├── focus-trap │ │ │ │ └── index.ts │ │ │ ├── close-button │ │ │ │ ├── index.ts │ │ │ │ └── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ └── CCloseButton.spec.ts.snap │ │ │ ├── placeholder │ │ │ │ ├── index.ts │ │ │ │ └── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ └── CPlaceholder.spec.ts.snap │ │ │ ├── grid │ │ │ │ ├── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ ├── CRow.spec.ts.snap │ │ │ │ │ │ ├── CCol.spec.ts.snap │ │ │ │ │ │ └── CContainer.spec.ts.snap │ │ │ │ └── index.ts │ │ │ ├── conditional-teleport │ │ │ │ └── index.ts │ │ │ ├── list-group │ │ │ │ ├── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ ├── CListGroup.spec.ts.snap │ │ │ │ │ │ └── CListGroupItem.spec.ts.snap │ │ │ │ └── index.ts │ │ │ ├── pagination │ │ │ │ ├── __tests__ │ │ │ │ │ └── __snapshots__ │ │ │ │ │ │ ├── CPaginationItem.spec.ts.snap │ │ │ │ │ │ └── CPagination.spec.ts.snap │ │ │ │ └── index.ts │ │ │ ├── widgets │ │ │ │ └── __tests__ │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ ├── CWidgetStatsE.spec.ts.snap │ │ │ │ │ ├── CWidgetStatsA.spec.ts.snap │ │ │ │ │ ├── CWidgetStatsF.spec.ts.snap │ │ │ │ │ ├── CWidgetStatsB.spec.ts.snap │ │ │ │ │ ├── CWidgetStatsC.spec.ts.snap │ │ │ │ │ └── CWidgetStatsD.spec.ts.snap │ │ │ │ │ ├── CWidgetStatsE.spec.ts │ │ │ │ │ ├── CWidgetStatsA.spec.ts │ │ │ │ │ ├── CWidgetStatsD.spec.ts │ │ │ │ │ ├── CWidgetStatsB.spec.ts │ │ │ │ │ ├── CWidgetStatsC.spec.ts │ │ │ │ │ └── CWidgetStatsF.spec.ts │ │ │ └── progress │ │ │ │ ├── __tests__ │ │ │ │ └── __snapshots__ │ │ │ │ │ ├── CProgressBar.spec.ts.snap │ │ │ │ │ └── CProgress.spec.ts.snap │ │ │ │ ├── CProgressStacked.ts │ │ │ │ └── index.ts │ │ ├── utils │ │ │ ├── getUID.ts │ │ │ ├── ComponentProps.ts │ │ │ ├── index.ts │ │ │ ├── isRTL.ts │ │ │ ├── isInViewport.ts │ │ │ ├── getRTLPlacement.ts │ │ │ └── getNextActiveElement.ts │ │ └── index.ts │ └── jest.config.js └── docs │ ├── .vuepress │ ├── src │ │ ├── node │ │ │ ├── utils │ │ │ │ └── index.ts │ │ │ └── index.ts │ │ ├── client │ │ │ ├── index.ts │ │ │ ├── composables │ │ │ │ ├── index.ts │ │ │ │ ├── useThemeData.ts │ │ │ │ └── useScrollPromise.ts │ │ │ ├── layouts │ │ │ │ └── Redirect.vue │ │ │ ├── shim.d.ts │ │ │ ├── styles │ │ │ │ ├── _scrolling.scss │ │ │ │ ├── _footer.scss │ │ │ │ ├── _anchor.scss │ │ │ │ ├── index.scss │ │ │ │ └── _table-api.scss │ │ │ └── components │ │ │ │ └── Callout.vue │ │ └── shared │ │ │ ├── index.ts │ │ │ └── page.ts │ └── public │ │ ├── favicon.ico │ │ ├── images │ │ ├── vue.jpg │ │ ├── react.jpg │ │ ├── angular.jpg │ │ ├── vue400.jpg │ │ └── avatars │ │ │ ├── 1.jpg │ │ │ ├── 2.jpg │ │ │ ├── 3.jpg │ │ │ ├── 4.jpg │ │ │ ├── 5.jpg │ │ │ ├── 6.jpg │ │ │ ├── 7.jpg │ │ │ ├── 8.jpg │ │ │ └── 9.jpg │ │ └── favicons │ │ ├── apple-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon-96x96.png │ │ ├── ms-icon-70x70.png │ │ ├── apple-icon-57x57.png │ │ ├── apple-icon-60x60.png │ │ ├── apple-icon-72x72.png │ │ ├── apple-icon-76x76.png │ │ ├── ms-icon-144x144.png │ │ ├── ms-icon-150x150.png │ │ ├── ms-icon-310x310.png │ │ ├── android-icon-36x36.png │ │ ├── android-icon-48x48.png │ │ ├── android-icon-72x72.png │ │ ├── android-icon-96x96.png │ │ ├── apple-icon-114x114.png │ │ ├── apple-icon-120x120.png │ │ ├── apple-icon-144x144.png │ │ ├── apple-icon-152x152.png │ │ ├── apple-icon-180x180.png │ │ ├── android-icon-144x144.png │ │ ├── android-icon-192x192.png │ │ ├── apple-icon-precomposed.png │ │ └── browserconfig.xml │ ├── .prettierrc │ ├── api │ ├── card │ │ ├── CCardBody.api.md │ │ ├── CCardGroup.api.md │ │ ├── CCardFooter.api.md │ │ ├── CCardImageOverlay.api.md │ │ ├── CCardLink.api.md │ │ ├── CCardText.api.md │ │ ├── CCardTitle.api.md │ │ ├── CCardHeader.api.md │ │ ├── CCardSubtitle.api.md │ │ └── CCardImage.api.md │ ├── alert │ │ ├── CAlertLink.api.md │ │ └── CAlertHeading.api.md │ ├── modal │ │ ├── CModalBody.api.md │ │ ├── CModalFooter.api.md │ │ ├── CModalHeader.api.md │ │ └── CModalTitle.api.md │ ├── toast │ │ ├── CToastBody.api.md │ │ ├── CToastHeader.api.md │ │ └── CToaster.api.md │ ├── tabs │ │ ├── CTabContent.api.md │ │ ├── CTabs.api.md │ │ └── CTab.api.md │ ├── form │ │ ├── CFormControl.api.md │ │ ├── CFormFloating.api.md │ │ ├── CInputGroup.api.md │ │ ├── CFormText.api.md │ │ ├── CInputGroupText.api.md │ │ ├── CForm.api.md │ │ └── CFormLabel.api.md │ ├── header │ │ ├── CHeaderText.api.md │ │ ├── CHeaderDivider.api.md │ │ ├── CHeaderToggler.api.md │ │ ├── CHeaderNav.api.md │ │ └── CHeaderBrand.api.md │ ├── navbar │ │ ├── CNavbarText.api.md │ │ ├── CNavbarToggler.api.md │ │ ├── CNavbarNav.api.md │ │ └── CNavbarBrand.api.md │ ├── breadcrumb │ │ ├── CBreadcrumb.api.md │ │ └── CBreadcrumbItem.api.md │ ├── nav │ │ ├── CNavGroupItems.api.md │ │ └── CNavTitle.api.md │ ├── table │ │ └── CTableCaption.api.md │ ├── sidebar │ │ ├── CSidebarFooter.api.md │ │ ├── CSidebarHeader.api.md │ │ ├── CSidebarToggler.api.md │ │ ├── CSidebarNav.api.md │ │ └── CSidebarBrand.api.md │ ├── accordion │ │ ├── CAccordionBody.api.md │ │ ├── CAccordionButton.api.md │ │ └── CAccordionHeader.api.md │ ├── offcanvas │ │ ├── COffcanvasBody.api.md │ │ ├── COffcanvasHeader.api.md │ │ └── COffcanvasTitle.api.md │ ├── button-group │ │ └── CButtonToolbar.api.md │ ├── carousel │ │ ├── CCarouselCaption.api.md │ │ └── CCarouselItem.api.md │ ├── dropdown │ │ ├── CDropdownDivider.api.md │ │ ├── CDropdownHeader.api.md │ │ └── CDropdownMenu.api.md │ ├── progress │ │ └── CProgressStacked.api.md │ ├── backdrop │ │ └── CBackdrop.api.md │ ├── pagination │ │ └── CPagination.api.md │ ├── stepper │ │ └── CStepper.api.md │ ├── footer │ │ └── CFooter.api.md │ └── callout │ │ └── CCallout.api.md │ └── components │ └── link.md ├── .vscode └── settings.json ├── .github ├── FUNDING.yml ├── SUPPORT.md ├── ISSUE_TEMPLATE │ └── feature_request.md ├── .stale.yml └── workflows │ ├── daily-project-check.yml │ └── project-check.yml ├── lerna.json ├── .editorconfig ├── prettier.config.mjs ├── .gitmodules └── .gitignore /.prettierignore: -------------------------------------------------------------------------------- 1 | build/ 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Enforce Unix newlines 2 | * text=auto eol=lf 3 | -------------------------------------------------------------------------------- /packages/coreui-vue/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not ie <= 8 -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.defaultFormatter": "esbenp.prettier-vscode" 3 | } -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/node/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './assignDefaultLocaleOptions' 2 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/client/index.ts: -------------------------------------------------------------------------------- 1 | export * from '../shared/index.js' 2 | export * from './composables/index.js' -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './nav' 2 | export * from './options' 3 | export * from './page' 4 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicon.ico -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/vue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/vue.jpg -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/react.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/react.jpg -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/angular.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/angular.jpg -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/vue400.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/vue400.jpg -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | custom: "https://coreui.io/pricing/?support=true" 4 | open_collective: coreui 5 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/avatars/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/avatars/1.jpg -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/avatars/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/avatars/2.jpg -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/avatars/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/avatars/3.jpg -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/avatars/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/avatars/4.jpg -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/avatars/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/avatars/5.jpg -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/avatars/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/avatars/6.jpg -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/avatars/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/avatars/7.jpg -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/avatars/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/avatars/8.jpg -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/images/avatars/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/images/avatars/9.jpg -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/apple-icon.png -------------------------------------------------------------------------------- /packages/docs/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "trailingComma": "es5", 4 | "singleQuote": true, 5 | "printWidth": 100, 6 | "tabWidth": 2 7 | 8 | } 9 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/favicon-16x16.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/favicon-32x32.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/favicon-96x96.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/ms-icon-70x70.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/client/composables/index.ts: -------------------------------------------------------------------------------- 1 | export * from './useScrollPromise' 2 | export * from './useSidebarItems' 3 | export * from './useThemeData' 4 | -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "npmClient": "yarn", 3 | "packages": ["packages/*"], 4 | "version": "5.7.0", 5 | "$schema": "node_modules/lerna/schemas/lerna-schema.json" 6 | } 7 | -------------------------------------------------------------------------------- /packages/coreui-vue/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig", 3 | "compilerOptions": { 4 | "declarationDir": "." 5 | }, 6 | "include": ["src/**/*"] 7 | } -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/apple-icon-57x57.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/apple-icon-60x60.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/apple-icon-72x72.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/apple-icon-76x76.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/ms-icon-144x144.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/ms-icon-150x150.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/ms-icon-310x310.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/android-icon-36x36.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/android-icon-48x48.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/android-icon-72x72.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/android-icon-96x96.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/apple-icon-114x114.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/apple-icon-120x120.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/apple-icon-144x144.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/apple-icon-152x152.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/apple-icon-180x180.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/android-icon-144x144.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/android-icon-192x192.png -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coreui/coreui-vue/HEAD/packages/docs/.vuepress/public/favicons/apple-icon-precomposed.png -------------------------------------------------------------------------------- /packages/coreui-vue/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import { DefineComponent } from 'vue' 3 | const component: DefineComponent<{}, {}, any> 4 | export default component 5 | } 6 | -------------------------------------------------------------------------------- /packages/docs/api/card/CCardBody.api.md: -------------------------------------------------------------------------------- 1 | ### CCardBody 2 | 3 | ```jsx 4 | import { CCardBody } from '@coreui/vue' 5 | // or 6 | import CCardBody from '@coreui/vue/src/components/card/CCardBody' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/alert/CAlertLink.api.md: -------------------------------------------------------------------------------- 1 | ### CAlertLink 2 | 3 | ```jsx 4 | import { CAlertLink } from '@coreui/vue' 5 | // or 6 | import CAlertLink from '@coreui/vue/src/components/alert/CAlertLink' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/card/CCardGroup.api.md: -------------------------------------------------------------------------------- 1 | ### CCardGroup 2 | 3 | ```jsx 4 | import { CCardGroup } from '@coreui/vue' 5 | // or 6 | import CCardGroup from '@coreui/vue/src/components/card/CCardGroup' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/modal/CModalBody.api.md: -------------------------------------------------------------------------------- 1 | ### CModalBody 2 | 3 | ```jsx 4 | import { CModalBody } from '@coreui/vue' 5 | // or 6 | import CModalBody from '@coreui/vue/src/components/modal/CModalBody' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/toast/CToastBody.api.md: -------------------------------------------------------------------------------- 1 | ### CToastBody 2 | 3 | ```jsx 4 | import { CToastBody } from '@coreui/vue' 5 | // or 6 | import CToastBody from '@coreui/vue/src/components/toast/CToastBody' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/card/CCardFooter.api.md: -------------------------------------------------------------------------------- 1 | ### CCardFooter 2 | 3 | ```jsx 4 | import { CCardFooter } from '@coreui/vue' 5 | // or 6 | import CCardFooter from '@coreui/vue/src/components/card/CCardFooter' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/tabs/CTabContent.api.md: -------------------------------------------------------------------------------- 1 | ### CTabContent 2 | 3 | ```jsx 4 | import { CTabContent } from '@coreui/vue' 5 | // or 6 | import CTabContent from '@coreui/vue/src/components/tabs/CTabContent' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/form/CFormControl.api.md: -------------------------------------------------------------------------------- 1 | ### CFormControl 2 | 3 | ```jsx 4 | import { CFormControl } from '@coreui/vue' 5 | // or 6 | import CFormControl from '@coreui/vue/src/components/form/CFormControl' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/header/CHeaderText.api.md: -------------------------------------------------------------------------------- 1 | ### CHeaderText 2 | 3 | ```jsx 4 | import { CHeaderText } from '@coreui/vue' 5 | // or 6 | import CHeaderText from '@coreui/vue/src/components/header/CHeaderText' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/modal/CModalFooter.api.md: -------------------------------------------------------------------------------- 1 | ### CModalFooter 2 | 3 | ```jsx 4 | import { CModalFooter } from '@coreui/vue' 5 | // or 6 | import CModalFooter from '@coreui/vue/src/components/modal/CModalFooter' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/navbar/CNavbarText.api.md: -------------------------------------------------------------------------------- 1 | ### CNavbarText 2 | 3 | ```jsx 4 | import { CNavbarText } from '@coreui/vue' 5 | // or 6 | import CNavbarText from '@coreui/vue/src/components/navbar/CNavbarText' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/node/index.ts: -------------------------------------------------------------------------------- 1 | import { defaultTheme } from './defaultTheme' 2 | 3 | export * from '../shared' 4 | export * from './defaultTheme' 5 | export * from './utils' 6 | 7 | export default defaultTheme 8 | -------------------------------------------------------------------------------- /packages/docs/api/breadcrumb/CBreadcrumb.api.md: -------------------------------------------------------------------------------- 1 | ### CBreadcrumb 2 | 3 | ```jsx 4 | import { CBreadcrumb } from '@coreui/vue' 5 | // or 6 | import CBreadcrumb from '@coreui/vue/src/components/breadcrumb/CBreadcrumb' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/form/CFormFloating.api.md: -------------------------------------------------------------------------------- 1 | ### CFormFloating 2 | 3 | ```jsx 4 | import { CFormFloating } from '@coreui/vue' 5 | // or 6 | import CFormFloating from '@coreui/vue/src/components/form/CFormFloating' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/nav/CNavGroupItems.api.md: -------------------------------------------------------------------------------- 1 | ### CNavGroupItems 2 | 3 | ```jsx 4 | import { CNavGroupItems } from '@coreui/vue' 5 | // or 6 | import CNavGroupItems from '@coreui/vue/src/components/nav/CNavGroupItems' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/table/CTableCaption.api.md: -------------------------------------------------------------------------------- 1 | ### CTableCaption 2 | 3 | ```jsx 4 | import { CTableCaption } from '@coreui/vue' 5 | // or 6 | import CTableCaption from '@coreui/vue/src/components/table/CTableCaption' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/directives/index.ts: -------------------------------------------------------------------------------- 1 | import vcplaceholder from './v-c-placeholder' 2 | import vcpopover from './v-c-popover' 3 | import vctooltip from './v-c-tooltip' 4 | 5 | export { vcplaceholder, vcpopover, vctooltip } 6 | -------------------------------------------------------------------------------- /packages/docs/api/header/CHeaderDivider.api.md: -------------------------------------------------------------------------------- 1 | ### CHeaderDivider 2 | 3 | ```jsx 4 | import { CHeaderDivider } from '@coreui/vue' 5 | // or 6 | import CHeaderDivider from '@coreui/vue/src/components/header/CHeaderDivider' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/header/CHeaderToggler.api.md: -------------------------------------------------------------------------------- 1 | ### CHeaderToggler 2 | 3 | ```jsx 4 | import { CHeaderToggler } from '@coreui/vue' 5 | // or 6 | import CHeaderToggler from '@coreui/vue/src/components/header/CHeaderToggler' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/navbar/CNavbarToggler.api.md: -------------------------------------------------------------------------------- 1 | ### CNavbarToggler 2 | 3 | ```jsx 4 | import { CNavbarToggler } from '@coreui/vue' 5 | // or 6 | import CNavbarToggler from '@coreui/vue/src/components/navbar/CNavbarToggler' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/sidebar/CSidebarFooter.api.md: -------------------------------------------------------------------------------- 1 | ### CSidebarFooter 2 | 3 | ```jsx 4 | import { CSidebarFooter } from '@coreui/vue' 5 | // or 6 | import CSidebarFooter from '@coreui/vue/src/components/sidebar/CSidebarFooter' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/sidebar/CSidebarHeader.api.md: -------------------------------------------------------------------------------- 1 | ### CSidebarHeader 2 | 3 | ```jsx 4 | import { CSidebarHeader } from '@coreui/vue' 5 | // or 6 | import CSidebarHeader from '@coreui/vue/src/components/sidebar/CSidebarHeader' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/client/layouts/Redirect.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /packages/docs/api/accordion/CAccordionBody.api.md: -------------------------------------------------------------------------------- 1 | ### CAccordionBody 2 | 3 | ```jsx 4 | import { CAccordionBody } from '@coreui/vue' 5 | // or 6 | import CAccordionBody from '@coreui/vue/src/components/accordion/CAccordionBody' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/offcanvas/COffcanvasBody.api.md: -------------------------------------------------------------------------------- 1 | ### COffcanvasBody 2 | 3 | ```jsx 4 | import { COffcanvasBody } from '@coreui/vue' 5 | // or 6 | import COffcanvasBody from '@coreui/vue/src/components/offcanvas/COffcanvasBody' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/sidebar/CSidebarToggler.api.md: -------------------------------------------------------------------------------- 1 | ### CSidebarToggler 2 | 3 | ```jsx 4 | import { CSidebarToggler } from '@coreui/vue' 5 | // or 6 | import CSidebarToggler from '@coreui/vue/src/components/sidebar/CSidebarToggler' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/composables/index.ts: -------------------------------------------------------------------------------- 1 | import { useColorModes } from './useColorModes' 2 | import { usePopper } from './usePopper' 3 | import { useUniqueId } from './useUniqueId' 4 | 5 | export { useColorModes, usePopper, useUniqueId } 6 | -------------------------------------------------------------------------------- /packages/docs/api/button-group/CButtonToolbar.api.md: -------------------------------------------------------------------------------- 1 | ### CButtonToolbar 2 | 3 | ```jsx 4 | import { CButtonToolbar } from '@coreui/vue' 5 | // or 6 | import CButtonToolbar from '@coreui/vue/src/components/button-group/CButtonToolbar' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/card/CCardImageOverlay.api.md: -------------------------------------------------------------------------------- 1 | ### CCardImageOverlay 2 | 3 | ```jsx 4 | import { CCardImageOverlay } from '@coreui/vue' 5 | // or 6 | import CCardImageOverlay from '@coreui/vue/src/components/card/CCardImageOverlay' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/carousel/CCarouselCaption.api.md: -------------------------------------------------------------------------------- 1 | ### CCarouselCaption 2 | 3 | ```jsx 4 | import { CCarouselCaption } from '@coreui/vue' 5 | // or 6 | import CCarouselCaption from '@coreui/vue/src/components/carousel/CCarouselCaption' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/dropdown/CDropdownDivider.api.md: -------------------------------------------------------------------------------- 1 | ### CDropdownDivider 2 | 3 | ```jsx 4 | import { CDropdownDivider } from '@coreui/vue' 5 | // or 6 | import CDropdownDivider from '@coreui/vue/src/components/dropdown/CDropdownDivider' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/progress/CProgressStacked.api.md: -------------------------------------------------------------------------------- 1 | ### CProgressStacked 2 | 3 | ```jsx 4 | import { CProgressStacked } from '@coreui/vue' 5 | // or 6 | import CProgressStacked from '@coreui/vue/src/components/progress/CProgressStacked' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/accordion/CAccordionButton.api.md: -------------------------------------------------------------------------------- 1 | ### CAccordionButton 2 | 3 | ```jsx 4 | import { CAccordionButton } from '@coreui/vue' 5 | // or 6 | import CAccordionButton from '@coreui/vue/src/components/accordion/CAccordionButton' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/accordion/CAccordionHeader.api.md: -------------------------------------------------------------------------------- 1 | ### CAccordionHeader 2 | 3 | ```jsx 4 | import { CAccordionHeader } from '@coreui/vue' 5 | // or 6 | import CAccordionHeader from '@coreui/vue/src/components/accordion/CAccordionHeader' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/docs/api/offcanvas/COffcanvasHeader.api.md: -------------------------------------------------------------------------------- 1 | ### COffcanvasHeader 2 | 3 | ```jsx 4 | import { COffcanvasHeader } from '@coreui/vue' 5 | // or 6 | import COffcanvasHeader from '@coreui/vue/src/components/offcanvas/COffcanvasHeader' 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavTitle.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CNavTitle component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarNav.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CSidebarNav component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlertLink.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CAlertLink component renders correctly 1`] = `"Default slot"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardBody.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CCardBody component renders correctly 1`] = `"
Default slot
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardGroup.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CCardGroup component renders correctly 1`] = `"
Default slot
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableCaption.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CTableCaption component renders correctly 1`] = `"Default slot"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardFooter.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CCardFooter component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownDivider.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CDropdownDivider component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalBody.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CModalBody component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/tabs/__tests__/__snapshots__/CTabContent.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CTabContent component renders correctly 1`] = `"
Default slot
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToastBody.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CToastBody component renders correctly 1`] = `"
Default slot
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/utils/getUID.ts: -------------------------------------------------------------------------------- 1 | const getUID = (prefix: string) => { 2 | do { 3 | prefix += Math.floor(Math.random() * 1_000_000) 4 | } while (document.getElementById(prefix)) 5 | 6 | return prefix 7 | } 8 | 9 | export default getUID 10 | -------------------------------------------------------------------------------- /packages/docs/components/link.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: CLink 3 | description: 4 | --- 5 | 6 | ## Examples 7 | 8 | CLink 9 | 10 | ```vue 11 | 12 | CLink 13 | 14 | ``` 15 | 16 | 17 | 18 | ## Additional content -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardLink.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CCardLink component renders correctly 1`] = `"Default slot"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormFloating.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CFormFloating component renders correctly 1`] = `"
Default slot
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderText.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CHeaderText component renders correctly 1`] = `"Default slot"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalFooter.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CModalFooter component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavGroupItems.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CNavGroupItems component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarText.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CNavbarText component renders correctly 1`] = `"Default slot"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderDivider.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CHeaderDivider component renders correctly 1`] = `"
Default slot
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarBrand.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CSidebarBrand component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarFooter.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CSidebarFooter component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarHeader.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CSidebarHeader component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordion.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CAccordion component renders correctly 1`] = `"
Default slot
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionItem.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CAccordionItem component renders correctly 1`] = `"
Default slot
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/button-group/__tests__/__snapshots__/CButtonToolbar.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CButtonToolbar component renders correctly 1`] = `"
Default slot
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardImageOverlay.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CCardImageOverlay component renders correctly 1`] = `"
Default slot
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvasBody.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display COffcanvasBody component renders correctly 1`] = `"
Default slot
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/carousel/__tests__/__snapshots__/CCarouselCaption.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CCarouselCaption component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvasHeader.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display COffcanvasHeader component renders correctly 1`] = `"
Default slot
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebarToggler.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CSidebarToggler component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | charset = utf-8 11 | trim_trailing_whitespace = false 12 | insert_final_newline = false -------------------------------------------------------------------------------- /.github/SUPPORT.md: -------------------------------------------------------------------------------- 1 | ### Bug reports 2 | 3 | See the [contributing guidelines](CONTRIBUTING.md) for sharing bug reports. 4 | 5 | ### How-to 6 | 7 | For general troubleshooting or help getting started: 8 | 9 | - Join [GitHub Discussions](https://github.com/coreui/coreui-vue/discussions). 10 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/link/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CLink } from './CLink' 3 | 4 | const CCLinkPlugin = { 5 | install: (app: App): void => { 6 | app.component(CLink.name as string, CLink) 7 | }, 8 | } 9 | 10 | export { CCLinkPlugin, CLink } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/utils/ComponentProps.ts: -------------------------------------------------------------------------------- 1 | import { DefineComponent, ExtractPropTypes, ExtractPublicPropTypes } from 'vue' 2 | 3 | export type ComponentProps = 4 | T extends DefineComponent, any, any> 5 | ? ExtractPublicPropTypes 6 | : never 7 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/badge/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CBadge } from './CBadge' 3 | 4 | const CBadgePlugin = { 5 | install: (app: App): void => { 6 | app.component(CBadge.name as string, CBadge) 7 | }, 8 | } 9 | 10 | export { CBadge, CBadgePlugin } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/image/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CImage } from './CImage' 3 | 4 | const CImagePlugin = { 5 | install: (app: App): void => { 6 | app.component(CImage.name as string, CImage) 7 | }, 8 | } 9 | 10 | export { CImagePlugin, CImage } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/avatar/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CAvatar } from './CAvatar' 3 | 4 | const CAvatarPlugin = { 5 | install: (app: App): void => { 6 | app.component(CAvatar.name as string, CAvatar) 7 | }, 8 | } 9 | 10 | export { CAvatarPlugin, CAvatar } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/button/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CButton } from './CButton' 3 | 4 | const CButtonPlugin = { 5 | install: (app: App): void => { 6 | app.component(CButton.name as string, CButton) 7 | }, 8 | } 9 | 10 | export { CButtonPlugin, CButton } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/footer/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CFooter } from './CFooter' 3 | 4 | const CFooterPlugin = { 5 | install: (app: App): void => { 6 | app.component(CFooter.name as string, CFooter) 7 | }, 8 | } 9 | 10 | export { CFooterPlugin, CFooter } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/callout/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CCallout } from './CCallout' 3 | 4 | const CCalloutPlugin = { 5 | install: (app: App): void => { 6 | app.component(CCallout.name as string, CCallout) 7 | }, 8 | } 9 | 10 | export { CCalloutPlugin, CCallout } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/popover/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CPopover } from './CPopover' 3 | 4 | const CPopoverPlugin = { 5 | install: (app: App): void => { 6 | app.component(CPopover.name as string, CPopover) 7 | }, 8 | } 9 | 10 | export { CPopoverPlugin, CPopover } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/spinner/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CSpinner } from './CSpinner' 3 | 4 | const CSpinnerPlugin = { 5 | install: (app: App): void => { 6 | app.component(CSpinner.name as string, CSpinner) 7 | }, 8 | } 9 | 10 | export { CSpinnerPlugin, CSpinner } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/tooltip/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CTooltip } from './CTooltip' 3 | 4 | const CTooltipPlugin = { 5 | install: (app: App): void => { 6 | app.component(CTooltip.name as string, CTooltip) 7 | }, 8 | } 9 | 10 | export { CTooltipPlugin, CTooltip } 11 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/client/shim.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import type { ComponentOptions } from 'vue' 3 | const comp: ComponentOptions 4 | export default comp 5 | } 6 | 7 | declare module '*.module.scss?module' { 8 | const cssVars: Record 9 | export default cssVars 10 | } -------------------------------------------------------------------------------- /prettier.config.mjs: -------------------------------------------------------------------------------- 1 | /** 2 | * @see https://prettier.io/docs/en/configuration.html 3 | * @type {import("prettier").Config} 4 | */ 5 | const config = { 6 | printWidth: 100, 7 | semi: false, 8 | singleQuote: true, 9 | tabWidth: 2, 10 | trailingComma: 'es5', 11 | } 12 | 13 | export default config 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/backdrop/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CBackdrop } from './CBackdrop' 3 | 4 | const CBackdropPlugin = { 5 | install: (app: App): void => { 6 | app.component(CBackdrop.name as string, CBackdrop) 7 | }, 8 | } 9 | 10 | export { CBackdropPlugin, CBackdrop } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/collapse/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CCollapse } from './CCollapse' 3 | 4 | const CCollapsePlugin = { 5 | install: (app: App): void => { 6 | app.component(CCollapse.name as string, CCollapse) 7 | }, 8 | } 9 | 10 | export { CCollapsePlugin, CCollapse } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CAccordionButton component renders correctly 1`] = `""`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumb.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CBreadcrumb component renders correctly 1`] = ` 4 | "" 7 | `; 8 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/CCardBody.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CCardBody = defineComponent({ 4 | name: 'CCardBody', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'card-body' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | export { CCardBody } 10 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "packages/coreui-icons-vue"] 2 | path = packages/coreui-icons-vue 3 | url = https://github.com/coreui/coreui-icons-vue.git 4 | branch = main 5 | [submodule "packages/coreui-vue-chartjs"] 6 | path = packages/coreui-vue-chartjs 7 | url = https://github.com/coreui/coreui-vue-chartjs.git 8 | branch = main 9 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/focus-trap/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CFocusTrap } from './CFocusTrap' 3 | 4 | const CFocusTrapPlugin = { 5 | install: (app: App): void => { 6 | app.component(CFocusTrap.name as string, CFocusTrap) 7 | }, 8 | } 9 | 10 | export { CFocusTrapPlugin, CFocusTrap } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/CTableCaption.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CTableCaption = defineComponent({ 4 | name: 'CTableCaption', 5 | setup(_, { slots }) { 6 | return () => h('caption', {}, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CTableCaption } 11 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/public/favicons/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/client/styles/_scrolling.scss: -------------------------------------------------------------------------------- 1 | // When navigating with the keyboard, prevent focus from landing behind the sticky header 2 | 3 | main { 4 | a, 5 | button, 6 | h2, 7 | h3, 8 | h4, 9 | [tabindex="0"] { 10 | scroll-margin-top: 80px; 11 | scroll-margin-bottom: 100px; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/backdrop/__tests__/__snapshots__/CBackdrop.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CBackdrop component renders correctly 1`] = ` 4 | " 5 |
6 |
" 7 | `; 8 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/CCardGroup.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CCardGroup = defineComponent({ 4 | name: 'CCardGroup', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'card-group' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CCardGroup } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/modal/CModalBody.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CModalBody = defineComponent({ 4 | name: 'CModalBody', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'modal-body' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CModalBody } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/toast/CToastBody.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CToastBody = defineComponent({ 4 | name: 'CToastBody', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'toast-body' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CToastBody } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/CCardFooter.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CCardFooter = defineComponent({ 4 | name: 'CCardFooter', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'card-footer' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CCardFooter } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/CHeaderText.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CHeaderText = defineComponent({ 4 | name: 'CHeaderText', 5 | setup(_, { slots }) { 6 | return () => h('span', { class: 'header-text' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CHeaderText } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/navbar/CNavbarText.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CNavbarText = defineComponent({ 4 | name: 'CNavbarText', 5 | setup(_, { slots }) { 6 | return () => h('span', { class: 'navbar-text' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CNavbarText } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/tabs/CTabContent.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CTabContent = defineComponent({ 4 | name: 'CTabContent', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'tab-content' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CTabContent } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/utils/index.ts: -------------------------------------------------------------------------------- 1 | import getNextActiveElement from './getNextActiveElement' 2 | import getRTLPlacement from './getRTLPlacement' 3 | import getUID from './getUID' 4 | import isInViewport from './isInViewport' 5 | import isRTL from './isRTL' 6 | 7 | export { getNextActiveElement, getRTLPlacement, getUID, isInViewport, isRTL } 8 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/close-button/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CCloseButton } from './CCloseButton' 3 | 4 | const CCloseButtonPlugin = { 5 | install: (app: App): void => { 6 | app.component(CCloseButton.name as string, CCloseButton) 7 | }, 8 | } 9 | 10 | export { CCloseButtonPlugin, CCloseButton } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/modal/CModalFooter.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CModalFooter = defineComponent({ 4 | name: 'CModalFooter', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'modal-footer' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CModalFooter } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/placeholder/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CPlaceholder } from './CPlaceholder' 3 | 4 | const CPlaceholderPlugin = { 5 | install: (app: App): void => { 6 | app.component(CPlaceholder.name as string, CPlaceholder) 7 | }, 8 | } 9 | 10 | export { CPlaceholderPlugin, CPlaceholder } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/button-group/CButtonToolbar.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CButtonToolbar = defineComponent({ 4 | name: 'CButtonToolbar', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'btn-toolbar' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | export { CButtonToolbar } 10 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardImage.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CCardImage component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Loads and display CCardImage component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/dropdown/CDropdownDivider.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CDropdownDivider = defineComponent({ 4 | name: 'CDropdownDivider', 5 | setup() { 6 | return () => 7 | h('hr', { 8 | class: 'dropdown-divider', 9 | }) 10 | }, 11 | }) 12 | 13 | export { CDropdownDivider } 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/dropdown/types.ts: -------------------------------------------------------------------------------- 1 | export type Directions = 'start' | 'end' 2 | 3 | export type Breakpoints = 4 | | { xs: Directions } 5 | | { sm: Directions } 6 | | { md: Directions } 7 | | { lg: Directions } 8 | | { xl: Directions } 9 | | { xxl: Directions } 10 | 11 | export type Alignments = Directions | Breakpoints 12 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CForm.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CForm component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CForm component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/CHeaderDivider.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CHeaderDivider = defineComponent({ 4 | name: 'CHeaderDivider', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'header-divider' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CHeaderDivider } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/nav/CNavGroupItems.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CNavGroupItems = defineComponent({ 4 | name: 'CNavGroupItems', 5 | setup(_, { slots }) { 6 | return () => h('ul', { class: 'nav-group-items' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CNavGroupItems } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/CSidebarFooter.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CSidebarFooter = defineComponent({ 4 | name: 'CSidebarFooter', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'sidebar-footer' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CSidebarFooter } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/CSidebarHeader.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CSidebarHeader = defineComponent({ 4 | name: 'CSidebarHeader', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'sidebar-header' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CSidebarHeader } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CAccordionHeader component renders correctly 1`] = `"
"`; 4 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/CCardImageOverlay.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CCardImageOverlay = defineComponent({ 4 | name: 'CCardImageOverlay', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'card-img-overlay' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | export { CCardImageOverlay } 10 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardText.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CCardText component renders correctly 1`] = `"

Default slot

"`; 4 | 5 | exports[`Loads and display CCardText component renders correctly 1`] = `"

Default slot

"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/offcanvas/COffcanvasBody.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const COffcanvasBody = defineComponent({ 4 | name: 'COffcanvasBody', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'offcanvas-body' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { COffcanvasBody } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCard.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CCard component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CCard component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormText.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CFormText component renders correctly 1`] = `"

Default slot

"`; 4 | 5 | exports[`Loads and display CFormText component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/CSidebarToggler.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CSidebarToggler = defineComponent({ 4 | name: 'CSidebarToggler', 5 | setup(_, { slots }) { 6 | return () => h('button', { class: 'sidebar-toggler' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { CSidebarToggler } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardTitle.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CCardTitle component renders correctly 1`] = `"

Default slot

"`; 4 | 5 | exports[`Loads and display CCardTitle component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/footer/__tests__/__snapshots__/CFooter.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CFooter component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CFooter component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/offcanvas/COffcanvasHeader.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const COffcanvasHeader = defineComponent({ 4 | name: 'COffcanvasHeader', 5 | setup(_, { slots }) { 6 | return () => h('div', { class: 'offcanvas-header' }, slots.default && slots.default()) 7 | }, 8 | }) 9 | 10 | export { COffcanvasHeader } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/alert/CAlertLink.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | export const CAlertLink = defineComponent({ 4 | name: 'CAlertLink', 5 | setup(_, { slots }) { 6 | return () => 7 | h( 8 | 'a', 9 | { 10 | class: 'alert-link', 11 | }, 12 | slots, 13 | ) 14 | }, 15 | }) 16 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalTitle.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CModalTitle component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CModalTitle component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableBody.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CTableBody component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Loads and display CTableBody component renders correctly 1`] = `"Default slot"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableFoot.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CTableFoot component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Loads and display CTableFoot component renders correctly 1`] = `"Default slot"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableHead.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CTableHead component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Loads and display CTableHead component renders correctly 1`] = `"Default slot"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/utils/isRTL.ts: -------------------------------------------------------------------------------- 1 | const isRTL = (element?: HTMLElement | HTMLDivElement | null) => { 2 | if (typeof document !== 'undefined' && document.documentElement.dir === 'rtl') { 3 | return true 4 | } 5 | 6 | if (element) { 7 | return element.closest('[dir="rtl"]') !== null 8 | } 9 | 10 | return false 11 | } 12 | 13 | export default isRTL 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/callout/__tests__/__snapshots__/CCallout.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CCallout component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CCallout component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardHeader.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CCardHeader component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Loads and display CCardHeader component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormLabel.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CFormLabel component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CFormLabel component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/grid/__tests__/__snapshots__/CRow.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CRow component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CRow component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderBrand.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CHeaderBrand component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CHeaderBrand component renders correctly 1`] = `"Default slot"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableHeaderCell.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CTableHeaderCell component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Loads and display CTableHeaderCell component renders correctly 1`] = `"Default slot"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/alert/__tests__/__snapshots__/CAlertHeading.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CAlertHeading component renders correctly 1`] = `"

Default slot

"`; 4 | 5 | exports[`Loads and display CAlertHeading component renders correctly 1`] = `"

Default slot

"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/__snapshots__/CCardSubtitle.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CCardSubtitle component renders correctly 1`] = `"

Default slot

"`; 4 | 5 | exports[`Loads and display CCardSubtitle component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableRow.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CTableRow component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Loads and display CTableRow component renders correctly 1`] = `"Default slot"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/grid/__tests__/__snapshots__/CCol.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CCol component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CCol component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CInputGroup.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CInputGroup component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CInputGroup component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNav.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CNav component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CNav component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/carousel/__tests__/__snapshots__/CCarouselItem.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CCarouselItem component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CCarouselItem component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownHeader.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CDropdownHeader component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CDropdownHeader component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CInputGroupText.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CInputGroupText component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CInputGroupText component renders correctly 1`] = `"Default slot"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/offcanvas/__tests__/__snapshots__/COffcanvasTitle.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize COffcanvasTitle component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display COffcanvasTitle component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTableDataCell.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CTableDataCell component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Loads and display CTableDataCell component renders correctly 1`] = `"Default slot"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/button-group/__tests__/__snapshots__/CButtonGroup.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Custom CButtonGroup component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CButtonGroup component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/grid/__tests__/__snapshots__/CContainer.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CContainer component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CContainer component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/conditional-teleport/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CConditionalTeleport } from './CConditionalTeleport' 3 | 4 | const CConditionalTeleportPlugin = { 5 | install: (app: App): void => { 6 | app.component(CConditionalTeleport.name as string, CConditionalTeleport) 7 | }, 8 | } 9 | 10 | export { CConditionalTeleport, CConditionalTeleportPlugin } 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderNav.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CHeaderNav component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CHeaderNav component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavLink.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CNavLink component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CNavLink component renders correctly 1`] = `"Default slot"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarNav.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CNavbarNav component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CNavbarNav component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormRange.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CFormRange component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CFormRange component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/list-group/__tests__/__snapshots__/CListGroup.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CListGroup component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CListGroup component renders correctly 1`] = `"
    Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToaster.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CToaster component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CToaster component renders correctly 1`] = `"
Default slot
"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownMenu.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CDropdownMenu component renders correctly 1`] = ` 4 | " 5 | " 6 | `; 7 | 8 | exports[`Loads and display CDropdownMenu component renders correctly 1`] = ` 9 | " 10 | " 11 | `; 12 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/link/__tests__/__snapshots__/CLink.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CLink component renders correctly 1`] = `"
Default slot
"`; 4 | 5 | exports[`Loads and display CLink component renders correctly 1`] = `"Default slot"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormSelect.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CFormSelect component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CFormSelect component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeader.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CHeader component renders correctly 1`] = ` 4 | "
5 |
Default slot
6 |
" 7 | `; 8 | 9 | exports[`Loads and display CHeader component renders correctly 1`] = `"
Default slot
"`; 10 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarToggler.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CNavbarToggler component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CNavbarToggler component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToastClose.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CToastClose component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CToastClose component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/badge/__tests__/__snapshots__/CBadge.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CBadge component renders correctly 1`] = ` 4 | 7 | `; 8 | 9 | exports[`Loads and display CBadge component renders correctly with slot 1`] = ` 10 | 13 | Hello World! 14 | 15 | `; 16 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownItem.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CDropdownItem component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CDropdownItem component renders correctly 1`] = `"Default slot"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/CFormFloating.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CFormFloating = defineComponent({ 4 | name: 'CFormFloating', 5 | setup(_, { slots }) { 6 | return () => 7 | h( 8 | 'div', 9 | { 10 | class: 'form-floating', 11 | }, 12 | slots.default && slots.default(), 13 | ) 14 | }, 15 | }) 16 | 17 | export { CFormFloating } 18 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/accordion/__tests__/__snapshots__/CAccordionBody.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CAccordionBody component renders correctly 1`] = ` 4 | " 5 |
6 |
Default slot
7 |
8 |
" 9 | `; 10 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumbItem.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CBreadcrumbItem component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CBreadcrumbItem component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/__tests__/__snapshots__/CSidebar.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CSidebar component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CSidebar component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/carousel/CCarouselCaption.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CCarouselCaption = defineComponent({ 4 | name: 'CCarouselCaption', 5 | setup(_, { slots }) { 6 | return () => 7 | h( 8 | 'div', 9 | { 10 | class: 'carousel-caption', 11 | }, 12 | slots.default && slots.default(), 13 | ) 14 | }, 15 | }) 16 | export { CCarouselCaption } 17 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/image/__tests__/__snapshots__/CImage.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize (two) CImage component renders correctly 1`] = `""`; 4 | 5 | exports[`Customize CImage component renders correctly 1`] = `""`; 6 | 7 | exports[`Loads and display CImage component renders correctly 1`] = `""`; 8 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/composables/useUniqueId.ts: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue' 2 | 3 | export const useUniqueId = (prefix: string = '') => { 4 | const ids = ref([]) 5 | 6 | const getUID = () => { 7 | do { 8 | prefix += Math.floor(Math.random() * 1_000_000) 9 | } while (ids.value.includes(prefix)) 10 | 11 | ids.value.push(prefix) 12 | return prefix 13 | } 14 | 15 | return { 16 | getUID, 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormTextarea.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CFormTextarea component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CFormTextarea component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/pagination/__tests__/__snapshots__/CPaginationItem.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CPaginationItem component renders correctly 1`] = `"
  • Default slot
  • "`; 4 | 5 | exports[`Loads and display CPaginationItem component renders correctly 1`] = `"
  • Default slot
  • "`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/list-group/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CListGroup } from './CListGroup' 3 | import { CListGroupItem } from './CListGroupItem' 4 | 5 | const CListGroupPlugin = { 6 | install: (app: App): void => { 7 | app.component(CListGroup.name as string, CListGroup) 8 | app.component(CListGroupItem.name as string, CListGroupItem) 9 | }, 10 | } 11 | 12 | export { CListGroupPlugin, CListGroup, CListGroupItem } 13 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavItem.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CNavItem component renders correctly 1`] = ` 4 | "" 7 | `; 8 | 9 | exports[`Loads and display CNavItem component renders correctly 1`] = `""`; 10 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/pagination/__tests__/__snapshots__/CPagination.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CPagination component renders correctly 1`] = ` 4 | "" 7 | `; 8 | 9 | exports[`Loads and display CPagination component renders correctly 1`] = ` 10 | "" 13 | `; 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsE.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CWidgetStatsE component renders correctly 1`] = ` 4 | "
    5 |
    6 |
    title
    7 |
    value
    chartdefault 8 |
    9 |
    " 10 | `; 11 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/close-button/__tests__/__snapshots__/CCloseButton.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CCloseButton component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CCloseButton component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/client/components/Callout.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 21 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/breadcrumb/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CBreadcrumbItem } from './CBreadcrumbItem' 3 | import { CBreadcrumb } from './CBreadcrumb' 4 | 5 | const CBreadcrumbPlugin = { 6 | install: (app: App): void => { 7 | app.component(CBreadcrumb.name as string, CBreadcrumb) 8 | app.component(CBreadcrumbItem.name as string, CBreadcrumbItem) 9 | }, 10 | } 11 | 12 | export { CBreadcrumbPlugin, CBreadcrumb, CBreadcrumbItem } 13 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/pagination/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CPagination } from './CPagination' 3 | import { CPaginationItem } from './CPaginationItem' 4 | 5 | const CPaginationPlugin = { 6 | install: (app: App): void => { 7 | app.component(CPagination.name as string, CPagination) 8 | app.component(CPaginationItem.name as string, CPaginationItem) 9 | }, 10 | } 11 | 12 | export { CPaginationPlugin, CPagination, CPaginationItem } 13 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/button-group/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CButtonToolbar } from './CButtonToolbar' 3 | import { CButtonGroup } from './CButtonGroup' 4 | 5 | const CButtonGroupPlugin = { 6 | install: (app: App): void => { 7 | app.component(CButtonToolbar.name as string, CButtonToolbar) 8 | app.component(CButtonGroup.name as string, CButtonGroup) 9 | }, 10 | } 11 | 12 | export { CButtonGroupPlugin, CButtonToolbar, CButtonGroup } 13 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/utils/isInViewport.ts: -------------------------------------------------------------------------------- 1 | const isInViewport = (element: HTMLElement) => { 2 | const rect = element.getBoundingClientRect() 3 | return ( 4 | Math.floor(rect.top) >= 0 && 5 | Math.floor(rect.left) >= 0 && 6 | Math.floor(rect.bottom) <= (window.innerHeight || document.documentElement.clientHeight) && 7 | Math.floor(rect.right) <= (window.innerWidth || document.documentElement.clientWidth) 8 | ) 9 | } 10 | 11 | export default isInViewport 12 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/grid/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CCol } from './CCol' 3 | import { CContainer } from './CContainer' 4 | import { CRow } from './CRow' 5 | 6 | const CGridPlugin = { 7 | install: (app: App): void => { 8 | app.component(CCol.name as string, CCol) 9 | app.component(CContainer.name as string, CContainer) 10 | app.component(CRow.name as string, CRow) 11 | }, 12 | } 13 | export { CGridPlugin, CCol, CContainer, CRow } 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbar.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CNavbar component renders correctly 1`] = ` 4 | "" 7 | `; 8 | 9 | exports[`Loads and display CNavbar component renders correctly 1`] = `""`; 10 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/progress/__tests__/__snapshots__/CProgressBar.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CProgressBar component renders correctly 1`] = `"
    Default slot
    "`; 4 | 5 | exports[`Loads and display CProgressBar component renders correctly 1`] = `"
    Default slot
    "`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/toast/__tests__/__snapshots__/CToastHeader.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CToastHeader component renders correctly 1`] = `"
    Default slot
    "`; 4 | 5 | exports[`Loads and display CToastHeader component renders correctly 1`] = ` 6 | "
    Default slot 7 | 8 |
    " 9 | `; 10 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdown.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize (variant number two) CDropdown component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Customize CDropdown component renders correctly 1`] = `""`; 6 | 7 | exports[`Loads and display CDropdown component renders correctly 1`] = `"
    Default slot
    "`; 8 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/navbar/CNavbarToggler.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CNavbarToggler = defineComponent({ 4 | name: 'CNavbarToggler', 5 | setup(_, { slots }) { 6 | return () => 7 | h( 8 | 'button', 9 | { 10 | class: 'navbar-toggler', 11 | }, 12 | slots.default ? slots.default() : h('span', { class: ['navbar-toggler-icon'] }), 13 | ) 14 | }, 15 | }) 16 | 17 | export { CNavbarToggler } 18 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/client/styles/_footer.scss: -------------------------------------------------------------------------------- 1 | @use "@coreui/coreui/scss/vendor/rfs" as *; 2 | @use "@coreui/coreui/scss/variables" as *; 3 | 4 | // 5 | // Footer 6 | // 7 | 8 | .footer { 9 | --cui-footer-bg: var(--cui-tertiary-bg); 10 | @include font-size(.875rem); 11 | 12 | a { 13 | color: var(--#{$prefix}secondary-color); 14 | // text-decoration: none; 15 | 16 | &:hover, 17 | &:focus { 18 | color: var(--cui-link-hover-color); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/placeholder/__tests__/__snapshots__/CPlaceholder.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CPlaceholder component renders correctly 1`] = ` 4 | 7 | `; 8 | 9 | exports[`Loads and display CPlaceholder component renders correctly with slot 1`] = ` 10 | 13 | Hello World! 14 | 15 | `; 16 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/spinner/__tests__/__snapshots__/CSpinner.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CSpinner component renders correctly 1`] = `"

    visuallyHiddenLabel

    "`; 4 | 5 | exports[`Loads and display CSpinner component renders correctly 1`] = `"
    Loading...
    "`; 6 | -------------------------------------------------------------------------------- /packages/docs/api/form/CInputGroup.api.md: -------------------------------------------------------------------------------- 1 | ### CInputGroup 2 | 3 | ```jsx 4 | import { CInputGroup } from '@coreui/vue' 5 | // or 6 | import CInputGroup from '@coreui/vue/src/components/form/CInputGroup' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | ---------------------------------- | ------ | -------------- | ------- | 13 | | **size** | Size the component small or large. | string | `'sm'`, `'lg'` | - | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/progress/CProgressStacked.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h, provide } from 'vue' 2 | 3 | const CProgressStacked = defineComponent({ 4 | name: 'CProgressStacked', 5 | props: {}, 6 | setup(_, { slots }) { 7 | provide('stacked', true) 8 | return () => 9 | h( 10 | 'div', 11 | { 12 | class: 'progress-stacked', 13 | }, 14 | slots.default && slots.default(), 15 | ) 16 | }, 17 | }) 18 | 19 | export { CProgressStacked } 20 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsA.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CWidgetStatsA component renders correctly 1`] = ` 4 | "
    5 |
    6 |
    7 |
    75
    8 |
    title
    9 |
    action 10 |
    chartDefault slot 11 |
    " 12 | `; 13 | -------------------------------------------------------------------------------- /packages/docs/api/backdrop/CBackdrop.api.md: -------------------------------------------------------------------------------- 1 | ### CBackdrop 2 | 3 | ```jsx 4 | import { CBackdrop } from '@coreui/vue' 5 | // or 6 | import CBackdrop from '@coreui/vue/src/components/backdrop/CBackdrop' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | ----------- | ----------------------------------------- | ------- | ------ | ------- | 13 | | **visible** | Toggle the visibility of modal component. | boolean | - | false | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/__tests__/__snapshots__/CHeaderToggler.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CHeaderToggler component renders correctly 1`] = `""`; 4 | 5 | exports[`Loads and display CHeaderToggler component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/breadcrumb/CBreadcrumb.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CBreadcrumb = defineComponent({ 4 | name: 'CBreadcrumb', 5 | inheritAttrs: false, 6 | setup(_, { slots, attrs }) { 7 | return () => 8 | h( 9 | 'nav', 10 | { 11 | 'aria-label': 'breadcrumb', 12 | }, 13 | h('ol', { class: ['breadcrumb', attrs.class] }, slots.default && slots.default()), 14 | ) 15 | }, 16 | }) 17 | 18 | export { CBreadcrumb } 19 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/modal/__tests__/__snapshots__/CModalHeader.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CModalHeader component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Loads and display CModalHeader component renders correctly 1`] = `"Default slot"`; 6 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/avatar/__tests__/__snapshots__/CAvatar.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CAvatar component renders correctly 1`] = ` 4 | "
    Default slot 5 | 6 |
    " 7 | `; 8 | 9 | exports[`Loads and display CAvatar component renders correctly 2`] = `"
    "`; 10 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormFeedback.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize (two) CFormFeedback component renders correctly 1`] = `"

    Default slot

    "`; 4 | 5 | exports[`Customize CFormFeedback component renders correctly 1`] = `"

    Default slot

    "`; 6 | 7 | exports[`Loads and display CFormFeedback component renders correctly 1`] = `"
    Default slot
    "`; 8 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/navbar/__tests__/__snapshots__/CNavbarBrand.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize (two) CNavbarBrand component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Customize CNavbarBrand component renders correctly 1`] = `""`; 6 | 7 | exports[`Loads and display CNavbarBrand component renders correctly 1`] = `"Default slot"`; 8 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/alert/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CAlert } from './CAlert' 3 | import { CAlertHeading } from './CAlertHeading' 4 | import { CAlertLink } from './CAlertLink' 5 | 6 | const CAlertPlugin = { 7 | install: (app: App): void => { 8 | app.component(CAlert.name as string, CAlert) 9 | app.component(CAlertHeading.name as string, CAlertHeading) 10 | app.component(CAlertLink.name as string, CAlertLink) 11 | }, 12 | } 13 | 14 | export { CAlertPlugin, CAlert, CAlertHeading, CAlertLink } 15 | -------------------------------------------------------------------------------- /packages/docs/api/modal/CModalHeader.api.md: -------------------------------------------------------------------------------- 1 | ### CModalHeader 2 | 3 | ```jsx 4 | import { CModalHeader } from '@coreui/vue' 5 | // or 6 | import CModalHeader from '@coreui/vue/src/components/modal/CModalHeader' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | ---------------- | ------------------------------------------- | ------- | ------ | ------- | 13 | | **close-button** | Add a close button component to the header. | boolean | - | true | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/utils/getRTLPlacement.ts: -------------------------------------------------------------------------------- 1 | import { Placement } from '@popperjs/core' 2 | import isRTL from './isRTL' 3 | 4 | const getRTLPlacement = (placement: string, element: HTMLDivElement | null): Placement => { 5 | switch (placement) { 6 | case 'right': { 7 | return isRTL(element) ? 'left' : 'right' 8 | } 9 | case 'left': { 10 | return isRTL(element) ? 'right' : 'left' 11 | } 12 | default: { 13 | return placement as Placement 14 | } 15 | } 16 | } 17 | 18 | export default getRTLPlacement 19 | -------------------------------------------------------------------------------- /packages/docs/api/toast/CToastHeader.api.md: -------------------------------------------------------------------------------- 1 | ### CToastHeader 2 | 3 | ```jsx 4 | import { CToastHeader } from '@coreui/vue' 5 | // or 6 | import CToastHeader from '@coreui/vue/src/components/toast/CToastHeader' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | ---------------- | ----------------------------------------------- | ------- | ------ | ------- | 13 | | **close-button** | Automatically add a close button to the header. | boolean | - | - | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/CCardText.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CCardText = defineComponent({ 4 | name: 'CCardText', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'p', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => h(props.as, { class: 'card-text' }, slots.default && slots.default()) 16 | }, 17 | }) 18 | 19 | export { CCardText } 20 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/CFormText.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CFormText = defineComponent({ 4 | name: 'CFormText', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'div', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => h(props.as, { class: 'form-text' }, slots.default && slots.default()) 16 | }, 17 | }) 18 | 19 | export { CFormText } 20 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/nav/CNavTitle.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CNavTitle = defineComponent({ 4 | name: 'CNavTitle', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'li', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => h(props.as, { class: 'nav-title' }, slots.default && slots.default()) 16 | }, 17 | }) 18 | 19 | export { CNavTitle } 20 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/CCardTitle.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CCardTitle = defineComponent({ 4 | name: 'CCardTitle', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'h5', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => h(props.as, { class: 'card-title' }, slots.default && slots.default()) 16 | }, 17 | }) 18 | 19 | export { CCardTitle } 20 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/CCardHeader.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CCardHeader = defineComponent({ 4 | name: 'CCardHeader', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'div', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => h(props.as, { class: 'card-header' }, slots.default && slots.default()) 16 | }, 17 | }) 18 | 19 | export { CCardHeader } 20 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/modal/CModalTitle.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CModalTitle = defineComponent({ 4 | name: 'CModalTitle', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'h5', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => h(props.as, { class: 'modal-title' }, slots.default && slots.default()) 16 | }, 17 | }) 18 | 19 | export { CModalTitle } 20 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/CCardSubtitle.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CCardSubtitle = defineComponent({ 4 | name: 'CCardSubtitle', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'h6', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => h(props.as, { class: 'card-subtitle' }, slots.default && slots.default()) 16 | }, 17 | }) 18 | export { CCardSubtitle } 19 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/CHeaderBrand.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CHeaderBrand = defineComponent({ 4 | name: 'CHeaderBrand', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'a', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => h(props.as, { class: 'header-brand' }, slots.default && slots.default()) 16 | }, 17 | }) 18 | 19 | export { CHeaderBrand } 20 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/CHeaderToggler.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CHeaderToggler = defineComponent({ 4 | name: 'CHeaderToggler', 5 | setup(_, { slots }) { 6 | return () => 7 | h( 8 | 'button', 9 | { 10 | class: 'header-toggler', 11 | type: 'button', 12 | 'aria-label': 'Toggle navigation', 13 | }, 14 | slots.default ? slots.default() : h('span', { class: ['header-toggler-icon'] }), 15 | ) 16 | }, 17 | }) 18 | 19 | export { CHeaderToggler } 20 | -------------------------------------------------------------------------------- /packages/docs/api/card/CCardLink.api.md: -------------------------------------------------------------------------------- 1 | ### CCardLink 2 | 3 | ```jsx 4 | import { CCardLink } from '@coreui/vue' 5 | // or 6 | import CCardLink from '@coreui/vue/src/components/card/CCardLink' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | ------------------------------------------------------------------ | ------ | ------ | ------- | 13 | | **href** | The href attribute specifies the URL of the page the link goes to. | string | - | '#' | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/collapse/__test__/__snapshots__/CCollapse.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CCollapse component renders correctly 1`] = ` 4 | " 5 |
    Default slot
    6 |
    " 7 | `; 8 | 9 | exports[`Loads and display CCollapse component renders correctly 2`] = ` 10 | " 11 |
    Default slot
    12 |
    " 13 | `; 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/CInputGroupText.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CInputGroupText = defineComponent({ 4 | name: 'CInputGroupText', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'span', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => h(props.as, { class: 'input-group-text' }, slots.default && slots.default()) 16 | }, 17 | }) 18 | 19 | export { CInputGroupText } 20 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/offcanvas/COffcanvasTitle.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const COffcanvasTitle = defineComponent({ 4 | name: 'COffcanvasTitle', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'h5', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => h(props.as, { class: 'offcanvas-title' }, slots.default && slots.default()) 16 | }, 17 | }) 18 | 19 | export { COffcanvasTitle } 20 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/progress/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CProgress } from './CProgress' 3 | import { CProgressBar } from './CProgressBar' 4 | import { CProgressStacked } from './CProgressStacked' 5 | 6 | const CProgressPlugin = { 7 | install: (app: App): void => { 8 | app.component(CProgress.name as string, CProgress) 9 | app.component(CProgressBar.name as string, CProgressBar) 10 | app.component(CProgressStacked.name as string, CProgressStacked) 11 | }, 12 | } 13 | 14 | export { CProgressPlugin, CProgress, CProgressBar, CProgressStacked } 15 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/client/styles/_anchor.scss: -------------------------------------------------------------------------------- 1 | @use "@coreui/coreui/scss/mixins/transition" as *; 2 | @use "@coreui/coreui/scss/variables" as *; 3 | 4 | .anchor-link { 5 | font-weight: 400; 6 | color: rgba($link-color, .5); 7 | padding-left: 0.375em; 8 | text-decoration: none; 9 | opacity: 0; 10 | @include transition(color .15s ease-in-out); 11 | 12 | &:focus, 13 | &:hover { 14 | color: $link-color; 15 | text-decoration: none; 16 | } 17 | } 18 | 19 | h2, h3, h4, h5, h6 { 20 | &:hover { 21 | .anchor-link { 22 | opacity: 1; 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Folders to ignore 2 | coverage/ 3 | dist/ 4 | node_modules/ 5 | yarn.lock 6 | 7 | # local env files 8 | .env.local 9 | .env.*.local 10 | 11 | # OS or Editor folders 12 | ._* 13 | .cache 14 | .temp 15 | .DS_Store 16 | .idea 17 | .project 18 | .settings 19 | .tmproj 20 | *.esproj 21 | *.sublime-project 22 | *.sublime-workspace 23 | *.suo 24 | *.ntvs* 25 | *.njsproj 26 | *.sln 27 | *.sw? 28 | nbproject 29 | Thumbs.db 30 | /.vscode/ 31 | 32 | # Numerous always-ignore extensions 33 | *.diff 34 | *.err 35 | *.log 36 | *.orig 37 | *.rej 38 | *.swo 39 | *.swp 40 | *.vi 41 | *.zip 42 | *~ 43 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/carousel/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CCarousel } from './CCarousel' 3 | import { CCarouselCaption } from './CCarouselCaption' 4 | import { CCarouselItem } from './CCarouselItem' 5 | 6 | const CCarouselPlugin = { 7 | install: (app: App): void => { 8 | app.component(CCarousel.name as string, CCarousel) 9 | app.component(CCarouselCaption.name as string, CCarouselCaption) 10 | app.component(CCarouselItem.name as string, CCarouselItem) 11 | }, 12 | } 13 | 14 | export { CCarouselPlugin, CCarousel, CCarouselCaption, CCarouselItem } 15 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/CForm.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CForm = defineComponent({ 4 | name: 'CForm', 5 | props: { 6 | /** 7 | * Mark a form as validated. If you set it `true`, all validation styles will be applied to the forms component. 8 | */ 9 | validated: Boolean, 10 | }, 11 | setup(props, { slots }) { 12 | return () => 13 | h( 14 | 'form', 15 | { class: [{ ['was-validated']: props.validated }] }, 16 | slots.default && slots.default(), 17 | ) 18 | }, 19 | }) 20 | 21 | export { CForm } 22 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/alert/CAlertHeading.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | export const CAlertHeading = defineComponent({ 4 | name: 'CAlertHeading', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'h4', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => 16 | h( 17 | props.as, 18 | { 19 | class: 'alert-heading', 20 | }, 21 | slots, 22 | ) 23 | }, 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/types.ts: -------------------------------------------------------------------------------- 1 | export type Column = { 2 | label?: string 3 | key: string 4 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 5 | _style?: any 6 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 7 | _props?: any 8 | } 9 | 10 | export type FooterItem = { 11 | label?: string 12 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 13 | _props?: any 14 | } 15 | 16 | export type Item = { 17 | [key: string]: number | string | any 18 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 19 | _props?: any 20 | } 21 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/tabs/__tests__/__snapshots__/CTabPane.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CTabPane component renders correctly 1`] = ` 4 | " 5 |
    Default slot
    6 |
    " 7 | `; 8 | 9 | exports[`Loads and display CTabPane component renders correctly 1`] = ` 10 | " 11 | 12 | " 13 | `; 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/accordion/CAccordionHeader.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | import { CAccordionButton } from './CAccordionButton' 3 | 4 | const CAccordionHeader = defineComponent({ 5 | name: 'CAccordionHeader', 6 | setup(_, { slots }) { 7 | return () => 8 | h( 9 | 'div', 10 | { class: ['accordion-header'] }, 11 | h( 12 | CAccordionButton, 13 | {}, 14 | { 15 | default: () => slots.default && slots.default(), 16 | }, 17 | ), 18 | ) 19 | }, 20 | }) 21 | 22 | export { CAccordionHeader } 23 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/toast/CToastHeader.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | import { CToastClose } from './CToastClose' 3 | 4 | const CToastHeader = defineComponent({ 5 | name: 'CToastHeader', 6 | props: { 7 | /** 8 | * Automatically add a close button to the header. 9 | */ 10 | closeButton: Boolean, 11 | }, 12 | setup(props, { slots }) { 13 | return () => 14 | h('div', { class: 'toast-header' }, [ 15 | slots.default && slots.default(), 16 | props.closeButton && h(CToastClose), 17 | ]) 18 | }, 19 | }) 20 | 21 | export { CToastHeader } 22 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsF.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CWidgetStatsF component renders correctly 1`] = ` 4 | "
    5 |
    6 |
    default
    7 |
    8 |
    75
    9 |
    title
    10 |
    11 |
    12 | 13 |
    " 14 | `; 15 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/client/composables/useThemeData.ts: -------------------------------------------------------------------------------- 1 | import { 2 | useThemeData as _useThemeData, 3 | useThemeLocaleData as _useThemeLocaleData, 4 | } from '@vuepress/plugin-theme-data/client' 5 | import type { 6 | ThemeDataRef, 7 | ThemeLocaleDataRef, 8 | } from '@vuepress/plugin-theme-data/client' 9 | import type { DefaultThemeData } from '../../shared/index.js' 10 | 11 | export const useThemeData = (): ThemeDataRef => 12 | _useThemeData() 13 | export const useThemeLocaleData = (): ThemeLocaleDataRef => 14 | _useThemeLocaleData() -------------------------------------------------------------------------------- /packages/docs/api/card/CCardText.api.md: -------------------------------------------------------------------------------- 1 | ### CCardText 2 | 3 | ```jsx 4 | import { CCardText } from '@coreui/vue' 5 | // or 6 | import CCardText from '@coreui/vue/src/components/card/CCardText' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'p' | 14 | -------------------------------------------------------------------------------- /packages/docs/api/carousel/CCarouselItem.api.md: -------------------------------------------------------------------------------- 1 | ### CCarouselItem 2 | 3 | ```jsx 4 | import { CCarouselItem } from '@coreui/vue' 5 | // or 6 | import CCarouselItem from '@coreui/vue/src/components/carousel/CCarouselItem' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | ------------ | ------------------------------------------------------------------ | --------------- | ------ | ------- | 13 | | **interval** | The amount of time to delay between automatically cycling an item. | boolean\|number | - | false | 14 | -------------------------------------------------------------------------------- /packages/docs/api/form/CFormText.api.md: -------------------------------------------------------------------------------- 1 | ### CFormText 2 | 3 | ```jsx 4 | import { CFormText } from '@coreui/vue' 5 | // or 6 | import CFormText from '@coreui/vue/src/components/form/CFormText' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'div' | 14 | -------------------------------------------------------------------------------- /packages/docs/api/nav/CNavTitle.api.md: -------------------------------------------------------------------------------- 1 | ### CNavTitle 2 | 3 | ```jsx 4 | import { CNavTitle } from '@coreui/vue' 5 | // or 6 | import CNavTitle from '@coreui/vue/src/components/nav/CNavTitle' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'li' | 14 | -------------------------------------------------------------------------------- /packages/docs/api/card/CCardTitle.api.md: -------------------------------------------------------------------------------- 1 | ### CCardTitle 2 | 3 | ```jsx 4 | import { CCardTitle } from '@coreui/vue' 5 | // or 6 | import CCardTitle from '@coreui/vue/src/components/card/CCardTitle' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'h5' | 14 | -------------------------------------------------------------------------------- /packages/docs/api/card/CCardHeader.api.md: -------------------------------------------------------------------------------- 1 | ### CCardHeader 2 | 3 | ```jsx 4 | import { CCardHeader } from '@coreui/vue' 5 | // or 6 | import CCardHeader from '@coreui/vue/src/components/card/CCardHeader' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'div' | 14 | -------------------------------------------------------------------------------- /packages/docs/api/header/CHeaderNav.api.md: -------------------------------------------------------------------------------- 1 | ### CHeaderNav 2 | 3 | ```jsx 4 | import { CHeaderNav } from '@coreui/vue' 5 | // or 6 | import CHeaderNav from '@coreui/vue/src/components/header/CHeaderNav' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'ul' | 14 | -------------------------------------------------------------------------------- /packages/docs/api/navbar/CNavbarNav.api.md: -------------------------------------------------------------------------------- 1 | ### CNavbarNav 2 | 3 | ```jsx 4 | import { CNavbarNav } from '@coreui/vue' 5 | // or 6 | import CNavbarNav from '@coreui/vue/src/components/navbar/CNavbarNav' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'ul' | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormSwitch.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CFormSwitch component renders correctly 1`] = `"
    "`; 4 | 5 | exports[`Loads and display CFormSwitch component renders correctly 1`] = ` 6 | "
    7 | 8 |
    " 9 | `; 10 | -------------------------------------------------------------------------------- /packages/docs/api/modal/CModalTitle.api.md: -------------------------------------------------------------------------------- 1 | ### CModalTitle 2 | 3 | ```jsx 4 | import { CModalTitle } from '@coreui/vue' 5 | // or 6 | import CModalTitle from '@coreui/vue/src/components/modal/CModalTitle' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'h5' | 14 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/client/styles/index.scss: -------------------------------------------------------------------------------- 1 | @use "@coreui/coreui/scss/coreui" with ( 2 | $enable-deprecation-messages: false 3 | ); 4 | 5 | @forward "ads"; 6 | @forward "anchor"; 7 | @forward "callouts"; 8 | @forward "component-examples"; 9 | @forward "footer"; 10 | @forward "layout"; 11 | @forward "prism"; 12 | @forward "scrolling"; 13 | @forward "search"; 14 | @forward "sidebar"; 15 | @forward "table-api"; 16 | @forward "toc"; 17 | @forward "custom-container"; 18 | 19 | .back-to-top { 20 | --c-brand: #3eaf7c; 21 | --c-brand-light: #4abf8a; 22 | --back-to-top-color: var(--c-brand); 23 | --back-to-top-color-hover: var(--c-brand-light); 24 | } -------------------------------------------------------------------------------- /packages/docs/api/card/CCardSubtitle.api.md: -------------------------------------------------------------------------------- 1 | ### CCardSubtitle 2 | 3 | ```jsx 4 | import { CCardSubtitle } from '@coreui/vue' 5 | // or 6 | import CCardSubtitle from '@coreui/vue/src/components/card/CCardSubtitle' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'h6' | 14 | -------------------------------------------------------------------------------- /packages/docs/api/header/CHeaderBrand.api.md: -------------------------------------------------------------------------------- 1 | ### CHeaderBrand 2 | 3 | ```jsx 4 | import { CHeaderBrand } from '@coreui/vue' 5 | // or 6 | import CHeaderBrand from '@coreui/vue/src/components/header/CHeaderBrand' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'a' | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/button/__tests__/__snapshots__/CButton.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize (number two) CButton component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Customize CButton component renders correctly 1`] = `"Default slot"`; 6 | 7 | exports[`Loads and display CButton component renders correctly 1`] = `""`; 8 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormInput.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize (two) CFormInput component renders correctly 1`] = `""`; 4 | 5 | exports[`Customize CFormInput component renders correctly 1`] = `""`; 6 | 7 | exports[`Loads and display CFormInput component renders correctly 1`] = `""`; 8 | -------------------------------------------------------------------------------- /packages/docs/api/alert/CAlertHeading.api.md: -------------------------------------------------------------------------------- 1 | ### CAlertHeading 2 | 3 | ```jsx 4 | import { CAlertHeading } from '@coreui/vue' 5 | // or 6 | import CAlertHeading from '@coreui/vue/src/components/alert/CAlertHeading' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'h4' | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/CFormLabel.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CFormLabel = defineComponent({ 4 | name: 'CFormLabel', 5 | props: { 6 | /** 7 | * A string of all className you want to be applied to the component, and override standard className value. 8 | */ 9 | customClassName: [Array, String], 10 | }, 11 | setup(props, { slots }) { 12 | return () => 13 | h( 14 | 'label', 15 | { 16 | class: props.customClassName ?? 'form-label', 17 | }, 18 | slots.default && slots.default(), 19 | ) 20 | }, 21 | }) 22 | 23 | export { CFormLabel } 24 | -------------------------------------------------------------------------------- /packages/docs/api/form/CInputGroupText.api.md: -------------------------------------------------------------------------------- 1 | ### CInputGroupText 2 | 3 | ```jsx 4 | import { CInputGroupText } from '@coreui/vue' 5 | // or 6 | import CInputGroupText from '@coreui/vue/src/components/form/CInputGroupText' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'span' | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/dropdown/__tests__/__snapshots__/CDropdownToggle.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CDropdownToggle component renders correctly 1`] = `"Default slot"`; 4 | 5 | exports[`Loads and display CDropdownToggle component renders correctly 1`] = `""`; 6 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/client/composables/useScrollPromise.ts: -------------------------------------------------------------------------------- 1 | export interface ScrollPromise { 2 | wait(): Promise | null 3 | pending: () => void 4 | resolve: () => void 5 | } 6 | 7 | let promise: Promise | null = null 8 | let promiseResolve: (() => void) | null = null 9 | 10 | const scrollPromise: ScrollPromise = { 11 | wait: () => promise, 12 | pending: () => { 13 | promise = new Promise((resolve) => (promiseResolve = resolve)) 14 | }, 15 | resolve: () => { 16 | promiseResolve?.() 17 | promise = null 18 | promiseResolve = null 19 | }, 20 | } 21 | 22 | export const useScrollPromise = (): ScrollPromise => scrollPromise -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/CCardLink.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | import { CLink } from '../link' 3 | 4 | const CCardLink = defineComponent({ 5 | name: 'CCardLink', 6 | props: { 7 | /** 8 | * The href attribute specifies the URL of the page the link goes to. 9 | */ 10 | href: { 11 | type: String, 12 | default: '#', 13 | }, 14 | }, 15 | setup(props, { slots }) { 16 | return () => 17 | h( 18 | CLink, 19 | { class: 'card-link', href: props.href }, 20 | { default: () => slots.default && slots.default() }, 21 | ) 22 | }, 23 | }) 24 | 25 | export { CCardLink } 26 | -------------------------------------------------------------------------------- /packages/docs/api/breadcrumb/CBreadcrumbItem.api.md: -------------------------------------------------------------------------------- 1 | ### CBreadcrumbItem 2 | 3 | ```jsx 4 | import { CBreadcrumbItem } from '@coreui/vue' 5 | // or 6 | import CBreadcrumbItem from '@coreui/vue/src/components/breadcrumb/CBreadcrumbItem' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | ---------- | -------------------------------------------------- | ------- | ------ | ------- | 13 | | **active** | Toggle the active state for the component. | boolean | - | - | 14 | | **href** | The `href` attribute for the inner link component. | string | - | - | 15 | -------------------------------------------------------------------------------- /packages/docs/api/dropdown/CDropdownHeader.api.md: -------------------------------------------------------------------------------- 1 | ### CDropdownHeader 2 | 3 | ```jsx 4 | import { CDropdownHeader } from '@coreui/vue' 5 | // or 6 | import CDropdownHeader from '@coreui/vue/src/components/dropdown/CDropdownHeader' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'h6' | 14 | -------------------------------------------------------------------------------- /packages/docs/api/offcanvas/COffcanvasTitle.api.md: -------------------------------------------------------------------------------- 1 | ### COffcanvasTitle 2 | 3 | ```jsx 4 | import { COffcanvasTitle } from '@coreui/vue' 5 | // or 6 | import COffcanvasTitle from '@coreui/vue/src/components/offcanvas/COffcanvasTitle' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'h5' | 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for a new feature in CoreUI. 4 | title: '' 5 | labels: feature 6 | assignees: '' 7 | 8 | --- 9 | 10 | Before opening: 11 | 12 | - [Search for duplicate or closed issues](https://github.com/coreui/coreui-vue/issues?utf8=%E2%9C%93&q=is%3Aissue) 13 | - Read the [contributing guidelines](https://github.com/coreui/coreui-vue/blob/main/.github/CONTRIBUTING.md) 14 | 15 | Feature requests must include: 16 | 17 | - As much detail as possible for what we should add and why it's important to Bootstrap 18 | - Relevant links to prior art, screenshots, or live demos whenever possible 19 | -------------------------------------------------------------------------------- /packages/coreui-vue/jest.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2013-present, creativeLabs Lukasz Holeczek. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | 'use strict' 9 | 10 | module.exports = { 11 | moduleFileExtensions: ['tsx', 'js', 'ts', 'json', 'vue'], 12 | preset: 'ts-jest', 13 | testEnvironment: 'jsdom', 14 | testEnvironmentOptions: { 15 | customExportConditions: ['node', 'node-addons'], 16 | }, 17 | testPathIgnorePatterns: ['dist/'], 18 | transform: { 19 | '.*\\.(ts)$': 'ts-jest', 20 | '.*\\.(vue)$': '@vue/vue3-jest', 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/utils/getNextActiveElement.ts: -------------------------------------------------------------------------------- 1 | const getNextActiveElement = ( 2 | list: HTMLElement[], 3 | activeElement: HTMLElement, 4 | shouldGetNext: boolean, 5 | isCycleAllowed: boolean, 6 | ) => { 7 | const listLength = list.length 8 | let index = list.indexOf(activeElement) 9 | 10 | if (index === -1) { 11 | return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0] 12 | } 13 | 14 | index += shouldGetNext ? 1 : -1 15 | 16 | if (isCycleAllowed) { 17 | index = (index + listLength) % listLength 18 | } 19 | 20 | return list[Math.max(0, Math.min(index, listLength - 1))] 21 | } 22 | 23 | export default getNextActiveElement 24 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/dropdown/CDropdownHeader.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CDropdownHeader = defineComponent({ 4 | name: 'CDropdownHeader', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'h6', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => 16 | h( 17 | props.as, 18 | { 19 | class: 'dropdown-header', 20 | }, 21 | slots.default && slots.default(), 22 | ) 23 | }, 24 | }) 25 | 26 | export { CDropdownHeader } 27 | -------------------------------------------------------------------------------- /packages/docs/api/dropdown/CDropdownMenu.api.md: -------------------------------------------------------------------------------- 1 | ### CDropdownMenu 2 | 3 | ```jsx 4 | import { CDropdownMenu } from '@coreui/vue' 5 | // or 6 | import CDropdownMenu from '@coreui/vue/src/components/dropdown/CDropdownMenu' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | --------------- | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | `'div'`, `'ul'` | 'div' | 14 | -------------------------------------------------------------------------------- /packages/docs/api/sidebar/CSidebarNav.api.md: -------------------------------------------------------------------------------- 1 | ### CSidebarNav 2 | 3 | ```jsx 4 | import { CSidebarNav } from '@coreui/vue' 5 | // or 6 | import CSidebarNav from '@coreui/vue/src/components/sidebar/CSidebarNav' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------------------- | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string \| Component | - | 'ul' | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/CHeaderNav.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CHeaderNav = defineComponent({ 4 | name: 'CHeaderNav', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'ul', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => 16 | h( 17 | props.as, 18 | { 19 | class: 'header-nav', 20 | role: 'navigation', 21 | }, 22 | slots.default && slots.default(), 23 | ) 24 | }, 25 | }) 26 | 27 | export { CHeaderNav } 28 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/navbar/CNavbarNav.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CNavbarNav = defineComponent({ 4 | name: 'CNavbarNav', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | */ 9 | as: { 10 | type: String, 11 | default: 'ul', 12 | }, 13 | }, 14 | setup(props, { slots }) { 15 | return () => 16 | h( 17 | props.as, 18 | { 19 | class: 'navbar-nav', 20 | role: 'navigation', 21 | }, 22 | slots.default && slots.default(), 23 | ) 24 | }, 25 | }) 26 | 27 | export { CNavbarNav } 28 | -------------------------------------------------------------------------------- /packages/docs/api/form/CForm.api.md: -------------------------------------------------------------------------------- 1 | ### CForm 2 | 3 | ```jsx 4 | import { CForm } from '@coreui/vue' 5 | // or 6 | import CForm from '@coreui/vue/src/components/form/CForm' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | ------------- | ------------------------------------------------------------------------------------------------------------- | ------- | ------ | ------- | 13 | | **validated** | Mark a form as validated. If you set it `true`, all validation styles will be applied to the forms component. | boolean | - | - | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/__tests__/__snapshots__/CTable.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CTable component renders correctly 1`] = ` 4 | "
    5 | 6 | 7 | 8 | Default slot 9 | 10 |
    11 |
    " 12 | `; 13 | 14 | exports[`Loads and display CTable component renders correctly 1`] = ` 15 | " 16 | 17 | 18 | Default slot 19 | 20 |
    " 21 | `; 22 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/accordion/CAccordionBody.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h, inject, Ref } from 'vue' 2 | import { CCollapse } from '../collapse/CCollapse' 3 | 4 | const CAccordionBody = defineComponent({ 5 | name: 'CAccordionBody', 6 | setup(_, { slots }) { 7 | const id = inject('id') 8 | const visible = inject('visible') as Ref 9 | return () => 10 | h( 11 | CCollapse, 12 | { class: 'accordion-collapse', id, visible: visible.value }, 13 | { 14 | default: () => h('div', { class: ['accordion-body'] }, slots.default && slots.default()), 15 | }, 16 | ) 17 | }, 18 | }) 19 | 20 | export { CAccordionBody } 21 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/nav/__tests__/__snapshots__/CNavGroup.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CNavGroup component renders correctly 1`] = ` 4 | "" 9 | `; 10 | 11 | exports[`Loads and display CNavGroup component renders correctly 1`] = ` 12 | "" 18 | `; 19 | -------------------------------------------------------------------------------- /packages/docs/api/pagination/CPagination.api.md: -------------------------------------------------------------------------------- 1 | ### CPagination 2 | 3 | ```jsx 4 | import { CPagination } from '@coreui/vue' 5 | // or 6 | import CPagination from '@coreui/vue/src/components/pagination/CPagination' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | ------------------------------------------- | ------ | ------------------------------ | ------- | 13 | | **align** | Set the alignment of pagination components. | string | `'start'`, `'center'`, `'end'` | - | 14 | | **size** | Size the component small or large. | string | `'sm'`, `'lg'` | - | 15 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/client/styles/_table-api.scss: -------------------------------------------------------------------------------- 1 | .table-api { 2 | --cui-table-striped-bg: #{rgba(#f0f4f7, .25)} !important; 3 | tr td { 4 | padding-top: 1rem; 5 | padding-bottom: 1rem; 6 | } 7 | td:first-child, 8 | th:first-child { 9 | width: 15%; 10 | padding-left: 1rem; 11 | } 12 | td:first-child { 13 | white-space: nowrap; 14 | } 15 | td:nth-child(2n) { 16 | width: 55%; 17 | } 18 | td:nth-child(3n) { 19 | width: 10%; 20 | } 21 | td:nth-child(4n) { 22 | width: 10%; 23 | } 24 | td:nth-child(5n) { 25 | width: 10%; 26 | } 27 | 28 | & + h3 { 29 | margin-top: 2rem; 30 | } 31 | } 32 | 33 | .markdown + h3 { 34 | margin-top: 3rem; 35 | } -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/list-group/__tests__/__snapshots__/CListGroupItem.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize (two) CListGroupItem component renders correctly 1`] = `""`; 4 | 5 | exports[`Customize CListGroupItem component renders correctly 1`] = `"
    Default slot
    "`; 6 | 7 | exports[`Loads and display CListGroupItem component renders correctly 1`] = `"
  • Default slot
  • "`; 8 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/__tests__/CSidebarNav.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CSidebarNav as Component } from '../../../index' 3 | 4 | const ComponentName = 'CSidebarNav' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: {}, 9 | }) 10 | 11 | describe(`Loads and display ${ComponentName} component`, () => { 12 | it('has a name', () => { 13 | expect(Component.name).toMatch(ComponentName) 14 | }) 15 | it('renders correctly', () => { 16 | expect(defaultWrapper.html()).toMatchSnapshot() 17 | }) 18 | it('contain slots and classes', () => { 19 | expect(defaultWrapper.classes('sidebar-nav')).toBe(true) 20 | }) 21 | }) 22 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsE.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CWidgetStatsE as Component } from '../../../index' 3 | 4 | const ComponentName = 'CWidgetStatsE' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: { 8 | title: 'title', 9 | value: 'value', 10 | }, 11 | slots: { 12 | chart: 'chart', 13 | default: 'default', 14 | }, 15 | }) 16 | 17 | describe(`Loads and display ${ComponentName} component`, () => { 18 | it('has a name', () => { 19 | expect(Component.name).toMatch(ComponentName) 20 | }) 21 | it('renders correctly', () => { 22 | expect(defaultWrapper.html()).toMatchSnapshot() 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsB.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CWidgetStatsB component renders correctly 1`] = ` 4 | "
    5 |
    6 |
    75
    7 |
    title
    8 |
    9 |
    10 | 11 |
    12 |
    text 13 |
    14 |
    " 15 | `; 16 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/composables/usePopper.ts: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue' 2 | import { createPopper } from '@popperjs/core' 3 | import type { Instance, Options } from '@popperjs/core' 4 | 5 | export const usePopper = () => { 6 | const _popper = ref() 7 | 8 | const initPopper = (reference: HTMLElement, popper: HTMLElement, options: Partial) => { 9 | _popper.value = createPopper(reference, popper, options) 10 | } 11 | 12 | const destroyPopper = () => { 13 | if (_popper.value) { 14 | _popper.value.destroy() 15 | } 16 | 17 | _popper.value = undefined 18 | } 19 | 20 | return { 21 | popper: _popper.value, 22 | initPopper, 23 | destroyPopper, 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/dropdown/__tests__/CDropdownDivider.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CDropdownDivider as Component } from '../../../index' 3 | 4 | const ComponentName = 'CDropdownDivider' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: {}, 9 | }) 10 | 11 | describe(`Loads and display ${ComponentName} component`, () => { 12 | it('has a name', () => { 13 | expect(Component.name).toMatch(ComponentName) 14 | }) 15 | it('renders correctly', () => { 16 | expect(defaultWrapper.html()).toMatchSnapshot() 17 | }) 18 | it('contain slots and classes', () => { 19 | expect(defaultWrapper.classes('dropdown-divider')).toBe(true) 20 | }) 21 | }) 22 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/__tests__/CTableCaption.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CTableCaption as Component } from '../../../index' 3 | 4 | const ComponentName = 'CTableCaption' 5 | 6 | const defaultWrapper = mount(Component, { 7 | slots: { 8 | default: 'Default slot', 9 | }, 10 | }) 11 | 12 | describe(`Loads and display ${ComponentName} component`, () => { 13 | it('has a name', () => { 14 | expect(Component.name).toMatch(ComponentName) 15 | }) 16 | it('renders correctly', () => { 17 | expect(defaultWrapper.html()).toMatchSnapshot() 18 | }) 19 | it('contain slots and classes', () => { 20 | expect(defaultWrapper.text()).toContain('Default slot') 21 | }) 22 | }) 23 | -------------------------------------------------------------------------------- /packages/docs/api/tabs/CTabs.api.md: -------------------------------------------------------------------------------- 1 | ### CTabs 2 | 3 | ```jsx 4 | import { CTabs } from '@coreui/vue' 5 | // or 6 | import CTabs from '@coreui/vue/src/components/tabs/CTabs' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | ------------------- | -------------------- | -------------- | ------ | ------- | 13 | | **active-item-key** | The active item key. | number\|string | - | - | 14 | 15 | #### Events 16 | 17 | | Event name | Description | Properties | 18 | | ---------- | -------------------------------------------------- | ---------- | 19 | | **change** | The callback is fired when the active tab changes. | 20 | -------------------------------------------------------------------------------- /packages/docs/api/form/CFormLabel.api.md: -------------------------------------------------------------------------------- 1 | ### CFormLabel 2 | 3 | ```jsx 4 | import { CFormLabel } from '@coreui/vue' 5 | // or 6 | import CFormLabel from '@coreui/vue/src/components/form/CFormLabel' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------------------- | --------------------------------------------------------------------------------------------------------- | ------------- | ------ | ------- | 13 | | **custom-class-name** | A string of all className you want to be applied to the component, and override standard className value. | array\|string | - | - | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/progress/__tests__/__snapshots__/CProgress.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize CProgress component renders correctly 1`] = ` 4 | "
    5 |
    Default slot
    6 |
    " 7 | `; 8 | 9 | exports[`Loads and display CProgress component renders correctly 1`] = ` 10 | "
    11 |
    Default slot
    12 |
    " 13 | `; 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/offcanvas/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { COffcanvas } from './COffcanvas' 3 | import { COffcanvasBody } from './COffcanvasBody' 4 | import { COffcanvasHeader } from './COffcanvasHeader' 5 | import { COffcanvasTitle } from './COffcanvasTitle' 6 | 7 | const COffcanvasPlugin = { 8 | install: (app: App): void => { 9 | app.component(COffcanvas.name as string, COffcanvas) 10 | app.component(COffcanvasBody.name as string, COffcanvasBody) 11 | app.component(COffcanvasHeader.name as string, COffcanvasHeader) 12 | app.component(COffcanvasTitle.name as string, COffcanvasTitle) 13 | }, 14 | } 15 | 16 | export { COffcanvasPlugin, COffcanvas, COffcanvasBody, COffcanvasHeader, COffcanvasTitle } 17 | -------------------------------------------------------------------------------- /.github/.stale.yml: -------------------------------------------------------------------------------- 1 | # Number of days of inactivity before an issue becomes stale 2 | daysUntilStale: 360 3 | # Number of days of inactivity before a stale issue is closed 4 | daysUntilClose: 7 5 | # Issues with these labels will never be considered stale 6 | exemptLabels: 7 | - pinned 8 | - security 9 | # Label to use when marking an issue as stale 10 | staleLabel: wontfix 11 | # Comment to post when marking an issue as stale. Set to `false` to disable 12 | markComment: > 13 | This issue has been automatically marked as stale because it has not had 14 | recent activity. It will be closed if no further activity occurs. Thank you 15 | for your contributions. 16 | # Comment to post when closing a stale issue. Set to `false` to disable 17 | closeComment: false -------------------------------------------------------------------------------- /packages/docs/api/stepper/CStepper.api.md: -------------------------------------------------------------------------------- 1 | ### CStepper 2 | 3 | ```jsx 4 | import { CStepper } from '@coreui/vue' 5 | // or 6 | import CStepper from '@coreui/vue/src/components/stepper/CStepper' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | ----------- | ---- | ------ | ------- | 13 | 14 | #### Events 15 | 16 | | Event name | Description | Properties | 17 | | ---------------------------- | ----------- | ---------- | 18 | | **update:modelValue** | | 19 | | **finish** | | 20 | | **reset** | | 21 | | **step-change** | | 22 | | **step-validation-complete** | | 23 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/toast/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CToast } from './CToast' 3 | import { CToastBody } from './CToastBody' 4 | import { CToastClose } from './CToastClose' 5 | import { CToaster } from './CToaster' 6 | import { CToastHeader } from './CToastHeader' 7 | 8 | const CToastPlugin = { 9 | install: (app: App): void => { 10 | app.component(CToast.name as string, CToast) 11 | app.component(CToastBody.name as string, CToastBody) 12 | app.component(CToastClose.name as string, CToastClose) 13 | app.component(CToaster.name as string, CToaster) 14 | app.component(CToastHeader.name as string, CToastHeader) 15 | }, 16 | } 17 | 18 | export { CToastPlugin, CToast, CToastBody, CToastClose, CToaster, CToastHeader } 19 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsA.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CWidgetStatsA as Component } from '../../../index' 3 | 4 | const ComponentName = 'CWidgetStatsA' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: { 8 | color: 'warning', 9 | title: 'title', 10 | value: 75, 11 | }, 12 | slots: { 13 | action: 'action', 14 | chart: 'chart', 15 | default: 'Default slot', 16 | }, 17 | }) 18 | 19 | describe(`Loads and display ${ComponentName} component`, () => { 20 | it('has a name', () => { 21 | expect(Component.name).toMatch(ComponentName) 22 | }) 23 | it('renders correctly', () => { 24 | expect(defaultWrapper.html()).toMatchSnapshot() 25 | }) 26 | }) 27 | -------------------------------------------------------------------------------- /packages/docs/api/navbar/CNavbarBrand.api.md: -------------------------------------------------------------------------------- 1 | ### CNavbarBrand 2 | 3 | ```jsx 4 | import { CNavbarBrand } from '@coreui/vue' 5 | // or 6 | import CNavbarBrand from '@coreui/vue/src/components/navbar/CNavbarBrand' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'a' | 14 | | **href** | The href attribute specifies the URL of the page the link goes to. | string | - | - | 15 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/backdrop/__tests__/CBackdrop.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CBackdrop as Component } from '../../../index' 3 | 4 | const ComponentName = 'CBackdrop' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: { 8 | visible: true, 9 | }, 10 | slots: { 11 | default: 'Default slot', 12 | }, 13 | }) 14 | 15 | describe(`Loads and display ${ComponentName} component`, () => { 16 | it('has a name', () => { 17 | expect(Component.name).toMatch(ComponentName) 18 | }) 19 | it('renders correctly', () => { 20 | expect(defaultWrapper.html()).toMatchSnapshot() 21 | }) 22 | it('contain slots and classes', () => { 23 | expect(defaultWrapper.find('div').classes('fade')).toBe(true) 24 | }) 25 | }) 26 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/modal/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CModal } from './CModal' 3 | import { CModalBody } from './CModalBody' 4 | import { CModalFooter } from './CModalFooter' 5 | import { CModalHeader } from './CModalHeader' 6 | import { CModalTitle } from './CModalTitle' 7 | 8 | const CModalPlugin = { 9 | install: (app: App): void => { 10 | app.component(CModal.name as string, CModal) 11 | app.component(CModalBody.name as string, CModalBody) 12 | app.component(CModalFooter.name as string, CModalFooter) 13 | app.component(CModalHeader.name as string, CModalHeader) 14 | app.component(CModalTitle.name as string, CModalTitle) 15 | }, 16 | } 17 | 18 | export { CModalPlugin, CModal, CModalBody, CModalFooter, CModalHeader, CModalTitle } 19 | -------------------------------------------------------------------------------- /packages/docs/api/sidebar/CSidebarBrand.api.md: -------------------------------------------------------------------------------- 1 | ### CSidebarBrand 2 | 3 | ```jsx 4 | import { CSidebarBrand } from '@coreui/vue' 5 | // or 6 | import CSidebarBrand from '@coreui/vue/src/components/sidebar/CSidebarBrand' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | --------------------------------------------------------------------------------------- | ------ | ------ | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'div' | 14 | | **href** | The href attribute specifies the URL of the page the link goes to. | string | - | - | 15 | -------------------------------------------------------------------------------- /.github/workflows/daily-project-check.yml: -------------------------------------------------------------------------------- 1 | name: Daily project check 2 | 3 | on: 4 | schedule: 5 | # build runs every weekday at 6AM UTC 6 | - cron: '0 6 * * 1-5' 7 | 8 | jobs: 9 | build: 10 | 11 | runs-on: ubuntu-latest 12 | 13 | strategy: 14 | matrix: 15 | node-version: [12.x] 16 | os: [ubuntu-latest, windows-latest, macOS-latest] 17 | 18 | steps: 19 | - uses: actions/checkout@v1 20 | - name: Use Node.js ${{ matrix.node-version }} 21 | uses: actions/setup-node@v1 22 | with: 23 | node-version: ${{ matrix.node-version }} 24 | - name: npm install, build, test and lint 25 | run: | 26 | npm i 27 | npm run build 28 | npm run jest:test 29 | npm run lint 30 | env: 31 | CI: true 32 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsD.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CWidgetStatsD as Component } from '../../../index' 3 | 4 | const ComponentName = 'CWidgetStatsD' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: { 8 | color: 'warning', 9 | values: [ 10 | { title: 'aa', value: 'bb' }, 11 | { title: 'cc', value: 'dd' }, 12 | ], 13 | }, 14 | slots: { 15 | icon: 'icon', 16 | chart: 'chart', 17 | }, 18 | }) 19 | 20 | describe(`Loads and display ${ComponentName} component`, () => { 21 | it('has a name', () => { 22 | expect(Component.name).toMatch(ComponentName) 23 | }) 24 | it('renders correctly', () => { 25 | expect(defaultWrapper.html()).toMatchSnapshot() 26 | }) 27 | }) 28 | -------------------------------------------------------------------------------- /packages/docs/api/tabs/CTab.api.md: -------------------------------------------------------------------------------- 1 | ### CTab 2 | 3 | ```jsx 4 | import { CTab } from '@coreui/vue' 5 | // or 6 | import CTab from '@coreui/vue/src/components/tabs/CTab' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | ----------------------------------------------------------- | -------------------------------------------- | -------------- | ------ | ------- | 13 | | **disabled**
    5.4.0+
    | Toggle the disabled state for the component. | boolean | - | - | 14 | | **item-key** | Item key. | number\|string | - | - | 15 | -------------------------------------------------------------------------------- /.github/workflows/project-check.yml: -------------------------------------------------------------------------------- 1 | name: Project check 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | branches: 9 | - master 10 | 11 | jobs: 12 | build: 13 | 14 | runs-on: ubuntu-latest 15 | 16 | strategy: 17 | matrix: 18 | node-version: [12.x] 19 | os: [ubuntu-latest, windows-latest, macOS-latest] 20 | 21 | steps: 22 | - uses: actions/checkout@v1 23 | - name: Use Node.js ${{ matrix.node-version }} 24 | uses: actions/setup-node@v1 25 | with: 26 | node-version: ${{ matrix.node-version }} 27 | - name: npm install, build, test and lint 28 | run: | 29 | npm i 30 | npm run build 31 | npm run jest:test 32 | npm run lint 33 | env: 34 | CI: true 35 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/navbar/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CNavbar } from './CNavbar' 3 | import { CNavbarBrand } from './CNavbarBrand' 4 | import { CNavbarNav } from './CNavbarNav' 5 | import { CNavbarText } from './CNavbarText' 6 | import { CNavbarToggler } from './CNavbarToggler' 7 | 8 | const CNavbarPlugin = { 9 | install: (app: App): void => { 10 | app.component(CNavbar.name as string, CNavbar) 11 | app.component(CNavbarBrand.name as string, CNavbarBrand) 12 | app.component(CNavbarNav.name as string, CNavbarNav) 13 | app.component(CNavbarText.name as string, CNavbarText) 14 | app.component(CNavbarToggler.name as string, CNavbarToggler) 15 | }, 16 | } 17 | 18 | export { CNavbarPlugin, CNavbar, CNavbarBrand, CNavbarNav, CNavbarText, CNavbarToggler } 19 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsB.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CWidgetStatsB as Component } from '../../../index' 3 | 4 | const ComponentName = 'CWidgetStatsB' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: { 8 | color: 'warning', 9 | inverse: true, 10 | progress: { 11 | color: 'info', 12 | value: 75, 13 | }, 14 | text: 'text', 15 | title: 'title', 16 | value: 75, 17 | }, 18 | slots: {}, 19 | }) 20 | 21 | describe(`Loads and display ${ComponentName} component`, () => { 22 | it('has a name', () => { 23 | expect(Component.name).toMatch(ComponentName) 24 | }) 25 | it('renders correctly', () => { 26 | expect(defaultWrapper.html()).toMatchSnapshot() 27 | }) 28 | }) 29 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsC.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CWidgetStatsC component renders correctly 1`] = ` 4 | "
    5 |
    6 |
    icon
    7 |
    75
    8 |
    title
    9 |
    10 |
    11 | 12 |
    13 |
    14 |
    15 |
    " 16 | `; 17 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/CCardBody.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CCardBody as Component } from '../../../index' 3 | 4 | const ComponentName = 'CCardBody' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('card-body')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/nav/__tests__/CNavTitle.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CNavTitle as Component } from '../../../index' 3 | 4 | const ComponentName = 'CNavTitle' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('nav-title')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsC.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CWidgetStatsC as Component } from '../../../index' 3 | 4 | const ComponentName = 'CWidgetStatsC' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: { 8 | color: 'warning', 9 | inverse: true, 10 | progress: { 11 | color: 'info', 12 | value: 75, 13 | }, 14 | title: 'title', 15 | value: 75, 16 | }, 17 | slots: { 18 | icon: 'icon', 19 | }, 20 | }) 21 | 22 | describe(`Loads and display ${ComponentName} component`, () => { 23 | it('has a name', () => { 24 | expect(Component.name).toMatch(ComponentName) 25 | }) 26 | it('renders correctly', () => { 27 | expect(defaultWrapper.html()).toMatchSnapshot() 28 | }) 29 | }) 30 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/widgets/__tests__/CWidgetStatsF.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CWidgetStatsF as Component } from '../../../index' 3 | 4 | const ComponentName = 'CWidgetStatsF' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: { 8 | color: 'warning', 9 | padding: true, 10 | title: 'title', 11 | text: 'text', 12 | value: 75, 13 | }, 14 | slots: { 15 | icon: 'icon', 16 | default: 'default', 17 | footer: 'footer', 18 | }, 19 | }) 20 | 21 | describe(`Loads and display ${ComponentName} component`, () => { 22 | it('has a name', () => { 23 | expect(Component.name).toMatch(ComponentName) 24 | }) 25 | it('renders correctly', () => { 26 | expect(defaultWrapper.html()).toMatchSnapshot() 27 | }) 28 | }) 29 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/alert/__tests__/CAlertLink.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CAlertLink as Component } from '../../../index' 3 | 4 | const ComponentName = 'CAlertLink' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('alert-link')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/CCardFooter.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CCardFooter as Component } from '../../../index' 3 | 4 | const ComponentName = 'CCardFooter' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('card-footer')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/CCardGroup.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CCardGroup as Component } from '../../../index' 3 | 4 | const ComponentName = 'CCardGroup' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('card-group')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/__snapshots__/CFormCheck.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Customize with label - CFormCheck component renders correctly 1`] = ` 4 | " 5 | " 6 | `; 7 | 8 | exports[`Customize with label in slot - CFormCheck component renders correctly 1`] = ` 9 | " 10 | " 11 | `; 12 | 13 | exports[`Loads and display CFormCheck component renders correctly 1`] = `""`; 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/modal/__tests__/CModalBody.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CModalBody as Component } from '../../../index' 3 | 4 | const ComponentName = 'CModalBody' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('modal-body')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/tabs/__tests__/CTabContent.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CTabContent as Component } from '../../../index' 3 | 4 | const ComponentName = 'CTabContent' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('tab-content')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/toast/__tests__/CToastBody.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CToastBody as Component } from '../../../index' 3 | 4 | const ComponentName = 'CToastBody' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('toast-body')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/__tests__/CHeaderText.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CHeaderText as Component } from '../../../index' 3 | 4 | const ComponentName = 'CHeaderText' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('header-text')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/modal/__tests__/CModalFooter.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CModalFooter as Component } from '../../../index' 3 | 4 | const ComponentName = 'CModalFooter' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('modal-footer')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/navbar/__tests__/CNavbarText.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CNavbarText as Component } from '../../../index' 3 | 4 | const ComponentName = 'CNavbarText' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('navbar-text')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/__tests__/CFormFloating.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CFormFloating as Component } from '../../../index' 3 | 4 | const ComponentName = 'CFormFloating' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('form-floating')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/CSidebarBrand.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CSidebarBrand = defineComponent({ 4 | name: 'CSidebarBrand', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | * 9 | */ 10 | as: { 11 | type: String, 12 | default: 'div', 13 | }, 14 | /** 15 | * The href attribute specifies the URL of the page the link goes to. 16 | */ 17 | href: String, 18 | }, 19 | setup(props, { slots }) { 20 | return () => 21 | h( 22 | props.as ?? (props.href ? 'a' : 'div'), 23 | { class: 'sidebar-brand', href: props.href }, 24 | slots.default && slots.default(), 25 | ) 26 | }, 27 | }) 28 | 29 | export { CSidebarBrand } 30 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/tabs/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CTab } from './CTab' 3 | import { CTabContent } from './CTabContent' 4 | import { CTabList } from './CTabList' 5 | import { CTabPane } from './CTabPane' 6 | import { CTabPanel } from './CTabPanel' 7 | import { CTabs } from './CTabs' 8 | 9 | const CTabsPlugin = { 10 | install: (app: App): void => { 11 | app.component(CTab.name as string, CTab) 12 | app.component(CTabContent.name as string, CTabContent) 13 | app.component(CTabList.name as string, CTabList) 14 | app.component(CTabPane.name as string, CTabPane) 15 | app.component(CTabPanel.name as string, CTabPanel) 16 | app.component(CTabs.name as string, CTabs) 17 | }, 18 | } 19 | 20 | export { CTabsPlugin, CTab, CTabContent, CTabList, CTabPane, CTabPanel, CTabs } 21 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/header/__tests__/CHeaderDivider.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CHeaderDivider as Component } from '../../../index' 3 | 4 | const ComponentName = 'CHeaderDivider' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('header-divider')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/nav/__tests__/CNavGroupItems.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CNavGroupItems as Component } from '../../../index' 3 | 4 | const ComponentName = 'CNavGroupItems' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('nav-group-items')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/__tests__/CSidebarBrand.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CSidebarBrand as Component } from '../../../index' 3 | 4 | const ComponentName = 'CSidebarBrand' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('sidebar-brand')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/__tests__/CSidebarFooter.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CSidebarFooter as Component } from '../../../index' 3 | 4 | const ComponentName = 'CSidebarFooter' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('sidebar-footer')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/__tests__/CSidebarHeader.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CSidebarHeader as Component } from '../../../index' 3 | 4 | const ComponentName = 'CSidebarHeader' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('sidebar-header')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/docs/api/footer/CFooter.api.md: -------------------------------------------------------------------------------- 1 | ### CFooter 2 | 3 | ```jsx 4 | import { CFooter } from '@coreui/vue' 5 | // or 6 | import CFooter from '@coreui/vue/src/components/footer/CFooter' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | ------------ | --------------------------------------------------------------------------------------- | ------ | --------------------- | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'div' | 14 | | **position** | Place footer in non-static positions. | string | `'fixed'`, `'sticky'` | - | 15 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/button-group/__tests__/CButtonToolbar.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CButtonToolbar as Component } from '../../../index' 3 | 4 | const ComponentName = 'CButtonToolbar' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('btn-toolbar')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvasBody.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { COffcanvasBody as Component } from '../../../index' 3 | 4 | const ComponentName = 'COffcanvasBody' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('offcanvas-body')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/sidebar/__tests__/CSidebarToggler.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CSidebarToggler as Component } from '../../../index' 3 | 4 | const ComponentName = 'CSidebarToggler' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('sidebar-toggler')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/widgets/__tests__/__snapshots__/CWidgetStatsD.spec.ts.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Loads and display CWidgetStatsD component renders correctly 1`] = ` 4 | "
    5 |
    iconchart
    6 |
    7 | 8 |
    9 |
    bb
    10 |
    aa
    11 |
    12 |
    13 |
    14 |
    dd
    15 |
    cc
    16 |
    17 |
    18 |
    " 19 | `; 20 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/index.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | import { App } from 'vue' 3 | import * as Components from './components' 4 | import * as Directives from './directives' 5 | 6 | const CoreuiVue = { 7 | install: (app: App): void => { 8 | for (const key in Components) { 9 | app.component(key, (Components as { [key: string]: any })[key]) 10 | } 11 | 12 | for (const key in Directives) { 13 | app.directive( 14 | (Directives as { [key: string]: any })[key]['name'], 15 | (Directives as { [key: string]: any })[key], 16 | ) 17 | } 18 | }, 19 | } 20 | 21 | // Export library 22 | export default CoreuiVue 23 | 24 | // Export components & directives 25 | export * from './components' 26 | export * from './composables' 27 | export * from './directives' 28 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/card/__tests__/CCardImageOverlay.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CCardImageOverlay as Component } from '../../../index' 3 | 4 | const ComponentName = 'CCardImageOverlay' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('card-img-overlay')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/carousel/__tests__/CCarouselCaption.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { CCarouselCaption as Component } from '../../../index' 3 | 4 | const ComponentName = 'CCarouselCaption' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('carousel-caption')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/modal/CModalHeader.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h, inject, Ref } from 'vue' 2 | 3 | import { CCloseButton } from '../close-button/CCloseButton' 4 | 5 | const CModalHeader = defineComponent({ 6 | name: 'CModalHeader', 7 | props: { 8 | /** 9 | * Add a close button component to the header. 10 | */ 11 | closeButton: { 12 | type: Boolean, 13 | default: true, 14 | }, 15 | }, 16 | setup(props, { slots }) { 17 | const visible = inject>('visible')! 18 | return () => 19 | h('span', { class: 'modal-header' }, [ 20 | slots.default && slots.default(), 21 | props.closeButton && h(CCloseButton, { onClick: () => { 22 | visible.value = false 23 | } }, ''), 24 | ]) 25 | }, 26 | }) 27 | 28 | export { CModalHeader } 29 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/offcanvas/__tests__/COffcanvasHeader.spec.ts: -------------------------------------------------------------------------------- 1 | import { mount } from '@vue/test-utils' 2 | import { COffcanvasHeader as Component } from '../../../index' 3 | 4 | const ComponentName = 'COffcanvasHeader' 5 | 6 | const defaultWrapper = mount(Component, { 7 | propsData: {}, 8 | slots: { 9 | default: 'Default slot', 10 | }, 11 | }) 12 | 13 | describe(`Loads and display ${ComponentName} component`, () => { 14 | it('has a name', () => { 15 | expect(Component.name).toMatch(ComponentName) 16 | }) 17 | it('renders correctly', () => { 18 | expect(defaultWrapper.html()).toMatchSnapshot() 19 | }) 20 | it('contain slots and classes', () => { 21 | expect(defaultWrapper.text()).toContain('Default slot') 22 | expect(defaultWrapper.classes('offcanvas-header')).toBe(true) 23 | }) 24 | }) 25 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/accordion/CAccordionButton.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h, inject, Ref } from 'vue' 2 | 3 | const CAccordionButton = defineComponent({ 4 | name: 'CAccordionButton', 5 | setup(_, { slots }) { 6 | const id = inject('id') as string 7 | const toggleVisibility = inject('toggleVisibility') as () => void 8 | const visible = inject('visible') as Ref 9 | 10 | return () => 11 | h( 12 | 'button', 13 | { 14 | type: 'button', 15 | 'aria-control': id, 16 | 'aria-expanded': visible.value, 17 | class: ['accordion-button', { ['collapsed']: !visible.value }], 18 | onClick: () => toggleVisibility(), 19 | }, 20 | slots.default && slots.default(), 21 | ) 22 | }, 23 | }) 24 | 25 | export { CAccordionButton } 26 | -------------------------------------------------------------------------------- /packages/docs/api/card/CCardImage.api.md: -------------------------------------------------------------------------------- 1 | ### CCardImage 2 | 3 | ```jsx 4 | import { CCardImage } from '@coreui/vue' 5 | // or 6 | import CCardImage from '@coreui/vue/src/components/card/CCardImage' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------------- | --------------------------------------------------------------------------------------- | ------ | ------------------- | ------- | 13 | | **as** | Component used for the root node. Either a string to use a HTML element or a component. | string | - | 'img' | 14 | | **orientation** | Optionally orientate the image to the top, bottom. | string | `'top'`, `'bottom'` | - | 15 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/backdrop/CBackdrop.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h, Transition } from 'vue' 2 | 3 | const CBackdrop = defineComponent({ 4 | name: 'CBackdrop', 5 | props: { 6 | /** 7 | * Toggle the visibility of modal component. 8 | */ 9 | visible: { 10 | type: Boolean, 11 | default: false, 12 | }, 13 | }, 14 | setup(props) { 15 | return () => 16 | h( 17 | Transition, 18 | { 19 | onEnter: (el) => { 20 | el.classList.add('show') 21 | }, 22 | onLeave: (el) => { 23 | el.classList.remove('show') 24 | }, 25 | }, 26 | () => 27 | props.visible && 28 | h('div', { 29 | class: 'fade', 30 | }), 31 | ) 32 | }, 33 | }) 34 | 35 | export { CBackdrop } 36 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/CTableBody.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | import { Color } from '../../props' 4 | 5 | const CTableBody = defineComponent({ 6 | name: 'CTableBody', 7 | props: { 8 | /** 9 | * Sets the color context of the component to one of CoreUI’s themed colors. 10 | * 11 | * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string 12 | */ 13 | color: Color, 14 | }, 15 | setup(props, { slots }) { 16 | return () => 17 | h( 18 | 'tbody', 19 | { 20 | class: [ 21 | { 22 | [`table-${props.color}`]: props.color, 23 | }, 24 | ], 25 | }, 26 | slots.default && slots.default(), 27 | ) 28 | }, 29 | }) 30 | 31 | export { CTableBody } 32 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/CTableFoot.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | import { Color } from '../../props' 4 | 5 | const CTableFoot = defineComponent({ 6 | name: 'CTableFoot', 7 | props: { 8 | /** 9 | * Sets the color context of the component to one of CoreUI’s themed colors. 10 | * 11 | * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string 12 | */ 13 | color: Color, 14 | }, 15 | setup(props, { slots }) { 16 | return () => 17 | h( 18 | 'tfoot', 19 | { 20 | class: [ 21 | { 22 | [`table-${props.color}`]: props.color, 23 | }, 24 | ], 25 | }, 26 | slots.default && slots.default(), 27 | ) 28 | }, 29 | }) 30 | 31 | export { CTableFoot } 32 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/table/CTableHead.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | import { Color } from '../../props' 4 | 5 | const CTableHead = defineComponent({ 6 | name: 'CTableHead', 7 | props: { 8 | /** 9 | * Sets the color context of the component to one of CoreUI’s themed colors. 10 | * 11 | * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', string 12 | */ 13 | color: Color, 14 | }, 15 | setup(props, { slots }) { 16 | return () => 17 | h( 18 | 'thead', 19 | { 20 | class: [ 21 | { 22 | [`table-${props.color}`]: props.color, 23 | }, 24 | ], 25 | }, 26 | slots.default && slots.default(), 27 | ) 28 | }, 29 | }) 30 | 31 | export { CTableHead } 32 | -------------------------------------------------------------------------------- /packages/docs/api/callout/CCallout.api.md: -------------------------------------------------------------------------------- 1 | ### CCallout 2 | 3 | ```jsx 4 | import { CCallout } from '@coreui/vue' 5 | // or 6 | import CCallout from '@coreui/vue/src/components/callout/CCallout' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | --------- | ------------------------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------- | ------- | 13 | | **color** | Sets the color context of the component to one of CoreUI’s themed colors. | string | `'primary'`, `'secondary'`, `'success'`, `'danger'`, `'warning'`, `'info'`, `'dark'`, `'light'` | - | 14 | -------------------------------------------------------------------------------- /packages/docs/api/toast/CToaster.api.md: -------------------------------------------------------------------------------- 1 | ### CToaster 2 | 3 | ```jsx 4 | import { CToaster } from '@coreui/vue' 5 | // or 6 | import CToaster from '@coreui/vue/src/components/toast/CToaster' 7 | ``` 8 | 9 | #### Props 10 | 11 | | Prop name | Description | Type | Values | Default | 12 | | ------------- | ------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------- | ------- | 13 | | **placement** | Describes the placement of component. | string | `'top-start'`, `'top'`, `'top-end'`, `'middle-start'`, `'middle'`, `'middle-end'`, `'bottom-start'`, `'bottom'`, `'bottom-end'` | - | 14 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/callout/CCallout.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | import { Color } from '../../props' 4 | 5 | const CCallout = defineComponent({ 6 | name: 'CCallout', 7 | props: { 8 | /** 9 | * Sets the color context of the component to one of CoreUI’s themed colors. 10 | * 11 | * @values 'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light' 12 | */ 13 | color: Color, 14 | }, 15 | setup(props, { slots }) { 16 | return () => 17 | h( 18 | 'div', 19 | { 20 | class: [ 21 | 'callout', 22 | { 23 | [`callout-${props.color}`]: props.color, 24 | }, 25 | ], 26 | }, 27 | slots.default && slots.default(), 28 | ) 29 | }, 30 | }) 31 | export { CCallout } 32 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/form/CInputGroup.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CInputGroup = defineComponent({ 4 | name: 'CInputGroup', 5 | props: { 6 | /** 7 | * Size the component small or large. 8 | * 9 | * @values 'sm', 'lg' 10 | */ 11 | size: { 12 | type: String, 13 | validator: (value: string) => { 14 | return ['sm', 'lg'].includes(value) 15 | }, 16 | }, 17 | }, 18 | setup(props, { slots }) { 19 | return () => 20 | h( 21 | 'div', 22 | { 23 | class: [ 24 | 'input-group', 25 | { 26 | [`input-group-${props.size}`]: props.size, 27 | }, 28 | ], 29 | }, 30 | slots.default && slots.default(), 31 | ) 32 | }, 33 | }) 34 | 35 | export { CInputGroup } 36 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/nav/index.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue' 2 | import { CNav } from './CNav' 3 | import { CNavGroup } from './CNavGroup' 4 | import { CNavGroupItems } from './CNavGroupItems' 5 | import { CNavItem } from './CNavItem' 6 | import { CNavLink } from './CNavLink' 7 | import { CNavTitle } from './CNavTitle' 8 | 9 | const CNavPlugin = { 10 | install: (app: App): void => { 11 | app.component(CNav.name as string, CNav) 12 | app.component(CNavGroup.name as string, CNavGroup) 13 | app.component(CNavGroupItems.name as string, CNavGroupItems) 14 | app.component(CNavItem.name as string, CNavItem) 15 | app.component(CNavLink.name as string, CNavLink) 16 | app.component(CNavTitle.name as string, CNavTitle) 17 | }, 18 | } 19 | 20 | export { CNavPlugin, CNav, CNavGroup, CNavGroupItems, CNavItem, CNavLink, CNavTitle } 21 | -------------------------------------------------------------------------------- /packages/coreui-vue/src/components/navbar/CNavbarBrand.ts: -------------------------------------------------------------------------------- 1 | import { defineComponent, h } from 'vue' 2 | 3 | const CNavbarBrand = defineComponent({ 4 | name: 'CNavbarBrand', 5 | props: { 6 | /** 7 | * Component used for the root node. Either a string to use a HTML element or a component. 8 | * 9 | */ 10 | as: { 11 | type: String, 12 | default: 'a', 13 | }, 14 | /** 15 | * The href attribute specifies the URL of the page the link goes to. 16 | */ 17 | href: String, 18 | }, 19 | setup(props, { slots }) { 20 | return () => 21 | h( 22 | props.as ?? (props.href ? 'a' : 'span'), 23 | { 24 | class: 'navbar-brand', 25 | href: props.href, 26 | }, 27 | slots.default && slots.default(), 28 | ) 29 | }, 30 | }) 31 | 32 | export { CNavbarBrand } 33 | -------------------------------------------------------------------------------- /packages/docs/.vuepress/src/shared/page.ts: -------------------------------------------------------------------------------- 1 | import type { GitPluginPageData } from '@vuepress/plugin-git' 2 | import type { NavLink, SidebarConfig } from './nav' 3 | 4 | export interface DefaultThemePageData extends GitPluginPageData { 5 | filePathRelative: string 6 | } 7 | 8 | export interface DefaultThemePageFrontmatter { 9 | home?: boolean 10 | navbar?: boolean 11 | pageClass?: string 12 | name?: string 13 | preview_component?: boolean 14 | pro_component?: boolean 15 | other_frameworks?: string 16 | } 17 | 18 | export interface DefaultThemeNormalPageFrontmatter extends DefaultThemePageFrontmatter { 19 | home?: false 20 | editLink?: boolean 21 | lastUpdated?: boolean 22 | contributors?: boolean 23 | sidebar?: 'auto' | false | SidebarConfig 24 | sidebarDepth?: number 25 | prev?: string | NavLink 26 | next?: string | NavLink 27 | } 28 | --------------------------------------------------------------------------------