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

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 (380) 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/NavigationBar/NavigationBar.d.ts.map +1 -1
  26. package/dist/Components/NavigationBar/NavigationBar.js +10 -6
  27. package/dist/Components/OrgSwitcher/OrgSwitcher.d.ts.map +1 -1
  28. package/dist/Components/OrgSwitcher/OrgSwitcher.js +22 -3
  29. package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +1 -0
  30. package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts.map +1 -1
  31. package/dist/Components/OrgSwitcher/OrgSwitcherProps.js +3 -3
  32. package/dist/Components/OrganizationDetails/CreateOrgModal.js +6 -4
  33. package/dist/Components/OrganizationDetails/OrganizationDetails.d.ts.map +1 -1
  34. package/dist/Components/OrganizationDetails/OrganizationDetails.js +55 -7
  35. package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts +24 -14
  36. package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts.map +1 -1
  37. package/dist/Components/PlanPill/PlanPill.d.ts +5 -0
  38. package/dist/Components/PlanPill/PlanPill.d.ts.map +1 -0
  39. package/dist/Components/PlanPill/PlanPill.js +41 -0
  40. package/dist/Components/PlanPill/PlanPillProps.d.ts +28 -0
  41. package/dist/Components/PlanPill/PlanPillProps.d.ts.map +1 -0
  42. package/dist/Components/PlanPill/PlanPillProps.js +2 -0
  43. package/dist/Components/Search/Search.d.ts.map +1 -1
  44. package/dist/Components/Search/Search.js +4 -2
  45. package/dist/Components/Select/Select.styles.d.ts.map +1 -1
  46. package/dist/Components/Select/Select.styles.js +29 -20
  47. package/dist/Components/SelectSearch/SelectSearch.js +1 -1
  48. package/dist/Components/SelectV2/SelectV2.d.ts +3 -0
  49. package/dist/Components/SelectV2/SelectV2.d.ts.map +1 -0
  50. package/dist/Components/SelectV2/SelectV2.js +185 -0
  51. package/dist/Components/SelectV2/SelectV2Props.d.ts +67 -0
  52. package/dist/Components/SelectV2/SelectV2Props.d.ts.map +1 -0
  53. package/dist/Components/SelectV2/SelectV2Props.js +2 -0
  54. package/dist/Components/SideBar/SecondaryBar.d.ts.map +1 -1
  55. package/dist/Components/SideBar/SecondaryBar.js +10 -2
  56. package/dist/Components/SideBar/SideBar.js +2 -2
  57. package/dist/Components/SideBar/components/MenuItemBox.d.ts.map +1 -1
  58. package/dist/Components/SideBar/components/MenuItemBox.js +7 -6
  59. package/dist/Components/Table/components/tableRowHoverStyle.d.ts +9 -8
  60. package/dist/Components/Table/components/tableRowHoverStyle.d.ts.map +1 -1
  61. package/dist/Components/Table/components/tableRowHoverStyle.js +12 -12
  62. package/dist/Components/Table/settings/ManageColumns.js +2 -2
  63. package/dist/Components/UpgradeButton/UpgradeButton.d.ts.map +1 -1
  64. package/dist/Components/UpgradeButton/UpgradeButton.js +25 -7
  65. package/dist/Components/UserDetails/UserDetails.d.ts.map +1 -1
  66. package/dist/Components/UserDetails/UserDetails.js +5 -2
  67. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +2 -1
  68. package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts +2 -2
  69. package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts.map +1 -1
  70. package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +25 -4
  71. package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +18 -0
  72. package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts.map +1 -1
  73. package/dist/Theme/chakra/Avatar.styles.d.ts +33 -0
  74. package/dist/Theme/chakra/Avatar.styles.d.ts.map +1 -0
  75. package/dist/Theme/chakra/Avatar.styles.js +28 -0
  76. package/dist/Theme/chakra/Drawer.styles.d.ts +32 -0
  77. package/dist/Theme/chakra/Drawer.styles.d.ts.map +1 -0
  78. package/dist/Theme/chakra/Drawer.styles.js +26 -0
  79. package/dist/Theme/chakra/Menu.styles.d.ts +70 -0
  80. package/dist/Theme/chakra/Menu.styles.d.ts.map +1 -0
  81. package/dist/Theme/chakra/Menu.styles.js +50 -0
  82. package/dist/Theme/chakra/Modal.styles.d.ts +32 -0
  83. package/dist/Theme/chakra/Modal.styles.d.ts.map +1 -0
  84. package/dist/Theme/chakra/Modal.styles.js +26 -0
  85. package/dist/Theme/chakra/Popover.styles.d.ts +37 -0
  86. package/dist/Theme/chakra/Popover.styles.d.ts.map +1 -0
  87. package/dist/Theme/chakra/Popover.styles.js +30 -0
  88. package/dist/Theme/chakra/Slider.styles.d.ts +31 -0
  89. package/dist/Theme/chakra/Slider.styles.d.ts.map +1 -0
  90. package/dist/Theme/chakra/Slider.styles.js +25 -0
  91. package/dist/Theme/chakra/Switch.styles.d.ts +31 -0
  92. package/dist/Theme/chakra/Switch.styles.d.ts.map +1 -0
  93. package/dist/Theme/chakra/Switch.styles.js +24 -0
  94. package/dist/Theme/chakra/Tabs.styles.d.ts +43 -0
  95. package/dist/Theme/chakra/Tabs.styles.d.ts.map +1 -0
  96. package/dist/Theme/chakra/Tabs.styles.js +41 -0
  97. package/dist/Theme/chakra/componentStyles.d.ts +230 -1
  98. package/dist/Theme/chakra/componentStyles.d.ts.map +1 -1
  99. package/dist/Theme/chakra/componentStyles.js +136 -0
  100. package/dist/Theme/chakra/createBrandTheme.d.ts.map +1 -1
  101. package/dist/Theme/chakra/createBrandTheme.js +47 -0
  102. package/dist/Theme/provider/PixelizeThemeProvider.d.ts +11 -1
  103. package/dist/Theme/provider/PixelizeThemeProvider.d.ts.map +1 -1
  104. package/dist/Theme/provider/PixelizeThemeProvider.js +35 -2
  105. package/dist/Theme/provider/ThemeSwitcher.d.ts.map +1 -1
  106. package/dist/Theme/provider/ThemeSwitcher.js +23 -11
  107. package/dist/Theme/tokens/brands/index.d.ts.map +1 -1
  108. package/dist/Theme/tokens/brands/index.js +20 -18
  109. package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts.map +1 -1
  110. package/dist/Theme/tokens/brands/zinc/palette.dark.js +4 -2
  111. package/dist/Theme/tokens/builders/outlineRung.d.ts +35 -0
  112. package/dist/Theme/tokens/builders/outlineRung.d.ts.map +1 -0
  113. package/dist/Theme/tokens/builders/outlineRung.js +69 -0
  114. package/dist/Theme/tokens/builders/statusTone.d.ts +35 -0
  115. package/dist/Theme/tokens/builders/statusTone.d.ts.map +1 -0
  116. package/dist/Theme/tokens/builders/statusTone.js +63 -0
  117. package/dist/Utils/planExpiry.d.ts +19 -0
  118. package/dist/Utils/planExpiry.d.ts.map +1 -0
  119. package/dist/Utils/planExpiry.js +61 -0
  120. package/dist/index.d.ts +9 -1
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +23 -3
  123. package/package.json +5 -1
  124. package/.claude/settings.local.json +0 -51
  125. package/.cursor/TASK-SETUP.md +0 -43
  126. package/.cursor/agents/be-impl.md +0 -37
  127. package/.cursor/agents/fe-impl.md +0 -39
  128. package/.cursor/agents/task-plan.md +0 -56
  129. package/.cursor/agents/test-create.md +0 -31
  130. package/.cursor/agents/test-exec.md +0 -26
  131. package/.cursor/hooks/task-hint.env +0 -1
  132. package/.cursor/hooks/task-skill-nudge.sh +0 -71
  133. package/.cursor/hooks/task-slash-guard.sh +0 -31
  134. package/.cursor/hooks.json +0 -13
  135. package/.cursor/modules/account-management/MODULE.md +0 -34
  136. package/.cursor/modules/buttons/MODULE.md +0 -47
  137. package/.cursor/modules/cards/MODULE.md +0 -55
  138. package/.cursor/modules/charts/MODULE.md +0 -40
  139. package/.cursor/modules/common/MODULE.md +0 -36
  140. package/.cursor/modules/contact-auth/MODULE.md +0 -19
  141. package/.cursor/modules/data-display/MODULE.md +0 -42
  142. package/.cursor/modules/feedback/MODULE.md +0 -32
  143. package/.cursor/modules/form/MODULE.md +0 -13
  144. package/.cursor/modules/inputs-basic/MODULE.md +0 -42
  145. package/.cursor/modules/inputs-date-file/MODULE.md +0 -56
  146. package/.cursor/modules/inputs-select/MODULE.md +0 -27
  147. package/.cursor/modules/inputs-toggle/MODULE.md +0 -18
  148. package/.cursor/modules/kanban/MODULE.md +0 -22
  149. package/.cursor/modules/layout-navigation/MODULE.md +0 -269
  150. package/.cursor/modules/overlays/MODULE.md +0 -69
  151. package/.cursor/modules/playground/MODULE.md +0 -28
  152. package/.cursor/modules/table/MODULE.md +0 -78
  153. package/.cursor/modules/theme/MODULE.md +0 -314
  154. package/.cursor/modules/types-exports/MODULE.md +0 -17
  155. package/.cursor/modules/utility-ui/MODULE.md +0 -50
  156. package/.cursor/modules/utils-hooks/MODULE.md +0 -35
  157. package/.cursor/pixelize-task-statusline.sh +0 -64
  158. package/.cursor/plans/blocked/.gitkeep +0 -0
  159. package/.cursor/plans/current.md +0 -12
  160. package/.cursor/plans/current.theme-tokens-dark-mode.md +0 -77
  161. package/.cursor/plans/current.theme-tokens-dark.md +0 -155
  162. package/.cursor/plans/done/.gitkeep +0 -0
  163. package/.cursor/rules +0 -31
  164. package/.cursor/skills/task/SKILL.md +0 -167
  165. package/CLAUDE.md +0 -148
  166. package/__mocks__/styleMock.js +0 -8
  167. package/coverage/clover.xml +0 -405
  168. package/coverage/coverage-final.json +0 -16
  169. package/coverage/coverage-summary.json +0 -50
  170. package/coverage/lcov-report/Button/Button.tsx.html +0 -244
  171. package/coverage/lcov-report/Button/index.html +0 -116
  172. package/coverage/lcov-report/Checkbox/Checkbox.tsx.html +0 -433
  173. package/coverage/lcov-report/Checkbox/index.html +0 -116
  174. package/coverage/lcov-report/Common/ErrorMessage.tsx.html +0 -148
  175. package/coverage/lcov-report/Common/FormLabel.tsx.html +0 -331
  176. package/coverage/lcov-report/Common/HelperText.tsx.html +0 -124
  177. package/coverage/lcov-report/Common/index.html +0 -146
  178. package/coverage/lcov-report/Components/Button/Button.tsx.html +0 -244
  179. package/coverage/lcov-report/Components/Button/index.html +0 -116
  180. package/coverage/lcov-report/Components/Checkbox/Checkbox.tsx.html +0 -433
  181. package/coverage/lcov-report/Components/Checkbox/index.html +0 -116
  182. package/coverage/lcov-report/Components/Common/ErrorMessage.tsx.html +0 -148
  183. package/coverage/lcov-report/Components/Common/FormLabel.tsx.html +0 -331
  184. package/coverage/lcov-report/Components/Common/HelperText.tsx.html +0 -124
  185. package/coverage/lcov-report/Components/Common/index.html +0 -146
  186. package/coverage/lcov-report/Components/CustomModulesTable/CustomModulesTable.tsx.html +0 -712
  187. package/coverage/lcov-report/Components/CustomModulesTable/DeleteModuleModal.tsx.html +0 -343
  188. package/coverage/lcov-report/Components/CustomModulesTable/EditModuleModal.tsx.html +0 -313
  189. package/coverage/lcov-report/Components/CustomModulesTable/index.html +0 -146
  190. package/coverage/lcov-report/Components/Divider/Divider.tsx.html +0 -133
  191. package/coverage/lcov-report/Components/Divider/index.html +0 -116
  192. package/coverage/lcov-report/Components/Dropdown/DropDown.tsx.html +0 -994
  193. package/coverage/lcov-report/Components/Dropdown/index.html +0 -116
  194. package/coverage/lcov-report/Components/EmptyState/EmptyState.tsx.html +0 -466
  195. package/coverage/lcov-report/Components/EmptyState/index.html +0 -116
  196. package/coverage/lcov-report/Components/Header/HeaderActions.tsx.html +0 -373
  197. package/coverage/lcov-report/Components/Header/index.html +0 -116
  198. package/coverage/lcov-report/Components/Input/TextInput.tsx.html +0 -487
  199. package/coverage/lcov-report/Components/Input/index.html +0 -116
  200. package/coverage/lcov-report/Components/Input/textInputIconSize.ts.html +0 -205
  201. package/coverage/lcov-report/Components/KanbanBoard/AccountCard.tsx.html +0 -547
  202. package/coverage/lcov-report/Components/KanbanBoard/AccountRow.tsx.html +0 -190
  203. package/coverage/lcov-report/Components/KanbanBoard/KanbanActions/KanbanActions.tsx.html +0 -247
  204. package/coverage/lcov-report/Components/KanbanBoard/KanbanActions/index.html +0 -116
  205. package/coverage/lcov-report/Components/KanbanBoard/KanbanBoard.tsx.html +0 -3598
  206. package/coverage/lcov-report/Components/KanbanBoard/MeasuredItem.tsx.html +0 -283
  207. package/coverage/lcov-report/Components/KanbanBoard/index.html +0 -161
  208. package/coverage/lcov-report/Components/OrganizationDetails/CreateOrgModal.tsx.html +0 -511
  209. package/coverage/lcov-report/Components/OrganizationDetails/DeleteOrgModal.tsx.html +0 -334
  210. package/coverage/lcov-report/Components/OrganizationDetails/OrganizationDetails.tsx.html +0 -1519
  211. package/coverage/lcov-report/Components/OrganizationDetails/index.html +0 -146
  212. package/coverage/lcov-report/Components/RolesPermission/DeleteRoleModal.tsx.html +0 -328
  213. package/coverage/lcov-report/Components/RolesPermission/RolesPermission.tsx.html +0 -1732
  214. package/coverage/lcov-report/Components/RolesPermission/index.html +0 -131
  215. package/coverage/lcov-report/Components/SearchSelect/SearchSelect.tsx.html +0 -2575
  216. package/coverage/lcov-report/Components/SearchSelect/SelectTruncatedLabel.tsx.html +0 -202
  217. package/coverage/lcov-report/Components/SearchSelect/index.html +0 -146
  218. package/coverage/lcov-report/Components/SearchSelect/searchSelectSize.ts.html +0 -496
  219. package/coverage/lcov-report/Components/Select/Select.tsx.html +0 -361
  220. package/coverage/lcov-report/Components/Select/index.html +0 -116
  221. package/coverage/lcov-report/Components/SideBar/components/OtherApps.tsx.html +0 -562
  222. package/coverage/lcov-report/Components/SideBar/components/OverflowTooltipText.tsx.html +0 -346
  223. package/coverage/lcov-report/Components/SideBar/components/index.html +0 -116
  224. package/coverage/lcov-report/Components/SignInActivityTable/SignInActivityTable.tsx.html +0 -490
  225. package/coverage/lcov-report/Components/SignInActivityTable/index.html +0 -116
  226. package/coverage/lcov-report/Components/Table/components/TableActions.tsx.html +0 -595
  227. package/coverage/lcov-report/Components/Table/components/TableBody.tsx.html +0 -2212
  228. package/coverage/lcov-report/Components/Table/components/TableGroupRow.tsx.html +0 -358
  229. package/coverage/lcov-report/Components/Table/components/TableLoading.tsx.html +0 -358
  230. package/coverage/lcov-report/Components/Table/components/index.html +0 -161
  231. package/coverage/lcov-report/Components/Table/settings/ManageColumns.tsx.html +0 -856
  232. package/coverage/lcov-report/Components/Table/settings/index.html +0 -116
  233. package/coverage/lcov-report/Components/Tag/Tag.styles.tsx.html +0 -331
  234. package/coverage/lcov-report/Components/Tag/Tag.tsx.html +0 -256
  235. package/coverage/lcov-report/Components/Tag/index.html +0 -131
  236. package/coverage/lcov-report/Components/ToolTip/ToolTip.tsx.html +0 -286
  237. package/coverage/lcov-report/Components/ToolTip/index.html +0 -116
  238. package/coverage/lcov-report/Components/UserDetails/AddUserModal.tsx.html +0 -709
  239. package/coverage/lcov-report/Components/UserDetails/ChangeRoleModal.tsx.html +0 -505
  240. package/coverage/lcov-report/Components/UserDetails/DeactivateConfirmModal.tsx.html +0 -379
  241. package/coverage/lcov-report/Components/UserDetails/UserDetails.tsx.html +0 -1900
  242. package/coverage/lcov-report/Components/UserDetails/index.html +0 -161
  243. package/coverage/lcov-report/EmptyState/EmptyState.tsx.html +0 -466
  244. package/coverage/lcov-report/EmptyState/index.html +0 -116
  245. package/coverage/lcov-report/Hooks/index.html +0 -116
  246. package/coverage/lcov-report/Hooks/usePreferences.ts.html +0 -421
  247. package/coverage/lcov-report/Input/TextInput.tsx.html +0 -487
  248. package/coverage/lcov-report/Input/index.html +0 -131
  249. package/coverage/lcov-report/Input/textInputIconSize.ts.html +0 -205
  250. package/coverage/lcov-report/KanbanBoard.tsx.html +0 -3481
  251. package/coverage/lcov-report/OrganizationDetails/CreateOrgModal.tsx.html +0 -511
  252. package/coverage/lcov-report/OrganizationDetails/DeleteOrgModal.tsx.html +0 -334
  253. package/coverage/lcov-report/OrganizationDetails/OrganizationDetails.tsx.html +0 -1519
  254. package/coverage/lcov-report/OrganizationDetails/index.html +0 -146
  255. package/coverage/lcov-report/RolesPermission/DeleteRoleModal.tsx.html +0 -328
  256. package/coverage/lcov-report/RolesPermission/RolesPermission.tsx.html +0 -1732
  257. package/coverage/lcov-report/RolesPermission/index.html +0 -116
  258. package/coverage/lcov-report/SearchSelect/SearchSelect.tsx.html +0 -2575
  259. package/coverage/lcov-report/SearchSelect/SelectTruncatedLabel.tsx.html +0 -202
  260. package/coverage/lcov-report/SearchSelect/index.html +0 -146
  261. package/coverage/lcov-report/SearchSelect/searchSelectSize.ts.html +0 -496
  262. package/coverage/lcov-report/Table/CompactSelect.tsx.html +0 -379
  263. package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +0 -514
  264. package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +0 -373
  265. package/coverage/lcov-report/Table/Components/Pagination.tsx.html +0 -574
  266. package/coverage/lcov-report/Table/Components/TableActions.tsx.html +0 -574
  267. package/coverage/lcov-report/Table/Components/TableBody.tsx.html +0 -1027
  268. package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +0 -397
  269. package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +0 -1060
  270. package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +0 -361
  271. package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +0 -337
  272. package/coverage/lcov-report/Table/Components/index.html +0 -266
  273. package/coverage/lcov-report/Table/Components/useDebounce.ts.html +0 -178
  274. package/coverage/lcov-report/Table/Components/useTable.ts.html +0 -778
  275. package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +0 -1810
  276. package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +0 -178
  277. package/coverage/lcov-report/Table/Table.tsx.html +0 -1567
  278. package/coverage/lcov-report/Table/TableProps.tsx.html +0 -658
  279. package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +0 -619
  280. package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +0 -229
  281. package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +0 -532
  282. package/coverage/lcov-report/Table/TableSettings/index.html +0 -146
  283. package/coverage/lcov-report/Table/TableToDo.tsx.html +0 -973
  284. package/coverage/lcov-report/Table/TextOperationControls.tsx.html +0 -271
  285. package/coverage/lcov-report/Table/filterTypes.ts.html +0 -97
  286. package/coverage/lcov-report/Table/index.html +0 -176
  287. package/coverage/lcov-report/Table/settings/ManageColumns.tsx.html +0 -856
  288. package/coverage/lcov-report/Table/settings/index.html +0 -116
  289. package/coverage/lcov-report/Tag/Tag.tsx.html +0 -256
  290. package/coverage/lcov-report/Tag/index.html +0 -116
  291. package/coverage/lcov-report/Theme/buildBrandTokens.ts.html +0 -175
  292. package/coverage/lcov-report/Theme/chartColorsFromTheme.ts.html +0 -214
  293. package/coverage/lcov-report/Theme/index.html +0 -131
  294. package/coverage/lcov-report/Theme/useCustomTheme.ts.html +0 -100
  295. package/coverage/lcov-report/ToolTip/ToolTip.tsx.html +0 -286
  296. package/coverage/lcov-report/ToolTip/index.html +0 -116
  297. package/coverage/lcov-report/UserDetails/AddUserModal.tsx.html +0 -709
  298. package/coverage/lcov-report/UserDetails/ChangeRoleModal.tsx.html +0 -505
  299. package/coverage/lcov-report/UserDetails/index.html +0 -116
  300. package/coverage/lcov-report/Utils/functions.ts.html +0 -106
  301. package/coverage/lcov-report/Utils/index.html +0 -116
  302. package/coverage/lcov-report/Utils/table.ts.html +0 -1189
  303. package/coverage/lcov-report/base.css +0 -224
  304. package/coverage/lcov-report/block-navigation.js +0 -87
  305. package/coverage/lcov-report/favicon.png +0 -0
  306. package/coverage/lcov-report/index.html +0 -251
  307. package/coverage/lcov-report/prettify.css +0 -1
  308. package/coverage/lcov-report/prettify.js +0 -2
  309. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  310. package/coverage/lcov-report/sorter.js +0 -210
  311. package/coverage/lcov.info +0 -981
  312. package/dist/Theme/Dark/theme.d.ts +0 -3
  313. package/dist/Theme/Dark/theme.d.ts.map +0 -1
  314. package/dist/Theme/Dark/theme.js +0 -277
  315. package/dist/Theme/Default/palette.d.ts +0 -375
  316. package/dist/Theme/Default/palette.d.ts.map +0 -1
  317. package/dist/Theme/Default/palette.js +0 -306
  318. package/dist/Theme/Default/theme.d.ts +0 -3
  319. package/dist/Theme/Default/theme.d.ts.map +0 -1
  320. package/dist/Theme/Default/theme.js +0 -19
  321. package/dist/Theme/Emerald/palette.d.ts +0 -375
  322. package/dist/Theme/Emerald/palette.d.ts.map +0 -1
  323. package/dist/Theme/Emerald/palette.js +0 -125
  324. package/dist/Theme/Emerald/theme.d.ts +0 -3
  325. package/dist/Theme/Emerald/theme.d.ts.map +0 -1
  326. package/dist/Theme/Emerald/theme.js +0 -19
  327. package/dist/Theme/Meadow/palette.d.ts +0 -375
  328. package/dist/Theme/Meadow/palette.d.ts.map +0 -1
  329. package/dist/Theme/Meadow/palette.js +0 -123
  330. package/dist/Theme/Meadow/theme.d.ts +0 -3
  331. package/dist/Theme/Meadow/theme.d.ts.map +0 -1
  332. package/dist/Theme/Meadow/theme.js +0 -19
  333. package/dist/Theme/Radiant/palette.d.ts +0 -375
  334. package/dist/Theme/Radiant/palette.d.ts.map +0 -1
  335. package/dist/Theme/Radiant/palette.js +0 -125
  336. package/dist/Theme/Radiant/theme.d.ts +0 -3
  337. package/dist/Theme/Radiant/theme.d.ts.map +0 -1
  338. package/dist/Theme/Radiant/theme.js +0 -19
  339. package/dist/Theme/Rosewood/palette.d.ts +0 -375
  340. package/dist/Theme/Rosewood/palette.d.ts.map +0 -1
  341. package/dist/Theme/Rosewood/palette.js +0 -125
  342. package/dist/Theme/Rosewood/theme.d.ts +0 -3
  343. package/dist/Theme/Rosewood/theme.d.ts.map +0 -1
  344. package/dist/Theme/Rosewood/theme.js +0 -19
  345. package/dist/Theme/Skyline/palette.d.ts +0 -375
  346. package/dist/Theme/Skyline/palette.d.ts.map +0 -1
  347. package/dist/Theme/Skyline/palette.js +0 -123
  348. package/dist/Theme/Skyline/theme.d.ts +0 -3
  349. package/dist/Theme/Skyline/theme.d.ts.map +0 -1
  350. package/dist/Theme/Skyline/theme.js +0 -19
  351. package/dist/Theme/Slate/palette.d.ts +0 -375
  352. package/dist/Theme/Slate/palette.d.ts.map +0 -1
  353. package/dist/Theme/Slate/palette.js +0 -123
  354. package/dist/Theme/Slate/theme.d.ts +0 -3
  355. package/dist/Theme/Slate/theme.d.ts.map +0 -1
  356. package/dist/Theme/Slate/theme.js +0 -19
  357. package/dist/Theme/buildBrandTokens.d.ts +0 -16
  358. package/dist/Theme/buildBrandTokens.d.ts.map +0 -1
  359. package/dist/Theme/buildBrandTokens.js +0 -33
  360. package/dist/Theme/chartColorsFromTheme.d.ts +0 -19
  361. package/dist/Theme/chartColorsFromTheme.d.ts.map +0 -1
  362. package/dist/Theme/chartColorsFromTheme.js +0 -34
  363. package/dist/Theme/common.d.ts +0 -167
  364. package/dist/Theme/common.d.ts.map +0 -1
  365. package/dist/Theme/common.js +0 -112
  366. package/dist/Theme/componentStyles.d.ts +0 -10
  367. package/dist/Theme/componentStyles.d.ts.map +0 -1
  368. package/dist/Theme/componentStyles.js +0 -19
  369. package/dist/Theme/fonts.d.ts +0 -37
  370. package/dist/Theme/fonts.d.ts.map +0 -1
  371. package/dist/Theme/fonts.js +0 -41
  372. package/dist/Theme/space.d.ts +0 -34
  373. package/dist/Theme/space.d.ts.map +0 -1
  374. package/dist/Theme/space.js +0 -35
  375. package/dist/Theme/theme.d.ts +0 -3
  376. package/dist/Theme/theme.d.ts.map +0 -1
  377. package/dist/Theme/theme.js +0 -12
  378. package/eslint.config.js +0 -48
  379. package/index.html +0 -13
  380. package/vite.config.ts +0 -13
@@ -1,269 +0,0 @@
1
- # Layout & Navigation
2
-
3
- ## Purpose
4
-
5
- Accordion, Breadcrumbs, NavigationBar, SideBar, Header, Drawer, FilterSidebar,
6
- WorkspaceWindow.
7
-
8
- ## Key paths
9
-
10
- - `src/Components/Accordion/`, `Breadcrumbs/`, `NavigationBar/`, `SideBar/`, `Header/`, `Drawer/`, `FilterSidebar/`, `WorkspaceWindow/`
11
-
12
- ## Key rules
13
-
14
- - SideBar/Header have sub-`components/` folders
15
- - Used by crm-frontend, account-frontend sidebars
16
-
17
- ## Dark mode
18
-
19
- FilterSidebar, WorkspaceWindow and WorkspaceTrayPreview read surfaces from
20
- `useCustomTheme()` and follow the active palette. Chakra string tokens (`gray.50`) already
21
- resolve through the swapped palette — only `white` had to change, because `colors.white` is
22
- a **foreground** token that stays white in dark. White surfaces are now
23
- `colors.background[50]` (FilterSidebar thumbs / value bubbles / min-max rows / panel,
24
- WorkspaceWindow shell, WorkspaceTrayPreview popover).
25
-
26
- `WorkspaceWindow` calls `useCustomTheme()` **before** its `state === "minimized"` early
27
- return — after it, hook order would change when the window reopens.
28
-
29
- ### Header, NavigationBar, FilterSidebar — WCAG/dark pass
30
-
31
- - **Header.tsx** — default (no explicit `colors` prop) styling changed: `bg` now
32
- `themeColor.sidebar.background[500]` (was `gray[700]`), `color`/`hoverText` now
33
- `themeColor.white` (was `background[100]`/`text[600]`), `activeBg` now computed via
34
- `accentTextOnCanvas(themeColor.primary, bg)` (was fixed `primary[400]`), `hoverBg` now
35
- `sidebar.background[400]` (was `gray[500]`). **Visible behavior change** for any consumer
36
- not passing an explicit `colors` prop — not just an internal refactor.
37
- - **Header/HeaderActions.tsx** (the Header's own action bar — distinct from
38
- `Table/components/HeaderActions.tsx`) — "Edit Layout"/"Create New" label ink now
39
- `accentTextOnCanvas(colors?.secondary, colors?.backgroundColor?.main)` (was fixed
40
- `secondary[500]`); its test mock theme expanded with a full `secondary` ramp +
41
- `backgroundColor.main` to match.
42
- - **NavigationBar.tsx** — brand text label (`navigationBarText`) ink now
43
- `accentTextOnCanvas(theme.colors.secondary, theme.colors.backgroundColor.light)` (was fixed
44
- `secondary[500]`). Its profile/account `MenuList` also sets
45
- `sx={{ "--menu-bg": theme.colors.backgroundColor.light }}` — same Chakra CSS-var fix as
46
- `ButtonGroupIcon` (buttons module): Chakra's `MenuItem` baseStyle hardcodes `--menu-bg` to
47
- white, gated behind `_dark`, which this app's theme-swap dark mode never triggers.
48
- - **FilterSidebar.tsx** — section-label tooltip swapped from raw Chakra `Tooltip` (hardcoded
49
- `bg={gray[600]}`/`color={white}`) to the library's `ToolTip` (token-driven); search-input
50
- `borderColor` now `theme.colors.boxborder?.[800] ?? gray[200]` — plain `gray[200]` fails
51
- WCAG 1.4.11 (≥3.0 non-text contrast) as a control boundary in dark mode.
52
- - **desktopMenu.tsx / Header.tsx `activeBg` (QA-caught, blocking)** — `activeBg` was computed via
53
- `accentTextOnCanvas(themeColor.primary, bg)`, which picks its search direction from the canvas's
54
- darkness and assumes that always means a dark-mode-shaped scale (50 darkest -> 900 lightest).
55
- Header's sidebar canvas is always dark regardless of app mode (`buildDarkPalette` leaves `sidebar`
56
- unchanged), but `primary` still follows the active app mode — in light mode it's light-mode-shaped
57
- (50 lightest -> 900 darkest), so walking toward 900 walked toward darker, not lighter, landing
58
- near-black (lavender measured ~1.09 contrast, well under WCAG 1.4.11's 3:1 non-text bar). Since
59
- this same value drove both the active-tab underline (`borderBottom`) and the submenu row highlight
60
- (`bg`), and a separate fix removed `activeBg` from *text* color for the identical reason, the
61
- underline became the only remaining active-state signal — and it was invisible. Fixed with a new
62
- local `pickActiveAccent` (exported from `Header.tsx`, not added to the shared `accentText.ts` — this
63
- need is specific to a canvas that never inverts with app mode) that detects the scale's own
64
- direction from its own data (`primary[50]` vs `primary[900]` luminance) instead of the canvas,
65
- walking toward whichever end is actually lighter and preferring the rung closest to `[500]` that
66
- clears 3:1. Verified computationally correct across all 7 brands x both app modes (`Header.test.tsx`).
67
- The submenu row's label ink also switched from static `text[800]` (tuned for the `background[50]`
68
- canvas, not the `activeBg` fill the active row switches to) to `onFilled(activeBg, white, black)`,
69
- which is provably >=4.5 against any fill regardless of which rung `pickActiveAccent` picks.
70
- - **Drawer.tsx (QA-caught, blocking)** — same `ModalContent` surface bug as `Modal`/`AlertDialog`
71
- (overlays module): `DrawerContent` had no explicit `bg=`, so it fell through to Chakra's
72
- hardcoded `colors.white` baseStyle, gated behind a `_dark` this app's theme-swap dark mode
73
- never triggers. Fixed with `bg={colors?.background?.[50]}`.
74
- - **FilterSidebar.tsx WCAG pass (Wave D, QA-driven)** — two real AA/graphical-object failures
75
- found beyond the surface bug above: the min/max price selected-row checkmark icon (`red[600]`
76
- on its own `red[100]` fill, ≈2.89:1, fails the 3:1 non-text bar) now uses
77
- `onFilled(theme.colors.red[100], theme.colors.white, theme.colors.black)` (resolves to black,
78
- ≈13.96:1); the star-rating icon's `color`/`fill` (`orange[500]` on `background[50]`, ≈2.22:1)
79
- now both use `accentTextOnCanvas(theme.colors.orange, <row's actual canvas>)` (resolves to
80
- `orange[800]`, ≈6.33:1) — the canvas mirrors the row's own `bg` ternary (`red[50]` when that
81
- rating is the active filter, `background[50]` otherwise; a code-review catch — the first pass
82
- always computed against `background[50]` even on the selected row). All other `red`/`orange`
83
- usages in this file (row backgrounds, `borderLeftColor`, focus border) are decorative/border
84
- roles and were left unchanged.
85
- - **Two `PopoverContent`s missed by the same QA pass (code-review catch, same file):** the
86
- min/max price value-list popovers had no `bg=`, hitting the identical
87
- Chakra-hardcoded-`colors.white`-behind-`_dark` bug as `Modal`/`AlertDialog`/`Drawer` — just on
88
- `PopoverContent`'s baseStyle (`var(--popper-bg)`) instead of Modal's. Fixed with
89
- `bg={theme.colors.background[50]}` on both, same pattern already used for `MoreItems`/
90
- `OrgSwitcher`/`NavigationBar` popovers elsewhere in the library.
91
- - **Checkbox/option/popover-row hover invisible in dark mode (QA follow-up round, fixed):** all 5
92
- `_hover={{ bg: theme.colors.gray[50] }}` spots in this file (min/max price rows, rating rows, the
93
- filter-option checkbox row, the accordion trigger) used `gray[50]`, a pale near-white tint in
94
- light mode that — once the whole `gray` scale flips for dark — lands within ~1 lightness point of
95
- the dark canvas (~1.08:1 contrast, computed), reading as no hover at all. As a side effect this
96
- also silently fixed the `cards`-variant tautology where the accordion button's own resting
97
- background (`customStyles.buttonStyle.background`, line ~680) equaled its hover token exactly —
98
- hovering a `cards`-variant button visibly did nothing. Fixed via a new pure helper,
99
- `getFilterHoverBg(colors, isDark)` (`filterHoverStyle.ts`, mirrors `Editor/joditThemeVars.ts`'s
100
- pattern) — dark mode now uses `gray[300]` (~2.3:1 against the canvas, clearly visible) which still
101
- keeps the existing `gray[700]`/`gray[800]` row text at/above AA (~4.9:1+) on top of it, so — unlike
102
- the Table row-hover fix — no text-color flip was needed here. Light mode is untouched (`gray[50]`).
103
- Regression tests: `filterHoverStyle.test.ts` (lavender + rosewood).
104
- - **Accordion section-header hover still invisible after the fix above (QA retest follow-up):**
105
- the 5th spot (the accordion trigger row itself) kept showing no hover change even after
106
- `getFilterHoverBg` fixed the other 4. Traced two real, distinct issues in `Accordion.tsx` (not
107
- FilterSidebar): (1) its own `expandedBg`/`softHover` defaults — `primary.opacity[8]` composited
108
- over the dark canvas, and `table.hover[100]`/`gray[50]` — both collapse to ~1.07-1.09:1
109
- (verified numerically), so any Accordion consumer relying on these un-overridden defaults gets an
110
- invisible expanded-state tint and hover in dark mode; (2) FilterSidebar's own header override
111
- (`buttonProps._hover: { bg: hoverBg }`) was verified via direct CSSOM inspection to compile into a
112
- correct `:hover` rule with the right color even with FilterSidebar's exact `customStyles`
113
- shape — the mechanism itself checked out. Fixed (1) with a new pure helper,
114
- `getAccordionHoverColors(colors, isDark)` (`Accordion/accordionColors.ts`, same pattern as
115
- `Editor/joditThemeVars.ts` / `FilterSidebar/filterHoverStyle.ts`): dark mode now uses `gray[200]`
116
- for both (opaque, ~1.6:1 against canvas — visibly present but a step below the `gray[300]`
117
- active-hover fill FilterSidebar/Table already use), light mode unchanged. Reinforced (2) as
118
- belt-and-suspenders: FilterSidebar's `customStyles.hoverbuttonStyle` now also sets
119
- `{ background: hoverBg }`, reasserting the same fill via the `sx` path so the header hover
120
- doesn't depend on a single prop-merge route. Regression tests: `accordionColors.test.ts`
121
- (lavender + rosewood). Note: jsdom cannot simulate real `:hover` rendering, so this was verified
122
- via computed contrast + direct CSSOM rule inspection, not a live click-test; a real-browser
123
- Playwright re-check afterward confirmed the fix applies correctly (`rgba(0,0,0,0)` →
124
- `gray[300]` on hover, both brands, reverting on mouse-away).
125
- - **`Accordion.tsx`/`FilterSidebar.tsx` perf pass:** the new `getAccordionHoverColors`/
126
- `getFilterHoverBg` calls above are now wrapped in `useMemo` (keyed on `theme.colors`/`isDark`),
127
- matching the existing memoization pattern in `Table/components/TableBody.tsx` — avoids
128
- recomputing the color object on every render.
129
-
130
- ### SideBar — active-icon/label dark-mode fix (user-reported via screenshot, blocking)
131
-
132
- `MenuItemBox.tsx`, `MenuPopoverContent.tsx`, `SecondaryBar.tsx`, and `SideBar.tsx` all read the
133
- active/accent icon and label color from `theme.colors.primary[300]`/`[100]` directly. That's
134
- correct in light mode, but breaks in dark mode: `sidebar.background` **never inverts** across
135
- modes (`buildDarkPalette.ts` keeps `sidebar: light.sidebar` — it's already near-black in light
136
- mode), while `primary`'s every rung **does** invert (`toDarkRamp`/`liftAccent`, correct for
137
- badge/tag consumers whose surface inverts alongside them). Pairing an inverted `primary[300]`/
138
- `[100]` with a canvas that stayed put produces near-black text/icons on an already-dark rail —
139
- only the checked/lavender-selected item stayed legible, everything else read as invisible
140
- (exactly the user's report: "only selected lavender is visible to my eyes").
141
-
142
- Presented 3 fix options via an artifact (pinned-light accent / Header's `pickActiveAccent`
143
- pattern / a dedicated non-inverting SideBar accent scale) — user chose **pinned-light accent**.
144
- Fixed with a new pure helper + hook, `src/Components/SideBar/sidebarAccentColors.ts`
145
- (`getSidebarActiveAccent` / `useSidebarActiveAccent`, same pure-function + `useMemo` pattern as
146
- `accordionColors.ts`/`filterHoverStyle.ts`): in dark mode it reuses each rung's own **light-mode**
147
- value (`lightPalettes[brand].primary[300]`/`[100]`) instead of the dark-inverted one — provably
148
- correct because the canvas behind it is identical in both modes, so whatever already clears
149
- contrast in light mode still clears it in dark mode with the same foreground value. Falls back to
150
- the current (still-broken) rung if `brand` is unavailable (a consumer on a plain `ChakraProvider`,
151
- where dark mode never activates anyway) rather than crashing — `brand` is read via
152
- `useContext(ThemeModeContext)` directly, not the throwing `useThemeMode()`, since this hook must
153
- degrade gracefully outside `PixelizeThemeProvider`.
154
-
155
- Wired at every active/accent-icon usage: `MenuItemBox.tsx` (main + submenu icon/label/dot),
156
- `MenuPopoverContent.tsx` (header + submenu icon/label), `SecondaryBar.tsx` (collapsed/expanded
157
- item icon+label, header icon), `SideBar.tsx` (Add-New icon, avatar-initials fallback, footer
158
- control accent icon+label, mobile-nav "Show" `PanelLeft` icon) — every one was reading `[300]`
159
- (icon role) or `[100]` (label role) directly. `borderLeftColor`/`bg` usages of `primary[500]`/
160
- `.opacity[16]`/`.opacity[32]` were left untouched — confirmed not broken (the audit found `[500]`
161
- correctly lifts lighter in dark mode; `.opacity[N]` tints are self-scaling, not absolute rungs).
162
- Regression tests: `sidebarAccentColors.test.ts` (lavender + rosewood) — light mode unchanged,
163
- dark mode pins the light-mode rung (not the dark-inverted one), contrast ≥3:1 (icon) / ≥4.5:1
164
- (label) against the sidebar canvas, graceful fallback when `brand` is unknown.
165
-
166
- ### Known gap — Header "Login" demo button (raw Chakra, wrong-canvas ghost ink)
167
-
168
- `Layout.tsx`'s `/header` playground route renders its `rightSlot` demo content with a **raw**
169
- Chakra `Button` (`import { Button } from "@chakra-ui/react"`, not the library's own `Button`),
170
- `variant="ghost" colorScheme="purple"`. Because Chakra's theme registration is global once
171
- `extendTheme` runs, this raw Button still picks up the library's `Button.styles.ts` ghost-variant
172
- logic (`accentTextOnCanvas(scale, colors.backgroundColor.main)`, buttons module) — but that logic
173
- assumes the **page** canvas. Header's own bar is an always-dark surface
174
- (`sidebar.background[500]`), not the page canvas, so the computed ink is tuned for the wrong
175
- background and can read too dark/low-contrast against Header's actual bar. Not a new bug — it's
176
- the same "wrong canvas" gap as the already-documented Button ghost-variant limitation, now
177
- independently confirmed by the QA pass. Deferred: fixing it correctly needs a `canvasBg` prop
178
- threaded through `Button.styles.ts` so a caller can tell the ghost/outline/link ink helper which
179
- surface it's actually rendering on, rather than always assuming the page canvas — a bigger,
180
- cross-component change out of scope for this pass.
181
-
182
- ## SideBar — responsive overlay (< lg / 992px)
183
-
184
- At/above `lg` the SideBar is unchanged: inline, sticky, with the collapse/mini-rail
185
- (`toggle`). Below `lg` it becomes a slide-in **overlay** above the content (it leaves
186
- layout flow, so content stays full-width — not shrunk):
187
-
188
- - `mobileOpen?: boolean` + `onMobileClose?: () => void` props drive the overlay. Wire
189
- `mobileOpen` to the NavigationBar hamburger (`sideBarToggole` / `onSideBarToggole`).
190
- - Overlay is always expanded (collapse/mini-rail is desktop-only and hidden < lg). The
191
- header's trailing control becomes a Close (X) instead of the collapse chevron.
192
- - Dismiss: backdrop scrim click, **Esc**, the Close button, or **swipe-left** on the
193
- panel. Body scroll is locked while open; panel exposes `role="dialog"`/`aria-modal`.
194
- - NavigationBar hamburger now shows below `lg` (was `< md`); its panel icon is
195
- state-aware (`PanelLeftClose` open / `PanelRightClose` closed).
196
- - The overlay panel has **square edges** (no border radius).
197
- - Overlay panel width = `OVERLAY_WIDTH` (**14.7rem** / 235px — a touch wider than the
198
- inline expanded 13rem for touch), capped by `maxW: 88vw` on very small screens.
199
-
200
- Breakpoint, scrim/slide, and z-index are Chakra responsive props (no JS flash) when
201
- `mobileNav` is off; the breakpoint is read once via `useBreakpointValue({ base: true, lg: false })`.
202
-
203
- ## SideBar — Hide/Show (mobile navbar on big screens)
204
-
205
- A footer **Hide/Show** toggle (next to Collapse) switches the navbar *presentation*
206
- between the docked desktop sidebar and the mobile-style overlay — at **any** width, so
207
- desktop users can get the full-screen content experience. It is a layout switch, **not**
208
- a close: toggling never hides the navigation.
209
-
210
- - `mobileNav?: boolean` forces overlay presentation regardless of breakpoint:
211
- `overlay = (below lg) || mobileNav`. `onToggleMobileNav?: () => void` backs the
212
- footer control (render the control only when provided).
213
- - Footer control: docked → segmented **Collapse | Hide**; desktop mobile-nav overlay →
214
- **Show** (return to docked). Pure below-`lg` overlay shows no navbar-mode control.
215
- - Wire so entering mobile-nav also opens the overlay (sidebar stays visible) and leaving
216
- docks it — see `App.tsx`. NavigationBar `forceSideBarToggle` shows the hamburger at all
217
- widths while `mobileNav` is on.
218
- - Selecting a **leaf** menu item in overlay mode auto-closes the overlay (content returns
219
- to full-screen); submenu **parents** only expand and do not close it.
220
-
221
- ## Persisting sidebar choices — `useSidebarPrefs`
222
-
223
- Opt-in hook (`src/Hooks/useSidebarPrefs.ts`, exported from `index.ts`) that persists the
224
- user's **explicit** layout choices to `localStorage` so they survive reload/restart —
225
- without it, `mobileNav`/collapse reset to desktop default on every mount.
226
-
227
- - Persists `{ mobileNav, collapsed, mobileOpen }` so the sidebar restores to **exactly** the
228
- same state (mode, mini-rail, drawer). It deliberately does **not** persist the `lg`
229
- breakpoint (viewport-driven, must stay live).
230
- - SSR-safe (`typeof window` guards); corrupt/invalid stored values fall back to defaults
231
- per field; `setItem` failures (private mode / quota) no-op without throwing.
232
- - API: state `{ mobileNav, collapsed, mobileOpen }`; setters `setMobileNav / setCollapsed
233
- / setMobileOpen`; toggles `toggleMobileNav / toggleCollapsed / toggleMobileOpen`; plus
234
- **composed handlers** `onToggleMobileNav` (flips navbar mode **and** syncs the drawer)
235
- and `closeMobile`. Options: `storageKey` (default `pixelize:sidebar-prefs:v1`, versioned)
236
- and `defaults`.
237
- - **Consumer adoption** — map the returned values onto `SideBar` + `NavBar`; the composed
238
- handlers mean apps don't re-implement the navbar-mode/drawer behavior:
239
-
240
- ```tsx
241
- const sb = useSidebarPrefs();
242
- <SideBar
243
- toggle={sb.collapsed} changeToggle={sb.toggleCollapsed}
244
- mobileNav={sb.mobileNav} onToggleMobileNav={sb.onToggleMobileNav}
245
- mobileOpen={sb.mobileOpen} onMobileClose={sb.closeMobile} /* ...menus, user */ />
246
- <NavBar sideBarToggole={sb.mobileOpen} onSideBarToggole={sb.toggleMobileOpen}
247
- forceSideBarToggle={sb.mobileNav} /* ...nav props */ />
248
- ```
249
-
250
- See `App.tsx` for the live reference wiring.
251
-
252
- ### Known gaps
253
-
254
- - `SecondaryBar` keeps its current side-by-side stacking inside the overlay — revisit if
255
- it feels cramped on very narrow screens.
256
- - Consumer apps (crm/account/…) must pass `mobileOpen`/`onMobileClose` to adopt overlay
257
- mode, and adopt `useSidebarPrefs` to get persistence; until then they get the unchanged
258
- inline sidebar with non-persisted state.
259
- - Persisted `collapsed` can be transiently overridden by SideBar's existing "auto-collapse
260
- when a secondary panel is active" effect — pre-existing, not regressed.
261
- - Persisting `mobileOpen` means a phone (`belowLg`) left with the drawer open reloads with
262
- it open (until a leaf tap auto-closes it). Accepted to honor "restore exactly the same
263
- state"; revisit with a `belowLg` gate if it proves annoying.
264
- - Dark-mode migration covered FilterSidebar/WorkspaceWindow (surfaces) plus, this pass,
265
- Header (default bg/color/active/hover tokens), NavigationBar (label ink + Menu
266
- `--menu-bg` fix), and Accordion (item surface + expanded/hover tint — see above) — see
267
- "Header, NavigationBar, FilterSidebar — WCAG/dark pass" above. **SideBar's active-icon/
268
- label accent is now fixed** (see "SideBar — active-icon/label dark-mode fix" above); its
269
- notification-count badge contrast gap is still open — see `theme/MODULE.md` Known gaps.
@@ -1,69 +0,0 @@
1
- # Overlays
2
-
3
- ## Purpose
4
-
5
- Modal, AlertDialog, ToolTip / OverflowToolTip, Toaster (+ `useToaster` hook).
6
-
7
- ## Key paths
8
-
9
- - `src/Components/Modal/`, `AlertDialog/`, `ToolTip/`, `Toaster/`
10
-
11
- ## Key rules
12
-
13
- - **Toaster `showToast({ actions })`:** optional `actions?: (onClose) => ReactNode`
14
- renders action buttons under the message (e.g. Jira-style "View" / "Copy link").
15
- The render-prop receives the toast's own `onClose` so an action can dismiss it;
16
- callers style the buttons with their app theme. Prefer this over a bespoke Chakra
17
- `useToast` in a consumer app — a second `useToast` renders into a *different* toast
18
- portal that a `Modal`'s overlay/focus-trap can hide, so the toast silently never
19
- appears. The toast card slides in (framer tween), pulses the status icon once on
20
- mount, and **pauses the auto-dismiss countdown on hover** so the user can read and
21
- click an action before it dismisses.
22
- - Modal exports ModalHeader, ModalBody, ModalFooter subcomponents
23
- - **ToolTip `overflowOnly`:** pass `overflowOnly` to show the tooltip **only**
24
- when the child text is actually truncated (ellipsis active) — no tooltip when
25
- it fits. The child must be the single clamping element (e.g. `Text` with
26
- `noOfLines`); its ref is managed internally. Works for single- and multi-line
27
- clamps and combines with `isDisabled`. **`OverflowToolTip`** is sugar for
28
- `<ToolTip overflowOnly>`. Powered by the `useIsTruncated` hook (see
29
- `utils-hooks`). Inert unless `overflowOnly` is set — no measurement/observer
30
- for ordinary tooltips, and it never measures on hover/scroll.
31
-
32
- ## Dark mode
33
-
34
- Toaster and ToolTip take all color from the theme (`useTheme()` / `useCustomTheme()`),
35
- so they follow the active light/dark palette; remaining hex literals are only `??`
36
- fallbacks for when no Pixelize palette is in context.
37
-
38
- - **Modal/AlertDialog surface bug (QA-caught, blocking):** `ModalContent`/`AlertDialogContent`
39
- had no explicit `bg=`, so both fell through to Chakra's own `baseStyle`, which hardcodes
40
- `[$bg.variable]: "colors.white"` gated behind `_dark` — this app's theme-swap dark mode
41
- (palette swapped, Chakra `colorMode` stays `"light"`) never triggers that `_dark` block, so
42
- every Modal/AlertDialog rendered a white panel with near-invisible text on the dark canvas.
43
- Same bug class as the `ButtonGroupIcon` menu-bg bug (buttons) and the `OrgSwitcher` popover
44
- bug (account-management) — Chakra part-styles that hardcode a literal instead of reading a
45
- semantic token. `Card` was unaffected because it already used the patched
46
- `chakra-body-bg`/`chakra-body-text` semantic tokens (see theme module); Modal/AlertDialog
47
- bypass that layer entirely. Fixed with an explicit `bg={colors?.background?.[50]}` on both.
48
- `AlertDialog` has no separate Chakra theme key (it reuses Chakra's `Modal` style config
49
- internally), but still needed its own prop-level fix since this app's fix is component-level,
50
- not a Chakra `components.Modal` theme-config override.
51
-
52
- ## Dark mode — Modal/AlertDialog consumers
53
-
54
- `Drawer` (layout-navigation module) has the identical fix. Every other file in the library that
55
- renders a raw Chakra `ModalContent` needed the same explicit `bg=` — see the account-management,
56
- table, and cards MODULE.md sections for the specific consumer components fixed in this pass.
57
- `WorkspaceWindow` (layout-navigation) was checked and is **not** affected: its `ModalContent` is
58
- deliberately `bg="transparent"` with an inner `Box bg={theme.colors.background[50]}` as the real
59
- surface.
60
-
61
- - **Toast card surface is `background[50]`, not `colors.white`** — `white` is a
62
- *foreground* token (a label on a filled button) and stays white in dark mode.
63
- Status tints read `colors.semantic[status]`, falling back to the plain ramp
64
- (`green` / `red` / …).
65
- - **ToolTip is an inverted surface** — near-black under a light canvas, carrying a
66
- white label. It uses `sidebar.background[500]`, the one ramp `buildDarkPalette`
67
- passes through un-inverted (`sidebar: light.sidebar`), so it stays near-black in
68
- dark and the label stays legible; any other surface ramp would flip light and
69
- render the white label invisible. Callers overriding `bg` own that contrast.
@@ -1,28 +0,0 @@
1
- # Playground
2
-
3
- ## Purpose
4
-
5
- Vite dev playground — demo pages not published to npm.
6
-
7
- ## Key paths
8
-
9
- - `src/Pages/` (49 demo files), `src/App.tsx`, `src/Layout.tsx`
10
- - `npm start` launches playground
11
-
12
- ## Key rules
13
-
14
- - Demo API calls to dev.pixelizetech.com are playground-only
15
- - Not included in `dist/` publish output
16
-
17
- ## Recent changes (WCAG contrast + dark-mode pass)
18
-
19
- - `stageProgress.tsx`, `tier1.tsx`, `upgradeButton.tsx`, `orgSwitcher.tsx`: local `Section` demo
20
- wrapper switched from hardcoded `bg="white"` / `border="1px solid #E2E8F0"` / `color="gray.700"`
21
- to `useCustomTheme()` tokens (`background[50]` / `boxborder[300]` / `text[900]`) — previously
22
- stayed white regardless of the active theme.
23
- - `stageProgress.tsx` (4 captions) and `tier1.tsx` (1 caption): `color="gray.400"` →
24
- `theme.colors.gray[500]`, the library's verified muted-text token (`gray.400` fails contrast in
25
- dark mode).
26
- - `card.tsx`: swapped the raw Chakra `Button` (`color="blue"`) for the library's own `Button`
27
- (`colorScheme="primary"`) — a component-choice fix, not a Section/caption token pass.
28
- - Demo-only — no `src/index.ts` export or library API changed.
@@ -1,78 +0,0 @@
1
- # Table
2
-
3
- ## Purpose
4
-
5
- Data table with virtualization, filters, pagination, column management.
6
-
7
- ## Key paths
8
-
9
- - `src/Components/Table/`, `Table/components/`, `Table/settings/`, `Table/filters/`, `Table/hooks/`
10
- - Tests: `components/TableBody.virtualize.test.tsx`, `settings/ManageColumns.test.tsx`
11
-
12
- ## Key rules
13
-
14
- - Core CRM list UI — high change frequency
15
- - `src/Utils/table.ts` helpers
16
-
17
- ## Dark mode
18
-
19
- Surfaces read `theme.colors.background[50]` via `useCustomTheme()`, so the table follows the
20
- active palette: `Table` (pagination popover), `TableBody` (expanded-row panel), `CompactSelect`
21
- (trigger), `LeftFilterPane` (pane + apply/clear footer).
22
-
23
- - **`white` is a foreground token, not a surface.** It stays `#fff` in dark, so `bg="white"` /
24
- `bg={theme.colors.white}` renders a white slab on the dark canvas — that was the defect this
25
- migration fixed. Use `background[50]` (`#ffffff` light, dark-aware) for any surface.
26
- `color="white"` on the filter-count badge is correct — it is a label on `primary[500]`.
27
- - Chakra scale literals (`borderColor="gray.200"`, `_hover={{ bg: "gray.50" }}`) are **already
28
- dark-aware** — `createBrandTheme` passes `colors: palette`, so they resolve against the
29
- swapped palette. Only for scales the palette defines: `whiteAlpha`/`blackAlpha` are not in it,
30
- so they keep Chakra's fixed rgba — `TableGroupRow`'s `_hover={{ bg: "whiteAlpha.500" }}` is
31
- still a white wash in dark.
32
- - `LeftFilterPane` takes `theme` as a **prop** (from `Table`), not from the hook — pass it down.
33
-
34
- ## WCAG contrast pass (this session)
35
-
36
- - `HeaderActions` action-list ink and `TableHeader`'s sort-chevron hover ink + column-header ink
37
- now use `accentTextOnCanvas(secondary, canvas)` (from `Theme/tokens/builders/accentText`)
38
- instead of a bare `colors.secondary?.[500]` — picks a text color that clears AA against the
39
- actual canvas instead of assuming secondary-on-white always passes. Relies on the shared
40
- `accentText.ts` guard (theme module) to stay crash-safe when `secondary`/canvas are undefined.
41
- - `TableBody`'s `StatusCell` ink is no longer hardcoded `white` — it resolves
42
- `statusColor.onSolid ?? onFilled(statusColor.solid, white, black)` so the label clears AA
43
- against light and dark status fills alike; falls back for callers whose `statusColor` predates
44
- `onSolid`.
45
- - `TableRenderGroup.color` gained an optional `onSolid?: string` (additive, non-breaking).
46
- - `LeftFilterPane`'s `SectionLabel` tooltip swapped Chakra `Tooltip` → design-library `ToolTip`
47
- (drops the manual `bg`/`color`/`theme`-prop overrides — `ToolTip` themes itself).
48
- - **Filter-sidebar `ModalContent` surface bug (QA-caught, blocking):** `Table.tsx`'s mobile
49
- filter-sidebar modal had no explicit `bg=` on `ModalContent`, hitting the same
50
- Chakra-hardcoded-`colors.white`-behind-`_dark` bug as `Modal`/`AlertDialog`/`Drawer` (overlays,
51
- layout-navigation modules). Fixed with `bg={theme.colors?.background?.[50]}`.
52
- `TableSettings.tsx`'s `MotionModalContent` already had this fix from an earlier pass.
53
- - **`LeftFilterPane`'s date filter (user-reported, blocking):** `LeftFilterPane.tsx` imports the
54
- legacy `DatePicker/DatePicker.tsx` directly (not the public `ThemeDatePicker` export) — its
55
- `PopoverContent` had the identical missing-`bg=` bug, fixed alongside the other three date/time
56
- pickers (see `inputs-date-file` MODULE.md). It's easy to assume this file is dead because the
57
- playground's `datePick.tsx` import of it is commented out — it isn't; `LeftFilterPane` is a real
58
- consumer.
59
- - **Row hover invisible in dark mode (QA-reported, fixed):** `TableBody`'s per-cell `_hover`
60
- painted `table.hover[300]`, a token built for a light-mode white canvas — in dark mode that rung
61
- sits within ~10 lightness points of the near-black canvas (both compressed near L7-15), computing
62
- to ~1.2:1 contrast (verified numerically), i.e. no visible hover at all. Fixed via a new pure
63
- helper, `getTableRowHoverStyle(colors, isDark)` (`components/tableRowHoverStyle.ts`, same pattern
64
- as `Editor/joditThemeVars.ts`): dark mode now fills with `background[900]` (this palette's dark-
65
- mode "bright highlight" rung, ~9.7-10.7:1 against the canvas across brands) **and** flips `color`
66
- to `backgroundColor.main`, since the row's resting ink (`text[500]`) is tuned for a near-black
67
- backdrop and would go illegible against a bright fill — mirrors how Jodit's own dark-mode hover
68
- rule flips text to its canvas color alongside a brighter fill. Light mode is untouched
69
- (`table.hover[300]`, same as before). Regression tests: `tableRowHoverStyle.test.ts` (lavender +
70
- rosewood). Scoped to the per-cell hover mechanism already in place — not restructured to a
71
- `<Tr>`-level highlight, since that wasn't the reported defect.
72
- - **Known gap (found by code review, not fixed this pass):** `Table/filters/CompactSelect.tsx`,
73
- `Table/filters/TableFilters.tsx`, and `Table/components/TableActions.tsx` each render a raw
74
- Chakra `PopoverContent` with no `bg=` — the identical bug class just fixed in `Table.tsx`'s
75
- filter-sidebar modal, `FilterSidebar.tsx`'s two price popovers (layout-navigation module), and
76
- `Modal`/`AlertDialog`/`Drawer` (overlays module). Not in this session's diff and not covered by
77
- any test, so deliberately deferred rather than expanding this pass's scope — worth a follow-up
78
- ticket to make the `ModalContent`/`PopoverContent`/`MenuList` sweep exhaustive across the repo.