pixelize-design-library 2.4.2-beta.0 → 2.4.2-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. package/dist/Components/Accordion/Accordion.js +13 -15
  2. package/dist/Components/Accordion/accordionColors.js +6 -9
  3. package/dist/Components/AlertDialog/AlertDialog.js +1 -2
  4. package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChart.js +2 -3
  5. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.js +2 -3
  6. package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChart.js +2 -3
  7. package/dist/Components/AppearanceSettings/AppearanceSettings.js +9 -7
  8. package/dist/Components/Button/Button.styles.js +7 -12
  9. package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +12 -13
  10. package/dist/Components/Checkbox/Checkbox.js +1 -1
  11. package/dist/Components/Checkbox/Checkbox.styles.js +2 -0
  12. package/dist/Components/Common/ErrorComponent.js +5 -8
  13. package/dist/Components/Common/ErrorMessage.js +2 -8
  14. package/dist/Components/Common/FormLabel.js +1 -3
  15. package/dist/Components/Common/FormattedDescription.js +3 -1
  16. package/dist/Components/Common/Label.js +3 -8
  17. package/dist/Components/Common/fieldStyles.js +6 -7
  18. package/dist/Components/ContactForm/ContactForm.js +1 -2
  19. package/dist/Components/CopyButton/CopyButton.js +3 -6
  20. package/dist/Components/CustomModulesTable/CustomModulesTable.js +7 -10
  21. package/dist/Components/CustomModulesTable/DeleteModuleModal.js +2 -2
  22. package/dist/Components/CustomModulesTable/EditModuleModal.js +2 -3
  23. package/dist/Components/DatePicker/CalendarPanel.js +3 -4
  24. package/dist/Components/DatePicker/RangeDatePicker.js +9 -9
  25. package/dist/Components/DatePicker/SingleDatePicker.js +11 -11
  26. package/dist/Components/DatePicker/TimeOnlyPicker.js +2 -2
  27. package/dist/Components/DatePicker/TimePicker.js +6 -7
  28. package/dist/Components/DatePicker/TimePickerInput.js +6 -7
  29. package/dist/Components/Divider/Divider.js +1 -2
  30. package/dist/Components/Drawer/Drawer.js +1 -2
  31. package/dist/Components/Dropdown/DropDown.js +19 -33
  32. package/dist/Components/Editor/Editor.js +10 -13
  33. package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +3 -3
  34. package/dist/Components/EmptyState/EmptyState.js +11 -11
  35. package/dist/Components/FieldSelectModal/FieldSelectModal.js +1 -1
  36. package/dist/Components/FilePreview/FilePreview.js +2 -2
  37. package/dist/Components/FileUpload/FileUpload.js +18 -24
  38. package/dist/Components/FileUploader/FileUploader.js +5 -6
  39. package/dist/Components/FilterSidebar/FilterSidebar.js +156 -160
  40. package/dist/Components/Form/FormWrapper.js +1 -2
  41. package/dist/Components/Header/Header.js +6 -6
  42. package/dist/Components/Header/HeaderActions.d.ts +3 -1
  43. package/dist/Components/Header/HeaderActions.js +8 -4
  44. package/dist/Components/Header/components/desktopMenu.js +7 -20
  45. package/dist/Components/Header/components/mobileMenu.js +3 -15
  46. package/dist/Components/Input/Input/Input.js +13 -17
  47. package/dist/Components/Input/TextInput.styles.js +15 -16
  48. package/dist/Components/InputTextArea/InputTextArea.d.ts +1 -1
  49. package/dist/Components/InputTextArea/InputTextArea.style.js +14 -14
  50. package/dist/Components/KanbanBoard/AccountCard.js +10 -4
  51. package/dist/Components/KanbanBoard/AccountRow.js +1 -2
  52. package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.js +2 -2
  53. package/dist/Components/KanbanBoard/KanbanBoard.js +15 -62
  54. package/dist/Components/LazyWrapper/LazyWrapper.js +1 -1
  55. package/dist/Components/LimitReachedModal/LimitReachedModal.js +5 -18
  56. package/dist/Components/Loading/Loading.js +1 -1
  57. package/dist/Components/Modal/Modal.js +3 -1
  58. package/dist/Components/MoreItems/MoreItems.js +3 -7
  59. package/dist/Components/MultiSelect/MultiSelect.js +5 -6
  60. package/dist/Components/NavigationBar/NavigationBar.d.ts +1 -1
  61. package/dist/Components/NavigationBar/NavigationBar.js +22 -18
  62. package/dist/Components/NavigationBar/NavigationBarProps.d.ts +5 -0
  63. package/dist/Components/NoteTextArea/NoteTextArea.js +7 -9
  64. package/dist/Components/Notification/Notification.js +17 -15
  65. package/dist/Components/NumberInput/NumberInput.styles.js +14 -14
  66. package/dist/Components/OrgSwitcher/OrgSwitcher.js +7 -8
  67. package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +2 -0
  68. package/dist/Components/OrgSwitcher/OrgSwitcherProps.js +6 -2
  69. package/dist/Components/OrganizationDetails/CreateOrgModal.js +1 -2
  70. package/dist/Components/OrganizationDetails/DeleteOrgModal.js +5 -2
  71. package/dist/Components/OrganizationDetails/OrganizationDetails.js +25 -22
  72. package/dist/Components/PdfViewer/PdfViewer.js +1 -1
  73. package/dist/Components/PinInput/PinInput.js +1 -1
  74. package/dist/Components/PinInputs/PinInputs.js +7 -14
  75. package/dist/Components/PlanPill/PlanPill.js +8 -11
  76. package/dist/Components/PlanPill/planPillGradient.d.ts +21 -14
  77. package/dist/Components/PlanPill/planPillGradient.js +33 -16
  78. package/dist/Components/ProductCard/ProductPrice.js +6 -6
  79. package/dist/Components/ProductCard/ProductReview.js +4 -1
  80. package/dist/Components/ProductCard/ProductTags.js +4 -4
  81. package/dist/Components/ProductDetails/ProductDetails.js +3 -1
  82. package/dist/Components/ProductDetails/ProductDtlPrice.js +3 -3
  83. package/dist/Components/ProfileCard/ProfileCard.js +4 -4
  84. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +19 -16
  85. package/dist/Components/RadioButton/RadioButton.js +1 -1
  86. package/dist/Components/Reorder/Reorder.js +3 -4
  87. package/dist/Components/RolesPermission/DeleteRoleModal.js +5 -4
  88. package/dist/Components/RolesPermission/RolesPermission.js +12 -14
  89. package/dist/Components/ScrollToTop/ScrollToTop.js +2 -3
  90. package/dist/Components/ScrollbarBox/ScrollbarBox.d.ts +13 -0
  91. package/dist/Components/ScrollbarBox/ScrollbarBox.js +11 -0
  92. package/dist/Components/SearchSelect/SearchSelect.js +26 -28
  93. package/dist/Components/Select/Select.styles.js +34 -37
  94. package/dist/Components/SelectSearch/SelectSearch.js +10 -10
  95. package/dist/Components/SelectV2/SelectV2.js +8 -20
  96. package/dist/Components/SideBar/SecondaryBar.js +10 -15
  97. package/dist/Components/SideBar/SideBar.d.ts +1 -1
  98. package/dist/Components/SideBar/SideBar.js +41 -34
  99. package/dist/Components/SideBar/SideBarProps.d.ts +6 -0
  100. package/dist/Components/SideBar/components/MenuItemBox.js +10 -12
  101. package/dist/Components/SideBar/components/MenuItems.js +3 -1
  102. package/dist/Components/SideBar/components/MenuPopoverContent.js +7 -9
  103. package/dist/Components/SideBar/components/OtherApps.js +4 -4
  104. package/dist/Components/SideBar/sidebarAccentColors.d.ts +4 -17
  105. package/dist/Components/SideBar/sidebarAccentColors.js +6 -33
  106. package/dist/Components/SignInActivityTable/SignInActivityTable.js +6 -7
  107. package/dist/Components/Slider/Slider.js +2 -2
  108. package/dist/Components/StageProgress/StageProgress.js +2 -9
  109. package/dist/Components/StageProgress/StageProgressProps.js +9 -13
  110. package/dist/Components/Table/Table.js +19 -30
  111. package/dist/Components/Table/components/HeaderActions.js +6 -7
  112. package/dist/Components/Table/components/Pagination.js +1 -1
  113. package/dist/Components/Table/components/TableActions.js +4 -4
  114. package/dist/Components/Table/components/TableBody.js +18 -20
  115. package/dist/Components/Table/components/TableGroupRow.js +1 -2
  116. package/dist/Components/Table/components/TableHeader.js +8 -12
  117. package/dist/Components/Table/components/TableSearch.js +1 -2
  118. package/dist/Components/Table/components/tableRowHoverStyle.js +2 -3
  119. package/dist/Components/Table/filters/ActiveFilters.js +5 -24
  120. package/dist/Components/Table/filters/CompactSelect.js +4 -5
  121. package/dist/Components/Table/filters/LeftFilterPane.js +4 -5
  122. package/dist/Components/Table/filters/TableFilters.js +1 -2
  123. package/dist/Components/Table/hooks/useTable.js +8 -11
  124. package/dist/Components/Table/settings/ManageColumns.js +4 -18
  125. package/dist/Components/Table/settings/TableSettings.js +13 -21
  126. package/dist/Components/Tag/Tag.styles.js +8 -6
  127. package/dist/Components/Timeline/Timeline.js +32 -45
  128. package/dist/Components/Toaster/Toaster.js +43 -44
  129. package/dist/Components/ToolTip/ToolTip.js +1 -6
  130. package/dist/Components/Trail/EditableCell.js +4 -1
  131. package/dist/Components/Trail/TrailWorks.js +3 -3
  132. package/dist/Components/UpgradeButton/UpgradeButton.js +4 -6
  133. package/dist/Components/UserDetails/AddUserModal.js +3 -3
  134. package/dist/Components/UserDetails/ChangeRoleModal.js +2 -2
  135. package/dist/Components/UserDetails/DeactivateConfirmModal.js +5 -5
  136. package/dist/Components/UserDetails/UserDetails.js +14 -16
  137. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +1 -2
  138. package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +3 -4
  139. package/dist/Constants/Sidebar.js +3 -2
  140. package/dist/Theme/assertPalette.d.ts +11 -0
  141. package/dist/Theme/assertPalette.js +55 -0
  142. package/dist/Theme/chakra/Avatar.styles.d.ts +5 -5
  143. package/dist/Theme/chakra/Avatar.styles.js +2 -2
  144. package/dist/Theme/chakra/Drawer.styles.d.ts +5 -5
  145. package/dist/Theme/chakra/Drawer.styles.js +8 -10
  146. package/dist/Theme/chakra/Menu.styles.d.ts +9 -6
  147. package/dist/Theme/chakra/Menu.styles.js +11 -5
  148. package/dist/Theme/chakra/Modal.styles.d.ts +5 -5
  149. package/dist/Theme/chakra/Modal.styles.js +8 -10
  150. package/dist/Theme/chakra/Popover.styles.d.ts +9 -6
  151. package/dist/Theme/chakra/Popover.styles.js +11 -6
  152. package/dist/Theme/chakra/Slider.styles.d.ts +1 -1
  153. package/dist/Theme/chakra/Slider.styles.js +7 -9
  154. package/dist/Theme/chakra/Switch.styles.d.ts +1 -1
  155. package/dist/Theme/chakra/Switch.styles.js +7 -9
  156. package/dist/Theme/chakra/Tabs.styles.d.ts +2 -2
  157. package/dist/Theme/chakra/Tabs.styles.js +13 -18
  158. package/dist/Theme/chakra/componentStyles.d.ts +69 -30
  159. package/dist/Theme/chakra/componentStyles.js +52 -43
  160. package/dist/Theme/chakra/createBrandTheme.js +3 -16
  161. package/dist/Theme/chakra/paletteFromTheme.d.ts +10 -0
  162. package/dist/Theme/chakra/paletteFromTheme.js +14 -0
  163. package/dist/Theme/provider/PixelizeThemeProvider.js +23 -20
  164. package/dist/Theme/provider/ThemeSwitcher.js +13 -20
  165. package/dist/Theme/testing/testPalette.d.ts +16 -0
  166. package/dist/Theme/testing/testPalette.js +24 -0
  167. package/dist/Theme/tokens/brands/emerald/palette.light.d.ts +2 -373
  168. package/dist/Theme/tokens/brands/emerald/palette.light.js +5 -7
  169. package/dist/Theme/tokens/brands/index.d.ts +3 -2
  170. package/dist/Theme/tokens/brands/index.js +29 -23
  171. package/dist/Theme/tokens/brands/lavender/palette.light.d.ts +2 -373
  172. package/dist/Theme/tokens/brands/lavender/palette.light.js +5 -116
  173. package/dist/Theme/tokens/brands/meadow/palette.light.d.ts +2 -373
  174. package/dist/Theme/tokens/brands/meadow/palette.light.js +5 -7
  175. package/dist/Theme/tokens/brands/neutrals.d.ts +8 -0
  176. package/dist/Theme/tokens/brands/neutrals.js +119 -0
  177. package/dist/Theme/tokens/brands/radiant/palette.light.d.ts +2 -373
  178. package/dist/Theme/tokens/brands/radiant/palette.light.js +5 -7
  179. package/dist/Theme/tokens/brands/rosewood/palette.light.d.ts +2 -373
  180. package/dist/Theme/tokens/brands/rosewood/palette.light.js +5 -7
  181. package/dist/Theme/tokens/brands/skyline/palette.light.d.ts +2 -373
  182. package/dist/Theme/tokens/brands/skyline/palette.light.js +5 -7
  183. package/dist/Theme/tokens/brands/slate/palette.light.d.ts +2 -373
  184. package/dist/Theme/tokens/brands/slate/palette.light.js +7 -13
  185. package/dist/Theme/tokens/brands/storefront/palette.light.d.ts +2 -373
  186. package/dist/Theme/tokens/brands/storefront/palette.light.js +5 -7
  187. package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts +5 -3
  188. package/dist/Theme/tokens/brands/zinc/palette.dark.js +2 -1
  189. package/dist/Theme/tokens/brands/zinc/palette.light.d.ts +2 -373
  190. package/dist/Theme/tokens/builders/accentText.d.ts +2 -2
  191. package/dist/Theme/tokens/builders/accentText.js +8 -27
  192. package/dist/Theme/tokens/builders/brandInk.d.ts +11 -0
  193. package/dist/Theme/tokens/builders/brandInk.js +106 -0
  194. package/dist/Theme/tokens/builders/buildDarkPalette.d.ts +2 -2
  195. package/dist/Theme/tokens/builders/buildDarkPalette.js +16 -8
  196. package/dist/Theme/tokens/builders/chartColorsFromTheme.js +1 -1
  197. package/dist/Theme/tokens/builders/gradientInk.d.ts +22 -0
  198. package/dist/Theme/tokens/builders/gradientInk.js +28 -0
  199. package/dist/Theme/tokens/builders/index.d.ts +3 -0
  200. package/dist/Theme/tokens/builders/index.js +3 -0
  201. package/dist/Theme/tokens/builders/mutedText.d.ts +5 -0
  202. package/dist/Theme/tokens/builders/mutedText.js +9 -0
  203. package/dist/Theme/tokens/builders/outlineRung.d.ts +39 -9
  204. package/dist/Theme/tokens/builders/outlineRung.js +92 -21
  205. package/dist/Theme/tokens/builders/placeholderInk.d.ts +19 -0
  206. package/dist/Theme/tokens/builders/placeholderInk.js +35 -0
  207. package/dist/Theme/tokens/builders/resolvedRungs.d.ts +11 -0
  208. package/dist/Theme/tokens/builders/resolvedRungs.js +30 -0
  209. package/dist/Theme/tokens/builders/scrollbar.d.ts +12 -0
  210. package/dist/Theme/tokens/builders/scrollbar.js +57 -0
  211. package/dist/Theme/tokens/builders/semanticText.d.ts +10 -0
  212. package/dist/Theme/tokens/builders/semanticText.js +22 -0
  213. package/dist/Theme/tokens/builders/sidebarAccent.d.ts +9 -0
  214. package/dist/Theme/tokens/builders/sidebarAccent.js +29 -0
  215. package/dist/Theme/tokens/builders/statusTone.js +3 -4
  216. package/dist/Theme/tokens/builders/surfaceRungs.d.ts +10 -0
  217. package/dist/Theme/tokens/builders/surfaceRungs.js +54 -0
  218. package/dist/Theme/tokens/types.d.ts +41 -13
  219. package/dist/Theme/useCustomTheme.js +4 -1
  220. package/dist/Utils/table.d.ts +1 -7
  221. package/dist/Utils/table.js +27 -35
  222. package/dist/esm/Components/Accordion/Accordion.js +14 -16
  223. package/dist/esm/Components/Accordion/accordionColors.js +6 -9
  224. package/dist/esm/Components/AlertDialog/AlertDialog.js +1 -2
  225. package/dist/esm/Components/Apexcharts/ApexAreaChart/ApexAreaChart.js +2 -3
  226. package/dist/esm/Components/Apexcharts/ApexPieChart/ApexPieChart.js +2 -3
  227. package/dist/esm/Components/Apexcharts/ApexRadialChart/ApexRadialChart.js +2 -3
  228. package/dist/esm/Components/AppearanceSettings/AppearanceSettings.js +9 -7
  229. package/dist/esm/Components/Button/Button.styles.js +8 -13
  230. package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIcon.js +12 -13
  231. package/dist/esm/Components/Checkbox/Checkbox.js +1 -1
  232. package/dist/esm/Components/Checkbox/Checkbox.styles.js +2 -0
  233. package/dist/esm/Components/Common/ErrorComponent.js +6 -9
  234. package/dist/esm/Components/Common/ErrorMessage.js +2 -8
  235. package/dist/esm/Components/Common/FormLabel.js +1 -3
  236. package/dist/esm/Components/Common/FormattedDescription.js +3 -1
  237. package/dist/esm/Components/Common/Label.js +3 -8
  238. package/dist/esm/Components/Common/fieldStyles.js +6 -7
  239. package/dist/esm/Components/ContactForm/ContactForm.js +1 -2
  240. package/dist/esm/Components/CopyButton/CopyButton.js +3 -6
  241. package/dist/esm/Components/CustomModulesTable/CustomModulesTable.js +7 -10
  242. package/dist/esm/Components/CustomModulesTable/DeleteModuleModal.js +2 -2
  243. package/dist/esm/Components/CustomModulesTable/EditModuleModal.js +2 -3
  244. package/dist/esm/Components/DatePicker/CalendarPanel.js +3 -4
  245. package/dist/esm/Components/DatePicker/RangeDatePicker.js +9 -9
  246. package/dist/esm/Components/DatePicker/SingleDatePicker.js +11 -11
  247. package/dist/esm/Components/DatePicker/TimeOnlyPicker.js +2 -2
  248. package/dist/esm/Components/DatePicker/TimePicker.js +6 -7
  249. package/dist/esm/Components/DatePicker/TimePickerInput.js +6 -7
  250. package/dist/esm/Components/Divider/Divider.js +1 -2
  251. package/dist/esm/Components/Drawer/Drawer.js +1 -2
  252. package/dist/esm/Components/Dropdown/DropDown.js +19 -33
  253. package/dist/esm/Components/Editor/Editor.js +11 -14
  254. package/dist/esm/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +3 -3
  255. package/dist/esm/Components/EmptyState/EmptyState.js +11 -11
  256. package/dist/esm/Components/FieldSelectModal/FieldSelectModal.js +1 -1
  257. package/dist/esm/Components/FilePreview/FilePreview.js +2 -2
  258. package/dist/esm/Components/FileUpload/FileUpload.js +18 -24
  259. package/dist/esm/Components/FileUploader/FileUploader.js +6 -7
  260. package/dist/esm/Components/FilterSidebar/FilterSidebar.js +157 -161
  261. package/dist/esm/Components/Form/FormWrapper.js +1 -2
  262. package/dist/esm/Components/Header/Header.js +6 -6
  263. package/dist/esm/Components/Header/HeaderActions.js +9 -5
  264. package/dist/esm/Components/Header/components/desktopMenu.js +8 -21
  265. package/dist/esm/Components/Header/components/mobileMenu.js +3 -15
  266. package/dist/esm/Components/Input/Input/Input.js +14 -18
  267. package/dist/esm/Components/Input/TextInput.styles.js +15 -16
  268. package/dist/esm/Components/InputTextArea/InputTextArea.style.js +14 -14
  269. package/dist/esm/Components/KanbanBoard/AccountCard.js +10 -4
  270. package/dist/esm/Components/KanbanBoard/AccountRow.js +1 -2
  271. package/dist/esm/Components/KanbanBoard/KanbanActions/KanbanActions.js +2 -2
  272. package/dist/esm/Components/KanbanBoard/KanbanBoard.js +15 -62
  273. package/dist/esm/Components/LazyWrapper/LazyWrapper.js +1 -1
  274. package/dist/esm/Components/LimitReachedModal/LimitReachedModal.js +5 -18
  275. package/dist/esm/Components/Loading/Loading.js +1 -1
  276. package/dist/esm/Components/Modal/Modal.js +3 -1
  277. package/dist/esm/Components/MoreItems/MoreItems.js +3 -7
  278. package/dist/esm/Components/MultiSelect/MultiSelect.js +5 -6
  279. package/dist/esm/Components/NavigationBar/NavigationBar.js +23 -19
  280. package/dist/esm/Components/NoteTextArea/NoteTextArea.js +7 -9
  281. package/dist/esm/Components/Notification/Notification.js +18 -16
  282. package/dist/esm/Components/NumberInput/NumberInput.styles.js +14 -14
  283. package/dist/esm/Components/OrgSwitcher/OrgSwitcher.js +8 -9
  284. package/dist/esm/Components/OrgSwitcher/OrgSwitcherProps.js +5 -1
  285. package/dist/esm/Components/OrganizationDetails/CreateOrgModal.js +1 -2
  286. package/dist/esm/Components/OrganizationDetails/DeleteOrgModal.js +5 -2
  287. package/dist/esm/Components/OrganizationDetails/OrganizationDetails.js +25 -22
  288. package/dist/esm/Components/PdfViewer/PdfViewer.js +1 -1
  289. package/dist/esm/Components/PinInput/PinInput.js +1 -1
  290. package/dist/esm/Components/PinInputs/PinInputs.js +8 -15
  291. package/dist/esm/Components/PlanPill/PlanPill.js +9 -12
  292. package/dist/esm/Components/PlanPill/planPillGradient.js +27 -15
  293. package/dist/esm/Components/ProductCard/ProductPrice.js +6 -6
  294. package/dist/esm/Components/ProductCard/ProductReview.js +4 -1
  295. package/dist/esm/Components/ProductCard/ProductTags.js +5 -5
  296. package/dist/esm/Components/ProductDetails/ProductDetails.js +3 -1
  297. package/dist/esm/Components/ProductDetails/ProductDtlPrice.js +3 -3
  298. package/dist/esm/Components/ProfileCard/ProfileCard.js +5 -5
  299. package/dist/esm/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +20 -17
  300. package/dist/esm/Components/RadioButton/RadioButton.js +1 -1
  301. package/dist/esm/Components/Reorder/Reorder.js +3 -4
  302. package/dist/esm/Components/RolesPermission/DeleteRoleModal.js +5 -4
  303. package/dist/esm/Components/RolesPermission/RolesPermission.js +12 -14
  304. package/dist/esm/Components/ScrollToTop/ScrollToTop.js +2 -3
  305. package/dist/esm/Components/ScrollbarBox/ScrollbarBox.js +9 -0
  306. package/dist/esm/Components/SearchSelect/SearchSelect.js +26 -28
  307. package/dist/esm/Components/Select/Select.styles.js +34 -37
  308. package/dist/esm/Components/SelectSearch/SelectSearch.js +10 -10
  309. package/dist/esm/Components/SelectV2/SelectV2.js +8 -20
  310. package/dist/esm/Components/SideBar/SecondaryBar.js +11 -16
  311. package/dist/esm/Components/SideBar/SideBar.js +43 -36
  312. package/dist/esm/Components/SideBar/components/MenuItemBox.js +11 -13
  313. package/dist/esm/Components/SideBar/components/MenuItems.js +3 -1
  314. package/dist/esm/Components/SideBar/components/MenuPopoverContent.js +8 -10
  315. package/dist/esm/Components/SideBar/components/OtherApps.js +4 -4
  316. package/dist/esm/Components/SideBar/sidebarAccentColors.js +5 -31
  317. package/dist/esm/Components/SignInActivityTable/SignInActivityTable.js +6 -7
  318. package/dist/esm/Components/Slider/Slider.js +2 -2
  319. package/dist/esm/Components/StageProgress/StageProgress.js +2 -9
  320. package/dist/esm/Components/StageProgress/StageProgressProps.js +9 -13
  321. package/dist/esm/Components/Table/Table.js +19 -30
  322. package/dist/esm/Components/Table/components/HeaderActions.js +6 -7
  323. package/dist/esm/Components/Table/components/Pagination.js +1 -1
  324. package/dist/esm/Components/Table/components/TableActions.js +4 -4
  325. package/dist/esm/Components/Table/components/TableBody.js +18 -20
  326. package/dist/esm/Components/Table/components/TableGroupRow.js +1 -2
  327. package/dist/esm/Components/Table/components/TableHeader.js +8 -12
  328. package/dist/esm/Components/Table/components/TableSearch.js +1 -2
  329. package/dist/esm/Components/Table/components/tableRowHoverStyle.js +2 -3
  330. package/dist/esm/Components/Table/filters/ActiveFilters.js +5 -24
  331. package/dist/esm/Components/Table/filters/CompactSelect.js +4 -5
  332. package/dist/esm/Components/Table/filters/LeftFilterPane.js +4 -5
  333. package/dist/esm/Components/Table/filters/TableFilters.js +1 -2
  334. package/dist/esm/Components/Table/hooks/useTable.js +8 -11
  335. package/dist/esm/Components/Table/settings/ManageColumns.js +4 -18
  336. package/dist/esm/Components/Table/settings/TableSettings.js +13 -21
  337. package/dist/esm/Components/Tag/Tag.styles.js +9 -7
  338. package/dist/esm/Components/Timeline/Timeline.js +33 -46
  339. package/dist/esm/Components/Toaster/Toaster.js +44 -45
  340. package/dist/esm/Components/ToolTip/ToolTip.js +1 -6
  341. package/dist/esm/Components/Trail/EditableCell.js +4 -1
  342. package/dist/esm/Components/Trail/TrailWorks.js +4 -4
  343. package/dist/esm/Components/UpgradeButton/UpgradeButton.js +4 -6
  344. package/dist/esm/Components/UserDetails/AddUserModal.js +3 -3
  345. package/dist/esm/Components/UserDetails/ChangeRoleModal.js +2 -2
  346. package/dist/esm/Components/UserDetails/DeactivateConfirmModal.js +5 -5
  347. package/dist/esm/Components/UserDetails/UserDetails.js +15 -17
  348. package/dist/esm/Components/WorkspaceWindow/WorkspaceTrayPreview.js +1 -2
  349. package/dist/esm/Components/WorkspaceWindow/WorkspaceWindow.js +3 -4
  350. package/dist/esm/Constants/Sidebar.js +3 -2
  351. package/dist/esm/Theme/assertPalette.js +50 -0
  352. package/dist/esm/Theme/chakra/Avatar.styles.js +2 -2
  353. package/dist/esm/Theme/chakra/Drawer.styles.js +8 -10
  354. package/dist/esm/Theme/chakra/Menu.styles.js +11 -5
  355. package/dist/esm/Theme/chakra/Modal.styles.js +8 -10
  356. package/dist/esm/Theme/chakra/Popover.styles.js +11 -6
  357. package/dist/esm/Theme/chakra/Slider.styles.js +7 -9
  358. package/dist/esm/Theme/chakra/Switch.styles.js +7 -9
  359. package/dist/esm/Theme/chakra/Tabs.styles.js +13 -18
  360. package/dist/esm/Theme/chakra/componentStyles.js +53 -44
  361. package/dist/esm/Theme/chakra/createBrandTheme.js +3 -16
  362. package/dist/esm/Theme/chakra/paletteFromTheme.js +9 -0
  363. package/dist/esm/Theme/provider/PixelizeThemeProvider.js +23 -20
  364. package/dist/esm/Theme/provider/ThemeSwitcher.js +13 -20
  365. package/dist/esm/Theme/testing/testPalette.js +19 -0
  366. package/dist/esm/Theme/tokens/brands/emerald/palette.light.js +5 -4
  367. package/dist/esm/Theme/tokens/brands/index.js +28 -23
  368. package/dist/esm/Theme/tokens/brands/lavender/palette.light.js +5 -116
  369. package/dist/esm/Theme/tokens/brands/meadow/palette.light.js +5 -4
  370. package/dist/esm/Theme/tokens/brands/neutrals.js +116 -0
  371. package/dist/esm/Theme/tokens/brands/radiant/palette.light.js +5 -4
  372. package/dist/esm/Theme/tokens/brands/rosewood/palette.light.js +5 -4
  373. package/dist/esm/Theme/tokens/brands/skyline/palette.light.js +5 -4
  374. package/dist/esm/Theme/tokens/brands/slate/palette.light.js +7 -10
  375. package/dist/esm/Theme/tokens/brands/storefront/palette.light.js +5 -4
  376. package/dist/esm/Theme/tokens/brands/zinc/palette.dark.js +3 -2
  377. package/dist/esm/Theme/tokens/builders/accentText.js +8 -27
  378. package/dist/esm/Theme/tokens/builders/brandInk.js +103 -0
  379. package/dist/esm/Theme/tokens/builders/buildDarkPalette.js +17 -9
  380. package/dist/esm/Theme/tokens/builders/chartColorsFromTheme.js +1 -1
  381. package/dist/esm/Theme/tokens/builders/gradientInk.js +22 -0
  382. package/dist/esm/Theme/tokens/builders/index.js +3 -0
  383. package/dist/esm/Theme/tokens/builders/mutedText.js +5 -0
  384. package/dist/esm/Theme/tokens/builders/outlineRung.js +89 -21
  385. package/dist/esm/Theme/tokens/builders/placeholderInk.js +29 -0
  386. package/dist/esm/Theme/tokens/builders/resolvedRungs.js +25 -0
  387. package/dist/esm/Theme/tokens/builders/scrollbar.js +52 -0
  388. package/dist/esm/Theme/tokens/builders/semanticText.js +17 -0
  389. package/dist/esm/Theme/tokens/builders/sidebarAccent.js +23 -0
  390. package/dist/esm/Theme/tokens/builders/statusTone.js +3 -4
  391. package/dist/esm/Theme/tokens/builders/surfaceRungs.js +48 -0
  392. package/dist/esm/Theme/useCustomTheme.js +4 -1
  393. package/dist/esm/Utils/table.js +28 -36
  394. package/dist/esm/index.js +6 -1
  395. package/dist/index.d.ts +10 -1
  396. package/dist/index.js +24 -3
  397. package/package.json +4 -2
@@ -1,5 +1,6 @@
1
- import lavenderPalette from "../lavender/palette.light.js";
1
+ import { neutralTokens, sharedBoxShadow } from "../neutrals.js";
2
2
  import { buildPrimaryOpacity, buildPrimaryShadowTint } from "../../builders/buildBrandTokens.js";
3
+ import { buildBrandInk } from "../../builders/brandInk.js";
3
4
  const PRIMARY_500 = "#2d6a4f"; // was #2caa3d — deeper, forest-toned
4
5
  const primary = {
5
6
  50: "#edf7f2",
@@ -15,7 +16,8 @@ const primary = {
15
16
  opacity: buildPrimaryOpacity(PRIMARY_500),
16
17
  };
17
18
  const palette = {
18
- ...lavenderPalette,
19
+ ...neutralTokens,
20
+ ...buildBrandInk(PRIMARY_500),
19
21
  // `to` stop retuned so white gradient-button text (onGradient, accentText.ts) clears AA — the
20
22
  // original let white drop to 2.49 there (`from` already passed at 6.39, unchanged).
21
23
  // Nudged one step further (4.519 -> 4.627): the first pass cleared AA by <0.02, too thin a
@@ -121,8 +123,7 @@ const palette = {
121
123
  },
122
124
  boxShadow: {
123
125
  primary: buildPrimaryShadowTint(PRIMARY_500),
124
- error: lavenderPalette.boxShadow.error,
125
- default: lavenderPalette.boxShadow.default,
126
+ ...sharedBoxShadow,
126
127
  },
127
128
  };
128
129
  export default palette;
@@ -0,0 +1,116 @@
1
+ const semantic = {
2
+ success: {
3
+ 50: "#e9f8ef",
4
+ 100: "#bbe9cc",
5
+ 200: "#9adeb4",
6
+ 300: "#6ccf92",
7
+ 400: "#4fc67d",
8
+ 500: "#23b85c",
9
+ 600: "#20a754",
10
+ 700: "#198341",
11
+ 800: "#136533",
12
+ 900: "#0f4d27",
13
+ },
14
+ error: {
15
+ 50: "#feedeb",
16
+ 100: "#fbc6c2",
17
+ 200: "#f9aaa4",
18
+ 300: "#f6837b",
19
+ 400: "#f56b61",
20
+ 500: "#f2463a",
21
+ 600: "#dc4035",
22
+ 700: "#ac3229",
23
+ 800: "#852720",
24
+ 900: "#661d18",
25
+ },
26
+ warning: {
27
+ 50: "#fff4ef",
28
+ 100: "#ffddce",
29
+ 200: "#ffccb7",
30
+ 300: "#ffb596",
31
+ 400: "#ffa781",
32
+ 500: "#ff9162",
33
+ 600: "#e88459",
34
+ 700: "#b56746",
35
+ 800: "#8c5036",
36
+ 900: "#6b3d29",
37
+ },
38
+ info: {
39
+ 50: "#eff9fc",
40
+ 100: "#cdedf5",
41
+ 200: "#b5e4f0",
42
+ 300: "#94d7e9",
43
+ 400: "#7fd0e5",
44
+ 500: "#5fc4de",
45
+ 600: "#56b2ea",
46
+ 700: "#438b9e",
47
+ 800: "#346c78",
48
+ 900: "#28525d",
49
+ },
50
+ };
51
+ const red = {
52
+ 50: "#feedeb", 100: "#fbc6c2", 200: "#f9aaa4", 300: "#f6837b",
53
+ 400: "#f56b61", 500: "#f2463a", 600: "#dc4035", 700: "#ac3229",
54
+ 800: "#852720", 900: "#661d18",
55
+ };
56
+ const orange = {
57
+ 50: "#fff4ef", 100: "#ffddce", 200: "#ffccb7", 300: "#ffb596",
58
+ 400: "#ffa781", 500: "#ff9162", 600: "#e88459", 700: "#b56746",
59
+ 800: "#8c5036", 900: "#6b3d29",
60
+ };
61
+ const yellow = {
62
+ 50: "#fefbec", 100: "#fdf1c5", 200: "#fbeba9", 300: "#fae281",
63
+ 400: "#f9dc69", 500: "#f7d343", 600: "#e1c03d", 700: "#af9630",
64
+ 800: "#887425", 900: "#68591c",
65
+ };
66
+ const green = {
67
+ 50: "#e9f8ef", 100: "#bbe9cc", 200: "#9adeb4", 300: "#6ccf92",
68
+ 400: "#4fc67d", 500: "#23b85c", 600: "#20a754", 700: "#198341",
69
+ 800: "#136533", 900: "#0f4d27",
70
+ };
71
+ const teal = {
72
+ 50: "#eff9fc", 100: "#cdedf5", 200: "#b5e4f0", 300: "#94d7e9",
73
+ 400: "#7fd0e5", 500: "#5fc4de", 600: "#56b2ea", 700: "#438b9e",
74
+ 800: "#346c78", 900: "#28525d",
75
+ };
76
+ const blue = {
77
+ 50: "#ebf8ff", 100: "#bee3f8", 200: "#90cdf4", 300: "#63b3ed",
78
+ 400: "#4299e1", 500: "#3182ce", 600: "#2b6cb0", 700: "#2c5282",
79
+ 800: "#2a4365", 900: "#1a365d",
80
+ };
81
+ const cyan = {
82
+ 50: "#edfdfd", 100: "#c4f1f9", 200: "#9decf9", 300: "#76e4f7",
83
+ 400: "#0bc5ea", 500: "#00b5d8", 600: "#00a3c4", 700: "#0987a0",
84
+ 800: "#086f83", 900: "#065666",
85
+ };
86
+ const purple = {
87
+ 50: "#faf5ff", 100: "#e9d8fd", 200: "#d6bcfa", 300: "#b794f4",
88
+ 400: "#9f7aea", 500: "#805ad5", 600: "#6b46c1", 700: "#553c9a",
89
+ 800: "#44337a", 900: "#322659",
90
+ };
91
+ const pink = {
92
+ 50: "#fff5f7", 100: "#fed7e2", 200: "#fbb6ce", 300: "#f687b3",
93
+ 400: "#ed64a6", 500: "#d53f8c", 600: "#b83280", 700: "#97266d",
94
+ 800: "#702459", 900: "#521b41",
95
+ };
96
+ /** Non-brand shadow tints. Only `primary` is brand-derived. */
97
+ export const sharedBoxShadow = {
98
+ error: "#F2463A47",
99
+ default: "#00000033",
100
+ };
101
+ /** Utility scales shared by every brand — never theme-specific. */
102
+ export const neutralTokens = {
103
+ transparent: "transparent",
104
+ black: "#000",
105
+ white: "#fff",
106
+ semantic,
107
+ red,
108
+ orange,
109
+ yellow,
110
+ green,
111
+ teal,
112
+ blue,
113
+ cyan,
114
+ purple,
115
+ pink,
116
+ };
@@ -1,5 +1,6 @@
1
- import lavenderPalette from "../lavender/palette.light.js";
1
+ import { neutralTokens, sharedBoxShadow } from "../neutrals.js";
2
2
  import { buildPrimaryOpacity, buildPrimaryShadowTint } from "../../builders/buildBrandTokens.js";
3
+ import { buildBrandInk } from "../../builders/brandInk.js";
3
4
  const PRIMARY_500 = "#cf4e3a"; // warm red (terracotta leaning)
4
5
  const primary = {
5
6
  50: "#fdf1ee",
@@ -15,7 +16,8 @@ const primary = {
15
16
  opacity: buildPrimaryOpacity(PRIMARY_500),
16
17
  };
17
18
  const palette = {
18
- ...lavenderPalette,
19
+ ...neutralTokens,
20
+ ...buildBrandInk(PRIMARY_500),
19
21
  // Stops retuned so white gradient-button text (onGradient, accentText.ts) clears AA at both
20
22
  // ends — the original pair let white drop to 4.37/2.15 against from/to. Same hue, darker.
21
23
  // Both nudged one step further (4.509/4.502 -> 4.601/4.617): the first pass cleared AA by
@@ -123,8 +125,7 @@ const palette = {
123
125
  },
124
126
  boxShadow: {
125
127
  primary: buildPrimaryShadowTint(PRIMARY_500),
126
- error: lavenderPalette.boxShadow.error,
127
- default: lavenderPalette.boxShadow.default,
128
+ ...sharedBoxShadow,
128
129
  },
129
130
  };
130
131
  export default palette;
@@ -1,5 +1,6 @@
1
- import lavenderPalette from "../lavender/palette.light.js";
1
+ import { neutralTokens, sharedBoxShadow } from "../neutrals.js";
2
2
  import { buildPrimaryOpacity, buildPrimaryShadowTint } from "../../builders/buildBrandTokens.js";
3
+ import { buildBrandInk } from "../../builders/brandInk.js";
3
4
  const PRIMARY_500 = "#d16a7e"; // muted warm rose (not neon pink)
4
5
  const primary = {
5
6
  50: "#fdf2f5",
@@ -15,7 +16,8 @@ const primary = {
15
16
  opacity: buildPrimaryOpacity(PRIMARY_500),
16
17
  };
17
18
  const palette = {
18
- ...lavenderPalette,
19
+ ...neutralTokens,
20
+ ...buildBrandInk(PRIMARY_500),
19
21
  // Stops retuned so white gradient-button text (onGradient, accentText.ts) clears AA at both
20
22
  // ends — the original pair let white drop to 3.46/2.69 against from/to. Same hue, darker.
21
23
  // Both nudged one step further (4.520/4.505 -> 4.609/4.607): the first pass cleared AA by
@@ -127,8 +129,7 @@ const palette = {
127
129
  },
128
130
  boxShadow: {
129
131
  primary: buildPrimaryShadowTint(PRIMARY_500),
130
- error: lavenderPalette.boxShadow.error,
131
- default: lavenderPalette.boxShadow.default,
132
+ ...sharedBoxShadow,
132
133
  },
133
134
  };
134
135
  export default palette;
@@ -1,5 +1,6 @@
1
- import lavenderPalette from "../lavender/palette.light.js";
1
+ import { neutralTokens, sharedBoxShadow } from "../neutrals.js";
2
2
  import { buildPrimaryOpacity, buildPrimaryShadowTint } from "../../builders/buildBrandTokens.js";
3
+ import { buildBrandInk } from "../../builders/brandInk.js";
3
4
  const PRIMARY_500 = "#1a3a6b"; // was #0088cc — deep navy
4
5
  const primary = {
5
6
  50: "#e8ecf4",
@@ -15,7 +16,8 @@ const primary = {
15
16
  opacity: buildPrimaryOpacity(PRIMARY_500),
16
17
  };
17
18
  const palette = {
18
- ...lavenderPalette,
19
+ ...neutralTokens,
20
+ ...buildBrandInk(PRIMARY_500),
19
21
  // `to` stop retuned so white gradient-button text (onGradient, accentText.ts) clears AA — the
20
22
  // original let white drop to 2.14 there (`from` already passed at 11.28, unchanged).
21
23
  // Nudged one step further (4.515 -> 4.600): the first pass cleared AA by <0.02, too thin a
@@ -121,8 +123,7 @@ const palette = {
121
123
  },
122
124
  boxShadow: {
123
125
  primary: buildPrimaryShadowTint(PRIMARY_500),
124
- error: lavenderPalette.boxShadow.error,
125
- default: lavenderPalette.boxShadow.default,
126
+ ...sharedBoxShadow,
126
127
  },
127
128
  };
128
129
  export default palette;
@@ -1,5 +1,6 @@
1
- import lavenderPalette from "../lavender/palette.light.js";
1
+ import { neutralTokens, sharedBoxShadow } from "../neutrals.js";
2
2
  import { buildPrimaryOpacity, buildPrimaryShadowTint } from "../../builders/buildBrandTokens.js";
3
+ import { buildBrandInk } from "../../builders/brandInk.js";
3
4
  const PRIMARY_500 = "#6b7280"; // was #475569 — pure neutral gray, no blue cast
4
5
  const primary = {
5
6
  50: "#f9fafb",
@@ -15,12 +16,9 @@ const primary = {
15
16
  opacity: buildPrimaryOpacity(PRIMARY_500),
16
17
  };
17
18
  const palette = {
18
- ...lavenderPalette,
19
- // `to` stop retuned so white gradient-button text (onGradient, accentText.ts) clears AA — the
20
- // original let white drop to 2.98 there (`from` already passed at 4.83, unchanged).
21
- // Nudged one step further (4.520 -> 4.608): the first pass cleared AA by <0.02, too thin a
22
- // margin to trust against rounding/rendering variance.
23
- gradient: { from: "#6b7280", to: "#5664f6" }, // slate gray → indigo
19
+ ...neutralTokens,
20
+ ...buildBrandInk(PRIMARY_500),
21
+ gradient: { from: "#666d7a", to: "#4a4e59" },
24
22
  primary,
25
23
  tertiary: { ...primary },
26
24
  gray: {
@@ -102,7 +100,7 @@ const palette = {
102
100
  200: "#f1f1f3",
103
101
  300: "#ebebed",
104
102
  400: "#e5e5e8",
105
- 500: "#dfdfе2",
103
+ 500: "#dfdfe2",
106
104
  600: "#cbcbcf",
107
105
  700: "#a0a0a5",
108
106
  800: "#787880",
@@ -125,8 +123,7 @@ const palette = {
125
123
  },
126
124
  boxShadow: {
127
125
  primary: buildPrimaryShadowTint(PRIMARY_500),
128
- error: lavenderPalette.boxShadow.error,
129
- default: lavenderPalette.boxShadow.default,
126
+ ...sharedBoxShadow,
130
127
  },
131
128
  };
132
129
  export default palette;
@@ -1,5 +1,6 @@
1
- import lavenderPalette from "../lavender/palette.light.js";
1
+ import { neutralTokens, sharedBoxShadow } from "../neutrals.js";
2
2
  import { buildPrimaryOpacity, buildPrimaryShadowTint } from "../../builders/buildBrandTokens.js";
3
+ import { buildBrandInk } from "../../builders/brandInk.js";
3
4
  const PRIMARY_500 = "#004f4b"; // deep spruce teal — storefront/retail brand anchor
4
5
  const primary = {
5
6
  50: "#eafaf9",
@@ -15,7 +16,8 @@ const primary = {
15
16
  opacity: buildPrimaryOpacity(PRIMARY_500),
16
17
  };
17
18
  const palette = {
18
- ...lavenderPalette,
19
+ ...neutralTokens,
20
+ ...buildBrandInk(PRIMARY_500),
19
21
  // Same hue as primary, darker stop for the "to" end — mirrors emerald's gradient pattern.
20
22
  // White gradient-button text verified AA at both stops (4.98 / 6.96).
21
23
  gradient: { from: "#0c7d77", to: "#095e90" }, // spruce teal → deep blue
@@ -115,8 +117,7 @@ const palette = {
115
117
  },
116
118
  boxShadow: {
117
119
  primary: buildPrimaryShadowTint(PRIMARY_500),
118
- error: lavenderPalette.boxShadow.error,
119
- default: lavenderPalette.boxShadow.default,
120
+ ...sharedBoxShadow,
120
121
  },
121
122
  };
122
123
  export default palette;
@@ -1,6 +1,6 @@
1
1
  import { buildDarkPalette } from "../../builders/buildDarkPalette.js";
2
2
  import { buildPrimaryOpacity, buildPrimaryShadowTint } from "../../builders/buildBrandTokens.js";
3
- import { pickAccentText } from "../../builders/accentText.js";
3
+ import { pickAccentText, onFilled } from "../../builders/accentText.js";
4
4
  import light from "./palette.light.js";
5
5
  /**
6
6
  * zinc dark is the shadcn dark look and INVERTS the primary: the filled button is near-white
@@ -192,7 +192,8 @@ const palette = {
192
192
  placeholder,
193
193
  disabled,
194
194
  table,
195
- accentText: pickAccentText(primary, derived.backgroundColor.main, "dark"),
195
+ accentText: pickAccentText(primary, derived.backgroundColor.main),
196
+ onPrimary: onFilled(PRIMARY_500, derived.white, derived.black),
196
197
  boxShadow: {
197
198
  primary: buildPrimaryShadowTint(PRIMARY_500),
198
199
  error: derived.boxShadow.error,
@@ -2,19 +2,11 @@ import { contrastRatio, relativeLuminance } from "./color.js";
2
2
  /** WCAG AA for normal-size text. Accent-as-text must clear this against the canvas. */
3
3
  const AA_NORMAL_TEXT = 4.5;
4
4
  /**
5
- * Rungs to try, ordered nearest-to-accent first. `primary[500]` is the true brand accent, so
6
- * it is always tried first and only stepped away from when it fails AA — that keeps brand
7
- * identity as strong as contrast allows instead of flattening every brand to one safe rung.
8
- *
9
- * Light canvases need darker rungs; dark canvases need lighter ones. Both walk 500 -> 900 because
10
- * BOTH ramps put their light end at 900: light mode runs light -> dark (so 900 is the darkest),
11
- * while every dark scale runs dark -> light (so 900 is the lightest). Same direction, opposite
12
- * meaning — walking 500 -> 100 for dark would step toward the canvas and land at ~1.4 contrast.
5
+ * Ordered nearest-to-accent first, so brand identity survives as far as contrast allows.
6
+ * One order serves both modes: light ramps run light -> dark and dark ramps run dark -> light,
7
+ * so 500 -> 900 always steps AWAY from that mode's own canvas.
13
8
  */
14
- const SEARCH_ORDER = {
15
- light: [500, 600, 700, 800, 900],
16
- dark: [500, 600, 700, 800, 900],
17
- };
9
+ const SEARCH_ORDER = [500, 600, 700, 800, 900];
18
10
  /**
19
11
  * Pick the accent rung to use for accent-COLORED TEXT sitting on the canvas.
20
12
  *
@@ -32,20 +24,9 @@ const SEARCH_ORDER = {
32
24
  * sparse test theme mock, a hand-built scale) — treat a missing rung as "doesn't clear AA" and
33
25
  * keep walking rather than crashing `contrastRatio` on `undefined`.
34
26
  */
35
- export const pickAccentText = (primary, canvas, mode) => {
36
- const safeInk = () => (contrastRatio("#ffffff", canvas) >= AA_NORMAL_TEXT ? "#ffffff" : "#000000");
37
- if (!primary)
38
- return safeInk();
39
- const order = SEARCH_ORDER[mode];
40
- const found = order.find((rung) => primary[rung] != null && contrastRatio(primary[rung], canvas) >= AA_NORMAL_TEXT);
41
- if (found !== undefined)
42
- return primary[found];
43
- for (let i = order.length - 1; i >= 0; i--) {
44
- const rung = primary[order[i]];
45
- if (rung != null)
46
- return rung;
47
- }
48
- return safeInk();
27
+ export const pickAccentText = (primary, canvas) => {
28
+ const found = SEARCH_ORDER.find((rung) => contrastRatio(primary[rung], canvas) >= AA_NORMAL_TEXT);
29
+ return primary[found !== null && found !== void 0 ? found : SEARCH_ORDER[SEARCH_ORDER.length - 1]];
49
30
  };
50
31
  /** Canvas assumed when no Pixelize theme is mounted. Never painted; only fed to contrast math. */
51
32
  export const DEFAULT_CANVAS = "#ffffff";
@@ -64,7 +45,7 @@ export const isDarkCanvas = (canvas) => relativeLuminance(canvas) < DARK_CANVAS_
64
45
  * failures (radiant 4.15, emerald 3.24, rosewood 3.29). Those brands now step to the nearest rung
65
46
  * that clears AA, which changes their light pixels — the accepted cost of meeting WCAG.
66
47
  */
67
- export const accentTextOnCanvas = (scale, canvas) => pickAccentText(scale, canvas, relativeLuminance(canvas) < DARK_CANVAS_LUMINANCE ? "dark" : "light");
48
+ export const accentTextOnCanvas = (scale, canvas) => pickAccentText(scale, canvas);
68
49
  /**
69
50
  * Ink for text drawn ON a filled swatch (a button/tag/badge fill), not the canvas. `white`/`black`
70
51
  * must be the mode-stable absolutes (`theme.colors.white` / `theme.colors.black`) — NOT a
@@ -0,0 +1,103 @@
1
+ import { buildPrimaryOpacity } from "./buildBrandTokens.js";
2
+ import { hexToHsl, relativeLuminance, withLightness } from "./color.js";
3
+ const RUNGS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900];
4
+ // Lavender's primary saturation. Each brand's ramps scale away from it.
5
+ const REFERENCE_SATURATION = 55.5;
6
+ const SECONDARY = {
7
+ 50: [39.4, 0.8231],
8
+ 100: [41.0, 0.61132],
9
+ 200: [37.7, 0.39479],
10
+ 300: [27.4, 0.18614],
11
+ 400: [28.4, 0.10269],
12
+ 500: [52.4, 0.00831],
13
+ 600: [55.1, 0.00573],
14
+ 700: [55.6, 0.00386],
15
+ 800: [60.0, 0.00245],
16
+ 900: [57.1, 0.00141],
17
+ };
18
+ const TEXT = {
19
+ 50: [25.9, 0.86267],
20
+ 100: [32.4, 0.63853],
21
+ 200: [32.7, 0.48344],
22
+ 300: [30.6, 0.30607],
23
+ 400: [29.2, 0.21515],
24
+ 500: [26.3, 0.10787],
25
+ 600: [26.6, 0.08786],
26
+ 700: [26.7, 0.05281],
27
+ 800: [27.4, 0.03145],
28
+ 900: [29.0, 0.01826],
29
+ };
30
+ const HEADER = {
31
+ 50: [31.3, 0.83382],
32
+ 100: [31.0, 0.59779],
33
+ 200: [30.6, 0.44729],
34
+ 300: [29.3, 0.27622],
35
+ 400: [30.0, 0.19238],
36
+ 500: [29.9, 0.10467],
37
+ 600: [29.9, 0.08682],
38
+ 700: [29.7, 0.05281],
39
+ 800: [29.1, 0.0319],
40
+ 900: [29.9, 0.01915],
41
+ };
42
+ const PLACEHOLDER = {
43
+ 50: [30.4, 0.87913],
44
+ 100: [35.4, 0.67128],
45
+ 200: [36.1, 0.53513],
46
+ 300: [34.7, 0.37333],
47
+ 400: [31.4, 0.30462],
48
+ 500: [28.2, 0.19307],
49
+ 600: [22.8, 0.15818],
50
+ 700: [22.0, 0.09196],
51
+ 800: [21.5, 0.05448],
52
+ 900: [22.3, 0.03206],
53
+ };
54
+ const DISABLED = {
55
+ 50: [33.3, 0.90353],
56
+ 100: [38.9, 0.80618],
57
+ 200: [40.7, 0.71546],
58
+ 300: [41.0, 0.60545],
59
+ 400: [39.6, 0.53328],
60
+ 500: [40.5, 0.43688],
61
+ 600: [28.2, 0.35566],
62
+ 700: [13.4, 0.20289],
63
+ 800: [11.4, 0.1171],
64
+ 900: [11.2, 0.06724],
65
+ };
66
+ // Lightness is monotonic in luminance for a fixed hue/saturation, so bisection converges.
67
+ const atLuminance = (anchor, saturation, target) => {
68
+ let low = 0;
69
+ let high = 100;
70
+ for (let i = 0; i < 30; i += 1) {
71
+ const mid = (low + high) / 2;
72
+ if (relativeLuminance(withLightness(anchor, mid, saturation)) < target)
73
+ low = mid;
74
+ else
75
+ high = mid;
76
+ }
77
+ return withLightness(anchor, (low + high) / 2, saturation);
78
+ };
79
+ const ramp = (anchor, profile) => {
80
+ const ratio = hexToHsl(anchor).s / REFERENCE_SATURATION;
81
+ const scale = {};
82
+ for (const rung of RUNGS) {
83
+ const [saturation, luminance] = profile[rung];
84
+ scale[rung] = atLuminance(anchor, Math.min(100, saturation * ratio), luminance);
85
+ }
86
+ return scale;
87
+ };
88
+ const brandRamp = (anchor, profile) => {
89
+ const scale = ramp(anchor, profile);
90
+ return { ...scale, opacity: buildPrimaryOpacity(scale[500]) };
91
+ };
92
+ /** Brand-hued ink ramps at lavender's verified luminances, so contrast carries over. */
93
+ export function buildBrandInk(primary500) {
94
+ const secondary = brandRamp(primary500, SECONDARY);
95
+ return {
96
+ secondary,
97
+ tertiary: { ...secondary },
98
+ text: ramp(primary500, TEXT),
99
+ header: ramp(primary500, HEADER),
100
+ placeholder: ramp(primary500, PLACEHOLDER),
101
+ disabled: ramp(primary500, DISABLED),
102
+ };
103
+ }
@@ -1,6 +1,9 @@
1
1
  import { buildPrimaryOpacity, buildPrimaryShadowTint } from "./buildBrandTokens.js";
2
2
  import { contrastRatio, hexToHsl, hslToHex, withLightness } from "./color.js";
3
- import { pickAccentText } from "./accentText.js";
3
+ import { pickAccentText, onFilled } from "./accentText.js";
4
+ import { withSidebarTokens } from "./sidebarAccent.js";
5
+ import { buildMutedText } from "./mutedText.js";
6
+ import { buildSemanticText, buildOnSemantic } from "./semanticText.js";
4
7
  /**
5
8
  * Derives a brand's dark palette from its light palette.
6
9
  *
@@ -235,6 +238,12 @@ export function buildDarkPalette(light) {
235
238
  ]));
236
239
  const white = light.white;
237
240
  const primary = liftBrand(light.primary, white);
241
+ const semantic = {
242
+ success: liftAccent(light.semantic.success, white),
243
+ error: liftAccent(light.semantic.error, white),
244
+ warning: liftAccent(light.semantic.warning, white),
245
+ info: liftAccent(light.semantic.info, white),
246
+ };
238
247
  return {
239
248
  ...light,
240
249
  // Brand identity: hue preserved, accent lifted as far as the white label allows.
@@ -242,12 +251,7 @@ export function buildDarkPalette(light) {
242
251
  secondary: liftBrand(light.secondary, white),
243
252
  tertiary: liftBrand(light.tertiary, white),
244
253
  gradient: light.gradient,
245
- semantic: {
246
- success: liftAccent(light.semantic.success, white),
247
- error: liftAccent(light.semantic.error, white),
248
- warning: liftAccent(light.semantic.warning, white),
249
- info: liftAccent(light.semantic.info, white),
250
- },
254
+ semantic,
251
255
  // `white` stays white on purpose: it is the label color on filled buttons.
252
256
  transparent: light.transparent,
253
257
  black: light.black,
@@ -276,9 +280,13 @@ export function buildDarkPalette(light) {
276
280
  disabled: fromTargets(hueSource, DISABLED_TARGETS, DISABLED_SAT),
277
281
  // Derived from the LIFTED accent against the dark canvas: the lift stops at the white-label
278
282
  // floor (~4.55), which leaves primary[500] short of AA as text, so text needs its own rung.
279
- accentText: pickAccentText(primary, namedSurfaces.main, "dark"),
283
+ accentText: pickAccentText(primary, namedSurfaces.main),
284
+ textMuted: buildMutedText(fromTargets(hueSource, TEXT_TARGETS, TEXT_SAT), namedSurfaces.main),
285
+ semanticText: buildSemanticText(semantic, namedSurfaces.main),
286
+ onPrimary: onFilled(primary[500], light.white, light.black),
287
+ onSemantic: buildOnSemantic(semantic, light.white, light.black),
280
288
  // Sidebar is already near-black in light mode, so it needs no inversion.
281
- sidebar: light.sidebar,
289
+ sidebar: withSidebarTokens(light),
282
290
  boxShadow: {
283
291
  primary: buildPrimaryShadowTint(primary[500]),
284
292
  error: light.boxShadow.error,
@@ -25,7 +25,7 @@ export function chartInk(colors) {
25
25
  surface,
26
26
  text: colors.text[900],
27
27
  muted: colors.text[500],
28
- grid: colors.border[500],
28
+ grid: colors.boxborder[200],
29
29
  axis: colors.text[500],
30
30
  tooltipBg: colors.backgroundColor.secondary,
31
31
  };
@@ -0,0 +1,22 @@
1
+ import { onGradient } from "./accentText.js";
2
+ import { resolveAvatarFill } from "./statusTone.js";
3
+ /**
4
+ * Sinks both stops until WHITE ink clears AA, keeping each stop's hue. Any mid-tone gradient
5
+ * otherwise flips `onGradient` to black ink, so the same element reads white-on-colour in one
6
+ * brand and black-on-pastel in the next.
7
+ */
8
+ export const inkSafeGradient = (gradient) => ({
9
+ from: resolveAvatarFill(gradient.from),
10
+ to: resolveAvatarFill(gradient.to),
11
+ });
12
+ /**
13
+ * The only correct way to paint text on a gradient: returns the stops to draw AND the ink for
14
+ * them. Calling `onGradient` on raw stops is the black-text bug — it picks ink for a backdrop
15
+ * that is then painted differently.
16
+ */
17
+ export const resolveGradient = (gradient, white, black) => {
18
+ const { from, to } = inkSafeGradient(gradient);
19
+ return { from, to, ink: onGradient(from, to, white, black) };
20
+ };
21
+ /** `linear-gradient(...)` for a resolved pair — one spelling of the CSS everywhere. */
22
+ export const gradientCss = (g, angle = "135deg") => `linear-gradient(${angle}, ${g.from} 0%, ${g.to} 100%)`;
@@ -3,3 +3,6 @@ export * from "./buildBrandTokens.js";
3
3
  export * from "./buildDarkPalette.js";
4
4
  export * from "./chartColorsFromTheme.js";
5
5
  export * from "./color.js";
6
+ export * from "./scrollbar.js";
7
+ export * from "./gradientInk.js";
8
+ export * from "./placeholderInk.js";
@@ -0,0 +1,5 @@
1
+ import { liftToContrast } from "./outlineRung.js";
2
+ /** WCAG 1.4.3 — muted is still body text. */
3
+ export const AA_NORMAL_TEXT = 4.5;
4
+ /** Seeded from the ramp's muted rung so brand tint survives, then lifted until it clears AA. */
5
+ export const buildMutedText = (text, canvas) => liftToContrast(text[400], canvas, AA_NORMAL_TEXT);