pixelize-design-library 2.3.22 → 2.4.1-beta.2

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 (737) hide show
  1. package/.claude/settings.local.json +51 -0
  2. package/.cursor/TASK-SETUP.md +43 -0
  3. package/.cursor/agents/be-impl.md +37 -0
  4. package/.cursor/agents/fe-impl.md +39 -0
  5. package/.cursor/agents/task-plan.md +56 -0
  6. package/.cursor/agents/test-create.md +31 -0
  7. package/.cursor/agents/test-exec.md +26 -0
  8. package/.cursor/hooks/task-hint.env +1 -0
  9. package/.cursor/hooks/task-skill-nudge.sh +71 -0
  10. package/.cursor/hooks/task-slash-guard.sh +31 -0
  11. package/.cursor/hooks.json +13 -0
  12. package/.cursor/modules/account-management/MODULE.md +41 -0
  13. package/.cursor/modules/buttons/MODULE.md +47 -0
  14. package/.cursor/modules/cards/MODULE.md +55 -0
  15. package/.cursor/modules/charts/MODULE.md +40 -0
  16. package/.cursor/modules/common/MODULE.md +36 -0
  17. package/.cursor/modules/contact-auth/MODULE.md +19 -0
  18. package/.cursor/modules/data-display/MODULE.md +42 -0
  19. package/.cursor/modules/feedback/MODULE.md +38 -0
  20. package/.cursor/modules/form/MODULE.md +13 -0
  21. package/.cursor/modules/inputs-basic/MODULE.md +42 -0
  22. package/.cursor/modules/inputs-date-file/MODULE.md +67 -0
  23. package/.cursor/modules/inputs-select/MODULE.md +89 -0
  24. package/.cursor/modules/inputs-toggle/MODULE.md +24 -0
  25. package/.cursor/modules/kanban/MODULE.md +22 -0
  26. package/.cursor/modules/layout-navigation/MODULE.md +319 -0
  27. package/.cursor/modules/overlays/MODULE.md +82 -0
  28. package/.cursor/modules/playground/MODULE.md +28 -0
  29. package/.cursor/modules/table/MODULE.md +84 -0
  30. package/.cursor/modules/theme/MODULE.md +431 -0
  31. package/.cursor/modules/types-exports/MODULE.md +17 -0
  32. package/.cursor/modules/utility-ui/MODULE.md +50 -0
  33. package/.cursor/modules/utils-hooks/MODULE.md +35 -0
  34. package/.cursor/pixelize-task-statusline.sh +64 -0
  35. package/.cursor/plans/blocked/.gitkeep +0 -0
  36. package/.cursor/plans/current.md +12 -0
  37. package/.cursor/plans/current.theme-tokens-dark-mode.md +77 -0
  38. package/.cursor/plans/current.theme-tokens-dark.md +155 -0
  39. package/.cursor/plans/done/.gitkeep +0 -0
  40. package/.cursor/rules +31 -0
  41. package/.cursor/skills/task/SKILL.md +167 -0
  42. package/CLAUDE.md +148 -0
  43. package/README.md +77 -10
  44. package/__mocks__/styleMock.js +8 -0
  45. package/coverage/clover.xml +405 -0
  46. package/coverage/coverage-final.json +16 -0
  47. package/coverage/coverage-summary.json +50 -0
  48. package/coverage/lcov-report/Button/Button.tsx.html +244 -0
  49. package/coverage/lcov-report/Button/index.html +116 -0
  50. package/coverage/lcov-report/Checkbox/Checkbox.tsx.html +433 -0
  51. package/coverage/lcov-report/Checkbox/index.html +116 -0
  52. package/coverage/lcov-report/Common/ErrorMessage.tsx.html +148 -0
  53. package/coverage/lcov-report/Common/FormLabel.tsx.html +331 -0
  54. package/coverage/lcov-report/Common/HelperText.tsx.html +124 -0
  55. package/coverage/lcov-report/Common/index.html +146 -0
  56. package/coverage/lcov-report/Components/Button/Button.tsx.html +244 -0
  57. package/coverage/lcov-report/Components/Button/index.html +116 -0
  58. package/coverage/lcov-report/Components/Checkbox/Checkbox.tsx.html +433 -0
  59. package/coverage/lcov-report/Components/Checkbox/index.html +116 -0
  60. package/coverage/lcov-report/Components/Common/ErrorMessage.tsx.html +148 -0
  61. package/coverage/lcov-report/Components/Common/FormLabel.tsx.html +331 -0
  62. package/coverage/lcov-report/Components/Common/HelperText.tsx.html +124 -0
  63. package/coverage/lcov-report/Components/Common/index.html +146 -0
  64. package/coverage/lcov-report/Components/CustomModulesTable/CustomModulesTable.tsx.html +712 -0
  65. package/coverage/lcov-report/Components/CustomModulesTable/DeleteModuleModal.tsx.html +343 -0
  66. package/coverage/lcov-report/Components/CustomModulesTable/EditModuleModal.tsx.html +313 -0
  67. package/coverage/lcov-report/Components/CustomModulesTable/index.html +146 -0
  68. package/coverage/lcov-report/Components/Divider/Divider.tsx.html +133 -0
  69. package/coverage/lcov-report/Components/Divider/index.html +116 -0
  70. package/coverage/lcov-report/Components/Dropdown/DropDown.tsx.html +994 -0
  71. package/coverage/lcov-report/Components/Dropdown/index.html +116 -0
  72. package/coverage/lcov-report/Components/EmptyState/EmptyState.tsx.html +466 -0
  73. package/coverage/lcov-report/Components/EmptyState/index.html +116 -0
  74. package/coverage/lcov-report/Components/Header/HeaderActions.tsx.html +373 -0
  75. package/coverage/lcov-report/Components/Header/index.html +116 -0
  76. package/coverage/lcov-report/Components/Input/TextInput.tsx.html +487 -0
  77. package/coverage/lcov-report/Components/Input/index.html +116 -0
  78. package/coverage/lcov-report/Components/Input/textInputIconSize.ts.html +205 -0
  79. package/coverage/lcov-report/Components/KanbanBoard/AccountCard.tsx.html +547 -0
  80. package/coverage/lcov-report/Components/KanbanBoard/AccountRow.tsx.html +190 -0
  81. package/coverage/lcov-report/Components/KanbanBoard/KanbanActions/KanbanActions.tsx.html +247 -0
  82. package/coverage/lcov-report/Components/KanbanBoard/KanbanActions/index.html +116 -0
  83. package/coverage/lcov-report/Components/KanbanBoard/KanbanBoard.tsx.html +3598 -0
  84. package/coverage/lcov-report/Components/KanbanBoard/MeasuredItem.tsx.html +283 -0
  85. package/coverage/lcov-report/Components/KanbanBoard/index.html +161 -0
  86. package/coverage/lcov-report/Components/OrganizationDetails/CreateOrgModal.tsx.html +511 -0
  87. package/coverage/lcov-report/Components/OrganizationDetails/DeleteOrgModal.tsx.html +334 -0
  88. package/coverage/lcov-report/Components/OrganizationDetails/OrganizationDetails.tsx.html +1519 -0
  89. package/coverage/lcov-report/Components/OrganizationDetails/index.html +146 -0
  90. package/coverage/lcov-report/Components/RolesPermission/DeleteRoleModal.tsx.html +328 -0
  91. package/coverage/lcov-report/Components/RolesPermission/RolesPermission.tsx.html +1732 -0
  92. package/coverage/lcov-report/Components/RolesPermission/index.html +131 -0
  93. package/coverage/lcov-report/Components/SearchSelect/SearchSelect.tsx.html +2575 -0
  94. package/coverage/lcov-report/Components/SearchSelect/SelectTruncatedLabel.tsx.html +202 -0
  95. package/coverage/lcov-report/Components/SearchSelect/index.html +146 -0
  96. package/coverage/lcov-report/Components/SearchSelect/searchSelectSize.ts.html +496 -0
  97. package/coverage/lcov-report/Components/Select/Select.tsx.html +361 -0
  98. package/coverage/lcov-report/Components/Select/index.html +116 -0
  99. package/coverage/lcov-report/Components/SideBar/components/OtherApps.tsx.html +562 -0
  100. package/coverage/lcov-report/Components/SideBar/components/OverflowTooltipText.tsx.html +346 -0
  101. package/coverage/lcov-report/Components/SideBar/components/index.html +116 -0
  102. package/coverage/lcov-report/Components/SignInActivityTable/SignInActivityTable.tsx.html +490 -0
  103. package/coverage/lcov-report/Components/SignInActivityTable/index.html +116 -0
  104. package/coverage/lcov-report/Components/Table/components/TableActions.tsx.html +595 -0
  105. package/coverage/lcov-report/Components/Table/components/TableBody.tsx.html +2212 -0
  106. package/coverage/lcov-report/Components/Table/components/TableGroupRow.tsx.html +358 -0
  107. package/coverage/lcov-report/Components/Table/components/TableLoading.tsx.html +358 -0
  108. package/coverage/lcov-report/Components/Table/components/index.html +161 -0
  109. package/coverage/lcov-report/Components/Table/settings/ManageColumns.tsx.html +856 -0
  110. package/coverage/lcov-report/Components/Table/settings/index.html +116 -0
  111. package/coverage/lcov-report/Components/Tag/Tag.styles.tsx.html +331 -0
  112. package/coverage/lcov-report/Components/Tag/Tag.tsx.html +256 -0
  113. package/coverage/lcov-report/Components/Tag/index.html +131 -0
  114. package/coverage/lcov-report/Components/ToolTip/ToolTip.tsx.html +286 -0
  115. package/coverage/lcov-report/Components/ToolTip/index.html +116 -0
  116. package/coverage/lcov-report/Components/UserDetails/AddUserModal.tsx.html +709 -0
  117. package/coverage/lcov-report/Components/UserDetails/ChangeRoleModal.tsx.html +505 -0
  118. package/coverage/lcov-report/Components/UserDetails/DeactivateConfirmModal.tsx.html +379 -0
  119. package/coverage/lcov-report/Components/UserDetails/UserDetails.tsx.html +1900 -0
  120. package/coverage/lcov-report/Components/UserDetails/index.html +161 -0
  121. package/coverage/lcov-report/EmptyState/EmptyState.tsx.html +466 -0
  122. package/coverage/lcov-report/EmptyState/index.html +116 -0
  123. package/coverage/lcov-report/Hooks/index.html +116 -0
  124. package/coverage/lcov-report/Hooks/usePreferences.ts.html +421 -0
  125. package/coverage/lcov-report/Input/TextInput.tsx.html +487 -0
  126. package/coverage/lcov-report/Input/index.html +131 -0
  127. package/coverage/lcov-report/Input/textInputIconSize.ts.html +205 -0
  128. package/coverage/lcov-report/KanbanBoard.tsx.html +3481 -0
  129. package/coverage/lcov-report/OrganizationDetails/CreateOrgModal.tsx.html +511 -0
  130. package/coverage/lcov-report/OrganizationDetails/DeleteOrgModal.tsx.html +334 -0
  131. package/coverage/lcov-report/OrganizationDetails/OrganizationDetails.tsx.html +1519 -0
  132. package/coverage/lcov-report/OrganizationDetails/index.html +146 -0
  133. package/coverage/lcov-report/RolesPermission/DeleteRoleModal.tsx.html +328 -0
  134. package/coverage/lcov-report/RolesPermission/RolesPermission.tsx.html +1732 -0
  135. package/coverage/lcov-report/RolesPermission/index.html +116 -0
  136. package/coverage/lcov-report/SearchSelect/SearchSelect.tsx.html +2575 -0
  137. package/coverage/lcov-report/SearchSelect/SelectTruncatedLabel.tsx.html +202 -0
  138. package/coverage/lcov-report/SearchSelect/index.html +146 -0
  139. package/coverage/lcov-report/SearchSelect/searchSelectSize.ts.html +496 -0
  140. package/coverage/lcov-report/Table/CompactSelect.tsx.html +379 -0
  141. package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +514 -0
  142. package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +373 -0
  143. package/coverage/lcov-report/Table/Components/Pagination.tsx.html +574 -0
  144. package/coverage/lcov-report/Table/Components/TableActions.tsx.html +574 -0
  145. package/coverage/lcov-report/Table/Components/TableBody.tsx.html +1027 -0
  146. package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +397 -0
  147. package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +1060 -0
  148. package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +361 -0
  149. package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +337 -0
  150. package/coverage/lcov-report/Table/Components/index.html +266 -0
  151. package/coverage/lcov-report/Table/Components/useDebounce.ts.html +178 -0
  152. package/coverage/lcov-report/Table/Components/useTable.ts.html +778 -0
  153. package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +1810 -0
  154. package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +178 -0
  155. package/coverage/lcov-report/Table/Table.tsx.html +1567 -0
  156. package/coverage/lcov-report/Table/TableProps.tsx.html +658 -0
  157. package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +619 -0
  158. package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +229 -0
  159. package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +532 -0
  160. package/coverage/lcov-report/Table/TableSettings/index.html +146 -0
  161. package/coverage/lcov-report/Table/TableToDo.tsx.html +973 -0
  162. package/coverage/lcov-report/Table/TextOperationControls.tsx.html +271 -0
  163. package/coverage/lcov-report/Table/filterTypes.ts.html +97 -0
  164. package/coverage/lcov-report/Table/index.html +176 -0
  165. package/coverage/lcov-report/Table/settings/ManageColumns.tsx.html +856 -0
  166. package/coverage/lcov-report/Table/settings/index.html +116 -0
  167. package/coverage/lcov-report/Tag/Tag.tsx.html +256 -0
  168. package/coverage/lcov-report/Tag/index.html +116 -0
  169. package/coverage/lcov-report/Theme/buildBrandTokens.ts.html +175 -0
  170. package/coverage/lcov-report/Theme/chartColorsFromTheme.ts.html +214 -0
  171. package/coverage/lcov-report/Theme/index.html +131 -0
  172. package/coverage/lcov-report/Theme/useCustomTheme.ts.html +100 -0
  173. package/coverage/lcov-report/ToolTip/ToolTip.tsx.html +286 -0
  174. package/coverage/lcov-report/ToolTip/index.html +116 -0
  175. package/coverage/lcov-report/UserDetails/AddUserModal.tsx.html +709 -0
  176. package/coverage/lcov-report/UserDetails/ChangeRoleModal.tsx.html +505 -0
  177. package/coverage/lcov-report/UserDetails/index.html +116 -0
  178. package/coverage/lcov-report/Utils/functions.ts.html +106 -0
  179. package/coverage/lcov-report/Utils/index.html +116 -0
  180. package/coverage/lcov-report/Utils/table.ts.html +1189 -0
  181. package/coverage/lcov-report/base.css +224 -0
  182. package/coverage/lcov-report/block-navigation.js +87 -0
  183. package/coverage/lcov-report/favicon.png +0 -0
  184. package/coverage/lcov-report/index.html +251 -0
  185. package/coverage/lcov-report/prettify.css +1 -0
  186. package/coverage/lcov-report/prettify.js +2 -0
  187. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  188. package/coverage/lcov-report/sorter.js +210 -0
  189. package/coverage/lcov.info +981 -0
  190. package/dist/App.d.ts +4 -0
  191. package/dist/App.d.ts.map +1 -1
  192. package/dist/App.js +95 -0
  193. package/dist/Assets/defaultLogo.d.ts.map +1 -1
  194. package/dist/Assets/defaultLogo.js +1 -3
  195. package/dist/Assets/defaultLogo.tsx +26 -0
  196. package/dist/Components/Accordion/Accordion.d.ts.map +1 -1
  197. package/dist/Components/Accordion/Accordion.js +15 -12
  198. package/dist/Components/Accordion/accordionColors.d.ts +6 -0
  199. package/dist/Components/Accordion/accordionColors.d.ts.map +1 -0
  200. package/dist/Components/Accordion/accordionColors.js +20 -0
  201. package/dist/Components/AlertDialog/AlertDialog.d.ts.map +1 -1
  202. package/dist/Components/AlertDialog/AlertDialog.js +4 -1
  203. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.d.ts.map +1 -1
  204. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.js +5 -1
  205. package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.d.ts.map +1 -1
  206. package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.js +6 -4
  207. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.d.ts.map +1 -1
  208. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.js +5 -1
  209. package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.d.ts.map +1 -1
  210. package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.js +5 -1
  211. package/dist/Components/Button/Button.styles.d.ts.map +1 -1
  212. package/dist/Components/Button/Button.styles.js +100 -47
  213. package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.d.ts.map +1 -1
  214. package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +11 -3
  215. package/dist/Components/Card/PaymentCard/PaymentCard.d.ts.map +1 -1
  216. package/dist/Components/Card/PaymentCard/PaymentCard.js +17 -12
  217. package/dist/Components/Checkbox/Checkbox.d.ts.map +1 -1
  218. package/dist/Components/Checkbox/Checkbox.js +2 -1
  219. package/dist/Components/Common/ErrorComponent.d.ts.map +1 -1
  220. package/dist/Components/Common/ErrorComponent.js +7 -3
  221. package/dist/Components/Common/ErrorMessage.d.ts.map +1 -1
  222. package/dist/Components/Common/ErrorMessage.js +7 -1
  223. package/dist/Components/Common/FormLabel.d.ts.map +1 -1
  224. package/dist/Components/Common/FormLabel.js +7 -1
  225. package/dist/Components/Common/Label.d.ts.map +1 -1
  226. package/dist/Components/Common/Label.js +4 -2
  227. package/dist/Components/Common/fieldStyles.d.ts.map +1 -1
  228. package/dist/Components/Common/fieldStyles.js +3 -1
  229. package/dist/Components/CopyButton/CopyButton.d.ts.map +1 -1
  230. package/dist/Components/CopyButton/CopyButton.js +14 -6
  231. package/dist/Components/CustomModulesTable/CustomModulesTable.d.ts.map +1 -1
  232. package/dist/Components/CustomModulesTable/CustomModulesTable.js +9 -6
  233. package/dist/Components/CustomModulesTable/DeleteModuleModal.d.ts.map +1 -1
  234. package/dist/Components/CustomModulesTable/DeleteModuleModal.js +2 -2
  235. package/dist/Components/CustomModulesTable/EditModuleModal.d.ts.map +1 -1
  236. package/dist/Components/CustomModulesTable/EditModuleModal.js +2 -2
  237. package/dist/Components/DatePicker/CalendarPanel.d.ts.map +1 -1
  238. package/dist/Components/DatePicker/CalendarPanel.js +13 -4
  239. package/dist/Components/DatePicker/DatePicker.js +1 -1
  240. package/dist/Components/DatePicker/RangeDatePicker.d.ts.map +1 -1
  241. package/dist/Components/DatePicker/RangeDatePicker.js +1 -1
  242. package/dist/Components/DatePicker/SingleDatePicker.d.ts.map +1 -1
  243. package/dist/Components/DatePicker/SingleDatePicker.js +11 -9
  244. package/dist/Components/DatePicker/TimeOnlyPicker.d.ts.map +1 -1
  245. package/dist/Components/DatePicker/TimeOnlyPicker.js +5 -3
  246. package/dist/Components/DatePicker/TimePicker.d.ts.map +1 -1
  247. package/dist/Components/DatePicker/TimePicker.js +14 -2
  248. package/dist/Components/DatePicker/TimePickerInput.d.ts.map +1 -1
  249. package/dist/Components/DatePicker/TimePickerInput.js +9 -1
  250. package/dist/Components/Drawer/Drawer.d.ts.map +1 -1
  251. package/dist/Components/Drawer/Drawer.js +4 -1
  252. package/dist/Components/Dropdown/DropDown.js +5 -5
  253. package/dist/Components/Editor/Editor.d.ts.map +1 -1
  254. package/dist/Components/Editor/Editor.js +32 -2
  255. package/dist/Components/Editor/joditThemeVars.d.ts +21 -0
  256. package/dist/Components/Editor/joditThemeVars.d.ts.map +1 -0
  257. package/dist/Components/Editor/joditThemeVars.js +70 -0
  258. package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.d.ts.map +1 -1
  259. package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +5 -1
  260. package/dist/Components/EmptyState/EmptyState.js +3 -3
  261. package/dist/Components/FieldSelectModal/FieldSelectModal.d.ts.map +1 -1
  262. package/dist/Components/FieldSelectModal/FieldSelectModal.js +4 -2
  263. package/dist/Components/FilePreview/FilePreview.d.ts.map +1 -1
  264. package/dist/Components/FilePreview/FilePreview.js +7 -1
  265. package/dist/Components/FileUpload/FileUpload.js +4 -4
  266. package/dist/Components/FileUploader/FileUploader.d.ts.map +1 -1
  267. package/dist/Components/FileUploader/FileUploader.js +7 -2
  268. package/dist/Components/FilterSidebar/FilterSidebar.d.ts.map +1 -1
  269. package/dist/Components/FilterSidebar/FilterSidebar.js +166 -142
  270. package/dist/Components/FilterSidebar/filterHoverStyle.d.ts +12 -0
  271. package/dist/Components/FilterSidebar/filterHoverStyle.d.ts.map +1 -0
  272. package/dist/Components/FilterSidebar/filterHoverStyle.js +14 -0
  273. package/dist/Components/Form/FormWrapper.js +2 -2
  274. package/dist/Components/Header/Header.d.ts +17 -0
  275. package/dist/Components/Header/Header.d.ts.map +1 -1
  276. package/dist/Components/Header/Header.js +34 -6
  277. package/dist/Components/Header/HeaderActions.d.ts.map +1 -1
  278. package/dist/Components/Header/HeaderActions.js +3 -2
  279. package/dist/Components/Header/components/desktopMenu.d.ts.map +1 -1
  280. package/dist/Components/Header/components/desktopMenu.js +21 -5
  281. package/dist/Components/Input/Input/Input.d.ts.map +1 -1
  282. package/dist/Components/Input/Input/Input.js +6 -2
  283. package/dist/Components/Input/Switch/InputSwitch.d.ts.map +1 -1
  284. package/dist/Components/Input/Switch/InputSwitch.js +4 -2
  285. package/dist/Components/Input/TextInput.styles.d.ts.map +1 -1
  286. package/dist/Components/Input/TextInput.styles.js +6 -1
  287. package/dist/Components/InputTextArea/InputTextArea.style.d.ts.map +1 -1
  288. package/dist/Components/InputTextArea/InputTextArea.style.js +4 -1
  289. package/dist/Components/KanbanBoard/AccountCard.js +4 -4
  290. package/dist/Components/LazyWrapper/LazyWrapper.js +1 -2
  291. package/dist/Components/Modal/Modal.d.ts.map +1 -1
  292. package/dist/Components/Modal/Modal.js +4 -1
  293. package/dist/Components/MoreItems/MoreItems.d.ts.map +1 -1
  294. package/dist/Components/MoreItems/MoreItems.js +10 -4
  295. package/dist/Components/MultiSelect/MultiSelect.d.ts.map +1 -1
  296. package/dist/Components/MultiSelect/MultiSelect.js +5 -2
  297. package/dist/Components/NavigationBar/NavigationBar.d.ts.map +1 -1
  298. package/dist/Components/NavigationBar/NavigationBar.js +8 -2
  299. package/dist/Components/NoteTextArea/NoteTextArea.d.ts.map +1 -1
  300. package/dist/Components/NoteTextArea/NoteTextArea.js +5 -2
  301. package/dist/Components/Notification/Notification.d.ts.map +1 -1
  302. package/dist/Components/Notification/Notification.js +9 -5
  303. package/dist/Components/NumberInput/NumberInput.styles.d.ts.map +1 -1
  304. package/dist/Components/NumberInput/NumberInput.styles.js +4 -1
  305. package/dist/Components/OrgSwitcher/OrgSwitcher.d.ts.map +1 -1
  306. package/dist/Components/OrgSwitcher/OrgSwitcher.js +14 -7
  307. package/dist/Components/OrganizationDetails/CreateOrgModal.d.ts.map +1 -1
  308. package/dist/Components/OrganizationDetails/CreateOrgModal.js +1 -1
  309. package/dist/Components/OrganizationDetails/DeleteOrgModal.js +2 -2
  310. package/dist/Components/OrganizationDetails/OrganizationDetails.js +11 -11
  311. package/dist/Components/PdfViewer/PdfViewer.js +1 -2
  312. package/dist/Components/PinInput/PinInput.d.ts.map +1 -1
  313. package/dist/Components/PinInput/PinInput.js +5 -1
  314. package/dist/Components/PinInputs/PinInputs.d.ts.map +1 -1
  315. package/dist/Components/PinInputs/PinInputs.js +3 -1
  316. package/dist/Components/ProductCard/ProductCard.js +1 -1
  317. package/dist/Components/ProductCard/ProductPrice.d.ts.map +1 -1
  318. package/dist/Components/ProductCard/ProductPrice.js +7 -4
  319. package/dist/Components/ProductCard/ProductReview.d.ts.map +1 -1
  320. package/dist/Components/ProductCard/ProductReview.js +7 -3
  321. package/dist/Components/ProductCard/ProductTags.js +1 -1
  322. package/dist/Components/ProductDetails/ProductDtlPrice.d.ts.map +1 -1
  323. package/dist/Components/ProductDetails/ProductDtlPrice.js +4 -1
  324. package/dist/Components/ProductDetails/ProductImageSlider.js +4 -4
  325. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.d.ts.map +1 -1
  326. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +10 -7
  327. package/dist/Components/Reorder/Reorder.js +2 -1
  328. package/dist/Components/RolesPermission/DeleteRoleModal.d.ts.map +1 -1
  329. package/dist/Components/RolesPermission/DeleteRoleModal.js +4 -2
  330. package/dist/Components/RolesPermission/RolesPermission.js +6 -6
  331. package/dist/Components/SearchSelect/SearchSelect.d.ts.map +1 -1
  332. package/dist/Components/SearchSelect/SearchSelect.js +4 -4
  333. package/dist/Components/Select/Select.styles.d.ts.map +1 -1
  334. package/dist/Components/Select/Select.styles.js +4 -1
  335. package/dist/Components/SelectSearch/SelectSearch.d.ts.map +1 -1
  336. package/dist/Components/SelectSearch/SelectSearch.js +5 -3
  337. package/dist/Components/SelectV2/SelectV2.d.ts +3 -0
  338. package/dist/Components/SelectV2/SelectV2.d.ts.map +1 -0
  339. package/dist/Components/SelectV2/SelectV2.js +185 -0
  340. package/dist/Components/SelectV2/SelectV2Props.d.ts +67 -0
  341. package/dist/Components/SelectV2/SelectV2Props.d.ts.map +1 -0
  342. package/dist/Components/SelectV2/SelectV2Props.js +2 -0
  343. package/dist/Components/SideBar/SecondaryBar.d.ts.map +1 -1
  344. package/dist/Components/SideBar/SecondaryBar.js +14 -3
  345. package/dist/Components/SideBar/SideBar.d.ts.map +1 -1
  346. package/dist/Components/SideBar/SideBar.js +19 -5
  347. package/dist/Components/SideBar/components/MenuItemBox.d.ts.map +1 -1
  348. package/dist/Components/SideBar/components/MenuItemBox.js +13 -9
  349. package/dist/Components/SideBar/components/MenuPopoverContent.d.ts.map +1 -1
  350. package/dist/Components/SideBar/components/MenuPopoverContent.js +7 -2
  351. package/dist/Components/SideBar/sidebarAccentColors.d.ts +21 -0
  352. package/dist/Components/SideBar/sidebarAccentColors.d.ts.map +1 -0
  353. package/dist/Components/SideBar/sidebarAccentColors.js +36 -0
  354. package/dist/Components/SignInActivityTable/SignInActivityTable.d.ts.map +1 -1
  355. package/dist/Components/SignInActivityTable/SignInActivityTable.js +7 -6
  356. package/dist/Components/StageProgress/StageProgress.d.ts.map +1 -1
  357. package/dist/Components/StageProgress/StageProgress.js +9 -4
  358. package/dist/Components/StageProgress/StageProgressProps.d.ts.map +1 -1
  359. package/dist/Components/StageProgress/StageProgressProps.js +13 -4
  360. package/dist/Components/StageProgress/StepperStage.js +1 -1
  361. package/dist/Components/Switch/Switch.d.ts.map +1 -1
  362. package/dist/Components/Switch/Switch.js +5 -3
  363. package/dist/Components/Table/Table.d.ts.map +1 -1
  364. package/dist/Components/Table/Table.js +9 -9
  365. package/dist/Components/Table/TableProps.d.ts +1 -0
  366. package/dist/Components/Table/TableProps.d.ts.map +1 -1
  367. package/dist/Components/Table/components/HeaderActions.d.ts.map +1 -1
  368. package/dist/Components/Table/components/HeaderActions.js +2 -1
  369. package/dist/Components/Table/components/TableActions.js +1 -1
  370. package/dist/Components/Table/components/TableBody.d.ts.map +1 -1
  371. package/dist/Components/Table/components/TableBody.js +21 -15
  372. package/dist/Components/Table/components/TableHeader.d.ts.map +1 -1
  373. package/dist/Components/Table/components/TableHeader.js +7 -4
  374. package/dist/Components/Table/components/tableRowHoverStyle.d.ts +13 -0
  375. package/dist/Components/Table/components/tableRowHoverStyle.d.ts.map +1 -0
  376. package/dist/Components/Table/components/tableRowHoverStyle.js +26 -0
  377. package/dist/Components/Table/filters/CompactSelect.d.ts.map +1 -1
  378. package/dist/Components/Table/filters/CompactSelect.js +4 -1
  379. package/dist/Components/Table/filters/LeftFilterPane.d.ts.map +1 -1
  380. package/dist/Components/Table/filters/LeftFilterPane.js +5 -4
  381. package/dist/Components/Tag/Tag.styles.d.ts.map +1 -1
  382. package/dist/Components/Tag/Tag.styles.js +21 -8
  383. package/dist/Components/Timeline/Timeline.d.ts.map +1 -1
  384. package/dist/Components/Timeline/Timeline.js +18 -17
  385. package/dist/Components/Toaster/Toaster.d.ts.map +1 -1
  386. package/dist/Components/Toaster/Toaster.js +8 -5
  387. package/dist/Components/Toggle/TableToggle.js +2 -2
  388. package/dist/Components/ToolTip/ToolTip.d.ts.map +1 -1
  389. package/dist/Components/ToolTip/ToolTip.js +14 -2
  390. package/dist/Components/Trail/EditableCell.js +1 -1
  391. package/dist/Components/UpgradeButton/UpgradeButton.d.ts.map +1 -1
  392. package/dist/Components/UpgradeButton/UpgradeButton.js +9 -4
  393. package/dist/Components/UserDetails/AddUserModal.d.ts.map +1 -1
  394. package/dist/Components/UserDetails/AddUserModal.js +1 -1
  395. package/dist/Components/UserDetails/ChangeRoleModal.js +2 -2
  396. package/dist/Components/UserDetails/DeactivateConfirmModal.d.ts.map +1 -1
  397. package/dist/Components/UserDetails/DeactivateConfirmModal.js +5 -2
  398. package/dist/Components/UserDetails/UserDetails.d.ts.map +1 -1
  399. package/dist/Components/UserDetails/UserDetails.js +15 -8
  400. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.d.ts.map +1 -1
  401. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +4 -1
  402. package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts +2 -2
  403. package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts.map +1 -1
  404. package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +29 -4
  405. package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +18 -0
  406. package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts.map +1 -1
  407. package/dist/Layout.d.ts +3 -0
  408. package/dist/Layout.js +286 -0
  409. package/dist/Pages/TInput.d.ts +3 -0
  410. package/dist/Pages/TInput.d.ts.map +1 -0
  411. package/dist/Pages/TInput.js +20 -0
  412. package/dist/Pages/accordion.d.ts +3 -0
  413. package/dist/Pages/accordion.d.ts.map +1 -0
  414. package/dist/Pages/accordion.js +21 -0
  415. package/dist/Pages/alertdialog.d.ts +3 -0
  416. package/dist/Pages/alertdialog.d.ts.map +1 -0
  417. package/dist/Pages/alertdialog.js +53 -0
  418. package/dist/Pages/button.d.ts +3 -0
  419. package/dist/Pages/button.d.ts.map +1 -0
  420. package/dist/Pages/button.js +32 -0
  421. package/dist/Pages/card.d.ts +3 -0
  422. package/dist/Pages/card.d.ts.map +1 -0
  423. package/dist/Pages/card.js +102 -0
  424. package/dist/Pages/chart.d.ts +4 -0
  425. package/dist/Pages/chart.d.ts.map +1 -0
  426. package/dist/Pages/chart.js +25 -0
  427. package/dist/Pages/checkbox.d.ts +3 -0
  428. package/dist/Pages/checkbox.d.ts.map +1 -0
  429. package/dist/Pages/checkbox.js +11 -0
  430. package/dist/Pages/contactForm.d.ts +3 -0
  431. package/dist/Pages/contactForm.d.ts.map +1 -0
  432. package/dist/Pages/contactForm.js +15 -0
  433. package/dist/Pages/customModulesTable.d.ts +4 -0
  434. package/dist/Pages/customModulesTable.d.ts.map +1 -0
  435. package/dist/Pages/customModulesTable.js +25 -0
  436. package/dist/Pages/datePick.d.ts +3 -0
  437. package/dist/Pages/datePick.d.ts.map +1 -0
  438. package/dist/Pages/datePick.js +49 -0
  439. package/dist/Pages/drawer.d.ts +3 -0
  440. package/dist/Pages/drawer.d.ts.map +1 -0
  441. package/dist/Pages/drawer.js +53 -0
  442. package/dist/Pages/dropdown.d.ts +3 -0
  443. package/dist/Pages/dropdown.d.ts.map +1 -0
  444. package/dist/Pages/dropdown.js +21 -0
  445. package/dist/Pages/editor.d.ts +3 -0
  446. package/dist/Pages/editor.d.ts.map +1 -0
  447. package/dist/Pages/editor.js +13 -0
  448. package/dist/Pages/feedback.d.ts +2 -0
  449. package/dist/Pages/feedback.d.ts.map +1 -0
  450. package/dist/Pages/feedback.js +12 -0
  451. package/dist/Pages/fileUpload.d.ts +2 -0
  452. package/dist/Pages/fileUpload.d.ts.map +1 -0
  453. package/dist/Pages/fileUpload.js +36 -0
  454. package/dist/Pages/input.d.ts +3 -0
  455. package/dist/Pages/input.d.ts.map +1 -0
  456. package/dist/Pages/input.js +48 -0
  457. package/dist/Pages/kanbanboard.d.ts +3 -0
  458. package/dist/Pages/kanbanboard.d.ts.map +1 -0
  459. package/dist/Pages/kanbanboard.js +182 -0
  460. package/dist/Pages/modal.d.ts +3 -0
  461. package/dist/Pages/modal.d.ts.map +1 -0
  462. package/dist/Pages/modal.js +61 -0
  463. package/dist/Pages/multiSelect.d.ts +3 -0
  464. package/dist/Pages/multiSelect.d.ts.map +1 -0
  465. package/dist/Pages/multiSelect.js +22 -0
  466. package/dist/Pages/noteArea.d.ts +3 -0
  467. package/dist/Pages/noteArea.d.ts.map +1 -0
  468. package/dist/Pages/noteArea.js +26 -0
  469. package/dist/Pages/notification.d.ts +3 -0
  470. package/dist/Pages/notification.d.ts.map +1 -0
  471. package/dist/Pages/notification.js +37 -0
  472. package/dist/Pages/numberInput.d.ts +3 -0
  473. package/dist/Pages/numberInput.d.ts.map +1 -0
  474. package/dist/Pages/numberInput.js +16 -0
  475. package/dist/Pages/orgSwitcher.d.ts +4 -0
  476. package/dist/Pages/orgSwitcher.d.ts.map +1 -0
  477. package/dist/Pages/orgSwitcher.js +36 -0
  478. package/dist/Pages/organizationDetails.d.ts +4 -0
  479. package/dist/Pages/organizationDetails.d.ts.map +1 -0
  480. package/dist/Pages/organizationDetails.js +64 -0
  481. package/dist/Pages/photoViewer.d.ts +3 -0
  482. package/dist/Pages/photoViewer.d.ts.map +1 -0
  483. package/dist/Pages/photoViewer.js +12 -0
  484. package/dist/Pages/pinInputs.d.ts +3 -0
  485. package/dist/Pages/pinInputs.d.ts.map +1 -0
  486. package/dist/Pages/pinInputs.js +11 -0
  487. package/dist/Pages/productCaard.d.ts +3 -0
  488. package/dist/Pages/productCaard.d.ts.map +1 -0
  489. package/dist/Pages/productCaard.js +311 -0
  490. package/dist/Pages/productDetailCard.d.ts +3 -0
  491. package/dist/Pages/productDetailCard.d.ts.map +1 -0
  492. package/dist/Pages/productDetailCard.js +78 -0
  493. package/dist/Pages/productFilter.d.ts +3 -0
  494. package/dist/Pages/productFilter.d.ts.map +1 -0
  495. package/dist/Pages/productFilter.js +148 -0
  496. package/dist/Pages/progressbar.d.ts +3 -0
  497. package/dist/Pages/progressbar.d.ts.map +1 -0
  498. package/dist/Pages/progressbar.js +11 -0
  499. package/dist/Pages/radioButton.d.ts +3 -0
  500. package/dist/Pages/radioButton.d.ts.map +1 -0
  501. package/dist/Pages/radioButton.js +18 -0
  502. package/dist/Pages/rolesPermission.d.ts +4 -0
  503. package/dist/Pages/rolesPermission.d.ts.map +1 -0
  504. package/dist/Pages/rolesPermission.js +144 -0
  505. package/dist/Pages/search.d.ts +3 -0
  506. package/dist/Pages/search.d.ts.map +1 -0
  507. package/dist/Pages/search.js +21 -0
  508. package/dist/Pages/searchSelect.d.ts +3 -0
  509. package/dist/Pages/searchSelect.d.ts.map +1 -0
  510. package/dist/Pages/searchSelect.js +97 -0
  511. package/dist/Pages/select.d.ts +3 -0
  512. package/dist/Pages/select.d.ts.map +1 -0
  513. package/dist/Pages/select.js +20 -0
  514. package/dist/Pages/selectSearch.d.ts +3 -0
  515. package/dist/Pages/selectSearch.d.ts.map +1 -0
  516. package/dist/Pages/selectSearch.js +58 -0
  517. package/dist/Pages/signInActivityTable.d.ts +4 -0
  518. package/dist/Pages/signInActivityTable.d.ts.map +1 -0
  519. package/dist/Pages/signInActivityTable.js +17 -0
  520. package/dist/Pages/skeleton.d.ts +3 -0
  521. package/dist/Pages/skeleton.d.ts.map +1 -0
  522. package/dist/Pages/skeleton.js +12 -0
  523. package/dist/Pages/stageProgress.d.ts +4 -0
  524. package/dist/Pages/stageProgress.d.ts.map +1 -0
  525. package/dist/Pages/stageProgress.js +31 -0
  526. package/dist/Pages/switch.d.ts +3 -0
  527. package/dist/Pages/switch.d.ts.map +1 -0
  528. package/dist/Pages/switch.js +17 -0
  529. package/dist/Pages/table.d.ts +3 -0
  530. package/dist/Pages/table.d.ts.map +1 -0
  531. package/dist/Pages/table.js +182 -0
  532. package/dist/Pages/tag.d.ts +3 -0
  533. package/dist/Pages/tag.d.ts.map +1 -0
  534. package/dist/Pages/tag.js +27 -0
  535. package/dist/Pages/textArea.d.ts +3 -0
  536. package/dist/Pages/textArea.d.ts.map +1 -0
  537. package/dist/Pages/textArea.js +14 -0
  538. package/dist/Pages/tier1.d.ts +4 -0
  539. package/dist/Pages/tier1.d.ts.map +1 -0
  540. package/dist/Pages/tier1.js +86 -0
  541. package/dist/Pages/timeline.d.ts +3 -0
  542. package/dist/Pages/timeline.d.ts.map +1 -0
  543. package/dist/Pages/timeline.js +73 -0
  544. package/dist/Pages/tooltip.d.ts +3 -0
  545. package/dist/Pages/tooltip.d.ts.map +1 -0
  546. package/dist/Pages/tooltip.js +11 -0
  547. package/dist/Pages/toster.d.ts +3 -0
  548. package/dist/Pages/toster.d.ts.map +1 -0
  549. package/dist/Pages/toster.js +53 -0
  550. package/dist/Pages/upgradeButton.d.ts +4 -0
  551. package/dist/Pages/upgradeButton.d.ts.map +1 -0
  552. package/dist/Pages/upgradeButton.js +17 -0
  553. package/dist/Pages/userDetails.d.ts +4 -0
  554. package/dist/Pages/userDetails.d.ts.map +1 -0
  555. package/dist/Pages/userDetails.js +79 -0
  556. package/dist/Pages/verifyEmail.d.ts +3 -0
  557. package/dist/Pages/verifyEmail.d.ts.map +1 -0
  558. package/dist/Pages/verifyEmail.js +17 -0
  559. package/dist/Theme/chakra/Avatar.styles.d.ts +33 -0
  560. package/dist/Theme/chakra/Avatar.styles.d.ts.map +1 -0
  561. package/dist/Theme/chakra/Avatar.styles.js +28 -0
  562. package/dist/Theme/chakra/Drawer.styles.d.ts +32 -0
  563. package/dist/Theme/chakra/Drawer.styles.d.ts.map +1 -0
  564. package/dist/Theme/chakra/Drawer.styles.js +26 -0
  565. package/dist/Theme/chakra/Menu.styles.d.ts +70 -0
  566. package/dist/Theme/chakra/Menu.styles.d.ts.map +1 -0
  567. package/dist/Theme/chakra/Menu.styles.js +50 -0
  568. package/dist/Theme/chakra/Modal.styles.d.ts +32 -0
  569. package/dist/Theme/chakra/Modal.styles.d.ts.map +1 -0
  570. package/dist/Theme/chakra/Modal.styles.js +26 -0
  571. package/dist/Theme/chakra/Popover.styles.d.ts +37 -0
  572. package/dist/Theme/chakra/Popover.styles.d.ts.map +1 -0
  573. package/dist/Theme/chakra/Popover.styles.js +30 -0
  574. package/dist/Theme/chakra/Slider.styles.d.ts +31 -0
  575. package/dist/Theme/chakra/Slider.styles.d.ts.map +1 -0
  576. package/dist/Theme/chakra/Slider.styles.js +25 -0
  577. package/dist/Theme/chakra/Switch.styles.d.ts +31 -0
  578. package/dist/Theme/chakra/Switch.styles.d.ts.map +1 -0
  579. package/dist/Theme/chakra/Switch.styles.js +24 -0
  580. package/dist/Theme/chakra/Tabs.styles.d.ts +43 -0
  581. package/dist/Theme/chakra/Tabs.styles.d.ts.map +1 -0
  582. package/dist/Theme/chakra/Tabs.styles.js +41 -0
  583. package/dist/Theme/chakra/common.web.d.ts +171 -0
  584. package/dist/Theme/chakra/common.web.d.ts.map +1 -0
  585. package/dist/Theme/chakra/common.web.js +21 -0
  586. package/dist/Theme/chakra/componentStyles.d.ts +240 -0
  587. package/dist/Theme/chakra/componentStyles.d.ts.map +1 -0
  588. package/dist/Theme/chakra/componentStyles.js +150 -0
  589. package/dist/Theme/chakra/createBrandTheme.d.ts +18 -0
  590. package/dist/Theme/chakra/createBrandTheme.d.ts.map +1 -0
  591. package/dist/Theme/chakra/createBrandTheme.js +78 -0
  592. package/dist/Theme/chakra/fonts.web.d.ts +42 -0
  593. package/dist/Theme/chakra/fonts.web.d.ts.map +1 -0
  594. package/dist/Theme/chakra/fonts.web.js +15 -0
  595. package/dist/Theme/index.d.ts +29 -8
  596. package/dist/Theme/index.d.ts.map +1 -1
  597. package/dist/Theme/index.js +54 -22
  598. package/dist/Theme/provider/PixelizeThemeProvider.d.ts +46 -0
  599. package/dist/Theme/provider/PixelizeThemeProvider.d.ts.map +1 -0
  600. package/dist/Theme/provider/PixelizeThemeProvider.js +124 -0
  601. package/dist/Theme/provider/ThemeSwitcher.d.ts +8 -0
  602. package/dist/Theme/provider/ThemeSwitcher.d.ts.map +1 -0
  603. package/dist/Theme/provider/ThemeSwitcher.js +111 -0
  604. package/dist/Theme/provider/colorModeStorage.d.ts +10 -0
  605. package/dist/Theme/provider/colorModeStorage.d.ts.map +1 -0
  606. package/dist/Theme/provider/colorModeStorage.js +106 -0
  607. package/dist/Theme/provider/index.d.ts +6 -0
  608. package/dist/Theme/provider/index.d.ts.map +1 -0
  609. package/dist/Theme/provider/index.js +9 -0
  610. package/dist/Theme/provider/useThemeMode.d.ts +3 -0
  611. package/dist/Theme/provider/useThemeMode.d.ts.map +1 -0
  612. package/dist/Theme/provider/useThemeMode.js +13 -0
  613. package/dist/Theme/themeProps.d.ts +10 -373
  614. package/dist/Theme/themeProps.d.ts.map +1 -1
  615. package/dist/Theme/tokens/brands/emerald/palette.dark.d.ts +7 -0
  616. package/dist/Theme/tokens/brands/emerald/palette.dark.d.ts.map +1 -0
  617. package/dist/Theme/tokens/brands/emerald/palette.dark.js +13 -0
  618. package/dist/Theme/tokens/brands/emerald/palette.light.d.ts +375 -0
  619. package/dist/Theme/tokens/brands/emerald/palette.light.d.ts.map +1 -0
  620. package/dist/Theme/tokens/brands/emerald/palette.light.js +135 -0
  621. package/dist/Theme/tokens/brands/index.d.ts +28 -0
  622. package/dist/Theme/tokens/brands/index.d.ts.map +1 -0
  623. package/dist/Theme/tokens/brands/index.js +93 -0
  624. package/dist/Theme/tokens/brands/lavender/palette.dark.d.ts +7 -0
  625. package/dist/Theme/tokens/brands/lavender/palette.dark.d.ts.map +1 -0
  626. package/dist/Theme/tokens/brands/lavender/palette.dark.js +13 -0
  627. package/dist/Theme/tokens/brands/lavender/palette.light.d.ts +375 -0
  628. package/dist/Theme/tokens/brands/lavender/palette.light.d.ts.map +1 -0
  629. package/dist/Theme/tokens/brands/lavender/palette.light.js +316 -0
  630. package/dist/Theme/tokens/brands/meadow/palette.dark.d.ts +7 -0
  631. package/dist/Theme/tokens/brands/meadow/palette.dark.d.ts.map +1 -0
  632. package/dist/Theme/tokens/brands/meadow/palette.dark.js +13 -0
  633. package/dist/Theme/tokens/brands/meadow/palette.light.d.ts +375 -0
  634. package/dist/Theme/tokens/brands/meadow/palette.light.d.ts.map +1 -0
  635. package/dist/Theme/tokens/brands/meadow/palette.light.js +133 -0
  636. package/dist/Theme/tokens/brands/radiant/palette.dark.d.ts +7 -0
  637. package/dist/Theme/tokens/brands/radiant/palette.dark.d.ts.map +1 -0
  638. package/dist/Theme/tokens/brands/radiant/palette.dark.js +13 -0
  639. package/dist/Theme/tokens/brands/radiant/palette.light.d.ts +375 -0
  640. package/dist/Theme/tokens/brands/radiant/palette.light.d.ts.map +1 -0
  641. package/dist/Theme/tokens/brands/radiant/palette.light.js +135 -0
  642. package/dist/Theme/tokens/brands/rosewood/palette.dark.d.ts +7 -0
  643. package/dist/Theme/tokens/brands/rosewood/palette.dark.d.ts.map +1 -0
  644. package/dist/Theme/tokens/brands/rosewood/palette.dark.js +13 -0
  645. package/dist/Theme/tokens/brands/rosewood/palette.light.d.ts +375 -0
  646. package/dist/Theme/tokens/brands/rosewood/palette.light.d.ts.map +1 -0
  647. package/dist/Theme/tokens/brands/rosewood/palette.light.js +139 -0
  648. package/dist/Theme/tokens/brands/skyline/palette.dark.d.ts +7 -0
  649. package/dist/Theme/tokens/brands/skyline/palette.dark.d.ts.map +1 -0
  650. package/dist/Theme/tokens/brands/skyline/palette.dark.js +13 -0
  651. package/dist/Theme/tokens/brands/skyline/palette.light.d.ts +375 -0
  652. package/dist/Theme/tokens/brands/skyline/palette.light.d.ts.map +1 -0
  653. package/dist/Theme/tokens/brands/skyline/palette.light.js +133 -0
  654. package/dist/Theme/tokens/brands/slate/palette.dark.d.ts +7 -0
  655. package/dist/Theme/tokens/brands/slate/palette.dark.d.ts.map +1 -0
  656. package/dist/Theme/tokens/brands/slate/palette.dark.js +13 -0
  657. package/dist/Theme/tokens/brands/slate/palette.light.d.ts +375 -0
  658. package/dist/Theme/tokens/brands/slate/palette.light.d.ts.map +1 -0
  659. package/dist/Theme/tokens/brands/slate/palette.light.js +137 -0
  660. package/dist/Theme/tokens/brands/storefront/palette.dark.d.ts +7 -0
  661. package/dist/Theme/tokens/brands/storefront/palette.dark.d.ts.map +1 -0
  662. package/dist/Theme/tokens/brands/storefront/palette.dark.js +13 -0
  663. package/dist/Theme/tokens/brands/storefront/palette.light.d.ts +375 -0
  664. package/dist/Theme/tokens/brands/storefront/palette.light.d.ts.map +1 -0
  665. package/dist/Theme/tokens/brands/storefront/palette.light.js +127 -0
  666. package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts +204 -0
  667. package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts.map +1 -0
  668. package/dist/Theme/tokens/brands/zinc/palette.dark.js +204 -0
  669. package/dist/Theme/tokens/brands/zinc/palette.light.d.ts +375 -0
  670. package/dist/Theme/tokens/brands/zinc/palette.light.d.ts.map +1 -0
  671. package/dist/Theme/tokens/brands/zinc/palette.light.js +383 -0
  672. package/dist/Theme/tokens/builders/accentText.d.ts +56 -0
  673. package/dist/Theme/tokens/builders/accentText.d.ts.map +1 -0
  674. package/dist/Theme/tokens/builders/accentText.js +92 -0
  675. package/dist/Theme/tokens/builders/buildBrandTokens.d.ts +16 -0
  676. package/dist/Theme/tokens/builders/buildBrandTokens.d.ts.map +1 -0
  677. package/dist/Theme/tokens/builders/buildBrandTokens.js +33 -0
  678. package/dist/Theme/tokens/builders/buildDarkPalette.d.ts +23 -0
  679. package/dist/Theme/tokens/builders/buildDarkPalette.d.ts.map +1 -0
  680. package/dist/Theme/tokens/builders/buildDarkPalette.js +282 -0
  681. package/dist/Theme/tokens/builders/chartColorsFromTheme.d.ts +17 -0
  682. package/dist/Theme/tokens/builders/chartColorsFromTheme.d.ts.map +1 -0
  683. package/dist/Theme/tokens/builders/chartColorsFromTheme.js +26 -0
  684. package/dist/Theme/tokens/builders/color.d.ts +50 -0
  685. package/dist/Theme/tokens/builders/color.d.ts.map +1 -0
  686. package/dist/Theme/tokens/builders/color.js +156 -0
  687. package/dist/Theme/tokens/builders/index.d.ts +6 -0
  688. package/dist/Theme/tokens/builders/index.d.ts.map +1 -0
  689. package/dist/Theme/tokens/builders/index.js +21 -0
  690. package/dist/Theme/tokens/index.d.ts +15 -0
  691. package/dist/Theme/tokens/index.d.ts.map +1 -0
  692. package/dist/Theme/tokens/index.js +30 -0
  693. package/dist/Theme/tokens/primitives/breakpoints.d.ts +9 -0
  694. package/dist/Theme/tokens/primitives/breakpoints.d.ts.map +1 -0
  695. package/dist/Theme/tokens/primitives/breakpoints.js +10 -0
  696. package/dist/Theme/tokens/primitives/index.d.ts +10 -0
  697. package/dist/Theme/tokens/primitives/index.d.ts.map +1 -0
  698. package/dist/Theme/tokens/primitives/index.js +27 -0
  699. package/dist/Theme/tokens/primitives/letterSpacings.d.ts +10 -0
  700. package/dist/Theme/tokens/primitives/letterSpacings.d.ts.map +1 -0
  701. package/dist/Theme/tokens/primitives/letterSpacings.js +11 -0
  702. package/dist/Theme/tokens/primitives/lineHeights.d.ts +19 -0
  703. package/dist/Theme/tokens/primitives/lineHeights.d.ts.map +1 -0
  704. package/dist/Theme/tokens/primitives/lineHeights.js +20 -0
  705. package/dist/Theme/tokens/primitives/radii.d.ts +13 -0
  706. package/dist/Theme/tokens/primitives/radii.d.ts.map +1 -0
  707. package/dist/Theme/tokens/primitives/radii.js +14 -0
  708. package/dist/Theme/tokens/primitives/shadows.d.ts +16 -0
  709. package/dist/Theme/tokens/primitives/shadows.d.ts.map +1 -0
  710. package/dist/Theme/tokens/primitives/shadows.js +17 -0
  711. package/dist/Theme/tokens/primitives/sizes.d.ts +63 -0
  712. package/dist/Theme/tokens/primitives/sizes.d.ts.map +1 -0
  713. package/dist/Theme/tokens/primitives/sizes.js +39 -0
  714. package/dist/Theme/tokens/primitives/space.d.ts +34 -0
  715. package/dist/Theme/tokens/primitives/space.d.ts.map +1 -0
  716. package/dist/Theme/tokens/primitives/space.js +35 -0
  717. package/dist/Theme/tokens/primitives/typography.d.ts +73 -0
  718. package/dist/Theme/tokens/primitives/typography.d.ts.map +1 -0
  719. package/dist/Theme/tokens/primitives/typography.js +43 -0
  720. package/dist/Theme/tokens/primitives/zIndices.d.ts +17 -0
  721. package/dist/Theme/tokens/primitives/zIndices.d.ts.map +1 -0
  722. package/dist/Theme/tokens/primitives/zIndices.js +18 -0
  723. package/dist/Theme/tokens/types.d.ts +116 -0
  724. package/dist/Theme/tokens/types.d.ts.map +1 -0
  725. package/dist/Theme/tokens/types.js +8 -0
  726. package/dist/Utils/table.d.ts +9 -2
  727. package/dist/Utils/table.d.ts.map +1 -1
  728. package/dist/Utils/table.js +23 -7
  729. package/dist/bootstrap.d.ts +2 -0
  730. package/dist/bootstrap.js +16 -0
  731. package/dist/index.d.ts +13 -1
  732. package/dist/index.d.ts.map +1 -1
  733. package/dist/index.js +54 -1
  734. package/eslint.config.js +48 -0
  735. package/index.html +13 -0
  736. package/package.json +2 -6
  737. package/vite.config.ts +13 -0
@@ -0,0 +1,431 @@
1
+ # Theme
2
+
3
+ ## Purpose
4
+
5
+ Nine brand presets (lavender, meadow, radiant, skyline, slate, emerald, rosewood, storefront, zinc),
6
+ each with a **light and dark palette**; `useCustomTheme`, the legacy `withTheme` HOC,
7
+ `PixelizeThemeProvider` + `useThemeMode` + `ThemeSwitcher`, and the pure token layer shared with the
8
+ mobile design library.
9
+
10
+ ## Key paths
11
+
12
+ - `src/Theme/tokens/` — **pure, platform-agnostic** (no Chakra/React/CSS imports)
13
+ - `types.ts` — `PaletteProps`, `ThemeName`, `ColorMode`, `ColorScale`
14
+ - `primitives/` — space, sizes, radii, shadows, typography, breakpoints, zIndices
15
+ - `builders/` — `color.ts` (hex/HSL/WCAG math), `buildDarkPalette.ts`
16
+ - `brands/<brand>/palette.light.ts` + `palette.dark.ts`
17
+ - `src/Theme/chakra/` — **web-only** binding: `createBrandTheme`, `componentStyles`, `fonts.web.ts`
18
+ - `src/Theme/provider/` — `PixelizeThemeProvider`, `useThemeMode`, `ThemeSwitcher`
19
+ - `src/Theme/useCustomTheme.ts` — hook read by ~127 components
20
+ - `src/Theme/index.ts` — `ThemesList` (light) + `brandThemes` (light+dark)
21
+ - `src/withTheme.tsx`
22
+ - Exports: `useCustomTheme`, `ThemesList`, `withTheme`, `PixelizeThemeProvider`, `useThemeMode`,
23
+ `ThemeSwitcher`, `brandThemes`, `lightPalettes`, `darkPalettes`, `palettes`, `themeNames`,
24
+ `buildDarkPalette`
25
+ - Also exported (Wave D follow-up, see below): the WCAG contrast helpers `isDarkCanvas`,
26
+ `onFilled`, `onGradient`, `accentTextOnCanvas`, `pickAccentText`, `AA_NORMAL_TEXT`,
27
+ `DARK_CANVAS_LUMINANCE` (`builders/accentText.ts`) and the pure color-math primitives
28
+ `relativeLuminance`, `contrastRatio`, `hexToRgb`, `hexToRgba`, `compositeOver`, `rgbToHex`,
29
+ `rgbToHsl`, `hslToRgb`, `hexToHsl`, `hslToHex`, `withLightness`, `mix` + types `Rgb`/`Hsl`
30
+ (`builders/color.ts`)
31
+
32
+ ## How dark mode works
33
+
34
+ Dark mode **swaps which palette the theme carries** (`brandThemes[brand][light|dark]`) rather than
35
+ using Chakra `semanticTokens` / `_dark`. This is deliberate: components interpolate **resolved hex**
36
+ from `useCustomTheme()`, and `componentStyles` variants are functions of `({ theme })` — so both
37
+ follow the active palette with **zero per-component edits**.
38
+
39
+ Dark palettes are **derived** from each brand's own light palette by `buildDarkPalette`, so brand hue
40
+ carries through. Structural ramps (background/text/border/…) are rebuilt at explicit lightness
41
+ targets around the brand hue; utility hues are reversed; accents are **adaptively lifted** to
42
+ maximize canvas contrast without ever regressing the white-on-accent label below
43
+ `min(4.5, lightModeContrast)`.
44
+
45
+ ## Key rules
46
+
47
+ - **`tokens/` must never import Chakra, React, or CSS** — it is copy-paste portable to the mobile
48
+ design library. Web-only concerns live in `chakra/`.
49
+ - **Never hardcode a hex in a component** — read from `useCustomTheme()`, or it is stuck in light mode.
50
+ - **`colors.white` is a foreground token** (the label on a filled button) and stays white in dark.
51
+ For a white *surface* use `colors.background[50]` — identical `#ffffff` in light, dark-aware.
52
+ - `withTheme` stays **light-only** so existing consumer apps are visually unchanged; dark is opt-in
53
+ via `PixelizeThemeProvider` (defaults to **`system`**).
54
+ - `src/index.ts` is **append-only** — `src/index.publicApi.test.ts` asserts every previously
55
+ published name still exists (consumer contract guard).
56
+ - Chart colors from theme via `chartColorsFromTheme`.
57
+
58
+ ## Recent changes (WCAG contrast + dark-mode pass)
59
+
60
+ - **Badge** is now themed in `chakra/componentStyles.ts` (no `Components/Badge/` family — style
61
+ config lives here). `solid`/`subtle` variants guard non-hex `colorScheme` swatches (Chakra's
62
+ built-in `blackAlpha`/`whiteAlpha` are `rgba()` strings, not hex — `isHexColor()` falls back to
63
+ `swatch?.[800]` instead of throwing). `subtle` also verifies `contrastRatio(accent, bg) >= 4.5`
64
+ before using the brand-hue accent from `accentTextOnCanvas`, else falls back to `onFilled()`
65
+ (provably-always-AA) — fixes a near-miss (measured 4.42, needs 4.5) on the yellow scale in dark mode.
66
+ - `tokens/builders/accentText.ts`: `pickAccentText`/`accentTextOnCanvas` now take
67
+ `primary: ColorScale | undefined` and return a safe white/black fallback instead of throwing
68
+ when the scale is missing (regression: some call sites had dropped defensive `?.` chaining).
69
+ New `onFilled(fill, white, black)` export — provably clears AA against any fill; used by Badge.
70
+ - 4x `brands/{emerald,meadow,radiant,rosewood}/palette.light.ts`: `gray[500]` (the de-facto
71
+ muted-text token, ~43 call sites) retuned to clear AA (>=4.5) against every `backgroundColor`
72
+ surface actually rendered as a `bg=` today (main/secondary/light/subtle), while staying
73
+ lighter than `gray[600]` (ramp order preserved). See "Known gaps" below for what this did
74
+ **not** cover.
75
+ - `tokens/builders/chartColorsFromTheme.ts`: removed unused `chartTooltipBackground`/
76
+ `chartTooltipForeground` exports (dead code — no callers after `ApexLineChart.tsx` stopped
77
+ using them in this same pass).
78
+
79
+ ## Wave D — WCAG follow-up pass
80
+
81
+ - `gray[500]` retune (same methodology as the four brands above) extended to
82
+ `brands/{lavender,skyline,slate}/palette.light.ts` — these three had the identical unfixed gap
83
+ (lavender failed all 4 `backgroundColor` surfaces at 3.96-4.45; skyline/slate failed
84
+ `secondary`/`subtle`), missed by the earlier pass.
85
+ - **Gradient stop retune (7 brands)** — every brand's `gradient: {from, to}` token had a stop pair
86
+ where neither pure white nor pure black cleared AA at both ends. Darkened the lighter stop per
87
+ brand (user-approved trade-off — this is the only Wave D change that visibly shifts brand
88
+ identity, not just a muted/secondary token) so white gradient-button text clears AA at both ends.
89
+ `accentText.ts` gained `onGradient(from, to, white, black)` — picks `onFilled` against whichever
90
+ stop has the higher `relativeLuminance` (the harder case); safe **once** the gradient's own stops
91
+ are tuned this way, not guaranteed for an arbitrary caller-overridden gradient (see
92
+ `account-management` MODULE.md — `UpgradeButton`'s `gradient` prop).
93
+ - **`error`/`red[500]` AA gap** — architecturally different from `gray[500]`: a saturated red's low
94
+ WCAG luminance weight makes a single-value retune mathematically impossible within the
95
+ `error600` lightness boundary. Fixed instead by routing every hardcoded `red[500]`/`error[500]`
96
+ text call site through `accentTextOnCanvas`, which walks to `error[700]` (clears 5.46-6.21 across
97
+ all 7 brands) automatically. No palette edits needed — `red`/`semantic.error` are identical
98
+ across brands (only `lavender` defines them; others inherit via spread).
99
+ - **`pickAccentText` hardened against a partial `ColorScale`** — the rung-walk in
100
+ `accentText.ts` previously assumed every caller supplies all of rungs 500-900 and crashed
101
+ (`hexToRgb(undefined)`) on a sparse scale (a real risk for any consumer with a hand-built or
102
+ test-mock theme, not just this repo's own tests). Now treats a missing rung as "doesn't clear
103
+ AA" and keeps walking; falls back to the nearest defined rung, then to safe white/black if the
104
+ scale is empty.
105
+
106
+ ## Wave D — QA-driven follow-up (user ran a Chrome-extension-based contrast/AA pass against the live playground)
107
+
108
+ - **Margin-safety correction on the 7-brand gradient retune above.** Direct re-measurement found
109
+ every brand's darkened stop cleared AA by **less than 0.02** (e.g. 4.502 vs the 4.5 cutoff) —
110
+ too thin to trust against rounding/rendering variance, and a systemic gap across all 7 brands'
111
+ first-pass tuning (the search stopped the instant AA was crossed, with no margin built in).
112
+ Rebuilt every brand's thin-margin stop(s) with a **safe ≥4.6 target** instead of the bare 4.5
113
+ cutoff, using the same HSL-preserving-hue/saturation darkening search. Final margins verified
114
+ live via Playwright: 4.581–4.834 across all 7 brands. Established going forward: **a contrast
115
+ value that clears AA by <0.02 should be treated as failing**, not passing.
116
+ - **`Modal`/`AlertDialog`/`Drawer` dark-mode surface bug** — see overlays / layout-navigation
117
+ MODULE.md. Root cause: these hardcode Chakra's literal `colors.white` baseStyle (gated behind
118
+ `_dark`), unlike `Card`, which already routes through the patched `chakra-body-bg`/
119
+ `chakra-body-text` semantic tokens — the QA report's claim that `Card` was also broken did not
120
+ reproduce under direct Playwright measurement **at the time**, in a fresh browser context. See
121
+ the correction below: `Card` *can* break, conditionally, and the real fix was one level up
122
+ from any single component.
123
+ - **`Card`/`ProfileCard` dark-mode surface bug (user-reported via screenshot, blocking) — corrects
124
+ the claim above.** The claim that this app's theme-swap dark mode "never triggers" Chakra's
125
+ `_dark:` selector was wrong: `_dark:` maps to `.chakra-ui-dark &` / `[data-theme=dark] &`, and
126
+ Chakra's own `ColorModeProvider` (which every `ChakraProvider` wraps internally, regardless of
127
+ this app's separate palette-swap mechanism) sets that class/attribute from its **own**
128
+ `localStorage["chakra-ui-color-mode"]` key — entirely separate from this app's own
129
+ `"pixelize-theme"` storage key — and that stored value **wins over** `theme.config
130
+ .initialColorMode: "light"` on every load if present. A fresh browser context has no such
131
+ stored value, so the earlier Playwright measurement never saw the bug; a browser where
132
+ Chakra's native color mode was ever toggled to `"dark"` on this origin (by this app or an
133
+ earlier version of it) does, permanently, until that one key is cleared. Confirmed live:
134
+ seeding `localStorage["chakra-ui-color-mode"] = "dark"` reproduces the exact reported symptom —
135
+ `Card`'s default `"elevated"` variant carries Chakra's own un-migrated
136
+ `_dark: { bg: "colors.gray.700" }`, and this app's dark ramp runs dark→light, so `gray[700]`
137
+ resolves to L≈79% (a light, brand-tinted gray) instead of the correct dark `chakra-body-bg`.
138
+ `ProfileCard` hits the identical path (also a bare `ChakraCard` with no explicit `bg=`).
139
+ `PricingCard`/`PaymentCard` were never affected — they set an explicit `bg={theme.colors
140
+ .background[50]}` themselves, which wins over the variant's `_dark:` block regardless.
141
+ **Fixed at the root, not per-component:** `PixelizeThemeProvider` now passes a
142
+ `colorModeManager` to `ChakraProvider` that always returns `"light"` and never persists,
143
+ severing Chakra's native color mode from `localStorage` entirely — so no un-migrated `_dark:`
144
+ block anywhere (present or future, not just `Card`) can fire regardless of what's stored.
145
+ Verified live via Playwright: reproduced the bug by seeding the stale key, confirmed the fix
146
+ neutralizes it (`Card` background back to the correct dark canvas color in both the fresh and
147
+ stale-storage cases).
148
+ - Same "text-as-scale-rung fails AA against its canvas" pattern (established by the `error`/
149
+ `red[500]` fix above) applied to two more call sites found by the QA pass: `Notification`'s
150
+ time-elapsed orange icon/text (feedback module) and `FileUploader`'s blue accent text
151
+ (inputs-date-file module).
152
+ - **`gray[500]` margin widen (`slate`/`rosewood`), code-review catch:** the same "<0.02 margin
153
+ should be treated as failing" rule established above for the gradient stops also applied to
154
+ the earlier `gray[500]` retune — `slate` measured 4.509 and `rosewood` 4.516 against their
155
+ `secondary` `backgroundColor` surface, both too thin. Darkened each by ~0.7 lightness points
156
+ (hue/saturation preserved, same HSL search as the gradient fix) to a safe ≥4.6 margin against
157
+ all four surfaces; the other 5 brands' `gray[500]` already cleared ≥4.6 and needed no change.
158
+ All 7 brands' `gray[500]` comment updated to state the ≥4.6 standard explicitly.
159
+ - **`FormError` (`chakra/componentStyles.ts`), code-review catch:** Chakra's stock
160
+ `FormErrorMessage`/`FormErrorIcon` both hardcode `colors.red.500` via a shared `--form-error-color`
161
+ CSS var — the library's `FormError` override (added earlier this pass) fixed the `text` anatomy
162
+ part via `accentTextOnCanvas` but missed the `icon` part, which stayed on Chakra's raw
163
+ `red.500` and kept the same AA gap for any consumer rendering `<FormErrorIcon/>`. Both parts now
164
+ share one computed `color`.
165
+
166
+ ## Wave D — public export of the WCAG contrast helpers (user request: "export anything useful for consumers")
167
+
168
+ - `accentText.ts`'s helpers and `color.ts`'s pure color math were internal-only (imported by
169
+ ~25 components + `chakra/componentStyles.ts`) despite being generic, dependency-free, and
170
+ already the load-bearing logic behind this whole pass's AA fixes. Promoted to `src/index.ts`
171
+ as additive exports (append-only guard test updated) so a consumer building a custom component
172
+ against this library's `ColorScale`/`PaletteProps` tokens can reuse the same contrast logic
173
+ instead of re-deriving WCAG math themselves.
174
+ - **Deliberately NOT exported:** `pickActiveAccent` (`Header.tsx`, this pass's BLOCKING fix) — it's
175
+ a narrow, Header-specific non-text-accent picker (hardcoded `ACTIVE_ACCENT_TARGET = 3`, a search
176
+ order tuned for one component's underline accent), not a general-purpose public utility.
177
+ - `accentTextOnCanvas`'s search-direction assumption (canvas darkness implies a dark-mode-shaped
178
+ scale — see the Header bug in layout-navigation MODULE.md) holds for every one of its ~25
179
+ internal call sites because both the scale and the canvas always come from the SAME active
180
+ theme mode there. A consumer passing an unrelated custom scale/canvas pairing could still hit
181
+ the same edge case Header did; `pickAccentText(primary, canvas, mode)` (explicit mode, no
182
+ guessing) is the safer of the two for that case and is exported alongside it for that reason.
183
+
184
+ ## Wave B — 8th brand (`storefront`), cross-repo coordination with the mobile design library
185
+
186
+ - Added `brands/storefront/palette.{light,dark}.ts`, registered in `types.ts` (`ThemeName`),
187
+ `brands/index.ts` (`lightPalettes`/`darkPalettes`/`palettes`/`themeNames`), `Theme/index.ts`
188
+ (`ThemesList`/`brandThemes`), and `provider/colorModeStorage.ts`'s `VALID_BRANDS` allowlist (a
189
+ hand-maintained literal array, **not** derived from `themeNames` — easy to miss; a stale stored
190
+ `brand: "storefront"` would otherwise be silently rejected back to the default brand).
191
+ - Anchor `primary[500] = "#004f4b"` (deep spruce teal, H≈177° S=100% L≈15.5%) — decided in
192
+ cross-repo coordination with the sibling `Mobile-Components` design library, which owns and has
193
+ already shipped the separate `zinc` brand (the true shadcn-clone) across all 8 brands; do not
194
+ conflate the two — `storefront` is this repo's own brand, `zinc` is mobile's.
195
+ - Structural ramps (`gray`, `background`, `border`, `boxborder`, `table.hover`, `backgroundColor`,
196
+ `sidebar.background`) were derived by **rehuing `emerald`'s exact ramp** (same lightness/
197
+ saturation curve per stop, hue rotated to storefront's 177°) rather than a fresh hand-tune —
198
+ emerald is the closest existing single-hue teal brand, so this reuses an already-AA-verified
199
+ shape instead of guessing new numbers. `primary` itself uses a custom lightness curve (500 pinned
200
+ to the exact anchor hex; 50-400 and 600-900 solved so the anchor sits proportionally where the
201
+ curve requires — emerald's own anchor is far lighter (L=33.7) than storefront's (L=15.5), so its
202
+ literal curve doesn't transplant; only the *shape* (fractional position + step ratios) carries
203
+ over). `gradient` mirrors emerald's "same hue, darker `to` stop" pattern, tuned to a ≥4.6 white-
204
+ text-contrast margin at both stops per the Wave D "don't trust a <0.02 margin" rule (measured
205
+ 4.98 / 6.96).
206
+ - **Zero hand-tuning needed post-registration** — unlike the 7 existing brands (which each needed a
207
+ `gray[500]`/gradient retune pass, see Wave D above), `storefront` passed every existing
208
+ `it.each(themeNames)` AA assertion (`accentText.test.ts`, `buildDarkPalette.test.ts`, etc.) on the
209
+ first run, because the rehue-from-emerald approach inherited an already-AA-clean shape. Full gate
210
+ green: `tsc --noEmit` clean, `jest` 791/791 (65 suites), lint clean.
211
+ - Dark palette is the plain `buildDarkPalette(light)` derivation (matches `slate`'s pattern) — no
212
+ bespoke override needed. The generic derivation's `accentLightnessDelta` cap (which assumes a
213
+ white button label) is architecturally incompatible with a true "near-white primary in dark mode"
214
+ requirement, but `storefront` doesn't need that — that requirement belongs to mobile's `zinc`.
215
+
216
+ ## Wave E — ThemeSwitcher brand-list `MenuList` dark-mode fix (user-reported, blocking)
217
+
218
+ `ThemeSwitcher.tsx`'s brand-picker (`BrandMenu` + `MenuVariant`) `MenuList` had no explicit `bg=`,
219
+ so in dark mode it fell through to Chakra's `Menu` baseStyle hardcoded `--menu-bg: #fff` (gated
220
+ behind `_dark`, same bug class as `NavigationBar`/`ButtonGroupIcon`'s `MenuList` fix above) — a
221
+ white dropdown with only the checked item's checkmark-opacity change to distinguish rows, so every
222
+ unselected brand name read as near-white-on-white. Fixed with the same pattern: both `bg=` (colors
223
+ the list's own box) **and** `sx={{ "--menu-bg": ... }}` (colors the var other pseudo-states read)
224
+ on both `MenuList`s, plus an explicit `color=` for the item text (was inheriting ambient
225
+ `text[900]`, now reads `menuColor` from the same theme-derived palette). New `useSwitcherColors()`
226
+ hook centralizes all of `ThemeSwitcher`'s token reads. Verified: `tsc`/lint clean, all 63 existing
227
+ `Theme/provider` tests still pass (no behavior regression, dark-mode-only fix).
228
+
229
+ ## Wave F — 9th brand (`zinc`), ported from the mobile design library's shadcn clone
230
+
231
+ User request: "add zinc theme exactly same as mobile," then "both mobile and web's zinc theme
232
+ should me similar to shadcn theme as close as possible" — so the goal is maximum fidelity to
233
+ mobile's `zinc` (itself "the shadcn look"), adapted only where web's own invariants require it.
234
+
235
+ - Added `brands/zinc/palette.{light,dark}.ts`, registered in `types.ts` (`ThemeName`),
236
+ `brands/index.ts`, `Theme/index.ts` (`ThemesList`/`brandThemes`), and
237
+ `provider/colorModeStorage.ts`'s `VALID_BRANDS` allowlist — same 4-file wiring as `storefront`
238
+ (Wave B).
239
+ - **Light palette**: ported verbatim from `Mobile-Components/src/theme/tokens/brands/zinc/
240
+ palette.light.ts` — no web-side changes needed, passed every existing AA sweep unmodified.
241
+ - **Dark palette — INVERTS the primary**, unlike every other brand: the filled button is
242
+ near-white (`#e4e4e7`) carrying a near-black label (`#18181b`, 13.96:1), the opposite of every
243
+ other brand's "lifted-but-still-dark" dark primary. `primary`/`secondary`/the numeric
244
+ `background` ramp/`text`/`header`/`gray`/`border`/`boxborder`/`placeholder`/`disabled`/`table`
245
+ are pinned as literals ported verbatim from mobile to preserve the authentic shadcn look;
246
+ `accentText` is recomputed against the overridden `primary` (not spread from the generic
247
+ derivation, which would be stale).
248
+ - **`backgroundColor` (named surfaces) and `sidebar` intentionally do NOT port mobile's literal
249
+ values** — the one deliberate deviation from "exactly same as mobile," found by running zinc
250
+ through web's existing `it.each(themeNames)` test sweeps:
251
+ - Mobile's zinc dark `backgroundColor` maps its 12 named surfaces onto only 5 distinct hexes
252
+ (e.g. `quaternary`/`medium`/`neutral` are all `#18181b`), which fails web's
253
+ `darkSurfaces.test.ts` invariant that every named surface is a visually distinct elevation
254
+ step (`ALIASED_SURFACES = ["light","tertiary"]` is the only sanctioned exception, shared by
255
+ every brand). Retuning each collision by hand would be arbitrary; instead `backgroundColor`
256
+ falls through to `...derived` (the same generic `buildDarkPalette` staircase every other
257
+ brand gets) — zinc's hue (~240°, near-zero saturation) survives the derivation as a
258
+ visually-identical cool neutral, just with distinct steps.
259
+ - Mobile's zinc dark `sidebar` is separately tuned from its light `sidebar` — but every web
260
+ brand's dark `sidebar` is identical to its light `sidebar` (`buildDarkPalette.ts`: "sidebar is
261
+ already near-black in light mode, so it needs no inversion"), an invariant the SideBar
262
+ dark-mode accent fix (this repo, same branch) depends on. `sidebar` falls through to
263
+ `derived.sidebar` instead, matching every other brand.
264
+ - **Fixed 3 test assertions that hardcoded a white filled-button label**, a bar only zinc's
265
+ inverted primary fails (every other brand's dark primary still carries a white label, so this
266
+ was never exercised before): `accentText.test.ts` ("dark filled-button label never regresses
267
+ below its light-mode contrast") and `buildDarkPalette.test.ts` (2 assertions: "never lifts the
268
+ accent past what light theme already ships" + "keeps solid-button labels readable against the
269
+ accent fill"). All 3 now check via `onFilled(fill, white, black)` — whichever ink clears AA —
270
+ instead of assuming white specifically, which is the correct brand-agnostic contract (the same
271
+ one components already use) and a strictly more correct check, not a loosened one.
272
+ - **Fixed a pre-existing bug in `ButtonGroupIcon.tsx`'s gradient variant** (2 spots, both hardcoded
273
+ `theme.colors.white` for the label), independent of zinc but only caught because zinc's near-
274
+ white gradient stops (originally `{from:"#fafafa", to:"#a1a1aa"}`) make the failure visible —
275
+ same bug class already fixed elsewhere per `Button.styles.ts`'s own comment ("was a hardcoded
276
+ `theme.colors.white` — fails AA for any colorScheme whose [500] doesn't clear white contrast").
277
+ Now uses `onGradient(from, to, white, black)`, matching the established pattern.
278
+ - Full gate green: `tsc --noEmit` clean, lint clean, `jest` 902/902 (72 suites, up from 869/72 pre-
279
+ zinc — 33 new tests from the added `zinc` sweep, zero regressions).
280
+
281
+ **2026-07-18 — dark primary corrected to shadcn's actual value.** The original port used `#fafafa`
282
+ for the dark-mode filled primary, approximated as "near-white" rather than checked against shadcn's
283
+ real registry. Fetched shadcn's live zinc theme (`ui.shadcn.com/r/colors/zinc.json`, OKLCH tokens)
284
+ and converted precisely: shadcn's dark `--primary` is `oklch(0.92 0.004 286.32)` → `#e4e4e7`
285
+ (zinc-200), one shade dimmer than pure white — `#fafafa` is actually shadcn's `--foreground`
286
+ (default dark-mode body text), not `--primary`. Updated `PRIMARY_500` and the dependent
287
+ `gradient.from` (now references the constant instead of a duplicated literal) in both this repo and
288
+ Mobile-Components; `accentText`/`boxShadow.primary` recompute automatically since they already
289
+ derive from `PRIMARY_500` rather than being spread from the generic derivation. Light mode's
290
+ primary (`#18181b`) already matched shadcn's `--primary` exactly — no change there. Verified every
291
+ other light/dark role against the same live registry (`background`, `card`, `muted`/`secondary`/
292
+ `accent`, `border`/`input`, `muted-foreground`) — all already matched shadcn within rounding.
293
+ `fg.default`/`text[500]` (light `#18181b` vs shadcn `--foreground` `#09090b`) and the dark `bg.surface`
294
+ elevation step (`#0e0e11` vs shadcn's card `#18181b`) were deliberately left as-is: both are
295
+ shared-shape/shared-role values that would require restructuring the 10-step ramp or the
296
+ cross-brand `roles/bg.surface` mapping, not a zinc-only anchor swap — out of scope for a
297
+ change scoped to "don't break anything."
298
+
299
+ **2026-07-20 — `PixelizeThemeProvider` gained an optional `themeOverrides` prop.** Found while
300
+ wiring dark mode into the **tickets** consumer app: it has its own font-stack/compact-control-size/
301
+ component-defaultProps customizations layered onto the brand theme (the old `withTheme(app, theme)`
302
+ pattern spread these onto `ThemesList[brand]` directly), and `PixelizeThemeProvider` had no
303
+ equivalent injection point — its internal `ChakraProvider` is hardcoded to
304
+ `brandThemes[brand][resolvedMode]`. Without this, every consumer app with its own theme
305
+ customizations would have had to build the same workaround (mount its own second `ChakraProvider`
306
+ inside the provider's tree, shadowing the internal one). `themeOverrides?: Record<string, unknown>`
307
+ is deep-merged via `extendTheme(brandThemes[brand][resolvedMode], themeOverrides)`, re-computed
308
+ whenever `brand`/`resolvedMode`/`themeOverrides` change so overrides always layer onto the *current*
309
+ palette. Safe post-resolution: `createBrandTheme` already fixes `config.initialColorMode` to
310
+ `"light"` on every palette, and `extendTheme` is a pure additive merge that doesn't re-derive
311
+ `_dark:` blocks — so this cannot reintroduce the double-adaptation bug the forced light
312
+ `colorModeManager` avoids. Optional, defaults to `undefined` — zero behavior change for existing
313
+ consumers that don't pass it.
314
+
315
+ **2026-07-20 — `PixelizeThemeProvider` re-syncs `brandState` when the `brand` prop changes post-mount.**
316
+ `brandProp` previously only seeded initial state (`useState(brandProp)`), so a consumer that
317
+ re-renders with a new `brand` after mount (e.g. persisting the pick through its own Redux store
318
+ instead of calling this provider's own `setBrand`) never saw it applied — the same gap `mode`
319
+ already had, worked around elsewhere by callers mirroring it in an effect. Fixed with a `useEffect`
320
+ on `brandProp` (skipping the first run, so it doesn't fight the rehydrate-from-storage effect) that
321
+ calls `setBrandState(brandProp)` only when the **prop itself** changes — not on every local
322
+ `setBrand()` call, so it doesn't fight the user's own in-session `ThemeSwitcher` picking.
323
+
324
+ **2026-07-20 — `ThemeSwitcher`'s brand menus gained a color swatch dot per brand.** `BrandMenu`
325
+ (icon variant) and `MenuVariant`'s brand submenu both previously showed only the brand name text.
326
+ Each option now renders a small (`0.625rem`) filled circle before the label, colored from that
327
+ brand's own `colors.primary[500]` in **light** mode (`brandThemes[brand].light...primary[500]`) —
328
+ always the light-mode anchor regardless of the switcher's current mode, so the dot is a stable
329
+ brand identifier rather than something that itself flips with dark mode. `ThemeSwitcher.tsx` also
330
+ stopped re-deriving `menuBg`/pushing it back via `sx` on every render (`useSwitcherColors()`) now
331
+ that `Menu.styles.ts` (Wave G) supplies `--menu-bg` centrally — removes a redundant Emotion style
332
+ recompute per render that showed up as flicker while hovering/scrolling the brand list.
333
+
334
+ ## Wave G — global `Menu` component style override (`--menu-bg`), found while auditing tickets
335
+
336
+ Same bug class as Wave E's `ThemeSwitcher` fix, but at the root instead of per-call-site: Chakra's
337
+ own `Menu` baseStyle hardcodes the `--menu-bg` CSS var to `"#fff"` (gated behind `_dark`, which this
338
+ app's theme-swap never triggers — `PixelizeThemeProvider`'s forced-light `colorModeManager`, Wave D
339
+ above). Every **bare** `<MenuList>` in every consuming app (tickets' board overflow menu,
340
+ `TicketOptionMenu`, rows-per-page menu, etc.) rendered a white dropdown on a dark canvas, and a
341
+ call-site `bg=` prop alone doesn't fix it — that only recolors the list's own box, not the CSS var
342
+ `MenuItem`'s `_focus`/`_active`/`_expanded` states read.
343
+
344
+ Added `src/Theme/chakra/Menu.styles.ts` (new file, registered in `componentStyles.ts`): a
345
+ `definePartsStyle` override on the `list` anatomy part that sets `--menu-bg` (via `cssVar`) to
346
+ `theme.colors.backgroundColor?.light ?? theme.colors.background?.[50] ?? "#fff"` and `color` to
347
+ `theme.colors.text?.[900]`. This fixes every consumer's bare `MenuList` app-wide with zero
348
+ per-call-site changes — `ThemeSwitcher`'s existing manual `bg=`/`sx={{"--menu-bg": ...}}` workaround
349
+ (Wave E) still works alongside it (an explicit call-site override still wins), it's just no longer
350
+ required for a plain `<MenuList>`. Verified: `tsc --noEmit` clean, lint clean, full `jest` suite
351
+ 905/905 (72 suites, up from 902/72 pre-fix — 3 new but this pass added no dedicated `Menu.styles`
352
+ test, the count reflects unrelated in-flight suite growth).
353
+
354
+ ## Wave H — `Popover`/`Skeleton` component-style overrides + native UI `color-scheme`, same audit as Wave G
355
+
356
+ Same bug class as Wave G's `Menu` fix, found while sweeping the rest of Chakra's own component
357
+ themes for the identical `_dark`-gated hardcoded-white pattern — plus one new bug *class* (native
358
+ browser chrome) the earlier waves never covered.
359
+
360
+ - **`Popover`** — Chakra's own Popover baseStyle hardcodes `--popper-bg` to `"colors.white"` and
361
+ `--popper-arrow-shadow-color` to `"colors.gray.200"`, both gated behind `_dark` (confirmed by
362
+ reading `@chakra-ui/theme`'s `popover.mjs` source directly — `content` is the anatomy part that
363
+ owns both vars; `--popper-arrow-bg` is untouched because Chakra's own baseStyle already points it
364
+ at `$popperBg`, so fixing `$popperBg` fixes the arrow fill for free). Every bare
365
+ `<PopoverContent>` rendered a white card with a light arrow shadow on the dark canvas. Added
366
+ `src/Theme/chakra/Popover.styles.ts` (new file, registered in `componentStyles.ts`) mirroring
367
+ `Menu.styles.ts` exactly: `createMultiStyleConfigHelpers(popoverAnatomy.keys)` +
368
+ `definePartsStyle` on the `content` part, `[$popperBg.variable]` sourced from
369
+ `theme.colors.backgroundColor?.light ?? theme.colors.background?.[50] ?? "#fff"` (identical
370
+ fallback chain to Menu) and `[$arrowShadowColor.variable]` from `theme.colors.border?.[200]`.
371
+ - **`Skeleton`** — Chakra's own Skeleton baseStyle hardcodes `--skeleton-start-color`/
372
+ `--skeleton-end-color` to `colors.gray.100`/`colors.gray.400`, same `_dark`-gated pattern.
373
+ Verified in `@chakra-ui/react`'s actual `skeleton.mjs` that Chakra's `Skeleton` is a
374
+ **single-part** style config (`defineStyleConfig`, not a multi-part anatomy like Menu/Popover),
375
+ and that its `startColor`/`endColor` are **props**, not style-config keys — but those props only
376
+ ever populate the same two CSS vars when a caller actually passes them (`useToken("colors", ["",
377
+ ""])` resolves to `undefined`, so `cssVarStyles` stays empty and the base style's vars pass
378
+ through untouched). That confirms Chakra's own prop-vs-style precedence already does the right
379
+ thing, so the fix was made at the `componentStyles.ts` level (a `Skeleton: ComponentStyleConfig`
380
+ entry, same file as `Badge`/`FormError`) rather than touching `Components/Skeletons/Skeletons.tsx`
381
+ — zero risk to the existing prop passthrough there; a caller-supplied `startColor`/`endColor`
382
+ still wins exactly as before. Rungs: `gray[100]`/`gray[300]` — `buildDarkPalette.ts`'s `gray`
383
+ ramp is already role-reversed for dark mode (low rungs go dark, high rungs go light there), so
384
+ the same two rung indices read as a light shimmer in light mode and a subtle dark-on-dark shimmer
385
+ in dark mode with no mode branching needed in the override itself.
386
+ - **`color-scheme` CSS property (new bug class)** — native browser UI (the `<select>` popup
387
+ chrome, the `<input type="date">` calendar picker) is painted by the browser's own UA stylesheet
388
+ keyed off the CSS `color-scheme` property, entirely outside Chakra/React theming — no component
389
+ style or palette swap can reach it, which is why this wasn't caught by any earlier wave's
390
+ component-by-component audit. Neither repo set it anywhere, so that native chrome always rendered
391
+ light regardless of the app's resolved mode. Fixed in `PixelizeThemeProvider.tsx` with a
392
+ `useEffect` that sets `document.documentElement.style.colorScheme = resolvedMode` whenever
393
+ `resolvedMode` changes. Scoped to the provider (not a global stylesheet or index.css rule) so
394
+ `withTheme` consumers — deliberately light-only per this doc's "Key rules" — see no change;
395
+ only `PixelizeThemeProvider`/`useThemeMode` consumers get mode-aware native chrome.
396
+ - Full gate green: `tsc --noEmit` clean, lint clean, `jest` 905/905 (72 suites, unchanged from
397
+ pre-Wave-H — no new dedicated test file added for these three, consistent with Wave G's Menu fix
398
+ which also shipped without one).
399
+
400
+ ## Wave I — remaining `_dark`-gated component overrides (Modal/Drawer/Avatar/Tabs/Slider/Switch/Tooltip)
401
+
402
+ Completes the Wave G/H sweep: every other Chakra component whose own baseStyle hardcodes a
403
+ literal behind the never-triggered `_dark` gate (or, for Slider/Switch, no gate at all), fixed
404
+ the same way — a `definePartsStyle`/`ComponentStyleConfig` override registered in
405
+ `componentStyles.ts`, sourcing color from `theme.colors.backgroundColor?.light ?? theme.colors
406
+ .background?.[50]` (or the relevant token) instead of Chakra's literal. See each domain
407
+ MODULE.md for the consumer-facing detail: `Modal`/`Drawer` (overlays, layout-navigation —
408
+ supersedes those modules' earlier per-call-site `bg=` fixes), `Avatar` (account-management),
409
+ `Tabs` (table), `Slider`/`Switch` (inputs-toggle), `Tooltip`/`Skeleton` (overlays, feedback —
410
+ `Tooltip` pins `black`/`white`, the two tokens `buildDarkPalette` never remaps, since a tooltip
411
+ must stay a stable dark chip in either mode rather than following the canvas).
412
+ `componentStyles.ts` now registers 10 chakra-native theme keys total (`Drawer`, `Menu`, `Modal`,
413
+ `Popover`, `Slider`, `Switch`, `Tabs`, `Avatar`, `Skeleton`, `Tooltip`) alongside the library's
414
+ own `Checkbox`/`Input`/`Button`/`Badge`/`FormError`/etc.
415
+
416
+ ## Known gaps
417
+
418
+ - `KanbanBoard.tsx` uses `var(--chakra-colors-gray-300)`, but `cssVarPrefix` is `"ck"` — that
419
+ variable has never resolved (pre-existing; out of scope for the dark-mode task).
420
+ - `backgroundColor.muted`/`accent`/`tertiary`/`quaternary`/etc. are **not** covered by the
421
+ `gray[500]` retune above — 0-1 live usages in the whole codebase, and the one live
422
+ `backgroundColor.muted` usage pairs with `gray[600]` text, not `gray[500]`. Intentionally
423
+ deferred, not fixed.
424
+ - **Found during Wave D live re-verification, NOT fixed (outside the QA report's scope, flagging
425
+ for a follow-up pass):** the SideBar's notification-count badge ("10") measures ≈1.2-1.6:1
426
+ against its translucent primary-tinted pill background — fails badly. The playground's own
427
+ `/header` demo bar's raw-Chakra "Logout" ghost button measures ≈3.5:1 — same root cause as the
428
+ already-documented Header Bug B ("Login" button, layout-navigation MODULE.md): a raw Chakra
429
+ `Button` picking up the library's ghost-variant ink tuned for the page canvas, not Header's own
430
+ dark bar. Neither was in the QA report or its established follow-up patterns, so left untouched
431
+ rather than silently expanding this pass's scope.
@@ -0,0 +1,17 @@
1
+ # Types & Exports
2
+
3
+ ## Purpose
4
+
5
+ Public API surface — semver-sensitive.
6
+
7
+ ## Key paths
8
+
9
+ - `src/index.ts` (~80 value exports + typed Props groups for UserDetails, RolesPermission, CustomModulesTable, SignInActivityTable, OrganizationDetails)
10
+ - `src/types/`
11
+ - `src/withTheme.tsx`
12
+
13
+ ## Key rules
14
+
15
+ - Every public component must be exported here
16
+ - Breaking export changes require major version bump
17
+ - Run `npm run build` after export changes
@@ -0,0 +1,50 @@
1
+ # Utility UI
2
+
3
+ ## Purpose
4
+
5
+ Generic standalone UI helpers: CopyButton, ScrollToTop, LazyWrapper, MoreItems, EmptyState, PdfViewer, FilePreview, FieldSelectModal, ProfilePhotoViewer, StageProgress.
6
+
7
+ ## Key paths
8
+
9
+ - `src/Components/CopyButton/`, `ScrollToTop/`, `LazyWrapper/`, `MoreItems/`, `EmptyState/`, `PdfViewer/`, `FilePreview/`, `FieldSelectModal/`, `ProfilePhotoViewer/`, `StageProgress/`
10
+
11
+ ## Key rules
12
+
13
+ - FilePreview also exports `FilePreviewTrigger`; StageProgress also exports `StageItem` (StepperStage is internal)
14
+ - LazyWrapper wraps lazy/Suspense loading; ScrollToTop is a scroll-position helper — keep them framework-agnostic (props in, events out)
15
+ - Single-file components (CopyButton, ScrollToTop, LazyWrapper, PdfViewer, FieldSelectModal) have no colocated Props file — types are inline
16
+
17
+ ## Dark mode
18
+
19
+ CopyButton, EmptyState, FieldSelectModal, FilePreview, LazyWrapper, MoreItems, PdfViewer,
20
+ ProfilePhotoViewer and StageProgress take their colors from `useCustomTheme()` or from Chakra scale
21
+ tokens (FilePreviewTrigger's `bg="gray.100"`) — both resolve against the swapped palette. The `#…` literals
22
+ left in FilePreview / StageProgressProps are `??` fallbacks behind optional token reads — never live
23
+ colors. `blackAlpha.*` scrims are deliberate: a scrim stays black in both modes.
24
+
25
+ - **Portalled overlay surfaces must pin their own `bg`.** Chakra drives Modal/Popover panels off its
26
+ own default (`colors.white`, or `gray.700` under `_dark` — a *light* grey in our derived dark
27
+ palettes), which does not track the swapped palette. FieldSelectModal, FilePreview and MoreItems
28
+ each set `bg={theme.colors.background[50]}`; MoreItems' `PopoverArrow` needs its own `bg` too
29
+ (that prop is what sets `--popper-arrow-bg`).
30
+ - StageProgress colors resolve through `resolveStagePalette(theme, colorScheme)` in
31
+ `StageProgressProps.tsx` — StageItem and StepperStage share it, so add a stage color there, not in
32
+ a component. Its `onStrong` (label on a filled stage) is now `onFilled(strong, white, black)` —
33
+ picks whichever of white/black clears AA against that scheme's actual `strong` rung, instead of
34
+ assuming white always works; StepperStage's *unfilled* circle still uses `background[50]` because
35
+ that one is a surface.
36
+ - LazyWrapper's default spinner lives in a `DefaultFallback` subcomponent — `useCustomTheme()` is a
37
+ hook, so it cannot be called from the plain `fallback` node.
38
+
39
+ ### WCAG-contrast fixes (this pass)
40
+
41
+ - **CopyButton "menu-item" ink**: `accent` now resolves via `accentTextOnCanvas(theme.colors.primary,
42
+ theme.colors.backgroundColor.main)` instead of raw `primary[500]` — `primary[500]` is tuned for a
43
+ label *on* a filled button, not ink read directly off the canvas, and was failing AA (as low as
44
+ 4.07 measured) in 5 of 7 brands in dark mode.
45
+ - **MoreItems popover item label**: reads `gray[500]` (the library's verified muted-text token) in
46
+ place of a locally-picked, non-standard rung.
47
+ - **Control-boundary borders** (WCAG 1.4.11, needs >=3.0 against any named surface up to `muted`)
48
+ bumped to `boxborder[800]`: CopyButton's "button"-variant border (was raw `gray[200]`) and
49
+ ProfilePhotoViewer's edit-icon border (was `boxborder[300]`) — both render as an actual control
50
+ boundary, not decoration, so they need the stronger rung.
@@ -0,0 +1,35 @@
1
+ # Utils & Hooks
2
+
3
+ ## Purpose
4
+
5
+ Shared utilities and hooks: debounce, table helpers, preferences, ref merging,
6
+ truncation detection.
7
+
8
+ ## Key paths
9
+
10
+ - `src/Utils/table.ts`, `src/Utils/mergeRefs.ts`, `src/Hooks/usePreferences.ts`,
11
+ `src/Hooks/useIsTruncated.ts`, `src/services/feedback.ts`
12
+
13
+ ## Key rules
14
+
15
+ - `debounce` exported from index.ts
16
+ - **`useIsTruncated(content?, enabled?)`** (exported) — returns `{ ref, isTruncated }`;
17
+ attach `ref` to a clamped element to detect real overflow (`scrollWidth/Height`
18
+ vs `clientWidth/Height`, single- and multi-line). Re-measures on mount, element
19
+ resize (`ResizeObserver`), and `content` change — never on hover/scroll. Pass
20
+ `enabled=false` to make it fully inert. Powers `ToolTip overflowOnly` (see
21
+ `overlays`).
22
+ - **`mergeRefs(...refs)`** (internal) — combine a caller ref with an injected one
23
+ when cloning an element.
24
+
25
+ ## Recent changes
26
+
27
+ - **`table.ts` — AA-safe `onSolid` ink.** `TablePaletteColor` gained an optional
28
+ `onSolid` field; `buildTablePalette` and `pickTableColor` now compute it via
29
+ `onFilled()` (`Theme/tokens/builders/accentText.ts`) against the theme's
30
+ `white`/`black`, instead of assuming a fixed ink color. `pickTableColor` gained
31
+ an optional trailing `theme` param to supply this — both additions are
32
+ backward-compatible; existing callers without `theme` still work (fall back to
33
+ `#FFFFFF`/`#000000`). `table.test.ts` updated to assert the `onFilled()` math,
34
+ e.g. `#8B3FC8` clears white at 5.765 (onSolid stays white) while `#ff0000`
35
+ fails white at 3.998 and falls back to black at 5.252.
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env bash
2
+ # Local status line only — never sent to the model. See .cursor/TASK-SETUP.md
3
+ set -euo pipefail
4
+
5
+ STATE_FILE="${HOME}/.cursor/pixelize-skill-session-state.json"
6
+
7
+ payload=$(cat)
8
+ dir=$(echo "$payload" | jq -r ".cwd // .workspace.current_dir // empty")
9
+ session_id=$(echo "$payload" | jq -r ".session_id // empty")
10
+ base=$(basename "$dir")
11
+
12
+ show_no_skill_warning=false
13
+ if [[ -n "$session_id" && -f "$STATE_FILE" ]]; then
14
+ if jq -e --arg id "$session_id" '.[$id].chatting_without_skill == true' "$STATE_FILE" >/dev/null 2>&1; then
15
+ show_no_skill_warning=true
16
+ fi
17
+ fi
18
+
19
+ case "$base" in
20
+ account-frontend|account-service)
21
+ line1="/ → task (Account FE + BE)"
22
+ line2=""
23
+ ;;
24
+ crm-frontend|crm-service)
25
+ line1="/ → task (this repo)"
26
+ line2="/ → crm-task (CRM FE + BE)"
27
+ ;;
28
+ social-frontend|social-service)
29
+ line1="/ → task (this repo)"
30
+ line2="/ → social-task (Social FE + BE)"
31
+ ;;
32
+ tickets-frontend)
33
+ line1="/ → task (this repo)"
34
+ line2="/ → tickets-task"
35
+ ;;
36
+ crm-mobile)
37
+ line1="/ → task (this repo)"
38
+ line2="/ → crm-mobile-task"
39
+ ;;
40
+ Micro-Components)
41
+ line1="/ → task (this repo)"
42
+ line2="/ → design-task"
43
+ ;;
44
+ hrms)
45
+ line1="/ → task (this repo)"
46
+ line2="/ → hrms-task (HRMS FE + BE)"
47
+ ;;
48
+ *)
49
+ line1="Open a Pixelize repo root for / → task"
50
+ line2=""
51
+ ;;
52
+ esac
53
+
54
+ if [[ "$show_no_skill_warning" == "true" ]]; then
55
+ echo -e "\033[1;33m\033[7m ⚠ CHATTING WITHOUT TASK SKILL — use / menu ⚠ \033[0m"
56
+ echo -e "\033[1;33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
57
+ fi
58
+
59
+ echo -e "\033[1;33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
60
+ echo -e "\033[1;33m FEATURE WORK → $line1\033[0m"
61
+ if [ -n "$line2" ]; then
62
+ echo -e "\033[1;33m Full pipeline → $line2\033[0m"
63
+ fi
64
+ echo -e "\033[1;33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
File without changes
@@ -0,0 +1,12 @@
1
+ # Fix Kanban collapsed column reset on drag
2
+
3
+ ## Problem
4
+ `collapsedColumns` is re-hydrated from stale `kanbanPreferencesJson` whenever `mergedColumns` changes (e.g. after drag when parent updates `data`).
5
+
6
+ ## Solution
7
+ 1. Hydrate `collapsedColumns` from preferences **once** (when prefs load and columns exist).
8
+ 2. On `mergedColumns` change, only **prune** keys for removed columns — never re-apply saved prefs.
9
+
10
+ ## Files
11
+ - `src/Components/KanbanBoard/KanbanBoard.tsx`
12
+ - `src/Components/KanbanBoard/KanbanBoard.test.tsx`