@coreui/react-pro 4.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (580) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +144 -0
  3. package/dist/components/Types.d.ts +14 -0
  4. package/dist/components/accordion/CAccordion.d.ts +26 -0
  5. package/dist/components/accordion/CAccordionBody.d.ts +8 -0
  6. package/dist/components/accordion/CAccordionButton.d.ts +8 -0
  7. package/dist/components/accordion/CAccordionCollapse.d.ts +3 -0
  8. package/dist/components/accordion/CAccordionHeader.d.ts +8 -0
  9. package/dist/components/accordion/CAccordionItem.d.ts +17 -0
  10. package/dist/components/alert/CAlert.d.ts +38 -0
  11. package/dist/components/alert/CAlertHeading.d.ts +14 -0
  12. package/dist/components/alert/CAlertLink.d.ts +8 -0
  13. package/dist/components/avatar/CAvatar.d.ts +41 -0
  14. package/dist/components/backdrop/CBackdrop.d.ts +12 -0
  15. package/dist/components/badge/CBadge.d.ts +39 -0
  16. package/dist/components/breadcrumb/CBreadcrumb.d.ts +8 -0
  17. package/dist/components/breadcrumb/CBreadcrumbItem.d.ts +16 -0
  18. package/dist/components/button/CButton.d.ts +58 -0
  19. package/dist/components/button-group/CButtonGroup.d.ts +18 -0
  20. package/dist/components/button-group/CButtonToolbar.d.ts +8 -0
  21. package/dist/components/callout/CCallout.d.ts +15 -0
  22. package/dist/components/card/CCard.d.ts +21 -0
  23. package/dist/components/card/CCardBody.d.ts +8 -0
  24. package/dist/components/card/CCardFooter.d.ts +8 -0
  25. package/dist/components/card/CCardGroup.d.ts +8 -0
  26. package/dist/components/card/CCardHeader.d.ts +14 -0
  27. package/dist/components/card/CCardImage.d.ts +18 -0
  28. package/dist/components/card/CCardImageOverlay.d.ts +8 -0
  29. package/dist/components/card/CCardLink.d.ts +12 -0
  30. package/dist/components/card/CCardSubtitle.d.ts +14 -0
  31. package/dist/components/card/CCardText.d.ts +14 -0
  32. package/dist/components/card/CCardTitle.d.ts +14 -0
  33. package/dist/components/carousel/CCarousel.d.ts +53 -0
  34. package/dist/components/carousel/CCarouselCaption.d.ts +8 -0
  35. package/dist/components/carousel/CCarouselControl.d.ts +16 -0
  36. package/dist/components/carousel/CCarouselIndicators.d.ts +12 -0
  37. package/dist/components/carousel/CCarouselInner.d.ts +8 -0
  38. package/dist/components/carousel/CCarouselItem.d.ts +12 -0
  39. package/dist/components/close-button/CCloseButton.d.ts +16 -0
  40. package/dist/components/collapse/CCollapse.d.ts +12 -0
  41. package/dist/components/dropdown/CDropdown.d.ts +72 -0
  42. package/dist/components/dropdown/CDropdownDivider.d.ts +8 -0
  43. package/dist/components/dropdown/CDropdownHeader.d.ts +14 -0
  44. package/dist/components/dropdown/CDropdownItem.d.ts +15 -0
  45. package/dist/components/dropdown/CDropdownItemPlain.d.ts +14 -0
  46. package/dist/components/dropdown/CDropdownMenu.d.ts +15 -0
  47. package/dist/components/dropdown/CDropdownToggle.d.ts +20 -0
  48. package/dist/components/element-cover/CElementCover.d.ts +26 -0
  49. package/dist/components/footer/CFooter.d.ts +12 -0
  50. package/dist/components/form/CForm.d.ts +12 -0
  51. package/dist/components/form/CFormCheck.d.ts +68 -0
  52. package/dist/components/form/CFormFeedback.d.ts +26 -0
  53. package/dist/components/form/CFormFloating.d.ts +8 -0
  54. package/dist/components/form/CFormInput.d.ts +51 -0
  55. package/dist/components/form/CFormLabel.d.ts +12 -0
  56. package/dist/components/form/CFormRange.d.ts +38 -0
  57. package/dist/components/form/CFormSelect.d.ts +26 -0
  58. package/dist/components/form/CFormSwitch.d.ts +37 -0
  59. package/dist/components/form/CFormText.d.ts +14 -0
  60. package/dist/components/form/CFormTextarea.d.ts +38 -0
  61. package/dist/components/form/CInputGroup.d.ts +14 -0
  62. package/dist/components/form/CInputGroupText.d.ts +14 -0
  63. package/dist/components/grid/CCol.d.ts +52 -0
  64. package/dist/components/grid/CContainer.d.ts +32 -0
  65. package/dist/components/grid/CRow.d.ts +50 -0
  66. package/dist/components/header/CHeader.d.ts +18 -0
  67. package/dist/components/header/CHeaderBrand.d.ts +14 -0
  68. package/dist/components/header/CHeaderDivider.d.ts +8 -0
  69. package/dist/components/header/CHeaderNav.d.ts +14 -0
  70. package/dist/components/header/CHeaderText.d.ts +8 -0
  71. package/dist/components/header/CHeaderToggler.d.ts +8 -0
  72. package/dist/components/image/CImage.d.ts +24 -0
  73. package/dist/components/index.d.ts +1 -0
  74. package/dist/components/link/CLink.d.ts +26 -0
  75. package/dist/components/list-group/CListGroup.d.ts +22 -0
  76. package/dist/components/list-group/CListGroupItem.d.ts +29 -0
  77. package/dist/components/loading-button/CLoadingButton.d.ts +31 -0
  78. package/dist/components/modal/CModal.d.ts +62 -0
  79. package/dist/components/modal/CModalBody.d.ts +8 -0
  80. package/dist/components/modal/CModalContent.d.ts +8 -0
  81. package/dist/components/modal/CModalDialog.d.ts +26 -0
  82. package/dist/components/modal/CModalFooter.d.ts +8 -0
  83. package/dist/components/modal/CModalHeader.d.ts +14 -0
  84. package/dist/components/modal/CModalTitle.d.ts +14 -0
  85. package/dist/components/multi-select/CMultiSelect.d.ts +93 -0
  86. package/dist/components/multi-select/CMultiSelectCleaner.d.ts +2 -0
  87. package/dist/components/multi-select/CMultiSelectNativeSelect.d.ts +8 -0
  88. package/dist/components/multi-select/CMultiSelectOptions.d.ts +10 -0
  89. package/dist/components/multi-select/CMultiSelectSearchInput.d.ts +5 -0
  90. package/dist/components/multi-select/CMultiSelectSelectAllButton.d.ts +2 -0
  91. package/dist/components/multi-select/CMultiSelectSelection.d.ts +11 -0
  92. package/dist/components/nav/CNav.d.ts +22 -0
  93. package/dist/components/nav/CNavGroup.d.ts +25 -0
  94. package/dist/components/nav/CNavGroupItems.d.ts +8 -0
  95. package/dist/components/nav/CNavItem.d.ts +3 -0
  96. package/dist/components/nav/CNavLink.d.ts +31 -0
  97. package/dist/components/nav/CNavTitle.d.ts +8 -0
  98. package/dist/components/navbar/CNavbar.d.ts +43 -0
  99. package/dist/components/navbar/CNavbarBrand.d.ts +17 -0
  100. package/dist/components/navbar/CNavbarNav.d.ts +14 -0
  101. package/dist/components/navbar/CNavbarText.d.ts +8 -0
  102. package/dist/components/navbar/CNavbarToggler.d.ts +8 -0
  103. package/dist/components/offcanvas/COffcanvas.d.ts +37 -0
  104. package/dist/components/offcanvas/COffcanvasBody.d.ts +8 -0
  105. package/dist/components/offcanvas/COffcanvasHeader.d.ts +8 -0
  106. package/dist/components/offcanvas/COffcanvasTitle.d.ts +14 -0
  107. package/dist/components/pagination/CPagination.d.ts +16 -0
  108. package/dist/components/pagination/CPaginationItem.d.ts +16 -0
  109. package/dist/components/pagination/CSmartPagination.d.ts +80 -0
  110. package/dist/components/popover/CPopover.d.ts +36 -0
  111. package/dist/components/popover/CPopoverContent.d.ts +10 -0
  112. package/dist/components/progress/CProgress.d.ts +26 -0
  113. package/dist/components/progress/CProgressBar.d.ts +29 -0
  114. package/dist/components/sidebar/CSidebar.d.ts +49 -0
  115. package/dist/components/sidebar/CSidebarBrand.d.ts +8 -0
  116. package/dist/components/sidebar/CSidebarFooter.d.ts +8 -0
  117. package/dist/components/sidebar/CSidebarHeader.d.ts +8 -0
  118. package/dist/components/sidebar/CSidebarNav.d.ts +14 -0
  119. package/dist/components/sidebar/CSidebarToggler.d.ts +8 -0
  120. package/dist/components/smart-table/CSmartTable.d.ts +3 -0
  121. package/dist/components/smart-table/CSmartTableBody.d.ts +13 -0
  122. package/dist/components/smart-table/CSmartTableCleaner.d.ts +7 -0
  123. package/dist/components/smart-table/CSmartTableFilter.d.ts +8 -0
  124. package/dist/components/smart-table/CSmartTableHead.d.ts +17 -0
  125. package/dist/components/smart-table/CSmartTableInterface.d.ts +289 -0
  126. package/dist/components/smart-table/CSmartTableItemsPerPageSelector.d.ts +8 -0
  127. package/dist/components/spinner/CSpinner.d.ts +37 -0
  128. package/dist/components/table/CTable.d.ts +53 -0
  129. package/dist/components/table/CTableBody.d.ts +15 -0
  130. package/dist/components/table/CTableCaption.d.ts +2 -0
  131. package/dist/components/table/CTableDataCell.d.ts +27 -0
  132. package/dist/components/table/CTableFoot.d.ts +15 -0
  133. package/dist/components/table/CTableHead.d.ts +15 -0
  134. package/dist/components/table/CTableHeaderCell.d.ts +15 -0
  135. package/dist/components/table/CTableRow.d.ts +23 -0
  136. package/dist/components/tabs/CTabContent.d.ts +8 -0
  137. package/dist/components/tabs/CTabPane.d.ts +12 -0
  138. package/dist/components/toast/CToast.d.ts +53 -0
  139. package/dist/components/toast/CToastBody.d.ts +8 -0
  140. package/dist/components/toast/CToastClose.d.ts +9 -0
  141. package/dist/components/toast/CToastHeader.d.ts +12 -0
  142. package/dist/components/toast/CToaster.d.ts +18 -0
  143. package/dist/components/tooltip/CTooltip.d.ts +27 -0
  144. package/dist/components/tooltip/CTooltipContent.d.ts +10 -0
  145. package/dist/components/widgets/CWidgetBrand.d.ts +19 -0
  146. package/dist/components/widgets/CWidgetDropdown.d.ts +20 -0
  147. package/dist/components/widgets/CWidgetIcon.d.ts +21 -0
  148. package/dist/components/widgets/CWidgetProgress.d.ts +32 -0
  149. package/dist/components/widgets/CWidgetProgressIcon.d.ts +32 -0
  150. package/dist/components/widgets/CWidgetSimple.d.ts +15 -0
  151. package/dist/components/widgets/CWidgetStatsA.d.ts +31 -0
  152. package/dist/components/widgets/CWidgetStatsB.d.ts +38 -0
  153. package/dist/components/widgets/CWidgetStatsC.d.ts +38 -0
  154. package/dist/components/widgets/CWidgetStatsD.d.ts +32 -0
  155. package/dist/components/widgets/CWidgetStatsE.d.ts +20 -0
  156. package/dist/components/widgets/CWidgetStatsF.d.ts +35 -0
  157. package/dist/components/widgets/index.d.ts +7 -0
  158. package/dist/index.d.ts +129 -0
  159. package/dist/index.es.js +9765 -0
  160. package/dist/index.es.js.map +1 -0
  161. package/dist/index.js +9926 -0
  162. package/dist/index.js.map +1 -0
  163. package/dist/utils/hooks/index.d.ts +3 -0
  164. package/dist/utils/hooks/useForkedRef.d.ts +7 -0
  165. package/dist/utils/hooks/useStateWithCallback.d.ts +1 -0
  166. package/package.json +99 -0
  167. package/src/components/Types.tsx +128 -0
  168. package/src/components/accordion/CAccordion.tsx +54 -0
  169. package/src/components/accordion/CAccordionBody.tsx +35 -0
  170. package/src/components/accordion/CAccordionButton.tsx +39 -0
  171. package/src/components/accordion/CAccordionCollapse.tsx +19 -0
  172. package/src/components/accordion/CAccordionHeader.tsx +31 -0
  173. package/src/components/accordion/CAccordionItem.tsx +66 -0
  174. package/src/components/accordion/__tests__/CAccordion.spec.tsx +36 -0
  175. package/src/components/accordion/__tests__/CAccordionBody.spec.tsx +15 -0
  176. package/src/components/accordion/__tests__/CAccordionButton.spec.tsx +16 -0
  177. package/src/components/accordion/__tests__/CAccordionCollapse.spec.tsx +10 -0
  178. package/src/components/accordion/__tests__/CAccordionHeader.spec.tsx +16 -0
  179. package/src/components/accordion/__tests__/CAccordionItem.spec.tsx +16 -0
  180. package/src/components/accordion/__tests__/__snapshots__/CAccordion.spec.tsx.snap +21 -0
  181. package/src/components/accordion/__tests__/__snapshots__/CAccordionBody.spec.tsx.snap +29 -0
  182. package/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.tsx.snap +23 -0
  183. package/src/components/accordion/__tests__/__snapshots__/CAccordionCollapse.spec.tsx.snap +11 -0
  184. package/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.tsx.snap +31 -0
  185. package/src/components/accordion/__tests__/__snapshots__/CAccordionItem.spec.tsx.snap +21 -0
  186. package/src/components/alert/CAlert.tsx +100 -0
  187. package/src/components/alert/CAlertHeading.tsx +36 -0
  188. package/src/components/alert/CAlertLink.tsx +31 -0
  189. package/src/components/alert/__tests__/CAlert.spec.tsx +45 -0
  190. package/src/components/alert/__tests__/CAlertHeading.spec.tsx +20 -0
  191. package/src/components/alert/__tests__/CAlertLink.spec.tsx +20 -0
  192. package/src/components/alert/__tests__/__snapshots__/CAlert.spec.tsx.snap +27 -0
  193. package/src/components/alert/__tests__/__snapshots__/CAlertHeading.spec.tsx.snap +21 -0
  194. package/src/components/alert/__tests__/__snapshots__/CAlertLink.spec.tsx.snap +22 -0
  195. package/src/components/avatar/CAvatar.tsx +87 -0
  196. package/src/components/avatar/__tests__/CAvatar.spec.tsx +54 -0
  197. package/src/components/avatar/__tests__/__snapshots__/CAvatar.spec.tsx.snap +40 -0
  198. package/src/components/backdrop/CBackdrop.tsx +41 -0
  199. package/src/components/backdrop/__tests__/CBackdrop.spec.tsx +31 -0
  200. package/src/components/backdrop/__tests__/__snapshots__/CBackdrop.spec.tsx.snap +23 -0
  201. package/src/components/badge/CBadge.tsx +86 -0
  202. package/src/components/badge/__tests__/CBadge.spec.tsx +22 -0
  203. package/src/components/badge/__tests__/__snapshots__/CBadge.spec.tsx.snap +21 -0
  204. package/src/components/breadcrumb/CBreadcrumb.tsx +30 -0
  205. package/src/components/breadcrumb/CBreadcrumbItem.tsx +46 -0
  206. package/src/components/breadcrumb/__tests__/CBreadcrumb.spec.tsx +22 -0
  207. package/src/components/breadcrumb/__tests__/CBreadcrumbItem.spec.tsx +21 -0
  208. package/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumb.spec.tsx.snap +42 -0
  209. package/src/components/breadcrumb/__tests__/__snapshots__/CBreadcrumbItem.spec.tsx.snap +22 -0
  210. package/src/components/button/CButton.tsx +112 -0
  211. package/src/components/button/__tests__/CButton.spec.tsx +44 -0
  212. package/src/components/button/__tests__/CButtonClose.spec.tsx +23 -0
  213. package/src/components/button/__tests__/__snapshots__/CButton.spec.tsx.snap +38 -0
  214. package/src/components/button/__tests__/__snapshots__/CButtonClose.spec.tsx.snap +24 -0
  215. package/src/components/button-group/CButtonGroup.tsx +45 -0
  216. package/src/components/button-group/CButtonToolbar.tsx +29 -0
  217. package/src/components/button-group/__tests__/CButtonGroup.spec.tsx +37 -0
  218. package/src/components/button-group/__tests__/CButtonToolbar.spec.tsx +29 -0
  219. package/src/components/button-group/__tests__/__snapshots__/CButtonGroup.spec.tsx.snap +63 -0
  220. package/src/components/button-group/__tests__/__snapshots__/CButtonToolbar.spec.tsx.snap +66 -0
  221. package/src/components/callout/CCallout.tsx +44 -0
  222. package/src/components/callout/__tests__/CCallout.spec.tsx +21 -0
  223. package/src/components/callout/__tests__/__snapshots__/CCallout.spec.tsx.snap +21 -0
  224. package/src/components/card/CCard.tsx +52 -0
  225. package/src/components/card/CCardBody.tsx +29 -0
  226. package/src/components/card/CCardFooter.tsx +29 -0
  227. package/src/components/card/CCardGroup.tsx +29 -0
  228. package/src/components/card/CCardHeader.tsx +36 -0
  229. package/src/components/card/CCardImage.tsx +43 -0
  230. package/src/components/card/CCardImageOverlay.tsx +29 -0
  231. package/src/components/card/CCardLink.tsx +35 -0
  232. package/src/components/card/CCardSubtitle.tsx +35 -0
  233. package/src/components/card/CCardText.tsx +36 -0
  234. package/src/components/card/CCardTitle.tsx +36 -0
  235. package/src/components/card/__tests__/CCard.spec.tsx +22 -0
  236. package/src/components/card/__tests__/CCardBody.spec.tsx +16 -0
  237. package/src/components/card/__tests__/CCardFooter.spec.tsx +16 -0
  238. package/src/components/card/__tests__/CCardGroup.spec.tsx +51 -0
  239. package/src/components/card/__tests__/CCardHeader.spec.tsx +20 -0
  240. package/src/components/card/__tests__/CCardImage.spec.tsx +18 -0
  241. package/src/components/card/__tests__/CCardImageOverlay.spec.tsx +17 -0
  242. package/src/components/card/__tests__/CCardLink.spec.tsx +20 -0
  243. package/src/components/card/__tests__/CCardSubtitle.spec.tsx +20 -0
  244. package/src/components/card/__tests__/CCardText.spec.tsx +20 -0
  245. package/src/components/card/__tests__/CCardTitle.spec.tsx +20 -0
  246. package/src/components/card/__tests__/__snapshots__/CCard.spec.tsx.snap +21 -0
  247. package/src/components/card/__tests__/__snapshots__/CCardBody.spec.tsx.snap +21 -0
  248. package/src/components/card/__tests__/__snapshots__/CCardFooter.spec.tsx.snap +21 -0
  249. package/src/components/card/__tests__/__snapshots__/CCardGroup.spec.tsx.snap +86 -0
  250. package/src/components/card/__tests__/__snapshots__/CCardHeader.spec.tsx.snap +21 -0
  251. package/src/components/card/__tests__/__snapshots__/CCardImage.spec.tsx.snap +17 -0
  252. package/src/components/card/__tests__/__snapshots__/CCardImageOverlay.spec.tsx.snap +19 -0
  253. package/src/components/card/__tests__/__snapshots__/CCardLink.spec.tsx.snap +22 -0
  254. package/src/components/card/__tests__/__snapshots__/CCardSubtitle.spec.tsx.snap +21 -0
  255. package/src/components/card/__tests__/__snapshots__/CCardText.spec.tsx.snap +21 -0
  256. package/src/components/card/__tests__/__snapshots__/CCardTitle.spec.tsx.snap +21 -0
  257. package/src/components/carousel/CCarousel.tsx +168 -0
  258. package/src/components/carousel/CCarouselCaption.tsx +24 -0
  259. package/src/components/carousel/CCarouselControl.tsx +56 -0
  260. package/src/components/carousel/CCarouselIndicators.tsx +49 -0
  261. package/src/components/carousel/CCarouselInner.tsx +41 -0
  262. package/src/components/carousel/CCarouselItem.tsx +110 -0
  263. package/src/components/carousel/__tests__/CCarousel.spec.tsx +275 -0
  264. package/src/components/carousel/__tests__/__snapshots__/CCarousel.spec.tsx.snap +376 -0
  265. package/src/components/close-button/CCloseButton.tsx +43 -0
  266. package/src/components/close-button/__tests__/CCloseButton.spec.tsx +24 -0
  267. package/src/components/close-button/__tests__/__snapshots__/CCloseButton.spec.tsx.snap +20 -0
  268. package/src/components/collapse/CCollapse.tsx +92 -0
  269. package/src/components/collapse/__tests__/CCollapse.spec.tsx +41 -0
  270. package/src/components/collapse/__tests__/__snapshots__/CCollapse.spec.tsx.snap +21 -0
  271. package/src/components/dropdown/CDropdown.tsx +205 -0
  272. package/src/components/dropdown/CDropdownDivider.tsx +24 -0
  273. package/src/components/dropdown/CDropdownHeader.tsx +36 -0
  274. package/src/components/dropdown/CDropdownItem.tsx +39 -0
  275. package/src/components/dropdown/CDropdownItemPlain.tsx +36 -0
  276. package/src/components/dropdown/CDropdownMenu.tsx +111 -0
  277. package/src/components/dropdown/CDropdownToggle.tsx +91 -0
  278. package/src/components/dropdown/__tests__/CDropdown.spec.tsx +95 -0
  279. package/src/components/dropdown/__tests__/CDropdownDivider.spec.tsx +16 -0
  280. package/src/components/dropdown/__tests__/CDropdownHeader.spec.tsx +20 -0
  281. package/src/components/dropdown/__tests__/CDropdownItem.spec.tsx +20 -0
  282. package/src/components/dropdown/__tests__/CDropdownItemPlain.spec.tsx +20 -0
  283. package/src/components/dropdown/__tests__/CDropdownMenu.spec.tsx +23 -0
  284. package/src/components/dropdown/__tests__/CDropdownToggle.spec.tsx +20 -0
  285. package/src/components/dropdown/__tests__/__snapshots__/CDropdown.spec.tsx.snap +77 -0
  286. package/src/components/dropdown/__tests__/__snapshots__/CDropdownDivider.spec.tsx.snap +17 -0
  287. package/src/components/dropdown/__tests__/__snapshots__/CDropdownHeader.spec.tsx.snap +21 -0
  288. package/src/components/dropdown/__tests__/__snapshots__/CDropdownItem.spec.tsx.snap +21 -0
  289. package/src/components/dropdown/__tests__/__snapshots__/CDropdownItemPlain.spec.tsx.snap +21 -0
  290. package/src/components/dropdown/__tests__/__snapshots__/CDropdownMenu.spec.tsx.snap +29 -0
  291. package/src/components/dropdown/__tests__/__snapshots__/CDropdownToggle.spec.tsx.snap +30 -0
  292. package/src/components/element-cover/CElementCover.tsx +114 -0
  293. package/src/components/footer/CFooter.tsx +34 -0
  294. package/src/components/footer/__tests__/CFooter.spec.tsx +21 -0
  295. package/src/components/footer/__tests__/__snapshots__/CFooter.spec.tsx.snap +21 -0
  296. package/src/components/form/CForm.tsx +33 -0
  297. package/src/components/form/CFormCheck.tsx +156 -0
  298. package/src/components/form/CFormFeedback.tsx +59 -0
  299. package/src/components/form/CFormFloating.tsx +28 -0
  300. package/src/components/form/CFormInput.tsx +87 -0
  301. package/src/components/form/CFormLabel.tsx +33 -0
  302. package/src/components/form/CFormRange.tsx +53 -0
  303. package/src/components/form/CFormSelect.tsx +58 -0
  304. package/src/components/form/CFormSwitch.tsx +84 -0
  305. package/src/components/form/CFormText.tsx +35 -0
  306. package/src/components/form/CFormTextarea.tsx +68 -0
  307. package/src/components/form/CInputGroup.tsx +41 -0
  308. package/src/components/form/CInputGroupText.tsx +35 -0
  309. package/src/components/form/__tests__/CForm.spec.tsx +35 -0
  310. package/src/components/form/__tests__/CFormCheck.spec.tsx +33 -0
  311. package/src/components/form/__tests__/CFormFeedback.spec.tsx +29 -0
  312. package/src/components/form/__tests__/CFormFloating.spec.tsx +17 -0
  313. package/src/components/form/__tests__/CFormInput.spec.tsx +44 -0
  314. package/src/components/form/__tests__/CFormLabel.spec.tsx +17 -0
  315. package/src/components/form/__tests__/CFormRange.spec.tsx +33 -0
  316. package/src/components/form/__tests__/CFormSelect.spec.tsx +22 -0
  317. package/src/components/form/__tests__/CFormSwitch.spec.tsx +42 -0
  318. package/src/components/form/__tests__/CFormText.spec.tsx +20 -0
  319. package/src/components/form/__tests__/CFormTextarea.spec.tsx +32 -0
  320. package/src/components/form/__tests__/CInputGroup.spec.tsx +21 -0
  321. package/src/components/form/__tests__/CInputGroupText.spec.tsx +16 -0
  322. package/src/components/form/__tests__/__snapshots__/CForm.spec.tsx.snap +64 -0
  323. package/src/components/form/__tests__/__snapshots__/CFormCheck.spec.tsx.snap +46 -0
  324. package/src/components/form/__tests__/__snapshots__/CFormFeedback.spec.tsx.snap +25 -0
  325. package/src/components/form/__tests__/__snapshots__/CFormFloating.spec.tsx.snap +19 -0
  326. package/src/components/form/__tests__/__snapshots__/CFormInput.spec.tsx.snap +22 -0
  327. package/src/components/form/__tests__/__snapshots__/CFormLabel.spec.tsx.snap +21 -0
  328. package/src/components/form/__tests__/__snapshots__/CFormRange.spec.tsx.snap +26 -0
  329. package/src/components/form/__tests__/__snapshots__/CFormSelect.spec.tsx.snap +26 -0
  330. package/src/components/form/__tests__/__snapshots__/CFormSwitch.spec.tsx.snap +34 -0
  331. package/src/components/form/__tests__/__snapshots__/CFormText.spec.tsx.snap +21 -0
  332. package/src/components/form/__tests__/__snapshots__/CFormTextarea.spec.tsx.snap +23 -0
  333. package/src/components/form/__tests__/__snapshots__/CInputGroup.spec.tsx.snap +21 -0
  334. package/src/components/form/__tests__/__snapshots__/CInputGroupText.spec.tsx.snap +21 -0
  335. package/src/components/grid/CCol.tsx +144 -0
  336. package/src/components/grid/CContainer.tsx +80 -0
  337. package/src/components/grid/CRow.tsx +118 -0
  338. package/src/components/grid/__tests__/CCol.spec.tsx +42 -0
  339. package/src/components/grid/__tests__/CContainer.spec.tsx +31 -0
  340. package/src/components/grid/__tests__/CRow.spec.tsx +116 -0
  341. package/src/components/grid/__tests__/__snapshots__/CCol.spec.tsx.snap +31 -0
  342. package/src/components/grid/__tests__/__snapshots__/CContainer.spec.tsx.snap +31 -0
  343. package/src/components/grid/__tests__/__snapshots__/CRow.spec.tsx.snap +61 -0
  344. package/src/components/header/CHeader.tsx +60 -0
  345. package/src/components/header/CHeaderBrand.tsx +36 -0
  346. package/src/components/header/CHeaderDivider.tsx +24 -0
  347. package/src/components/header/CHeaderNav.tsx +36 -0
  348. package/src/components/header/CHeaderText.tsx +29 -0
  349. package/src/components/header/CHeaderToggler.tsx +29 -0
  350. package/src/components/header/__tests__/CHeader.spec.tsx +21 -0
  351. package/src/components/header/__tests__/CHeaderBrand.spec.tsx +20 -0
  352. package/src/components/header/__tests__/CHeaderDivider.spec.tsx +16 -0
  353. package/src/components/header/__tests__/CHeaderNav.spec.tsx +20 -0
  354. package/src/components/header/__tests__/CHeaderText.spec.tsx +16 -0
  355. package/src/components/header/__tests__/CHeaderToggler.spec.tsx +16 -0
  356. package/src/components/header/__tests__/__snapshots__/CHeader.spec.tsx.snap +25 -0
  357. package/src/components/header/__tests__/__snapshots__/CHeaderBrand.spec.tsx.snap +21 -0
  358. package/src/components/header/__tests__/__snapshots__/CHeaderDivider.spec.tsx.snap +21 -0
  359. package/src/components/header/__tests__/__snapshots__/CHeaderNav.spec.tsx.snap +23 -0
  360. package/src/components/header/__tests__/__snapshots__/CHeaderText.spec.tsx.snap +21 -0
  361. package/src/components/header/__tests__/__snapshots__/CHeaderToggler.spec.tsx.snap +23 -0
  362. package/src/components/image/CImage.tsx +52 -0
  363. package/src/components/image/__tests__/CImage.spec.tsx +28 -0
  364. package/src/components/image/__tests__/__snapshots__/CImage.spec.tsx.snap +25 -0
  365. package/src/components/index.ts +1 -0
  366. package/src/components/link/CLink.tsx +64 -0
  367. package/src/components/link/__tests__/CLink.spec.tsx +51 -0
  368. package/src/components/link/__tests__/__snapshots__/CLink.spec.tsx.snap +24 -0
  369. package/src/components/list-group/CListGroup.tsx +66 -0
  370. package/src/components/list-group/CListGroupItem.tsx +81 -0
  371. package/src/components/list-group/__tests__/CListGroup.spec.tsx +33 -0
  372. package/src/components/list-group/__tests__/CListGroupItem.spec.tsx +29 -0
  373. package/src/components/list-group/__tests__/__snapshots__/CListGroup.spec.tsx.snap +45 -0
  374. package/src/components/list-group/__tests__/__snapshots__/CListGroupItem.spec.tsx.snap +24 -0
  375. package/src/components/loading-button/CLoadingButton.tsx +93 -0
  376. package/src/components/loading-button/__tests__/CLoadingButton.spec.tsx +47 -0
  377. package/src/components/loading-button/__tests__/__snapshots__/CLoadingButton.spec.tsx.snap +43 -0
  378. package/src/components/modal/CModal.tsx +240 -0
  379. package/src/components/modal/CModalBody.tsx +29 -0
  380. package/src/components/modal/CModalContent.tsx +29 -0
  381. package/src/components/modal/CModalDialog.tsx +65 -0
  382. package/src/components/modal/CModalFooter.tsx +29 -0
  383. package/src/components/modal/CModalHeader.tsx +40 -0
  384. package/src/components/modal/CModalTitle.tsx +36 -0
  385. package/src/components/modal/__tests__/CModal.spec.tsx +67 -0
  386. package/src/components/modal/__tests__/CModalBody.spec.tsx +16 -0
  387. package/src/components/modal/__tests__/CModalContent.spec.tsx +16 -0
  388. package/src/components/modal/__tests__/CModalDialog.spec.tsx +30 -0
  389. package/src/components/modal/__tests__/CModalFooter.spec.tsx +16 -0
  390. package/src/components/modal/__tests__/CModalHeader.spec.tsx +24 -0
  391. package/src/components/modal/__tests__/CModalTitle.spec.tsx +20 -0
  392. package/src/components/modal/__tests__/__snapshots__/CModal.spec.tsx.snap +13 -0
  393. package/src/components/modal/__tests__/__snapshots__/CModalBody.spec.tsx.snap +21 -0
  394. package/src/components/modal/__tests__/__snapshots__/CModalContent.spec.tsx.snap +21 -0
  395. package/src/components/modal/__tests__/__snapshots__/CModalDialog.spec.tsx.snap +21 -0
  396. package/src/components/modal/__tests__/__snapshots__/CModalFooter.spec.tsx.snap +21 -0
  397. package/src/components/modal/__tests__/__snapshots__/CModalHeader.spec.tsx.snap +29 -0
  398. package/src/components/modal/__tests__/__snapshots__/CModalTitle.spec.tsx.snap +21 -0
  399. package/src/components/multi-select/CMultiSelect.tsx +399 -0
  400. package/src/components/multi-select/CMultiSelectCleaner.tsx +18 -0
  401. package/src/components/multi-select/CMultiSelectNativeSelect.tsx +44 -0
  402. package/src/components/multi-select/CMultiSelectOptions.tsx +65 -0
  403. package/src/components/multi-select/CMultiSelectSearchInput.tsx +28 -0
  404. package/src/components/multi-select/CMultiSelectSelectAllButton.tsx +21 -0
  405. package/src/components/multi-select/CMultiSelectSelection.tsx +60 -0
  406. package/src/components/multi-select/__tests__/CMultiSelect.spec.tsx +139 -0
  407. package/src/components/multi-select/__tests__/CMultiSelectCleaner.spec.tsx +15 -0
  408. package/src/components/multi-select/__tests__/CMultiSelectNativeSelect.spec.tsx +36 -0
  409. package/src/components/multi-select/__tests__/CMultiSelectOptions.spec.tsx +69 -0
  410. package/src/components/multi-select/__tests__/CMultiSelectSearchInput.spec.tsx +17 -0
  411. package/src/components/multi-select/__tests__/CMultiSelectSelectAllButton.spec.tsx +21 -0
  412. package/src/components/multi-select/__tests__/CMultiSelectSelection.spec.tsx +105 -0
  413. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelect.spec.tsx.snap +111 -0
  414. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectCleaner.spec.tsx.snap +19 -0
  415. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectNativeSelect.spec.tsx.snap +37 -0
  416. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectOptions.spec.tsx.snap +36 -0
  417. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectSearchInput.spec.tsx.snap +20 -0
  418. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectSelectAllButton.spec.tsx.snap +24 -0
  419. package/src/components/multi-select/__tests__/__snapshots__/CMultiSelectSelection.spec.tsx.snap +58 -0
  420. package/src/components/nav/CNav.tsx +54 -0
  421. package/src/components/nav/CNavGroup.tsx +147 -0
  422. package/src/components/nav/CNavGroupItems.tsx +28 -0
  423. package/src/components/nav/CNavItem.tsx +29 -0
  424. package/src/components/nav/CNavLink.tsx +66 -0
  425. package/src/components/nav/CNavTitle.tsx +28 -0
  426. package/src/components/nav/__tests__/CNav.spec.tsx +62 -0
  427. package/src/components/nav/__tests__/CNavGroup.spec.tsx +25 -0
  428. package/src/components/nav/__tests__/CNavGroupItems.spec.tsx +16 -0
  429. package/src/components/nav/__tests__/CNavItem.spec.tsx +22 -0
  430. package/src/components/nav/__tests__/CNavLink.spec.tsx +25 -0
  431. package/src/components/nav/__tests__/CNavTitle.spec.tsx +16 -0
  432. package/src/components/nav/__tests__/__snapshots__/CNav.spec.tsx.snap +118 -0
  433. package/src/components/nav/__tests__/__snapshots__/CNavGroup.spec.tsx.snap +36 -0
  434. package/src/components/nav/__tests__/__snapshots__/CNavGroupItems.spec.tsx.snap +21 -0
  435. package/src/components/nav/__tests__/__snapshots__/CNavItem.spec.tsx.snap +45 -0
  436. package/src/components/nav/__tests__/__snapshots__/CNavLink.spec.tsx.snap +35 -0
  437. package/src/components/nav/__tests__/__snapshots__/CNavTitle.spec.tsx.snap +21 -0
  438. package/src/components/navbar/CNavbar.tsx +115 -0
  439. package/src/components/navbar/CNavbarBrand.tsx +40 -0
  440. package/src/components/navbar/CNavbarNav.tsx +36 -0
  441. package/src/components/navbar/CNavbarText.tsx +29 -0
  442. package/src/components/navbar/CNavbarToggler.tsx +29 -0
  443. package/src/components/navbar/__tests__/CNavbar.spec.tsx +46 -0
  444. package/src/components/navbar/__tests__/CNavbarBrand.spec.tsx +25 -0
  445. package/src/components/navbar/__tests__/CNavbarNav.spec.tsx +21 -0
  446. package/src/components/navbar/__tests__/CNavbarText.spec.tsx +16 -0
  447. package/src/components/navbar/__tests__/CNavbarToggler.spec.tsx +23 -0
  448. package/src/components/navbar/__tests__/__snapshots__/CNavbar.spec.tsx.snap +39 -0
  449. package/src/components/navbar/__tests__/__snapshots__/CNavbarBrand.spec.tsx.snap +33 -0
  450. package/src/components/navbar/__tests__/__snapshots__/CNavbarNav.spec.tsx.snap +23 -0
  451. package/src/components/navbar/__tests__/__snapshots__/CNavbarText.spec.tsx.snap +21 -0
  452. package/src/components/navbar/__tests__/__snapshots__/CNavbarToggler.spec.tsx.snap +38 -0
  453. package/src/components/offcanvas/COffcanvas.tsx +146 -0
  454. package/src/components/offcanvas/COffcanvasBody.tsx +29 -0
  455. package/src/components/offcanvas/COffcanvasHeader.tsx +29 -0
  456. package/src/components/offcanvas/COffcanvasTitle.tsx +36 -0
  457. package/src/components/offcanvas/__tests__/COffcanvas.spec.tsx +97 -0
  458. package/src/components/offcanvas/__tests__/COffcanvasBody.spec.tsx +17 -0
  459. package/src/components/offcanvas/__tests__/COffcanvasHeader.spec.tsx +17 -0
  460. package/src/components/offcanvas/__tests__/COffcanvasTitle.spec.tsx +21 -0
  461. package/src/components/offcanvas/__tests__/__snapshots__/COffcanvas.spec.tsx.snap +45 -0
  462. package/src/components/offcanvas/__tests__/__snapshots__/COffcanvasBody.spec.tsx.snap +19 -0
  463. package/src/components/offcanvas/__tests__/__snapshots__/COffcanvasHeader.spec.tsx.snap +19 -0
  464. package/src/components/offcanvas/__tests__/__snapshots__/COffcanvasTitle.spec.tsx.snap +19 -0
  465. package/src/components/pagination/CPagination.tsx +45 -0
  466. package/src/components/pagination/CPaginationItem.tsx +57 -0
  467. package/src/components/pagination/CSmartPagination.tsx +262 -0
  468. package/src/components/pagination/__tests__/CPagination.spec.tsx +38 -0
  469. package/src/components/pagination/__tests__/CPaginationItem.spec.tsx +29 -0
  470. package/src/components/pagination/__tests__/__snapshots__/CPagination.spec.tsx.snap +65 -0
  471. package/src/components/pagination/__tests__/__snapshots__/CPaginationItem.spec.tsx.snap +30 -0
  472. package/src/components/popover/CPopover.tsx +137 -0
  473. package/src/components/popover/CPopoverContent.tsx +41 -0
  474. package/src/components/popover/__tests__/CPopover.spec.tsx +84 -0
  475. package/src/components/popover/__tests__/__snapshots__/CPopover.spec.tsx.snap +43 -0
  476. package/src/components/progress/CProgress.tsx +66 -0
  477. package/src/components/progress/CProgressBar.tsx +71 -0
  478. package/src/components/progress/__tests__/CProgress.spec.tsx +21 -0
  479. package/src/components/progress/__tests__/CProgressBar.spec.tsx +25 -0
  480. package/src/components/progress/__tests__/__snapshots__/CProgress.spec.tsx.snap +31 -0
  481. package/src/components/progress/__tests__/__snapshots__/CProgressBar.spec.tsx.snap +31 -0
  482. package/src/components/sidebar/CSidebar.tsx +216 -0
  483. package/src/components/sidebar/CSidebarBrand.tsx +28 -0
  484. package/src/components/sidebar/CSidebarFooter.tsx +28 -0
  485. package/src/components/sidebar/CSidebarHeader.tsx +28 -0
  486. package/src/components/sidebar/CSidebarNav.tsx +47 -0
  487. package/src/components/sidebar/CSidebarToggler.tsx +28 -0
  488. package/src/components/sidebar/__tests__/CSidebar.spec.tsx +46 -0
  489. package/src/components/sidebar/__tests__/CSidebarBrand.spec.tsx +16 -0
  490. package/src/components/sidebar/__tests__/CSidebarFooter.spec.tsx +16 -0
  491. package/src/components/sidebar/__tests__/CSidebarHeader.spec.tsx +16 -0
  492. package/src/components/sidebar/__tests__/CSidebarNav.spec.tsx +16 -0
  493. package/src/components/sidebar/__tests__/CSidebarToggler.spec.tsx +17 -0
  494. package/src/components/sidebar/__tests__/__snapshots__/CSidebar.spec.tsx.snap +31 -0
  495. package/src/components/sidebar/__tests__/__snapshots__/CSidebarBrand.spec.tsx.snap +22 -0
  496. package/src/components/sidebar/__tests__/__snapshots__/CSidebarFooter.spec.tsx.snap +21 -0
  497. package/src/components/sidebar/__tests__/__snapshots__/CSidebarHeader.spec.tsx.snap +21 -0
  498. package/src/components/sidebar/__tests__/__snapshots__/CSidebarNav.spec.tsx.snap +17 -0
  499. package/src/components/sidebar/__tests__/__snapshots__/CSidebarToggler.spec.tsx.snap +19 -0
  500. package/src/components/smart-table/CSmartTable.tsx +471 -0
  501. package/src/components/smart-table/CSmartTableBody.tsx +146 -0
  502. package/src/components/smart-table/CSmartTableCleaner.tsx +50 -0
  503. package/src/components/smart-table/CSmartTableFilter.tsx +33 -0
  504. package/src/components/smart-table/CSmartTableHead.tsx +181 -0
  505. package/src/components/smart-table/CSmartTableInterface.tsx +300 -0
  506. package/src/components/smart-table/CSmartTableItemsPerPageSelector.tsx +42 -0
  507. package/src/components/spinner/CSpinner.tsx +79 -0
  508. package/src/components/spinner/__tests__/CSpinner.spec.tsx +22 -0
  509. package/src/components/spinner/__tests__/__snapshots__/CSpinner.spec.tsx.snap +31 -0
  510. package/src/components/table/CTable.tsx +129 -0
  511. package/src/components/table/CTableBody.tsx +43 -0
  512. package/src/components/table/CTableCaption.tsx +19 -0
  513. package/src/components/table/CTableDataCell.tsx +60 -0
  514. package/src/components/table/CTableFoot.tsx +43 -0
  515. package/src/components/table/CTableHead.tsx +43 -0
  516. package/src/components/table/CTableHeaderCell.tsx +43 -0
  517. package/src/components/table/CTableRow.tsx +55 -0
  518. package/src/components/table/__tests__/CTable.spec.tsx +105 -0
  519. package/src/components/table/__tests__/CTableBody.spec.tsx +30 -0
  520. package/src/components/table/__tests__/CTableCaption.spec.tsx +21 -0
  521. package/src/components/table/__tests__/CTableDataCell.spec.tsx +43 -0
  522. package/src/components/table/__tests__/CTableFoot.spec.tsx +30 -0
  523. package/src/components/table/__tests__/CTableHead.spec.tsx +30 -0
  524. package/src/components/table/__tests__/CTableHeaderCell.spec.tsx +39 -0
  525. package/src/components/table/__tests__/CTableRow.spec.tsx +37 -0
  526. package/src/components/table/__tests__/__snapshots__/CTable.spec.tsx.snap +117 -0
  527. package/src/components/table/__tests__/__snapshots__/CTableBody.spec.tsx.snap +21 -0
  528. package/src/components/table/__tests__/__snapshots__/CTableCaption.spec.tsx.snap +15 -0
  529. package/src/components/table/__tests__/__snapshots__/CTableDataCell.spec.tsx.snap +25 -0
  530. package/src/components/table/__tests__/__snapshots__/CTableFoot.spec.tsx.snap +21 -0
  531. package/src/components/table/__tests__/__snapshots__/CTableHead.spec.tsx.snap +21 -0
  532. package/src/components/table/__tests__/__snapshots__/CTableHeaderCell.spec.tsx.snap +25 -0
  533. package/src/components/table/__tests__/__snapshots__/CTableRow.spec.tsx.snap +23 -0
  534. package/src/components/tabs/CTabContent.tsx +28 -0
  535. package/src/components/tabs/CTabPane.tsx +60 -0
  536. package/src/components/tabs/__tests__/CTabContent.spec.tsx +16 -0
  537. package/src/components/tabs/__tests__/CTabPane.spec.tsx +51 -0
  538. package/src/components/tabs/__tests__/__snapshots__/CTabContent.spec.tsx.snap +21 -0
  539. package/src/components/tabs/__tests__/__snapshots__/CTabPane.spec.tsx.snap +23 -0
  540. package/src/components/toast/CToast.tsx +177 -0
  541. package/src/components/toast/CToastBody.tsx +28 -0
  542. package/src/components/toast/CToastClose.tsx +31 -0
  543. package/src/components/toast/CToastHeader.tsx +36 -0
  544. package/src/components/toast/CToaster.tsx +103 -0
  545. package/src/components/toast/__tests__/CToast.spec.tsx +98 -0
  546. package/src/components/toast/__tests__/CToastBody.spec.tsx +16 -0
  547. package/src/components/toast/__tests__/CToastHeader.spec.tsx +16 -0
  548. package/src/components/toast/__tests__/CToaster.spec.tsx +47 -0
  549. package/src/components/toast/__tests__/__snapshots__/CToast.spec.tsx.snap +81 -0
  550. package/src/components/toast/__tests__/__snapshots__/CToastBody.spec.tsx.snap +21 -0
  551. package/src/components/toast/__tests__/__snapshots__/CToastHeader.spec.tsx.snap +21 -0
  552. package/src/components/toast/__tests__/__snapshots__/CToaster.spec.tsx.snap +25 -0
  553. package/src/components/tooltip/CTooltip.tsx +116 -0
  554. package/src/components/tooltip/CTooltipContent.tsx +37 -0
  555. package/src/components/tooltip/__tests__/CTooltip.spec.tsx +68 -0
  556. package/src/components/tooltip/__tests__/__snapshots__/CTooltip.spec.tsx.snap +21 -0
  557. package/src/components/widgets/CWidgetStatsA.tsx +70 -0
  558. package/src/components/widgets/CWidgetStatsB.tsx +80 -0
  559. package/src/components/widgets/CWidgetStatsC.tsx +93 -0
  560. package/src/components/widgets/CWidgetStatsD.tsx +85 -0
  561. package/src/components/widgets/CWidgetStatsE.tsx +53 -0
  562. package/src/components/widgets/CWidgetStatsF.tsx +73 -0
  563. package/src/components/widgets/__tests__/CWidgetStatsA.spec.tsx +47 -0
  564. package/src/components/widgets/__tests__/CWidgetStatsB.spec.tsx +38 -0
  565. package/src/components/widgets/__tests__/CWidgetStatsC.spec.tsx +39 -0
  566. package/src/components/widgets/__tests__/CWidgetStatsD.spec.tsx +51 -0
  567. package/src/components/widgets/__tests__/CWidgetStatsE.spec.tsx +30 -0
  568. package/src/components/widgets/__tests__/CWidgetStatsF.spec.tsx +59 -0
  569. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsA.spec.tsx.snap +40 -0
  570. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsB.spec.tsx.snap +57 -0
  571. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsC.spec.tsx.snap +59 -0
  572. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsD.spec.tsx.snap +63 -0
  573. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsE.spec.tsx.snap +36 -0
  574. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsF.spec.tsx.snap +60 -0
  575. package/src/components/widgets/index.ts +8 -0
  576. package/src/index.ts +259 -0
  577. package/src/utils/hooks/index.ts +4 -0
  578. package/src/utils/hooks/useForkedRef.ts +45 -0
  579. package/src/utils/hooks/useStateWithCallback.ts +7 -0
  580. package/tsconfig.json +25 -0
@@ -0,0 +1,181 @@
1
+ import React, { ElementType, forwardRef, ReactNode } from 'react'
2
+ import PropTypes from 'prop-types'
3
+
4
+ import { ColumnFilter, Column, Sorter, SorterValue } from './CSmartTableInterface'
5
+
6
+ import { CFormInput } from '../form/CFormInput'
7
+ import { CTableHead, CTableHeadProps } from '../table/CTableHead'
8
+ import { CTableHeaderCell } from '../table/CTableHeaderCell'
9
+ import { CTableRow } from '../table/CTableRow'
10
+ export interface CSmartTableHeadProps extends CTableHeadProps {
11
+ columnFilter?: boolean | ColumnFilter
12
+ columnSorter?: boolean | Sorter
13
+ component?: string | ElementType
14
+ columns: (Column | string)[]
15
+ handleFilterOnChange?: (key: string, value: string) => void
16
+ handleFilterOnInput?: (key: string, value: string) => void
17
+ handleSort?: (key: string, index: number) => void
18
+ sorterState?: SorterValue
19
+ sortingIcon?: ReactNode
20
+ sortingIconAscending?: ReactNode
21
+ sortingIconDescending?: ReactNode
22
+ }
23
+
24
+ export const CSmartTableHead = forwardRef<HTMLTableSectionElement, CSmartTableHeadProps>(
25
+ (
26
+ {
27
+ columnFilter,
28
+ columnSorter,
29
+ component: Component = CTableHead,
30
+ columns,
31
+ handleFilterOnChange,
32
+ handleFilterOnInput,
33
+ handleSort,
34
+ sorterState,
35
+ sortingIcon,
36
+ sortingIconAscending,
37
+ sortingIconDescending,
38
+ ...rest
39
+ },
40
+ ref,
41
+ ) => {
42
+ const tableHeaderCellProps = (column: Column | string) => {
43
+ if (typeof column === 'object' && column._props) {
44
+ return column._props
45
+ }
46
+ return {}
47
+ }
48
+
49
+ const tableHeaderCellStyles = (column: Column | string) => {
50
+ const style = { verticalAlign: 'middle', overflow: 'hidden', cursor: '' }
51
+
52
+ if (
53
+ columnSorter &&
54
+ (typeof column !== 'object' ||
55
+ (typeof column === 'object' && (typeof column.sorter === 'undefined' || column.sorter)))
56
+ ) {
57
+ style.cursor = 'pointer'
58
+ }
59
+
60
+ if (typeof column === 'object' && column._props) {
61
+ return { ...style, ...column._style }
62
+ }
63
+ return style
64
+ }
65
+
66
+ const pretifyName = (name: string) => {
67
+ return name
68
+ .replace(/[-_.]/g, ' ')
69
+ .replace(/ +/g, ' ')
70
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
71
+ .split(' ')
72
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
73
+ .join(' ')
74
+ }
75
+
76
+ const label = (column: Column | string) =>
77
+ typeof column === 'object'
78
+ ? column.label !== undefined
79
+ ? column.label
80
+ : pretifyName(column.key)
81
+ : pretifyName(column)
82
+
83
+ const key = (column: Column | string) => (typeof column === 'object' ? column.key : column)
84
+
85
+ const getColumnSorterState = (key: string): string | number => {
86
+ if (sorterState && sorterState.column === key) {
87
+ if (sorterState.state) {
88
+ return sorterState.state
89
+ }
90
+ return 0
91
+ }
92
+
93
+ return 0
94
+ }
95
+
96
+ const columnSorterIcon = (column: Column | string) => {
97
+ if (getColumnSorterState(key(column)) === 0) {
98
+ return <span className="opacity-25 float-end me-1">{sortingIcon}</span>
99
+ }
100
+ if (getColumnSorterState(key(column)) === 'asc') {
101
+ return <span className="float-end me-1">{sortingIconAscending}</span>
102
+ }
103
+ if (getColumnSorterState(key(column)) === 'desc') {
104
+ return <span className="float-end me-1">{sortingIconDescending}</span>
105
+ }
106
+ return
107
+ }
108
+
109
+ return (
110
+ <Component {...rest} ref={ref}>
111
+ <CTableRow>
112
+ {columns.map((column: Column | string, index: number) => {
113
+ return (
114
+ <CTableHeaderCell
115
+ {...tableHeaderCellProps(column)}
116
+ onClick={() => handleSort && handleSort(key(column), index)}
117
+ style={tableHeaderCellStyles(column)}
118
+ key={index}
119
+ >
120
+ <div className="d-inline">{label(column)}</div>
121
+ {columnSorter &&
122
+ (typeof column !== 'object'
123
+ ? true
124
+ : typeof column.sorter === 'undefined'
125
+ ? true
126
+ : column.sorter) &&
127
+ columnSorterIcon(column)}
128
+ </CTableHeaderCell>
129
+ )
130
+ })}
131
+ </CTableRow>
132
+ {columnFilter && (
133
+ <CTableRow>
134
+ {columns.map((column: Column | string, index: number) => {
135
+ return (
136
+ <CTableHeaderCell {...tableHeaderCellProps(column)} key={index}>
137
+ {(typeof column !== 'object'
138
+ ? true
139
+ : typeof column.filter === 'undefined'
140
+ ? true
141
+ : column.filter) && (
142
+ <CFormInput
143
+ size="sm"
144
+ onInput={(event) =>
145
+ handleFilterOnInput &&
146
+ handleFilterOnInput(key(column), (event.target as HTMLInputElement).value)
147
+ }
148
+ onChange={(event) =>
149
+ handleFilterOnChange &&
150
+ handleFilterOnChange(key(column), (event.target as HTMLInputElement).value)
151
+ }
152
+ // value={columnFilterState[colName] || ''}
153
+ aria-label={`column name: '${label(column)}' filter input`}
154
+ />
155
+ )}
156
+ </CTableHeaderCell>
157
+ )
158
+ })}
159
+ </CTableRow>
160
+ )}
161
+ </Component>
162
+ )
163
+ },
164
+ )
165
+
166
+ CSmartTableHead.propTypes = {
167
+ columnFilter: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
168
+ columnSorter: PropTypes.bool,
169
+ component: PropTypes.elementType,
170
+ children: PropTypes.node,
171
+ columns: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.any, PropTypes.string])).isRequired, // TODO: improve this Prop Type,
172
+ handleFilterOnChange: PropTypes.func,
173
+ handleFilterOnInput: PropTypes.func,
174
+ handleSort: PropTypes.func,
175
+ sorterState: PropTypes.object,
176
+ sortingIcon: PropTypes.node,
177
+ sortingIconAscending: PropTypes.node,
178
+ sortingIconDescending: PropTypes.node,
179
+ }
180
+
181
+ CSmartTableHead.displayName = 'CSmartTableHead'
@@ -0,0 +1,300 @@
1
+ import { HTMLAttributes, MouseEvent, ReactNode } from 'react'
2
+ import { CSmartPaginationProps } from '../pagination/CSmartPagination'
3
+ import { CTableProps } from '../table/CTable'
4
+ import { CTableBodyProps } from '../table/CTableBody'
5
+ import { CTableFootProps } from '../table/CTableFoot'
6
+ import { CTableHeaderCellProps } from '../table/CTableHeaderCell'
7
+ import { CTableRowProps } from '../table/CTableRow'
8
+ import { CTableHeadProps } from '../table/CTableHead'
9
+
10
+ export interface Column {
11
+ sorter?: boolean
12
+ key: string
13
+ label?: string
14
+ filter?: boolean
15
+ _style?: any
16
+ _props?: CTableHeaderCellProps
17
+ }
18
+
19
+ export interface ColumnFilter {
20
+ lazy?: boolean
21
+ external?: boolean
22
+ }
23
+
24
+ export interface ColumnFilterValue {
25
+ [key: string]: any
26
+ }
27
+
28
+ export interface Item {
29
+ [key: string]: number | string | any
30
+ _props: CTableRowProps
31
+ }
32
+
33
+ export interface ItemsPerPageSelect {
34
+ external?: boolean
35
+ label?: string
36
+ values?: Array<number>
37
+ }
38
+
39
+ export interface Sorter {
40
+ resetable?: boolean
41
+ external?: boolean
42
+ }
43
+
44
+ export interface ScopedColumns {
45
+ details?: (a: Item, b: number) => ReactNode
46
+ }
47
+
48
+ export interface SorterValue {
49
+ column?: string
50
+ state?: number | string
51
+ }
52
+
53
+ export interface TableFilter {
54
+ lazy?: boolean
55
+ external?: boolean
56
+ label?: string
57
+ placeholder?: string
58
+ }
59
+
60
+ export interface NoItemsView {
61
+ noResults?: string
62
+ noItems?: string
63
+ }
64
+
65
+ export interface CSmartTableProps extends HTMLAttributes<HTMLDivElement> {
66
+ /**
67
+ * Sets active page. If 'pagination' prop is enabled, activePage is set only initially. [docs]
68
+ *
69
+ * @default 1
70
+ */
71
+ activePage?: number
72
+ /**
73
+ * A string of all className you want applied to the base component. [docs]
74
+ */
75
+ className?: string
76
+ /**
77
+ * When set, displays table cleaner above table, next to the table filter (or in place of table filter if `tableFilter` prop is not set)
78
+ * Cleaner resets `tableFilterValue`, `columnFilterValue`, `sorterValue`. If clean is possible it is clickable (`tabIndex="0"` `role="button"`, `color="danger"`), otherwise it is not clickable and transparent. Cleaner can be customized through the `cleaner` slot. [docs]
79
+ *
80
+ */
81
+ cleaner?: boolean
82
+ /**
83
+ * Style table items as clickable. [docs]
84
+ *
85
+ * @type boolean
86
+ */
87
+ clickableRows?: boolean
88
+ /**
89
+ * When set, displays additional filter row between table header and items, allowing filtering by specific column.
90
+ * Column filter can be customized, by passing prop as object with additional options as keys. Available options:
91
+ * - external (Boolean) - Disables automatic filtering inside component.
92
+ * - lazy (Boolean) - Set to true to trigger filter updates only on change event. [docs]
93
+ *
94
+ * @type boolean | ColumnFilter
95
+ */
96
+ columnFilter?: boolean | ColumnFilter
97
+ /**
98
+ * Value of table filter. To set pass object where keys are column names and values are filter strings e.g.:
99
+ * { user: 'John', age: 12 }
100
+ * You can track state of this prop by setting .sync modifier. [docs]
101
+ */
102
+ columnFilterValue?: ColumnFilterValue
103
+ /**
104
+ * Prop for table columns configuration. If prop is not defined, table will display columns based on the first item keys, omitting keys that begins with underscore (e.g. '_classes')
105
+ *
106
+ * In columns prop each array item represents one column. Item might be specified in two ways:
107
+ * String: each item define column name equal to item value.
108
+ * Object: item is object with following keys available as column configuration:
109
+ * - key (required)(String) - define column name equal to item key.
110
+ * - label (String) - define visible label of column. If not defined, label will be generated automatically based on column name, by converting kebab-case and snake_case to individual words and capitalization of each word.
111
+ * - _classes (String/Array/Object) - adds classes to all cels in column
112
+ * - _style (String/Array/Object) - adds styles to the column header (useful for defining widths)
113
+ * - sorter (Boolean) - disables sorting of the column when set to false
114
+ * - filter (Boolean) - removes filter from column when set to false. [docs]
115
+ */
116
+ columns?: Column[] | string[]
117
+ /**
118
+ * Enables table sorting by column value. Sorting will be performed corectly only if values in column are of one type: string (case insensitive) or number.
119
+ *
120
+ * Sorter can be customized, by passing prop as object with additional options as keys. Available options:
121
+ * - external (Boolean) - Disables automatic sorting inside component.
122
+ * - resetable (Boolean) - If set to true clicking on sorter have three states: ascending, descending and null. That means that third click on sorter will reset sorting, and restore table to original order. [docs]
123
+ *
124
+ * @type boolean | Sorter
125
+ */
126
+ columnSorter?: boolean | Sorter
127
+ /**
128
+ * Displays table footer, which mirrors table header. (without column filter). [docs]
129
+ */
130
+ footer?: boolean
131
+ /**
132
+ * Set to false to remove table header. [docs]
133
+ *
134
+ * @default true
135
+ */
136
+ header?: boolean
137
+ /**
138
+ * Array of objects, where each object represents one item - row in table. Additionally, you can add style classes to each row by passing them by '_classes' key and to single cell by '_cellClasses'.
139
+ *
140
+ * Example item:
141
+ * { name: 'John' , age: 12, _props: { color: 'success' }, _cellProps: { age: { className: 'fw-bold'}}}
142
+ * For column generation description watch columns prop. [docs]
143
+ *
144
+ * @type Array<string>
145
+ */
146
+ items?: Item[]
147
+ /**
148
+ * Number of items per site, when pagination is enabled. [docs]
149
+ *
150
+ * @default 10
151
+ */
152
+ itemsPerPage?: number
153
+ /**
154
+ * Label for items per page selector. [docs]
155
+ *
156
+ * @default 'Items per page:'
157
+ */
158
+ itemsPerPageLabel?: string
159
+ /**
160
+ * Items per page selector options. [docs]
161
+ *
162
+ * @default [5, 10, 20, 50]
163
+ */
164
+ itemsPerPageOptions?: number[]
165
+ /**
166
+ * Adds select element over table, which is used for control items per page in pagination. If you want to customize this element, pass object with optional values:
167
+ * - label (String) - replaces default label text
168
+ * - values (Array) - custom array of pagination values
169
+ * - external (Boolean) - disables automatic 'itemsPerPage' change (use to change pages externaly by 'pagination-change' event). [docs]
170
+ */
171
+ itemsPerPageSelect?: boolean | ItemsPerPageSelect
172
+ /**
173
+ * When set, table will have loading style: loading spinner and reduced opacity. When 'small' prop is enabled spinner will be also smaller. [docs]
174
+ */
175
+ loading?: boolean
176
+ /**
177
+ * ReactNode or string for passing custom noItemsLabel texts. [docs]
178
+ * @default 'No items found'
179
+ */
180
+ noItemsLabel?: string | ReactNode
181
+ /**
182
+ * Page change callback. [docs]
183
+ */
184
+ onActivePageChange?: (value: number) => void
185
+ /**
186
+ * Column filter change callback. [docs]
187
+ */
188
+ onColumnFilterChange?: (value: ColumnFilterValue) => void //!
189
+ /**
190
+ * Filtered items change callback. [docs]
191
+ */
192
+ onFilteredItemsChange?: (items: Item[]) => void
193
+ /**
194
+ * Pagination change callback. [docs]
195
+ */
196
+ onItemsPerPageChange?: (value: number) => void
197
+ /**
198
+ * Row click callback. [docs]
199
+ */
200
+ onRowClick?: (item: Item, index: number, columnName: string, event: MouseEvent | boolean) => void
201
+ /**
202
+ * Sorter value change callback. [docs]
203
+ */
204
+ onSorterChange?: (value: SorterValue) => void
205
+ /**
206
+ * Table filter change callback. [docs]
207
+ */
208
+ onTableFilterChange?: (value?: string) => void
209
+ /**
210
+ * Enables default pagination. Set to true for default setup or pass an object with additional CPagination props. Default pagination will always have the computed number of pages that cannot be changed. The number of pages is generated based on the number of passed items and 'itemsPerPage' prop. If this restriction is an obstacle, you can make external CPagination instead. [docs]
211
+ */
212
+ pagination?: boolean
213
+ /**
214
+ * Properties to `CSmartPagination` component. [docs]
215
+ *
216
+ * @link https://coreui.io/react/docs/4.0/components/smart-pagination#csmartpagination
217
+ */
218
+ paginationProps?: CSmartPaginationProps
219
+ /**
220
+ * Scoped columns. [docs]
221
+ *
222
+ * @type scopedColumns
223
+ */
224
+ scopedColumns?: ScopedColumns
225
+ /**
226
+ * State of the sorter. Name key is column name, direction can be 'asc' or 'desc'. Set .sync modifier to track changes. [docs]
227
+ *
228
+ * @type SorterValue
229
+ */
230
+ sorterValue?: SorterValue
231
+ /**
232
+ * Sorter icon when items are unsorted. [docs]
233
+ *
234
+ * @default '<CIcon width="18" content={cilArrowTop} />
235
+ */
236
+ sortingIcon?: ReactNode
237
+ /**
238
+ * Sorter icon when items are sorted ascending. [docs]
239
+ *
240
+ * @default '<CIcon width="18" content={cilArrowTop} />
241
+ */
242
+ sortingIconAscending?: ReactNode
243
+ /**
244
+ * Sorter icon when items are sorted descending. [docs]
245
+ *
246
+ * @default '<CIcon width="18" content={cilArrowBottom} />'
247
+ */
248
+ sortingIconDescending?: ReactNode
249
+ /**
250
+ * Properties to `CTableBody` component. [docs]
251
+ *
252
+ * @link https://coreui.io/react/docs/4.0/components/table/#ctablebody
253
+ */
254
+ tableBodyProps?: CTableBodyProps
255
+ /**
256
+ * Properties to `CTableFoot` component. [docs]
257
+ *
258
+ * @link https://coreui.io/react/docs/4.0/components/table/#ctablefoot
259
+ */
260
+ tableFootProps?: CTableFootProps
261
+ /**
262
+ * When set, displays table filter above table, allowing filtering by specific column.
263
+ *
264
+ * Column filter can be customized, by passing prop as object with additional options as keys. Available options:
265
+ * - placeholder (String) - Sets custom table filter placeholder.
266
+ * - label (String) - Sets custom table filter label.
267
+ * - external (Boolean) - Disables automatic filtering inside component.
268
+ * - lazy (Boolean) - Set to true to trigger filter updates only on change event. [docs]
269
+ */
270
+ tableFilter?: boolean | TableFilter
271
+ /**
272
+ * The element represents a caption for a component. [docs]
273
+ *
274
+ * @default 'Filter:'
275
+ */
276
+ tableFilterLabel?: string
277
+ /**
278
+ * Specifies a short hint that is visible in the search input. [docs]
279
+ *
280
+ * @default 'type string...'
281
+ */
282
+ tableFilterPlaceholder?: string
283
+ /**
284
+ * Value of table filter. Set .sync modifier to track changes. [docs]
285
+ *
286
+ */
287
+ tableFilterValue?: string
288
+ /**
289
+ * Properties to `CTableHead` component. [docs]
290
+ *
291
+ * @link https://coreui.io/react/docs/4.0/components/table/#ctablehead
292
+ */
293
+ tableHeadProps?: CTableHeadProps
294
+ /**
295
+ * Properties to `CTable` component. [docs]
296
+ *
297
+ * @link https://coreui.io/react/docs/4.0/components/table/#ctable
298
+ */
299
+ tableProps?: CTableProps
300
+ }
@@ -0,0 +1,42 @@
1
+ import React, { forwardRef, HTMLAttributes } from 'react'
2
+ import PropTypes from 'prop-types'
3
+
4
+ import { CFormLabel } from '../form/CFormLabel'
5
+ import { CFormSelect } from '../form/CFormSelect'
6
+
7
+ interface CSmartTableItemsPerPageSelectorProps extends HTMLAttributes<HTMLSelectElement> {
8
+ itemsPerPage?: number
9
+ itemsPerPageLabel?: string
10
+ itemsPerPageOptions?: number[]
11
+ }
12
+
13
+ export const CSmartTableItemsPerPageSelector = forwardRef<
14
+ HTMLSelectElement,
15
+ CSmartTableItemsPerPageSelectorProps
16
+ >(({ itemsPerPage, itemsPerPageLabel, itemsPerPageOptions, ...rest }, ref) => {
17
+ return (
18
+ <div className="row">
19
+ <CFormLabel className="col-auto col-form-label">{itemsPerPageLabel}</CFormLabel>
20
+ <div className="col-auto">
21
+ <CFormSelect defaultValue={itemsPerPage} {...rest} ref={ref}>
22
+ {itemsPerPageOptions &&
23
+ itemsPerPageOptions.map((number, index) => {
24
+ return (
25
+ <option value={number} key={index}>
26
+ {number}
27
+ </option>
28
+ )
29
+ })}
30
+ </CFormSelect>
31
+ </div>
32
+ </div>
33
+ )
34
+ })
35
+
36
+ CSmartTableItemsPerPageSelector.propTypes = {
37
+ itemsPerPage: PropTypes.number,
38
+ itemsPerPageLabel: PropTypes.string,
39
+ itemsPerPageOptions: PropTypes.array,
40
+ }
41
+
42
+ CSmartTableItemsPerPageSelector.displayName = 'CSmartTableItemsPerPageSelector'
@@ -0,0 +1,79 @@
1
+ import React, { ElementType, forwardRef, HTMLAttributes } from 'react'
2
+ import PropTypes from 'prop-types'
3
+ import classNames from 'classnames'
4
+
5
+ import { Colors, colorPropType } from '../Types'
6
+
7
+ export interface CSpinnerProps extends HTMLAttributes<HTMLDivElement | HTMLSpanElement> {
8
+ /**
9
+ * A string of all className you want applied to the component. [docs]
10
+ */
11
+ className?: string
12
+ /**
13
+ * Sets the color context of the component to one of CoreUI’s themed colors. [docs]
14
+ *
15
+ * @type {'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'dark' | 'light' | string }
16
+ */
17
+ color?: Colors
18
+ /**
19
+ * Component used for the root node. Either a string to use a HTML element or a component. [docs]
20
+ *
21
+ * @default 'div'
22
+ */
23
+ component?: string | ElementType
24
+ /**
25
+ * Size the component small. [docs]
26
+ */
27
+ size?: 'sm'
28
+ /**
29
+ * Set the button variant to an outlined button or a ghost button. [docs]
30
+ *
31
+ * @default 'border'
32
+ */
33
+ variant?: 'border' | 'grow'
34
+ /**
35
+ * Set visually hidden label for accessibility purposes. [docs]
36
+ *
37
+ * @default 'Loading...'
38
+ */
39
+ visuallyHiddenLabel?: string
40
+ }
41
+
42
+ export const CSpinner = forwardRef<HTMLDivElement | HTMLSpanElement, CSpinnerProps>(
43
+ (
44
+ {
45
+ className,
46
+ color,
47
+ component: Component = 'div',
48
+ size,
49
+ variant = 'border',
50
+ visuallyHiddenLabel = 'Loading...',
51
+ ...rest
52
+ },
53
+ ref,
54
+ ) => {
55
+ const _className = classNames(
56
+ `spinner-${variant}`,
57
+ `text-${color}`,
58
+ size && `spinner-${variant}-${size}`,
59
+ className,
60
+ )
61
+
62
+ return (
63
+ <Component className={_className} role="status" {...rest} ref={ref}>
64
+ <span className="visually-hidden">{visuallyHiddenLabel}</span>
65
+ </Component>
66
+ )
67
+ },
68
+ )
69
+
70
+ CSpinner.propTypes = {
71
+ className: PropTypes.string,
72
+ color: colorPropType,
73
+ component: PropTypes.string,
74
+ size: PropTypes.oneOf(['sm']),
75
+ variant: PropTypes.oneOf(['border', 'grow']),
76
+ visuallyHiddenLabel: PropTypes.string,
77
+ }
78
+
79
+ CSpinner.displayName = 'CSpinner'
@@ -0,0 +1,22 @@
1
+ import * as React from 'react'
2
+ import { render } from '@testing-library/react'
3
+ import '@testing-library/jest-dom/extend-expect'
4
+ import { CSpinner } from '../../../index'
5
+
6
+ test('loads and displays CSpinner component', async () => {
7
+ const { container } = render(<CSpinner>Test</CSpinner>)
8
+ expect(container).toMatchSnapshot()
9
+ })
10
+
11
+ test('CSpinner customize', async () => {
12
+ const { container } = render(
13
+ <CSpinner className="bazinga" color="warning" component="h3" size="sm" variant="grow">
14
+ Test
15
+ </CSpinner>,
16
+ )
17
+ expect(container).toMatchSnapshot()
18
+ expect(container.firstChild).toHaveClass('bazinga')
19
+ expect(container.firstChild).toHaveClass('spinner-grow')
20
+ expect(container.firstChild).toHaveClass('text-warning')
21
+ expect(container.firstChild).toHaveClass('spinner-grow-sm')
22
+ })
@@ -0,0 +1,31 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`CSpinner customize 1`] = `
4
+ <div>
5
+ <h3
6
+ class="spinner-grow text-warning spinner-grow-sm bazinga"
7
+ role="status"
8
+ >
9
+ <span
10
+ class="visually-hidden"
11
+ >
12
+ Loading...
13
+ </span>
14
+ </h3>
15
+ </div>
16
+ `;
17
+
18
+ exports[`loads and displays CSpinner component 1`] = `
19
+ <div>
20
+ <div
21
+ class="spinner-border text-undefined"
22
+ role="status"
23
+ >
24
+ <span
25
+ class="visually-hidden"
26
+ >
27
+ Loading...
28
+ </span>
29
+ </div>
30
+ </div>
31
+ `;