pixelize-design-library 2.4.2-beta.66 → 2.4.2-beta.68

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 (309) hide show
  1. package/CHANGELOG.md +71 -4
  2. package/COMPONENT-GOTCHAS.md +105 -66
  3. package/DESIGN-GUIDE.md +18 -6
  4. package/README.md +14 -11
  5. package/dist/Components/Accordion/AccordionProps.d.ts +10 -0
  6. package/dist/Components/AddressCard/AddressCardProps.d.ts +15 -0
  7. package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChartProps.d.ts +11 -0
  8. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChartProps.d.ts +17 -1
  9. package/dist/Components/Apexcharts/ApexLineChart/ApexLineChartProps.d.ts +10 -0
  10. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChartProps.d.ts +14 -0
  11. package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarChartsProps.d.ts +9 -0
  12. package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChartProps.d.ts +10 -0
  13. package/dist/Components/AppSwitcher/AppSwitcher.d.ts +1 -0
  14. package/dist/Components/AppSwitcher/AppSwitcher.js +1 -0
  15. package/dist/Components/AppSwitcher/AppSwitcherProps.d.ts +23 -0
  16. package/dist/Components/AppSwitcher/pixelizeSuite.d.ts +1 -0
  17. package/dist/Components/AppearanceSettings/AppearanceSettings.d.ts +1 -0
  18. package/dist/Components/AppearanceSettings/AppearanceSettings.js +1 -0
  19. package/dist/Components/AppearanceSettings/AppearanceSettingsProps.d.ts +11 -0
  20. package/dist/Components/AudioRecorder/AudioRecorder.d.ts +1 -0
  21. package/dist/Components/AudioRecorder/AudioRecorder.js +1 -0
  22. package/dist/Components/AudioRecorder/AudioRecorderProps.d.ts +6 -0
  23. package/dist/Components/Avatar/AvatarGroup.d.ts +1 -0
  24. package/dist/Components/Avatar/AvatarGroup.js +1 -0
  25. package/dist/Components/Avatar/AvatarGroupProps.d.ts +2 -0
  26. package/dist/Components/Avatar/AvatarProps.d.ts +2 -2
  27. package/dist/Components/Avatar/avatarColorway.d.ts +1 -0
  28. package/dist/Components/BagBar/BagBarProps.d.ts +8 -0
  29. package/dist/Components/BulkSelectionBar/BulkSelectionBar.d.ts +1 -0
  30. package/dist/Components/BulkSelectionBar/BulkSelectionBar.js +1 -0
  31. package/dist/Components/BulkSelectionBar/BulkSelectionBarProps.d.ts +6 -0
  32. package/dist/Components/Button/Button.js +1 -0
  33. package/dist/Components/Button/ButtonProps.d.ts +3 -0
  34. package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.d.ts +1 -0
  35. package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +1 -0
  36. package/dist/Components/ButtonGroupIcon/ButtonGroupIconProps.d.ts +19 -0
  37. package/dist/Components/CalendarGrid/CalendarGrid.d.ts +1 -0
  38. package/dist/Components/CalendarGrid/CalendarGrid.js +1 -0
  39. package/dist/Components/CalendarGrid/CalendarGridProps.d.ts +11 -0
  40. package/dist/Components/CalendarGrid/calendarMath.d.ts +13 -0
  41. package/dist/Components/Card/CardProps.d.ts +4 -0
  42. package/dist/Components/Card/PaymentCard/PaymentCard.d.ts +1 -0
  43. package/dist/Components/Card/PaymentCard/PaymentCard.js +1 -0
  44. package/dist/Components/Card/PaymentCard/PaymentCardProps.d.ts +19 -0
  45. package/dist/Components/CartItem/CartItemProps.d.ts +10 -0
  46. package/dist/Components/Checkbox/CheckboxProps.d.ts +1 -0
  47. package/dist/Components/ChoiceCard/ChoiceCard.d.ts +1 -0
  48. package/dist/Components/ChoiceCard/ChoiceCard.js +1 -0
  49. package/dist/Components/ChoiceCard/ChoiceCardGroup.d.ts +1 -0
  50. package/dist/Components/ChoiceCard/ChoiceCardGroup.js +1 -0
  51. package/dist/Components/ChoiceCard/ChoiceCardProps.d.ts +3 -0
  52. package/dist/Components/ConfirmDialog/ConfirmDialog.d.ts +1 -0
  53. package/dist/Components/ConfirmDialog/ConfirmDialog.js +1 -0
  54. package/dist/Components/ConfirmDialog/ConfirmDialogProps.d.ts +5 -0
  55. package/dist/Components/ContactForm/ContactFormProps.d.ts +13 -0
  56. package/dist/Components/CouponField/CouponFieldProps.d.ts +16 -0
  57. package/dist/Components/CustomModulesTable/CustomModulesTable.d.ts +1 -0
  58. package/dist/Components/CustomModulesTable/CustomModulesTable.js +1 -0
  59. package/dist/Components/CustomModulesTable/CustomModulesTableProps.d.ts +17 -0
  60. package/dist/Components/CustomModulesTable/DeleteModuleModal.d.ts +1 -0
  61. package/dist/Components/CustomModulesTable/DeleteModuleModal.js +1 -0
  62. package/dist/Components/CustomModulesTable/EditModuleModal.d.ts +1 -0
  63. package/dist/Components/CustomModulesTable/EditModuleModal.js +1 -0
  64. package/dist/Components/DatePicker/DatePickerProps.d.ts +7 -1
  65. package/dist/Components/DetailSections/DetailSectionsProps.d.ts +22 -0
  66. package/dist/Components/Drawer/DrawerProps.d.ts +1 -1
  67. package/dist/Components/Dropdown/DropdownProps.d.ts +1 -0
  68. package/dist/Components/Editor/EditorProps.d.ts +33 -0
  69. package/dist/Components/Editor/editorTokens.d.ts +3 -0
  70. package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtpProps.d.ts +8 -0
  71. package/dist/Components/FilePreview/FilePreviewProps.d.ts +4 -0
  72. package/dist/Components/FileUploader/FileUploaderProps.d.ts +1 -0
  73. package/dist/Components/FilterBar/FilterBarProps.d.ts +2 -0
  74. package/dist/Components/FormDrawer/FormDrawer.d.ts +1 -0
  75. package/dist/Components/FormDrawer/FormDrawer.js +1 -0
  76. package/dist/Components/FormDrawer/FormDrawerProps.d.ts +3 -0
  77. package/dist/Components/FormField/FormField.d.ts +1 -0
  78. package/dist/Components/FormField/FormField.js +1 -0
  79. package/dist/Components/FormField/FormFieldProps.d.ts +4 -0
  80. package/dist/Components/Header/Header.d.ts +1 -0
  81. package/dist/Components/Header/Header.js +1 -0
  82. package/dist/Components/Header/HeaderActions.d.ts +16 -0
  83. package/dist/Components/Header/HeaderActions.js +1 -0
  84. package/dist/Components/Header/HeaderProps.d.ts +22 -0
  85. package/dist/Components/Header/components/desktopMenu.d.ts +1 -0
  86. package/dist/Components/Header/components/desktopMenu.js +1 -0
  87. package/dist/Components/Header/components/mobileMenu.d.ts +1 -0
  88. package/dist/Components/Header/components/mobileMenu.js +1 -0
  89. package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.d.ts +1 -1
  90. package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.js +1 -1
  91. package/dist/Components/KanbanBoard/KanbanBoardProps.d.ts +11 -0
  92. package/dist/Components/Kbd/Kbd.d.ts +1 -0
  93. package/dist/Components/Kbd/Kbd.js +1 -0
  94. package/dist/Components/Kbd/KbdProps.d.ts +4 -0
  95. package/dist/Components/LauncherTrigger/LauncherTrigger.d.ts +1 -0
  96. package/dist/Components/LauncherTrigger/LauncherTrigger.js +1 -0
  97. package/dist/Components/LauncherTrigger/LauncherTriggerProps.d.ts +1 -0
  98. package/dist/Components/LimitReachedModal/LimitReachedModal.d.ts +1 -0
  99. package/dist/Components/LimitReachedModal/LimitReachedModal.js +1 -0
  100. package/dist/Components/LimitReachedModal/LimitReachedModalProps.d.ts +7 -0
  101. package/dist/Components/Loading/LoadingProps.d.ts +2 -0
  102. package/dist/Components/MediaGallery/MediaGalleryProps.d.ts +7 -1
  103. package/dist/Components/MediaGallery/MediaLightboxProps.d.ts +5 -0
  104. package/dist/Components/MediaViewer/components/MediaAudioPlayer.d.ts +1 -0
  105. package/dist/Components/MediaViewer/components/MediaAudioPlayer.js +1 -0
  106. package/dist/Components/MediaViewer/components/MediaDocumentStage.d.ts +1 -0
  107. package/dist/Components/MediaViewer/components/MediaDocumentStage.js +1 -0
  108. package/dist/Components/MediaViewer/components/MediaImageViewer.d.ts +1 -0
  109. package/dist/Components/MediaViewer/components/MediaImageViewer.js +1 -0
  110. package/dist/Components/MediaViewer/components/MediaVideoPlayer.d.ts +1 -0
  111. package/dist/Components/MediaViewer/components/MediaVideoPlayer.js +1 -0
  112. package/dist/Components/MediaViewer/components/MediaVideoPlayerProps.d.ts +1 -0
  113. package/dist/Components/MediaViewer/hooks/useFileViewer.d.ts +1 -0
  114. package/dist/Components/MediaViewer/mediaItems.d.ts +25 -0
  115. package/dist/Components/MediaViewer/mediaItems.js +5 -0
  116. package/dist/Components/Modal/Modal.d.ts +3 -0
  117. package/dist/Components/Modal/Modal.js +3 -0
  118. package/dist/Components/Modal/ModalProps.d.ts +6 -1
  119. package/dist/Components/MoreItems/MoreItemsProps.d.ts +2 -0
  120. package/dist/Components/MultiSelect/MultiSelect.d.ts +1 -0
  121. package/dist/Components/MultiSelect/MultiSelect.js +1 -0
  122. package/dist/Components/MultiSelect/MultiSelectProps.d.ts +13 -0
  123. package/dist/Components/NavLauncher/NavLauncher.js +3 -0
  124. package/dist/Components/NavLauncher/NavLauncherProps.d.ts +58 -0
  125. package/dist/Components/NavLauncher/engine/engine.d.ts +19 -0
  126. package/dist/Components/NavLauncher/launcherMotion.d.ts +19 -0
  127. package/dist/Components/NavLauncher/launcherMotion.js +15 -0
  128. package/dist/Components/NavLauncher/match.d.ts +34 -0
  129. package/dist/Components/NavigationBar/NavigationBar.d.ts +1 -0
  130. package/dist/Components/NavigationBar/NavigationBar.js +1 -0
  131. package/dist/Components/NavigationBar/NavigationBarProps.d.ts +15 -0
  132. package/dist/Components/NoteTextArea/NoteTextAreaProps.d.ts +2 -1
  133. package/dist/Components/NotificationBell/NotificationBellProps.d.ts +27 -0
  134. package/dist/Components/NotificationBell/notificationHelpers.d.ts +13 -0
  135. package/dist/Components/NumberInput/NumberInputProps.d.ts +1 -1
  136. package/dist/Components/OffersList/OffersListProps.d.ts +12 -1
  137. package/dist/Components/OptionChip/OptionChipProps.d.ts +5 -0
  138. package/dist/Components/OrderStatusTimeline/OrderStatusTimelineProps.d.ts +10 -0
  139. package/dist/Components/OrderSummary/OrderSummaryProps.d.ts +10 -0
  140. package/dist/Components/OrgSwitcher/OrgSwitcher.d.ts +1 -0
  141. package/dist/Components/OrgSwitcher/OrgSwitcher.js +11 -3
  142. package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +1 -0
  143. package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts +52 -0
  144. package/dist/Components/PageHeader/PageHeaderProps.d.ts +1 -0
  145. package/dist/Components/Pagination/PaginationProps.d.ts +4 -0
  146. package/dist/Components/PaymentOption/PaymentOptionProps.d.ts +9 -0
  147. package/dist/Components/PincodeChecker/PincodeCheckerProps.d.ts +13 -0
  148. package/dist/Components/PlanPill/PlanPill.d.ts +1 -0
  149. package/dist/Components/PlanPill/PlanPill.js +1 -0
  150. package/dist/Components/PlanPill/PlanPillProps.d.ts +1 -0
  151. package/dist/Components/PriceBlock/PriceBlockProps.d.ts +6 -0
  152. package/dist/Components/ProductBadges/ProductBadgesProps.d.ts +3 -0
  153. package/dist/Components/ProductCard/ProductCardProps.d.ts +10 -0
  154. package/dist/Components/ProductCard/QuickAddSheetProps.d.ts +8 -0
  155. package/dist/Components/ProductDetails/ProductDetailsProps.d.ts +25 -1
  156. package/dist/Components/ProfileCard/ProfileCardProps.d.ts +1 -1
  157. package/dist/Components/QuantityStepper/QuantityStepperProps.d.ts +9 -0
  158. package/dist/Components/QueryState/QueryStateProps.d.ts +2 -0
  159. package/dist/Components/RadioButton/RadioButtonProps.d.ts +1 -1
  160. package/dist/Components/Rating/RatingProps.d.ts +2 -0
  161. package/dist/Components/Reorder/ReorderProps.d.ts +6 -0
  162. package/dist/Components/ReviewList/ReviewListProps.d.ts +21 -0
  163. package/dist/Components/ReviewSummary/ReviewSummaryProps.d.ts +8 -1
  164. package/dist/Components/RolesPermission/RolesPermissionProps.d.ts +59 -1
  165. package/dist/Components/SearchSelect/SearchSelect.js +17 -5
  166. package/dist/Components/SearchSelect/SearchSelectProps.d.ts +12 -0
  167. package/dist/Components/SectionRail/SectionRail.d.ts +1 -0
  168. package/dist/Components/SectionRail/SectionRail.js +1 -0
  169. package/dist/Components/SectionRail/SectionRailProps.d.ts +4 -0
  170. package/dist/Components/SegmentedControl/SegmentedControlProps.d.ts +4 -0
  171. package/dist/Components/Select/Select.styles.js +25 -0
  172. package/dist/Components/Select/SelectNative.d.ts +10 -0
  173. package/dist/Components/Select/SelectNative.js +11 -4
  174. package/dist/Components/Select/SelectPopup.js +45 -14
  175. package/dist/Components/Select/SelectProps.d.ts +46 -2
  176. package/dist/Components/Select/selectKeyboardRing.d.ts +2 -0
  177. package/dist/Components/Select/selectKeyboardRing.js +7 -0
  178. package/dist/Components/Select/selectRowInk.d.ts +14 -0
  179. package/dist/Components/Select/selectRowInk.js +41 -0
  180. package/dist/Components/SelectSearch/SelectSearch.js +8 -2
  181. package/dist/Components/SelectSearch/SelectSearchProps.d.ts +9 -0
  182. package/dist/Components/SelectV2/SelectV2Props.d.ts +7 -0
  183. package/dist/Components/SideBar/SecondaryBar.d.ts +1 -0
  184. package/dist/Components/SideBar/SecondaryBar.js +1 -0
  185. package/dist/Components/SideBar/SideBar.d.ts +1 -0
  186. package/dist/Components/SideBar/SideBar.js +1 -0
  187. package/dist/Components/SideBar/SideBarProps.d.ts +32 -0
  188. package/dist/Components/SideBar/sidebarAccentColors.d.ts +2 -0
  189. package/dist/Components/SignInActivityTable/SignInActivityTable.d.ts +1 -0
  190. package/dist/Components/SignInActivityTable/SignInActivityTable.js +1 -0
  191. package/dist/Components/SignInActivityTable/SignInActivityTableProps.d.ts +2 -0
  192. package/dist/Components/SpecTable/SpecTableProps.d.ts +9 -0
  193. package/dist/Components/StageProgress/StageProgressProps.d.ts +2 -0
  194. package/dist/Components/StageProgress/StepperStage.d.ts +1 -0
  195. package/dist/Components/StageProgress/StepperStage.js +1 -0
  196. package/dist/Components/StatCard/StatCardProps.d.ts +1 -0
  197. package/dist/Components/StatusTag/StatusTagProps.d.ts +4 -0
  198. package/dist/Components/StickyBuyBar/StickyBuyBar.d.ts +1 -0
  199. package/dist/Components/StickyBuyBar/StickyBuyBar.js +1 -0
  200. package/dist/Components/StickyBuyBar/StickyBuyBarProps.d.ts +6 -0
  201. package/dist/Components/StockStatus/StockStatusProps.d.ts +2 -0
  202. package/dist/Components/Switch/SwitchProps.d.ts +4 -0
  203. package/dist/Components/Table/TableProps.d.ts +20 -1
  204. package/dist/Components/Table/components/TableBody.js +10 -1
  205. package/dist/Components/Table/components/rowFocusRing.d.ts +21 -0
  206. package/dist/Components/Table/components/rowFocusRing.js +20 -0
  207. package/dist/Components/Table/variants/tokens.d.ts +4 -0
  208. package/dist/Components/Tabs/TabsContext.d.ts +14 -0
  209. package/dist/Components/Tabs/TabsProps.d.ts +18 -0
  210. package/dist/Components/Tabs/components/CountBadge.d.ts +4 -0
  211. package/dist/Components/Tabs/components/TabPanels.d.ts +1 -0
  212. package/dist/Components/Tabs/components/TabPanels.js +1 -0
  213. package/dist/Components/Tabs/tabStyles.d.ts +4 -0
  214. package/dist/Components/Tag/TagProps.d.ts +3 -0
  215. package/dist/Components/TagInput/TagInput.d.ts +1 -0
  216. package/dist/Components/TagInput/TagInput.js +1 -0
  217. package/dist/Components/TagInput/TagInputProps.d.ts +2 -0
  218. package/dist/Components/TimePicker/TimePicker.d.ts +1 -0
  219. package/dist/Components/TimePicker/TimePicker.js +1 -0
  220. package/dist/Components/TimePicker/TimePickerProps.d.ts +2 -0
  221. package/dist/Components/Timeline/TimelineProps.d.ts +7 -1
  222. package/dist/Components/Toggle/TableToggleProps.d.ts +2 -0
  223. package/dist/Components/ToggleSwitch/ToggleSwitchProps.d.ts +2 -0
  224. package/dist/Components/ToolTip/OverflowToolTip.d.ts +1 -0
  225. package/dist/Components/ToolTip/OverflowToolTip.js +1 -1
  226. package/dist/Components/ToolTip/ToolTipProps.d.ts +1 -0
  227. package/dist/Components/TrustBadges/TrustBadgesProps.d.ts +4 -0
  228. package/dist/Components/UpgradeButton/UpgradeButton.d.ts +1 -0
  229. package/dist/Components/UpgradeButton/UpgradeButton.js +1 -0
  230. package/dist/Components/UpgradeButton/UpgradeButtonProps.d.ts +4 -1
  231. package/dist/Components/UserDetails/UserDetailsProps.d.ts +58 -0
  232. package/dist/Components/VariantSelector/VariantSelectorProps.d.ts +4 -0
  233. package/dist/Components/WishlistToggle/WishlistToggleProps.d.ts +4 -0
  234. package/dist/Components/WizardDialog/WizardDialogProps.d.ts +15 -0
  235. package/dist/Components/WizardDialog/wizardSteps.d.ts +17 -5
  236. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.d.ts +1 -0
  237. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +1 -1
  238. package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts +2 -0
  239. package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +2 -1
  240. package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +13 -0
  241. package/dist/Theme/tokens/brands/index.d.ts +1 -1
  242. package/dist/Theme/tokens/brands/index.js +1 -1
  243. package/dist/Theme/tokens/builders/rowStates.d.ts +6 -0
  244. package/dist/Theme/tokens/builders/rowStates.js +19 -1
  245. package/dist/Theme/tokens/builders/scrollShadow.d.ts +1 -0
  246. package/dist/Theme/tokens/builders/scrollShadow.js +16 -0
  247. package/dist/esm/Components/AppSwitcher/AppSwitcher.js +1 -0
  248. package/dist/esm/Components/AppearanceSettings/AppearanceSettings.js +1 -0
  249. package/dist/esm/Components/AudioRecorder/AudioRecorder.js +1 -0
  250. package/dist/esm/Components/Avatar/AvatarGroup.js +1 -0
  251. package/dist/esm/Components/BulkSelectionBar/BulkSelectionBar.js +1 -0
  252. package/dist/esm/Components/Button/Button.js +1 -0
  253. package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIcon.js +1 -0
  254. package/dist/esm/Components/CalendarGrid/CalendarGrid.js +1 -0
  255. package/dist/esm/Components/Card/PaymentCard/PaymentCard.js +1 -0
  256. package/dist/esm/Components/ChoiceCard/ChoiceCard.js +1 -0
  257. package/dist/esm/Components/ChoiceCard/ChoiceCardGroup.js +1 -0
  258. package/dist/esm/Components/ConfirmDialog/ConfirmDialog.js +1 -0
  259. package/dist/esm/Components/CustomModulesTable/CustomModulesTable.js +1 -0
  260. package/dist/esm/Components/CustomModulesTable/DeleteModuleModal.js +1 -0
  261. package/dist/esm/Components/CustomModulesTable/EditModuleModal.js +1 -0
  262. package/dist/esm/Components/FormDrawer/FormDrawer.js +1 -0
  263. package/dist/esm/Components/FormField/FormField.js +1 -0
  264. package/dist/esm/Components/Header/Header.js +1 -0
  265. package/dist/esm/Components/Header/HeaderActions.js +1 -0
  266. package/dist/esm/Components/Header/components/desktopMenu.js +1 -0
  267. package/dist/esm/Components/Header/components/mobileMenu.js +1 -0
  268. package/dist/esm/Components/KanbanBoard/KanbanActions/KanbanActions.js +1 -1
  269. package/dist/esm/Components/Kbd/Kbd.js +1 -0
  270. package/dist/esm/Components/LauncherTrigger/LauncherTrigger.js +1 -0
  271. package/dist/esm/Components/LimitReachedModal/LimitReachedModal.js +1 -0
  272. package/dist/esm/Components/MediaViewer/components/MediaAudioPlayer.js +1 -0
  273. package/dist/esm/Components/MediaViewer/components/MediaDocumentStage.js +1 -0
  274. package/dist/esm/Components/MediaViewer/components/MediaImageViewer.js +1 -0
  275. package/dist/esm/Components/MediaViewer/components/MediaVideoPlayer.js +1 -0
  276. package/dist/esm/Components/MediaViewer/mediaItems.js +5 -0
  277. package/dist/esm/Components/Modal/Modal.js +3 -0
  278. package/dist/esm/Components/MultiSelect/MultiSelect.js +1 -0
  279. package/dist/esm/Components/NavLauncher/NavLauncher.js +4 -1
  280. package/dist/esm/Components/NavLauncher/launcherMotion.js +11 -0
  281. package/dist/esm/Components/NavigationBar/NavigationBar.js +1 -0
  282. package/dist/esm/Components/OrgSwitcher/OrgSwitcher.js +13 -5
  283. package/dist/esm/Components/PlanPill/PlanPill.js +1 -0
  284. package/dist/esm/Components/SearchSelect/SearchSelect.js +19 -7
  285. package/dist/esm/Components/SectionRail/SectionRail.js +1 -0
  286. package/dist/esm/Components/Select/Select.styles.js +26 -1
  287. package/dist/esm/Components/Select/SelectNative.js +12 -5
  288. package/dist/esm/Components/Select/SelectPopup.js +47 -16
  289. package/dist/esm/Components/Select/selectKeyboardRing.js +3 -0
  290. package/dist/esm/Components/Select/selectRowInk.js +33 -0
  291. package/dist/esm/Components/SelectSearch/SelectSearch.js +10 -4
  292. package/dist/esm/Components/SideBar/SecondaryBar.js +1 -0
  293. package/dist/esm/Components/SideBar/SideBar.js +1 -0
  294. package/dist/esm/Components/SignInActivityTable/SignInActivityTable.js +1 -0
  295. package/dist/esm/Components/StageProgress/StepperStage.js +1 -0
  296. package/dist/esm/Components/StickyBuyBar/StickyBuyBar.js +1 -0
  297. package/dist/esm/Components/Table/components/TableBody.js +10 -1
  298. package/dist/esm/Components/Table/components/rowFocusRing.js +16 -0
  299. package/dist/esm/Components/Tabs/components/TabPanels.js +1 -0
  300. package/dist/esm/Components/TagInput/TagInput.js +1 -0
  301. package/dist/esm/Components/TimePicker/TimePicker.js +1 -0
  302. package/dist/esm/Components/ToolTip/OverflowToolTip.js +1 -1
  303. package/dist/esm/Components/UpgradeButton/UpgradeButton.js +1 -0
  304. package/dist/esm/Components/WorkspaceWindow/WorkspaceTrayPreview.js +1 -1
  305. package/dist/esm/Components/WorkspaceWindow/WorkspaceWindow.js +2 -1
  306. package/dist/esm/Theme/tokens/brands/index.js +1 -1
  307. package/dist/esm/Theme/tokens/builders/rowStates.js +18 -1
  308. package/dist/esm/Theme/tokens/builders/scrollShadow.js +15 -0
  309. package/package.json +1 -1
@@ -14,8 +14,10 @@ import { reducedMotionSx } from "../../Theme/chakra/motion.js";
14
14
  import { insetFocusRingShadow } from "../../Theme/chakra/focusRing.styles.js";
15
15
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
16
16
  import { raisedRule } from "../../Theme/tokens/builders/surfaceRaised.js";
17
- import { listRowBackgrounds } from "../../Theme/tokens/builders/rowStates.js";
18
- import { optionRowCursorSx, optionRowDescriptionInk, optionRowInk, optionRowWeight } from "../Select/optionRowInk.js";
17
+ import { selectRowBackgrounds } from "../../Theme/tokens/builders/rowStates.js";
18
+ import { optionRowWeight } from "../Select/optionRowInk.js";
19
+ import { keyboardRingShadow } from "../Select/selectKeyboardRing.js";
20
+ import { selectRowDescriptionInk, selectRowInk } from "../Select/selectRowInk.js";
19
21
  import { useExclusiveOverlay } from "../../Hooks/useExclusiveOverlay.js";
20
22
  import { PlusIcon, Check } from "lucide-react";
21
23
  import { onActivationKey } from "../Common/activationKey.js";
@@ -23,8 +25,12 @@ import { useOutsideMouseDown } from "../../Hooks/useOutsideMouseDown.js";
23
25
  const ROW_TRANSITION = transitionFor(["background-color"]);
24
26
  const RenderOptions = ({ isOptionLoading, filteredOptions, loadingText, handleOptionClick, isProfile, isColorOptions, isOptionSelected, activeIndex, optionRefs, size, isMultipleSelect, }) => {
25
27
  const theme = useCustomTheme();
26
- const rowBackgrounds = useMemo(() => listRowBackgrounds(theme.colors), [theme.colors]);
28
+ const rowBackgrounds = useMemo(() => selectRowBackgrounds(theme.colors), [theme.colors]);
27
29
  const spec = optionRowSpec(size);
30
+ const keyboardRing = {
31
+ outline: "2px solid transparent",
32
+ boxShadow: keyboardRingShadow(rowBackgrounds.keyboardRing),
33
+ };
28
34
  if (isOptionLoading) {
29
35
  return (_jsxs(VStack, { py: 2, children: [_jsx(Spinner, { size: "sm", color: theme.colors.accentText }), _jsx(Text, { color: theme.colors.accentText, children: loadingText })] }));
30
36
  }
@@ -35,7 +41,7 @@ const RenderOptions = ({ isOptionLoading, filteredOptions, loadingText, handleOp
35
41
  const isActive = index === activeIndex;
36
42
  return (_jsxs(Box, { as: "button", type: "button", ref: (el) => {
37
43
  optionRefs.current[index] = el;
38
- }, role: "option", "aria-selected": selected, tabIndex: isActive ? 0 : -1, w: `calc(100% - 2 * ${spec.mx})`, minH: spec.minH, textAlign: "left", border: "none", fontFamily: "inherit", bg: "transparent", mx: spec.mx, px: spec.px, py: spec.py, borderRadius: OPTION_ROW_RADIUS, fontSize: spec.fontSize, cursor: "pointer", color: optionRowInk(theme.colors, isSingleSelected), fontWeight: optionRowWeight(isSingleSelected), transition: ROW_TRANSITION, sx: reducedMotionSx(), ...optionRowCursorSx(rowBackgrounds), onClick: () => handleOptionClick(option), onKeyDown: onActivationKey(() => handleOptionClick(option)), display: "flex", alignItems: "center", gap: spec.gap, children: [isProfile && (_jsx(Box, { children: _jsx(Avatar, { size: spec.avatarSize, name: option.label.toLocaleUpperCase(), src: option.profileUrl ? option.profileUrl : undefined }) })), isColorOptions && (_jsx(Box, { width: "0.8rem", height: "0.8rem", content: "", backgroundColor: option === null || option === void 0 ? void 0 : option.color, borderRadius: "full" })), _jsxs(Box, { flex: 1, minW: 0, children: [_jsx(Box, { children: option.label }), option.email && (_jsx(Box, { fontSize: spec.descriptionFontSize, color: optionRowDescriptionInk(theme.colors), children: option.email }))] }), isSingleSelected && (_jsx(Box, { as: Check, size: spec.iconSize, color: theme.colors.accentText, flexShrink: 0 }))] }, option.id));
44
+ }, role: "option", "aria-selected": selected, tabIndex: isActive ? 0 : -1, w: `calc(100% - 2 * ${spec.mx})`, minH: spec.minH, textAlign: "left", border: "none", fontFamily: "inherit", bg: selected ? rowBackgrounds.selected : "transparent", mx: spec.mx, px: spec.px, py: spec.py, borderRadius: OPTION_ROW_RADIUS, fontSize: spec.fontSize, cursor: "pointer", color: selectRowInk(theme.colors, isSingleSelected), fontWeight: optionRowWeight(isSingleSelected), transition: ROW_TRANSITION, sx: reducedMotionSx(), _hover: { bg: selected ? rowBackgrounds.selectedActive : rowBackgrounds.active }, _focus: { bg: selected ? rowBackgrounds.selectedActive : rowBackgrounds.active }, _focusVisible: keyboardRing, onClick: () => handleOptionClick(option), onKeyDown: onActivationKey(() => handleOptionClick(option)), display: "flex", alignItems: "center", gap: spec.gap, children: [isProfile && (_jsx(Box, { children: _jsx(Avatar, { size: spec.avatarSize, name: option.label.toLocaleUpperCase(), src: option.profileUrl ? option.profileUrl : undefined }) })), isColorOptions && (_jsx(Box, { width: "0.8rem", height: "0.8rem", content: "", backgroundColor: option === null || option === void 0 ? void 0 : option.color, borderRadius: "full" })), _jsxs(Box, { flex: 1, minW: 0, children: [_jsx(Box, { children: option.label }), option.email && (_jsx(Box, { fontSize: spec.descriptionFontSize, color: selectRowDescriptionInk(theme.colors), children: option.email }))] }), isSingleSelected && (_jsx(Box, { as: Check, size: spec.iconSize, color: theme.colors.accentText, flexShrink: 0 }))] }, option.id));
39
45
  }) }));
40
46
  }
41
47
  return (_jsx(Text, { px: 4, py: 2, color: theme.colors.textMuted, children: "No options found" }));
@@ -67,6 +67,7 @@ const ExpandedItem = ({ item, isActive, itemFontSize, onItemClick }) => {
67
67
  }, borderLeft: "2px solid", borderLeftColor: isActive ? theme.colors.sidebar.activeIcon : "transparent", transition: SIDEBAR_BG_TRANSITION, sx: sidebarFocusStyles(theme.colors), children: [_jsxs(Flex, { align: "center", gap: 2, flex: "1", minW: 0, overflow: "hidden", children: [_jsx(Icon, { as: item.icon, fontSize: SIDEBAR_ROW.iconSize, flexShrink: 0, color: isActive ? activeAccent.icon : theme.colors.sidebar.mutedIcon, _groupHover: isActive ? undefined : { color: theme.colors.white }, transition: SIDEBAR_INK_TRANSITION }), _jsx(Box, { flex: "1", minW: 0, children: _jsx(OverflowTooltipText, { placement: "right", maxWidth: "100%", fontSize: itemFontSize, fontWeight: isActive ? 600 : 500, color: isActive ? activeAccent.label : theme.colors.white, _groupHover: isActive ? undefined : { color: theme.colors.white }, as: "p", children: item.title }) })] }), item.locked ? (_jsx(Icon, { as: LockKeyhole, fontSize: "sm", flexShrink: 0, color: theme.colors.sidebar.mutedIcon })) : (badgeVal != null && (_jsx(Badge, { ...softBadge(theme.colors, colorScheme, sidebarRowPeak(theme.colors.sidebar.background[500])), fontSize: "xs", variant: variant, borderRadius: radius, children: badgeVal })))] }));
68
68
  return item.locked && item.lockedReason ? (_jsx(ToolTip, { label: item.lockedReason, placement: "top", children: row })) : (row);
69
69
  };
70
+ /** Secondary flyout panel beside the main rail, listing the active menu's `secondaryItems`; collapses to icons. */
70
71
  const SecondaryBar = ({ items = [], defaultCollapsed = true, collapsedWidth = "3.5rem", expandedWidth = "10rem", headerFontSize = SIDEBAR_ROW.fontSize, itemFontSize = SIDEBAR_ROW.fontSize, selected, onItemClick, title, icon, }) => {
71
72
  const theme = useCustomTheme();
72
73
  const activeAccent = getSidebarActiveAccent(theme.colors);
@@ -122,6 +122,7 @@ const FooterControls = ({ toggle, overlay, mobileNav, onToggleCollapse, onToggle
122
122
  return shell(_jsxs(_Fragment, { children: [_jsx(ControlCell, { onClick: onToggleCollapse, ariaLabel: toggle ? "Expand sidebar" : undefined, label: toggle ? undefined : "Collapse", children: toggle ? (_jsx(ArrowRightToLine, { size: 14, color: iconColor })) : (_jsx(ArrowLeftToLine, { size: 14, color: iconColor })) }), onToggleMobileNav && (_jsx(ControlCell, { onClick: onToggleMobileNav, ariaLabel: toggle ? "Show sidebar in overlay mode" : undefined, label: toggle ? undefined : "Hide", children: _jsx(Maximize2, { size: 14, color: iconColor }) }))] }));
123
123
  };
124
124
  // --- Main Sidebar component ---
125
+ /** Left navigation rail: collapsible inline from `lg`, a slide-in overlay below it, with menus, pinned shortcuts, submenus, a secondary flyout and a footer. */
125
126
  export default function Sidebar({ menus, activeMenu, handleMenuClick, handleSecondaryNavClick, toggle, changeToggle, logo, companyName, companySubtitle, user, isDisableAddNew = false, onAddNewClick, selectedSubMenu, selectedSecondaryItem, isLoading, loadingLines, open = true, otherApps, mobileOpen = false, onMobileClose, mobileNav = false, onToggleMobileNav, peekOpen = false, onPeekEnd, pinnedItems, pinnedLabel, onUnpin, activePinnedId, pinnedLimit, pinnedLabels, collapseTransition = { speed: "base" }, autoCollapse = true, }) {
126
127
  var _a, _b;
127
128
  const theme = useCustomTheme();
@@ -16,6 +16,7 @@ const DEFAULT_LABELS = {
16
16
  recentActivity: "Recent Activity",
17
17
  noActivity: "No recent sign-in activity",
18
18
  };
19
+ /** Card listing recent sign-in devices (browser, device, activity) with loading and empty states. */
19
20
  const SignInActivityTable = ({ devices, isLoading = false, labels: labelOverrides, }) => {
20
21
  const { colors } = useCustomTheme();
21
22
  const titleId = useId();
@@ -13,6 +13,7 @@ const sizeMap = {
13
13
  md: { circle: "30px", font: "0.8rem", label: "0.8rem", icon: 14, minW: "104px" },
14
14
  lg: { circle: "38px", font: "0.95rem", label: "0.9rem", icon: 16, minW: "124px" },
15
15
  };
16
+ /** Renders one numbered circle with connector lines and a wrapped label for variant="stepper". */
16
17
  const StepperStage = ({ label, number, state, size = "md", colorScheme = "primary", onClick, isReadOnly = false, isDisabled, disabled: legacyDisabled = false, showCheck = true, isFirst, isLast, leftDone, rightDone, scrollIntoViewWhenActive = true, asListItem = false, }) => {
17
18
  const disabled = isDisabled !== null && isDisabled !== void 0 ? isDisabled : legacyDisabled;
18
19
  const theme = useCustomTheme();
@@ -29,6 +29,7 @@ const NO_BLUR_SUPPORT = "@supports not ((backdrop-filter: blur(1px)) or (-webkit
29
29
  const SAFE_BOTTOM = "calc(0.75rem + env(safe-area-inset-bottom, 0px))";
30
30
  const pop = keyframes `0% { transform: scale(0.4); opacity: 0; } 60% { transform: scale(1.2); opacity: 1; } 100% { transform: scale(1); }`;
31
31
  const STACK_ORDER = ["add", "select-option", "notify", "added", "go-to-bag"];
32
+ /** Bottom bar with price and one primary action whose mode, slide-in visibility and quantity stepper are all controlled. */
32
33
  const StickyBuyBar = ({ price, mrp, mode = "add", visible = true, position = "sticky", isLoading = false, quantity, onQuantityChange, maxQuantity, onAddToBag, onSelectOption, onNotify, onGoToBag, onBuyNow, itemLabel, currency, locale, labels, "data-testid": testId, }) => {
33
34
  const { colors } = useCustomTheme();
34
35
  const reduced = usePrefersReducedMotion();
@@ -19,6 +19,8 @@ import { reducedMotionSx } from "../../../Theme/chakra/motion.js";
19
19
  import { DETAIL_SLOT_PX, RowDetailRow, RowDetailToggle, detailDomIds } from "./rowDetail.js";
20
20
  import { useRowMeasurer } from "./rowMeasurer.js";
21
21
  import { BORDER_WIDTHS } from "../../../Theme/tokens/primitives/borderWidths.js";
22
+ import { onActivationKey } from "../../Common/activationKey.js";
23
+ import { rowFocusRingSx } from "./rowFocusRing.js";
22
24
  const getRowId = (row) => row.id;
23
25
  const getRowContent = (row) => typeof row.content === "function"
24
26
  ? row.content
@@ -77,6 +79,12 @@ const TableRow = React.memo(({ row, rowIndex, isChecked, isExpanded, isContent,
77
79
  });
78
80
  }
79
81
  }, [row, onRowClick]);
82
+ const keyboardHeader = onRowClick && !isLoading ? columns.find((c) => !c.isHidden && !c.node) : undefined;
83
+ const handleRowKeyDown = useCallback((event) => {
84
+ if (event.target !== event.currentTarget || event.repeat || !keyboardHeader)
85
+ return;
86
+ onActivationKey(() => handleCellClick(keyboardHeader))(event);
87
+ }, [keyboardHeader, handleCellClick]);
80
88
  const variant = useTableVariant();
81
89
  const firstDataColIndex = columns.findIndex((c) => !c.isHidden);
82
90
  const accentSx = accentColor ? `inset 3px 0 0 ${accentColor}` : undefined;
@@ -87,6 +95,7 @@ const TableRow = React.memo(({ row, rowIndex, isChecked, isExpanded, isContent,
87
95
  : accentSx;
88
96
  const restsOnIndex = variant.slot.rest === "index";
89
97
  const rowSx = {
98
+ ...(keyboardHeader ? rowFocusRingSx(theme.colors) : {}),
90
99
  ...(variant.row.hoverScope === "row"
91
100
  ? { "&:hover > td[data-hoverable='true']": { backgroundColor: variant.row.hoverBg } }
92
101
  : {}),
@@ -113,7 +122,7 @@ const TableRow = React.memo(({ row, rowIndex, isChecked, isExpanded, isContent,
113
122
  const chromeHoverable = rowStyle ? "false" : "true";
114
123
  const rowContent = getRowContent(row);
115
124
  const restBg = isStriped ? variant.row.stripeBg : theme.colors.background[50];
116
- return (_jsxs(React.Fragment, { children: [_jsxs(Tr, { ref: mainRowRef, "aria-rowindex": ariaRowIndex, opacity: isLoading ? 0.4 : 1, pointerEvents: isLoading ? "none" : "auto", transition: transitionFor(["opacity"], "base"), sx: { ...rowSx, ...reducedMotionSx() }, children: [isContent && (_jsx(Td, { w: "6", p: 0, fontSize: "sm", background: isChecked ? selectedFrozenBg : frozenCellBg, color: freezedTextColor, position: "sticky", borderBottom: borderStyle, boxShadow: leadSx, boxSizing: "border-box", "data-hoverable": chromeHoverable, left: "0px", zIndex: 1, className: "columns sticky-columns", children: hasContent && (_jsx(IconButton, { "aria-label": isExpanded ? "Collapse row" : "Expand row", color: theme.colors.textMuted, icon: isExpanded ? (_jsx(ChevronDown, {})) : (_jsx(ChevronRight, {})), _hover: { transform: "scale(1.1)" }, size: "sm", onClick: () => toggleRowExpansion(rowIndex), variant: "ghost" })) })), isCheckbox && (_jsx(Td, { w: variant.slot.width, minW: variant.slot.width, px: variant.slot.centered ? 0 : undefined, textAlign: variant.slot.centered ? "center" : undefined, fontSize: "sm", fontWeight: 600, color: theme.colors.background[50], textTransform: "capitalize", background: isChecked ? selectedFrozenBg : frozenCellBg, position: "sticky", borderBottom: borderStyle, boxShadow: !isContent ? leadSx : undefined, "data-hoverable": chromeHoverable, boxSizing: "border-box", left: "0px", zIndex: 1, className: "columns sticky-columns", children: _jsxs(Box, { display: restsOnIndex ? "grid" : undefined, placeItems: "center", children: [restsOnIndex && (_jsx(Box, { as: "span", className: "table-slot-index", gridArea: "1 / 1", color: variant.slot.indexInk, fontSize: "0.6875rem", fontWeight: 500, transition: transitionFor(["opacity"]), sx: { fontVariantNumeric: "tabular-nums", ...reducedMotionSx() }, children: rowIndex + 1 })), _jsx(Box, { as: "span", className: restsOnIndex ? "table-slot-box" : undefined, gridArea: restsOnIndex ? "1 / 1" : undefined, display: "flex", alignItems: "center", justifyContent: "center", transition: transitionFor(["opacity"]), sx: reducedMotionSx(), children: _jsx(CheckBox, { "aria-label": `Select row ${rowIndex + 1}`, onChange: () => handleCheckbox(getRowId(row)), isChecked: isChecked }) })] }) })), rowDetail && detailIds && (_jsx(Td, { w: `${DETAIL_SLOT_PX}px`, minW: `${DETAIL_SLOT_PX}px`, maxW: `${DETAIL_SLOT_PX}px`, p: 0, textAlign: "center", background: isChecked ? selectedFrozenBg : frozenCellBg, position: "sticky", borderBottom: borderStyle, boxShadow: !isContent && !isCheckbox ? leadSx : undefined, "data-hoverable": chromeHoverable, boxSizing: "border-box", left: `${detailLeft}px`, zIndex: 1, className: "columns sticky-columns", children: hasDetail && (_jsx(RowDetailToggle, { isOpen: detailOpen, detailId: detailIds.detailId, color: theme.colors.textMuted, theme: theme, onToggle: () => rowDetail.toggle(getRowId(row)) })) })), columns.map((header, headerIndex) => {
125
+ return (_jsxs(React.Fragment, { children: [_jsxs(Tr, { ref: mainRowRef, "aria-rowindex": ariaRowIndex, tabIndex: keyboardHeader ? 0 : undefined, onKeyDown: keyboardHeader ? handleRowKeyDown : undefined, opacity: isLoading ? 0.4 : 1, pointerEvents: isLoading ? "none" : "auto", transition: transitionFor(["opacity"], "base"), sx: { ...rowSx, ...reducedMotionSx() }, children: [isContent && (_jsx(Td, { w: "6", p: 0, fontSize: "sm", background: isChecked ? selectedFrozenBg : frozenCellBg, color: freezedTextColor, position: "sticky", borderBottom: borderStyle, boxShadow: leadSx, boxSizing: "border-box", "data-hoverable": chromeHoverable, left: "0px", zIndex: 1, className: "columns sticky-columns", children: hasContent && (_jsx(IconButton, { "aria-label": isExpanded ? "Collapse row" : "Expand row", color: theme.colors.textMuted, icon: isExpanded ? (_jsx(ChevronDown, {})) : (_jsx(ChevronRight, {})), _hover: { transform: "scale(1.1)" }, size: "sm", onClick: () => toggleRowExpansion(rowIndex), variant: "ghost" })) })), isCheckbox && (_jsx(Td, { w: variant.slot.width, minW: variant.slot.width, px: variant.slot.centered ? 0 : undefined, textAlign: variant.slot.centered ? "center" : undefined, fontSize: "sm", fontWeight: 600, color: theme.colors.background[50], textTransform: "capitalize", background: isChecked ? selectedFrozenBg : frozenCellBg, position: "sticky", borderBottom: borderStyle, boxShadow: !isContent ? leadSx : undefined, "data-hoverable": chromeHoverable, boxSizing: "border-box", left: "0px", zIndex: 1, className: "columns sticky-columns", children: _jsxs(Box, { display: restsOnIndex ? "grid" : undefined, placeItems: "center", children: [restsOnIndex && (_jsx(Box, { as: "span", className: "table-slot-index", gridArea: "1 / 1", color: variant.slot.indexInk, fontSize: "0.6875rem", fontWeight: 500, transition: transitionFor(["opacity"]), sx: { fontVariantNumeric: "tabular-nums", ...reducedMotionSx() }, children: rowIndex + 1 })), _jsx(Box, { as: "span", className: restsOnIndex ? "table-slot-box" : undefined, gridArea: restsOnIndex ? "1 / 1" : undefined, display: "flex", alignItems: "center", justifyContent: "center", transition: transitionFor(["opacity"]), sx: reducedMotionSx(), children: _jsx(CheckBox, { "aria-label": `Select row ${rowIndex + 1}`, onChange: () => handleCheckbox(getRowId(row)), isChecked: isChecked }) })] }) })), rowDetail && detailIds && (_jsx(Td, { w: `${DETAIL_SLOT_PX}px`, minW: `${DETAIL_SLOT_PX}px`, maxW: `${DETAIL_SLOT_PX}px`, p: 0, textAlign: "center", background: isChecked ? selectedFrozenBg : frozenCellBg, position: "sticky", borderBottom: borderStyle, boxShadow: !isContent && !isCheckbox ? leadSx : undefined, "data-hoverable": chromeHoverable, boxSizing: "border-box", left: `${detailLeft}px`, zIndex: 1, className: "columns sticky-columns", children: hasDetail && (_jsx(RowDetailToggle, { isOpen: detailOpen, detailId: detailIds.detailId, color: theme.colors.textMuted, theme: theme, onToggle: () => rowDetail.toggle(getRowId(row)) })) })), columns.map((header, headerIndex) => {
117
126
  var _a, _b, _c, _d;
118
127
  if (header.isHidden)
119
128
  return null;
@@ -0,0 +1,16 @@
1
+ import { FOCUS_HALO_WIDTH, FOCUS_RING_WIDTH } from "../../../Theme/chakra/focusRing.styles.js";
2
+ const TOP = [0, 1];
3
+ const BOTTOM = [0, -1];
4
+ const LEFT = [1, 0];
5
+ const RIGHT = [-1, 0];
6
+ const RING_BAND = FOCUS_RING_WIDTH - FOCUS_HALO_WIDTH;
7
+ const band = ([x, y], width, color) => `inset ${x * width}px ${y * width}px 0 0 ${color}`;
8
+ const edgeShadow = (edges, { ring, halo }) => [...edges.map((edge) => band(edge, RING_BAND, ring)), ...edges.map((edge) => band(edge, FOCUS_RING_WIDTH, halo))].join(", ");
9
+ // NOTE: each cell draws its slice, so sticky cells keep the ring above scrolled content.
10
+ export const rowFocusRingSx = (colors) => ({
11
+ "&:focus-visible": { outline: "2px solid transparent", outlineOffset: "-2px" },
12
+ "&:focus-visible > td": { boxShadow: edgeShadow([TOP, BOTTOM], colors.focusRing) },
13
+ "&:focus-visible > td:first-of-type": { boxShadow: edgeShadow([TOP, BOTTOM, LEFT], colors.focusRing) },
14
+ "&:focus-visible > td:last-of-type": { boxShadow: edgeShadow([TOP, BOTTOM, RIGHT], colors.focusRing) },
15
+ "&:focus-visible > td:only-of-type": { boxShadow: edgeShadow([TOP, BOTTOM, LEFT, RIGHT], colors.focusRing) },
16
+ });
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect } from "react";
3
3
  import { Box } from "@chakra-ui/react";
4
4
  import { useTabsContext } from "../TabsContext.js";
5
+ /** Container for `TabPanel`s in the composed API; registers with the nearest `Tabs` so tabs link to their panels. */
5
6
  const TabPanels = ({ children }) => {
6
7
  const ctx = useTabsContext();
7
8
  useEffect(() => {
@@ -13,6 +13,7 @@ import { useFieldIds } from "../Common/useFieldIds.js";
13
13
  import { getSearchSelectSizeStyles } from "../SearchSelect/searchSelectSize.js";
14
14
  import Tag from "../Tag/Tag.js";
15
15
  import { addTags, hasSeparator, resolveTagInputLabels, splitEntries } from "./tagEntries.js";
16
+ /** Free-text tag field that commits entries as removable chips; forwards its ref to the text input. */
16
17
  const TagInput = forwardRef(function TagInput({ value, onChange, validate, maxTags, allowDuplicates = false, addOnBlur = false, id, name, label, "aria-label": ariaLabel, placeholder, isRequired = false, isInformation, informationMessage, isDisabled = false, isReadOnly = false, error, errorMessage, helperText, size = DEFAULT_CONTROL_SIZE, labels, width = "100%", }, ref) {
17
18
  const theme = useCustomTheme();
18
19
  const s = getSearchSelectSizeStyles(size);
@@ -9,6 +9,7 @@ import { useFieldIds } from "../Common/useFieldIds.js";
9
9
  import { fieldControlStyles } from "../Common/fieldStyles.js";
10
10
  import { HOURS_12, HOURS_24, atTime, displayHour, isTwelveHour, meridiemOf, minuteOptions, pad2, toHour24, } from "./timeParts.js";
11
11
  const EMPTY = "";
12
+ /** Three inline selects (hour, minute, AM/PM or 24-hour) that emit a Date; `ref` is the hour select. */
12
13
  const TimePicker = forwardRef(function TimePicker({ value, date, onChange, onClear, use24Hour, dateFormat, minuteStep, baseDate, isDisabled, disabled: legacyDisabled, id, name, label, "aria-label": ariaLabel, isRequired = false, isInformation, informationMessage, error, errorMessage, helperText, size = DEFAULT_CONTROL_SIZE, width = "100%", }, ref) {
13
14
  var _a;
14
15
  const theme = useCustomTheme();
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import ToolTip from "./ToolTip.js";
3
- // Tooltip that appears only when its child text is actually truncated. Sugar over <ToolTip overflowOnly>.
3
+ /** Tooltip that appears only when its child text is actually truncated; sugar over `<ToolTip overflowOnly>`. */
4
4
  export default function OverflowToolTip(props) {
5
5
  return _jsx(ToolTip, { ...props, overflowOnly: true });
6
6
  }
@@ -18,6 +18,7 @@ const sizeMap = {
18
18
  md: { px: "20px", py: "5px", font: "14px", sub: "10px", icon: 13, radius: "full" },
19
19
  lg: { px: "26px", py: "8px", font: "16px", sub: "11px", icon: 16, radius: "full" },
20
20
  };
21
+ /** Gradient CTA pill with optional shimmer, subtitle and loading state for upgrade prompts. */
21
22
  const UpgradeButton = ({ label, mobileLabel, subtitle, icon = Sparkles, iconColor, variant = "brand", gradient, size = "md", shimmer = true, isLoading = false, isDisabled = false, maxLabelWidth = "160px", ariaLabel, onClick, }) => {
22
23
  const theme = useCustomTheme();
23
24
  const c = theme.colors;
@@ -10,7 +10,7 @@ const PLACEMENT_STYLE = {
10
10
  "bottom-end": { top: "100%", right: 0, marginTop: "6px" },
11
11
  "bottom-start": { top: "100%", left: 0, marginTop: "6px" },
12
12
  };
13
- // Presentational, app-agnostic hover-preview (intent-safe: open delay, close grace, Escape dismisses).
13
+ /** Hover and focus preview card with open delay, close grace and Escape dismissal. */
14
14
  export default function WorkspaceTrayPreview({ children, preview, enabled = true, openDelayMs = 350, closeDelayMs = 200, placement = "top-end", onOpenChange, width = "340px", testId = "workspace-tray-preview", }) {
15
15
  const theme = useCustomTheme();
16
16
  const cardId = useId();
@@ -17,7 +17,7 @@ const WindowTitle = ({ testId, color, children }) => {
17
17
  }, [setHeaderMounted]);
18
18
  return (_jsx(Text, { id: headerId, fontSize: "sm", fontWeight: 600, color: color, noOfLines: 1, "data-testid": `${testId}-title`, children: children }));
19
19
  };
20
- // Presentational floating "workspace window" (Jira-style dialog), headless — the parent owns window state.
20
+ /** Floating Jira-style workspace window; headless, so the parent owns its `state`. */
21
21
  export default function WorkspaceWindow({ title, state, children, onMinimize, onClose, onOpenFullPage, onOverlayClick, headerActions, labels, finalFocusRef, testId = "workspace-window", }) {
22
22
  var _a, _b, _c;
23
23
  // Must run before the early return: a minimized render would otherwise skip the hook
@@ -37,6 +37,7 @@ export default function WorkspaceWindow({ title, state, children, onMinimize, on
37
37
  }, "data-testid": `${testId}-backdrop`, children: _jsxs(Box, { bg: theme.colors.surfaceRaised, borderRadius: "xl", boxShadow: "2xl", overflow: "hidden", w: "100%", maxW: size.maxW, h: size.h, display: "flex", flexDirection: "column", "data-testid": testId, "data-window-state": state, children: [_jsxs(Flex, { align: "center", justify: "space-between", px: 3, py: 2, borderBottomWidth: "1px", borderColor: raisedRule(theme.colors), bg: bandOn(theme.colors.background[100], theme.colors.surfaceRaised), flexShrink: 0, children: [_jsx(WindowTitle, { testId: testId, color: theme.colors.text[700], children: title }), _jsxs(HStack, { spacing: 1, children: [headerActions, onOpenFullPage ? (_jsx(IconButton, { "aria-label": (_a = labels === null || labels === void 0 ? void 0 : labels.openFullPage) !== null && _a !== void 0 ? _a : "Open full page", size: "xs", variant: "ghost", icon: _jsx(ExternalLink, { size: 14 }), onClick: onOpenFullPage, "data-testid": `${testId}-fullpage` })) : null, onMinimize ? (_jsx(IconButton, { "aria-label": (_b = labels === null || labels === void 0 ? void 0 : labels.minimize) !== null && _b !== void 0 ? _b : "Minimize", size: "xs", variant: "ghost", icon: _jsx(Minus, { size: 15 }), onClick: onMinimize, "data-testid": `${testId}-minimize` })) : null, onClose ? (_jsx(IconButton, { "aria-label": (_c = labels === null || labels === void 0 ? void 0 : labels.close) !== null && _c !== void 0 ? _c : "Close", size: "xs", variant: "ghost", colorScheme: "red", icon: _jsx(X, { size: 15 }), onClick: onClose, "data-testid": `${testId}-close` })) : null] })] }), _jsx(Box, { flex: "1", overflow: "auto", px: { base: 3, md: 5 }, py: 4, children: children })] }) })] }));
38
38
  }
39
39
  const cssLength = (value) => (typeof value === "number" ? `${value}px` : value);
40
+ /** Row of minimized-window pills, portalled above modals. */
40
41
  // Portalled above modal overlays; aria-live keeps Chakra's modal aria-hidden off it, data-no-focus-lock keeps the focus trap off it.
41
42
  export function WorkspaceTray({ items, onRestore, onClose, testId = "workspace-tray", placement = "bottom-end", offset, closeLabel, dirtyLabel = "Unsaved changes", label = "Minimized windows", renderItem, }) {
42
43
  var _a, _b;
@@ -61,7 +61,7 @@ export { lavenderDark, meadowDark, radiantDark, skylineDark, slateDark, emeraldD
61
61
  // NOTE: withFocusRing is outermost — it must see primary and surfaces together, after every earlier step.
62
62
  const resolveRungs = (palette) => withFocusRing(withSurfaceRungs(withSurfaceRaised(withTableHoverRung(withPlaceholderRung(withOutlineRung(palette))))));
63
63
  const lightBrand = (source) => lazyPalette(source, () => resolveRungs(finalizeLightPalette(source)));
64
- /** Light palette per brand, derived on first read. `lavender` is the base the other six extend. */
64
+ /** Light palette per brand, derived on first read. `lavender` is the base the other eight extend. */
65
65
  export const lightPalettes = {
66
66
  lavender: lightBrand(lavender),
67
67
  meadow: lightBrand(meadow),
@@ -1,4 +1,6 @@
1
- import { MIN_PERCEPTIBLE_STEP, resolveHoverTint, STACKED_STATE_STEP, tintStep, } from "./outlineRung.js";
1
+ import { isDarkCanvas } from "./accentText.js";
2
+ import { contrastRatio } from "./color.js";
3
+ import { AA_NON_TEXT, MIN_PERCEPTIBLE_STEP, neutralStep, resolveHoverTint, STACKED_STATE_STEP, tintStep, } from "./outlineRung.js";
2
4
  export const listRowBackgrounds = (colors) => {
3
5
  // Raw tertiary reaches 1.29:1 and reads as pressed; dark aliases it to the panel at 1.025:1.
4
6
  const selected = tintStep(colors.backgroundColor.tertiary, colors.surfaceRaised, MIN_PERCEPTIBLE_STEP);
@@ -8,3 +10,18 @@ export const listRowBackgrounds = (colors) => {
8
10
  selectedActive: tintStep(selected, selected, STACKED_STATE_STEP),
9
11
  };
10
12
  };
13
+ export const SELECTED_ROW_STEP = 1.28;
14
+ export const DISTINCT_ROW_STEP = 1.1;
15
+ // NOTE: light steps deeper in the hover tint's own hue; dark uses neutral greys. Both derive direction from the panel.
16
+ export const selectRowBackgrounds = (colors) => {
17
+ const panel = colors.surfaceRaised;
18
+ const { active: hoverTint } = listRowBackgrounds(colors);
19
+ const isDark = isDarkCanvas(panel);
20
+ const active = isDark ? neutralStep(panel, MIN_PERCEPTIBLE_STEP) : hoverTint;
21
+ const selectedStep = Math.max(SELECTED_ROW_STEP, contrastRatio(active, panel) * DISTINCT_ROW_STEP);
22
+ const selected = isDark ? neutralStep(panel, selectedStep) : tintStep(hoverTint, panel, selectedStep);
23
+ const selectedActive = isDark
24
+ ? neutralStep(selected, STACKED_STATE_STEP)
25
+ : tintStep(selected, selected, STACKED_STATE_STEP);
26
+ return { active, selected, selectedActive, keyboardRing: neutralStep(selectedActive, AA_NON_TEXT) };
27
+ };
@@ -1,5 +1,8 @@
1
+ import { isDarkCanvas } from "./accentText.js";
1
2
  const EDGE = "24px";
2
3
  const TINT = "rgba(0, 0, 0, 0.08)";
4
+ const TINT_ON_DARK = "rgba(0, 0, 0, 0.32)";
5
+ const VERTICAL_SHADOW = "8px";
3
6
  // CSS-only overflow hint via background-attachment local vs scroll — no listener, no extra node.
4
7
  export function scrollShadowStyles(surface) {
5
8
  return {
@@ -11,3 +14,15 @@ export function scrollShadowStyles(surface) {
11
14
  backgroundAttachment: "local, local, scroll, scroll",
12
15
  };
13
16
  }
17
+ // NOTE: dark panels swallow an 8% black edge, so the vertical hint steps up on a dark surface.
18
+ export function scrollShadowStylesVertical(surface) {
19
+ const tint = isDarkCanvas(surface) ? TINT_ON_DARK : TINT;
20
+ return {
21
+ backgroundColor: surface,
22
+ backgroundImage: `linear-gradient(${surface}, ${surface}), linear-gradient(${surface}, ${surface}), linear-gradient(${tint}, transparent), linear-gradient(transparent, ${tint})`,
23
+ backgroundRepeat: "no-repeat",
24
+ backgroundSize: `100% ${EDGE}, 100% ${EDGE}, 100% ${VERTICAL_SHADOW}, 100% ${VERTICAL_SHADOW}`,
25
+ backgroundPosition: "0 0, 0 100%, 0 0, 0 100%",
26
+ backgroundAttachment: "local, local, scroll, scroll",
27
+ };
28
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelize-design-library",
3
- "version": "2.4.2-beta.66",
3
+ "version": "2.4.2-beta.68",
4
4
  "description": "React component library for Pixelize apps: themeable Chakra-based components, design tokens and light/dark brand theming.",
5
5
  "keywords": [
6
6
  "react",