├── .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`] = `"
Default slot"`;
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`] = `"Default slot
"`;
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`] = `""`;
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`] = `""`;
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`] = `"Default slot
"`;
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`] = `"Default slot
"`;
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`] = `""`;
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`] = `""`;
4 |
5 | exports[`Loads and display CForm component renders correctly 1`] = `""`;
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`] = `"Default slot
"`;
4 |
5 | exports[`Loads and display CModalTitle component renders correctly 1`] = `"Default slot
"`;
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`] = `""`;
4 |
5 | exports[`Loads and display CCardHeader component renders correctly 1`] = `""`;
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`] = `"Default slot
"`;
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`] = `"Default slot
"`;
4 |
5 | exports[`Loads and display CCarouselItem component renders correctly 1`] = `"Default slot
"`;
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`] = `"Default slot
"`;
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`] = `"Default slot
"`;
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`] = `""`;
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 | ""
7 | `;
8 |
9 | exports[`Loads and display CHeader component renders correctly 1`] = `""`;
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`] = `"Default slot
"`;
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 |
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`] = `"Default slot"`;
4 |
5 | exports[`Loads and display CBreadcrumbItem component renders correctly 1`] = `"Default slot"`;
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 | "
5 | Default slot
6 | "
7 | `;
8 |
9 | exports[`Loads and display CNavItem component renders correctly 1`] = `"Default slot"`;
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 |
16 |
17 |
{{ props.title }}
18 |
19 |
20 |
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`] = `""`;
4 |
5 | exports[`Loads and display CToastHeader component renders correctly 1`] = `
6 | ""
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`] = `"Default slot
"`;
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 |
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`] = `""`;
4 |
5 | exports[`Loads and display CModalHeader component renders correctly 1`] = `""`;
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`] = `""`;
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`] = `"Default slot
"`;
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 | Default slot
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 | ""
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 | "togglerContent
5 |
6 |
7 |
8 | "
9 | `;
10 |
11 | exports[`Loads and display CNavGroup component renders correctly 1`] = `
12 | "
13 |
14 |
15 |
16 |
17 | "
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 |
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 | ""
7 | `;
8 |
9 | exports[`Loads and display CProgress component renders correctly 1`] = `
10 | ""
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 |
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 | ""
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 |
--------------------------------------------------------------------------------
]