@cleen/ui 0.1.0 → 0.1.2

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 (423) hide show
  1. package/README.md +37 -0
  2. package/dist/charts/index.d.ts +118 -0
  3. package/dist/charts/index.js +1 -0
  4. package/dist/icons/index.d.ts +35 -0
  5. package/dist/icons/index.js +1 -0
  6. package/dist/index.d.ts +2959 -0
  7. package/dist/index.js +19 -0
  8. package/package.json +54 -54
  9. package/src/charts/chart/Chart.tsx +0 -82
  10. package/src/charts/chart/constant.ts +0 -50
  11. package/src/charts/chart/index.ts +0 -2
  12. package/src/charts/chart/types/apexcharts.ts +0 -9
  13. package/src/charts/chart/variants/BellCurve/BellCurve.tsx +0 -215
  14. package/src/charts/chart/variants/BellCurve/constant.ts +0 -112
  15. package/src/charts/chart/variants/BellCurve/helper.ts +0 -116
  16. package/src/charts/chart/variants/BellCurve/index.ts +0 -2
  17. package/src/charts/chart/variants/BellCurve/types/bellCurve.ts +0 -47
  18. package/src/charts/chart/variants/BellCurve/types/props.ts +0 -21
  19. package/src/charts/chart/variants/RadarChart/RadarChart.tsx +0 -22
  20. package/src/charts/chart/variants/RadarChart/constant.ts +0 -28
  21. package/src/charts/chart/variants/RadarChart/index.ts +0 -1
  22. package/src/charts/chart/variants/ScatterChart/ScatterChart.tsx +0 -23
  23. package/src/charts/chart/variants/ScatterChart/constant.ts +0 -54
  24. package/src/charts/chart/variants/ScatterChart/index.ts +0 -1
  25. package/src/charts/chart/variants/index.ts +0 -3
  26. package/src/charts/index.ts +0 -2
  27. package/src/charts/simpleChart/SimpleChart.tsx +0 -54
  28. package/src/charts/simpleChart/index.ts +0 -1
  29. package/src/components/advancedProgressBar/AdvancedProgressBar.tsx +0 -156
  30. package/src/components/advancedProgressBar/blocks/Bar.tsx +0 -118
  31. package/src/components/advancedProgressBar/blocks/BlockLabel.tsx +0 -49
  32. package/src/components/advancedProgressBar/blocks/Clamp.tsx +0 -85
  33. package/src/components/advancedProgressBar/constants.ts +0 -6
  34. package/src/components/advancedProgressBar/index.ts +0 -2
  35. package/src/components/advancedProgressBar/types/props.ts +0 -69
  36. package/src/components/advancedProgressBar/utils.ts +0 -17
  37. package/src/components/audioPlayback/AudioPlayback.tsx +0 -141
  38. package/src/components/audioPlayback/index.ts +0 -2
  39. package/src/components/audioRecorder/AudioRecorder.tsx +0 -391
  40. package/src/components/audioRecorder/constant/default.ts +0 -19
  41. package/src/components/audioRecorder/constant/labels.ts +0 -9
  42. package/src/components/audioRecorder/index.ts +0 -2
  43. package/src/components/audioRecorder/types/props.ts +0 -56
  44. package/src/components/avatar/Avatar.tsx +0 -132
  45. package/src/components/avatar/index.ts +0 -1
  46. package/src/components/avatar/variants.ts +0 -9
  47. package/src/components/avatarRow/AvatarRow.tsx +0 -127
  48. package/src/components/avatarRow/index.ts +0 -1
  49. package/src/components/breadcrumb/Breadcrumb.tsx +0 -158
  50. package/src/components/breadcrumb/index.ts +0 -1
  51. package/src/components/button/Button.tsx +0 -114
  52. package/src/components/button/index.ts +0 -2
  53. package/src/components/button/variants.ts +0 -41
  54. package/src/components/card/Card.tsx +0 -197
  55. package/src/components/card/index.ts +0 -3
  56. package/src/components/card/variants/CardIcon/CardIcon.tsx +0 -158
  57. package/src/components/card/variants/CardMedia/CardMedia.tsx +0 -127
  58. package/src/components/checkbox/Checkbox.tsx +0 -246
  59. package/src/components/checkbox/index.ts +0 -1
  60. package/src/components/checkbox/variants.ts +0 -13
  61. package/src/components/checkboxGroup/CheckboxGroup.tsx +0 -163
  62. package/src/components/checkboxGroup/index.ts +0 -1
  63. package/src/components/cleenIcon/CleenIcon.tsx +0 -674
  64. package/src/components/cleenIcon/icons/IconAlertCircle.tsx +0 -22
  65. package/src/components/cleenIcon/icons/IconAlertFeatured.tsx +0 -30
  66. package/src/components/cleenIcon/icons/IconAlertOctagon.tsx +0 -21
  67. package/src/components/cleenIcon/icons/IconAlertTriangle.tsx +0 -25
  68. package/src/components/cleenIcon/icons/IconAlignRight.tsx +0 -25
  69. package/src/components/cleenIcon/icons/IconArrowDown.tsx +0 -25
  70. package/src/components/cleenIcon/icons/IconArrowLeft.tsx +0 -25
  71. package/src/components/cleenIcon/icons/IconArrowLeft2.tsx +0 -22
  72. package/src/components/cleenIcon/icons/IconArrowRight.tsx +0 -25
  73. package/src/components/cleenIcon/icons/IconArrowToTop.tsx +0 -20
  74. package/src/components/cleenIcon/icons/IconArrowUp.tsx +0 -22
  75. package/src/components/cleenIcon/icons/IconArrowUpRight.tsx +0 -22
  76. package/src/components/cleenIcon/icons/IconArrowUpRightNarrow.tsx +0 -22
  77. package/src/components/cleenIcon/icons/IconArrowUpRightSquare.tsx +0 -22
  78. package/src/components/cleenIcon/icons/IconAttachment.tsx +0 -22
  79. package/src/components/cleenIcon/icons/IconBarChartSquare.tsx +0 -22
  80. package/src/components/cleenIcon/icons/IconBold.tsx +0 -16
  81. package/src/components/cleenIcon/icons/IconBookmarkCheck.tsx +0 -22
  82. package/src/components/cleenIcon/icons/IconBookmarkCheckFill.tsx +0 -37
  83. package/src/components/cleenIcon/icons/IconBookmarkPlus.tsx +0 -22
  84. package/src/components/cleenIcon/icons/IconBookmarkX.tsx +0 -22
  85. package/src/components/cleenIcon/icons/IconBoxLines.tsx +0 -16
  86. package/src/components/cleenIcon/icons/IconBoxText.tsx +0 -24
  87. package/src/components/cleenIcon/icons/IconBracketsCheck.tsx +0 -25
  88. package/src/components/cleenIcon/icons/IconBracketsEllipses.tsx +0 -22
  89. package/src/components/cleenIcon/icons/IconBuilding.tsx +0 -22
  90. package/src/components/cleenIcon/icons/IconCalendar.tsx +0 -25
  91. package/src/components/cleenIcon/icons/IconCertificateHeart.tsx +0 -25
  92. package/src/components/cleenIcon/icons/IconCheck.tsx +0 -22
  93. package/src/components/cleenIcon/icons/IconCheckCircle.tsx +0 -22
  94. package/src/components/cleenIcon/icons/IconCheckCircleBroken.tsx +0 -25
  95. package/src/components/cleenIcon/icons/IconCheckFill.tsx +0 -45
  96. package/src/components/cleenIcon/icons/IconCheckVerified.tsx +0 -22
  97. package/src/components/cleenIcon/icons/IconChevronDown.tsx +0 -22
  98. package/src/components/cleenIcon/icons/IconChevronLeft.tsx +0 -25
  99. package/src/components/cleenIcon/icons/IconChevronLeftDouble.tsx +0 -22
  100. package/src/components/cleenIcon/icons/IconChevronRight.tsx +0 -25
  101. package/src/components/cleenIcon/icons/IconChevronRightDouble.tsx +0 -22
  102. package/src/components/cleenIcon/icons/IconChevronSelectorVertical.tsx +0 -22
  103. package/src/components/cleenIcon/icons/IconChevronUp.tsx +0 -25
  104. package/src/components/cleenIcon/icons/IconCircleSwap.tsx +0 -22
  105. package/src/components/cleenIcon/icons/IconClockFastForward.tsx +0 -25
  106. package/src/components/cleenIcon/icons/IconClockRewind.tsx +0 -25
  107. package/src/components/cleenIcon/icons/IconClockRewind2.tsx +0 -21
  108. package/src/components/cleenIcon/icons/IconCodeBrowser.tsx +0 -25
  109. package/src/components/cleenIcon/icons/IconCodeCircle.tsx +0 -22
  110. package/src/components/cleenIcon/icons/IconColors.tsx +0 -25
  111. package/src/components/cleenIcon/icons/IconColumnEdit.tsx +0 -19
  112. package/src/components/cleenIcon/icons/IconCopy.tsx +0 -25
  113. package/src/components/cleenIcon/icons/IconCopy2.tsx +0 -22
  114. package/src/components/cleenIcon/icons/IconCopy3.tsx +0 -25
  115. package/src/components/cleenIcon/icons/IconCopy4.tsx +0 -25
  116. package/src/components/cleenIcon/icons/IconCopy5.tsx +0 -25
  117. package/src/components/cleenIcon/icons/IconCopyCheck.tsx +0 -22
  118. package/src/components/cleenIcon/icons/IconCube.tsx +0 -25
  119. package/src/components/cleenIcon/icons/IconCubeOutline.tsx +0 -22
  120. package/src/components/cleenIcon/icons/IconCursorBox.tsx +0 -25
  121. package/src/components/cleenIcon/icons/IconDataflow.tsx +0 -22
  122. package/src/components/cleenIcon/icons/IconDataflow2.tsx +0 -22
  123. package/src/components/cleenIcon/icons/IconDataflow3.tsx +0 -29
  124. package/src/components/cleenIcon/icons/IconDelete.tsx +0 -25
  125. package/src/components/cleenIcon/icons/IconDollarCircle.tsx +0 -25
  126. package/src/components/cleenIcon/icons/IconDotsGrid.tsx +0 -74
  127. package/src/components/cleenIcon/icons/IconDotsHorizontal.tsx +0 -34
  128. package/src/components/cleenIcon/icons/IconDotsVertical.tsx +0 -38
  129. package/src/components/cleenIcon/icons/IconEdit.tsx +0 -25
  130. package/src/components/cleenIcon/icons/IconEditable.tsx +0 -25
  131. package/src/components/cleenIcon/icons/IconExpand.tsx +0 -22
  132. package/src/components/cleenIcon/icons/IconEye.tsx +0 -28
  133. package/src/components/cleenIcon/icons/IconEyeHidden.tsx +0 -25
  134. package/src/components/cleenIcon/icons/IconEyeHidden2.tsx +0 -24
  135. package/src/components/cleenIcon/icons/IconFaceSmile.tsx +0 -24
  136. package/src/components/cleenIcon/icons/IconFilter.tsx +0 -22
  137. package/src/components/cleenIcon/icons/IconFilter2.tsx +0 -22
  138. package/src/components/cleenIcon/icons/IconFlag.tsx +0 -22
  139. package/src/components/cleenIcon/icons/IconFlag2.tsx +0 -25
  140. package/src/components/cleenIcon/icons/IconFlag3.tsx +0 -16
  141. package/src/components/cleenIcon/icons/IconHandShield.tsx +0 -22
  142. package/src/components/cleenIcon/icons/IconHash.tsx +0 -22
  143. package/src/components/cleenIcon/icons/IconHeadsetMic.tsx +0 -21
  144. package/src/components/cleenIcon/icons/IconHeart.tsx +0 -24
  145. package/src/components/cleenIcon/icons/IconHouseLine.tsx +0 -22
  146. package/src/components/cleenIcon/icons/IconImage.tsx +0 -22
  147. package/src/components/cleenIcon/icons/IconImage2.tsx +0 -22
  148. package/src/components/cleenIcon/icons/IconImage3.tsx +0 -17
  149. package/src/components/cleenIcon/icons/IconImage4.tsx +0 -25
  150. package/src/components/cleenIcon/icons/IconImageCheck.tsx +0 -22
  151. package/src/components/cleenIcon/icons/IconInfoCircle.tsx +0 -22
  152. package/src/components/cleenIcon/icons/IconInfoHexagon.tsx +0 -25
  153. package/src/components/cleenIcon/icons/IconItalic.tsx +0 -16
  154. package/src/components/cleenIcon/icons/IconLayersMultiple.tsx +0 -22
  155. package/src/components/cleenIcon/icons/IconLayersSingle.tsx +0 -22
  156. package/src/components/cleenIcon/icons/IconLayout.tsx +0 -22
  157. package/src/components/cleenIcon/icons/IconLayout2.tsx +0 -22
  158. package/src/components/cleenIcon/icons/IconLayoutColumns.tsx +0 -20
  159. package/src/components/cleenIcon/icons/IconLayoutCustom.tsx +0 -16
  160. package/src/components/cleenIcon/icons/IconLayoutSequential.tsx +0 -16
  161. package/src/components/cleenIcon/icons/IconLayoutStuffed.tsx +0 -20
  162. package/src/components/cleenIcon/icons/IconLayoutTile.tsx +0 -16
  163. package/src/components/cleenIcon/icons/IconLifeBuoy.tsx +0 -29
  164. package/src/components/cleenIcon/icons/IconLightbulb.tsx +0 -22
  165. package/src/components/cleenIcon/icons/IconLightning.tsx +0 -22
  166. package/src/components/cleenIcon/icons/IconLightning2.tsx +0 -25
  167. package/src/components/cleenIcon/icons/IconLightningFast.tsx +0 -22
  168. package/src/components/cleenIcon/icons/IconLineChartBar.tsx +0 -22
  169. package/src/components/cleenIcon/icons/IconLineChartBreakoutSquare.tsx +0 -22
  170. package/src/components/cleenIcon/icons/IconLineChartUp.tsx +0 -25
  171. package/src/components/cleenIcon/icons/IconLineChartUp2.tsx +0 -34
  172. package/src/components/cleenIcon/icons/IconLines.tsx +0 -22
  173. package/src/components/cleenIcon/icons/IconLinesCheck.tsx +0 -16
  174. package/src/components/cleenIcon/icons/IconLinesPlay.tsx +0 -23
  175. package/src/components/cleenIcon/icons/IconLink.tsx +0 -25
  176. package/src/components/cleenIcon/icons/IconLink2.tsx +0 -24
  177. package/src/components/cleenIcon/icons/IconLink3.tsx +0 -21
  178. package/src/components/cleenIcon/icons/IconLink4.tsx +0 -17
  179. package/src/components/cleenIcon/icons/IconLink5.tsx +0 -22
  180. package/src/components/cleenIcon/icons/IconListBullet.tsx +0 -18
  181. package/src/components/cleenIcon/icons/IconListOrder.tsx +0 -20
  182. package/src/components/cleenIcon/icons/IconListOrder2.tsx +0 -16
  183. package/src/components/cleenIcon/icons/IconLock.tsx +0 -22
  184. package/src/components/cleenIcon/icons/IconLock2.tsx +0 -22
  185. package/src/components/cleenIcon/icons/IconLogIn.tsx +0 -25
  186. package/src/components/cleenIcon/icons/IconLogOut.tsx +0 -25
  187. package/src/components/cleenIcon/icons/IconLogOut2.tsx +0 -22
  188. package/src/components/cleenIcon/icons/IconMagicWand.tsx +0 -25
  189. package/src/components/cleenIcon/icons/IconMagicWand2.tsx +0 -22
  190. package/src/components/cleenIcon/icons/IconMail.tsx +0 -25
  191. package/src/components/cleenIcon/icons/IconMessageSquare.tsx +0 -25
  192. package/src/components/cleenIcon/icons/IconMessageSquare2.tsx +0 -22
  193. package/src/components/cleenIcon/icons/IconMessageXSquare.tsx +0 -25
  194. package/src/components/cleenIcon/icons/IconMinusCircle.tsx +0 -22
  195. package/src/components/cleenIcon/icons/IconMobile.tsx +0 -25
  196. package/src/components/cleenIcon/icons/IconMonitor.tsx +0 -22
  197. package/src/components/cleenIcon/icons/IconMonitor2.tsx +0 -25
  198. package/src/components/cleenIcon/icons/IconMonitor3.tsx +0 -25
  199. package/src/components/cleenIcon/icons/IconMoonCircle.tsx +0 -28
  200. package/src/components/cleenIcon/icons/IconNavigationPointer.tsx +0 -22
  201. package/src/components/cleenIcon/icons/IconNotificationBox.tsx +0 -22
  202. package/src/components/cleenIcon/icons/IconPCSetup.tsx +0 -22
  203. package/src/components/cleenIcon/icons/IconPalette.tsx +0 -40
  204. package/src/components/cleenIcon/icons/IconPasscodeLock.tsx +0 -25
  205. package/src/components/cleenIcon/icons/IconPencil.tsx +0 -25
  206. package/src/components/cleenIcon/icons/IconPercentageCircle.tsx +0 -29
  207. package/src/components/cleenIcon/icons/IconPerspective.tsx +0 -22
  208. package/src/components/cleenIcon/icons/IconPhoneCall.tsx +0 -25
  209. package/src/components/cleenIcon/icons/IconPin.tsx +0 -22
  210. package/src/components/cleenIcon/icons/IconPlayCircle.tsx +0 -28
  211. package/src/components/cleenIcon/icons/IconPlus.tsx +0 -22
  212. package/src/components/cleenIcon/icons/IconPlusCircle.tsx +0 -25
  213. package/src/components/cleenIcon/icons/IconPulse.tsx +0 -25
  214. package/src/components/cleenIcon/icons/IconQuestionCircle.tsx +0 -24
  215. package/src/components/cleenIcon/icons/IconRadioButton.tsx +0 -27
  216. package/src/components/cleenIcon/icons/IconRadioButtonActive.tsx +0 -39
  217. package/src/components/cleenIcon/icons/IconReceiptCheck.tsx +0 -25
  218. package/src/components/cleenIcon/icons/IconRedo.tsx +0 -16
  219. package/src/components/cleenIcon/icons/IconRefresh.tsx +0 -22
  220. package/src/components/cleenIcon/icons/IconRefresh2.tsx +0 -22
  221. package/src/components/cleenIcon/icons/IconRefresh3.tsx +0 -20
  222. package/src/components/cleenIcon/icons/IconRepeat.tsx +0 -22
  223. package/src/components/cleenIcon/icons/IconRepeat2.tsx +0 -22
  224. package/src/components/cleenIcon/icons/IconRetweet.tsx +0 -33
  225. package/src/components/cleenIcon/icons/IconRoundChart.tsx +0 -25
  226. package/src/components/cleenIcon/icons/IconRoundChart2.tsx +0 -29
  227. package/src/components/cleenIcon/icons/IconRoute.tsx +0 -22
  228. package/src/components/cleenIcon/icons/IconSave.tsx +0 -25
  229. package/src/components/cleenIcon/icons/IconSave2.tsx +0 -22
  230. package/src/components/cleenIcon/icons/IconScanDots.tsx +0 -22
  231. package/src/components/cleenIcon/icons/IconSearch.tsx +0 -22
  232. package/src/components/cleenIcon/icons/IconSend.tsx +0 -25
  233. package/src/components/cleenIcon/icons/IconSettings.tsx +0 -32
  234. package/src/components/cleenIcon/icons/IconSettings2.tsx +0 -25
  235. package/src/components/cleenIcon/icons/IconSettings3.tsx +0 -22
  236. package/src/components/cleenIcon/icons/IconShieldLightning.tsx +0 -22
  237. package/src/components/cleenIcon/icons/IconShieldPlus.tsx +0 -22
  238. package/src/components/cleenIcon/icons/IconShieldRemove.tsx +0 -16
  239. package/src/components/cleenIcon/icons/IconShuffle.tsx +0 -25
  240. package/src/components/cleenIcon/icons/IconSlashCircle.tsx +0 -22
  241. package/src/components/cleenIcon/icons/IconSlashOctagon.tsx +0 -22
  242. package/src/components/cleenIcon/icons/IconSocialGlobe.tsx +0 -23
  243. package/src/components/cleenIcon/icons/IconSocialLinkedin.tsx +0 -21
  244. package/src/components/cleenIcon/icons/IconSocialX.tsx +0 -28
  245. package/src/components/cleenIcon/icons/IconSpeedometer.tsx +0 -22
  246. package/src/components/cleenIcon/icons/IconStairsRound.tsx +0 -21
  247. package/src/components/cleenIcon/icons/IconStar.tsx +0 -22
  248. package/src/components/cleenIcon/icons/IconStarHalf.tsx +0 -39
  249. package/src/components/cleenIcon/icons/IconStars.tsx +0 -28
  250. package/src/components/cleenIcon/icons/IconStars2.tsx +0 -29
  251. package/src/components/cleenIcon/icons/IconStrikethrough.tsx +0 -16
  252. package/src/components/cleenIcon/icons/IconSuccessFeatured.tsx +0 -30
  253. package/src/components/cleenIcon/icons/IconSun.tsx +0 -22
  254. package/src/components/cleenIcon/icons/IconSwitchHorizontal.tsx +0 -22
  255. package/src/components/cleenIcon/icons/IconTag.tsx +0 -22
  256. package/src/components/cleenIcon/icons/IconTarget.tsx +0 -21
  257. package/src/components/cleenIcon/icons/IconTarget2.tsx +0 -34
  258. package/src/components/cleenIcon/icons/IconTextFormat.tsx +0 -17
  259. package/src/components/cleenIcon/icons/IconTextFormat2.tsx +0 -22
  260. package/src/components/cleenIcon/icons/IconTextHighlight.tsx +0 -16
  261. package/src/components/cleenIcon/icons/IconTranslate.tsx +0 -25
  262. package/src/components/cleenIcon/icons/IconTrash.tsx +0 -25
  263. package/src/components/cleenIcon/icons/IconTrending.tsx +0 -22
  264. package/src/components/cleenIcon/icons/IconUnderline.tsx +0 -16
  265. package/src/components/cleenIcon/icons/IconUndo.tsx +0 -22
  266. package/src/components/cleenIcon/icons/IconUndo2.tsx +0 -16
  267. package/src/components/cleenIcon/icons/IconUploadCloud.tsx +0 -22
  268. package/src/components/cleenIcon/icons/IconUser.tsx +0 -22
  269. package/src/components/cleenIcon/icons/IconUserEdit.tsx +0 -25
  270. package/src/components/cleenIcon/icons/IconUserRight.tsx +0 -22
  271. package/src/components/cleenIcon/icons/IconUserSquare.tsx +0 -25
  272. package/src/components/cleenIcon/icons/IconUsers.tsx +0 -25
  273. package/src/components/cleenIcon/icons/IconUsersUp.tsx +0 -25
  274. package/src/components/cleenIcon/icons/IconVolume.tsx +0 -25
  275. package/src/components/cleenIcon/icons/IconWrench.tsx +0 -22
  276. package/src/components/cleenIcon/icons/IconX.tsx +0 -25
  277. package/src/components/cleenIcon/icons/IconXCircle.tsx +0 -22
  278. package/src/components/cleenIcon/icons/IconXCircle2.tsx +0 -42
  279. package/src/components/cleenIcon/icons/IconXClose.tsx +0 -25
  280. package/src/components/cleenIcon/icons/IconXSquare.tsx +0 -22
  281. package/src/components/cleenIcon/icons/index.ts +0 -215
  282. package/src/components/cleenIcon/index.ts +0 -4
  283. package/src/components/cleenIcon/types/icon.ts +0 -226
  284. package/src/components/collapsible/Collapsible.tsx +0 -148
  285. package/src/components/collapsible/index.ts +0 -5
  286. package/src/components/creditCardInput/CreditCardInput.tsx +0 -236
  287. package/src/components/creditCardInput/index.ts +0 -2
  288. package/src/components/creditCardInput/types/card.ts +0 -13
  289. package/src/components/creditCardInput/types/props.ts +0 -44
  290. package/src/components/creditCardInput/util/format.ts +0 -102
  291. package/src/components/datePicker/DatePicker.tsx +0 -235
  292. package/src/components/datePicker/index.ts +0 -2
  293. package/src/components/datePicker/types/props.ts +0 -47
  294. package/src/components/datePicker/utils/date.ts +0 -40
  295. package/src/components/divider/Divider.tsx +0 -43
  296. package/src/components/divider/index.ts +0 -1
  297. package/src/components/drawer/Drawer.tsx +0 -222
  298. package/src/components/drawer/index.ts +0 -1
  299. package/src/components/dropdown/Dropdown.tsx +0 -224
  300. package/src/components/dropdown/index.ts +0 -1
  301. package/src/components/filterDrawer/FilterDrawer.tsx +0 -147
  302. package/src/components/filterDrawer/blocks/FilterDrawerFooter.tsx +0 -119
  303. package/src/components/filterDrawer/blocks/SaveFilterStep.tsx +0 -56
  304. package/src/components/filterDrawer/blocks/SavedFilterRow.tsx +0 -166
  305. package/src/components/filterDrawer/blocks/SavedFiltersDropdown.tsx +0 -142
  306. package/src/components/filterDrawer/constants/filter.ts +0 -4
  307. package/src/components/filterDrawer/constants/labels.ts +0 -52
  308. package/src/components/filterDrawer/constants/tab.ts +0 -7
  309. package/src/components/filterDrawer/context/context.ts +0 -28
  310. package/src/components/filterDrawer/context/provider.tsx +0 -50
  311. package/src/components/filterDrawer/index.ts +0 -7
  312. package/src/components/filterDrawer/types/filters.ts +0 -28
  313. package/src/components/filterDrawer/types/props.ts +0 -107
  314. package/src/components/filterDrawer/types/validation.ts +0 -6
  315. package/src/components/formGroup/FormGroup.tsx +0 -165
  316. package/src/components/formGroup/index.ts +0 -1
  317. package/src/components/groupSelector/GroupSelector.tsx +0 -729
  318. package/src/components/groupSelector/index.ts +0 -6
  319. package/src/components/index.ts +0 -44
  320. package/src/components/infoLabels/InfoLabels.tsx +0 -88
  321. package/src/components/infoLabels/index.ts +0 -1
  322. package/src/components/input/Input.tsx +0 -269
  323. package/src/components/input/index.ts +0 -1
  324. package/src/components/loader/Loader.tsx +0 -91
  325. package/src/components/loader/index.ts +0 -1
  326. package/src/components/lookup/Lookup.tsx +0 -433
  327. package/src/components/lookup/blocks/LookupOptionList.tsx +0 -130
  328. package/src/components/lookup/index.ts +0 -2
  329. package/src/components/lookup/types/lookup.ts +0 -97
  330. package/src/components/menu/Menu.tsx +0 -103
  331. package/src/components/menu/blocks/MenuContent.tsx +0 -105
  332. package/src/components/menu/blocks/MenuItem.tsx +0 -120
  333. package/src/components/menu/index.ts +0 -2
  334. package/src/components/menu/types/menu.ts +0 -30
  335. package/src/components/menu/types/menuItem.ts +0 -48
  336. package/src/components/modal/Modal.tsx +0 -191
  337. package/src/components/modal/index.ts +0 -1
  338. package/src/components/notification/Notification.tsx +0 -79
  339. package/src/components/notification/constant/notification.ts +0 -30
  340. package/src/components/notification/index.ts +0 -2
  341. package/src/components/notification/wrappers/CleenNotificationContainer.tsx +0 -9
  342. package/src/components/pagination/Pagination.tsx +0 -294
  343. package/src/components/pagination/blocks/PaginationGoToPage.tsx +0 -91
  344. package/src/components/pagination/blocks/PaginationPageSize.tsx +0 -145
  345. package/src/components/pagination/constants/labels.ts +0 -15
  346. package/src/components/pagination/index.ts +0 -9
  347. package/src/components/pillBadge/PillBadge.tsx +0 -130
  348. package/src/components/pillBadge/helper.ts +0 -11
  349. package/src/components/pillBadge/index.ts +0 -1
  350. package/src/components/pillBadge/variants.ts +0 -47
  351. package/src/components/popover/Popover.tsx +0 -108
  352. package/src/components/popover/index.ts +0 -2
  353. package/src/components/popover/types/popover.ts +0 -21
  354. package/src/components/progressBar/ProgressBar.tsx +0 -179
  355. package/src/components/progressBar/index.ts +0 -1
  356. package/src/components/progressCircle/ProgressCircle.tsx +0 -142
  357. package/src/components/progressCircle/index.ts +0 -1
  358. package/src/components/radioBoxGroup/RadioBoxGroup.tsx +0 -207
  359. package/src/components/radioBoxGroup/index.ts +0 -1
  360. package/src/components/radioButtonGroup/RadioButtonGroup.tsx +0 -208
  361. package/src/components/radioButtonGroup/blocks/RadioButton.tsx +0 -22
  362. package/src/components/radioButtonGroup/index.ts +0 -4
  363. package/src/components/radioButtonGroup/types/radioButton.ts +0 -10
  364. package/src/components/rangeSlider/RangeSlider.tsx +0 -366
  365. package/src/components/rangeSlider/index.ts +0 -1
  366. package/src/components/select/Select.tsx +0 -349
  367. package/src/components/select/blocks/SelectCustomMenuList.tsx +0 -70
  368. package/src/components/select/blocks/SelectNoOptionsMessage.tsx +0 -22
  369. package/src/components/select/blocks/SelectOption.tsx +0 -19
  370. package/src/components/select/blocks/SelectSingleValue.tsx +0 -28
  371. package/src/components/select/index.ts +0 -1
  372. package/src/components/sidebar/Sidebar.tsx +0 -210
  373. package/src/components/sidebar/SidebarItem.tsx +0 -88
  374. package/src/components/sidebar/drawerContainer/DrawerContainer.tsx +0 -36
  375. package/src/components/sidebar/drawerContainer/DrawerContentTitle.tsx +0 -165
  376. package/src/components/sidebar/drawerContainer/index.ts +0 -2
  377. package/src/components/sidebar/index.ts +0 -13
  378. package/src/components/sidebar/types.ts +0 -157
  379. package/src/components/skeletons/blocks/Skeleton.tsx +0 -72
  380. package/src/components/skeletons/blocks/SkeletonAvatar.tsx +0 -43
  381. package/src/components/skeletons/blocks/SkeletonBadge.tsx +0 -30
  382. package/src/components/skeletons/blocks/SkeletonBanner.tsx +0 -44
  383. package/src/components/skeletons/blocks/SkeletonButton.tsx +0 -31
  384. package/src/components/skeletons/blocks/SkeletonCard.tsx +0 -39
  385. package/src/components/skeletons/blocks/SkeletonCard2.tsx +0 -57
  386. package/src/components/skeletons/blocks/SkeletonCard3.tsx +0 -89
  387. package/src/components/skeletons/blocks/SkeletonCardStack.tsx +0 -22
  388. package/src/components/skeletons/blocks/SkeletonChart.tsx +0 -114
  389. package/src/components/skeletons/blocks/SkeletonContentCard.tsx +0 -75
  390. package/src/components/skeletons/blocks/SkeletonDataGrid.tsx +0 -73
  391. package/src/components/skeletons/blocks/SkeletonForm.tsx +0 -50
  392. package/src/components/skeletons/blocks/SkeletonImage.tsx +0 -45
  393. package/src/components/skeletons/blocks/SkeletonInfoCard.tsx +0 -130
  394. package/src/components/skeletons/blocks/SkeletonInput.tsx +0 -32
  395. package/src/components/skeletons/blocks/SkeletonList.tsx +0 -67
  396. package/src/components/skeletons/blocks/SkeletonParagraph.tsx +0 -52
  397. package/src/components/skeletons/blocks/SkeletonText.tsx +0 -22
  398. package/src/components/skeletons/blocks/SkeletonVideo.tsx +0 -71
  399. package/src/components/skeletons/blocks/SkeletonWidgetCard.tsx +0 -56
  400. package/src/components/skeletons/blocks/SkeletonWrapper.tsx +0 -140
  401. package/src/components/skeletons/index.ts +0 -24
  402. package/src/components/skeletons/styles/skeleton.ts +0 -2
  403. package/src/components/skeletons/types/skeleton.ts +0 -8
  404. package/src/components/slider/Slider.tsx +0 -298
  405. package/src/components/slider/index.ts +0 -1
  406. package/src/components/stepper/Stepper.tsx +0 -185
  407. package/src/components/stepper/index.ts +0 -1
  408. package/src/components/switch/Switch.tsx +0 -152
  409. package/src/components/switch/index.ts +0 -1
  410. package/src/components/tabs/Tabs.tsx +0 -140
  411. package/src/components/tabs/index.ts +0 -2
  412. package/src/components/tabs/types/tab.ts +0 -33
  413. package/src/components/tabs/variants.ts +0 -49
  414. package/src/components/textArea/TextArea.tsx +0 -244
  415. package/src/components/textArea/index.ts +0 -1
  416. package/src/components/tooltip/Tooltip.tsx +0 -200
  417. package/src/components/tooltip/index.ts +0 -1
  418. package/src/icons/IconFromLibrary.tsx +0 -13
  419. package/src/icons/getIconByName.ts +0 -81
  420. package/src/icons/index.ts +0 -16
  421. package/src/index.ts +0 -1
  422. package/tsconfig.json +0 -27
  423. package/tsup.config.ts +0 -23
@@ -1,69 +0,0 @@
1
- import type { TooltipProps } from '@/components/tooltip/Tooltip';
2
- import type { ComponentProps, CSSProperties, ReactNode } from 'react';
3
-
4
- export interface Bar {
5
- // Type indicating serie as a bar
6
- type: 'bar';
7
-
8
- // Range start (0-100). If omitted for a range, defaults to 0.
9
- start?: number;
10
- // Range end (0-100). If omitted for a range, defaults to 100.
11
- end?: number;
12
- }
13
-
14
- export interface Clamp {
15
- // Type indicating serie as a clamp
16
- type: 'clamp';
17
-
18
- // Position for clamp markers (0-100). Optional if `start` is provided.
19
- value?: number;
20
- }
21
-
22
- export type Serie = (Bar | Clamp) & {
23
- // Color for the serie. Any valid CSS color.
24
- color?: string;
25
-
26
- // Height of the series in px
27
- height?: number;
28
-
29
- // Optional label underneath the serie
30
- label?: ReactNode;
31
-
32
- // Optional tooltip upon hovering over the serie
33
- tooltip?: TooltipProps;
34
- };
35
-
36
- export interface AdvancedProgressBarProps extends ComponentProps<'div'> {
37
- // Array of series to render on the track.
38
- series?: Serie[];
39
- // Optional CSS class overrides
40
- classNames?: {
41
- container?: string;
42
- track?: string;
43
- bar?: string; // for range bars
44
- clamp?: string; // for clamp markers
45
- labels?: string;
46
- label?: string;
47
- };
48
- // Optional inline style overrides
49
- styles?: {
50
- container?: CSSProperties;
51
- track?: CSSProperties;
52
- bar?: CSSProperties;
53
- clamp?: CSSProperties;
54
- label?: CSSProperties;
55
- labels?: CSSProperties;
56
- };
57
- track?: {
58
- // Track background color
59
- color?: string;
60
- // Height of the track in px (visual), defaults to 8
61
- height?: number;
62
- };
63
- // Minimum value for the scale (defaults to 0)
64
- minValue?: number;
65
- // Maximum value for the scale (defaults to 100)
66
- maxValue?: number;
67
- renderAnimated?: boolean;
68
- renderAnimatedDuration?: number;
69
- }
@@ -1,17 +0,0 @@
1
- export const clamp = (v: number) =>
2
- Math.max(0, Math.min(100, Number.isFinite(v) ? v : 0));
3
-
4
- export const valueToPercent = (
5
- value: number,
6
- minValue: number,
7
- maxValue: number
8
- ) => {
9
- const min = Number.isFinite(minValue) ? minValue : 0;
10
- const max = Number.isFinite(maxValue) ? maxValue : 100;
11
-
12
- if (max === min) {
13
- return 0;
14
- }
15
-
16
- return ((value - min) / (max - min)) * 100;
17
- };
@@ -1,141 +0,0 @@
1
- import { Button } from '@/components/button';
2
- import type { ButtonProps } from '@/components/button/Button';
3
- import {
4
- cn,
5
- ColorHelpers,
6
- formatAudioTime,
7
- type ComponentClassnames,
8
- type ComponentStyles,
9
- } from '@cleen/ui-core';
10
- import { useWavesurfer } from '@wavesurfer/react';
11
- import {
12
- forwardRef,
13
- useCallback,
14
- useRef,
15
- type CSSProperties,
16
- type ComponentProps,
17
- } from 'react';
18
- import { FaPause, FaPlay } from 'react-icons/fa';
19
- import type { WaveSurferOptions } from 'wavesurfer.js';
20
-
21
- type WaveSurferHookOptions = Omit<WaveSurferOptions, 'container' | 'url'>;
22
-
23
- const DEFAULT_OPTIONS: WaveSurferHookOptions = {
24
- waveColor: ColorHelpers.getComputedColor('var(--cleen-light-gray)'),
25
- progressColor: ColorHelpers.getComputedColor('var(--cleen-primary)'),
26
- cursorColor: 'rgb(var(--cleen-primary))',
27
- height: 56,
28
- barWidth: 2,
29
- barGap: 2,
30
- barRadius: 2,
31
- interact: true,
32
- normalize: true,
33
- };
34
-
35
- export interface AudioPlaybackProps extends Omit<
36
- ComponentProps<'div'>,
37
- 'children'
38
- > {
39
- /** URL of the audio file to play */
40
- url: string;
41
- options?: WaveSurferHookOptions;
42
- classNames?: {
43
- container?: string;
44
- controls?: string;
45
- playButton?: ComponentClassnames<ButtonProps>;
46
- waveform?: string;
47
- timestamp?: string;
48
- };
49
- styles?: {
50
- container?: CSSProperties;
51
- controls?: CSSProperties;
52
- playButton?: ComponentStyles<ButtonProps>;
53
- waveform?: CSSProperties;
54
- timestamp?: CSSProperties;
55
- };
56
- }
57
-
58
- /**
59
- * The `AudioPlayback` component renders an interactive audio player with a waveform
60
- * visualization, a play/pause control, and a current/total time display.
61
- *
62
- * - Provide a `url` pointing to the audio file.
63
- * - Use `waveColor` / `progressColor` to theme the waveform.
64
- * - Accepts `classNames` and `styles` to customize: `container`, `controls`, `playButton`, `waveform`, `timestamp`.
65
- */
66
- export const AudioPlayback = forwardRef<HTMLDivElement, AudioPlaybackProps>(
67
- function AudioPlayback(
68
- { url, options, className, classNames, style, styles, ...props },
69
- ref
70
- ) {
71
- const waveformRef = useRef<HTMLDivElement>(null);
72
-
73
- const { wavesurfer, isPlaying, isReady, currentTime } = useWavesurfer({
74
- ...DEFAULT_OPTIONS,
75
- ...options,
76
- container: waveformRef,
77
- url,
78
- });
79
-
80
- const totalDuration = isReady ? (wavesurfer?.getDuration() ?? 0) : 0;
81
-
82
- const handlePlayPause = useCallback(() => {
83
- wavesurfer?.playPause();
84
- }, [wavesurfer]);
85
-
86
- return (
87
- <div
88
- ref={ref}
89
- className={cn('cleen', className)}
90
- style={style}
91
- {...props}
92
- >
93
- <div
94
- className={cn(
95
- 'cleen-flex cleen-items-center cleen-gap-3 cleen-px-4 cleen-py-3 cleen-rounded-xl cleen-bg-white cleen-border cleen-border-gray/10',
96
- classNames?.container
97
- )}
98
- style={styles?.container}
99
- >
100
- {/* play/pause controls */}
101
- <Button
102
- type="button"
103
- onClick={handlePlayPause}
104
- disabled={!isReady}
105
- aria-label={isPlaying ? 'Pause' : 'Play'}
106
- className={classNames?.playButton?.className}
107
- classNames={{
108
- ...classNames?.playButton?.classNames,
109
- container: cn(
110
- 'cleen-p-0 !cleen-size-9 cleen-rounded-full',
111
- classNames?.playButton?.classNames?.container
112
- ),
113
- }}
114
- {...styles?.playButton}
115
- >
116
- {isPlaying ? <FaPause /> : <FaPlay />}
117
- </Button>
118
-
119
- {/* waveform */}
120
- <div
121
- ref={waveformRef}
122
- className={cn('cleen-flex-1 cleen-min-w-0', classNames?.waveform)}
123
- style={styles?.waveform}
124
- />
125
-
126
- {/* timestamp: current / total */}
127
- <span
128
- className={cn(
129
- 'cleen-shrink-0 cleen-text-xs cleen-text-gray/60 cleen-tabular-nums',
130
- classNames?.timestamp
131
- )}
132
- style={styles?.timestamp}
133
- >
134
- {formatAudioTime(currentTime)}&nbsp;/&nbsp;
135
- {formatAudioTime(totalDuration)}
136
- </span>
137
- </div>
138
- </div>
139
- );
140
- }
141
- );
@@ -1,2 +0,0 @@
1
- export { AudioPlayback } from './AudioPlayback';
2
- export type { AudioPlaybackProps } from './AudioPlayback';
@@ -1,391 +0,0 @@
1
- import {
2
- DEFAULT_AUDIO_RECORDER_OPTIONS,
3
- DEFAULT_REGION_COLOR,
4
- } from '@/components/audioRecorder/constant/default';
5
- import { DEFAULT_AUDIO_RECORDER_LABELS } from '@/components/audioRecorder/constant/labels';
6
- import type { AudioRecorderProps } from '@/components/audioRecorder/types/props';
7
- import { Button } from '@/components/button';
8
- import { IconCheck } from '@/components/cleenIcon';
9
- import { cn, formatAudioTime, trimBlob } from '@cleen/ui-core';
10
- import { useWavesurfer } from '@wavesurfer/react';
11
- import {
12
- forwardRef,
13
- useCallback,
14
- useEffect,
15
- useMemo,
16
- useRef,
17
- useState,
18
- } from 'react';
19
- import { BiMicrophone } from 'react-icons/bi';
20
- import { BsStop } from 'react-icons/bs';
21
- import { FaPause, FaPlay, FaScissors, FaTrash } from 'react-icons/fa6';
22
- import RecordPlugin from 'wavesurfer.js/dist/plugins/record.js';
23
- import RegionsPlugin, {
24
- type Region,
25
- } from 'wavesurfer.js/dist/plugins/regions.js';
26
-
27
- type RecorderStatus = 'idle' | 'recording' | 'recorded';
28
-
29
- /**
30
- * `AudioRecorder` captures audio from the microphone with a live waveform preview.
31
- * After stopping, a resizable trim region appears — drag its handles to select the
32
- * desired clip, then hit the scissors button to apply. The trash button discards
33
- * the whole recording.
34
- *
35
- * - `onFinalize(blob, url)` fires when the user confirms the final recording.
36
- * - `recordOptions` are forwarded directly to the WaveSurfer `RecordPlugin`.
37
- * - `options` controls the WaveSurfer instance (waveColor, height, regionColor, etc.).
38
- * - `labels` allows overriding UI strings (e.g. `startRecording`).
39
- * - Accepts `classNames` / `styles` for: `container`, `startButton`, `startLabel`,
40
- * `stopButton`, `waveform`, `recordedContainer`, `timestamp`, `trimmedTimestamp`,
41
- * `playPauseButton`, `discardButton`, `trimButton`, `finalizeButton`.
42
- */
43
- export const AudioRecorder = forwardRef<HTMLDivElement, AudioRecorderProps>(
44
- function AudioRecorder(
45
- {
46
- onFinalize,
47
- recordOptions,
48
- options,
49
- labels = DEFAULT_AUDIO_RECORDER_LABELS,
50
- className,
51
- classNames,
52
- style,
53
- styles,
54
- ...props
55
- },
56
- ref
57
- ) {
58
- const waveformRef = useRef<HTMLDivElement>(null);
59
-
60
- const [status, setStatus] = useState<RecorderStatus>('idle');
61
- const [recordedBlob, setRecordedBlob] = useState<Blob | null>(null);
62
- const [trimRegion, setTrimRegion] = useState<{
63
- start: number;
64
- end: number;
65
- } | null>(null);
66
- const [isTrimming, setIsTrimming] = useState(false);
67
-
68
- // Lets wavesurfer callbacks read the latest status without going stale in a closure
69
- const statusRef = useRef<RecorderStatus>('idle');
70
- statusRef.current = status;
71
-
72
- // Stable plugin instances – reinitialising mid-lifecycle would nuke wavesurfer (¬_¬)
73
- const plugins = useMemo(
74
- () =>
75
- [
76
- RecordPlugin.create({
77
- renderRecordedAudio: true,
78
- scrollingWaveform: false,
79
- continuousWaveform: false,
80
- ...recordOptions,
81
- }),
82
- RegionsPlugin.create(),
83
- ] as [RecordPlugin, RegionsPlugin],
84
- // eslint-disable-next-line react-hooks/exhaustive-deps
85
- []
86
- );
87
-
88
- const [recordPlugin, regionPlugin] = plugins;
89
-
90
- const { wavesurfer, isPlaying, isReady, currentTime } = useWavesurfer({
91
- ...DEFAULT_AUDIO_RECORDER_OPTIONS,
92
- ...options,
93
- container: waveformRef,
94
- plugins,
95
- });
96
-
97
- const totalDuration = isReady ? (wavesurfer?.getDuration() ?? 0) : 0;
98
-
99
- useEffect(() => {
100
- const unsubs = [
101
- recordPlugin.on('record-start', () => setStatus('recording')),
102
- recordPlugin.on('record-end', (blob: Blob) => {
103
- setStatus('recorded');
104
- setRecordedBlob(blob);
105
- }),
106
- regionPlugin.on('region-clicked', (region, e) => {
107
- e.stopPropagation(); // prevent triggering a click on the waveform
108
- region.play(true);
109
- }),
110
- ];
111
-
112
- return () => unsubs.forEach(fn => fn?.());
113
- }, [regionPlugin, recordPlugin]);
114
-
115
- // ── Add a full-span resizable region whenever a (new) audio finishes loading ──
116
- //
117
- // renderRecordedAudio causes wavesurfer to call load() internally after record-end,
118
- // so 'ready' fires once the waveform is drawn. Same thing happens after a trim reload.
119
-
120
- useEffect(() => {
121
- if (!wavesurfer) return;
122
-
123
- const unsub = wavesurfer.on('ready', () => {
124
- if (statusRef.current !== 'recorded') return;
125
-
126
- const duration = wavesurfer.getDuration();
127
- regionPlugin.clearRegions();
128
-
129
- const region: Region = regionPlugin.addRegion({
130
- start: 0,
131
- end: duration,
132
- color: options?.regionColor ?? DEFAULT_REGION_COLOR,
133
- drag: false,
134
- resize: true,
135
- });
136
-
137
- setTrimRegion({ start: region.start, end: region.end });
138
- });
139
-
140
- return unsub;
141
- }, [wavesurfer, regionPlugin, options]);
142
-
143
- // Keep trim state in sync as the user drags the region handles
144
-
145
- useEffect(() => {
146
- const unsub = regionPlugin.on('region-updated', (region: Region) => {
147
- setTrimRegion({ start: region.start, end: region.end });
148
- });
149
-
150
- return unsub;
151
- }, [regionPlugin]);
152
-
153
- const handleStartRecording = useCallback(async () => {
154
- await recordPlugin.startRecording();
155
- }, [recordPlugin]);
156
-
157
- const handleStopRecording = useCallback(() => {
158
- recordPlugin.stopRecording();
159
- }, [recordPlugin]);
160
-
161
- const handlePlayPause = useCallback(() => {
162
- wavesurfer?.playPause();
163
- }, [wavesurfer]);
164
-
165
- const handleTrim = useCallback(async () => {
166
- if (!recordedBlob || !trimRegion || !wavesurfer) return;
167
-
168
- setIsTrimming(true);
169
- try {
170
- const trimmed = await trimBlob(
171
- recordedBlob,
172
- trimRegion.start,
173
- trimRegion.end
174
- );
175
- const url = URL.createObjectURL(trimmed);
176
-
177
- setRecordedBlob(trimmed);
178
-
179
- // Reload waveform – 'ready' will fire again and re-add a fresh full-span region
180
- wavesurfer.load(url);
181
- } finally {
182
- setIsTrimming(false);
183
- }
184
- }, [recordedBlob, trimRegion, wavesurfer]);
185
-
186
- const handleDiscard = useCallback(() => {
187
- regionPlugin.clearRegions();
188
- wavesurfer?.empty();
189
- setRecordedBlob(null);
190
- setTrimRegion(null);
191
- setStatus('idle');
192
- }, [wavesurfer, regionPlugin]);
193
-
194
- const handleFinalize = useCallback(() => {
195
- if (recordedBlob) {
196
- const url = URL.createObjectURL(recordedBlob);
197
- onFinalize?.(recordedBlob, url);
198
- }
199
- }, [onFinalize, recordedBlob]);
200
-
201
- // Scissors button is disabled when the region already spans the whole clip
202
- const isFullSpan =
203
- !trimRegion || (trimRegion.start <= 0 && trimRegion.end >= totalDuration);
204
-
205
- return (
206
- <div
207
- ref={ref}
208
- className={cn('cleen wavesurfer-handle', className)}
209
- style={style}
210
- {...props}
211
- >
212
- <div
213
- className={cn(
214
- 'cleen-flex cleen-flex-col cleen-items-center cleen-gap-3',
215
- classNames?.container
216
- )}
217
- style={styles?.container}
218
- >
219
- {/* ── idle ── */}
220
- {status === 'idle' && (
221
- <>
222
- <button
223
- type="button"
224
- onClick={handleStartRecording}
225
- aria-label="Start recording"
226
- className={cn(
227
- 'cleen-p-8 cleen-border-2 cleen-border-primary/20 hover:cleen-border-primary cleen-rounded-full cleen-transition-colors',
228
- classNames?.startButton
229
- )}
230
- style={styles?.startButton}
231
- >
232
- <BiMicrophone className="cleen-size-8 cleen-text-primary" />
233
- </button>
234
-
235
- <p
236
- className={cn(
237
- 'cleen-text-gray/50 cleen-text-sm cleen-select-none',
238
- classNames?.startLabel
239
- )}
240
- style={styles?.startLabel}
241
- >
242
- {labels.startRecording}
243
- </p>
244
- </>
245
- )}
246
-
247
- {/* ── recording ── */}
248
- {status === 'recording' && (
249
- <button
250
- type="button"
251
- onClick={handleStopRecording}
252
- aria-label="Stop recording"
253
- className={cn(
254
- 'cleen-p-8 cleen-border-2 cleen-border-primary/20 hover:cleen-border-primary cleen-rounded-full cleen-transition-colors',
255
- classNames?.stopButton
256
- )}
257
- style={styles?.stopButton}
258
- >
259
- <BsStop className="cleen-size-8 cleen-text-primary" />
260
- </button>
261
- )}
262
-
263
- {/* ── waveform (always mounted – wavesurfer needs a stable DOM container) ── */}
264
- <div
265
- ref={waveformRef}
266
- className={cn(
267
- 'cleen-w-full cleen-min-w-0 cleen-waveform',
268
- status === 'idle' && 'cleen-hidden',
269
- classNames?.waveform
270
- )}
271
- style={styles?.waveform}
272
- />
273
-
274
- {/* ── recorded: inline playback + trim toolbar ── */}
275
- {status === 'recorded' && (
276
- <div
277
- className={cn(
278
- 'cleen-flex cleen-items-center cleen-gap-2 cleen-w-full',
279
- classNames?.recordedContainer
280
- )}
281
- style={styles?.recordedContainer}
282
- >
283
- {/* Play / Pause */}
284
- <Button
285
- type="button"
286
- onClick={handlePlayPause}
287
- disabled={!isReady}
288
- aria-label={isPlaying ? 'Pause' : 'Play'}
289
- className={classNames?.playPauseButton?.className}
290
- classNames={{
291
- ...classNames?.playPauseButton?.classNames,
292
- container: cn(
293
- 'cleen-p-0 !cleen-size-9 cleen-rounded-full cleen-shrink-0',
294
- classNames?.playPauseButton?.classNames?.container
295
- ),
296
- }}
297
- {...styles?.playPauseButton}
298
- >
299
- {isPlaying ? <FaPause /> : <FaPlay />}
300
- </Button>
301
-
302
- {/* Current / total duration */}
303
- <span
304
- className={cn(
305
- 'cleen-tabular-nums cleen-text-gray/60 cleen-text-xs cleen-shrink-0',
306
- classNames?.timestamp
307
- )}
308
- style={styles?.timestamp}
309
- >
310
- {formatAudioTime(currentTime)}&nbsp;/&nbsp;
311
- {formatAudioTime(totalDuration)}
312
- </span>
313
-
314
- <span className="cleen-flex-1" />
315
-
316
- {/* Selected trim range hint – visible only when region ≠ full span */}
317
- {!isFullSpan && trimRegion && (
318
- <span
319
- className={cn(
320
- 'cleen-tabular-nums cleen-text-gray/50 cleen-text-xs cleen-shrink-0',
321
- classNames?.trimmedTimestamp
322
- )}
323
- style={styles?.trimmedTimestamp}
324
- >
325
- {formatAudioTime(trimRegion.start)}–
326
- {formatAudioTime(trimRegion.end)}
327
- </span>
328
- )}
329
-
330
- {/* Discard */}
331
- <Button
332
- type="button"
333
- onClick={handleDiscard}
334
- variant="secondary"
335
- aria-label="Discard recording"
336
- className={classNames?.discardButton?.className}
337
- classNames={{
338
- ...classNames?.discardButton?.classNames,
339
- container: cn(
340
- 'cleen-p-0 !cleen-size-9 cleen-rounded-full cleen-shrink-0',
341
- classNames?.discardButton?.classNames?.container
342
- ),
343
- }}
344
- {...styles?.discardButton}
345
- >
346
- <FaTrash className="cleen-text-error" />
347
- </Button>
348
-
349
- {/* Apply trim */}
350
- <Button
351
- type="button"
352
- onClick={handleTrim}
353
- disabled={isFullSpan || isTrimming || !isReady}
354
- aria-label="Apply trim"
355
- variant="secondary"
356
- className={classNames?.trimButton?.className}
357
- classNames={{
358
- ...classNames?.trimButton?.classNames,
359
- container: cn(
360
- 'cleen-p-0 !cleen-size-9 cleen-rounded-full cleen-shrink-0',
361
- classNames?.trimButton?.classNames?.container
362
- ),
363
- }}
364
- {...styles?.trimButton}
365
- >
366
- <FaScissors />
367
- </Button>
368
-
369
- <Button
370
- type="button"
371
- onClick={handleFinalize}
372
- aria-label="Finalize recording"
373
- className={classNames?.finalizeButton?.className}
374
- classNames={{
375
- ...classNames?.finalizeButton?.classNames,
376
- container: cn(
377
- 'cleen-p-0 !cleen-size-9 cleen-rounded-full cleen-shrink-0',
378
- classNames?.finalizeButton?.classNames?.container
379
- ),
380
- }}
381
- {...styles?.finalizeButton}
382
- >
383
- <IconCheck />
384
- </Button>
385
- </div>
386
- )}
387
- </div>
388
- </div>
389
- );
390
- }
391
- );
@@ -1,19 +0,0 @@
1
- import type { WaveSurferHookOptions } from '@/components/audioRecorder/types/props';
2
- import { ColorHelpers } from '@cleen/ui-core';
3
-
4
- export const DEFAULT_WAVE_COLOR = ColorHelpers.getComputedColor(
5
- 'var(--cleen-primary)'
6
- );
7
- export const DEFAULT_REGION_COLOR = 'rgba(var(--cleen-primary), 0.15)';
8
-
9
- export const DEFAULT_AUDIO_RECORDER_OPTIONS: WaveSurferHookOptions = {
10
- waveColor: DEFAULT_WAVE_COLOR,
11
- progressColor: DEFAULT_WAVE_COLOR,
12
- cursorColor: 'rgb(var(--cleen-primary))',
13
- height: 56,
14
- barWidth: 2,
15
- barGap: 2,
16
- barRadius: 2,
17
- minPxPerSec: 0.5,
18
- sampleRate: 8000,
19
- };
@@ -1,9 +0,0 @@
1
- import type { ReactNode } from 'react';
2
-
3
- export interface AudioRecorderLabels {
4
- startRecording: ReactNode;
5
- }
6
-
7
- export const DEFAULT_AUDIO_RECORDER_LABELS: AudioRecorderLabels = {
8
- startRecording: 'Click to start recording',
9
- };
@@ -1,2 +0,0 @@
1
- export { AudioRecorder } from './AudioRecorder';
2
- export type { AudioRecorderProps } from './types/props';