pixelize-design-library 2.4.2-beta.61 → 2.4.2-beta.63

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 (582) hide show
  1. package/CHANGELOG.md +228 -2
  2. package/COMPONENT-GOTCHAS.md +144 -7
  3. package/DESIGN-GUIDE.md +12 -5
  4. package/dist/Components/Accordion/Accordion.js +2 -2
  5. package/dist/Components/AddressCard/AddressCard.js +2 -1
  6. package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.js +1 -1
  7. package/dist/Components/AppSwitcher/AppSwitcher.js +1 -1
  8. package/dist/Components/AppearanceSettings/AppearanceSettings.js +1 -1
  9. package/dist/Components/AudioRecorder/AudioRecorder.js +2 -1
  10. package/dist/Components/Avatar/Avatar.d.ts +2 -1
  11. package/dist/Components/Avatar/Avatar.js +5 -3
  12. package/dist/Components/Backdrop/Backdrop.js +1 -1
  13. package/dist/Components/BagBar/BagBar.js +2 -1
  14. package/dist/Components/Button/Button.styles.js +51 -21
  15. package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +1 -1
  16. package/dist/Components/CalendarGrid/CalendarGrid.js +5 -5
  17. package/dist/Components/CalendarGrid/calendarMath.js +18 -6
  18. package/dist/Components/Card/CardProps.d.ts +2 -2
  19. package/dist/Components/Card/PaymentCard/PaymentCard.js +6 -5
  20. package/dist/Components/CartItem/CartItem.js +2 -1
  21. package/dist/Components/Checkbox/Checkbox.d.ts +18 -3
  22. package/dist/Components/Checkbox/Checkbox.js +9 -7
  23. package/dist/Components/CheckoutKit/selectable.js +1 -1
  24. package/dist/Components/ChoiceCard/ChoiceCard.d.ts +3 -0
  25. package/dist/Components/ChoiceCard/ChoiceCard.js +16 -0
  26. package/dist/Components/ChoiceCard/ChoiceCardGroup.d.ts +3 -0
  27. package/dist/Components/ChoiceCard/ChoiceCardGroup.js +6 -0
  28. package/dist/Components/ChoiceCard/ChoiceCardProps.d.ts +28 -0
  29. package/dist/Components/ChoiceCard/ChoiceCardProps.js +2 -0
  30. package/dist/Components/CircularProgress/CircularProgress.js +4 -8
  31. package/dist/Components/CircularProgress/CircularProgressProps.d.ts +5 -3
  32. package/dist/Components/CircularProgress/arc.d.ts +9 -1
  33. package/dist/Components/CircularProgress/arc.js +15 -1
  34. package/dist/Components/Common/FormLabel.js +1 -1
  35. package/dist/Components/Common/FormattedDescription.js +1 -1
  36. package/dist/Components/Common/HelperText.d.ts +5 -4
  37. package/dist/Components/Common/HelperText.js +10 -7
  38. package/dist/Components/Common/fieldStyles.d.ts +4 -4
  39. package/dist/Components/Common/fieldStyles.js +2 -1
  40. package/dist/Components/ConfirmDialog/ConfirmDialog.js +2 -1
  41. package/dist/Components/ContactForm/ContactForm.js +1 -1
  42. package/dist/Components/CopyButton/CopyButton.js +12 -5
  43. package/dist/Components/CouponField/CouponField.js +4 -3
  44. package/dist/Components/CustomModulesTable/CustomModulesTable.js +6 -4
  45. package/dist/Components/CustomModulesTable/CustomModulesTableProps.d.ts +18 -0
  46. package/dist/Components/CustomModulesTable/EditModuleModal.js +2 -1
  47. package/dist/Components/DatePicker/CalendarPanel.js +2 -2
  48. package/dist/Components/DatePicker/DatePicker.js +8 -2
  49. package/dist/Components/DatePicker/RangeDatePicker.d.ts +9 -3
  50. package/dist/Components/DatePicker/RangeDatePicker.js +8 -6
  51. package/dist/Components/DatePicker/SingleDatePicker.d.ts +9 -5
  52. package/dist/Components/DatePicker/SingleDatePicker.js +9 -5
  53. package/dist/Components/DatePicker/ThemeDatePicker.d.ts +8 -4
  54. package/dist/Components/DatePicker/ThemeDatePicker.js +9 -6
  55. package/dist/Components/DatePicker/TimeOnlyPicker.d.ts +9 -5
  56. package/dist/Components/DatePicker/TimeOnlyPicker.js +8 -5
  57. package/dist/Components/DatePicker/TimePickerInput.d.ts +2 -2
  58. package/dist/Components/DatePicker/TimePickerInput.js +6 -5
  59. package/dist/Components/DatePicker/dayStates.js +2 -1
  60. package/dist/Components/DescriptionList/DescriptionList.d.ts +1 -1
  61. package/dist/Components/DescriptionList/DescriptionList.js +3 -3
  62. package/dist/Components/DescriptionList/DescriptionListProps.d.ts +3 -3
  63. package/dist/Components/Drawer/Drawer.js +2 -1
  64. package/dist/Components/Dropdown/DropDown.js +13 -4
  65. package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +2 -1
  66. package/dist/Components/EmptyState/EmptyState.js +2 -2
  67. package/dist/Components/EmptyState/EmptyStateProps.d.ts +3 -3
  68. package/dist/Components/FileUpload/FileUpload.js +28 -15
  69. package/dist/Components/FileUpload/useObjectUrl.d.ts +1 -0
  70. package/dist/Components/FileUpload/useObjectUrl.js +14 -0
  71. package/dist/Components/FileUploader/FileUploader.js +9 -3
  72. package/dist/Components/FileUploader/FileUploaderProps.d.ts +8 -0
  73. package/dist/Components/FilterBar/FilterBar.d.ts +1 -1
  74. package/dist/Components/FilterBar/FilterBar.js +2 -2
  75. package/dist/Components/FilterBar/FilterBarProps.d.ts +3 -3
  76. package/dist/Components/FilterSidebar/FilterSidebar.js +15 -8
  77. package/dist/Components/Form/FormWrapper.js +1 -1
  78. package/dist/Components/FormField/FormField.d.ts +3 -0
  79. package/dist/Components/FormField/FormField.js +57 -0
  80. package/dist/Components/FormField/FormFieldProps.d.ts +33 -0
  81. package/dist/Components/FormField/FormFieldProps.js +2 -0
  82. package/dist/Components/Header/HeaderActions.js +2 -2
  83. package/dist/Components/Header/components/mobileMenu.js +1 -1
  84. package/dist/Components/IconButton/IconButton.d.ts +5 -0
  85. package/dist/Components/IconButton/IconButton.js +24 -0
  86. package/dist/Components/IconButton/IconButtonProps.d.ts +10 -0
  87. package/dist/Components/IconButton/IconButtonProps.js +2 -0
  88. package/dist/Components/Input/PhoneNumberInput.js +14 -0
  89. package/dist/Components/Input/PhoneNumberInputProps.d.ts +1 -0
  90. package/dist/Components/KanbanBoard/AccountCard.js +7 -4
  91. package/dist/Components/KanbanBoard/AccountRow.js +1 -1
  92. package/dist/Components/KanbanBoard/KanbanBoard.js +56 -39
  93. package/dist/Components/KanbanBoard/MeasuredItem.js +6 -14
  94. package/dist/Components/KanbanBoard/boardStore.d.ts +8 -0
  95. package/dist/Components/KanbanBoard/boardStore.js +27 -0
  96. package/dist/Components/Kbd/Kbd.js +1 -1
  97. package/dist/Components/LimitReachedModal/LimitReachedModal.js +1 -1
  98. package/dist/Components/Loading/Loading.js +1 -1
  99. package/dist/Components/MediaGallery/MediaGallery.js +1 -1
  100. package/dist/Components/MediaGallery/MediaLightbox.js +2 -1
  101. package/dist/Components/MediaGallery/glass.js +2 -1
  102. package/dist/Components/MediaViewer/MediaViewer.js +1 -1
  103. package/dist/Components/MediaViewer/components/MediaAudioPlayer.js +7 -7
  104. package/dist/Components/MediaViewer/components/MediaImageViewer.js +1 -1
  105. package/dist/Components/MediaViewer/components/MediaScrubber.js +5 -1
  106. package/dist/Components/MediaViewer/components/MediaVideoPlayer.js +7 -7
  107. package/dist/Components/MediaViewer/components/PlaybackTimeline.d.ts +20 -0
  108. package/dist/Components/MediaViewer/components/PlaybackTimeline.js +47 -0
  109. package/dist/Components/MediaViewer/components/TileChip.js +1 -1
  110. package/dist/Components/Modal/Modal.js +1 -1
  111. package/dist/Components/MoreItems/MoreItems.js +2 -2
  112. package/dist/Components/NavigationBar/NavigationBar.js +5 -4
  113. package/dist/Components/NoteTextArea/NoteTextArea.js +18 -4
  114. package/dist/Components/NoteTextArea/NoteTextAreaProps.d.ts +12 -0
  115. package/dist/Components/Notification/Notification.js +18 -3
  116. package/dist/Components/Notification/NotificationProps.d.ts +17 -1
  117. package/dist/Components/NotificationBell/NotificationBell.js +5 -1
  118. package/dist/Components/NotificationBell/NotificationItem.js +1 -1
  119. package/dist/Components/NotificationBell/NotificationList.js +1 -1
  120. package/dist/Components/NotificationBell/NotificationPanel.js +4 -3
  121. package/dist/Components/OffersList/OffersList.js +2 -1
  122. package/dist/Components/OptionChip/OptionChip.js +3 -2
  123. package/dist/Components/OrderStatusTimeline/OrderStatusTimeline.js +2 -1
  124. package/dist/Components/OrderSummary/OrderSummary.js +5 -5
  125. package/dist/Components/OrganizationDetails/CreateOrgModal.js +2 -1
  126. package/dist/Components/OrganizationDetails/OrganizationDetails.js +10 -2
  127. package/dist/Components/PageHeader/PageHeader.d.ts +1 -1
  128. package/dist/Components/PageHeader/PageHeader.js +2 -2
  129. package/dist/Components/PageHeader/PageHeaderProps.d.ts +3 -3
  130. package/dist/Components/Pagination/Pagination.d.ts +5 -0
  131. package/dist/Components/Pagination/Pagination.js +48 -0
  132. package/dist/Components/Pagination/PaginationProps.d.ts +46 -0
  133. package/dist/Components/Pagination/PaginationProps.js +9 -0
  134. package/dist/Components/Pagination/pageWindow.d.ts +4 -0
  135. package/dist/Components/Pagination/pageWindow.js +22 -0
  136. package/dist/Components/PaymentOption/PaymentOption.js +1 -1
  137. package/dist/Components/PersonChip/PersonChip.js +2 -2
  138. package/dist/Components/PinInput/PinInput.d.ts +1 -1
  139. package/dist/Components/PinInput/PinInput.js +17 -2
  140. package/dist/Components/PinInput/PinInputProps.d.ts +9 -1
  141. package/dist/Components/PincodeChecker/PincodeChecker.js +4 -4
  142. package/dist/Components/PlanPill/PlanPill.js +2 -1
  143. package/dist/Components/PriceBlock/PriceBlock.js +3 -3
  144. package/dist/Components/Primitives/Primitives.d.ts +2 -2
  145. package/dist/Components/Primitives/Primitives.js +2 -3
  146. package/dist/Components/ProductBadges/ProductBadges.js +2 -1
  147. package/dist/Components/ProductCard/ProductCard.js +1 -1
  148. package/dist/Components/ProductCard/ProductCardAction.js +2 -2
  149. package/dist/Components/ProductCard/ProductCardSwatches.js +2 -1
  150. package/dist/Components/ProductCard/cardMetrics.d.ts +1 -1
  151. package/dist/Components/ProductCard/cardMetrics.js +5 -1
  152. package/dist/Components/ProfileCard/ProfileCardProps.d.ts +11 -0
  153. package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +9 -4
  154. package/dist/Components/QuantityStepper/QuantityStepper.js +2 -1
  155. package/dist/Components/RadioButton/RadioButton.d.ts +11 -2
  156. package/dist/Components/RadioButton/RadioButton.js +9 -6
  157. package/dist/Components/RangeSlider/RangeSlider.js +3 -3
  158. package/dist/Components/Rating/Rating.js +2 -1
  159. package/dist/Components/Reorder/Reorder.js +3 -2
  160. package/dist/Components/ReviewList/ReviewList.js +3 -3
  161. package/dist/Components/ReviewSummary/ReviewSummary.js +3 -3
  162. package/dist/Components/SaveBar/SaveBar.d.ts +1 -1
  163. package/dist/Components/SaveBar/SaveBar.js +2 -2
  164. package/dist/Components/SaveBar/SaveBarProps.d.ts +3 -3
  165. package/dist/Components/Search/Search.js +2 -9
  166. package/dist/Components/Search/ctrlShortcut.d.ts +1 -0
  167. package/dist/Components/Search/ctrlShortcut.js +29 -0
  168. package/dist/Components/SearchSelect/SearchSelect.js +157 -49
  169. package/dist/Components/SearchSelect/searchSelectNav.d.ts +13 -0
  170. package/dist/Components/SearchSelect/searchSelectNav.js +40 -0
  171. package/dist/Components/SegmentedControl/SegmentedControl.d.ts +8 -2
  172. package/dist/Components/SegmentedControl/SegmentedControl.js +9 -5
  173. package/dist/Components/Select/SelectPopup.js +7 -4
  174. package/dist/Components/SelectSearch/SelectSearch.js +6 -4
  175. package/dist/Components/SettingRow/SettingRow.js +2 -1
  176. package/dist/Components/SettingRow/SettingsSection.js +2 -1
  177. package/dist/Components/SideBar/SecondaryBar.js +5 -3
  178. package/dist/Components/SideBar/SideBar.js +96 -32
  179. package/dist/Components/SideBar/SideBarProps.d.ts +1 -1
  180. package/dist/Components/SideBar/components/MenuItemBox.d.ts +2 -2
  181. package/dist/Components/SideBar/components/MenuItemBox.js +11 -7
  182. package/dist/Components/SideBar/components/MenuItems.d.ts +2 -2
  183. package/dist/Components/SideBar/components/MenuItems.js +3 -3
  184. package/dist/Components/SideBar/components/MenuPopoverContent.js +2 -1
  185. package/dist/Components/SideBar/components/OtherApps.js +7 -2
  186. package/dist/Components/SideBar/components/OverflowTooltipText.js +4 -5
  187. package/dist/Components/SideBar/components/PinnedSection.js +8 -5
  188. package/dist/Components/SideBar/components/TextTruncation.js +11 -6
  189. package/dist/Components/SideBar/sidebarMotion.d.ts +2 -0
  190. package/dist/Components/SideBar/sidebarMotion.js +6 -0
  191. package/dist/Components/SideBar/sidebarScale.d.ts +1 -1
  192. package/dist/Components/SideBar/sidebarScale.js +2 -1
  193. package/dist/Components/SignInActivityTable/SignInActivityTable.js +6 -4
  194. package/dist/Components/SignInActivityTable/SignInActivityTableProps.d.ts +8 -0
  195. package/dist/Components/Skeletons/SkeletonProps.d.ts +5 -2
  196. package/dist/Components/Skeletons/Skeletons.d.ts +1 -1
  197. package/dist/Components/Skeletons/Skeletons.js +4 -2
  198. package/dist/Components/SkipLink/SkipLink.d.ts +4 -0
  199. package/dist/Components/SkipLink/SkipLink.js +54 -0
  200. package/dist/Components/SkipLink/SkipLinkProps.d.ts +8 -0
  201. package/dist/Components/SkipLink/SkipLinkProps.js +2 -0
  202. package/dist/Components/Slider/Slider.d.ts +2 -2
  203. package/dist/Components/Slider/Slider.js +11 -4
  204. package/dist/Components/SpecTable/SpecTable.js +2 -1
  205. package/dist/Components/StageProgress/StageItem.js +7 -7
  206. package/dist/Components/StageProgress/StageProgress.js +2 -1
  207. package/dist/Components/StageProgress/StageProgressProps.d.ts +1 -1
  208. package/dist/Components/StageProgress/StepperStage.js +4 -8
  209. package/dist/Components/StageProgress/centerInStrip.d.ts +2 -0
  210. package/dist/Components/StageProgress/centerInStrip.js +15 -0
  211. package/dist/Components/StatCard/StatCard.d.ts +1 -1
  212. package/dist/Components/StatCard/StatCard.js +6 -4
  213. package/dist/Components/StatCard/StatCardProps.d.ts +3 -3
  214. package/dist/Components/StickyBuyBar/StickyBuyBar.js +1 -1
  215. package/dist/Components/Table/Table.js +6 -2
  216. package/dist/Components/Table/components/TableActions.js +41 -24
  217. package/dist/Components/Table/components/TableBody.js +25 -40
  218. package/dist/Components/Table/components/rowMeasurer.d.ts +8 -0
  219. package/dist/Components/Table/components/rowMeasurer.js +71 -0
  220. package/dist/Components/Table/filters/CompactSelect.js +2 -1
  221. package/dist/Components/Table/filters/TableFilters.js +2 -13
  222. package/dist/Components/Table/hooks/useTable.js +12 -9
  223. package/dist/Components/Table/settings/TableSettings.js +7 -2
  224. package/dist/Components/Table/variants/classic.js +3 -2
  225. package/dist/Components/Tabs/components/CountBadge.js +3 -3
  226. package/dist/Components/Tabs/components/Tab.d.ts +2 -1
  227. package/dist/Components/Tabs/components/Tab.js +4 -3
  228. package/dist/Components/Tabs/components/TabList.js +16 -1
  229. package/dist/Components/Tag/Tag.d.ts +2 -2
  230. package/dist/Components/Tag/Tag.js +15 -12
  231. package/dist/Components/Tag/Tag.styles.js +6 -4
  232. package/dist/Components/TagInput/TagInput.d.ts +3 -0
  233. package/dist/Components/TagInput/TagInput.js +99 -0
  234. package/dist/Components/TagInput/TagInputProps.d.ts +46 -0
  235. package/dist/Components/TagInput/TagInputProps.js +2 -0
  236. package/dist/Components/TagInput/tagEntries.d.ts +15 -0
  237. package/dist/Components/TagInput/tagEntries.js +45 -0
  238. package/dist/Components/TimePicker/TimePicker.d.ts +3 -0
  239. package/dist/Components/TimePicker/TimePicker.js +50 -0
  240. package/dist/Components/TimePicker/TimePickerProps.d.ts +44 -0
  241. package/dist/Components/TimePicker/TimePickerProps.js +2 -0
  242. package/dist/Components/TimePicker/timeParts.d.ts +10 -0
  243. package/dist/Components/TimePicker/timeParts.js +36 -0
  244. package/dist/Components/Timeline/Timeline.js +21 -12
  245. package/dist/Components/Toaster/Toaster.js +20 -8
  246. package/dist/Components/Toggle/TableToggle.js +8 -4
  247. package/dist/Components/ToggleSwitch/ToggleSwitch.d.ts +3 -2
  248. package/dist/Components/ToggleSwitch/ToggleSwitch.js +6 -5
  249. package/dist/Components/ToolTip/ToolTip.js +86 -8
  250. package/dist/Components/UpgradeButton/UpgradeButton.js +4 -2
  251. package/dist/Components/UserDetails/AddUserModal.js +2 -1
  252. package/dist/Components/UserDetails/ChangeRoleModal.js +2 -1
  253. package/dist/Components/UserDetails/UserDetails.js +10 -2
  254. package/dist/Components/VisuallyHidden/VisuallyHidden.d.ts +15 -0
  255. package/dist/Components/VisuallyHidden/VisuallyHidden.js +21 -0
  256. package/dist/Components/VisuallyHidden/VisuallyHiddenProps.d.ts +3 -0
  257. package/dist/Components/VisuallyHidden/VisuallyHiddenProps.js +2 -0
  258. package/dist/Components/WizardDialog/WizardDialog.js +10 -5
  259. package/dist/Components/WizardDialog/WizardDialogProps.d.ts +4 -0
  260. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +5 -1
  261. package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +15 -2
  262. package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +2 -1
  263. package/dist/Hooks/sharedResizeObserver.d.ts +6 -0
  264. package/dist/Hooks/sharedResizeObserver.js +77 -0
  265. package/dist/Hooks/useIsTruncated.js +3 -4
  266. package/dist/Theme/chakra/Card.styles.d.ts +7 -1
  267. package/dist/Theme/chakra/Card.styles.js +4 -1
  268. package/dist/Theme/chakra/Menu.styles.d.ts +4 -6
  269. package/dist/Theme/chakra/Menu.styles.js +3 -0
  270. package/dist/Theme/chakra/Popover.styles.d.ts +2 -11
  271. package/dist/Theme/chakra/Popover.styles.js +2 -0
  272. package/dist/Theme/chakra/common.web.d.ts +5 -0
  273. package/dist/Theme/chakra/componentStyles.d.ts +12 -4
  274. package/dist/Theme/chakra/componentStyles.js +10 -6
  275. package/dist/Theme/chakra/createBrandTheme.d.ts +3 -0
  276. package/dist/Theme/chakra/createBrandTheme.js +34 -4
  277. package/dist/Theme/chakra/focusRing.styles.d.ts +2 -0
  278. package/dist/Theme/chakra/focusRing.styles.js +5 -1
  279. package/dist/Theme/chakra/fonts.web.d.ts +2 -0
  280. package/dist/Theme/chakra/motion.d.ts +15 -0
  281. package/dist/Theme/chakra/motion.js +27 -1
  282. package/dist/Theme/chakra/overlay.styles.d.ts +5 -0
  283. package/dist/Theme/chakra/overlay.styles.js +4 -1
  284. package/dist/Theme/index.d.ts +2 -1
  285. package/dist/Theme/index.js +12 -9
  286. package/dist/Theme/provider/PixelizeThemeProvider.d.ts +4 -1
  287. package/dist/Theme/provider/PixelizeThemeProvider.js +21 -12
  288. package/dist/Theme/provider/ThemeSwitcher.js +3 -2
  289. package/dist/Theme/themeProps.d.ts +7 -0
  290. package/dist/Theme/tokens/brands/emerald/palette.dark.js +2 -1
  291. package/dist/Theme/tokens/brands/index.d.ts +2 -1
  292. package/dist/Theme/tokens/brands/index.js +31 -14
  293. package/dist/Theme/tokens/brands/lavender/palette.dark.js +2 -1
  294. package/dist/Theme/tokens/brands/meadow/palette.dark.js +2 -1
  295. package/dist/Theme/tokens/brands/radiant/palette.dark.js +2 -1
  296. package/dist/Theme/tokens/brands/radiant/palette.light.js +15 -0
  297. package/dist/Theme/tokens/brands/rosewood/palette.dark.js +2 -1
  298. package/dist/Theme/tokens/brands/rosewood/palette.light.js +10 -10
  299. package/dist/Theme/tokens/brands/skyline/palette.dark.js +2 -1
  300. package/dist/Theme/tokens/brands/slate/palette.dark.js +2 -1
  301. package/dist/Theme/tokens/brands/storefront/palette.dark.js +2 -1
  302. package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts +7 -29
  303. package/dist/Theme/tokens/brands/zinc/palette.dark.js +27 -55
  304. package/dist/Theme/tokens/builders/buildDarkPalette.d.ts +6 -1
  305. package/dist/Theme/tokens/builders/buildDarkPalette.js +37 -8
  306. package/dist/Theme/tokens/builders/color.js +11 -7
  307. package/dist/Theme/tokens/builders/filledSurface.d.ts +3 -1
  308. package/dist/Theme/tokens/builders/filledSurface.js +7 -7
  309. package/dist/Theme/tokens/builders/lazy.d.ts +5 -0
  310. package/dist/Theme/tokens/builders/lazy.js +55 -0
  311. package/dist/Theme/tokens/builders/memo.d.ts +9 -0
  312. package/dist/Theme/tokens/builders/memo.js +28 -0
  313. package/dist/Theme/tokens/builders/memoByReads.d.ts +2 -0
  314. package/dist/Theme/tokens/builders/memoByReads.js +50 -0
  315. package/dist/Theme/tokens/builders/mutedText.d.ts +1 -1
  316. package/dist/Theme/tokens/builders/mutedText.js +13 -3
  317. package/dist/Theme/tokens/builders/outlineRung.js +10 -2
  318. package/dist/Theme/tokens/builders/planeStep.d.ts +4 -0
  319. package/dist/Theme/tokens/builders/planeStep.js +20 -0
  320. package/dist/Theme/tokens/builders/planes.d.ts +4 -0
  321. package/dist/Theme/tokens/builders/planes.js +33 -0
  322. package/dist/Theme/tokens/builders/skeletonShimmer.d.ts +9 -0
  323. package/dist/Theme/tokens/builders/skeletonShimmer.js +25 -0
  324. package/dist/Theme/tokens/builders/surfaceRaised.d.ts +3 -1
  325. package/dist/Theme/tokens/builders/surfaceRaised.js +18 -8
  326. package/dist/Theme/tokens/builders/surfaceRungs.js +3 -1
  327. package/dist/Theme/tokens/builders/tone.js +5 -4
  328. package/dist/Theme/tokens/primitives/borderWidths.d.ts +6 -0
  329. package/dist/Theme/tokens/primitives/borderWidths.js +5 -0
  330. package/dist/Theme/tokens/primitives/index.d.ts +8 -3
  331. package/dist/Theme/tokens/primitives/index.js +11 -1
  332. package/dist/Theme/tokens/primitives/motion.d.ts +26 -2
  333. package/dist/Theme/tokens/primitives/motion.js +24 -5
  334. package/dist/Theme/tokens/primitives/optionRowSizes.d.ts +1 -1
  335. package/dist/Theme/tokens/primitives/optionRowSizes.js +2 -1
  336. package/dist/Theme/tokens/primitives/radii.d.ts +15 -0
  337. package/dist/Theme/tokens/primitives/radii.js +14 -0
  338. package/dist/Theme/tokens/primitives/shadows.d.ts +21 -1
  339. package/dist/Theme/tokens/primitives/shadows.js +59 -5
  340. package/dist/Theme/tokens/primitives/states.d.ts +1 -0
  341. package/dist/Theme/tokens/primitives/states.js +4 -0
  342. package/dist/Theme/tokens/primitives/typography.d.ts +17 -0
  343. package/dist/Theme/tokens/primitives/typography.js +22 -2
  344. package/dist/Theme/tokens/primitives/zIndices.d.ts +1 -0
  345. package/dist/Theme/tokens/primitives/zIndices.js +1 -0
  346. package/dist/Utils/formatDate.d.ts +25 -0
  347. package/dist/Utils/formatDate.js +144 -0
  348. package/dist/esm/Components/Accordion/Accordion.js +2 -2
  349. package/dist/esm/Components/AddressCard/AddressCard.js +2 -1
  350. package/dist/esm/Components/Apexcharts/ApexLineChart/ApexLineChart.js +1 -1
  351. package/dist/esm/Components/AppSwitcher/AppSwitcher.js +1 -1
  352. package/dist/esm/Components/AppearanceSettings/AppearanceSettings.js +1 -1
  353. package/dist/esm/Components/AudioRecorder/AudioRecorder.js +2 -1
  354. package/dist/esm/Components/Avatar/Avatar.js +6 -4
  355. package/dist/esm/Components/Backdrop/Backdrop.js +1 -1
  356. package/dist/esm/Components/BagBar/BagBar.js +2 -1
  357. package/dist/esm/Components/Button/Button.styles.js +54 -24
  358. package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIcon.js +1 -1
  359. package/dist/esm/Components/CalendarGrid/CalendarGrid.js +6 -6
  360. package/dist/esm/Components/CalendarGrid/calendarMath.js +18 -6
  361. package/dist/esm/Components/Card/PaymentCard/PaymentCard.js +6 -5
  362. package/dist/esm/Components/CartItem/CartItem.js +2 -1
  363. package/dist/esm/Components/Checkbox/Checkbox.js +8 -5
  364. package/dist/esm/Components/CheckoutKit/selectable.js +1 -1
  365. package/dist/esm/Components/ChoiceCard/ChoiceCard.js +14 -0
  366. package/dist/esm/Components/ChoiceCard/ChoiceCardGroup.js +4 -0
  367. package/dist/esm/Components/ChoiceCard/ChoiceCardProps.js +1 -0
  368. package/dist/esm/Components/CircularProgress/CircularProgress.js +5 -9
  369. package/dist/esm/Components/CircularProgress/arc.js +13 -0
  370. package/dist/esm/Components/Common/FormLabel.js +1 -1
  371. package/dist/esm/Components/Common/FormattedDescription.js +1 -1
  372. package/dist/esm/Components/Common/HelperText.js +11 -8
  373. package/dist/esm/Components/Common/fieldStyles.js +2 -1
  374. package/dist/esm/Components/ConfirmDialog/ConfirmDialog.js +2 -1
  375. package/dist/esm/Components/ContactForm/ContactForm.js +1 -1
  376. package/dist/esm/Components/CopyButton/CopyButton.js +14 -7
  377. package/dist/esm/Components/CouponField/CouponField.js +4 -3
  378. package/dist/esm/Components/CustomModulesTable/CustomModulesTable.js +6 -4
  379. package/dist/esm/Components/CustomModulesTable/EditModuleModal.js +2 -1
  380. package/dist/esm/Components/DatePicker/CalendarPanel.js +2 -2
  381. package/dist/esm/Components/DatePicker/DatePicker.js +8 -2
  382. package/dist/esm/Components/DatePicker/RangeDatePicker.js +10 -7
  383. package/dist/esm/Components/DatePicker/SingleDatePicker.js +9 -5
  384. package/dist/esm/Components/DatePicker/ThemeDatePicker.js +7 -4
  385. package/dist/esm/Components/DatePicker/TimeOnlyPicker.js +7 -4
  386. package/dist/esm/Components/DatePicker/TimePickerInput.js +8 -6
  387. package/dist/esm/Components/DatePicker/dayStates.js +2 -1
  388. package/dist/esm/Components/DescriptionList/DescriptionList.js +3 -3
  389. package/dist/esm/Components/Drawer/Drawer.js +2 -1
  390. package/dist/esm/Components/Dropdown/DropDown.js +13 -4
  391. package/dist/esm/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +2 -1
  392. package/dist/esm/Components/EmptyState/EmptyState.js +2 -2
  393. package/dist/esm/Components/FileUpload/FileUpload.js +29 -16
  394. package/dist/esm/Components/FileUpload/useObjectUrl.js +10 -0
  395. package/dist/esm/Components/FileUploader/FileUploader.js +9 -3
  396. package/dist/esm/Components/FilterBar/FilterBar.js +2 -2
  397. package/dist/esm/Components/FilterSidebar/FilterSidebar.js +15 -8
  398. package/dist/esm/Components/Form/FormWrapper.js +1 -1
  399. package/dist/esm/Components/FormField/FormField.js +52 -0
  400. package/dist/esm/Components/FormField/FormFieldProps.js +1 -0
  401. package/dist/esm/Components/Header/HeaderActions.js +2 -2
  402. package/dist/esm/Components/Header/components/mobileMenu.js +1 -1
  403. package/dist/esm/Components/IconButton/IconButton.js +21 -0
  404. package/dist/esm/Components/IconButton/IconButtonProps.js +1 -0
  405. package/dist/esm/Components/Input/PhoneNumberInput.js +15 -1
  406. package/dist/esm/Components/KanbanBoard/AccountCard.js +7 -4
  407. package/dist/esm/Components/KanbanBoard/AccountRow.js +1 -1
  408. package/dist/esm/Components/KanbanBoard/KanbanBoard.js +56 -39
  409. package/dist/esm/Components/KanbanBoard/MeasuredItem.js +6 -14
  410. package/dist/esm/Components/KanbanBoard/boardStore.js +22 -0
  411. package/dist/esm/Components/Kbd/Kbd.js +1 -1
  412. package/dist/esm/Components/LimitReachedModal/LimitReachedModal.js +1 -1
  413. package/dist/esm/Components/Loading/Loading.js +1 -1
  414. package/dist/esm/Components/MediaGallery/MediaGallery.js +2 -2
  415. package/dist/esm/Components/MediaGallery/MediaLightbox.js +2 -1
  416. package/dist/esm/Components/MediaGallery/glass.js +2 -1
  417. package/dist/esm/Components/MediaViewer/MediaViewer.js +1 -1
  418. package/dist/esm/Components/MediaViewer/components/MediaAudioPlayer.js +7 -7
  419. package/dist/esm/Components/MediaViewer/components/MediaImageViewer.js +1 -1
  420. package/dist/esm/Components/MediaViewer/components/MediaScrubber.js +5 -1
  421. package/dist/esm/Components/MediaViewer/components/MediaVideoPlayer.js +7 -7
  422. package/dist/esm/Components/MediaViewer/components/PlaybackTimeline.js +38 -0
  423. package/dist/esm/Components/MediaViewer/components/TileChip.js +1 -1
  424. package/dist/esm/Components/Modal/Modal.js +1 -1
  425. package/dist/esm/Components/MoreItems/MoreItems.js +2 -2
  426. package/dist/esm/Components/NavigationBar/NavigationBar.js +5 -4
  427. package/dist/esm/Components/NoteTextArea/NoteTextArea.js +18 -4
  428. package/dist/esm/Components/Notification/Notification.js +18 -3
  429. package/dist/esm/Components/NotificationBell/NotificationBell.js +2 -1
  430. package/dist/esm/Components/NotificationBell/NotificationItem.js +1 -1
  431. package/dist/esm/Components/NotificationBell/NotificationList.js +1 -1
  432. package/dist/esm/Components/NotificationBell/NotificationPanel.js +4 -3
  433. package/dist/esm/Components/OffersList/OffersList.js +2 -1
  434. package/dist/esm/Components/OptionChip/OptionChip.js +3 -2
  435. package/dist/esm/Components/OrderStatusTimeline/OrderStatusTimeline.js +2 -1
  436. package/dist/esm/Components/OrderSummary/OrderSummary.js +5 -5
  437. package/dist/esm/Components/OrganizationDetails/CreateOrgModal.js +2 -1
  438. package/dist/esm/Components/OrganizationDetails/OrganizationDetails.js +10 -2
  439. package/dist/esm/Components/PageHeader/PageHeader.js +2 -2
  440. package/dist/esm/Components/Pagination/Pagination.js +42 -0
  441. package/dist/esm/Components/Pagination/PaginationProps.js +6 -0
  442. package/dist/esm/Components/Pagination/pageWindow.js +16 -0
  443. package/dist/esm/Components/PaymentOption/PaymentOption.js +1 -1
  444. package/dist/esm/Components/PersonChip/PersonChip.js +2 -2
  445. package/dist/esm/Components/PinInput/PinInput.js +14 -2
  446. package/dist/esm/Components/PincodeChecker/PincodeChecker.js +4 -4
  447. package/dist/esm/Components/PlanPill/PlanPill.js +2 -1
  448. package/dist/esm/Components/PriceBlock/PriceBlock.js +3 -3
  449. package/dist/esm/Components/Primitives/Primitives.js +1 -1
  450. package/dist/esm/Components/ProductBadges/ProductBadges.js +2 -1
  451. package/dist/esm/Components/ProductCard/ProductCard.js +1 -1
  452. package/dist/esm/Components/ProductCard/ProductCardAction.js +3 -3
  453. package/dist/esm/Components/ProductCard/ProductCardSwatches.js +2 -1
  454. package/dist/esm/Components/ProductCard/cardMetrics.js +2 -1
  455. package/dist/esm/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +9 -4
  456. package/dist/esm/Components/QuantityStepper/QuantityStepper.js +2 -1
  457. package/dist/esm/Components/RadioButton/RadioButton.js +7 -4
  458. package/dist/esm/Components/RangeSlider/RangeSlider.js +3 -3
  459. package/dist/esm/Components/Rating/Rating.js +2 -1
  460. package/dist/esm/Components/Reorder/Reorder.js +3 -2
  461. package/dist/esm/Components/ReviewList/ReviewList.js +3 -3
  462. package/dist/esm/Components/ReviewSummary/ReviewSummary.js +3 -3
  463. package/dist/esm/Components/SaveBar/SaveBar.js +2 -2
  464. package/dist/esm/Components/Search/Search.js +2 -9
  465. package/dist/esm/Components/Search/ctrlShortcut.js +25 -0
  466. package/dist/esm/Components/SearchSelect/SearchSelect.js +160 -52
  467. package/dist/esm/Components/SearchSelect/searchSelectNav.js +32 -0
  468. package/dist/esm/Components/SegmentedControl/SegmentedControl.js +11 -6
  469. package/dist/esm/Components/Select/SelectPopup.js +7 -4
  470. package/dist/esm/Components/SelectSearch/SelectSearch.js +6 -4
  471. package/dist/esm/Components/SettingRow/SettingRow.js +2 -1
  472. package/dist/esm/Components/SettingRow/SettingsSection.js +2 -1
  473. package/dist/esm/Components/SideBar/SecondaryBar.js +5 -3
  474. package/dist/esm/Components/SideBar/SideBar.js +98 -34
  475. package/dist/esm/Components/SideBar/components/MenuItemBox.js +11 -7
  476. package/dist/esm/Components/SideBar/components/MenuItems.js +4 -4
  477. package/dist/esm/Components/SideBar/components/MenuPopoverContent.js +2 -1
  478. package/dist/esm/Components/SideBar/components/OtherApps.js +4 -2
  479. package/dist/esm/Components/SideBar/components/OverflowTooltipText.js +4 -5
  480. package/dist/esm/Components/SideBar/components/PinnedSection.js +8 -5
  481. package/dist/esm/Components/SideBar/components/TextTruncation.js +9 -7
  482. package/dist/esm/Components/SideBar/sidebarMotion.js +3 -0
  483. package/dist/esm/Components/SideBar/sidebarScale.js +2 -1
  484. package/dist/esm/Components/SignInActivityTable/SignInActivityTable.js +6 -4
  485. package/dist/esm/Components/Skeletons/Skeletons.js +4 -2
  486. package/dist/esm/Components/SkipLink/SkipLink.js +50 -0
  487. package/dist/esm/Components/SkipLink/SkipLinkProps.js +1 -0
  488. package/dist/esm/Components/Slider/Slider.js +11 -4
  489. package/dist/esm/Components/SpecTable/SpecTable.js +2 -1
  490. package/dist/esm/Components/StageProgress/StageItem.js +7 -7
  491. package/dist/esm/Components/StageProgress/StageProgress.js +2 -1
  492. package/dist/esm/Components/StageProgress/StepperStage.js +4 -8
  493. package/dist/esm/Components/StageProgress/centerInStrip.js +11 -0
  494. package/dist/esm/Components/StatCard/StatCard.js +6 -4
  495. package/dist/esm/Components/StickyBuyBar/StickyBuyBar.js +2 -2
  496. package/dist/esm/Components/Table/Table.js +8 -4
  497. package/dist/esm/Components/Table/components/TableActions.js +43 -26
  498. package/dist/esm/Components/Table/components/TableBody.js +25 -40
  499. package/dist/esm/Components/Table/components/rowMeasurer.js +66 -0
  500. package/dist/esm/Components/Table/filters/CompactSelect.js +2 -1
  501. package/dist/esm/Components/Table/filters/TableFilters.js +3 -14
  502. package/dist/esm/Components/Table/hooks/useTable.js +12 -9
  503. package/dist/esm/Components/Table/settings/TableSettings.js +8 -3
  504. package/dist/esm/Components/Table/variants/classic.js +3 -2
  505. package/dist/esm/Components/Tabs/components/CountBadge.js +3 -3
  506. package/dist/esm/Components/Tabs/components/Tab.js +5 -4
  507. package/dist/esm/Components/Tabs/components/TabList.js +16 -1
  508. package/dist/esm/Components/Tag/Tag.js +11 -8
  509. package/dist/esm/Components/Tag/Tag.styles.js +6 -4
  510. package/dist/esm/Components/TagInput/TagInput.js +94 -0
  511. package/dist/esm/Components/TagInput/TagInputProps.js +1 -0
  512. package/dist/esm/Components/TagInput/tagEntries.js +39 -0
  513. package/dist/esm/Components/TimePicker/TimePicker.js +45 -0
  514. package/dist/esm/Components/TimePicker/TimePickerProps.js +1 -0
  515. package/dist/esm/Components/TimePicker/timeParts.js +26 -0
  516. package/dist/esm/Components/Timeline/Timeline.js +21 -12
  517. package/dist/esm/Components/Toaster/Toaster.js +21 -9
  518. package/dist/esm/Components/Toggle/TableToggle.js +8 -4
  519. package/dist/esm/Components/ToggleSwitch/ToggleSwitch.js +7 -5
  520. package/dist/esm/Components/ToolTip/ToolTip.js +89 -11
  521. package/dist/esm/Components/UpgradeButton/UpgradeButton.js +4 -2
  522. package/dist/esm/Components/UserDetails/AddUserModal.js +2 -1
  523. package/dist/esm/Components/UserDetails/ChangeRoleModal.js +2 -1
  524. package/dist/esm/Components/UserDetails/UserDetails.js +10 -2
  525. package/dist/esm/Components/VisuallyHidden/VisuallyHidden.js +18 -0
  526. package/dist/esm/Components/VisuallyHidden/VisuallyHiddenProps.js +1 -0
  527. package/dist/esm/Components/WizardDialog/WizardDialog.js +11 -6
  528. package/dist/esm/Components/WorkspaceWindow/WorkspaceTrayPreview.js +2 -1
  529. package/dist/esm/Components/WorkspaceWindow/WorkspaceWindow.js +13 -3
  530. package/dist/esm/Hooks/sharedResizeObserver.js +73 -0
  531. package/dist/esm/Hooks/useIsTruncated.js +3 -4
  532. package/dist/esm/Theme/chakra/Card.styles.js +4 -1
  533. package/dist/esm/Theme/chakra/Menu.styles.js +3 -0
  534. package/dist/esm/Theme/chakra/Popover.styles.js +2 -0
  535. package/dist/esm/Theme/chakra/componentStyles.js +10 -6
  536. package/dist/esm/Theme/chakra/createBrandTheme.js +34 -4
  537. package/dist/esm/Theme/chakra/focusRing.styles.js +3 -0
  538. package/dist/esm/Theme/chakra/motion.js +26 -0
  539. package/dist/esm/Theme/chakra/overlay.styles.js +3 -0
  540. package/dist/esm/Theme/index.js +12 -9
  541. package/dist/esm/Theme/provider/PixelizeThemeProvider.js +22 -13
  542. package/dist/esm/Theme/provider/ThemeSwitcher.js +3 -2
  543. package/dist/esm/Theme/tokens/brands/emerald/palette.dark.js +2 -1
  544. package/dist/esm/Theme/tokens/brands/index.js +30 -13
  545. package/dist/esm/Theme/tokens/brands/lavender/palette.dark.js +2 -1
  546. package/dist/esm/Theme/tokens/brands/meadow/palette.dark.js +2 -1
  547. package/dist/esm/Theme/tokens/brands/radiant/palette.dark.js +2 -1
  548. package/dist/esm/Theme/tokens/brands/radiant/palette.light.js +15 -0
  549. package/dist/esm/Theme/tokens/brands/rosewood/palette.dark.js +2 -1
  550. package/dist/esm/Theme/tokens/brands/rosewood/palette.light.js +10 -10
  551. package/dist/esm/Theme/tokens/brands/skyline/palette.dark.js +2 -1
  552. package/dist/esm/Theme/tokens/brands/slate/palette.dark.js +2 -1
  553. package/dist/esm/Theme/tokens/brands/storefront/palette.dark.js +2 -1
  554. package/dist/esm/Theme/tokens/brands/zinc/palette.dark.js +27 -55
  555. package/dist/esm/Theme/tokens/builders/buildDarkPalette.js +38 -9
  556. package/dist/esm/Theme/tokens/builders/color.js +10 -6
  557. package/dist/esm/Theme/tokens/builders/filledSurface.js +7 -7
  558. package/dist/esm/Theme/tokens/builders/lazy.js +49 -0
  559. package/dist/esm/Theme/tokens/builders/memo.js +21 -0
  560. package/dist/esm/Theme/tokens/builders/memoByReads.js +46 -0
  561. package/dist/esm/Theme/tokens/builders/mutedText.js +12 -2
  562. package/dist/esm/Theme/tokens/builders/outlineRung.js +10 -2
  563. package/dist/esm/Theme/tokens/builders/planeStep.js +14 -0
  564. package/dist/esm/Theme/tokens/builders/planes.js +28 -0
  565. package/dist/esm/Theme/tokens/builders/skeletonShimmer.js +21 -0
  566. package/dist/esm/Theme/tokens/builders/surfaceRaised.js +16 -7
  567. package/dist/esm/Theme/tokens/builders/surfaceRungs.js +3 -1
  568. package/dist/esm/Theme/tokens/builders/tone.js +5 -4
  569. package/dist/esm/Theme/tokens/primitives/borderWidths.js +2 -0
  570. package/dist/esm/Theme/tokens/primitives/index.js +5 -3
  571. package/dist/esm/Theme/tokens/primitives/motion.js +21 -4
  572. package/dist/esm/Theme/tokens/primitives/optionRowSizes.js +2 -1
  573. package/dist/esm/Theme/tokens/primitives/radii.js +13 -0
  574. package/dist/esm/Theme/tokens/primitives/shadows.js +56 -5
  575. package/dist/esm/Theme/tokens/primitives/states.js +1 -0
  576. package/dist/esm/Theme/tokens/primitives/typography.js +21 -1
  577. package/dist/esm/Theme/tokens/primitives/zIndices.js +1 -0
  578. package/dist/esm/Utils/formatDate.js +138 -0
  579. package/dist/esm/index.js +19 -2
  580. package/dist/index.d.ts +34 -5
  581. package/dist/index.js +51 -4
  582. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -18,6 +18,71 @@ next major.
18
18
 
19
19
  ### Added
20
20
 
21
+ - **`Card variant="elevated"`**: borderless, `background[50]` lifted by `shadows.card`; declares a 0 border width so it
22
+ never inherits an outline parent's rule.
23
+ - **`bandOn`, `recessOn`, `cardRule`**: plane-step helpers that return the input unchanged in light and a visible step
24
+ off the dark plane a fill or rule sits on (`raisedRule` now matches `cardRule`'s weight).
25
+ - **`buildDarkPalette`** takes an optional `{ planes: "lifted" | "flat" }` and `buildSurfaceRaised` an optional list of
26
+ filled marks to keep at 3:1.
27
+ - **`formatDate` / `formatDateTime` / `formatDateRange`**: Intl-based date text, en-IN by default ("09 Oct 2026"),
28
+ with `locale`, `timeZone`, `year: "never"`, `time: "12h" | "24h"` and a `fallback` (default "—") for null or
29
+ invalid input instead of "Invalid Date". A bare `YYYY-MM-DD` is that calendar day in every zone; ranges write a
30
+ shared month and year once. Output is the same across browser and Node ICU versions (no "Sept", no thin or
31
+ narrow spaces).
32
+ - **`TimePicker`**: inline hour, minute and AM/PM selects as a field (label, required, error, helper), with
33
+ `use24Hour`, `minuteStep`, `baseDate` and `name`. Same look as DatePicker's time selects. `TimePickerProps` now
34
+ describes this component; the old `date`, `dateFormat` and `disabled` fields still type-check as deprecated
35
+ aliases.
36
+ - **`TagInput`**: free-text chips. Enter or comma adds, Backspace removes the last, a pasted list splits on commas
37
+ and new lines; optional `validate`, `maxTags` and `allowDuplicates`. Same look as `MultiSelect`, without its
38
+ email lock.
39
+ - **`IconButton`** is now owned: it renders exactly what the Chakra `IconButton` rendered (same props, theme,
40
+ sizes `xs 24 · sm 32 · md 40 · lg 48 · xl 56`, `isLoading` keeps the box) and, in development, warns once per
41
+ mount when it has neither `aria-label` nor `aria-labelledby`. `aria-label` is optional in its type.
42
+ - **`FormField`**: label, required asterisk, helper text and error message around any one control. A single
43
+ child element receives `id`, `aria-labelledby`, `aria-describedby`, `aria-invalid` and `aria-required`, or pass
44
+ a function that places them on a composite. `TextInput` inside inherits the error and required state.
45
+ `layout="horizontal"` puts the label in a `labelWidth` column (default 12rem) from `md` up. Root attributes
46
+ and `ref` land on the root `div`.
47
+ - **`VisuallyHidden`**: text for screen readers only, pinned to the viewport so a hidden live region can never
48
+ extend a scrolled page. It takes `as`, `ref`, every attribute and style prop.
49
+ - **`SkipLink`**: a "Skip to main content" link that paints nothing until keyboard focus, then shows top-left on
50
+ the `skipLink` layer. Activating it focuses `#targetId` (default `main-content`) without changing the URL hash.
51
+ - **`Pagination`**: standalone, controlled page navigation. Numbered pages collapse behind ellipses (first
52
+ and last always show, `siblingCount` defaults to 1), with previous and next buttons and an optional
53
+ rows-per-page picker (`pageSizeOptions` + `pageSize` + `onPageSizeChange`). `page` is 1-based; the count
54
+ comes from `pageCount` or from `totalItems` + `pageSize`. `size` follows the Button scale, `isDisabled`
55
+ disables the pager, `labels` overrides the names. It renders a named `nav` of real buttons and the
56
+ current page carries `aria-current="page"`. `Table` keeps its own pager unchanged.
57
+ - **`ChoiceCard` / `ChoiceCardGroup`**: radio cards for picking one of a few options that each need a line of
58
+ explanation. Group: `value` / `defaultValue` / `onValueChange`; card: `label`, `description`, `icon`,
59
+ `disabled`. One tab stop; arrows, Home and End move focus and selection. Same look as `PaymentOption`.
60
+ - **Plain HTML attributes on the page primitives**: `PageHeader`, `StatCard`, `SaveBar`, `EmptyState`,
61
+ `DescriptionList`, `FilterBar` and `Skeletons` pass `id`, `className`, `style`, `data-*`, `aria-*` and
62
+ event handlers to their root element; the component's own props still win and Chakra style props are
63
+ still not accepted.
64
+ - **`ref` forwarding**: `Checkbox`, `RadioButton`, `ToggleSwitch` and `DatePicker` (single, range and time,
65
+ including the deep-imported `SingleDatePicker` / `RangeDatePicker` / `TimeOnlyPicker`) forward to their
66
+ native `<input>`; `SegmentedControl` to its `role="radiogroup"` root; `Tab` to its `role="tab"` button;
67
+ `Avatar` and `Tag` to their root element.
68
+ - **`PinInput` `error`, `errorMessage`, `helperText` and `isDisabled`**: the message renders under the
69
+ cells and every digit gets `aria-invalid` / `aria-describedby`.
70
+ - **`WizardDialog` / `Wizard` `finishDisabled` and `finishBlockedReason`**: disable Finish on the last
71
+ step (a pending upload, say) and show why beside it; the reason is Finish's `aria-describedby`.
72
+ Back and the stepper keep working; nothing changes when they are not passed.
73
+ - **`CircularProgress` `size` takes a px number** (clamped to 24..160) as well as `sm | md | lg`; stroke
74
+ and label scale with it (`CircularProgressDiameter` type). The presets render exactly as before.
75
+ - **Token foundation** (web premium/perf campaign; nothing changes on screen until you use them):
76
+ `RADIUS_ROLE` (radius by surface role), `BORDER_WIDTHS` (px hairline), `DISABLED_OPACITY` (0.5),
77
+ `NUMERIC_TEXT` (tabular figures), `zIndices.popoverNested` (1510), `fontSizes["xs-minus"]` (11px) and
78
+ `fontSizes["xs-plus"]` (13px), and `TEXT_STYLES` bound as Chakra `textStyles` (`title`, `heading`,
79
+ `subheading`, `body`, `ui`, `label`, `caption`, `overline`). Motion: `MOTION_MS.enter` / `.exit`
80
+ (200ms), `MOTION_BEZIER`, `MOTION_EASE_OUT`, `MOTION_EASE_IN`, `MOTION_LOOP_MS`, `motionTransition()`;
81
+ `transitionFor` takes an optional curve. `shadowsFor(mode)` returns the shadow ramp a theme carries.
82
+ Opt-in `reducedMotion="global"` on `PixelizeThemeProvider` and `createBrandTheme` adds one
83
+ document-wide `prefers-reduced-motion` rule; `pz-motion-keep` (`MOTION_KEEP_CLASS`) opts an element out.
84
+ The default is unchanged. `CustomThemeProps` gains `zIndices.popoverNested` and the two font sizes, so
85
+ code that hand-builds a full `CustomThemeProps` needs those keys.
21
86
  - **HRMS library requests** — a navigation launcher, key caps, a merge-field `Editor`, a wizard and
22
87
  smaller gaps found by the HRMS migration:
23
88
  - `NavLauncher` — full-height navigation launcher (browse modules, pins, Frequent, Recent, search
@@ -205,14 +270,60 @@ next major.
205
270
 
206
271
  ### Changed
207
272
 
273
+ - **Performance, no visual change** (web premium/perf campaign):
274
+ - Theme colour math is memoised (`resolveFilledSurface`, `liftToContrast`, `softenToContrast`,
275
+ `resolveSoftTone`, luminance) in bounded, content-keyed caches: the hot calls are 5-20x faster and
276
+ restyling 50 `Button`s and 50 `Checkbox`es dropped from about 1.4 ms to 0.15 ms.
277
+ - Brand palettes (`lightPalettes`, `darkPalettes`, `palettes`, `<brand>Dark`) and the eight
278
+ non-default light themes are built on first read instead of at import; keys, key order, values and
279
+ object identity are unchanged, and importing the theme module is about 2x faster. The `ThemeSwitcher`
280
+ brand picker no longer builds every brand's Chakra theme when it mounts.
281
+ - Themes from `createBrandTheme` cache each component style function's output per theme, keyed on the
282
+ props that function reads: output is identical and style resolution per component render is about 2x
283
+ faster.
284
+ - Switching light/dark no longer blocks: the switcher repaints first and the app re-themes in an
285
+ interruptible render. Document `color-scheme`, `data-mode` and the `--color-*` variables follow the
286
+ new palette together, never ahead of it. `PixelizeThemeProvider` memoises its Chakra subtree, so the urgent
287
+ half of a switch re-renders only the switcher.
288
+ - `KanbanBoard` adopts a new `data` prop during render instead of in an effect, so a board whose data
289
+ follows the theme renders once per theme flip instead of twice.
290
+ - `Table`: passing an equal `columns` array again no longer re-renders every visible row; column
291
+ search popovers and row action menus mount their popover only while open (closed rows register no
292
+ global listeners); virtualised rows are measured through one shared `ResizeObserver` with no forced
293
+ layout read on mount.
294
+ - `ToolTip` mounts Chakra's tooltip only after the first hover or focus of its trigger; until then
295
+ (and while disabled or without a label) it renders just the child, with no document listeners.
296
+ - `SideBar`: the swipe-to-close drag no longer re-renders the sidebar or creates a CSS rule per
297
+ pointer move; row labels share one `ResizeObserver` and pause measuring while the rail width
298
+ animates, and their tooltips arm on first use. `useIsTruncated` uses a single shared
299
+ `ResizeObserver`; its signature is unchanged.
300
+ - `SearchSelect` option rows are memoised, so hovering, ArrowDown and toggling an option re-render only
301
+ the rows whose state changed (300 options: 300 row renders per hover to 1-2), and the menu's
302
+ scroll-driven position is an inline style instead of a new Emotion class per position.
303
+ - `KanbanBoard`: hovering a column and expanding a card no longer re-render the whole board (4 x 30
304
+ board, hover sweep: 960 card renders to 0); virtualized cards share one `ResizeObserver`.
305
+ - `Search` instances share one window `keydown` listener for Ctrl+K (it was one per instance);
306
+ with several on a page the last mounted still takes focus.
307
+ - `Dropdown` and `SelectSearch` add their outside-click `document` listener only while open, so closed
308
+ instances cost nothing on every page click.
309
+ - `MediaVideoPlayer` and `MediaAudioPlayer` no longer re-render the whole player on each `timeupdate`;
310
+ only the scrubber and the time readout update.
311
+ - `RangeSlider`, `MediaImageViewer` (pan/zoom), `FilterSidebar` (range slider), the media scrubber and
312
+ the `Dropdown` menu position apply per-frame values as inline styles, so dragging, panning and
313
+ scrolling no longer insert a CSS rule per value (40 slider moves used to leave 160 rules behind).
314
+ - `Notification` and `UpgradeButton`: the card and dismiss control transition named properties instead
315
+ of `all` (same 0.2s ease), and both drop their transitions, the shimmer sweep and the hover lift under
316
+ `prefers-reduced-motion`.
317
+ - `CalendarGrid` reuses `Intl.DateTimeFormat` instances per locale and options (was about 70 per
318
+ month render). `Toaster` cards no longer hold a permanent `will-change` layer.
208
319
  - **`PageHeader` `actionsLayout` defaults to `"auto"`**: at `md` and up the actions wrap below the
209
320
  title when they do not fit (before, they squeezed the title). Identical whenever title and
210
321
  actions fit on one row; pass `actionsLayout="inline"` for the old behaviour.
211
322
  - **`Card` `padding` is no longer Chakra's style prop** — it is omitted from the type and now takes
212
323
  the `CardPadding` steps. A consumer passing `padding={4}` gets a compile error; use `p` or `sx`.
213
324
  Staged for the next major (see Breaking); consumer blast radius not measured.
214
- - **`SideBar` default box-shadow transition is 260ms** (was 200ms) so it follows `collapseTransition`
215
- `speed="slow"`. The width transition is unchanged.
325
+ - **`SideBar` `collapseTransition` defaults to `{ speed: "base" }`** (200ms width and shadow, was 260ms).
326
+ Pass `{ speed: "slow" }` for the old pace.
216
327
  - **`StageProgress variant="stepper"` renders an `ol` of `li`** (`StepperStageProps.asListItem`).
217
328
  Visual layout is unchanged; selectors that expected a `div` list no longer match.
218
329
  - **`PdfViewer` `pdfUrl` is optional** — pass exactly one of `pdfUrl` / `getBlob`. In `getBlob` mode
@@ -268,8 +379,118 @@ next major.
268
379
  `aria-readonly`, and `m`/`mt`/`mb`/`ml`/`mr`/`mx`/`my` on the wrapper. `InputSwitch` is now a
269
380
  genuine thin wrapper — no prop it previously accepted is silently dropped.
270
381
 
382
+ ### Changed (visual)
383
+
384
+ - **Elevation follows Pebble, per mode.** `shadows.sm`/`base`/`md`/`lg` are the Pebble card-press/
385
+ card/float/dialog stacks, with new `card`, `float`, `dialog` and `sheet` role keys. Light shadows are
386
+ softer and wider; dark mode gets its own heavier black ramp, so overlays cast a visible shadow on a
387
+ dark canvas. `xs`, `xl`, `2xl`, `inner`, `none`, `darkLg` and the focus `outline` are unchanged.
388
+ - **`Menu` and `Popover` join the owned popup family:** radius `md` → `xl` (`RADIUS_ROLE.float`)
389
+ and shadow `sm` → `md` (float), like every other anchored popup. Their border stays.
390
+ - **`fonts.mono` is a real monospace stack** (`ui-monospace, SFMono-Regular, Menlo, Consolas,
391
+ monospace`). It was Inter, so code and keyboard shortcuts never aligned.
392
+ - **`Button` gray `ghost`/`outline` hover is visible.** Gray has no opacity ramp, so hover/active
393
+ take the list-row `active`/`selectedActive` steps (at least 1.15:1 on a card, all 9 brands x 2 modes)
394
+ instead of `gray.50` (1.04-1.08:1). `solid` and `gradient` hover no longer add a box-shadow; the
395
+ colour step carries hover.
396
+ - **`Toaster` status-icon pulse** animates a pseudo-element's transform and opacity (scale 1 to 1.5,
397
+ faded out by 70%, the same 900 ms one-shot) instead of `box-shadow`, so it no longer repaints every
398
+ frame. The icon chip background is the same tint composited opaque over the toast surface.
399
+ - **`Table` filter sidebar** opens on the 200 ms motion token (was 500 ms), does not animate on
400
+ mount, and is instant under reduced motion.
401
+ - **`FileUpload` image thumbnails are a keyboard-operable "Preview <file name>" button**: a new tab
402
+ stop with the library focus ring; Enter or Space opens the preview. Each image row now has two
403
+ buttons (Preview and remove), so a test that queries an unnamed `getByRole("button")` inside a row
404
+ must name the one it means.
405
+ - **`Menu` item highlight sits inside the menu.** A themed `MenuItem`/`MenuItemOption` is
406
+ `calc(100% - 2 * mx)` wide, so its hover/focus fill keeps the same 6px inset on both sides instead of
407
+ overhanging the menu's right edge by 6px. Menu size and row height are unchanged; a `MenuItem` given
408
+ its own `w`/`width` keeps that width.
409
+ - **`Skeleton` shimmer is one depth on every brand and mode**: 1.35:1 between its two colours (the
410
+ mobile library's `SKELETON_SHIMMER_CONTRAST`), was 1.34-1.58:1 in light and 1.93-1.99:1 in dark. The
411
+ end colour is `gray[300]`'s tint settled against `gray[100]`; dark skeletons pulse much more gently.
412
+ An explicit `startColor`/`endColor` still wins.
413
+
414
+ - **Motion comes from the tokens.** `SideBar`, `Notification`, `Toaster`, the Table settings sheet,
415
+ `ProfilePhotoViewer`, `TableToggle` and `StageProgress` take every duration and curve from the motion tokens
416
+ (colour fades 150ms, movement 200ms, enters on `MOTION_EASE_OUT`, exits on `MOTION_EASE_IN`). Most timings
417
+ move by under 60ms; the Table settings sheet goes from 400ms to 200ms. `Notification` cards no longer lift
418
+ 2px on hover; the shadow still deepens.
419
+ - **`Button` (solid, outline, ghost) and `IconButton` scale to 0.98 while pressed** (`MOTION_PRESS_SCALE`).
420
+ Never when disabled or loading, nor under `prefers-reduced-motion`.
421
+ - **Dark planes carry the brand hue and separate by lift.** The dark canvas takes a faint brand tint and cards
422
+ (`background[50]`) sit one step (1.16:1) above it, with overlays (`surfaceRaised`) one step (1.15:1) above
423
+ the card; every filled mark keeps 3:1 on all three. Light mode is unchanged. A brand opts out with
424
+ `buildDarkPalette(light, { planes: "flat" })`. `meadow` and `rosewood` dark `accentText` move one rung
425
+ lighter so they clear AA on selected list rows.
426
+ - **`zinc`:** muted text in light mode is `#515157` (was `#27272a`, 14.9:1), settled under a new 8:1 muted
427
+ ceiling; zinc's dark card is no longer darker than its canvas.
428
+ - **A brand's primary never reads as danger.** `radiant`'s danger colour (`red` and `semantic.error`) is
429
+ crimson and `rosewood`'s primary rotates toward raspberry; a delta-E >= 10 gate in `brandIdentity.test.ts`
430
+ covers all 9 brands in both modes.
431
+ - **`Button` solid primary paints `resolveFilledSurface`.** Only `zinc` dark moves: the primary fill goes from `#52525b` with
432
+ white ink (2.5:1 on the canvas) to `#e4e4e7` with black ink, matching `resolveFilledSurface`, the fill every other filled surface already paints.
433
+ - **Dark mode: header strips, calendar off-days and in-card rules step visibly off the lifted planes.** Table header
434
+ strips (`CustomModulesTable`, `SignInActivityTable`), `DatePicker` weekly-off cells, and the rules inside cards and
435
+ dialogs (`Table`, `SettingRow`, `SettingsSection`, `StatCard`, `Drawer`, `Modal`, `ConfirmDialog` and the account
436
+ modals) now clear 1.15:1 (bands) and 1.31:1 (rules) off their plane. Light mode is unchanged.
437
+ - **`Card` defaults to `variant="elevated"`** (borderless, `background[50]` lifted by `shadows.card`). Pass
438
+ `variant="outline"` for a Card that frames a table or a list of rows. Measured blast radius: 22 library `<Card>`
439
+ sites with no variant flip (hrms 18, account 1, tickets 3); 305 with an explicit variant are unchanged. The
440
+ `SettingsSection` danger zone keeps its red frame by taking `variant="outline"`.
441
+ - **Light page canvas (`backgroundColor.base`) sits 1.09:1 below the card on all 9 brands**, so a borderless card keeps
442
+ its top edge (zinc and slate `#fafafa` to `#f5f5f5`, lavender `#fbfafd` to `#f5f4f8`). `main` and every other token
443
+ are unchanged.
444
+
271
445
  ### Fixed
272
446
 
447
+ - **`Table` settings sheet** fades in place instead of dropping in when the user prefers reduced motion.
448
+ - **`SearchSelect`**: the Select All and Add New rows are reachable from the keyboard. Arrow keys, Home and End walk
449
+ Select All, then the options, then Add New, and Enter runs them. Both are now `role="option"` rows, so a test that
450
+ counts `getAllByRole("option")` with either row shown sees one or two more.
451
+ - **Field helper text no longer leaves a dangling `<id>-helptext` in `aria-describedby`** when a field with an
452
+ explicit `id` sits inside a consumer `FormControl` (`TextInput` and every field rendering
453
+ `FieldMessage`/`HelperText`).
454
+ - **`SearchSelect` and `Select` (`native={false}`) multi rows**: the decorative checkbox is no longer a focusable,
455
+ unnamed control nested in the option; the row's `role="option"` with `aria-selected` is the single accessible
456
+ control. No visual change.
457
+ - **`SearchSelect`'s open listbox and `Select`'s popup dialog have an accessible name**, from `label`, then
458
+ `aria-label`, then `placeholder`.
459
+ - **`WorkspaceWindow`'s dialog is named by its visible title**; while a window is open the page behind it is
460
+ `aria-hidden`, as for any modal.
461
+ - **`CustomModulesTable`'s edit-module field is named** by `labels.moduleNamePlaceholder`.
462
+ - **`StageProgress` no longer scrolls the page when it mounts**: the active stage was revealed with
463
+ `scrollIntoView`, which also scrolled every ancestor, so a tracker below the fold pulled the page down
464
+ to it. The active stage is now centred inside the stage strip only (`scrollActiveIntoView` still
465
+ turns that off).
466
+ - **`Tabs` no longer scrolls the page when it mounts**: the selected tab was revealed with
467
+ `scrollIntoView`, which also scrolled every scrolling ancestor, so a page with tabs below the fold
468
+ jumped to them on load. The first reveal now scrolls only the tab list; later focus and selection
469
+ moves behave as before.
470
+ - **The legacy `DatePicker` behind Table's filter pane opens from the keyboard**: Enter or ArrowDown on the
471
+ focused field opens the calendar (it was mouse-only).
472
+ - **Keyboard access for click-only elements** (WCAG 2.1.1): `NoteTextArea` (the collapsed placeholder and
473
+ the attach control, now a named button "Attach files"), `Notification` (the title when `onClick` is
474
+ passed; the dismiss control is announced as "Dismiss notification"), `OrganizationDetails` ("Set as
475
+ Default"), `UserDetails` (member rows, the selected one marked `aria-current`), `FileUploader` (the drop
476
+ target opens the picker from the keyboard; it was the only way to add files), `KanbanBoard` (both
477
+ add-column affordances) and the `SearchSelect` `insideSelect` prefix and menu (Enter/Space, arrow
478
+ keys, Home/End, Escape). Each takes Tab, activates on Enter and Space, and shows the library focus
479
+ ring on keyboard focus only; resting looks are unchanged.
480
+ - **`ProductCard` no longer throws "Rendered more hooks than during the previous render"** when `isLoading`
481
+ goes from `true` to `false` (a hook sat below the loading early return).
482
+ - **`KanbanBoard` no longer logs React's "Cannot update during an existing state transition"** when a
483
+ card is expanded in a virtualized column.
484
+ - **`PhoneNumberInput` follows a changed `value`.** It used to read `value` once on mount; a form reset
485
+ or a loaded record now updates the field, and a leading dial code (the `onChange` shape) is stripped,
486
+ so echoing `onChange` back into `value` is safe.
487
+ - **`CopyButton variant="menu-item"` is keyboard-operable** (focusable, Enter and Space copy, focus
488
+ ring), and every variant announces the copied label through a polite live region.
489
+ - **`Slider` no longer auto-advances while hovered or focused, nor under reduced motion** (WCAG 2.2.2);
490
+ the slide transition is instant under reduced motion. The default interval is unchanged.
491
+ - **`FileUpload` no longer leaks a blob URL per image thumbnail per render.** Each file gets one URL,
492
+ revoked when the file is removed or the component unmounts.
493
+ - **`Table` column search shows the current search when reopened**, instead of stale text.
273
494
  - **`NavigationBar` right cluster no longer overflows onto the avatar at phone widths.** The title
274
495
  truncates first (overflow-only tooltip when it is a string); the `moreIcon` cluster can shrink, while
275
496
  the sidebar toggle, back button and avatar menu never do. (HRMS, beta.60 launcher trigger overflow)
@@ -517,6 +738,11 @@ next major.
517
738
 
518
739
  Nothing is removed yet — each of these still ships its full implementation.
519
740
 
741
+ - `UploadedFile.type` (FileUploader) — never set; read the extension from `name`.
742
+ - `ProfileCard` `color` — no visual effect; Card styles never read a colour scheme.
743
+ - `NotificationData.status` — never read; the status dot colour comes from `dueDate`/`endDate`.
744
+ - `CustomModulesTableLabels.loading` — never rendered; the loading state shows skeleton bars only.
745
+ - `WorkspaceWindow` `onMedium` and `onMaximize` — never called; the window has no such controls.
520
746
  - `NavLauncher` `openShortcutHint` and `LauncherLabels.hintOpenMenu` — no longer rendered (the launcher
521
747
  is already open when its footer shows); bind the open chord in the app only.
522
748
  - `SelectV2` — use `Select` with `native={false}`; it is already a thin wrapper over it.
@@ -157,7 +157,8 @@ visible at the call site, or declare the handler with both parameters. Grep for
157
157
 
158
158
  ### `Slider` is an image carousel, not a numeric range input
159
159
 
160
- `Slider` auto-advances a set of images/content on a timer — no numeric value, min/max, or step. The
160
+ `Slider` auto-advances a set of images/content on a timer (paused while hovered or focused, never
161
+ under reduced motion) — no numeric value, min/max, or step. The
161
162
  range-input slider is a separate component named `RangeSlider`, because this library's `Slider`
162
163
  already owns the name. `RangeSlider` used to be a Chakra passthrough on the `Primitives` barrel; it
163
164
  is now the library's own themed component, with a real dual-thumb mode and a `marks` prop.
@@ -214,7 +215,7 @@ and wires `aria-controls` to them. Pick by that, never by the picture. A screen
214
215
 
215
216
  | Need | Component | Why not the others |
216
217
  | --- | --- | --- |
217
- | Generic bordered/padded container, no commerce semantics | `Card` | Layout wrapper with `header`/`footer` slots and a padded body — see gotcha below |
218
+ | Generic padded container (borderless by default; `variant="outline"` for a ruled one), no commerce semantics | `Card` | Layout wrapper with `header`/`footer` slots and a padded body — see gotcha below |
218
219
  | Product tile for a grid, list or rail (photo, price, rating, swatches, quick add) | `ProductCard` | Takes the same `axes` / `variants` as `ProductDetails`; for a whole page use `ProductDetails` |
219
220
  | A KPI figure with delta and sparkline | `StatCard` | Not a product or a container |
220
221
  | Subscription/pricing-tier card (plans, billing cycle, feature list) | `PaymentCard` | Takes a `Plan` object, unrelated to `options`/`productImage` |
@@ -319,6 +320,53 @@ not enough when the overlay sits inside a transition wrapper — the wrapper kee
319
320
 
320
321
  ## Known gotchas (silent failures)
321
322
 
323
+ ### `withTheme` mounts a full provider stack per wrapped instance
324
+
325
+ Each wrapped component gets its own `ChakraProvider` (CSS reset, global styles, CSS variables), `ToasterProvider` and `ColorModeScript`. Wrap the app root once with `PixelizeThemeProvider`; never wrap list items or repeated rows.
326
+
327
+ ### `SearchSelect` with `insideSelect` shows a second `role="listbox"` while open
328
+
329
+ A test that finds the main dropdown with `getByRole("listbox")` must now pick it by id (`<id>-listbox`).
330
+
331
+ ### `ChoiceCardGroup`'s children must be `ChoiceCard` elements, and the prop is `disabled`
332
+
333
+ A wrapper component hides each card's `value` and `disabled` from the roving tab stop, so with nothing
334
+ selected the group has no Tab stop at all (same rule as `PaymentOptionGroup` / `AddressCardGroup`). The
335
+ card's prop is `disabled`, not `isDisabled`: the shared machinery reads `disabled` off the child element.
336
+ The group is a column only.
337
+
338
+ ### `Pagination` never resets `page` for you
339
+
340
+ An out-of-range `page` (a filter shrank the result) is displayed clamped but never reported, and changing
341
+ rows per page does not reset `page` either. Reset it yourself, in `onPageSizeChange` and when the filters change.
342
+
343
+ ### Four components with a behaviour their props do not hint at
344
+
345
+ - `WorkspaceTrayPreview` `onOpenChange(false)` also fires when the pointer leaves before the card ever opened; track your own open state from `true`.
346
+ - `Notification`'s countdown is computed when its dates change and never ticks; remount or change a date to refresh it. Overdue labels read "overdue by N hours ago".
347
+ - `NoteTextArea` checks `maxNoteWordCount` against the title only until the note is next edited, so a long title can be saved; `handleCancel` always receives `false`.
348
+ - `VerifyEmailOtp` fields set `autocomplete="off"`, so browser or OS one-time-code autofill never offers the code.
349
+
350
+ ### Where `ref` lands, and what does not take one
351
+
352
+ `Checkbox`, `RadioButton`, `ToggleSwitch` and `DatePicker` (every mode) forward to the native `<input>`.
353
+ `SegmentedControl` forwards to the radiogroup `<div>`, not a segment; `Tab` to its tab `<button>` (`Tabs`
354
+ itself takes no ref); `Avatar` to the outer box; `Tag` to its root, which is a `<button>` only for
355
+ `display="dot"` with `onTagClick`, so type that ref as `HTMLElement`. `PinInput`, `FileUpload`,
356
+ `SettingRow` and `Tabs` do not forward a ref.
357
+
358
+ ### Root attributes on the page primitives, and `Skeletons` props that are ignored
359
+
360
+ `PageHeader`, `StatCard`, `SaveBar`, `EmptyState`, `DescriptionList`, `FilterBar` and `Skeletons` put
361
+ `className`, `style`, `id`, `data-*` and `aria-*` on their outermost element. `StatCard` applies
362
+ `aria-label` only when `onClick` makes it a button; `DescriptionList`'s loading grid keeps its own
363
+ `aria-label="Loading"`. `Skeletons` still accepts `alignSelf` and `flexShrink` in its type but never
364
+ applies them; wrap it in a `Box` to position it.
365
+
366
+ ### `Table` `HeaderActions` item with `customComponent` and `onClick` is mouse-only unless the custom component is focusable
367
+
368
+ The wrapper is deliberately not a button; make the custom component a button, or the action cannot be reached from the keyboard.
369
+
322
370
  ### Defaults changed in 2.4.2-beta.44 — read this first when upgrading from beta.43
323
371
 
324
372
  | Component | beta.43 → beta.44 | Restore the old look |
@@ -353,7 +401,7 @@ not enough when the overlay sits inside a transition wrapper — the wrapper kee
353
401
  | `InputTextArea` / `FileUpload` / `TextInput` | Width 500px → 100% / `maxSizeKB` 5 → 5120 / no default "Placeholder" text | `width="500px"` / — (5 KB was a bug) / — |
354
402
  | `DatePicker` (no `pickerType`) | Inference is case-sensitive: `MM` is month, `mm` minutes. `dd/MM/yyyy` was misread as date+time and showed time selects; it is now date-only | `pickerType="datetime"` |
355
403
  | `EmptyState` | Title is an `h3`; image is decorative (`alt=""`, was the title) | `titleAs`, `imageAlt` |
356
- | Theme `Badge` / `Card` / field labels | Badge: pill, no uppercase, default `sm`. Card: default variant `outline`. Label colour `text[700]`; helper/error row 12px | `size`/`variant` props |
404
+ | Theme `Badge` / `Card` / field labels | Badge: pill, no uppercase, default `sm`. Card: default variant `elevated` (borderless, `shadows.card`). Label colour `text[700]`; helper/error row 12px | `size`/`variant` props |
357
405
  | `Header` | `position: sticky; top: 0`, z-index `sticky` (1100, was 1000); `rightSlot` mounts once, not per layout | — |
358
406
  | `Table` | Radius `xl`; row height 32/40/52 by density; filter button is named "Filter {label}" (tests querying "Search" break); client pagination resets to page 1 when `data.length` changes | — |
359
407
  | `KanbanBoard` | `height`/`maxH` props replace the clipping wrapper; `height="100%"` needs a parent with a definite height | — |
@@ -465,12 +513,40 @@ so the two schemes were indistinguishable. It is now `primary`'s hue turned 60°
465
513
  which is near-grey and has almost no hue to turn — use a semantic scheme (`blue`, `teal`, `purple`)
466
514
  there if the two categories must read apart.
467
515
 
516
+ ### Brand palettes and non-default themes are lazy; library style functions may return cached objects
517
+
518
+ Before its first read, a brand palette or a non-default light theme is an object of getters. Reading
519
+ any key turns it into plain data; spread, `Object.keys`, JSON and assignment behave as before, but
520
+ `Object.getOwnPropertyDescriptor` reports an accessor until then. Style functions in a library
521
+ theme's `theme.components` receive props through a tracking Proxy and may return a cached object, so
522
+ never mutate what they return.
523
+
524
+ ### Reduced motion is per component unless the app passes `reducedMotion="global"`
525
+
526
+ The library's own animations honour `prefers-reduced-motion` one component at a time. For one
527
+ document-wide rule, pass `reducedMotion="global"` to `PixelizeThemeProvider` (or `createBrandTheme`);
528
+ transitions and animations then collapse to one near-instant pass. Add `pz-motion-keep`
529
+ (`MOTION_KEEP_CLASS`) to any loop that is essential feedback; Chakra spinners and progress bars are
530
+ kept automatically.
531
+
532
+ A popup opened inside another popup takes `zIndex="popoverNested"` (1510), never `skipLink` (1600).
533
+ `fontSize="xs-plus"` is 13px, the control size; use it instead of a `13px` literal.
534
+
468
535
  ### Your own overlay painted `background[50]` sinks into the dark canvas
469
536
 
470
- In dark mode `background[50]` equals the page canvas on 8 of 9 brands. Library dialogs, drawers,
471
- popovers and menus now paint `colors.surfaceRaised` — identical `#ffffff` in light, one elevation
472
- step up in dark. A custom panel, popover or `ModalContent bg=` in an app should read
473
- `surfaceRaised` too, and a divider inside it `raisedRule(colors)`.
537
+ In dark mode `background[50]` is the card plane, one step above the canvas; an overlay painted with it
538
+ merges into the cards under it. Library dialogs, drawers, popovers and menus paint `colors.surfaceRaised`,
539
+ one step above the card in dark and identical `#ffffff` in light. A custom panel, popover or
540
+ `ModalContent bg=` should read `surfaceRaised` too, and a divider inside it `raisedRule(colors)`.
541
+
542
+ ### Named fills nearly vanish on a dark card
543
+
544
+ In dark mode `backgroundColor.light`, `tertiary`, `medium` and `tableHeader` sit only 1.01-1.05:1 off
545
+ `background[50]`, `muted` 1.00-1.06:1 off `surfaceRaised`, and `boxborder[200]` 1.10-1.16:1 off a card and
546
+ 1.00-1.06:1 off `surfaceRaised`. Never paint a named canvas fill or raw `boxborder[200]` on a card or overlay:
547
+ use `bandOn(fill, surface)` for a header strip, hover or selection tint, `recessOn(fill, surface)` for a shaded
548
+ or off cell, `cardRule(colors)` for a rule inside a card and `raisedRule(colors)` for a rule inside an overlay.
549
+ All four return the old value unchanged in light mode.
474
550
 
475
551
  ### `Drawer` / `Modal` / `ProfileCard` drop any child that isn't a named slot — use `portalChildren`
476
552
 
@@ -961,6 +1037,13 @@ only-when-truncated (the opposite of the prop's contract).
961
1037
  **Apply:** give `overflowOnly`/`OverflowToolTip` exactly one real element as `children` (e.g. a
962
1038
  single `Text noOfLines`), never a Fragment or bare text.
963
1039
 
1040
+ ### `ToolTip` mounts Chakra's tooltip only after the first hover or focus
1041
+
1042
+ Until the trigger is hovered or focused (or `isOpen`/`defaultIsOpen` is set), `ToolTip` renders just the
1043
+ child, with no tooltip element and no document listeners. A test that mocks Chakra's `Tooltip` and
1044
+ expects it mounted at render time must hover or focus the trigger first
1045
+ (`fireEvent.pointerEnter(trigger)` or `userEvent.hover`).
1046
+
964
1047
  ### `Toaster`'s `showToast({ children })` is a dead prop, and its two `onClose`s are different functions
965
1048
 
966
1049
  `children` is `@deprecated` and never read — only `title`/`description`/`actions` render. The `onClose` you pass to `showToast` is wired to
@@ -1146,6 +1229,9 @@ wrong-type file. Exceeding `maxFiles` silently truncates the list with no error.
1146
1229
 
1147
1230
  **Apply:** need real file bytes or enforced validation → use `FileUpload`, not `FileUploader`.
1148
1231
 
1232
+ Each image's `previewUrl` is a `blob:` URL that `FileUploader` never revokes. Call
1233
+ `URL.revokeObjectURL` when you drop the entry or unmount. (`FileUpload` revokes its own thumbnail URLs.)
1234
+
1149
1235
  ### `DatePicker`'s `pickerType` does nothing when `isRange` is set, and no variant has a seconds control
1150
1236
 
1151
1237
  `RangeDatePicker` never reads `pickerType` — whether time inputs show is controlled entirely by
@@ -1395,6 +1481,13 @@ It spreads after the built-in `bg`/`_hover` that encode `isExpanded` state — p
1395
1481
  **Apply:** style around the defaults via `customStyles` (merged through `sx`) when the highlight
1396
1482
  must survive.
1397
1483
 
1484
+ ### `Table`: memoise `columns` if users can hide or reorder columns without `savePreferences`
1485
+
1486
+ A new `columns` identity re-applies the column defaults and discards those local changes. Passing an
1487
+ equal array again no longer costs a re-render, but the reset still happens.
1488
+
1489
+ **Apply:** define `columns` at module level or in `useMemo`.
1490
+
1398
1491
  ### `Table`'s `LeftFilterPane` Clear All only re-applies filters in `"sidebar"` mode
1399
1492
 
1400
1493
  `handleClear` calls `onClear` unconditionally, but only calls `onApply(cleared)` when
@@ -1764,3 +1857,47 @@ text. Column widths come from the rendered DOM, never from label length, so sizi
1764
1857
 
1765
1858
  **Apply:** set `labelText` on every node label; put an `isTruncated` `Text` inside the node if it
1766
1859
  can outgrow the column.
1860
+
1861
+ ### `FormField`, `IconButton`, `SkipLink`: what their props do not hint at
1862
+
1863
+ - **`FormField` + library fields:** `TextInput` inherits FormField's `error` and `isRequired` because it checks
1864
+ for a parent `FormControl`. `InputTextArea`, `NumberInput`, `Select`, the date pickers and `PhoneNumberInput`
1865
+ wrap themselves in their own and do **not**: pass `error`/`isRequired` to those directly, and never give a
1866
+ wrapped field its own `label` as well, or it renders two.
1867
+ - **`FormField isRequired` sets native `required` on Chakra-based controls** (as Chakra's `FormControl` does), so
1868
+ the browser blocks an empty submit. Add `noValidate` to the `<form>` if you validate yourself. Native children
1869
+ get `aria-required` only.
1870
+ - **`FormField` children:** pass one element or a function. A Fragment is rendered untouched and gets no wiring.
1871
+ `id` is the control's id (the root takes none); a child's own `id` is adopted when FormField has none.
1872
+ - **`IconButton` warns once per mount in development without `aria-label`/`aria-labelledby`.** `title` does not
1873
+ count. Size the icon yourself (xs 12 · sm 14 · md 16 · lg 18): the button does not resize it.
1874
+ - **`SkipLink`** must be the first focusable element on the page. Its target gains `tabindex="-1"` if it is not
1875
+ focusable, and keeps it. A missing target falls back to the browser's hash jump (and warns in development).
1876
+
1877
+ ### `formatDate`, `TimePicker`, `TagInput`: what their props do not hint at
1878
+
1879
+ - `formatDate` reads a bare `YYYY-MM-DD` as that calendar day, not UTC midnight. Pass a `Date` only when you mean
1880
+ an instant. Epoch *seconds* are not detected: multiply by 1000 first.
1881
+ - `TimePicker` fires `onChange` with a `Date` on the day of `value` (else `baseDate`, else today). It never clears
1882
+ to `null`, so put a Clear action beside it if one is needed.
1883
+ - For free-text chips that are not email addresses use `TagInput`: same look as `MultiSelect`, any text, with
1884
+ your own `validate`.
1885
+ - **Button press scale matches a real `:active` only.** A `MenuButton as={Button}` held open by Chakra's
1886
+ `data-active` keeps the darker pressed fill but does not stay at 0.98. A consumer `_active={{ transform }}`
1887
+ loses to the press rule while the pointer is down; use `variant="unstyled"` or an `sx` `&:active` with
1888
+ `!important`.
1889
+
1890
+ ### `Card` is borderless by default (`elevated`)
1891
+
1892
+ A Card that frames a table or a list of rows needs `variant="outline"`. `borderColor` alone shows nothing, because
1893
+ the default border width is 0, and the outline rule is Chakra `gray[200]`, not `boxborder[200]`. Paint the page with
1894
+ `backgroundColor.base`: on `backgroundColor.main` a borderless card can be white on white.
1895
+
1896
+ ### `Select` / `SearchSelect` multi rows have no checkbox role
1897
+
1898
+ Query rows with `getAllByRole("option")` and check `aria-selected`. The row's checkbox is decorative and no longer
1899
+ exposes `role="checkbox"`, so `getByRole("checkbox")` finds nothing inside the popup.
1900
+
1901
+ ### Page behind an open `WorkspaceWindow` is `aria-hidden`
1902
+
1903
+ While a window is open (not minimized) role queries for background elements need `{ hidden: true }` or a test id.
package/DESIGN-GUIDE.md CHANGED
@@ -12,15 +12,21 @@ tickets `layoutDensity.ts`), use it — it encodes these same rules. Otherwise t
12
12
 
13
13
  Calm, dense, professional SaaS admin — Linear/Stripe-dashboard, not a landing page.
14
14
 
15
- - **Hierarchy comes from type and whitespace, not boxes.** One border per surface. Never nest a
16
- bordered card inside a bordered card; inside a card, separate with spacing or a `Divider`.
15
+ - **Hierarchy comes from type and whitespace, not boxes.** One surface per level. Never nest a
16
+ card inside a card; inside a card, separate with spacing or a `Divider`.
17
17
  - **One primary action per view.** One `variant="solid"` button in the page header; everything
18
18
  else `outline` or `ghost`. The only exception is a composer's Send button.
19
19
  - **Left-aligned, scannable.** Titles and forms left-aligned; numbers right-aligned in tables.
20
20
  - **Color means something.** Neutral by default; brand color for the primary action and selection;
21
21
  semantic color only for status. No decorative gradients, no colored section backgrounds.
22
- - **Borders, not shadows, for resting surfaces.** Shadows only on floating things (menus, popovers,
23
- modals) and on hover of a card that is itself clickable.
22
+ - **Content cards float, data surfaces are ruled.** `Card` is borderless by default
23
+ (`variant="elevated"`: `background[50]` lifted by the soft `shadows.card`). Tables, filter bars,
24
+ list panes and fields keep their 1px `boxborder[200]` rule; a `Card` that frames a table or a
25
+ list of rows takes `variant="outline"`. Heavier shadows only on floating things (menus,
26
+ popovers, modals) and on hover of a card that is itself clickable.
27
+ - **Paint the page with `backgroundColor.base`.** In light mode it sits one step (1.09:1) below
28
+ the card, which is what gives a borderless card its top edge; `backgroundColor.main` is a
29
+ component surface and can be as white as the card.
24
30
 
25
31
  ## 2. Spacing (Chakra units, 1 = 4px)
26
32
 
@@ -228,7 +234,8 @@ hides its primary; when only one section is empty on a populated page, that sect
228
234
  - Reaching for `SelectV2`, `SearchSelect`, `SelectSearch` in new work — all `@deprecated`.
229
235
  One picker now: `Select` (`native={false}` for the themed, searchable, multi popup).
230
236
  `Dropdown` is the exception — it is an action menu, not a picker, and is not replaced.
231
- - A bordered card inside a bordered card; a shadow on a resting card.
237
+ - A card inside a card; a border on a content `Card` (it is borderless by default), or any resting
238
+ shadow heavier than `shadows.card`.
232
239
  - Painting a whole table cell with a status color — use a `Tag` in the cell.
233
240
  - Centered page titles, hero-sized headings, `size="lg"` buttons, or `size` props restating the default.
234
241
  - More than one solid button in a view; a destructive action without `AlertDialog`.
@@ -22,13 +22,13 @@ const Accordion = ({ allowMultiple, allowToggle, index, onChange, reduceMotion,
22
22
  var _a;
23
23
  return ((0, jsx_runtime_1.jsx)(react_2.AccordionItem, { border: "1px solid", borderColor: border, borderRadius: "xl", bg: colors.background[50], boxShadow: "none", mb: 3, overflow: "hidden", _last: { mb: 0 }, ...item.itemProps, sx: (_a = item.customStyles) === null || _a === void 0 ? void 0 : _a.itemStyle, children: ({ isExpanded }) => {
24
24
  var _a, _b, _c;
25
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h2", { children: (0, jsx_runtime_1.jsxs)(react_2.AccordionButton, { px: 4, py: 3, gap: 3, fontSize: "0.875rem", fontWeight: 600, color: headingColor, bg: isExpanded ? expandedBg : "transparent", transition: (0, motion_1.transitionFor)(["background-color"]), _hover: { bg: isExpanded ? expandedBg : softHover }, _focusVisible: focusRing, ...item.buttonProps, sx: {
25
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("h2", { children: (0, jsx_runtime_1.jsxs)(react_2.AccordionButton, { px: 4, py: 3, gap: 3, fontSize: "sm", fontWeight: 600, color: headingColor, bg: isExpanded ? expandedBg : "transparent", transition: (0, motion_1.transitionFor)(["background-color"]), _hover: { bg: isExpanded ? expandedBg : softHover }, _focusVisible: focusRing, ...item.buttonProps, sx: {
26
26
  ...(0, motion_2.reducedMotionSx)(),
27
27
  ...(_a = item.customStyles) === null || _a === void 0 ? void 0 : _a.buttonStyle,
28
28
  "&:hover": {
29
29
  ...(_b = item.customStyles) === null || _b === void 0 ? void 0 : _b.hoverbuttonStyle,
30
30
  },
31
- }, children: [(0, jsx_runtime_1.jsx)(react_2.Box, { as: "span", flex: "1", textAlign: "left", children: item.header }), (0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: "1.5rem", flexShrink: 0, borderRadius: "lg", color: isExpanded ? colors.accentText : colors.textMuted, bg: isExpanded ? colors.primary.opacity[16] : "transparent", transform: isExpanded ? "rotate(180deg)" : "rotate(0deg)", transition: (0, motion_1.transitionFor)(["transform", "color", "background-color"], "base"), sx: (0, motion_2.reducedMotionSx)(), children: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronDown, { size: 16 }) })] }) }), (0, jsx_runtime_1.jsx)(react_2.AccordionPanel, { px: 4, pt: 1, pb: 4, fontSize: "0.875rem", lineHeight: "1.5", color: bodyColor, ...item.panelProps, sx: (_c = item.customStyles) === null || _c === void 0 ? void 0 : _c.panelStyle, children: item.content })] }));
31
+ }, children: [(0, jsx_runtime_1.jsx)(react_2.Box, { as: "span", flex: "1", textAlign: "left", children: item.header }), (0, jsx_runtime_1.jsx)(react_2.Flex, { align: "center", justify: "center", boxSize: "1.5rem", flexShrink: 0, borderRadius: "lg", color: isExpanded ? colors.accentText : colors.textMuted, bg: isExpanded ? colors.primary.opacity[16] : "transparent", transform: isExpanded ? "rotate(180deg)" : "rotate(0deg)", transition: (0, motion_1.transitionFor)(["transform", "color", "background-color"], "base"), sx: (0, motion_2.reducedMotionSx)(), children: (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronDown, { size: 16 }) })] }) }), (0, jsx_runtime_1.jsx)(react_2.AccordionPanel, { px: 4, pt: 1, pb: 4, fontSize: "sm", lineHeight: "1.5", color: bodyColor, ...item.panelProps, sx: (_c = item.customStyles) === null || _c === void 0 ? void 0 : _c.panelStyle, children: item.content })] }));
32
32
  } }, idx));
33
33
  }) }));
34
34
  };
@@ -7,6 +7,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const react_1 = require("react");
8
8
  const react_2 = require("@chakra-ui/react");
9
9
  const useCustomTheme_1 = require("../../Theme/useCustomTheme");
10
+ const typography_1 = require("../../Theme/tokens/primitives/typography");
10
11
  const selectable_1 = require("../CheckoutKit/selectable");
11
12
  const Button_1 = __importDefault(require("../Button/Button"));
12
13
  const Tag_1 = __importDefault(require("../Tag/Tag"));
@@ -20,6 +21,6 @@ const AddressCard = ({ value, name, phone, lines, tag, isDefault = false, note,
20
21
  const copy = { ...DEFAULT_LABELS, ...labels };
21
22
  const { isSelected, interactive, inGroup, ringed, props } = (0, selectable_1.useSelectable)({ value, selected, disabled, onSelect });
22
23
  const selectable = inGroup || !!onSelect;
23
- return ((0, jsx_runtime_1.jsxs)(react_2.Flex, { direction: "column", "data-testid": testId, "data-selected": isSelected || undefined, ...(0, selectable_1.selectableSurface)(colors, { selected: isSelected && selectable, disabled, interactive, ringed }), children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { ...props, "data-radio": true, "aria-disabled": selectable && disabled ? true : undefined, "aria-labelledby": props.role ? nameId : undefined, "aria-describedby": props.role ? bodyId : undefined, gap: 3, p: 4, pb: onEdit || onRemove ? 2 : 4, borderRadius: "1rem", cursor: interactive ? "pointer" : "default", outline: "none", align: "flex-start", children: [selectable && ((0, jsx_runtime_1.jsx)(react_2.Box, { mt: 0.5, children: (0, jsx_runtime_1.jsx)(selectable_1.RadioIndicator, { selected: isSelected }) })), (0, jsx_runtime_1.jsxs)(react_2.Flex, { direction: "column", gap: 1, flex: 1, minW: 0, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 2, wrap: "wrap", children: [(0, jsx_runtime_1.jsx)(react_2.Text, { as: "span", id: nameId, fontSize: "sm", fontWeight: 700, lineHeight: 1.4, color: colors.header[900], children: name }), tag && (0, jsx_runtime_1.jsx)(Tag_1.default, { label: tag, size: "xs", tone: "neutral" }), isDefault && (0, jsx_runtime_1.jsx)(Tag_1.default, { label: copy.default, size: "xs", tone: "neutral" })] }), (0, jsx_runtime_1.jsxs)(react_2.Box, { id: bodyId, children: [lines.map((line) => ((0, jsx_runtime_1.jsx)(react_2.Text, { as: "span", display: "block", fontSize: "sm", lineHeight: 1.5, color: colors.text[800], children: line }, line))), phone && ((0, jsx_runtime_1.jsx)(react_2.Text, { as: "span", display: "block", mt: 1, fontSize: "xs", lineHeight: 1.4, color: colors.textMuted, sx: { fontVariantNumeric: "tabular-nums" }, children: phone })), note && ((0, jsx_runtime_1.jsx)(react_2.Text, { as: "span", display: "block", mt: 1, fontSize: "xs", lineHeight: 1.4, color: colors.textMuted, children: note }))] })] })] }), (onEdit || onRemove) && ((0, jsx_runtime_1.jsxs)(react_2.Flex, { gap: 1, pl: selectable ? "2.75rem" : 1, pr: 2, pb: 2, children: [onEdit && ((0, jsx_runtime_1.jsx)(Button_1.default, { variant: "ghost", colorScheme: "gray", size: "sm", onClick: onEdit, "aria-label": `${copy.edit} address: ${name}`, children: copy.edit })), onRemove && ((0, jsx_runtime_1.jsx)(Button_1.default, { variant: "ghost", colorScheme: "gray", size: "sm", onClick: onRemove, "aria-label": `${copy.remove} address: ${name}`, children: copy.remove }))] }))] }));
24
+ return ((0, jsx_runtime_1.jsxs)(react_2.Flex, { direction: "column", "data-testid": testId, "data-selected": isSelected || undefined, ...(0, selectable_1.selectableSurface)(colors, { selected: isSelected && selectable, disabled, interactive, ringed }), children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { ...props, "data-radio": true, "aria-disabled": selectable && disabled ? true : undefined, "aria-labelledby": props.role ? nameId : undefined, "aria-describedby": props.role ? bodyId : undefined, gap: 3, p: 4, pb: onEdit || onRemove ? 2 : 4, borderRadius: "2xl", cursor: interactive ? "pointer" : "default", outline: "none", align: "flex-start", children: [selectable && ((0, jsx_runtime_1.jsx)(react_2.Box, { mt: 0.5, children: (0, jsx_runtime_1.jsx)(selectable_1.RadioIndicator, { selected: isSelected }) })), (0, jsx_runtime_1.jsxs)(react_2.Flex, { direction: "column", gap: 1, flex: 1, minW: 0, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 2, wrap: "wrap", children: [(0, jsx_runtime_1.jsx)(react_2.Text, { as: "span", id: nameId, fontSize: "sm", fontWeight: 700, lineHeight: 1.4, color: colors.header[900], children: name }), tag && (0, jsx_runtime_1.jsx)(Tag_1.default, { label: tag, size: "xs", tone: "neutral" }), isDefault && (0, jsx_runtime_1.jsx)(Tag_1.default, { label: copy.default, size: "xs", tone: "neutral" })] }), (0, jsx_runtime_1.jsxs)(react_2.Box, { id: bodyId, children: [lines.map((line) => ((0, jsx_runtime_1.jsx)(react_2.Text, { as: "span", display: "block", fontSize: "sm", lineHeight: 1.5, color: colors.text[800], children: line }, line))), phone && ((0, jsx_runtime_1.jsx)(react_2.Text, { as: "span", display: "block", mt: 1, fontSize: "xs", lineHeight: 1.4, color: colors.textMuted, sx: typography_1.NUMERIC_TEXT, children: phone })), note && ((0, jsx_runtime_1.jsx)(react_2.Text, { as: "span", display: "block", mt: 1, fontSize: "xs", lineHeight: 1.4, color: colors.textMuted, children: note }))] })] })] }), (onEdit || onRemove) && ((0, jsx_runtime_1.jsxs)(react_2.Flex, { gap: 1, pl: selectable ? "2.75rem" : 1, pr: 2, pb: 2, children: [onEdit && ((0, jsx_runtime_1.jsx)(Button_1.default, { variant: "ghost", colorScheme: "gray", size: "sm", onClick: onEdit, "aria-label": `${copy.edit} address: ${name}`, children: copy.edit })), onRemove && ((0, jsx_runtime_1.jsx)(Button_1.default, { variant: "ghost", colorScheme: "gray", size: "sm", onClick: onRemove, "aria-label": `${copy.remove} address: ${name}`, children: copy.remove }))] }))] }));
24
25
  };
25
26
  exports.default = AddressCard;
@@ -137,7 +137,7 @@ const ApexLineChart = ({ data, labels, title, height, width, lineColors, titlePo
137
137
  showSeries,
138
138
  palette,
139
139
  ]);
140
- return ((0, jsx_runtime_1.jsxs)("div", { ref: wrapperRef, children: [title && isSmall && ((0, jsx_runtime_1.jsx)(ToolTip_1.default, { label: title, placement: "top", hasArrow: true, fontSize: "0.75rem", isDisabled: !isTruncated, children: (0, jsx_runtime_1.jsx)("div", { ref: titleRef, style: {
140
+ return ((0, jsx_runtime_1.jsxs)("div", { ref: wrapperRef, children: [title && isSmall && ((0, jsx_runtime_1.jsx)(ToolTip_1.default, { label: title, placement: "top", hasArrow: true, fontSize: "xs", isDisabled: !isTruncated, children: (0, jsx_runtime_1.jsx)("div", { ref: titleRef, style: {
141
141
  textAlign: "left",
142
142
  color: resolvedTitleStyle === null || resolvedTitleStyle === void 0 ? void 0 : resolvedTitleStyle.color,
143
143
  fontSize: computedFontSize,
@@ -229,7 +229,7 @@ const AppSwitcher = ({ apps, currentAppId, onSelect, onOpenChange, isSearchable,
229
229
  return;
230
230
  }
231
231
  handlePanelKeyDown(e);
232
- }, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Grip, { size: s.icon + 1 }) }) }), (0, jsx_runtime_1.jsx)(react_2.PopoverContent, { w: width, maxW: "calc(100vw - 1.5rem)", textAlign: "start", onKeyDown: handlePanelKeyDown, bg: theme.colors.surfaceRaised, borderRadius: "xl", overflow: "hidden", boxShadow: `0 10px 30px ${theme.colors.boxShadow.default}`, _focus: { outline: "none", boxShadow: `0 10px 30px ${theme.colors.boxShadow.default}` }, children: (0, jsx_runtime_1.jsxs)(react_2.PopoverBody, { p: 0, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 2, px: 3, pt: 3, pb: showSearch ? 2 : 1, children: [(0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "0.6875rem", fontWeight: 600, letterSpacing: "0.08em", textTransform: "uppercase", color: theme.colors.textMuted, children: HEADING }), (0, jsx_runtime_1.jsx)(react_2.Box, { flex: "1" }), hint && (0, jsx_runtime_1.jsx)(Kbd_1.default, { size: "xs", children: hint })] }), showSearch && ((0, jsx_runtime_1.jsx)(react_2.Box, { px: 3, pb: 2, children: (0, jsx_runtime_1.jsxs)(react_2.InputGroup, { size: "sm", children: [(0, jsx_runtime_1.jsx)(react_2.InputLeftElement, { pointerEvents: "none", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Search, { size: 15, color: theme.colors.textMuted }) }), (0, jsx_runtime_1.jsx)(react_2.Input, { ref: searchRef, value: query, onChange: (e) => setQuery(e.target.value), placeholder: "Search apps", borderRadius: "lg", "aria-label": "Search apps", onKeyDown: (e) => {
232
+ }, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Grip, { size: s.icon + 1 }) }) }), (0, jsx_runtime_1.jsx)(react_2.PopoverContent, { w: width, maxW: "calc(100vw - 1.5rem)", textAlign: "start", onKeyDown: handlePanelKeyDown, bg: theme.colors.surfaceRaised, borderRadius: "xl", overflow: "hidden", boxShadow: `0 10px 30px ${theme.colors.boxShadow.default}`, _focus: { outline: "none", boxShadow: `0 10px 30px ${theme.colors.boxShadow.default}` }, children: (0, jsx_runtime_1.jsxs)(react_2.PopoverBody, { p: 0, children: [(0, jsx_runtime_1.jsxs)(react_2.Flex, { align: "center", gap: 2, px: 3, pt: 3, pb: showSearch ? 2 : 1, children: [(0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "xs-minus", fontWeight: 600, letterSpacing: "0.08em", textTransform: "uppercase", color: theme.colors.textMuted, children: HEADING }), (0, jsx_runtime_1.jsx)(react_2.Box, { flex: "1" }), hint && (0, jsx_runtime_1.jsx)(Kbd_1.default, { size: "xs", children: hint })] }), showSearch && ((0, jsx_runtime_1.jsx)(react_2.Box, { px: 3, pb: 2, children: (0, jsx_runtime_1.jsxs)(react_2.InputGroup, { size: "sm", children: [(0, jsx_runtime_1.jsx)(react_2.InputLeftElement, { pointerEvents: "none", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Search, { size: 15, color: theme.colors.textMuted }) }), (0, jsx_runtime_1.jsx)(react_2.Input, { ref: searchRef, value: query, onChange: (e) => setQuery(e.target.value), placeholder: "Search apps", borderRadius: "lg", "aria-label": "Search apps", onKeyDown: (e) => {
233
233
  if (e.key === "ArrowDown" && visible.length > 0) {
234
234
  e.preventDefault();
235
235
  focusItem(0);
@@ -16,7 +16,7 @@ const useCustomTheme_1 = require("../../Theme/useCustomTheme");
16
16
  const SelectV2_1 = __importDefault(require("../SelectV2/SelectV2"));
17
17
  const FieldLabel = ({ children }) => {
18
18
  const { colors } = (0, useCustomTheme_1.useCustomTheme)();
19
- return ((0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "sm", fontWeight: "medium", color: colors.textMuted, mb: 2, children: children }));
19
+ return ((0, jsx_runtime_1.jsx)(react_2.Text, { fontSize: "sm", fontWeight: 500, color: colors.textMuted, mb: 2, children: children }));
20
20
  };
21
21
  const brandSwatch = (name, colors) => ((0, jsx_runtime_1.jsx)(react_2.Box, { w: "14px", h: "14px", borderRadius: "full", bg: brands_1.lightPalettes[name].primary[500], border: "1px solid", borderColor: (0, outlineRung_1.ruleInk)(colors.boxborder[200], [colors.backgroundColor.light, colors.backgroundColor.tertiary], outlineRung_1.CHROME_RULE) }));
22
22
  const AppearanceSettings = ({ brand, fontSize, onBrandChange, onFontSizeChange, showBrand = true, showColorMode = true, showFontSize = true, size = "sm", labels, }) => {