react-start-kit-shared 1.0.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 (401) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +236 -0
  3. package/dist/chunks/Actions-2AYZB2tr.es.js +34 -0
  4. package/dist/chunks/Actions-2AYZB2tr.es.js.map +1 -0
  5. package/dist/chunks/Actions-CZS1OCgc.cjs.js +2 -0
  6. package/dist/chunks/Actions-CZS1OCgc.cjs.js.map +1 -0
  7. package/dist/chunks/DateRangePicker-BTWpQRRq.es.js +178 -0
  8. package/dist/chunks/DateRangePicker-BTWpQRRq.es.js.map +1 -0
  9. package/dist/chunks/DateRangePicker-D6Q3vFLO.cjs.js +2 -0
  10. package/dist/chunks/DateRangePicker-D6Q3vFLO.cjs.js.map +1 -0
  11. package/dist/chunks/Empty-BiJ2b9JP.cjs.js +2 -0
  12. package/dist/chunks/Empty-BiJ2b9JP.cjs.js.map +1 -0
  13. package/dist/chunks/Empty-CP4yXr6G.es.js +25 -0
  14. package/dist/chunks/Empty-CP4yXr6G.es.js.map +1 -0
  15. package/dist/chunks/ExportData-Cf-cs_pE.es.js +36 -0
  16. package/dist/chunks/ExportData-Cf-cs_pE.es.js.map +1 -0
  17. package/dist/chunks/ExportData-Yp3Tm5Lv.cjs.js +2 -0
  18. package/dist/chunks/ExportData-Yp3Tm5Lv.cjs.js.map +1 -0
  19. package/dist/chunks/Keyboard-CJVAJWdO.es.js +5 -0
  20. package/dist/chunks/Keyboard-CJVAJWdO.es.js.map +1 -0
  21. package/dist/chunks/Keyboard-kyPAAQWP.cjs.js +2 -0
  22. package/dist/chunks/Keyboard-kyPAAQWP.cjs.js.map +1 -0
  23. package/dist/chunks/Loader-B51uJ48y.cjs.js +2 -0
  24. package/dist/chunks/Loader-B51uJ48y.cjs.js.map +1 -0
  25. package/dist/chunks/Loader-JIMPYfiR.es.js +14 -0
  26. package/dist/chunks/Loader-JIMPYfiR.es.js.map +1 -0
  27. package/dist/chunks/MyInput-BbLCYCkb.es.js +280 -0
  28. package/dist/chunks/MyInput-BbLCYCkb.es.js.map +1 -0
  29. package/dist/chunks/MyInput-CIgmb5kZ.cjs.js +2 -0
  30. package/dist/chunks/MyInput-CIgmb5kZ.cjs.js.map +1 -0
  31. package/dist/chunks/MyPagination-DYYM6ks6.cjs.js +2 -0
  32. package/dist/chunks/MyPagination-DYYM6ks6.cjs.js.map +1 -0
  33. package/dist/chunks/MyPagination-Dtx70bK6.es.js +142 -0
  34. package/dist/chunks/MyPagination-Dtx70bK6.es.js.map +1 -0
  35. package/dist/chunks/MySelect-DWTZ-FuO.es.js +58 -0
  36. package/dist/chunks/MySelect-DWTZ-FuO.es.js.map +1 -0
  37. package/dist/chunks/MySelect-DoX-Qy5y.cjs.js +2 -0
  38. package/dist/chunks/MySelect-DoX-Qy5y.cjs.js.map +1 -0
  39. package/dist/chunks/PasswordConfirm-DGVigQbo.cjs.js +2 -0
  40. package/dist/chunks/PasswordConfirm-DGVigQbo.cjs.js.map +1 -0
  41. package/dist/chunks/PasswordConfirm-DYTMNa33.es.js +3270 -0
  42. package/dist/chunks/PasswordConfirm-DYTMNa33.es.js.map +1 -0
  43. package/dist/chunks/Search-BQKw3els.cjs.js +2 -0
  44. package/dist/chunks/Search-BQKw3els.cjs.js.map +1 -0
  45. package/dist/chunks/Search-DqbIV61m.es.js +147 -0
  46. package/dist/chunks/Search-DqbIV61m.es.js.map +1 -0
  47. package/dist/chunks/SortOrder-81BrXp3i.cjs.js +2 -0
  48. package/dist/chunks/SortOrder-81BrXp3i.cjs.js.map +1 -0
  49. package/dist/chunks/SortOrder-CwuehjY1.es.js +5 -0
  50. package/dist/chunks/SortOrder-CwuehjY1.es.js.map +1 -0
  51. package/dist/chunks/Spin-CCtUPIlI.cjs.js +2 -0
  52. package/dist/chunks/Spin-CCtUPIlI.cjs.js.map +1 -0
  53. package/dist/chunks/Spin-DSBxxpPG.es.js +37 -0
  54. package/dist/chunks/Spin-DSBxxpPG.es.js.map +1 -0
  55. package/dist/chunks/ThemeMode-BO6tit_Z.cjs.js +2 -0
  56. package/dist/chunks/ThemeMode-BO6tit_Z.cjs.js.map +1 -0
  57. package/dist/chunks/ThemeMode-CqURAYDL.es.js +5 -0
  58. package/dist/chunks/ThemeMode-CqURAYDL.es.js.map +1 -0
  59. package/dist/chunks/ThemeProviderContext-CDiIvEe7.es.js +10 -0
  60. package/dist/chunks/ThemeProviderContext-CDiIvEe7.es.js.map +1 -0
  61. package/dist/chunks/ThemeProviderContext-rq2okb30.cjs.js +2 -0
  62. package/dist/chunks/ThemeProviderContext-rq2okb30.cjs.js.map +1 -0
  63. package/dist/chunks/_commonjsHelpers-DKOUU3wS.cjs.js +2 -0
  64. package/dist/chunks/_commonjsHelpers-DKOUU3wS.cjs.js.map +1 -0
  65. package/dist/chunks/_commonjsHelpers-DaMA6jEr.es.js +9 -0
  66. package/dist/chunks/_commonjsHelpers-DaMA6jEr.es.js.map +1 -0
  67. package/dist/chunks/index-ClQFzqcq.cjs.js +2 -0
  68. package/dist/chunks/index-ClQFzqcq.cjs.js.map +1 -0
  69. package/dist/chunks/index-E1NtSoNr.es.js +10 -0
  70. package/dist/chunks/index-E1NtSoNr.es.js.map +1 -0
  71. package/dist/chunks/useColumnsStore-C5UCQBGh.es.js +181 -0
  72. package/dist/chunks/useColumnsStore-C5UCQBGh.es.js.map +1 -0
  73. package/dist/chunks/useColumnsStore-ChRhCpCd.cjs.js +2 -0
  74. package/dist/chunks/useColumnsStore-ChRhCpCd.cjs.js.map +1 -0
  75. package/dist/chunks/useFilter-D93ncAmn.cjs.js +2 -0
  76. package/dist/chunks/useFilter-D93ncAmn.cjs.js.map +1 -0
  77. package/dist/chunks/useFilter-DpCwY1KO.es.js +17 -0
  78. package/dist/chunks/useFilter-DpCwY1KO.es.js.map +1 -0
  79. package/dist/chunks/useSortable-B8xGLknV.cjs.js +2 -0
  80. package/dist/chunks/useSortable-B8xGLknV.cjs.js.map +1 -0
  81. package/dist/chunks/useSortable-DD1y7f_o.es.js +256 -0
  82. package/dist/chunks/useSortable-DD1y7f_o.es.js.map +1 -0
  83. package/dist/chunks/useTheme-hjEZ-FC3.cjs.js +2 -0
  84. package/dist/chunks/useTheme-hjEZ-FC3.cjs.js.map +1 -0
  85. package/dist/chunks/useTheme-iKF3BEvj.es.js +12 -0
  86. package/dist/chunks/useTheme-iKF3BEvj.es.js.map +1 -0
  87. package/dist/components/actions/index.cjs.js +2 -0
  88. package/dist/components/actions/index.cjs.js.map +1 -0
  89. package/dist/components/actions/index.es.js +5 -0
  90. package/dist/components/actions/index.es.js.map +1 -0
  91. package/dist/components/confirm/index.cjs.js +2 -0
  92. package/dist/components/confirm/index.cjs.js.map +1 -0
  93. package/dist/components/confirm/index.es.js +7 -0
  94. package/dist/components/confirm/index.es.js.map +1 -0
  95. package/dist/components/datatable/index.cjs.js +2 -0
  96. package/dist/components/datatable/index.cjs.js.map +1 -0
  97. package/dist/components/datatable/index.es.js +404 -0
  98. package/dist/components/datatable/index.es.js.map +1 -0
  99. package/dist/components/datepicker/index.cjs.js +2 -0
  100. package/dist/components/datepicker/index.cjs.js.map +1 -0
  101. package/dist/components/datepicker/index.es.js +5 -0
  102. package/dist/components/datepicker/index.es.js.map +1 -0
  103. package/dist/components/empty/index.cjs.js +2 -0
  104. package/dist/components/empty/index.cjs.js.map +1 -0
  105. package/dist/components/empty/index.es.js +5 -0
  106. package/dist/components/empty/index.es.js.map +1 -0
  107. package/dist/components/export/index.cjs.js +2 -0
  108. package/dist/components/export/index.cjs.js.map +1 -0
  109. package/dist/components/export/index.es.js +5 -0
  110. package/dist/components/export/index.es.js.map +1 -0
  111. package/dist/components/filters/index.cjs.js +2 -0
  112. package/dist/components/filters/index.cjs.js.map +1 -0
  113. package/dist/components/filters/index.es.js +48 -0
  114. package/dist/components/filters/index.es.js.map +1 -0
  115. package/dist/components/form/index.cjs.js +2 -0
  116. package/dist/components/form/index.cjs.js.map +1 -0
  117. package/dist/components/form/index.es.js +450 -0
  118. package/dist/components/form/index.es.js.map +1 -0
  119. package/dist/components/gallery/index.cjs.js +2 -0
  120. package/dist/components/gallery/index.cjs.js.map +1 -0
  121. package/dist/components/gallery/index.es.js +308 -0
  122. package/dist/components/gallery/index.es.js.map +1 -0
  123. package/dist/components/loader/index.cjs.js +2 -0
  124. package/dist/components/loader/index.cjs.js.map +1 -0
  125. package/dist/components/loader/index.es.js +7 -0
  126. package/dist/components/loader/index.es.js.map +1 -0
  127. package/dist/components/modal/index.cjs.js +2 -0
  128. package/dist/components/modal/index.cjs.js.map +1 -0
  129. package/dist/components/modal/index.es.js +46 -0
  130. package/dist/components/modal/index.es.js.map +1 -0
  131. package/dist/components/pagination/index.cjs.js +2 -0
  132. package/dist/components/pagination/index.cjs.js.map +1 -0
  133. package/dist/components/pagination/index.es.js +6 -0
  134. package/dist/components/pagination/index.es.js.map +1 -0
  135. package/dist/components/scroll/index.cjs.js +2 -0
  136. package/dist/components/scroll/index.cjs.js.map +1 -0
  137. package/dist/components/scroll/index.es.js +16 -0
  138. package/dist/components/scroll/index.es.js.map +1 -0
  139. package/dist/components/theme/index.cjs.js +2 -0
  140. package/dist/components/theme/index.cjs.js.map +1 -0
  141. package/dist/components/theme/index.es.js +26 -0
  142. package/dist/components/theme/index.es.js.map +1 -0
  143. package/dist/components/tooltip/index.cjs.js +2 -0
  144. package/dist/components/tooltip/index.cjs.js.map +1 -0
  145. package/dist/components/tooltip/index.es.js +18 -0
  146. package/dist/components/tooltip/index.es.js.map +1 -0
  147. package/dist/enums/index.cjs.js +2 -0
  148. package/dist/enums/index.cjs.js.map +1 -0
  149. package/dist/enums/index.es.js +9 -0
  150. package/dist/enums/index.es.js.map +1 -0
  151. package/dist/hooks/index.cjs.js +21 -0
  152. package/dist/hooks/index.cjs.js.map +1 -0
  153. package/dist/hooks/index.es.js +1015 -0
  154. package/dist/hooks/index.es.js.map +1 -0
  155. package/dist/index.cjs.js +2 -0
  156. package/dist/index.cjs.js.map +1 -0
  157. package/dist/index.es.js +2 -0
  158. package/dist/index.es.js.map +1 -0
  159. package/dist/providers/index.cjs.js +2 -0
  160. package/dist/providers/index.cjs.js.map +1 -0
  161. package/dist/providers/index.es.js +32 -0
  162. package/dist/providers/index.es.js.map +1 -0
  163. package/dist/stores/index.cjs.js +2 -0
  164. package/dist/stores/index.cjs.js.map +1 -0
  165. package/dist/stores/index.es.js +21 -0
  166. package/dist/stores/index.es.js.map +1 -0
  167. package/dist/styles.css +1 -0
  168. package/dist/types/App.d.ts +3 -0
  169. package/dist/types/App.d.ts.map +1 -0
  170. package/dist/types/components/actions/Actions.d.ts +32 -0
  171. package/dist/types/components/actions/Actions.d.ts.map +1 -0
  172. package/dist/types/components/actions/index.d.ts +2 -0
  173. package/dist/types/components/actions/index.d.ts.map +1 -0
  174. package/dist/types/components/confirm/Confirm.d.ts +27 -0
  175. package/dist/types/components/confirm/Confirm.d.ts.map +1 -0
  176. package/dist/types/components/confirm/PasswordConfirm.d.ts +22 -0
  177. package/dist/types/components/confirm/PasswordConfirm.d.ts.map +1 -0
  178. package/dist/types/components/confirm/index.d.ts +4 -0
  179. package/dist/types/components/confirm/index.d.ts.map +1 -0
  180. package/dist/types/components/datatable/DataTable.d.ts +196 -0
  181. package/dist/types/components/datatable/DataTable.d.ts.map +1 -0
  182. package/dist/types/components/datatable/MyTable.d.ts +56 -0
  183. package/dist/types/components/datatable/MyTable.d.ts.map +1 -0
  184. package/dist/types/components/datatable/index.d.ts +3 -0
  185. package/dist/types/components/datatable/index.d.ts.map +1 -0
  186. package/dist/types/components/datepicker/DateRangePicker.d.ts +50 -0
  187. package/dist/types/components/datepicker/DateRangePicker.d.ts.map +1 -0
  188. package/dist/types/components/datepicker/index.d.ts +2 -0
  189. package/dist/types/components/datepicker/index.d.ts.map +1 -0
  190. package/dist/types/components/empty/Empty.d.ts +19 -0
  191. package/dist/types/components/empty/Empty.d.ts.map +1 -0
  192. package/dist/types/components/empty/index.d.ts +2 -0
  193. package/dist/types/components/empty/index.d.ts.map +1 -0
  194. package/dist/types/components/export/ExportData.d.ts +52 -0
  195. package/dist/types/components/export/ExportData.d.ts.map +1 -0
  196. package/dist/types/components/export/index.d.ts +2 -0
  197. package/dist/types/components/export/index.d.ts.map +1 -0
  198. package/dist/types/components/filters/AppliedFilters.d.ts +24 -0
  199. package/dist/types/components/filters/AppliedFilters.d.ts.map +1 -0
  200. package/dist/types/components/filters/FilterWrapper.d.ts +58 -0
  201. package/dist/types/components/filters/FilterWrapper.d.ts.map +1 -0
  202. package/dist/types/components/filters/Search.d.ts +28 -0
  203. package/dist/types/components/filters/Search.d.ts.map +1 -0
  204. package/dist/types/components/filters/SearchWithCtrl.d.ts +25 -0
  205. package/dist/types/components/filters/SearchWithCtrl.d.ts.map +1 -0
  206. package/dist/types/components/filters/index.d.ts +4 -0
  207. package/dist/types/components/filters/index.d.ts.map +1 -0
  208. package/dist/types/components/form/MyCheckbox.d.ts +20 -0
  209. package/dist/types/components/form/MyCheckbox.d.ts.map +1 -0
  210. package/dist/types/components/form/MyDatePicker.d.ts +43 -0
  211. package/dist/types/components/form/MyDatePicker.d.ts.map +1 -0
  212. package/dist/types/components/form/MyDateRangePicker.d.ts +26 -0
  213. package/dist/types/components/form/MyDateRangePicker.d.ts.map +1 -0
  214. package/dist/types/components/form/MyHtmlEditor.d.ts +26 -0
  215. package/dist/types/components/form/MyHtmlEditor.d.ts.map +1 -0
  216. package/dist/types/components/form/MyInput.d.ts +24 -0
  217. package/dist/types/components/form/MyInput.d.ts.map +1 -0
  218. package/dist/types/components/form/MyMaskInput.d.ts +28 -0
  219. package/dist/types/components/form/MyMaskInput.d.ts.map +1 -0
  220. package/dist/types/components/form/MyRadio.d.ts +25 -0
  221. package/dist/types/components/form/MyRadio.d.ts.map +1 -0
  222. package/dist/types/components/form/MySelect.d.ts +29 -0
  223. package/dist/types/components/form/MySelect.d.ts.map +1 -0
  224. package/dist/types/components/form/MyShadcnSelect.d.ts +39 -0
  225. package/dist/types/components/form/MyShadcnSelect.d.ts.map +1 -0
  226. package/dist/types/components/form/MySwitch.d.ts +20 -0
  227. package/dist/types/components/form/MySwitch.d.ts.map +1 -0
  228. package/dist/types/components/form/MyTextarea.d.ts +24 -0
  229. package/dist/types/components/form/MyTextarea.d.ts.map +1 -0
  230. package/dist/types/components/form/MyTimePicker.d.ts +29 -0
  231. package/dist/types/components/form/MyTimePicker.d.ts.map +1 -0
  232. package/dist/types/components/form/index.d.ts +14 -0
  233. package/dist/types/components/form/index.d.ts.map +1 -0
  234. package/dist/types/components/gallery/MyGallery.d.ts +62 -0
  235. package/dist/types/components/gallery/MyGallery.d.ts.map +1 -0
  236. package/dist/types/components/gallery/index.d.ts +2 -0
  237. package/dist/types/components/gallery/index.d.ts.map +1 -0
  238. package/dist/types/components/index.d.ts +15 -0
  239. package/dist/types/components/index.d.ts.map +1 -0
  240. package/dist/types/components/loader/Loader.d.ts +10 -0
  241. package/dist/types/components/loader/Loader.d.ts.map +1 -0
  242. package/dist/types/components/loader/Spin.d.ts +14 -0
  243. package/dist/types/components/loader/Spin.d.ts.map +1 -0
  244. package/dist/types/components/loader/index.d.ts +4 -0
  245. package/dist/types/components/loader/index.d.ts.map +1 -0
  246. package/dist/types/components/modal/MyModal.d.ts +51 -0
  247. package/dist/types/components/modal/MyModal.d.ts.map +1 -0
  248. package/dist/types/components/modal/index.d.ts +2 -0
  249. package/dist/types/components/modal/index.d.ts.map +1 -0
  250. package/dist/types/components/pagination/MyLimitSelect.d.ts +27 -0
  251. package/dist/types/components/pagination/MyLimitSelect.d.ts.map +1 -0
  252. package/dist/types/components/pagination/MyPagination.d.ts +39 -0
  253. package/dist/types/components/pagination/MyPagination.d.ts.map +1 -0
  254. package/dist/types/components/pagination/index.d.ts +4 -0
  255. package/dist/types/components/pagination/index.d.ts.map +1 -0
  256. package/dist/types/components/scroll/ScrollArea.d.ts +10 -0
  257. package/dist/types/components/scroll/ScrollArea.d.ts.map +1 -0
  258. package/dist/types/components/scroll/index.d.ts +2 -0
  259. package/dist/types/components/scroll/index.d.ts.map +1 -0
  260. package/dist/types/components/theme/index.d.ts +2 -0
  261. package/dist/types/components/theme/index.d.ts.map +1 -0
  262. package/dist/types/components/theme/theme-toggle.d.ts +15 -0
  263. package/dist/types/components/theme/theme-toggle.d.ts.map +1 -0
  264. package/dist/types/components/tooltip/MyTooltip.d.ts +25 -0
  265. package/dist/types/components/tooltip/MyTooltip.d.ts.map +1 -0
  266. package/dist/types/components/tooltip/index.d.ts +3 -0
  267. package/dist/types/components/tooltip/index.d.ts.map +1 -0
  268. package/dist/types/contexts/ThemeProviderContext.d.ts +18 -0
  269. package/dist/types/contexts/ThemeProviderContext.d.ts.map +1 -0
  270. package/dist/types/contexts/index.d.ts +2 -0
  271. package/dist/types/contexts/index.d.ts.map +1 -0
  272. package/dist/types/enums/Keyboard.d.ts +8 -0
  273. package/dist/types/enums/Keyboard.d.ts.map +1 -0
  274. package/dist/types/enums/SortOrder.d.ts +10 -0
  275. package/dist/types/enums/SortOrder.d.ts.map +1 -0
  276. package/dist/types/enums/ThemeMode.d.ts +12 -0
  277. package/dist/types/enums/ThemeMode.d.ts.map +1 -0
  278. package/dist/types/enums/index.d.ts +4 -0
  279. package/dist/types/enums/index.d.ts.map +1 -0
  280. package/dist/types/hooks/index.d.ts +9 -0
  281. package/dist/types/hooks/index.d.ts.map +1 -0
  282. package/dist/types/hooks/useColumns.d.ts +31 -0
  283. package/dist/types/hooks/useColumns.d.ts.map +1 -0
  284. package/dist/types/hooks/useConfirm.d.ts +21 -0
  285. package/dist/types/hooks/useConfirm.d.ts.map +1 -0
  286. package/dist/types/hooks/useDataTable.d.ts +33 -0
  287. package/dist/types/hooks/useDataTable.d.ts.map +1 -0
  288. package/dist/types/hooks/useDocumentTitle.d.ts +9 -0
  289. package/dist/types/hooks/useDocumentTitle.d.ts.map +1 -0
  290. package/dist/types/hooks/useFilter.d.ts +29 -0
  291. package/dist/types/hooks/useFilter.d.ts.map +1 -0
  292. package/dist/types/hooks/useMediaQuerySizes.d.ts +22 -0
  293. package/dist/types/hooks/useMediaQuerySizes.d.ts.map +1 -0
  294. package/dist/types/hooks/useSortable.d.ts +29 -0
  295. package/dist/types/hooks/useSortable.d.ts.map +1 -0
  296. package/dist/types/hooks/useTheme.d.ts +14 -0
  297. package/dist/types/hooks/useTheme.d.ts.map +1 -0
  298. package/dist/types/index.cjs.js +2 -0
  299. package/dist/types/index.cjs.js.map +1 -0
  300. package/dist/types/index.d.ts +1 -0
  301. package/dist/types/index.d.ts.map +1 -0
  302. package/dist/types/index.es.js +2 -0
  303. package/dist/types/index.es.js.map +1 -0
  304. package/dist/types/main.d.ts +1 -0
  305. package/dist/types/main.d.ts.map +1 -0
  306. package/dist/types/providers/ThemeProvider.d.ts +24 -0
  307. package/dist/types/providers/ThemeProvider.d.ts.map +1 -0
  308. package/dist/types/providers/index.d.ts +2 -0
  309. package/dist/types/providers/index.d.ts.map +1 -0
  310. package/dist/types/schemas/createConfirmPasswordSchema.d.ts +20 -0
  311. package/dist/types/schemas/createConfirmPasswordSchema.d.ts.map +1 -0
  312. package/dist/types/schemas/index.d.ts +2 -0
  313. package/dist/types/schemas/index.d.ts.map +1 -0
  314. package/dist/types/stores/index.d.ts +3 -0
  315. package/dist/types/stores/index.d.ts.map +1 -0
  316. package/dist/types/stores/useColumnsStore.d.ts +26 -0
  317. package/dist/types/stores/useColumnsStore.d.ts.map +1 -0
  318. package/dist/types/stores/useDateRangeStore.d.ts +27 -0
  319. package/dist/types/stores/useDateRangeStore.d.ts.map +1 -0
  320. package/dist/types/stories/Actions.stories.d.ts +8 -0
  321. package/dist/types/stories/Actions.stories.d.ts.map +1 -0
  322. package/dist/types/stories/AppliedFilters.stories.d.ts +10 -0
  323. package/dist/types/stories/AppliedFilters.stories.d.ts.map +1 -0
  324. package/dist/types/stories/Confirm.stories.d.ts +8 -0
  325. package/dist/types/stories/Confirm.stories.d.ts.map +1 -0
  326. package/dist/types/stories/DataTable.stories.d.ts +19 -0
  327. package/dist/types/stories/DataTable.stories.d.ts.map +1 -0
  328. package/dist/types/stories/DateRangePicker.stories.d.ts +10 -0
  329. package/dist/types/stories/DateRangePicker.stories.d.ts.map +1 -0
  330. package/dist/types/stories/Empty.stories.d.ts +9 -0
  331. package/dist/types/stories/Empty.stories.d.ts.map +1 -0
  332. package/dist/types/stories/ExportData.stories.d.ts +9 -0
  333. package/dist/types/stories/ExportData.stories.d.ts.map +1 -0
  334. package/dist/types/stories/FilterWrapper.stories.d.ts +9 -0
  335. package/dist/types/stories/FilterWrapper.stories.d.ts.map +1 -0
  336. package/dist/types/stories/Loader.stories.d.ts +7 -0
  337. package/dist/types/stories/Loader.stories.d.ts.map +1 -0
  338. package/dist/types/stories/MyCheckbox.stories.d.ts +8 -0
  339. package/dist/types/stories/MyCheckbox.stories.d.ts.map +1 -0
  340. package/dist/types/stories/MyDatePicker.stories.d.ts +10 -0
  341. package/dist/types/stories/MyDatePicker.stories.d.ts.map +1 -0
  342. package/dist/types/stories/MyDateRangePicker.stories.d.ts +8 -0
  343. package/dist/types/stories/MyDateRangePicker.stories.d.ts.map +1 -0
  344. package/dist/types/stories/MyGallery.stories.d.ts +9 -0
  345. package/dist/types/stories/MyGallery.stories.d.ts.map +1 -0
  346. package/dist/types/stories/MyHtmlEditor.stories.d.ts +8 -0
  347. package/dist/types/stories/MyHtmlEditor.stories.d.ts.map +1 -0
  348. package/dist/types/stories/MyInput.stories.d.ts +10 -0
  349. package/dist/types/stories/MyInput.stories.d.ts.map +1 -0
  350. package/dist/types/stories/MyLimitSelect.stories.d.ts +9 -0
  351. package/dist/types/stories/MyLimitSelect.stories.d.ts.map +1 -0
  352. package/dist/types/stories/MyMaskInput.stories.d.ts +9 -0
  353. package/dist/types/stories/MyMaskInput.stories.d.ts.map +1 -0
  354. package/dist/types/stories/MyModal.stories.d.ts +10 -0
  355. package/dist/types/stories/MyModal.stories.d.ts.map +1 -0
  356. package/dist/types/stories/MyPagination.stories.d.ts +10 -0
  357. package/dist/types/stories/MyPagination.stories.d.ts.map +1 -0
  358. package/dist/types/stories/MyRadio.stories.d.ts +7 -0
  359. package/dist/types/stories/MyRadio.stories.d.ts.map +1 -0
  360. package/dist/types/stories/MySelect.stories.d.ts +10 -0
  361. package/dist/types/stories/MySelect.stories.d.ts.map +1 -0
  362. package/dist/types/stories/MyShadcnSelect.stories.d.ts +9 -0
  363. package/dist/types/stories/MyShadcnSelect.stories.d.ts.map +1 -0
  364. package/dist/types/stories/MySwitch.stories.d.ts +8 -0
  365. package/dist/types/stories/MySwitch.stories.d.ts.map +1 -0
  366. package/dist/types/stories/MyTable.stories.d.ts +19 -0
  367. package/dist/types/stories/MyTable.stories.d.ts.map +1 -0
  368. package/dist/types/stories/MyTextarea.stories.d.ts +9 -0
  369. package/dist/types/stories/MyTextarea.stories.d.ts.map +1 -0
  370. package/dist/types/stories/MyTimePicker.stories.d.ts +9 -0
  371. package/dist/types/stories/MyTimePicker.stories.d.ts.map +1 -0
  372. package/dist/types/stories/MyTooltip.stories.d.ts +10 -0
  373. package/dist/types/stories/MyTooltip.stories.d.ts.map +1 -0
  374. package/dist/types/stories/PasswordConfirm.stories.d.ts +8 -0
  375. package/dist/types/stories/PasswordConfirm.stories.d.ts.map +1 -0
  376. package/dist/types/stories/ScrollArea.stories.d.ts +8 -0
  377. package/dist/types/stories/ScrollArea.stories.d.ts.map +1 -0
  378. package/dist/types/stories/Search.stories.d.ts +8 -0
  379. package/dist/types/stories/Search.stories.d.ts.map +1 -0
  380. package/dist/types/stories/SearchWithCtrl.stories.d.ts +8 -0
  381. package/dist/types/stories/SearchWithCtrl.stories.d.ts.map +1 -0
  382. package/dist/types/stories/Spin.stories.d.ts +8 -0
  383. package/dist/types/stories/Spin.stories.d.ts.map +1 -0
  384. package/dist/types/stories/ThemeToggle.stories.d.ts +8 -0
  385. package/dist/types/stories/ThemeToggle.stories.d.ts.map +1 -0
  386. package/dist/types/types/column.type.d.ts +31 -0
  387. package/dist/types/types/column.type.d.ts.map +1 -0
  388. package/dist/types/types/index.d.ts +3 -0
  389. package/dist/types/types/index.d.ts.map +1 -0
  390. package/dist/types/types/translation-args.type.d.ts +17 -0
  391. package/dist/types/types/translation-args.type.d.ts.map +1 -0
  392. package/dist/types/utils/index.d.ts +2 -0
  393. package/dist/types/utils/index.d.ts.map +1 -0
  394. package/dist/types/utils/utils.d.ts +8 -0
  395. package/dist/types/utils/utils.d.ts.map +1 -0
  396. package/dist/types/vite-env.d.ts +1 -0
  397. package/dist/utils/index.cjs.js +2 -0
  398. package/dist/utils/index.cjs.js.map +1 -0
  399. package/dist/utils/index.es.js +7 -0
  400. package/dist/utils/index.es.js.map +1 -0
  401. package/package.json +265 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Alisher Khayrillaev
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,236 @@
1
+ # react-start-kit-shared
2
+
3
+ A robust, shared UI library built for React applications using TypeScript, Tailwind CSS, and `react-start-kit`. This library provides a collection of high-level components, hooks, and utilities to streamline development, featuring advanced data tables, form integrations, and responsive design patterns.
4
+
5
+ ## Features
6
+
7
+ - **Advanced Data Table**: A feature-rich table component with server-side pagination, sorting, filtering, searching, column visibility management, and export capabilities.
8
+ - **Form Components**: Wrappers for common form inputs (`Input`, `Select`, `DatePicker`, `Checkbox`, etc.) seamlessly integrated with `react-hook-form` and `zod` validation.
9
+ - **Confirmation Dialogs**: Promise-based confirmation modals (including password confirmation) via the `useConfirm` hook.
10
+ - **UI Patterns**: Ready-to-use components for Modals, Galleries, Tooltips, and Loaders.
11
+ - **Theming**: Built-in dark/light mode support with `ThemeProvider` and `ThemeToggle`.
12
+ - **Responsive Utilities**: Hooks for managing media queries and responsive layouts.
13
+ - **Internationalization**: Built with `i18next` support for easy localization.
14
+
15
+ ## Installation
16
+
17
+ Install the package via npm:
18
+
19
+ ```bash
20
+ npm install react-start-kit-shared
21
+ ```
22
+
23
+ Ensure you have the required peer dependencies installed:
24
+
25
+ ```bash
26
+ npm install react react-dom dayjs
27
+ ```
28
+
29
+ ## Setup
30
+
31
+ ### 1. Import Styles
32
+
33
+ Import the library's CSS in your main entry file (e.g., `main.tsx` or `App.tsx`):
34
+
35
+ ```tsx
36
+ import 'react-start-kit-shared/dist/react-start-kit-shared.css';
37
+ ```
38
+
39
+ ### 2. Theme Provider
40
+
41
+ Wrap your application with the `ThemeProvider` to enable theme management:
42
+
43
+ ```tsx
44
+ import { ThemeProvider } from 'react-start-kit-shared/providers';
45
+
46
+ function App() {
47
+ return (
48
+ <ThemeProvider defaultTheme="system" storageKey="vite-ui-theme">
49
+ <YourApp />
50
+ </ThemeProvider>
51
+ );
52
+ }
53
+ ```
54
+
55
+ ## Usage Examples
56
+
57
+ ### Data Table
58
+
59
+ The `DataTable` component is the centerpiece of this library. It handles complex data presentation needs with minimal boilerplate.
60
+
61
+ ```tsx
62
+ import { DataTable } from 'react-start-kit-shared/components/datatable';
63
+ import { useDataTable } from 'react-start-kit-shared/hooks';
64
+
65
+ const MyUserTable = () => {
66
+ // Define columns
67
+ const columns = [
68
+ { key: 'name', dataIndex: 'name', name: 'Name', sortable: true },
69
+ { key: 'email', dataIndex: 'email', name: 'Email' },
70
+ { key: 'role', dataIndex: 'role', name: 'Role' },
71
+ ];
72
+
73
+ // Example data source (usually from an API)
74
+ const dataSource = {
75
+ docs: [
76
+ { id: 1, name: 'John Doe', email: 'john@example.com', role: 'Admin' },
77
+ // ... more data
78
+ ],
79
+ page: 1,
80
+ limit: 10,
81
+ totalPages: 5,
82
+ total: 50,
83
+ };
84
+
85
+ const handleParamChange = (params) => {
86
+ console.log('Fetch new data with:', params);
87
+ };
88
+
89
+ return (
90
+ <DataTable
91
+ tableKey="user-table"
92
+ rowKey="id"
93
+ columns={columns}
94
+ dataSource={dataSource}
95
+ onParamChange={handleParamChange}
96
+ hasPagination
97
+ hasSearch
98
+ hasColumnsVisibilityDropdown
99
+ hasCheckbox
100
+ />
101
+ );
102
+ };
103
+ ```
104
+
105
+ ### Form Components
106
+
107
+ Use the `My*` form components to build accessible, validated forms with `react-hook-form`.
108
+
109
+ ```tsx
110
+ import { useForm } from 'react-hook-form';
111
+ import { MyInput, MySelect } from 'react-start-kit-shared/components/form';
112
+ import { Button } from 'react-start-kit/button'; // Assuming you have base UI components
113
+
114
+ const SignUpForm = () => {
115
+ const { control, handleSubmit } = useForm();
116
+
117
+ const onSubmit = (data) => console.log(data);
118
+
119
+ return (
120
+ <form onSubmit={handleSubmit(onSubmit)} className="space-y-4">
121
+ <MyInput
122
+ control={control}
123
+ name="username"
124
+ label="Username"
125
+ required
126
+ placeholder="Enter your username"
127
+ />
128
+
129
+ <MySelect
130
+ control={control}
131
+ name="role"
132
+ label="Role"
133
+ options={[
134
+ { value: 'admin', label: 'Admin' },
135
+ { value: 'user', label: 'User' },
136
+ ]}
137
+ />
138
+
139
+ <Button type="submit">Submit</Button>
140
+ </form>
141
+ );
142
+ };
143
+ ```
144
+
145
+ ### Confirmation Dialogs
146
+
147
+ Trigger confirmation modals programmatically using `useConfirm`.
148
+
149
+ ```tsx
150
+ import { useConfirm } from 'react-start-kit-shared/hooks';
151
+ import { Button } from 'react-start-kit/button';
152
+
153
+ const DeleteButton = () => {
154
+ const { confirm } = useConfirm();
155
+
156
+ const handleDelete = () => {
157
+ confirm({
158
+ onConfirm: () => {
159
+ console.log('Item deleted!');
160
+ },
161
+ });
162
+ };
163
+
164
+ return <Button onClick={handleDelete}>Delete Item</Button>;
165
+ };
166
+ ```
167
+
168
+ ### Image Gallery
169
+
170
+ Display a responsive grid of images with a fullscreen viewer.
171
+
172
+ ```tsx
173
+ import { MyGallery } from 'react-start-kit-shared/components/gallery';
174
+
175
+ const images = [
176
+ {
177
+ id: '1',
178
+ src: 'https://example.com/large.jpg',
179
+ thumbnail: 'https://example.com/thumb.jpg',
180
+ alt: 'Example Image',
181
+ title: 'Beautiful Scenery',
182
+ },
183
+ ];
184
+
185
+ const GalleryPage = () => {
186
+ return <MyGallery images={images} hasInfo />;
187
+ };
188
+ ```
189
+
190
+ ## Available Components
191
+
192
+ | Category | Components |
193
+ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
194
+ | **Data Display** | `DataTable`, `MyTable`, `MyGallery` |
195
+ | **Form** | `MyInput`, `MySelect`, `MyCheckbox`, `MyRadio`, `MySwitch`, `MyTextarea`, `MyDatePicker`, `MyDateRangePicker`, `MyTimePicker`, `MyHtmlEditor`, `MyMaskInput` |
196
+ | **Feedback** | `Loader`, `Spin`, `Empty` |
197
+ | **Overlays** | `MyModal`, `Confirm`, `PasswordConfirm`, `MyTooltip` |
198
+ | **Navigation** | `MyPagination`, `MyLimitSelect` |
199
+ | **Utils** | `ThemeToggle`, `ExportData`, `FilterWrapper`, `Search` |
200
+
201
+ ## Hooks
202
+
203
+ | Hook | Description |
204
+ | -------------------- | ---------------------------------------------------- |
205
+ | `useDataTable` | Manages row selection and table state. |
206
+ | `useColumns` | Manages column visibility and persistence. |
207
+ | `useConfirm` | Provides imperative API for confirmation dialogs. |
208
+ | `useTheme` | Access and toggle current theme (light/dark/system). |
209
+ | `useFilter` | Syncs filter state with URL parameters or form. |
210
+ | `useMediaQuerySizes` | Responsive breakpoints helpers. |
211
+
212
+ ## Development
213
+
214
+ Clone the repository and install dependencies:
215
+
216
+ ```bash
217
+ git clone https://github.com/Alisher1119/react-start-kit-shared.git
218
+ cd react-start-kit-shared
219
+ npm install
220
+ ```
221
+
222
+ ### Available Scripts
223
+
224
+ - `npm run dev`: Start the development server (Vite).
225
+ - `npm run build`: Build the library for production.
226
+ - `npm run lint`: Lint the codebase.
227
+ - `npm run format`: Format code with Prettier.
228
+ - `npm run test`: Run tests with Vitest.
229
+
230
+ ## License
231
+
232
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
233
+
234
+ ## Author
235
+
236
+ [Alisher Khayrillaev](https://github.com/Alisher1119)
@@ -0,0 +1,34 @@
1
+ import { jsxs as o, jsx as n } from "react/jsx-runtime";
2
+ import { W as d, f as m } from "./index-E1NtSoNr.es.js";
3
+ import { useTranslation as c } from "react-i18next";
4
+ import { Button as p } from "react-start-kit/button";
5
+ import { DropdownMenu as u, DropdownMenuTrigger as h, DropdownMenuContent as f, DropdownMenuItem as g } from "react-start-kit/dropdown";
6
+ const A = ({
7
+ actions: e,
8
+ triggerProps: i,
9
+ contentProps: s,
10
+ title: t
11
+ }) => {
12
+ const { t: a } = c();
13
+ return /* @__PURE__ */ o(u, { children: [
14
+ /* @__PURE__ */ n(h, { asChild: !0, className: "grow", ...i, children: /* @__PURE__ */ o(
15
+ p,
16
+ {
17
+ variant: "secondary",
18
+ size: "sm",
19
+ className: "ml-auto rounded-lg px-3",
20
+ children: [
21
+ /* @__PURE__ */ n(d, {}),
22
+ " ",
23
+ /* @__PURE__ */ n("span", { className: "hidden md:inline!", children: t || a("Actions") }),
24
+ /* @__PURE__ */ n(m, {})
25
+ ]
26
+ }
27
+ ) }),
28
+ /* @__PURE__ */ n(f, { align: "end", ...s, children: e.map((r, l) => /* @__PURE__ */ n(g, { onClick: () => r.onClick(), children: r.label }, l)) })
29
+ ] });
30
+ };
31
+ export {
32
+ A
33
+ };
34
+ //# sourceMappingURL=Actions-2AYZB2tr.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Actions-2AYZB2tr.es.js","sources":["../../src/components/actions/Actions.tsx"],"sourcesContent":["import { RiArrowDownSLine, RiPlayList2Line } from '@remixicon/react';\nimport type { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from 'react-start-kit/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'react-start-kit/dropdown';\n\n/**\n * Interface representing a single action item.\n */\nexport interface ActionInterface {\n /** The content to display for the action item. */\n label: ReactNode;\n /** Callback function to execute when the action is clicked. */\n onClick: () => void;\n access?: string[];\n}\n\n/**\n * Props for the Actions component.\n */\nexport interface ActionsProps extends DropdownContainerProps {\n /** Array of action items to be displayed in the dropdown. */\n actions: ActionInterface[];\n /** Title for the actions button. */\n title?: ReactNode;\n}\n\n/**\n * Actions renders a dropdown menu with a list of action items.\n *\n * @param actions - Array of actions with label and onClick handler.\n * @param triggerProps - Props passed to the dropdown trigger.\n * @param contentProps - Props passed to the dropdown content.\n * @param title - Optional title for the actions button.\n * @returns {JSX.Element} React element rendering the actions dropdown.\n */\nexport const Actions = ({\n actions,\n triggerProps,\n contentProps,\n title,\n}: ActionsProps) => {\n const { t } = useTranslation();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild className={'grow'} {...triggerProps}>\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n <RiPlayList2Line />{' '}\n <span className={'hidden md:inline!'}>{title || t('Actions')}</span>\n <RiArrowDownSLine />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" {...contentProps}>\n {actions.map((action, index) => {\n return (\n <DropdownMenuItem key={index} onClick={() => action.onClick()}>\n {action.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["Actions","actions","triggerProps","contentProps","title","t","useTranslation","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","RiPlayList2Line","RiArrowDownSLine","DropdownMenuContent","action","index","DropdownMenuItem"],"mappings":";;;;;AA0CO,MAAMA,IAAU,CAAC;AAAA,EACtB,SAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AACF,MAAoB;AAClB,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA;AAEd,2BACGC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,KAAoB,SAAO,IAAC,WAAW,QAAS,GAAGP,GAClD,UAAA,gBAAAQ;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAM;AAAA,QACN,WAAW;AAAA,QAEX,UAAA;AAAA,UAAA,gBAAAH,EAACI,GAAA,EAAgB;AAAA,UAAG;AAAA,4BACnB,QAAA,EAAK,WAAW,qBAAsB,UAAAR,KAASC,EAAE,SAAS,GAAE;AAAA,4BAC5DQ,GAAA,CAAA,CAAiB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEtB;AAAA,IACA,gBAAAL,EAACM,GAAA,EAAoB,OAAM,OAAO,GAAGX,GAClC,UAAAF,EAAQ,IAAI,CAACc,GAAQC,MAElB,gBAAAR,EAACS,KAA6B,SAAS,MAAMF,EAAO,QAAA,GACjD,UAAAA,EAAO,MAAA,GADaC,CAEvB,CAEH,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const n=require("react/jsx-runtime"),r=require("./index-ClQFzqcq.cjs.js"),u=require("react-i18next"),a=require("react-start-kit/button"),e=require("react-start-kit/dropdown"),x=({actions:o,triggerProps:t,contentProps:i,title:c})=>{const{t:d}=u.useTranslation();return n.jsxs(e.DropdownMenu,{children:[n.jsx(e.DropdownMenuTrigger,{asChild:!0,className:"grow",...t,children:n.jsxs(a.Button,{variant:"secondary",size:"sm",className:"ml-auto rounded-lg px-3",children:[n.jsx(r.Wg,{})," ",n.jsx("span",{className:"hidden md:inline!",children:c||d("Actions")}),n.jsx(r.f1,{})]})}),n.jsx(e.DropdownMenuContent,{align:"end",...i,children:o.map((s,l)=>n.jsx(e.DropdownMenuItem,{onClick:()=>s.onClick(),children:s.label},l))})]})};exports.Actions=x;
2
+ //# sourceMappingURL=Actions-CZS1OCgc.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Actions-CZS1OCgc.cjs.js","sources":["../../src/components/actions/Actions.tsx"],"sourcesContent":["import { RiArrowDownSLine, RiPlayList2Line } from '@remixicon/react';\nimport type { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from 'react-start-kit/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'react-start-kit/dropdown';\n\n/**\n * Interface representing a single action item.\n */\nexport interface ActionInterface {\n /** The content to display for the action item. */\n label: ReactNode;\n /** Callback function to execute when the action is clicked. */\n onClick: () => void;\n access?: string[];\n}\n\n/**\n * Props for the Actions component.\n */\nexport interface ActionsProps extends DropdownContainerProps {\n /** Array of action items to be displayed in the dropdown. */\n actions: ActionInterface[];\n /** Title for the actions button. */\n title?: ReactNode;\n}\n\n/**\n * Actions renders a dropdown menu with a list of action items.\n *\n * @param actions - Array of actions with label and onClick handler.\n * @param triggerProps - Props passed to the dropdown trigger.\n * @param contentProps - Props passed to the dropdown content.\n * @param title - Optional title for the actions button.\n * @returns {JSX.Element} React element rendering the actions dropdown.\n */\nexport const Actions = ({\n actions,\n triggerProps,\n contentProps,\n title,\n}: ActionsProps) => {\n const { t } = useTranslation();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild className={'grow'} {...triggerProps}>\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n <RiPlayList2Line />{' '}\n <span className={'hidden md:inline!'}>{title || t('Actions')}</span>\n <RiArrowDownSLine />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" {...contentProps}>\n {actions.map((action, index) => {\n return (\n <DropdownMenuItem key={index} onClick={() => action.onClick()}>\n {action.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["Actions","actions","triggerProps","contentProps","title","t","useTranslation","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","RiPlayList2Line","RiArrowDownSLine","DropdownMenuContent","action","index","DropdownMenuItem"],"mappings":"4LA0CaA,EAAU,CAAC,CACtB,QAAAC,EACA,aAAAC,EACA,aAAAC,EACA,MAAAC,CACF,IAAoB,CAClB,KAAM,CAAE,EAAAC,CAAA,EAAMC,iBAAA,EAEd,cACGC,eAAA,CACC,SAAA,CAAAC,MAACC,EAAAA,qBAAoB,QAAO,GAAC,UAAW,OAAS,GAAGP,EAClD,SAAAQ,EAAAA,KAACC,EAAAA,OAAA,CACC,QAAQ,YACR,KAAM,KACN,UAAW,0BAEX,SAAA,CAAAH,EAAAA,IAACI,EAAAA,GAAA,EAAgB,EAAG,UACnB,OAAA,CAAK,UAAW,oBAAsB,SAAAR,GAASC,EAAE,SAAS,EAAE,QAC5DQ,EAAAA,GAAA,CAAA,CAAiB,CAAA,CAAA,CAAA,EAEtB,EACAL,EAAAA,IAACM,EAAAA,oBAAA,CAAoB,MAAM,MAAO,GAAGX,EAClC,SAAAF,EAAQ,IAAI,CAACc,EAAQC,IAElBR,MAACS,EAAAA,kBAA6B,QAAS,IAAMF,EAAO,QAAA,EACjD,SAAAA,EAAO,KAAA,EADaC,CAEvB,CAEH,CAAA,CACH,CAAA,EACF,CAEJ"}
@@ -0,0 +1,178 @@
1
+ import { jsxs as c, jsx as e } from "react/jsx-runtime";
2
+ import { XIcon as w, Calendar1 as A } from "lucide-react";
3
+ import { useState as d, useEffect as M, useMemo as P } from "react";
4
+ import { useTranslation as z } from "react-i18next";
5
+ import { Button as E } from "react-start-kit/button";
6
+ import { DATE as F, Calendar as T } from "react-start-kit/calendar";
7
+ import { Input as I } from "react-start-kit/form";
8
+ import { Popover as Z, PopoverTrigger as $, PopoverContent as g } from "react-start-kit/popover";
9
+ import { dayjs as l, cn as h } from "react-start-kit/utils";
10
+ const V = ({
11
+ className: x,
12
+ format: n = F,
13
+ selected: r,
14
+ timezone: p,
15
+ onRangeSelected: m = () => {
16
+ },
17
+ placeholder: N,
18
+ defaultPresets: D,
19
+ disabled: i,
20
+ error: C,
21
+ inputProps: k,
22
+ ...b
23
+ }) => {
24
+ const { t: a } = z(), [L, u] = d(!1), [o, f] = d();
25
+ M(() => {
26
+ f(r);
27
+ }, [r]);
28
+ const j = P(() => {
29
+ const t = l().endOf("day");
30
+ return (D ?? [
31
+ {
32
+ from: t.startOf("week").toDate(),
33
+ to: t.endOf("week").toDate(),
34
+ label: a("This week")
35
+ },
36
+ {
37
+ from: t.startOf("month").toDate(),
38
+ to: t.endOf("month").toDate(),
39
+ label: a("This month")
40
+ },
41
+ {
42
+ from: t.startOf("year").toDate(),
43
+ to: t.endOf("year").toDate(),
44
+ label: a("This year")
45
+ },
46
+ {
47
+ from: t.subtract(7, "day").startOf("day").toDate(),
48
+ to: t.toDate(),
49
+ label: a("Last 7 days")
50
+ },
51
+ {
52
+ from: t.subtract(30, "day").startOf("day").toDate(),
53
+ to: t.toDate(),
54
+ label: a("Last 30 days")
55
+ },
56
+ {
57
+ from: t.subtract(3, "month").startOf("day").toDate(),
58
+ to: t.toDate(),
59
+ label: a("Last 3 months")
60
+ },
61
+ {
62
+ from: t.subtract(6, "month").startOf("day").toDate(),
63
+ to: t.toDate(),
64
+ label: a("Last 6 months")
65
+ },
66
+ {
67
+ from: t.subtract(12, "month").startOf("day").toDate(),
68
+ to: t.toDate(),
69
+ label: a("Last 12 months")
70
+ }
71
+ ]).map((s) => {
72
+ var v, O;
73
+ return {
74
+ ...s,
75
+ isActive: ((v = r == null ? void 0 : r.from) == null ? void 0 : v.getTime()) === s.from.getTime() && ((O = r == null ? void 0 : r.to) == null ? void 0 : O.getTime()) === s.to.getTime()
76
+ };
77
+ });
78
+ }, [a, r, D]), y = (t) => {
79
+ f(t), t != null && t.from && (t != null && t.to) && (m(t), u(!1));
80
+ };
81
+ return /* @__PURE__ */ c(Z, { open: L, onOpenChange: u, children: [
82
+ /* @__PURE__ */ e($, { asChild: !0, className: "m-0!", disabled: i, children: /* @__PURE__ */ c("div", { className: "relative", children: [
83
+ /* @__PURE__ */ e(
84
+ I,
85
+ {
86
+ variant: C ? "failure" : "default",
87
+ ...k,
88
+ readOnly: !0,
89
+ value: o != null && o.from ? o.to ? `${l(o.from).format(n)}-${l(o.to).format(n)}` : l(o.from).format(n) : "",
90
+ placeholder: N,
91
+ disabled: i,
92
+ className: h(x)
93
+ }
94
+ ),
95
+ o && /* @__PURE__ */ e(
96
+ w,
97
+ {
98
+ onClick: () => {
99
+ f(void 0), m == null || m(void 0);
100
+ },
101
+ className: h(
102
+ "text-secondary absolute top-3 right-8 size-4 cursor-pointer",
103
+ i && "pointer-events-none opacity-50"
104
+ )
105
+ }
106
+ ),
107
+ /* @__PURE__ */ e(
108
+ A,
109
+ {
110
+ className: h(
111
+ "text-secondary absolute top-2.5 right-2 size-5",
112
+ i && "pointer-events-none opacity-50"
113
+ )
114
+ }
115
+ )
116
+ ] }) }),
117
+ /* @__PURE__ */ c(g, { className: "flex w-auto p-0", align: "end", side: "bottom", children: [
118
+ /* @__PURE__ */ e(
119
+ "div",
120
+ {
121
+ className: "border-border-alpha-light flex flex-col space-y-1 border-e p-2",
122
+ children: j.map((t, s) => /* @__PURE__ */ e(
123
+ E,
124
+ {
125
+ size: "xs",
126
+ variant: t.isActive ? "default" : "ghost",
127
+ className: "justify-start",
128
+ onClick: () => y(t),
129
+ children: t.label
130
+ },
131
+ s
132
+ ))
133
+ }
134
+ ),
135
+ /* @__PURE__ */ e(
136
+ T,
137
+ {
138
+ ...b,
139
+ className: "border-border-alpha-light border-e",
140
+ mode: "single",
141
+ endMonth: o == null ? void 0 : o.to,
142
+ selected: o == null ? void 0 : o.from,
143
+ selectedToDate: o == null ? void 0 : o.to,
144
+ selectedFromDate: o == null ? void 0 : o.from,
145
+ timeZone: p,
146
+ disabled: o != null && o.to ? {
147
+ after: o.to
148
+ } : void 0,
149
+ onSelect: (t) => {
150
+ f({ ...o, from: t });
151
+ }
152
+ }
153
+ ),
154
+ /* @__PURE__ */ e(
155
+ T,
156
+ {
157
+ ...b,
158
+ mode: "single",
159
+ startMonth: o == null ? void 0 : o.from,
160
+ selected: o == null ? void 0 : o.to,
161
+ timeZone: p,
162
+ disabled: o != null && o.from ? {
163
+ before: o.from
164
+ } : void 0,
165
+ selectedToDate: o == null ? void 0 : o.to,
166
+ selectedFromDate: o == null ? void 0 : o.from,
167
+ onSelect: (t) => {
168
+ o && y({ ...o, to: t });
169
+ }
170
+ }
171
+ )
172
+ ] })
173
+ ] });
174
+ };
175
+ export {
176
+ V as D
177
+ };
178
+ //# sourceMappingURL=DateRangePicker-BTWpQRRq.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateRangePicker-BTWpQRRq.es.js","sources":["../../src/components/datepicker/DateRangePicker.tsx"],"sourcesContent":["import { Calendar1, XIcon } from 'lucide-react';\nimport { type ReactNode, useEffect, useMemo, useState } from 'react';\nimport { type DateRange } from 'react-day-picker';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from 'react-start-kit/button';\nimport { Calendar, type CalendarProps, DATE } from 'react-start-kit/calendar';\nimport { Input, type InputProps } from 'react-start-kit/form';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from 'react-start-kit/popover';\nimport { cn, dayjs } from 'react-start-kit/utils';\n\n/**\n * Type definition for a date range preset configuration.\n */\nexport type PresetType = {\n from: Date;\n to: Date;\n /** Label for the preset (e.g., \"Last 7 days\"). */\n label: ReactNode;\n isActive?: boolean;\n};\n\n/**\n * Props for the DateRangePicker component.\n */\nexport type DateRangePickerProps = Omit<\n CalendarProps,\n 'mode' | 'disabled' | 'selected'\n> & {\n /** The date format string (e.g., 'YYYY-MM-DD'). */\n format?: string;\n /** Placeholder text when no date is selected. */\n placeholder?: string;\n /** The currently selected date range. */\n selected?: DateRange;\n /** Timezone for date calculations. */\n timezone?: string;\n /** Error message to display (modifies styling). */\n error?: string;\n /** Callback function when a date range is selected. */\n onRangeSelected?: (value?: DateRange) => void;\n inputProps?: InputProps;\n disabled?: boolean;\n defaultPresets?: PresetType[];\n};\n\n/**\n * DateRangePicker displays a two-month range picker with helpful presets.\n *\n * @param props.format - Display date format.\n * @param props.selected - Currently selected date range.\n * @param props.timezone - Time zone for date calculations.\n * @param props.onRangeSelected - Callback when a full range is selected.\n * @param props.placeholder - Placeholder when no date selected.\n * @param props.error - Optional error message that adjusts styling.\n * @param props.inputProps - Props passed to the underlying Input component.\n * @param props.disabled - Whether the date range picker is disabled.\n * @param props.defaultPresets - dafault presets list for the picker.\n * @returns A date range picker component.\n */\nexport const DateRangePicker = ({\n className,\n format = DATE,\n selected,\n timezone,\n onRangeSelected = () => {},\n placeholder,\n defaultPresets,\n disabled,\n error,\n inputProps,\n ...props\n}: DateRangePickerProps) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [date, setDate] = useState<DateRange | undefined>();\n\n useEffect(() => {\n setDate(selected);\n }, [selected]);\n\n const presets: PresetType[] = useMemo(() => {\n const today = dayjs().endOf('day');\n return (\n defaultPresets ?? [\n {\n from: today.startOf('week').toDate(),\n to: today.endOf('week').toDate(),\n label: t('This week'),\n },\n {\n from: today.startOf('month').toDate(),\n to: today.endOf('month').toDate(),\n label: t('This month'),\n },\n {\n from: today.startOf('year').toDate(),\n to: today.endOf('year').toDate(),\n label: t('This year'),\n },\n {\n from: today.subtract(7, 'day').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 7 days'),\n },\n {\n from: today.subtract(30, 'day').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 30 days'),\n },\n {\n from: today.subtract(3, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 3 months'),\n },\n {\n from: today.subtract(6, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 6 months'),\n },\n {\n from: today.subtract(12, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 12 months'),\n },\n ]\n ).map((item) => ({\n ...item,\n isActive:\n selected?.from?.getTime() === item.from.getTime() &&\n selected?.to?.getTime() === item.to.getTime(),\n }));\n }, [t, selected, defaultPresets]);\n\n const handleRangeSelect = (range: DateRange) => {\n setDate(range);\n if (range?.from && range?.to) {\n onRangeSelected(range);\n setOpen(false);\n }\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild className={'m-0!'} disabled={disabled}>\n <div className={'relative'}>\n <Input\n variant={error ? 'failure' : 'default'}\n {...inputProps}\n readOnly\n value={\n date?.from\n ? date.to\n ? `${dayjs(date.from).format(format)}-${dayjs(date.to).format(format)}`\n : dayjs(date.from).format(format)\n : ''\n }\n placeholder={placeholder}\n disabled={disabled}\n className={cn(className)}\n />\n {date && (\n <XIcon\n onClick={() => {\n setDate(undefined);\n onRangeSelected?.(undefined);\n }}\n className={cn(\n 'text-secondary absolute top-3 right-8 size-4 cursor-pointer',\n disabled && 'pointer-events-none opacity-50'\n )}\n />\n )}\n <Calendar1\n className={cn(\n 'text-secondary absolute top-2.5 right-2 size-5',\n disabled && 'pointer-events-none opacity-50'\n )}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent className=\"flex w-auto p-0\" align=\"end\" side={'bottom'}>\n <div\n className={\n 'border-border-alpha-light flex flex-col space-y-1 border-e p-2'\n }\n >\n {presets.map((preset, index) => (\n <Button\n size={'xs'}\n key={index}\n variant={preset.isActive ? 'default' : 'ghost'}\n className={'justify-start'}\n onClick={() => handleRangeSelect(preset)}\n >\n {preset.label}\n </Button>\n ))}\n </div>\n <Calendar\n {...props}\n className={'border-border-alpha-light border-e'}\n mode=\"single\"\n endMonth={date?.to}\n selected={date?.from}\n selectedToDate={date?.to}\n selectedFromDate={date?.from}\n timeZone={timezone}\n disabled={\n date?.to\n ? {\n after: date.to,\n }\n : undefined\n }\n onSelect={(from) => {\n setDate({ ...date, from: from as Date | undefined });\n }}\n />\n <Calendar\n {...props}\n mode=\"single\"\n startMonth={date?.from}\n selected={date?.to}\n timeZone={timezone}\n disabled={\n date?.from\n ? {\n before: date.from,\n }\n : undefined\n }\n selectedToDate={date?.to}\n selectedFromDate={date?.from}\n onSelect={(to) => {\n if (date) {\n handleRangeSelect({ ...date, to: to as Date | undefined });\n }\n }}\n />\n </PopoverContent>\n </Popover>\n );\n};\n"],"names":["DateRangePicker","className","format","DATE","selected","timezone","onRangeSelected","placeholder","defaultPresets","disabled","error","inputProps","props","t","useTranslation","open","setOpen","useState","date","setDate","useEffect","presets","useMemo","today","dayjs","item","_a","_b","handleRangeSelect","range","jsxs","Popover","jsx","PopoverTrigger","Input","cn","XIcon","Calendar1","PopoverContent","preset","index","Button","Calendar","from","to"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("react/jsx-runtime"),j=require("lucide-react"),c=require("react"),L=require("react-i18next"),w=require("react-start-kit/button"),u=require("react-start-kit/calendar"),P=require("react-start-kit/form"),h=require("react-start-kit/popover"),a=require("react-start-kit/utils"),A=({className:O,format:f=u.DATE,selected:s,timezone:y,onRangeSelected:i=()=>{},placeholder:T,defaultPresets:b,disabled:l,error:q,inputProps:N,...D})=>{const{t:r}=L.useTranslation(),[C,p]=c.useState(!1),[t,m]=c.useState();c.useEffect(()=>{m(s)},[s]);const k=c.useMemo(()=>{const o=a.dayjs().endOf("day");return(b??[{from:o.startOf("week").toDate(),to:o.endOf("week").toDate(),label:r("This week")},{from:o.startOf("month").toDate(),to:o.endOf("month").toDate(),label:r("This month")},{from:o.startOf("year").toDate(),to:o.endOf("year").toDate(),label:r("This year")},{from:o.subtract(7,"day").startOf("day").toDate(),to:o.toDate(),label:r("Last 7 days")},{from:o.subtract(30,"day").startOf("day").toDate(),to:o.toDate(),label:r("Last 30 days")},{from:o.subtract(3,"month").startOf("day").toDate(),to:o.toDate(),label:r("Last 3 months")},{from:o.subtract(6,"month").startOf("day").toDate(),to:o.toDate(),label:r("Last 6 months")},{from:o.subtract(12,"month").startOf("day").toDate(),to:o.toDate(),label:r("Last 12 months")}]).map(n=>{var x,v;return{...n,isActive:((x=s==null?void 0:s.from)==null?void 0:x.getTime())===n.from.getTime()&&((v=s==null?void 0:s.to)==null?void 0:v.getTime())===n.to.getTime()}})},[r,s,b]),d=o=>{m(o),o!=null&&o.from&&(o!=null&&o.to)&&(i(o),p(!1))};return e.jsxs(h.Popover,{open:C,onOpenChange:p,children:[e.jsx(h.PopoverTrigger,{asChild:!0,className:"m-0!",disabled:l,children:e.jsxs("div",{className:"relative",children:[e.jsx(P.Input,{variant:q?"failure":"default",...N,readOnly:!0,value:t!=null&&t.from?t.to?`${a.dayjs(t.from).format(f)}-${a.dayjs(t.to).format(f)}`:a.dayjs(t.from).format(f):"",placeholder:T,disabled:l,className:a.cn(O)}),t&&e.jsx(j.XIcon,{onClick:()=>{m(void 0),i==null||i(void 0)},className:a.cn("text-secondary absolute top-3 right-8 size-4 cursor-pointer",l&&"pointer-events-none opacity-50")}),e.jsx(j.Calendar1,{className:a.cn("text-secondary absolute top-2.5 right-2 size-5",l&&"pointer-events-none opacity-50")})]})}),e.jsxs(h.PopoverContent,{className:"flex w-auto p-0",align:"end",side:"bottom",children:[e.jsx("div",{className:"border-border-alpha-light flex flex-col space-y-1 border-e p-2",children:k.map((o,n)=>e.jsx(w.Button,{size:"xs",variant:o.isActive?"default":"ghost",className:"justify-start",onClick:()=>d(o),children:o.label},n))}),e.jsx(u.Calendar,{...D,className:"border-border-alpha-light border-e",mode:"single",endMonth:t==null?void 0:t.to,selected:t==null?void 0:t.from,selectedToDate:t==null?void 0:t.to,selectedFromDate:t==null?void 0:t.from,timeZone:y,disabled:t!=null&&t.to?{after:t.to}:void 0,onSelect:o=>{m({...t,from:o})}}),e.jsx(u.Calendar,{...D,mode:"single",startMonth:t==null?void 0:t.from,selected:t==null?void 0:t.to,timeZone:y,disabled:t!=null&&t.from?{before:t.from}:void 0,selectedToDate:t==null?void 0:t.to,selectedFromDate:t==null?void 0:t.from,onSelect:o=>{t&&d({...t,to:o})}})]})]})};exports.DateRangePicker=A;
2
+ //# sourceMappingURL=DateRangePicker-D6Q3vFLO.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateRangePicker-D6Q3vFLO.cjs.js","sources":["../../src/components/datepicker/DateRangePicker.tsx"],"sourcesContent":["import { Calendar1, XIcon } from 'lucide-react';\nimport { type ReactNode, useEffect, useMemo, useState } from 'react';\nimport { type DateRange } from 'react-day-picker';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from 'react-start-kit/button';\nimport { Calendar, type CalendarProps, DATE } from 'react-start-kit/calendar';\nimport { Input, type InputProps } from 'react-start-kit/form';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from 'react-start-kit/popover';\nimport { cn, dayjs } from 'react-start-kit/utils';\n\n/**\n * Type definition for a date range preset configuration.\n */\nexport type PresetType = {\n from: Date;\n to: Date;\n /** Label for the preset (e.g., \"Last 7 days\"). */\n label: ReactNode;\n isActive?: boolean;\n};\n\n/**\n * Props for the DateRangePicker component.\n */\nexport type DateRangePickerProps = Omit<\n CalendarProps,\n 'mode' | 'disabled' | 'selected'\n> & {\n /** The date format string (e.g., 'YYYY-MM-DD'). */\n format?: string;\n /** Placeholder text when no date is selected. */\n placeholder?: string;\n /** The currently selected date range. */\n selected?: DateRange;\n /** Timezone for date calculations. */\n timezone?: string;\n /** Error message to display (modifies styling). */\n error?: string;\n /** Callback function when a date range is selected. */\n onRangeSelected?: (value?: DateRange) => void;\n inputProps?: InputProps;\n disabled?: boolean;\n defaultPresets?: PresetType[];\n};\n\n/**\n * DateRangePicker displays a two-month range picker with helpful presets.\n *\n * @param props.format - Display date format.\n * @param props.selected - Currently selected date range.\n * @param props.timezone - Time zone for date calculations.\n * @param props.onRangeSelected - Callback when a full range is selected.\n * @param props.placeholder - Placeholder when no date selected.\n * @param props.error - Optional error message that adjusts styling.\n * @param props.inputProps - Props passed to the underlying Input component.\n * @param props.disabled - Whether the date range picker is disabled.\n * @param props.defaultPresets - dafault presets list for the picker.\n * @returns A date range picker component.\n */\nexport const DateRangePicker = ({\n className,\n format = DATE,\n selected,\n timezone,\n onRangeSelected = () => {},\n placeholder,\n defaultPresets,\n disabled,\n error,\n inputProps,\n ...props\n}: DateRangePickerProps) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [date, setDate] = useState<DateRange | undefined>();\n\n useEffect(() => {\n setDate(selected);\n }, [selected]);\n\n const presets: PresetType[] = useMemo(() => {\n const today = dayjs().endOf('day');\n return (\n defaultPresets ?? [\n {\n from: today.startOf('week').toDate(),\n to: today.endOf('week').toDate(),\n label: t('This week'),\n },\n {\n from: today.startOf('month').toDate(),\n to: today.endOf('month').toDate(),\n label: t('This month'),\n },\n {\n from: today.startOf('year').toDate(),\n to: today.endOf('year').toDate(),\n label: t('This year'),\n },\n {\n from: today.subtract(7, 'day').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 7 days'),\n },\n {\n from: today.subtract(30, 'day').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 30 days'),\n },\n {\n from: today.subtract(3, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 3 months'),\n },\n {\n from: today.subtract(6, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 6 months'),\n },\n {\n from: today.subtract(12, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 12 months'),\n },\n ]\n ).map((item) => ({\n ...item,\n isActive:\n selected?.from?.getTime() === item.from.getTime() &&\n selected?.to?.getTime() === item.to.getTime(),\n }));\n }, [t, selected, defaultPresets]);\n\n const handleRangeSelect = (range: DateRange) => {\n setDate(range);\n if (range?.from && range?.to) {\n onRangeSelected(range);\n setOpen(false);\n }\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild className={'m-0!'} disabled={disabled}>\n <div className={'relative'}>\n <Input\n variant={error ? 'failure' : 'default'}\n {...inputProps}\n readOnly\n value={\n date?.from\n ? date.to\n ? `${dayjs(date.from).format(format)}-${dayjs(date.to).format(format)}`\n : dayjs(date.from).format(format)\n : ''\n }\n placeholder={placeholder}\n disabled={disabled}\n className={cn(className)}\n />\n {date && (\n <XIcon\n onClick={() => {\n setDate(undefined);\n onRangeSelected?.(undefined);\n }}\n className={cn(\n 'text-secondary absolute top-3 right-8 size-4 cursor-pointer',\n disabled && 'pointer-events-none opacity-50'\n )}\n />\n )}\n <Calendar1\n className={cn(\n 'text-secondary absolute top-2.5 right-2 size-5',\n disabled && 'pointer-events-none opacity-50'\n )}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent className=\"flex w-auto p-0\" align=\"end\" side={'bottom'}>\n <div\n className={\n 'border-border-alpha-light flex flex-col space-y-1 border-e p-2'\n }\n >\n {presets.map((preset, index) => (\n <Button\n size={'xs'}\n key={index}\n variant={preset.isActive ? 'default' : 'ghost'}\n className={'justify-start'}\n onClick={() => handleRangeSelect(preset)}\n >\n {preset.label}\n </Button>\n ))}\n </div>\n <Calendar\n {...props}\n className={'border-border-alpha-light border-e'}\n mode=\"single\"\n endMonth={date?.to}\n selected={date?.from}\n selectedToDate={date?.to}\n selectedFromDate={date?.from}\n timeZone={timezone}\n disabled={\n date?.to\n ? {\n after: date.to,\n }\n : undefined\n }\n onSelect={(from) => {\n setDate({ ...date, from: from as Date | undefined });\n }}\n />\n <Calendar\n {...props}\n mode=\"single\"\n startMonth={date?.from}\n selected={date?.to}\n timeZone={timezone}\n disabled={\n date?.from\n ? {\n before: date.from,\n }\n : undefined\n }\n selectedToDate={date?.to}\n selectedFromDate={date?.from}\n onSelect={(to) => {\n if (date) {\n handleRangeSelect({ ...date, to: to as Date | undefined });\n }\n }}\n />\n </PopoverContent>\n </Popover>\n );\n};\n"],"names":["DateRangePicker","className","format","DATE","selected","timezone","onRangeSelected","placeholder","defaultPresets","disabled","error","inputProps","props","t","useTranslation","open","setOpen","useState","date","setDate","useEffect","presets","useMemo","today","dayjs","item","_a","_b","handleRangeSelect","range","jsxs","Popover","jsx","PopoverTrigger","Input","cn","XIcon","Calendar1","PopoverContent","preset","index","Button","Calendar","from","to"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("react/jsx-runtime"),i=require("lucide-react"),u=require("react-i18next"),o=require("react-start-kit/utils"),l=({children:t,icon:s,className:r,...c})=>{const{t:n}=u.useTranslation();return e.jsxs("div",{...c,className:o.cn("flex h-16 flex-col items-center justify-center text-center text-base",r),children:[s||e.jsx(i.FolderOpen,{size:48,strokeWidth:1}),t||n("No results")]})};exports.Empty=l;
2
+ //# sourceMappingURL=Empty-BiJ2b9JP.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Empty-BiJ2b9JP.cjs.js","sources":["../../src/components/empty/Empty.tsx"],"sourcesContent":["import { FolderOpen } from 'lucide-react';\nimport type { HTMLAttributes, ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { cn } from 'react-start-kit/utils';\n\n/**\n * Props for the Empty component.\n */\nexport interface EmptyProps extends HTMLAttributes<HTMLDivElement> {\n /** Optional custom icon. Defaults to a folder icon. */\n icon?: ReactNode;\n}\n\n/**\n * Empty displays a simple empty state with an optional icon and message.\n *\n * @param children - Optional custom message/content.\n * @param icon - Optional custom icon. Defaults to a folder icon.\n * @param className - Additional CSS classes.\n * @param props - Additional HTML attributes for the container.\n * @returns {JSX.Element} A centered empty state component.\n */\nexport const Empty = ({ children, icon, className, ...props }: EmptyProps) => {\n const { t } = useTranslation();\n\n return (\n <div\n {...props}\n className={cn(\n 'flex h-16 flex-col items-center justify-center text-center text-base',\n className\n )}\n >\n {icon || <FolderOpen size={48} strokeWidth={1} />}\n {children || t('No results')}\n </div>\n );\n};\n"],"names":["Empty","children","icon","className","props","t","useTranslation","jsxs","cn","jsx","FolderOpen"],"mappings":"0IAsBaA,EAAQ,CAAC,CAAE,SAAAC,EAAU,KAAAC,EAAM,UAAAC,EAAW,GAAGC,KAAwB,CAC5E,KAAM,CAAE,EAAAC,CAAA,EAAMC,iBAAA,EAEd,OACEC,EAAAA,KAAC,MAAA,CACE,GAAGH,EACJ,UAAWI,EAAAA,GACT,uEACAL,CAAA,EAGD,SAAA,CAAAD,GAAQO,EAAAA,IAACC,aAAA,CAAW,KAAM,GAAI,YAAa,EAAG,EAC9CT,GAAYI,EAAE,YAAY,CAAA,CAAA,CAAA,CAGjC"}
@@ -0,0 +1,25 @@
1
+ import { jsxs as i, jsx as m } from "react/jsx-runtime";
2
+ import { FolderOpen as n } from "lucide-react";
3
+ import { useTranslation as c } from "react-i18next";
4
+ import { cn as l } from "react-start-kit/utils";
5
+ const d = ({ children: t, icon: e, className: r, ...s }) => {
6
+ const { t: o } = c();
7
+ return /* @__PURE__ */ i(
8
+ "div",
9
+ {
10
+ ...s,
11
+ className: l(
12
+ "flex h-16 flex-col items-center justify-center text-center text-base",
13
+ r
14
+ ),
15
+ children: [
16
+ e || /* @__PURE__ */ m(n, { size: 48, strokeWidth: 1 }),
17
+ t || o("No results")
18
+ ]
19
+ }
20
+ );
21
+ };
22
+ export {
23
+ d as E
24
+ };
25
+ //# sourceMappingURL=Empty-CP4yXr6G.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Empty-CP4yXr6G.es.js","sources":["../../src/components/empty/Empty.tsx"],"sourcesContent":["import { FolderOpen } from 'lucide-react';\nimport type { HTMLAttributes, ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { cn } from 'react-start-kit/utils';\n\n/**\n * Props for the Empty component.\n */\nexport interface EmptyProps extends HTMLAttributes<HTMLDivElement> {\n /** Optional custom icon. Defaults to a folder icon. */\n icon?: ReactNode;\n}\n\n/**\n * Empty displays a simple empty state with an optional icon and message.\n *\n * @param children - Optional custom message/content.\n * @param icon - Optional custom icon. Defaults to a folder icon.\n * @param className - Additional CSS classes.\n * @param props - Additional HTML attributes for the container.\n * @returns {JSX.Element} A centered empty state component.\n */\nexport const Empty = ({ children, icon, className, ...props }: EmptyProps) => {\n const { t } = useTranslation();\n\n return (\n <div\n {...props}\n className={cn(\n 'flex h-16 flex-col items-center justify-center text-center text-base',\n className\n )}\n >\n {icon || <FolderOpen size={48} strokeWidth={1} />}\n {children || t('No results')}\n </div>\n );\n};\n"],"names":["Empty","children","icon","className","props","t","useTranslation","jsxs","cn","jsx","FolderOpen"],"mappings":";;;;AAsBO,MAAMA,IAAQ,CAAC,EAAE,UAAAC,GAAU,MAAAC,GAAM,WAAAC,GAAW,GAAGC,QAAwB;AAC5E,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA;AAEd,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGH;AAAA,MACJ,WAAWI;AAAA,QACT;AAAA,QACAL;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAAD,KAAQ,gBAAAO,EAACC,GAAA,EAAW,MAAM,IAAI,aAAa,GAAG;AAAA,QAC9CT,KAAYI,EAAE,YAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGjC;"}
@@ -0,0 +1,36 @@
1
+ import { jsxs as e, jsx as r } from "react/jsx-runtime";
2
+ import { Z as d, f as p } from "./index-E1NtSoNr.es.js";
3
+ import { useTranslation as c } from "react-i18next";
4
+ import { Button as u } from "react-start-kit/button";
5
+ import { DropdownMenu as f, DropdownMenuTrigger as h, DropdownMenuContent as x, DropdownMenuItem as g } from "react-start-kit/dropdown";
6
+ import { S as w } from "./Spin-DSBxxpPG.es.js";
7
+ const k = ({
8
+ options: o,
9
+ loading: a = !1,
10
+ triggerProps: t,
11
+ contentProps: i,
12
+ title: s
13
+ }) => {
14
+ const { t: m } = c();
15
+ return /* @__PURE__ */ e(f, { children: [
16
+ /* @__PURE__ */ r(h, { asChild: !0, ...t, className: "grow", children: /* @__PURE__ */ e(
17
+ u,
18
+ {
19
+ variant: "secondary",
20
+ size: "sm",
21
+ className: "ml-auto rounded-lg px-3",
22
+ children: [
23
+ a ? /* @__PURE__ */ r(w, { className: "text-item-primary" }) : /* @__PURE__ */ r(d, {}),
24
+ " ",
25
+ /* @__PURE__ */ r("span", { className: "hidden md:inline!", children: s || m("Export") }),
26
+ /* @__PURE__ */ r(p, {})
27
+ ]
28
+ }
29
+ ) }),
30
+ /* @__PURE__ */ r(x, { align: "end", ...i, children: o.map((n, l) => /* @__PURE__ */ r(g, { onClick: () => n.onClick(), children: n.label }, l)) })
31
+ ] });
32
+ };
33
+ export {
34
+ k as E
35
+ };
36
+ //# sourceMappingURL=ExportData-Cf-cs_pE.es.js.map