pixelize-design-library 2.3.22 → 2.4.1

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 (541) 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 +34 -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 +32 -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 +56 -0
  23. package/.cursor/modules/inputs-select/MODULE.md +27 -0
  24. package/.cursor/modules/inputs-toggle/MODULE.md +18 -0
  25. package/.cursor/modules/kanban/MODULE.md +22 -0
  26. package/.cursor/modules/layout-navigation/MODULE.md +269 -0
  27. package/.cursor/modules/overlays/MODULE.md +69 -0
  28. package/.cursor/modules/playground/MODULE.md +28 -0
  29. package/.cursor/modules/table/MODULE.md +78 -0
  30. package/.cursor/modules/theme/MODULE.md +314 -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.map +1 -1
  191. package/dist/Assets/defaultLogo.tsx +30 -0
  192. package/dist/Components/Accordion/Accordion.d.ts.map +1 -1
  193. package/dist/Components/Accordion/Accordion.js +15 -12
  194. package/dist/Components/Accordion/accordionColors.d.ts +6 -0
  195. package/dist/Components/Accordion/accordionColors.d.ts.map +1 -0
  196. package/dist/Components/Accordion/accordionColors.js +20 -0
  197. package/dist/Components/AlertDialog/AlertDialog.d.ts.map +1 -1
  198. package/dist/Components/AlertDialog/AlertDialog.js +4 -1
  199. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.d.ts.map +1 -1
  200. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.js +5 -1
  201. package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.d.ts.map +1 -1
  202. package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.js +6 -4
  203. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.d.ts.map +1 -1
  204. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.js +5 -1
  205. package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.d.ts.map +1 -1
  206. package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.js +5 -1
  207. package/dist/Components/Button/Button.styles.d.ts.map +1 -1
  208. package/dist/Components/Button/Button.styles.js +100 -47
  209. package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.d.ts.map +1 -1
  210. package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +11 -3
  211. package/dist/Components/Card/PaymentCard/PaymentCard.d.ts.map +1 -1
  212. package/dist/Components/Card/PaymentCard/PaymentCard.js +17 -12
  213. package/dist/Components/Checkbox/Checkbox.d.ts.map +1 -1
  214. package/dist/Components/Checkbox/Checkbox.js +2 -1
  215. package/dist/Components/Common/ErrorComponent.d.ts.map +1 -1
  216. package/dist/Components/Common/ErrorComponent.js +7 -3
  217. package/dist/Components/Common/ErrorMessage.d.ts.map +1 -1
  218. package/dist/Components/Common/ErrorMessage.js +7 -1
  219. package/dist/Components/Common/FormLabel.d.ts.map +1 -1
  220. package/dist/Components/Common/FormLabel.js +7 -1
  221. package/dist/Components/Common/Label.d.ts.map +1 -1
  222. package/dist/Components/Common/Label.js +4 -2
  223. package/dist/Components/Common/fieldStyles.d.ts.map +1 -1
  224. package/dist/Components/Common/fieldStyles.js +3 -1
  225. package/dist/Components/CopyButton/CopyButton.d.ts.map +1 -1
  226. package/dist/Components/CopyButton/CopyButton.js +14 -6
  227. package/dist/Components/CustomModulesTable/CustomModulesTable.d.ts.map +1 -1
  228. package/dist/Components/CustomModulesTable/CustomModulesTable.js +9 -6
  229. package/dist/Components/CustomModulesTable/DeleteModuleModal.d.ts.map +1 -1
  230. package/dist/Components/CustomModulesTable/DeleteModuleModal.js +2 -2
  231. package/dist/Components/CustomModulesTable/EditModuleModal.d.ts.map +1 -1
  232. package/dist/Components/CustomModulesTable/EditModuleModal.js +2 -2
  233. package/dist/Components/DatePicker/CalendarPanel.js +1 -1
  234. package/dist/Components/DatePicker/DatePicker.js +1 -1
  235. package/dist/Components/DatePicker/RangeDatePicker.d.ts.map +1 -1
  236. package/dist/Components/DatePicker/RangeDatePicker.js +1 -1
  237. package/dist/Components/DatePicker/SingleDatePicker.d.ts.map +1 -1
  238. package/dist/Components/DatePicker/SingleDatePicker.js +1 -1
  239. package/dist/Components/DatePicker/TimeOnlyPicker.d.ts.map +1 -1
  240. package/dist/Components/DatePicker/TimeOnlyPicker.js +3 -1
  241. package/dist/Components/Drawer/Drawer.d.ts.map +1 -1
  242. package/dist/Components/Drawer/Drawer.js +4 -1
  243. package/dist/Components/Dropdown/DropDown.js +5 -5
  244. package/dist/Components/Editor/Editor.d.ts.map +1 -1
  245. package/dist/Components/Editor/Editor.js +32 -2
  246. package/dist/Components/Editor/joditThemeVars.d.ts +21 -0
  247. package/dist/Components/Editor/joditThemeVars.d.ts.map +1 -0
  248. package/dist/Components/Editor/joditThemeVars.js +70 -0
  249. package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.d.ts.map +1 -1
  250. package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +5 -1
  251. package/dist/Components/EmptyState/EmptyState.js +3 -3
  252. package/dist/Components/FieldSelectModal/FieldSelectModal.d.ts.map +1 -1
  253. package/dist/Components/FieldSelectModal/FieldSelectModal.js +4 -2
  254. package/dist/Components/FilePreview/FilePreview.d.ts.map +1 -1
  255. package/dist/Components/FilePreview/FilePreview.js +7 -1
  256. package/dist/Components/FileUpload/FileUpload.js +4 -4
  257. package/dist/Components/FileUploader/FileUploader.d.ts.map +1 -1
  258. package/dist/Components/FileUploader/FileUploader.js +7 -2
  259. package/dist/Components/FilterSidebar/FilterSidebar.d.ts.map +1 -1
  260. package/dist/Components/FilterSidebar/FilterSidebar.js +166 -142
  261. package/dist/Components/FilterSidebar/filterHoverStyle.d.ts +12 -0
  262. package/dist/Components/FilterSidebar/filterHoverStyle.d.ts.map +1 -0
  263. package/dist/Components/FilterSidebar/filterHoverStyle.js +14 -0
  264. package/dist/Components/Form/FormWrapper.js +2 -2
  265. package/dist/Components/Header/Header.d.ts +17 -0
  266. package/dist/Components/Header/Header.d.ts.map +1 -1
  267. package/dist/Components/Header/Header.js +34 -6
  268. package/dist/Components/Header/HeaderActions.d.ts.map +1 -1
  269. package/dist/Components/Header/HeaderActions.js +3 -2
  270. package/dist/Components/Header/components/desktopMenu.d.ts.map +1 -1
  271. package/dist/Components/Header/components/desktopMenu.js +21 -5
  272. package/dist/Components/Input/Input/Input.d.ts.map +1 -1
  273. package/dist/Components/Input/Input/Input.js +6 -2
  274. package/dist/Components/Input/Switch/InputSwitch.d.ts.map +1 -1
  275. package/dist/Components/Input/Switch/InputSwitch.js +4 -2
  276. package/dist/Components/Input/TextInput.styles.d.ts.map +1 -1
  277. package/dist/Components/Input/TextInput.styles.js +6 -1
  278. package/dist/Components/InputTextArea/InputTextArea.style.d.ts.map +1 -1
  279. package/dist/Components/InputTextArea/InputTextArea.style.js +4 -1
  280. package/dist/Components/KanbanBoard/AccountCard.js +4 -4
  281. package/dist/Components/LazyWrapper/LazyWrapper.js +1 -2
  282. package/dist/Components/Modal/Modal.d.ts.map +1 -1
  283. package/dist/Components/Modal/Modal.js +4 -1
  284. package/dist/Components/MoreItems/MoreItems.d.ts.map +1 -1
  285. package/dist/Components/MoreItems/MoreItems.js +10 -4
  286. package/dist/Components/MultiSelect/MultiSelect.d.ts.map +1 -1
  287. package/dist/Components/MultiSelect/MultiSelect.js +5 -2
  288. package/dist/Components/NavigationBar/NavigationBar.d.ts.map +1 -1
  289. package/dist/Components/NavigationBar/NavigationBar.js +8 -2
  290. package/dist/Components/NoteTextArea/NoteTextArea.d.ts.map +1 -1
  291. package/dist/Components/NoteTextArea/NoteTextArea.js +5 -2
  292. package/dist/Components/Notification/Notification.d.ts.map +1 -1
  293. package/dist/Components/Notification/Notification.js +9 -5
  294. package/dist/Components/NumberInput/NumberInput.styles.d.ts.map +1 -1
  295. package/dist/Components/NumberInput/NumberInput.styles.js +4 -1
  296. package/dist/Components/OrgSwitcher/OrgSwitcher.d.ts.map +1 -1
  297. package/dist/Components/OrgSwitcher/OrgSwitcher.js +14 -7
  298. package/dist/Components/OrganizationDetails/CreateOrgModal.d.ts.map +1 -1
  299. package/dist/Components/OrganizationDetails/CreateOrgModal.js +1 -1
  300. package/dist/Components/OrganizationDetails/DeleteOrgModal.js +2 -2
  301. package/dist/Components/OrganizationDetails/OrganizationDetails.js +11 -11
  302. package/dist/Components/PdfViewer/PdfViewer.js +1 -2
  303. package/dist/Components/PinInput/PinInput.d.ts.map +1 -1
  304. package/dist/Components/PinInput/PinInput.js +5 -1
  305. package/dist/Components/PinInputs/PinInputs.d.ts.map +1 -1
  306. package/dist/Components/PinInputs/PinInputs.js +3 -1
  307. package/dist/Components/ProductCard/ProductCard.js +1 -1
  308. package/dist/Components/ProductCard/ProductPrice.d.ts.map +1 -1
  309. package/dist/Components/ProductCard/ProductPrice.js +7 -4
  310. package/dist/Components/ProductCard/ProductReview.d.ts.map +1 -1
  311. package/dist/Components/ProductCard/ProductReview.js +7 -3
  312. package/dist/Components/ProductCard/ProductTags.js +1 -1
  313. package/dist/Components/ProductDetails/ProductDtlPrice.d.ts.map +1 -1
  314. package/dist/Components/ProductDetails/ProductDtlPrice.js +4 -1
  315. package/dist/Components/ProductDetails/ProductImageSlider.js +4 -4
  316. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.d.ts.map +1 -1
  317. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +10 -7
  318. package/dist/Components/Reorder/Reorder.js +2 -1
  319. package/dist/Components/RolesPermission/DeleteRoleModal.d.ts.map +1 -1
  320. package/dist/Components/RolesPermission/DeleteRoleModal.js +4 -2
  321. package/dist/Components/RolesPermission/RolesPermission.js +6 -6
  322. package/dist/Components/SearchSelect/SearchSelect.d.ts.map +1 -1
  323. package/dist/Components/SearchSelect/SearchSelect.js +4 -4
  324. package/dist/Components/Select/Select.styles.d.ts.map +1 -1
  325. package/dist/Components/Select/Select.styles.js +4 -1
  326. package/dist/Components/SelectSearch/SelectSearch.d.ts.map +1 -1
  327. package/dist/Components/SelectSearch/SelectSearch.js +5 -3
  328. package/dist/Components/SideBar/SecondaryBar.d.ts.map +1 -1
  329. package/dist/Components/SideBar/SecondaryBar.js +14 -3
  330. package/dist/Components/SideBar/SideBar.d.ts.map +1 -1
  331. package/dist/Components/SideBar/SideBar.js +18 -4
  332. package/dist/Components/SideBar/components/MenuItemBox.d.ts.map +1 -1
  333. package/dist/Components/SideBar/components/MenuItemBox.js +13 -9
  334. package/dist/Components/SideBar/components/MenuPopoverContent.d.ts.map +1 -1
  335. package/dist/Components/SideBar/components/MenuPopoverContent.js +7 -2
  336. package/dist/Components/SideBar/sidebarAccentColors.d.ts +21 -0
  337. package/dist/Components/SideBar/sidebarAccentColors.d.ts.map +1 -0
  338. package/dist/Components/SideBar/sidebarAccentColors.js +36 -0
  339. package/dist/Components/SignInActivityTable/SignInActivityTable.d.ts.map +1 -1
  340. package/dist/Components/SignInActivityTable/SignInActivityTable.js +7 -6
  341. package/dist/Components/StageProgress/StageProgress.d.ts.map +1 -1
  342. package/dist/Components/StageProgress/StageProgress.js +9 -4
  343. package/dist/Components/StageProgress/StageProgressProps.d.ts.map +1 -1
  344. package/dist/Components/StageProgress/StageProgressProps.js +13 -4
  345. package/dist/Components/StageProgress/StepperStage.js +1 -1
  346. package/dist/Components/Switch/Switch.d.ts.map +1 -1
  347. package/dist/Components/Switch/Switch.js +5 -3
  348. package/dist/Components/Table/Table.d.ts.map +1 -1
  349. package/dist/Components/Table/Table.js +9 -9
  350. package/dist/Components/Table/TableProps.d.ts +1 -0
  351. package/dist/Components/Table/TableProps.d.ts.map +1 -1
  352. package/dist/Components/Table/components/HeaderActions.d.ts.map +1 -1
  353. package/dist/Components/Table/components/HeaderActions.js +2 -1
  354. package/dist/Components/Table/components/TableActions.js +1 -1
  355. package/dist/Components/Table/components/TableBody.d.ts.map +1 -1
  356. package/dist/Components/Table/components/TableBody.js +21 -15
  357. package/dist/Components/Table/components/TableHeader.d.ts.map +1 -1
  358. package/dist/Components/Table/components/TableHeader.js +7 -4
  359. package/dist/Components/Table/components/tableRowHoverStyle.d.ts +13 -0
  360. package/dist/Components/Table/components/tableRowHoverStyle.d.ts.map +1 -0
  361. package/dist/Components/Table/components/tableRowHoverStyle.js +26 -0
  362. package/dist/Components/Table/filters/CompactSelect.d.ts.map +1 -1
  363. package/dist/Components/Table/filters/CompactSelect.js +4 -1
  364. package/dist/Components/Table/filters/LeftFilterPane.d.ts.map +1 -1
  365. package/dist/Components/Table/filters/LeftFilterPane.js +5 -4
  366. package/dist/Components/Tag/Tag.styles.d.ts.map +1 -1
  367. package/dist/Components/Tag/Tag.styles.js +21 -8
  368. package/dist/Components/Timeline/Timeline.d.ts.map +1 -1
  369. package/dist/Components/Timeline/Timeline.js +18 -17
  370. package/dist/Components/Toaster/Toaster.d.ts.map +1 -1
  371. package/dist/Components/Toaster/Toaster.js +8 -5
  372. package/dist/Components/Toggle/TableToggle.js +2 -2
  373. package/dist/Components/ToolTip/ToolTip.d.ts.map +1 -1
  374. package/dist/Components/ToolTip/ToolTip.js +14 -2
  375. package/dist/Components/Trail/EditableCell.js +1 -1
  376. package/dist/Components/UpgradeButton/UpgradeButton.d.ts.map +1 -1
  377. package/dist/Components/UpgradeButton/UpgradeButton.js +9 -4
  378. package/dist/Components/UserDetails/AddUserModal.d.ts.map +1 -1
  379. package/dist/Components/UserDetails/AddUserModal.js +1 -1
  380. package/dist/Components/UserDetails/ChangeRoleModal.js +2 -2
  381. package/dist/Components/UserDetails/DeactivateConfirmModal.d.ts.map +1 -1
  382. package/dist/Components/UserDetails/DeactivateConfirmModal.js +5 -2
  383. package/dist/Components/UserDetails/UserDetails.d.ts.map +1 -1
  384. package/dist/Components/UserDetails/UserDetails.js +15 -8
  385. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.d.ts.map +1 -1
  386. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +3 -1
  387. package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts.map +1 -1
  388. package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +5 -1
  389. package/dist/Theme/chakra/common.web.d.ts +171 -0
  390. package/dist/Theme/chakra/common.web.d.ts.map +1 -0
  391. package/dist/Theme/chakra/common.web.js +21 -0
  392. package/dist/Theme/chakra/componentStyles.d.ts +13 -0
  393. package/dist/Theme/chakra/componentStyles.d.ts.map +1 -0
  394. package/dist/Theme/chakra/componentStyles.js +88 -0
  395. package/dist/Theme/chakra/createBrandTheme.d.ts +18 -0
  396. package/dist/Theme/chakra/createBrandTheme.d.ts.map +1 -0
  397. package/dist/Theme/chakra/createBrandTheme.js +78 -0
  398. package/dist/Theme/chakra/fonts.web.d.ts +42 -0
  399. package/dist/Theme/chakra/fonts.web.d.ts.map +1 -0
  400. package/dist/Theme/chakra/fonts.web.js +15 -0
  401. package/dist/Theme/index.d.ts +29 -8
  402. package/dist/Theme/index.d.ts.map +1 -1
  403. package/dist/Theme/index.js +54 -22
  404. package/dist/Theme/provider/PixelizeThemeProvider.d.ts +36 -0
  405. package/dist/Theme/provider/PixelizeThemeProvider.d.ts.map +1 -0
  406. package/dist/Theme/provider/PixelizeThemeProvider.js +91 -0
  407. package/dist/Theme/provider/ThemeSwitcher.d.ts +8 -0
  408. package/dist/Theme/provider/ThemeSwitcher.d.ts.map +1 -0
  409. package/dist/Theme/provider/ThemeSwitcher.js +99 -0
  410. package/dist/Theme/provider/colorModeStorage.d.ts +10 -0
  411. package/dist/Theme/provider/colorModeStorage.d.ts.map +1 -0
  412. package/dist/Theme/provider/colorModeStorage.js +106 -0
  413. package/dist/Theme/provider/index.d.ts +6 -0
  414. package/dist/Theme/provider/index.d.ts.map +1 -0
  415. package/dist/Theme/provider/index.js +9 -0
  416. package/dist/Theme/provider/useThemeMode.d.ts +3 -0
  417. package/dist/Theme/provider/useThemeMode.d.ts.map +1 -0
  418. package/dist/Theme/provider/useThemeMode.js +13 -0
  419. package/dist/Theme/themeProps.d.ts +10 -373
  420. package/dist/Theme/themeProps.d.ts.map +1 -1
  421. package/dist/Theme/tokens/brands/emerald/palette.dark.d.ts +7 -0
  422. package/dist/Theme/tokens/brands/emerald/palette.dark.d.ts.map +1 -0
  423. package/dist/Theme/tokens/brands/emerald/palette.dark.js +13 -0
  424. package/dist/Theme/tokens/brands/emerald/palette.light.d.ts +375 -0
  425. package/dist/Theme/tokens/brands/emerald/palette.light.d.ts.map +1 -0
  426. package/dist/Theme/tokens/brands/emerald/palette.light.js +135 -0
  427. package/dist/Theme/tokens/brands/index.d.ts +28 -0
  428. package/dist/Theme/tokens/brands/index.d.ts.map +1 -0
  429. package/dist/Theme/tokens/brands/index.js +93 -0
  430. package/dist/Theme/tokens/brands/lavender/palette.dark.d.ts +7 -0
  431. package/dist/Theme/tokens/brands/lavender/palette.dark.d.ts.map +1 -0
  432. package/dist/Theme/tokens/brands/lavender/palette.dark.js +13 -0
  433. package/dist/Theme/tokens/brands/lavender/palette.light.d.ts +375 -0
  434. package/dist/Theme/tokens/brands/lavender/palette.light.d.ts.map +1 -0
  435. package/dist/Theme/tokens/brands/lavender/palette.light.js +316 -0
  436. package/dist/Theme/tokens/brands/meadow/palette.dark.d.ts +7 -0
  437. package/dist/Theme/tokens/brands/meadow/palette.dark.d.ts.map +1 -0
  438. package/dist/Theme/tokens/brands/meadow/palette.dark.js +13 -0
  439. package/dist/Theme/tokens/brands/meadow/palette.light.d.ts +375 -0
  440. package/dist/Theme/tokens/brands/meadow/palette.light.d.ts.map +1 -0
  441. package/dist/Theme/tokens/brands/meadow/palette.light.js +133 -0
  442. package/dist/Theme/tokens/brands/radiant/palette.dark.d.ts +7 -0
  443. package/dist/Theme/tokens/brands/radiant/palette.dark.d.ts.map +1 -0
  444. package/dist/Theme/tokens/brands/radiant/palette.dark.js +13 -0
  445. package/dist/Theme/tokens/brands/radiant/palette.light.d.ts +375 -0
  446. package/dist/Theme/tokens/brands/radiant/palette.light.d.ts.map +1 -0
  447. package/dist/Theme/tokens/brands/radiant/palette.light.js +135 -0
  448. package/dist/Theme/tokens/brands/rosewood/palette.dark.d.ts +7 -0
  449. package/dist/Theme/tokens/brands/rosewood/palette.dark.d.ts.map +1 -0
  450. package/dist/Theme/tokens/brands/rosewood/palette.dark.js +13 -0
  451. package/dist/Theme/tokens/brands/rosewood/palette.light.d.ts +375 -0
  452. package/dist/Theme/tokens/brands/rosewood/palette.light.d.ts.map +1 -0
  453. package/dist/Theme/tokens/brands/rosewood/palette.light.js +139 -0
  454. package/dist/Theme/tokens/brands/skyline/palette.dark.d.ts +7 -0
  455. package/dist/Theme/tokens/brands/skyline/palette.dark.d.ts.map +1 -0
  456. package/dist/Theme/tokens/brands/skyline/palette.dark.js +13 -0
  457. package/dist/Theme/tokens/brands/skyline/palette.light.d.ts +375 -0
  458. package/dist/Theme/tokens/brands/skyline/palette.light.d.ts.map +1 -0
  459. package/dist/Theme/tokens/brands/skyline/palette.light.js +133 -0
  460. package/dist/Theme/tokens/brands/slate/palette.dark.d.ts +7 -0
  461. package/dist/Theme/tokens/brands/slate/palette.dark.d.ts.map +1 -0
  462. package/dist/Theme/tokens/brands/slate/palette.dark.js +13 -0
  463. package/dist/Theme/tokens/brands/slate/palette.light.d.ts +375 -0
  464. package/dist/Theme/tokens/brands/slate/palette.light.d.ts.map +1 -0
  465. package/dist/Theme/tokens/brands/slate/palette.light.js +137 -0
  466. package/dist/Theme/tokens/brands/storefront/palette.dark.d.ts +7 -0
  467. package/dist/Theme/tokens/brands/storefront/palette.dark.d.ts.map +1 -0
  468. package/dist/Theme/tokens/brands/storefront/palette.dark.js +13 -0
  469. package/dist/Theme/tokens/brands/storefront/palette.light.d.ts +375 -0
  470. package/dist/Theme/tokens/brands/storefront/palette.light.d.ts.map +1 -0
  471. package/dist/Theme/tokens/brands/storefront/palette.light.js +127 -0
  472. package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts +204 -0
  473. package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts.map +1 -0
  474. package/dist/Theme/tokens/brands/zinc/palette.dark.js +204 -0
  475. package/dist/Theme/tokens/brands/zinc/palette.light.d.ts +375 -0
  476. package/dist/Theme/tokens/brands/zinc/palette.light.d.ts.map +1 -0
  477. package/dist/Theme/tokens/brands/zinc/palette.light.js +383 -0
  478. package/dist/Theme/tokens/builders/accentText.d.ts +56 -0
  479. package/dist/Theme/tokens/builders/accentText.d.ts.map +1 -0
  480. package/dist/Theme/tokens/builders/accentText.js +92 -0
  481. package/dist/Theme/tokens/builders/buildBrandTokens.d.ts +16 -0
  482. package/dist/Theme/tokens/builders/buildBrandTokens.d.ts.map +1 -0
  483. package/dist/Theme/tokens/builders/buildBrandTokens.js +33 -0
  484. package/dist/Theme/tokens/builders/buildDarkPalette.d.ts +23 -0
  485. package/dist/Theme/tokens/builders/buildDarkPalette.d.ts.map +1 -0
  486. package/dist/Theme/tokens/builders/buildDarkPalette.js +282 -0
  487. package/dist/Theme/tokens/builders/chartColorsFromTheme.d.ts +17 -0
  488. package/dist/Theme/tokens/builders/chartColorsFromTheme.d.ts.map +1 -0
  489. package/dist/Theme/tokens/builders/chartColorsFromTheme.js +26 -0
  490. package/dist/Theme/tokens/builders/color.d.ts +50 -0
  491. package/dist/Theme/tokens/builders/color.d.ts.map +1 -0
  492. package/dist/Theme/tokens/builders/color.js +156 -0
  493. package/dist/Theme/tokens/builders/index.d.ts +6 -0
  494. package/dist/Theme/tokens/builders/index.d.ts.map +1 -0
  495. package/dist/Theme/tokens/builders/index.js +21 -0
  496. package/dist/Theme/tokens/index.d.ts +15 -0
  497. package/dist/Theme/tokens/index.d.ts.map +1 -0
  498. package/dist/Theme/tokens/index.js +30 -0
  499. package/dist/Theme/tokens/primitives/breakpoints.d.ts +9 -0
  500. package/dist/Theme/tokens/primitives/breakpoints.d.ts.map +1 -0
  501. package/dist/Theme/tokens/primitives/breakpoints.js +10 -0
  502. package/dist/Theme/tokens/primitives/index.d.ts +10 -0
  503. package/dist/Theme/tokens/primitives/index.d.ts.map +1 -0
  504. package/dist/Theme/tokens/primitives/index.js +27 -0
  505. package/dist/Theme/tokens/primitives/letterSpacings.d.ts +10 -0
  506. package/dist/Theme/tokens/primitives/letterSpacings.d.ts.map +1 -0
  507. package/dist/Theme/tokens/primitives/letterSpacings.js +11 -0
  508. package/dist/Theme/tokens/primitives/lineHeights.d.ts +19 -0
  509. package/dist/Theme/tokens/primitives/lineHeights.d.ts.map +1 -0
  510. package/dist/Theme/tokens/primitives/lineHeights.js +20 -0
  511. package/dist/Theme/tokens/primitives/radii.d.ts +13 -0
  512. package/dist/Theme/tokens/primitives/radii.d.ts.map +1 -0
  513. package/dist/Theme/tokens/primitives/radii.js +14 -0
  514. package/dist/Theme/tokens/primitives/shadows.d.ts +16 -0
  515. package/dist/Theme/tokens/primitives/shadows.d.ts.map +1 -0
  516. package/dist/Theme/tokens/primitives/shadows.js +17 -0
  517. package/dist/Theme/tokens/primitives/sizes.d.ts +63 -0
  518. package/dist/Theme/tokens/primitives/sizes.d.ts.map +1 -0
  519. package/dist/Theme/tokens/primitives/sizes.js +39 -0
  520. package/dist/Theme/tokens/primitives/space.d.ts +34 -0
  521. package/dist/Theme/tokens/primitives/space.d.ts.map +1 -0
  522. package/dist/Theme/tokens/primitives/space.js +35 -0
  523. package/dist/Theme/tokens/primitives/typography.d.ts +73 -0
  524. package/dist/Theme/tokens/primitives/typography.d.ts.map +1 -0
  525. package/dist/Theme/tokens/primitives/typography.js +43 -0
  526. package/dist/Theme/tokens/primitives/zIndices.d.ts +17 -0
  527. package/dist/Theme/tokens/primitives/zIndices.d.ts.map +1 -0
  528. package/dist/Theme/tokens/primitives/zIndices.js +18 -0
  529. package/dist/Theme/tokens/types.d.ts +116 -0
  530. package/dist/Theme/tokens/types.d.ts.map +1 -0
  531. package/dist/Theme/tokens/types.js +8 -0
  532. package/dist/Utils/table.d.ts +9 -2
  533. package/dist/Utils/table.d.ts.map +1 -1
  534. package/dist/Utils/table.js +23 -7
  535. package/dist/index.d.ts +10 -0
  536. package/dist/index.d.ts.map +1 -1
  537. package/dist/index.js +52 -1
  538. package/eslint.config.js +48 -0
  539. package/index.html +13 -0
  540. package/package.json +1 -5
  541. package/vite.config.ts +13 -0
@@ -1,11 +1,27 @@
1
- import lavender from "./Default/theme";
2
- import meadow from "./Meadow/theme";
3
- import radiant from "./Radiant/theme";
4
- import skyline from "./Skyline/theme";
5
- import slate from "./Slate/theme";
6
- import emerald from "./Emerald/theme";
7
- import rosewood from "./Rosewood/theme";
8
- export { skyline, meadow, radiant, lavender, slate, emerald, rosewood };
1
+ import createBrandTheme from "./chakra/createBrandTheme";
2
+ import type { ResolvedColorMode, ThemeName } from "./tokens/types";
3
+ /**
4
+ * Chakra themes per brand, built from the pure palettes in `tokens/brands`.
5
+ *
6
+ * These used to be seven near-identical `<Brand>/theme.ts` files that differed only in
7
+ * which palette they imported; `createBrandTheme` is that shared body.
8
+ */
9
+ declare const lavender: Record<string, any>;
10
+ declare const meadow: Record<string, any>;
11
+ declare const radiant: Record<string, any>;
12
+ declare const skyline: Record<string, any>;
13
+ declare const slate: Record<string, any>;
14
+ declare const emerald: Record<string, any>;
15
+ declare const rosewood: Record<string, any>;
16
+ declare const storefront: Record<string, any>;
17
+ declare const zinc: Record<string, any>;
18
+ export { skyline, meadow, radiant, lavender, slate, emerald, rosewood, storefront, zinc };
19
+ /**
20
+ * Published contract — consumers iterate this to render theme pickers, so both the keys
21
+ * and their order are load-bearing. Stays light-only: these are the exact theme objects
22
+ * apps already pass to `withTheme`, and dark is opt-in via `PixelizeThemeProvider`.
23
+ * `storefront`/`zinc` are appended at the end — additive, doesn't reorder existing entries.
24
+ */
9
25
  export declare const ThemesList: {
10
26
  lavender: Record<string, any>;
11
27
  meadow: Record<string, any>;
@@ -14,5 +30,10 @@ export declare const ThemesList: {
14
30
  rosewood: Record<string, any>;
15
31
  slate: Record<string, any>;
16
32
  radiant: Record<string, any>;
33
+ storefront: Record<string, any>;
34
+ zinc: Record<string, any>;
17
35
  };
36
+ export type BrandThemes = Record<ThemeName, Record<ResolvedColorMode, ReturnType<typeof createBrandTheme>>>;
37
+ /** Light + dark theme per brand. `PixelizeThemeProvider` swaps between these. */
38
+ export declare const brandThemes: BrandThemes;
18
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,MAAM,MAAM,gBAAgB,CAAC;AACpC,OAAO,OAAO,MAAM,iBAAiB,CAAC;AACtC,OAAO,OAAO,MAAM,iBAAiB,CAAC;AACtC,OAAO,KAAK,MAAM,eAAe,CAAC;AAClC,OAAO,OAAO,MAAM,iBAAiB,CAAC;AACtC,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAExE,eAAO,MAAM,UAAU;;;;;;;;CAQtB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEnE;;;;;GAKG;AACH,QAAA,MAAM,QAAQ,qBAA2C,CAAC;AAC1D,QAAA,MAAM,MAAM,qBAAyC,CAAC;AACtD,QAAA,MAAM,OAAO,qBAA0C,CAAC;AACxD,QAAA,MAAM,OAAO,qBAA0C,CAAC;AACxD,QAAA,MAAM,KAAK,qBAAwC,CAAC;AACpD,QAAA,MAAM,OAAO,qBAA0C,CAAC;AACxD,QAAA,MAAM,QAAQ,qBAA2C,CAAC;AAC1D,QAAA,MAAM,UAAU,qBAA6C,CAAC;AAC9D,QAAA,MAAM,IAAI,qBAAuC,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAE1F;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;CAUtB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,CAC9B,SAAS,EACT,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAC/D,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,WAAW,EAAE,WAUzB,CAAC"}
@@ -3,27 +3,59 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ThemesList = exports.rosewood = exports.emerald = exports.slate = exports.lavender = exports.radiant = exports.meadow = exports.skyline = void 0;
7
- const theme_1 = __importDefault(require("./Default/theme"));
8
- exports.lavender = theme_1.default;
9
- const theme_2 = __importDefault(require("./Meadow/theme"));
10
- exports.meadow = theme_2.default;
11
- const theme_3 = __importDefault(require("./Radiant/theme"));
12
- exports.radiant = theme_3.default;
13
- const theme_4 = __importDefault(require("./Skyline/theme"));
14
- exports.skyline = theme_4.default;
15
- const theme_5 = __importDefault(require("./Slate/theme"));
16
- exports.slate = theme_5.default;
17
- const theme_6 = __importDefault(require("./Emerald/theme"));
18
- exports.emerald = theme_6.default;
19
- const theme_7 = __importDefault(require("./Rosewood/theme"));
20
- exports.rosewood = theme_7.default;
6
+ exports.brandThemes = exports.ThemesList = exports.zinc = exports.storefront = exports.rosewood = exports.emerald = exports.slate = exports.lavender = exports.radiant = exports.meadow = exports.skyline = void 0;
7
+ const createBrandTheme_1 = __importDefault(require("./chakra/createBrandTheme"));
8
+ const brands_1 = require("./tokens/brands");
9
+ /**
10
+ * Chakra themes per brand, built from the pure palettes in `tokens/brands`.
11
+ *
12
+ * These used to be seven near-identical `<Brand>/theme.ts` files that differed only in
13
+ * which palette they imported; `createBrandTheme` is that shared body.
14
+ */
15
+ const lavender = (0, createBrandTheme_1.default)(brands_1.lightPalettes.lavender);
16
+ exports.lavender = lavender;
17
+ const meadow = (0, createBrandTheme_1.default)(brands_1.lightPalettes.meadow);
18
+ exports.meadow = meadow;
19
+ const radiant = (0, createBrandTheme_1.default)(brands_1.lightPalettes.radiant);
20
+ exports.radiant = radiant;
21
+ const skyline = (0, createBrandTheme_1.default)(brands_1.lightPalettes.skyline);
22
+ exports.skyline = skyline;
23
+ const slate = (0, createBrandTheme_1.default)(brands_1.lightPalettes.slate);
24
+ exports.slate = slate;
25
+ const emerald = (0, createBrandTheme_1.default)(brands_1.lightPalettes.emerald);
26
+ exports.emerald = emerald;
27
+ const rosewood = (0, createBrandTheme_1.default)(brands_1.lightPalettes.rosewood);
28
+ exports.rosewood = rosewood;
29
+ const storefront = (0, createBrandTheme_1.default)(brands_1.lightPalettes.storefront);
30
+ exports.storefront = storefront;
31
+ const zinc = (0, createBrandTheme_1.default)(brands_1.lightPalettes.zinc);
32
+ exports.zinc = zinc;
33
+ /**
34
+ * Published contract — consumers iterate this to render theme pickers, so both the keys
35
+ * and their order are load-bearing. Stays light-only: these are the exact theme objects
36
+ * apps already pass to `withTheme`, and dark is opt-in via `PixelizeThemeProvider`.
37
+ * `storefront`/`zinc` are appended at the end — additive, doesn't reorder existing entries.
38
+ */
21
39
  exports.ThemesList = {
22
- lavender: theme_1.default,
23
- meadow: theme_2.default,
24
- skyline: theme_4.default,
25
- emerald: theme_6.default,
26
- rosewood: theme_7.default,
27
- slate: theme_5.default,
28
- radiant: theme_3.default,
40
+ lavender: lavender,
41
+ meadow: meadow,
42
+ skyline: skyline,
43
+ emerald: emerald,
44
+ rosewood: rosewood,
45
+ slate: slate,
46
+ radiant: radiant,
47
+ storefront: storefront,
48
+ zinc: zinc,
49
+ };
50
+ /** Light + dark theme per brand. `PixelizeThemeProvider` swaps between these. */
51
+ exports.brandThemes = {
52
+ lavender: { light: lavender, dark: (0, createBrandTheme_1.default)(brands_1.darkPalettes.lavender, { colorMode: "dark" }) },
53
+ meadow: { light: meadow, dark: (0, createBrandTheme_1.default)(brands_1.darkPalettes.meadow, { colorMode: "dark" }) },
54
+ radiant: { light: radiant, dark: (0, createBrandTheme_1.default)(brands_1.darkPalettes.radiant, { colorMode: "dark" }) },
55
+ skyline: { light: skyline, dark: (0, createBrandTheme_1.default)(brands_1.darkPalettes.skyline, { colorMode: "dark" }) },
56
+ slate: { light: slate, dark: (0, createBrandTheme_1.default)(brands_1.darkPalettes.slate, { colorMode: "dark" }) },
57
+ emerald: { light: emerald, dark: (0, createBrandTheme_1.default)(brands_1.darkPalettes.emerald, { colorMode: "dark" }) },
58
+ rosewood: { light: rosewood, dark: (0, createBrandTheme_1.default)(brands_1.darkPalettes.rosewood, { colorMode: "dark" }) },
59
+ storefront: { light: storefront, dark: (0, createBrandTheme_1.default)(brands_1.darkPalettes.storefront, { colorMode: "dark" }) },
60
+ zinc: { light: zinc, dark: (0, createBrandTheme_1.default)(brands_1.darkPalettes.zinc, { colorMode: "dark" }) },
29
61
  };
@@ -0,0 +1,36 @@
1
+ import React from "react";
2
+ import type { ColorMode, ResolvedColorMode, ThemeName } from "../tokens/types";
3
+ export type ThemeModeContextValue = {
4
+ mode: ColorMode;
5
+ resolvedMode: ResolvedColorMode;
6
+ setMode: (mode: ColorMode) => void;
7
+ toggle: () => void;
8
+ brand: ThemeName;
9
+ setBrand: (brand: ThemeName) => void;
10
+ };
11
+ export type PixelizeThemeProviderProps = {
12
+ children: React.ReactNode;
13
+ /** Initial brand. A persisted brand wins over this. */
14
+ brand?: ThemeName;
15
+ /** Initial color mode. A persisted mode wins over this. */
16
+ defaultMode?: ColorMode;
17
+ storageKey?: string;
18
+ disablePersistence?: boolean;
19
+ };
20
+ export declare const ThemeModeContext: React.Context<ThemeModeContextValue | undefined>;
21
+ /**
22
+ * Chakra's own color mode is deliberately NOT synced to `resolvedMode`, and must not be.
23
+ *
24
+ * This provider adapts for dark by swapping the palette, so `theme.colors` is already correct for
25
+ * the active mode. Putting Chakra into dark mode on top of that adapts a second time: its built-in
26
+ * `_dark` blocks reach for `gray.700`/`gray.800` expecting those rungs to be dark, but our dark
27
+ * ramp runs dark -> light, so they resolve LIGHT — a white Card/Skeleton/Menu on a dark canvas.
28
+ * A previous revision synced it to keep `useColorModeValue()` working and shipped exactly that.
29
+ *
30
+ * Consequence for consumers: `useColorModeValue(light, dark)` always returns its LIGHT argument.
31
+ * That is correct here — the palette has already resolved the mode, so the "light" argument is
32
+ * whatever the active palette says. Read the mode from `useThemeMode()` instead. Existing apps are
33
+ * unaffected: they are light-only, where that argument was always the one returned anyway.
34
+ */
35
+ export declare const PixelizeThemeProvider: ({ children, brand: brandProp, defaultMode, storageKey, disablePersistence, }: PixelizeThemeProviderProps) => import("react/jsx-runtime").JSX.Element;
36
+ //# sourceMappingURL=PixelizeThemeProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PixelizeThemeProvider.d.ts","sourceRoot":"","sources":["../../../src/Theme/provider/PixelizeThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAU/E,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,iBAAiB,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,uDAAuD;IACvD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AA2BF,eAAO,MAAM,gBAAgB,kDAE5B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,GAAI,8EAMnC,0BAA0B,4CA0D5B,CAAC"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PixelizeThemeProvider = exports.ThemeModeContext = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const react_1 = require("react");
9
+ const react_2 = require("@chakra-ui/react");
10
+ const index_1 = require("../index");
11
+ const Toaster_1 = __importDefault(require("../../Components/Toaster/Toaster"));
12
+ const colorModeStorage_1 = require("./colorModeStorage");
13
+ const DEFAULT_BRAND = "lavender";
14
+ const DEFAULT_MODE = "system";
15
+ const DEFAULT_STORAGE_KEY = "pixelize-theme";
16
+ /**
17
+ * Chakra's default `colorModeManager` reads/writes its OWN `localStorage["chakra-ui-color-mode"]`
18
+ * key — entirely separate from this app's `storageKey` above — and that stored value wins over
19
+ * `theme.config.initialColorMode` on every load. `createBrandTheme` sets `initialColorMode: "light"`
20
+ * on every theme object specifically so Chakra's native dark mode (and every un-migrated built-in
21
+ * `_dark:` block — Card's "elevated" variant reaches for `gray.700`, which our reversed dark ramp
22
+ * makes LIGHT) never fires. But a stale `"dark"` value in that key — from Chakra's own toggle ever
23
+ * having been used on this origin, by this app or a prior version of it — silently overrides that
24
+ * default and reintroduces exactly the bug `initialColorMode: "light"` was meant to prevent: a
25
+ * washed-out light Card on an otherwise-correct dark canvas, while everything reading the palette
26
+ * directly (i.e. everything else) stays right. Forcing this manager to always report `"light"` and
27
+ * never persist removes Chakra's native color mode from the equation entirely, so no stray
28
+ * `_dark:` block anywhere (present or future) can ever fire, regardless of what's in storage.
29
+ */
30
+ const forcedLightColorModeManager = {
31
+ type: "localStorage",
32
+ ssr: false,
33
+ get: () => "light",
34
+ set: () => { },
35
+ };
36
+ exports.ThemeModeContext = (0, react_1.createContext)(undefined);
37
+ /**
38
+ * Chakra's own color mode is deliberately NOT synced to `resolvedMode`, and must not be.
39
+ *
40
+ * This provider adapts for dark by swapping the palette, so `theme.colors` is already correct for
41
+ * the active mode. Putting Chakra into dark mode on top of that adapts a second time: its built-in
42
+ * `_dark` blocks reach for `gray.700`/`gray.800` expecting those rungs to be dark, but our dark
43
+ * ramp runs dark -> light, so they resolve LIGHT — a white Card/Skeleton/Menu on a dark canvas.
44
+ * A previous revision synced it to keep `useColorModeValue()` working and shipped exactly that.
45
+ *
46
+ * Consequence for consumers: `useColorModeValue(light, dark)` always returns its LIGHT argument.
47
+ * That is correct here — the palette has already resolved the mode, so the "light" argument is
48
+ * whatever the active palette says. Read the mode from `useThemeMode()` instead. Existing apps are
49
+ * unaffected: they are light-only, where that argument was always the one returned anyway.
50
+ */
51
+ const PixelizeThemeProvider = ({ children, brand: brandProp = DEFAULT_BRAND, defaultMode = DEFAULT_MODE, storageKey = DEFAULT_STORAGE_KEY, disablePersistence = false, }) => {
52
+ const [mode, setModeState] = (0, react_1.useState)(defaultMode);
53
+ const [brand, setBrandState] = (0, react_1.useState)(brandProp);
54
+ // Deterministic on the server and on the first client render — the real OS value lands in
55
+ // the effect below, so hydration always matches.
56
+ const [systemMode, setSystemMode] = (0, react_1.useState)("light");
57
+ (0, react_1.useEffect)(() => {
58
+ setSystemMode((0, colorModeStorage_1.getSystemColorMode)());
59
+ return (0, colorModeStorage_1.subscribeToSystemColorMode)(setSystemMode);
60
+ }, []);
61
+ (0, react_1.useEffect)(() => {
62
+ if (disablePersistence)
63
+ return;
64
+ const stored = (0, colorModeStorage_1.readStoredTheme)(storageKey);
65
+ if (stored.mode)
66
+ setModeState(stored.mode);
67
+ if (stored.brand)
68
+ setBrandState(stored.brand);
69
+ }, [disablePersistence, storageKey]);
70
+ // Skipping the mount run keeps the defaults from being written over a stored value before
71
+ // the rehydrate effect above has applied it.
72
+ const isFirstPersistRun = (0, react_1.useRef)(true);
73
+ (0, react_1.useEffect)(() => {
74
+ if (isFirstPersistRun.current) {
75
+ isFirstPersistRun.current = false;
76
+ return;
77
+ }
78
+ if (disablePersistence)
79
+ return;
80
+ (0, colorModeStorage_1.writeStoredTheme)(storageKey, { mode, brand });
81
+ }, [mode, brand, disablePersistence, storageKey]);
82
+ const resolvedMode = mode === "system" ? systemMode : mode;
83
+ const setMode = (0, react_1.useCallback)((next) => setModeState(next), []);
84
+ const setBrand = (0, react_1.useCallback)((next) => setBrandState(next), []);
85
+ // From "system", flip to the opposite of what the OS currently gives, so a click always
86
+ // visibly changes the UI.
87
+ const toggle = (0, react_1.useCallback)(() => setModeState(resolvedMode === "dark" ? "light" : "dark"), [resolvedMode]);
88
+ const value = (0, react_1.useMemo)(() => ({ mode, resolvedMode, setMode, toggle, brand, setBrand }), [mode, resolvedMode, setMode, toggle, brand, setBrand]);
89
+ return ((0, jsx_runtime_1.jsx)(exports.ThemeModeContext.Provider, { value: value, children: (0, jsx_runtime_1.jsx)(react_2.ChakraProvider, { theme: index_1.brandThemes[brand][resolvedMode], colorModeManager: forcedLightColorModeManager, children: (0, jsx_runtime_1.jsx)(Toaster_1.default, { children: children }) }) }));
90
+ };
91
+ exports.PixelizeThemeProvider = PixelizeThemeProvider;
@@ -0,0 +1,8 @@
1
+ export type ThemeSwitcherProps = {
2
+ variant?: "icon" | "segmented" | "menu";
3
+ showBrandPicker?: boolean;
4
+ size?: "sm" | "md" | "lg";
5
+ "aria-label"?: string;
6
+ };
7
+ export declare const ThemeSwitcher: ({ variant, showBrandPicker, size, "aria-label": ariaLabel, }: ThemeSwitcherProps) => import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=ThemeSwitcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeSwitcher.d.ts","sourceRoot":"","sources":["../../../src/Theme/provider/ThemeSwitcher.tsx"],"names":[],"mappings":"AAoBA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAgQF,eAAO,MAAM,aAAa,GAAI,8DAK3B,kBAAkB,4CAuBpB,CAAC"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ThemeSwitcher = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const react_2 = require("@chakra-ui/react");
7
+ const lucide_react_1 = require("lucide-react");
8
+ const index_1 = require("../index");
9
+ const useCustomTheme_1 = require("../useCustomTheme");
10
+ const useThemeMode_1 = require("./useThemeMode");
11
+ const MODE_OPTIONS = [
12
+ { value: "light", label: "Light", Icon: lucide_react_1.Sun },
13
+ { value: "system", label: "System", Icon: lucide_react_1.Monitor },
14
+ { value: "dark", label: "Dark", Icon: lucide_react_1.Moon },
15
+ ];
16
+ const SIZES = {
17
+ sm: { control: "sm", icon: 14 },
18
+ md: { control: "md", icon: 16 },
19
+ lg: { control: "lg", icon: 18 },
20
+ };
21
+ const toBrandLabel = (brand) => brand.charAt(0).toUpperCase() + brand.slice(1);
22
+ /**
23
+ * Palette values already differ per color mode (`brandThemes[brand].light|dark`), so tokens
24
+ * are read straight from the active theme — no `useColorModeValue` pairing needed here.
25
+ * Fallbacks are Chakra token names, never literal colors, for themes without a brand palette.
26
+ */
27
+ const useSwitcherColors = () => {
28
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4;
29
+ const colors = (0, useCustomTheme_1.useCustomTheme)().colors;
30
+ return {
31
+ trackBg: (_d = (_b = (_a = colors === null || colors === void 0 ? void 0 : colors.backgroundColor) === null || _a === void 0 ? void 0 : _a.secondary) !== null && _b !== void 0 ? _b : (_c = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _c === void 0 ? void 0 : _c[100]) !== null && _d !== void 0 ? _d : "gray.100",
32
+ activeBg: (_g = (_f = (_e = colors === null || colors === void 0 ? void 0 : colors.backgroundColor) === null || _e === void 0 ? void 0 : _e.main) !== null && _f !== void 0 ? _f : colors === null || colors === void 0 ? void 0 : colors.white) !== null && _g !== void 0 ? _g : "white",
33
+ activeColor: (_l = (_j = (_h = colors === null || colors === void 0 ? void 0 : colors.primary) === null || _h === void 0 ? void 0 : _h[500]) !== null && _j !== void 0 ? _j : (_k = colors === null || colors === void 0 ? void 0 : colors.text) === null || _k === void 0 ? void 0 : _k[900]) !== null && _l !== void 0 ? _l : "inherit",
34
+ mutedColor: (_q = (_o = (_m = colors === null || colors === void 0 ? void 0 : colors.text) === null || _m === void 0 ? void 0 : _m[600]) !== null && _o !== void 0 ? _o : (_p = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _p === void 0 ? void 0 : _p[600]) !== null && _q !== void 0 ? _q : "gray.600",
35
+ hoverBg: (_s = (_r = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _r === void 0 ? void 0 : _r[100]) !== null && _s !== void 0 ? _s : "gray.100",
36
+ borderColor: (_w = (_u = (_t = colors === null || colors === void 0 ? void 0 : colors.border) === null || _t === void 0 ? void 0 : _t[200]) !== null && _u !== void 0 ? _u : (_v = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _v === void 0 ? void 0 : _v[200]) !== null && _w !== void 0 ? _w : "gray.200",
37
+ // Chakra's MenuList baseStyle hardcodes `--menu-bg` to "#fff" (gated behind `_dark`,
38
+ // which this theme-swap app never triggers) — same bug class already fixed in
39
+ // NavigationBar/ButtonGroupIcon. `bg` alone only recolors the list's own box, not the
40
+ // var other pseudo-states read, so both must be set.
41
+ menuBg: (_0 = (_y = (_x = colors === null || colors === void 0 ? void 0 : colors.backgroundColor) === null || _x === void 0 ? void 0 : _x.light) !== null && _y !== void 0 ? _y : (_z = colors === null || colors === void 0 ? void 0 : colors.background) === null || _z === void 0 ? void 0 : _z[50]) !== null && _0 !== void 0 ? _0 : "white",
42
+ menuColor: (_4 = (_2 = (_1 = colors === null || colors === void 0 ? void 0 : colors.text) === null || _1 === void 0 ? void 0 : _1[900]) !== null && _2 !== void 0 ? _2 : (_3 = colors === null || colors === void 0 ? void 0 : colors.gray) === null || _3 === void 0 ? void 0 : _3[900]) !== null && _4 !== void 0 ? _4 : "gray.900",
43
+ };
44
+ };
45
+ const BrandMenu = ({ size }) => {
46
+ const { brand, setBrand } = (0, useThemeMode_1.useThemeMode)();
47
+ const { mutedColor, menuBg, menuColor } = useSwitcherColors();
48
+ const brands = Object.keys(index_1.brandThemes);
49
+ return ((0, jsx_runtime_1.jsxs)(react_2.Menu, { children: [(0, jsx_runtime_1.jsx)(react_2.MenuButton, { as: react_2.Button, size: SIZES[size].control, variant: "ghost", color: mutedColor, borderRadius: "full", fontWeight: 500, "aria-label": `Brand theme, current ${toBrandLabel(brand)}`, _focusVisible: { boxShadow: "outline" }, children: toBrandLabel(brand) }), (0, jsx_runtime_1.jsx)(react_2.MenuList, { minW: "9rem", bg: menuBg, sx: { "--menu-bg": menuBg }, color: menuColor, children: (0, jsx_runtime_1.jsx)(react_2.MenuOptionGroup, { title: "Brand", type: "radio", value: brand, onChange: (value) => setBrand(value), children: brands.map((option) => ((0, jsx_runtime_1.jsx)(react_2.MenuItemOption, { value: option, children: toBrandLabel(option) }, option))) }) })] }));
50
+ };
51
+ const IconVariant = ({ size, label, }) => {
52
+ const { resolvedMode, toggle } = (0, useThemeMode_1.useThemeMode)();
53
+ const { mutedColor, hoverBg } = useSwitcherColors();
54
+ const isDark = resolvedMode === "dark";
55
+ const Icon = isDark ? lucide_react_1.Moon : lucide_react_1.Sun;
56
+ const accessibleLabel = label !== null && label !== void 0 ? label : `Switch to ${isDark ? "light" : "dark"} mode`;
57
+ return ((0, jsx_runtime_1.jsx)(react_2.Tooltip, { label: accessibleLabel, openDelay: 400, children: (0, jsx_runtime_1.jsx)(react_2.IconButton, { "aria-label": accessibleLabel, "aria-pressed": isDark, icon: (0, jsx_runtime_1.jsx)(Icon, { size: SIZES[size].icon, "aria-hidden": true }), onClick: toggle, size: SIZES[size].control, variant: "ghost", color: mutedColor, borderRadius: "full", _hover: { bg: hoverBg }, _focusVisible: { boxShadow: "outline" } }) }));
58
+ };
59
+ const SegmentedVariant = ({ size, label, showBrandPicker, }) => {
60
+ const { mode, setMode } = (0, useThemeMode_1.useThemeMode)();
61
+ const { trackBg, activeBg, activeColor, mutedColor, borderColor } = useSwitcherColors();
62
+ const optionRefs = (0, react_1.useRef)([]);
63
+ // APG radiogroup behavior: arrows move focus and selection together.
64
+ const handleKeyDown = (event, index) => {
65
+ var _a;
66
+ const forward = event.key === "ArrowRight" || event.key === "ArrowDown";
67
+ const backward = event.key === "ArrowLeft" || event.key === "ArrowUp";
68
+ if (!forward && !backward)
69
+ return;
70
+ event.preventDefault();
71
+ const next = (index + (forward ? 1 : -1) + MODE_OPTIONS.length) % MODE_OPTIONS.length;
72
+ setMode(MODE_OPTIONS[next].value);
73
+ (_a = optionRefs.current[next]) === null || _a === void 0 ? void 0 : _a.focus();
74
+ };
75
+ return ((0, jsx_runtime_1.jsxs)(react_2.HStack, { role: "radiogroup", "aria-label": label !== null && label !== void 0 ? label : "Color mode", display: "inline-flex", spacing: 1, p: "0.25rem", bg: trackBg, border: "0.063rem solid", borderColor: borderColor, borderRadius: "full", children: [MODE_OPTIONS.map(({ value, label: optionLabel, Icon }, index) => {
76
+ const isSelected = mode === value;
77
+ return ((0, jsx_runtime_1.jsx)(react_2.Button, { ref: (node) => {
78
+ optionRefs.current[index] = node;
79
+ }, role: "radio", "aria-checked": isSelected, "aria-label": optionLabel, onClick: () => setMode(value), onKeyDown: (event) => handleKeyDown(event, index), size: SIZES[size].control, variant: "ghost", borderRadius: "full", bg: isSelected ? activeBg : "transparent", color: isSelected ? activeColor : mutedColor, boxShadow: isSelected ? "sm" : "none", _hover: { color: activeColor }, _focusVisible: { boxShadow: "outline" }, children: (0, jsx_runtime_1.jsx)(Icon, { size: SIZES[size].icon, "aria-hidden": true }) }, value));
80
+ }), showBrandPicker && (0, jsx_runtime_1.jsx)(BrandMenu, { size: size })] }));
81
+ };
82
+ const MenuVariant = ({ size, label, showBrandPicker, }) => {
83
+ var _a;
84
+ const { mode, brand, setMode, setBrand } = (0, useThemeMode_1.useThemeMode)();
85
+ const { mutedColor, hoverBg, menuBg, menuColor } = useSwitcherColors();
86
+ const active = (_a = MODE_OPTIONS.find((option) => option.value === mode)) !== null && _a !== void 0 ? _a : MODE_OPTIONS[0];
87
+ const brands = Object.keys(index_1.brandThemes);
88
+ return ((0, jsx_runtime_1.jsxs)(react_2.Menu, { children: [(0, jsx_runtime_1.jsx)(react_2.MenuButton, { as: react_2.IconButton, "aria-label": label !== null && label !== void 0 ? label : `Color mode, current ${active.label}`, icon: (0, jsx_runtime_1.jsx)(active.Icon, { size: SIZES[size].icon, "aria-hidden": true }), size: SIZES[size].control, variant: "ghost", color: mutedColor, borderRadius: "full", _hover: { bg: hoverBg }, _focusVisible: { boxShadow: "outline" } }), (0, jsx_runtime_1.jsxs)(react_2.MenuList, { minW: "10rem", bg: menuBg, sx: { "--menu-bg": menuBg }, color: menuColor, children: [(0, jsx_runtime_1.jsx)(react_2.MenuOptionGroup, { title: "Appearance", type: "radio", value: mode, onChange: (value) => setMode(value), children: MODE_OPTIONS.map(({ value, label: optionLabel, Icon }) => ((0, jsx_runtime_1.jsx)(react_2.MenuItemOption, { value: value, children: (0, jsx_runtime_1.jsxs)(react_2.HStack, { spacing: 2, children: [(0, jsx_runtime_1.jsx)(Icon, { size: SIZES[size].icon, "aria-hidden": true }), (0, jsx_runtime_1.jsx)(react_2.Text, { as: "span", children: optionLabel })] }) }, value))) }), showBrandPicker && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_2.MenuDivider, {}), (0, jsx_runtime_1.jsx)(react_2.MenuOptionGroup, { title: "Brand", type: "radio", value: brand, onChange: (value) => setBrand(value), children: brands.map((option) => ((0, jsx_runtime_1.jsx)(react_2.MenuItemOption, { value: option, children: toBrandLabel(option) }, option))) })] }))] })] }));
89
+ };
90
+ const ThemeSwitcher = ({ variant = "icon", showBrandPicker = false, size = "md", "aria-label": ariaLabel, }) => {
91
+ if (variant === "segmented") {
92
+ return ((0, jsx_runtime_1.jsx)(SegmentedVariant, { size: size, label: ariaLabel, showBrandPicker: showBrandPicker }));
93
+ }
94
+ if (variant === "menu") {
95
+ return ((0, jsx_runtime_1.jsx)(MenuVariant, { size: size, label: ariaLabel, showBrandPicker: showBrandPicker }));
96
+ }
97
+ return ((0, jsx_runtime_1.jsxs)(react_2.HStack, { spacing: 1, display: "inline-flex", children: [(0, jsx_runtime_1.jsx)(IconVariant, { size: size, label: ariaLabel }), showBrandPicker && (0, jsx_runtime_1.jsx)(BrandMenu, { size: size })] }));
98
+ };
99
+ exports.ThemeSwitcher = ThemeSwitcher;
@@ -0,0 +1,10 @@
1
+ import type { ColorMode, ResolvedColorMode, ThemeName } from "../tokens/types";
2
+ export type StoredTheme = {
3
+ mode?: ColorMode;
4
+ brand?: ThemeName;
5
+ };
6
+ export declare const readStoredTheme: (storageKey: string) => StoredTheme;
7
+ export declare const writeStoredTheme: (storageKey: string, value: StoredTheme) => void;
8
+ export declare const getSystemColorMode: () => ResolvedColorMode;
9
+ export declare const subscribeToSystemColorMode: (callback: (mode: ResolvedColorMode) => void) => (() => void);
10
+ //# sourceMappingURL=colorModeStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorModeStorage.d.ts","sourceRoot":"","sources":["../../../src/Theme/provider/colorModeStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAiCF,eAAO,MAAM,eAAe,GAAI,YAAY,MAAM,KAAG,WAmBpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,YAAY,MAAM,EAAE,OAAO,WAAW,KAAG,IASzE,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,iBASrC,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,UAAU,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,KAC1C,CAAC,MAAM,IAAI,CA0Bb,CAAC"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.subscribeToSystemColorMode = exports.getSystemColorMode = exports.writeStoredTheme = exports.readStoredTheme = void 0;
4
+ const DARK_QUERY = "(prefers-color-scheme: dark)";
5
+ /**
6
+ * Stored values are untrusted input — a stale or hand-edited entry must never reach
7
+ * `brandThemes[brand]` and hand Chakra an `undefined` theme.
8
+ */
9
+ const VALID_MODES = ["light", "dark", "system"];
10
+ const VALID_BRANDS = [
11
+ "lavender",
12
+ "meadow",
13
+ "radiant",
14
+ "skyline",
15
+ "slate",
16
+ "emerald",
17
+ "rosewood",
18
+ "storefront",
19
+ "zinc",
20
+ ];
21
+ const noop = () => { };
22
+ /** Safari private mode throws on `localStorage` access rather than returning null. */
23
+ const getStorage = () => {
24
+ var _a;
25
+ try {
26
+ if (typeof window === "undefined")
27
+ return null;
28
+ return (_a = window.localStorage) !== null && _a !== void 0 ? _a : null;
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ };
34
+ const readStoredTheme = (storageKey) => {
35
+ const storage = getStorage();
36
+ if (!storage)
37
+ return {};
38
+ try {
39
+ const raw = storage.getItem(storageKey);
40
+ if (!raw)
41
+ return {};
42
+ const parsed = JSON.parse(raw);
43
+ if (!parsed || typeof parsed !== "object")
44
+ return {};
45
+ const { mode, brand } = parsed;
46
+ const stored = {};
47
+ if (mode && VALID_MODES.includes(mode))
48
+ stored.mode = mode;
49
+ if (brand && VALID_BRANDS.includes(brand))
50
+ stored.brand = brand;
51
+ return stored;
52
+ }
53
+ catch {
54
+ return {};
55
+ }
56
+ };
57
+ exports.readStoredTheme = readStoredTheme;
58
+ const writeStoredTheme = (storageKey, value) => {
59
+ const storage = getStorage();
60
+ if (!storage)
61
+ return;
62
+ try {
63
+ storage.setItem(storageKey, JSON.stringify(value));
64
+ }
65
+ catch {
66
+ // Quota / private mode. Persistence is best-effort — never break the app over it.
67
+ }
68
+ };
69
+ exports.writeStoredTheme = writeStoredTheme;
70
+ const getSystemColorMode = () => {
71
+ try {
72
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") {
73
+ return "light";
74
+ }
75
+ return window.matchMedia(DARK_QUERY).matches ? "dark" : "light";
76
+ }
77
+ catch {
78
+ return "light";
79
+ }
80
+ };
81
+ exports.getSystemColorMode = getSystemColorMode;
82
+ const subscribeToSystemColorMode = (callback) => {
83
+ try {
84
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") {
85
+ return noop;
86
+ }
87
+ const query = window.matchMedia(DARK_QUERY);
88
+ const handler = (event) => {
89
+ callback(event.matches ? "dark" : "light");
90
+ };
91
+ if (typeof query.addEventListener === "function") {
92
+ query.addEventListener("change", handler);
93
+ return () => query.removeEventListener("change", handler);
94
+ }
95
+ // Safari < 14 only has the deprecated listener API.
96
+ if (typeof query.addListener === "function") {
97
+ query.addListener(handler);
98
+ return () => query.removeListener(handler);
99
+ }
100
+ return noop;
101
+ }
102
+ catch {
103
+ return noop;
104
+ }
105
+ };
106
+ exports.subscribeToSystemColorMode = subscribeToSystemColorMode;
@@ -0,0 +1,6 @@
1
+ export { PixelizeThemeProvider } from "./PixelizeThemeProvider";
2
+ export type { PixelizeThemeProviderProps, ThemeModeContextValue, } from "./PixelizeThemeProvider";
3
+ export { useThemeMode } from "./useThemeMode";
4
+ export { ThemeSwitcher } from "./ThemeSwitcher";
5
+ export type { ThemeSwitcherProps } from "./ThemeSwitcher";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Theme/provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EACV,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ThemeSwitcher = exports.useThemeMode = exports.PixelizeThemeProvider = void 0;
4
+ var PixelizeThemeProvider_1 = require("./PixelizeThemeProvider");
5
+ Object.defineProperty(exports, "PixelizeThemeProvider", { enumerable: true, get: function () { return PixelizeThemeProvider_1.PixelizeThemeProvider; } });
6
+ var useThemeMode_1 = require("./useThemeMode");
7
+ Object.defineProperty(exports, "useThemeMode", { enumerable: true, get: function () { return useThemeMode_1.useThemeMode; } });
8
+ var ThemeSwitcher_1 = require("./ThemeSwitcher");
9
+ Object.defineProperty(exports, "ThemeSwitcher", { enumerable: true, get: function () { return ThemeSwitcher_1.ThemeSwitcher; } });
@@ -0,0 +1,3 @@
1
+ import { ThemeModeContextValue } from "./PixelizeThemeProvider";
2
+ export declare const useThemeMode: () => ThemeModeContextValue;
3
+ //# sourceMappingURL=useThemeMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useThemeMode.d.ts","sourceRoot":"","sources":["../../../src/Theme/provider/useThemeMode.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAElF,eAAO,MAAM,YAAY,QAAO,qBAU/B,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useThemeMode = void 0;
4
+ const react_1 = require("react");
5
+ const PixelizeThemeProvider_1 = require("./PixelizeThemeProvider");
6
+ const useThemeMode = () => {
7
+ const context = (0, react_1.useContext)(PixelizeThemeProvider_1.ThemeModeContext);
8
+ if (!context) {
9
+ throw new Error("useThemeMode must be used inside <PixelizeThemeProvider>. Wrap your app (or at least the subtree that calls useThemeMode) in <PixelizeThemeProvider> from pixelize-design-library.");
10
+ }
11
+ return context;
12
+ };
13
+ exports.useThemeMode = useThemeMode;