pixelize-design-library 2.4.1-beta.11 → 2.4.1-beta.13

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 (651) hide show
  1. package/dist/App.d.ts +4 -0
  2. package/dist/App.js +95 -0
  3. package/dist/Components/AlertDialog/AlertDialog.d.ts.map +1 -1
  4. package/dist/Components/AlertDialog/AlertDialog.js +1 -1
  5. package/dist/Components/Button/Button.d.ts +1 -1
  6. package/dist/Components/Button/Button.d.ts.map +1 -1
  7. package/dist/Components/Button/Button.js +2 -2
  8. package/dist/Components/Button/ButtonProps.d.ts +1 -1
  9. package/dist/Components/Button/ButtonProps.d.ts.map +1 -1
  10. package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.d.ts.map +1 -1
  11. package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +5 -2
  12. package/dist/Components/Checkbox/Checkbox.d.ts +1 -1
  13. package/dist/Components/Checkbox/Checkbox.d.ts.map +1 -1
  14. package/dist/Components/Checkbox/Checkbox.js +2 -2
  15. package/dist/Components/Checkbox/CheckboxProps.d.ts +1 -1
  16. package/dist/Components/Checkbox/CheckboxProps.d.ts.map +1 -1
  17. package/dist/Components/Common/ErrorMessage.d.ts +2 -1
  18. package/dist/Components/Common/ErrorMessage.d.ts.map +1 -1
  19. package/dist/Components/Common/ErrorMessage.js +4 -2
  20. package/dist/Components/Common/FormLabel.d.ts +1 -1
  21. package/dist/Components/Common/FormLabel.d.ts.map +1 -1
  22. package/dist/Components/Common/FormLabel.js +15 -2
  23. package/dist/Components/Common/Label.d.ts +3 -1
  24. package/dist/Components/Common/Label.d.ts.map +1 -1
  25. package/dist/Components/Common/Label.js +2 -2
  26. package/dist/Components/Dropdown/DropDown.d.ts.map +1 -1
  27. package/dist/Components/Dropdown/DropDown.js +132 -14
  28. package/dist/Components/Dropdown/DropdownProps.d.ts +2 -0
  29. package/dist/Components/Dropdown/DropdownProps.d.ts.map +1 -1
  30. package/dist/Components/Editor/EditorProps.d.ts +1 -1
  31. package/dist/Components/Editor/EditorProps.d.ts.map +1 -1
  32. package/dist/Components/KanbanBoard/KanbanBoard.d.ts.map +1 -1
  33. package/dist/Components/KanbanBoard/KanbanBoard.js +5 -2
  34. package/dist/Components/KanbanBoard/MeasuredItem.d.ts.map +1 -1
  35. package/dist/Components/KanbanBoard/MeasuredItem.js +4 -2
  36. package/dist/Components/NavigationBar/NavigationBar.d.ts.map +1 -1
  37. package/dist/Components/NavigationBar/NavigationBar.js +3 -1
  38. package/dist/Components/OrgSwitcher/OrgSwitcher.d.ts.map +1 -1
  39. package/dist/Components/OrgSwitcher/OrgSwitcher.js +40 -3
  40. package/dist/Components/ProductCard/ProductPrice.d.ts.map +1 -1
  41. package/dist/Components/ProductCard/ProductPrice.js +13 -7
  42. package/dist/Components/ProgressBar/ProgressBar.d.ts +1 -1
  43. package/dist/Components/ProgressBar/ProgressBar.d.ts.map +1 -1
  44. package/dist/Components/ProgressBar/ProgressBar.js +2 -2
  45. package/dist/Components/ProgressBar/ProgressBarProps.d.ts +1 -1
  46. package/dist/Components/ProgressBar/ProgressBarProps.d.ts.map +1 -1
  47. package/dist/Components/ScrollToTop/ScrollToTop.d.ts.map +1 -1
  48. package/dist/Components/ScrollToTop/ScrollToTop.js +8 -3
  49. package/dist/Components/SearchSelect/SearchSelect.d.ts.map +1 -1
  50. package/dist/Components/SearchSelect/SearchSelect.js +213 -18
  51. package/dist/Components/SelectSearch/SelectSearch.d.ts.map +1 -1
  52. package/dist/Components/SelectSearch/SelectSearch.js +89 -4
  53. package/dist/Components/SelectV2/SelectV2.d.ts.map +1 -1
  54. package/dist/Components/SelectV2/SelectV2.js +116 -29
  55. package/dist/Components/SideBar/SecondaryBar.d.ts.map +1 -1
  56. package/dist/Components/SideBar/SecondaryBar.js +15 -7
  57. package/dist/Components/SideBar/SideBar.d.ts.map +1 -1
  58. package/dist/Components/SideBar/SideBar.js +36 -5
  59. package/dist/Components/SideBar/components/MenuItemBox.d.ts.map +1 -1
  60. package/dist/Components/SideBar/components/MenuItemBox.js +44 -15
  61. package/dist/Components/SideBar/components/MenuPopoverContent.d.ts.map +1 -1
  62. package/dist/Components/SideBar/components/MenuPopoverContent.js +9 -3
  63. package/dist/Components/StageProgress/StageItem.d.ts.map +1 -1
  64. package/dist/Components/StageProgress/StageItem.js +1 -1
  65. package/dist/Components/StageProgress/StepperStage.d.ts.map +1 -1
  66. package/dist/Components/StageProgress/StepperStage.js +1 -1
  67. package/dist/Components/Table/Table.d.ts.map +1 -1
  68. package/dist/Components/Table/Table.js +1 -1
  69. package/dist/Components/Table/components/HeaderActions.d.ts.map +1 -1
  70. package/dist/Components/Table/components/HeaderActions.js +3 -1
  71. package/dist/Components/Table/components/TableActions.d.ts.map +1 -1
  72. package/dist/Components/Table/components/TableActions.js +3 -3
  73. package/dist/Components/Table/components/TableBody.d.ts.map +1 -1
  74. package/dist/Components/Table/components/TableBody.js +74 -48
  75. package/dist/Components/Table/components/TableGroupRow.d.ts +1 -0
  76. package/dist/Components/Table/components/TableGroupRow.d.ts.map +1 -1
  77. package/dist/Components/Table/components/TableGroupRow.js +2 -2
  78. package/dist/Components/Table/components/TableHeader.d.ts.map +1 -1
  79. package/dist/Components/Table/components/TableHeader.js +35 -42
  80. package/dist/Components/Table/components/TableSearch.d.ts.map +1 -1
  81. package/dist/Components/Table/components/TableSearch.js +1 -1
  82. package/dist/Components/Table/filters/CompactSelect.d.ts.map +1 -1
  83. package/dist/Components/Table/filters/CompactSelect.js +33 -1
  84. package/dist/Components/Table/filters/LeftFilterPane.d.ts.map +1 -1
  85. package/dist/Components/Table/filters/LeftFilterPane.js +1 -1
  86. package/dist/Components/Table/hooks/useTable.d.ts.map +1 -1
  87. package/dist/Components/Table/hooks/useTable.js +6 -2
  88. package/dist/Components/Table/settings/ManageColumns.d.ts.map +1 -1
  89. package/dist/Components/Table/settings/ManageColumns.js +13 -4
  90. package/dist/Components/Table/settings/TableSettings.d.ts.map +1 -1
  91. package/dist/Components/Table/settings/TableSettings.js +2 -2
  92. package/dist/Components/Tag/Tag.d.ts.map +1 -1
  93. package/dist/Components/Tag/Tag.js +5 -8
  94. package/dist/Components/Timeline/Timeline.d.ts.map +1 -1
  95. package/dist/Components/Timeline/Timeline.js +202 -202
  96. package/dist/Components/Toaster/Toaster.d.ts.map +1 -1
  97. package/dist/Components/Toaster/Toaster.js +19 -11
  98. package/dist/Hooks/usePreferences.d.ts.map +1 -1
  99. package/dist/Hooks/usePreferences.js +6 -1
  100. package/dist/Layout.d.ts +3 -0
  101. package/dist/Layout.js +286 -0
  102. package/dist/Pages/TInput.d.ts +3 -0
  103. package/dist/Pages/TInput.d.ts.map +1 -0
  104. package/dist/Pages/TInput.js +20 -0
  105. package/dist/Pages/accordion.d.ts +3 -0
  106. package/dist/Pages/accordion.d.ts.map +1 -0
  107. package/dist/Pages/accordion.js +21 -0
  108. package/dist/Pages/alertdialog.d.ts +3 -0
  109. package/dist/Pages/alertdialog.d.ts.map +1 -0
  110. package/dist/Pages/alertdialog.js +53 -0
  111. package/dist/Pages/button.d.ts +3 -0
  112. package/dist/Pages/button.d.ts.map +1 -0
  113. package/dist/Pages/button.js +32 -0
  114. package/dist/Pages/card.d.ts +3 -0
  115. package/dist/Pages/card.d.ts.map +1 -0
  116. package/dist/Pages/card.js +102 -0
  117. package/dist/Pages/chart.d.ts +4 -0
  118. package/dist/Pages/chart.d.ts.map +1 -0
  119. package/dist/Pages/chart.js +25 -0
  120. package/dist/Pages/checkbox.d.ts +3 -0
  121. package/dist/Pages/checkbox.d.ts.map +1 -0
  122. package/dist/Pages/checkbox.js +11 -0
  123. package/dist/Pages/contactForm.d.ts +3 -0
  124. package/dist/Pages/contactForm.d.ts.map +1 -0
  125. package/dist/Pages/contactForm.js +15 -0
  126. package/dist/Pages/customModulesTable.d.ts +4 -0
  127. package/dist/Pages/customModulesTable.d.ts.map +1 -0
  128. package/dist/Pages/customModulesTable.js +25 -0
  129. package/dist/Pages/datePick.d.ts +3 -0
  130. package/dist/Pages/datePick.d.ts.map +1 -0
  131. package/dist/Pages/datePick.js +49 -0
  132. package/dist/Pages/drawer.d.ts +3 -0
  133. package/dist/Pages/drawer.d.ts.map +1 -0
  134. package/dist/Pages/drawer.js +53 -0
  135. package/dist/Pages/dropdown.d.ts +3 -0
  136. package/dist/Pages/dropdown.d.ts.map +1 -0
  137. package/dist/Pages/dropdown.js +21 -0
  138. package/dist/Pages/editor.d.ts +3 -0
  139. package/dist/Pages/editor.d.ts.map +1 -0
  140. package/dist/Pages/editor.js +13 -0
  141. package/dist/Pages/feedback.d.ts +2 -0
  142. package/dist/Pages/feedback.d.ts.map +1 -0
  143. package/dist/Pages/feedback.js +12 -0
  144. package/dist/Pages/fileUpload.d.ts +2 -0
  145. package/dist/Pages/fileUpload.d.ts.map +1 -0
  146. package/dist/Pages/fileUpload.js +36 -0
  147. package/dist/Pages/input.d.ts +3 -0
  148. package/dist/Pages/input.d.ts.map +1 -0
  149. package/dist/Pages/input.js +48 -0
  150. package/dist/Pages/kanbanboard.d.ts +3 -0
  151. package/dist/Pages/kanbanboard.d.ts.map +1 -0
  152. package/dist/Pages/kanbanboard.js +182 -0
  153. package/dist/Pages/modal.d.ts +3 -0
  154. package/dist/Pages/modal.d.ts.map +1 -0
  155. package/dist/Pages/modal.js +61 -0
  156. package/dist/Pages/multiSelect.d.ts +3 -0
  157. package/dist/Pages/multiSelect.d.ts.map +1 -0
  158. package/dist/Pages/multiSelect.js +22 -0
  159. package/dist/Pages/noteArea.d.ts +3 -0
  160. package/dist/Pages/noteArea.d.ts.map +1 -0
  161. package/dist/Pages/noteArea.js +26 -0
  162. package/dist/Pages/notification.d.ts +3 -0
  163. package/dist/Pages/notification.d.ts.map +1 -0
  164. package/dist/Pages/notification.js +37 -0
  165. package/dist/Pages/numberInput.d.ts +3 -0
  166. package/dist/Pages/numberInput.d.ts.map +1 -0
  167. package/dist/Pages/numberInput.js +16 -0
  168. package/dist/Pages/orgSwitcher.d.ts +4 -0
  169. package/dist/Pages/orgSwitcher.d.ts.map +1 -0
  170. package/dist/Pages/orgSwitcher.js +36 -0
  171. package/dist/Pages/organizationDetails.d.ts +4 -0
  172. package/dist/Pages/organizationDetails.d.ts.map +1 -0
  173. package/dist/Pages/organizationDetails.js +80 -0
  174. package/dist/Pages/photoViewer.d.ts +3 -0
  175. package/dist/Pages/photoViewer.d.ts.map +1 -0
  176. package/dist/Pages/photoViewer.js +12 -0
  177. package/dist/Pages/pinInputs.d.ts +3 -0
  178. package/dist/Pages/pinInputs.d.ts.map +1 -0
  179. package/dist/Pages/pinInputs.js +11 -0
  180. package/dist/Pages/productCaard.d.ts +3 -0
  181. package/dist/Pages/productCaard.d.ts.map +1 -0
  182. package/dist/Pages/productCaard.js +311 -0
  183. package/dist/Pages/productDetailCard.d.ts +3 -0
  184. package/dist/Pages/productDetailCard.d.ts.map +1 -0
  185. package/dist/Pages/productDetailCard.js +78 -0
  186. package/dist/Pages/productFilter.d.ts +3 -0
  187. package/dist/Pages/productFilter.d.ts.map +1 -0
  188. package/dist/Pages/productFilter.js +148 -0
  189. package/dist/Pages/progressbar.d.ts +3 -0
  190. package/dist/Pages/progressbar.d.ts.map +1 -0
  191. package/dist/Pages/progressbar.js +11 -0
  192. package/dist/Pages/radioButton.d.ts +3 -0
  193. package/dist/Pages/radioButton.d.ts.map +1 -0
  194. package/dist/Pages/radioButton.js +18 -0
  195. package/dist/Pages/rolesPermission.d.ts +4 -0
  196. package/dist/Pages/rolesPermission.d.ts.map +1 -0
  197. package/dist/Pages/rolesPermission.js +144 -0
  198. package/dist/Pages/search.d.ts +3 -0
  199. package/dist/Pages/search.d.ts.map +1 -0
  200. package/dist/Pages/search.js +21 -0
  201. package/dist/Pages/searchSelect.d.ts +3 -0
  202. package/dist/Pages/searchSelect.d.ts.map +1 -0
  203. package/dist/Pages/searchSelect.js +97 -0
  204. package/dist/Pages/select.d.ts +3 -0
  205. package/dist/Pages/select.d.ts.map +1 -0
  206. package/dist/Pages/select.js +20 -0
  207. package/dist/Pages/selectSearch.d.ts +3 -0
  208. package/dist/Pages/selectSearch.d.ts.map +1 -0
  209. package/dist/Pages/selectSearch.js +58 -0
  210. package/dist/Pages/signInActivityTable.d.ts +4 -0
  211. package/dist/Pages/signInActivityTable.d.ts.map +1 -0
  212. package/dist/Pages/signInActivityTable.js +17 -0
  213. package/dist/Pages/skeleton.d.ts +3 -0
  214. package/dist/Pages/skeleton.d.ts.map +1 -0
  215. package/dist/Pages/skeleton.js +12 -0
  216. package/dist/Pages/stageProgress.d.ts +4 -0
  217. package/dist/Pages/stageProgress.d.ts.map +1 -0
  218. package/dist/Pages/stageProgress.js +31 -0
  219. package/dist/Pages/switch.d.ts +3 -0
  220. package/dist/Pages/switch.d.ts.map +1 -0
  221. package/dist/Pages/switch.js +17 -0
  222. package/dist/Pages/table.d.ts +3 -0
  223. package/dist/Pages/table.d.ts.map +1 -0
  224. package/dist/Pages/table.js +182 -0
  225. package/dist/Pages/tag.d.ts +3 -0
  226. package/dist/Pages/tag.d.ts.map +1 -0
  227. package/dist/Pages/tag.js +27 -0
  228. package/dist/Pages/textArea.d.ts +3 -0
  229. package/dist/Pages/textArea.d.ts.map +1 -0
  230. package/dist/Pages/textArea.js +14 -0
  231. package/dist/Pages/tier1.d.ts +4 -0
  232. package/dist/Pages/tier1.d.ts.map +1 -0
  233. package/dist/Pages/tier1.js +86 -0
  234. package/dist/Pages/timeline.d.ts +3 -0
  235. package/dist/Pages/timeline.d.ts.map +1 -0
  236. package/dist/Pages/timeline.js +73 -0
  237. package/dist/Pages/tooltip.d.ts +3 -0
  238. package/dist/Pages/tooltip.d.ts.map +1 -0
  239. package/dist/Pages/tooltip.js +11 -0
  240. package/dist/Pages/toster.d.ts +3 -0
  241. package/dist/Pages/toster.d.ts.map +1 -0
  242. package/dist/Pages/toster.js +53 -0
  243. package/dist/Pages/upgradeButton.d.ts +4 -0
  244. package/dist/Pages/upgradeButton.d.ts.map +1 -0
  245. package/dist/Pages/upgradeButton.js +17 -0
  246. package/dist/Pages/userDetails.d.ts +4 -0
  247. package/dist/Pages/userDetails.d.ts.map +1 -0
  248. package/dist/Pages/userDetails.js +79 -0
  249. package/dist/Pages/verifyEmail.d.ts +3 -0
  250. package/dist/Pages/verifyEmail.d.ts.map +1 -0
  251. package/dist/Pages/verifyEmail.js +17 -0
  252. package/dist/Theme/index.d.ts.map +1 -1
  253. package/dist/Theme/index.js +25 -9
  254. package/dist/Theme/provider/PixelizeThemeProvider.d.ts.map +1 -1
  255. package/dist/Theme/provider/PixelizeThemeProvider.js +17 -7
  256. package/dist/Utils/rafThrottle.d.ts +15 -0
  257. package/dist/Utils/rafThrottle.d.ts.map +1 -0
  258. package/dist/Utils/rafThrottle.js +34 -0
  259. package/dist/Utils/table.d.ts.map +1 -1
  260. package/dist/Utils/table.js +16 -5
  261. package/dist/bootstrap.d.ts +2 -0
  262. package/dist/bootstrap.js +16 -0
  263. package/dist/esm/App.js +90 -0
  264. package/dist/esm/Assets/defaultLogo.js +5 -0
  265. package/dist/esm/Components/Accordion/Accordion.js +34 -0
  266. package/dist/esm/Components/Accordion/AccordionProps.js +1 -0
  267. package/dist/esm/Components/Accordion/accordionColors.js +30 -0
  268. package/dist/esm/Components/AlertDialog/AlertDialog.js +9 -0
  269. package/dist/esm/Components/AlertDialog/AlertDialogProps.js +1 -0
  270. package/dist/esm/Components/Apexcharts/ApexBarChart/ApexBarChart.js +71 -0
  271. package/dist/esm/Components/Apexcharts/ApexBarChart/ApexBarChartProps.js +1 -0
  272. package/dist/esm/Components/Apexcharts/ApexLineChart/ApexLineChart.js +149 -0
  273. package/dist/esm/Components/Apexcharts/ApexLineChart/ApexLineChartProps.js +1 -0
  274. package/dist/esm/Components/Apexcharts/ApexPieChart/ApexPieChart.js +161 -0
  275. package/dist/esm/Components/Apexcharts/ApexPieChart/ApexPieChartProps.js +1 -0
  276. package/dist/esm/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.js +79 -0
  277. package/dist/esm/Components/Apexcharts/ApexPolarCharts/ApexPolarChartsProps.js +1 -0
  278. package/dist/esm/Components/Breadcrumbs/Breadcrumbs.js +9 -0
  279. package/dist/esm/Components/Breadcrumbs/Breadcrumbs.stories.js +5 -0
  280. package/dist/esm/Components/Breadcrumbs/BreadcrumbsProps.js +1 -0
  281. package/dist/esm/Components/Button/Button.js +7 -0
  282. package/dist/esm/Components/Button/Button.stories.js +5 -0
  283. package/dist/esm/Components/Button/Button.styles.js +204 -0
  284. package/dist/esm/Components/Button/ButtonProps.js +1 -0
  285. package/dist/esm/Components/ButtonGroupIcon/ButtonGoupIconProps.js +1 -0
  286. package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIcon.js +98 -0
  287. package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIcon.stories.js +5 -0
  288. package/dist/esm/Components/Buttons/Buttons.js +5 -0
  289. package/dist/esm/Components/Buttons/ButtonsProps.js +1 -0
  290. package/dist/esm/Components/Card/Card.js +5 -0
  291. package/dist/esm/Components/Card/CardProps.js +1 -0
  292. package/dist/esm/Components/Card/PaymentCard/PaymentCard.js +65 -0
  293. package/dist/esm/Components/Card/PaymentCard/PaymentCardProps.js +1 -0
  294. package/dist/esm/Components/Checkbox/Checkbox.js +28 -0
  295. package/dist/esm/Components/Checkbox/Checkbox.stories.js +6 -0
  296. package/dist/esm/Components/Checkbox/Checkbox.styles.js +69 -0
  297. package/dist/esm/Components/Checkbox/CheckboxProps.js +1 -0
  298. package/dist/esm/Components/Common/ErrorComponent.js +15 -0
  299. package/dist/esm/Components/Common/ErrorMessage.js +17 -0
  300. package/dist/esm/Components/Common/FormLabel.js +32 -0
  301. package/dist/esm/Components/Common/FormattedDescription.js +57 -0
  302. package/dist/esm/Components/Common/HelperText.js +8 -0
  303. package/dist/esm/Components/Common/Label.js +13 -0
  304. package/dist/esm/Components/Common/fieldStyles.js +34 -0
  305. package/dist/esm/Components/ContactForm/ContactForm.js +112 -0
  306. package/dist/esm/Components/ContactForm/ContactFormProps.js +1 -0
  307. package/dist/esm/Components/CopyButton/CopyButton.js +44 -0
  308. package/dist/esm/Components/CustomModulesTable/CustomModulesTable.js +63 -0
  309. package/dist/esm/Components/CustomModulesTable/CustomModulesTableProps.js +1 -0
  310. package/dist/esm/Components/CustomModulesTable/DeleteModuleModal.js +11 -0
  311. package/dist/esm/Components/CustomModulesTable/EditModuleModal.js +20 -0
  312. package/dist/esm/Components/DatePicker/CalendarPanel.js +133 -0
  313. package/dist/esm/Components/DatePicker/DatePicker.js +252 -0
  314. package/dist/esm/Components/DatePicker/DatePickerProps.js +1 -0
  315. package/dist/esm/Components/DatePicker/RangeDatePicker.js +206 -0
  316. package/dist/esm/Components/DatePicker/SingleDatePicker.js +972 -0
  317. package/dist/esm/Components/DatePicker/ThemeDatePicker.js +27 -0
  318. package/dist/esm/Components/DatePicker/TimeOnlyPicker.js +78 -0
  319. package/dist/esm/Components/DatePicker/TimePicker.js +70 -0
  320. package/dist/esm/Components/DatePicker/TimePickerInput.js +412 -0
  321. package/dist/esm/Components/Divider/Divider.js +9 -0
  322. package/dist/esm/Components/Drawer/Drawer.js +24 -0
  323. package/dist/esm/Components/Drawer/DrawerProps.js +1 -0
  324. package/dist/esm/Components/Dropdown/DropDown.js +249 -0
  325. package/dist/esm/Components/Dropdown/DropdownProps.js +1 -0
  326. package/dist/esm/Components/Editor/Editor.js +38 -0
  327. package/dist/esm/Components/Editor/EditorProps.js +1 -0
  328. package/dist/esm/Components/Editor/joditThemeVars.js +75 -0
  329. package/dist/esm/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +15 -0
  330. package/dist/esm/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtpProps.js +1 -0
  331. package/dist/esm/Components/EmptyState/EmptyState.js +40 -0
  332. package/dist/esm/Components/EmptyState/EmptyStateProps.js +1 -0
  333. package/dist/esm/Components/FeedbackForm/FeedbackForm.js +65 -0
  334. package/dist/esm/Components/FieldSelectModal/FieldSelectModal.js +33 -0
  335. package/dist/esm/Components/FilePreview/FilePreview.js +79 -0
  336. package/dist/esm/Components/FilePreview/FilePreviewProps.js +1 -0
  337. package/dist/esm/Components/FileUpload/FileUpload.js +82 -0
  338. package/dist/esm/Components/FileUpload/FileUploadProps.js +1 -0
  339. package/dist/esm/Components/FileUpload/constants.js +24 -0
  340. package/dist/esm/Components/FileUploader/FileUploader.js +78 -0
  341. package/dist/esm/Components/FileUploader/FileUploaderProps.js +1 -0
  342. package/dist/esm/Components/FilterSidebar/FilterSidebar.js +258 -0
  343. package/dist/esm/Components/FilterSidebar/filterHoverStyle.js +10 -0
  344. package/dist/esm/Components/Form/FormWrapper.js +9 -0
  345. package/dist/esm/Components/Header/Header.js +55 -0
  346. package/dist/esm/Components/Header/HeaderActions.js +24 -0
  347. package/dist/esm/Components/Header/HeaderProps.js +1 -0
  348. package/dist/esm/Components/Header/components/desktopMenu.js +43 -0
  349. package/dist/esm/Components/Header/components/mobileMenu.js +37 -0
  350. package/dist/esm/Components/Input/Input/Input.js +40 -0
  351. package/dist/esm/Components/Input/Input/InputProps.js +1 -0
  352. package/dist/esm/Components/Input/PhoneNumberInput.js +62 -0
  353. package/dist/esm/Components/Input/PhoneNumberInputProps.js +1 -0
  354. package/dist/esm/Components/Input/Switch/InputSwitch.js +21 -0
  355. package/dist/esm/Components/Input/TextInput.js +16 -0
  356. package/dist/esm/Components/Input/TextInput.stories.js +7 -0
  357. package/dist/esm/Components/Input/TextInput.styles.js +101 -0
  358. package/dist/esm/Components/Input/TextInputProps.js +1 -0
  359. package/dist/esm/Components/Input/textInputIconSize.js +36 -0
  360. package/dist/esm/Components/InputTextArea/InputTextArea.js +8 -0
  361. package/dist/esm/Components/InputTextArea/InputTextArea.style.js +77 -0
  362. package/dist/esm/Components/InputTextArea/InputTextAreaProps.js +1 -0
  363. package/dist/esm/Components/KanbanBoard/AccountCard.js +22 -0
  364. package/dist/esm/Components/KanbanBoard/AccountRow.js +10 -0
  365. package/dist/esm/Components/KanbanBoard/KanbanActions/KanbanActions.js +13 -0
  366. package/dist/esm/Components/KanbanBoard/KanbanBoard.js +453 -0
  367. package/dist/esm/Components/KanbanBoard/KanbanBoardProps.js +1 -0
  368. package/dist/esm/Components/KanbanBoard/MeasuredItem.js +54 -0
  369. package/dist/esm/Components/LazyWrapper/LazyWrapper.js +10 -0
  370. package/dist/esm/Components/LimitReachedModal/LimitReachedModal.js +40 -0
  371. package/dist/esm/Components/LimitReachedModal/LimitReachedModalProps.js +1 -0
  372. package/dist/esm/Components/LimitReachedModal/limitReachedCopy.js +50 -0
  373. package/dist/esm/Components/Loading/Loading.js +24 -0
  374. package/dist/esm/Components/Loading/Loading.stories.js +6 -0
  375. package/dist/esm/Components/Loading/LoadingProps.js +1 -0
  376. package/dist/esm/Components/Modal/Modal.js +30 -0
  377. package/dist/esm/Components/Modal/Modal.stories.js +6 -0
  378. package/dist/esm/Components/Modal/ModalProps.js +1 -0
  379. package/dist/esm/Components/MoreItems/MoreItems.js +22 -0
  380. package/dist/esm/Components/MoreItems/MoreItemsProps.js +1 -0
  381. package/dist/esm/Components/MultiSelect/MultiSelect.js +70 -0
  382. package/dist/esm/Components/MultiSelect/MultiSelectProps.js +1 -0
  383. package/dist/esm/Components/NavigationBar/NavBar.stories.js +2 -0
  384. package/dist/esm/Components/NavigationBar/NavigationBar.js +57 -0
  385. package/dist/esm/Components/NavigationBar/NavigationBarProps.js +1 -0
  386. package/dist/esm/Components/NoteTextArea/NoteTextArea.js +142 -0
  387. package/dist/esm/Components/NoteTextArea/NoteTextAreaProps.js +1 -0
  388. package/dist/esm/Components/Notification/Notification.js +106 -0
  389. package/dist/esm/Components/Notification/NotificationProps.js +1 -0
  390. package/dist/esm/Components/NumberInput/NumberInput.js +6 -0
  391. package/dist/esm/Components/NumberInput/NumberInput.styles.js +85 -0
  392. package/dist/esm/Components/NumberInput/NumberInputProps.js +1 -0
  393. package/dist/esm/Components/OrgSwitcher/OrgSwitcher.js +116 -0
  394. package/dist/esm/Components/OrgSwitcher/OrgSwitcherProps.js +34 -0
  395. package/dist/esm/Components/OrganizationDetails/CreateOrgModal.js +57 -0
  396. package/dist/esm/Components/OrganizationDetails/DeleteOrgModal.js +11 -0
  397. package/dist/esm/Components/OrganizationDetails/OrganizationDetails.js +165 -0
  398. package/dist/esm/Components/OrganizationDetails/OrganizationDetailsProps.js +1 -0
  399. package/dist/esm/Components/PdfViewer/PdfViewer.js +10 -0
  400. package/dist/esm/Components/PinInput/PinInput.js +15 -0
  401. package/dist/esm/Components/PinInput/PinInput.stories.js +5 -0
  402. package/dist/esm/Components/PinInput/PinInputProps.js +1 -0
  403. package/dist/esm/Components/PinInputs/PinInputs.js +48 -0
  404. package/dist/esm/Components/PinInputs/PinInputsProps.js +1 -0
  405. package/dist/esm/Components/PlanBadge/PlanBadge.js +17 -0
  406. package/dist/esm/Components/PlanBadge/PlanBadgeProps.js +1 -0
  407. package/dist/esm/Components/PlanPill/PlanPill.js +40 -0
  408. package/dist/esm/Components/PlanPill/PlanPillProps.js +1 -0
  409. package/dist/esm/Components/PlanPill/planPillGradient.js +17 -0
  410. package/dist/esm/Components/ProductCard/ProductCard.js +62 -0
  411. package/dist/esm/Components/ProductCard/ProductCardProps.js +1 -0
  412. package/dist/esm/Components/ProductCard/ProductLabel.js +18 -0
  413. package/dist/esm/Components/ProductCard/ProductPrice.js +110 -0
  414. package/dist/esm/Components/ProductCard/ProductReview.js +19 -0
  415. package/dist/esm/Components/ProductCard/ProductTags.js +48 -0
  416. package/dist/esm/Components/ProductDetails/ProductDetails.js +40 -0
  417. package/dist/esm/Components/ProductDetails/ProductDetailsProps.js +1 -0
  418. package/dist/esm/Components/ProductDetails/ProductDtlPrice.js +22 -0
  419. package/dist/esm/Components/ProductDetails/ProductImageSlider.js +188 -0
  420. package/dist/esm/Components/ProfileCard/ProfileCard.js +34 -0
  421. package/dist/esm/Components/ProfileCard/ProfileCard.stories.js +5 -0
  422. package/dist/esm/Components/ProfileCard/ProfileCardProps.js +1 -0
  423. package/dist/esm/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +70 -0
  424. package/dist/esm/Components/ProfilePhotoViewer/ProfilePhotoViewer.stories.js +5 -0
  425. package/dist/esm/Components/ProfilePhotoViewer/ProfilePhotoViewerProps.js +1 -0
  426. package/dist/esm/Components/ProgressBar/ProgressBar.js +6 -0
  427. package/dist/esm/Components/ProgressBar/ProgressBar.stories.js +6 -0
  428. package/dist/esm/Components/ProgressBar/ProgressBarProps.js +1 -0
  429. package/dist/esm/Components/RadioButton/RadioButton.js +25 -0
  430. package/dist/esm/Components/RadioButton/RadioButton.stories.js +6 -0
  431. package/dist/esm/Components/RadioButton/RadioButtonProps.js +1 -0
  432. package/dist/esm/Components/Reorder/Reorder.js +22 -0
  433. package/dist/esm/Components/Reorder/ReorderProps.js +1 -0
  434. package/dist/esm/Components/RolesPermission/DeleteRoleModal.js +13 -0
  435. package/dist/esm/Components/RolesPermission/RolesPermission.js +121 -0
  436. package/dist/esm/Components/RolesPermission/RolesPermissionProps.js +1 -0
  437. package/dist/esm/Components/ScrollToTop/ScrollToTop.js +67 -0
  438. package/dist/esm/Components/Search/Search.js +29 -0
  439. package/dist/esm/Components/Search/SearchProps.js +1 -0
  440. package/dist/esm/Components/SearchSelect/SearchSelect.js +518 -0
  441. package/dist/esm/Components/SearchSelect/SearchSelectProps.js +1 -0
  442. package/dist/esm/Components/SearchSelect/SelectTruncatedLabel.js +17 -0
  443. package/dist/esm/Components/SearchSelect/searchSelectSize.js +93 -0
  444. package/dist/esm/Components/Select/Select.js +24 -0
  445. package/dist/esm/Components/Select/Select.stories.js +7 -0
  446. package/dist/esm/Components/Select/Select.styles.js +108 -0
  447. package/dist/esm/Components/Select/SelectProps.js +1 -0
  448. package/dist/esm/Components/SelectSearch/SelectSearch.js +270 -0
  449. package/dist/esm/Components/SelectSearch/SelectSearchProps.js +1 -0
  450. package/dist/esm/Components/SelectV2/SelectV2.js +233 -0
  451. package/dist/esm/Components/SelectV2/SelectV2Props.js +1 -0
  452. package/dist/esm/Components/SideBar/SecondaryBar.js +67 -0
  453. package/dist/esm/Components/SideBar/SideBar.js +237 -0
  454. package/dist/esm/Components/SideBar/SideBarProps.js +1 -0
  455. package/dist/esm/Components/SideBar/Sidebar.stories.js +6 -0
  456. package/dist/esm/Components/SideBar/components/MenuItemBox.js +132 -0
  457. package/dist/esm/Components/SideBar/components/MenuItems.js +114 -0
  458. package/dist/esm/Components/SideBar/components/MenuPopoverContent.js +54 -0
  459. package/dist/esm/Components/SideBar/components/OtherApps.js +20 -0
  460. package/dist/esm/Components/SideBar/components/OverflowTooltipText.js +29 -0
  461. package/dist/esm/Components/SideBar/components/TextTruncation.js +27 -0
  462. package/dist/esm/Components/SideBar/sidebarAccentColors.js +31 -0
  463. package/dist/esm/Components/SignInActivityTable/SignInActivityTable.js +34 -0
  464. package/dist/esm/Components/SignInActivityTable/SignInActivityTableProps.js +1 -0
  465. package/dist/esm/Components/Skeletons/Skeleton.stories.js +6 -0
  466. package/dist/esm/Components/Skeletons/SkeletonProps.js +1 -0
  467. package/dist/esm/Components/Skeletons/Skeletons.js +5 -0
  468. package/dist/esm/Components/Slider/Slider.js +41 -0
  469. package/dist/esm/Components/StageProgress/StageItem.js +85 -0
  470. package/dist/esm/Components/StageProgress/StageProgress.js +47 -0
  471. package/dist/esm/Components/StageProgress/StageProgressProps.js +29 -0
  472. package/dist/esm/Components/StageProgress/StepperStage.js +38 -0
  473. package/dist/esm/Components/Switch/Switch.js +11 -0
  474. package/dist/esm/Components/Switch/SwitchProps.js +1 -0
  475. package/dist/esm/Components/Table/Table.js +430 -0
  476. package/dist/esm/Components/Table/Table.stories.js +8 -0
  477. package/dist/esm/Components/Table/TableProps.js +1 -0
  478. package/dist/esm/Components/Table/components/HeaderActions.js +47 -0
  479. package/dist/esm/Components/Table/components/Pagination.js +19 -0
  480. package/dist/esm/Components/Table/components/TableActions.js +55 -0
  481. package/dist/esm/Components/Table/components/TableBody.js +337 -0
  482. package/dist/esm/Components/Table/components/TableGroupRow.js +11 -0
  483. package/dist/esm/Components/Table/components/TableHeader.js +100 -0
  484. package/dist/esm/Components/Table/components/TableLoading.js +11 -0
  485. package/dist/esm/Components/Table/components/TableSearch.js +31 -0
  486. package/dist/esm/Components/Table/components/tableRowHoverStyle.js +22 -0
  487. package/dist/esm/Components/Table/filterTypes.js +1 -0
  488. package/dist/esm/Components/Table/filters/ActiveFilters.js +63 -0
  489. package/dist/esm/Components/Table/filters/CompactSelect.js +55 -0
  490. package/dist/esm/Components/Table/filters/LeftFilterPane.js +174 -0
  491. package/dist/esm/Components/Table/filters/SelectOperationControls.js +5 -0
  492. package/dist/esm/Components/Table/filters/TableFilters.js +45 -0
  493. package/dist/esm/Components/Table/filters/TextOperationControls.js +16 -0
  494. package/dist/esm/Components/Table/hooks/useDebounce.js +22 -0
  495. package/dist/esm/Components/Table/hooks/useTable.js +227 -0
  496. package/dist/esm/Components/Table/settings/ManageColumns.js +105 -0
  497. package/dist/esm/Components/Table/settings/TableSettings.js +82 -0
  498. package/dist/esm/Components/Tag/Tag.js +18 -0
  499. package/dist/esm/Components/Tag/Tag.styles.js +91 -0
  500. package/dist/esm/Components/Tag/TagProps.js +1 -0
  501. package/dist/esm/Components/Timeline/Timeline.js +250 -0
  502. package/dist/esm/Components/Timeline/TimelineProps.js +1 -0
  503. package/dist/esm/Components/Toaster/Toaster.js +120 -0
  504. package/dist/esm/Components/Toaster/Toaster.stories.js +7 -0
  505. package/dist/esm/Components/Toaster/ToasterProps.js +1 -0
  506. package/dist/esm/Components/Toggle/TableToggle.js +39 -0
  507. package/dist/esm/Components/Toggle/TableToggleProps.js +1 -0
  508. package/dist/esm/Components/ToolTip/OverflowToolTip.js +20 -0
  509. package/dist/esm/Components/ToolTip/ToolTip.js +35 -0
  510. package/dist/esm/Components/ToolTip/ToolTip.stories.js +6 -0
  511. package/dist/esm/Components/ToolTip/ToolTipProps.js +1 -0
  512. package/dist/esm/Components/Trail/EditableCell.js +27 -0
  513. package/dist/esm/Components/Trail/SelectAllCheckbox.js +5 -0
  514. package/dist/esm/Components/Trail/TrailWorks.js +54 -0
  515. package/dist/esm/Components/Trail/data.js +26 -0
  516. package/dist/esm/Components/UpgradeButton/UpgradeButton.js +79 -0
  517. package/dist/esm/Components/UpgradeButton/UpgradeButtonProps.js +1 -0
  518. package/dist/esm/Components/UserDetails/AddUserModal.js +101 -0
  519. package/dist/esm/Components/UserDetails/ChangeRoleModal.js +56 -0
  520. package/dist/esm/Components/UserDetails/DeactivateConfirmModal.js +14 -0
  521. package/dist/esm/Components/UserDetails/UserDetails.js +109 -0
  522. package/dist/esm/Components/UserDetails/UserDetailsProps.js +1 -0
  523. package/dist/esm/Components/WorkspaceWindow/WorkspaceTrayPreview.js +83 -0
  524. package/dist/esm/Components/WorkspaceWindow/WorkspaceWindow.js +61 -0
  525. package/dist/esm/Components/WorkspaceWindow/WorkspaceWindowProps.js +1 -0
  526. package/dist/esm/Constants/Sidebar.js +39 -0
  527. package/dist/esm/Hooks/useIsTruncated.js +54 -0
  528. package/dist/esm/Hooks/usePreferences.js +74 -0
  529. package/dist/esm/Hooks/useSidebarPrefs.js +68 -0
  530. package/dist/esm/Layout.js +281 -0
  531. package/dist/esm/Pages/TInput.js +15 -0
  532. package/dist/esm/Pages/accordion.js +16 -0
  533. package/dist/esm/Pages/alertdialog.js +15 -0
  534. package/dist/esm/Pages/button.js +27 -0
  535. package/dist/esm/Pages/card.js +64 -0
  536. package/dist/esm/Pages/chart.js +20 -0
  537. package/dist/esm/Pages/checkbox.js +6 -0
  538. package/dist/esm/Pages/contactForm.js +10 -0
  539. package/dist/esm/Pages/customModulesTable.js +20 -0
  540. package/dist/esm/Pages/datePick.js +44 -0
  541. package/dist/esm/Pages/drawer.js +15 -0
  542. package/dist/esm/Pages/dropdown.js +16 -0
  543. package/dist/esm/Pages/editor.js +8 -0
  544. package/dist/esm/Pages/feedback.js +6 -0
  545. package/dist/esm/Pages/fileUpload.js +29 -0
  546. package/dist/esm/Pages/input.js +43 -0
  547. package/dist/esm/Pages/kanbanboard.js +177 -0
  548. package/dist/esm/Pages/modal.js +23 -0
  549. package/dist/esm/Pages/multiSelect.js +17 -0
  550. package/dist/esm/Pages/noteArea.js +21 -0
  551. package/dist/esm/Pages/notification.js +32 -0
  552. package/dist/esm/Pages/numberInput.js +11 -0
  553. package/dist/esm/Pages/orgSwitcher.js +31 -0
  554. package/dist/esm/Pages/organizationDetails.js +75 -0
  555. package/dist/esm/Pages/photoViewer.js +7 -0
  556. package/dist/esm/Pages/pinInputs.js +6 -0
  557. package/dist/esm/Pages/productCaard.js +306 -0
  558. package/dist/esm/Pages/productDetailCard.js +73 -0
  559. package/dist/esm/Pages/productFilter.js +143 -0
  560. package/dist/esm/Pages/progressbar.js +6 -0
  561. package/dist/esm/Pages/radioButton.js +16 -0
  562. package/dist/esm/Pages/rolesPermission.js +139 -0
  563. package/dist/esm/Pages/search.js +16 -0
  564. package/dist/esm/Pages/searchSelect.js +92 -0
  565. package/dist/esm/Pages/select.js +15 -0
  566. package/dist/esm/Pages/selectSearch.js +53 -0
  567. package/dist/esm/Pages/signInActivityTable.js +12 -0
  568. package/dist/esm/Pages/skeleton.js +7 -0
  569. package/dist/esm/Pages/stageProgress.js +26 -0
  570. package/dist/esm/Pages/switch.js +12 -0
  571. package/dist/esm/Pages/table.js +175 -0
  572. package/dist/esm/Pages/tag.js +22 -0
  573. package/dist/esm/Pages/textArea.js +9 -0
  574. package/dist/esm/Pages/tier1.js +48 -0
  575. package/dist/esm/Pages/timeline.js +68 -0
  576. package/dist/esm/Pages/tooltip.js +6 -0
  577. package/dist/esm/Pages/toster.js +48 -0
  578. package/dist/esm/Pages/upgradeButton.js +12 -0
  579. package/dist/esm/Pages/userDetails.js +74 -0
  580. package/dist/esm/Pages/verifyEmail.js +12 -0
  581. package/dist/esm/Theme/chakra/Avatar.styles.js +25 -0
  582. package/dist/esm/Theme/chakra/Drawer.styles.js +23 -0
  583. package/dist/esm/Theme/chakra/Menu.styles.js +47 -0
  584. package/dist/esm/Theme/chakra/Modal.styles.js +23 -0
  585. package/dist/esm/Theme/chakra/Popover.styles.js +27 -0
  586. package/dist/esm/Theme/chakra/Slider.styles.js +22 -0
  587. package/dist/esm/Theme/chakra/Switch.styles.js +21 -0
  588. package/dist/esm/Theme/chakra/Tabs.styles.js +38 -0
  589. package/dist/esm/Theme/chakra/common.web.js +22 -0
  590. package/dist/esm/Theme/chakra/componentStyles.js +221 -0
  591. package/dist/esm/Theme/chakra/createBrandTheme.js +118 -0
  592. package/dist/esm/Theme/chakra/fonts.web.js +10 -0
  593. package/dist/esm/Theme/index.js +63 -0
  594. package/dist/esm/Theme/provider/PixelizeThemeProvider.js +204 -0
  595. package/dist/esm/Theme/provider/ThemeSwitcher.js +107 -0
  596. package/dist/esm/Theme/provider/colorModeStorage.js +99 -0
  597. package/dist/esm/Theme/provider/index.js +3 -0
  598. package/dist/esm/Theme/provider/useThemeMode.js +9 -0
  599. package/dist/esm/Theme/themeProps.js +1 -0
  600. package/dist/esm/Theme/tokens/brands/emerald/palette.dark.js +8 -0
  601. package/dist/esm/Theme/tokens/brands/emerald/palette.light.js +130 -0
  602. package/dist/esm/Theme/tokens/brands/index.js +73 -0
  603. package/dist/esm/Theme/tokens/brands/lavender/palette.dark.js +8 -0
  604. package/dist/esm/Theme/tokens/brands/lavender/palette.light.js +321 -0
  605. package/dist/esm/Theme/tokens/brands/meadow/palette.dark.js +8 -0
  606. package/dist/esm/Theme/tokens/brands/meadow/palette.light.js +128 -0
  607. package/dist/esm/Theme/tokens/brands/radiant/palette.dark.js +8 -0
  608. package/dist/esm/Theme/tokens/brands/radiant/palette.light.js +130 -0
  609. package/dist/esm/Theme/tokens/brands/rosewood/palette.dark.js +8 -0
  610. package/dist/esm/Theme/tokens/brands/rosewood/palette.light.js +134 -0
  611. package/dist/esm/Theme/tokens/brands/skyline/palette.dark.js +8 -0
  612. package/dist/esm/Theme/tokens/brands/skyline/palette.light.js +128 -0
  613. package/dist/esm/Theme/tokens/brands/slate/palette.dark.js +8 -0
  614. package/dist/esm/Theme/tokens/brands/slate/palette.light.js +132 -0
  615. package/dist/esm/Theme/tokens/brands/storefront/palette.dark.js +8 -0
  616. package/dist/esm/Theme/tokens/brands/storefront/palette.light.js +122 -0
  617. package/dist/esm/Theme/tokens/brands/zinc/palette.dark.js +202 -0
  618. package/dist/esm/Theme/tokens/brands/zinc/palette.light.js +381 -0
  619. package/dist/esm/Theme/tokens/builders/accentText.js +83 -0
  620. package/dist/esm/Theme/tokens/builders/buildBrandTokens.js +28 -0
  621. package/dist/esm/Theme/tokens/builders/buildDarkPalette.js +289 -0
  622. package/dist/esm/Theme/tokens/builders/chartColorsFromTheme.js +21 -0
  623. package/dist/esm/Theme/tokens/builders/color.js +141 -0
  624. package/dist/esm/Theme/tokens/builders/index.js +5 -0
  625. package/dist/esm/Theme/tokens/builders/outlineRung.js +63 -0
  626. package/dist/esm/Theme/tokens/builders/statusTone.js +56 -0
  627. package/dist/esm/Theme/tokens/index.js +14 -0
  628. package/dist/esm/Theme/tokens/primitives/breakpoints.js +8 -0
  629. package/dist/esm/Theme/tokens/primitives/index.js +9 -0
  630. package/dist/esm/Theme/tokens/primitives/letterSpacings.js +9 -0
  631. package/dist/esm/Theme/tokens/primitives/lineHeights.js +18 -0
  632. package/dist/esm/Theme/tokens/primitives/radii.js +12 -0
  633. package/dist/esm/Theme/tokens/primitives/shadows.js +15 -0
  634. package/dist/esm/Theme/tokens/primitives/sizes.js +34 -0
  635. package/dist/esm/Theme/tokens/primitives/space.js +33 -0
  636. package/dist/esm/Theme/tokens/primitives/typography.js +40 -0
  637. package/dist/esm/Theme/tokens/primitives/zIndices.js +16 -0
  638. package/dist/esm/Theme/tokens/types.js +7 -0
  639. package/dist/esm/Theme/useCustomTheme.js +4 -0
  640. package/dist/esm/Utils/accountHandoff.js +139 -0
  641. package/dist/esm/Utils/functions.js +7 -0
  642. package/dist/esm/Utils/mergeRefs.js +16 -0
  643. package/dist/esm/Utils/planBadge.js +105 -0
  644. package/dist/esm/Utils/planExpiry.js +109 -0
  645. package/dist/esm/Utils/rafThrottle.js +30 -0
  646. package/dist/esm/Utils/table.js +321 -0
  647. package/dist/esm/bootstrap.js +11 -0
  648. package/dist/esm/index.js +133 -0
  649. package/dist/esm/services/feedback.js +15 -0
  650. package/dist/esm/withTheme.js +9 -0
  651. package/package.json +13 -6
@@ -0,0 +1,26 @@
1
+ export const initialColumns = [
2
+ { id: 1, label: "project" },
3
+ { id: 2, label: "owner" },
4
+ { id: 3, label: "status" },
5
+ { id: 4, label: "priority" },
6
+ { id: 5, label: "dueDate" },
7
+ ];
8
+ export const initialRows = [
9
+ {
10
+ id: 1,
11
+ project: "Project A",
12
+ owner: "Owner A",
13
+ status: "In Progress",
14
+ priority: "High",
15
+ dueDate: "2023-12-31",
16
+ },
17
+ {
18
+ id: 2,
19
+ project: "Project B",
20
+ owner: "Owner B",
21
+ status: "Completed",
22
+ priority: "Medium",
23
+ dueDate: "2023-11-30",
24
+ },
25
+ // Add more initial rows as needed
26
+ ];
@@ -0,0 +1,79 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Flex, Spinner, Text } from "@chakra-ui/react";
3
+ import { Sparkles } from "lucide-react";
4
+ import { useCustomTheme } from "../../Theme/useCustomTheme";
5
+ import { onGradient } from "../../Theme/tokens/builders/accentText";
6
+ import { contrastRatio } from "../../Theme/tokens/builders/color";
7
+ import { AA_NON_TEXT } from "../../Theme/tokens/builders/outlineRung";
8
+ /** The brand's gold sparkle accent, kept only where it clears 3:1 on the button's own fill. */
9
+ const ACCENT_GOLD = "#FFD66B";
10
+ const sizeMap = {
11
+ // Compact, not tiny: an 8px subtitle was unreadable, so `sm` sits deliberately
12
+ // close to `md` — it's the dense variant of the same badge, not a smaller one.
13
+ sm: { px: "14px", py: "4px", font: "13px", sub: "9px", icon: 12, radius: "44px" },
14
+ md: { px: "20px", py: "5px", font: "14px", sub: "10px", icon: 13, radius: "50px" },
15
+ lg: { px: "26px", py: "8px", font: "16px", sub: "11px", icon: 16, radius: "60px" },
16
+ };
17
+ const UpgradeButton = ({ label, mobileLabel, subtitle, icon = Sparkles, iconColor, variant = "brand", gradient, size = "md", shimmer = true, isLoading = false, isDisabled = false, maxLabelWidth = "160px", ariaLabel, onClick, }) => {
18
+ var _a, _b;
19
+ const theme = useCustomTheme();
20
+ const c = theme.colors;
21
+ // Only reachable if a consumer hand-builds a palette without `gradient`; every shipped brand sets it.
22
+ const themeGradient = (_a = c.gradient) !== null && _a !== void 0 ? _a : { from: c.primary[500], to: c.primary[700] };
23
+ // `primary`/`secondary` at [500]->[700] / [400]->[600] sit in the mid-luminance band where
24
+ // neither white nor black ink clears AA at both ends at once (measured worst-case as low as
25
+ // 2.72:1 across brands — no ink choice fixes a gradient with no readable ink at all). One rung
26
+ // darker moves both stops onto the same side of that divide; verified universally >=4.5 at
27
+ // both ends across all 9 brands x both modes. `success`/`warning`/`danger`/`info` already sit
28
+ // there at [400]->[600] and don't need the shift.
29
+ const variantGradient = {
30
+ brand: themeGradient,
31
+ primary: { from: c.primary[600], to: c.primary[800] },
32
+ secondary: { from: c.secondary[600], to: c.secondary[800] },
33
+ success: { from: c.semantic.success[400], to: c.semantic.success[600] },
34
+ warning: { from: c.semantic.warning[400], to: c.semantic.warning[600] },
35
+ danger: { from: c.semantic.error[400], to: c.semantic.error[600] },
36
+ info: { from: c.semantic.info[400], to: c.semantic.info[600] },
37
+ };
38
+ const resolved = (_b = gradient !== null && gradient !== void 0 ? gradient : variantGradient[variant]) !== null && _b !== void 0 ? _b : themeGradient;
39
+ // `iconColor`'s gold default fails AA as body text against this gradient (measured ~1.4-3.3
40
+ // across brands) — the label/subtitle share this computed ink instead.
41
+ const ink = onGradient(resolved.from, resolved.to, c.white, c.black);
42
+ // The gold only clears 1.4.11's 3:1 on a DARK gradient. zinc dark inverts `primary` to a
43
+ // near-white fill, where gold-on-near-white measures ~1.3:1 and the icon vanishes, so fall
44
+ // back to the label's ink whenever the gold misses either stop.
45
+ const resolvedIconColor = iconColor !== null && iconColor !== void 0 ? iconColor : (contrastRatio(ACCENT_GOLD, resolved.from) >= AA_NON_TEXT &&
46
+ contrastRatio(ACCENT_GOLD, resolved.to) >= AA_NON_TEXT
47
+ ? ACCENT_GOLD
48
+ : ink);
49
+ const s = sizeMap[size];
50
+ const Icon = icon;
51
+ const blocked = isLoading || isDisabled;
52
+ const g = `linear-gradient(135deg, ${resolved.from} 0%, ${resolved.to} 100%)`;
53
+ const gReversed = `linear-gradient(135deg, ${resolved.to} 0%, ${resolved.from} 100%)`;
54
+ const hasMobile = !!mobileLabel && mobileLabel !== label;
55
+ return (_jsxs(Box, { as: "button", type: "button", "aria-label": ariaLabel || label, onClick: blocked ? undefined : onClick, disabled: isDisabled, position: "relative", cursor: blocked ? "default" : "pointer", opacity: isDisabled ? 0.6 : 1, px: { base: s.px === "20px" ? "14px" : s.px, md: s.px }, py: s.py, bgImage: g, color: ink, borderRadius: s.radius, fontWeight: "bold", textAlign: "center", overflow: "hidden", display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", transition: "transform 0.3s ease, box-shadow 0.3s ease, background-image 0.3s ease", _focusVisible: { outline: "none", boxShadow: `0 0 0 3px ${resolved.from}55` }, _hover: blocked
56
+ ? undefined
57
+ : {
58
+ transform: "translateY(-2px)",
59
+ bgImage: gReversed,
60
+ boxShadow: `0 10px 30px ${resolved.from}66`,
61
+ ...(shimmer ? { _before: { left: "130%" } } : {}),
62
+ }, sx: shimmer
63
+ ? {
64
+ _before: {
65
+ content: '""',
66
+ position: "absolute",
67
+ top: 0,
68
+ left: "-75%",
69
+ width: "55%",
70
+ height: "100%",
71
+ background: "linear-gradient(120deg, transparent, rgba(255,255,255,0.45), transparent)",
72
+ transform: "skewX(-20deg)",
73
+ transition: "left 0.7s ease",
74
+ pointerEvents: "none",
75
+ },
76
+ }
77
+ : undefined, children: [_jsxs(Flex, { align: "center", gap: "6px", maxW: maxLabelWidth, overflow: "hidden", whiteSpace: "nowrap", zIndex: 1, children: [_jsx(Text, { as: "span", fontSize: s.font, overflow: "hidden", textOverflow: "ellipsis", display: hasMobile ? { base: "none", md: "block" } : "block", children: label }), hasMobile && (_jsx(Text, { as: "span", fontSize: s.font, overflow: "hidden", textOverflow: "ellipsis", display: { base: "block", md: "none" }, children: mobileLabel })), isLoading ? (_jsx(Spinner, { size: "xs", thickness: "1.5px", color: resolvedIconColor })) : (Icon && _jsx(Icon, { size: s.icon, color: resolvedIconColor, style: { flexShrink: 0 } }))] }), subtitle && (_jsx(Text, { as: "span", mt: "1px", fontSize: s.sub, fontWeight: "bold", color: ink, maxW: maxLabelWidth, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", zIndex: 1, children: subtitle }))] }));
78
+ };
79
+ export default UpgradeButton;
@@ -0,0 +1,101 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, ModalFooter, FormControl, VStack, } from "@chakra-ui/react";
4
+ import { useCustomTheme } from "../../Theme/useCustomTheme";
5
+ import Button from "../Button/Button";
6
+ import TextInput from "../Input/TextInput";
7
+ import SearchSelect from "../SearchSelect/SearchSelect";
8
+ const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
9
+ const emptyValues = {
10
+ firstName: "",
11
+ lastName: "",
12
+ email: "",
13
+ role: null,
14
+ };
15
+ const AddUserModal = ({ isOpen, onClose, roleOptions, isLoading, onSubmit, onAddRoleClick, upgradeNotice, labels, }) => {
16
+ var _a, _b, _c, _d;
17
+ const { colors } = useCustomTheme();
18
+ const [values, setValues] = useState(emptyValues);
19
+ const [errors, setErrors] = useState({});
20
+ useEffect(() => {
21
+ if (!isOpen) {
22
+ setValues(emptyValues);
23
+ setErrors({});
24
+ }
25
+ }, [isOpen]);
26
+ const validate = () => {
27
+ const nextErrors = {};
28
+ if (!values.firstName.trim())
29
+ nextErrors.firstName = labels.firstNameRequired;
30
+ if (!values.lastName.trim())
31
+ nextErrors.lastName = labels.lastNameRequired;
32
+ if (!values.email.trim()) {
33
+ nextErrors.email = labels.emailRequired;
34
+ }
35
+ else if (!EMAIL_REGEX.test(values.email.trim())) {
36
+ nextErrors.email = labels.emailInvalid;
37
+ }
38
+ if (!values.role)
39
+ nextErrors.role = labels.roleRequired;
40
+ return nextErrors;
41
+ };
42
+ const handleChange = (field) => (event) => {
43
+ const value = event.target.value;
44
+ setValues((prev) => ({ ...prev, [field]: value }));
45
+ setErrors((prev) => ({ ...prev, [field]: undefined }));
46
+ };
47
+ const handleSubmit = async () => {
48
+ const nextErrors = validate();
49
+ if (Object.keys(nextErrors).length > 0) {
50
+ setErrors(nextErrors);
51
+ return;
52
+ }
53
+ await (onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit({
54
+ firstName: values.firstName.trim(),
55
+ lastName: values.lastName.trim(),
56
+ email: values.email.trim(),
57
+ role: values.role,
58
+ }));
59
+ };
60
+ const textFields = [
61
+ {
62
+ id: "firstName",
63
+ label: labels.firstName,
64
+ placeholder: labels.firstNamePlaceholder,
65
+ },
66
+ {
67
+ id: "lastName",
68
+ label: labels.lastName,
69
+ placeholder: labels.lastNamePlaceholder,
70
+ },
71
+ {
72
+ id: "email",
73
+ label: labels.email,
74
+ placeholder: labels.emailPlaceholder,
75
+ type: "email",
76
+ },
77
+ ];
78
+ return (_jsxs(Modal, { isOpen: isOpen, onClose: onClose, trapFocus: false, isCentered: true, children: [_jsx(ModalOverlay, { backdropFilter: "blur(4px)" }), _jsxs(ModalContent, { bg: colors.background[50], borderRadius: "2xl", overflow: "hidden", children: [_jsxs(ModalHeader, { borderBottom: "1px solid", borderColor: (_b = (_a = colors === null || colors === void 0 ? void 0 : colors.boxborder) === null || _a === void 0 ? void 0 : _a[200]) !== null && _b !== void 0 ? _b : (_c = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _c === void 0 ? void 0 : _c[200], children: [labels.addNewUser, upgradeNotice] }), _jsx(ModalCloseButton, {}), _jsx(ModalBody, { py: 5, children: _jsxs(VStack, { spacing: 4, align: "stretch", children: [textFields.map((field) => (_jsx(FormControl, { isInvalid: !!errors[field.id], children: _jsx(TextInput, { id: field.id, name: field.id, type: field.type, label: field.label, placeholder: field.placeholder, value: values[field.id], onChange: handleChange(field.id), isRequired: true, error: !!errors[field.id], errorMessage: errors[field.id], width: "100%" }) }, field.id))), _jsx(FormControl, { isInvalid: !!errors.role, isRequired: true, children: _jsx(SearchSelect, { label: labels.role, options: roleOptions.map((item) => ({
79
+ id: item.id,
80
+ label: item.label,
81
+ })), value: (_d = values.role) !== null && _d !== void 0 ? _d : undefined, onSelect: (option) => {
82
+ if (!option) {
83
+ setValues((prev) => ({ ...prev, role: null }));
84
+ }
85
+ else if (!Array.isArray(option)) {
86
+ const role = {
87
+ id: Number(option.id),
88
+ label: option.label,
89
+ };
90
+ setValues((prev) => ({ ...prev, role }));
91
+ setErrors((prev) => ({ ...prev, role: undefined }));
92
+ }
93
+ }, isRequired: true, isRemoveAllIcon: true, error: !!errors.role, errorMessage: errors.role, addNew: onAddRoleClick
94
+ ? {
95
+ enabled: true,
96
+ text: labels.addNewRole,
97
+ onClick: onAddRoleClick,
98
+ }
99
+ : undefined }) })] }) }), _jsxs(ModalFooter, { children: [_jsx(Button, { label: labels.cancel, onClick: onClose, colorScheme: "red", size: "sm", variant: "outline" }), _jsx(Button, { label: labels.save, type: "submit", colorScheme: "primary", size: "sm", sx: { ml: 3 }, isLoading: isLoading, onClick: handleSubmit })] })] })] }));
100
+ };
101
+ export default AddUserModal;
@@ -0,0 +1,56 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, ModalFooter, FormControl, VStack, } from "@chakra-ui/react";
4
+ import { useCustomTheme } from "../../Theme/useCustomTheme";
5
+ import Button from "../Button/Button";
6
+ import TextInput from "../Input/TextInput";
7
+ import SearchSelect from "../SearchSelect/SearchSelect";
8
+ const ChangeRoleModal = ({ isOpen, onClose, userId, email, currentRole, roleOptions, isLoading, onSubmit, onAddRoleClick, labels, }) => {
9
+ var _a, _b, _c, _d, _e;
10
+ const { colors } = useCustomTheme();
11
+ const [selectedRole, setSelectedRole] = useState(null);
12
+ const [error, setError] = useState(null);
13
+ useEffect(() => {
14
+ if (isOpen && currentRole) {
15
+ const match = roleOptions.find((role) => role.label.toLowerCase() === currentRole.toLowerCase());
16
+ setSelectedRole(match ? { id: match.id, label: match.label } : null);
17
+ setError(null);
18
+ }
19
+ else if (!isOpen) {
20
+ setSelectedRole(null);
21
+ setError(null);
22
+ }
23
+ }, [isOpen, currentRole, roleOptions]);
24
+ const isUnchanged = ((_a = selectedRole === null || selectedRole === void 0 ? void 0 : selectedRole.label) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === (currentRole === null || currentRole === void 0 ? void 0 : currentRole.toLowerCase());
25
+ const handleSubmit = async () => {
26
+ if (!selectedRole) {
27
+ setError(labels.roleRequired);
28
+ return;
29
+ }
30
+ if (userId == null)
31
+ return;
32
+ await (onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit({ userId, roleId: selectedRole.id }));
33
+ };
34
+ return (_jsxs(Modal, { isOpen: isOpen, onClose: onClose, trapFocus: false, isCentered: true, children: [_jsx(ModalOverlay, { backdropFilter: "blur(4px)" }), _jsxs(ModalContent, { bg: (_b = colors === null || colors === void 0 ? void 0 : colors.background) === null || _b === void 0 ? void 0 : _b[50], borderRadius: "2xl", overflow: "hidden", children: [_jsx(ModalHeader, { borderBottom: "1px solid", borderColor: (_d = (_c = colors === null || colors === void 0 ? void 0 : colors.boxborder) === null || _c === void 0 ? void 0 : _c[200]) !== null && _d !== void 0 ? _d : (_e = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _e === void 0 ? void 0 : _e[200], children: labels.changeRoleTitle }), _jsx(ModalCloseButton, {}), _jsx(ModalBody, { py: 5, children: _jsxs(VStack, { spacing: 4, align: "stretch", children: [_jsx(TextInput, { label: labels.email, value: email !== null && email !== void 0 ? email : "", isDisabled: true, width: "100%" }), _jsx(FormControl, { isInvalid: !!error, isRequired: true, children: _jsx(SearchSelect, { label: labels.role, options: roleOptions.map((item) => ({
35
+ id: item.id,
36
+ label: item.label,
37
+ })), value: selectedRole !== null && selectedRole !== void 0 ? selectedRole : undefined, onSelect: (option) => {
38
+ if (!option) {
39
+ setSelectedRole(null);
40
+ }
41
+ else if (!Array.isArray(option)) {
42
+ setSelectedRole({
43
+ id: Number(option.id),
44
+ label: option.label,
45
+ });
46
+ setError(null);
47
+ }
48
+ }, isRequired: true, isRemoveAllIcon: true, error: !!error, errorMessage: error !== null && error !== void 0 ? error : undefined, addNew: onAddRoleClick
49
+ ? {
50
+ enabled: true,
51
+ text: labels.addNewRole,
52
+ onClick: onAddRoleClick,
53
+ }
54
+ : undefined }) })] }) }), _jsxs(ModalFooter, { children: [_jsx(Button, { label: labels.cancel, onClick: onClose, colorScheme: "red", size: "sm", variant: "outline" }), _jsx(Button, { label: labels.save, type: "submit", colorScheme: "primary", size: "sm", sx: { ml: 3 }, isLoading: isLoading, isDisabled: isUnchanged || !selectedRole, onClick: handleSubmit })] })] })] }));
55
+ };
56
+ export default ChangeRoleModal;
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, HStack, VStack, Text, Flex, Box, } from "@chakra-ui/react";
3
+ import { AlertTriangle, Trash2 } from "lucide-react";
4
+ import { useCustomTheme } from "../../Theme/useCustomTheme";
5
+ import Button from "../Button/Button";
6
+ const DeactivateConfirmModal = ({ isOpen, onClose, userName, isLoading, onConfirm, labels, }) => {
7
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
8
+ const { colors } = useCustomTheme();
9
+ return (_jsxs(Modal, { isOpen: isOpen, onClose: onClose, isCentered: true, children: [_jsx(ModalOverlay, { backdropFilter: "blur(4px)" }), _jsxs(ModalContent, { bg: (_a = colors === null || colors === void 0 ? void 0 : colors.background) === null || _a === void 0 ? void 0 : _a[50], borderRadius: "2xl", overflow: "hidden", children: [_jsxs(ModalHeader, { borderBottom: "1px solid", borderColor: (_c = (_b = colors === null || colors === void 0 ? void 0 : colors.boxborder) === null || _b === void 0 ? void 0 : _b[200]) !== null && _c !== void 0 ? _c : (_d = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _d === void 0 ? void 0 : _d[200], display: "flex", alignItems: "center", gap: 3, children: [_jsx(Flex, { align: "center", justify: "center", boxSize: "36px", borderRadius: "full",
10
+ // `red` reverses in dark (50 → deep red); `semantic.error` does not, so it would
11
+ // leave this disc pale pink on a near-black modal. Identical values in light.
12
+ bg: (_f = (_e = colors === null || colors === void 0 ? void 0 : colors.red) === null || _e === void 0 ? void 0 : _e[50]) !== null && _f !== void 0 ? _f : "#FEF2F2", color: (_h = (_g = colors === null || colors === void 0 ? void 0 : colors.red) === null || _g === void 0 ? void 0 : _g[500]) !== null && _h !== void 0 ? _h : "#EF4444", children: _jsx(AlertTriangle, { size: 18 }) }), _jsx(Text, { fontSize: "1.05rem", fontWeight: 600, children: labels.confirmDeactivation })] }), _jsx(ModalCloseButton, {}), _jsx(ModalBody, { py: 6, children: _jsxs(VStack, { spacing: 4, align: "stretch", children: [_jsx(Text, { fontSize: "md", fontWeight: 500, color: (_j = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _j === void 0 ? void 0 : _j[800], children: labels.deactivateConfirmQuestion }), _jsx(Box, { bg: (_l = (_k = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _k === void 0 ? void 0 : _k[50]) !== null && _l !== void 0 ? _l : "#F8FAFC", borderRadius: "lg", p: 4, border: "1px solid", borderColor: (_o = (_m = colors === null || colors === void 0 ? void 0 : colors.boxborder) === null || _m === void 0 ? void 0 : _m[200]) !== null && _o !== void 0 ? _o : (_p = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _p === void 0 ? void 0 : _p[200], children: _jsxs(Text, { color: (_q = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _q === void 0 ? void 0 : _q[600], fontSize: "sm", children: [userName ? `${userName} ` : "", labels.deactivateConfirmDescription] }) }), _jsxs(HStack, { justifyContent: "flex-end", spacing: 3, pt: 2, children: [_jsx(Button, { label: labels.cancel, onClick: onClose, variant: "outline", size: "sm", colorScheme: "gray" }), _jsx(Button, { label: labels.deactivateUser, onClick: onConfirm, colorScheme: "red", size: "sm", isLoading: isLoading, leftIcon: _jsx(Trash2, { size: 16 }) })] })] }) })] })] }));
13
+ };
14
+ export default DeactivateConfirmModal;
@@ -0,0 +1,109 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import React, { useMemo, useState } from "react";
3
+ import { Avatar, Badge, Box, Button, Divider, Flex, Heading, HStack, IconButton, Skeleton, SkeletonCircle, Text, useDisclosure, VStack, } from "@chakra-ui/react";
4
+ import { ChevronLeft, RefreshCw, Send, Shield, Trash2, UserPlus, Users, UserRound, } from "lucide-react";
5
+ import { useCustomTheme } from "../../Theme/useCustomTheme";
6
+ import { resolveHoverTint } from "../../Theme/tokens/builders/outlineRung";
7
+ import { accentTextOnCanvas } from "../../Theme/tokens/builders/accentText";
8
+ import EmptyState from "../EmptyState/EmptyState";
9
+ import AddUserModal from "./AddUserModal";
10
+ import ChangeRoleModal from "./ChangeRoleModal";
11
+ import DeactivateConfirmModal from "./DeactivateConfirmModal";
12
+ const DEFAULT_LABELS = {
13
+ teamMembers: "Team Members",
14
+ refreshList: "Refresh list",
15
+ userDetails: "User Details",
16
+ selectTeamMember: "Select a Team Member",
17
+ addUser: "Add User",
18
+ resendInvitation: "Resend Invitation",
19
+ deactivateUser: "Deactivate User",
20
+ changeRole: "Change Role",
21
+ you: "You",
22
+ active: "Active",
23
+ inactive: "Inactive",
24
+ pendingInvitation: "Pending Invitation",
25
+ personalInformation: "Personal Information",
26
+ noUsers: "No team members yet",
27
+ noUserSelected: "Select a team member to view their details",
28
+ addNewUser: "Add New User",
29
+ firstName: "First Name",
30
+ lastName: "Last Name",
31
+ email: "Email",
32
+ role: "Role",
33
+ firstNamePlaceholder: "First Name",
34
+ lastNamePlaceholder: "Last Name",
35
+ emailPlaceholder: "An invite will be sent to this email",
36
+ addNewRole: "Add New Role",
37
+ cancel: "Cancel",
38
+ save: "Save",
39
+ firstNameRequired: "First Name is required",
40
+ lastNameRequired: "Last Name is required",
41
+ emailRequired: "Email is required",
42
+ emailInvalid: "Invalid email",
43
+ roleRequired: "Role is required",
44
+ changeRoleTitle: "Change Role",
45
+ confirmDeactivation: "Confirm Deactivation",
46
+ deactivateConfirmQuestion: "Are you sure you want to deactivate this user?",
47
+ deactivateConfirmDescription: "will no longer have access to the organization. You can reactivate them later if needed.",
48
+ };
49
+ const UserDetails = ({ users, selectedUser, selectedUserId, roleOptions = [], canManageUsers = false, isUsersLoading = false, isInviteLoading = false, isDeactivateLoading = false, isAddUserLoading = false, isChangeRoleLoading = false, onSelectUser, onRefresh, onBack, onAddUserSubmit, onChangeRoleSubmit, onReinvite, onDeactivate, onAddRoleClick, addUserUpgradeNotice, labels: labelOverrides, minHeight = "90vh", }) => {
50
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
51
+ const { colors } = useCustomTheme();
52
+ const labels = useMemo(() => ({ ...DEFAULT_LABELS, ...labelOverrides }), [labelOverrides]);
53
+ const { isOpen: isAddUserOpen, onOpen: onAddUserOpen, onClose: onAddUserClose, } = useDisclosure();
54
+ const { isOpen: isChangeRoleOpen, onOpen: onChangeRoleOpen, onClose: onChangeRoleClose, } = useDisclosure();
55
+ const { isOpen: isConfirmOpen, onOpen: onConfirmOpen, onClose: onConfirmClose, } = useDisclosure();
56
+ const [actionUserId, setActionUserId] = useState(null);
57
+ const border = (_d = (_b = (_a = colors === null || colors === void 0 ? void 0 : colors.boxborder) === null || _a === void 0 ? void 0 : _a[200]) !== null && _b !== void 0 ? _b : (_c = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _c === void 0 ? void 0 : _c[200]) !== null && _d !== void 0 ? _d : "#E2E8F0";
58
+ const surface = (_f = (_e = colors === null || colors === void 0 ? void 0 : colors.background) === null || _e === void 0 ? void 0 : _e[50]) !== null && _f !== void 0 ? _f : "#FFFFFF";
59
+ const muted = (_h = (_g = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _g === void 0 ? void 0 : _g[500]) !== null && _h !== void 0 ? _h : "#64748B";
60
+ const heading = (_k = (_j = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _j === void 0 ? void 0 : _j[800]) !== null && _k !== void 0 ? _k : "#1E293B";
61
+ const avatarBg = (_m = (_l = colors === null || colors === void 0 ? void 0 : colors.primary) === null || _l === void 0 ? void 0 : _l[100]) !== null && _m !== void 0 ? _m : "#E0E7FF";
62
+ // Picked dynamically against `avatarBg` rather than a fixed [600] rung — a fixed rung falls
63
+ // short of AA (4.27) for some brands' primary scale in dark mode.
64
+ const avatarColor = (colors === null || colors === void 0 ? void 0 : colors.primary)
65
+ ? accentTextOnCanvas(colors.primary, avatarBg)
66
+ : "#4F46E5";
67
+ const successScheme = "green";
68
+ const dangerScheme = "red";
69
+ const handleDeactivateConfirm = () => {
70
+ if (actionUserId != null)
71
+ onDeactivate === null || onDeactivate === void 0 ? void 0 : onDeactivate(actionUserId);
72
+ onConfirmClose();
73
+ };
74
+ const renderStatusBadge = (isActive) => (_jsx(Badge, { variant: "subtle", colorScheme: isActive ? successScheme : dangerScheme, borderRadius: "full", px: 2, py: 0.5, fontSize: "0.65rem", fontWeight: 600, textTransform: "none", children: isActive ? labels.active : labels.inactive }));
75
+ return (_jsxs(Flex, { backgroundColor: (_p = (_o = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _o === void 0 ? void 0 : _o[50]) !== null && _p !== void 0 ? _p : "#F8FAFC", minHeight: minHeight, p: { base: 3, md: 4 }, gap: 3, flexDirection: { base: "column", lg: "row" }, children: [_jsxs(Box, { width: { base: "100%", lg: "300px" }, backgroundColor: surface, borderRadius: "xl", boxShadow: "0 1px 2px rgba(16,24,40,0.05)", border: "1px solid", borderColor: border, position: "relative", order: { base: 2, lg: 1 }, overflow: "hidden", display: "flex", flexDirection: "column", children: [_jsxs(Flex, { px: 4, py: 3, borderBottom: "1px solid", borderColor: border, alignItems: "center", justifyContent: "space-between", children: [_jsxs(HStack, { spacing: 2, children: [onBack && (_jsx(IconButton, { "aria-label": "Go back", icon: _jsx(ChevronLeft, { size: 18 }), variant: "ghost", size: "xs", color: muted, onClick: onBack })), _jsx(Heading, { size: "sm", fontWeight: 600, color: heading, children: labels.teamMembers }), _jsx(Badge, { colorScheme: "gray", borderRadius: "full", fontSize: "0.65rem", px: 2, children: users.length })] }), onRefresh && (_jsx(IconButton, { "aria-label": labels.refreshList, icon: _jsx(RefreshCw, { size: 15 }), variant: "ghost", size: "xs", color: muted, onClick: onRefresh, isLoading: isUsersLoading }))] }), _jsx(Box, { flex: 1, overflowY: "auto", maxHeight: { base: "380px", lg: `calc(${minHeight} - 80px)` }, children: isUsersLoading ? (_jsx(VStack, { spacing: 2, p: 3, children: Array.from({ length: 6 }).map((_, idx) => (_jsxs(Flex, { alignItems: "center", gap: 3, p: 2, w: "100%", children: [_jsx(SkeletonCircle, { size: "9" }), _jsxs(Box, { flex: 1, children: [_jsx(Skeleton, { height: "12px", mb: 2, width: "80%" }), _jsx(Skeleton, { height: "9px", width: "60%" })] })] }, idx))) })) : users.length === 0 ? (_jsx(EmptyState, { icon: Users, title: labels.noUsers, size: "sm", minH: "220px" })) : (_jsx(VStack, { spacing: 1, p: 2, align: "stretch", children: users.map((user) => {
76
+ var _a, _b, _c, _d, _e, _f, _g, _h;
77
+ const isSelected = selectedUserId != null && selectedUserId === user.id;
78
+ return (_jsxs(Flex, { p: 2.5, w: "100%", cursor: "pointer", alignItems: "center", gap: 2.5, backgroundColor: isSelected ? (_b = (_a = colors === null || colors === void 0 ? void 0 : colors.primary) === null || _a === void 0 ? void 0 : _a[50]) !== null && _b !== void 0 ? _b : "#EEF2FF" : "transparent", _hover: {
79
+ background: isSelected
80
+ ? (_d = (_c = colors === null || colors === void 0 ? void 0 : colors.primary) === null || _c === void 0 ? void 0 : _c[50]) !== null && _d !== void 0 ? _d : "#EEF2FF"
81
+ : (_f = (_e = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _e === void 0 ? void 0 : _e[50]) !== null && _f !== void 0 ? _f : "#F8FAFC",
82
+ }, transition: "background 0.15s ease", borderRadius: "lg", position: "relative", onClick: () => onSelectUser === null || onSelectUser === void 0 ? void 0 : onSelectUser(user), children: [isSelected && (_jsx(Box, { position: "absolute", left: 0, top: "20%", bottom: "20%", width: "3px", borderRadius: "full", bg: (_h = (_g = colors === null || colors === void 0 ? void 0 : colors.primary) === null || _g === void 0 ? void 0 : _g[500]) !== null && _h !== void 0 ? _h : "#6366F1" })), _jsx(Avatar, { size: "sm", name: `${user.firstName} ${user.lastName}`, src: user.profile, bg: avatarBg, color: avatarColor }), _jsxs(Box, { flex: 1, overflow: "hidden", children: [_jsxs(Text, { fontSize: "sm", fontWeight: 600, noOfLines: 1, color: heading, children: [user.firstName, " ", user.lastName] }), _jsx(Text, { fontSize: "xs", color: muted, noOfLines: 1, children: user.email })] }), renderStatusBadge(user.isActive)] }, user.id));
83
+ }) })) })] }), _jsxs(Box, { flex: 1, backgroundColor: surface, borderRadius: "xl", boxShadow: "0 1px 2px rgba(16,24,40,0.05)", border: "1px solid", borderColor: border, display: "flex", flexDirection: "column", order: { base: 1, lg: 2 }, overflow: "hidden", children: [_jsxs(Flex, { justifyContent: "space-between", alignItems: "center", px: 4, py: 3, borderBottom: "1px solid", borderColor: border, children: [_jsx(Heading, { size: "sm", fontWeight: 600, color: heading, children: selectedUser ? labels.userDetails : labels.selectTeamMember }), canManageUsers && (_jsx(Button, { size: "sm", colorScheme: "primary", fontSize: "xs", leftIcon: _jsx(UserPlus, { size: 15 }), onClick: onAddUserOpen, children: labels.addUser }))] }), _jsx(Box, { flex: 1, overflowY: "auto", children: isUsersLoading ? (_jsxs(VStack, { spacing: 4, p: 4, align: "stretch", children: [_jsxs(Flex, { align: "center", gap: 4, children: [_jsx(SkeletonCircle, { size: "16" }), _jsxs(Box, { flex: 1, children: [_jsx(Skeleton, { height: "18px", width: "50%", mb: 2 }), _jsx(Skeleton, { height: "12px", width: "35%" })] })] }), Array.from({ length: 4 }).map((_, idx) => (_jsxs(Box, { w: "100%", children: [_jsx(Skeleton, { height: "12px", width: "30%", mb: 2 }), _jsx(Skeleton, { height: "10px", width: "80%" })] }, idx)))] })) : selectedUser ? (_jsxs(_Fragment, { children: [_jsxs(Flex, { direction: { base: "column", md: "row" }, alignItems: { base: "flex-start", md: "center" }, justifyContent: "space-between", gap: 4, p: 4, borderBottom: "1px solid", borderColor: border, children: [_jsxs(Flex, { alignItems: "center", gap: 4, children: [_jsxs(Box, { position: "relative", children: [_jsx(Avatar, { size: "lg", name: selectedUser.name, src: selectedUser.profilePhoto, bg: avatarBg, color: avatarColor }), selectedUser.isCurrent && (_jsx(Badge, { position: "absolute", bottom: -1, right: -1, colorScheme: "blue", variant: "solid", fontSize: "0.6rem", borderRadius: "full", px: 2, py: 0.5, boxShadow: "sm", textTransform: "none", children: labels.you }))] }), _jsxs(Box, { children: [_jsx(Heading, { size: "md", mb: 1, color: heading, children: selectedUser.name }), _jsx(Text, { fontSize: "sm", color: muted, mb: 2, children: selectedUser.role }), _jsxs(HStack, { spacing: 2, children: [renderStatusBadge(selectedUser.isActive), selectedUser.isPending && (_jsx(Badge, { variant: "subtle", borderRadius: "full", px: 2, py: 0.5, fontSize: "0.65rem", fontWeight: 600, colorScheme: "orange", textTransform: "none", children: labels.pendingInvitation }))] })] })] }), canManageUsers &&
84
+ !selectedUser.isSuperAdmin && (_jsxs(HStack, { spacing: 2, flexWrap: "wrap", children: [!selectedUser.isCurrent && !selectedUser.isActive && (_jsx(Button, { size: "xs", variant: "outline", colorScheme: "blue", fontSize: "xs", leftIcon: _jsx(Send, { size: 13 }), isLoading: isInviteLoading, onClick: () => selectedUser.userId != null &&
85
+ (onReinvite === null || onReinvite === void 0 ? void 0 : onReinvite(selectedUser.userId)), children: labels.resendInvitation })), _jsx(Button, { size: "xs", variant: "outline", colorScheme: "gray", fontSize: "xs", leftIcon: _jsx(Shield, { size: 13 }), onClick: () => {
86
+ if (selectedUser.userId != null) {
87
+ setActionUserId(selectedUser.userId);
88
+ onChangeRoleOpen();
89
+ }
90
+ }, children: labels.changeRole }), !selectedUser.isCurrent && (_jsx(Button, { size: "xs", variant: "ghost", colorScheme: "red", fontSize: "xs", leftIcon: _jsx(Trash2, { size: 13 }), isDisabled: selectedUser.userId == null || isDeactivateLoading, onClick: () => {
91
+ if (selectedUser.userId != null) {
92
+ setActionUserId(selectedUser.userId);
93
+ onConfirmOpen();
94
+ }
95
+ }, children: labels.deactivateUser }))] }))] }), _jsxs(Box, { p: 4, children: [_jsx(Text, { fontSize: "xs", fontWeight: 600, textTransform: "uppercase", letterSpacing: "0.05em", color: muted, mb: 3, children: labels.personalInformation }), _jsx(Box, { border: "1px solid", borderColor: border, borderRadius: "lg", overflow: "hidden", children: selectedUser.details.map((detail, index) => {
96
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
97
+ const Icon = (_a = detail.icon) !== null && _a !== void 0 ? _a : UserRound;
98
+ return (_jsxs(React.Fragment, { children: [_jsxs(Flex, { gap: 3, px: 3, py: 2.5, _hover: {
99
+ bg: resolveHoverTint((_c = (_b = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _b === void 0 ? void 0 : _b[50]) !== null && _c !== void 0 ? _c : "#F8FAFC", (_e = (_d = colors === null || colors === void 0 ? void 0 : colors.background) === null || _d === void 0 ? void 0 : _d[50]) !== null && _e !== void 0 ? _e : "#ffffff"),
100
+ }, alignItems: "center", transition: "background 0.15s ease", children: [_jsx(Flex, { align: "center", justify: "center", boxSize: "30px", bg: (_g = (_f = colors === null || colors === void 0 ? void 0 : colors.primary) === null || _f === void 0 ? void 0 : _f[50]) !== null && _g !== void 0 ? _g : "#EEF2FF", borderRadius: "lg", color: (_j = (_h = colors === null || colors === void 0 ? void 0 : colors.primary) === null || _h === void 0 ? void 0 : _h[600]) !== null && _j !== void 0 ? _j : "#4F46E5", flexShrink: 0, children: _jsx(Icon, { size: 15 }) }), _jsx(Box, { minWidth: "110px", children: _jsx(Text, { fontSize: "xs", fontWeight: 600, color: muted, children: detail.label }) }), _jsx(Box, { flex: 1, children: _jsx(Text, { fontSize: "sm", color: heading, fontWeight: 500, children: detail.value }) })] }), index < selectedUser.details.length - 1 && (_jsx(Divider, { borderColor: border }))] }, index));
101
+ }) })] })] })) : (_jsx(EmptyState, { icon: UserRound, title: labels.selectTeamMember, description: labels.noUserSelected, minH: "300px" })) })] }), _jsx(AddUserModal, { isOpen: isAddUserOpen, onClose: onAddUserClose, roleOptions: roleOptions, isLoading: isAddUserLoading, onSubmit: async (values) => {
102
+ await (onAddUserSubmit === null || onAddUserSubmit === void 0 ? void 0 : onAddUserSubmit(values));
103
+ onAddUserClose();
104
+ }, onAddRoleClick: onAddRoleClick, upgradeNotice: addUserUpgradeNotice, labels: labels }), _jsx(ChangeRoleModal, { isOpen: isChangeRoleOpen, onClose: onChangeRoleClose, userId: actionUserId, email: selectedUser === null || selectedUser === void 0 ? void 0 : selectedUser.email, currentRole: selectedUser === null || selectedUser === void 0 ? void 0 : selectedUser.role, roleOptions: roleOptions, isLoading: isChangeRoleLoading, onSubmit: async (payload) => {
105
+ await (onChangeRoleSubmit === null || onChangeRoleSubmit === void 0 ? void 0 : onChangeRoleSubmit(payload));
106
+ onChangeRoleClose();
107
+ }, onAddRoleClick: onAddRoleClick, labels: labels }), _jsx(DeactivateConfirmModal, { isOpen: isConfirmOpen, onClose: onConfirmClose, userName: selectedUser === null || selectedUser === void 0 ? void 0 : selectedUser.name, isLoading: isDeactivateLoading, onConfirm: handleDeactivateConfirm, labels: labels })] }));
108
+ };
109
+ export default UserDetails;
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useRef, useState } from "react";
3
+ import { Box } from "@chakra-ui/react";
4
+ import { useCustomTheme } from "../../Theme/useCustomTheme";
5
+ const PLACEMENT_STYLE = {
6
+ "top-end": { bottom: "100%", right: 0, marginBottom: "6px" },
7
+ "top-start": { bottom: "100%", left: 0, marginBottom: "6px" },
8
+ "bottom-end": { top: "100%", right: 0, marginTop: "6px" },
9
+ "bottom-start": { top: "100%", left: 0, marginTop: "6px" },
10
+ };
11
+ /**
12
+ * Presentational, app-agnostic hover-preview for a "workspace tray" pill (or any
13
+ * trigger). Headless of any data: the consumer passes the trigger as `children`
14
+ * and the card body as `preview` (node or render-prop receiving `close()`), so
15
+ * this can preview a ticket, a doc, a chat — anything — with the same intent-safe
16
+ * hover behavior.
17
+ *
18
+ * Intent-safe hover (hover-bridge): hovering the trigger opens the card after a
19
+ * short delay (anti-flash); a shared open/close timer + small gap let the cursor
20
+ * travel trigger ⇄ card without the card closing; leaving both (with a grace
21
+ * delay) closes it; Escape dismisses. Fetch/render the preview lazily via
22
+ * `onOpenChange`.
23
+ */
24
+ export default function WorkspaceTrayPreview({ children, preview, enabled = true, openDelayMs = 350, closeDelayMs = 200, placement = "top-end", onOpenChange, width = "340px", testId = "workspace-tray-preview", }) {
25
+ var _a, _b, _c, _d;
26
+ const theme = useCustomTheme();
27
+ const [open, setOpen] = useState(false);
28
+ const openTimer = useRef(null);
29
+ const closeTimer = useRef(null);
30
+ const setOpenState = useCallback((next) => {
31
+ setOpen(next);
32
+ onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(next);
33
+ }, [onOpenChange]);
34
+ const clearOpenTimer = useCallback(() => {
35
+ if (openTimer.current) {
36
+ clearTimeout(openTimer.current);
37
+ openTimer.current = null;
38
+ }
39
+ }, []);
40
+ const clearCloseTimer = useCallback(() => {
41
+ if (closeTimer.current) {
42
+ clearTimeout(closeTimer.current);
43
+ closeTimer.current = null;
44
+ }
45
+ }, []);
46
+ const scheduleOpen = useCallback(() => {
47
+ if (!enabled)
48
+ return;
49
+ clearCloseTimer();
50
+ if (open || openTimer.current)
51
+ return;
52
+ openTimer.current = setTimeout(() => {
53
+ openTimer.current = null;
54
+ setOpenState(true);
55
+ }, openDelayMs);
56
+ }, [enabled, clearCloseTimer, open, openDelayMs, setOpenState]);
57
+ const scheduleClose = useCallback(() => {
58
+ clearOpenTimer();
59
+ if (closeTimer.current)
60
+ return;
61
+ closeTimer.current = setTimeout(() => {
62
+ closeTimer.current = null;
63
+ setOpenState(false);
64
+ }, closeDelayMs);
65
+ }, [clearOpenTimer, closeDelayMs, setOpenState]);
66
+ const closeNow = useCallback(() => {
67
+ clearOpenTimer();
68
+ clearCloseTimer();
69
+ setOpenState(false);
70
+ }, [clearOpenTimer, clearCloseTimer, setOpenState]);
71
+ useEffect(() => () => {
72
+ clearOpenTimer();
73
+ clearCloseTimer();
74
+ }, [clearOpenTimer, clearCloseTimer]);
75
+ return (_jsxs(Box, { position: "relative", onMouseEnter: scheduleOpen, onMouseLeave: scheduleClose, onFocus: scheduleOpen, onBlur: scheduleClose, onKeyDown: (e) => {
76
+ if (e.key === "Escape" && open) {
77
+ e.stopPropagation();
78
+ closeNow();
79
+ }
80
+ }, children: [children, open && (_jsx(Box, { position: "absolute", ...PLACEMENT_STYLE[placement], w: typeof width === "number" ? `${width}px` : width, maxW: "min(360px, calc(100vw - 2rem))", bg: theme.colors.background[50], borderWidth: "1px", borderColor: (_b = (_a = theme.colors.boxborder) === null || _a === void 0 ? void 0 : _a[200]) !== null && _b !== void 0 ? _b : theme.colors.gray[200], borderRadius: "lg", boxShadow: "xl", zIndex: 1500, pointerEvents: "auto", p: 3, textAlign: "left", color: (_d = (_c = theme.colors.text) === null || _c === void 0 ? void 0 : _c[700]) !== null && _d !== void 0 ? _d : theme.colors.gray[800], cursor: "default", onMouseEnter: clearCloseTimer, onMouseLeave: scheduleClose, "data-testid": testId, children: typeof preview === "function"
81
+ ? preview({ close: closeNow })
82
+ : preview }))] }));
83
+ }
@@ -0,0 +1,61 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Flex, HStack, IconButton, Modal, ModalContent, ModalOverlay, Text, } from "@chakra-ui/react";
3
+ import { ExternalLink, Minus, X } from "lucide-react";
4
+ import { useCustomTheme } from "../../Theme/useCustomTheme";
5
+ // One in-between windowed size — wider than a cramped dialog but not near-full
6
+ // screen. There is no maximize/restore toggle (removed by product decision); the
7
+ // `onMedium`/`onMaximize` props are kept optional for back-compat but unused.
8
+ const WINDOW_SIZE = { maxW: "88rem", h: "92vh" };
9
+ /**
10
+ * Presentational floating "workspace window" — a Jira-style dialog with
11
+ * minimize / close controls and an optional "open full page" affordance, at a
12
+ * single fixed size (no maximize/restore toggle). Headless of any state
13
+ * management: the parent owns the window state and passes callbacks. Render
14
+ * minimized windows with the companion WorkspaceTray.
15
+ */
16
+ export default function WorkspaceWindow({ title, state, children, onMinimize, onClose, onOpenFullPage, onOverlayClick, headerActions, testId = "workspace-window", }) {
17
+ var _a, _b, _c, _d, _e, _f;
18
+ // Must run before the early return: a minimized render would otherwise skip the hook
19
+ // and change hook order when the window reopens.
20
+ const theme = useCustomTheme();
21
+ if (state === "minimized")
22
+ return null;
23
+ const size = WINDOW_SIZE;
24
+ return (_jsxs(Modal, { isOpen: true, onClose: () => onClose === null || onClose === void 0 ? void 0 : onClose(), size: "full", isCentered: true, scrollBehavior: "inside",
25
+ // Don't discard unsaved work on an accidental overlay click / Esc — the
26
+ // parent decides via the explicit Close control.
27
+ closeOnOverlayClick: false, closeOnEsc: false, children: [_jsx(ModalOverlay, { backdropFilter: "blur(3px)" }), _jsx(ModalContent, { bg: "transparent", boxShadow: "none", m: 0, display: "flex", alignItems: "center", justifyContent: "center",
28
+ // With size="full" the transparent ModalContent covers the whole
29
+ // viewport, so Chakra's own closeOnOverlayClick never fires (the
30
+ // ModalOverlay sits behind it). Detect "clicked the blurred area
31
+ // around the window" ourselves: only when the click lands on this
32
+ // wrapper, not on the window Box or its children.
33
+ onMouseDown: (e) => {
34
+ if (e.target === e.currentTarget)
35
+ onOverlayClick === null || onOverlayClick === void 0 ? void 0 : onOverlayClick();
36
+ }, "data-testid": `${testId}-backdrop`, children: _jsxs(Box, { bg: theme.colors.background[50], borderRadius: "0.75rem", boxShadow: "2xl", overflow: "hidden", w: "100%", maxW: size.maxW, h: size.h, display: "flex", flexDirection: "column", "data-testid": testId, "data-window-state": state, children: [_jsxs(Flex, { align: "center", justify: "space-between", px: 3, py: 2, borderBottomWidth: "1px", borderColor: (_b = (_a = theme.colors.boxborder) === null || _a === void 0 ? void 0 : _a[200]) !== null && _b !== void 0 ? _b : theme.colors.gray[100], bg: (_d = (_c = theme.colors.background) === null || _c === void 0 ? void 0 : _c[100]) !== null && _d !== void 0 ? _d : theme.colors.gray[50], flexShrink: 0, children: [_jsx(Text, { fontSize: "sm", fontWeight: 600, color: (_f = (_e = theme.colors.text) === null || _e === void 0 ? void 0 : _e[700]) !== null && _f !== void 0 ? _f : theme.colors.gray[700], noOfLines: 1, "data-testid": `${testId}-title`, children: title }), _jsxs(HStack, { spacing: 1, children: [headerActions, onOpenFullPage ? (_jsx(IconButton, { "aria-label": "Open full page", size: "xs", variant: "ghost", icon: _jsx(ExternalLink, { size: 14 }), onClick: onOpenFullPage, "data-testid": `${testId}-fullpage` })) : null, onMinimize ? (_jsx(IconButton, { "aria-label": "Minimize", size: "xs", variant: "ghost", icon: _jsx(Minus, { size: 15 }), onClick: onMinimize, "data-testid": `${testId}-minimize` })) : null, onClose ? (_jsx(IconButton, { "aria-label": "Close", size: "xs", variant: "ghost", colorScheme: "red", icon: _jsx(X, { size: 15 }), onClick: onClose, "data-testid": `${testId}-close` })) : null] })] }), _jsx(Box, { flex: "1", overflow: "auto", px: { base: 3, md: 5 }, py: 4, children: children })] }) })] }));
37
+ }
38
+ /**
39
+ * Bottom tray of restore pills for minimized WorkspaceWindows. Presentational —
40
+ * the parent supplies the minimized items and restore/close handlers.
41
+ */
42
+ export function WorkspaceTray({ items, onRestore, onClose, testId = "workspace-tray", renderItem, }) {
43
+ const theme = useCustomTheme();
44
+ if (!items.length)
45
+ return null;
46
+ return (
47
+ // Floating bottom-right cluster (Gmail/Jira minimized-window pattern) rather
48
+ // than a full-width docked bar, so it never covers the bottom strip of page
49
+ // content and needs no reserved page gutter. Pills wrap upward.
50
+ _jsx(Flex, { position: "fixed", bottom: 4, right: 4, zIndex: 1400, direction: "row-reverse", wrap: "wrap-reverse", justify: "flex-start", gap: 2, maxW: { base: "calc(100vw - 2rem)", md: "36rem" }, "data-testid": testId, children: items.map((item) => {
51
+ var _a, _b, _c, _d, _e, _f;
52
+ const api = {
53
+ restore: () => onRestore === null || onRestore === void 0 ? void 0 : onRestore(item.id),
54
+ close: () => onClose === null || onClose === void 0 ? void 0 : onClose(item.id),
55
+ };
56
+ if (renderItem) {
57
+ return _jsx(Box, { children: renderItem(item, api) }, item.id);
58
+ }
59
+ return (_jsxs(HStack, { spacing: 1, pl: 3, pr: 1, py: 1, borderRadius: "full", bg: (_b = (_a = theme.colors.primary) === null || _a === void 0 ? void 0 : _a[100]) !== null && _b !== void 0 ? _b : "blue.100", color: (_d = (_c = theme.colors.primary) === null || _c === void 0 ? void 0 : _c[700]) !== null && _d !== void 0 ? _d : "blue.700", boxShadow: "md", borderWidth: "1px", borderColor: (_f = (_e = theme.colors.primary) === null || _e === void 0 ? void 0 : _e[200]) !== null && _f !== void 0 ? _f : "blue.200", "data-testid": `${testId}-pill`, children: [_jsx(Box, { as: "button", type: "button", fontSize: "sm", onClick: api.restore, "data-testid": `${testId}-restore`, maxW: "16rem", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", children: item.title }), onClose ? (_jsx(IconButton, { "aria-label": "Close", size: "xs", variant: "ghost", borderRadius: "full", minW: "auto", h: "auto", p: 1, color: "inherit", icon: _jsx(X, { size: 13 }), onClick: api.close, "data-testid": `${testId}-close` })) : null] }, item.id));
60
+ }) }));
61
+ }
@@ -0,0 +1,39 @@
1
+ export const HEADER_HEIGHT = "4.3rem";
2
+ export const FlexCss = {
3
+ "&::-webkit-scrollbar": {
4
+ width: "0.188rem",
5
+ },
6
+ "&::-webkit-scrollbar-track": {
7
+ background: "transparent",
8
+ },
9
+ "&::-webkit-scrollbar-thumb": {
10
+ background: "transparent",
11
+ transition: "background 0.5s",
12
+ },
13
+ "&:hover::-webkit-scrollbar-thumb": {
14
+ background: "var(--chakra-colors-primary-500, #718096)",
15
+ },
16
+ };
17
+ export const cssForScrollBar = (theme) => ({
18
+ "&::-webkit-scrollbar": {
19
+ width: "0.125rem",
20
+ },
21
+ "&::-webkit-scrollbar-track": {
22
+ background: theme.colors.sidebar.background[500],
23
+ },
24
+ "&::-webkit-scrollbar-thumb": {
25
+ background: "transparent",
26
+ borderRadius: "0.5rem",
27
+ },
28
+ "&:hover::-webkit-scrollbar-thumb": {
29
+ background: theme.colors.primary[500],
30
+ },
31
+ "&:hover::-webkit-scrollbar-thumb:hover": {
32
+ background: theme.colors.primary[700],
33
+ },
34
+ scrollbarWidth: "none",
35
+ "&:hover": {
36
+ scrollbarWidth: "thin",
37
+ scrollbarColor: `${theme.colors.primary[500]} ${theme.colors.sidebar.background[500]}`,
38
+ },
39
+ });