pixelize-design-library 2.4.1-beta.1 → 2.4.1-beta.10

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 (413) hide show
  1. package/dist/Assets/defaultLogo.d.ts.map +1 -1
  2. package/dist/Assets/defaultLogo.js +1 -3
  3. package/dist/Assets/defaultLogo.tsx +4 -8
  4. package/dist/Components/Accordion/accordionColors.d.ts.map +1 -1
  5. package/dist/Components/Accordion/accordionColors.js +17 -3
  6. package/dist/Components/Checkbox/Checkbox.styles.d.ts.map +1 -1
  7. package/dist/Components/Checkbox/Checkbox.styles.js +13 -2
  8. package/dist/Components/CustomModulesTable/EditModuleModal.d.ts.map +1 -1
  9. package/dist/Components/CustomModulesTable/EditModuleModal.js +5 -1
  10. package/dist/Components/DatePicker/CalendarPanel.d.ts.map +1 -1
  11. package/dist/Components/DatePicker/CalendarPanel.js +15 -4
  12. package/dist/Components/DatePicker/SingleDatePicker.d.ts.map +1 -1
  13. package/dist/Components/DatePicker/SingleDatePicker.js +11 -9
  14. package/dist/Components/DatePicker/TimeOnlyPicker.js +2 -2
  15. package/dist/Components/DatePicker/TimePicker.d.ts.map +1 -1
  16. package/dist/Components/DatePicker/TimePicker.js +14 -2
  17. package/dist/Components/DatePicker/TimePickerInput.d.ts.map +1 -1
  18. package/dist/Components/DatePicker/TimePickerInput.js +9 -1
  19. package/dist/Components/Editor/joditThemeVars.d.ts.map +1 -1
  20. package/dist/Components/Editor/joditThemeVars.js +9 -0
  21. package/dist/Components/FilePreview/FilePreview.d.ts.map +1 -1
  22. package/dist/Components/FilePreview/FilePreview.js +3 -1
  23. package/dist/Components/FileUploader/FileUploader.js +2 -2
  24. package/dist/Components/FilterSidebar/FilterSidebar.js +1 -1
  25. package/dist/Components/LimitReachedModal/LimitReachedModal.d.ts +5 -0
  26. package/dist/Components/LimitReachedModal/LimitReachedModal.d.ts.map +1 -0
  27. package/dist/Components/LimitReachedModal/LimitReachedModal.js +45 -0
  28. package/dist/Components/LimitReachedModal/LimitReachedModalProps.d.ts +16 -0
  29. package/dist/Components/LimitReachedModal/LimitReachedModalProps.d.ts.map +1 -0
  30. package/dist/Components/LimitReachedModal/LimitReachedModalProps.js +2 -0
  31. package/dist/Components/LimitReachedModal/limitReachedCopy.d.ts +7 -0
  32. package/dist/Components/LimitReachedModal/limitReachedCopy.d.ts.map +1 -0
  33. package/dist/Components/LimitReachedModal/limitReachedCopy.js +54 -0
  34. package/dist/Components/Loading/Loading.d.ts +1 -1
  35. package/dist/Components/Loading/Loading.d.ts.map +1 -1
  36. package/dist/Components/Loading/Loading.js +2 -2
  37. package/dist/Components/Loading/LoadingProps.d.ts +2 -0
  38. package/dist/Components/Loading/LoadingProps.d.ts.map +1 -1
  39. package/dist/Components/Modal/Modal.d.ts.map +1 -1
  40. package/dist/Components/Modal/Modal.js +1 -4
  41. package/dist/Components/NavigationBar/NavigationBar.d.ts.map +1 -1
  42. package/dist/Components/NavigationBar/NavigationBar.js +10 -6
  43. package/dist/Components/OrgSwitcher/OrgSwitcher.d.ts.map +1 -1
  44. package/dist/Components/OrgSwitcher/OrgSwitcher.js +22 -3
  45. package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +9 -1
  46. package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts.map +1 -1
  47. package/dist/Components/OrgSwitcher/OrgSwitcherProps.js +19 -5
  48. package/dist/Components/OrganizationDetails/CreateOrgModal.js +6 -4
  49. package/dist/Components/OrganizationDetails/OrganizationDetails.d.ts.map +1 -1
  50. package/dist/Components/OrganizationDetails/OrganizationDetails.js +66 -9
  51. package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts +47 -14
  52. package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts.map +1 -1
  53. package/dist/Components/PlanBadge/PlanBadge.d.ts +12 -0
  54. package/dist/Components/PlanBadge/PlanBadge.d.ts.map +1 -0
  55. package/dist/Components/PlanBadge/PlanBadge.js +22 -0
  56. package/dist/Components/PlanBadge/PlanBadgeProps.d.ts +11 -0
  57. package/dist/Components/PlanBadge/PlanBadgeProps.d.ts.map +1 -0
  58. package/dist/Components/PlanBadge/PlanBadgeProps.js +2 -0
  59. package/dist/Components/PlanPill/PlanPill.d.ts +5 -0
  60. package/dist/Components/PlanPill/PlanPill.d.ts.map +1 -0
  61. package/dist/Components/PlanPill/PlanPill.js +42 -0
  62. package/dist/Components/PlanPill/PlanPillProps.d.ts +28 -0
  63. package/dist/Components/PlanPill/PlanPillProps.d.ts.map +1 -0
  64. package/dist/Components/PlanPill/PlanPillProps.js +2 -0
  65. package/dist/Components/PlanPill/planPillGradient.d.ts +22 -0
  66. package/dist/Components/PlanPill/planPillGradient.d.ts.map +1 -0
  67. package/dist/Components/PlanPill/planPillGradient.js +20 -0
  68. package/dist/Components/Search/Search.d.ts.map +1 -1
  69. package/dist/Components/Search/Search.js +4 -2
  70. package/dist/Components/Select/Select.styles.d.ts.map +1 -1
  71. package/dist/Components/Select/Select.styles.js +29 -20
  72. package/dist/Components/SelectSearch/SelectSearch.js +1 -1
  73. package/dist/Components/SelectV2/SelectV2.d.ts +3 -0
  74. package/dist/Components/SelectV2/SelectV2.d.ts.map +1 -0
  75. package/dist/Components/SelectV2/SelectV2.js +185 -0
  76. package/dist/Components/SelectV2/SelectV2Props.d.ts +67 -0
  77. package/dist/Components/SelectV2/SelectV2Props.d.ts.map +1 -0
  78. package/dist/Components/SelectV2/SelectV2Props.js +2 -0
  79. package/dist/Components/SideBar/SecondaryBar.d.ts.map +1 -1
  80. package/dist/Components/SideBar/SecondaryBar.js +10 -2
  81. package/dist/Components/SideBar/SideBar.js +2 -2
  82. package/dist/Components/SideBar/components/MenuItemBox.d.ts.map +1 -1
  83. package/dist/Components/SideBar/components/MenuItemBox.js +7 -6
  84. package/dist/Components/Table/components/tableRowHoverStyle.d.ts +9 -8
  85. package/dist/Components/Table/components/tableRowHoverStyle.d.ts.map +1 -1
  86. package/dist/Components/Table/components/tableRowHoverStyle.js +12 -12
  87. package/dist/Components/Table/settings/ManageColumns.js +2 -2
  88. package/dist/Components/UpgradeButton/UpgradeButton.d.ts.map +1 -1
  89. package/dist/Components/UpgradeButton/UpgradeButton.js +25 -7
  90. package/dist/Components/UserDetails/UserDetails.d.ts.map +1 -1
  91. package/dist/Components/UserDetails/UserDetails.js +5 -2
  92. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +2 -1
  93. package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts +2 -2
  94. package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts.map +1 -1
  95. package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +25 -4
  96. package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +18 -0
  97. package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts.map +1 -1
  98. package/dist/Pages/organizationDetails.d.ts.map +1 -1
  99. package/dist/Pages/organizationDetails.js +31 -15
  100. package/dist/Theme/chakra/Avatar.styles.d.ts +33 -0
  101. package/dist/Theme/chakra/Avatar.styles.d.ts.map +1 -0
  102. package/dist/Theme/chakra/Avatar.styles.js +28 -0
  103. package/dist/Theme/chakra/Drawer.styles.d.ts +32 -0
  104. package/dist/Theme/chakra/Drawer.styles.d.ts.map +1 -0
  105. package/dist/Theme/chakra/Drawer.styles.js +26 -0
  106. package/dist/Theme/chakra/Menu.styles.d.ts +70 -0
  107. package/dist/Theme/chakra/Menu.styles.d.ts.map +1 -0
  108. package/dist/Theme/chakra/Menu.styles.js +50 -0
  109. package/dist/Theme/chakra/Modal.styles.d.ts +32 -0
  110. package/dist/Theme/chakra/Modal.styles.d.ts.map +1 -0
  111. package/dist/Theme/chakra/Modal.styles.js +26 -0
  112. package/dist/Theme/chakra/Popover.styles.d.ts +37 -0
  113. package/dist/Theme/chakra/Popover.styles.d.ts.map +1 -0
  114. package/dist/Theme/chakra/Popover.styles.js +30 -0
  115. package/dist/Theme/chakra/Slider.styles.d.ts +31 -0
  116. package/dist/Theme/chakra/Slider.styles.d.ts.map +1 -0
  117. package/dist/Theme/chakra/Slider.styles.js +25 -0
  118. package/dist/Theme/chakra/Switch.styles.d.ts +31 -0
  119. package/dist/Theme/chakra/Switch.styles.d.ts.map +1 -0
  120. package/dist/Theme/chakra/Switch.styles.js +24 -0
  121. package/dist/Theme/chakra/Tabs.styles.d.ts +43 -0
  122. package/dist/Theme/chakra/Tabs.styles.d.ts.map +1 -0
  123. package/dist/Theme/chakra/Tabs.styles.js +41 -0
  124. package/dist/Theme/chakra/componentStyles.d.ts +230 -1
  125. package/dist/Theme/chakra/componentStyles.d.ts.map +1 -1
  126. package/dist/Theme/chakra/componentStyles.js +136 -0
  127. package/dist/Theme/chakra/createBrandTheme.d.ts.map +1 -1
  128. package/dist/Theme/chakra/createBrandTheme.js +47 -0
  129. package/dist/Theme/provider/PixelizeThemeProvider.d.ts +11 -1
  130. package/dist/Theme/provider/PixelizeThemeProvider.d.ts.map +1 -1
  131. package/dist/Theme/provider/PixelizeThemeProvider.js +90 -2
  132. package/dist/Theme/provider/ThemeSwitcher.d.ts.map +1 -1
  133. package/dist/Theme/provider/ThemeSwitcher.js +23 -11
  134. package/dist/Theme/tokens/brands/index.d.ts.map +1 -1
  135. package/dist/Theme/tokens/brands/index.js +20 -18
  136. package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts.map +1 -1
  137. package/dist/Theme/tokens/brands/zinc/palette.dark.js +4 -2
  138. package/dist/Theme/tokens/builders/outlineRung.d.ts +35 -0
  139. package/dist/Theme/tokens/builders/outlineRung.d.ts.map +1 -0
  140. package/dist/Theme/tokens/builders/outlineRung.js +69 -0
  141. package/dist/Theme/tokens/builders/statusTone.d.ts +35 -0
  142. package/dist/Theme/tokens/builders/statusTone.d.ts.map +1 -0
  143. package/dist/Theme/tokens/builders/statusTone.js +63 -0
  144. package/dist/Utils/accountHandoff.d.ts +54 -0
  145. package/dist/Utils/accountHandoff.d.ts.map +1 -0
  146. package/dist/Utils/accountHandoff.js +144 -0
  147. package/dist/Utils/planBadge.d.ts +39 -0
  148. package/dist/Utils/planBadge.d.ts.map +1 -0
  149. package/dist/Utils/planBadge.js +108 -0
  150. package/dist/Utils/planExpiry.d.ts +35 -0
  151. package/dist/Utils/planExpiry.d.ts.map +1 -0
  152. package/dist/Utils/planExpiry.js +115 -0
  153. package/dist/index.d.ts +18 -1
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +36 -3
  156. package/package.json +6 -2
  157. package/.claude/settings.local.json +0 -51
  158. package/.cursor/TASK-SETUP.md +0 -43
  159. package/.cursor/agents/be-impl.md +0 -37
  160. package/.cursor/agents/fe-impl.md +0 -39
  161. package/.cursor/agents/task-plan.md +0 -56
  162. package/.cursor/agents/test-create.md +0 -31
  163. package/.cursor/agents/test-exec.md +0 -26
  164. package/.cursor/hooks/task-hint.env +0 -1
  165. package/.cursor/hooks/task-skill-nudge.sh +0 -71
  166. package/.cursor/hooks/task-slash-guard.sh +0 -31
  167. package/.cursor/hooks.json +0 -13
  168. package/.cursor/modules/account-management/MODULE.md +0 -34
  169. package/.cursor/modules/buttons/MODULE.md +0 -47
  170. package/.cursor/modules/cards/MODULE.md +0 -55
  171. package/.cursor/modules/charts/MODULE.md +0 -40
  172. package/.cursor/modules/common/MODULE.md +0 -36
  173. package/.cursor/modules/contact-auth/MODULE.md +0 -19
  174. package/.cursor/modules/data-display/MODULE.md +0 -42
  175. package/.cursor/modules/feedback/MODULE.md +0 -32
  176. package/.cursor/modules/form/MODULE.md +0 -13
  177. package/.cursor/modules/inputs-basic/MODULE.md +0 -42
  178. package/.cursor/modules/inputs-date-file/MODULE.md +0 -56
  179. package/.cursor/modules/inputs-select/MODULE.md +0 -27
  180. package/.cursor/modules/inputs-toggle/MODULE.md +0 -18
  181. package/.cursor/modules/kanban/MODULE.md +0 -22
  182. package/.cursor/modules/layout-navigation/MODULE.md +0 -269
  183. package/.cursor/modules/overlays/MODULE.md +0 -69
  184. package/.cursor/modules/playground/MODULE.md +0 -28
  185. package/.cursor/modules/table/MODULE.md +0 -78
  186. package/.cursor/modules/theme/MODULE.md +0 -314
  187. package/.cursor/modules/types-exports/MODULE.md +0 -17
  188. package/.cursor/modules/utility-ui/MODULE.md +0 -50
  189. package/.cursor/modules/utils-hooks/MODULE.md +0 -35
  190. package/.cursor/pixelize-task-statusline.sh +0 -64
  191. package/.cursor/plans/blocked/.gitkeep +0 -0
  192. package/.cursor/plans/current.md +0 -12
  193. package/.cursor/plans/current.theme-tokens-dark-mode.md +0 -77
  194. package/.cursor/plans/current.theme-tokens-dark.md +0 -155
  195. package/.cursor/plans/done/.gitkeep +0 -0
  196. package/.cursor/rules +0 -31
  197. package/.cursor/skills/task/SKILL.md +0 -167
  198. package/CLAUDE.md +0 -148
  199. package/__mocks__/styleMock.js +0 -8
  200. package/coverage/clover.xml +0 -405
  201. package/coverage/coverage-final.json +0 -16
  202. package/coverage/coverage-summary.json +0 -50
  203. package/coverage/lcov-report/Button/Button.tsx.html +0 -244
  204. package/coverage/lcov-report/Button/index.html +0 -116
  205. package/coverage/lcov-report/Checkbox/Checkbox.tsx.html +0 -433
  206. package/coverage/lcov-report/Checkbox/index.html +0 -116
  207. package/coverage/lcov-report/Common/ErrorMessage.tsx.html +0 -148
  208. package/coverage/lcov-report/Common/FormLabel.tsx.html +0 -331
  209. package/coverage/lcov-report/Common/HelperText.tsx.html +0 -124
  210. package/coverage/lcov-report/Common/index.html +0 -146
  211. package/coverage/lcov-report/Components/Button/Button.tsx.html +0 -244
  212. package/coverage/lcov-report/Components/Button/index.html +0 -116
  213. package/coverage/lcov-report/Components/Checkbox/Checkbox.tsx.html +0 -433
  214. package/coverage/lcov-report/Components/Checkbox/index.html +0 -116
  215. package/coverage/lcov-report/Components/Common/ErrorMessage.tsx.html +0 -148
  216. package/coverage/lcov-report/Components/Common/FormLabel.tsx.html +0 -331
  217. package/coverage/lcov-report/Components/Common/HelperText.tsx.html +0 -124
  218. package/coverage/lcov-report/Components/Common/index.html +0 -146
  219. package/coverage/lcov-report/Components/CustomModulesTable/CustomModulesTable.tsx.html +0 -712
  220. package/coverage/lcov-report/Components/CustomModulesTable/DeleteModuleModal.tsx.html +0 -343
  221. package/coverage/lcov-report/Components/CustomModulesTable/EditModuleModal.tsx.html +0 -313
  222. package/coverage/lcov-report/Components/CustomModulesTable/index.html +0 -146
  223. package/coverage/lcov-report/Components/Divider/Divider.tsx.html +0 -133
  224. package/coverage/lcov-report/Components/Divider/index.html +0 -116
  225. package/coverage/lcov-report/Components/Dropdown/DropDown.tsx.html +0 -994
  226. package/coverage/lcov-report/Components/Dropdown/index.html +0 -116
  227. package/coverage/lcov-report/Components/EmptyState/EmptyState.tsx.html +0 -466
  228. package/coverage/lcov-report/Components/EmptyState/index.html +0 -116
  229. package/coverage/lcov-report/Components/Header/HeaderActions.tsx.html +0 -373
  230. package/coverage/lcov-report/Components/Header/index.html +0 -116
  231. package/coverage/lcov-report/Components/Input/TextInput.tsx.html +0 -487
  232. package/coverage/lcov-report/Components/Input/index.html +0 -116
  233. package/coverage/lcov-report/Components/Input/textInputIconSize.ts.html +0 -205
  234. package/coverage/lcov-report/Components/KanbanBoard/AccountCard.tsx.html +0 -547
  235. package/coverage/lcov-report/Components/KanbanBoard/AccountRow.tsx.html +0 -190
  236. package/coverage/lcov-report/Components/KanbanBoard/KanbanActions/KanbanActions.tsx.html +0 -247
  237. package/coverage/lcov-report/Components/KanbanBoard/KanbanActions/index.html +0 -116
  238. package/coverage/lcov-report/Components/KanbanBoard/KanbanBoard.tsx.html +0 -3598
  239. package/coverage/lcov-report/Components/KanbanBoard/MeasuredItem.tsx.html +0 -283
  240. package/coverage/lcov-report/Components/KanbanBoard/index.html +0 -161
  241. package/coverage/lcov-report/Components/OrganizationDetails/CreateOrgModal.tsx.html +0 -511
  242. package/coverage/lcov-report/Components/OrganizationDetails/DeleteOrgModal.tsx.html +0 -334
  243. package/coverage/lcov-report/Components/OrganizationDetails/OrganizationDetails.tsx.html +0 -1519
  244. package/coverage/lcov-report/Components/OrganizationDetails/index.html +0 -146
  245. package/coverage/lcov-report/Components/RolesPermission/DeleteRoleModal.tsx.html +0 -328
  246. package/coverage/lcov-report/Components/RolesPermission/RolesPermission.tsx.html +0 -1732
  247. package/coverage/lcov-report/Components/RolesPermission/index.html +0 -131
  248. package/coverage/lcov-report/Components/SearchSelect/SearchSelect.tsx.html +0 -2575
  249. package/coverage/lcov-report/Components/SearchSelect/SelectTruncatedLabel.tsx.html +0 -202
  250. package/coverage/lcov-report/Components/SearchSelect/index.html +0 -146
  251. package/coverage/lcov-report/Components/SearchSelect/searchSelectSize.ts.html +0 -496
  252. package/coverage/lcov-report/Components/Select/Select.tsx.html +0 -361
  253. package/coverage/lcov-report/Components/Select/index.html +0 -116
  254. package/coverage/lcov-report/Components/SideBar/components/OtherApps.tsx.html +0 -562
  255. package/coverage/lcov-report/Components/SideBar/components/OverflowTooltipText.tsx.html +0 -346
  256. package/coverage/lcov-report/Components/SideBar/components/index.html +0 -116
  257. package/coverage/lcov-report/Components/SignInActivityTable/SignInActivityTable.tsx.html +0 -490
  258. package/coverage/lcov-report/Components/SignInActivityTable/index.html +0 -116
  259. package/coverage/lcov-report/Components/Table/components/TableActions.tsx.html +0 -595
  260. package/coverage/lcov-report/Components/Table/components/TableBody.tsx.html +0 -2212
  261. package/coverage/lcov-report/Components/Table/components/TableGroupRow.tsx.html +0 -358
  262. package/coverage/lcov-report/Components/Table/components/TableLoading.tsx.html +0 -358
  263. package/coverage/lcov-report/Components/Table/components/index.html +0 -161
  264. package/coverage/lcov-report/Components/Table/settings/ManageColumns.tsx.html +0 -856
  265. package/coverage/lcov-report/Components/Table/settings/index.html +0 -116
  266. package/coverage/lcov-report/Components/Tag/Tag.styles.tsx.html +0 -331
  267. package/coverage/lcov-report/Components/Tag/Tag.tsx.html +0 -256
  268. package/coverage/lcov-report/Components/Tag/index.html +0 -131
  269. package/coverage/lcov-report/Components/ToolTip/ToolTip.tsx.html +0 -286
  270. package/coverage/lcov-report/Components/ToolTip/index.html +0 -116
  271. package/coverage/lcov-report/Components/UserDetails/AddUserModal.tsx.html +0 -709
  272. package/coverage/lcov-report/Components/UserDetails/ChangeRoleModal.tsx.html +0 -505
  273. package/coverage/lcov-report/Components/UserDetails/DeactivateConfirmModal.tsx.html +0 -379
  274. package/coverage/lcov-report/Components/UserDetails/UserDetails.tsx.html +0 -1900
  275. package/coverage/lcov-report/Components/UserDetails/index.html +0 -161
  276. package/coverage/lcov-report/EmptyState/EmptyState.tsx.html +0 -466
  277. package/coverage/lcov-report/EmptyState/index.html +0 -116
  278. package/coverage/lcov-report/Hooks/index.html +0 -116
  279. package/coverage/lcov-report/Hooks/usePreferences.ts.html +0 -421
  280. package/coverage/lcov-report/Input/TextInput.tsx.html +0 -487
  281. package/coverage/lcov-report/Input/index.html +0 -131
  282. package/coverage/lcov-report/Input/textInputIconSize.ts.html +0 -205
  283. package/coverage/lcov-report/KanbanBoard.tsx.html +0 -3481
  284. package/coverage/lcov-report/OrganizationDetails/CreateOrgModal.tsx.html +0 -511
  285. package/coverage/lcov-report/OrganizationDetails/DeleteOrgModal.tsx.html +0 -334
  286. package/coverage/lcov-report/OrganizationDetails/OrganizationDetails.tsx.html +0 -1519
  287. package/coverage/lcov-report/OrganizationDetails/index.html +0 -146
  288. package/coverage/lcov-report/RolesPermission/DeleteRoleModal.tsx.html +0 -328
  289. package/coverage/lcov-report/RolesPermission/RolesPermission.tsx.html +0 -1732
  290. package/coverage/lcov-report/RolesPermission/index.html +0 -116
  291. package/coverage/lcov-report/SearchSelect/SearchSelect.tsx.html +0 -2575
  292. package/coverage/lcov-report/SearchSelect/SelectTruncatedLabel.tsx.html +0 -202
  293. package/coverage/lcov-report/SearchSelect/index.html +0 -146
  294. package/coverage/lcov-report/SearchSelect/searchSelectSize.ts.html +0 -496
  295. package/coverage/lcov-report/Table/CompactSelect.tsx.html +0 -379
  296. package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +0 -514
  297. package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +0 -373
  298. package/coverage/lcov-report/Table/Components/Pagination.tsx.html +0 -574
  299. package/coverage/lcov-report/Table/Components/TableActions.tsx.html +0 -574
  300. package/coverage/lcov-report/Table/Components/TableBody.tsx.html +0 -1027
  301. package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +0 -397
  302. package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +0 -1060
  303. package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +0 -361
  304. package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +0 -337
  305. package/coverage/lcov-report/Table/Components/index.html +0 -266
  306. package/coverage/lcov-report/Table/Components/useDebounce.ts.html +0 -178
  307. package/coverage/lcov-report/Table/Components/useTable.ts.html +0 -778
  308. package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +0 -1810
  309. package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +0 -178
  310. package/coverage/lcov-report/Table/Table.tsx.html +0 -1567
  311. package/coverage/lcov-report/Table/TableProps.tsx.html +0 -658
  312. package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +0 -619
  313. package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +0 -229
  314. package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +0 -532
  315. package/coverage/lcov-report/Table/TableSettings/index.html +0 -146
  316. package/coverage/lcov-report/Table/TableToDo.tsx.html +0 -973
  317. package/coverage/lcov-report/Table/TextOperationControls.tsx.html +0 -271
  318. package/coverage/lcov-report/Table/filterTypes.ts.html +0 -97
  319. package/coverage/lcov-report/Table/index.html +0 -176
  320. package/coverage/lcov-report/Table/settings/ManageColumns.tsx.html +0 -856
  321. package/coverage/lcov-report/Table/settings/index.html +0 -116
  322. package/coverage/lcov-report/Tag/Tag.tsx.html +0 -256
  323. package/coverage/lcov-report/Tag/index.html +0 -116
  324. package/coverage/lcov-report/Theme/buildBrandTokens.ts.html +0 -175
  325. package/coverage/lcov-report/Theme/chartColorsFromTheme.ts.html +0 -214
  326. package/coverage/lcov-report/Theme/index.html +0 -131
  327. package/coverage/lcov-report/Theme/useCustomTheme.ts.html +0 -100
  328. package/coverage/lcov-report/ToolTip/ToolTip.tsx.html +0 -286
  329. package/coverage/lcov-report/ToolTip/index.html +0 -116
  330. package/coverage/lcov-report/UserDetails/AddUserModal.tsx.html +0 -709
  331. package/coverage/lcov-report/UserDetails/ChangeRoleModal.tsx.html +0 -505
  332. package/coverage/lcov-report/UserDetails/index.html +0 -116
  333. package/coverage/lcov-report/Utils/functions.ts.html +0 -106
  334. package/coverage/lcov-report/Utils/index.html +0 -116
  335. package/coverage/lcov-report/Utils/table.ts.html +0 -1189
  336. package/coverage/lcov-report/base.css +0 -224
  337. package/coverage/lcov-report/block-navigation.js +0 -87
  338. package/coverage/lcov-report/favicon.png +0 -0
  339. package/coverage/lcov-report/index.html +0 -251
  340. package/coverage/lcov-report/prettify.css +0 -1
  341. package/coverage/lcov-report/prettify.js +0 -2
  342. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  343. package/coverage/lcov-report/sorter.js +0 -210
  344. package/coverage/lcov.info +0 -981
  345. package/dist/Theme/Dark/theme.d.ts +0 -3
  346. package/dist/Theme/Dark/theme.d.ts.map +0 -1
  347. package/dist/Theme/Dark/theme.js +0 -277
  348. package/dist/Theme/Default/palette.d.ts +0 -375
  349. package/dist/Theme/Default/palette.d.ts.map +0 -1
  350. package/dist/Theme/Default/palette.js +0 -306
  351. package/dist/Theme/Default/theme.d.ts +0 -3
  352. package/dist/Theme/Default/theme.d.ts.map +0 -1
  353. package/dist/Theme/Default/theme.js +0 -19
  354. package/dist/Theme/Emerald/palette.d.ts +0 -375
  355. package/dist/Theme/Emerald/palette.d.ts.map +0 -1
  356. package/dist/Theme/Emerald/palette.js +0 -125
  357. package/dist/Theme/Emerald/theme.d.ts +0 -3
  358. package/dist/Theme/Emerald/theme.d.ts.map +0 -1
  359. package/dist/Theme/Emerald/theme.js +0 -19
  360. package/dist/Theme/Meadow/palette.d.ts +0 -375
  361. package/dist/Theme/Meadow/palette.d.ts.map +0 -1
  362. package/dist/Theme/Meadow/palette.js +0 -123
  363. package/dist/Theme/Meadow/theme.d.ts +0 -3
  364. package/dist/Theme/Meadow/theme.d.ts.map +0 -1
  365. package/dist/Theme/Meadow/theme.js +0 -19
  366. package/dist/Theme/Radiant/palette.d.ts +0 -375
  367. package/dist/Theme/Radiant/palette.d.ts.map +0 -1
  368. package/dist/Theme/Radiant/palette.js +0 -125
  369. package/dist/Theme/Radiant/theme.d.ts +0 -3
  370. package/dist/Theme/Radiant/theme.d.ts.map +0 -1
  371. package/dist/Theme/Radiant/theme.js +0 -19
  372. package/dist/Theme/Rosewood/palette.d.ts +0 -375
  373. package/dist/Theme/Rosewood/palette.d.ts.map +0 -1
  374. package/dist/Theme/Rosewood/palette.js +0 -125
  375. package/dist/Theme/Rosewood/theme.d.ts +0 -3
  376. package/dist/Theme/Rosewood/theme.d.ts.map +0 -1
  377. package/dist/Theme/Rosewood/theme.js +0 -19
  378. package/dist/Theme/Skyline/palette.d.ts +0 -375
  379. package/dist/Theme/Skyline/palette.d.ts.map +0 -1
  380. package/dist/Theme/Skyline/palette.js +0 -123
  381. package/dist/Theme/Skyline/theme.d.ts +0 -3
  382. package/dist/Theme/Skyline/theme.d.ts.map +0 -1
  383. package/dist/Theme/Skyline/theme.js +0 -19
  384. package/dist/Theme/Slate/palette.d.ts +0 -375
  385. package/dist/Theme/Slate/palette.d.ts.map +0 -1
  386. package/dist/Theme/Slate/palette.js +0 -123
  387. package/dist/Theme/Slate/theme.d.ts +0 -3
  388. package/dist/Theme/Slate/theme.d.ts.map +0 -1
  389. package/dist/Theme/Slate/theme.js +0 -19
  390. package/dist/Theme/buildBrandTokens.d.ts +0 -16
  391. package/dist/Theme/buildBrandTokens.d.ts.map +0 -1
  392. package/dist/Theme/buildBrandTokens.js +0 -33
  393. package/dist/Theme/chartColorsFromTheme.d.ts +0 -19
  394. package/dist/Theme/chartColorsFromTheme.d.ts.map +0 -1
  395. package/dist/Theme/chartColorsFromTheme.js +0 -34
  396. package/dist/Theme/common.d.ts +0 -167
  397. package/dist/Theme/common.d.ts.map +0 -1
  398. package/dist/Theme/common.js +0 -112
  399. package/dist/Theme/componentStyles.d.ts +0 -10
  400. package/dist/Theme/componentStyles.d.ts.map +0 -1
  401. package/dist/Theme/componentStyles.js +0 -19
  402. package/dist/Theme/fonts.d.ts +0 -37
  403. package/dist/Theme/fonts.d.ts.map +0 -1
  404. package/dist/Theme/fonts.js +0 -41
  405. package/dist/Theme/space.d.ts +0 -34
  406. package/dist/Theme/space.d.ts.map +0 -1
  407. package/dist/Theme/space.js +0 -35
  408. package/dist/Theme/theme.d.ts +0 -3
  409. package/dist/Theme/theme.d.ts.map +0 -1
  410. package/dist/Theme/theme.js +0 -12
  411. package/eslint.config.js +0 -48
  412. package/index.html +0 -13
  413. package/vite.config.ts +0 -13
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { LimitKind } from "./LimitReachedModalProps";
2
+ export declare function resolveLimitCopy(kind: LimitKind, canManageBilling: boolean): {
3
+ title: string;
4
+ message: string;
5
+ };
6
+ export declare function formatLimitUsage(kind: LimitKind, used?: number | null, limit?: number | null): string | null;
7
+ //# sourceMappingURL=limitReachedCopy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limitReachedCopy.d.ts","sourceRoot":"","sources":["../../../src/Components/LimitReachedModal/limitReachedCopy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AA0DrD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,gBAAgB,EAAE,OAAO,GACxB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAGpC;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,MAAM,GAAG,IAAI,CAGf"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveLimitCopy = resolveLimitCopy;
4
+ exports.formatLimitUsage = formatLimitUsage;
5
+ // Canonical strings ported from crm-frontend's orgPlanLimits.ts / orgRecordLimit.ts and
6
+ // account-frontend's useSeatLimitGate.ts, kept verbatim so the promoted modal reads exactly
7
+ // like the copies it replaces. `projects`/`tickets` are new — matched to the same voice.
8
+ const COPY = {
9
+ record: {
10
+ title: "Record limit reached",
11
+ unit: "records",
12
+ admin: "You have reached your plan record limit. Upgrade to add more records.",
13
+ member: "Your organization has reached its record limit. Contact your organization administrator to upgrade the plan.",
14
+ },
15
+ automation: {
16
+ title: "Automation limit reached",
17
+ unit: "automations",
18
+ admin: "You have reached your plan automation limit. Upgrade to create more workflows and cadences.",
19
+ member: "Your organization has reached its automation limit. Contact your organization administrator to upgrade the plan.",
20
+ },
21
+ custom_modules: {
22
+ title: "Custom module limit reached",
23
+ unit: "custom modules",
24
+ admin: "You have reached your plan custom module limit. Upgrade to add more custom modules.",
25
+ member: "Your organization has reached its custom module limit. Contact your organization administrator to upgrade the plan.",
26
+ },
27
+ user: {
28
+ title: "Seat limit reached",
29
+ unit: "users",
30
+ admin: "You have reached the number of users included on your plan. Upgrade to add more.",
31
+ member: "Your organization has reached its user limit. Contact your organization administrator to upgrade the plan.",
32
+ },
33
+ projects: {
34
+ title: "Project limit reached",
35
+ unit: "projects",
36
+ admin: "You have reached your plan project limit. Upgrade to create more projects.",
37
+ member: "Your organization has reached its project limit. Contact your organization administrator to upgrade the plan.",
38
+ },
39
+ tickets: {
40
+ title: "Ticket limit reached",
41
+ unit: "tickets",
42
+ admin: "You have reached your plan ticket limit. Upgrade to create more tickets.",
43
+ member: "Your organization has reached its ticket limit. Contact your organization administrator to upgrade the plan.",
44
+ },
45
+ };
46
+ function resolveLimitCopy(kind, canManageBilling) {
47
+ const c = COPY[kind];
48
+ return { title: c.title, message: canManageBilling ? c.admin : c.member };
49
+ }
50
+ function formatLimitUsage(kind, used, limit) {
51
+ if (used == null || limit == null)
52
+ return null;
53
+ return `${used} of ${limit} ${COPY[kind].unit} used`;
54
+ }
@@ -1,3 +1,3 @@
1
1
  import { LoadingProps } from "./LoadingProps";
2
- export default function Loading({ text, isLoading, onlytext }: LoadingProps): import("react/jsx-runtime").JSX.Element | null;
2
+ export default function Loading({ text, isLoading, onlytext, container }: LoadingProps): import("react/jsx-runtime").JSX.Element | null;
3
3
  //# sourceMappingURL=Loading.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Loading.d.ts","sourceRoot":"","sources":["../../../src/Components/Loading/Loading.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAgB9C,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,YAAY,kDAoD1E"}
1
+ {"version":3,"file":"Loading.d.ts","sourceRoot":"","sources":["../../../src/Components/Loading/Loading.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAgB9C,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,YAAY,kDAoDrF"}
@@ -16,12 +16,12 @@ const colorTransition = (0, react_2.keyframes) `
16
16
  color: black;
17
17
  }
18
18
  `;
19
- function Loading({ text, isLoading, onlytext }) {
19
+ function Loading({ text, isLoading, onlytext, container }) {
20
20
  const theme = (0, useCustomTheme_1.useCustomTheme)();
21
21
  if (!isLoading) {
22
22
  return null;
23
23
  }
24
- return ((0, jsx_runtime_1.jsx)(react_1.Box, { position: "fixed", top: "0", right: "0", bottom: "0", left: "0", backgroundColor: "blackAlpha.600", backdropFilter: "blur(60px)", display: "flex", alignItems: "center", justifyContent: "center", flexDirection: "column", zIndex: "9999", children: (0, jsx_runtime_1.jsx)(react_1.Center, { height: "100vh", children: !onlytext ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_1.Spinner, { thickness: "4px", speed: "0.65s", emptyColor: "gray.200", color: theme.colors.primary[500], size: "xl" }), (0, jsx_runtime_1.jsx)(react_1.Text, { mt: "2", ml: "5", children: text })] })) : ((0, jsx_runtime_1.jsx)(react_1.Text, { mt: "2", ml: "5", fontSize: "50px", textTransform: "uppercase", fontWeight: 500, css: (0, react_2.css) `
24
+ return ((0, jsx_runtime_1.jsx)(react_1.Box, { position: container ? "absolute" : "fixed", top: "0", right: "0", bottom: "0", left: "0", backgroundColor: container ? "blackAlpha.500" : "blackAlpha.600", backdropFilter: container ? undefined : "blur(60px)", display: "flex", alignItems: "center", justifyContent: "center", flexDirection: "column", zIndex: container ? "10" : "9999", children: (0, jsx_runtime_1.jsx)(react_1.Center, { height: container ? "100%" : "100vh", children: !onlytext ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_1.Spinner, { thickness: "4px", speed: "0.65s", emptyColor: "gray.200", color: theme.colors.primary[500], size: "xl" }), (0, jsx_runtime_1.jsx)(react_1.Text, { mt: "2", ml: "5", children: text })] })) : ((0, jsx_runtime_1.jsx)(react_1.Text, { mt: "2", ml: "5", fontSize: "50px", textTransform: "uppercase", fontWeight: 500, css: (0, react_2.css) `
25
25
  animation: ${colorTransition} 2s infinite;
26
26
  `, children: text })) }) }));
27
27
  }
@@ -2,5 +2,7 @@ export type LoadingProps = {
2
2
  text?: string;
3
3
  isLoading: boolean;
4
4
  onlytext?: boolean;
5
+ /** Scope the overlay to the nearest positioned ancestor with a MUI-style scrim, instead of full-viewport. */
6
+ container?: boolean;
5
7
  };
6
8
  //# sourceMappingURL=LoadingProps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingProps.d.ts","sourceRoot":"","sources":["../../../src/Components/Loading/LoadingProps.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"LoadingProps.d.ts","sourceRoot":"","sources":["../../../src/Components/Loading/LoadingProps.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6GAA6G;IAC7G,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/Components/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuB,MAAM,OAAO,CAAC;AAW5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAE/D,CAAC;AACF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAE7D,CAAC;AACF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAE/D,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,IAAI,EACJ,MAAc,EACd,OAAO,EACP,SAA4B,EAC5B,qBAAsD,EACtD,qBAAqB,EACrB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAoElB"}
1
+ {"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/Components/Modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuB,MAAM,OAAO,CAAC;AAW5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAE/D,CAAC;AACF,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAE7D,CAAC;AACF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAE/D,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,IAAI,EACJ,MAAc,EACd,OAAO,EACP,SAA4B,EAC5B,qBAAsD,EACtD,qBAAqB,EACrB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAwElB"}
@@ -8,7 +8,6 @@ exports.default = Modal;
8
8
  const jsx_runtime_1 = require("react/jsx-runtime");
9
9
  const react_1 = __importDefault(require("react"));
10
10
  const react_2 = require("@chakra-ui/react");
11
- const useCustomTheme_1 = require("../../Theme/useCustomTheme");
12
11
  const ModalHeader = ({ children }) => {
13
12
  return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
14
13
  };
@@ -22,8 +21,6 @@ const ModalFooter = ({ children }) => {
22
21
  };
23
22
  exports.ModalFooter = ModalFooter;
24
23
  function Modal({ size, isOpen = false, onClose, overlaybg = "blackAlpha.300", overlaybackdropFilter = "blur(10px) hue-rotate(90deg)", overlaybackdropInvert, overlaybackdropBlur, isCentered, finalFocusRef, blockScrollOnMount, initialFocusRef, closeOnOverlayClick, motionPreset, scrollBehavior, children, isLoading, }) {
25
- var _a;
26
- const { colors } = (0, useCustomTheme_1.useCustomTheme)();
27
24
  if (!isOpen)
28
25
  return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
29
26
  const isReactElement = (child) => {
@@ -32,7 +29,7 @@ function Modal({ size, isOpen = false, onClose, overlaybg = "blackAlpha.300", ov
32
29
  const header = react_1.default.Children.toArray(children).find((child) => isReactElement(child) && child.type === exports.ModalHeader);
33
30
  const body = react_1.default.Children.toArray(children).find((child) => isReactElement(child) && child.type === exports.ModalBody);
34
31
  const footer = react_1.default.Children.toArray(children).find((child) => isReactElement(child) && child.type === exports.ModalFooter);
35
- return ((0, jsx_runtime_1.jsxs)(react_2.Modal, { isOpen: true, onClose: onClose, size: size, isCentered: isCentered, finalFocusRef: finalFocusRef, blockScrollOnMount: blockScrollOnMount, initialFocusRef: initialFocusRef, closeOnOverlayClick: closeOnOverlayClick, motionPreset: motionPreset, scrollBehavior: scrollBehavior, children: [(0, jsx_runtime_1.jsx)(react_2.ModalOverlay, { bg: overlaybg, backdropFilter: overlaybackdropFilter, backdropInvert: overlaybackdropInvert, backdropBlur: overlaybackdropBlur }), (0, jsx_runtime_1.jsx)(react_2.ModalContent, { bg: (_a = colors === null || colors === void 0 ? void 0 : colors.background) === null || _a === void 0 ? void 0 : _a[50], children: isLoading ? ((0, jsx_runtime_1.jsx)("div", { style: {
32
+ return ((0, jsx_runtime_1.jsxs)(react_2.Modal, { isOpen: true, onClose: onClose, size: size, isCentered: isCentered, finalFocusRef: finalFocusRef, blockScrollOnMount: blockScrollOnMount, initialFocusRef: initialFocusRef, closeOnOverlayClick: closeOnOverlayClick, motionPreset: motionPreset, scrollBehavior: scrollBehavior, children: [(0, jsx_runtime_1.jsx)(react_2.ModalOverlay, { bg: overlaybg, backdropFilter: overlaybackdropFilter, backdropInvert: overlaybackdropInvert, backdropBlur: overlaybackdropBlur }), (0, jsx_runtime_1.jsx)(react_2.ModalContent, { children: isLoading ? ((0, jsx_runtime_1.jsx)("div", { style: {
36
33
  display: "flex",
37
34
  justifyContent: "center",
38
35
  alignItems: "center",
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationBar.d.ts","sourceRoot":"","sources":["../../../src/Components/NavigationBar/NavigationBar.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAa,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAU9D,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC9B,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,kBAA0B,GAC1B,EAAE,WAAW,2CAwKb"}
1
+ {"version":3,"file":"NavigationBar.d.ts","sourceRoot":"","sources":["../../../src/Components/NavigationBar/NavigationBar.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAa,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAW9D,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC9B,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,kBAA0B,GAC1B,EAAE,WAAW,2CA+Kb"}
@@ -5,9 +5,10 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("@chakra-ui/react");
6
6
  const useCustomTheme_1 = require("../../Theme/useCustomTheme");
7
7
  const accentText_1 = require("../../Theme/tokens/builders/accentText");
8
+ const outlineRung_1 = require("../../Theme/tokens/builders/outlineRung");
8
9
  const lucide_react_1 = require("lucide-react");
9
10
  function NavBar({ userAvathar, userName, userRole, navMenu, moreIcon, handleNavOnClick, handleLogout, logoutText, navigationBarText, sideBarToggole, onSideBarToggole, forceSideBarToggle = false, }) {
10
- var _a, _b, _c, _d, _e;
11
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
11
12
  const theme = (0, useCustomTheme_1.useCustomTheme)();
12
13
  // Shared rounded pill affordance for the bar's icon controls.
13
14
  const iconButtonStyle = {
@@ -20,6 +21,9 @@ function NavBar({ userAvathar, userName, userRole, navMenu, moreIcon, handleNavO
20
21
  transition: "background 0.15s",
21
22
  _hover: { bg: "blackAlpha.50" },
22
23
  };
24
+ // For a near-neutral brand (e.g. zinc), `primary[50]` is itself a pale near-white tint — on
25
+ // the menu's own near-white surface that measured as low as ~1.02:1, an invisible hover.
26
+ const menuHoverBg = (0, outlineRung_1.resolveHoverTint)(theme.colors.primary[50], (_d = (_b = (_a = theme.colors.backgroundColor) === null || _a === void 0 ? void 0 : _a.light) !== null && _b !== void 0 ? _b : (_c = theme.colors.background) === null || _c === void 0 ? void 0 : _c[50]) !== null && _d !== void 0 ? _d : "#ffffff");
23
27
  // Light elevated pill item.
24
28
  const menuItemStyle = {
25
29
  bg: "transparent",
@@ -32,16 +36,16 @@ function NavBar({ userAvathar, userName, userRole, navMenu, moreIcon, handleNavO
32
36
  color: "gray.700",
33
37
  gap: theme.space["2"],
34
38
  transition: "background 0.12s",
35
- _hover: { bg: theme.colors.primary[50], color: theme.colors.primary[700] },
36
- _focus: { bg: theme.colors.primary[50], color: theme.colors.primary[700] },
37
- _active: { bg: theme.colors.primary[50], color: theme.colors.primary[700] },
39
+ _hover: { bg: menuHoverBg, color: theme.colors.primary[700] },
40
+ _focus: { bg: menuHoverBg, color: theme.colors.primary[700] },
41
+ _active: { bg: menuHoverBg, color: theme.colors.primary[700] },
38
42
  };
39
- return ((0, jsx_runtime_1.jsx)(react_1.Box, { bg: theme.colors.backgroundColor.light, px: 4, borderBottom: "1px solid", borderColor: "blackAlpha.100", children: (0, jsx_runtime_1.jsxs)(react_1.Flex, { h: 16, alignItems: "center", justifyContent: "space-between", children: [(0, jsx_runtime_1.jsxs)(react_1.Box, { display: "flex", gap: 1.5, alignItems: "center", children: [(0, jsx_runtime_1.jsx)(react_1.Box, { onClick: () => onSideBarToggole === null || onSideBarToggole === void 0 ? void 0 : onSideBarToggole(), display: forceSideBarToggle ? "flex" : { base: "flex", lg: "none" }, "aria-label": sideBarToggole ? "Close navigation menu" : "Open navigation menu", ...iconButtonStyle, children: sideBarToggole ? ((0, jsx_runtime_1.jsx)(lucide_react_1.PanelLeftClose, { size: "1.25rem" })) : ((0, jsx_runtime_1.jsx)(lucide_react_1.PanelRightClose, { size: "1.25rem" })) }), (navigationBarText === null || navigationBarText === void 0 ? void 0 : navigationBarText.onIconClick) && ((0, jsx_runtime_1.jsx)(react_1.Box, { ...iconButtonStyle, display: "flex", onClick: () => { var _a; return (_a = navigationBarText === null || navigationBarText === void 0 ? void 0 : navigationBarText.onIconClick) === null || _a === void 0 ? void 0 : _a.call(navigationBarText); }, children: (0, jsx_runtime_1.jsx)(lucide_react_1.CircleArrowLeft, { size: "1.25rem", color: (_b = (_a = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _a === void 0 ? void 0 : _a.text) === null || _b === void 0 ? void 0 : _b[500] }) })), (navigationBarText === null || navigationBarText === void 0 ? void 0 : navigationBarText.text) && ((0, jsx_runtime_1.jsx)(react_1.Text, { color: (0, accentText_1.accentTextOnCanvas)((_c = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _c === void 0 ? void 0 : _c.secondary, (_e = (_d = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _d === void 0 ? void 0 : _d.backgroundColor) === null || _e === void 0 ? void 0 : _e.light), fontSize: "1.25rem", fontWeight: 600, fontFamily: "open-sans, sans-serif", letterSpacing: "-0.013rem", children: navigationBarText === null || navigationBarText === void 0 ? void 0 : navigationBarText.text }))] }), (0, jsx_runtime_1.jsx)(react_1.Flex, { minW: 0, flexShrink: 1, children: (0, jsx_runtime_1.jsxs)(react_1.Stack, { direction: "row", alignItems: "center", spacing: 4, minW: 0, children: [moreIcon && ((0, jsx_runtime_1.jsx)(react_1.Box, { display: "flex", alignItems: "center", minW: 0, children: moreIcon })), (0, jsx_runtime_1.jsxs)(react_1.Menu, { children: [(0, jsx_runtime_1.jsx)(react_1.MenuButton, { as: react_1.Button, rounded: "full", variant: "link", cursor: "pointer", minW: 0, flexShrink: 0, children: (0, jsx_runtime_1.jsx)(react_1.Avatar, { size: "sm", name: userName, src: userAvathar }) }), (0, jsx_runtime_1.jsx)(react_1.MenuList, { alignItems: "center", zIndex: 5, p: 0, py: "0.375rem", bg: theme.colors.backgroundColor.light,
43
+ return ((0, jsx_runtime_1.jsx)(react_1.Box, { bg: theme.colors.backgroundColor.light, px: 4, borderBottom: "1px solid", borderColor: "blackAlpha.100", children: (0, jsx_runtime_1.jsxs)(react_1.Flex, { h: 16, alignItems: "center", justifyContent: "space-between", children: [(0, jsx_runtime_1.jsxs)(react_1.Box, { display: "flex", gap: 1.5, alignItems: "center", children: [(0, jsx_runtime_1.jsx)(react_1.Box, { onClick: () => onSideBarToggole === null || onSideBarToggole === void 0 ? void 0 : onSideBarToggole(), display: forceSideBarToggle ? "flex" : { base: "flex", lg: "none" }, "aria-label": sideBarToggole ? "Close navigation menu" : "Open navigation menu", ...iconButtonStyle, children: sideBarToggole ? ((0, jsx_runtime_1.jsx)(lucide_react_1.PanelLeftClose, { size: "1.25rem" })) : ((0, jsx_runtime_1.jsx)(lucide_react_1.PanelRightClose, { size: "1.25rem" })) }), (navigationBarText === null || navigationBarText === void 0 ? void 0 : navigationBarText.onIconClick) && ((0, jsx_runtime_1.jsx)(react_1.Box, { ...iconButtonStyle, display: "flex", onClick: () => { var _a; return (_a = navigationBarText === null || navigationBarText === void 0 ? void 0 : navigationBarText.onIconClick) === null || _a === void 0 ? void 0 : _a.call(navigationBarText); }, children: (0, jsx_runtime_1.jsx)(lucide_react_1.CircleArrowLeft, { size: "1.25rem", color: (_f = (_e = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _e === void 0 ? void 0 : _e.text) === null || _f === void 0 ? void 0 : _f[500] }) })), (navigationBarText === null || navigationBarText === void 0 ? void 0 : navigationBarText.text) && ((0, jsx_runtime_1.jsx)(react_1.Text, { color: (0, accentText_1.accentTextOnCanvas)((_g = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _g === void 0 ? void 0 : _g.secondary, (_j = (_h = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _h === void 0 ? void 0 : _h.backgroundColor) === null || _j === void 0 ? void 0 : _j.light), fontSize: "1.25rem", fontWeight: 600, fontFamily: "open-sans, sans-serif", letterSpacing: "-0.013rem", children: navigationBarText === null || navigationBarText === void 0 ? void 0 : navigationBarText.text }))] }), (0, jsx_runtime_1.jsx)(react_1.Flex, { minW: 0, flexShrink: 1, children: (0, jsx_runtime_1.jsxs)(react_1.Stack, { direction: "row", alignItems: "center", spacing: 4, minW: 0, children: [moreIcon && ((0, jsx_runtime_1.jsx)(react_1.Box, { display: "flex", alignItems: "center", minW: 0, children: moreIcon })), (0, jsx_runtime_1.jsxs)(react_1.Menu, { children: [(0, jsx_runtime_1.jsx)(react_1.MenuButton, { as: react_1.Button, rounded: "full", variant: "link", cursor: "pointer", minW: 0, flexShrink: 0, children: (0, jsx_runtime_1.jsx)(react_1.Avatar, { size: "sm", name: userName, src: userAvathar }) }), (0, jsx_runtime_1.jsx)(react_1.MenuList, { alignItems: "center", zIndex: 5, p: 0, py: "0.375rem", bg: theme.colors.backgroundColor.light,
40
44
  // Chakra's MenuItem renders `background: var(--menu-bg)` at rest; its MenuList
41
45
  // baseStyle hardcodes that var to "#fff" (gated behind `_dark`, which this theme-swap
42
46
  // app never triggers). The `bg` prop above only recolors the list itself, not the
43
47
  // inherited var, so items fall back to white until hover/focus — set the var too.
44
- sx: { "--menu-bg": theme.colors.backgroundColor.light }, border: "1px solid", borderColor: "blackAlpha.100", borderRadius: "0.75rem", boxShadow: "lg", color: "gray.700", overflow: "hidden", children: (0, jsx_runtime_1.jsxs)(react_1.Box, { display: "flex", flexDirection: "column", maxH: "90vh", children: [(0, jsx_runtime_1.jsx)(react_1.Center, { pt: 4, pb: 2, children: (0, jsx_runtime_1.jsx)(react_1.Avatar, { size: "xl", name: userName, src: userAvathar }) }), (0, jsx_runtime_1.jsxs)(react_1.Center, { flexDirection: "column", gap: "0.125rem", pb: 2, px: 4, children: [(0, jsx_runtime_1.jsx)(react_1.Text, { fontWeight: 600, fontSize: "14px", color: "gray.800", isTruncated: true, maxW: "100%", children: userName }), userRole && ((0, jsx_runtime_1.jsx)(react_1.Text, { fontSize: "11px", color: "gray.500", isTruncated: true, maxW: "100%", children: userRole }))] }), (0, jsx_runtime_1.jsx)(react_1.MenuDivider, { borderColor: "blackAlpha.100" }), (0, jsx_runtime_1.jsx)(react_1.Box, { flex: 1, overflowY: "auto", children: navMenu === null || navMenu === void 0 ? void 0 : navMenu.map((menu, idx) => {
48
+ sx: { "--menu-bg": theme.colors.backgroundColor.light }, border: "1px solid", borderColor: "blackAlpha.100", borderRadius: "0.75rem", boxShadow: "lg", color: theme.colors.text[900], overflow: "hidden", children: (0, jsx_runtime_1.jsxs)(react_1.Box, { display: "flex", flexDirection: "column", maxH: "90vh", children: [(0, jsx_runtime_1.jsx)(react_1.Center, { pt: 4, pb: 2, children: (0, jsx_runtime_1.jsx)(react_1.Avatar, { size: "xl", name: userName, src: userAvathar }) }), (0, jsx_runtime_1.jsxs)(react_1.Center, { flexDirection: "column", gap: "0.125rem", pb: 2, px: 4, children: [(0, jsx_runtime_1.jsx)(react_1.Text, { fontWeight: 600, fontSize: "14px", color: theme.colors.text[900], isTruncated: true, maxW: "100%", children: userName }), userRole && ((0, jsx_runtime_1.jsx)(react_1.Text, { fontSize: "11px", color: theme.colors.text[500], isTruncated: true, maxW: "100%", children: userRole }))] }), (0, jsx_runtime_1.jsx)(react_1.MenuDivider, { borderColor: "blackAlpha.100" }), (0, jsx_runtime_1.jsx)(react_1.Box, { flex: 1, overflowY: "auto", children: navMenu === null || navMenu === void 0 ? void 0 : navMenu.map((menu, idx) => {
45
49
  var _a, _b, _c;
46
50
  return ((0, jsx_runtime_1.jsxs)(react_1.MenuItem, { onClick: () => handleNavOnClick(menu.url), sx: menuItemStyle, children: [menu.icon && ((0, jsx_runtime_1.jsx)(react_1.Box, { display: "flex", alignItems: "center", flexShrink: 0, sx: { "& svg": { width: "16px", height: "16px" } }, children: menu === null || menu === void 0 ? void 0 : menu.icon })), (0, jsx_runtime_1.jsx)(react_1.Box, { children: menu.title })] }, `${String((_c = (_b = (_a = menu.id) !== null && _a !== void 0 ? _a : menu.url) !== null && _b !== void 0 ? _b : menu.title) !== null && _c !== void 0 ? _c : idx)}-${idx}`));
47
51
  }) }), (0, jsx_runtime_1.jsx)(react_1.MenuDivider, { borderColor: "blackAlpha.100" }), (0, jsx_runtime_1.jsxs)(react_1.MenuItem, { onClick: handleLogout, sx: {
@@ -1 +1 @@
1
- {"version":3,"file":"OrgSwitcher.d.ts","sourceRoot":"","sources":["../../../src/Components/OrgSwitcher/OrgSwitcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAkBzD,OAAO,EAGL,gBAAgB,EAGjB,MAAM,oBAAoB,CAAC;AA6C5B,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA4M3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"OrgSwitcher.d.ts","sourceRoot":"","sources":["../../../src/Components/OrgSwitcher/OrgSwitcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAoBzD,OAAO,EAGL,gBAAgB,EAGjB,MAAM,oBAAoB,CAAC;AAkD5B,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA4N3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -5,6 +5,8 @@ const react_1 = require("react");
5
5
  const react_2 = require("@chakra-ui/react");
6
6
  const lucide_react_1 = require("lucide-react");
7
7
  const useCustomTheme_1 = require("../../Theme/useCustomTheme");
8
+ const accentText_1 = require("../../Theme/tokens/builders/accentText");
9
+ const outlineRung_1 = require("../../Theme/tokens/builders/outlineRung");
8
10
  const OrgSwitcherProps_1 = require("./OrgSwitcherProps");
9
11
  const sizeMap = {
10
12
  sm: { h: "32px", avatar: "22px", font: "0.8rem", sub: "0.65rem", px: 2 },
@@ -15,7 +17,12 @@ const Avatar = ({ org, boxSize, fontSize, }) => {
15
17
  if (org.logoUrl) {
16
18
  return ((0, jsx_runtime_1.jsx)(react_2.Image, { src: org.logoUrl, alt: org.name, boxSize: boxSize, borderRadius: "8px", objectFit: "cover", flexShrink: 0 }));
17
19
  }
18
- return ((0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: boxSize, borderRadius: "8px", flexShrink: 0, bg: (0, OrgSwitcherProps_1.avatarColor)(org.name), color: "white", fontSize: fontSize, fontWeight: 700, children: (0, OrgSwitcherProps_1.orgInitial)(org.name) }));
20
+ // `AVATAR_COLORS` is a fixed 8-swatch palette hashed from the org name (not theme-derived, so
21
+ // it can't lean on a per-brand text rung). Two of the eight — amber `#F59E0B`, teal `#14B8A6` —
22
+ // measure 2.15:1 / 2.49:1 against hardcoded white, well under AA. `onFilled` is provably >=4.5
23
+ // against ANY fill, so it's the correct ink for an arbitrary, theme-independent swatch.
24
+ const fill = (0, OrgSwitcherProps_1.avatarColor)(org.name);
25
+ return ((0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: boxSize, borderRadius: "8px", flexShrink: 0, bg: fill, color: (0, accentText_1.onFilled)(fill, "#ffffff", "#000000"), fontSize: fontSize, fontWeight: 700, children: (0, OrgSwitcherProps_1.orgInitial)(org.name) }));
19
26
  };
20
27
  const OrgSwitcher = ({ organizations, value, onChange, isLoading = false, isSearchable, searchThreshold = 6, triggerVariant = "ghost", size = "md", maxWidth = "200px", menuMinWidth = "280px", placeholder = "Select organization", ariaLabel = "Switch organization", showRole = true, }) => {
21
28
  var _a, _b, _c;
@@ -40,6 +47,11 @@ const OrgSwitcher = ({ organizations, value, onChange, isLoading = false, isSear
40
47
  : triggerVariant === "subtle"
41
48
  ? { bg: theme.colors.gray[50] }
42
49
  : { bg: "transparent" };
50
+ // `gray[100]` hover on a "transparent" trigger reads against whatever's actually behind it —
51
+ // this control lives in a navbar-like shell, so `backgroundColor.light` is that surface. For a
52
+ // near-neutral brand (zinc) the two measured near-1.0: an invisible hover, same bug shape as
53
+ // NavigationBar's menu items.
54
+ const triggerHoverBg = (0, outlineRung_1.resolveHoverTint)(theme.colors.gray[100], theme.colors.backgroundColor.light);
43
55
  const handleSelect = (org) => {
44
56
  onClose();
45
57
  setQuery("");
@@ -49,14 +61,21 @@ const OrgSwitcher = ({ organizations, value, onChange, isLoading = false, isSear
49
61
  return ((0, jsx_runtime_1.jsxs)(react_2.Popover, { isOpen: isOpen, onOpen: onOpen, onClose: () => {
50
62
  onClose();
51
63
  setQuery("");
52
- }, placement: "bottom-start", initialFocusRef: showSearch ? searchRef : undefined, isLazy: true, children: [(0, jsx_runtime_1.jsx)(react_2.PopoverTrigger, { children: (0, jsx_runtime_1.jsxs)(react_2.Flex, { as: "button", type: "button", "aria-label": ariaLabel, align: "center", gap: s.px === 2 ? "8px" : "10px", h: s.h, px: s.px, borderRadius: "10px", cursor: isLoading ? "default" : "pointer", opacity: isLoading ? 0.6 : 1, pointerEvents: isLoading ? "none" : "auto", transition: "background 0.15s ease", _hover: { bg: triggerVariant === "ghost" ? theme.colors.gray[100] : undefined }, ...triggerStyles, children: [selected ? ((0, jsx_runtime_1.jsx)(Avatar, { org: selected, boxSize: s.avatar, fontSize: s.sub })) : ((0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: s.avatar, borderRadius: "8px", bg: theme.colors.gray[100], color: theme.colors.gray[400], flexShrink: 0, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Building2, { size: 14 }) })), (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: s.font, fontWeight: 600, color: theme.colors.gray[700], maxW: maxWidth, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", textAlign: "left", children: (_c = selected === null || selected === void 0 ? void 0 : selected.name) !== null && _c !== void 0 ? _c : placeholder }), isLoading ? ((0, jsx_runtime_1.jsx)(react_2.Spinner, { size: "xs", thickness: "1.5px", color: theme.colors.primary[500], flexShrink: 0 })) : ((0, jsx_runtime_1.jsx)(react_2.Box, { as: lucide_react_1.ChevronsUpDown, size: 16, color: theme.colors.gray[400], flexShrink: 0 }))] }) }), (0, jsx_runtime_1.jsx)(react_2.PopoverContent, { minW: menuMinWidth, w: "auto",
64
+ }, placement: "bottom-start", initialFocusRef: showSearch ? searchRef : undefined, isLazy: true, children: [(0, jsx_runtime_1.jsx)(react_2.PopoverTrigger, { children: (0, jsx_runtime_1.jsxs)(react_2.Flex, { as: "button", type: "button", "aria-label": ariaLabel, align: "center", gap: s.px === 2 ? "8px" : "10px", h: s.h, px: s.px, borderRadius: "10px", cursor: isLoading ? "default" : "pointer", opacity: isLoading ? 0.6 : 1, pointerEvents: isLoading ? "none" : "auto", transition: "background 0.15s ease", _hover: { bg: triggerVariant === "ghost" ? triggerHoverBg : undefined }, ...triggerStyles, children: [selected ? ((0, jsx_runtime_1.jsx)(Avatar, { org: selected, boxSize: s.avatar, fontSize: s.sub })) : ((0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: s.avatar, borderRadius: "8px", bg: theme.colors.gray[100], color: theme.colors.gray[400], flexShrink: 0, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Building2, { size: 14 }) })), (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: s.font, fontWeight: 600, color: theme.colors.gray[700], maxW: maxWidth, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", textAlign: "left", children: (_c = selected === null || selected === void 0 ? void 0 : selected.name) !== null && _c !== void 0 ? _c : placeholder }), isLoading ? ((0, jsx_runtime_1.jsx)(react_2.Spinner, { size: "xs", thickness: "1.5px", color: theme.colors.primary[500], flexShrink: 0 })) : ((0, jsx_runtime_1.jsx)(react_2.Box, { as: lucide_react_1.ChevronsUpDown, size: 16, color: theme.colors.gray[400], flexShrink: 0 }))] }) }), (0, jsx_runtime_1.jsx)(react_2.PopoverContent, { minW: menuMinWidth, w: "auto",
53
65
  // Chakra's PopoverContent baseStyle defaults bg to var(--popper-bg), which is hardcoded
54
66
  // to colors.white and only repointed under Chakra's own `_dark` — dead code here since
55
67
  // this app toggles dark mode by swapping the palette, not Chakra's colorMode. Without an
56
68
  // explicit bg the panel always rendered white regardless of the active theme.
57
69
  bg: theme.colors.backgroundColor.light, borderRadius: "12px", overflow: "hidden", boxShadow: `0 10px 30px ${theme.colors.boxShadow.default}`, _focus: { outline: "none", boxShadow: `0 10px 30px ${theme.colors.boxShadow.default}` }, children: (0, jsx_runtime_1.jsxs)(react_2.PopoverBody, { p: 0, children: [showSearch && ((0, jsx_runtime_1.jsx)(react_2.Box, { p: 2, borderBottom: "1px solid", borderColor: theme.colors.gray[100], children: (0, jsx_runtime_1.jsxs)(react_2.InputGroup, { size: "sm", children: [(0, jsx_runtime_1.jsx)(react_2.InputLeftElement, { pointerEvents: "none", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Search, { size: 15, color: theme.colors.gray[400] }) }), (0, jsx_runtime_1.jsx)(react_2.Input, { ref: searchRef, placeholder: "Search organizations", value: query, onChange: (e) => setQuery(e.target.value), borderRadius: "8px" })] }) })), (0, jsx_runtime_1.jsxs)(react_2.Box, { maxH: "320px", overflowY: "auto", py: 1, children: [filtered.map((org) => {
58
70
  const isActive = org.id === value;
59
- return ((0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: "10px", px: 3, py: 2, cursor: "pointer", bg: isActive ? theme.colors.primary[50] : "transparent", transition: "background 0.12s ease", _hover: { bg: isActive ? theme.colors.primary[50] : theme.colors.gray[50] }, onClick: () => handleSelect(org), children: [(0, jsx_runtime_1.jsx)(Avatar, { org: org, boxSize: s.avatar, fontSize: s.sub }), (0, jsx_runtime_1.jsxs)(react_2.Box, { flex: "1", minW: 0, children: [(0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: s.font, fontWeight: isActive ? 600 : 500, color: theme.colors.text[900], overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", children: org.name }), showRole && org.role && ((0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: s.sub, color: theme.colors.text[500], overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", children: org.role }))] }), isActive && ((0, jsx_runtime_1.jsx)(react_2.Box, { as: lucide_react_1.Check, size: 16, color: theme.colors.primary[500], flexShrink: 0 }))] }, org.id));
71
+ // Active row's hover repeated its own resting `primary[50]` fill — a zero-delta
72
+ // hover, invisible by construction. `resolveHoverTint` walks a fill away from a
73
+ // backdrop until distinguishable, so handing it its own resting bg as the backdrop
74
+ // is enough to make hover read as a real state change on both active and inactive rows.
75
+ const rowHoverBg = isActive
76
+ ? (0, outlineRung_1.resolveHoverTint)(theme.colors.primary[50], theme.colors.primary[50])
77
+ : (0, outlineRung_1.resolveHoverTint)(theme.colors.gray[50], theme.colors.backgroundColor.light);
78
+ return ((0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: "10px", px: 3, py: 2, cursor: "pointer", bg: isActive ? theme.colors.primary[50] : "transparent", transition: "background 0.12s ease", _hover: { bg: rowHoverBg }, onClick: () => handleSelect(org), children: [(0, jsx_runtime_1.jsx)(Avatar, { org: org, boxSize: s.avatar, fontSize: s.sub }), (0, jsx_runtime_1.jsxs)(react_2.Box, { flex: "1", minW: 0, children: [(0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: s.font, fontWeight: isActive ? 600 : 500, color: theme.colors.text[900], overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", children: org.name }), showRole && org.role && ((0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: s.sub, color: theme.colors.text[500], overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", children: org.role }))] }), isActive && ((0, jsx_runtime_1.jsx)(react_2.Box, { as: lucide_react_1.Check, size: 16, color: theme.colors.primary[500], flexShrink: 0 }))] }, org.id));
60
79
  }), filtered.length === 0 && ((0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "sm", color: theme.colors.gray[500], textAlign: "center", py: 6, children: "No organizations found" }))] })] }) })] }));
61
80
  };
62
81
  exports.default = OrgSwitcher;
@@ -35,8 +35,16 @@ export interface OrgSwitcherProps {
35
35
  /** Show the role subtitle inside the dropdown rows. Default true. */
36
36
  showRole?: boolean;
37
37
  }
38
+ export declare const AVATAR_COLORS: string[];
38
39
  /** Deterministically pick an avatar color from an org name. */
39
40
  export declare const avatarColor: (seed: string) => string;
40
- /** First letter (uppercased) of an org name, for the fallback avatar. */
41
+ /**
42
+ * Fallback-avatar initials, up to 2 characters. A single letter reads well for one
43
+ * org but collides constantly across a real list — two orgs both starting with
44
+ * "P" render the identical circle, distinguishable only by the hashed color.
45
+ * A multi-word name takes one letter each word ("pixelize default" -> "PD"); a
46
+ * single word takes its own first two letters ("Default1" -> "DE") so a
47
+ * one-word org still gets a distinct-looking mark instead of falling back to one.
48
+ */
41
49
  export declare const orgInitial: (name: string) => string;
42
50
  //# sourceMappingURL=OrgSwitcherProps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrgSwitcherProps.d.ts","sourceRoot":"","sources":["../../../src/Components/OrgSwitcher/OrgSwitcherProps.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,qDAAqD;IACrD,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IACxD,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;IAChD,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAaD,+DAA+D;AAC/D,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAM1C,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,MACA,CAAC"}
1
+ {"version":3,"file":"OrgSwitcherProps.d.ts","sourceRoot":"","sources":["../../../src/Components/OrgSwitcher/OrgSwitcherProps.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,qDAAqD;IACrD,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IACxD,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;IAChD,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,UASzB,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAM1C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,MAKzC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.orgInitial = exports.avatarColor = void 0;
4
- const AVATAR_COLORS = [
3
+ exports.orgInitial = exports.avatarColor = exports.AVATAR_COLORS = void 0;
4
+ exports.AVATAR_COLORS = [
5
5
  "#6366F1",
6
6
  "#0EA5E9",
7
7
  "#10B981",
@@ -17,9 +17,23 @@ const avatarColor = (seed) => {
17
17
  for (let i = 0; i < seed.length; i += 1) {
18
18
  hash = seed.charCodeAt(i) + ((hash << 5) - hash);
19
19
  }
20
- return AVATAR_COLORS[Math.abs(hash) % AVATAR_COLORS.length];
20
+ return exports.AVATAR_COLORS[Math.abs(hash) % exports.AVATAR_COLORS.length];
21
21
  };
22
22
  exports.avatarColor = avatarColor;
23
- /** First letter (uppercased) of an org name, for the fallback avatar. */
24
- const orgInitial = (name) => { var _a, _b; return ((_b = (_a = name === null || name === void 0 ? void 0 : name.trim()) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : "?").toUpperCase(); };
23
+ /**
24
+ * Fallback-avatar initials, up to 2 characters. A single letter reads well for one
25
+ * org but collides constantly across a real list — two orgs both starting with
26
+ * "P" render the identical circle, distinguishable only by the hashed color.
27
+ * A multi-word name takes one letter each word ("pixelize default" -> "PD"); a
28
+ * single word takes its own first two letters ("Default1" -> "DE") so a
29
+ * one-word org still gets a distinct-looking mark instead of falling back to one.
30
+ */
31
+ const orgInitial = (name) => {
32
+ const words = (name !== null && name !== void 0 ? name : "").trim().split(/\s+/).filter(Boolean);
33
+ if (words.length === 0)
34
+ return "?";
35
+ if (words.length === 1)
36
+ return words[0].slice(0, 2).toUpperCase();
37
+ return (words[0][0] + words[1][0]).toUpperCase();
38
+ };
25
39
  exports.orgInitial = orgInitial;
@@ -31,28 +31,30 @@ const CreateOrgModal = ({ isOpen, onClose, isLoading, onSubmit, labels, }) => {
31
31
  setErrors((prev) => ({ ...prev, [key]: undefined }));
32
32
  };
33
33
  const validate = () => {
34
+ var _a, _b;
34
35
  const next = {};
35
36
  if (!values.company_name.trim())
36
37
  next.company_name = labels.requiredField;
37
38
  if (!values.company_address.trim())
38
39
  next.company_address = labels.requiredField;
39
- const digits = values.phone.replace(/\D/g, "");
40
- if (!values.phone.trim()) {
40
+ const digits = (_a = values === null || values === void 0 ? void 0 : values.phone) === null || _a === void 0 ? void 0 : _a.replace(/\D/g, "");
41
+ if (!((_b = values === null || values === void 0 ? void 0 : values.phone) === null || _b === void 0 ? void 0 : _b.trim())) {
41
42
  next.phone = labels.requiredField;
42
43
  }
43
- else if (digits.length < 8) {
44
+ else if (digits && (digits === null || digits === void 0 ? void 0 : digits.length) < 8) {
44
45
  next.phone = labels.invalidPhone;
45
46
  }
46
47
  setErrors(next);
47
48
  return Object.keys(next).length === 0;
48
49
  };
49
50
  const handleSubmit = () => {
51
+ var _a;
50
52
  if (!validate())
51
53
  return;
52
54
  onSubmit({
53
55
  company_name: values.company_name.trim(),
54
56
  company_address: values.company_address.trim(),
55
- phone: values.phone.trim(),
57
+ phone: (_a = values === null || values === void 0 ? void 0 : values.phone) === null || _a === void 0 ? void 0 : _a.trim(),
56
58
  });
57
59
  };
58
60
  return ((0, jsx_runtime_1.jsxs)(react_2.Modal, { isOpen: isOpen, onClose: onClose, isCentered: true, autoFocus: false, children: [(0, jsx_runtime_1.jsx)(react_2.ModalOverlay, { backdropFilter: "blur(4px)" }), (0, jsx_runtime_1.jsxs)(react_2.ModalContent, { bg: colors.background[50], borderRadius: "2xl", overflow: "hidden", children: [(0, jsx_runtime_1.jsx)(react_2.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], fontSize: "1.05rem", fontWeight: 600, children: labels.createOrganization }), (0, jsx_runtime_1.jsx)(react_2.ModalCloseButton, {}), (0, jsx_runtime_1.jsxs)(react_2.ModalBody, { py: 6, children: [(0, jsx_runtime_1.jsxs)(react_2.VStack, { spacing: 4, align: "stretch", children: [(0, jsx_runtime_1.jsx)(TextInput_1.default, { label: labels.companyName, value: values.company_name, onChange: (e) => setField("company_name", e.target.value), isRequired: true, width: "100%", placeholder: "Enter Company Name", error: !!errors.company_name, errorMessage: errors.company_name }), (0, jsx_runtime_1.jsx)(TextInput_1.default, { label: labels.companyAddress, value: values.company_address, onChange: (e) => setField("company_address", e.target.value), isRequired: true, width: "100%", placeholder: "Enter Company Address", error: !!errors.company_address, errorMessage: errors.company_address }), (0, jsx_runtime_1.jsx)(TextInput_1.default, { label: labels.phone, value: values.phone, onChange: (e) => setField("phone", e.target.value), isRequired: true, width: "100%", placeholder: "Enter Phone Number", error: !!errors.phone, errorMessage: errors.phone })] }), (0, jsx_runtime_1.jsxs)(react_2.HStack, { justifyContent: "center", spacing: 4, mt: 6, children: [(0, jsx_runtime_1.jsx)(Button_1.default, { label: labels.cancel, onClick: onClose, variant: "outline", colorScheme: "red", size: "sm" }), (0, jsx_runtime_1.jsx)(Button_1.default, { label: labels.submit, onClick: handleSubmit, colorScheme: "primary", size: "sm", isLoading: isLoading })] })] })] })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"OrganizationDetails.d.ts","sourceRoot":"","sources":["../../../src/Components/OrganizationDetails/OrganizationDetails.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAgCjD,OAAO,EAEL,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AAoCpC,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAmZ3D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"OrganizationDetails.d.ts","sourceRoot":"","sources":["../../../src/Components/OrganizationDetails/OrganizationDetails.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAsCjD,OAAO,EAEL,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AAyCpC,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA+hB3D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -10,6 +10,7 @@ const lucide_react_1 = require("lucide-react");
10
10
  const useCustomTheme_1 = require("../../Theme/useCustomTheme");
11
11
  const Button_1 = __importDefault(require("../Button/Button"));
12
12
  const EmptyState_1 = __importDefault(require("../EmptyState/EmptyState"));
13
+ const Tag_1 = __importDefault(require("../Tag/Tag"));
13
14
  const CreateOrgModal_1 = __importDefault(require("./CreateOrgModal"));
14
15
  const DeleteOrgModal_1 = __importDefault(require("./DeleteOrgModal"));
15
16
  const DEFAULT_LABELS = {
@@ -23,6 +24,7 @@ const DEFAULT_LABELS = {
23
24
  setAsDefault: "Set as Default",
24
25
  settingDefault: "Setting...",
25
26
  default: "Default",
27
+ owner: "Owner",
26
28
  pending: "Pending",
27
29
  accept: "Accept",
28
30
  accepting: "Accepting...",
@@ -30,6 +32,10 @@ const DEFAULT_LABELS = {
30
32
  deleteOrganization: "Delete Organization",
31
33
  protectedOrganization: "Protected organization",
32
34
  delete: "Delete",
35
+ editOrganization: "Edit organization name",
36
+ save: "Save",
37
+ saving: "Saving...",
38
+ emptyNameError: "Organization name cannot be empty",
33
39
  noOrganizationsTitle: "No organizations found",
34
40
  noOrganizationsDescription: "Get started by creating your first organization or wait for an invitation",
35
41
  companyName: "Company Name",
@@ -44,12 +50,16 @@ const DEFAULT_LABELS = {
44
50
  copyright: "Pixelize Corp. All rights reserved.",
45
51
  termsOfService: "Terms of Service",
46
52
  };
47
- const OrganizationDetails = ({ activeOrganizations, invitedOrganizations, isLoading = false, switchingOrgIds = [], respondingOrgIds = [], isCreating = false, userName, userAvatarUrl, onSetDefault, onAcceptInvite, onDeclineInvite, onDeleteOrganization, onCreateOrganization, onBack, footerSlot, labels: labelOverrides, }) => {
53
+ const OrganizationDetails = ({ activeOrganizations, invitedOrganizations, isLoading = false, switchingOrgIds = [], respondingOrgIds = [], editingOrgIds = [], isCreating = false, userName, userAvatarUrl, onSetDefault, onAcceptInvite, onDeclineInvite, onDeleteOrganization, onDeleteRequest, onCreateOrganization, onEditOrganization, onBack, footerSlot, labels: labelOverrides, }) => {
48
54
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
49
55
  const { colors } = (0, useCustomTheme_1.useCustomTheme)();
50
56
  const labels = (0, react_1.useMemo)(() => ({ ...DEFAULT_LABELS, ...labelOverrides }), [labelOverrides]);
51
57
  const [isCreateOpen, setCreateOpen] = (0, react_1.useState)(false);
52
58
  const [deleteOrgId, setDeleteOrgId] = (0, react_1.useState)(null);
59
+ // --- Inline "edit organization name" state ---
60
+ const [editingOrgId, setEditingOrgId] = (0, react_1.useState)(null);
61
+ const [editValue, setEditValue] = (0, react_1.useState)("");
62
+ const [editError, setEditError] = (0, react_1.useState)("");
53
63
  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";
54
64
  const surface = (_g = (_f = (_e = colors === null || colors === void 0 ? void 0 : colors.background) === null || _e === void 0 ? void 0 : _e[50]) !== null && _f !== void 0 ? _f : colors === null || colors === void 0 ? void 0 : colors.white) !== null && _g !== void 0 ? _g : "#FFFFFF";
55
65
  const muted = (_j = (_h = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _h === void 0 ? void 0 : _h[500]) !== null && _j !== void 0 ? _j : "#64748B";
@@ -68,18 +78,63 @@ const OrganizationDetails = ({ activeOrganizations, invitedOrganizations, isLoad
68
78
  boxShadow: "0 1px 2px rgba(16,24,40,0.05)",
69
79
  };
70
80
  const sectionBadge = (count, scheme) => ((0, jsx_runtime_1.jsx)(react_2.Badge, { colorScheme: scheme, variant: "subtle", borderRadius: "full", px: 2, py: 0.5, fontSize: "0.65rem", children: count }));
81
+ const startEditing = (item) => {
82
+ setEditingOrgId(item.orgId);
83
+ setEditValue(item.company_name);
84
+ setEditError("");
85
+ };
86
+ const cancelEditing = () => {
87
+ setEditingOrgId(null);
88
+ setEditValue("");
89
+ setEditError("");
90
+ };
91
+ const submitEditing = async (item) => {
92
+ const trimmed = editValue.trim();
93
+ if (!trimmed) {
94
+ setEditError(labels.emptyNameError);
95
+ return;
96
+ }
97
+ if (trimmed === item.company_name) {
98
+ cancelEditing();
99
+ return;
100
+ }
101
+ await (onEditOrganization === null || onEditOrganization === void 0 ? void 0 : onEditOrganization(item.orgId, trimmed));
102
+ setEditingOrgId(null);
103
+ setEditValue("");
104
+ setEditError("");
105
+ };
71
106
  const renderActiveCard = (item) => {
72
- var _a, _b, _c, _d, _e, _f;
107
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
73
108
  const isSwitching = switchingOrgIds.includes(item.orgId);
74
- const isProtected = item.defaultOrg === 1;
109
+ // Role name is a display value, not a permission — apps pass the real rule.
110
+ const canEdit = (_a = item.canRename) !== null && _a !== void 0 ? _a : item.roleName === "Super Admin";
111
+ const canProtect = !((_b = item.canDelete) !== null && _b !== void 0 ? _b : item.roleName === "Super Admin");
112
+ const isProtected = item.defaultOrg === 1 || canProtect;
113
+ const isEditingThis = canEdit && editingOrgId === item.orgId;
114
+ const isSavingThis = editingOrgIds.includes(item.orgId);
115
+ const roleLabel = (_c = item.roleName) === null || _c === void 0 ? void 0 : _c.trim();
116
+ const deleteButton = ((0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": labels.deleteOrganization, icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Trash2, { size: 12 }), size: "xs", variant: "ghost", borderRadius: "full", color: muted, isDisabled: isProtected, _hover: {
117
+ bg: (_e = (_d = colors === null || colors === void 0 ? void 0 : colors.red) === null || _d === void 0 ? void 0 : _d[50]) !== null && _e !== void 0 ? _e : "#FEF2F2",
118
+ color: (_g = (_f = colors === null || colors === void 0 ? void 0 : colors.red) === null || _f === void 0 ? void 0 : _f[600]) !== null && _g !== void 0 ? _g : "#DC2626",
119
+ }, onClick: () => onDeleteRequest
120
+ ? onDeleteRequest(item.orgId)
121
+ : setDeleteOrgId(item.orgId) }));
75
122
  return ((0, jsx_runtime_1.jsxs)(react_2.Box, { ...cardSx, p: 3, position: "relative", transition: "all 0.2s ease", _hover: {
76
- borderColor: (_b = (_a = colors === null || colors === void 0 ? void 0 : colors.primary) === null || _a === void 0 ? void 0 : _a[300]) !== null && _b !== void 0 ? _b : "#A5B4FC",
123
+ borderColor: (_j = (_h = colors === null || colors === void 0 ? void 0 : colors.primary) === null || _h === void 0 ? void 0 : _h[300]) !== null && _j !== void 0 ? _j : "#A5B4FC",
77
124
  boxShadow: "0 8px 24px rgba(16,24,40,0.10)",
78
125
  transform: "translateY(-3px)",
79
- }, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { justifyContent: "space-between", alignItems: "flex-start", mb: 2, children: [(0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: "36px", borderRadius: "lg", bg: primary50, color: primary600, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Building2, { size: 18 }) }), (0, jsx_runtime_1.jsx)(react_2.Box, { mr: "2rem", children: item.default === 1 ? ((0, jsx_runtime_1.jsxs)(react_2.Badge, { colorScheme: "green", borderRadius: "full", px: 2, py: 0.5, display: "flex", alignItems: "center", gap: 1, fontSize: "0.7rem", fontWeight: 600, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.CheckCircle2, { size: 12 }), labels.default] })) : isSwitching ? ((0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 2, color: primary500, children: [(0, jsx_runtime_1.jsx)(react_2.Spinner, { size: "sm" }), (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "xs", children: labels.settingDefault })] })) : ((0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 1, fontSize: "xs", color: primary600, fontWeight: 600, cursor: "pointer", _hover: { color: primary500, gap: 2 }, transition: "all 0.2s ease", onClick: () => onSetDefault === null || onSetDefault === void 0 ? void 0 : onSetDefault(item.orgId), children: [(0, jsx_runtime_1.jsx)(lucide_react_1.CheckCircle2, { size: 12 }), (0, jsx_runtime_1.jsx)(react_2.Text, { children: labels.setAsDefault })] })) })] }), (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "sm", fontWeight: 700, color: heading, noOfLines: 1, children: item.company_name }), (0, jsx_runtime_1.jsx)(react_2.Tooltip, { label: isProtected ? labels.protectedOrganization : labels.deleteOrganization, hasArrow: true, children: (0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": labels.deleteOrganization, icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Trash2, { size: 14 }), size: "xs", variant: "ghost", position: "absolute", top: 2, right: 2, borderRadius: "full", color: muted, isDisabled: isProtected, _hover: {
80
- bg: (_d = (_c = colors === null || colors === void 0 ? void 0 : colors.red) === null || _c === void 0 ? void 0 : _c[50]) !== null && _d !== void 0 ? _d : "#FEF2F2",
81
- color: (_f = (_e = colors === null || colors === void 0 ? void 0 : colors.red) === null || _e === void 0 ? void 0 : _e[600]) !== null && _f !== void 0 ? _f : "#DC2626",
82
- }, onClick: () => setDeleteOrgId(item.orgId) }) })] }, item.orgId));
126
+ }, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { justifyContent: "space-between", alignItems: "center", mb: 2, children: [(0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: "36px", borderRadius: "lg", bg: primary50, color: primary600, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Building2, { size: 18 }) }), (0, jsx_runtime_1.jsxs)(react_2.HStack, { spacing: 1, children: [item.default === 1 ? ((0, jsx_runtime_1.jsxs)(react_2.Badge, { colorScheme: "green", borderRadius: "full", px: 2, py: 0.5, display: "flex", alignItems: "center", gap: 1, fontSize: "0.7rem", fontWeight: 600, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.CheckCircle2, { size: 12 }), labels.default] })) : isSwitching ? ((0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 2, color: primary500, children: [(0, jsx_runtime_1.jsx)(react_2.Spinner, { size: "sm" }), (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "xs", children: labels.settingDefault })] })) : ((0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 1, fontSize: "xs", color: primary600, fontWeight: 600, cursor: "pointer", _hover: { color: primary500, gap: 2 }, transition: "all 0.2s ease", onClick: () => onSetDefault === null || onSetDefault === void 0 ? void 0 : onSetDefault(item.orgId), children: [(0, jsx_runtime_1.jsx)(lucide_react_1.CheckCircle2, { size: 12 }), (0, jsx_runtime_1.jsx)(react_2.Text, { children: labels.setAsDefault })] })), canEdit && ((0, jsx_runtime_1.jsx)(react_2.Tooltip, { label: labels.editOrganization, hasArrow: true, children: (0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": labels.editOrganization, icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Pencil, { size: 12 }), size: "xs", variant: "ghost", color: muted, borderRadius: "full", _hover: { color: primary600, bg: primary50 }, onClick: () => startEditing(item) }) })), (0, jsx_runtime_1.jsx)(react_2.Tooltip, { label: isProtected
127
+ ? ((_k = item.deleteDisabledReason) !== null && _k !== void 0 ? _k : labels.protectedOrganization)
128
+ : labels.deleteOrganization, hasArrow: true, children: isProtected ? ((0, jsx_runtime_1.jsx)(react_2.Box, { as: "span", display: "inline-flex", children: deleteButton })) : (deleteButton) })] })] }), isEditingThis ? ((0, jsx_runtime_1.jsxs)(react_2.Box, { children: [(0, jsx_runtime_1.jsxs)(react_2.HStack, { spacing: 1, children: [(0, jsx_runtime_1.jsx)(react_2.Input, { value: editValue, onChange: (e) => {
129
+ setEditValue(e.target.value);
130
+ if (editError)
131
+ setEditError("");
132
+ }, size: "sm", fontSize: "sm", fontWeight: 700, autoFocus: true, isDisabled: isSavingThis, onKeyDown: (e) => {
133
+ if (e.key === "Enter")
134
+ submitEditing(item);
135
+ if (e.key === "Escape")
136
+ cancelEditing();
137
+ } }), (0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": labels.save, icon: isSavingThis ? (0, jsx_runtime_1.jsx)(react_2.Spinner, { size: "xs" }) : (0, jsx_runtime_1.jsx)(lucide_react_1.Check, { size: 14 }), size: "xs", colorScheme: "green", isDisabled: isSavingThis, onClick: () => submitEditing(item), variant: "ghost" }), (0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": labels.cancel, icon: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { size: 14 }), size: "xs", variant: "ghost", isDisabled: isSavingThis, onClick: cancelEditing })] }), editError && ((0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "0.7rem", color: (_m = (_l = colors === null || colors === void 0 ? void 0 : colors.red) === null || _l === void 0 ? void 0 : _l[600]) !== null && _m !== void 0 ? _m : "#DC2626", mt: 1, children: editError }))] })) : ((0, jsx_runtime_1.jsxs)(react_2.Box, { children: [(0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "sm", fontWeight: 700, color: heading, noOfLines: 1, children: item.company_name }), (item.isOwner || roleLabel) && ((0, jsx_runtime_1.jsxs)(react_2.HStack, { spacing: 1, mt: 1, children: [item.isOwner && ((0, jsx_runtime_1.jsx)(Tag_1.default, { label: labels.owner, icon: lucide_react_1.Crown, colorScheme: "primary", variant: "subtle", size: "xs" })), roleLabel && ((0, jsx_runtime_1.jsx)(Tag_1.default, { label: roleLabel, colorScheme: "gray", variant: "subtle", size: "xs" }))] }))] }))] }, item.orgId));
83
138
  };
84
139
  const renderInvitedCard = (item) => {
85
140
  var _a, _b, _c, _d;
@@ -100,7 +155,9 @@ const OrganizationDetails = ({ activeOrganizations, invitedOrganizations, isLoad
100
155
  width: "100%",
101
156
  };
102
157
  const hasOrganizations = activeOrganizations.length > 0 || invitedOrganizations.length > 0;
103
- return ((0, jsx_runtime_1.jsxs)(react_2.Box, { backgroundColor: pageBg, minHeight: "100%", p: { base: 2, md: 3 }, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { ...cardSx, px: 3, py: 2.5, mb: 3, alignItems: "center", justifyContent: "space-between", flexWrap: "wrap", gap: 3, bgGradient: `linear(135deg, ${primary50} 0%, ${primary100} 100%)`, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { alignItems: "center", gap: 3, children: [onBack && ((0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": "Go back", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.ArrowLeft, { size: 18 }), variant: "ghost", size: "sm", color: subtle, onClick: onBack })), (0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: "36px", borderRadius: "full", bg: primary500, color: "white", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Building2, { size: 18 }) }), (0, jsx_runtime_1.jsxs)(react_2.Box, { children: [(0, jsx_runtime_1.jsxs)(react_2.HStack, { spacing: 2, children: [(0, jsx_runtime_1.jsx)(react_2.Heading, { size: "sm", color: heading, fontWeight: 700, children: userName ? `${labels.greeting.replace(/User!?/, "")}${userName}!`.trim() : labels.greeting }), (0, jsx_runtime_1.jsx)(react_2.Avatar, { size: "xs", name: userName, src: userAvatarUrl })] }), (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "xs", color: subtle, mt: 0.5, children: labels.manageSubtitle })] })] }), (0, jsx_runtime_1.jsx)(Button_1.default, { label: labels.createNewOrganization, onClick: () => setCreateOpen(true), leftIcon: (0, jsx_runtime_1.jsx)(lucide_react_1.Plus, { size: 16 }), colorScheme: "primary", size: "sm" })] }), isLoading ? ((0, jsx_runtime_1.jsx)(react_2.Box, { ...gridSx, children: Array.from({ length: 6 }).map((_, idx) => ((0, jsx_runtime_1.jsxs)(react_2.Box, { ...cardSx, p: 3, children: [(0, jsx_runtime_1.jsx)(react_2.Skeleton, { boxSize: "36px", borderRadius: "lg", mb: 2 }), (0, jsx_runtime_1.jsx)(react_2.SkeletonText, { noOfLines: 2, spacing: 2 })] }, idx))) })) : !hasOrganizations ? ((0, jsx_runtime_1.jsx)(EmptyState_1.default, { icon: lucide_react_1.Building2, title: labels.noOrganizationsTitle, description: labels.noOrganizationsDescription, minH: "40vh", action: (0, jsx_runtime_1.jsx)(Button_1.default, { label: labels.createOrganization, onClick: () => setCreateOpen(true), leftIcon: (0, jsx_runtime_1.jsx)(lucide_react_1.Plus, { size: 16 }), colorScheme: "primary", size: "sm" }) })) : ((0, jsx_runtime_1.jsxs)(react_2.VStack, { align: "stretch", spacing: 4, children: [activeOrganizations.length > 0 && ((0, jsx_runtime_1.jsxs)(react_2.Box, { children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 2, mb: 2, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Users, { size: 16, color: primary500 }), (0, jsx_runtime_1.jsx)(react_2.Heading, { size: "sm", color: heading, fontWeight: 600, children: labels.activeOrganizations }), sectionBadge(activeOrganizations.length, "blue")] }), (0, jsx_runtime_1.jsx)(react_2.Box, { ...gridSx, children: activeOrganizations.map(renderActiveCard) })] })), invitedOrganizations.length > 0 && ((0, jsx_runtime_1.jsxs)(react_2.Box, { children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 2, mb: 2, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Mail, { size: 16, color: (_0 = (_z = colors === null || colors === void 0 ? void 0 : colors.yellow) === null || _z === void 0 ? void 0 : _z[500]) !== null && _0 !== void 0 ? _0 : "#EAB308" }), (0, jsx_runtime_1.jsx)(react_2.Heading, { size: "sm", color: heading, fontWeight: 600, children: labels.invitedOrganizations }), sectionBadge(invitedOrganizations.length, "yellow")] }), (0, jsx_runtime_1.jsx)(react_2.Box, { ...gridSx, children: invitedOrganizations.map(renderInvitedCard) })] }))] })), footerSlot, (0, jsx_runtime_1.jsx)(CreateOrgModal_1.default, { isOpen: isCreateOpen, onClose: () => setCreateOpen(false), isLoading: isCreating, onSubmit: async (values) => {
158
+ return ((0, jsx_runtime_1.jsxs)(react_2.Box, { backgroundColor: pageBg, minHeight: "100%", p: { base: 2, md: 3 }, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { ...cardSx, px: 3, py: 2.5, mb: 3, alignItems: "center", justifyContent: "space-between", flexWrap: "wrap", gap: 3, bgGradient: `linear(135deg, ${primary50} 0%, ${primary100} 100%)`, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { alignItems: "center", gap: 3, children: [onBack && ((0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": "Go back", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.ArrowLeft, { size: 18 }), variant: "ghost", size: "sm", color: subtle, onClick: onBack })), (0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: "36px", borderRadius: "full", bg: primary500, color: "white", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Building2, { size: 18 }) }), (0, jsx_runtime_1.jsxs)(react_2.Box, { children: [(0, jsx_runtime_1.jsxs)(react_2.HStack, { spacing: 2, children: [(0, jsx_runtime_1.jsx)(react_2.Heading, { size: "sm", color: heading, fontWeight: 700, children: userName
159
+ ? `${labels.greeting.replace(/User!?/, "")}${userName}!`.trim()
160
+ : labels.greeting }), (0, jsx_runtime_1.jsx)(react_2.Avatar, { size: "xs", name: userName, src: userAvatarUrl })] }), (0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "xs", color: subtle, mt: 0.5, children: labels.manageSubtitle })] })] }), (0, jsx_runtime_1.jsx)(Button_1.default, { label: labels.createNewOrganization, onClick: () => setCreateOpen(true), leftIcon: (0, jsx_runtime_1.jsx)(lucide_react_1.Plus, { size: 16 }), colorScheme: "primary", size: "sm" })] }), isLoading ? ((0, jsx_runtime_1.jsx)(react_2.Box, { ...gridSx, children: Array.from({ length: 6 }).map((_, idx) => ((0, jsx_runtime_1.jsxs)(react_2.Box, { ...cardSx, p: 3, children: [(0, jsx_runtime_1.jsx)(react_2.Skeleton, { boxSize: "36px", borderRadius: "lg", mb: 2 }), (0, jsx_runtime_1.jsx)(react_2.SkeletonText, { noOfLines: 2, spacing: 2 })] }, idx))) })) : !hasOrganizations ? ((0, jsx_runtime_1.jsx)(EmptyState_1.default, { icon: lucide_react_1.Building2, title: labels.noOrganizationsTitle, description: labels.noOrganizationsDescription, minH: "40vh", action: (0, jsx_runtime_1.jsx)(Button_1.default, { label: labels.createOrganization, onClick: () => setCreateOpen(true), leftIcon: (0, jsx_runtime_1.jsx)(lucide_react_1.Plus, { size: 16 }), colorScheme: "primary", size: "sm" }) })) : ((0, jsx_runtime_1.jsxs)(react_2.VStack, { align: "stretch", spacing: 4, children: [activeOrganizations.length > 0 && ((0, jsx_runtime_1.jsxs)(react_2.Box, { children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 2, mb: 2, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Users, { size: 16, color: primary500 }), (0, jsx_runtime_1.jsx)(react_2.Heading, { size: "sm", color: heading, fontWeight: 600, children: labels.activeOrganizations }), sectionBadge(activeOrganizations.length, "blue")] }), (0, jsx_runtime_1.jsx)(react_2.Box, { ...gridSx, children: activeOrganizations.map(renderActiveCard) })] })), invitedOrganizations.length > 0 && ((0, jsx_runtime_1.jsxs)(react_2.Box, { children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 2, mb: 2, children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Mail, { size: 16, color: (_0 = (_z = colors === null || colors === void 0 ? void 0 : colors.yellow) === null || _z === void 0 ? void 0 : _z[500]) !== null && _0 !== void 0 ? _0 : "#EAB308" }), (0, jsx_runtime_1.jsx)(react_2.Heading, { size: "sm", color: heading, fontWeight: 600, children: labels.invitedOrganizations }), sectionBadge(invitedOrganizations.length, "yellow")] }), (0, jsx_runtime_1.jsx)(react_2.Box, { ...gridSx, children: invitedOrganizations.map(renderInvitedCard) })] }))] })), footerSlot, (0, jsx_runtime_1.jsx)(CreateOrgModal_1.default, { isOpen: isCreateOpen, onClose: () => setCreateOpen(false), isLoading: isCreating, onSubmit: async (values) => {
104
161
  await (onCreateOrganization === null || onCreateOrganization === void 0 ? void 0 : onCreateOrganization(values));
105
162
  setCreateOpen(false);
106
163
  }, labels: labels }), (0, jsx_runtime_1.jsx)(DeleteOrgModal_1.default, { isOpen: deleteOrgId !== null, onClose: () => setDeleteOrgId(null), onConfirm: async () => {