pixelize-design-library 2.4.2-beta.43 → 2.4.2-beta.45
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.
- package/CHANGELOG.md +195 -0
- package/COMPONENT-GOTCHAS.md +457 -241
- package/DESIGN-GUIDE.md +210 -0
- package/README.md +51 -26
- package/dist/Components/Accordion/Accordion.js +7 -9
- package/dist/Components/Accordion/accordionColors.d.ts +6 -0
- package/dist/Components/Accordion/accordionColors.js +11 -11
- package/dist/Components/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/Components/AlertDialog/AlertDialog.js +5 -5
- package/dist/Components/AlertDialog/AlertDialogProps.d.ts +27 -4
- package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChart.js +6 -2
- package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.js +7 -4
- package/dist/Components/Apexcharts/ApexChartFallback.d.ts +7 -0
- package/dist/Components/Apexcharts/ApexChartFallback.js +10 -0
- package/dist/Components/Apexcharts/ApexLineChart/ApexLineChart.js +6 -2
- package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.js +6 -2
- package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.js +8 -5
- package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChart.js +6 -4
- package/dist/Components/Apexcharts/LazyReactApexChart.d.ts +2 -0
- package/dist/Components/Apexcharts/LazyReactApexChart.js +40 -0
- package/dist/Components/AppSwitcher/AppMark.d.ts +0 -5
- package/dist/Components/AppSwitcher/AppMark.js +1 -5
- package/dist/Components/AppSwitcher/AppSwitcher.js +4 -9
- package/dist/Components/Avatar/Avatar.d.ts +3 -0
- package/dist/Components/Avatar/Avatar.js +24 -0
- package/dist/Components/Avatar/AvatarGroup.d.ts +3 -0
- package/dist/Components/Avatar/AvatarGroup.js +24 -0
- package/dist/Components/Avatar/AvatarGroupProps.d.ts +19 -0
- package/dist/Components/Avatar/AvatarProps.d.ts +22 -0
- package/dist/Components/Avatar/AvatarProps.js +2 -0
- package/dist/Components/Avatar/avatarColorway.d.ts +11 -0
- package/dist/Components/Avatar/avatarColorway.js +31 -0
- package/dist/Components/Avatar/avatarSizing.d.ts +5 -0
- package/dist/Components/Avatar/avatarSizing.js +15 -0
- package/dist/Components/Backdrop/Backdrop.d.ts +3 -0
- package/dist/Components/Backdrop/Backdrop.js +34 -0
- package/dist/Components/Backdrop/BackdropProps.d.ts +33 -0
- package/dist/Components/Backdrop/BackdropProps.js +2 -0
- package/dist/Components/Breadcrumbs/Breadcrumbs.js +14 -4
- package/dist/Components/Breadcrumbs/breadcrumbInk.d.ts +9 -0
- package/dist/Components/Breadcrumbs/breadcrumbInk.js +11 -0
- package/dist/Components/Button/Button.js +2 -2
- package/dist/Components/Button/Button.styles.js +21 -62
- package/dist/Components/Button/ButtonProps.d.ts +8 -2
- package/dist/Components/ButtonGroupIcon/ButtonGoupIconProps.d.ts +2 -42
- package/dist/Components/ButtonGroupIcon/ButtonGoupIconProps.js +16 -0
- package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.d.ts +1 -1
- package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +3 -10
- package/dist/Components/ButtonGroupIcon/ButtonGroupIconProps.d.ts +42 -0
- package/dist/Components/ButtonGroupIcon/ButtonGroupIconProps.js +2 -0
- package/dist/Components/Buttons/Buttons.d.ts +1 -1
- package/dist/Components/Buttons/Buttons.js +5 -3
- package/dist/Components/Buttons/ButtonsProps.d.ts +5 -1
- package/dist/Components/Card/Card.d.ts +18 -2
- package/dist/Components/Card/Card.js +10 -5
- package/dist/Components/Card/CardProps.d.ts +27 -9
- package/dist/Components/Card/PaymentCard/PaymentCard.js +13 -9
- package/dist/Components/Checkbox/Checkbox.d.ts +2 -2
- package/dist/Components/Checkbox/Checkbox.js +11 -9
- package/dist/Components/Checkbox/Checkbox.styles.js +41 -36
- package/dist/Components/Checkbox/CheckboxProps.d.ts +11 -2
- package/dist/Components/Common/ErrorComponent.d.ts +1 -1
- package/dist/Components/Common/ErrorComponent.js +1 -1
- package/dist/Components/Common/ErrorMessage.d.ts +1 -1
- package/dist/Components/Common/ErrorMessage.js +3 -3
- package/dist/Components/Common/FieldMessage.d.ts +9 -0
- package/dist/Components/Common/FieldMessage.js +19 -0
- package/dist/Components/Common/FormLabel.d.ts +9 -0
- package/dist/Components/Common/FormLabel.js +15 -9
- package/dist/Components/Common/HelperText.d.ts +1 -1
- package/dist/Components/Common/HelperText.js +3 -2
- package/dist/Components/Common/Label.d.ts +1 -1
- package/dist/Components/Common/Label.js +3 -2
- package/dist/Components/Common/fieldMessageStyles.d.ts +19 -0
- package/dist/Components/Common/fieldMessageStyles.js +18 -0
- package/dist/Components/Common/fieldStyles.d.ts +46 -9
- package/dist/Components/Common/fieldStyles.js +72 -30
- package/dist/Components/Common/useFieldIds.d.ts +16 -0
- package/dist/Components/Common/useFieldIds.js +27 -0
- package/dist/Components/ConfirmDialog/ConfirmDialog.d.ts +4 -0
- package/dist/Components/ConfirmDialog/ConfirmDialog.js +23 -0
- package/dist/Components/ConfirmDialog/ConfirmDialogProps.d.ts +45 -0
- package/dist/Components/ConfirmDialog/ConfirmDialogProps.js +2 -0
- package/dist/Components/ContactForm/ContactForm.d.ts +2 -2
- package/dist/Components/ContactForm/ContactForm.js +19 -15
- package/dist/Components/ContactForm/ContactFormProps.d.ts +16 -2
- package/dist/Components/CopyButton/CopyButton.js +3 -4
- package/dist/Components/CustomModulesTable/DeleteModuleModal.js +2 -2
- package/dist/Components/CustomModulesTable/EditModuleModal.js +2 -4
- package/dist/Components/DatePicker/CalendarPanel.js +5 -9
- package/dist/Components/DatePicker/DatePicker.d.ts +5 -3
- package/dist/Components/DatePicker/DatePicker.js +12 -50
- package/dist/Components/DatePicker/DatePickerProps.d.ts +48 -4
- package/dist/Components/DatePicker/DatePickerProps.js +3 -0
- package/dist/Components/DatePicker/RangeDatePicker.js +17 -21
- package/dist/Components/DatePicker/SingleDatePicker.d.ts +4 -2
- package/dist/Components/DatePicker/SingleDatePicker.js +40 -57
- package/dist/Components/DatePicker/ThemeDatePicker.d.ts +3 -2
- package/dist/Components/DatePicker/ThemeDatePicker.js +12 -18
- package/dist/Components/DatePicker/TimeOnlyPicker.d.ts +5 -3
- package/dist/Components/DatePicker/TimeOnlyPicker.js +37 -23
- package/dist/Components/DatePicker/TimePicker.js +8 -12
- package/dist/Components/DatePicker/TimePickerInput.d.ts +6 -2
- package/dist/Components/DatePicker/TimePickerInput.js +5 -11
- package/dist/Components/DatePicker/dayStates.d.ts +0 -23
- package/dist/Components/DatePicker/dayStates.js +3 -15
- package/dist/Components/DatePicker/pickerField.d.ts +24 -0
- package/dist/Components/DatePicker/pickerField.js +31 -0
- package/dist/Components/DatePicker/valueFormat.d.ts +4 -0
- package/dist/Components/DatePicker/valueFormat.js +21 -0
- package/dist/Components/DescriptionList/DescriptionList.d.ts +4 -0
- package/dist/Components/DescriptionList/DescriptionList.js +32 -0
- package/dist/Components/DescriptionList/DescriptionListProps.d.ts +29 -0
- package/dist/Components/DescriptionList/DescriptionListProps.js +2 -0
- package/dist/Components/Drawer/Drawer.d.ts +5 -11
- package/dist/Components/Drawer/Drawer.js +22 -8
- package/dist/Components/Drawer/DrawerProps.d.ts +16 -4
- package/dist/Components/Dropdown/DropDown.d.ts +1 -1
- package/dist/Components/Dropdown/DropDown.js +42 -32
- package/dist/Components/Dropdown/DropdownProps.d.ts +15 -2
- package/dist/Components/Editor/Editor.js +12 -0
- package/dist/Components/Editor/joditAccessibility.d.ts +1 -0
- package/dist/Components/Editor/joditAccessibility.js +28 -0
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.d.ts +1 -1
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +3 -5
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtpProps.d.ts +1 -1
- package/dist/Components/EmptyState/EmptyState.js +24 -15
- package/dist/Components/EmptyState/EmptyStateProps.d.ts +5 -1
- package/dist/Components/FeedbackForm/FeedbackForm.d.ts +1 -1
- package/dist/Components/FeedbackForm/FeedbackForm.js +19 -6
- package/dist/Components/FieldSelectModal/FieldSelectModal.js +2 -4
- package/dist/Components/FilePreview/FilePreview.js +8 -8
- package/dist/Components/FileUpload/FileUpload.d.ts +1 -1
- package/dist/Components/FileUpload/FileUpload.js +24 -5
- package/dist/Components/FileUpload/FileUploadProps.d.ts +23 -1
- package/dist/Components/FileUpload/constants.d.ts +1 -0
- package/dist/Components/FileUpload/constants.js +2 -1
- package/dist/Components/FileUploader/FileUploader.js +6 -5
- package/dist/Components/FilterBar/FilterBar.d.ts +4 -0
- package/dist/Components/FilterBar/FilterBar.js +17 -0
- package/dist/Components/FilterBar/FilterBarProps.d.ts +25 -0
- package/dist/Components/FilterBar/FilterBarProps.js +2 -0
- package/dist/Components/FilterSidebar/FilterSidebar.js +27 -32
- package/dist/Components/FilterSidebar/filterHoverStyle.d.ts +1 -1
- package/dist/Components/FilterSidebar/filterHoverStyle.js +1 -1
- package/dist/Components/Form/FormWrapper.js +1 -1
- package/dist/Components/Header/Header.d.ts +0 -15
- package/dist/Components/Header/Header.js +2 -16
- package/dist/Components/Header/HeaderActions.d.ts +4 -0
- package/dist/Components/Header/HeaderActions.js +4 -4
- package/dist/Components/Header/HeaderProps.d.ts +14 -1
- package/dist/Components/Header/components/desktopMenu.d.ts +1 -1
- package/dist/Components/Header/components/desktopMenu.js +10 -11
- package/dist/Components/Header/components/mobileMenu.d.ts +1 -1
- package/dist/Components/Header/components/mobileMenu.js +23 -20
- package/dist/Components/Input/Input/Input.d.ts +1 -1
- package/dist/Components/Input/Input/Input.js +3 -2
- package/dist/Components/Input/Input/InputProps.d.ts +4 -1
- package/dist/Components/Input/PhoneNumberInput.d.ts +2 -2
- package/dist/Components/Input/PhoneNumberInput.js +7 -4
- package/dist/Components/Input/PhoneNumberInputProps.d.ts +4 -2
- package/dist/Components/Input/Switch/InputSwitch.d.ts +16 -5
- package/dist/Components/Input/Switch/InputSwitch.js +17 -19
- package/dist/Components/Input/TextInput.js +80 -7
- package/dist/Components/Input/TextInput.styles.d.ts +18 -1
- package/dist/Components/Input/TextInput.styles.js +48 -89
- package/dist/Components/Input/TextInputProps.d.ts +44 -9
- package/dist/Components/Input/textInputIconSize.d.ts +2 -7
- package/dist/Components/Input/textInputIconSize.js +4 -20
- package/dist/Components/Input/useAriaRequired.d.ts +2 -0
- package/dist/Components/Input/useAriaRequired.js +19 -0
- package/dist/Components/InputTextArea/InputTextArea.d.ts +2 -2
- package/dist/Components/InputTextArea/InputTextArea.js +9 -5
- package/dist/Components/InputTextArea/InputTextArea.style.js +14 -69
- package/dist/Components/InputTextArea/InputTextAreaProps.d.ts +9 -2
- package/dist/Components/KanbanBoard/AccountCard.js +8 -5
- package/dist/Components/KanbanBoard/AccountRow.d.ts +1 -1
- package/dist/Components/KanbanBoard/AccountRow.js +1 -1
- package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.js +1 -1
- package/dist/Components/KanbanBoard/KanbanBoard.d.ts +1 -1
- package/dist/Components/KanbanBoard/KanbanBoard.js +85 -49
- package/dist/Components/KanbanBoard/KanbanBoardProps.d.ts +37 -19
- package/dist/Components/KanbanBoard/index.d.ts +2 -0
- package/dist/Components/KanbanBoard/index.js +8 -0
- package/dist/Components/LimitReachedModal/LimitReachedModal.js +1 -1
- package/dist/Components/LimitReachedModal/limitReachedCopy.js +1 -3
- package/dist/Components/Loading/Loading.d.ts +1 -1
- package/dist/Components/Loading/Loading.js +19 -19
- package/dist/Components/Loading/LoadingProps.d.ts +5 -1
- package/dist/Components/MediaViewer/MediaViewer.d.ts +5 -0
- package/dist/Components/MediaViewer/MediaViewer.js +234 -0
- package/dist/Components/MediaViewer/MediaViewerProps.d.ts +92 -0
- package/dist/Components/MediaViewer/MediaViewerProps.js +32 -0
- package/dist/Components/MediaViewer/components/MediaAudioPlayer.d.ts +4 -0
- package/dist/Components/MediaViewer/components/MediaAudioPlayer.js +138 -0
- package/dist/Components/MediaViewer/components/MediaAudioPlayerProps.d.ts +48 -0
- package/dist/Components/MediaViewer/components/MediaAudioPlayerProps.js +21 -0
- package/dist/Components/MediaViewer/components/MediaDocumentStage.d.ts +4 -0
- package/dist/Components/MediaViewer/components/MediaDocumentStage.js +149 -0
- package/dist/Components/MediaViewer/components/MediaDocumentStageProps.d.ts +42 -0
- package/dist/Components/MediaViewer/components/MediaDocumentStageProps.js +11 -0
- package/dist/Components/MediaViewer/components/MediaImageViewer.d.ts +4 -0
- package/dist/Components/MediaViewer/components/MediaImageViewer.js +103 -0
- package/dist/Components/MediaViewer/components/MediaImageViewerProps.d.ts +47 -0
- package/dist/Components/MediaViewer/components/MediaImageViewerProps.js +18 -0
- package/dist/Components/MediaViewer/components/MediaScrubber.d.ts +5 -0
- package/dist/Components/MediaViewer/components/MediaScrubber.js +89 -0
- package/dist/Components/MediaViewer/components/MediaScrubberProps.d.ts +30 -0
- package/dist/Components/MediaViewer/components/MediaScrubberProps.js +2 -0
- package/dist/Components/MediaViewer/components/MediaStatusPanel.d.ts +5 -0
- package/dist/Components/MediaViewer/components/MediaStatusPanel.js +14 -0
- package/dist/Components/MediaViewer/components/MediaStatusPanelProps.d.ts +24 -0
- package/dist/Components/MediaViewer/components/MediaStatusPanelProps.js +2 -0
- package/dist/Components/MediaViewer/components/MediaVideoPlayer.d.ts +4 -0
- package/dist/Components/MediaViewer/components/MediaVideoPlayer.js +248 -0
- package/dist/Components/MediaViewer/components/MediaVideoPlayerProps.d.ts +71 -0
- package/dist/Components/MediaViewer/components/MediaVideoPlayerProps.js +31 -0
- package/dist/Components/MediaViewer/components/TileChip.d.ts +5 -0
- package/dist/Components/MediaViewer/components/TileChip.js +12 -0
- package/dist/Components/MediaViewer/components/TileChipProps.d.ts +7 -0
- package/dist/Components/MediaViewer/components/TileChipProps.js +2 -0
- package/dist/Components/MediaViewer/components/VideoPoster.d.ts +5 -0
- package/dist/Components/MediaViewer/components/VideoPoster.js +16 -0
- package/dist/Components/MediaViewer/components/VideoPosterProps.d.ts +6 -0
- package/dist/Components/MediaViewer/components/VideoPosterProps.js +2 -0
- package/dist/Components/MediaViewer/components/ViewerIconButton.d.ts +5 -0
- package/dist/Components/MediaViewer/components/ViewerIconButton.js +20 -0
- package/dist/Components/MediaViewer/components/ViewerIconButtonProps.d.ts +24 -0
- package/dist/Components/MediaViewer/components/ViewerIconButtonProps.js +2 -0
- package/dist/Components/MediaViewer/components/mediaKindIcon.d.ts +5 -0
- package/dist/Components/MediaViewer/components/mediaKindIcon.js +23 -0
- package/dist/Components/MediaViewer/components/sanitizeDocxHrefs.d.ts +1 -0
- package/dist/Components/MediaViewer/components/sanitizeDocxHrefs.js +30 -0
- package/dist/Components/MediaViewer/hooks/useAutoHideChrome.d.ts +15 -0
- package/dist/Components/MediaViewer/hooks/useAutoHideChrome.js +43 -0
- package/dist/Components/MediaViewer/hooks/useFileViewer.d.ts +18 -0
- package/dist/Components/MediaViewer/hooks/useFileViewer.js +51 -0
- package/dist/Components/MediaViewer/mediaItems.d.ts +64 -0
- package/dist/Components/MediaViewer/mediaItems.js +196 -0
- package/dist/Components/MediaViewer/useViewerChrome.d.ts +15 -0
- package/dist/Components/MediaViewer/useViewerChrome.js +30 -0
- package/dist/Components/Modal/Modal.d.ts +5 -11
- package/dist/Components/Modal/Modal.js +24 -18
- package/dist/Components/Modal/ModalProps.d.ts +19 -4
- package/dist/Components/MoreItems/MoreItems.js +4 -2
- package/dist/Components/MultiSelect/MultiSelect.d.ts +1 -1
- package/dist/Components/MultiSelect/MultiSelect.js +40 -28
- package/dist/Components/MultiSelect/MultiSelectProps.d.ts +13 -3
- package/dist/Components/NavigationBar/NavigationBar.js +10 -8
- package/dist/Components/NoteTextArea/NoteTextArea.d.ts +4 -2
- package/dist/Components/NoteTextArea/NoteTextArea.js +13 -9
- package/dist/Components/NoteTextArea/NoteTextAreaProps.d.ts +4 -2
- package/dist/Components/Notification/Notification.d.ts +1 -1
- package/dist/Components/Notification/Notification.js +10 -3
- package/dist/Components/Notification/NotificationProps.d.ts +1 -1
- package/dist/Components/NotificationBell/NotificationBell.d.ts +4 -0
- package/dist/Components/NotificationBell/NotificationBell.js +35 -0
- package/dist/Components/NotificationBell/NotificationBellProps.d.ts +147 -0
- package/dist/Components/NotificationBell/NotificationBellProps.js +2 -0
- package/dist/Components/NotificationBell/NotificationItem.d.ts +4 -0
- package/dist/Components/NotificationBell/NotificationItem.js +34 -0
- package/dist/Components/NotificationBell/NotificationList.d.ts +4 -0
- package/dist/Components/NotificationBell/NotificationList.js +41 -0
- package/dist/Components/NotificationBell/NotificationPanel.d.ts +4 -0
- package/dist/Components/NotificationBell/NotificationPanel.js +36 -0
- package/dist/Components/NotificationBell/index.d.ts +6 -0
- package/dist/Components/NotificationBell/index.js +30 -0
- package/dist/Components/NotificationBell/notificationHelpers.d.ts +32 -0
- package/dist/Components/NotificationBell/notificationHelpers.js +115 -0
- package/dist/Components/NumberInput/NumberInput.d.ts +6 -2
- package/dist/Components/NumberInput/NumberInput.js +9 -5
- package/dist/Components/NumberInput/NumberInput.styles.js +19 -78
- package/dist/Components/NumberInput/NumberInputProps.d.ts +20 -1
- package/dist/Components/OrgSwitcher/OrgSwitcher.js +4 -12
- package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +1 -1
- package/dist/Components/OrgSwitcher/OrgSwitcherProps.js +2 -1
- package/dist/Components/OrganizationDetails/CreateOrgModal.js +1 -1
- package/dist/Components/OrganizationDetails/DeleteOrgModal.js +4 -6
- package/dist/Components/OrganizationDetails/OrganizationDetails.js +8 -7
- package/dist/Components/PageHeader/PageHeader.d.ts +4 -0
- package/dist/Components/PageHeader/PageHeader.js +11 -0
- package/dist/Components/PageHeader/PageHeaderProps.d.ts +20 -0
- package/dist/Components/PageHeader/PageHeaderProps.js +2 -0
- package/dist/Components/PdfViewer/PdfViewer.js +1 -1
- package/dist/Components/PersonChip/PersonChip.d.ts +3 -0
- package/dist/Components/PersonChip/PersonChip.js +47 -0
- package/dist/Components/PersonChip/PersonChipProps.d.ts +33 -0
- package/dist/Components/PersonChip/PersonChipProps.js +2 -0
- package/dist/Components/PinInput/PinInput.d.ts +2 -2
- package/dist/Components/PinInput/PinInput.js +11 -10
- package/dist/Components/PinInput/PinInputProps.d.ts +3 -2
- package/dist/Components/PinInput/pinInputCellSize.d.ts +7 -0
- package/dist/Components/PinInput/pinInputCellSize.js +10 -0
- package/dist/Components/PlanBadge/PlanBadge.d.ts +0 -7
- package/dist/Components/PlanBadge/PlanBadge.js +1 -7
- package/dist/Components/PlanPill/PlanPill.js +2 -3
- package/dist/Components/PlanPill/planPillGradient.d.ts +5 -21
- package/dist/Components/PlanPill/planPillGradient.js +8 -23
- package/dist/Components/Primitives/Primitives.d.ts +3 -6
- package/dist/Components/Primitives/Primitives.js +3 -41
- package/dist/Components/ProductCard/ProductPrice.js +18 -7
- package/dist/Components/ProductCard/ProductReview.js +3 -2
- package/dist/Components/ProductDetails/ProductDetails.js +1 -1
- package/dist/Components/ProductDetails/ProductDtlPrice.js +5 -5
- package/dist/Components/ProductDetails/ProductImageSlider.d.ts +3 -1
- package/dist/Components/ProductDetails/ProductImageSlider.js +36 -20
- package/dist/Components/ProfileCard/ProfileCard.d.ts +4 -10
- package/dist/Components/ProfileCard/ProfileCard.js +25 -10
- package/dist/Components/ProfileCard/ProfileCardProps.d.ts +8 -2
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +7 -4
- package/dist/Components/ProgressBar/ProgressBar.d.ts +1 -1
- package/dist/Components/ProgressBar/ProgressBar.js +27 -3
- package/dist/Components/ProgressBar/ProgressBarProps.d.ts +10 -4
- package/dist/Components/QueryState/ErrorState.d.ts +4 -0
- package/dist/Components/QueryState/ErrorState.js +16 -0
- package/dist/Components/QueryState/QueryStateBoundary.d.ts +4 -0
- package/dist/Components/QueryState/QueryStateBoundary.js +25 -0
- package/dist/Components/QueryState/QueryStateProps.d.ts +48 -0
- package/dist/Components/QueryState/QueryStateProps.js +2 -0
- package/dist/Components/RadioButton/RadioButton.d.ts +2 -2
- package/dist/Components/RadioButton/RadioButton.js +34 -14
- package/dist/Components/RadioButton/RadioButtonProps.d.ts +50 -6
- package/dist/Components/RangeSlider/RangeSlider.d.ts +4 -0
- package/dist/Components/RangeSlider/RangeSlider.js +136 -0
- package/dist/Components/RangeSlider/RangeSliderProps.d.ts +74 -0
- package/dist/Components/RangeSlider/RangeSliderProps.js +2 -0
- package/dist/Components/RangeSlider/rangeSliderColors.d.ts +9 -0
- package/dist/Components/RangeSlider/rangeSliderColors.js +11 -0
- package/dist/Components/RangeSlider/rangeSliderMath.d.ts +16 -0
- package/dist/Components/RangeSlider/rangeSliderMath.js +79 -0
- package/dist/Components/RangeSlider/rangeSliderSize.d.ts +7 -0
- package/dist/Components/RangeSlider/rangeSliderSize.js +12 -0
- package/dist/Components/Reorder/Reorder.d.ts +1 -6
- package/dist/Components/Reorder/Reorder.js +2 -2
- package/dist/Components/Reorder/ReorderProps.d.ts +5 -2
- package/dist/Components/RolesPermission/DeleteRoleModal.js +4 -6
- package/dist/Components/RolesPermission/RolesPermission.js +1 -1
- package/dist/Components/SaveBar/SaveBar.d.ts +4 -0
- package/dist/Components/SaveBar/SaveBar.js +24 -0
- package/dist/Components/SaveBar/SaveBarProps.d.ts +22 -0
- package/dist/Components/SaveBar/SaveBarProps.js +2 -0
- package/dist/Components/ScrollToTop/ScrollToTop.js +5 -2
- package/dist/Components/Search/Search.d.ts +3 -2
- package/dist/Components/Search/Search.js +33 -15
- package/dist/Components/Search/SearchProps.d.ts +26 -4
- package/dist/Components/SearchSelect/SearchSelect.d.ts +2 -1
- package/dist/Components/SearchSelect/SearchSelect.js +61 -75
- package/dist/Components/SearchSelect/SearchSelectProps.d.ts +27 -3
- package/dist/Components/SearchSelect/searchSelectSize.d.ts +4 -14
- package/dist/Components/SearchSelect/searchSelectSize.js +15 -15
- package/dist/Components/SegmentedControl/SegmentedControl.d.ts +1 -1
- package/dist/Components/SegmentedControl/SegmentedControl.js +53 -31
- package/dist/Components/SegmentedControl/SegmentedControlProps.d.ts +12 -2
- package/dist/Components/SegmentedControl/segmentedInk.d.ts +11 -0
- package/dist/Components/SegmentedControl/segmentedInk.js +30 -0
- package/dist/Components/SegmentedControl/useSlidingPill.d.ts +11 -0
- package/dist/Components/SegmentedControl/useSlidingPill.js +25 -0
- package/dist/Components/Select/Select.d.ts +5 -2
- package/dist/Components/Select/Select.js +65 -24
- package/dist/Components/Select/Select.styles.js +12 -81
- package/dist/Components/Select/SelectNative.d.ts +63 -0
- package/dist/Components/Select/SelectNative.js +49 -0
- package/dist/Components/Select/SelectPopup.d.ts +5 -0
- package/dist/Components/Select/SelectPopup.js +423 -0
- package/dist/Components/Select/SelectProps.d.ts +122 -16
- package/dist/Components/SelectSearch/SelectSearch.d.ts +2 -2
- package/dist/Components/SelectSearch/SelectSearch.js +16 -78
- package/dist/Components/SelectSearch/SelectSearchProps.d.ts +31 -2
- package/dist/Components/SelectV2/SelectV2.d.ts +15 -3
- package/dist/Components/SelectV2/SelectV2.js +17 -264
- package/dist/Components/SelectV2/SelectV2Props.d.ts +39 -13
- package/dist/Components/SettingRow/SettingRow.d.ts +4 -0
- package/dist/Components/SettingRow/SettingRow.js +24 -0
- package/dist/Components/SettingRow/SettingRowProps.d.ts +16 -0
- package/dist/Components/SettingRow/SettingRowProps.js +2 -0
- package/dist/Components/SettingRow/SettingsSection.d.ts +4 -0
- package/dist/Components/SettingRow/SettingsSection.js +16 -0
- package/dist/Components/SettingRow/SettingsSectionProps.d.ts +18 -0
- package/dist/Components/SettingRow/SettingsSectionProps.js +2 -0
- package/dist/Components/SideBar/SecondaryBar.js +21 -10
- package/dist/Components/SideBar/SideBar.js +38 -22
- package/dist/Components/SideBar/SideBarProps.d.ts +10 -1
- package/dist/Components/SideBar/components/MenuItemBox.d.ts +2 -0
- package/dist/Components/SideBar/components/MenuItemBox.js +44 -28
- package/dist/Components/SideBar/components/MenuItems.js +4 -4
- package/dist/Components/SideBar/components/MenuPopoverContent.js +21 -10
- package/dist/Components/SideBar/components/OtherApps.js +3 -3
- package/dist/Components/SideBar/components/OverflowTooltipText.js +3 -1
- package/dist/Components/SideBar/components/TextTruncation.js +3 -3
- package/dist/Components/SideBar/menuDisabled.d.ts +5 -0
- package/dist/Components/SideBar/menuDisabled.js +7 -0
- package/dist/Components/SideBar/sidebarId.d.ts +2 -0
- package/dist/Components/SideBar/sidebarId.js +6 -0
- package/dist/Components/SideBar/sidebarScale.d.ts +15 -0
- package/dist/Components/SideBar/sidebarScale.js +18 -0
- package/dist/Components/Skeletons/SkeletonProps.d.ts +4 -2
- package/dist/Components/Skeletons/Skeletons.d.ts +1 -1
- package/dist/Components/Skeletons/Skeletons.js +2 -2
- package/dist/Components/Slider/Slider.js +2 -1
- package/dist/Components/Spinner/Spinner.d.ts +3 -0
- package/dist/Components/Spinner/Spinner.js +22 -0
- package/dist/Components/Spinner/SpinnerProps.d.ts +15 -0
- package/dist/Components/Spinner/SpinnerProps.js +2 -0
- package/dist/Components/StageProgress/StageItem.js +12 -4
- package/dist/Components/StageProgress/StageProgress.js +6 -7
- package/dist/Components/StageProgress/StageProgressProps.d.ts +9 -3
- package/dist/Components/StageProgress/StageProgressProps.js +6 -2
- package/dist/Components/StageProgress/StepperStage.js +5 -2
- package/dist/Components/StatCard/StatCard.d.ts +4 -0
- package/dist/Components/StatCard/StatCard.js +42 -0
- package/dist/Components/StatCard/StatCardProps.d.ts +26 -0
- package/dist/Components/StatCard/StatCardProps.js +2 -0
- package/dist/Components/Switch/Switch.d.ts +2 -2
- package/dist/Components/Switch/Switch.js +11 -9
- package/dist/Components/Switch/SwitchProps.d.ts +7 -1
- package/dist/Components/Table/Table.d.ts +1 -1
- package/dist/Components/Table/Table.js +56 -49
- package/dist/Components/Table/TableProps.d.ts +46 -8
- package/dist/Components/Table/components/HeaderActions.js +3 -2
- package/dist/Components/Table/components/Pagination.d.ts +2 -2
- package/dist/Components/Table/components/Pagination.js +12 -4
- package/dist/Components/Table/components/TableActions.js +1 -1
- package/dist/Components/Table/components/TableBody.d.ts +1 -1
- package/dist/Components/Table/components/TableBody.js +33 -41
- package/dist/Components/Table/components/TableGroupRow.js +1 -1
- package/dist/Components/Table/components/TableHeader.d.ts +1 -1
- package/dist/Components/Table/components/TableHeader.js +14 -12
- package/dist/Components/Table/components/TableSearch.js +1 -1
- package/dist/Components/Table/components/rowMetrics.d.ts +11 -0
- package/dist/Components/Table/components/rowMetrics.js +16 -0
- package/dist/Components/Table/filters/ActiveFilters.js +7 -4
- package/dist/Components/Table/filters/CompactSelect.js +1 -1
- package/dist/Components/Table/filters/LeftFilterPane.js +1 -1
- package/dist/Components/Table/filters/SelectOperationControls.js +9 -1
- package/dist/Components/Table/filters/TableFilters.js +1 -1
- package/dist/Components/Table/filters/TextOperationControls.js +8 -1
- package/dist/Components/Table/hooks/useTable.d.ts +3 -11
- package/dist/Components/Table/hooks/useTable.js +19 -26
- package/dist/Components/Table/settings/ManageColumns.js +7 -6
- package/dist/Components/Table/settings/TableSettings.js +5 -4
- package/dist/Components/Table/variants/classic.js +2 -0
- package/dist/Components/Table/variants/stripe.d.ts +3 -0
- package/dist/Components/Table/variants/stripe.js +7 -0
- package/dist/Components/Table/variants/studio.js +2 -0
- package/dist/Components/Table/variants/tokens.d.ts +2 -0
- package/dist/Components/Tabs/Tabs.d.ts +3 -0
- package/dist/Components/Tabs/Tabs.js +70 -0
- package/dist/Components/Tabs/TabsContext.d.ts +22 -0
- package/dist/Components/Tabs/TabsContext.js +16 -0
- package/dist/Components/Tabs/TabsProps.d.ts +74 -0
- package/dist/Components/Tabs/TabsProps.js +2 -0
- package/dist/Components/Tabs/components/CountBadge.d.ts +12 -0
- package/dist/Components/Tabs/components/CountBadge.js +17 -0
- package/dist/Components/Tabs/components/Tab.d.ts +3 -0
- package/dist/Components/Tabs/components/Tab.js +49 -0
- package/dist/Components/Tabs/components/TabList.d.ts +3 -0
- package/dist/Components/Tabs/components/TabList.js +71 -0
- package/dist/Components/Tabs/components/TabPanel.d.ts +3 -0
- package/dist/Components/Tabs/components/TabPanel.js +17 -0
- package/dist/Components/Tabs/components/TabPanels.d.ts +3 -0
- package/dist/Components/Tabs/components/TabPanels.js +14 -0
- package/dist/Components/Tabs/index.d.ts +6 -0
- package/dist/Components/Tabs/index.js +16 -0
- package/dist/Components/Tabs/tabStyles.d.ts +15 -0
- package/dist/Components/Tabs/tabStyles.js +38 -0
- package/dist/Components/Tag/Tag.js +14 -6
- package/dist/Components/Tag/Tag.styles.d.ts +2 -0
- package/dist/Components/Tag/Tag.styles.js +44 -37
- package/dist/Components/Tag/TagProps.d.ts +17 -4
- package/dist/Components/Timeline/Timeline.d.ts +1 -1
- package/dist/Components/Timeline/Timeline.js +42 -30
- package/dist/Components/Timeline/TimelineProps.d.ts +25 -2
- package/dist/Components/Toaster/Toaster.js +73 -55
- package/dist/Components/Toaster/ToasterProps.d.ts +18 -5
- package/dist/Components/Toaster/toastDuration.d.ts +4 -0
- package/dist/Components/Toaster/toastDuration.js +7 -0
- package/dist/Components/Toggle/TableToggle.d.ts +1 -1
- package/dist/Components/Toggle/TableToggle.js +10 -25
- package/dist/Components/Toggle/TableToggleProps.d.ts +3 -2
- package/dist/Components/ToggleSwitch/ToggleSwitch.d.ts +2 -2
- package/dist/Components/ToggleSwitch/ToggleSwitch.js +41 -7
- package/dist/Components/ToggleSwitch/ToggleSwitchProps.d.ts +63 -8
- package/dist/Components/ToolTip/OverflowToolTip.d.ts +0 -15
- package/dist/Components/ToolTip/OverflowToolTip.js +1 -15
- package/dist/Components/ToolTip/ToolTip.js +13 -13
- package/dist/Components/ToolTip/ToolTipProps.d.ts +5 -2
- package/dist/Components/UpgradeButton/UpgradeButton.js +9 -14
- package/dist/Components/UserDetails/AddUserModal.js +1 -1
- package/dist/Components/UserDetails/ChangeRoleModal.js +1 -1
- package/dist/Components/UserDetails/DeactivateConfirmModal.js +4 -6
- package/dist/Components/UserDetails/UserDetails.js +6 -8
- package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.d.ts +0 -13
- package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +2 -14
- package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts +0 -11
- package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +6 -23
- package/dist/Hooks/useDebounce.d.ts +6 -0
- package/dist/Hooks/useDebounce.js +33 -0
- package/dist/Hooks/useExclusiveOverlay.d.ts +0 -4
- package/dist/Hooks/useExclusiveOverlay.js +1 -4
- package/dist/Hooks/useFullscreen.d.ts +8 -0
- package/dist/Hooks/useFullscreen.js +32 -0
- package/dist/Hooks/useIsTruncated.d.ts +0 -30
- package/dist/Hooks/useIsTruncated.js +1 -30
- package/dist/Hooks/usePreferences.js +1 -6
- package/dist/Hooks/useSidebarPrefs.d.ts +1 -42
- package/dist/Hooks/useSidebarPrefs.js +1 -2
- package/dist/Theme/assertPalette.d.ts +1 -1
- package/dist/Theme/assertPalette.js +2 -2
- package/dist/Theme/chakra/Card.styles.d.ts +78 -0
- package/dist/Theme/chakra/Card.styles.js +48 -0
- package/dist/Theme/chakra/Drawer.styles.d.ts +41 -9
- package/dist/Theme/chakra/Drawer.styles.js +14 -13
- package/dist/Theme/chakra/Menu.styles.d.ts +3 -18
- package/dist/Theme/chakra/Menu.styles.js +2 -23
- package/dist/Theme/chakra/Modal.styles.d.ts +42 -9
- package/dist/Theme/chakra/Modal.styles.js +15 -13
- package/dist/Theme/chakra/Popover.styles.d.ts +3 -3
- package/dist/Theme/chakra/Popover.styles.js +2 -10
- package/dist/Theme/chakra/Slider.styles.d.ts +3 -3
- package/dist/Theme/chakra/Slider.styles.js +1 -6
- package/dist/Theme/chakra/common.web.d.ts +0 -4
- package/dist/Theme/chakra/common.web.js +1 -7
- package/dist/Theme/chakra/componentStyles.d.ts +157 -103
- package/dist/Theme/chakra/componentStyles.js +66 -86
- package/dist/Theme/chakra/createBrandTheme.d.ts +0 -10
- package/dist/Theme/chakra/createBrandTheme.js +6 -50
- package/dist/Theme/chakra/focusRing.styles.d.ts +17 -24
- package/dist/Theme/chakra/focusRing.styles.js +20 -24
- package/dist/Theme/chakra/fonts.web.d.ts +0 -5
- package/dist/Theme/chakra/fonts.web.js +1 -5
- package/dist/Theme/chakra/motion.d.ts +5 -0
- package/dist/Theme/chakra/motion.js +27 -0
- package/dist/Theme/chakra/overlay.styles.d.ts +51 -0
- package/dist/Theme/chakra/overlay.styles.js +48 -0
- package/dist/Theme/chakra/paletteFromTheme.d.ts +0 -4
- package/dist/Theme/chakra/paletteFromTheme.js +1 -4
- package/dist/Theme/index.d.ts +0 -12
- package/dist/Theme/index.js +3 -18
- package/dist/Theme/provider/PixelizeThemeProvider.d.ts +0 -32
- package/dist/Theme/provider/PixelizeThemeProvider.js +6 -74
- package/dist/Theme/provider/ThemeSwitcher.js +17 -18
- package/dist/Theme/provider/colorModeStorage.js +1 -4
- package/dist/Theme/tokens/brands/emerald/palette.dark.d.ts +0 -4
- package/dist/Theme/tokens/brands/emerald/palette.dark.js +0 -4
- package/dist/Theme/tokens/brands/emerald/palette.light.js +2 -10
- package/dist/Theme/tokens/brands/index.js +4 -4
- package/dist/Theme/tokens/brands/lavender/palette.dark.d.ts +0 -4
- package/dist/Theme/tokens/brands/lavender/palette.dark.js +0 -4
- package/dist/Theme/tokens/brands/lavender/palette.light.js +4 -13
- package/dist/Theme/tokens/brands/meadow/palette.dark.d.ts +0 -4
- package/dist/Theme/tokens/brands/meadow/palette.dark.js +0 -4
- package/dist/Theme/tokens/brands/meadow/palette.light.js +2 -11
- package/dist/Theme/tokens/brands/radiant/palette.dark.d.ts +0 -4
- package/dist/Theme/tokens/brands/radiant/palette.dark.js +0 -4
- package/dist/Theme/tokens/brands/radiant/palette.light.js +2 -10
- package/dist/Theme/tokens/brands/rosewood/palette.dark.d.ts +0 -4
- package/dist/Theme/tokens/brands/rosewood/palette.dark.js +0 -4
- package/dist/Theme/tokens/brands/rosewood/palette.light.js +2 -14
- package/dist/Theme/tokens/brands/skyline/palette.dark.d.ts +0 -4
- package/dist/Theme/tokens/brands/skyline/palette.dark.js +0 -4
- package/dist/Theme/tokens/brands/skyline/palette.light.js +2 -11
- package/dist/Theme/tokens/brands/slate/palette.dark.d.ts +0 -4
- package/dist/Theme/tokens/brands/slate/palette.dark.js +0 -4
- package/dist/Theme/tokens/brands/slate/palette.light.js +1 -11
- package/dist/Theme/tokens/brands/storefront/palette.dark.d.ts +0 -4
- package/dist/Theme/tokens/brands/storefront/palette.dark.js +0 -4
- package/dist/Theme/tokens/brands/zinc/palette.dark.d.ts +10 -9
- package/dist/Theme/tokens/brands/zinc/palette.dark.js +5 -35
- package/dist/Theme/tokens/brands/zinc/palette.light.js +3 -12
- package/dist/Theme/tokens/builders/accentText.d.ts +0 -43
- package/dist/Theme/tokens/builders/accentText.js +5 -48
- package/dist/Theme/tokens/builders/brandInk.d.ts +2 -0
- package/dist/Theme/tokens/builders/brandInk.js +19 -1
- package/dist/Theme/tokens/builders/buildBrandTokens.d.ts +0 -3
- package/dist/Theme/tokens/builders/buildBrandTokens.js +1 -3
- package/dist/Theme/tokens/builders/buildDarkPalette.d.ts +0 -12
- package/dist/Theme/tokens/builders/buildDarkPalette.js +15 -103
- package/dist/Theme/tokens/builders/chartColorsFromTheme.d.ts +0 -8
- package/dist/Theme/tokens/builders/chartColorsFromTheme.js +1 -8
- package/dist/Theme/tokens/builders/color.d.ts +0 -20
- package/dist/Theme/tokens/builders/color.js +3 -20
- package/dist/Theme/tokens/builders/filledSurface.d.ts +2 -12
- package/dist/Theme/tokens/builders/filledSurface.js +35 -25
- package/dist/Theme/tokens/builders/focusRing.d.ts +0 -45
- package/dist/Theme/tokens/builders/focusRing.js +5 -49
- package/dist/Theme/tokens/builders/gradientInk.d.ts +0 -10
- package/dist/Theme/tokens/builders/gradientInk.js +2 -10
- package/dist/Theme/tokens/builders/index.d.ts +4 -0
- package/dist/Theme/tokens/builders/index.js +4 -0
- package/dist/Theme/tokens/builders/outlineRung.d.ts +0 -66
- package/dist/Theme/tokens/builders/outlineRung.js +4 -70
- package/dist/Theme/tokens/builders/placeholderInk.d.ts +0 -12
- package/dist/Theme/tokens/builders/placeholderInk.js +2 -12
- package/dist/Theme/tokens/builders/resolvedRungs.d.ts +0 -5
- package/dist/Theme/tokens/builders/resolvedRungs.js +1 -5
- package/dist/Theme/tokens/builders/rowStates.d.ts +0 -6
- package/dist/Theme/tokens/builders/rowStates.js +4 -8
- package/dist/Theme/tokens/builders/scrim.d.ts +6 -0
- package/dist/Theme/tokens/builders/scrim.js +17 -0
- package/dist/Theme/tokens/builders/scrollbar.d.ts +0 -4
- package/dist/Theme/tokens/builders/scrollbar.js +1 -4
- package/dist/Theme/tokens/builders/semanticText.d.ts +0 -5
- package/dist/Theme/tokens/builders/semanticText.js +1 -5
- package/dist/Theme/tokens/builders/sidebarAccent.d.ts +8 -0
- package/dist/Theme/tokens/builders/sidebarAccent.js +15 -1
- package/dist/Theme/tokens/builders/statusTone.d.ts +1 -19
- package/dist/Theme/tokens/builders/statusTone.js +4 -19
- package/dist/Theme/tokens/builders/surfaceRaised.d.ts +6 -0
- package/dist/Theme/tokens/builders/surfaceRaised.js +21 -0
- package/dist/Theme/tokens/builders/surfaceRungs.d.ts +0 -4
- package/dist/Theme/tokens/builders/surfaceRungs.js +3 -9
- package/dist/Theme/tokens/builders/tone.d.ts +22 -0
- package/dist/Theme/tokens/builders/tone.js +54 -0
- package/dist/Theme/tokens/builders/tooltipSurface.d.ts +6 -0
- package/dist/Theme/tokens/builders/tooltipSurface.js +10 -0
- package/dist/Theme/tokens/builders/viewportHeight.d.ts +8 -0
- package/dist/Theme/tokens/builders/viewportHeight.js +9 -0
- package/dist/Theme/tokens/index.d.ts +0 -10
- package/dist/Theme/tokens/index.js +1 -10
- package/dist/Theme/tokens/primitives/controlSizes.d.ts +12 -0
- package/dist/Theme/tokens/primitives/controlSizes.js +14 -0
- package/dist/Theme/tokens/primitives/index.d.ts +2 -0
- package/dist/Theme/tokens/primitives/index.js +16 -0
- package/dist/Theme/tokens/primitives/motion.d.ts +8 -0
- package/dist/Theme/tokens/primitives/motion.js +12 -0
- package/dist/Theme/tokens/primitives/sizes.d.ts +0 -4
- package/dist/Theme/tokens/primitives/sizes.js +1 -4
- package/dist/Theme/tokens/primitives/typography.d.ts +0 -7
- package/dist/Theme/tokens/primitives/typography.js +1 -7
- package/dist/Theme/tokens/types.d.ts +8 -28
- package/dist/Theme/tokens/types.js +1 -6
- package/dist/Utils/accountHandoff.d.ts +0 -17
- package/dist/Utils/accountHandoff.js +2 -17
- package/dist/Utils/apiError.d.ts +2 -0
- package/dist/Utils/apiError.js +28 -0
- package/dist/Utils/functions.d.ts +1 -0
- package/dist/Utils/functions.js +6 -4
- package/dist/Utils/humanize.d.ts +4 -0
- package/dist/Utils/humanize.js +19 -0
- package/dist/Utils/lazyWithRetry.d.ts +9 -0
- package/dist/Utils/lazyWithRetry.js +51 -0
- package/dist/Utils/mergeRefs.d.ts +0 -5
- package/dist/Utils/mergeRefs.js +1 -5
- package/dist/Utils/planBadge.d.ts +1 -11
- package/dist/Utils/planBadge.js +2 -12
- package/dist/Utils/planExpiry.d.ts +0 -26
- package/dist/Utils/planExpiry.js +4 -29
- package/dist/Utils/rafThrottle.d.ts +0 -11
- package/dist/Utils/rafThrottle.js +1 -11
- package/dist/Utils/table.d.ts +2 -22
- package/dist/Utils/table.js +17 -87
- package/dist/Utils/validation.d.ts +13 -0
- package/dist/Utils/validation.js +86 -0
- package/dist/esm/Components/Accordion/Accordion.js +8 -10
- package/dist/esm/Components/Accordion/accordionColors.js +9 -10
- package/dist/esm/Components/AlertDialog/AlertDialog.js +3 -6
- package/dist/esm/Components/Apexcharts/ApexAreaChart/ApexAreaChart.js +7 -3
- package/dist/esm/Components/Apexcharts/ApexBarChart/ApexBarChart.js +8 -5
- package/dist/esm/Components/Apexcharts/ApexChartFallback.js +5 -0
- package/dist/esm/Components/Apexcharts/ApexLineChart/ApexLineChart.js +7 -3
- package/dist/esm/Components/Apexcharts/ApexPieChart/ApexPieChart.js +7 -3
- package/dist/esm/Components/Apexcharts/ApexPolarCharts/ApexPolarCharts.js +9 -6
- package/dist/esm/Components/Apexcharts/ApexRadialChart/ApexRadialChart.js +7 -5
- package/dist/esm/Components/Apexcharts/LazyReactApexChart.js +5 -0
- package/dist/esm/Components/AppSwitcher/AppMark.js +1 -5
- package/dist/esm/Components/AppSwitcher/AppSwitcher.js +4 -9
- package/dist/esm/Components/Avatar/Avatar.js +22 -0
- package/dist/esm/Components/Avatar/AvatarGroup.js +19 -0
- package/dist/esm/Components/Avatar/AvatarProps.js +1 -0
- package/dist/esm/Components/Avatar/avatarColorway.js +25 -0
- package/dist/esm/Components/Avatar/avatarSizing.js +12 -0
- package/dist/esm/Components/Backdrop/Backdrop.js +28 -0
- package/dist/esm/Components/Backdrop/BackdropProps.js +1 -0
- package/dist/esm/Components/Breadcrumbs/Breadcrumbs.js +15 -5
- package/dist/esm/Components/Breadcrumbs/breadcrumbInk.js +7 -0
- package/dist/esm/Components/Button/Button.js +2 -2
- package/dist/esm/Components/Button/Button.styles.js +21 -62
- package/dist/esm/Components/ButtonGroupIcon/ButtonGoupIconProps.js +2 -1
- package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIcon.js +3 -10
- package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIconProps.js +1 -0
- package/dist/esm/Components/Buttons/Buttons.js +2 -3
- package/dist/esm/Components/Card/Card.js +11 -5
- package/dist/esm/Components/Card/PaymentCard/PaymentCard.js +13 -9
- package/dist/esm/Components/Checkbox/Checkbox.js +11 -9
- package/dist/esm/Components/Checkbox/Checkbox.styles.js +42 -37
- package/dist/esm/Components/Common/ErrorComponent.js +1 -1
- package/dist/esm/Components/Common/ErrorMessage.js +5 -5
- package/dist/esm/Components/Common/FieldMessage.js +14 -0
- package/dist/esm/Components/Common/FormLabel.js +13 -8
- package/dist/esm/Components/Common/HelperText.js +3 -2
- package/dist/esm/Components/Common/Label.js +3 -2
- package/dist/esm/Components/Common/fieldMessageStyles.js +13 -0
- package/dist/esm/Components/Common/fieldStyles.js +66 -29
- package/dist/esm/Components/Common/useFieldIds.js +23 -0
- package/dist/esm/Components/ConfirmDialog/ConfirmDialog.js +18 -0
- package/dist/esm/Components/ConfirmDialog/ConfirmDialogProps.js +1 -0
- package/dist/esm/Components/ContactForm/ContactForm.js +19 -15
- package/dist/esm/Components/CopyButton/CopyButton.js +3 -4
- package/dist/esm/Components/CustomModulesTable/DeleteModuleModal.js +4 -4
- package/dist/esm/Components/CustomModulesTable/EditModuleModal.js +2 -4
- package/dist/esm/Components/DatePicker/CalendarPanel.js +5 -9
- package/dist/esm/Components/DatePicker/DatePicker.js +12 -49
- package/dist/esm/Components/DatePicker/DatePickerProps.js +1 -1
- package/dist/esm/Components/DatePicker/RangeDatePicker.js +17 -21
- package/dist/esm/Components/DatePicker/SingleDatePicker.js +37 -53
- package/dist/esm/Components/DatePicker/ThemeDatePicker.js +11 -18
- package/dist/esm/Components/DatePicker/TimeOnlyPicker.js +35 -20
- package/dist/esm/Components/DatePicker/TimePicker.js +8 -12
- package/dist/esm/Components/DatePicker/TimePickerInput.js +5 -11
- package/dist/esm/Components/DatePicker/dayStates.js +3 -15
- package/dist/esm/Components/DatePicker/pickerField.js +24 -0
- package/dist/esm/Components/DatePicker/valueFormat.js +15 -0
- package/dist/esm/Components/DescriptionList/DescriptionList.js +27 -0
- package/dist/esm/Components/DescriptionList/DescriptionListProps.js +1 -0
- package/dist/esm/Components/Drawer/Drawer.js +22 -8
- package/dist/esm/Components/Dropdown/DropDown.js +43 -33
- package/dist/esm/Components/Editor/Editor.js +13 -1
- package/dist/esm/Components/Editor/joditAccessibility.js +24 -0
- package/dist/esm/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +3 -5
- package/dist/esm/Components/EmptyState/EmptyState.js +24 -15
- package/dist/esm/Components/FeedbackForm/FeedbackForm.js +17 -7
- package/dist/esm/Components/FieldSelectModal/FieldSelectModal.js +3 -5
- package/dist/esm/Components/FilePreview/FilePreview.js +8 -8
- package/dist/esm/Components/FileUpload/FileUpload.js +22 -6
- package/dist/esm/Components/FileUpload/constants.js +1 -0
- package/dist/esm/Components/FileUploader/FileUploader.js +6 -5
- package/dist/esm/Components/FilterBar/FilterBar.js +12 -0
- package/dist/esm/Components/FilterBar/FilterBarProps.js +1 -0
- package/dist/esm/Components/FilterSidebar/FilterSidebar.js +28 -33
- package/dist/esm/Components/FilterSidebar/filterHoverStyle.js +1 -1
- package/dist/esm/Components/Form/FormWrapper.js +1 -1
- package/dist/esm/Components/Header/Header.js +2 -16
- package/dist/esm/Components/Header/HeaderActions.js +4 -4
- package/dist/esm/Components/Header/components/desktopMenu.js +10 -11
- package/dist/esm/Components/Header/components/mobileMenu.js +23 -20
- package/dist/esm/Components/Input/Input/Input.js +3 -2
- package/dist/esm/Components/Input/PhoneNumberInput.js +8 -5
- package/dist/esm/Components/Input/Switch/InputSwitch.js +16 -21
- package/dist/esm/Components/Input/TextInput.js +83 -10
- package/dist/esm/Components/Input/TextInput.styles.js +42 -88
- package/dist/esm/Components/Input/textInputIconSize.js +4 -20
- package/dist/esm/Components/Input/useAriaRequired.js +15 -0
- package/dist/esm/Components/InputTextArea/InputTextArea.js +10 -6
- package/dist/esm/Components/InputTextArea/InputTextArea.style.js +14 -69
- package/dist/esm/Components/KanbanBoard/AccountCard.js +9 -6
- package/dist/esm/Components/KanbanBoard/AccountRow.js +1 -1
- package/dist/esm/Components/KanbanBoard/KanbanActions/KanbanActions.js +1 -1
- package/dist/esm/Components/KanbanBoard/KanbanBoard.js +86 -50
- package/dist/esm/Components/KanbanBoard/index.js +1 -0
- package/dist/esm/Components/LimitReachedModal/LimitReachedModal.js +2 -2
- package/dist/esm/Components/LimitReachedModal/limitReachedCopy.js +1 -3
- package/dist/esm/Components/Loading/Loading.js +16 -19
- package/dist/esm/Components/MediaViewer/MediaViewer.js +196 -0
- package/dist/esm/Components/MediaViewer/MediaViewerProps.js +29 -0
- package/dist/esm/Components/MediaViewer/components/MediaAudioPlayer.js +133 -0
- package/dist/esm/Components/MediaViewer/components/MediaAudioPlayerProps.js +18 -0
- package/dist/esm/Components/MediaViewer/components/MediaDocumentStage.js +109 -0
- package/dist/esm/Components/MediaViewer/components/MediaDocumentStageProps.js +8 -0
- package/dist/esm/Components/MediaViewer/components/MediaImageViewer.js +98 -0
- package/dist/esm/Components/MediaViewer/components/MediaImageViewerProps.js +15 -0
- package/dist/esm/Components/MediaViewer/components/MediaScrubber.js +87 -0
- package/dist/esm/Components/MediaViewer/components/MediaScrubberProps.js +1 -0
- package/dist/esm/Components/MediaViewer/components/MediaStatusPanel.js +12 -0
- package/dist/esm/Components/MediaViewer/components/MediaStatusPanelProps.js +1 -0
- package/dist/esm/Components/MediaViewer/components/MediaVideoPlayer.js +243 -0
- package/dist/esm/Components/MediaViewer/components/MediaVideoPlayerProps.js +28 -0
- package/dist/esm/Components/MediaViewer/components/TileChip.js +10 -0
- package/dist/esm/Components/MediaViewer/components/TileChipProps.js +1 -0
- package/dist/esm/Components/MediaViewer/components/VideoPoster.js +11 -0
- package/dist/esm/Components/MediaViewer/components/VideoPosterProps.js +1 -0
- package/dist/esm/Components/MediaViewer/components/ViewerIconButton.js +15 -0
- package/dist/esm/Components/MediaViewer/components/ViewerIconButtonProps.js +1 -0
- package/dist/esm/Components/MediaViewer/components/mediaKindIcon.js +18 -0
- package/dist/esm/Components/MediaViewer/components/sanitizeDocxHrefs.js +27 -0
- package/dist/esm/Components/MediaViewer/hooks/useAutoHideChrome.js +40 -0
- package/dist/esm/Components/MediaViewer/hooks/useFileViewer.js +45 -0
- package/dist/esm/Components/MediaViewer/mediaItems.js +174 -0
- package/dist/esm/Components/MediaViewer/useViewerChrome.js +27 -0
- package/dist/esm/Components/Modal/Modal.js +25 -19
- package/dist/esm/Components/MoreItems/MoreItems.js +4 -2
- package/dist/esm/Components/MultiSelect/MultiSelect.js +40 -28
- package/dist/esm/Components/NavigationBar/NavigationBar.js +7 -8
- package/dist/esm/Components/NoteTextArea/NoteTextArea.js +15 -10
- package/dist/esm/Components/Notification/Notification.js +9 -5
- package/dist/esm/Components/NotificationBell/NotificationBell.js +33 -0
- package/dist/esm/Components/NotificationBell/NotificationBellProps.js +1 -0
- package/dist/esm/Components/NotificationBell/NotificationItem.js +29 -0
- package/dist/esm/Components/NotificationBell/NotificationList.js +36 -0
- package/dist/esm/Components/NotificationBell/NotificationPanel.js +31 -0
- package/dist/esm/Components/NotificationBell/index.js +6 -0
- package/dist/esm/Components/NotificationBell/notificationHelpers.js +107 -0
- package/dist/esm/Components/NumberInput/NumberInput.js +7 -6
- package/dist/esm/Components/NumberInput/NumberInput.styles.js +19 -78
- package/dist/esm/Components/OrgSwitcher/OrgSwitcher.js +4 -12
- package/dist/esm/Components/OrgSwitcher/OrgSwitcherProps.js +2 -1
- package/dist/esm/Components/OrganizationDetails/CreateOrgModal.js +1 -1
- package/dist/esm/Components/OrganizationDetails/DeleteOrgModal.js +7 -9
- package/dist/esm/Components/OrganizationDetails/OrganizationDetails.js +9 -8
- package/dist/esm/Components/PageHeader/PageHeader.js +9 -0
- package/dist/esm/Components/PageHeader/PageHeaderProps.js +1 -0
- package/dist/esm/Components/PdfViewer/PdfViewer.js +1 -1
- package/dist/esm/Components/PersonChip/PersonChip.js +42 -0
- package/dist/esm/Components/PersonChip/PersonChipProps.js +1 -0
- package/dist/esm/Components/PinInput/PinInput.js +11 -10
- package/dist/esm/Components/PinInput/pinInputCellSize.js +6 -0
- package/dist/esm/Components/PlanBadge/PlanBadge.js +1 -7
- package/dist/esm/Components/PlanPill/PlanPill.js +2 -3
- package/dist/esm/Components/PlanPill/planPillGradient.js +6 -20
- package/dist/esm/Components/Primitives/Primitives.js +3 -6
- package/dist/esm/Components/ProductCard/ProductPrice.js +18 -7
- package/dist/esm/Components/ProductCard/ProductReview.js +3 -2
- package/dist/esm/Components/ProductDetails/ProductDetails.js +1 -1
- package/dist/esm/Components/ProductDetails/ProductDtlPrice.js +5 -5
- package/dist/esm/Components/ProductDetails/ProductImageSlider.js +36 -20
- package/dist/esm/Components/ProfileCard/ProfileCard.js +25 -10
- package/dist/esm/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +7 -4
- package/dist/esm/Components/ProgressBar/ProgressBar.js +27 -3
- package/dist/esm/Components/QueryState/ErrorState.js +11 -0
- package/dist/esm/Components/QueryState/QueryStateBoundary.js +20 -0
- package/dist/esm/Components/QueryState/QueryStateProps.js +1 -0
- package/dist/esm/Components/RadioButton/RadioButton.js +33 -16
- package/dist/esm/Components/RangeSlider/RangeSlider.js +131 -0
- package/dist/esm/Components/RangeSlider/RangeSliderProps.js +1 -0
- package/dist/esm/Components/RangeSlider/rangeSliderColors.js +7 -0
- package/dist/esm/Components/RangeSlider/rangeSliderMath.js +69 -0
- package/dist/esm/Components/RangeSlider/rangeSliderSize.js +8 -0
- package/dist/esm/Components/Reorder/Reorder.js +2 -2
- package/dist/esm/Components/RolesPermission/DeleteRoleModal.js +7 -9
- package/dist/esm/Components/RolesPermission/RolesPermission.js +1 -1
- package/dist/esm/Components/SaveBar/SaveBar.js +19 -0
- package/dist/esm/Components/SaveBar/SaveBarProps.js +1 -0
- package/dist/esm/Components/ScrollToTop/ScrollToTop.js +5 -2
- package/dist/esm/Components/Search/Search.js +35 -16
- package/dist/esm/Components/SearchSelect/SearchSelect.js +62 -76
- package/dist/esm/Components/SearchSelect/searchSelectSize.js +15 -15
- package/dist/esm/Components/SegmentedControl/SegmentedControl.js +51 -32
- package/dist/esm/Components/SegmentedControl/segmentedInk.js +23 -0
- package/dist/esm/Components/SegmentedControl/useSlidingPill.js +22 -0
- package/dist/esm/Components/Select/Select.js +67 -25
- package/dist/esm/Components/Select/Select.styles.js +12 -81
- package/dist/esm/Components/Select/SelectNative.js +44 -0
- package/dist/esm/Components/Select/SelectPopup.js +385 -0
- package/dist/esm/Components/SelectSearch/SelectSearch.js +18 -80
- package/dist/esm/Components/SelectV2/SelectV2.js +16 -231
- package/dist/esm/Components/SettingRow/SettingRow.js +22 -0
- package/dist/esm/Components/SettingRow/SettingRowProps.js +1 -0
- package/dist/esm/Components/SettingRow/SettingsSection.js +11 -0
- package/dist/esm/Components/SettingRow/SettingsSectionProps.js +1 -0
- package/dist/esm/Components/SideBar/SecondaryBar.js +21 -10
- package/dist/esm/Components/SideBar/SideBar.js +39 -23
- package/dist/esm/Components/SideBar/components/MenuItemBox.js +41 -25
- package/dist/esm/Components/SideBar/components/MenuItems.js +4 -4
- package/dist/esm/Components/SideBar/components/MenuPopoverContent.js +21 -10
- package/dist/esm/Components/SideBar/components/OtherApps.js +3 -3
- package/dist/esm/Components/SideBar/components/OverflowTooltipText.js +3 -1
- package/dist/esm/Components/SideBar/components/TextTruncation.js +3 -3
- package/dist/esm/Components/SideBar/menuDisabled.js +3 -0
- package/dist/esm/Components/SideBar/sidebarId.js +2 -0
- package/dist/esm/Components/SideBar/sidebarScale.js +15 -0
- package/dist/esm/Components/Skeletons/Skeletons.js +2 -2
- package/dist/esm/Components/Slider/Slider.js +2 -1
- package/dist/esm/Components/Spinner/Spinner.js +19 -0
- package/dist/esm/Components/Spinner/SpinnerProps.js +1 -0
- package/dist/esm/Components/StageProgress/StageItem.js +12 -4
- package/dist/esm/Components/StageProgress/StageProgress.js +6 -7
- package/dist/esm/Components/StageProgress/StageProgressProps.js +6 -2
- package/dist/esm/Components/StageProgress/StepperStage.js +5 -2
- package/dist/esm/Components/StatCard/StatCard.js +37 -0
- package/dist/esm/Components/StatCard/StatCardProps.js +1 -0
- package/dist/esm/Components/Switch/Switch.js +10 -11
- package/dist/esm/Components/Table/Table.js +58 -51
- package/dist/esm/Components/Table/components/HeaderActions.js +3 -2
- package/dist/esm/Components/Table/components/Pagination.js +13 -5
- package/dist/esm/Components/Table/components/TableActions.js +1 -1
- package/dist/esm/Components/Table/components/TableBody.js +33 -41
- package/dist/esm/Components/Table/components/TableGroupRow.js +1 -1
- package/dist/esm/Components/Table/components/TableHeader.js +14 -12
- package/dist/esm/Components/Table/components/TableSearch.js +1 -1
- package/dist/esm/Components/Table/components/rowMetrics.js +11 -0
- package/dist/esm/Components/Table/filters/ActiveFilters.js +7 -4
- package/dist/esm/Components/Table/filters/CompactSelect.js +1 -1
- package/dist/esm/Components/Table/filters/LeftFilterPane.js +1 -1
- package/dist/esm/Components/Table/filters/SelectOperationControls.js +8 -3
- package/dist/esm/Components/Table/filters/TableFilters.js +1 -1
- package/dist/esm/Components/Table/filters/TextOperationControls.js +6 -2
- package/dist/esm/Components/Table/hooks/useTable.js +18 -26
- package/dist/esm/Components/Table/settings/ManageColumns.js +7 -6
- package/dist/esm/Components/Table/settings/TableSettings.js +5 -4
- package/dist/esm/Components/Table/variants/classic.js +2 -0
- package/dist/esm/Components/Table/variants/stripe.js +3 -0
- package/dist/esm/Components/Table/variants/studio.js +2 -0
- package/dist/esm/Components/Tabs/Tabs.js +65 -0
- package/dist/esm/Components/Tabs/TabsContext.js +10 -0
- package/dist/esm/Components/Tabs/TabsProps.js +1 -0
- package/dist/esm/Components/Tabs/components/CountBadge.js +15 -0
- package/dist/esm/Components/Tabs/components/Tab.js +44 -0
- package/dist/esm/Components/Tabs/components/TabList.js +69 -0
- package/dist/esm/Components/Tabs/components/TabPanel.js +15 -0
- package/dist/esm/Components/Tabs/components/TabPanels.js +12 -0
- package/dist/esm/Components/Tabs/index.js +5 -0
- package/dist/esm/Components/Tabs/tabStyles.js +33 -0
- package/dist/esm/Components/Tag/Tag.js +15 -7
- package/dist/esm/Components/Tag/Tag.styles.js +44 -37
- package/dist/esm/Components/Timeline/Timeline.js +42 -30
- package/dist/esm/Components/Toaster/Toaster.js +73 -58
- package/dist/esm/Components/Toaster/toastDuration.js +3 -0
- package/dist/esm/Components/Toggle/TableToggle.js +9 -24
- package/dist/esm/Components/ToggleSwitch/ToggleSwitch.js +39 -8
- package/dist/esm/Components/ToolTip/OverflowToolTip.js +1 -15
- package/dist/esm/Components/ToolTip/ToolTip.js +14 -14
- package/dist/esm/Components/UpgradeButton/UpgradeButton.js +9 -14
- package/dist/esm/Components/UserDetails/AddUserModal.js +1 -1
- package/dist/esm/Components/UserDetails/ChangeRoleModal.js +1 -1
- package/dist/esm/Components/UserDetails/DeactivateConfirmModal.js +6 -8
- package/dist/esm/Components/UserDetails/UserDetails.js +7 -9
- package/dist/esm/Components/WorkspaceWindow/WorkspaceTrayPreview.js +2 -14
- package/dist/esm/Components/WorkspaceWindow/WorkspaceWindow.js +6 -23
- package/dist/esm/Hooks/useDebounce.js +29 -0
- package/dist/esm/Hooks/useExclusiveOverlay.js +1 -4
- package/dist/esm/Hooks/useFullscreen.js +29 -0
- package/dist/esm/Hooks/useIsTruncated.js +1 -30
- package/dist/esm/Hooks/usePreferences.js +1 -6
- package/dist/esm/Hooks/useSidebarPrefs.js +1 -2
- package/dist/esm/Theme/assertPalette.js +2 -2
- package/dist/esm/Theme/chakra/Card.styles.js +45 -0
- package/dist/esm/Theme/chakra/Drawer.styles.js +14 -13
- package/dist/esm/Theme/chakra/Menu.styles.js +2 -23
- package/dist/esm/Theme/chakra/Modal.styles.js +15 -13
- package/dist/esm/Theme/chakra/Popover.styles.js +2 -10
- package/dist/esm/Theme/chakra/Slider.styles.js +1 -6
- package/dist/esm/Theme/chakra/common.web.js +1 -7
- package/dist/esm/Theme/chakra/componentStyles.js +68 -88
- package/dist/esm/Theme/chakra/createBrandTheme.js +6 -50
- package/dist/esm/Theme/chakra/focusRing.styles.js +17 -23
- package/dist/esm/Theme/chakra/fonts.web.js +1 -5
- package/dist/esm/Theme/chakra/motion.js +22 -0
- package/dist/esm/Theme/chakra/overlay.styles.js +43 -0
- package/dist/esm/Theme/chakra/paletteFromTheme.js +1 -4
- package/dist/esm/Theme/index.js +3 -18
- package/dist/esm/Theme/provider/PixelizeThemeProvider.js +6 -74
- package/dist/esm/Theme/provider/ThemeSwitcher.js +18 -19
- package/dist/esm/Theme/provider/colorModeStorage.js +1 -4
- package/dist/esm/Theme/tokens/brands/emerald/palette.dark.js +0 -4
- package/dist/esm/Theme/tokens/brands/emerald/palette.light.js +2 -10
- package/dist/esm/Theme/tokens/brands/index.js +4 -4
- package/dist/esm/Theme/tokens/brands/lavender/palette.dark.js +0 -4
- package/dist/esm/Theme/tokens/brands/lavender/palette.light.js +4 -13
- package/dist/esm/Theme/tokens/brands/meadow/palette.dark.js +0 -4
- package/dist/esm/Theme/tokens/brands/meadow/palette.light.js +2 -11
- package/dist/esm/Theme/tokens/brands/radiant/palette.dark.js +0 -4
- package/dist/esm/Theme/tokens/brands/radiant/palette.light.js +2 -10
- package/dist/esm/Theme/tokens/brands/rosewood/palette.dark.js +0 -4
- package/dist/esm/Theme/tokens/brands/rosewood/palette.light.js +2 -14
- package/dist/esm/Theme/tokens/brands/skyline/palette.dark.js +0 -4
- package/dist/esm/Theme/tokens/brands/skyline/palette.light.js +2 -11
- package/dist/esm/Theme/tokens/brands/slate/palette.dark.js +0 -4
- package/dist/esm/Theme/tokens/brands/slate/palette.light.js +1 -11
- package/dist/esm/Theme/tokens/brands/storefront/palette.dark.js +0 -4
- package/dist/esm/Theme/tokens/brands/zinc/palette.dark.js +5 -35
- package/dist/esm/Theme/tokens/brands/zinc/palette.light.js +3 -12
- package/dist/esm/Theme/tokens/builders/accentText.js +5 -48
- package/dist/esm/Theme/tokens/builders/brandInk.js +18 -2
- package/dist/esm/Theme/tokens/builders/buildBrandTokens.js +1 -3
- package/dist/esm/Theme/tokens/builders/buildDarkPalette.js +15 -103
- package/dist/esm/Theme/tokens/builders/chartColorsFromTheme.js +1 -8
- package/dist/esm/Theme/tokens/builders/color.js +3 -20
- package/dist/esm/Theme/tokens/builders/filledSurface.js +35 -25
- package/dist/esm/Theme/tokens/builders/focusRing.js +5 -49
- package/dist/esm/Theme/tokens/builders/gradientInk.js +2 -10
- package/dist/esm/Theme/tokens/builders/index.js +4 -0
- package/dist/esm/Theme/tokens/builders/outlineRung.js +4 -70
- package/dist/esm/Theme/tokens/builders/placeholderInk.js +2 -12
- package/dist/esm/Theme/tokens/builders/resolvedRungs.js +1 -5
- package/dist/esm/Theme/tokens/builders/rowStates.js +5 -9
- package/dist/esm/Theme/tokens/builders/scrim.js +12 -0
- package/dist/esm/Theme/tokens/builders/scrollbar.js +1 -4
- package/dist/esm/Theme/tokens/builders/semanticText.js +1 -5
- package/dist/esm/Theme/tokens/builders/sidebarAccent.js +11 -0
- package/dist/esm/Theme/tokens/builders/statusTone.js +4 -19
- package/dist/esm/Theme/tokens/builders/surfaceRaised.js +15 -0
- package/dist/esm/Theme/tokens/builders/surfaceRungs.js +3 -9
- package/dist/esm/Theme/tokens/builders/tone.js +47 -0
- package/dist/esm/Theme/tokens/builders/tooltipSurface.js +6 -0
- package/dist/esm/Theme/tokens/builders/viewportHeight.js +6 -0
- package/dist/esm/Theme/tokens/index.js +1 -10
- package/dist/esm/Theme/tokens/primitives/controlSizes.js +10 -0
- package/dist/esm/Theme/tokens/primitives/index.js +2 -0
- package/dist/esm/Theme/tokens/primitives/motion.js +8 -0
- package/dist/esm/Theme/tokens/primitives/sizes.js +1 -4
- package/dist/esm/Theme/tokens/primitives/typography.js +1 -7
- package/dist/esm/Theme/tokens/types.js +1 -6
- package/dist/esm/Utils/accountHandoff.js +2 -17
- package/dist/esm/Utils/apiError.js +24 -0
- package/dist/esm/Utils/functions.js +6 -4
- package/dist/esm/Utils/humanize.js +15 -0
- package/dist/esm/Utils/lazyWithRetry.js +45 -0
- package/dist/esm/Utils/mergeRefs.js +1 -5
- package/dist/esm/Utils/planBadge.js +2 -12
- package/dist/esm/Utils/planExpiry.js +4 -29
- package/dist/esm/Utils/rafThrottle.js +1 -11
- package/dist/esm/Utils/table.js +15 -54
- package/dist/esm/Utils/validation.js +73 -0
- package/dist/esm/index.js +64 -2
- package/dist/global.css +6 -1
- package/dist/index.d.ts +110 -6
- package/dist/index.js +192 -4
- package/package.json +11 -3
- package/dist/Assets/defaultLogo.tsx +0 -26
- package/dist/Components/PinInputs/PinInputs.d.ts +0 -4
- package/dist/Components/PinInputs/PinInputs.js +0 -47
- package/dist/Components/PinInputs/PinInputsProps.d.ts +0 -10
- package/dist/Components/Table/hooks/useDebounce.d.ts +0 -2
- package/dist/Components/Table/hooks/useDebounce.js +0 -24
- package/dist/Components/Trail/EditableCell.d.ts +0 -13
- package/dist/Components/Trail/EditableCell.js +0 -35
- package/dist/Components/Trail/SelectAllCheckbox.d.ts +0 -9
- package/dist/Components/Trail/SelectAllCheckbox.js +0 -10
- package/dist/Components/Trail/TrailWorks.d.ts +0 -3
- package/dist/Components/Trail/TrailWorks.js +0 -57
- package/dist/Components/Trail/data.d.ts +0 -15
- package/dist/Components/Trail/data.js +0 -29
- package/dist/Theme/chakra/Avatar.styles.d.ts +0 -32
- package/dist/Theme/chakra/Avatar.styles.js +0 -28
- package/dist/Theme/chakra/Switch.styles.d.ts +0 -30
- package/dist/Theme/chakra/Switch.styles.js +0 -22
- package/dist/Theme/chakra/Tabs.styles.d.ts +0 -42
- package/dist/Theme/chakra/Tabs.styles.js +0 -36
- package/dist/esm/Components/PinInputs/PinInputs.js +0 -42
- package/dist/esm/Components/Table/hooks/useDebounce.js +0 -22
- package/dist/esm/Components/Trail/EditableCell.js +0 -31
- package/dist/esm/Components/Trail/SelectAllCheckbox.js +0 -6
- package/dist/esm/Components/Trail/TrailWorks.js +0 -55
- package/dist/esm/Components/Trail/data.js +0 -26
- package/dist/esm/Theme/chakra/Avatar.styles.js +0 -25
- package/dist/esm/Theme/chakra/Switch.styles.js +0 -19
- package/dist/esm/Theme/chakra/Tabs.styles.js +0 -33
- /package/dist/Components/{PinInputs/PinInputsProps.js → Avatar/AvatarGroupProps.js} +0 -0
- /package/dist/esm/Components/{PinInputs/PinInputsProps.js → Avatar/AvatarGroupProps.js} +0 -0
package/COMPONENT-GOTCHAS.md
CHANGED
|
@@ -6,7 +6,30 @@ cleanly, accepts what you pass, and produces the wrong result with no warning
|
|
|
6
6
|
catch any of these, and a unit suite that mocks the library won't either.
|
|
7
7
|
|
|
8
8
|
This file ships inside the published package (`node_modules/pixelize-design-library/COMPONENT-GOTCHAS.md`)
|
|
9
|
-
so it's available without checking out the library's source repo.
|
|
9
|
+
so it's available without checking out the library's source repo. Its companion
|
|
10
|
+
[DESIGN-GUIDE.md](DESIGN-GUIDE.md) ships beside it and covers how to compose components into a page.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## A colour rung flips direction between light and dark
|
|
15
|
+
|
|
16
|
+
`colors.primary[700]` is a deep purple in light mode and a **pale** lavender in dark. The scales are
|
|
17
|
+
ordered so a high rung always contrasts with the page canvas, which means its lightness inverts
|
|
18
|
+
with the mode. Using one as ink is what the ordering is for; using one as a **background fill**
|
|
19
|
+
gives you a dark bar in light mode and a pale one in dark, with whatever you put on top now
|
|
20
|
+
unreadable.
|
|
21
|
+
|
|
22
|
+
```tsx
|
|
23
|
+
// Wrong — pale lavender bar in dark mode, and the label on it is unreadable
|
|
24
|
+
<Box bg={colors.primary[700]}>…</Box>
|
|
25
|
+
|
|
26
|
+
// Right — a brand fill that stays a brand fill, with its own guaranteed-AA foreground
|
|
27
|
+
const brand = resolveFilledSurface(colors.primary, colors);
|
|
28
|
+
<Box bg={brand.activeFill} color={brand.activeColor}>…</Box>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`resolveFilledSurface` is exported from the package root. Use `.fill`/`.color` for a standard
|
|
32
|
+
brand surface and `.activeFill`/`.activeColor` for a deeper one behind other content.
|
|
10
33
|
|
|
11
34
|
---
|
|
12
35
|
|
|
@@ -26,46 +49,100 @@ opt-in, never assume a non-default look).
|
|
|
26
49
|
Pick by density and emphasis, not by taste. When unsure, or migrating an existing call site, leave
|
|
27
50
|
it on `"default"` — it's the only variant guaranteed to match previously-shipped screenshots.
|
|
28
51
|
|
|
29
|
-
|
|
52
|
+
**On a coloured bar, pass `surface`.** `SegmentedControl` (and `Switch`, which renders it) cannot
|
|
53
|
+
read the background its parent painted, so without `surface` it assumes the **page canvas**. Drop one
|
|
54
|
+
into a brand-filled header and two things go wrong: `brandSlide`'s 8% tint composites into the bar,
|
|
55
|
+
so the track stops reading as a control at all, and the inactive label — measured against the canvas
|
|
56
|
+
— lands at **1.0–2.0:1**: technically rendered, effectively invisible.
|
|
30
57
|
|
|
31
|
-
|
|
58
|
+
Given `surface`, the `brandSlide` track becomes an **opaque plate** (`colors.surfaceRaised`) with a
|
|
59
|
+
1px edge lifted to 3:1 against the bar, and every label's ink is re-aimed at that plate. The edge is
|
|
60
|
+
what carries the boundary: in dark mode the plate and a brand bar can sit at almost the same
|
|
61
|
+
lightness (as low as 1.56:1 on radiant), so hue alone would not separate them.
|
|
32
62
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
63
|
+
```tsx
|
|
64
|
+
<Box bg={theme.colors.primary[700]}>
|
|
65
|
+
<Switch ... surface={theme.colors.primary[700]} /> // 1.24:1 -> 4.54:1
|
|
66
|
+
</Box>
|
|
67
|
+
```
|
|
38
68
|
|
|
39
|
-
|
|
69
|
+
Pass the same value you gave the wrapper's `bg`. It re-aims the unselected, selected and hover inks
|
|
70
|
+
together, and flips direction correctly in dark mode. `HeaderActions` takes `surface` for the same
|
|
71
|
+
reason.
|
|
40
72
|
|
|
41
|
-
|
|
73
|
+
### Which "select" component — `Select` is the only one to reach for now
|
|
74
|
+
|
|
75
|
+
There is now **one** picker. `Select` does both modes off the `native` prop:
|
|
76
|
+
`native` (default `true`) renders a real `<select>`; `native={false}` renders the themed,
|
|
77
|
+
fully-React popup — searchable, `isMulti` with chips, grouped options, `isClearable`,
|
|
78
|
+
`onCreate`, `renderOption`, `onLoadMore`, optional windowing via `virtualizeAfter`.
|
|
79
|
+
|
|
80
|
+
`isMulti` always forces the popup — there is no native multi-select — and dev-warns if you
|
|
81
|
+
also passed `native`.
|
|
82
|
+
|
|
83
|
+
**Only `SelectV2` is `@deprecated`. None was deleted; every existing call site still works.**
|
|
84
|
+
|
|
85
|
+
| Deprecated | Status | Migration |
|
|
42
86
|
| --- | --- | --- |
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
87
|
+
| `SelectV2` | Now a thin wrapper — literally `<Select {...props} native={false} />` | Drop-in. DOM, ARIA roles, keyboard and the `${listboxId}-option-${id}` id scheme are unchanged, so E2E selectors keyed to it still pass |
|
|
88
|
+
| `SearchSelect` | **Not deprecated** — implementation untouched, not 1:1 replaceable yet | Hand-migrate. `insideSelect`, `isSelectAll`, `rightIcon`, a field-level loading slot and the paginated `pagination.onScroll` shape (1-based `startIndex`/`limit`/`query`) have **no** equivalent in `Select` today. Keep using it until they do |
|
|
89
|
+
| `SelectSearch` | **Not deprecated** — implementation untouched | Hand-migrate. It is uncontrolled (`initialSelectedOption` seeds state once and never resyncs) and moves real DOM focus into rows; `Select` is controlled and uses `aria-activedescendant` |
|
|
90
|
+
| `Dropdown` | **NOT deprecated** — the marker was wrong and was removed 2026-09-21 | Never "migrate" it to `Select`. It is a menu-button (`role="menu"`/`menuitem`, `aria-haspopup="menu"`), not a value picker (`role="combobox"`/`listbox`). Swapping it would be an accessibility regression, and nothing in this library replaces it |
|
|
91
|
+
|
|
92
|
+
**Still genuinely different, not pickers at all:**
|
|
93
|
+
|
|
94
|
+
| Doing | Component |
|
|
95
|
+
| --- | --- |
|
|
96
|
+
| Typing free-text tags (e.g. email addresses), no options list | `MultiSelect` — despite the name there is nothing to pick from; see gotcha below |
|
|
97
|
+
| Choosing which fields/columns to include, in a modal, from a checkbox grid | `FieldSelectModal` |
|
|
98
|
+
|
|
99
|
+
`onChange` is the change prop on `Select` and `SelectV2` (`SearchSelect.onSelect` is the one it
|
|
100
|
+
actually uses; its `onChange` is passed almost nowhere). `Search` uses `onSearch`/`onClear`
|
|
101
|
+
(`onclose` is `@deprecated`).
|
|
47
102
|
|
|
48
|
-
|
|
103
|
+
### `Dropdown`'s `handleOptionSelect` takes TWO arguments and TypeScript will not tell you
|
|
104
|
+
|
|
105
|
+
The prop is `(id, label) => void`. TypeScript accepts a one-argument function anywhere a
|
|
106
|
+
two-argument one is expected, so `handleOptionSelect={handleSelect}` where `handleSelect`
|
|
107
|
+
is `(id: string | number) => void` compiles cleanly and silently never receives `label`.
|
|
108
|
+
|
|
109
|
+
This is live in **10 call sites today** across crm-frontend and commerce — every one of them
|
|
110
|
+
a bare function reference rather than an inline arrow.
|
|
111
|
+
|
|
112
|
+
**Apply:** pass an inline arrow (`(id, label) => handleSelect(id, label)`) so the arity is
|
|
113
|
+
visible at the call site, or declare the handler with both parameters. Grep for
|
|
114
|
+
`handleOptionSelect={` followed by a bare identifier.
|
|
49
115
|
|
|
50
116
|
### `Slider` is an image carousel, not a numeric range input
|
|
51
117
|
|
|
52
118
|
`Slider` auto-advances a set of images/content on a timer — no numeric value, min/max, or step. The
|
|
53
|
-
|
|
54
|
-
|
|
119
|
+
range-input slider is a separate component named `RangeSlider`, because this library's `Slider`
|
|
120
|
+
already owns the name. `RangeSlider` used to be a Chakra passthrough on the `Primitives` barrel; it
|
|
121
|
+
is now the library's own themed component, with a real dual-thumb mode and a `marks` prop.
|
|
55
122
|
|
|
56
|
-
**Apply:** for a numeric/range form control
|
|
57
|
-
|
|
123
|
+
**Apply:** for a numeric/range form control import `RangeSlider` from the package root — never
|
|
124
|
+
`Slider`, and no longer from the `Primitives` barrel, which no longer carries it.
|
|
58
125
|
|
|
59
|
-
### Which "switch" — `ToggleSwitch` / `SegmentedControl` / `Switch`
|
|
126
|
+
### Which "switch" — `ToggleSwitch` / `SegmentedControl` / `Tabs` / `InputSwitch` / `Switch`
|
|
60
127
|
|
|
61
128
|
| Choosing | Component | Why |
|
|
62
129
|
| --- | --- | --- |
|
|
63
130
|
| A real on/off toggle | `ToggleSwitch` | `role="switch"` + `aria-checked`, full keyboard support |
|
|
64
131
|
| One of 2-5 named options | `SegmentedControl` | `role="radiogroup"`, keyboard-navigable, supports per-option disabling |
|
|
65
|
-
|
|
|
132
|
+
| Switching between views or panels | `Tabs` | `role="tablist"` + `aria-controls`, count badges, lazy panels, vertical orientation |
|
|
133
|
+
| *(avoid)* | `InputSwitch` | `@deprecated` — now a thin wrapper that renders `ToggleSwitch` |
|
|
134
|
+
| *(avoid)* | `Switch` | `@deprecated` — a mouse-only two-label segmented control (`leftText`/`rightText`); use `SegmentedControl` |
|
|
66
135
|
|
|
67
|
-
**Apply:**
|
|
68
|
-
|
|
136
|
+
**Apply:** "on vs off" is always `ToggleSwitch`; 2+ named options is always `SegmentedControl`.
|
|
137
|
+
|
|
138
|
+
**`SegmentedControl` and `Tabs` look near-identical and are not interchangeable.** They share the
|
|
139
|
+
size scale and tokens, so `SegmentedControl variant="underlineSlide"` and `Tabs variant="line"`
|
|
140
|
+
render almost the same picture, as do `variant="default"` and `Tabs variant="subtle"`. The
|
|
141
|
+
difference is what the control *is*: `SegmentedControl` is a **radiogroup** — it filters or sets a
|
|
142
|
+
value and owns nothing else on the page; `Tabs` is a **tablist** — it shows one of several panels
|
|
143
|
+
and wires `aria-controls` to them. Pick by that, never by the picture. A screen reader announces
|
|
144
|
+
"radio 1 of 3" versus "tab 1 of 3, selected", and only `Tabs` gives you panels, count badges,
|
|
145
|
+
`isLazy` and `orientation="vertical"`.
|
|
69
146
|
|
|
70
147
|
### Circular charts — `ApexPieChart` vs `ApexPolarCharts`
|
|
71
148
|
|
|
@@ -80,13 +157,13 @@ options, prefer `SegmentedControl` even over `Switch`.
|
|
|
80
157
|
| --- | --- | --- |
|
|
81
158
|
| A single themed, interactive button — any variant/size/colorScheme, dark-mode aware | `Button` | The only one of the three that reads design tokens at all |
|
|
82
159
|
| A themed row of icon + text + icon, optionally a dropdown menu on the right | `ButtonGroupIcon` | The real "group" component despite `Buttons`' plural name suggesting otherwise |
|
|
83
|
-
| *(avoid)* | `Buttons` (plural) | Legacy single
|
|
160
|
+
| *(avoid)* | `Buttons` (plural) | Legacy single-`Button` wrapper, not exported from the package root — see gotcha below |
|
|
84
161
|
|
|
85
162
|
### Which "card" — `Card` / `ProductCard` / `ProductDetails` / `PaymentCard`
|
|
86
163
|
|
|
87
164
|
| Need | Component | Why not the others |
|
|
88
165
|
| --- | --- | --- |
|
|
89
|
-
| Generic bordered/padded container, no commerce semantics | `Card` |
|
|
166
|
+
| Generic bordered/padded container, no commerce semantics | `Card` | Layout wrapper with `header`/`footer` slots and a padded body — see gotcha below |
|
|
90
167
|
| Compact product tile for a grid/listing page | `ProductCard` | Fixed size presets, single-image hover-swap, no gallery |
|
|
91
168
|
| Full product detail page layout (gallery + description + variant picker) | `ProductDetails` | No card chrome of its own; same variant-list shape as `ProductCard` but named `price`, not `options` |
|
|
92
169
|
| Subscription/pricing-tier card (plans, billing cycle, feature list) | `PaymentCard` | Takes a `Plan` object, unrelated to `options`/`productImage` |
|
|
@@ -126,31 +203,240 @@ options, prefer `SegmentedControl` even over `Switch`.
|
|
|
126
203
|
|
|
127
204
|
Both export a type named `FileUploaderProps` — the one re-exported from the package root (`src/index.ts`) describes `FileUpload`, not `FileUploader`. Check which folder a type came from before trusting the name.
|
|
128
205
|
|
|
129
|
-
###
|
|
206
|
+
### Viewing files — `MediaViewer` / `FilePreview` / `PdfViewer` / `ProfilePhotoViewer`
|
|
207
|
+
|
|
208
|
+
Four components open a file, and only one of them is the general answer.
|
|
130
209
|
|
|
131
210
|
| Need | Component | Why |
|
|
132
211
|
| --- | --- | --- |
|
|
212
|
+
| A gallery of mixed media with next/prev, a filmstrip and per-type stages | `MediaViewer` | The full lightbox: image/video/audio/pdf/doc stages, keyboard nav, fullscreen, download. Collapses the filmstrip and stepper automatically for a single item |
|
|
213
|
+
| One file, click-to-open, no gallery | `FilePreview` | Lighter controlled modal; auto-detects type, zoom/rotate for images |
|
|
133
214
|
| Always-visible inline PDF panel in the page flow | `PdfViewer` | Non-modal, PDF-only, small open/download toolbar |
|
|
134
|
-
|
|
|
215
|
+
| Crop/preview a user avatar | `ProfilePhotoViewer` | Avatar-specific, not a general file viewer |
|
|
216
|
+
|
|
217
|
+
`PdfViewer` and `FilePreview` both render a PDF through the identical unstyled `<embed type="application/pdf">` with no error handling if the browser can't render it inline — neither tells you when that happens. `MediaViewer` does handle it: formats a browser cannot decode (`.avi`, `.mkv`, `.m3u8`, `.heic`, `.tiff`) render an icon and a file-type chip with a download action instead of a blank frame.
|
|
135
218
|
|
|
136
|
-
|
|
219
|
+
`MediaViewer.labels` takes a `Partial<MediaViewerLabels>` — that type and `defaultMediaViewerLabels` are both exported from the package root, so you can merge rather than restate every string.
|
|
220
|
+
|
|
221
|
+
`MediaViewer`'s `index`/`onIndexChange` are now optional: omit both for uncontrolled (it owns the index, starting at `defaultIndex ?? 0`), or pass both to control it. Passing `index` without `onIndexChange` freezes the viewer — every nav path has nowhere to write the new index — and now warns loudly in dev.
|
|
222
|
+
|
|
223
|
+
### `HeaderActionsProps` describes a different component than `HeaderActions`
|
|
224
|
+
|
|
225
|
+
The value `HeaderActions` comes from `Components/Header/HeaderActions.tsx`, which declares its props inline. The type `HeaderActionsProps` re-exported from the package root comes from `Components/Table/TableProps.tsx` — the *table's* internal bulk-action bar. Typing a `HeaderActions` usage with `HeaderActionsProps` compiles into the wrong shape.
|
|
226
|
+
|
|
227
|
+
**Apply:** don't annotate `HeaderActions` with `HeaderActionsProps`. Let the props infer from the component, or use `React.ComponentProps<typeof HeaderActions>`. Same trap as `FileUploaderProps` above — check which folder a type came from before trusting the name.
|
|
228
|
+
|
|
229
|
+
### Confirm prompts — `ConfirmDialog` vs `AlertDialog` vs `Modal`
|
|
230
|
+
|
|
231
|
+
| Need | Component | Why |
|
|
232
|
+
| --- | --- | --- |
|
|
233
|
+
| A delete/deactivate prompt with a header swatch and a red Confirm | `ConfirmDialog` | The shared shape behind the library's confirm modals; `tone="destructive"` (the default) fills Confirm red |
|
|
234
|
+
| A simple two-button yes/no | `AlertDialog` | Lighter; `confirmButtonText`/`cancelButtonText`, `tone="danger"` for a red Confirm |
|
|
235
|
+
| Anything else | `Modal` | Named slots only — see the slot gotcha below |
|
|
236
|
+
|
|
237
|
+
**`ConfirmDialog.onConfirm` does not close the dialog.** It fires and nothing else; you call `onClose` yourself. That is deliberate — it lets you keep the dialog open while an async delete is in flight — but a handler that only calls your delete function leaves the dialog on screen with no error.
|
|
238
|
+
|
|
239
|
+
`iconBg` and `iconColor` are **required** and take raw colour strings, so the caller resolves the tone. Read them from `useCustomTheme()` — a hardcoded hex there is stuck in light mode.
|
|
240
|
+
|
|
241
|
+
### Busy indicators — `Spinner` vs `Backdrop` vs `Loading`
|
|
242
|
+
|
|
243
|
+
| Need | Component | Why |
|
|
244
|
+
| --- | --- | --- |
|
|
245
|
+
| Inline busy mark in a row, cell or button area | `Spinner` | The package-root `Spinner` is the themed one (accent colour, own xs–xl `size` scale), not Chakra's raw spinner |
|
|
246
|
+
| **Scrim over the page or one panel — the default for new work** | **`Backdrop`** | `variant="dim"` by default: black at 0.5, no blur, 225ms in / 195ms out, 40px spinner. `container` scopes it, `onClick` dismisses, `invisible` blocks without painting |
|
|
247
|
+
| Let clicks reach the page while a scrim is showing | `Backdrop allowBackgroundInteraction` | Drops `pointer-events` on the scrim **and** its transition wrapper. `onClick` cannot fire while set — that is the trade |
|
|
248
|
+
| Existing screens already using it | `Loading` | The older API. Its default `variant="frosted"` keeps the heavier house scrim (0.6 + 4px blur) so nothing shifts; `variant="dim"` routes it through `Backdrop` |
|
|
249
|
+
|
|
250
|
+
**Never hand-roll a scrim.** A `position: fixed` `Box` with your own `rgba()` will not match the
|
|
251
|
+
Modal/Drawer overlay, will not fade, and will not follow dark mode. `Backdrop` is the one owner.
|
|
252
|
+
|
|
253
|
+
One trap if you build anything similar yourself: setting `pointer-events: none` on your overlay is
|
|
254
|
+
not enough when the overlay sits inside a transition wrapper — the wrapper keeps capturing clicks.
|
|
255
|
+
`Backdrop` sets it on both.
|
|
256
|
+
|
|
257
|
+
### Data states — `EmptyState` / `ErrorState` / `QueryStateBoundary`
|
|
258
|
+
|
|
259
|
+
| Need | Component | Why |
|
|
260
|
+
| --- | --- | --- |
|
|
261
|
+
| "Nothing here yet" with an optional action | `EmptyState` | Neutral placeholder |
|
|
262
|
+
| A failed load with retry | `ErrorState` | `role="alert"`, `onRetry`/`isRetrying` built in |
|
|
263
|
+
| One fetch that can be loading, failed, empty or ready | `QueryStateBoundary` | Picks for you: loading > error > empty > `children` |
|
|
137
264
|
|
|
138
265
|
---
|
|
139
266
|
|
|
140
267
|
## Known gotchas (silent failures)
|
|
141
268
|
|
|
269
|
+
### Defaults changed in 2.4.2-beta.44 — read this first when upgrading from beta.43
|
|
270
|
+
|
|
271
|
+
| Component | beta.43 → beta.44 | Restore the old look |
|
|
272
|
+
| --- | --- | --- |
|
|
273
|
+
| Fields, selects, buttons (`Button`, `TextInput`, `InputTextArea`, `NumberInput`, DatePicker family, `Select`, `SelectV2`, `SearchSelect`, `SelectSearch`, `Search`, `Dropdown`, `SegmentedControl`) | Default size `md` → `sm` (32px). One scale for all: xs 24 / sm 32 / md 40 / lg 48 — `md` is now 40px everywhere (`TextInput` was 44, selects 38, `SegmentedControl` ~36). `TimePicker` has no `size` (fixed `sm`); `SegmentedControl` has no `xs` | `size="md"` |
|
|
274
|
+
| `Button` | Text one step smaller (sm 14→13px, md 16→14, lg 18→16). Busy = spinner only, width kept (was "Loading" + spinner). Outline: 1px border, hover is a tint, not a fill | `loadingText="Loading"` |
|
|
275
|
+
| `Tag` | `solid`/`md` → `subtle`/`sm`. Hover + pointer only with `onTagClick`; `maxW` truncates with the full text as a title. Exact heights 20/24/28/32, weight 500, 1px inset ring (never adds height); subtle is a light tint with ink ≥ 6.5:1 | `variant="solid" size="md"` |
|
|
276
|
+
| `resolveSoftTone` | `bg`/`border` are now translucent (alpha hex) — composite onto the surface before `contrastRatio`; optional 3rd `surface` arg; adds `hoverBg`/`activeBg`. Badge/Alert/Toaster/EmptyState follow | — |
|
|
277
|
+
| `resolveFilledSurface` | Still white-first; when a white-labelled fill would vanish on the canvas (zinc dark primary) it falls back to a light fill with dark ink. Takes `background` in `colors` now | — |
|
|
278
|
+
| `Checkbox` / `RadioButton` | Box 16/20/24 → 14/16/20; label 14px; 1px border; one fill rung for every `colorScheme`. **`RadioButton colorScheme` now applies** (was always primary) | — |
|
|
279
|
+
| `ToggleSwitch` / `SegmentedControl` / `TableToggle` | Off track lifted to 3:1; thumb ink flips on light fills. Radius `lg`; `TableToggle` tooltips = button names, `aria-pressed` | — |
|
|
280
|
+
| `MultiSelect` | Default `md` → `sm`; real `<label>`; shared two-tone focus ring | `size="md"` |
|
|
281
|
+
| Selected rows (`Dropdown`, `SelectV2`, `SearchSelect`, `SelectSearch`, `MoreItems`, `Table` filters, menus) | Dark aliases `backgroundColor.tertiary` to the panel, so a selected row sat at 1.025:1 and was invisible. It is now lifted to a perceptible step. Light is byte-identical on eight brands; `zinc` moves slightly, having been below the step too | — |
|
|
282
|
+
| `tertiary` | Was an exact copy of `secondary` on six brands and of `primary` on three, so `colorScheme="tertiary"` rendered as another scheme. Now a real third accent: `primary`'s hue turned 60° at `secondary`'s luminances, so contrast is unchanged | use `secondary` |
|
|
283
|
+
| `SelectV2` | Trigger is now `div[role=combobox]`, not `<button>` — widen a `useRef<HTMLButtonElement>` to `HTMLDivElement`; assert `aria-disabled`, not `toBeDisabled()`. `isMulti` shows removable `Tag` chips (`maxVisibleChips`, default 6, then `+N`); Backspace removes the last; `maxLabelsBeforeSummary` now only shapes the `aria-label`. Read-only is `data-readonly`, not `aria-readonly` | custom `renderValue` for text |
|
|
284
|
+
| `SearchSelect` / `SelectSearch` | Menu radius `lg` → `xl`, shadow `lg`. `SearchSelect`'s button triggers are now `role=button` named `"Label: value"`; only the text input is `role=combobox` — update `getByRole("combobox")` queries | — |
|
|
285
|
+
| `TextInput` | **`type="password"` now auto-renders a show/hide toggle** — a plain password field gains a button it did not have in beta.43. Suppressed automatically when `inputRightIcon` is set, so a hand-rolled toggle never doubles up; `isPasswordToggleDisabled` opts out entirely. Also new: `variant` (`outline` default / `filled` / `flushed`), `isClearable`, `showCharacterCount` + `maxLength`, `inputLeftAddon`/`inputRightAddon`, `isLoading`. `inputStyle`/`leftElementStyle`/`rightElementStyle` are now `SystemProps` and `inputGroupStyle` is `CSSProperties` — all four were bare `object`, so a wrong key that used to compile now fails | `isPasswordToggleDisabled` |
|
|
286
|
+
| Chakra passthroughs | 34 barrel value exports (and 12 type exports) that duplicated an owned component were removed: `Input`, `Textarea`, `Progress`, `Radio`, `RadioGroup`, `Skeleton`, `ModalOverlay`, `ModalContent`, `ModalCloseButton`, `CardBody`, `ChakraCard`, `ChakraSelect`, `ChakraModal`(+`Body`/`Header`/`Footer`) the `Tabs`/`Accordion` families, and the Chakra slider sub-parts. `Tabs`, `Accordion` and `RangeSlider` now resolve to the library's own themed components (`RangeSlider` gained a real dual-thumb mode and a `marks` prop). Each removal is a compile error, never a silent swap | use the owned component — `TextInput`, `InputTextArea`, `ProgressBar`, `RadioButton`, `Skeletons`, `Modal`, `Card`, `Select` |
|
|
287
|
+
| `Avatar` / `AvatarGroup` | Now the library's own components, not Chakra passthroughs. `AvatarProps` is a closed list (`name`, `src`, `size` `2xs`–`xl`, `status`, `ariaLabel`, `getInitials`, `data-testid`) — Chakra style props and `2xl` no longer compile, and **`name` is now required `string`**, so a `user.name?: string` call site fails. The fill is derived from `name`, so stop passing `bg`/`color`; it follows brand and dark mode on its own. `AvatarGroup` takes `people=[{name, src}]`, not `<Avatar>` children, so it can build one accurate group label. Measured by typecheck: 13 of 18 consumer files break | wrap in a `Box` for placement/shadow; resolve `name` at the call site |
|
|
288
|
+
| `SettingsSection` | New optional `action` slot, right of the title/description on the header row — additive, nothing changes without it | — |
|
|
289
|
+
| `Button` / `Buttons` | Icon-only buttons are square. `Buttons` (plural) is themed instead of hardcoded purple | — |
|
|
290
|
+
| `ProgressBar` | Fill lifted to ≥ 3:1 on its track — green/orange/blue/cyan are visibly darker in light mode | — |
|
|
291
|
+
| `PhoneNumberInput` / `PinInput` / `NoteTextArea` | `ref` now attaches; labels bound; PIN digits grouped and named | — |
|
|
292
|
+
| `RangeDatePicker` | Outside click keeps a fully picked range (was discarded) | — |
|
|
293
|
+
| `FilePreview` / `ContactForm` | Radius `2xl` → `xl` | — |
|
|
294
|
+
| `Avatar` / `Timeline` / `Table` | Generated avatar fills now guarantee ≥ 4.5:1 initials (a name may get a different shade); Timeline rail lifted to 3:1; Table status/filter chips use the soft recipe; stray radii → `lg`/`xl`/`full` | — |
|
|
295
|
+
| `AlertDialog` | Yes/No → Confirm/Cancel; Cancel is a neutral gray outline (was red) | `confirmButtonText`/`cancelButtonText`; `tone="danger"` for a red Confirm |
|
|
296
|
+
| `Modal` | Page scroll now locks (`blockScrollOnMount` was silently off); `motionPreset="scale"`; theme scrim (60% black + blur) — drop any `overlaybackdropFilter` hue-rotate workaround; `isLoading` keeps header + close button | `blockScrollOnMount={false}` |
|
|
297
|
+
| `Toaster` | `showToast` returns an id; `update(id, patch)` / `close(id)`; `loading` toasts never auto-dismiss | pass `duration` |
|
|
298
|
+
| `ToolTip` | `openDelay` 0 → 300ms; 13px themed look | `openDelay={0}` |
|
|
299
|
+
| `InputTextArea` / `FileUpload` / `TextInput` | Width 500px → 100% / `maxSizeKB` 5 → 5120 / no default "Placeholder" text | `width="500px"` / — (5 KB was a bug) / — |
|
|
300
|
+
| `DatePicker` (no `pickerType`) | Inference is case-sensitive: `MM` is month, `mm` minutes. `dd/MM/yyyy` was misread as date+time and showed time selects; it is now date-only | `pickerType="datetime"` |
|
|
301
|
+
| `EmptyState` | Title is an `h3`; image is decorative (`alt=""`, was the title) | `titleAs`, `imageAlt` |
|
|
302
|
+
| Theme `Badge` / `Card` / field labels | Badge: pill, no uppercase, default `sm`. Card: default variant `outline`. Label colour `text[700]`; helper/error row 12px | `size`/`variant` props |
|
|
303
|
+
| `Header` | `position: sticky; top: 0`, z-index `sticky` (1100, was 1000); `rightSlot` mounts once, not per layout | — |
|
|
304
|
+
| `Table` | Radius `xl`; row height 32/40/52 by density; filter button is named "Filter {label}" (tests querying "Search" break); client pagination resets to page 1 when `data.length` changes | — |
|
|
305
|
+
| `KanbanBoard` | `height`/`maxH` props replace the clipping wrapper; `height="100%"` needs a parent with a definite height | — |
|
|
306
|
+
| `ProfileCard` / `SideBar` | `variant="outlein"` now draws an outline; header divider 1px `boxborder[200]` / mobile backdrop uses the shared scrim | — |
|
|
307
|
+
| `SideBar` | Scroll-container and submenu ids are generated (`useId`) — `#sidebar-scroll-container` / `#submenu-<label>` no longer exist; row heights fixed 20/32/48; count badges use soft tone | — |
|
|
308
|
+
| `ToggleSwitch` | No `aria-required` on the switch (invalid for `role=switch`); `isRequired` still shows `*` | — |
|
|
309
|
+
| `KanbanBoard` / `PdfViewer` / `UserDetails` | Cards, drag handles and toolbar links get accessible names; scroll panels are focusable regions; `UserDetails` badges 12px | — |
|
|
310
|
+
| `NumberInput` / `FileUpload` | Steppers exactly half the field height; drop-zone border 1px (was 2px) | — |
|
|
311
|
+
| `HeaderActions` | Edit/Create are real `<button>`s (keyboard reachable, focus ring); select named by `select.ariaLabel` or its placeholder | — |
|
|
312
|
+
| `SearchSelect` | New `aria-label` prop for fields without a visible `label` | — |
|
|
313
|
+
| New root exports | `mergeRefs`/`setRef`, `rafThrottle`, `toWords`, `useDebouncedCallback`/`useDebouncedValue`, and the chart theming kit (`getCategoricalSeriesColors`, `chartInk`, `labelOnSeries`, …) — previously internal-only | — |
|
|
314
|
+
| `toWords` | Now splits camelCase (`nextFollowUp` → `Next Follow Up`), so `Timeline`/`KanbanBoard` auto-labels read correctly instead of `Nextfollowup` | pass an explicit label |
|
|
315
|
+
| Focus rings (all controls) | `focusRing.ring` is now the brand accent itself (lavender `#8B3FC8`), not a near-black band — the white halo already separates it from a filled control | — |
|
|
316
|
+
| `Tag` | Label line-height 1.45 so descenders (`p`, `g`, `y`) are no longer clipped by the ellipsis overflow | — |
|
|
317
|
+
| `Toaster` | `error` toasts announce assertively (`role="alert"`); status icons have a text equivalent | — |
|
|
318
|
+
| `FeedbackForm` | Built on `TextInput`/`InputTextArea`/`RadioButtonGroup`; required fields show `*` in the label | — |
|
|
319
|
+
| `PinInput` | `size` now works (square cells 24/32/40/48, default `sm`) — it was silently ignored | `size="md"` |
|
|
320
|
+
| `Tag` | New `leadingIcon` (decorative, before the label) and `isDisabled` (sets `aria-disabled` + native `disabled` on the clickable/remove buttons, so they leave the tab order — not just dimmed) | — |
|
|
321
|
+
| `ToolTip` | Defaults a Popper `preventOverflow` padding of 8px, so a bubble near the right edge no longer overhangs by a subpixel and raises page scrollbars. A caller-supplied `preventOverflow` modifier still wins | pass your own `modifiers` |
|
|
322
|
+
| `Table` / `KanbanBoard` | Column sort buttons and draggable cards now show the library focus ring on keyboard focus (was an opacity flicker / the browser default outline). Kanban card wrappers render as Chakra `Box`; keyboard drag (Space, arrows, Space) is unchanged | — |
|
|
323
|
+
| `Search` / `FilterBar` / `SettingRow` / `NoteTextArea` | `Search` names itself from `placeholder` when there's no `label`/`aria-label`. `FilterBar` wraps `search` in a `role="search"` landmark named by `searchLabel` (default "Search"). `SettingRow` auto-wires an unnamed `control` to the row's title/description via `aria-labelledby`/`aria-describedby` unless it already has its own `aria-label`. `NoteTextArea` adds `titleAriaLabel`/`noteAriaLabel` (default "Note title" / `customPlaceholder`) | — |
|
|
324
|
+
|
|
325
|
+
### Removed barrel exports → what to import instead (beta.44)
|
|
326
|
+
|
|
327
|
+
Every name below stopped resolving from `pixelize-design-library` in beta.44. Each is a **compile
|
|
328
|
+
error**, never a silent swap, and each has an owned replacement that is already exported. Props
|
|
329
|
+
differ — this is a rewrite of the call site, not a rename.
|
|
330
|
+
|
|
331
|
+
| No longer exported | Import instead | Note |
|
|
332
|
+
| --- | --- | --- |
|
|
333
|
+
| `Input` | `TextInput` | Owns its label, helper/error text and password toggle |
|
|
334
|
+
| `Textarea` | `InputTextArea` | |
|
|
335
|
+
| `ChakraModal`, `ModalContent`, `ModalOverlay`, `ModalCloseButton`, `ChakraModalHeader`, `ChakraModalBody`, `ChakraModalFooter` | `Modal` | `Modal` renders the overlay, content and close button itself — drop those three. **`ModalHeader`/`ModalBody`/`ModalFooter` are still exported** and are still how you fill it; only the `Chakra`-prefixed aliases went. Header text can come from `title`/`subtitle` instead |
|
|
336
|
+
| `ChakraCard`, `CardBody` | `Card` | `header`/`footer` slots + `bodyProps` |
|
|
337
|
+
| `ChakraSelect` | `Select` | |
|
|
338
|
+
| `Radio`, `RadioGroup` | `RadioButton` / `RadioButtonGroup` | |
|
|
339
|
+
| `Skeleton` | `Skeletons` | Takes `borderRadius` |
|
|
340
|
+
| `Progress` | `ProgressBar` | |
|
|
341
|
+
| `AccordionItem`, `AccordionButton`, `AccordionPanel`, `AccordionIcon` | `Accordion` | Takes an `items` array, not compound children |
|
|
342
|
+
| `SliderTrack`, `SliderFilledTrack`, `SliderThumb`, `SliderMark` | `Slider` / `RangeSlider` | Owned components; the Chakra sub-parts are gone |
|
|
343
|
+
|
|
344
|
+
**Ten names still resolve** and only narrowed their props — `Accordion`, `Avatar`, `AvatarGroup`,
|
|
345
|
+
`RangeSlider`, `Spinner`, `Tab`, `TabList`, `TabPanel`, `TabPanels`, `Tabs`. They now point at the
|
|
346
|
+
library's own themed component rather than the Chakra passthrough.
|
|
347
|
+
|
|
348
|
+
### `Tag`'s `onIconClick` renders nothing without `icon` — the remove button silently never appears
|
|
349
|
+
|
|
350
|
+
`onIconClick` only turns `icon` into a remove button; it has no effect on its own (`Tag.tsx`
|
|
351
|
+
`{icon && (onIconClick ? … : …)}`). Passing `onIconClick` alone — expecting a default close
|
|
352
|
+
affordance the way Chakra's own `TagCloseButton` or AntD's `closable` work — compiles fine and
|
|
353
|
+
renders a plain tag with no way to remove it.
|
|
354
|
+
|
|
355
|
+
**Apply:** always pass both `icon` (e.g. `lucide-react`'s `X`) and `onIconClick` together for a
|
|
356
|
+
removable chip. `icon` alone (no `onIconClick`) is the decorative case — a plain right-side icon
|
|
357
|
+
with no click affordance, aria-hidden.
|
|
358
|
+
|
|
359
|
+
### A rounded box with `overflow: hidden` clips glyphs at the corners — never round the clipping element
|
|
360
|
+
|
|
361
|
+
`border-radius` reshapes the overflow clip, so a pill-shaped element with `overflow: hidden`
|
|
362
|
+
clips text along an **ellipse**, not a rectangle. A leading `p`, `j`, `g`, `q` or `y` loses part
|
|
363
|
+
of its descender to the bottom-left curve. It looks like a font or line-height problem; it is not.
|
|
364
|
+
This shipped in `Tag`, where the label carried both `borderRadius: "full"` (to round its focus
|
|
365
|
+
ring) and `overflow: hidden` (for `text-overflow: ellipsis`).
|
|
366
|
+
|
|
367
|
+
The two cannot live on the same element. `overflow-clip-margin` does not rescue it either:
|
|
368
|
+
`text-overflow: ellipsis` needs a non-`clip` horizontal axis, and mixing `hidden`/`clip` across
|
|
369
|
+
axes collapses both to `hidden`, which makes the margin inert.
|
|
370
|
+
|
|
371
|
+
**Apply:** keep the radius on the outer element and put `overflow: hidden` +
|
|
372
|
+
`text-overflow: ellipsis` on a square (`borderRadius: 0`) child. Chakra's `TagLabel` also forces
|
|
373
|
+
`noOfLines={1}` as a style prop, which outranks the theme — pass `noOfLines={undefined}` to drop
|
|
374
|
+
it. In your own components, the same rule holds for any rounded chip, avatar or badge that clips
|
|
375
|
+
its own text. The `/tag` playground's "Glyph clipping" section renders every letter leading and
|
|
376
|
+
trailing at all four sizes as the visual check.
|
|
377
|
+
|
|
378
|
+
### `colorScheme="tertiary"` is a real third accent from beta.44 (it used to be a duplicate)
|
|
379
|
+
|
|
380
|
+
Through beta.43 `tertiary` was an exact copy of `secondary` on six brands and of `primary` on three,
|
|
381
|
+
so the two schemes were indistinguishable. It is now `primary`'s hue turned 60° re-solved to
|
|
382
|
+
`secondary`'s luminances, so every contrast guarantee is unchanged.
|
|
383
|
+
|
|
384
|
+
**Apply:** `secondary` vs `tertiary` is now a real visual distinction on every brand except `zinc`,
|
|
385
|
+
which is near-grey and has almost no hue to turn — use a semantic scheme (`blue`, `teal`, `purple`)
|
|
386
|
+
there if the two categories must read apart.
|
|
387
|
+
|
|
388
|
+
### Your own overlay painted `background[50]` sinks into the dark canvas
|
|
389
|
+
|
|
390
|
+
In dark mode `background[50]` equals the page canvas on 8 of 9 brands. Library dialogs, drawers,
|
|
391
|
+
popovers and menus now paint `colors.surfaceRaised` — identical `#ffffff` in light, one elevation
|
|
392
|
+
step up in dark. A custom panel, popover or `ModalContent bg=` in an app should read
|
|
393
|
+
`surfaceRaised` too, and a divider inside it `raisedRule(colors)`.
|
|
394
|
+
|
|
142
395
|
### `Drawer` / `Modal` / `ProfileCard` drop any child that isn't a named slot
|
|
143
396
|
|
|
144
397
|
All three match children by exact type (`child.type === XHeader/XBody/XFooter`) and render only
|
|
145
|
-
those matches — nothing else in `children` is ever read.
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
398
|
+
those matches — nothing else in `children` is ever read. A sibling among the slots (a nested
|
|
399
|
+
`Modal`, `AlertDialog`, a confirm dialog, a portal after the footer) silently never mounts. All
|
|
400
|
+
three now unwrap **one** `<>...</>` level around a slot (so `<>{cond && <DrawerFooter>...}</>`
|
|
401
|
+
still renders) and spread styling props (`padding`, `borderBottom`, `sx`, …) from the matched slot
|
|
402
|
+
onto the real header/body/footer — a second nested fragment, or any other wrapper element, still
|
|
403
|
+
drops the slot silently.
|
|
149
404
|
|
|
150
405
|
**Apply:** put a confirm dialog **outside** the `Drawer`/`Modal`/`ProfileCard`, as a sibling in a
|
|
151
406
|
wrapping fragment — never among the header/body/footer slots. When a ternary picks between bodies,
|
|
152
407
|
branch into a variable rendered inside one body slot, rather than returning fragment-wrapped slots
|
|
153
|
-
per branch.
|
|
408
|
+
per branch. `Drawer`'s misspelled `vaiant` is `@deprecated` — use `variant`.
|
|
409
|
+
|
|
410
|
+
### `QueryStateBoundary` evaluates JSX `children` even while loading
|
|
411
|
+
|
|
412
|
+
JSX children are built before the boundary decides what to show, so `data.items.map(...)` crashes
|
|
413
|
+
while `data` is still `undefined`. **Apply:** pass `children` as a function — `{() => <List
|
|
414
|
+
items={data.items} />}` — whenever it reads data that may not exist yet.
|
|
415
|
+
|
|
416
|
+
### `StatCard`'s delta colour follows `trend` vs `goodDirection`, not `trend` alone
|
|
417
|
+
|
|
418
|
+
Green when `trend === goodDirection`, red otherwise — a falling cost with `goodDirection="down"` is
|
|
419
|
+
green. Pass `onClick` for a clickable card (it renders its own `<button>`); never wrap it in one.
|
|
420
|
+
|
|
421
|
+
### A clickable `TextInput` icon is a real button — give it a name
|
|
422
|
+
|
|
423
|
+
With `onRightIconclick`/`onLeftIconClick` the icon renders as a `<button>`. Without
|
|
424
|
+
`rightIconAriaLabel`/`leftIconAriaLabel` it is announced as "{label}: right icon action".
|
|
425
|
+
|
|
426
|
+
### `SelectSearch`'s `isRequired` shows the asterisk but never announces "required"
|
|
427
|
+
|
|
428
|
+
`SelectSearch` sets `aria-required` by hand on its Chakra `Input`, but Chakra's `useFormControl`
|
|
429
|
+
re-adds its own `"aria-required"` key *after* spreading your props, computed from the surrounding
|
|
430
|
+
`FormControl`. That `FormControl` is never given `isRequired`, so the attribute is recomputed as
|
|
431
|
+
undefined and stripped. Verified by DOM dump: the rendered `<input>` carries no `aria-required`
|
|
432
|
+
even when `isRequired` is passed. The visible asterisk comes from a separate custom label, so the
|
|
433
|
+
field *looks* required to sighted users and is silent to a screen reader.
|
|
434
|
+
|
|
435
|
+
**Apply:** `SelectSearch` is `@deprecated` — use `Select` (`native={false}`), which marks required
|
|
436
|
+
state on a plain `Box` combobox that Chakra does not rewrite. If you must stay on `SelectSearch`,
|
|
437
|
+
set the required state on your own wrapping `FormControl`. Note the obvious one-line fix inside the
|
|
438
|
+
component is not neutral: Chakra's `useFormControl` also emits native `required`, which would add
|
|
439
|
+
browser validation to a *filter* input that was never submitted before.
|
|
154
440
|
|
|
155
441
|
### `Select`'s `onChange` never fires for the built-in placeholder
|
|
156
442
|
|
|
@@ -160,7 +446,8 @@ picking it resolves to no match and nothing fires. An "Any / All / None" reset b
|
|
|
160
446
|
placeholder alone is a dead control; the value snaps back and no filter clears.
|
|
161
447
|
|
|
162
448
|
**Apply:** fine for a plain pick-one-of-N. For a clearable filter, add an explicit
|
|
163
|
-
`{ id: "", label: "Any" }` entry to `options` instead of relying on the placeholder.
|
|
449
|
+
`{ id: "", label: "Any" }` entry to `options` instead of relying on the placeholder. With
|
|
450
|
+
`isReadOnly`, `onChange` never fires at all.
|
|
164
451
|
|
|
165
452
|
### `MultiSelect` is an email-chip input, not a picker
|
|
166
453
|
|
|
@@ -168,17 +455,7 @@ Despite the name, `MultiSelect` takes **no `options` prop at all**. Typed text i
|
|
|
168
455
|
email address and rejected if it doesn't match — there is no way to choose from a product/entity
|
|
169
456
|
list.
|
|
170
457
|
|
|
171
|
-
**Apply:** use `
|
|
172
|
-
|
|
173
|
-
### `RadioButton` has a closed prop list — no `...rest`, no `name`
|
|
174
|
-
|
|
175
|
-
It forwards only a fixed set of props (`label`, `colorScheme`, `isChecked`, `onChange`,
|
|
176
|
-
`isDisabled`, `size`, `value`, `defaultChecked`, plus label/tooltip props) to the underlying radio
|
|
177
|
-
— a `data-*` hook, `aria-describedby`, or a `ref` cannot reach it.
|
|
178
|
-
|
|
179
|
-
**Apply:** it still joins an external `RadioGroup` correctly (grouping comes from context, no
|
|
180
|
-
`name` prop needed) — don't avoid it just for grouping. Reach for the library's Chakra escape
|
|
181
|
-
hatch only when you need something outside that closed list.
|
|
458
|
+
**Apply:** use `Select` with `isMulti` to pick multiple values from an options list.
|
|
182
459
|
|
|
183
460
|
### `Table`'s `onRowClick` is dead if every column has a `node` renderer
|
|
184
461
|
|
|
@@ -189,15 +466,6 @@ accepted, typed, never called.
|
|
|
189
466
|
**Apply:** leave at least one column without a `node`, or put an explicit control inside a `node`
|
|
190
467
|
renderer instead of relying on row click.
|
|
191
468
|
|
|
192
|
-
### `InputTextArea`'s `width` defaults to the number `500`, and no `id` means no label
|
|
193
|
-
|
|
194
|
-
`width` defaults to `500`, forwarded straight through — `500` isn't a sizing-scale key, so it
|
|
195
|
-
renders a literal `500px`, not a max and not responsive. It only shows up on a narrow screen.
|
|
196
|
-
Separately, `id` feeds both the visible label and the field itself with no fallback — omit it and
|
|
197
|
-
the label is associated with nothing; the field has no accessible name.
|
|
198
|
-
|
|
199
|
-
**Apply:** pass `width="100%"` **and** `id` at every call site.
|
|
200
|
-
|
|
201
469
|
### `error` without `errorMessage` renders the literal word "Error" — and erases `helperText`
|
|
202
470
|
|
|
203
471
|
Every field that shows validation errors (`TextInput`, `InputTextArea`, `Select`, `MultiSelect`,
|
|
@@ -261,7 +529,7 @@ applies — any letter typed is silently rejected (the character never appears,
|
|
|
261
529
|
always gets a hardcoded second line appended — "your new Pixel Account" — with no prop to remove it.
|
|
262
530
|
|
|
263
531
|
**Apply:** only use this component for numeric-only OTPs with product copy that matches that exact
|
|
264
|
-
trailing phrase. Otherwise build the card from `PinInput
|
|
532
|
+
trailing phrase. Otherwise build the card from `PinInput` plus your own text.
|
|
265
533
|
|
|
266
534
|
### `ApexLineChart` only ever renders one line, frozen at mount
|
|
267
535
|
|
|
@@ -295,22 +563,36 @@ the rest of the array is silently unused. `ApexRadialChart`'s `hollowSize` has i
|
|
|
295
563
|
`distributed` whenever `ApexBarChart`'s `barColor` has more than one color. Don't expect
|
|
296
564
|
`ApexRadialChart`'s `hollowSize` to apply under `variant="multi"`.
|
|
297
565
|
|
|
298
|
-
### `Skeletons`
|
|
566
|
+
### `Skeletons`' `isLoaded` and `borderRadius` only work for `type="skeleton"`
|
|
299
567
|
|
|
300
|
-
|
|
301
|
-
|
|
568
|
+
`type="circle"`/`"text"` never receive `isLoaded`, `borderRadius` (or `children`/`bg`/`color`/
|
|
569
|
+
`fadeDuration`) — passing them compiles and is silently dropped; the shimmer never stops no matter
|
|
570
|
+
what `isLoaded` is set to. Neither `Skeletons` nor `ProgressBar` forwards a `ref`; `ProgressBar`'s
|
|
571
|
+
`color` is `@deprecated` (use `colorScheme`).
|
|
302
572
|
|
|
303
|
-
**Apply:** for
|
|
304
|
-
`
|
|
573
|
+
**Apply:** for `circle`/`text`, control visibility by conditionally rendering the `Skeletons` element
|
|
574
|
+
itself, not via `isLoaded`.
|
|
305
575
|
|
|
306
|
-
###
|
|
576
|
+
### Five exports start with `Notification` and only one of them is a notification tray
|
|
307
577
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
578
|
+
Autocomplete offers `Notification`, `NotificationBell`, `NotificationPanel`, `NotificationList` and
|
|
579
|
+
`NotificationItem`. They are not a family — `Notification` is a standalone countdown card from a
|
|
580
|
+
different era, and picking it for an inbox row is the common mistake.
|
|
311
581
|
|
|
312
|
-
|
|
313
|
-
|
|
582
|
+
| Export | What it actually is |
|
|
583
|
+
| --- | --- |
|
|
584
|
+
| `NotificationBell` | The badge/bell button only. Requires `aria-label`; it renders no list |
|
|
585
|
+
| `NotificationPanel` | The tray the bell opens — zones, filters, loading/error/empty/data |
|
|
586
|
+
| `NotificationList` | The panel's scrolling body without the panel chrome — owns the day bucketing and `groupKey` collapsing |
|
|
587
|
+
| `NotificationItem` | One inbox row: the tone-driven chassis the list paints for each item |
|
|
588
|
+
| `Notification` | **Not deprecated.** A dated countdown card — its dot colour comes from `dueDate`/`endDate` math, not from a tone. `NotificationItem` cannot replace it: `formatRelativeTime` clamps every future date to "Just now" |
|
|
589
|
+
|
|
590
|
+
`Notification` is kept only because nothing else does that date-driven countdown; it is not a thin
|
|
591
|
+
alias, so it has not been removed.
|
|
592
|
+
|
|
593
|
+
**Apply:** for a notification tray use `NotificationBell` + `NotificationPanel`. For rows inside your
|
|
594
|
+
own layout use `NotificationList` or `NotificationItem`. Reach for `Notification` only when you
|
|
595
|
+
specifically want the deadline-countdown card, and read the gotcha below before you do.
|
|
314
596
|
|
|
315
597
|
### `Notification`'s `onClick` only reaches the title text, and its status dot has two gates
|
|
316
598
|
|
|
@@ -335,23 +617,10 @@ form is embedded in a `Modal`.
|
|
|
335
617
|
minimal valid usage. Key the element to force a remount if `defaultValues` arrives late. Verify the
|
|
336
618
|
toast actually appears if embedding inside a `Modal`.
|
|
337
619
|
|
|
338
|
-
### `Checkbox`'s `
|
|
339
|
-
|
|
340
|
-
`error` doesn't set `isInvalid`/`aria-invalid`, and `errorMessage`/`helperText` aren't linked via
|
|
341
|
-
`aria-describedby` — confirmed by three `it.failing` cases in `Checkbox.a11y.test.tsx`. Separately,
|
|
342
|
-
`variant` is typed and accepted but never destructured or read; `Checkbox.styles.ts` defines no
|
|
343
|
-
`variants` key, so no value changes anything.
|
|
620
|
+
### `Checkbox`'s `variant` is a no-op
|
|
344
621
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
### `Toggle`/`TableToggle` has no `aria-pressed`, and its tooltip text can silently mismatch its `aria-label`
|
|
349
|
-
|
|
350
|
-
Confirmed by three `it.failing` cases in `TableToggle.a11y.test.tsx` — a tooltip reading "Table View"
|
|
351
|
-
on a button whose `aria-label` is "Grid View" is a real, reachable state, not a hypothetical.
|
|
352
|
-
|
|
353
|
-
**Apply:** keep each button's tooltip text and `aria-label` in sync yourself; the component doesn't
|
|
354
|
-
enforce or derive one from the other.
|
|
622
|
+
Typed and accepted, but `Checkbox.styles.ts` defines no `variants` key, so no value changes the
|
|
623
|
+
look. (`error` now sets `isInvalid` and links its message — no need to pass both.)
|
|
355
624
|
|
|
356
625
|
### `Slider`'s pagination dots can desync from the visible slide
|
|
357
626
|
|
|
@@ -371,23 +640,14 @@ the library (`TextInput`, `NumberInput`, `PhoneNumberInput`, `RadioButton`, `Pin
|
|
|
371
640
|
**Apply:** always pass `isInformation` and `informationMessage` together; never treat
|
|
372
641
|
`isInformation` alone as "use a default message."
|
|
373
642
|
|
|
374
|
-
### Any field's label silently renders as an unassociated `<span>` if you omit `id`
|
|
375
|
-
|
|
376
|
-
`TextLabel` (the shared label engine behind nearly every field, see above) only renders a real
|
|
377
|
-
`<label htmlFor>` when given an `id` — omit it and the visible label text renders but is never
|
|
378
|
-
programmatically associated with its control, on any of the ~17 components that use it.
|
|
379
|
-
|
|
380
|
-
**Apply:** always pass `id` when you want a real, accessible `<label>`. (`MultiSelect` omits it on
|
|
381
|
-
purpose and wires `aria-label` instead — that's the pattern to copy if you skip `id` deliberately.)
|
|
382
|
-
|
|
383
643
|
### `ErrorComponent`'s `error` prop is the message text itself — the opposite of `error`+`errorMessage`
|
|
384
644
|
|
|
385
645
|
Every other field in the library pairs a boolean `error` with a string `errorMessage`.
|
|
386
|
-
`ErrorComponent` (used internally by `Input
|
|
646
|
+
`ErrorComponent` (used internally by `Input`) instead takes `error: string` directly as
|
|
387
647
|
the message, with no internal truthy-check — passing `error=""` still draws the full icon next to
|
|
388
648
|
blank text. It also has no `id`, so unlike `ErrorMessage` it can't be wired to `aria-describedby`.
|
|
389
649
|
|
|
390
|
-
**Apply:** treat `ErrorComponent` as `Input
|
|
650
|
+
**Apply:** treat `ErrorComponent` as `Input`-specific, not a general error row; guard it
|
|
391
651
|
with a truthy-message check yourself, and use `ErrorMessage` for any other field.
|
|
392
652
|
|
|
393
653
|
### `FormattedDescription`'s single-`*italic*` marker strips the asterisks but applies no italic style
|
|
@@ -407,11 +667,10 @@ looks like it does nothing: the form stays open with no error or feedback.
|
|
|
407
667
|
**Apply:** always pass `editNoteLoading` alongside `onEditNote`, even a client-only flag flipped
|
|
408
668
|
right after the call resolves.
|
|
409
669
|
|
|
410
|
-
### `Timeline`'s `events` prop is
|
|
670
|
+
### `Timeline`'s `events` prop is `@deprecated` and still renders nothing
|
|
411
671
|
|
|
412
|
-
`events`
|
|
413
|
-
|
|
414
|
-
**Apply:** always use `timelineEvents`; treat `events`/the exported `TimelineEvent` type as vestigial.
|
|
672
|
+
Pass `timelineEvents`; `events` (and the `TimelineEvent` type) is never read, not even as a fallback.
|
|
673
|
+
Rows are now static unless you pass `onEventClick`.
|
|
415
674
|
|
|
416
675
|
### `Timeline` drops events with an unparseable `created_at`, with no visible trace
|
|
417
676
|
|
|
@@ -421,27 +680,24 @@ shown in a fallback bucket, just gone. The only signal is a `console.warn` insid
|
|
|
421
680
|
**Apply:** validate/normalize `created_at` before handing events to `Timeline` — a bad timestamp is
|
|
422
681
|
silent, total content loss for that row.
|
|
423
682
|
|
|
424
|
-
### `Reorder`'s `onReorder` fires even when nothing moved
|
|
683
|
+
### `Reorder`'s `onReorder` fires even when nothing moved
|
|
425
684
|
|
|
426
685
|
A drag that ends back at its starting index still has a drop target and still calls `onReorder` with
|
|
427
|
-
a new array reference in the same order.
|
|
428
|
-
`onRemove` in practice, but the exported `ReorderListProps` type declares only
|
|
429
|
-
`label`/`items`/`onReorder` — neither `ReorderListProps` nor `ReorderItem` is exported from
|
|
430
|
-
`src/index.ts` at all, so there's no public named type to check either way.
|
|
686
|
+
a new array reference in the same order.
|
|
431
687
|
|
|
432
688
|
**Apply:** compare source/destination index (or diff the array) before persisting a reorder, if a
|
|
433
|
-
no-op write matters. `showRemoveIcon`/`onRemove`
|
|
689
|
+
no-op write matters. `showRemoveIcon`/`onRemove` are declared on `ReorderListProps` and work as
|
|
690
|
+
expected; a missing-name item's image alt falls back to `item-<1-based position>`.
|
|
434
691
|
|
|
435
|
-
### `Divider`
|
|
692
|
+
### `Divider` isn't exported from the package at all
|
|
436
693
|
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
2-row demo table, not a reusable grid.
|
|
694
|
+
`src/Components/Divider/` doesn't appear in `src/index.ts`, though it still compiles into `dist/`
|
|
695
|
+
and is deep-import-reachable. The library's own `Divider` is always vertical, fixed size/color,
|
|
696
|
+
zero props — a different thing from the general-purpose (horizontal, styleable) `Divider`
|
|
697
|
+
re-exported from the `Primitives` barrel.
|
|
442
698
|
|
|
443
699
|
**Apply:** for a divider in a consuming app, use the `Divider` from `Primitives`, not this library's
|
|
444
|
-
own.
|
|
700
|
+
own.
|
|
445
701
|
|
|
446
702
|
### `KanbanActions` is exported but still not wired into `KanbanBoard`
|
|
447
703
|
|
|
@@ -481,14 +737,13 @@ props. Mixing plain and `customNode` items in one column produces inconsistent p
|
|
|
481
737
|
**Apply:** don't expect board-wide card actions to reach a `customNode` card; wire them inside your
|
|
482
738
|
custom render instead.
|
|
483
739
|
|
|
484
|
-
### `KanbanBoard`'s `AccountCard` only renders string-typed fields, and
|
|
740
|
+
### `KanbanBoard`'s `AccountCard` only renders string-typed fields, and labels are the raw key
|
|
485
741
|
|
|
486
|
-
A numeric field on an `Account` (
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
collapses into one mashed word ("Nextfollowup").
|
|
742
|
+
A numeric field on an `Account` (allowed by its index signature) is never shown in the card's field
|
|
743
|
+
list. The label is the key with only its first letter capitalised — `account_name` renders
|
|
744
|
+
"Account_name", `nextFollowUp` renders "NextFollowUp"; nothing splits words.
|
|
490
745
|
|
|
491
|
-
**Apply:**
|
|
746
|
+
**Apply:** keep numeric display values as strings; use keys that read acceptably as-is.
|
|
492
747
|
|
|
493
748
|
### `KanbanBoard`'s `onColumnDelete` receives the deleted column's **card** ids, not the column's id
|
|
494
749
|
|
|
@@ -501,25 +756,13 @@ before the click) if you need the column id itself.
|
|
|
501
756
|
|
|
502
757
|
### `isRequired` is decorative on some fields, native on others — same prop name, different behavior
|
|
503
758
|
|
|
504
|
-
`
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
natively. A form relying on `isRequired` for native HTML5/AT validation works on some fields and
|
|
508
|
-
silently doesn't on others.
|
|
759
|
+
`NumberInput` and the internal `Input.tsx` set native `required` (browser bubble, blocks submit).
|
|
760
|
+
`TextInput` and `InputTextArea` set only `aria-required` — announced, but no native validation.
|
|
761
|
+
`PhoneNumberInput` and `PinInput` pass it only to the label (draws a `*`); the field gets nothing.
|
|
509
762
|
|
|
510
763
|
**Apply:** don't rely on `isRequired` for native form validation — validate required fields yourself
|
|
511
764
|
regardless of which component you're using.
|
|
512
765
|
|
|
513
|
-
### `PhoneNumberInput` and `NoteTextArea` type a `ref` prop that never attaches
|
|
514
|
-
|
|
515
|
-
Both are plain function components, not `forwardRef` — a `ref` passed to a plain function component
|
|
516
|
-
is stripped before the body runs, so the destructured ref param is always `undefined`.
|
|
517
|
-
`NoteTextArea` compounds this: even where it does forward a ref, it only reaches the secondary title
|
|
518
|
-
input, never the primary `Textarea`.
|
|
519
|
-
|
|
520
|
-
**Apply:** don't rely on a `ref` into either component; `NumberInput`/`InputTextArea` forward refs
|
|
521
|
-
correctly if you need that pattern.
|
|
522
|
-
|
|
523
766
|
### `NoteTextArea`'s `saveButtonLoading` going `true → false` clears the draft even on a failed save
|
|
524
767
|
|
|
525
768
|
The effect that resets note/title/files fires whenever `saveButtonLoading` goes falsy — there's no
|
|
@@ -529,29 +772,21 @@ silently discards everything the user typed.
|
|
|
529
772
|
**Apply:** don't flip `saveButtonLoading` back to `false` on failure without your own recovery path
|
|
530
773
|
(e.g. keep the draft in your own state and re-seed it).
|
|
531
774
|
|
|
532
|
-
### `
|
|
533
|
-
|
|
534
|
-
The component published as `PinInput` from `index.ts` is Chakra-native, themed, supports OTP paste
|
|
535
|
-
and `type: "alphanumeric" | "number"`. `PinInputs` (plural) is a separate, hand-rolled,
|
|
536
|
-
always-numeric implementation that is **not exported** and not referenced anywhere else in the repo
|
|
537
|
-
— a dead-code candidate, not an alternate API. It still compiles into `dist/`, so the deep-import
|
|
538
|
-
pattern this repo otherwise supports would silently pull in the unmaintained one.
|
|
539
|
-
|
|
540
|
-
**Apply:** always use `PinInput` (singular); never deep-import `PinInputs`.
|
|
541
|
-
|
|
542
|
-
### `InputSwitch`'s checked/unchecked track color is silently replaced by a caller-supplied `sx`
|
|
775
|
+
### `InputSwitch` now renders `ToggleSwitch` — `.chakra-switch__*` selectors match nothing
|
|
543
776
|
|
|
544
|
-
|
|
545
|
-
|
|
777
|
+
`InputSwitch` is `@deprecated` and wraps `ToggleSwitch`, which is not a Chakra `Switch`. An `sx`
|
|
778
|
+
targeting `.chakra-switch__track`/`__thumb` still compiles and lands on the wrapper, but styles
|
|
779
|
+
nothing. `colorScheme` and `isReadOnly` are real now (colorScheme used to be silently discarded);
|
|
780
|
+
`variant`/`spacing`/`isFocusable` stay typed `@deprecated` no-ops. **Apply:** migrate to
|
|
781
|
+
`ToggleSwitch` (`fieldLabel` for the label InputSwitch drew above the track) and drop those selectors.
|
|
546
782
|
|
|
547
|
-
**
|
|
548
|
-
|
|
783
|
+
**This breaks tests, not types.** Chakra's `Switch` rendered `role="checkbox"`; `ToggleSwitch`
|
|
784
|
+
renders the correct `role="switch"`, so `getByRole("checkbox", { name })` silently stops matching
|
|
785
|
+
while everything still compiles. Two consumer repos hit this on the beta.44 upgrade. **Apply:**
|
|
786
|
+
change those queries to `getByRole("switch", …)`.
|
|
549
787
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
Omit the prop and real users see the actual text "Placeholder" in the field.
|
|
553
|
-
|
|
554
|
-
**Apply:** always pass an explicit `placeholder` (or an empty string) at every `TextInput` call site.
|
|
788
|
+
Same shape of trap on `Tabs`: the owned `Tab` forwards no `data-testid`, so `getByTestId("…-tab-…")`
|
|
789
|
+
queries must become `getByRole("tab", { name })`.
|
|
555
790
|
|
|
556
791
|
### The internal `Input.tsx` silently ignores six declared props
|
|
557
792
|
|
|
@@ -564,19 +799,14 @@ and does nothing. It also has no `id` field, so its label always renders as an u
|
|
|
564
799
|
|
|
565
800
|
### `AlertDialog`'s `colorScheme`/`size`/`status`/`variant`/`addRole` are dead props
|
|
566
801
|
|
|
567
|
-
Typed
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
**Apply:** style Cancel/Confirm via `button1Style`/`button2Style`, not `colorScheme`/`size`/`status`/
|
|
571
|
-
`variant`.
|
|
802
|
+
Typed but never read, and `@deprecated` as a group (editors may not strike each one through). Use
|
|
803
|
+
`tone="danger"` for a red Confirm, or `button1Style`/`button2Style`.
|
|
572
804
|
|
|
573
|
-
### `AlertDialog`
|
|
805
|
+
### `AlertDialog`'s `onClose` also fires on Escape and overlay click
|
|
574
806
|
|
|
575
|
-
`closeOnOverlayClick
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
**Apply:** don't treat `onClose` as "the user explicitly chose Cancel" — that distinction isn't
|
|
579
|
-
available through this component.
|
|
807
|
+
`closeOnEsc`/`closeOnOverlayClick` default to `true`, and every dismiss path calls the same
|
|
808
|
+
`onClose`. **Apply:** don't read `onClose` as "the user chose Cancel"; pass both as `false` when
|
|
809
|
+
only the buttons may close it.
|
|
580
810
|
|
|
581
811
|
### `ToolTip`'s `overflowOnly` silently no-ops on non-single-element children
|
|
582
812
|
|
|
@@ -589,31 +819,13 @@ single `Text noOfLines`), never a Fragment or bare text.
|
|
|
589
819
|
|
|
590
820
|
### `Toaster`'s `showToast({ children })` is a dead prop, and its two `onClose`s are different functions
|
|
591
821
|
|
|
592
|
-
`children`
|
|
593
|
-
`description`/`actions` render. Separately, the `onClose` you pass to `showToast` is wired to
|
|
822
|
+
`children` is `@deprecated` and never read — only `title`/`description`/`actions` render. The `onClose` you pass to `showToast` is wired to
|
|
594
823
|
Chakra's `onCloseComplete` (fires after the exit animation, on any dismiss path); the `onClose` your
|
|
595
824
|
`actions` render-prop receives is a different, immediate per-toast dismiss function.
|
|
596
825
|
|
|
597
826
|
**Apply:** pass `description`, not `children`. Don't assume your `onClose` fires the instant the
|
|
598
827
|
user clicks close — it fires after the exit transition completes.
|
|
599
828
|
|
|
600
|
-
### Every `Toaster` status announces at `aria-live="polite"`, including `error`
|
|
601
|
-
|
|
602
|
-
No urgency bump for errors, and status is conveyed by icon + colour alone with no text equivalent —
|
|
603
|
-
confirmed by two intentionally-`it.failing` tests in `Toaster.a11y.test.tsx`.
|
|
604
|
-
|
|
605
|
-
**Apply:** don't rely on an error toast interrupting a screen reader; pair a critical failure with
|
|
606
|
-
another signal (e.g. an inline field error).
|
|
607
|
-
|
|
608
|
-
### `Button`'s `loadingText` defaults to `"Loading"`, not Chakra's spinner-only style
|
|
609
|
-
|
|
610
|
-
`loadingText` defaults to the literal string `"Loading"`, so every `isLoading` button shows that
|
|
611
|
-
text next to the spinner instead of Chakra's native behavior (hide content, spinner only) — even
|
|
612
|
-
icon-only buttons, where it can break the expected square aspect ratio. Passing
|
|
613
|
-
`loadingText={undefined}` does not restore the native look; the default parameter still applies.
|
|
614
|
-
|
|
615
|
-
**Apply:** pass `loadingText=""` explicitly to get a spinner-only loading state.
|
|
616
|
-
|
|
617
829
|
### `ButtonGroupIcon`'s dropdown needs `rightIcon` **and** `rightIconDropdown` both set
|
|
618
830
|
|
|
619
831
|
The `Menu`/`dropdownOptions` branch only renders inside `rightIcon && rightIconDropdown`. Supplying
|
|
@@ -625,22 +837,22 @@ button, right icon/dropdown), not just a "clicked outside the buttons" signal.
|
|
|
625
837
|
**Apply:** always set `rightIcon` + `rightIconDropdown={true}` together for the dropdown. Don't use
|
|
626
838
|
`onButtongroupClick` to detect background clicks — inspect `event.target` if you need to distinguish.
|
|
627
839
|
|
|
628
|
-
### `Buttons` (plural) is not a group wrapper
|
|
840
|
+
### `Buttons` (plural) is not a group wrapper
|
|
629
841
|
|
|
630
|
-
Despite the plural name suggesting a group, `Buttons`
|
|
631
|
-
|
|
632
|
-
root.
|
|
842
|
+
Despite the plural name suggesting a group, `Buttons` is now a thin wrapper over one themed
|
|
843
|
+
`Button` (its `className` is `@deprecated`), and it isn't exported from the package root.
|
|
633
844
|
|
|
634
845
|
**Apply:** use `Button` for a single themed button or `ButtonGroupIcon` for a themed group; there is
|
|
635
846
|
no good reason to reach for `Buttons`.
|
|
636
847
|
|
|
637
|
-
### `Card`
|
|
848
|
+
### `Card` already wraps `children` in a padded `CardBody` — a nested one doubles the padding
|
|
638
849
|
|
|
639
|
-
`
|
|
640
|
-
|
|
641
|
-
|
|
850
|
+
`header`/`footer` now render, and `children` sit in a flex `CardBody` laid out by `direction`/
|
|
851
|
+
`align`/`justify`. Code written for the old Card that nested its own `CardBody` now gets padding
|
|
852
|
+
twice. `colorScheme` does nothing (the Card theme never reads it) and `color` is its `@deprecated` alias; the three divider props are `@deprecated` and
|
|
853
|
+
draw nothing.
|
|
642
854
|
|
|
643
|
-
**Apply:**
|
|
855
|
+
**Apply:** drop the nested `CardBody`, or pass `bodyProps={{ p: 0 }}`.
|
|
644
856
|
|
|
645
857
|
### `ProductCard`'s variant selection goes stale after an `options` update, and `options={[]}` crashes it
|
|
646
858
|
|
|
@@ -769,13 +981,6 @@ wrong-type file. Exceeding `maxFiles` silently truncates the list with no error.
|
|
|
769
981
|
|
|
770
982
|
**Apply:** need real file bytes or enforced validation → use `FileUpload`, not `FileUploader`.
|
|
771
983
|
|
|
772
|
-
### `FileUpload`'s default `maxSizeKB` is 5 — that's 5 **kilobytes**, not megabytes
|
|
773
|
-
|
|
774
|
-
Left at its default, `FileUpload` rejects virtually every real file, and the auto-generated
|
|
775
|
-
hint/error text literally reads "0.00 MB" because the KB→MB conversion divides an already-tiny value.
|
|
776
|
-
|
|
777
|
-
**Apply:** always pass an explicit `maxSizeKB` in KB (e.g. `5000` for ~5MB).
|
|
778
|
-
|
|
779
984
|
### `DatePicker`'s `pickerType` does nothing when `isRange` is set, and no variant has a seconds control
|
|
780
985
|
|
|
781
986
|
`RangeDatePicker` never reads `pickerType` — whether time inputs show is controlled entirely by
|
|
@@ -786,23 +991,19 @@ are never user-editable.
|
|
|
786
991
|
**Apply:** for a range picker, control the time row via `dateFormat`, never `pickerType`. Don't
|
|
787
992
|
request second-precision input from any DatePicker variant.
|
|
788
993
|
|
|
789
|
-
### `
|
|
994
|
+
### `SingleDatePicker`/`TimeOnlyPicker` default to `Date` objects — opt into strings with `valueFormat="iso"`
|
|
790
995
|
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
996
|
+
By default `selectedDate`/`value`/`onChange` speak `Date`. `valueFormat="iso"` switches one instance
|
|
997
|
+
to strings: `yyyy-MM-dd` (date), `HH:mm` (time, 24h), local `yyyy-MM-dd'T'HH:mm:ss` (datetime, no
|
|
998
|
+
offset). An unparsable string reads as `null`. `RangeDatePicker` and legacy `DatePicker` stay Date-only.
|
|
794
999
|
|
|
795
|
-
**Apply:**
|
|
1000
|
+
**Apply:** use this instead of `TextInput type="date"/"time"` plus hand-rolled ISO parsing.
|
|
796
1001
|
|
|
797
|
-
### `TimeOnlyPicker`
|
|
1002
|
+
### `TimeOnlyPicker` ignores the date-range props and `autoComplete`
|
|
798
1003
|
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
`
|
|
802
|
-
`<input>` never gets a `name` attribute, breaking plain `<form>`/`FormData` submission.
|
|
803
|
-
|
|
804
|
-
**Apply:** don't rely on `TimeOnlyPicker` for native form submission or label accessibility; read its
|
|
805
|
-
value via `onChange` rather than form `name`.
|
|
1004
|
+
Label and `name` now work. `minDate`/`maxDate`/`disableFutureDates`/`disablePastDates` are still
|
|
1005
|
+
dropped, and `autoComplete` is forced to `"off"`. `DatePicker`'s `disabled`/`placeholderText` are
|
|
1006
|
+
`@deprecated` — use `isDisabled`/`placeholder` (the new name wins when both are set).
|
|
806
1007
|
|
|
807
1008
|
### `Editor`'s `config` prop can silently break dark mode, and its `key` prop can never reach Jodit
|
|
808
1009
|
|
|
@@ -815,6 +1016,20 @@ is also `null` until Jodit's lazy-loaded chunk resolves — a mount-time effect
|
|
|
815
1016
|
**Apply:** never set `theme`/`popupRoot` inside the `config` you pass to `Editor`. To force a
|
|
816
1017
|
remount, wrap `<Editor>` itself in a keyed parent, not via `Editor`'s own `key` prop.
|
|
817
1018
|
|
|
1019
|
+
### `Editor`'s Jodit toolbar is fixed for screen readers and keyboard, from our wrapper only
|
|
1020
|
+
|
|
1021
|
+
Jodit's own markup (`node_modules/jodit`) put `aria-label` on each button's `role="listitem"`
|
|
1022
|
+
wrapper instead of the real inner `<button>`, used the invalid ARIA role `"trigger"` for its
|
|
1023
|
+
dropdown-chevron spans, gave `listitem` no `role="list"` ancestor, and ships every toolbar button
|
|
1024
|
+
at `tabindex="-1"` unless `config.allowTabNavigation` is on — so by default the toolbar failed
|
|
1025
|
+
axe's `button-name`/`aria-roles`/`aria-required-parent` and was entirely unreachable by keyboard.
|
|
1026
|
+
`Editor` now sets `allowTabNavigation: true` by default (same override rule as `theme`/`popupRoot`
|
|
1027
|
+
above — a value you pass in `config` wins) and runs a `MutationObserver`-backed DOM pass
|
|
1028
|
+
(`joditAccessibility.ts`) that copies each button's real name onto it and fixes the two roles.
|
|
1029
|
+
|
|
1030
|
+
**Apply:** nothing — this is automatic. Set `config.allowTabNavigation: false` only if you
|
|
1031
|
+
deliberately want the toolbar out of the tab order; you'll reintroduce the keyboard-reachability gap.
|
|
1032
|
+
|
|
818
1033
|
### `SelectV2`, `SearchSelect`, and `SelectSearch` all search `option.label` only
|
|
819
1034
|
|
|
820
1035
|
None of the three checks a rendered secondary field (`option.description`, a custom `view` node,
|
|
@@ -824,16 +1039,11 @@ no match.
|
|
|
824
1039
|
**Apply:** if a secondary field needs to be searchable, fold it into `option.label` yourself, or
|
|
825
1040
|
pre-filter `options` before passing them in.
|
|
826
1041
|
|
|
827
|
-
### `SearchSelect` never virtualizes
|
|
1042
|
+
### `SearchSelect` never virtualizes
|
|
828
1043
|
|
|
829
1044
|
Despite the prop name, `virtualization` does nothing — every filtered option renders as a real DOM
|
|
830
|
-
node
|
|
831
|
-
|
|
832
|
-
set" (falsy), so every chip renders anyway instead of zero.
|
|
833
|
-
|
|
834
|
-
**Apply:** for a dataset large enough to need real virtualization, page it in via `pagination` rather
|
|
835
|
-
than setting `virtualization={true}`. Pass `1` or higher to `chip.maxChips`; there's no supported way
|
|
836
|
-
to hide all chips via this prop.
|
|
1045
|
+
node. Page a large dataset in via `pagination` instead. (`chip.maxChips={0}` now works: no chips,
|
|
1046
|
+
just "+N".)
|
|
837
1047
|
|
|
838
1048
|
### `SelectSearch`'s Enter key requires an exact full-label match, not the keyboard-highlighted option
|
|
839
1049
|
|
|
@@ -868,14 +1078,11 @@ dropping the hover transition.
|
|
|
868
1078
|
**Apply:** pair `ButtonText` with the default/`"button"` type and `text` with `dropdownType="text"`.
|
|
869
1079
|
Fold custom styling into `dropDownButtonStyle`, not `buttonProps.sx`.
|
|
870
1080
|
|
|
871
|
-
### `Search`
|
|
872
|
-
|
|
873
|
-
Every mounted `Search` registers its own `window` Ctrl+K listener by default — the type only permits
|
|
874
|
-
the literal `"Ctrl+K"` or `undefined`, and `undefined` still resolves to the same default via JS
|
|
875
|
-
parameter defaulting. Two instances on one visible view race for the keypress.
|
|
1081
|
+
### Every `Search` grabs a page-wide Ctrl+K by default
|
|
876
1082
|
|
|
877
|
-
|
|
878
|
-
|
|
1083
|
+
Each mounted `Search` registers its own `window` Ctrl+K listener, so two on one view race for the
|
|
1084
|
+
keypress. **Apply:** pass `shortcut={false}` on all but one. `showShortcutHint={false}` only hides
|
|
1085
|
+
the hint; the listener stays.
|
|
879
1086
|
|
|
880
1087
|
### `Header`'s desktop submenus open on hover only — no keyboard or click trigger
|
|
881
1088
|
|
|
@@ -912,13 +1119,14 @@ It's declared on the type but omitted from the component's destructure entirely.
|
|
|
912
1119
|
|
|
913
1120
|
**Apply:** don't pass it expecting it to mark or style the final crumb — there's nothing it can do.
|
|
914
1121
|
|
|
915
|
-
### `Accordion`'s `items[].buttonProps
|
|
1122
|
+
### `Accordion`'s `items[].buttonProps` replaces, not merges, the expanded/hover highlight
|
|
916
1123
|
|
|
917
|
-
|
|
918
|
-
`_hover` there
|
|
1124
|
+
It spreads after the built-in `bg`/`_hover` that encode `isExpanded` state — passing `bg` or
|
|
1125
|
+
`_hover` there silently kills that item's expanded indication. An `sx` inside `buttonProps` or
|
|
1126
|
+
`itemProps` is always overwritten by `customStyles`.
|
|
919
1127
|
|
|
920
|
-
**Apply:** style around the defaults via `customStyles` (merged through `sx`)
|
|
921
|
-
|
|
1128
|
+
**Apply:** style around the defaults via `customStyles` (merged through `sx`) when the highlight
|
|
1129
|
+
must survive.
|
|
922
1130
|
|
|
923
1131
|
### `Table`'s `LeftFilterPane` Clear All only re-applies filters in `"sidebar"` mode
|
|
924
1132
|
|
|
@@ -988,6 +1196,8 @@ implementation, despite being typed on `TableProps` (and some documented on the
|
|
|
988
1196
|
- `handleExportChange` / `exportOptions` / `exportLabel` — `Table` renders no export UI at all; none
|
|
989
1197
|
of the three are read anywhere, despite `src/Pages/table.tsx` documenting them as if live.
|
|
990
1198
|
- `onColumnFilter` — commented out of `Table`'s own destructure (`// onColumnFilter`).
|
|
1199
|
+
- `headerBgColor` / `tableBorderColor` — also dead and `@deprecated`; the header paints the
|
|
1200
|
+
variant's own background.
|
|
991
1201
|
|
|
992
1202
|
**Apply:** don't reach for any of these expecting an effect. Column visibility is driven by
|
|
993
1203
|
`isTableSettings` (shows the Settings gear) + `preferences` (server persistence) + the Manage
|
|
@@ -1098,17 +1308,23 @@ and submenu items. `disabled` is unchanged and still works independently.
|
|
|
1098
1308
|
|
|
1099
1309
|
`TextTruncation.tsx`'s label used `overflow="hidden"` (both axes) with `lineHeight="1"`, so the line
|
|
1100
1310
|
box was exactly font-size tall and any glyph descender got clipped flat — reported live on
|
|
1101
|
-
lfour.pixelizetech.com ("Legal Requests").
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1311
|
+
lfour.pixelizetech.com ("Legal Requests").
|
|
1312
|
+
|
|
1313
|
+
**An earlier fix here did not work and shipped looking correct.** It paired `overflowX="hidden"`
|
|
1314
|
+
(needed for the ellipsis) with `overflowY="clip"` + `sx={{ overflowClipMargin: "3px" }}`. CSS
|
|
1315
|
+
discards that: when one axis is `clip` and the other is a non-`clip`, non-`visible` value, `clip`
|
|
1316
|
+
computes to `hidden` — the mirror of the `visible`→`auto` rule. Measured in Chrome 152,
|
|
1317
|
+
`overflow-x: hidden; overflow-y: clip` computes to `hidden`/`hidden`, so `overflow-clip-margin` was
|
|
1318
|
+
inert on all 177 elements carrying it.
|
|
1319
|
+
|
|
1320
|
+
The working fix is vertical padding to grow the clip box, cancelled by an equal negative margin so
|
|
1321
|
+
the label's layout height is unchanged: `py="0.35em" my="-0.35em"`. The padding must suit the
|
|
1322
|
+
line-height — `0.35em` clears `lineHeight: 1`, while `Tag`'s label needs only `0.2em` at
|
|
1323
|
+
`lineHeight: 1.45` (a bigger box there would push its focus ring outside the pill).
|
|
1324
|
+
|
|
1325
|
+
**Apply:** nothing to do — this was a rendering bug, not a prop. Building another truncated
|
|
1326
|
+
single-line label? Use the `py`/negative-`my` pair. `overflow-clip-margin` only works when **both**
|
|
1327
|
+
axes are `clip`, which `text-overflow: ellipsis` rules out.
|
|
1112
1328
|
|
|
1113
1329
|
### `SideBar` nav list showed a bare, unthemed scrollbar when items overflowed — fixed
|
|
1114
1330
|
|