pixelize-design-library 2.4.2-beta.67 → 2.4.2-beta.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -4
- package/COMPONENT-GOTCHAS.md +98 -59
- package/DESIGN-GUIDE.md +18 -6
- package/README.md +14 -11
- package/dist/Components/Accordion/AccordionProps.d.ts +10 -0
- package/dist/Components/AddressCard/AddressCardProps.d.ts +15 -0
- package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChartProps.d.ts +11 -0
- package/dist/Components/Apexcharts/ApexBarChart/ApexBarChartProps.d.ts +17 -1
- package/dist/Components/Apexcharts/ApexLineChart/ApexLineChartProps.d.ts +10 -0
- package/dist/Components/Apexcharts/ApexPieChart/ApexPieChartProps.d.ts +14 -0
- package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarChartsProps.d.ts +9 -0
- package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChartProps.d.ts +10 -0
- package/dist/Components/AppSwitcher/AppSwitcher.d.ts +1 -0
- package/dist/Components/AppSwitcher/AppSwitcher.js +1 -0
- package/dist/Components/AppSwitcher/AppSwitcherProps.d.ts +23 -0
- package/dist/Components/AppSwitcher/pixelizeSuite.d.ts +1 -0
- package/dist/Components/AppearanceSettings/AppearanceSettings.d.ts +1 -0
- package/dist/Components/AppearanceSettings/AppearanceSettings.js +1 -0
- package/dist/Components/AppearanceSettings/AppearanceSettingsProps.d.ts +11 -0
- package/dist/Components/AudioRecorder/AudioRecorder.d.ts +1 -0
- package/dist/Components/AudioRecorder/AudioRecorder.js +1 -0
- package/dist/Components/AudioRecorder/AudioRecorderProps.d.ts +6 -0
- package/dist/Components/Avatar/AvatarGroup.d.ts +1 -0
- package/dist/Components/Avatar/AvatarGroup.js +1 -0
- package/dist/Components/Avatar/AvatarGroupProps.d.ts +2 -0
- package/dist/Components/Avatar/AvatarProps.d.ts +2 -2
- package/dist/Components/Avatar/avatarColorway.d.ts +1 -0
- package/dist/Components/BagBar/BagBarProps.d.ts +8 -0
- package/dist/Components/BulkSelectionBar/BulkSelectionBar.d.ts +1 -0
- package/dist/Components/BulkSelectionBar/BulkSelectionBar.js +1 -0
- package/dist/Components/BulkSelectionBar/BulkSelectionBarProps.d.ts +6 -0
- package/dist/Components/Button/Button.js +1 -0
- package/dist/Components/Button/ButtonProps.d.ts +3 -0
- package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.d.ts +1 -0
- package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +1 -0
- package/dist/Components/ButtonGroupIcon/ButtonGroupIconProps.d.ts +19 -0
- package/dist/Components/CalendarGrid/CalendarGrid.d.ts +1 -0
- package/dist/Components/CalendarGrid/CalendarGrid.js +1 -0
- package/dist/Components/CalendarGrid/CalendarGridProps.d.ts +11 -0
- package/dist/Components/CalendarGrid/calendarMath.d.ts +13 -0
- package/dist/Components/Card/CardProps.d.ts +4 -0
- package/dist/Components/Card/PaymentCard/PaymentCard.d.ts +1 -0
- package/dist/Components/Card/PaymentCard/PaymentCard.js +1 -0
- package/dist/Components/Card/PaymentCard/PaymentCardProps.d.ts +19 -0
- package/dist/Components/CartItem/CartItemProps.d.ts +10 -0
- package/dist/Components/Checkbox/CheckboxProps.d.ts +1 -0
- package/dist/Components/ChoiceCard/ChoiceCard.d.ts +1 -0
- package/dist/Components/ChoiceCard/ChoiceCard.js +1 -0
- package/dist/Components/ChoiceCard/ChoiceCardGroup.d.ts +1 -0
- package/dist/Components/ChoiceCard/ChoiceCardGroup.js +1 -0
- package/dist/Components/ChoiceCard/ChoiceCardProps.d.ts +3 -0
- package/dist/Components/ConfirmDialog/ConfirmDialog.d.ts +1 -0
- package/dist/Components/ConfirmDialog/ConfirmDialog.js +1 -0
- package/dist/Components/ConfirmDialog/ConfirmDialogProps.d.ts +5 -0
- package/dist/Components/ContactForm/ContactFormProps.d.ts +13 -0
- package/dist/Components/CouponField/CouponFieldProps.d.ts +16 -0
- package/dist/Components/CustomModulesTable/CustomModulesTable.d.ts +1 -0
- package/dist/Components/CustomModulesTable/CustomModulesTable.js +1 -0
- package/dist/Components/CustomModulesTable/CustomModulesTableProps.d.ts +17 -0
- package/dist/Components/CustomModulesTable/DeleteModuleModal.d.ts +1 -0
- package/dist/Components/CustomModulesTable/DeleteModuleModal.js +1 -0
- package/dist/Components/CustomModulesTable/EditModuleModal.d.ts +1 -0
- package/dist/Components/CustomModulesTable/EditModuleModal.js +1 -0
- package/dist/Components/DatePicker/DatePickerProps.d.ts +7 -1
- package/dist/Components/DetailSections/DetailSectionsProps.d.ts +22 -0
- package/dist/Components/Drawer/DrawerProps.d.ts +1 -1
- package/dist/Components/Dropdown/DropdownProps.d.ts +1 -0
- package/dist/Components/Editor/EditorProps.d.ts +33 -0
- package/dist/Components/Editor/editorTokens.d.ts +3 -0
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtpProps.d.ts +8 -0
- package/dist/Components/FilePreview/FilePreviewProps.d.ts +4 -0
- package/dist/Components/FileUploader/FileUploaderProps.d.ts +1 -0
- package/dist/Components/FilterBar/FilterBarProps.d.ts +2 -0
- package/dist/Components/FormDrawer/FormDrawer.d.ts +1 -0
- package/dist/Components/FormDrawer/FormDrawer.js +1 -0
- package/dist/Components/FormDrawer/FormDrawerProps.d.ts +3 -0
- package/dist/Components/FormField/FormField.d.ts +1 -0
- package/dist/Components/FormField/FormField.js +1 -0
- package/dist/Components/FormField/FormFieldProps.d.ts +4 -0
- package/dist/Components/Header/Header.d.ts +1 -0
- package/dist/Components/Header/Header.js +1 -0
- package/dist/Components/Header/HeaderActions.d.ts +16 -0
- package/dist/Components/Header/HeaderActions.js +1 -0
- package/dist/Components/Header/HeaderProps.d.ts +22 -0
- package/dist/Components/Header/components/desktopMenu.d.ts +1 -0
- package/dist/Components/Header/components/desktopMenu.js +1 -0
- package/dist/Components/Header/components/mobileMenu.d.ts +1 -0
- package/dist/Components/Header/components/mobileMenu.js +1 -0
- package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.d.ts +1 -1
- package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.js +1 -1
- package/dist/Components/KanbanBoard/KanbanBoardProps.d.ts +11 -0
- package/dist/Components/Kbd/Kbd.d.ts +1 -0
- package/dist/Components/Kbd/Kbd.js +1 -0
- package/dist/Components/Kbd/KbdProps.d.ts +4 -0
- package/dist/Components/LauncherTrigger/LauncherTrigger.d.ts +1 -0
- package/dist/Components/LauncherTrigger/LauncherTrigger.js +1 -0
- package/dist/Components/LauncherTrigger/LauncherTriggerProps.d.ts +1 -0
- package/dist/Components/LimitReachedModal/LimitReachedModal.d.ts +1 -0
- package/dist/Components/LimitReachedModal/LimitReachedModal.js +1 -0
- package/dist/Components/LimitReachedModal/LimitReachedModalProps.d.ts +7 -0
- package/dist/Components/Loading/LoadingProps.d.ts +2 -0
- package/dist/Components/MediaGallery/MediaGalleryProps.d.ts +7 -1
- package/dist/Components/MediaGallery/MediaLightboxProps.d.ts +5 -0
- package/dist/Components/MediaViewer/components/MediaAudioPlayer.d.ts +1 -0
- package/dist/Components/MediaViewer/components/MediaAudioPlayer.js +1 -0
- package/dist/Components/MediaViewer/components/MediaDocumentStage.d.ts +1 -0
- package/dist/Components/MediaViewer/components/MediaDocumentStage.js +1 -0
- package/dist/Components/MediaViewer/components/MediaImageViewer.d.ts +1 -0
- package/dist/Components/MediaViewer/components/MediaImageViewer.js +1 -0
- package/dist/Components/MediaViewer/components/MediaVideoPlayer.d.ts +1 -0
- package/dist/Components/MediaViewer/components/MediaVideoPlayer.js +1 -0
- package/dist/Components/MediaViewer/components/MediaVideoPlayerProps.d.ts +1 -0
- package/dist/Components/MediaViewer/hooks/useFileViewer.d.ts +1 -0
- package/dist/Components/MediaViewer/mediaItems.d.ts +25 -0
- package/dist/Components/MediaViewer/mediaItems.js +5 -0
- package/dist/Components/Modal/Modal.d.ts +3 -0
- package/dist/Components/Modal/Modal.js +3 -0
- package/dist/Components/Modal/ModalProps.d.ts +6 -1
- package/dist/Components/MoreItems/MoreItemsProps.d.ts +2 -0
- package/dist/Components/MultiSelect/MultiSelect.d.ts +1 -0
- package/dist/Components/MultiSelect/MultiSelect.js +1 -0
- package/dist/Components/MultiSelect/MultiSelectProps.d.ts +13 -0
- package/dist/Components/NavLauncher/NavLauncherProps.d.ts +58 -0
- package/dist/Components/NavLauncher/engine/engine.d.ts +19 -0
- package/dist/Components/NavLauncher/match.d.ts +34 -0
- package/dist/Components/NavigationBar/NavigationBar.d.ts +1 -0
- package/dist/Components/NavigationBar/NavigationBar.js +1 -0
- package/dist/Components/NavigationBar/NavigationBarProps.d.ts +15 -0
- package/dist/Components/NoteTextArea/NoteTextAreaProps.d.ts +2 -1
- package/dist/Components/NotificationBell/NotificationBellProps.d.ts +27 -0
- package/dist/Components/NotificationBell/notificationHelpers.d.ts +13 -0
- package/dist/Components/NumberInput/NumberInputProps.d.ts +1 -1
- package/dist/Components/OffersList/OffersListProps.d.ts +12 -1
- package/dist/Components/OptionChip/OptionChipProps.d.ts +5 -0
- package/dist/Components/OrderStatusTimeline/OrderStatusTimelineProps.d.ts +10 -0
- package/dist/Components/OrderSummary/OrderSummaryProps.d.ts +10 -0
- package/dist/Components/OrgSwitcher/OrgSwitcher.d.ts +1 -0
- package/dist/Components/OrgSwitcher/OrgSwitcher.js +11 -3
- package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +1 -0
- package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts +52 -0
- package/dist/Components/PageHeader/PageHeaderProps.d.ts +1 -0
- package/dist/Components/Pagination/PaginationProps.d.ts +4 -0
- package/dist/Components/PaymentOption/PaymentOptionProps.d.ts +9 -0
- package/dist/Components/PincodeChecker/PincodeCheckerProps.d.ts +13 -0
- package/dist/Components/PlanPill/PlanPill.d.ts +1 -0
- package/dist/Components/PlanPill/PlanPill.js +1 -0
- package/dist/Components/PlanPill/PlanPillProps.d.ts +1 -0
- package/dist/Components/PriceBlock/PriceBlockProps.d.ts +6 -0
- package/dist/Components/ProductBadges/ProductBadgesProps.d.ts +3 -0
- package/dist/Components/ProductCard/ProductCardProps.d.ts +10 -0
- package/dist/Components/ProductCard/QuickAddSheetProps.d.ts +8 -0
- package/dist/Components/ProductDetails/ProductDetailsProps.d.ts +25 -1
- package/dist/Components/ProfileCard/ProfileCardProps.d.ts +1 -1
- package/dist/Components/QuantityStepper/QuantityStepperProps.d.ts +9 -0
- package/dist/Components/QueryState/QueryStateProps.d.ts +2 -0
- package/dist/Components/RadioButton/RadioButtonProps.d.ts +1 -1
- package/dist/Components/Rating/RatingProps.d.ts +2 -0
- package/dist/Components/Reorder/ReorderProps.d.ts +6 -0
- package/dist/Components/ReviewList/ReviewListProps.d.ts +21 -0
- package/dist/Components/ReviewSummary/ReviewSummaryProps.d.ts +8 -1
- package/dist/Components/RolesPermission/RolesPermissionProps.d.ts +59 -1
- package/dist/Components/SearchSelect/SearchSelect.js +17 -5
- package/dist/Components/SearchSelect/SearchSelectProps.d.ts +12 -0
- package/dist/Components/SectionRail/SectionRail.d.ts +1 -0
- package/dist/Components/SectionRail/SectionRail.js +1 -0
- package/dist/Components/SectionRail/SectionRailProps.d.ts +4 -0
- package/dist/Components/SegmentedControl/SegmentedControlProps.d.ts +4 -0
- package/dist/Components/Select/Select.styles.js +25 -0
- package/dist/Components/Select/SelectNative.d.ts +10 -0
- package/dist/Components/Select/SelectNative.js +11 -4
- package/dist/Components/Select/SelectPopup.js +45 -14
- package/dist/Components/Select/SelectProps.d.ts +46 -2
- package/dist/Components/Select/selectKeyboardRing.d.ts +2 -0
- package/dist/Components/Select/selectKeyboardRing.js +7 -0
- package/dist/Components/Select/selectRowInk.d.ts +14 -0
- package/dist/Components/Select/selectRowInk.js +41 -0
- package/dist/Components/SelectSearch/SelectSearch.js +8 -2
- package/dist/Components/SelectSearch/SelectSearchProps.d.ts +9 -0
- package/dist/Components/SelectV2/SelectV2Props.d.ts +7 -0
- package/dist/Components/SideBar/SecondaryBar.d.ts +1 -0
- package/dist/Components/SideBar/SecondaryBar.js +1 -0
- package/dist/Components/SideBar/SideBar.d.ts +1 -0
- package/dist/Components/SideBar/SideBar.js +1 -0
- package/dist/Components/SideBar/SideBarProps.d.ts +32 -0
- package/dist/Components/SideBar/sidebarAccentColors.d.ts +2 -0
- package/dist/Components/SignInActivityTable/SignInActivityTable.d.ts +1 -0
- package/dist/Components/SignInActivityTable/SignInActivityTable.js +1 -0
- package/dist/Components/SignInActivityTable/SignInActivityTableProps.d.ts +2 -0
- package/dist/Components/SpecTable/SpecTableProps.d.ts +9 -0
- package/dist/Components/StageProgress/StageProgressProps.d.ts +2 -0
- package/dist/Components/StageProgress/StepperStage.d.ts +1 -0
- package/dist/Components/StageProgress/StepperStage.js +1 -0
- package/dist/Components/StatCard/StatCardProps.d.ts +1 -0
- package/dist/Components/StatusTag/StatusTagProps.d.ts +4 -0
- package/dist/Components/StickyBuyBar/StickyBuyBar.d.ts +1 -0
- package/dist/Components/StickyBuyBar/StickyBuyBar.js +1 -0
- package/dist/Components/StickyBuyBar/StickyBuyBarProps.d.ts +6 -0
- package/dist/Components/StockStatus/StockStatusProps.d.ts +2 -0
- package/dist/Components/Switch/SwitchProps.d.ts +4 -0
- package/dist/Components/Table/TableProps.d.ts +19 -0
- package/dist/Components/Table/variants/tokens.d.ts +4 -0
- package/dist/Components/Tabs/TabsContext.d.ts +14 -0
- package/dist/Components/Tabs/TabsProps.d.ts +18 -0
- package/dist/Components/Tabs/components/CountBadge.d.ts +4 -0
- package/dist/Components/Tabs/components/TabPanels.d.ts +1 -0
- package/dist/Components/Tabs/components/TabPanels.js +1 -0
- package/dist/Components/Tabs/tabStyles.d.ts +4 -0
- package/dist/Components/Tag/TagProps.d.ts +3 -0
- package/dist/Components/TagInput/TagInput.d.ts +1 -0
- package/dist/Components/TagInput/TagInput.js +1 -0
- package/dist/Components/TagInput/TagInputProps.d.ts +2 -0
- package/dist/Components/TimePicker/TimePicker.d.ts +1 -0
- package/dist/Components/TimePicker/TimePicker.js +1 -0
- package/dist/Components/TimePicker/TimePickerProps.d.ts +2 -0
- package/dist/Components/Timeline/TimelineProps.d.ts +7 -1
- package/dist/Components/Toggle/TableToggleProps.d.ts +2 -0
- package/dist/Components/ToggleSwitch/ToggleSwitchProps.d.ts +2 -0
- package/dist/Components/ToolTip/OverflowToolTip.d.ts +1 -0
- package/dist/Components/ToolTip/OverflowToolTip.js +1 -1
- package/dist/Components/ToolTip/ToolTipProps.d.ts +1 -0
- package/dist/Components/TrustBadges/TrustBadgesProps.d.ts +4 -0
- package/dist/Components/UpgradeButton/UpgradeButton.d.ts +1 -0
- package/dist/Components/UpgradeButton/UpgradeButton.js +1 -0
- package/dist/Components/UpgradeButton/UpgradeButtonProps.d.ts +4 -1
- package/dist/Components/UserDetails/UserDetailsProps.d.ts +58 -0
- package/dist/Components/VariantSelector/VariantSelectorProps.d.ts +4 -0
- package/dist/Components/WishlistToggle/WishlistToggleProps.d.ts +4 -0
- package/dist/Components/WizardDialog/WizardDialogProps.d.ts +15 -0
- package/dist/Components/WizardDialog/wizardSteps.d.ts +17 -5
- package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.d.ts +1 -0
- package/dist/Components/WorkspaceWindow/WorkspaceTrayPreview.js +1 -1
- package/dist/Components/WorkspaceWindow/WorkspaceWindow.d.ts +2 -0
- package/dist/Components/WorkspaceWindow/WorkspaceWindow.js +2 -1
- package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +13 -0
- package/dist/Theme/tokens/brands/index.d.ts +1 -1
- package/dist/Theme/tokens/brands/index.js +1 -1
- package/dist/Theme/tokens/builders/rowStates.d.ts +6 -0
- package/dist/Theme/tokens/builders/rowStates.js +14 -1
- package/dist/Theme/tokens/builders/scrollShadow.d.ts +1 -0
- package/dist/Theme/tokens/builders/scrollShadow.js +16 -0
- package/dist/esm/Components/AppSwitcher/AppSwitcher.js +1 -0
- package/dist/esm/Components/AppearanceSettings/AppearanceSettings.js +1 -0
- package/dist/esm/Components/AudioRecorder/AudioRecorder.js +1 -0
- package/dist/esm/Components/Avatar/AvatarGroup.js +1 -0
- package/dist/esm/Components/BulkSelectionBar/BulkSelectionBar.js +1 -0
- package/dist/esm/Components/Button/Button.js +1 -0
- package/dist/esm/Components/ButtonGroupIcon/ButtonGroupIcon.js +1 -0
- package/dist/esm/Components/CalendarGrid/CalendarGrid.js +1 -0
- package/dist/esm/Components/Card/PaymentCard/PaymentCard.js +1 -0
- package/dist/esm/Components/ChoiceCard/ChoiceCard.js +1 -0
- package/dist/esm/Components/ChoiceCard/ChoiceCardGroup.js +1 -0
- package/dist/esm/Components/ConfirmDialog/ConfirmDialog.js +1 -0
- package/dist/esm/Components/CustomModulesTable/CustomModulesTable.js +1 -0
- package/dist/esm/Components/CustomModulesTable/DeleteModuleModal.js +1 -0
- package/dist/esm/Components/CustomModulesTable/EditModuleModal.js +1 -0
- package/dist/esm/Components/FormDrawer/FormDrawer.js +1 -0
- package/dist/esm/Components/FormField/FormField.js +1 -0
- package/dist/esm/Components/Header/Header.js +1 -0
- package/dist/esm/Components/Header/HeaderActions.js +1 -0
- package/dist/esm/Components/Header/components/desktopMenu.js +1 -0
- package/dist/esm/Components/Header/components/mobileMenu.js +1 -0
- package/dist/esm/Components/KanbanBoard/KanbanActions/KanbanActions.js +1 -1
- package/dist/esm/Components/Kbd/Kbd.js +1 -0
- package/dist/esm/Components/LauncherTrigger/LauncherTrigger.js +1 -0
- package/dist/esm/Components/LimitReachedModal/LimitReachedModal.js +1 -0
- package/dist/esm/Components/MediaViewer/components/MediaAudioPlayer.js +1 -0
- package/dist/esm/Components/MediaViewer/components/MediaDocumentStage.js +1 -0
- package/dist/esm/Components/MediaViewer/components/MediaImageViewer.js +1 -0
- package/dist/esm/Components/MediaViewer/components/MediaVideoPlayer.js +1 -0
- package/dist/esm/Components/MediaViewer/mediaItems.js +5 -0
- package/dist/esm/Components/Modal/Modal.js +3 -0
- package/dist/esm/Components/MultiSelect/MultiSelect.js +1 -0
- package/dist/esm/Components/NavigationBar/NavigationBar.js +1 -0
- package/dist/esm/Components/OrgSwitcher/OrgSwitcher.js +13 -5
- package/dist/esm/Components/PlanPill/PlanPill.js +1 -0
- package/dist/esm/Components/SearchSelect/SearchSelect.js +19 -7
- package/dist/esm/Components/SectionRail/SectionRail.js +1 -0
- package/dist/esm/Components/Select/Select.styles.js +26 -1
- package/dist/esm/Components/Select/SelectNative.js +12 -5
- package/dist/esm/Components/Select/SelectPopup.js +47 -16
- package/dist/esm/Components/Select/selectKeyboardRing.js +3 -0
- package/dist/esm/Components/Select/selectRowInk.js +33 -0
- package/dist/esm/Components/SelectSearch/SelectSearch.js +10 -4
- package/dist/esm/Components/SideBar/SecondaryBar.js +1 -0
- package/dist/esm/Components/SideBar/SideBar.js +1 -0
- package/dist/esm/Components/SignInActivityTable/SignInActivityTable.js +1 -0
- package/dist/esm/Components/StageProgress/StepperStage.js +1 -0
- package/dist/esm/Components/StickyBuyBar/StickyBuyBar.js +1 -0
- package/dist/esm/Components/Tabs/components/TabPanels.js +1 -0
- package/dist/esm/Components/TagInput/TagInput.js +1 -0
- package/dist/esm/Components/TimePicker/TimePicker.js +1 -0
- package/dist/esm/Components/ToolTip/OverflowToolTip.js +1 -1
- package/dist/esm/Components/UpgradeButton/UpgradeButton.js +1 -0
- package/dist/esm/Components/WorkspaceWindow/WorkspaceTrayPreview.js +1 -1
- package/dist/esm/Components/WorkspaceWindow/WorkspaceWindow.js +2 -1
- package/dist/esm/Theme/tokens/brands/index.js +1 -1
- package/dist/esm/Theme/tokens/builders/rowStates.js +13 -1
- package/dist/esm/Theme/tokens/builders/scrollShadow.js +15 -0
- package/package.json +1 -1
|
@@ -12,6 +12,7 @@ export type TagVariant = "solid" | "outline" | "subtle";
|
|
|
12
12
|
export type TagDisplay = "chip" | "dot";
|
|
13
13
|
/** Props for the pill-shaped status/filter Tag chip — see Tag.tsx for interactive/icon behavior. */
|
|
14
14
|
export interface TagProps extends DataAttributes {
|
|
15
|
+
/** Chip text; truncates with an ellipsis when `maxW` is set. */
|
|
15
16
|
label: string;
|
|
16
17
|
/** No effect without icon — turns it into a remove button and stops the click from bubbling to onTagClick. */
|
|
17
18
|
onIconClick?: () => void;
|
|
@@ -29,7 +30,9 @@ export interface TagProps extends DataAttributes {
|
|
|
29
30
|
tone?: Tone;
|
|
30
31
|
/** Caps the width; the label truncates with an ellipsis and shows the full text as a title. */
|
|
31
32
|
maxW?: BoxProps["maxW"];
|
|
33
|
+
/** Defaults to "sm"; also scales the icons. */
|
|
32
34
|
size?: TagSize;
|
|
35
|
+
/** Defaults to "subtle"; ignored when `display` is "dot". */
|
|
33
36
|
variant?: TagVariant;
|
|
34
37
|
/** "dot" renders an 8px tone dot plus plain label for quiet rows; variant and icons are ignored. Default "chip". */
|
|
35
38
|
display?: TagDisplay;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { TagInputProps } from "./TagInputProps";
|
|
2
|
+
/** Free-text tag field that commits entries as removable chips; forwards its ref to the text input. */
|
|
2
3
|
declare const TagInput: import("react").ForwardRefExoticComponent<TagInputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
3
4
|
export default TagInput;
|
|
@@ -18,6 +18,7 @@ const useFieldIds_1 = require("../Common/useFieldIds");
|
|
|
18
18
|
const searchSelectSize_1 = require("../SearchSelect/searchSelectSize");
|
|
19
19
|
const Tag_1 = __importDefault(require("../Tag/Tag"));
|
|
20
20
|
const tagEntries_1 = require("./tagEntries");
|
|
21
|
+
/** Free-text tag field that commits entries as removable chips; forwards its ref to the text input. */
|
|
21
22
|
const TagInput = (0, react_1.forwardRef)(function TagInput({ value, onChange, validate, maxTags, allowDuplicates = false, addOnBlur = false, id, name, label, "aria-label": ariaLabel, placeholder, isRequired = false, isInformation, informationMessage, isDisabled = false, isReadOnly = false, error, errorMessage, helperText, size = controlSizes_1.DEFAULT_CONTROL_SIZE, labels, width = "100%", }, ref) {
|
|
22
23
|
const theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
23
24
|
const s = (0, searchSelectSize_1.getSearchSelectSizeStyles)(size);
|
|
@@ -19,6 +19,7 @@ export type TagInputProps = {
|
|
|
19
19
|
id?: string;
|
|
20
20
|
/** Submits each tag as its own hidden input with this name; the half-typed text is never submitted. */
|
|
21
21
|
name?: string;
|
|
22
|
+
/** Visible label above the field, tied to the input via `for`; also required for the info icon. */
|
|
22
23
|
label?: string;
|
|
23
24
|
/** Names the input when there is no visible `label`. */
|
|
24
25
|
"aria-label"?: string;
|
|
@@ -28,6 +29,7 @@ export type TagInputProps = {
|
|
|
28
29
|
isRequired?: boolean;
|
|
29
30
|
/** Shows an info icon beside the label; needs both `label` and `informationMessage`. */
|
|
30
31
|
isInformation?: boolean;
|
|
32
|
+
/** Tooltip text of the info icon; has no effect unless `isInformation` and `label` are set. */
|
|
31
33
|
informationMessage?: string;
|
|
32
34
|
/** Dims the chips, disables the input and drops the remove buttons. */
|
|
33
35
|
isDisabled?: boolean;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { TimePickerProps } from "./TimePickerProps";
|
|
2
|
+
/** Three inline selects (hour, minute, AM/PM or 24-hour) that emit a Date; `ref` is the hour select. */
|
|
2
3
|
declare const TimePicker: import("react").ForwardRefExoticComponent<TimePickerProps & import("react").RefAttributes<HTMLSelectElement>>;
|
|
3
4
|
export default TimePicker;
|
|
@@ -14,6 +14,7 @@ const useFieldIds_1 = require("../Common/useFieldIds");
|
|
|
14
14
|
const fieldStyles_1 = require("../Common/fieldStyles");
|
|
15
15
|
const timeParts_1 = require("./timeParts");
|
|
16
16
|
const EMPTY = "";
|
|
17
|
+
/** Three inline selects (hour, minute, AM/PM or 24-hour) that emit a Date; `ref` is the hour select. */
|
|
17
18
|
const TimePicker = (0, react_1.forwardRef)(function TimePicker({ value, date, onChange, onClear, use24Hour, dateFormat, minuteStep, baseDate, isDisabled, disabled: legacyDisabled, id, name, label, "aria-label": ariaLabel, isRequired = false, isInformation, informationMessage, error, errorMessage, helperText, size = controlSizes_1.DEFAULT_CONTROL_SIZE, width = "100%", }, ref) {
|
|
18
19
|
var _a;
|
|
19
20
|
const theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
@@ -17,6 +17,7 @@ export type TimePickerProps = {
|
|
|
17
17
|
minuteStep?: number;
|
|
18
18
|
/** Day a picked time lands on while `value` is empty; defaults to today. */
|
|
19
19
|
baseDate?: Date;
|
|
20
|
+
/** Disables all three selects and dims the field; wins over the deprecated `disabled`. */
|
|
20
21
|
isDisabled?: boolean;
|
|
21
22
|
/** @deprecated Use `isDisabled`; `isDisabled` wins when both are set. */
|
|
22
23
|
disabled?: boolean;
|
|
@@ -32,6 +33,7 @@ export type TimePickerProps = {
|
|
|
32
33
|
isRequired?: boolean;
|
|
33
34
|
/** Shows an info icon beside the label; needs both `label` and `informationMessage`. */
|
|
34
35
|
isInformation?: boolean;
|
|
36
|
+
/** Tooltip text of the info icon; shown only with `isInformation` and a `label`. */
|
|
35
37
|
informationMessage?: string;
|
|
36
38
|
/** Error border and `aria-invalid` on every select; swaps `helperText` for `errorMessage`. */
|
|
37
39
|
error?: boolean;
|
|
@@ -32,6 +32,7 @@ export interface TimelineEvent {
|
|
|
32
32
|
}
|
|
33
33
|
/** A file attached to a manual timeline note; size is captured but never read or displayed. */
|
|
34
34
|
export interface TimelineNoteAttachment {
|
|
35
|
+
/** Link target, opened in a new tab; clicks do not trigger the card's `onEventClick`. */
|
|
35
36
|
url: string;
|
|
36
37
|
/** Link text; defaults to "attachment". */
|
|
37
38
|
name?: string;
|
|
@@ -39,11 +40,15 @@ export interface TimelineNoteAttachment {
|
|
|
39
40
|
}
|
|
40
41
|
/** One manual note attached to a log entry; log_note_id doubles as the React key and the edit/delete target. */
|
|
41
42
|
export interface TimelineNote {
|
|
43
|
+
/** Unique note id passed back to `onEditNote` and `onDeleteNote`. */
|
|
42
44
|
log_note_id: number;
|
|
43
45
|
/** @deprecated Never read — the parent event already identifies the log. */
|
|
44
46
|
logs_id?: number;
|
|
47
|
+
/** Bold note heading; omitted when empty. */
|
|
45
48
|
title?: string | null;
|
|
49
|
+
/** Note body, rendered with line breaks preserved; omitted when empty. */
|
|
46
50
|
note?: string | null;
|
|
51
|
+
/** Rendered as link chips under the body. */
|
|
47
52
|
attachments?: TimelineNoteAttachment[] | null;
|
|
48
53
|
/** Epoch ms (number or digit string) or any `Date`-parseable string. */
|
|
49
54
|
created_at?: number | string | null;
|
|
@@ -54,7 +59,7 @@ export interface TimelineNote {
|
|
|
54
59
|
export interface TimelineEvents {
|
|
55
60
|
/** Only used in the React key — duplicates are tolerated. */
|
|
56
61
|
logs_id: number;
|
|
57
|
-
/** "created"/"updated"/"delete(d)" (any case) pick the color and icon
|
|
62
|
+
/** Shown as the capitalised status pill; "created"/"updated"/"delete(d)" (any case) pick the color and icon, anything else uses primary. */
|
|
58
63
|
title: string;
|
|
59
64
|
/** @deprecated Never read, but required — keep passing it; do not delete. */
|
|
60
65
|
primary_id: number;
|
|
@@ -68,6 +73,7 @@ export interface TimelineEvents {
|
|
|
68
73
|
created_at: number;
|
|
69
74
|
/** Object or JSON string of `{ field: { original, updated } }`; renders a from→to diff, bad JSON renders none. */
|
|
70
75
|
changes: unknown;
|
|
76
|
+
/** Manual notes listed under the card; editable and deletable through `onEditNote` and `onDeleteNote`. */
|
|
71
77
|
notes?: TimelineNote[] | null;
|
|
72
78
|
/** Replaces the node icon derived from `title`/`action_from`. */
|
|
73
79
|
icon?: ReactNode;
|
|
@@ -5,7 +5,9 @@ export type ViewMode = "grid" | "list";
|
|
|
5
5
|
export type TableToggleVariant = SegmentedControlVariant;
|
|
6
6
|
/** Props for TableToggle — the exported type is named ViewToggleProps, not TableToggleProps. */
|
|
7
7
|
export type ViewToggleProps = {
|
|
8
|
+
/** Controlled active view; marks that button `aria-pressed`. */
|
|
8
9
|
value: ViewMode;
|
|
10
|
+
/** Fires with the clicked mode, including when it is already active. */
|
|
9
11
|
onChange: (val: ViewMode) => void;
|
|
10
12
|
/** brandSlide = primary view switcher; underlineSlide = dense toolbars/headers. */
|
|
11
13
|
variant?: TableToggleVariant;
|
|
@@ -48,9 +48,11 @@ export type ToggleSwitchProps = Naming & {
|
|
|
48
48
|
helperText?: string;
|
|
49
49
|
/** Red track border and shows `errorMessage` instead of `helperText`. */
|
|
50
50
|
error?: boolean;
|
|
51
|
+
/** Shown in place of `helperText` while `error` is true. */
|
|
51
52
|
errorMessage?: string;
|
|
52
53
|
/** Adds the asterisk to `fieldLabel` when present, else to the inline `label`; `aria-required` is omitted, not allowed on role="switch". */
|
|
53
54
|
isRequired?: boolean;
|
|
55
|
+
/** Native name of the input, so the switch submits with a surrounding form. */
|
|
54
56
|
name?: string;
|
|
55
57
|
/** Native input value submitted with a form when checked. */
|
|
56
58
|
value?: string;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.default = OverflowToolTip;
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const ToolTip_1 = __importDefault(require("./ToolTip"));
|
|
9
|
-
|
|
9
|
+
/** Tooltip that appears only when its child text is actually truncated; sugar over `<ToolTip overflowOnly>`. */
|
|
10
10
|
function OverflowToolTip(props) {
|
|
11
11
|
return (0, jsx_runtime_1.jsx)(ToolTip_1.default, { ...props, overflowOnly: true });
|
|
12
12
|
}
|
|
@@ -5,6 +5,7 @@ export type ToolTipProps = Pick<ChakraTooltip, "placement" | "label" | "hasArrow
|
|
|
5
5
|
bg?: string;
|
|
6
6
|
/** Label ink; defaults to the tooltipSurface text colour. */
|
|
7
7
|
color?: string;
|
|
8
|
+
/** The trigger element; a non-element such as text is wrapped in a focusable span. */
|
|
8
9
|
children: React.ReactNode;
|
|
9
10
|
/** Inline CSS on the tooltip bubble (forwarded as `style`), not on the child. */
|
|
10
11
|
styles?: React.CSSProperties;
|
|
@@ -5,14 +5,18 @@ export interface TrustItem {
|
|
|
5
5
|
id?: string;
|
|
6
6
|
/** A lucide icon element; decorative, so the title always carries the meaning. */
|
|
7
7
|
icon: ReactNode;
|
|
8
|
+
/** Bold headline of the tile; also the React key when `id` is missing. */
|
|
8
9
|
title: string;
|
|
10
|
+
/** Smaller muted line under the title. */
|
|
9
11
|
detail?: string;
|
|
10
12
|
}
|
|
11
13
|
/** `row` is a wrapping horizontal strip, `grid` an even two-column grid, `stack` a vertical list. */
|
|
12
14
|
export type TrustBadgesLayout = "row" | "grid" | "stack";
|
|
13
15
|
/** Reassurance items (returns, COD, authenticity, secure payments) on a tonal tile. */
|
|
14
16
|
export interface TrustBadgesProps {
|
|
17
|
+
/** Tiles in display order; an empty array renders nothing. */
|
|
15
18
|
items: TrustItem[];
|
|
19
|
+
/** Defaults to "row". */
|
|
16
20
|
layout?: TrustBadgesLayout;
|
|
17
21
|
/** Accessible name of the list. */
|
|
18
22
|
"aria-label"?: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { UpgradeButtonProps } from "./UpgradeButtonProps";
|
|
3
|
+
/** Gradient CTA pill with optional shimmer, subtitle and loading state for upgrade prompts. */
|
|
3
4
|
declare const UpgradeButton: React.FC<UpgradeButtonProps>;
|
|
4
5
|
export default UpgradeButton;
|
|
@@ -20,6 +20,7 @@ const sizeMap = {
|
|
|
20
20
|
md: { px: "20px", py: "5px", font: "14px", sub: "10px", icon: 13, radius: "full" },
|
|
21
21
|
lg: { px: "26px", py: "8px", font: "16px", sub: "11px", icon: 16, radius: "full" },
|
|
22
22
|
};
|
|
23
|
+
/** Gradient CTA pill with optional shimmer, subtitle and loading state for upgrade prompts. */
|
|
23
24
|
const UpgradeButton = ({ label, mobileLabel, subtitle, icon = lucide_react_1.Sparkles, iconColor, variant = "brand", gradient, size = "md", shimmer = true, isLoading = false, isDisabled = false, maxLabelWidth = "160px", ariaLabel, onClick, }) => {
|
|
24
25
|
const theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
25
26
|
const c = theme.colors;
|
|
@@ -16,7 +16,7 @@ export interface UpgradeButtonProps {
|
|
|
16
16
|
subtitle?: string;
|
|
17
17
|
/** Leading icon. Defaults to lucide `Sparkles`. Pass null to hide. */
|
|
18
18
|
icon?: ElementType | null;
|
|
19
|
-
/** Defaults to gold only when gold clears
|
|
19
|
+
/** Defaults to gold only when gold clears 3:1 (non-text) against the painted gradient stops; otherwise silently falls back to the label's ink color. */
|
|
20
20
|
iconColor?: string;
|
|
21
21
|
/**
|
|
22
22
|
* Theme-aware color variant. Defaults to `brand` (the active theme's
|
|
@@ -28,7 +28,9 @@ export interface UpgradeButtonProps {
|
|
|
28
28
|
* provided.
|
|
29
29
|
*/
|
|
30
30
|
gradient?: {
|
|
31
|
+
/** Start color of the 135deg gradient; reversed on hover. */
|
|
31
32
|
from: string;
|
|
33
|
+
/** End color of the gradient; label ink is chosen to clear contrast on both stops. */
|
|
32
34
|
to: string;
|
|
33
35
|
};
|
|
34
36
|
/** Default "md". */
|
|
@@ -43,5 +45,6 @@ export interface UpgradeButtonProps {
|
|
|
43
45
|
maxLabelWidth?: string;
|
|
44
46
|
/** Replaces the name read from the visible text; it must contain that text, or voice control cannot match it. */
|
|
45
47
|
ariaLabel?: string;
|
|
48
|
+
/** Click handler; not called while `isLoading` or `isDisabled`. */
|
|
46
49
|
onClick?: React.MouseEventHandler<HTMLButtonElement>;
|
|
47
50
|
}
|
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
import { ElementType, ReactNode } from "react";
|
|
2
2
|
/** One assignable role offered in the Add User and Change Role selects. */
|
|
3
3
|
export type RoleOption = {
|
|
4
|
+
/** Identifier passed back as `roleId` on change; compared by `label`, not id, to pre-select the current role. */
|
|
4
5
|
id: number;
|
|
6
|
+
/** Role name shown in the select and matched case-insensitively against `SelectedUserDetail.role`. */
|
|
5
7
|
label: string;
|
|
6
8
|
};
|
|
7
9
|
/** One row in the left-panel user list — see SelectedUserDetail for the richer shape used once selected. */
|
|
8
10
|
export type UserListItem = {
|
|
11
|
+
/** Row key; compared with `selectedUserId` to highlight the selected row. */
|
|
9
12
|
id: number;
|
|
13
|
+
/** Joined with `lastName` as the row title and avatar initials. */
|
|
10
14
|
firstName: string;
|
|
15
|
+
/** Joined after `firstName` as the row title. */
|
|
11
16
|
lastName: string;
|
|
17
|
+
/** Secondary line under the name in the row. */
|
|
12
18
|
email: string;
|
|
13
19
|
/** Display-only — UserDetails never reads this in the list row itself, only in SelectedUserDetail once selected. */
|
|
14
20
|
role: string;
|
|
21
|
+
/** Avatar image URL; initials show when omitted. */
|
|
15
22
|
profile?: string;
|
|
23
|
+
/** Selects the green Active or red Inactive badge on the row. */
|
|
16
24
|
isActive: boolean;
|
|
17
25
|
/** isPending/isCurrent/isSuperAdmin here are decorative — only SelectedUserDetail's copies (after selection) drive any badge or action-bar behavior. */
|
|
18
26
|
isPending?: boolean;
|
|
@@ -21,20 +29,26 @@ export type UserListItem = {
|
|
|
21
29
|
};
|
|
22
30
|
/** One label/value row in the "Personal Information" panel; icon falls back to a generic user icon when omitted. */
|
|
23
31
|
export type UserDetailRow = {
|
|
32
|
+
/** Caption on the left of the row. */
|
|
24
33
|
label: string;
|
|
34
|
+
/** Text shown for this field. */
|
|
25
35
|
value: string;
|
|
36
|
+
/** Lucide-style icon component for the row tile; a generic user icon when omitted. */
|
|
26
37
|
icon?: ElementType;
|
|
27
38
|
};
|
|
28
39
|
/** Right-panel shape for the selected user — distinct field names from UserListItem (name, userId); not derived from it. */
|
|
29
40
|
export type SelectedUserDetail = {
|
|
30
41
|
/** When null, Change Role and Resend Invitation silently no-op on click (no disabled state) — unlike Deactivate, which greys out. */
|
|
31
42
|
userId?: number;
|
|
43
|
+
/** Heading and avatar name in the detail header; also named in the deactivate confirmation. */
|
|
32
44
|
name: string;
|
|
33
45
|
/** Feeds ChangeRoleModal's currentRole — must case-insensitively match a roleOptions[].label or the modal opens with nothing pre-selected. */
|
|
34
46
|
role: string;
|
|
35
47
|
/** Shown only inside ChangeRoleModal's header — the Personal Information panel does not render this field, only `details`. */
|
|
36
48
|
email: string;
|
|
49
|
+
/** Avatar image URL; initials show when omitted. */
|
|
37
50
|
profilePhoto?: string;
|
|
51
|
+
/** Selects the green Active or red Inactive badge; Resend Invitation shows only while inactive. */
|
|
38
52
|
isActive: boolean;
|
|
39
53
|
/** Renders the "Pending Invitation" badge only — does not affect which action buttons show. */
|
|
40
54
|
isPending?: boolean;
|
|
@@ -42,18 +56,25 @@ export type SelectedUserDetail = {
|
|
|
42
56
|
isCurrent?: boolean;
|
|
43
57
|
/** True hides the entire action bar (reinvite/change-role/deactivate), not just the deactivate button. */
|
|
44
58
|
isSuperAdmin?: boolean;
|
|
59
|
+
/** Rows of the Personal Information panel, in order, separated by dividers. */
|
|
45
60
|
details: UserDetailRow[];
|
|
46
61
|
};
|
|
47
62
|
/** Form values submitted by the Add User modal; role stays null until the user picks one. */
|
|
48
63
|
export type AddUserFormValues = {
|
|
64
|
+
/** Entered first name; required, trimmed before the empty check. */
|
|
49
65
|
firstName: string;
|
|
66
|
+
/** Entered last name; required, trimmed before the empty check. */
|
|
50
67
|
lastName: string;
|
|
68
|
+
/** Entered email; required and validated as an address. */
|
|
51
69
|
email: string;
|
|
70
|
+
/** The picked role option, or null while none is chosen. */
|
|
52
71
|
role: RoleOption | null;
|
|
53
72
|
};
|
|
54
73
|
/** Payload from the Change Role modal — just the ids, unlike AddUserFormValues which carries the full RoleOption. */
|
|
55
74
|
export type ChangeRoleSubmitPayload = {
|
|
75
|
+
/** Id of the user whose role changes (`SelectedUserDetail.userId`). */
|
|
56
76
|
userId: number;
|
|
77
|
+
/** `id` of the newly picked RoleOption. */
|
|
57
78
|
roleId: number;
|
|
58
79
|
};
|
|
59
80
|
/**
|
|
@@ -61,40 +82,75 @@ export type ChangeRoleSubmitPayload = {
|
|
|
61
82
|
* key has a sensible English default so the component works standalone.
|
|
62
83
|
*/
|
|
63
84
|
export type UserDetailsLabels = {
|
|
85
|
+
/** List panel heading and its accessible region name. */
|
|
64
86
|
teamMembers?: string;
|
|
87
|
+
/** Accessible name of the refresh button; the button exists only when `onRefresh` is passed. */
|
|
65
88
|
refreshList?: string;
|
|
89
|
+
/** Detail panel heading and region name while a user is selected. */
|
|
66
90
|
userDetails?: string;
|
|
91
|
+
/** Detail panel heading and region name, and the empty-state title, while no user is selected. */
|
|
67
92
|
selectTeamMember?: string;
|
|
93
|
+
/** Add User button text in the detail header; the button needs `canManageUsers`. */
|
|
68
94
|
addUser?: string;
|
|
95
|
+
/** Resend Invitation button text. */
|
|
69
96
|
resendInvitation?: string;
|
|
97
|
+
/** Deactivate button text, also the confirm button in the deactivation dialog. */
|
|
70
98
|
deactivateUser?: string;
|
|
99
|
+
/** Change Role button text. */
|
|
71
100
|
changeRole?: string;
|
|
101
|
+
/** Badge on the avatar of the current user. */
|
|
72
102
|
you?: string;
|
|
103
|
+
/** Badge text for an active user, in the list and the detail header. */
|
|
73
104
|
active?: string;
|
|
105
|
+
/** Badge text for an inactive user, in the list and the detail header. */
|
|
74
106
|
inactive?: string;
|
|
107
|
+
/** Badge text for a user whose invitation is pending. */
|
|
75
108
|
pendingInvitation?: string;
|
|
109
|
+
/** Uppercase caption above the details rows. */
|
|
76
110
|
personalInformation?: string;
|
|
111
|
+
/** Empty-state title of the list when `users` is empty. */
|
|
77
112
|
noUsers?: string;
|
|
113
|
+
/** Empty-state description in the detail panel while no user is selected. */
|
|
78
114
|
noUserSelected?: string;
|
|
115
|
+
/** Title of the Add User modal. */
|
|
79
116
|
addNewUser?: string;
|
|
117
|
+
/** Label of the first-name field in the Add User modal. */
|
|
80
118
|
firstName?: string;
|
|
119
|
+
/** Label of the last-name field in the Add User modal. */
|
|
81
120
|
lastName?: string;
|
|
121
|
+
/** Label of the email field in the Add User modal and of the read-only email in the Change Role modal. */
|
|
82
122
|
email?: string;
|
|
123
|
+
/** Label of the role select in the Add User and Change Role modals. */
|
|
83
124
|
role?: string;
|
|
125
|
+
/** Placeholder of the first-name field. */
|
|
84
126
|
firstNamePlaceholder?: string;
|
|
127
|
+
/** Placeholder of the last-name field. */
|
|
85
128
|
lastNamePlaceholder?: string;
|
|
129
|
+
/** Placeholder of the email field. */
|
|
86
130
|
emailPlaceholder?: string;
|
|
131
|
+
/** Text of the add-role action inside the role select; shown when `onAddRoleClick` is passed. */
|
|
87
132
|
addNewRole?: string;
|
|
133
|
+
/** Cancel button text in all three modals. */
|
|
88
134
|
cancel?: string;
|
|
135
|
+
/** Save button text in the Add User and Change Role modals. */
|
|
89
136
|
save?: string;
|
|
137
|
+
/** Error shown when the first name is empty on save. */
|
|
90
138
|
firstNameRequired?: string;
|
|
139
|
+
/** Error shown when the last name is empty on save. */
|
|
91
140
|
lastNameRequired?: string;
|
|
141
|
+
/** Error shown when the email is empty on save. */
|
|
92
142
|
emailRequired?: string;
|
|
143
|
+
/** Error shown when the email is not a valid address. */
|
|
93
144
|
emailInvalid?: string;
|
|
145
|
+
/** Error shown when no role is picked on save. */
|
|
94
146
|
roleRequired?: string;
|
|
147
|
+
/** Title of the Change Role modal. */
|
|
95
148
|
changeRoleTitle?: string;
|
|
149
|
+
/** Title of the deactivation dialog. */
|
|
96
150
|
confirmDeactivation?: string;
|
|
151
|
+
/** Question line of the deactivation dialog. */
|
|
97
152
|
deactivateConfirmQuestion?: string;
|
|
153
|
+
/** Text following the user name in the deactivation dialog, e.g. "Ann will no longer have access". */
|
|
98
154
|
deactivateConfirmDescription?: string;
|
|
99
155
|
};
|
|
100
156
|
/** Two-pane user directory + detail panel with bundled Add/Change-Role/Deactivate modals; not a role editor — pair with RolesPermission for managing roles themselves. */
|
|
@@ -115,7 +171,9 @@ export interface UserDetailsProps {
|
|
|
115
171
|
isInviteLoading?: boolean;
|
|
116
172
|
/** Unlike isAddUserLoading/isChangeRoleLoading, the confirm modal closes immediately on click — this flag can't keep it open to show a spinner. */
|
|
117
173
|
isDeactivateLoading?: boolean;
|
|
174
|
+
/** Spinner on the Add User modal's Save button. */
|
|
118
175
|
isAddUserLoading?: boolean;
|
|
176
|
+
/** Spinner on the Change Role modal's Save button. */
|
|
119
177
|
isChangeRoleLoading?: boolean;
|
|
120
178
|
/** Selection + refresh. */
|
|
121
179
|
onSelectUser?: (user: UserListItem) => void;
|
|
@@ -10,6 +10,7 @@ export interface VariantSelectorProps {
|
|
|
10
10
|
variants: ProductVariant[];
|
|
11
11
|
/** Controlled selection, axis id to option value id. */
|
|
12
12
|
value?: VariantSelection;
|
|
13
|
+
/** Initial selection when uncontrolled; ignored once `value` is passed. */
|
|
13
14
|
defaultValue?: VariantSelection;
|
|
14
15
|
/** Receives the new selection and the matching variant, or undefined while the selection is incomplete or has no variant. */
|
|
15
16
|
onValueChange?: (selection: VariantSelection, variant: ProductVariant | undefined) => void;
|
|
@@ -19,9 +20,12 @@ export interface VariantSelectorProps {
|
|
|
19
20
|
showSelectedLabel?: boolean;
|
|
20
21
|
/** Tags a value "N left" only when its real remaining stock is at or under LOW_STOCK_THRESHOLD. */
|
|
21
22
|
showLowStock?: boolean;
|
|
23
|
+
/** Size of every option chip. Defaults to "md". */
|
|
22
24
|
size?: OptionChipSize;
|
|
25
|
+
/** How each axis arranges its options. Defaults to "wrap". */
|
|
23
26
|
layout?: VariantSelectorLayout;
|
|
24
27
|
/** Also called when an axis `guide` link is clicked, after the guide's own onClick. */
|
|
25
28
|
onGuideClick?: (axisId: string) => void;
|
|
29
|
+
/** Test id placed on the root element. */
|
|
26
30
|
"data-testid"?: string;
|
|
27
31
|
}
|
|
@@ -10,10 +10,14 @@ export interface WishlistToggleProps {
|
|
|
10
10
|
defaultSelected?: boolean;
|
|
11
11
|
/** Fires with the next state on click or keyboard activation. */
|
|
12
12
|
onSelectedChange?: (selected: boolean) => void;
|
|
13
|
+
/** Button size; defaults to "md". */
|
|
13
14
|
size?: WishlistToggleSize;
|
|
15
|
+
/** Look of the button; defaults to "soft". */
|
|
14
16
|
variant?: WishlistToggleVariant;
|
|
15
17
|
/** Fixed accessible name, e.g. "Save Denim Jacket"; defaults to "Add to wishlist" / "Remove from wishlist". */
|
|
16
18
|
label?: string;
|
|
19
|
+
/** Blocks toggling and dims the button. */
|
|
17
20
|
isDisabled?: boolean;
|
|
21
|
+
/** Test id on the button. */
|
|
18
22
|
"data-testid"?: string;
|
|
19
23
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
/** One step of a wizard: its stepper label, body, validation and review summary. */
|
|
3
3
|
export type WizardStep = {
|
|
4
|
+
/** Stable key for the step; the value of `stepId` and what `onStepChange` receives. */
|
|
4
5
|
id: string;
|
|
5
6
|
/** Stepper label and the heading shown above the step content. */
|
|
6
7
|
label: string;
|
|
8
|
+
/** Body rendered below the step heading; stays in the tree only while this step is current. */
|
|
7
9
|
content: ReactNode;
|
|
8
10
|
/** Messages that block leaving this step; [] = valid. Must be pure (runs in the reducer). */
|
|
9
11
|
validate?: () => string[];
|
|
@@ -12,21 +14,32 @@ export type WizardStep = {
|
|
|
12
14
|
};
|
|
13
15
|
/** Visible strings; every key falls back to its English default. */
|
|
14
16
|
export type WizardLabels = Partial<{
|
|
17
|
+
/** Back button. Default "Back". */
|
|
15
18
|
back: string;
|
|
19
|
+
/** Continue button on every step but the last. Default "Continue". */
|
|
16
20
|
next: string;
|
|
21
|
+
/** Finish button on the last step. Default "Finish". */
|
|
17
22
|
finish: string;
|
|
23
|
+
/** Cancel button text. Default "Cancel". */
|
|
18
24
|
cancel: string;
|
|
25
|
+
/** Progress line above the step heading, from the 1-based step number and the step count. Default "Step N of M". */
|
|
19
26
|
stepOf: (current: number, total: number) => string;
|
|
27
|
+
/** Title of the error summary shown when a step fails validation. Default "Fix the following to continue". */
|
|
20
28
|
fixErrors: string;
|
|
29
|
+
/** Heading of the review block on the last step. Default "Review". */
|
|
21
30
|
review: string;
|
|
22
31
|
}>;
|
|
23
32
|
/** Props for the wizard dialog: Modal (or inline with `chrome`) + stepper + per-step validation + review on the last step. */
|
|
24
33
|
export interface WizardDialogProps {
|
|
34
|
+
/** Shows the wizard; closing resets uncontrolled progress to the first step. */
|
|
25
35
|
isOpen: boolean;
|
|
26
36
|
/** Ignored while `isFinishing`. */
|
|
27
37
|
onClose: () => void;
|
|
38
|
+
/** Dialog title, or the heading above the inline wizard. */
|
|
28
39
|
title: string;
|
|
40
|
+
/** Muted line under the title. */
|
|
29
41
|
subtitle?: string;
|
|
42
|
+
/** Ordered steps; the stepper locks every step beyond the furthest one validly reached. */
|
|
30
43
|
steps: WizardStep[];
|
|
31
44
|
/** Called after every step re-validates; a failing step is jumped to with its errors. */
|
|
32
45
|
onFinish: () => void;
|
|
@@ -44,7 +57,9 @@ export interface WizardDialogProps {
|
|
|
44
57
|
size?: "lg" | "xl" | "2xl" | "3xl" | "4xl";
|
|
45
58
|
/** "inline" draws the wizard in place with no Modal (no overlay, focus trap, close X, Esc or dialog role) for a host that is already the dialog, such as a WorkspaceWindow; it renders nothing while closed and Cancel still calls `onClose`. Default "modal". */
|
|
46
59
|
chrome?: "modal" | "inline";
|
|
60
|
+
/** Overrides button and message text; omitted keys keep their English defaults. */
|
|
47
61
|
labels?: WizardLabels;
|
|
62
|
+
/** Test id of the step body; the inline frame uses it with an `-inline` suffix. Defaults to "wizard-dialog". */
|
|
48
63
|
"data-testid"?: string;
|
|
49
64
|
}
|
|
50
65
|
/** Same flow inline (a page section, not a modal) — for full-page wizards. */
|
|
@@ -1,24 +1,36 @@
|
|
|
1
1
|
export type StepValidator = () => string[];
|
|
2
2
|
/** Reducer state: current step, the furthest validly reached step, and the blocking messages. */
|
|
3
3
|
export type WizardState = {
|
|
4
|
+
/** Zero-based index of the current step. */
|
|
4
5
|
index: number;
|
|
5
6
|
/** Furthest step the user has validly reached; stages beyond it stay locked. */
|
|
6
7
|
furthest: number;
|
|
8
|
+
/** Messages blocking the current step; [] when none. */
|
|
7
9
|
errors: string[];
|
|
8
10
|
};
|
|
9
11
|
/** Actions `wizardTransition` understands. */
|
|
10
|
-
export type WizardAction =
|
|
12
|
+
export type WizardAction =
|
|
13
|
+
/** Validates the current step, then advances; failing keeps the step and stores its errors. */
|
|
14
|
+
{
|
|
11
15
|
type: "next";
|
|
12
|
-
}
|
|
16
|
+
}
|
|
17
|
+
/** Steps back one, clearing errors. */
|
|
18
|
+
| {
|
|
13
19
|
type: "back";
|
|
14
|
-
}
|
|
20
|
+
}
|
|
21
|
+
/** Jumps to `index` if it is at or before `furthest`; otherwise ignored. */
|
|
22
|
+
| {
|
|
15
23
|
type: "goto";
|
|
16
24
|
index: number;
|
|
17
|
-
}
|
|
25
|
+
}
|
|
26
|
+
/** Moves to `index` and shows `errors`, used when finishing finds an invalid step. */
|
|
27
|
+
| {
|
|
18
28
|
type: "fail";
|
|
19
29
|
index: number;
|
|
20
30
|
errors: string[];
|
|
21
|
-
}
|
|
31
|
+
}
|
|
32
|
+
/** Returns to the first step with nothing reached beyond it. */
|
|
33
|
+
| {
|
|
22
34
|
type: "reset";
|
|
23
35
|
};
|
|
24
36
|
export declare const INITIAL_WIZARD_STATE: WizardState;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import type { WorkspaceTrayPreviewProps } from "./WorkspaceWindowProps";
|
|
2
|
+
/** Hover and focus preview card with open delay, close grace and Escape dismissal. */
|
|
2
3
|
export default function WorkspaceTrayPreview({ children, preview, enabled, openDelayMs, closeDelayMs, placement, onOpenChange, width, testId, }: WorkspaceTrayPreviewProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -16,7 +16,7 @@ const PLACEMENT_STYLE = {
|
|
|
16
16
|
"bottom-end": { top: "100%", right: 0, marginTop: "6px" },
|
|
17
17
|
"bottom-start": { top: "100%", left: 0, marginTop: "6px" },
|
|
18
18
|
};
|
|
19
|
-
|
|
19
|
+
/** Hover and focus preview card with open delay, close grace and Escape dismissal. */
|
|
20
20
|
function WorkspaceTrayPreview({ children, preview, enabled = true, openDelayMs = 350, closeDelayMs = 200, placement = "top-end", onOpenChange, width = "340px", testId = "workspace-tray-preview", }) {
|
|
21
21
|
const theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
22
22
|
const cardId = (0, react_1.useId)();
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { WorkspaceTrayProps, WorkspaceWindowProps } from "./WorkspaceWindowProps";
|
|
2
|
+
/** Floating Jira-style workspace window; headless, so the parent owns its `state`. */
|
|
2
3
|
export default function WorkspaceWindow({ title, state, children, onMinimize, onClose, onOpenFullPage, onOverlayClick, headerActions, labels, finalFocusRef, testId, }: WorkspaceWindowProps): import("react/jsx-runtime").JSX.Element | null;
|
|
4
|
+
/** Row of minimized-window pills, portalled above modals. */
|
|
3
5
|
export declare function WorkspaceTray({ items, onRestore, onClose, testId, placement, offset, closeLabel, dirtyLabel, label, renderItem, }: WorkspaceTrayProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -24,7 +24,7 @@ const WindowTitle = ({ testId, color, children }) => {
|
|
|
24
24
|
}, [setHeaderMounted]);
|
|
25
25
|
return ((0, jsx_runtime_1.jsx)(react_1.Text, { id: headerId, fontSize: "sm", fontWeight: 600, color: color, noOfLines: 1, "data-testid": `${testId}-title`, children: children }));
|
|
26
26
|
};
|
|
27
|
-
|
|
27
|
+
/** Floating Jira-style workspace window; headless, so the parent owns its `state`. */
|
|
28
28
|
function WorkspaceWindow({ title, state, children, onMinimize, onClose, onOpenFullPage, onOverlayClick, headerActions, labels, finalFocusRef, testId = "workspace-window", }) {
|
|
29
29
|
var _a, _b, _c;
|
|
30
30
|
// Must run before the early return: a minimized render would otherwise skip the hook
|
|
@@ -44,6 +44,7 @@ function WorkspaceWindow({ title, state, children, onMinimize, onClose, onOpenFu
|
|
|
44
44
|
}, "data-testid": `${testId}-backdrop`, children: (0, jsx_runtime_1.jsxs)(react_1.Box, { bg: theme.colors.surfaceRaised, borderRadius: "xl", boxShadow: "2xl", overflow: "hidden", w: "100%", maxW: size.maxW, h: size.h, display: "flex", flexDirection: "column", "data-testid": testId, "data-window-state": state, children: [(0, jsx_runtime_1.jsxs)(react_1.Flex, { align: "center", justify: "space-between", px: 3, py: 2, borderBottomWidth: "1px", borderColor: (0, surfaceRaised_1.raisedRule)(theme.colors), bg: (0, planeStep_1.bandOn)(theme.colors.background[100], theme.colors.surfaceRaised), flexShrink: 0, children: [(0, jsx_runtime_1.jsx)(WindowTitle, { testId: testId, color: theme.colors.text[700], children: title }), (0, jsx_runtime_1.jsxs)(react_1.HStack, { spacing: 1, children: [headerActions, onOpenFullPage ? ((0, jsx_runtime_1.jsx)(react_1.IconButton, { "aria-label": (_a = labels === null || labels === void 0 ? void 0 : labels.openFullPage) !== null && _a !== void 0 ? _a : "Open full page", size: "xs", variant: "ghost", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.ExternalLink, { size: 14 }), onClick: onOpenFullPage, "data-testid": `${testId}-fullpage` })) : null, onMinimize ? ((0, jsx_runtime_1.jsx)(react_1.IconButton, { "aria-label": (_b = labels === null || labels === void 0 ? void 0 : labels.minimize) !== null && _b !== void 0 ? _b : "Minimize", size: "xs", variant: "ghost", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Minus, { size: 15 }), onClick: onMinimize, "data-testid": `${testId}-minimize` })) : null, onClose ? ((0, jsx_runtime_1.jsx)(react_1.IconButton, { "aria-label": (_c = labels === null || labels === void 0 ? void 0 : labels.close) !== null && _c !== void 0 ? _c : "Close", size: "xs", variant: "ghost", colorScheme: "red", icon: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { size: 15 }), onClick: onClose, "data-testid": `${testId}-close` })) : null] })] }), (0, jsx_runtime_1.jsx)(react_1.Box, { flex: "1", overflow: "auto", px: { base: 3, md: 5 }, py: 4, children: children })] }) })] }));
|
|
45
45
|
}
|
|
46
46
|
const cssLength = (value) => (typeof value === "number" ? `${value}px` : value);
|
|
47
|
+
/** Row of minimized-window pills, portalled above modals. */
|
|
47
48
|
// Portalled above modal overlays; aria-live keeps Chakra's modal aria-hidden off it, data-no-focus-lock keeps the focus trap off it.
|
|
48
49
|
function WorkspaceTray({ items, onRestore, onClose, testId = "workspace-tray", placement = "bottom-end", offset, closeLabel, dirtyLabel = "Unsaved changes", label = "Minimized windows", renderItem, }) {
|
|
49
50
|
var _a, _b;
|