ikoncomponents 1.4.8 β†’ 1.5.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 (576) hide show
  1. package/bin.js +2 -0
  2. package/dist/commands/init.js +57 -0
  3. package/dist/index.js +3 -116
  4. package/dist/utlis/copyDir.js +7 -0
  5. package/package.json +18 -92
  6. package/templates/default/hooks/use-mobile.ts +19 -0
  7. package/templates/default/ikonShade/accordion.tsx +66 -0
  8. package/templates/default/ikonShade/alert-dialog.tsx +179 -0
  9. package/templates/default/ikonShade/alert.tsx +66 -0
  10. package/templates/default/ikonShade/aspect-ratio.tsx +11 -0
  11. package/templates/default/ikonShade/avatar.tsx +53 -0
  12. package/templates/default/ikonShade/badge.tsx +49 -0
  13. package/templates/default/ikonShade/breadcrumb.tsx +109 -0
  14. package/templates/default/ikonShade/button.tsx +64 -0
  15. package/templates/default/ikonShade/calendar.tsx +227 -0
  16. package/templates/default/ikonShade/card.tsx +92 -0
  17. package/templates/default/ikonShade/checkbox.tsx +33 -0
  18. package/templates/default/ikonShade/collapsible.tsx +33 -0
  19. package/templates/default/ikonShade/command.tsx +184 -0
  20. package/templates/default/ikonShade/date-input.tsx +259 -0
  21. package/templates/default/ikonShade/date-range-picker.tsx +103 -0
  22. package/templates/default/ikonShade/dialog.tsx +143 -0
  23. package/templates/default/ikonShade/drawer.tsx +134 -0
  24. package/templates/default/ikonShade/dropdown-menu.tsx +259 -0
  25. package/templates/default/ikonShade/form.tsx +166 -0
  26. package/templates/default/ikonShade/hover-card.tsx +44 -0
  27. package/templates/default/ikonShade/input-otp.tsx +71 -0
  28. package/templates/default/ikonShade/input.tsx +22 -0
  29. package/templates/default/ikonShade/label.tsx +24 -0
  30. package/templates/default/ikonShade/navigation-menu.tsx +195 -0
  31. package/templates/default/ikonShade/popover.tsx +48 -0
  32. package/templates/default/ikonShade/progress.tsx +40 -0
  33. package/templates/default/ikonShade/radio-group.tsx +45 -0
  34. package/templates/default/ikonShade/scroll-area.tsx +58 -0
  35. package/templates/default/ikonShade/select.tsx +184 -0
  36. package/templates/default/ikonShade/separator.tsx +28 -0
  37. package/templates/default/ikonShade/sheet.tsx +139 -0
  38. package/templates/default/ikonShade/sidebar.tsx +726 -0
  39. package/templates/default/ikonShade/skeleton.tsx +15 -0
  40. package/templates/default/ikonShade/slider.tsx +64 -0
  41. package/templates/default/ikonShade/sonner.tsx +25 -0
  42. package/templates/default/ikonShade/switch.tsx +31 -0
  43. package/templates/default/ikonShade/table.tsx +116 -0
  44. package/templates/default/ikonShade/tabs.tsx +67 -0
  45. package/templates/default/ikonShade/textarea.tsx +18 -0
  46. package/templates/default/ikonShade/toggle-group.tsx +83 -0
  47. package/templates/default/ikonShade/toggle.tsx +47 -0
  48. package/templates/default/ikonShade/tooltip.tsx +65 -0
  49. package/templates/default/ikonShade/workflow.tsx +119 -0
  50. package/templates/default/ikoncomponents/action-menu/index.tsx +108 -0
  51. package/templates/default/ikoncomponents/action-menu/type.ts +18 -0
  52. package/templates/default/ikoncomponents/activity-sheet/index.tsx +63 -0
  53. package/templates/default/ikoncomponents/alert-dialog/dialog-context.tsx +65 -0
  54. package/templates/default/ikoncomponents/alert-dialog/index.tsx +80 -0
  55. package/templates/default/ikoncomponents/app-breadcrumb/BreadcrumbProvider.tsx +68 -0
  56. package/templates/default/ikoncomponents/app-breadcrumb/index.tsx +222 -0
  57. package/templates/default/ikoncomponents/big-calendar/big-calender-event/index.tsx +38 -0
  58. package/templates/default/ikoncomponents/big-calendar/big-calender-toolbar/index.tsx +81 -0
  59. package/templates/default/ikoncomponents/big-calendar/index.css +879 -0
  60. package/templates/default/ikoncomponents/big-calendar/index.tsx +59 -0
  61. package/templates/default/ikoncomponents/big-calendar/type.ts +37 -0
  62. package/templates/default/ikoncomponents/buttons/index.tsx +127 -0
  63. package/templates/default/ikoncomponents/combobox-input/index.tsx +75 -0
  64. package/templates/default/ikoncomponents/combobox-input/type.ts +14 -0
  65. package/templates/default/ikoncomponents/custom-combo-dropdown/index.tsx +242 -0
  66. package/templates/default/ikoncomponents/data-table/datatable-column-filter/index.tsx +80 -0
  67. package/templates/default/ikoncomponents/data-table/datatable-faceted-filter/index.tsx +149 -0
  68. package/templates/default/ikoncomponents/data-table/datatable-filter-menu/index.tsx +98 -0
  69. package/templates/default/ikoncomponents/data-table/datatable-pagination/index.tsx +119 -0
  70. package/templates/default/ikoncomponents/data-table/datatable-toolbar/index.tsx +45 -0
  71. package/templates/default/ikoncomponents/data-table/function.ts +7 -0
  72. package/templates/default/ikoncomponents/data-table/index.tsx +549 -0
  73. package/templates/default/ikoncomponents/data-table/type.ts +75 -0
  74. package/templates/default/ikoncomponents/e-chart/index.tsx +183 -0
  75. package/templates/default/ikoncomponents/file-input/index.tsx +27 -0
  76. package/templates/default/ikoncomponents/fileUpload/index.tsx +121 -0
  77. package/templates/default/ikoncomponents/form-fields/combobox-input/index.tsx +111 -0
  78. package/templates/default/ikoncomponents/form-fields/combobox-input-value/index.tsx +121 -0
  79. package/templates/default/ikoncomponents/form-fields/date-input/index.tsx +80 -0
  80. package/templates/default/ikoncomponents/form-fields/file-input/index.tsx +9 -0
  81. package/templates/default/ikoncomponents/form-fields/input/index.tsx +27 -0
  82. package/{dist/ikoncomponents/form-fields/multi-combobox-input/index.js β†’ templates/default/ikoncomponents/form-fields/multi-combobox-input/index.tsx} +574 -381
  83. package/templates/default/ikoncomponents/form-fields/otp-input/index.tsx +39 -0
  84. package/templates/default/ikoncomponents/form-fields/password-input/index.tsx +52 -0
  85. package/templates/default/ikoncomponents/form-fields/phone-input/index.tsx +7 -0
  86. package/templates/default/ikoncomponents/form-fields/textarea/index.tsx +28 -0
  87. package/templates/default/ikoncomponents/form-fields/types/index.ts +46 -0
  88. package/templates/default/ikoncomponents/glowing-effect/index.tsx +171 -0
  89. package/templates/default/ikoncomponents/icon/index.tsx +22 -0
  90. package/templates/default/ikoncomponents/image-cropper-upload/components/cropperImg.css +19 -0
  91. package/{dist/ikoncomponents/image-cropper-upload/components/newCropper.js β†’ templates/default/ikoncomponents/image-cropper-upload/components/newCropper.tsx} +117 -85
  92. package/templates/default/ikoncomponents/image-cropper-upload/components/newImageUploadForm.tsx +352 -0
  93. package/templates/default/ikoncomponents/image-cropper-upload/cropper-form/index.tsx +250 -0
  94. package/templates/default/ikoncomponents/image-cropper-upload/cropper-form-with-modal/index.tsx +32 -0
  95. package/{dist/ikoncomponents/image-cropper-upload/image-cropper/index.js β†’ templates/default/ikoncomponents/image-cropper-upload/image-cropper/index.tsx} +119 -87
  96. package/templates/default/ikoncomponents/image-cropper-upload/index.tsx +95 -0
  97. package/templates/default/ikoncomponents/image-cropper-upload/utils/index.ts +117 -0
  98. package/templates/default/ikoncomponents/loading-spinner/index.tsx +43 -0
  99. package/templates/default/ikoncomponents/main-layout/RefreshContext.tsx +30 -0
  100. package/templates/default/ikoncomponents/main-layout/SidebarNavContext.tsx +103 -0
  101. package/templates/default/ikoncomponents/main-layout/app-sidebar.tsx +36 -0
  102. package/templates/default/ikoncomponents/main-layout/footer.tsx +21 -0
  103. package/templates/default/ikoncomponents/main-layout/header.tsx +53 -0
  104. package/templates/default/ikoncomponents/main-layout/index.tsx +43 -0
  105. package/templates/default/ikoncomponents/main-layout/main-sidebar.tsx +389 -0
  106. package/templates/default/ikoncomponents/main-layout/nav-main.tsx +103 -0
  107. package/templates/default/ikoncomponents/multi-combobox/index.tsx +345 -0
  108. package/templates/default/ikoncomponents/no-data/index.tsx +11 -0
  109. package/templates/default/ikoncomponents/page-wrapper/index.tsx +30 -0
  110. package/templates/default/ikoncomponents/password-strength-meter/index.tsx +49 -0
  111. package/templates/default/ikoncomponents/phone-input/index.tsx +72 -0
  112. package/templates/default/ikoncomponents/provider-wrapper/index.tsx +32 -0
  113. package/templates/default/ikoncomponents/search-input/index.tsx +18 -0
  114. package/templates/default/ikoncomponents/sheet/index.tsx +34 -0
  115. package/templates/default/ikoncomponents/simple-widget/index.tsx +54 -0
  116. package/templates/default/ikoncomponents/skeleton-loader/skeleton-table.tsx +34 -0
  117. package/templates/default/ikoncomponents/skeleton-loader/skeleton-widget.tsx +13 -0
  118. package/templates/default/ikoncomponents/tabs/index.tsx +139 -0
  119. package/{dist/ikoncomponents/tabs/type.d.ts β†’ templates/default/ikoncomponents/tabs/type.ts} +20 -20
  120. package/{dist/ikoncomponents/theme-toggle-btn/index.js β†’ templates/default/ikoncomponents/theme-toggle-btn/index.tsx} +189 -118
  121. package/templates/default/ikoncomponents/title-progress/index.tsx +41 -0
  122. package/templates/default/ikoncomponents/tooltip/index.tsx +17 -0
  123. package/templates/default/ikoncomponents/twolevel-dropdown/convertToDropdownNodes.tsx +33 -0
  124. package/templates/default/ikoncomponents/twolevel-dropdown/index.tsx +279 -0
  125. package/templates/default/ikoncomponents/upload-tab/index.tsx +237 -0
  126. package/templates/default/ikoncomponents/widgets/index.tsx +81 -0
  127. package/templates/default/ikoncomponents/widgets/type.ts +11 -0
  128. package/templates/default/ikoncomponents/work-in-progress/index.tsx +16 -0
  129. package/{dist/index.d.ts β†’ templates/default/index.ts} +234 -139
  130. package/templates/default/styles.css +1159 -0
  131. package/templates/default/utils/actions/account/index.ts +33 -0
  132. package/templates/default/utils/actions/account/type.ts +4 -0
  133. package/{dist/utils/actions/auth/index.js β†’ templates/default/utils/actions/auth/index.ts} +69 -58
  134. package/templates/default/utils/actions/common/revalidate.ts +18 -0
  135. package/templates/default/utils/actions/common/type.ts +4 -0
  136. package/{dist/utils/actions/common/utils.js β†’ templates/default/utils/actions/common/utils.ts} +28 -25
  137. package/templates/default/utils/actions/software/index.ts +106 -0
  138. package/templates/default/utils/api/accountService/index.ts +103 -0
  139. package/templates/default/utils/api/accountService/type.ts +4 -0
  140. package/templates/default/utils/api/file-upload/index.ts +103 -0
  141. package/templates/default/utils/api/file-upload/type.ts +8 -0
  142. package/{dist/utils/api/ikonBaseApi.js β†’ templates/default/utils/api/ikonBaseApi.ts} +132 -104
  143. package/templates/default/utils/api/loginService/index.ts +108 -0
  144. package/{dist/utils/api/loginService/type.d.ts β†’ templates/default/utils/api/loginService/type.ts} +35 -32
  145. package/templates/default/utils/api/softwareService/index.ts +356 -0
  146. package/templates/default/utils/api/softwareService/type.ts +62 -0
  147. package/{dist/utils/border-radius-provider.js β†’ templates/default/utils/border-radius-provider.tsx} +59 -35
  148. package/templates/default/utils/cn.ts +6 -0
  149. package/{dist/utils/font-provider.js β†’ templates/default/utils/font-provider.tsx} +61 -37
  150. package/templates/default/utils/session/cookieSession.ts +49 -0
  151. package/templates/default/utils/theme-provider/index.tsx +11 -0
  152. package/templates/default/utils/token-management/index.ts +115 -0
  153. package/templates/default/utils/token-management/types.ts +6 -0
  154. package/dist/hooks/use-mobile.d.ts +0 -2
  155. package/dist/hooks/use-mobile.d.ts.map +0 -1
  156. package/dist/hooks/use-mobile.js +0 -15
  157. package/dist/ikoncomponents/action-menu/index.d.ts +0 -6
  158. package/dist/ikoncomponents/action-menu/index.d.ts.map +0 -1
  159. package/dist/ikoncomponents/action-menu/index.js +0 -42
  160. package/dist/ikoncomponents/action-menu/type.d.ts +0 -15
  161. package/dist/ikoncomponents/action-menu/type.d.ts.map +0 -1
  162. package/dist/ikoncomponents/action-menu/type.js +0 -1
  163. package/dist/ikoncomponents/activity-sheet/index.d.ts +0 -12
  164. package/dist/ikoncomponents/activity-sheet/index.d.ts.map +0 -1
  165. package/dist/ikoncomponents/activity-sheet/index.js +0 -23
  166. package/dist/ikoncomponents/alert-dialog/dialog-context.d.ts +0 -22
  167. package/dist/ikoncomponents/alert-dialog/dialog-context.d.ts.map +0 -1
  168. package/dist/ikoncomponents/alert-dialog/dialog-context.js +0 -30
  169. package/dist/ikoncomponents/alert-dialog/index.d.ts +0 -15
  170. package/dist/ikoncomponents/alert-dialog/index.d.ts.map +0 -1
  171. package/dist/ikoncomponents/alert-dialog/index.js +0 -20
  172. package/dist/ikoncomponents/app-breadcrumb/BreadcrumbProvider.d.ts +0 -19
  173. package/dist/ikoncomponents/app-breadcrumb/BreadcrumbProvider.d.ts.map +0 -1
  174. package/dist/ikoncomponents/app-breadcrumb/BreadcrumbProvider.js +0 -43
  175. package/dist/ikoncomponents/app-breadcrumb/index.d.ts +0 -6
  176. package/dist/ikoncomponents/app-breadcrumb/index.d.ts.map +0 -1
  177. package/dist/ikoncomponents/app-breadcrumb/index.js +0 -57
  178. package/dist/ikoncomponents/big-calendar/big-calender-event/index.d.ts +0 -6
  179. package/dist/ikoncomponents/big-calendar/big-calender-event/index.d.ts.map +0 -1
  180. package/dist/ikoncomponents/big-calendar/big-calender-event/index.js +0 -16
  181. package/dist/ikoncomponents/big-calendar/big-calender-toolbar/index.d.ts +0 -3
  182. package/dist/ikoncomponents/big-calendar/big-calender-toolbar/index.d.ts.map +0 -1
  183. package/dist/ikoncomponents/big-calendar/big-calender-toolbar/index.js +0 -39
  184. package/dist/ikoncomponents/big-calendar/index.d.ts +0 -4
  185. package/dist/ikoncomponents/big-calendar/index.d.ts.map +0 -1
  186. package/dist/ikoncomponents/big-calendar/index.js +0 -35
  187. package/dist/ikoncomponents/big-calendar/type.d.ts +0 -32
  188. package/dist/ikoncomponents/big-calendar/type.d.ts.map +0 -1
  189. package/dist/ikoncomponents/big-calendar/type.js +0 -1
  190. package/dist/ikoncomponents/buttons/index.d.ts +0 -19
  191. package/dist/ikoncomponents/buttons/index.d.ts.map +0 -1
  192. package/dist/ikoncomponents/buttons/index.js +0 -38
  193. package/dist/ikoncomponents/combobox-input/index.d.ts +0 -3
  194. package/dist/ikoncomponents/combobox-input/index.d.ts.map +0 -1
  195. package/dist/ikoncomponents/combobox-input/index.js +0 -18
  196. package/dist/ikoncomponents/combobox-input/type.d.ts +0 -14
  197. package/dist/ikoncomponents/combobox-input/type.d.ts.map +0 -1
  198. package/dist/ikoncomponents/combobox-input/type.js +0 -1
  199. package/dist/ikoncomponents/custom-combo-dropdown/index.d.ts +0 -22
  200. package/dist/ikoncomponents/custom-combo-dropdown/index.d.ts.map +0 -1
  201. package/dist/ikoncomponents/custom-combo-dropdown/index.js +0 -85
  202. package/dist/ikoncomponents/data-table/datatable-column-filter/index.d.ts +0 -3
  203. package/dist/ikoncomponents/data-table/datatable-column-filter/index.d.ts.map +0 -1
  204. package/dist/ikoncomponents/data-table/datatable-column-filter/index.js +0 -22
  205. package/dist/ikoncomponents/data-table/datatable-faceted-filter/index.d.ts +0 -3
  206. package/dist/ikoncomponents/data-table/datatable-faceted-filter/index.d.ts.map +0 -1
  207. package/dist/ikoncomponents/data-table/datatable-faceted-filter/index.js +0 -35
  208. package/dist/ikoncomponents/data-table/datatable-filter-menu/index.d.ts +0 -3
  209. package/dist/ikoncomponents/data-table/datatable-filter-menu/index.d.ts.map +0 -1
  210. package/dist/ikoncomponents/data-table/datatable-filter-menu/index.js +0 -38
  211. package/dist/ikoncomponents/data-table/datatable-pagination/index.d.ts +0 -3
  212. package/dist/ikoncomponents/data-table/datatable-pagination/index.d.ts.map +0 -1
  213. package/dist/ikoncomponents/data-table/datatable-pagination/index.js +0 -13
  214. package/dist/ikoncomponents/data-table/datatable-toolbar/index.d.ts +0 -3
  215. package/dist/ikoncomponents/data-table/datatable-toolbar/index.d.ts.map +0 -1
  216. package/dist/ikoncomponents/data-table/datatable-toolbar/index.js +0 -18
  217. package/dist/ikoncomponents/data-table/function.d.ts +0 -2
  218. package/dist/ikoncomponents/data-table/function.d.ts.map +0 -1
  219. package/dist/ikoncomponents/data-table/function.js +0 -6
  220. package/dist/ikoncomponents/data-table/index.d.ts +0 -3
  221. package/dist/ikoncomponents/data-table/index.d.ts.map +0 -1
  222. package/dist/ikoncomponents/data-table/index.js +0 -223
  223. package/dist/ikoncomponents/data-table/type.d.ts +0 -61
  224. package/dist/ikoncomponents/data-table/type.d.ts.map +0 -1
  225. package/dist/ikoncomponents/data-table/type.js +0 -1
  226. package/dist/ikoncomponents/e-chart/index.d.ts +0 -16
  227. package/dist/ikoncomponents/e-chart/index.d.ts.map +0 -1
  228. package/dist/ikoncomponents/e-chart/index.js +0 -115
  229. package/dist/ikoncomponents/file-input/index.d.ts +0 -2
  230. package/dist/ikoncomponents/file-input/index.d.ts.map +0 -1
  231. package/dist/ikoncomponents/file-input/index.js +0 -21
  232. package/dist/ikoncomponents/fileUpload/index.d.ts +0 -16
  233. package/dist/ikoncomponents/fileUpload/index.d.ts.map +0 -1
  234. package/dist/ikoncomponents/fileUpload/index.js +0 -69
  235. package/dist/ikoncomponents/form-fields/combobox-input/index.d.ts +0 -3
  236. package/dist/ikoncomponents/form-fields/combobox-input/index.d.ts.map +0 -1
  237. package/dist/ikoncomponents/form-fields/combobox-input/index.js +0 -21
  238. package/dist/ikoncomponents/form-fields/combobox-input-value/index.d.ts +0 -19
  239. package/dist/ikoncomponents/form-fields/combobox-input-value/index.d.ts.map +0 -1
  240. package/dist/ikoncomponents/form-fields/combobox-input-value/index.js +0 -26
  241. package/dist/ikoncomponents/form-fields/date-input/index.d.ts +0 -3
  242. package/dist/ikoncomponents/form-fields/date-input/index.d.ts.map +0 -1
  243. package/dist/ikoncomponents/form-fields/date-input/index.js +0 -15
  244. package/dist/ikoncomponents/form-fields/file-input/index.d.ts +0 -2
  245. package/dist/ikoncomponents/form-fields/file-input/index.d.ts.map +0 -1
  246. package/dist/ikoncomponents/form-fields/file-input/index.js +0 -4
  247. package/dist/ikoncomponents/form-fields/input/index.d.ts +0 -3
  248. package/dist/ikoncomponents/form-fields/input/index.d.ts.map +0 -1
  249. package/dist/ikoncomponents/form-fields/input/index.js +0 -18
  250. package/dist/ikoncomponents/form-fields/multi-combobox-input/index.d.ts +0 -7
  251. package/dist/ikoncomponents/form-fields/multi-combobox-input/index.d.ts.map +0 -1
  252. package/dist/ikoncomponents/form-fields/otp-input/index.d.ts +0 -3
  253. package/dist/ikoncomponents/form-fields/otp-input/index.d.ts.map +0 -1
  254. package/dist/ikoncomponents/form-fields/otp-input/index.js +0 -18
  255. package/dist/ikoncomponents/form-fields/password-input/index.d.ts +0 -3
  256. package/dist/ikoncomponents/form-fields/password-input/index.d.ts.map +0 -1
  257. package/dist/ikoncomponents/form-fields/password-input/index.js +0 -23
  258. package/dist/ikoncomponents/form-fields/phone-input/index.d.ts +0 -2
  259. package/dist/ikoncomponents/form-fields/phone-input/index.d.ts.map +0 -1
  260. package/dist/ikoncomponents/form-fields/phone-input/index.js +0 -4
  261. package/dist/ikoncomponents/form-fields/textarea/index.d.ts +0 -3
  262. package/dist/ikoncomponents/form-fields/textarea/index.d.ts.map +0 -1
  263. package/dist/ikoncomponents/form-fields/textarea/index.js +0 -18
  264. package/dist/ikoncomponents/form-fields/types/index.d.ts +0 -37
  265. package/dist/ikoncomponents/form-fields/types/index.d.ts.map +0 -1
  266. package/dist/ikoncomponents/form-fields/types/index.js +0 -1
  267. package/dist/ikoncomponents/glowing-effect/index.d.ts +0 -15
  268. package/dist/ikoncomponents/glowing-effect/index.d.ts.map +0 -1
  269. package/dist/ikoncomponents/glowing-effect/index.js +0 -84
  270. package/dist/ikoncomponents/icon/index.d.ts +0 -9
  271. package/dist/ikoncomponents/icon/index.d.ts.map +0 -1
  272. package/dist/ikoncomponents/icon/index.js +0 -23
  273. package/dist/ikoncomponents/image-cropper-upload/components/newCropper.d.ts +0 -16
  274. package/dist/ikoncomponents/image-cropper-upload/components/newCropper.d.ts.map +0 -1
  275. package/dist/ikoncomponents/image-cropper-upload/components/newImageUploadForm.d.ts +0 -8
  276. package/dist/ikoncomponents/image-cropper-upload/components/newImageUploadForm.d.ts.map +0 -1
  277. package/dist/ikoncomponents/image-cropper-upload/components/newImageUploadForm.js +0 -145
  278. package/dist/ikoncomponents/image-cropper-upload/cropper-form/index.d.ts +0 -7
  279. package/dist/ikoncomponents/image-cropper-upload/cropper-form/index.d.ts.map +0 -1
  280. package/dist/ikoncomponents/image-cropper-upload/cropper-form/index.js +0 -92
  281. package/dist/ikoncomponents/image-cropper-upload/cropper-form-with-modal/index.d.ts +0 -7
  282. package/dist/ikoncomponents/image-cropper-upload/cropper-form-with-modal/index.d.ts.map +0 -1
  283. package/dist/ikoncomponents/image-cropper-upload/cropper-form-with-modal/index.js +0 -14
  284. package/dist/ikoncomponents/image-cropper-upload/image-cropper/index.d.ts +0 -15
  285. package/dist/ikoncomponents/image-cropper-upload/image-cropper/index.d.ts.map +0 -1
  286. package/dist/ikoncomponents/image-cropper-upload/index.d.ts +0 -28
  287. package/dist/ikoncomponents/image-cropper-upload/index.d.ts.map +0 -1
  288. package/dist/ikoncomponents/image-cropper-upload/index.js +0 -49
  289. package/dist/ikoncomponents/image-cropper-upload/utils/index.d.ts +0 -17
  290. package/dist/ikoncomponents/image-cropper-upload/utils/index.d.ts.map +0 -1
  291. package/dist/ikoncomponents/image-cropper-upload/utils/index.js +0 -73
  292. package/dist/ikoncomponents/loading-spinner/index.d.ts +0 -10
  293. package/dist/ikoncomponents/loading-spinner/index.d.ts.map +0 -1
  294. package/dist/ikoncomponents/loading-spinner/index.js +0 -19
  295. package/dist/ikoncomponents/main-layout/RefreshContext.d.ts +0 -11
  296. package/dist/ikoncomponents/main-layout/RefreshContext.d.ts.map +0 -1
  297. package/dist/ikoncomponents/main-layout/RefreshContext.js +0 -17
  298. package/dist/ikoncomponents/main-layout/SidebarNavContext.d.ts +0 -34
  299. package/dist/ikoncomponents/main-layout/SidebarNavContext.d.ts.map +0 -1
  300. package/dist/ikoncomponents/main-layout/SidebarNavContext.js +0 -52
  301. package/dist/ikoncomponents/main-layout/app-sidebar.d.ts +0 -4
  302. package/dist/ikoncomponents/main-layout/app-sidebar.d.ts.map +0 -1
  303. package/dist/ikoncomponents/main-layout/app-sidebar.js +0 -24
  304. package/dist/ikoncomponents/main-layout/footer.d.ts +0 -2
  305. package/dist/ikoncomponents/main-layout/footer.d.ts.map +0 -1
  306. package/dist/ikoncomponents/main-layout/footer.js +0 -5
  307. package/dist/ikoncomponents/main-layout/header.d.ts +0 -4
  308. package/dist/ikoncomponents/main-layout/header.d.ts.map +0 -1
  309. package/dist/ikoncomponents/main-layout/header.js +0 -15
  310. package/dist/ikoncomponents/main-layout/index.d.ts +0 -7
  311. package/dist/ikoncomponents/main-layout/index.d.ts.map +0 -1
  312. package/dist/ikoncomponents/main-layout/index.js +0 -12
  313. package/dist/ikoncomponents/main-layout/main-sidebar.d.ts +0 -61
  314. package/dist/ikoncomponents/main-layout/main-sidebar.d.ts.map +0 -1
  315. package/dist/ikoncomponents/main-layout/main-sidebar.js +0 -119
  316. package/dist/ikoncomponents/main-layout/nav-main.d.ts +0 -12
  317. package/dist/ikoncomponents/main-layout/nav-main.d.ts.map +0 -1
  318. package/dist/ikoncomponents/main-layout/nav-main.js +0 -33
  319. package/dist/ikoncomponents/multi-combobox/index.d.ts +0 -14
  320. package/dist/ikoncomponents/multi-combobox/index.d.ts.map +0 -1
  321. package/dist/ikoncomponents/multi-combobox/index.js +0 -202
  322. package/dist/ikoncomponents/no-data/index.d.ts +0 -4
  323. package/dist/ikoncomponents/no-data/index.d.ts.map +0 -1
  324. package/dist/ikoncomponents/no-data/index.js +0 -5
  325. package/dist/ikoncomponents/page-wrapper/index.d.ts +0 -10
  326. package/dist/ikoncomponents/page-wrapper/index.d.ts.map +0 -1
  327. package/dist/ikoncomponents/page-wrapper/index.js +0 -7
  328. package/dist/ikoncomponents/password-strength-meter/index.d.ts +0 -4
  329. package/dist/ikoncomponents/password-strength-meter/index.d.ts.map +0 -1
  330. package/dist/ikoncomponents/password-strength-meter/index.js +0 -40
  331. package/dist/ikoncomponents/phone-input/index.d.ts +0 -2
  332. package/dist/ikoncomponents/phone-input/index.d.ts.map +0 -1
  333. package/dist/ikoncomponents/phone-input/index.js +0 -41
  334. package/dist/ikoncomponents/provider-wrapper/index.d.ts +0 -7
  335. package/dist/ikoncomponents/provider-wrapper/index.d.ts.map +0 -1
  336. package/dist/ikoncomponents/provider-wrapper/index.js +0 -10
  337. package/dist/ikoncomponents/search-input/index.d.ts +0 -2
  338. package/dist/ikoncomponents/search-input/index.d.ts.map +0 -1
  339. package/dist/ikoncomponents/search-input/index.js +0 -19
  340. package/dist/ikoncomponents/sheet/index.d.ts +0 -11
  341. package/dist/ikoncomponents/sheet/index.d.ts.map +0 -1
  342. package/dist/ikoncomponents/sheet/index.js +0 -6
  343. package/dist/ikoncomponents/simple-widget/index.d.ts +0 -15
  344. package/dist/ikoncomponents/simple-widget/index.d.ts.map +0 -1
  345. package/dist/ikoncomponents/simple-widget/index.js +0 -14
  346. package/dist/ikoncomponents/skeleton-loader/skeleton-table.d.ts +0 -6
  347. package/dist/ikoncomponents/skeleton-loader/skeleton-table.d.ts.map +0 -1
  348. package/dist/ikoncomponents/skeleton-loader/skeleton-table.js +0 -6
  349. package/dist/ikoncomponents/skeleton-loader/skeleton-widget.d.ts +0 -4
  350. package/dist/ikoncomponents/skeleton-loader/skeleton-widget.d.ts.map +0 -1
  351. package/dist/ikoncomponents/skeleton-loader/skeleton-widget.js +0 -5
  352. package/dist/ikoncomponents/tabs/index.d.ts +0 -3
  353. package/dist/ikoncomponents/tabs/index.d.ts.map +0 -1
  354. package/dist/ikoncomponents/tabs/index.js +0 -50
  355. package/dist/ikoncomponents/tabs/type.d.ts.map +0 -1
  356. package/dist/ikoncomponents/tabs/type.js +0 -2
  357. package/dist/ikoncomponents/theme-toggle-btn/index.d.ts +0 -2
  358. package/dist/ikoncomponents/theme-toggle-btn/index.d.ts.map +0 -1
  359. package/dist/ikoncomponents/title-progress/index.d.ts +0 -13
  360. package/dist/ikoncomponents/title-progress/index.d.ts.map +0 -1
  361. package/dist/ikoncomponents/title-progress/index.js +0 -10
  362. package/dist/ikoncomponents/tooltip/index.d.ts +0 -6
  363. package/dist/ikoncomponents/tooltip/index.d.ts.map +0 -1
  364. package/dist/ikoncomponents/tooltip/index.js +0 -5
  365. package/dist/ikoncomponents/twolevel-dropdown/convertToDropdownNodes.d.ts +0 -10
  366. package/dist/ikoncomponents/twolevel-dropdown/convertToDropdownNodes.d.ts.map +0 -1
  367. package/dist/ikoncomponents/twolevel-dropdown/convertToDropdownNodes.js +0 -24
  368. package/dist/ikoncomponents/twolevel-dropdown/index.d.ts +0 -32
  369. package/dist/ikoncomponents/twolevel-dropdown/index.d.ts.map +0 -1
  370. package/dist/ikoncomponents/twolevel-dropdown/index.js +0 -143
  371. package/dist/ikoncomponents/upload-tab/index.d.ts +0 -2
  372. package/dist/ikoncomponents/upload-tab/index.d.ts.map +0 -1
  373. package/dist/ikoncomponents/upload-tab/index.js +0 -92
  374. package/dist/ikoncomponents/widgets/index.d.ts +0 -3
  375. package/dist/ikoncomponents/widgets/index.d.ts.map +0 -1
  376. package/dist/ikoncomponents/widgets/index.js +0 -14
  377. package/dist/ikoncomponents/widgets/type.d.ts +0 -11
  378. package/dist/ikoncomponents/widgets/type.d.ts.map +0 -1
  379. package/dist/ikoncomponents/widgets/type.js +0 -2
  380. package/dist/ikoncomponents/work-in-progress/index.d.ts +0 -2
  381. package/dist/ikoncomponents/work-in-progress/index.d.ts.map +0 -1
  382. package/dist/ikoncomponents/work-in-progress/index.js +0 -4
  383. package/dist/index.d.ts.map +0 -1
  384. package/dist/shadcn/accordion.d.ts +0 -8
  385. package/dist/shadcn/accordion.d.ts.map +0 -1
  386. package/dist/shadcn/accordion.js +0 -33
  387. package/dist/shadcn/alert-dialog.d.ts +0 -21
  388. package/dist/shadcn/alert-dialog.d.ts.map +0 -1
  389. package/dist/shadcn/alert-dialog.js +0 -83
  390. package/dist/shadcn/alert.d.ts +0 -10
  391. package/dist/shadcn/alert.d.ts.map +0 -1
  392. package/dist/shadcn/alert.js +0 -38
  393. package/dist/shadcn/aspect-ratio.d.ts +0 -4
  394. package/dist/shadcn/aspect-ratio.d.ts.map +0 -1
  395. package/dist/shadcn/aspect-ratio.js +0 -19
  396. package/dist/shadcn/avatar.d.ts +0 -7
  397. package/dist/shadcn/avatar.d.ts.map +0 -1
  398. package/dist/shadcn/avatar.js +0 -28
  399. package/dist/shadcn/badge.d.ts +0 -10
  400. package/dist/shadcn/badge.d.ts.map +0 -1
  401. package/dist/shadcn/badge.js +0 -35
  402. package/dist/shadcn/breadcrumb.d.ts +0 -12
  403. package/dist/shadcn/breadcrumb.d.ts.map +0 -1
  404. package/dist/shadcn/breadcrumb.js +0 -45
  405. package/dist/shadcn/button.d.ts +0 -11
  406. package/dist/shadcn/button.d.ts.map +0 -1
  407. package/dist/shadcn/button.js +0 -47
  408. package/dist/shadcn/calendar.d.ts +0 -9
  409. package/dist/shadcn/calendar.d.ts.map +0 -1
  410. package/dist/shadcn/calendar.js +0 -61
  411. package/dist/shadcn/card.d.ts +0 -10
  412. package/dist/shadcn/card.d.ts.map +0 -1
  413. package/dist/shadcn/card.js +0 -42
  414. package/dist/shadcn/checkbox.d.ts +0 -5
  415. package/dist/shadcn/checkbox.d.ts.map +0 -1
  416. package/dist/shadcn/checkbox.js +0 -21
  417. package/dist/shadcn/collapsible.d.ts +0 -6
  418. package/dist/shadcn/collapsible.d.ts.map +0 -1
  419. package/dist/shadcn/collapsible.js +0 -27
  420. package/dist/shadcn/command.d.ts +0 -19
  421. package/dist/shadcn/command.d.ts.map +0 -1
  422. package/dist/shadcn/command.js +0 -54
  423. package/dist/shadcn/date-input.d.ts +0 -8
  424. package/dist/shadcn/date-input.d.ts.map +0 -1
  425. package/dist/shadcn/date-input.js +0 -179
  426. package/dist/shadcn/date-range-picker.d.ts +0 -25
  427. package/dist/shadcn/date-range-picker.d.ts.map +0 -1
  428. package/dist/shadcn/date-range-picker.js +0 -45
  429. package/dist/shadcn/dialog.d.ts +0 -16
  430. package/dist/shadcn/dialog.d.ts.map +0 -1
  431. package/dist/shadcn/dialog.js +0 -57
  432. package/dist/shadcn/drawer.d.ts +0 -14
  433. package/dist/shadcn/drawer.d.ts.map +0 -1
  434. package/dist/shadcn/drawer.js +0 -56
  435. package/dist/shadcn/dropdown-menu.d.ts +0 -26
  436. package/dist/shadcn/dropdown-menu.d.ts.map +0 -1
  437. package/dist/shadcn/dropdown-menu.js +0 -77
  438. package/dist/shadcn/form.d.ts +0 -25
  439. package/dist/shadcn/form.d.ts.map +0 -1
  440. package/dist/shadcn/form.js +0 -70
  441. package/dist/shadcn/hover-card.d.ts +0 -7
  442. package/dist/shadcn/hover-card.d.ts.map +0 -1
  443. package/dist/shadcn/hover-card.js +0 -28
  444. package/dist/shadcn/input-otp.d.ts +0 -35
  445. package/dist/shadcn/input-otp.d.ts.map +0 -1
  446. package/dist/shadcn/input-otp.js +0 -40
  447. package/dist/shadcn/input.d.ts +0 -4
  448. package/dist/shadcn/input.d.ts.map +0 -1
  449. package/dist/shadcn/input.js +0 -18
  450. package/dist/shadcn/label.d.ts +0 -5
  451. package/dist/shadcn/label.d.ts.map +0 -1
  452. package/dist/shadcn/label.js +0 -20
  453. package/dist/shadcn/navigation-menu.d.ts +0 -17
  454. package/dist/shadcn/navigation-menu.d.ts.map +0 -1
  455. package/dist/shadcn/navigation-menu.js +0 -74
  456. package/dist/shadcn/popover.d.ts +0 -8
  457. package/dist/shadcn/popover.d.ts.map +0 -1
  458. package/dist/shadcn/popover.js +0 -32
  459. package/dist/shadcn/progress.d.ts +0 -9
  460. package/dist/shadcn/progress.d.ts.map +0 -1
  461. package/dist/shadcn/progress.js +0 -23
  462. package/dist/shadcn/radio-group.d.ts +0 -6
  463. package/dist/shadcn/radio-group.d.ts.map +0 -1
  464. package/dist/shadcn/radio-group.js +0 -25
  465. package/dist/shadcn/scroll-area.d.ts +0 -6
  466. package/dist/shadcn/scroll-area.d.ts.map +0 -1
  467. package/dist/shadcn/scroll-area.js +0 -26
  468. package/dist/shadcn/select.d.ts +0 -16
  469. package/dist/shadcn/select.d.ts.map +0 -1
  470. package/dist/shadcn/select.js +0 -59
  471. package/dist/shadcn/separator.d.ts +0 -5
  472. package/dist/shadcn/separator.d.ts.map +0 -1
  473. package/dist/shadcn/separator.js +0 -20
  474. package/dist/shadcn/sheet.d.ts +0 -14
  475. package/dist/shadcn/sheet.d.ts.map +0 -1
  476. package/dist/shadcn/sheet.js +0 -61
  477. package/dist/shadcn/sidebar.d.ts +0 -70
  478. package/dist/shadcn/sidebar.d.ts.map +0 -1
  479. package/dist/shadcn/sidebar.js +0 -242
  480. package/dist/shadcn/skeleton.d.ts +0 -4
  481. package/dist/shadcn/skeleton.d.ts.map +0 -1
  482. package/dist/shadcn/skeleton.js +0 -18
  483. package/dist/shadcn/slider.d.ts +0 -5
  484. package/dist/shadcn/slider.d.ts.map +0 -1
  485. package/dist/shadcn/slider.js +0 -26
  486. package/dist/shadcn/sonner.d.ts +0 -4
  487. package/dist/shadcn/sonner.d.ts.map +0 -1
  488. package/dist/shadcn/sonner.js +0 -25
  489. package/dist/shadcn/switch.d.ts +0 -5
  490. package/dist/shadcn/switch.d.ts.map +0 -1
  491. package/dist/shadcn/switch.js +0 -20
  492. package/dist/shadcn/table.d.ts +0 -11
  493. package/dist/shadcn/table.d.ts.map +0 -1
  494. package/dist/shadcn/table.js +0 -47
  495. package/dist/shadcn/tabs.d.ts +0 -8
  496. package/dist/shadcn/tabs.d.ts.map +0 -1
  497. package/dist/shadcn/tabs.js +0 -32
  498. package/dist/shadcn/textarea.d.ts +0 -4
  499. package/dist/shadcn/textarea.d.ts.map +0 -1
  500. package/dist/shadcn/textarea.js +0 -18
  501. package/dist/shadcn/toggle-group.d.ts +0 -10
  502. package/dist/shadcn/toggle-group.d.ts.map +0 -1
  503. package/dist/shadcn/toggle-group.js +0 -35
  504. package/dist/shadcn/toggle.d.ts +0 -10
  505. package/dist/shadcn/toggle.d.ts.map +0 -1
  506. package/dist/shadcn/toggle.js +0 -38
  507. package/dist/shadcn/tooltip.d.ts +0 -8
  508. package/dist/shadcn/tooltip.d.ts.map +0 -1
  509. package/dist/shadcn/tooltip.js +0 -32
  510. package/dist/shadcn/workflow.d.ts +0 -21
  511. package/dist/shadcn/workflow.d.ts.map +0 -1
  512. package/dist/shadcn/workflow.js +0 -20
  513. package/dist/styles.css +0 -1302
  514. package/dist/utils/actions/account/index.d.ts +0 -6
  515. package/dist/utils/actions/account/index.d.ts.map +0 -1
  516. package/dist/utils/actions/account/index.js +0 -28
  517. package/dist/utils/actions/account/type.d.ts +0 -5
  518. package/dist/utils/actions/account/type.d.ts.map +0 -1
  519. package/dist/utils/actions/account/type.js +0 -1
  520. package/dist/utils/actions/auth/index.d.ts +0 -8
  521. package/dist/utils/actions/auth/index.d.ts.map +0 -1
  522. package/dist/utils/actions/common/revalidate.d.ts +0 -3
  523. package/dist/utils/actions/common/revalidate.d.ts.map +0 -1
  524. package/dist/utils/actions/common/revalidate.js +0 -14
  525. package/dist/utils/actions/common/type.d.ts +0 -5
  526. package/dist/utils/actions/common/type.d.ts.map +0 -1
  527. package/dist/utils/actions/common/type.js +0 -1
  528. package/dist/utils/actions/common/utils.d.ts +0 -6
  529. package/dist/utils/actions/common/utils.d.ts.map +0 -1
  530. package/dist/utils/actions/software/index.d.ts +0 -12
  531. package/dist/utils/actions/software/index.d.ts.map +0 -1
  532. package/dist/utils/actions/software/index.js +0 -75
  533. package/dist/utils/api/accountService/index.d.ts +0 -24
  534. package/dist/utils/api/accountService/index.d.ts.map +0 -1
  535. package/dist/utils/api/accountService/index.js +0 -64
  536. package/dist/utils/api/accountService/type.d.ts +0 -5
  537. package/dist/utils/api/accountService/type.d.ts.map +0 -1
  538. package/dist/utils/api/accountService/type.js +0 -1
  539. package/dist/utils/api/file-upload/index.d.ts +0 -6
  540. package/dist/utils/api/file-upload/index.d.ts.map +0 -1
  541. package/dist/utils/api/file-upload/index.js +0 -80
  542. package/dist/utils/api/file-upload/type.d.ts +0 -7
  543. package/dist/utils/api/file-upload/type.d.ts.map +0 -1
  544. package/dist/utils/api/file-upload/type.js +0 -1
  545. package/dist/utils/api/ikonBaseApi.d.ts +0 -13
  546. package/dist/utils/api/ikonBaseApi.d.ts.map +0 -1
  547. package/dist/utils/api/loginService/index.d.ts +0 -13
  548. package/dist/utils/api/loginService/index.d.ts.map +0 -1
  549. package/dist/utils/api/loginService/index.js +0 -72
  550. package/dist/utils/api/loginService/type.d.ts.map +0 -1
  551. package/dist/utils/api/loginService/type.js +0 -1
  552. package/dist/utils/api/softwareService/index.d.ts +0 -65
  553. package/dist/utils/api/softwareService/index.d.ts.map +0 -1
  554. package/dist/utils/api/softwareService/index.js +0 -212
  555. package/dist/utils/api/softwareService/type.d.ts +0 -55
  556. package/dist/utils/api/softwareService/type.d.ts.map +0 -1
  557. package/dist/utils/api/softwareService/type.js +0 -1
  558. package/dist/utils/border-radius-provider.d.ts +0 -12
  559. package/dist/utils/border-radius-provider.d.ts.map +0 -1
  560. package/dist/utils/cn.d.ts +0 -3
  561. package/dist/utils/cn.d.ts.map +0 -1
  562. package/dist/utils/cn.js +0 -5
  563. package/dist/utils/font-provider.d.ts +0 -12
  564. package/dist/utils/font-provider.d.ts.map +0 -1
  565. package/dist/utils/session/cookieSession.d.ts +0 -9
  566. package/dist/utils/session/cookieSession.d.ts.map +0 -1
  567. package/dist/utils/session/cookieSession.js +0 -33
  568. package/dist/utils/theme-provider/index.d.ts +0 -4
  569. package/dist/utils/theme-provider/index.d.ts.map +0 -1
  570. package/dist/utils/theme-provider/index.js +0 -18
  571. package/dist/utils/token-management/index.d.ts +0 -11
  572. package/dist/utils/token-management/index.d.ts.map +0 -1
  573. package/dist/utils/token-management/index.js +0 -69
  574. package/dist/utils/token-management/types.d.ts +0 -7
  575. package/dist/utils/token-management/types.d.ts.map +0 -1
  576. package/dist/utils/token-management/types.js +0 -1
@@ -0,0 +1,279 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import { ChevronsUpDown } from "lucide-react";
5
+
6
+ import { cn } from "../../utils/cn";
7
+ import { Button } from "../../ikonShade/button";
8
+ import {
9
+ Command,
10
+ CommandEmpty,
11
+ CommandInput,
12
+ CommandItem,
13
+ CommandList,
14
+ } from "../../ikonShade/command";
15
+ import { Popover, PopoverContent, PopoverTrigger } from "../../ikonShade/popover";
16
+
17
+ export interface FrameworkEntry {
18
+ id: string;
19
+ index: string;
20
+ title: string;
21
+ description: string;
22
+ parentId: string | null;
23
+ treatAsParent: boolean;
24
+ }
25
+
26
+ export interface TreeNode extends FrameworkEntry {
27
+ level: number;
28
+ }
29
+
30
+ export interface ParentEntry extends FrameworkEntry {
31
+ childrenArray: string[];
32
+ }
33
+
34
+ export interface ProcessedFrameworkData {
35
+ flatTree: TreeNode[];
36
+ itemMap: Record<string, { parentId: string | null; childrenIds: string[] }>;
37
+ }
38
+
39
+ interface FrameworkItemDropdownProps {
40
+ processedData: ProcessedFrameworkData;
41
+ value: string[];
42
+ onChange: (newSelection: string[]) => void;
43
+ placeholder?: string;
44
+ searchPlaceholder?: string;
45
+ className?: string;
46
+ }
47
+
48
+ export function FrameworkItemDropdown({
49
+ processedData,
50
+ value,
51
+ onChange,
52
+ placeholder = "Select items...",
53
+ searchPlaceholder = "Search...",
54
+ className,
55
+ }: FrameworkItemDropdownProps) {
56
+ const [open, setOpen] = React.useState(false);
57
+ const [searchQuery, setSearchQuery] = React.useState("");
58
+
59
+ const { flatTree, itemMap } = processedData;
60
+
61
+ const selectionState = React.useMemo(() => {
62
+ const state = new Map<string, "checked" | "indeterminate">();
63
+ const selectedSet = new Set(value);
64
+
65
+ [...flatTree].reverse().forEach((item) => {
66
+ const nodeInfo = itemMap[item.id];
67
+ if (
68
+ !nodeInfo ||
69
+ !item.treatAsParent ||
70
+ nodeInfo.childrenIds.length === 0
71
+ ) {
72
+ if (selectedSet.has(item.id)) {
73
+ state.set(item.id, "checked");
74
+ }
75
+ } else {
76
+ const childStates = nodeInfo.childrenIds.map((childId) =>
77
+ state.get(childId)
78
+ );
79
+ const checkedCount = childStates.filter((s) => s === "checked").length;
80
+ const indeterminateCount = childStates.filter(
81
+ (s) => s === "indeterminate"
82
+ ).length;
83
+
84
+ if (checkedCount === nodeInfo.childrenIds.length) {
85
+ state.set(item.id, "checked");
86
+ } else if (checkedCount > 0 || indeterminateCount > 0) {
87
+ state.set(item.id, "indeterminate");
88
+ }
89
+ }
90
+ });
91
+
92
+ return state;
93
+ }, [value, flatTree, itemMap]);
94
+
95
+ const handleSelect = (item: TreeNode) => {
96
+ const newSelectedIds = new Set(value);
97
+ const currentState = selectionState.get(item.id);
98
+ const shouldBeChecked = !(
99
+ currentState === "checked" || currentState === "indeterminate"
100
+ );
101
+
102
+ const descendants = new Set<string>();
103
+ const queue: string[] = [...(itemMap[item.id]?.childrenIds || [])];
104
+
105
+ while (queue.length > 0) {
106
+ const currentId = queue.shift()!;
107
+ descendants.add(currentId);
108
+ const children = itemMap[currentId]?.childrenIds || [];
109
+ children.forEach((childId) => queue.push(childId));
110
+ }
111
+
112
+ if (shouldBeChecked) {
113
+ newSelectedIds.add(item.id);
114
+ descendants.forEach((id) => newSelectedIds.add(id));
115
+ } else {
116
+ newSelectedIds.delete(item.id);
117
+ descendants.forEach((id) => newSelectedIds.delete(id));
118
+ }
119
+
120
+ let parentId = itemMap[item.id]?.parentId;
121
+ while (parentId) {
122
+ const parentInfo = itemMap[parentId];
123
+ if (parentInfo && parentInfo.childrenIds.length > 0) {
124
+ const areAllChildrenSelected = parentInfo.childrenIds.every((childId) =>
125
+ newSelectedIds.has(childId)
126
+ );
127
+ if (areAllChildrenSelected) {
128
+ newSelectedIds.add(parentId);
129
+ } else {
130
+ newSelectedIds.delete(parentId);
131
+ }
132
+ }
133
+ parentId = parentInfo?.parentId;
134
+ }
135
+
136
+ onChange(Array.from(newSelectedIds));
137
+ };
138
+
139
+ const filteredItems = React.useMemo(() => {
140
+ if (!searchQuery) return flatTree.slice(); // Always return a new array in original order
141
+
142
+ const lowercasedQuery = searchQuery.toLowerCase();
143
+ const matchedIds = new Set<string>();
144
+
145
+ // Step 1: collect directly matched items
146
+ flatTree.forEach((item) => {
147
+ const matches =
148
+ item.title.toLowerCase().includes(lowercasedQuery) ||
149
+ item.description.toLowerCase().includes(lowercasedQuery) ||
150
+ item.index.toLowerCase().includes(lowercasedQuery);
151
+
152
+ if (matches) {
153
+ matchedIds.add(item.id);
154
+ }
155
+ });
156
+
157
+ // Step 2: collect ancestors and descendants
158
+ const expandedIds = new Set(matchedIds);
159
+
160
+ const addAncestors = (id: string) => {
161
+ let current = id;
162
+ while (current) {
163
+ const parentId = itemMap[current]?.parentId;
164
+ if (parentId && !expandedIds.has(parentId)) {
165
+ expandedIds.add(parentId);
166
+ current = parentId;
167
+ } else {
168
+ break;
169
+ }
170
+ }
171
+ };
172
+
173
+ const addDescendants = (id: string) => {
174
+ const children = itemMap[id]?.childrenIds || [];
175
+ for (const childId of children) {
176
+ if (!expandedIds.has(childId)) {
177
+ expandedIds.add(childId);
178
+ addDescendants(childId);
179
+ }
180
+ }
181
+ };
182
+
183
+ matchedIds.forEach((id) => {
184
+ addAncestors(id);
185
+ addDescendants(id);
186
+ });
187
+
188
+ // Step 3: Return nodes in the original flatTree order, but only those in expandedIds
189
+ return flatTree.filter((node) => expandedIds.has(node.id));
190
+ }, [searchQuery, flatTree, itemMap]);
191
+
192
+ const getSelectedLabel = () => {
193
+ const leafNodeIds = value.filter((id) => {
194
+ const nodeInfo = itemMap[id];
195
+ return !nodeInfo || nodeInfo.childrenIds.length === 0;
196
+ });
197
+
198
+ if (leafNodeIds.length === 0) {
199
+ return <span className="text-muted-foreground">{placeholder}</span>;
200
+ }
201
+
202
+ if (leafNodeIds.length === 1) {
203
+ const item = flatTree.find((i) => i.id === leafNodeIds[0]);
204
+ return item ? item.index : placeholder;
205
+ }
206
+
207
+ return `${leafNodeIds.length} items selected`;
208
+ };
209
+
210
+ return (
211
+ <Popover open={open} onOpenChange={setOpen}>
212
+ <PopoverTrigger asChild>
213
+ <Button
214
+ variant="outline"
215
+ role="combobox"
216
+ aria-expanded={open}
217
+ className={cn(
218
+ "w-full justify-between transition-all duration-150 ease-in-out border hover:border-primary hover:shadow-sm bg-secondary cursor-pointer",
219
+ className
220
+ )}
221
+ >
222
+ <span className="truncate">{getSelectedLabel()}</span>
223
+ <ChevronsUpDown
224
+ className={cn(
225
+ "ml-2 h-4 w-4 shrink-0 transition-transform duration-200",
226
+ open && "rotate-180"
227
+ )}
228
+ />
229
+ </Button>
230
+ </PopoverTrigger>
231
+ <PopoverContent className="w-[--radix-popover-trigger-width] p-0 max-h-[400px] overflow-y-auto">
232
+ <Command>
233
+ <CommandInput
234
+ placeholder={searchPlaceholder}
235
+ value={searchQuery}
236
+ onValueChange={setSearchQuery}
237
+ />
238
+ <CommandList className="transition-all duration-200 ease-in-out">
239
+ <CommandEmpty>No results found.</CommandEmpty>
240
+
241
+ {filteredItems.map((item) => (
242
+ <CommandItem
243
+ key={item.id}
244
+ value={`${item.index} ${item.title} ${item.description}`}
245
+ onSelect={() => handleSelect(item)}
246
+ className="flex items-start cursor-pointer gap-2"
247
+ style={{ paddingLeft: `${item.level * 1.5 + 0.75}rem` }}
248
+ >
249
+ <input
250
+ type="checkbox"
251
+ className="mt-1 h-4 w-4 accent-primary border rounded"
252
+ checked={selectionState.get(item.id) === "checked"}
253
+ ref={(el) => {
254
+ if (el) {
255
+ el.indeterminate =
256
+ selectionState.get(item.id) === "indeterminate";
257
+ }
258
+ }}
259
+ readOnly
260
+ />
261
+ <div className="flex flex-col">
262
+ <div className="flex items-center space-x-2">
263
+ <span className="text-xs font-mono text-muted-foreground bg-muted px-1.5 py-0.5 rounded">
264
+ {item.index}
265
+ </span>
266
+ <span className="font-medium">{item.title}</span>
267
+ </div>
268
+ <p className="text-sm text-muted-foreground">
269
+ {item.description}
270
+ </p>
271
+ </div>
272
+ </CommandItem>
273
+ ))}
274
+ </CommandList>
275
+ </Command>
276
+ </PopoverContent>
277
+ </Popover>
278
+ );
279
+ }
@@ -0,0 +1,237 @@
1
+ "use client";
2
+ import { useState, useEffect } from "react";
3
+ import { UploadIcon, X, FileWarning, Send } from "lucide-react";
4
+ import { Button } from "../../ikonShade/button";
5
+ import { Input } from "../../ikonShade/input";
6
+ import { Label } from "../../ikonShade/label";
7
+ import { Progress } from "../../ikonShade/progress";
8
+ import { useForm } from "react-hook-form";
9
+ import axios from "axios";
10
+
11
+ import {
12
+ Form,
13
+ FormField,
14
+ FormItem,
15
+ FormLabel,
16
+ FormControl,
17
+ FormMessage,
18
+ FormDescription,
19
+ } from "../../ikonShade/form";
20
+ import { NoDataComponent } from "../no-data";
21
+
22
+ interface Entry {
23
+ text: string;
24
+ fileNames: string[];
25
+ }
26
+
27
+ interface FileDetails {
28
+ name: string;
29
+ url: string;
30
+ progress: number;
31
+ file: File;
32
+ }
33
+
34
+ export function UploadTab() {
35
+ const form = useForm<Entry>({
36
+ defaultValues: {
37
+ text: "",
38
+ fileNames: [],
39
+ },
40
+ });
41
+
42
+ const [inputValue, setInputValue] = useState("");
43
+ const [texts, setTexts] = useState<Entry[]>([]);
44
+ const [fileNames, setFileNames] = useState<FileDetails[]>([]); // Updated type
45
+ const [formattedDate, setFormattedDate] = useState("");
46
+ const [noFilesUploaded, setNoFilesUploaded] = useState(true);
47
+
48
+ const isUploading = fileNames.some((file) => file.progress < 100);
49
+
50
+ const simulateFileUpload = async (idx: number, file: FileDetails) => {
51
+ const formData = new FormData();
52
+ formData.append("file", file.file); // Use the actual file object
53
+
54
+ try {
55
+ const response = await axios.post("UPLOAD_ENDPOINT_URL", formData, {
56
+ onUploadProgress: (progressEvent) => {
57
+ const progress = Math.round(
58
+ (progressEvent.loaded * 100) / (progressEvent.total || 1)
59
+ );
60
+ setFileNames((prev) =>
61
+ prev.map((f, i) => (i === idx ? { ...f, progress } : f))
62
+ );
63
+ },
64
+ });
65
+
66
+ setFileNames((prev) =>
67
+ prev.map((f, i) =>
68
+ i === idx ? { ...f, url: response.data.url, progress: 100 } : f
69
+ )
70
+ );
71
+ } catch (error) {
72
+ console.error("Upload failed:", error);
73
+ }
74
+ };
75
+
76
+ useEffect(() => {
77
+ const currentDate = new Date();
78
+ const day = String(currentDate.getDate()).padStart(2, "0");
79
+ const month = String(currentDate.getMonth() + 1).padStart(2, "0");
80
+ const year = currentDate.getFullYear();
81
+
82
+ setFormattedDate(`${day}-${month}-${year}`);
83
+ }, []);
84
+
85
+ useEffect(() => {
86
+ fileNames.forEach((file, idx) => {
87
+ if (file.progress === 0) {
88
+ simulateFileUpload(idx, file);
89
+ }
90
+ });
91
+ }, [fileNames]);
92
+
93
+ const handleAddText = () => {
94
+ if (inputValue.trim() || fileNames.length > 0) {
95
+ const newEntry: Entry = {
96
+ text: inputValue.trim(),
97
+ fileNames: fileNames.map((file) => file.name),
98
+ };
99
+ setTexts([newEntry, ...texts]);
100
+ setInputValue("");
101
+ setFileNames([]);
102
+ setNoFilesUploaded(false);
103
+ }
104
+ };
105
+
106
+ const handleFileUpload = (e: React.ChangeEvent<HTMLInputElement>) => {
107
+ if (e.target.files) {
108
+ const uploadedFiles = Array.from(e.target.files).map((file) => ({
109
+ name: file.name,
110
+ url: "",
111
+ progress: 0,
112
+ file,
113
+ }));
114
+ setFileNames((prev) => [...prev, ...uploadedFiles]); // Type now matches correctly
115
+ setNoFilesUploaded(false);
116
+ }
117
+ };
118
+
119
+ const removeFile = (index: number) => {
120
+ const updatedFiles = fileNames.filter((_, idx) => idx !== index);
121
+ setFileNames(updatedFiles);
122
+ if (updatedFiles.length === 0 && texts.length === 0) {
123
+ setNoFilesUploaded(true);
124
+ }
125
+ };
126
+
127
+
128
+
129
+ return (
130
+ <>
131
+ {/* Container for the text list */}
132
+ <div className="flex flex-col h-full w-full gap-3">
133
+ <div className="flex-grow overflow-auto flex flex-col-reverse gap-2">
134
+ {noFilesUploaded && <NoDataComponent text="No files uploaded" />}
135
+ {fileNames.length > 0 && (
136
+ <div className="p-2 my-1 rounded-md border">
137
+ <p className="font-bold">Selected Files:</p>
138
+ {fileNames.map((file, idx) => (
139
+ <div key={idx} className="flex flex-col mb-2">
140
+ <div className="flex items-center justify-between">
141
+ <a
142
+ href={file.url}
143
+ download={file.name}
144
+ className="text-sm text-blue-600 underline cursor-pointer"
145
+ >
146
+ {file.name}
147
+ </a>
148
+ <button
149
+ onClick={() => removeFile(idx)}
150
+ className="text-red-500 hover:text-red-800"
151
+ >
152
+ <X className="w-4 h-4" />
153
+ </button>
154
+ </div>
155
+ <Progress value={file.progress} />
156
+ <p className="text-xs text-gray-500">
157
+ {file.progress}% uploaded
158
+ </p>
159
+ </div>
160
+ ))}
161
+ </div>
162
+ )}
163
+ {texts.map((entry, index) => (
164
+ <div key={index} className="border-b text-sm pb-2">
165
+ {entry.fileNames.map((fileName, idx) => (
166
+ <p key={idx}>
167
+ <a
168
+ href={
169
+ fileNames.find((file) => file.name === fileName)?.url ||
170
+ "#"
171
+ }
172
+ download={fileName}
173
+ className="text-sm text-blue-500 underline cursor-pointer"
174
+ >
175
+ {fileName}
176
+ </a>
177
+ </p>
178
+ ))}
179
+ <p>{entry.text || "(No Text)"}</p>
180
+ <div className="flex justify-between">
181
+ <p>John Doe</p>
182
+ <p>{formattedDate}</p>
183
+ </div>
184
+ </div>
185
+ ))}
186
+ </div>
187
+ <Form {...form}>
188
+ <form onSubmit={form.handleSubmit(() => handleAddText())}>
189
+ <div className="flex flex-col">
190
+ <div className="flex items-center justify-center gap-2">
191
+ <div className="flex-1">
192
+ <FormField
193
+ name="text"
194
+ render={({ field }) => (
195
+ <FormItem>
196
+ <FormControl>
197
+ <Input
198
+ id="text-input"
199
+ type="text"
200
+ value={inputValue}
201
+ onChange={(e) => setInputValue(e.target.value)}
202
+ placeholder="Type something..."
203
+ />
204
+ </FormControl>
205
+ <FormMessage />
206
+ </FormItem>
207
+ )}
208
+ />
209
+ </div>
210
+ <div className="flex items-center gap-2">
211
+ <Label htmlFor="file-upload" className="sr-only">
212
+ Upload Files
213
+ </Label>
214
+ <Button variant="outline" asChild>
215
+ <label htmlFor="file-upload" className="cursor-pointer">
216
+ <UploadIcon className="w-5 h-5" />
217
+ </label>
218
+ </Button>
219
+ <Input
220
+ id="file-upload"
221
+ type="file"
222
+ multiple
223
+ onChange={handleFileUpload}
224
+ className="hidden"
225
+ />
226
+ </div>
227
+ <Button variant="outline" type="submit" disabled={isUploading}>
228
+ <Send />
229
+ </Button>
230
+ </div>
231
+ </div>
232
+ </form>
233
+ </Form>
234
+ </div>
235
+ </>
236
+ );
237
+ }
@@ -0,0 +1,81 @@
1
+ 'use client'
2
+ import * as React from "react";
3
+ import { WidgetsFunctionProps } from "./type";
4
+ import { Icon } from "../icon";
5
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../../ikonShade/tooltip";
6
+ import { Button } from "../../ikonShade/button";
7
+
8
+ export function Widgets({ widgetData }: WidgetsFunctionProps) {
9
+ const firstRowWidgets = widgetData.slice(0, 4);
10
+ const secondRowWidgets = widgetData.slice(4);
11
+
12
+ return (
13
+ <div className="flex flex-col gap-2">
14
+ <div className="flex flex-col md:flex-row gap-2">
15
+ {firstRowWidgets.map((widget) => (
16
+ <div className="flex flex-1 flex-row justify-between border rounded-md p-2 border-l-4 border-l-primary" key={widget.id}>
17
+ <div className="flex flex-col">
18
+ <TooltipProvider>
19
+ <Tooltip>
20
+ <TooltipTrigger className="cursor-default select-text">
21
+ <p className="font-medium max-w-[240px] truncate">{widget.widgetText}</p>
22
+ </TooltipTrigger>
23
+ <TooltipContent>
24
+ <p>{widget.widgetText}</p>
25
+ </TooltipContent>
26
+ </Tooltip>
27
+ </TooltipProvider>
28
+ <div>
29
+ {widget.onButtonClickfunc ?
30
+ <Button className="px-0" variant={"link"} onClick={() => widget.onButtonClickfunc?.({ id: widget.id })}>
31
+ {widget.widgetNumber}
32
+ </Button> :
33
+ <p className="inline-flex items-center justify-center px-0 py-2 text-sm font-medium border border-transparent rounded-md">
34
+ {widget.widgetNumber}
35
+ </p>
36
+ }
37
+ </div>
38
+ </div>
39
+ <div className="flex justify-end items-center">
40
+ {widget.iconName && <Icon name={widget.iconName} />}
41
+ </div>
42
+ </div>
43
+ ))}
44
+ </div>
45
+
46
+ {secondRowWidgets.length > 0 && (
47
+ <div className="flex flex-col md:flex-row gap-2">
48
+ {secondRowWidgets.map((widget) => (
49
+ <div className="flex flex-1 flex-row justify-between border rounded-md p-2 border-l-4 border-l-primary" key={widget.id}>
50
+ <div className="flex flex-col">
51
+ <TooltipProvider>
52
+ <Tooltip>
53
+ <TooltipTrigger className="cursor-default select-text">
54
+ <p className="font-medium max-w-[240px] truncate">{widget.widgetText}</p>
55
+ </TooltipTrigger>
56
+ <TooltipContent>
57
+ <p>{widget.widgetText}</p>
58
+ </TooltipContent>
59
+ </Tooltip>
60
+ </TooltipProvider>
61
+ <div>
62
+ {widget.onButtonClickfunc ?
63
+ <Button className="px-0" variant={"link"} onClick={() => widget.onButtonClickfunc?.({ id: widget.id })}>
64
+ {widget.widgetNumber}
65
+ </Button> :
66
+ <p className="inline-flex items-center justify-center px-0 py-2 text-sm font-medium border border-transparent rounded-md">
67
+ {widget.widgetNumber}
68
+ </p>
69
+ }
70
+ </div>
71
+ </div>
72
+ <div className="flex justify-end items-center">
73
+ {widget.iconName && <Icon name={widget.iconName} />}
74
+ </div>
75
+ </div>
76
+ ))}
77
+ </div>
78
+ )}
79
+ </div>
80
+ )
81
+ }
@@ -0,0 +1,11 @@
1
+ export interface WidgetProps {
2
+ id: string,
3
+ widgetText: string;
4
+ widgetNumber: string;
5
+ iconName?: string;
6
+ onButtonClickfunc?: (...params: (string | (Record<string, string>))[]) => void;
7
+ };
8
+
9
+ export interface WidgetsFunctionProps {
10
+ widgetData: WidgetProps[];
11
+ }
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+
3
+ export function WorkInProgress() {
4
+ return (
5
+ <div className="flex h-full items-center justify-center">
6
+ <div className="bg-background text-forefround rounded-xl p-6 text-center max-w-md">
7
+ <div className="text-3xl font-bold mb-2 animate-pulse">
8
+ 🚧 Work in Progress
9
+ </div>
10
+ <p className="text-muted-foreground">
11
+ We’re currently working on this section. Check back soon!
12
+ </p>
13
+ </div>
14
+ </div>
15
+ );
16
+ }