@cleen/ui 0.1.0

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 (416) hide show
  1. package/package.json +54 -0
  2. package/src/charts/chart/Chart.tsx +82 -0
  3. package/src/charts/chart/constant.ts +50 -0
  4. package/src/charts/chart/index.ts +2 -0
  5. package/src/charts/chart/types/apexcharts.ts +9 -0
  6. package/src/charts/chart/variants/BellCurve/BellCurve.tsx +215 -0
  7. package/src/charts/chart/variants/BellCurve/constant.ts +112 -0
  8. package/src/charts/chart/variants/BellCurve/helper.ts +116 -0
  9. package/src/charts/chart/variants/BellCurve/index.ts +2 -0
  10. package/src/charts/chart/variants/BellCurve/types/bellCurve.ts +47 -0
  11. package/src/charts/chart/variants/BellCurve/types/props.ts +21 -0
  12. package/src/charts/chart/variants/RadarChart/RadarChart.tsx +22 -0
  13. package/src/charts/chart/variants/RadarChart/constant.ts +28 -0
  14. package/src/charts/chart/variants/RadarChart/index.ts +1 -0
  15. package/src/charts/chart/variants/ScatterChart/ScatterChart.tsx +23 -0
  16. package/src/charts/chart/variants/ScatterChart/constant.ts +54 -0
  17. package/src/charts/chart/variants/ScatterChart/index.ts +1 -0
  18. package/src/charts/chart/variants/index.ts +3 -0
  19. package/src/charts/index.ts +2 -0
  20. package/src/charts/simpleChart/SimpleChart.tsx +54 -0
  21. package/src/charts/simpleChart/index.ts +1 -0
  22. package/src/components/advancedProgressBar/AdvancedProgressBar.tsx +156 -0
  23. package/src/components/advancedProgressBar/blocks/Bar.tsx +118 -0
  24. package/src/components/advancedProgressBar/blocks/BlockLabel.tsx +49 -0
  25. package/src/components/advancedProgressBar/blocks/Clamp.tsx +85 -0
  26. package/src/components/advancedProgressBar/constants.ts +6 -0
  27. package/src/components/advancedProgressBar/index.ts +2 -0
  28. package/src/components/advancedProgressBar/types/props.ts +69 -0
  29. package/src/components/advancedProgressBar/utils.ts +17 -0
  30. package/src/components/audioPlayback/AudioPlayback.tsx +141 -0
  31. package/src/components/audioPlayback/index.ts +2 -0
  32. package/src/components/audioRecorder/AudioRecorder.tsx +391 -0
  33. package/src/components/audioRecorder/constant/default.ts +19 -0
  34. package/src/components/audioRecorder/constant/labels.ts +9 -0
  35. package/src/components/audioRecorder/index.ts +2 -0
  36. package/src/components/audioRecorder/types/props.ts +56 -0
  37. package/src/components/avatar/Avatar.tsx +132 -0
  38. package/src/components/avatar/index.ts +1 -0
  39. package/src/components/avatar/variants.ts +9 -0
  40. package/src/components/avatarRow/AvatarRow.tsx +127 -0
  41. package/src/components/avatarRow/index.ts +1 -0
  42. package/src/components/breadcrumb/Breadcrumb.tsx +158 -0
  43. package/src/components/breadcrumb/index.ts +1 -0
  44. package/src/components/button/Button.tsx +114 -0
  45. package/src/components/button/index.ts +2 -0
  46. package/src/components/button/variants.ts +41 -0
  47. package/src/components/card/Card.tsx +197 -0
  48. package/src/components/card/index.ts +3 -0
  49. package/src/components/card/variants/CardIcon/CardIcon.tsx +158 -0
  50. package/src/components/card/variants/CardMedia/CardMedia.tsx +127 -0
  51. package/src/components/checkbox/Checkbox.tsx +246 -0
  52. package/src/components/checkbox/index.ts +1 -0
  53. package/src/components/checkbox/variants.ts +13 -0
  54. package/src/components/checkboxGroup/CheckboxGroup.tsx +163 -0
  55. package/src/components/checkboxGroup/index.ts +1 -0
  56. package/src/components/cleenIcon/CleenIcon.tsx +674 -0
  57. package/src/components/cleenIcon/icons/IconAlertCircle.tsx +22 -0
  58. package/src/components/cleenIcon/icons/IconAlertFeatured.tsx +30 -0
  59. package/src/components/cleenIcon/icons/IconAlertOctagon.tsx +21 -0
  60. package/src/components/cleenIcon/icons/IconAlertTriangle.tsx +25 -0
  61. package/src/components/cleenIcon/icons/IconAlignRight.tsx +25 -0
  62. package/src/components/cleenIcon/icons/IconArrowDown.tsx +25 -0
  63. package/src/components/cleenIcon/icons/IconArrowLeft.tsx +25 -0
  64. package/src/components/cleenIcon/icons/IconArrowLeft2.tsx +22 -0
  65. package/src/components/cleenIcon/icons/IconArrowRight.tsx +25 -0
  66. package/src/components/cleenIcon/icons/IconArrowToTop.tsx +20 -0
  67. package/src/components/cleenIcon/icons/IconArrowUp.tsx +22 -0
  68. package/src/components/cleenIcon/icons/IconArrowUpRight.tsx +22 -0
  69. package/src/components/cleenIcon/icons/IconArrowUpRightNarrow.tsx +22 -0
  70. package/src/components/cleenIcon/icons/IconArrowUpRightSquare.tsx +22 -0
  71. package/src/components/cleenIcon/icons/IconAttachment.tsx +22 -0
  72. package/src/components/cleenIcon/icons/IconBarChartSquare.tsx +22 -0
  73. package/src/components/cleenIcon/icons/IconBold.tsx +16 -0
  74. package/src/components/cleenIcon/icons/IconBookmarkCheck.tsx +22 -0
  75. package/src/components/cleenIcon/icons/IconBookmarkCheckFill.tsx +37 -0
  76. package/src/components/cleenIcon/icons/IconBookmarkPlus.tsx +22 -0
  77. package/src/components/cleenIcon/icons/IconBookmarkX.tsx +22 -0
  78. package/src/components/cleenIcon/icons/IconBoxLines.tsx +16 -0
  79. package/src/components/cleenIcon/icons/IconBoxText.tsx +24 -0
  80. package/src/components/cleenIcon/icons/IconBracketsCheck.tsx +25 -0
  81. package/src/components/cleenIcon/icons/IconBracketsEllipses.tsx +22 -0
  82. package/src/components/cleenIcon/icons/IconBuilding.tsx +22 -0
  83. package/src/components/cleenIcon/icons/IconCalendar.tsx +25 -0
  84. package/src/components/cleenIcon/icons/IconCertificateHeart.tsx +25 -0
  85. package/src/components/cleenIcon/icons/IconCheck.tsx +22 -0
  86. package/src/components/cleenIcon/icons/IconCheckCircle.tsx +22 -0
  87. package/src/components/cleenIcon/icons/IconCheckCircleBroken.tsx +25 -0
  88. package/src/components/cleenIcon/icons/IconCheckFill.tsx +45 -0
  89. package/src/components/cleenIcon/icons/IconCheckVerified.tsx +22 -0
  90. package/src/components/cleenIcon/icons/IconChevronDown.tsx +22 -0
  91. package/src/components/cleenIcon/icons/IconChevronLeft.tsx +25 -0
  92. package/src/components/cleenIcon/icons/IconChevronLeftDouble.tsx +22 -0
  93. package/src/components/cleenIcon/icons/IconChevronRight.tsx +25 -0
  94. package/src/components/cleenIcon/icons/IconChevronRightDouble.tsx +22 -0
  95. package/src/components/cleenIcon/icons/IconChevronSelectorVertical.tsx +22 -0
  96. package/src/components/cleenIcon/icons/IconChevronUp.tsx +25 -0
  97. package/src/components/cleenIcon/icons/IconCircleSwap.tsx +22 -0
  98. package/src/components/cleenIcon/icons/IconClockFastForward.tsx +25 -0
  99. package/src/components/cleenIcon/icons/IconClockRewind.tsx +25 -0
  100. package/src/components/cleenIcon/icons/IconClockRewind2.tsx +21 -0
  101. package/src/components/cleenIcon/icons/IconCodeBrowser.tsx +25 -0
  102. package/src/components/cleenIcon/icons/IconCodeCircle.tsx +22 -0
  103. package/src/components/cleenIcon/icons/IconColors.tsx +25 -0
  104. package/src/components/cleenIcon/icons/IconColumnEdit.tsx +19 -0
  105. package/src/components/cleenIcon/icons/IconCopy.tsx +25 -0
  106. package/src/components/cleenIcon/icons/IconCopy2.tsx +22 -0
  107. package/src/components/cleenIcon/icons/IconCopy3.tsx +25 -0
  108. package/src/components/cleenIcon/icons/IconCopy4.tsx +25 -0
  109. package/src/components/cleenIcon/icons/IconCopy5.tsx +25 -0
  110. package/src/components/cleenIcon/icons/IconCopyCheck.tsx +22 -0
  111. package/src/components/cleenIcon/icons/IconCube.tsx +25 -0
  112. package/src/components/cleenIcon/icons/IconCubeOutline.tsx +22 -0
  113. package/src/components/cleenIcon/icons/IconCursorBox.tsx +25 -0
  114. package/src/components/cleenIcon/icons/IconDataflow.tsx +22 -0
  115. package/src/components/cleenIcon/icons/IconDataflow2.tsx +22 -0
  116. package/src/components/cleenIcon/icons/IconDataflow3.tsx +29 -0
  117. package/src/components/cleenIcon/icons/IconDelete.tsx +25 -0
  118. package/src/components/cleenIcon/icons/IconDollarCircle.tsx +25 -0
  119. package/src/components/cleenIcon/icons/IconDotsGrid.tsx +74 -0
  120. package/src/components/cleenIcon/icons/IconDotsHorizontal.tsx +34 -0
  121. package/src/components/cleenIcon/icons/IconDotsVertical.tsx +38 -0
  122. package/src/components/cleenIcon/icons/IconEdit.tsx +25 -0
  123. package/src/components/cleenIcon/icons/IconEditable.tsx +25 -0
  124. package/src/components/cleenIcon/icons/IconExpand.tsx +22 -0
  125. package/src/components/cleenIcon/icons/IconEye.tsx +28 -0
  126. package/src/components/cleenIcon/icons/IconEyeHidden.tsx +25 -0
  127. package/src/components/cleenIcon/icons/IconEyeHidden2.tsx +24 -0
  128. package/src/components/cleenIcon/icons/IconFaceSmile.tsx +24 -0
  129. package/src/components/cleenIcon/icons/IconFilter.tsx +22 -0
  130. package/src/components/cleenIcon/icons/IconFilter2.tsx +22 -0
  131. package/src/components/cleenIcon/icons/IconFlag.tsx +22 -0
  132. package/src/components/cleenIcon/icons/IconFlag2.tsx +25 -0
  133. package/src/components/cleenIcon/icons/IconFlag3.tsx +16 -0
  134. package/src/components/cleenIcon/icons/IconHandShield.tsx +22 -0
  135. package/src/components/cleenIcon/icons/IconHash.tsx +22 -0
  136. package/src/components/cleenIcon/icons/IconHeadsetMic.tsx +21 -0
  137. package/src/components/cleenIcon/icons/IconHeart.tsx +24 -0
  138. package/src/components/cleenIcon/icons/IconHouseLine.tsx +22 -0
  139. package/src/components/cleenIcon/icons/IconImage.tsx +22 -0
  140. package/src/components/cleenIcon/icons/IconImage2.tsx +22 -0
  141. package/src/components/cleenIcon/icons/IconImage3.tsx +17 -0
  142. package/src/components/cleenIcon/icons/IconImage4.tsx +25 -0
  143. package/src/components/cleenIcon/icons/IconImageCheck.tsx +22 -0
  144. package/src/components/cleenIcon/icons/IconInfoCircle.tsx +22 -0
  145. package/src/components/cleenIcon/icons/IconInfoHexagon.tsx +25 -0
  146. package/src/components/cleenIcon/icons/IconItalic.tsx +16 -0
  147. package/src/components/cleenIcon/icons/IconLayersMultiple.tsx +22 -0
  148. package/src/components/cleenIcon/icons/IconLayersSingle.tsx +22 -0
  149. package/src/components/cleenIcon/icons/IconLayout.tsx +22 -0
  150. package/src/components/cleenIcon/icons/IconLayout2.tsx +22 -0
  151. package/src/components/cleenIcon/icons/IconLayoutColumns.tsx +20 -0
  152. package/src/components/cleenIcon/icons/IconLayoutCustom.tsx +16 -0
  153. package/src/components/cleenIcon/icons/IconLayoutSequential.tsx +16 -0
  154. package/src/components/cleenIcon/icons/IconLayoutStuffed.tsx +20 -0
  155. package/src/components/cleenIcon/icons/IconLayoutTile.tsx +16 -0
  156. package/src/components/cleenIcon/icons/IconLifeBuoy.tsx +29 -0
  157. package/src/components/cleenIcon/icons/IconLightbulb.tsx +22 -0
  158. package/src/components/cleenIcon/icons/IconLightning.tsx +22 -0
  159. package/src/components/cleenIcon/icons/IconLightning2.tsx +25 -0
  160. package/src/components/cleenIcon/icons/IconLightningFast.tsx +22 -0
  161. package/src/components/cleenIcon/icons/IconLineChartBar.tsx +22 -0
  162. package/src/components/cleenIcon/icons/IconLineChartBreakoutSquare.tsx +22 -0
  163. package/src/components/cleenIcon/icons/IconLineChartUp.tsx +25 -0
  164. package/src/components/cleenIcon/icons/IconLineChartUp2.tsx +34 -0
  165. package/src/components/cleenIcon/icons/IconLines.tsx +22 -0
  166. package/src/components/cleenIcon/icons/IconLinesCheck.tsx +16 -0
  167. package/src/components/cleenIcon/icons/IconLinesPlay.tsx +23 -0
  168. package/src/components/cleenIcon/icons/IconLink.tsx +25 -0
  169. package/src/components/cleenIcon/icons/IconLink2.tsx +24 -0
  170. package/src/components/cleenIcon/icons/IconLink3.tsx +21 -0
  171. package/src/components/cleenIcon/icons/IconLink4.tsx +17 -0
  172. package/src/components/cleenIcon/icons/IconLink5.tsx +22 -0
  173. package/src/components/cleenIcon/icons/IconListBullet.tsx +18 -0
  174. package/src/components/cleenIcon/icons/IconListOrder.tsx +20 -0
  175. package/src/components/cleenIcon/icons/IconListOrder2.tsx +16 -0
  176. package/src/components/cleenIcon/icons/IconLock.tsx +22 -0
  177. package/src/components/cleenIcon/icons/IconLock2.tsx +22 -0
  178. package/src/components/cleenIcon/icons/IconLogIn.tsx +25 -0
  179. package/src/components/cleenIcon/icons/IconLogOut.tsx +25 -0
  180. package/src/components/cleenIcon/icons/IconLogOut2.tsx +22 -0
  181. package/src/components/cleenIcon/icons/IconMagicWand.tsx +25 -0
  182. package/src/components/cleenIcon/icons/IconMagicWand2.tsx +22 -0
  183. package/src/components/cleenIcon/icons/IconMail.tsx +25 -0
  184. package/src/components/cleenIcon/icons/IconMessageSquare.tsx +25 -0
  185. package/src/components/cleenIcon/icons/IconMessageSquare2.tsx +22 -0
  186. package/src/components/cleenIcon/icons/IconMessageXSquare.tsx +25 -0
  187. package/src/components/cleenIcon/icons/IconMinusCircle.tsx +22 -0
  188. package/src/components/cleenIcon/icons/IconMobile.tsx +25 -0
  189. package/src/components/cleenIcon/icons/IconMonitor.tsx +22 -0
  190. package/src/components/cleenIcon/icons/IconMonitor2.tsx +25 -0
  191. package/src/components/cleenIcon/icons/IconMonitor3.tsx +25 -0
  192. package/src/components/cleenIcon/icons/IconMoonCircle.tsx +28 -0
  193. package/src/components/cleenIcon/icons/IconNavigationPointer.tsx +22 -0
  194. package/src/components/cleenIcon/icons/IconNotificationBox.tsx +22 -0
  195. package/src/components/cleenIcon/icons/IconPCSetup.tsx +22 -0
  196. package/src/components/cleenIcon/icons/IconPalette.tsx +40 -0
  197. package/src/components/cleenIcon/icons/IconPasscodeLock.tsx +25 -0
  198. package/src/components/cleenIcon/icons/IconPencil.tsx +25 -0
  199. package/src/components/cleenIcon/icons/IconPercentageCircle.tsx +29 -0
  200. package/src/components/cleenIcon/icons/IconPerspective.tsx +22 -0
  201. package/src/components/cleenIcon/icons/IconPhoneCall.tsx +25 -0
  202. package/src/components/cleenIcon/icons/IconPin.tsx +22 -0
  203. package/src/components/cleenIcon/icons/IconPlayCircle.tsx +28 -0
  204. package/src/components/cleenIcon/icons/IconPlus.tsx +22 -0
  205. package/src/components/cleenIcon/icons/IconPlusCircle.tsx +25 -0
  206. package/src/components/cleenIcon/icons/IconPulse.tsx +25 -0
  207. package/src/components/cleenIcon/icons/IconQuestionCircle.tsx +24 -0
  208. package/src/components/cleenIcon/icons/IconRadioButton.tsx +27 -0
  209. package/src/components/cleenIcon/icons/IconRadioButtonActive.tsx +39 -0
  210. package/src/components/cleenIcon/icons/IconReceiptCheck.tsx +25 -0
  211. package/src/components/cleenIcon/icons/IconRedo.tsx +16 -0
  212. package/src/components/cleenIcon/icons/IconRefresh.tsx +22 -0
  213. package/src/components/cleenIcon/icons/IconRefresh2.tsx +22 -0
  214. package/src/components/cleenIcon/icons/IconRefresh3.tsx +20 -0
  215. package/src/components/cleenIcon/icons/IconRepeat.tsx +22 -0
  216. package/src/components/cleenIcon/icons/IconRepeat2.tsx +22 -0
  217. package/src/components/cleenIcon/icons/IconRetweet.tsx +33 -0
  218. package/src/components/cleenIcon/icons/IconRoundChart.tsx +25 -0
  219. package/src/components/cleenIcon/icons/IconRoundChart2.tsx +29 -0
  220. package/src/components/cleenIcon/icons/IconRoute.tsx +22 -0
  221. package/src/components/cleenIcon/icons/IconSave.tsx +25 -0
  222. package/src/components/cleenIcon/icons/IconSave2.tsx +22 -0
  223. package/src/components/cleenIcon/icons/IconScanDots.tsx +22 -0
  224. package/src/components/cleenIcon/icons/IconSearch.tsx +22 -0
  225. package/src/components/cleenIcon/icons/IconSend.tsx +25 -0
  226. package/src/components/cleenIcon/icons/IconSettings.tsx +32 -0
  227. package/src/components/cleenIcon/icons/IconSettings2.tsx +25 -0
  228. package/src/components/cleenIcon/icons/IconSettings3.tsx +22 -0
  229. package/src/components/cleenIcon/icons/IconShieldLightning.tsx +22 -0
  230. package/src/components/cleenIcon/icons/IconShieldPlus.tsx +22 -0
  231. package/src/components/cleenIcon/icons/IconShieldRemove.tsx +16 -0
  232. package/src/components/cleenIcon/icons/IconShuffle.tsx +25 -0
  233. package/src/components/cleenIcon/icons/IconSlashCircle.tsx +22 -0
  234. package/src/components/cleenIcon/icons/IconSlashOctagon.tsx +22 -0
  235. package/src/components/cleenIcon/icons/IconSocialGlobe.tsx +23 -0
  236. package/src/components/cleenIcon/icons/IconSocialLinkedin.tsx +21 -0
  237. package/src/components/cleenIcon/icons/IconSocialX.tsx +28 -0
  238. package/src/components/cleenIcon/icons/IconSpeedometer.tsx +22 -0
  239. package/src/components/cleenIcon/icons/IconStairsRound.tsx +21 -0
  240. package/src/components/cleenIcon/icons/IconStar.tsx +22 -0
  241. package/src/components/cleenIcon/icons/IconStarHalf.tsx +39 -0
  242. package/src/components/cleenIcon/icons/IconStars.tsx +28 -0
  243. package/src/components/cleenIcon/icons/IconStars2.tsx +29 -0
  244. package/src/components/cleenIcon/icons/IconStrikethrough.tsx +16 -0
  245. package/src/components/cleenIcon/icons/IconSuccessFeatured.tsx +30 -0
  246. package/src/components/cleenIcon/icons/IconSun.tsx +22 -0
  247. package/src/components/cleenIcon/icons/IconSwitchHorizontal.tsx +22 -0
  248. package/src/components/cleenIcon/icons/IconTag.tsx +22 -0
  249. package/src/components/cleenIcon/icons/IconTarget.tsx +21 -0
  250. package/src/components/cleenIcon/icons/IconTarget2.tsx +34 -0
  251. package/src/components/cleenIcon/icons/IconTextFormat.tsx +17 -0
  252. package/src/components/cleenIcon/icons/IconTextFormat2.tsx +22 -0
  253. package/src/components/cleenIcon/icons/IconTextHighlight.tsx +16 -0
  254. package/src/components/cleenIcon/icons/IconTranslate.tsx +25 -0
  255. package/src/components/cleenIcon/icons/IconTrash.tsx +25 -0
  256. package/src/components/cleenIcon/icons/IconTrending.tsx +22 -0
  257. package/src/components/cleenIcon/icons/IconUnderline.tsx +16 -0
  258. package/src/components/cleenIcon/icons/IconUndo.tsx +22 -0
  259. package/src/components/cleenIcon/icons/IconUndo2.tsx +16 -0
  260. package/src/components/cleenIcon/icons/IconUploadCloud.tsx +22 -0
  261. package/src/components/cleenIcon/icons/IconUser.tsx +22 -0
  262. package/src/components/cleenIcon/icons/IconUserEdit.tsx +25 -0
  263. package/src/components/cleenIcon/icons/IconUserRight.tsx +22 -0
  264. package/src/components/cleenIcon/icons/IconUserSquare.tsx +25 -0
  265. package/src/components/cleenIcon/icons/IconUsers.tsx +25 -0
  266. package/src/components/cleenIcon/icons/IconUsersUp.tsx +25 -0
  267. package/src/components/cleenIcon/icons/IconVolume.tsx +25 -0
  268. package/src/components/cleenIcon/icons/IconWrench.tsx +22 -0
  269. package/src/components/cleenIcon/icons/IconX.tsx +25 -0
  270. package/src/components/cleenIcon/icons/IconXCircle.tsx +22 -0
  271. package/src/components/cleenIcon/icons/IconXCircle2.tsx +42 -0
  272. package/src/components/cleenIcon/icons/IconXClose.tsx +25 -0
  273. package/src/components/cleenIcon/icons/IconXSquare.tsx +22 -0
  274. package/src/components/cleenIcon/icons/index.ts +215 -0
  275. package/src/components/cleenIcon/index.ts +4 -0
  276. package/src/components/cleenIcon/types/icon.ts +226 -0
  277. package/src/components/collapsible/Collapsible.tsx +148 -0
  278. package/src/components/collapsible/index.ts +5 -0
  279. package/src/components/creditCardInput/CreditCardInput.tsx +236 -0
  280. package/src/components/creditCardInput/index.ts +2 -0
  281. package/src/components/creditCardInput/types/card.ts +13 -0
  282. package/src/components/creditCardInput/types/props.ts +44 -0
  283. package/src/components/creditCardInput/util/format.ts +102 -0
  284. package/src/components/datePicker/DatePicker.tsx +235 -0
  285. package/src/components/datePicker/index.ts +2 -0
  286. package/src/components/datePicker/types/props.ts +47 -0
  287. package/src/components/datePicker/utils/date.ts +40 -0
  288. package/src/components/divider/Divider.tsx +43 -0
  289. package/src/components/divider/index.ts +1 -0
  290. package/src/components/drawer/Drawer.tsx +222 -0
  291. package/src/components/drawer/index.ts +1 -0
  292. package/src/components/dropdown/Dropdown.tsx +224 -0
  293. package/src/components/dropdown/index.ts +1 -0
  294. package/src/components/filterDrawer/FilterDrawer.tsx +147 -0
  295. package/src/components/filterDrawer/blocks/FilterDrawerFooter.tsx +119 -0
  296. package/src/components/filterDrawer/blocks/SaveFilterStep.tsx +56 -0
  297. package/src/components/filterDrawer/blocks/SavedFilterRow.tsx +166 -0
  298. package/src/components/filterDrawer/blocks/SavedFiltersDropdown.tsx +142 -0
  299. package/src/components/filterDrawer/constants/filter.ts +4 -0
  300. package/src/components/filterDrawer/constants/labels.ts +52 -0
  301. package/src/components/filterDrawer/constants/tab.ts +7 -0
  302. package/src/components/filterDrawer/context/context.ts +28 -0
  303. package/src/components/filterDrawer/context/provider.tsx +50 -0
  304. package/src/components/filterDrawer/index.ts +7 -0
  305. package/src/components/filterDrawer/types/filters.ts +28 -0
  306. package/src/components/filterDrawer/types/props.ts +107 -0
  307. package/src/components/filterDrawer/types/validation.ts +6 -0
  308. package/src/components/formGroup/FormGroup.tsx +165 -0
  309. package/src/components/formGroup/index.ts +1 -0
  310. package/src/components/groupSelector/GroupSelector.tsx +729 -0
  311. package/src/components/groupSelector/index.ts +6 -0
  312. package/src/components/index.ts +44 -0
  313. package/src/components/infoLabels/InfoLabels.tsx +88 -0
  314. package/src/components/infoLabels/index.ts +1 -0
  315. package/src/components/input/Input.tsx +269 -0
  316. package/src/components/input/index.ts +1 -0
  317. package/src/components/loader/Loader.tsx +91 -0
  318. package/src/components/loader/index.ts +1 -0
  319. package/src/components/lookup/Lookup.tsx +433 -0
  320. package/src/components/lookup/blocks/LookupOptionList.tsx +130 -0
  321. package/src/components/lookup/index.ts +2 -0
  322. package/src/components/lookup/types/lookup.ts +97 -0
  323. package/src/components/menu/Menu.tsx +103 -0
  324. package/src/components/menu/blocks/MenuContent.tsx +105 -0
  325. package/src/components/menu/blocks/MenuItem.tsx +120 -0
  326. package/src/components/menu/index.ts +2 -0
  327. package/src/components/menu/types/menu.ts +30 -0
  328. package/src/components/menu/types/menuItem.ts +48 -0
  329. package/src/components/modal/Modal.tsx +191 -0
  330. package/src/components/modal/index.ts +1 -0
  331. package/src/components/notification/Notification.tsx +79 -0
  332. package/src/components/notification/constant/notification.ts +30 -0
  333. package/src/components/notification/index.ts +2 -0
  334. package/src/components/notification/wrappers/CleenNotificationContainer.tsx +9 -0
  335. package/src/components/pagination/Pagination.tsx +294 -0
  336. package/src/components/pagination/blocks/PaginationGoToPage.tsx +91 -0
  337. package/src/components/pagination/blocks/PaginationPageSize.tsx +145 -0
  338. package/src/components/pagination/constants/labels.ts +15 -0
  339. package/src/components/pagination/index.ts +9 -0
  340. package/src/components/pillBadge/PillBadge.tsx +130 -0
  341. package/src/components/pillBadge/helper.ts +11 -0
  342. package/src/components/pillBadge/index.ts +1 -0
  343. package/src/components/pillBadge/variants.ts +47 -0
  344. package/src/components/popover/Popover.tsx +108 -0
  345. package/src/components/popover/index.ts +2 -0
  346. package/src/components/popover/types/popover.ts +21 -0
  347. package/src/components/progressBar/ProgressBar.tsx +179 -0
  348. package/src/components/progressBar/index.ts +1 -0
  349. package/src/components/progressCircle/ProgressCircle.tsx +142 -0
  350. package/src/components/progressCircle/index.ts +1 -0
  351. package/src/components/radioBoxGroup/RadioBoxGroup.tsx +207 -0
  352. package/src/components/radioBoxGroup/index.ts +1 -0
  353. package/src/components/radioButtonGroup/RadioButtonGroup.tsx +208 -0
  354. package/src/components/radioButtonGroup/blocks/RadioButton.tsx +22 -0
  355. package/src/components/radioButtonGroup/index.ts +4 -0
  356. package/src/components/radioButtonGroup/types/radioButton.ts +10 -0
  357. package/src/components/rangeSlider/RangeSlider.tsx +366 -0
  358. package/src/components/rangeSlider/index.ts +1 -0
  359. package/src/components/select/Select.tsx +349 -0
  360. package/src/components/select/blocks/SelectCustomMenuList.tsx +70 -0
  361. package/src/components/select/blocks/SelectNoOptionsMessage.tsx +22 -0
  362. package/src/components/select/blocks/SelectOption.tsx +19 -0
  363. package/src/components/select/blocks/SelectSingleValue.tsx +28 -0
  364. package/src/components/select/index.ts +1 -0
  365. package/src/components/sidebar/Sidebar.tsx +210 -0
  366. package/src/components/sidebar/SidebarItem.tsx +88 -0
  367. package/src/components/sidebar/drawerContainer/DrawerContainer.tsx +36 -0
  368. package/src/components/sidebar/drawerContainer/DrawerContentTitle.tsx +165 -0
  369. package/src/components/sidebar/drawerContainer/index.ts +2 -0
  370. package/src/components/sidebar/index.ts +13 -0
  371. package/src/components/sidebar/types.ts +157 -0
  372. package/src/components/skeletons/blocks/Skeleton.tsx +72 -0
  373. package/src/components/skeletons/blocks/SkeletonAvatar.tsx +43 -0
  374. package/src/components/skeletons/blocks/SkeletonBadge.tsx +30 -0
  375. package/src/components/skeletons/blocks/SkeletonBanner.tsx +44 -0
  376. package/src/components/skeletons/blocks/SkeletonButton.tsx +31 -0
  377. package/src/components/skeletons/blocks/SkeletonCard.tsx +39 -0
  378. package/src/components/skeletons/blocks/SkeletonCard2.tsx +57 -0
  379. package/src/components/skeletons/blocks/SkeletonCard3.tsx +89 -0
  380. package/src/components/skeletons/blocks/SkeletonCardStack.tsx +22 -0
  381. package/src/components/skeletons/blocks/SkeletonChart.tsx +114 -0
  382. package/src/components/skeletons/blocks/SkeletonContentCard.tsx +75 -0
  383. package/src/components/skeletons/blocks/SkeletonDataGrid.tsx +73 -0
  384. package/src/components/skeletons/blocks/SkeletonForm.tsx +50 -0
  385. package/src/components/skeletons/blocks/SkeletonImage.tsx +45 -0
  386. package/src/components/skeletons/blocks/SkeletonInfoCard.tsx +130 -0
  387. package/src/components/skeletons/blocks/SkeletonInput.tsx +32 -0
  388. package/src/components/skeletons/blocks/SkeletonList.tsx +67 -0
  389. package/src/components/skeletons/blocks/SkeletonParagraph.tsx +52 -0
  390. package/src/components/skeletons/blocks/SkeletonText.tsx +22 -0
  391. package/src/components/skeletons/blocks/SkeletonVideo.tsx +71 -0
  392. package/src/components/skeletons/blocks/SkeletonWidgetCard.tsx +56 -0
  393. package/src/components/skeletons/blocks/SkeletonWrapper.tsx +140 -0
  394. package/src/components/skeletons/index.ts +24 -0
  395. package/src/components/skeletons/styles/skeleton.ts +2 -0
  396. package/src/components/skeletons/types/skeleton.ts +8 -0
  397. package/src/components/slider/Slider.tsx +298 -0
  398. package/src/components/slider/index.ts +1 -0
  399. package/src/components/stepper/Stepper.tsx +185 -0
  400. package/src/components/stepper/index.ts +1 -0
  401. package/src/components/switch/Switch.tsx +152 -0
  402. package/src/components/switch/index.ts +1 -0
  403. package/src/components/tabs/Tabs.tsx +140 -0
  404. package/src/components/tabs/index.ts +2 -0
  405. package/src/components/tabs/types/tab.ts +33 -0
  406. package/src/components/tabs/variants.ts +49 -0
  407. package/src/components/textArea/TextArea.tsx +244 -0
  408. package/src/components/textArea/index.ts +1 -0
  409. package/src/components/tooltip/Tooltip.tsx +200 -0
  410. package/src/components/tooltip/index.ts +1 -0
  411. package/src/icons/IconFromLibrary.tsx +13 -0
  412. package/src/icons/getIconByName.ts +81 -0
  413. package/src/icons/index.ts +16 -0
  414. package/src/index.ts +1 -0
  415. package/tsconfig.json +27 -0
  416. package/tsup.config.ts +23 -0
@@ -0,0 +1,166 @@
1
+ import { IconPin, IconTrash, IconX } from '@/components/cleenIcon';
2
+ import { FilterTab } from '@/components/filterDrawer/constants/tab';
3
+ import { FilterDrawerContext } from '@/components/filterDrawer/context/context';
4
+ import type { FilterDrawerSavedFilter } from '@/components/filterDrawer/types/filters';
5
+ import { Loader } from '@/components/loader';
6
+ import { Menu } from '@/components/menu';
7
+ import { PillBadge } from '@/components/pillBadge';
8
+ import { cn } from '@cleen/ui-core';
9
+ import { useContext, useState } from 'react';
10
+
11
+ interface SavedFilterRowProps {
12
+ filter: FilterDrawerSavedFilter;
13
+ activeTabId: FilterTab;
14
+ }
15
+
16
+ export const SavedFilterRow = ({
17
+ filter,
18
+ activeTabId,
19
+ }: SavedFilterRowProps) => {
20
+ // const [isFilterHovered, setIsFilterHovered] = useState(false);
21
+ const [isDeleting, setIsDeleting] = useState(false);
22
+ const [isPinning, setIsPinning] = useState(false);
23
+
24
+ const {
25
+ labels,
26
+ onFilterDelete: onDelete,
27
+ onFilterPin: onPin,
28
+ onFilterSelect: onSelect,
29
+ onFilterUnpin: onUnpin,
30
+ setIsFiltersDropdownOpen,
31
+ // filterDateFormatter,
32
+ } = useContext(FilterDrawerContext);
33
+
34
+ const handleDelete = async () => {
35
+ try {
36
+ if (!onDelete) {
37
+ return;
38
+ }
39
+
40
+ setIsDeleting(true);
41
+
42
+ await onDelete(filter.filterID);
43
+ } catch (e) {
44
+ console.error('Error while deleting filter:', e);
45
+ } finally {
46
+ setIsDeleting(false);
47
+ }
48
+ };
49
+
50
+ const handleTogglePin = async () => {
51
+ try {
52
+ setIsPinning(true);
53
+
54
+ if (filter?.isPinned) {
55
+ await onUnpin?.(filter.filterID);
56
+ } else {
57
+ await onPin?.(filter.filterID);
58
+ }
59
+ } catch (e) {
60
+ console.error('Error while pinning/unpinnning filter:', e);
61
+ } finally {
62
+ setIsPinning(false);
63
+ }
64
+ };
65
+
66
+ return (
67
+ <div
68
+ className="cleen-group cleen-flex cleen-flex-col cleen-justify-around cleen-gap-2 hover:cleen-bg-primary/5 cleen-p-2 cleen-rounded-md cleen-min-h-10"
69
+ // onMouseEnter={() => setIsFilterHovered(true)}
70
+ // onMouseLeave={() => setIsFilterHovered(false)}
71
+ >
72
+ <div
73
+ className="cleen-flex cleen-items-center cleen-gap-3 cleen-cursor-pointer"
74
+ onClick={() => {
75
+ onSelect?.(filter);
76
+ setIsFiltersDropdownOpen(false);
77
+ }}
78
+ >
79
+ <span className="cleen-flex-1 cleen-text-gray/70 cleen-text-sm cleen-text-left cleen-truncate">
80
+ {filter.title}
81
+ </span>
82
+
83
+ {/* TBD */}
84
+ {/* {!isPinning && (
85
+ <span
86
+ className="cleen-font-normal cleen-text-gray/50 cleen-text-xs hover:cleen-underline cleen-cursor-pointer"
87
+ onClick={e => {
88
+ e.stopPropagation();
89
+ handleTogglePin();
90
+ }}
91
+ >
92
+ {(activeTabId === FilterTab.All && isFilterHovered) ||
93
+ activeTabId === FilterTab.Pinned
94
+ ? filter?.isPinned
95
+ ? labels?.unpin
96
+ : labels?.pin
97
+ : dateFormatter(filter.createdDate)}
98
+ </span>
99
+ )} */}
100
+
101
+ {isPinning ? (
102
+ <Loader classNames={{ loader: 'cleen-size-5' }} />
103
+ ) : (
104
+ <PillBadge
105
+ color="gray"
106
+ onClick={e => {
107
+ e.stopPropagation();
108
+ handleTogglePin();
109
+ }}
110
+ icon={
111
+ <IconPin
112
+ name="pin"
113
+ className={cn(
114
+ 'cleen-size-3.5 group-hover:cleen-text-gray/60 cleen-transition-colors cleen-cursor-pointer',
115
+ filter?.isPinned ? 'cleen-text-gray/60' : 'cleen-text-gray/20'
116
+ )}
117
+ />
118
+ }
119
+ classNames={{
120
+ container: 'cleen-font-bold',
121
+ }}
122
+ label={
123
+ filter?.isPinned
124
+ ? labels?.savedFilters?.filter?.unpin
125
+ : labels?.savedFilters?.filter?.pin
126
+ }
127
+ />
128
+ )}
129
+
130
+ {activeTabId === FilterTab.Mine && (
131
+ <Menu
132
+ items={[
133
+ {
134
+ id: 'duplicate',
135
+ type: 'button',
136
+ label: labels?.savedFilters?.filter?.cancelDelete,
137
+ icon: <IconX className="cleen-size-5" />,
138
+ onClick: () => {},
139
+ },
140
+ {
141
+ id: 'archive',
142
+ type: 'button',
143
+ label: labels?.savedFilters?.filter?.delete,
144
+ icon: <IconTrash />,
145
+ danger: true,
146
+ onClick: () => handleDelete(),
147
+ },
148
+ ]}
149
+ keepOpenOnClick={false}
150
+ onClick={e => e.stopPropagation()}
151
+ className="cleen-flex"
152
+ >
153
+ {isDeleting ? (
154
+ <Loader size="sm" color="rgb(var(--cleen-error))" />
155
+ ) : (
156
+ <IconTrash
157
+ className="cleen-text-black hover:cleen-text-error cleen-transition-colors cleen-cursor-pointer"
158
+ name="delete"
159
+ />
160
+ )}
161
+ </Menu>
162
+ )}
163
+ </div>
164
+ </div>
165
+ );
166
+ };
@@ -0,0 +1,142 @@
1
+ import { IconFilter2 } from '@/components/cleenIcon';
2
+ import { Dropdown } from '@/components/dropdown';
3
+ import { SavedFilterRow } from '@/components/filterDrawer/blocks/SavedFilterRow';
4
+ import { FilterTab } from '@/components/filterDrawer/constants/tab';
5
+ import { FilterDrawerContext } from '@/components/filterDrawer/context/context';
6
+ import type {
7
+ FilterDrawerFilterCategories,
8
+ FilterDrawerSavedFilter,
9
+ } from '@/components/filterDrawer/types/filters';
10
+ import { Loader } from '@/components/loader';
11
+ import { Tabs } from '@/components/tabs';
12
+ import { useContext, useState } from 'react';
13
+
14
+ const transformTabToCategories = (tab: FilterTab) => {
15
+ const categories: FilterDrawerFilterCategories = {
16
+ isFeatured: null,
17
+ isMine: null,
18
+ isPinned: null,
19
+ isShared: null,
20
+ };
21
+
22
+ switch (tab) {
23
+ case FilterTab.Featured:
24
+ categories.isFeatured = true;
25
+ break;
26
+
27
+ case FilterTab.Mine:
28
+ categories.isMine = true;
29
+ break;
30
+
31
+ case FilterTab.Pinned:
32
+ categories.isPinned = true;
33
+ break;
34
+
35
+ case FilterTab.Shared:
36
+ categories.isShared = true;
37
+ break;
38
+
39
+ case FilterTab.All:
40
+ default:
41
+ break;
42
+ }
43
+
44
+ return categories;
45
+ };
46
+
47
+ interface SavedFiltersDropdownProps {
48
+ selectedSavedFilter?: FilterDrawerSavedFilter;
49
+ filters?: FilterDrawerSavedFilter[];
50
+ isFiltersFetching?: boolean;
51
+ onFilterCategoryChange?: (
52
+ categories: FilterDrawerFilterCategories
53
+ ) => Promise<void>;
54
+ }
55
+
56
+ export const SavedFiltersDropdown = ({
57
+ selectedSavedFilter,
58
+ filters,
59
+ isFiltersFetching,
60
+ onFilterCategoryChange,
61
+ }: SavedFiltersDropdownProps) => {
62
+ const [activeTabId, setActiveTabId] = useState<FilterTab>(FilterTab.All);
63
+
64
+ const {
65
+ labels,
66
+ classNames,
67
+ styles,
68
+ isFiltersDropdownOpen,
69
+ setIsFiltersDropdownOpen,
70
+ } = useContext(FilterDrawerContext);
71
+
72
+ return (
73
+ <Dropdown
74
+ isOpen={isFiltersDropdownOpen}
75
+ onOpenChange={setIsFiltersDropdownOpen}
76
+ leftIcon={<IconFilter2 className="cleen-size-5" />}
77
+ label={selectedSavedFilter?.title ?? labels?.savedFilters?.label}
78
+ fullWidthDropdown
79
+ {...classNames?.dropdown}
80
+ {...styles?.dropdown}
81
+ >
82
+ <div className="flex flex-col gap-2 p-2.5 w-full">
83
+ <Tabs
84
+ tabs={[
85
+ {
86
+ id: FilterTab.All,
87
+ label: labels?.savedFilters?.tabs?.all,
88
+ },
89
+ {
90
+ id: FilterTab.Mine,
91
+ label: labels?.savedFilters?.tabs?.mine,
92
+ },
93
+ {
94
+ id: FilterTab.Shared,
95
+ label: labels?.savedFilters?.tabs?.shared,
96
+ },
97
+ {
98
+ id: FilterTab.Featured,
99
+ label: labels?.savedFilters?.tabs?.featured,
100
+ },
101
+ {
102
+ id: FilterTab.Pinned,
103
+ label: labels?.savedFilters?.tabs?.pinned,
104
+ },
105
+ ]}
106
+ variant="padded"
107
+ onTabChange={(_, tab) => {
108
+ setActiveTabId(tab?.id as FilterTab);
109
+ onFilterCategoryChange?.(
110
+ transformTabToCategories(tab?.id as FilterTab)
111
+ );
112
+ }}
113
+ classNames={{
114
+ list: 'cleen-mb-2',
115
+ }}
116
+ />
117
+
118
+ <div className="flex flex-col">
119
+ {isFiltersFetching ? (
120
+ <Loader
121
+ classNames={{
122
+ loader: 'cleen-size-6',
123
+ }}
124
+ />
125
+ ) : (filters?.length || 0) > 0 ? (
126
+ filters?.map(filter => (
127
+ <SavedFilterRow
128
+ key={filter.filterID}
129
+ filter={filter}
130
+ activeTabId={activeTabId}
131
+ />
132
+ ))
133
+ ) : (
134
+ <p className="cleen-font-normal cleen-text-gray/60 cleen-text-base cleen-text-center">
135
+ {labels?.savedFilters?.noFilters}
136
+ </p>
137
+ )}
138
+ </div>
139
+ </div>
140
+ </Dropdown>
141
+ );
142
+ };
@@ -0,0 +1,4 @@
1
+ export const DEFAULT_NEW_FILTER = {
2
+ filterName: '',
3
+ exposed: false,
4
+ };
@@ -0,0 +1,52 @@
1
+ import type { FilterDrawerProps } from '@/components/filterDrawer/types/props';
2
+ import type { ReactNode } from 'react';
3
+
4
+ export const DEFAULT_FILTER_DRAWER_LABELS: FilterDrawerProps['labels'] & {
5
+ title?: ReactNode;
6
+ subtitle?: ReactNode;
7
+ } = {
8
+ title: 'Filters',
9
+ subtitle: 'Apply filters to table data.',
10
+ apply: 'Apply',
11
+ cancel: 'Cancel',
12
+ clear: 'Clear',
13
+ save: 'Save filters',
14
+ saveStep: {
15
+ back: 'Back',
16
+ save: 'Save',
17
+ title: 'Save Filter',
18
+ subtitle: 'Filters are reusable and shareable.',
19
+ filterNameInput: {
20
+ label: 'Filter name',
21
+ placeholder: 'Type a name for this filter',
22
+ },
23
+ exposureSwitch: {
24
+ title: 'Exposure',
25
+ label: 'Share this filter',
26
+ sublabel: 'Allows others to see and use this filter',
27
+ },
28
+ validation: {
29
+ tooShort:
30
+ 'You must provide a valid filter title, above 3 characters long.',
31
+ tooLong:
32
+ 'You must provide a valid filter title, below 50 characters long.',
33
+ },
34
+ },
35
+ savedFilters: {
36
+ label: 'Select saved filter',
37
+ noFilters: 'No saved filters',
38
+ filter: {
39
+ delete: 'Delete',
40
+ cancelDelete: 'Cancel',
41
+ pin: 'Pin',
42
+ unpin: 'Unpin',
43
+ },
44
+ tabs: {
45
+ all: 'All',
46
+ featured: 'Featured',
47
+ mine: 'Mine',
48
+ pinned: 'Pinned',
49
+ shared: 'Shared',
50
+ },
51
+ },
52
+ };
@@ -0,0 +1,7 @@
1
+ export enum FilterTab {
2
+ All = 'all',
3
+ Mine = 'mine',
4
+ Shared = 'shared',
5
+ Featured = 'featured',
6
+ Pinned = 'pinned',
7
+ }
@@ -0,0 +1,28 @@
1
+ import type { FilterDrawerNewFilter } from '@/components/filterDrawer/types/filters';
2
+ import type { FilterDrawerStandaloneProps } from '@/components/filterDrawer/types/props';
3
+ import type { SaveFilterStepValidation } from '@/components/filterDrawer/types/validation';
4
+ import type { useValidation } from '@cleen/ui-core';
5
+ import { createContext, type Dispatch, type SetStateAction } from 'react';
6
+
7
+ type FilterDrawerContextProps = FilterDrawerStandaloneProps & {
8
+ isSaveFiltersStep: boolean;
9
+ setIsSaveFiltersStep: Dispatch<SetStateAction<boolean>>;
10
+ saveStepValues: FilterDrawerNewFilter;
11
+ setSaveStepValues: Dispatch<SetStateAction<FilterDrawerNewFilter>>;
12
+ handleCloseSaveFilter: () => void;
13
+ isFiltersDropdownOpen: boolean;
14
+ setIsFiltersDropdownOpen: Dispatch<SetStateAction<boolean>>;
15
+ } & Partial<ReturnType<typeof useValidation<SaveFilterStepValidation>>>;
16
+
17
+ export const FilterDrawerContext = createContext<FilterDrawerContextProps>({
18
+ isSaveFiltersStep: false,
19
+ setIsSaveFiltersStep: () => {},
20
+ saveStepValues: { exposed: false, filterName: '' },
21
+ setSaveStepValues: () => {},
22
+ handleCloseSaveFilter: () => {},
23
+ isFiltersDropdownOpen: false,
24
+ setIsFiltersDropdownOpen: () => {},
25
+ errors: {},
26
+ setErrors: () => {},
27
+ setError: () => {},
28
+ });
@@ -0,0 +1,50 @@
1
+ import { DEFAULT_NEW_FILTER } from '@/components/filterDrawer/constants/filter';
2
+ import { FilterDrawerContext } from '@/components/filterDrawer/context/context';
3
+ import type { FilterDrawerNewFilter } from '@/components/filterDrawer/types/filters';
4
+ import type { FilterDrawerStandaloneProps } from '@/components/filterDrawer/types/props';
5
+ import type { SaveFilterStepValidation } from '@/components/filterDrawer/types/validation';
6
+ import { useValidation } from '@cleen/ui-core';
7
+ import { useState, type ReactNode } from 'react';
8
+
9
+ interface FilterDrawerProviderProps {
10
+ children: ReactNode;
11
+ value: FilterDrawerStandaloneProps;
12
+ }
13
+
14
+ export const FilterDrawerProvider = ({
15
+ children,
16
+ value,
17
+ }: FilterDrawerProviderProps) => {
18
+ const [isSaveFiltersStep, setIsSaveFiltersStep] = useState(false);
19
+ const [saveStepValues, setSaveStepValues] =
20
+ useState<FilterDrawerNewFilter>(DEFAULT_NEW_FILTER);
21
+ const { errors, setError, clearError } =
22
+ useValidation<SaveFilterStepValidation>({});
23
+
24
+ const [isFiltersDropdownOpen, setIsFiltersDropdownOpen] = useState(false);
25
+
26
+ const handleCloseSaveFilter = () => {
27
+ setIsSaveFiltersStep(false);
28
+ value?.onClose?.();
29
+ };
30
+
31
+ return (
32
+ <FilterDrawerContext.Provider
33
+ value={{
34
+ isSaveFiltersStep,
35
+ setIsSaveFiltersStep,
36
+ saveStepValues,
37
+ setSaveStepValues,
38
+ handleCloseSaveFilter,
39
+ isFiltersDropdownOpen,
40
+ setIsFiltersDropdownOpen,
41
+ errors,
42
+ setError,
43
+ clearError,
44
+ ...value,
45
+ }}
46
+ >
47
+ {children}
48
+ </FilterDrawerContext.Provider>
49
+ );
50
+ };
@@ -0,0 +1,7 @@
1
+ export { FilterDrawer } from './FilterDrawer';
2
+ export type {
3
+ FilterDrawerFilterCategories,
4
+ FilterDrawerNewFilter,
5
+ FilterDrawerSavedFilter,
6
+ } from './types/filters';
7
+ export type { FilterDrawerProps } from './types/props';
@@ -0,0 +1,28 @@
1
+ export interface FilterDrawerNewFilter {
2
+ filterName: string;
3
+ exposed: boolean;
4
+ }
5
+
6
+ export interface FilterDrawerFilterCategories {
7
+ isFeatured: boolean | null;
8
+ isMine: boolean | null;
9
+ isPinned: boolean | null;
10
+ isShared: boolean | null;
11
+ }
12
+
13
+ export interface SavedFilterParameter {
14
+ controlCode: string;
15
+ controlTypeID: number;
16
+ valueObject: string; // JSON
17
+ }
18
+
19
+ export interface FilterDrawerSavedFilter {
20
+ filterID: number;
21
+ title: string | null;
22
+ isFeatured: boolean | null;
23
+ isPinned: boolean | null;
24
+ isShared: boolean | null;
25
+ createdDate: string; // Date
26
+ filterParameters: SavedFilterParameter[] | null;
27
+ [key: string]: unknown;
28
+ }
@@ -0,0 +1,107 @@
1
+ import type { ButtonProps } from '@/components/button/Button';
2
+ import type { DrawerProps } from '@/components/drawer/Drawer';
3
+ import type { DropdownProps } from '@/components/dropdown/Dropdown';
4
+ import type {
5
+ FilterDrawerFilterCategories,
6
+ FilterDrawerNewFilter,
7
+ FilterDrawerSavedFilter,
8
+ } from '@/components/filterDrawer/types/filters';
9
+ import type { InputProps } from '@/components/input/Input';
10
+ import type { SwitchProps } from '@/components/switch/Switch';
11
+ import type { ComponentClassnames, ComponentStyles } from '@cleen/ui-core';
12
+ import type { ReactNode } from 'react';
13
+
14
+ export interface FilterDrawerLabels {
15
+ title?: ReactNode;
16
+ subtitle?: ReactNode;
17
+ save?: ReactNode;
18
+ apply?: ReactNode;
19
+ cancel?: ReactNode;
20
+ clear?: ReactNode;
21
+ saveStep?: {
22
+ title?: ReactNode;
23
+ subtitle?: ReactNode;
24
+ back?: ReactNode;
25
+ save?: ReactNode;
26
+ filterNameInput?: {
27
+ label?: ReactNode;
28
+ placeholder?: string;
29
+ };
30
+ exposureSwitch?: {
31
+ title?: ReactNode;
32
+ label?: ReactNode;
33
+ sublabel?: ReactNode;
34
+ };
35
+ validation?: {
36
+ tooShort?: ReactNode;
37
+ tooLong?: ReactNode;
38
+ };
39
+ };
40
+ savedFilters?: {
41
+ label?: ReactNode;
42
+ noFilters?: ReactNode;
43
+ filter?: {
44
+ delete?: ReactNode;
45
+ cancelDelete?: ReactNode;
46
+ pin?: string;
47
+ unpin?: string;
48
+ };
49
+ tabs?: {
50
+ all?: ReactNode;
51
+ mine?: ReactNode;
52
+ shared?: ReactNode;
53
+ featured?: ReactNode;
54
+ pinned?: ReactNode;
55
+ };
56
+ };
57
+ }
58
+
59
+ export type FilterDrawerStandaloneProps = {
60
+ selectedSavedFilter?: FilterDrawerSavedFilter;
61
+ savedFilters?: FilterDrawerSavedFilter[];
62
+ isFiltersFetching?: boolean;
63
+ labels?: FilterDrawerLabels;
64
+ withSavedFilters?: boolean;
65
+ activeFiltersCount?: number;
66
+ onClear?: () => void;
67
+ onSave?: (newFilter: FilterDrawerNewFilter) => Promise<void>;
68
+ onCancel?: () => void;
69
+ onApply?: () => void;
70
+ onClose?: () => void;
71
+ filterDateFormatter?: (date: string) => string;
72
+ onFilterCategoryChange?: (
73
+ categories: FilterDrawerFilterCategories
74
+ ) => Promise<void>;
75
+ onFilterDelete?: (filterID: number) => Promise<void>;
76
+ onFilterPin?: (filterID: number) => Promise<void>;
77
+ onFilterUnpin?: (filterID: number) => Promise<void>;
78
+ onFilterSelect?: (filter: FilterDrawerSavedFilter | undefined) => void;
79
+ classNames?: DrawerProps['classNames'] & {
80
+ dropdown?: ComponentClassnames<DropdownProps>;
81
+ clearBtn?: ComponentClassnames<ButtonProps>;
82
+ cancelBtn?: ComponentClassnames<ButtonProps>;
83
+ applyBtn?: ComponentClassnames<ButtonProps>;
84
+ saveBtn?: ComponentClassnames<ButtonProps>;
85
+ saveFilter?: {
86
+ filterName?: ComponentClassnames<InputProps>;
87
+ exposure?: ComponentClassnames<SwitchProps>;
88
+ backBtn?: ComponentClassnames<ButtonProps>;
89
+ saveBtn?: ComponentClassnames<ButtonProps>;
90
+ };
91
+ };
92
+ styles?: DrawerProps['styles'] & {
93
+ dropdown?: ComponentStyles<DropdownProps>;
94
+ clearBtn?: ComponentStyles<ButtonProps>;
95
+ cancelBtn?: ComponentStyles<ButtonProps>;
96
+ applyBtn?: ComponentStyles<ButtonProps>;
97
+ saveBtn?: ComponentStyles<ButtonProps>;
98
+ saveFilter?: {
99
+ filterName?: ComponentStyles<InputProps>;
100
+ exposure?: ComponentStyles<SwitchProps>;
101
+ backBtn?: ComponentStyles<ButtonProps>;
102
+ saveBtn?: ComponentStyles<ButtonProps>;
103
+ };
104
+ };
105
+ };
106
+
107
+ export type FilterDrawerProps = DrawerProps & FilterDrawerStandaloneProps;
@@ -0,0 +1,6 @@
1
+ import type { ReactNode } from 'react';
2
+
3
+ export type SaveFilterStepValidation = Partial<{
4
+ filterName: ReactNode;
5
+ exposed: ReactNode;
6
+ }>;