ekm-ui 0.3.74 → 0.3.78

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 (264) hide show
  1. package/.turbo/turbo-build.log +128 -128
  2. package/CHANGELOG.md +12 -0
  3. package/dist/accordion.d.ts +28 -21
  4. package/dist/accordion.mjs +1 -1
  5. package/dist/alert-banner.mjs +1 -1
  6. package/dist/avatar.mjs +1 -1
  7. package/dist/badge.mjs +1 -1
  8. package/dist/breadcrumb.mjs +1 -1
  9. package/dist/card-payment-block.css +1 -1
  10. package/dist/card-payment-block.css.map +1 -1
  11. package/dist/card-payment-block.mjs +46 -46
  12. package/dist/checkbox.mjs +1 -1
  13. package/dist/chunk-2OTVEVU7.mjs +11 -0
  14. package/dist/chunk-2OTVEVU7.mjs.map +1 -0
  15. package/dist/{chunk-47S6AX7M.mjs → chunk-2PW7KHXJ.mjs} +1 -1
  16. package/dist/chunk-2PW7KHXJ.mjs.map +1 -0
  17. package/dist/{chunk-CMA7TSQG.mjs → chunk-35VEFUPA.mjs} +4 -4
  18. package/dist/chunk-35VEFUPA.mjs.map +1 -0
  19. package/dist/{chunk-ZWJSMASL.mjs → chunk-3AGRJPPN.mjs} +3 -3
  20. package/dist/chunk-3AGRJPPN.mjs.map +1 -0
  21. package/dist/{chunk-MRJOYGDD.mjs → chunk-3TAXDPV6.mjs} +2 -2
  22. package/dist/{chunk-MRJOYGDD.mjs.map → chunk-3TAXDPV6.mjs.map} +1 -1
  23. package/dist/{chunk-5DQUZENZ.mjs → chunk-6F3XKP3G.mjs} +2 -2
  24. package/dist/chunk-6F3XKP3G.mjs.map +1 -0
  25. package/dist/{chunk-HEKVJKLH.mjs → chunk-6UK5Y6KZ.mjs} +2 -2
  26. package/dist/{chunk-HEKVJKLH.mjs.map → chunk-6UK5Y6KZ.mjs.map} +1 -1
  27. package/dist/{chunk-EWNPNF2B.mjs → chunk-76V2THLN.mjs} +3 -3
  28. package/dist/chunk-76V2THLN.mjs.map +1 -0
  29. package/dist/chunk-7GLTVVKS.mjs +12 -0
  30. package/dist/chunk-7GLTVVKS.mjs.map +1 -0
  31. package/dist/{chunk-UUWBHZKH.mjs → chunk-7MH2LXFV.mjs} +4 -4
  32. package/dist/{chunk-UUWBHZKH.mjs.map → chunk-7MH2LXFV.mjs.map} +1 -1
  33. package/dist/{chunk-7YKZ7D7U.mjs → chunk-ATNP3Z6G.mjs} +2 -2
  34. package/dist/{chunk-25FJ277C.mjs → chunk-AYH56CFA.mjs} +3 -3
  35. package/dist/chunk-AYH56CFA.mjs.map +1 -0
  36. package/dist/{chunk-NEJOZRKV.mjs → chunk-BK5RX7N5.mjs} +2 -2
  37. package/dist/chunk-BK5RX7N5.mjs.map +1 -0
  38. package/dist/{chunk-F6ZWBNIM.mjs → chunk-CIUW5YZ7.mjs} +2 -2
  39. package/dist/chunk-CIUW5YZ7.mjs.map +1 -0
  40. package/dist/{chunk-WMFTYTMD.mjs → chunk-CZC4EJOD.mjs} +3 -3
  41. package/dist/chunk-CZC4EJOD.mjs.map +1 -0
  42. package/dist/{chunk-CEK5K5TU.mjs → chunk-D3VRYN5H.mjs} +4 -4
  43. package/dist/chunk-D3VRYN5H.mjs.map +1 -0
  44. package/dist/{chunk-W3DRXKTC.mjs → chunk-DBTYTFGU.mjs} +2 -2
  45. package/dist/chunk-DBTYTFGU.mjs.map +1 -0
  46. package/dist/{chunk-JCWSMIVA.mjs → chunk-E6KQBM7F.mjs} +2 -2
  47. package/dist/chunk-E6KQBM7F.mjs.map +1 -0
  48. package/dist/{chunk-5FPVCRAI.mjs → chunk-ECOC3JRK.mjs} +1 -1
  49. package/dist/{chunk-5FPVCRAI.mjs.map → chunk-ECOC3JRK.mjs.map} +1 -1
  50. package/dist/{chunk-3LINEESX.mjs → chunk-EH3ZVEVT.mjs} +1 -1
  51. package/dist/chunk-EH3ZVEVT.mjs.map +1 -0
  52. package/dist/{chunk-YJKULMWM.mjs → chunk-EX5FMSQL.mjs} +2 -2
  53. package/dist/chunk-EX5FMSQL.mjs.map +1 -0
  54. package/dist/{chunk-ASCPOK5F.mjs → chunk-FVUORQJX.mjs} +4 -4
  55. package/dist/chunk-FVUORQJX.mjs.map +1 -0
  56. package/dist/{chunk-WFRV27QA.mjs → chunk-G5A3E5IG.mjs} +3 -3
  57. package/dist/chunk-G5A3E5IG.mjs.map +1 -0
  58. package/dist/{chunk-2IL2LP47.mjs → chunk-HOCKBMTF.mjs} +3 -3
  59. package/dist/chunk-HOCKBMTF.mjs.map +1 -0
  60. package/dist/{chunk-FRIXS4BL.mjs → chunk-JPF3K5TD.mjs} +1 -1
  61. package/dist/chunk-JPF3K5TD.mjs.map +1 -0
  62. package/dist/{chunk-AYXC2DCM.mjs → chunk-K2G6O2LX.mjs} +3 -3
  63. package/dist/chunk-K2G6O2LX.mjs.map +1 -0
  64. package/dist/chunk-LVJYP46A.mjs +9 -0
  65. package/dist/chunk-LVJYP46A.mjs.map +1 -0
  66. package/dist/{chunk-VQ3MZS4J.mjs → chunk-MPIWXVKP.mjs} +2 -2
  67. package/dist/chunk-MPIWXVKP.mjs.map +1 -0
  68. package/dist/{chunk-DZABAR36.mjs → chunk-NJC2WLYK.mjs} +2 -2
  69. package/dist/chunk-NJC2WLYK.mjs.map +1 -0
  70. package/dist/{chunk-5CGIKL2Y.mjs → chunk-OG6UBKMG.mjs} +2 -2
  71. package/dist/chunk-OG6UBKMG.mjs.map +1 -0
  72. package/dist/chunk-PEODF7PL.mjs +34 -0
  73. package/dist/chunk-PEODF7PL.mjs.map +1 -0
  74. package/dist/{chunk-FAFXVD4P.mjs → chunk-PJZVMYPN.mjs} +4 -4
  75. package/dist/chunk-PJZVMYPN.mjs.map +1 -0
  76. package/dist/{chunk-KEIDXVZB.mjs → chunk-PT4IH2KW.mjs} +2 -2
  77. package/dist/chunk-PT4IH2KW.mjs.map +1 -0
  78. package/dist/{chunk-MXH3TZWM.mjs → chunk-QFECX4D6.mjs} +1 -1
  79. package/dist/chunk-QFECX4D6.mjs.map +1 -0
  80. package/dist/{chunk-5VH26DHQ.mjs → chunk-QMFUWXJJ.mjs} +1 -1
  81. package/dist/chunk-QMFUWXJJ.mjs.map +1 -0
  82. package/dist/chunk-R4A5DO7E.mjs +12 -0
  83. package/dist/chunk-R4A5DO7E.mjs.map +1 -0
  84. package/dist/{chunk-LQQDRIZN.mjs → chunk-RGCO6BCU.mjs} +3 -3
  85. package/dist/chunk-RGCO6BCU.mjs.map +1 -0
  86. package/dist/{chunk-PPMW7YAZ.mjs → chunk-SFSA2WUE.mjs} +28 -28
  87. package/dist/chunk-SFSA2WUE.mjs.map +1 -0
  88. package/dist/{chunk-XUXHB434.mjs → chunk-SM4TG5VI.mjs} +1 -1
  89. package/dist/chunk-SM4TG5VI.mjs.map +1 -0
  90. package/dist/{chunk-D6H235SZ.mjs → chunk-UPAA75QA.mjs} +1 -1
  91. package/dist/chunk-UPAA75QA.mjs.map +1 -0
  92. package/dist/{chunk-256SAVHD.mjs → chunk-W3XYS7M3.mjs} +1 -1
  93. package/dist/{chunk-256SAVHD.mjs.map → chunk-W3XYS7M3.mjs.map} +1 -1
  94. package/dist/chunk-X2JENUDV.mjs +16 -0
  95. package/dist/chunk-X2JENUDV.mjs.map +1 -0
  96. package/dist/chunk-XBWUYKZW.mjs +10 -0
  97. package/dist/chunk-XBWUYKZW.mjs.map +1 -0
  98. package/dist/{chunk-Q365BFES.mjs → chunk-YJINOUZ7.mjs} +1 -1
  99. package/dist/chunk-YJINOUZ7.mjs.map +1 -0
  100. package/dist/{chunk-4IKXV4FQ.mjs → chunk-Z5YZVKS5.mjs} +2 -2
  101. package/dist/{chunk-ZHCGY4YB.mjs → chunk-ZO5NWKNY.mjs} +2 -2
  102. package/dist/{chunk-ZHCGY4YB.mjs.map → chunk-ZO5NWKNY.mjs.map} +1 -1
  103. package/dist/color-picker.mjs +1 -1
  104. package/dist/dashboard-notification.mjs +1 -1
  105. package/dist/date-range-picker.mjs +4 -4
  106. package/dist/drag-and-drop.css +1 -1
  107. package/dist/drag-and-drop.css.map +1 -1
  108. package/dist/drag-and-drop.mjs +46 -46
  109. package/dist/draggable-stacked-list-item.mjs +2 -2
  110. package/dist/drawer.mjs +1 -1
  111. package/dist/dropdown.mjs +1 -1
  112. package/dist/feature-cards/feature-card.mjs +2 -2
  113. package/dist/featurePageComponents/feature-page-group.mjs +1 -1
  114. package/dist/file-picker/file-listing.d.ts +1 -1
  115. package/dist/file-picker/file-listing.mjs +2 -2
  116. package/dist/file-picker/file-picker.css +1 -1
  117. package/dist/file-picker/file-picker.css.map +1 -1
  118. package/dist/file-picker/file-picker.d.ts +2 -2
  119. package/dist/file-picker/file-picker.mjs +46 -46
  120. package/dist/fixed-alert.mjs +1 -1
  121. package/dist/footer-heart-icon.mjs +1 -1
  122. package/dist/form-row.mjs +2 -2
  123. package/dist/index.css +1 -1
  124. package/dist/index.css.map +1 -1
  125. package/dist/index.mjs +46 -46
  126. package/dist/input-copy.mjs +2 -2
  127. package/dist/label.mjs +1 -1
  128. package/dist/layout/layout.css +1 -1
  129. package/dist/layout/layout.css.map +1 -1
  130. package/dist/layout/layout.mjs +46 -46
  131. package/dist/loading-button.mjs +1 -1
  132. package/dist/love-footer.mjs +2 -2
  133. package/dist/mini-feature-block.mjs +2 -2
  134. package/dist/modal.mjs +1 -1
  135. package/dist/navbar/navbar.mjs +1 -1
  136. package/dist/no-results-block.d.ts +1 -1
  137. package/dist/no-results-block.mjs +1 -1
  138. package/dist/page-header.mjs +2 -2
  139. package/dist/pagination/pagination.mjs +1 -1
  140. package/dist/product-picker/product-drawer.css +1 -1
  141. package/dist/product-picker/product-drawer.css.map +1 -1
  142. package/dist/product-picker/product-drawer.mjs +46 -46
  143. package/dist/product-picker/product-listing.d.ts +1 -1
  144. package/dist/product-picker/product-listing.mjs +2 -2
  145. package/dist/progress-bar.mjs +1 -1
  146. package/dist/radio.mjs +1 -1
  147. package/dist/rich-text-editor/index.mjs +1 -1
  148. package/dist/search/search.mjs +1 -1
  149. package/dist/select.mjs +1 -1
  150. package/dist/sort/sort.mjs +1 -1
  151. package/dist/spinner.mjs +1 -1
  152. package/dist/stacked-list-item.css +1 -1
  153. package/dist/stacked-list-item.css.map +1 -1
  154. package/dist/stacked-list-item.mjs +46 -46
  155. package/dist/table-header/table-header.mjs +3 -3
  156. package/dist/table-result-block.css +1 -1
  157. package/dist/table-result-block.css.map +1 -1
  158. package/dist/table-result-block.mjs +46 -46
  159. package/dist/text-row.mjs +1 -1
  160. package/dist/textarea.mjs +1 -1
  161. package/dist/textinput.mjs +1 -1
  162. package/dist/toast/index.mjs +1 -1
  163. package/dist/toggleswitch.mjs +1 -1
  164. package/dist/tooltip/tooltip.mjs +1 -1
  165. package/dist/video-dashboard-notification.mjs +1 -1
  166. package/dist/video-modal.mjs +1 -1
  167. package/package.json +4 -2
  168. package/src/accordion.tsx +120 -58
  169. package/src/alert-banner.tsx +78 -56
  170. package/src/avatar.tsx +71 -49
  171. package/src/badge.tsx +38 -30
  172. package/src/breadcrumb.tsx +28 -21
  173. package/src/checkbox.tsx +28 -20
  174. package/src/color-picker.tsx +2 -4
  175. package/src/dashboard-notification.tsx +1 -2
  176. package/src/date-range-picker.tsx +208 -139
  177. package/src/drag-and-drop.tsx +4 -4
  178. package/src/draggable-stacked-list-item.tsx +2 -2
  179. package/src/drawer.tsx +2 -2
  180. package/src/dropdown.tsx +91 -73
  181. package/src/featurePageComponents/feature-page-group.tsx +0 -1
  182. package/src/file-picker/file-listing.tsx +86 -38
  183. package/src/file-picker/file-picker.tsx +296 -212
  184. package/src/fixed-alert.tsx +2 -5
  185. package/src/footer-heart-icon.tsx +31 -7
  186. package/src/form-row.tsx +1 -1
  187. package/src/index.tsx +1 -1
  188. package/src/input-copy.tsx +1 -1
  189. package/src/label.tsx +12 -6
  190. package/src/layout/layout.tsx +2 -2
  191. package/src/loading-button.tsx +21 -21
  192. package/src/mini-feature-block.tsx +2 -6
  193. package/src/modal.tsx +46 -34
  194. package/src/navbar/navbar.tsx +1 -1
  195. package/src/no-results-block.tsx +7 -3
  196. package/src/page-header.tsx +13 -8
  197. package/src/pagination/pagination.tsx +1 -1
  198. package/src/product-picker/product-drawer.tsx +226 -144
  199. package/src/product-picker/product-listing.tsx +84 -45
  200. package/src/progress-bar.tsx +39 -25
  201. package/src/radio.tsx +11 -11
  202. package/src/rich-text-editor/headless-editor.ts +5 -5
  203. package/src/search/search.tsx +4 -4
  204. package/src/select.tsx +2 -3
  205. package/src/sort/sort.tsx +33 -31
  206. package/src/spinner.tsx +3 -3
  207. package/src/stacked-list-item.tsx +1 -1
  208. package/src/table-header/table-header.tsx +114 -90
  209. package/src/table-result-block.tsx +12 -10
  210. package/src/text-row.tsx +1 -1
  211. package/src/textarea.tsx +27 -24
  212. package/src/textinput.tsx +31 -28
  213. package/src/toast/index.tsx +4 -4
  214. package/src/toggleswitch.tsx +3 -1
  215. package/src/tooltip/tooltip.tsx +1 -1
  216. package/src/video-dashboard-notification.tsx +0 -2
  217. package/src/video-modal.tsx +2 -5
  218. package/dist/chunk-25FJ277C.mjs.map +0 -1
  219. package/dist/chunk-2IL2LP47.mjs.map +0 -1
  220. package/dist/chunk-3LINEESX.mjs.map +0 -1
  221. package/dist/chunk-47S6AX7M.mjs.map +0 -1
  222. package/dist/chunk-5CGIKL2Y.mjs.map +0 -1
  223. package/dist/chunk-5DQUZENZ.mjs.map +0 -1
  224. package/dist/chunk-5VH26DHQ.mjs.map +0 -1
  225. package/dist/chunk-ASCPOK5F.mjs.map +0 -1
  226. package/dist/chunk-AYXC2DCM.mjs.map +0 -1
  227. package/dist/chunk-CEK5K5TU.mjs.map +0 -1
  228. package/dist/chunk-CMA7TSQG.mjs.map +0 -1
  229. package/dist/chunk-CZNQ24DQ.mjs +0 -16
  230. package/dist/chunk-CZNQ24DQ.mjs.map +0 -1
  231. package/dist/chunk-D6H235SZ.mjs.map +0 -1
  232. package/dist/chunk-DZABAR36.mjs.map +0 -1
  233. package/dist/chunk-EWNPNF2B.mjs.map +0 -1
  234. package/dist/chunk-F6ZWBNIM.mjs.map +0 -1
  235. package/dist/chunk-FAFXVD4P.mjs.map +0 -1
  236. package/dist/chunk-FRIXS4BL.mjs.map +0 -1
  237. package/dist/chunk-HZTQAUGX.mjs +0 -34
  238. package/dist/chunk-HZTQAUGX.mjs.map +0 -1
  239. package/dist/chunk-JACXLYPD.mjs +0 -12
  240. package/dist/chunk-JACXLYPD.mjs.map +0 -1
  241. package/dist/chunk-JCWSMIVA.mjs.map +0 -1
  242. package/dist/chunk-KEIDXVZB.mjs.map +0 -1
  243. package/dist/chunk-LQQDRIZN.mjs.map +0 -1
  244. package/dist/chunk-MXH3TZWM.mjs.map +0 -1
  245. package/dist/chunk-NEJOZRKV.mjs.map +0 -1
  246. package/dist/chunk-PPMW7YAZ.mjs.map +0 -1
  247. package/dist/chunk-Q365BFES.mjs.map +0 -1
  248. package/dist/chunk-REFCK56T.mjs +0 -12
  249. package/dist/chunk-REFCK56T.mjs.map +0 -1
  250. package/dist/chunk-VPLCWU7T.mjs +0 -9
  251. package/dist/chunk-VPLCWU7T.mjs.map +0 -1
  252. package/dist/chunk-VQ3MZS4J.mjs.map +0 -1
  253. package/dist/chunk-W3DRXKTC.mjs.map +0 -1
  254. package/dist/chunk-WFRV27QA.mjs.map +0 -1
  255. package/dist/chunk-WLJEFSES.mjs +0 -10
  256. package/dist/chunk-WLJEFSES.mjs.map +0 -1
  257. package/dist/chunk-WMFTYTMD.mjs.map +0 -1
  258. package/dist/chunk-XUXHB434.mjs.map +0 -1
  259. package/dist/chunk-YJKULMWM.mjs.map +0 -1
  260. package/dist/chunk-ZJATBQ3X.mjs +0 -10
  261. package/dist/chunk-ZJATBQ3X.mjs.map +0 -1
  262. package/dist/chunk-ZWJSMASL.mjs.map +0 -1
  263. /package/dist/{chunk-7YKZ7D7U.mjs.map → chunk-ATNP3Z6G.mjs.map} +0 -0
  264. /package/dist/{chunk-4IKXV4FQ.mjs.map → chunk-Z5YZVKS5.mjs.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  //@ts-nocheck
2
- import { useState, useRef, useMemo, createContext } from 'react'
2
+ import { useState, useRef, useMemo, useEffect, createContext } from 'react'
3
3
  //@ts-nocheck
4
4
  import { Select } from './select'
5
5
  import { Button } from './button'
@@ -13,120 +13,143 @@ const DropdownContext = createContext()
13
13
 
14
14
  // BUTTON CLASSES
15
15
  const buttonProps = variantProps({
16
- base: 'pl-2 pr-2 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium text-sm py-2.5 text-center inline-flex items-center dark:text-white',
16
+ base: 'focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium text-sm py-2.5 text-center inline-flex items-center dark:text-white w-full md:w-auto',
17
17
  variants: {
18
18
  color: {
19
- blue: 'text-white bg-blue-700 hover:bg-blue-800 dark:bg-blue-600 dark:hover:bg-blue-700 focus:ring-blue-300',
20
- gray: 'text-white bg-gray-400 hover:bg-gray-600 dark:bg-gray-600 dark:hover:bg-gray-700 focus:ring-gray-300',
21
- lightGray: 'text-slate-700 bg-white focus:ring-slate-300 border border-gray-300 dark:bg-gray-700 dark:border-gray-600 focus:ring-blue-300',
22
- green: 'text-white bg-green-700 hover:bg-green-800 dark:bg-green-600 dark:hover:bg-green-700 focus:ring-green-300',
23
- red: 'text-white bg-red-700 hover:bg-red-800 dark:bg-red-600 dark:hover:bg-red-700 focus:ring-red-300',
24
- yellow: 'text-white bg-yellow-700 hover:bg-yellow-800 dark:bg-yellow-600 dark:hover:bg-yellow-700 focus:ring-yellow-300',
19
+ blue: "text-white bg-blue-700 hover:bg-blue-800 dark:bg-blue-600 dark:hover:bg-blue-700 focus:ring-blue-300",
20
+ gray: "text-white bg-gray-400 hover:bg-gray-600 dark:bg-gray-600 dark:hover:bg-gray-700 focus:ring-gray-300",
21
+ lightGray:
22
+ "text-slate-700 bg-white focus:ring-slate-300 border border-gray-300 dark:bg-gray-700 dark:border-gray-600 focus:ring-blue-300",
23
+ green:
24
+ "text-white bg-green-700 hover:bg-green-800 dark:bg-green-600 dark:hover:bg-green-700 focus:ring-green-300",
25
+ red: "text-white bg-red-700 hover:bg-red-800 dark:bg-red-600 dark:hover:bg-red-700 focus:ring-red-300",
26
+ yellow:
27
+ "text-white bg-yellow-700 hover:bg-yellow-800 dark:bg-yellow-600 dark:hover:bg-yellow-700 focus:ring-yellow-300",
25
28
  },
26
29
  size: {
27
- sm: 'px-5 py-1.5',
28
- md: 'px-5 py-2.5',
29
- lg: 'px-5 py-3.5',
30
+ sm: "px-5 py-1.5",
31
+ md: "px-5 py-2.5",
32
+ lg: "px-5 py-3.5",
30
33
  // WORKAROUND: Compound variants don't work with classname-variants/react (revisit later)
31
- rsm: 'px-2.5 py-2.5',
32
- rmd: 'px-3.5 py-3.5',
33
- rlg: 'px-4.5 py-4.5',
34
+ rsm: "px-2.5 py-2.5",
35
+ rmd: "px-3.5 py-3.5",
36
+ rlg: "px-4.5 py-4.5",
34
37
  },
35
38
  type: {
36
- rect: 'rounded-lg',
37
- round: 'rounded-full',
39
+ rect: "rounded-lg",
40
+ round: "rounded-full",
38
41
  },
39
42
  defaultVariants: {
40
- color: 'blue',
41
- size: 'md',
42
- type: 'rect',
43
+ color: "blue",
44
+ size: "md",
45
+ type: "rect",
43
46
  },
44
47
  },
45
- })
46
-
47
- const DropdownState = Object.freeze({
48
- OPEN: 'open',
49
- CLOSED: 'closed',
50
- })
48
+ });
51
49
 
52
50
  const dateRangeType = Object.freeze({
53
- SELECT: { value: 0, display: 'Select Date Range' },
54
- TODAY: { value: 2, display: 'Today' },
55
- WEEK: { value: 3, display: 'Last Week' },
56
- MONTH: { value: 4, display: 'Last Month' },
57
- THREE_MONTH: { value: 5, display: 'Last 3 Months' },
58
- YEAR: { value: 6, display: 'Last Year' },
59
- CUSTOM: { value: 7, display: 'Custom Date Range' },
60
- })
51
+ SELECT: { value: 0, display: "Select Date Range" },
52
+ TODAY: { value: 2, display: "Today" },
53
+ WEEK: { value: 3, display: "Last Week" },
54
+ MONTH: { value: 4, display: "Last Month" },
55
+ THREE_MONTH: { value: 5, display: "Last 3 Months" },
56
+ YEAR: { value: 6, display: "Last Year" },
57
+ CUSTOM: { value: 7, display: "Custom Date Range" },
58
+ });
61
59
 
62
60
  function getSelectOptions(currentValue) {
63
61
  const options = [
64
62
  { value: dateRangeType.TODAY.value, display: dateRangeType.TODAY.display },
65
63
  { value: dateRangeType.WEEK.value, display: dateRangeType.WEEK.display },
66
64
  { value: dateRangeType.MONTH.value, display: dateRangeType.MONTH.display },
67
- { value: dateRangeType.THREE_MONTH.value, display: dateRangeType.THREE_MONTH.display },
65
+ {
66
+ value: dateRangeType.THREE_MONTH.value,
67
+ display: dateRangeType.THREE_MONTH.display,
68
+ },
68
69
  { value: dateRangeType.YEAR.value, display: dateRangeType.YEAR.display },
69
- { value: dateRangeType.CUSTOM.value, display: dateRangeType.CUSTOM.display },
70
- ]
70
+ {
71
+ value: dateRangeType.CUSTOM.value,
72
+ display: dateRangeType.CUSTOM.display,
73
+ },
74
+ ];
71
75
 
72
- if (currentValue === dateRangeType.SELECT.value) options.unshift({ value: dateRangeType.SELECT.value, display: dateRangeType.SELECT.display })
73
- return options
76
+ if (currentValue === dateRangeType.SELECT.value)
77
+ options.unshift({
78
+ value: dateRangeType.SELECT.value,
79
+ display: dateRangeType.SELECT.display,
80
+ });
81
+ return options;
74
82
  }
75
83
 
76
84
  function dateRangeCalculation(dateType) {
77
- var d = new Date()
78
- let obj = { From: null, To: null }
85
+ var d = new Date();
86
+ let obj = { From: null, To: null };
79
87
  switch (dateType) {
80
88
  case dateRangeType.TODAY.value:
81
- obj.From = new Date()
82
- break
89
+ obj.From = new Date();
90
+ break;
83
91
  case dateRangeType.WEEK.value:
84
- d.setDate(d.getDate() - 7)
85
- obj.From = d
86
- break
92
+ d.setDate(d.getDate() - 7);
93
+ obj.From = d;
94
+ break;
87
95
  case dateRangeType.MONTH.value:
88
- d.setMonth(d.getMonth() - 1)
89
- obj.From = d
90
- break
96
+ d.setMonth(d.getMonth() - 1);
97
+ obj.From = d;
98
+ break;
91
99
  case dateRangeType.THREE_MONTH.value:
92
- d.setMonth(d.getMonth() - 3)
93
- obj.From = d
94
- break
100
+ d.setMonth(d.getMonth() - 3);
101
+ obj.From = d;
102
+ break;
95
103
  case dateRangeType.YEAR.value:
96
- d.setFullYear(d.getFullYear() - 1)
97
- obj.From = d
98
- break
104
+ d.setFullYear(d.getFullYear() - 1);
105
+ obj.From = d;
106
+ break;
99
107
 
100
108
  default:
101
- break
109
+ break;
102
110
  }
103
111
 
104
- if (!obj) return
112
+ if (!obj) return;
105
113
 
106
- obj.From = obj.From
107
- obj.To = new Date()
114
+ obj.From = obj.From;
115
+ obj.To = new Date();
108
116
 
109
- return obj
117
+ return obj;
110
118
  }
111
119
 
112
120
  export function DateRangePicker({ id, className='', title = 'Date Range', type = 'rect', color = 'lightGray', align = 'left', size = 'sm', callback }) {
113
- const [showDropdown, setShowDropdown] = useState(DropdownState.CLOSED)
121
+ const [showDropdown, setShowDropdown] = useState(false)
114
122
  const handleShowDropdown = () => {
115
- setShowDropdown(DropdownState.OPEN)
123
+ setShowDropdown(true)
116
124
  }
117
125
 
126
+ const ref = useRef(null)
127
+
128
+ useEffect(() => {
129
+ const handleClickOutside = (e) => {
130
+ if (ref.current && !ref.current.contains(e.target)) {
131
+ setShowDropdown(false)
132
+ }
133
+ }
134
+
135
+ document.addEventListener('click', handleClickOutside, true)
136
+ return () => {
137
+ document.removeEventListener('click', handleClickOutside, true)
138
+ }
139
+ }, [])
140
+
118
141
  const MinDate = useMemo(() => {
119
- var d = new Date()
120
- d.setDate(d.getDate() - 1)
121
- return d
122
- }, [new Date().getDay()])
142
+ var d = new Date();
143
+ d.setDate(d.getDate() - 1);
144
+ return d;
145
+ }, [new Date().getDay()]);
123
146
 
124
147
  const MaxDate = useMemo(() => {
125
- return new Date(new Date().setMinutes(0, 0, 0))
126
- }, [new Date().getDay()])
148
+ return new Date(new Date().setMinutes(0, 0, 0));
149
+ }, [new Date().getDay()]);
127
150
 
128
- const [err, setErr] = useState(false)
129
- const [dateErr, setDateErr] = useState(false)
151
+ const [err, setErr] = useState(false);
152
+ const [dateErr, setDateErr] = useState(false);
130
153
 
131
154
  const {
132
155
  control,
@@ -136,90 +159,99 @@ export function DateRangePicker({ id, className='', title = 'Date Range', type =
136
159
  formState: { errors },
137
160
  } = useForm({
138
161
  defaultValues: {
139
- start: MinDate.toISOString().split('T')[0],
140
- end: MaxDate.toISOString().split('T')[0],
162
+ start: MinDate.toISOString().split("T")[0],
163
+ end: MaxDate.toISOString().split("T")[0],
141
164
  dateSelect: dateRangeType.SELECT.value,
142
165
  },
143
- })
166
+ });
144
167
 
145
- const watchDateType = watch('dateSelect')
168
+ const watchDateType = watch("dateSelect");
146
169
  const debouncedExport = useRef(
147
170
  debounce((data) => {
148
- exportRequest(data)
149
- }, 1000),
150
- ).current
171
+ exportRequest(data);
172
+ }, 1000)
173
+ ).current;
151
174
 
152
175
  const handleCancel = (e) => {
153
- e.preventDefault()
154
- setShowDropdown(false)
155
- setDateErr(false)
156
- reset()
157
- }
176
+ e.preventDefault();
177
+ setShowDropdown(false);
178
+ setDateErr(false);
179
+ reset();
180
+ };
158
181
 
159
182
  const onSubmit = (data) => {
160
- debouncedExport(data)
161
- }
183
+ debouncedExport(data);
184
+ };
162
185
 
163
186
  const exportRequest = (data) => {
164
187
  if (data.emptyChk) {
165
- setErr(true)
166
- return
188
+ setErr(true);
189
+ return;
167
190
  }
168
191
 
169
- const mode = getSelectOptions(parseInt(data.dateSelect)).find((x) => x.value === parseInt(data.dateSelect))
170
- let fromDate = new Date(data.start)
171
- let toDate = new Date(data.end)
192
+ const mode = getSelectOptions(parseInt(data.dateSelect)).find(
193
+ (x) => x.value === parseInt(data.dateSelect)
194
+ );
195
+ let fromDate = new Date(data.start);
196
+ let toDate = new Date(data.end);
172
197
 
173
198
  if (mode.value < dateRangeType.CUSTOM.value) {
174
- let obj = dateRangeCalculation(mode.value)
175
- fromDate = obj.From
176
- toDate = obj.To
199
+ let obj = dateRangeCalculation(mode.value);
200
+ fromDate = obj.From;
201
+ toDate = obj.To;
177
202
  }
178
203
 
179
- fromDate.setUTCHours(0, 0, 0, 0)
204
+ fromDate.setUTCHours(0, 0, 0, 0);
180
205
 
181
- toDate.setUTCHours(23, 59, 59, 59)
206
+ toDate.setUTCHours(23, 59, 59, 59);
182
207
 
183
208
  if (toDate < fromDate) {
184
- setDateErr(true)
185
- return
209
+ setDateErr(true);
210
+ return;
186
211
  }
187
-
212
+
188
213
  callback({
189
214
  Mode: mode,
190
215
  From: fromDate,
191
216
  To: toDate,
192
- })
217
+ });
193
218
 
194
219
  reset()
195
- setShowDropdown(DropdownState.CLOSED)
220
+ setShowDropdown(false)
196
221
  }
197
222
 
198
223
  const onChanged = () => {
199
- if (dateErr) setDateErr(false)
200
- }
224
+ if (dateErr) setDateErr(false);
225
+ };
201
226
 
202
227
  const renderContent = () => (
203
228
  <div className={className}>
204
- <FormRow label="Date Range" htmlFor="dateSelect" className="mb-4" helperText="Please choose date range from which you want to export.">
229
+ <FormRow
230
+ label="Date Range"
231
+ htmlFor="dateSelect"
232
+ className="mb-4"
233
+ helperText="Please choose date range from which you want to export."
234
+ >
205
235
  <Controller
206
236
  name="dateSelect"
207
237
  control={control}
208
238
  rules={{
209
- required: 'Please select a date range.',
210
- validate: { selected: (r) => r !== 0 || 'Please select a date range.' },
239
+ required: "Please select a date range.",
240
+ validate: {
241
+ selected: (r) => r !== 0 || "Please select a date range.",
242
+ },
211
243
  }}
212
244
  render={({ field }) => (
213
245
  <Select
214
246
  id="dateSelect"
215
247
  defaultValue={field.value}
216
248
  onChange={(e) => {
217
- field.onChange(e)
218
- onChanged()
249
+ field.onChange(e);
250
+ onChanged();
219
251
  }}
220
252
  options={getSelectOptions(field.value)}
221
253
  ref={field.ref}
222
- color={errors.dateSelect ? 'failure' : 'gray'}
254
+ color={errors.dateSelect ? "failure" : "gray"}
223
255
  />
224
256
  )}
225
257
  />
@@ -231,8 +263,12 @@ export function DateRangePicker({ id, className='', title = 'Date Range', type =
231
263
  name="start"
232
264
  control={control}
233
265
  rules={{
234
- required: 'A start date is required.',
235
- validate: { whitespace: (v) => (v?.toString().trim() || '').length > 0 || 'A start date is required.' },
266
+ required: "A start date is required.",
267
+ validate: {
268
+ whitespace: (v) =>
269
+ (v?.toString().trim() || "").length > 0 ||
270
+ "A start date is required.",
271
+ },
236
272
  }}
237
273
  render={({ field }) => (
238
274
  <div className="w-50 pr-1">
@@ -244,23 +280,31 @@ export function DateRangePicker({ id, className='', title = 'Date Range', type =
244
280
  name="start"
245
281
  max={MinDate}
246
282
  onChange={(e) => {
247
- field.onChange(e)
248
- onChanged()
283
+ field.onChange(e);
284
+ onChanged();
249
285
  }}
250
- className="block w-full mt-1"
251
- color={errors.start ? 'failure' : 'gray'}
286
+ className="mt-1 block w-full"
287
+ color={errors.start ? "failure" : "gray"}
252
288
  />
253
289
  </div>
254
290
  )}
255
291
  />
256
- {errors.start && <div className="text-sm text-red-600 dark:text-red-500 mt-1">{errors.start.message}</div>}
292
+ {errors.start && (
293
+ <div className="mt-1 text-sm text-red-600 dark:text-red-500">
294
+ {errors.start.message}
295
+ </div>
296
+ )}
257
297
 
258
298
  <Controller
259
299
  name="end"
260
300
  control={control}
261
301
  rules={{
262
- required: 'An end date is required.',
263
- validate: { whitespace: (v) => (v?.toString().trim() || '').length > 0 || 'An end date is required.' },
302
+ required: "An end date is required.",
303
+ validate: {
304
+ whitespace: (v) =>
305
+ (v?.toString().trim() || "").length > 0 ||
306
+ "An end date is required.",
307
+ },
264
308
  }}
265
309
  render={({ field }) => (
266
310
  <div className="w-50 pr-1">
@@ -272,11 +316,11 @@ export function DateRangePicker({ id, className='', title = 'Date Range', type =
272
316
  name="end"
273
317
  max={MaxDate}
274
318
  onChange={(e) => {
275
- field.onChange(e)
276
- onChanged()
319
+ field.onChange(e);
320
+ onChanged();
277
321
  }}
278
- className="block w-full mt-1"
279
- color={errors.end ? 'failure' : 'gray'}
322
+ className="mt-1 block w-full"
323
+ color={errors.end ? "failure" : "gray"}
280
324
  />
281
325
  </div>
282
326
  )}
@@ -285,11 +329,23 @@ export function DateRangePicker({ id, className='', title = 'Date Range', type =
285
329
  </>
286
330
  )}
287
331
  <div className="h-4">
288
- {errors.end && <div className="text-sm text-red-600 dark:text-red-500 mt-1">{errors.end.message}</div>}
289
- {errors.dateSelect && <div className=" z-50 text-sm text-red-600 dark:text-red-500 ">{errors.dateSelect.message}</div>}
290
- {dateErr && <div className="text-sm text-red-600 dark:text-red-500 mt-1">A valid custom date range is required.</div>}
332
+ {errors.end && (
333
+ <div className="mt-1 text-sm text-red-600 dark:text-red-500">
334
+ {errors.end.message}
335
+ </div>
336
+ )}
337
+ {errors.dateSelect && (
338
+ <div className=" z-50 text-sm text-red-600 dark:text-red-500 ">
339
+ {errors.dateSelect.message}
340
+ </div>
341
+ )}
342
+ {dateErr && (
343
+ <div className="mt-1 text-sm text-red-600 dark:text-red-500">
344
+ A valid custom date range is required.
345
+ </div>
346
+ )}
291
347
  </div>
292
- <div className="flex gap-4 justify-end">
348
+ <div className="flex justify-end gap-4">
293
349
  <Button color="gray" size="sm" outline onClick={handleCancel}>
294
350
  Cancel
295
351
  </Button>
@@ -298,30 +354,36 @@ export function DateRangePicker({ id, className='', title = 'Date Range', type =
298
354
  </Button>
299
355
  </div>
300
356
  </div>
301
- )
357
+ );
302
358
 
303
359
  return (
304
360
  <div id={`${id}-panel`} className="relative">
305
361
  <DropdownContext.Provider value={{ showDropdown, setShowDropdown }}>
306
- <button id={id} {...buttonProps({ color, size, type })} data-dropdown-toggle={`${id}-dropdown`} type="button" onClick={handleShowDropdown}>
307
- {title}
308
- {type === 'rect' && <BiChevronDown className="pointer-events-none" />}
362
+ <button id={id}
363
+ {...buttonProps({ color, size, type })}
364
+ data-dropdown-toggle={`${id}-dropdown`}
365
+ type="button"
366
+ onClick={handleShowDropdown}
367
+ >
368
+ <span className='flex-auto'>{title}</span>
369
+ {type === 'rect' && <span className='items-right flex justify-end'><BiChevronDown className="pointer-events-none" /></span>}
309
370
  </button>
310
371
  <div
311
372
  id={`${id}-dropdown`}
312
- className={`z-50 w-80 mt-2 absolute ${
313
- showDropdown === DropdownState.OPEN ? '' : 'hidden'
314
- } ${align === 'left' ? 'left-0' : 'right-0'} bg-white divide-y divide-gray-100 rounded-lg shadow w-44 dark:bg-gray-700`}
373
+ ref={ref}
374
+ className={`z-50 w-full md:w-80 mt-2 absolute ${
375
+ showDropdown ? '' : 'hidden'
376
+ } ${align === 'left' ? 'left-0' : 'right-0'} bg-white divide-y divide-gray-100 rounded-lg shadow dark:bg-gray-700`}
315
377
  >
316
- <div className=" py-2 text-sm text-gray-700 dark:text-gray-200" aria-labelledby="dropdownDefaultButton">
378
+ <div className="py-2 text-sm text-gray-700 dark:text-gray-200" aria-labelledby="dropdownDefaultButton">
317
379
  <form className="space-y-6 p-3" onSubmit={handleSubmit(onSubmit)}>
318
- {showDropdown === DropdownState.OPEN && renderContent()}
380
+ {showDropdown && renderContent()}
319
381
  </form>
320
382
  </div>
321
383
  </div>
322
384
  </DropdownContext.Provider>
323
385
  </div>
324
- )
386
+ );
325
387
  }
326
388
 
327
389
  DateRangePicker.propTypes = {
@@ -332,18 +394,25 @@ DateRangePicker.propTypes = {
332
394
  /** This is the title for the DateRangePicker component defaults to 'Date Range'*/
333
395
  title: PropTypes.string,
334
396
  /** Type of button for the DateRangePicker component defaults to 'rect'*/
335
- type: PropTypes.oneOf(['rect', 'round']),
397
+ type: PropTypes.oneOf(["rect", "round"]),
336
398
  /** Color of the button for the DateRangePicker component defaults to 'lightGray'*/
337
- color: PropTypes.oneOf(['blue', 'gray', 'lightGray', 'green', 'red', 'yellow']),
399
+ color: PropTypes.oneOf([
400
+ "blue",
401
+ "gray",
402
+ "lightGray",
403
+ "green",
404
+ "red",
405
+ "yellow",
406
+ ]),
338
407
  /** Aligns the dropdown protion of the DateRangePicker to either the left or right of the button. Defaults to align with the left side of the button*/
339
- align: PropTypes.oneOf(['left', 'right']),
408
+ align: PropTypes.oneOf(["left", "right"]),
340
409
  /** Size of the button for the DateRangePicker component defaults to 'sm'*/
341
- size: PropTypes.oneOf(['sm', 'md', 'lg']),
410
+ size: PropTypes.oneOf(["sm", "md", "lg"]),
342
411
  /** Callback function for the DateRangePicker component outputs the chosen date range in the following format eg:{From:"2024-03-03T00:00:00.000Z" To:"2024-05-03T00:00:00.000Z" Mode:{
343
412
  "value": 7,
344
413
  "display": "Custom Date Range"
345
414
  }} */
346
415
  callback: PropTypes.func.isRequired,
347
- }
416
+ };
348
417
 
349
- DateRangePicker.displayName = "DateRangePicker"
418
+ DateRangePicker.displayName = "DateRangePicker";
@@ -1,10 +1,10 @@
1
1
  // @ts-nocheck
2
+ import PropTypes from "prop-types";
2
3
  import { useEffect, useState } from "react";
3
- import { BsCloudUpload, BsFillCheckCircleFill } from "react-icons/bs";
4
4
  import { BiSearch } from "react-icons/bi";
5
+ import { BsCloudUpload, BsFillCheckCircleFill } from "react-icons/bs";
5
6
  import { FaTimesCircle } from "react-icons/fa";
6
7
  import { Button } from "./index";
7
- import PropTypes from "prop-types";
8
8
 
9
9
  const DragStates = Object.freeze({
10
10
  NONE: "none",
@@ -109,7 +109,7 @@ export function DragAndDrop({
109
109
  <p className="text-xs text-gray-500 dark:text-gray-400">{subtitle}</p>
110
110
  {pickerCallback && (
111
111
  <div className="mt-5">
112
- <Button color="info" onClick={handleLaunchFilePicker}>
112
+ <Button color="default" onClick={handleLaunchFilePicker}>
113
113
  <BiSearch className="mr-2" />
114
114
  Browse File Manager
115
115
  </Button>
@@ -227,4 +227,4 @@ DragAndDrop.propTypes = {
227
227
  pickerCallback: PropTypes.func,
228
228
  };
229
229
 
230
- DragAndDrop.displayName = "DragAndDrop"
230
+ DragAndDrop.displayName = "DragAndDrop";
@@ -1,8 +1,8 @@
1
1
  // @ts-nocheck
2
- import { ToggleSwitch } from "./toggleswitch";
3
- import { HiEllipsisVertical } from "react-icons/hi2";
4
2
  import { useSortable } from "@dnd-kit/sortable";
5
3
  import { CSS } from "@dnd-kit/utilities";
4
+ import { HiEllipsisVertical } from "react-icons/hi2";
5
+ import { ToggleSwitch } from "./toggleswitch";
6
6
 
7
7
  type Props = {
8
8
  id: number;
package/src/drawer.tsx CHANGED
@@ -1,8 +1,8 @@
1
1
  // THIS DRAWER IS FROM THE FLOWBITE LIBRARY PAGE
2
2
 
3
- import { useEffect, useCallback, useState } from "react";
4
3
  import type { DrawerInterface, DrawerOptions } from "flowbite";
5
4
  import { Drawer as FBDrawer } from "flowbite";
5
+ import { useCallback, useEffect, useState } from "react";
6
6
  import { HiXMark } from "react-icons/hi2";
7
7
 
8
8
  type Props = {
@@ -75,4 +75,4 @@ export function Drawer({ show, onClose, children, title }: Props) {
75
75
  );
76
76
  }
77
77
 
78
- Drawer.displayName = "Drawer"
78
+ Drawer.displayName = "Drawer";