pixelize-design-library 2.4.2-beta.67 → 2.4.2-beta.69

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 (299) hide show
  1. package/CHANGELOG.md +61 -4
  2. package/COMPONENT-GOTCHAS.md +98 -59
  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/NavLauncherProps.d.ts +58 -0
  124. package/dist/Components/NavLauncher/engine/engine.d.ts +19 -0
  125. package/dist/Components/NavLauncher/match.d.ts +34 -0
  126. package/dist/Components/NavigationBar/NavigationBar.d.ts +1 -0
  127. package/dist/Components/NavigationBar/NavigationBar.js +1 -0
  128. package/dist/Components/NavigationBar/NavigationBarProps.d.ts +15 -0
  129. package/dist/Components/NoteTextArea/NoteTextAreaProps.d.ts +2 -1
  130. package/dist/Components/NotificationBell/NotificationBellProps.d.ts +27 -0
  131. package/dist/Components/NotificationBell/notificationHelpers.d.ts +13 -0
  132. package/dist/Components/NumberInput/NumberInputProps.d.ts +1 -1
  133. package/dist/Components/OffersList/OffersListProps.d.ts +12 -1
  134. package/dist/Components/OptionChip/OptionChipProps.d.ts +5 -0
  135. package/dist/Components/OrderStatusTimeline/OrderStatusTimelineProps.d.ts +10 -0
  136. package/dist/Components/OrderSummary/OrderSummaryProps.d.ts +10 -0
  137. package/dist/Components/OrgSwitcher/OrgSwitcher.d.ts +1 -0
  138. package/dist/Components/OrgSwitcher/OrgSwitcher.js +11 -3
  139. package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +1 -0
  140. package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts +52 -0
  141. package/dist/Components/PageHeader/PageHeaderProps.d.ts +1 -0
  142. package/dist/Components/Pagination/PaginationProps.d.ts +4 -0
  143. package/dist/Components/PaymentOption/PaymentOptionProps.d.ts +9 -0
  144. package/dist/Components/PincodeChecker/PincodeCheckerProps.d.ts +13 -0
  145. package/dist/Components/PlanPill/PlanPill.d.ts +1 -0
  146. package/dist/Components/PlanPill/PlanPill.js +1 -0
  147. package/dist/Components/PlanPill/PlanPillProps.d.ts +1 -0
  148. package/dist/Components/PriceBlock/PriceBlockProps.d.ts +6 -0
  149. package/dist/Components/ProductBadges/ProductBadgesProps.d.ts +3 -0
  150. package/dist/Components/ProductCard/ProductCardProps.d.ts +10 -0
  151. package/dist/Components/ProductCard/QuickAddSheetProps.d.ts +8 -0
  152. package/dist/Components/ProductDetails/ProductDetailsProps.d.ts +25 -1
  153. package/dist/Components/ProfileCard/ProfileCardProps.d.ts +1 -1
  154. package/dist/Components/QuantityStepper/QuantityStepperProps.d.ts +9 -0
  155. package/dist/Components/QueryState/QueryStateProps.d.ts +2 -0
  156. package/dist/Components/RadioButton/RadioButtonProps.d.ts +1 -1
  157. package/dist/Components/Rating/RatingProps.d.ts +2 -0
  158. package/dist/Components/Reorder/ReorderProps.d.ts +6 -0
  159. package/dist/Components/ReviewList/ReviewListProps.d.ts +21 -0
  160. package/dist/Components/ReviewSummary/ReviewSummaryProps.d.ts +8 -1
  161. package/dist/Components/RolesPermission/RolesPermissionProps.d.ts +59 -1
  162. package/dist/Components/SearchSelect/SearchSelect.js +17 -5
  163. package/dist/Components/SearchSelect/SearchSelectProps.d.ts +12 -0
  164. package/dist/Components/SectionRail/SectionRail.d.ts +1 -0
  165. package/dist/Components/SectionRail/SectionRail.js +1 -0
  166. package/dist/Components/SectionRail/SectionRailProps.d.ts +4 -0
  167. package/dist/Components/SegmentedControl/SegmentedControlProps.d.ts +4 -0
  168. package/dist/Components/Select/Select.styles.js +25 -0
  169. package/dist/Components/Select/SelectNative.d.ts +10 -0
  170. package/dist/Components/Select/SelectNative.js +11 -4
  171. package/dist/Components/Select/SelectPopup.js +45 -14
  172. package/dist/Components/Select/SelectProps.d.ts +46 -2
  173. package/dist/Components/Select/selectKeyboardRing.d.ts +2 -0
  174. package/dist/Components/Select/selectKeyboardRing.js +7 -0
  175. package/dist/Components/Select/selectRowInk.d.ts +14 -0
  176. package/dist/Components/Select/selectRowInk.js +41 -0
  177. package/dist/Components/SelectSearch/SelectSearch.js +8 -2
  178. package/dist/Components/SelectSearch/SelectSearchProps.d.ts +9 -0
  179. package/dist/Components/SelectV2/SelectV2Props.d.ts +7 -0
  180. package/dist/Components/SideBar/SecondaryBar.d.ts +1 -0
  181. package/dist/Components/SideBar/SecondaryBar.js +1 -0
  182. package/dist/Components/SideBar/SideBar.d.ts +1 -0
  183. package/dist/Components/SideBar/SideBar.js +1 -0
  184. package/dist/Components/SideBar/SideBarProps.d.ts +32 -0
  185. package/dist/Components/SideBar/sidebarAccentColors.d.ts +2 -0
  186. package/dist/Components/SignInActivityTable/SignInActivityTable.d.ts +1 -0
  187. package/dist/Components/SignInActivityTable/SignInActivityTable.js +1 -0
  188. package/dist/Components/SignInActivityTable/SignInActivityTableProps.d.ts +2 -0
  189. package/dist/Components/SpecTable/SpecTableProps.d.ts +9 -0
  190. package/dist/Components/StageProgress/StageProgressProps.d.ts +2 -0
  191. package/dist/Components/StageProgress/StepperStage.d.ts +1 -0
  192. package/dist/Components/StageProgress/StepperStage.js +1 -0
  193. package/dist/Components/StatCard/StatCardProps.d.ts +1 -0
  194. package/dist/Components/StatusTag/StatusTagProps.d.ts +4 -0
  195. package/dist/Components/StickyBuyBar/StickyBuyBar.d.ts +1 -0
  196. package/dist/Components/StickyBuyBar/StickyBuyBar.js +1 -0
  197. package/dist/Components/StickyBuyBar/StickyBuyBarProps.d.ts +6 -0
  198. package/dist/Components/StockStatus/StockStatusProps.d.ts +2 -0
  199. package/dist/Components/Switch/SwitchProps.d.ts +4 -0
  200. package/dist/Components/Table/TableProps.d.ts +19 -0
  201. package/dist/Components/Table/variants/tokens.d.ts +4 -0
  202. package/dist/Components/Tabs/TabsContext.d.ts +14 -0
  203. package/dist/Components/Tabs/TabsProps.d.ts +18 -0
  204. package/dist/Components/Tabs/components/CountBadge.d.ts +4 -0
  205. package/dist/Components/Tabs/components/TabPanels.d.ts +1 -0
  206. package/dist/Components/Tabs/components/TabPanels.js +1 -0
  207. package/dist/Components/Tabs/tabStyles.d.ts +4 -0
  208. package/dist/Components/Tag/TagProps.d.ts +3 -0
  209. package/dist/Components/TagInput/TagInput.d.ts +1 -0
  210. package/dist/Components/TagInput/TagInput.js +1 -0
  211. package/dist/Components/TagInput/TagInputProps.d.ts +2 -0
  212. package/dist/Components/TimePicker/TimePicker.d.ts +1 -0
  213. package/dist/Components/TimePicker/TimePicker.js +1 -0
  214. package/dist/Components/TimePicker/TimePickerProps.d.ts +2 -0
  215. package/dist/Components/Timeline/TimelineProps.d.ts +7 -1
  216. package/dist/Components/Toggle/TableToggleProps.d.ts +2 -0
  217. package/dist/Components/ToggleSwitch/ToggleSwitchProps.d.ts +2 -0
  218. package/dist/Components/ToolTip/OverflowToolTip.d.ts +1 -0
  219. package/dist/Components/ToolTip/OverflowToolTip.js +1 -1
  220. package/dist/Components/ToolTip/ToolTipProps.d.ts +1 -0
  221. package/dist/Components/TrustBadges/TrustBadgesProps.d.ts +4 -0
  222. package/dist/Components/UpgradeButton/UpgradeButton.d.ts +1 -0
  223. package/dist/Components/UpgradeButton/UpgradeButton.js +1 -0
  224. package/dist/Components/UpgradeButton/UpgradeButtonProps.d.ts +4 -1
  225. package/dist/Components/UserDetails/UserDetailsProps.d.ts +58 -0
  226. package/dist/Components/VariantSelector/VariantSelectorProps.d.ts +4 -0
  227. package/dist/Components/WishlistToggle/WishlistToggleProps.d.ts +4 -0
  228. package/dist/Components/WizardDialog/WizardDialogProps.d.ts +15 -0
  229. package/dist/Components/WizardDialog/wizardSteps.d.ts +17 -5
  230. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.d.ts +1 -0
  231. package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +1 -1
  232. package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts +2 -0
  233. package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +2 -1
  234. package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +13 -0
  235. package/dist/Theme/tokens/brands/index.d.ts +1 -1
  236. package/dist/Theme/tokens/brands/index.js +1 -1
  237. package/dist/Theme/tokens/builders/rowStates.d.ts +6 -0
  238. package/dist/Theme/tokens/builders/rowStates.js +14 -1
  239. package/dist/Theme/tokens/builders/scrollShadow.d.ts +1 -0
  240. package/dist/Theme/tokens/builders/scrollShadow.js +16 -0
  241. package/dist/esm/Components/AppSwitcher/AppSwitcher.js +1 -0
  242. package/dist/esm/Components/AppearanceSettings/AppearanceSettings.js +1 -0
  243. package/dist/esm/Components/AudioRecorder/AudioRecorder.js +1 -0
  244. package/dist/esm/Components/Avatar/AvatarGroup.js +1 -0
  245. package/dist/esm/Components/BulkSelectionBar/BulkSelectionBar.js +1 -0
  246. package/dist/esm/Components/Button/Button.js +1 -0
  247. package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIcon.js +1 -0
  248. package/dist/esm/Components/CalendarGrid/CalendarGrid.js +1 -0
  249. package/dist/esm/Components/Card/PaymentCard/PaymentCard.js +1 -0
  250. package/dist/esm/Components/ChoiceCard/ChoiceCard.js +1 -0
  251. package/dist/esm/Components/ChoiceCard/ChoiceCardGroup.js +1 -0
  252. package/dist/esm/Components/ConfirmDialog/ConfirmDialog.js +1 -0
  253. package/dist/esm/Components/CustomModulesTable/CustomModulesTable.js +1 -0
  254. package/dist/esm/Components/CustomModulesTable/DeleteModuleModal.js +1 -0
  255. package/dist/esm/Components/CustomModulesTable/EditModuleModal.js +1 -0
  256. package/dist/esm/Components/FormDrawer/FormDrawer.js +1 -0
  257. package/dist/esm/Components/FormField/FormField.js +1 -0
  258. package/dist/esm/Components/Header/Header.js +1 -0
  259. package/dist/esm/Components/Header/HeaderActions.js +1 -0
  260. package/dist/esm/Components/Header/components/desktopMenu.js +1 -0
  261. package/dist/esm/Components/Header/components/mobileMenu.js +1 -0
  262. package/dist/esm/Components/KanbanBoard/KanbanActions/KanbanActions.js +1 -1
  263. package/dist/esm/Components/Kbd/Kbd.js +1 -0
  264. package/dist/esm/Components/LauncherTrigger/LauncherTrigger.js +1 -0
  265. package/dist/esm/Components/LimitReachedModal/LimitReachedModal.js +1 -0
  266. package/dist/esm/Components/MediaViewer/components/MediaAudioPlayer.js +1 -0
  267. package/dist/esm/Components/MediaViewer/components/MediaDocumentStage.js +1 -0
  268. package/dist/esm/Components/MediaViewer/components/MediaImageViewer.js +1 -0
  269. package/dist/esm/Components/MediaViewer/components/MediaVideoPlayer.js +1 -0
  270. package/dist/esm/Components/MediaViewer/mediaItems.js +5 -0
  271. package/dist/esm/Components/Modal/Modal.js +3 -0
  272. package/dist/esm/Components/MultiSelect/MultiSelect.js +1 -0
  273. package/dist/esm/Components/NavigationBar/NavigationBar.js +1 -0
  274. package/dist/esm/Components/OrgSwitcher/OrgSwitcher.js +13 -5
  275. package/dist/esm/Components/PlanPill/PlanPill.js +1 -0
  276. package/dist/esm/Components/SearchSelect/SearchSelect.js +19 -7
  277. package/dist/esm/Components/SectionRail/SectionRail.js +1 -0
  278. package/dist/esm/Components/Select/Select.styles.js +26 -1
  279. package/dist/esm/Components/Select/SelectNative.js +12 -5
  280. package/dist/esm/Components/Select/SelectPopup.js +47 -16
  281. package/dist/esm/Components/Select/selectKeyboardRing.js +3 -0
  282. package/dist/esm/Components/Select/selectRowInk.js +33 -0
  283. package/dist/esm/Components/SelectSearch/SelectSearch.js +10 -4
  284. package/dist/esm/Components/SideBar/SecondaryBar.js +1 -0
  285. package/dist/esm/Components/SideBar/SideBar.js +1 -0
  286. package/dist/esm/Components/SignInActivityTable/SignInActivityTable.js +1 -0
  287. package/dist/esm/Components/StageProgress/StepperStage.js +1 -0
  288. package/dist/esm/Components/StickyBuyBar/StickyBuyBar.js +1 -0
  289. package/dist/esm/Components/Tabs/components/TabPanels.js +1 -0
  290. package/dist/esm/Components/TagInput/TagInput.js +1 -0
  291. package/dist/esm/Components/TimePicker/TimePicker.js +1 -0
  292. package/dist/esm/Components/ToolTip/OverflowToolTip.js +1 -1
  293. package/dist/esm/Components/UpgradeButton/UpgradeButton.js +1 -0
  294. package/dist/esm/Components/WorkspaceWindow/WorkspaceTrayPreview.js +1 -1
  295. package/dist/esm/Components/WorkspaceWindow/WorkspaceWindow.js +2 -1
  296. package/dist/esm/Theme/tokens/brands/index.js +1 -1
  297. package/dist/esm/Theme/tokens/builders/rowStates.js +13 -1
  298. package/dist/esm/Theme/tokens/builders/scrollShadow.js +15 -0
  299. package/package.json +1 -1
@@ -23,11 +23,13 @@ export interface WorkspaceWindowProps {
23
23
  state: WorkspaceWindowState;
24
24
  /** Window body. */
25
25
  children: ReactNode;
26
+ /** Adds the Minimize button to the control bar; omitted hides it. The parent sets `state` to "minimized" itself. */
26
27
  onMinimize?: () => void;
27
28
  /** @deprecated Never called; no maximize/restore control is rendered. */
28
29
  onMedium?: () => void;
29
30
  /** @deprecated Never called; no maximize/restore control is rendered. */
30
31
  onMaximize?: () => void;
32
+ /** Adds the Close button to the control bar and is its only trigger: Esc and backdrop clicks never close the window. */
31
33
  onClose?: () => void;
32
34
  /** Optional "pop out to full page" affordance; hidden when omitted. */
33
35
  onOpenFullPage?: () => void;
@@ -52,7 +54,9 @@ export interface WorkspaceWindowProps {
52
54
  }
53
55
  /** One minimized window in the tray; id is passed back to onRestore/onClose so callers can target the right window. */
54
56
  export interface WorkspaceTrayItem {
57
+ /** Identifier handed back to `onRestore` and `onClose`. */
55
58
  id: string;
59
+ /** Main text of the pill. */
56
60
  title: ReactNode;
57
61
  /** Shows an unsaved-changes dot on the built-in pill; named for screen readers by the tray's `dirtyLabel`. */
58
62
  isDirty?: boolean;
@@ -63,14 +67,19 @@ export interface WorkspaceTrayItem {
63
67
  export interface WorkspaceTrayProps {
64
68
  /** Minimized items rendered as restore pills along the bottom. */
65
69
  items: WorkspaceTrayItem[];
70
+ /** Called with the item id when its pill is clicked to bring the window back. */
66
71
  onRestore?: (id: string) => void;
72
+ /** Called with the item id from the pill's close button; omitted removes that button. */
67
73
  onClose?: (id: string) => void;
74
+ /** data-testid for the tray; pills, restore, dirty dot and close buttons derive suffixed ids from it. Default "workspace-tray". */
68
75
  testId?: string;
69
76
  /** Which bottom corner the tray sits in. Default "bottom-end". Portalled above modals but outside their focus trap: a pointer restores a pill while a modal is open, Tab does not reach it. */
70
77
  placement?: "bottom-end" | "bottom-start";
71
78
  /** Distance from the viewport edges, to clear a sticky bar. Numbers are px, strings any CSS length. Default 1rem each. */
72
79
  offset?: {
80
+ /** Gap from the side edge. */
73
81
  x?: number | string;
82
+ /** Gap from the bottom edge. */
74
83
  y?: number | string;
75
84
  };
76
85
  /** Accessible name for each pill's close button. Default "Close"; pass one that names the item for non-English or per-window labels. */
@@ -81,7 +90,9 @@ export interface WorkspaceTrayProps {
81
90
  label?: string;
82
91
  /** Replaces one item's pill inside the same tray; gets the item, bound restore/close and `pill`, the built-in pill (dot, subtitle, close button) to return as is or wrap, e.g. in WorkspaceTrayPreview. */
83
92
  renderItem?: (item: WorkspaceTrayItem, api: {
93
+ /** Calls `onRestore` with this item's id. */
84
94
  restore: () => void;
95
+ /** Calls `onClose` with this item's id. */
85
96
  close: () => void;
86
97
  }, pill: ReactNode) => ReactNode;
87
98
  }
@@ -100,6 +111,7 @@ export interface WorkspaceTrayPreviewProps {
100
111
  * on the one focusable trigger so assistive tech hears the card.
101
112
  */
102
113
  children: ReactNode | ((api: {
114
+ /** Accessibility attributes to spread on the one focusable trigger. */
103
115
  triggerProps: WorkspaceTrayPreviewTriggerProps;
104
116
  }) => ReactNode);
105
117
  /**
@@ -109,6 +121,7 @@ export interface WorkspaceTrayPreviewProps {
109
121
  * the preview can dismiss it.
110
122
  */
111
123
  preview: ReactNode | ((api: {
124
+ /** Closes the card immediately, e.g. after an action inside it. */
112
125
  close: () => void;
113
126
  }) => ReactNode);
114
127
  /** Whether the preview is enabled at all (e.g. disable on touch devices). */
@@ -22,7 +22,7 @@ export declare const LIGHT_CANVAS_STEP = 1.09;
22
22
  export declare const finalizeLightPalette: (source: BrandPaletteSource) => PaletteProps;
23
23
  export { lavender, meadow, radiant, skyline, slate, emerald, rosewood, storefront, zinc };
24
24
  export { lavenderDark, meadowDark, radiantDark, skylineDark, slateDark, emeraldDark, rosewoodDark, storefrontDark, zincDark, };
25
- /** Light palette per brand, derived on first read. `lavender` is the base the other six extend. */
25
+ /** Light palette per brand, derived on first read. `lavender` is the base the other eight extend. */
26
26
  export declare const lightPalettes: Record<ThemeName, PaletteProps>;
27
27
  export declare const darkPalettes: Record<ThemeName, PaletteProps>;
28
28
  export declare const palettes: Record<ThemeName, Record<ResolvedColorMode, PaletteProps>>;
@@ -84,7 +84,7 @@ exports.finalizeLightPalette = finalizeLightPalette;
84
84
  // NOTE: withFocusRing is outermost — it must see primary and surfaces together, after every earlier step.
85
85
  const resolveRungs = (palette) => (0, focusRing_1.withFocusRing)((0, surfaceRungs_1.withSurfaceRungs)((0, surfaceRaised_1.withSurfaceRaised)((0, resolvedRungs_1.withTableHoverRung)((0, resolvedRungs_1.withPlaceholderRung)((0, outlineRung_1.withOutlineRung)(palette))))));
86
86
  const lightBrand = (source) => (0, lazy_1.lazyPalette)(source, () => resolveRungs((0, exports.finalizeLightPalette)(source)));
87
- /** Light palette per brand, derived on first read. `lavender` is the base the other six extend. */
87
+ /** Light palette per brand, derived on first read. `lavender` is the base the other eight extend. */
88
88
  exports.lightPalettes = {
89
89
  lavender: lightBrand(palette_light_1.default),
90
90
  meadow: lightBrand(palette_light_2.default),
@@ -5,3 +5,9 @@ export interface RowStateBackgrounds {
5
5
  selectedActive: string;
6
6
  }
7
7
  export declare const listRowBackgrounds: (colors: PaletteProps) => RowStateBackgrounds;
8
+ export declare const SELECTED_ROW_STEP = 1.28;
9
+ export declare const DISTINCT_ROW_STEP = 1.1;
10
+ export interface SelectRowBackgrounds extends RowStateBackgrounds {
11
+ keyboardRing: string;
12
+ }
13
+ export declare const selectRowBackgrounds: (colors: PaletteProps) => SelectRowBackgrounds;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.listRowBackgrounds = void 0;
3
+ exports.selectRowBackgrounds = exports.DISTINCT_ROW_STEP = exports.SELECTED_ROW_STEP = exports.listRowBackgrounds = void 0;
4
+ const color_1 = require("./color");
4
5
  const outlineRung_1 = require("./outlineRung");
5
6
  const listRowBackgrounds = (colors) => {
6
7
  // Raw tertiary reaches 1.29:1 and reads as pressed; dark aliases it to the panel at 1.025:1.
@@ -12,3 +13,15 @@ const listRowBackgrounds = (colors) => {
12
13
  };
13
14
  };
14
15
  exports.listRowBackgrounds = listRowBackgrounds;
16
+ exports.SELECTED_ROW_STEP = 1.28;
17
+ exports.DISTINCT_ROW_STEP = 1.1;
18
+ // NOTE: every rung is a neutral step off the panel, so hover and selected carry no brand hue in either mode.
19
+ const selectRowBackgrounds = (colors) => {
20
+ const panel = colors.surfaceRaised;
21
+ const active = (0, outlineRung_1.neutralStep)(panel, outlineRung_1.MIN_PERCEPTIBLE_STEP);
22
+ const selectedStep = Math.max(exports.SELECTED_ROW_STEP, (0, color_1.contrastRatio)(active, panel) * exports.DISTINCT_ROW_STEP);
23
+ const selected = (0, outlineRung_1.neutralStep)(panel, selectedStep);
24
+ const selectedActive = (0, outlineRung_1.neutralStep)(selected, outlineRung_1.STACKED_STATE_STEP);
25
+ return { active, selected, selectedActive, keyboardRing: (0, outlineRung_1.neutralStep)(selectedActive, outlineRung_1.AA_NON_TEXT) };
26
+ };
27
+ exports.selectRowBackgrounds = selectRowBackgrounds;
@@ -1,2 +1,3 @@
1
1
  export type ScrollShadowStyle = Record<string, unknown>;
2
2
  export declare function scrollShadowStyles(surface: string): ScrollShadowStyle;
3
+ export declare function scrollShadowStylesVertical(surface: string): ScrollShadowStyle;
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.scrollShadowStyles = scrollShadowStyles;
4
+ exports.scrollShadowStylesVertical = scrollShadowStylesVertical;
5
+ const accentText_1 = require("./accentText");
4
6
  const EDGE = "24px";
5
7
  const TINT = "rgba(0, 0, 0, 0.08)";
8
+ const TINT_ON_DARK = "rgba(0, 0, 0, 0.32)";
9
+ const VERTICAL_SHADOW = "8px";
6
10
  // CSS-only overflow hint via background-attachment local vs scroll — no listener, no extra node.
7
11
  function scrollShadowStyles(surface) {
8
12
  return {
@@ -14,3 +18,15 @@ function scrollShadowStyles(surface) {
14
18
  backgroundAttachment: "local, local, scroll, scroll",
15
19
  };
16
20
  }
21
+ // NOTE: dark panels swallow an 8% black edge, so the vertical hint steps up on a dark surface.
22
+ function scrollShadowStylesVertical(surface) {
23
+ const tint = (0, accentText_1.isDarkCanvas)(surface) ? TINT_ON_DARK : TINT;
24
+ return {
25
+ backgroundColor: surface,
26
+ backgroundImage: `linear-gradient(${surface}, ${surface}), linear-gradient(${surface}, ${surface}), linear-gradient(${tint}, transparent), linear-gradient(transparent, ${tint})`,
27
+ backgroundRepeat: "no-repeat",
28
+ backgroundSize: `100% ${EDGE}, 100% ${EDGE}, 100% ${VERTICAL_SHADOW}, 100% ${VERTICAL_SHADOW}`,
29
+ backgroundPosition: "0 0, 0 100%, 0 0, 0 100%",
30
+ backgroundAttachment: "local, local, scroll, scroll",
31
+ };
32
+ }
@@ -41,6 +41,7 @@ const validate = (apps) => {
41
41
  };
42
42
  // Flip back to true to restore `searchThreshold` opening the field on its own.
43
43
  const SEARCH_OPENS_BY_COUNT = false;
44
+ /** Top-bar grid button that opens a panel of suite apps to jump between, with optional search and keyboard shortcut. */
44
45
  const AppSwitcher = ({ apps, currentAppId, onSelect, onOpenChange, isSearchable, searchThreshold = 8, shortcut = null, showShortcutHint = true, hideWhenAlone = true, emptyMessage = "No app matches that name.", footer, ariaLabel = "Switch app", panelWidth, maxHeight = "24rem", isLoading = false, }) => {
45
46
  const theme = useCustomTheme();
46
47
  const { isOpen, onOpen, onClose } = useDisclosure();
@@ -13,6 +13,7 @@ const FieldLabel = ({ children }) => {
13
13
  return (_jsx(Text, { fontSize: "sm", fontWeight: 500, color: colors.textMuted, mb: 2, children: children }));
14
14
  };
15
15
  const brandSwatch = (name, colors) => (_jsx(Box, { w: "14px", h: "14px", borderRadius: "full", bg: lightPalettes[name].primary[500], border: "1px solid", borderColor: ruleInk(colors.boxborder[200], [colors.backgroundColor.light, colors.backgroundColor.tertiary], CHROME_RULE) }));
16
+ /** Settings panel with brand, light/dark mode and root font-size pickers; each section can be hidden. */
16
17
  export const AppearanceSettings = ({ brand, fontSize, onBrandChange, onFontSizeChange, showBrand = true, showColorMode = true, showFontSize = true, size = "sm", labels, }) => {
17
18
  var _a, _b, _c;
18
19
  const { colors } = useCustomTheme();
@@ -33,6 +33,7 @@ export const recordingFileName = (mime, now) => {
33
33
  return { type, name: `recording-${now}.${(_a = EXTENSIONS[type]) !== null && _a !== void 0 ? _a : (((_b = type.split("/")[1]) === null || _b === void 0 ? void 0 : _b.replace(/^x-/, "")) || "webm")}` };
34
34
  };
35
35
  const isSupported = () => { var _a; return typeof navigator !== "undefined" && !!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia) && typeof MediaRecorder !== "undefined"; };
36
+ /** Microphone recorder: a toggle button and timer that hands a `File` to `onRecorded` on stop. */
36
37
  const AudioRecorder = ({ onRecorded, maxDurationSec, isDisabled = false, labels }) => {
37
38
  const { colors } = useCustomTheme();
38
39
  const text = { ...DEFAULT_LABELS, ...labels };
@@ -8,6 +8,7 @@ const summarize = (names, overflow) => {
8
8
  return names.join(", ");
9
9
  return `${names.join(", ")} and ${overflow} more`;
10
10
  };
11
+ /** Overlapping avatar stack; people past `max` collapse into a "+N" chip. */
11
12
  const AvatarGroup = ({ people, max = 4, size = "md", ariaLabel, "data-testid": testId }) => {
12
13
  const { colors } = useCustomTheme();
13
14
  const shown = people.slice(0, max);
@@ -16,6 +16,7 @@ const SCHEME_BY_TONE = {
16
16
  danger: "red",
17
17
  };
18
18
  const TOUCH_SX = { "@media (pointer: coarse)": { minHeight: "44px", minWidth: "44px" } };
19
+ /** Action bar for table row selection: count, shared facts, bulk action buttons and a clear button; renders nothing at zero. */
19
20
  const BulkSelectionBar = ({ selectedCount, facts, actions, onClearSelection, clearLabel = "Clear selection", countLabel, placement = "sticky", "aria-label": ariaLabel = "Selection actions", "data-testid": testId = "bulk-selection-bar", }) => {
20
21
  const { colors } = useCustomTheme();
21
22
  const isActive = selectedCount > 0;
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { forwardRef, memo } from "react";
3
3
  import { Button as ChakraButton } from "@chakra-ui/react";
4
+ /** Themed button with label or children, left/right icons and a loading state that keeps its width. */
4
5
  const Button = forwardRef(function Button({ label, children, onClick, opacity, variant = "solid", leftIcon, rightIcon, size, isDisabled = false, isLoading = false, loadingText, type, width, w, sx, colorScheme, border, borderRadius, onMouseEnter, onMouseLeave, ...aria }, ref) {
5
6
  const isIconOnly = !children && !label && !!(leftIcon || rightIcon);
6
7
  return (_jsx(ChakraButton, { ...aria, type: type, onClick: onClick, width: width || w || "fit-content", variant: variant, size: size, isLoading: isLoading, isDisabled: isDisabled, loadingText: loadingText, leftIcon: leftIcon, rightIcon: rightIcon, iconSpacing: isIconOnly ? 0 : undefined, px: isIconOnly ? 0 : undefined, ref: ref, colorScheme: colorScheme, sx: sx, opacity: opacity, border: border, borderRadius: borderRadius, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, children: children !== null && children !== void 0 ? children : label }));
@@ -7,6 +7,7 @@ import { hexToRgb } from "../../Theme/tokens/builders/color.js";
7
7
  import { rafThrottle } from "../../Utils/rafThrottle.js";
8
8
  import { transitionFor } from "../../Theme/tokens/primitives/motion.js";
9
9
  const BACKGROUND_TRANSITION = transitionFor(["background"]);
10
+ /** Attached left icon, text button and right icon or dropdown trigger; see ButtonGroupIconProps. */
10
11
  export default function ButtonGroupIcon({ leftIcon, rightIcon, onLeftIconClick, onRightIconClick, buttonText, onButtonClick, onButtongroupClick, size, variant, color, buttonGroupStyle, buttonGroupLeftIconStyle, buttonGroupRightIconStyle, buttonStyle, onBlurLeftIcon, onBlurRightIcon, dropdownOptions, // New prop for dropdown options
11
12
  onDropdownOptionClick, // New prop to handle option clicks
12
13
  rightIconDropdown, menulistStyle, menuItemStyle, isLoading, divider = true, leftIconLoading, RightIconLoading, }) {
@@ -73,6 +73,7 @@ const EventChip = ({ event, colors, surface, onEventClick, segment }) => {
73
73
  };
74
74
  return event.href ? (_jsx(Box, { as: "a", href: event.href, ...common, children: event.label })) : (_jsx(Box, { as: "button", type: "button", ...common, children: event.label }));
75
75
  };
76
+ /** Controlled month, week or day grid that places date-granularity events as chips and spanning bars, with a toolbar and arrow-key navigation. */
76
77
  const CalendarGrid = ({ view, date, events, onViewChange, onDateChange, onEventClick, renderDayCell, weekStartsOn = 0, locale, isLoading = false, labels, }) => {
77
78
  const { colors } = useCustomTheme();
78
79
  const text = { ...DEFAULT_LABELS, ...labels };
@@ -58,6 +58,7 @@ const getCardStyles = (isActive, isNextUpgrade, popular, theme) => {
58
58
  colorScheme: "primary",
59
59
  });
60
60
  };
61
+ /** Subscription plan card with price, feature list and a call-to-action; badge and accent follow active, upgrade and popular state. */
61
62
  const PaymentCard = ({ plan, isActive = false, isNextUpgrade = false, billingCycle, onSelect, onHover, buttonLoading, isLoading = false, isRenewal = false, }) => {
62
63
  const theme = useCustomTheme();
63
64
  const { badgeText, badgeColor, buttonColor, buttonColor50, onButtonColor, iconInk, colorScheme } = getCardStyles(isActive, isNextUpgrade, !!plan.popular, theme);
@@ -3,6 +3,7 @@ import { useId } from "react";
3
3
  import { Box, Flex, Text } from "@chakra-ui/react";
4
4
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
5
5
  import { RadioIndicator, selectableSurface, useSelectable } from "../CheckoutKit/selectable.js";
6
+ /** Selectable radio card with a label, optional description and icon; must sit inside a `ChoiceCardGroup`. */
6
7
  const ChoiceCard = ({ value, label, description, icon, disabled: disabledProp = false, isDisabled = false, "data-testid": testId }) => {
7
8
  const disabled = disabledProp || isDisabled;
8
9
  const { colors } = useCustomTheme();
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { SelectableGroup } from "../CheckoutKit/selectable.js";
3
+ /** Radiogroup that lays out `ChoiceCard`s in one or more columns and manages the single selection. */
3
4
  const ChoiceCardGroup = (props) => _jsx(SelectableGroup, { ...props });
4
5
  export default ChoiceCardGroup;
@@ -7,6 +7,7 @@ import { raisedRule } from "../../Theme/tokens/builders/surfaceRaised.js";
7
7
  import { resolveSoftTone } from "../../Theme/tokens/builders/tone.js";
8
8
  import Button from "../Button/Button.js";
9
9
  import TextInput from "../Input/TextInput.js";
10
+ /** Cancel/Confirm modal for destructive prompts; focus starts on Cancel and Confirm never closes the dialog itself. */
10
11
  const ConfirmDialog = ({ isOpen, onClose, onConfirm, title, children, icon, iconBg, iconColor, entityName, entityKind, dependents, consequence, alternative, isConfirmDisabled: isConfirmHeld = false, tone = "destructive", cancelLabel = "Cancel", confirmLabel = "Confirm", confirmIcon, isConfirmLoading = false, disableCancelWhilePending = true, confirmationText, confirmationLabel, bodyLayout = "flush", bodySpacing = 4, actionsPt = 0, focusCancelOnOpen = true, isCentered = true, closeOnEsc, closeOnOverlayClick, }) => {
11
12
  const { colors } = useCustomTheme();
12
13
  const cancelRef = useRef(null);
@@ -26,6 +26,7 @@ const DEFAULT_LABELS = {
26
26
  confirmDeletion: "Confirm Deletion",
27
27
  deleteConfirmPrefix: "Are you sure you want to delete",
28
28
  };
29
+ /** Card with a two-column module list (name, owner) and per-row Edit and Delete dialogs; loading shows skeleton bars, empty shows an empty state. */
29
30
  const CustomModulesTable = ({ modules, isLoading = false, isUpdating = false, isDeleting = false, onUpdateModule, onDeleteModule, labels: labelOverrides, }) => {
30
31
  var _a;
31
32
  const { colors } = useCustomTheme();
@@ -4,6 +4,7 @@ import { Trash2 } from "lucide-react";
4
4
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
5
5
  import { accentTextOnCanvas } from "../../Theme/tokens/builders/accentText.js";
6
6
  import ConfirmDialog from "../ConfirmDialog/ConfirmDialog.js";
7
+ /** Confirmation dialog for deleting a module; used by CustomModulesTable. */
7
8
  const DeleteModuleModal = ({ isOpen, onClose, moduleName, isLoading, onConfirm, labels, }) => {
8
9
  const { colors } = useCustomTheme();
9
10
  return (_jsx(ConfirmDialog, { isOpen: isOpen, onClose: onClose, onConfirm: onConfirm, title: labels.confirmDeletion, iconBg: colors.semantic.error[50], iconColor: accentTextOnCanvas(colors.semantic.error, colors.semantic.error[50]), cancelLabel: labels.cancel, confirmLabel: labels.delete, confirmIcon: _jsx(Trash2, { size: 15 }), isConfirmLoading: isLoading, disableCancelWhilePending: false, focusCancelOnOpen: false, children: _jsxs(Text, { color: colors.textMuted, fontSize: "sm", mb: 5, children: [labels.deleteConfirmPrefix, " ", _jsx(Text, { as: "span", fontWeight: 600, color: colors.text[800], children: moduleName }), "?"] }) }));
@@ -4,6 +4,7 @@ import { Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, Modal
4
4
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
5
5
  import { raisedRule } from "../../Theme/tokens/builders/surfaceRaised.js";
6
6
  import Button from "../Button/Button.js";
7
+ /** Dialog with one text field to rename a module; used by CustomModulesTable. */
7
8
  const EditModuleModal = ({ isOpen, onClose, initialName, isLoading, onSubmit, labels, }) => {
8
9
  const { colors } = useCustomTheme();
9
10
  const [name, setName] = useState(initialName);
@@ -12,6 +12,7 @@ const DEFAULT_LABELS = {
12
12
  discard: "Discard",
13
13
  keepEditing: "Keep editing",
14
14
  };
15
+ /** Sectioned create/edit form in a Drawer with error summary, sticky footer and discard-changes confirm. */
15
16
  export default function FormDrawer({ isOpen, onClose, title, description, sections, errors = [], isDirty, onSubmit, isSubmitting = false, isSubmitDisabled = false, submitLabel = "Save", cancelLabel = "Cancel", secondaryAction, size = "md", labels, "data-testid": testId = "form-drawer", }) {
16
17
  const { colors } = useCustomTheme();
17
18
  const uid = useId();
@@ -10,6 +10,7 @@ const joinIds = (...ids) => [...new Set(ids.flatMap((value) => { var _a; return
10
10
  const asWirableElement = (children) => typeof children !== "function" && isValidElement(children) && children.type !== Fragment
11
11
  ? children
12
12
  : undefined;
13
+ /** Wires a label, required marker, helper and error text to one control through ids and aria attributes. */
13
14
  const FormField = forwardRef(function FormField({ label, id, isRequired = false, error = false, errorMessage, helperText, layout = "vertical", labelWidth = "12rem", children, ...rest }, ref) {
14
15
  var _a;
15
16
  const { colors } = useCustomTheme();
@@ -18,6 +18,7 @@ export const pickActiveAccent = (primary, canvas) => {
18
18
  const found = order.find((rung) => contrastRatio(primary[rung], canvas) >= ACTIVE_ACCENT_TARGET);
19
19
  return primary[found !== null && found !== void 0 ? found : order[order.length - 1]];
20
20
  };
21
+ /** Sticky top bar with logo, page links, hover dropdowns and a collapsible mobile menu; colours default to the sidebar tokens. */
21
22
  const Header = ({ logo, menuItems, rightSlot, active, colors, boxShadow, onMobileMenuClose }) => {
22
23
  var _a, _b, _c, _d, _e;
23
24
  const { isOpen, onOpen, onClose } = useDisclosure();
@@ -8,6 +8,7 @@ import { AA_NON_TEXT, liftToContrast } from "../../Theme/tokens/builders/outline
8
8
  import Select from "../Select/Select.js";
9
9
  import VerticalDivider from "../Divider/Divider.js";
10
10
  import { surfaceFocusRing } from "../Common/surfaceFocusRing.js";
11
+ /** Row of optional header controls (select, edit, create) separated by dividers; each renders only when its flag is set. */
11
12
  const HeaderActions = ({ select, edit, create, surface, }) => {
12
13
  var _a, _b, _c;
13
14
  const { colors } = useCustomTheme();
@@ -5,6 +5,7 @@ import { useCustomTheme } from "../../../Theme/useCustomTheme.js";
5
5
  import { onFilled } from "../../../Theme/tokens/builders/accentText.js";
6
6
  import { resolveSoftTone } from "../../../Theme/tokens/builders/tone.js";
7
7
  import { scaleFor } from "../../../Theme/chakra/paletteFromTheme.js";
8
+ /** Desktop nav row of Header: ghost buttons with hover dropdowns for items that have children. */
8
9
  const DesktopMenu = ({ menuItems, rightSlot, setHoveredMenu, isActive, activeBg, hoveredMenu, hoverBg, color, hoverTextColor, surface, }) => {
9
10
  const { colors } = useCustomTheme();
10
11
  const badgeTone = (scheme) => resolveSoftTone(colors, scaleFor(colors, scheme !== null && scheme !== void 0 ? scheme : "blue"), surface);
@@ -6,6 +6,7 @@ import { useCustomTheme } from "../../../Theme/useCustomTheme.js";
6
6
  import { onFilled } from "../../../Theme/tokens/builders/accentText.js";
7
7
  import { resolveSoftTone } from "../../../Theme/tokens/builders/tone.js";
8
8
  import { scaleFor } from "../../../Theme/chakra/paletteFromTheme.js";
9
+ /** Collapsible mobile nav panel of Header; items with children toggle an inline submenu. */
9
10
  const MobileMenu = ({ menuItems, isOpen, isActive, hoverBg, activeBg, color, surface, onClose, }) => {
10
11
  const { colors } = useCustomTheme();
11
12
  const badgeTone = (scheme) => resolveSoftTone(colors, scaleFor(colors, scheme !== null && scheme !== void 0 ? scheme : "blue"), surface);
@@ -5,7 +5,7 @@ import { CirclePlus, SquarePen } from "lucide-react";
5
5
  import VerticalDivider from "../../Divider/Divider.js";
6
6
  import { useCustomTheme } from "../../../Theme/useCustomTheme.js";
7
7
  import Button from "../../Button/Button.js";
8
- /** Standalone filter+Edit+Create action bar; NOT rendered by KanbanBoard (which uses HeaderActions instead) and not exported from the package. */
8
+ /** Standalone filter+Edit+Create bar, exported from the package; KanbanBoard itself uses HeaderActions. */
9
9
  const KanbanActions = ({ options, onSelectChange, onEdit, onCreate, }) => {
10
10
  const { colors } = useCustomTheme();
11
11
  return (_jsxs(Box, { display: "flex", alignItems: "center", gap: "0.625rem", children: [_jsx(Select, { native: false, options: options, placeholder: "Filter by Status", width: "12.5rem", onChange: (option) => onSelectChange && onSelectChange(option) }), _jsxs(Box, { display: "flex", alignItems: "center", gap: "0.5rem", children: [_jsx(Button, { size: "sm", variant: "ghost", leftIcon: _jsx(SquarePen, { size: 20, color: colors.text[500] }), onClick: () => onEdit === null || onEdit === void 0 ? void 0 : onEdit(), children: "Edit Layout" }), _jsx(VerticalDivider, {}), _jsx(Button, { size: "sm", variant: "solid", leftIcon: _jsx(CirclePlus, { size: 20 }), onClick: () => onCreate === null || onCreate === void 0 ? void 0 : onCreate(), children: "Create New" })] })] }));
@@ -18,6 +18,7 @@ const Kbd = ({ children, size = "sm", "data-testid": testId }) => {
18
18
  const { colors } = useCustomTheme();
19
19
  return (_jsx(Box, { as: "kbd", "data-testid": testId, display: "inline-flex", alignItems: "center", justifyContent: "center", minW: HEIGHT[size], h: HEIGHT[size], px: 1.5, fontFamily: "inherit", fontSize: "xs-minus", fontWeight: 600, lineHeight: 1, whiteSpace: "nowrap", borderWidth: "1px", borderColor: colors.boxborder[200], borderRadius: "base", bg: colors.backgroundColor.subtle, color: colors.textMuted, children: children }));
20
20
  };
21
+ /** Renders a chord such as `mod+k` as one `Kbd` per key, announced as a single spoken label. */
21
22
  export const KbdShortcut = ({ shortcut, size, isApple, "data-testid": testId }) => {
22
23
  const parts = shortcut.split("+").map((p) => p.trim()).filter(Boolean);
23
24
  const apple = isApple !== null && isApple !== void 0 ? isApple : detectApple();
@@ -28,6 +28,7 @@ export const keyShortcutsFor = (shortcut) => {
28
28
  const chords = Array.from({ length: variants }, (_, v) => options.map((o) => o[Math.min(v, o.length - 1)]).join("+"));
29
29
  return Array.from(new Set(chords)).join(" ");
30
30
  };
31
+ /** Chip or icon button that opens an app-owned launcher; shows the shortcut hint but binds no key. */
31
32
  const LauncherTrigger = ({ onClick, isOpen, label = "Menu", shortcut = "mod+k", icon: Icon = Compass, display = "chip", "aria-label": ariaLabel, "data-testid": testId, }) => {
32
33
  const { colors } = useCustomTheme();
33
34
  const showHint = useMatchMedia(MD_QUERY, true);
@@ -14,6 +14,7 @@ const KIND_ICON = {
14
14
  projects: Crown,
15
15
  tickets: Crown,
16
16
  };
17
+ /** Controlled plan-limit modal: kind-specific title and message, optional usage line and feature list, upgrade CTA only for billing managers. */
17
18
  const LimitReachedModal = ({ isOpen, onClose, kind, limit = null, used = null, canManageBilling, onUpgrade, title, message, features, }) => {
18
19
  const { colors } = useCustomTheme();
19
20
  const copy = resolveLimitCopy(kind, canManageBilling);
@@ -14,6 +14,7 @@ import { transitionFor } from "../../../Theme/tokens/primitives/motion.js";
14
14
  const VOLUME_WIDTH_TRANSITION = transitionFor(["width"], "base", "out");
15
15
  const ARROW_SEEK_SECONDS = 5;
16
16
  const ARROW_VOLUME_STEP = 0.1;
17
+ /** Audio stage of MediaViewer: play/pause, seek, volume and playback-speed controls with J / L skip keys. */
17
18
  const MediaAudioPlayer = ({ item, label, onTimeChange, labels: labelOverrides }) => {
18
19
  const labels = { ...defaultMediaAudioPlayerLabels, ...labelOverrides };
19
20
  const chrome = useViewerChrome();
@@ -77,6 +77,7 @@ function TextStage({ itemKey, url, blob, label, labels }) {
77
77
  }
78
78
  return (_jsx(Box, { position: "absolute", inset: 0, overflow: "auto", px: { base: 3, md: 8 }, py: 4, "data-testid": "media-text", children: _jsx(Text, { as: "pre", fontFamily: "mono", fontSize: "sm", whiteSpace: "pre-wrap", wordBreak: "break-word", color: chrome.ink, children: state.text }) }));
79
79
  }
80
+ /** Document stage of MediaViewer: previews PDF, DOCX and text files inline, other kinds get a download panel; loading and error states come from `resolveDocument`. */
80
81
  export const MediaDocumentStage = ({ item, label, resolveDocument, labels: labelOverrides, }) => {
81
82
  const labels = { ...defaultMediaDocumentStageLabels, ...labelOverrides };
82
83
  const chrome = useViewerChrome();
@@ -13,6 +13,7 @@ import { transitionFor } from "../../../Theme/tokens/primitives/motion.js";
13
13
  const TRANSFORM_OUT_TRANSITION = transitionFor(["transform"], "fast", "out");
14
14
  const ORIGIN = { x: 0, y: 0 };
15
15
  const transformFor = (pan, zoom, rotation) => `translate(${pan.x}px, ${pan.y}px) scale(${zoom / 100}) rotate(${rotation}deg)`;
16
+ /** Image stage of MediaViewer with zoom, drag-to-pan, rotation and keyboard shortcuts. */
16
17
  const MediaImageViewer = ({ item, label, onZoomChange, onNaturalSize, labels: labelOverrides, }) => {
17
18
  const labels = { ...defaultMediaImageViewerLabels, ...labelOverrides };
18
19
  const chrome = useViewerChrome();
@@ -24,6 +24,7 @@ const ARROW_VOLUME_STEP = 0.1;
24
24
  const spin = keyframes `from { transform: rotate(0deg); } to { transform: rotate(360deg); }`;
25
25
  const rippleFade = keyframes `0% { opacity: 0.9; } 100% { opacity: 0; }`;
26
26
  const seekIcon = (icon) => (_jsxs(Flex, { as: "span", align: "center", gap: "2px", "aria-hidden": true, children: [icon, _jsx(Text, { as: "span", fontSize: "xs", fontWeight: 600, children: SEEK_STEP_SECONDS })] }));
27
+ /** Video stage of MediaViewer: transport, seek, volume, speed and fullscreen controls with keyboard shortcuts and double-tap skip. */
27
28
  const MediaVideoPlayer = ({ item, label, onTimeChange, onPrevious, onNext, labels: labelOverrides, }) => {
28
29
  const labels = { ...defaultMediaVideoPlayerLabels, ...labelOverrides };
29
30
  const chrome = useViewerChrome();
@@ -1,7 +1,12 @@
1
+ /** Lowest image zoom, in percent. */
1
2
  export const MIN_ZOOM = 25;
3
+ /** Highest image zoom, in percent. */
2
4
  export const MAX_ZOOM = 400;
5
+ /** Percent added or removed by one zoom-in or zoom-out press. */
3
6
  export const ZOOM_STEP = 25;
7
+ /** Rates offered in the playback-speed menu. */
4
8
  export const PLAYBACK_SPEEDS = [0.5, 0.75, 1, 1.25, 1.5, 2];
9
+ /** Seconds skipped by the rewind and forward buttons and their J / L keys. */
5
10
  export const SEEK_STEP_SECONDS = 10;
6
11
  const ABSOLUTE_URL_RE = /^(blob:|data:|https?:)/;
7
12
  /** Passes an already-absolute url through untouched; only a bare stored path goes through resolveUrl. */
@@ -3,12 +3,15 @@ import { Modal as ChakraModal, ModalOverlay, ModalContent, ModalHeader as Chakra
3
3
  import { useCustomTheme } from "../../Theme/useCustomTheme.js";
4
4
  import { warnDroppedSlotChildren } from "./warnDroppedSlotChildren.js";
5
5
  import { findSlot } from "../Common/findSlot.js";
6
+ /** Header slot of `Modal`; its style props are spread onto the rendered header. */
6
7
  export const ModalHeader = ({ children }) => {
7
8
  return _jsx(_Fragment, { children: children });
8
9
  };
10
+ /** Body slot of `Modal`; its style props are spread onto the rendered body. */
9
11
  export const ModalBody = ({ children }) => {
10
12
  return _jsx(_Fragment, { children: children });
11
13
  };
14
+ /** Footer slot of `Modal`; its style props are spread onto the rendered footer. */
12
15
  export const ModalFooter = ({ children }) => {
13
16
  return _jsx(_Fragment, { children: children });
14
17
  };
@@ -19,6 +19,7 @@ const generateUniqueId = (() => {
19
19
  return `${Date.now()}-${counter}`;
20
20
  };
21
21
  })();
22
+ /** Email chip input: typed addresses are validated and committed on Enter, shown as removable chips. */
22
23
  export default function MultiSelect({ value, onValueChange, width = "100%", label = "label", isRequired = true, isInformation = false, informationMessage = "", name, id, placeholderText = "Type valid email and press enter", isDisabled, isReadOnly, addOnBlur = false, size = DEFAULT_CONTROL_SIZE, inputStyle, helperText, error, errorMessage, }) {
23
24
  const theme = useCustomTheme();
24
25
  const s = getSearchSelectSizeStyles((size || DEFAULT_CONTROL_SIZE));
@@ -14,6 +14,7 @@ import { transitionFor } from "../../Theme/tokens/primitives/motion.js";
14
14
  const BACKGROUND_TRANSITION = transitionFor(["background"]);
15
15
  // Roomy enough to hover without aiming: the glyph is only 1.25rem.
16
16
  const SIDEBAR_TOGGLE_HIT = "2.5rem";
17
+ /** Top bar with sidebar toggle, optional back button and title, a right-hand slot, and an avatar menu of navigation entries plus logout. */
17
18
  export default function NavBar({ userAvathar, userName, userRole, navMenu, moreIcon, handleNavOnClick, handleLogout, logoutText, navigationBarText, sideBarToggole, onSideBarToggole, forceSideBarToggle = false, onSideBarPeek, leading, }) {
18
19
  const theme = useCustomTheme();
19
20
  const rowBackgrounds = listRowBackgrounds(theme.colors);
@@ -7,13 +7,16 @@ import { accentTextOnCanvas, isDarkCanvas, onFilled } from "../../Theme/tokens/b
7
7
  import { chartMode } from "../../Theme/tokens/builders/chartColorsFromTheme.js";
8
8
  import { resolveHoverTint } from "../../Theme/tokens/builders/outlineRung.js";
9
9
  import { raisedRule } from "../../Theme/tokens/builders/surfaceRaised.js";
10
- import { listRowBackgrounds } from "../../Theme/tokens/builders/rowStates.js";
11
- import { optionRowCursorSx } from "../Select/optionRowInk.js";
10
+ import { selectRowBackgrounds } from "../../Theme/tokens/builders/rowStates.js";
11
+ import { optionRowWeight } from "../Select/optionRowInk.js";
12
+ import { keyboardRingShadow } from "../Select/selectKeyboardRing.js";
13
+ import { selectRowDescriptionInk, selectRowInk } from "../Select/selectRowInk.js";
12
14
  import { useExclusiveOverlay } from "../../Hooks/useExclusiveOverlay.js";
13
15
  import { useMatchMedia } from "../../Hooks/useMatchMedia.js";
14
16
  import ToolTip from "../ToolTip/ToolTip.js";
15
17
  import { avatarColor, orgInitial, } from "./OrgSwitcherProps.js";
16
18
  import { transitionFor } from "../../Theme/tokens/primitives/motion.js";
19
+ import { OPTION_ROW_RADIUS } from "../../Theme/tokens/primitives/optionRowSizes.js";
17
20
  const BACKGROUND_TRANSITION = transitionFor(["background"]);
18
21
  const sizeMap = {
19
22
  sm: { h: "32px", avatarH: "32px", avatar: "22px", font: "0.8rem", sub: "0.65rem", px: 2 },
@@ -29,12 +32,17 @@ const Avatar = ({ org, boxSize, fontSize, }) => {
29
32
  const fill = avatarColor(org.name, chartMode(colors));
30
33
  return (_jsx(Flex, { "aria-hidden": "true", "data-initials": orgInitial(org.name), _before: { content: "attr(data-initials)" }, align: "center", justify: "center", boxSize: boxSize, borderRadius: "lg", flexShrink: 0, bg: fill, color: onFilled(fill, colors.white, colors.black), fontSize: fontSize, fontWeight: 700 }));
31
34
  };
35
+ /** Session-scoped organization switcher: a trigger plus searchable popover that reports the chosen org via `onChange`. */
32
36
  const OrgSwitcher = ({ organizations, value, onChange, isLoading = false, isSearchable, searchThreshold = 6, triggerVariant = "ghost", size = "md", maxWidth = "200px", menuMinWidth = "280px", placeholder = "Select organization", ariaLabel = "Switch organization", showRole = true, display = "full", }) => {
33
37
  var _a, _b, _c;
34
38
  const theme = useCustomTheme();
35
39
  const isMd = useMatchMedia(MD_QUERY, true);
36
40
  const avatarOnly = display === "avatar" || (display === "auto" && !isMd);
37
- const rowBackgrounds = useMemo(() => listRowBackgrounds(theme.colors), [theme.colors]);
41
+ const rowBackgrounds = useMemo(() => selectRowBackgrounds(theme.colors), [theme.colors]);
42
+ const keyboardRing = {
43
+ outline: "2px solid transparent",
44
+ boxShadow: keyboardRingShadow(rowBackgrounds.keyboardRing),
45
+ };
38
46
  const s = sizeMap[size];
39
47
  const { isOpen, onOpen, onClose } = useDisclosure();
40
48
  const requestExclusiveOpen = useExclusiveOverlay(isOpen, onClose);
@@ -105,7 +113,7 @@ const OrgSwitcher = ({ organizations, value, onChange, isLoading = false, isSear
105
113
  return (_jsxs(Popover, { isOpen: isOpen, onOpen: handlePopoverOpen, onClose: () => {
106
114
  onClose();
107
115
  setQuery("");
108
- }, placement: "bottom-start", initialFocusRef: showSearch ? searchRef : firstOptionRef, isLazy: true, children: [avatarOnly ? (_jsx(ToolTip, { label: (_c = selected === null || selected === void 0 ? void 0 : selected.name) !== null && _c !== void 0 ? _c : placeholder, placement: "bottom", isDisabled: isOpen, children: _jsx(Box, { as: "span", display: "inline-flex", flexShrink: 0, children: _jsx(PopoverTrigger, { children: trigger }) }) })) : (_jsx(PopoverTrigger, { children: trigger })), _jsx(PopoverContent, { minW: menuMinWidth, maxW: "calc(100vw - 32px)", w: "auto",
116
+ }, placement: "bottom-start", initialFocusRef: showSearch ? searchRef : firstOptionRef, isLazy: true, children: [avatarOnly ? (_jsx(ToolTip, { label: (_c = selected === null || selected === void 0 ? void 0 : selected.name) !== null && _c !== void 0 ? _c : placeholder, placement: "bottom", isDisabled: isOpen, children: _jsx(Box, { as: "span", display: "inline-flex", flexShrink: 0, children: _jsx(PopoverTrigger, { children: trigger }) }) })) : (_jsx(PopoverTrigger, { children: trigger })), _jsx(PopoverContent, { "aria-label": ariaLabel, minW: menuMinWidth, maxW: "calc(100vw - 32px)", w: "auto",
109
117
  // NOTE: Chakra's --popper-bg is hardcoded white via dead _dark — without an explicit bg the panel stayed white.
110
118
  bg: theme.colors.surfaceRaised, borderRadius: "xl", overflow: "hidden", boxShadow: "float", _focus: { outline: "none", boxShadow: "float" }, children: _jsxs(PopoverBody, { p: 0, children: [showSearch && (_jsx(Box, { p: 2, borderBottom: "1px solid", borderColor: searchRule, children: _jsxs(InputGroup, { size: "sm", children: [_jsx(InputLeftElement, { pointerEvents: "none", children: _jsx(Search, { size: 15, color: theme.colors.textMuted }) }), _jsx(Input, { ref: searchRef, placeholder: "Search organizations", value: query, onChange: (e) => setQuery(e.target.value), onKeyDown: (e) => {
111
119
  if (e.key === "ArrowDown" && filtered.length > 0) {
@@ -118,7 +126,7 @@ const OrgSwitcher = ({ organizations, value, onChange, isLoading = false, isSear
118
126
  optionRefs.current[idx] = el;
119
127
  if (idx === 0)
120
128
  firstOptionRef.current = el;
121
- }, tabIndex: idx === activeIndex ? 0 : -1, align: "center", gap: "10px", w: "100%", textAlign: "left", border: "none", fontFamily: "inherit", px: 3, py: 2, cursor: "pointer", bg: "transparent", transition: BACKGROUND_TRANSITION, ...optionRowCursorSx(rowBackgrounds), onClick: () => handleSelect(org), children: [_jsx(Avatar, { org: org, boxSize: s.avatar, fontSize: s.sub }), _jsxs(Box, { flex: "1", minW: 0, children: [_jsx(Text, { fontSize: s.font, fontWeight: isActive ? 600 : 500, color: theme.colors.text[900], overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", children: org.name }), showRole && org.role && (_jsx(Text, { fontSize: s.sub, color: theme.colors.text[500], overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", children: org.role }))] }), isActive && (_jsx(Box, { as: Check, size: 16, color: theme.colors.accentText, flexShrink: 0 }))] }, org.id));
129
+ }, tabIndex: idx === activeIndex ? 0 : -1, align: "center", gap: "10px", w: "calc(100% - 0.5rem)", mx: 1, textAlign: "left", border: "none", fontFamily: "inherit", px: 3, py: 2, borderRadius: OPTION_ROW_RADIUS, cursor: "pointer", bg: isActive ? rowBackgrounds.selected : "transparent", transition: BACKGROUND_TRANSITION, _hover: { bg: isActive ? rowBackgrounds.selectedActive : rowBackgrounds.active }, _focus: { bg: isActive ? rowBackgrounds.selectedActive : rowBackgrounds.active }, _focusVisible: keyboardRing, onClick: () => handleSelect(org), children: [_jsx(Avatar, { org: org, boxSize: s.avatar, fontSize: s.sub }), _jsxs(Box, { flex: "1", minW: 0, children: [_jsx(Text, { fontSize: s.font, fontWeight: optionRowWeight(isActive), color: selectRowInk(theme.colors, isActive), overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", children: org.name }), showRole && org.role && (_jsx(Text, { fontSize: s.sub, color: selectRowDescriptionInk(theme.colors), overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap", children: org.role }))] }), isActive && (_jsx(Box, { as: Check, size: 16, color: theme.colors.accentText, flexShrink: 0 }))] }, org.id));
122
130
  }), filtered.length === 0 && (_jsx(Text, { fontSize: "sm", color: theme.colors.textMuted, textAlign: "center", py: 6, children: "No organizations found" }))] })] }) })] }));
123
131
  };
124
132
  export default OrgSwitcher;
@@ -13,6 +13,7 @@ const TONE_ICON = {
13
13
  warning: Clock,
14
14
  danger: AlertCircle,
15
15
  };
16
+ /** Gradient pill button with plan label, optional time-left chip and a tone-based icon; always renders a `<button>`. */
16
17
  const PlanPill = ({ label, mobileLabel, status, tone = "normal", icon, gradient, maxLabelWidth = "150px", ariaLabel, onClick, }) => {
17
18
  const theme = useCustomTheme();
18
19
  const c = theme.colors;