pixelize-design-library 2.4.2-beta.36 → 2.4.2-beta.38
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/COMPONENT-GOTCHAS.md +968 -0
- package/README.md +5 -0
- package/dist/Components/Accordion/Accordion.d.ts +1 -0
- package/dist/Components/Accordion/Accordion.js +1 -0
- package/dist/Components/Accordion/AccordionProps.d.ts +2 -0
- package/dist/Components/AlertDialog/AlertDialog.d.ts +1 -0
- package/dist/Components/AlertDialog/AlertDialog.js +1 -0
- package/dist/Components/AlertDialog/AlertDialogProps.d.ts +2 -0
- package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChart.d.ts +1 -0
- package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChart.js +1 -0
- package/dist/Components/Apexcharts/ApexAreaChart/ApexAreaChartProps.d.ts +4 -0
- package/dist/Components/Apexcharts/ApexBarChart/ApexBarChartProps.d.ts +6 -0
- package/dist/Components/Apexcharts/ApexLineChart/ApexLineChartProps.d.ts +8 -0
- package/dist/Components/Apexcharts/ApexPieChart/ApexPieChartProps.d.ts +6 -0
- package/dist/Components/Apexcharts/ApexPolarCharts/ApexPolarChartsProps.d.ts +3 -0
- package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChart.d.ts +1 -0
- package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChart.js +1 -0
- package/dist/Components/Apexcharts/ApexRadialChart/ApexRadialChartProps.d.ts +3 -0
- package/dist/Components/AppSwitcher/AppSwitcherProps.d.ts +6 -0
- package/dist/Components/AppearanceSettings/AppearanceSettingsProps.d.ts +2 -0
- package/dist/Components/Breadcrumbs/BreadcrumbsProps.d.ts +3 -0
- package/dist/Components/Button/ButtonProps.d.ts +3 -0
- package/dist/Components/ButtonGroupIcon/ButtonGoupIconProps.d.ts +7 -0
- package/dist/Components/Buttons/ButtonsProps.d.ts +2 -0
- package/dist/Components/Card/CardProps.d.ts +3 -0
- package/dist/Components/Card/PaymentCard/PaymentCardProps.d.ts +6 -0
- package/dist/Components/Checkbox/Checkbox.d.ts +1 -0
- package/dist/Components/Checkbox/Checkbox.js +1 -0
- package/dist/Components/Checkbox/CheckboxProps.d.ts +4 -0
- package/dist/Components/Common/ErrorComponent.d.ts +2 -0
- package/dist/Components/Common/ErrorComponent.js +1 -0
- package/dist/Components/Common/ErrorMessage.js +2 -2
- package/dist/Components/Common/FormLabel.d.ts +4 -0
- package/dist/Components/Common/FormLabel.js +1 -0
- package/dist/Components/Common/FormattedDescription.d.ts +2 -0
- package/dist/Components/Common/FormattedDescription.js +1 -0
- package/dist/Components/Common/HelperText.d.ts +2 -0
- package/dist/Components/Common/HelperText.js +2 -0
- package/dist/Components/Common/Label.d.ts +1 -0
- package/dist/Components/Common/Label.js +1 -0
- package/dist/Components/ContactForm/ContactForm.d.ts +1 -0
- package/dist/Components/ContactForm/ContactForm.js +1 -0
- package/dist/Components/ContactForm/ContactFormProps.d.ts +4 -0
- package/dist/Components/CopyButton/CopyButton.d.ts +3 -1
- package/dist/Components/CopyButton/CopyButton.js +1 -0
- package/dist/Components/CustomModulesTable/CustomModulesTableProps.d.ts +8 -0
- package/dist/Components/DatePicker/CalendarPanel.d.ts +1 -0
- package/dist/Components/DatePicker/CalendarPanel.js +1 -0
- package/dist/Components/DatePicker/DatePicker.d.ts +1 -0
- package/dist/Components/DatePicker/DatePicker.js +1 -0
- package/dist/Components/DatePicker/DatePickerProps.d.ts +9 -0
- package/dist/Components/DatePicker/RangeDatePicker.d.ts +1 -0
- package/dist/Components/DatePicker/RangeDatePicker.js +1 -0
- package/dist/Components/DatePicker/SingleDatePicker.d.ts +1 -0
- package/dist/Components/DatePicker/SingleDatePicker.js +1 -0
- package/dist/Components/DatePicker/ThemeDatePicker.d.ts +1 -0
- package/dist/Components/DatePicker/ThemeDatePicker.js +1 -0
- package/dist/Components/DatePicker/TimeOnlyPicker.d.ts +1 -0
- package/dist/Components/DatePicker/TimeOnlyPicker.js +4 -1
- package/dist/Components/DatePicker/TimePicker.d.ts +1 -0
- package/dist/Components/DatePicker/TimePicker.js +1 -0
- package/dist/Components/DatePicker/TimePickerInput.d.ts +1 -0
- package/dist/Components/DatePicker/TimePickerInput.js +1 -0
- package/dist/Components/Divider/Divider.d.ts +1 -0
- package/dist/Components/Divider/Divider.js +1 -0
- package/dist/Components/Drawer/DrawerProps.d.ts +2 -0
- package/dist/Components/Dropdown/DropDown.d.ts +1 -0
- package/dist/Components/Dropdown/DropDown.js +1 -0
- package/dist/Components/Dropdown/DropdownProps.d.ts +3 -0
- package/dist/Components/Editor/Editor.d.ts +1 -0
- package/dist/Components/Editor/Editor.js +1 -0
- package/dist/Components/Editor/EditorProps.d.ts +2 -0
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.d.ts +1 -0
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +2 -5
- package/dist/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtpProps.d.ts +4 -0
- package/dist/Components/EmptyState/EmptyState.d.ts +1 -0
- package/dist/Components/EmptyState/EmptyState.js +1 -0
- package/dist/Components/EmptyState/EmptyStateProps.d.ts +3 -0
- package/dist/Components/FeedbackForm/FeedbackForm.d.ts +3 -0
- package/dist/Components/FeedbackForm/FeedbackForm.js +1 -0
- package/dist/Components/FieldSelectModal/FieldSelectModal.d.ts +3 -2
- package/dist/Components/FieldSelectModal/FieldSelectModal.js +1 -0
- package/dist/Components/FilePreview/FilePreview.d.ts +1 -0
- package/dist/Components/FilePreview/FilePreview.js +1 -0
- package/dist/Components/FilePreview/FilePreviewProps.d.ts +5 -2
- package/dist/Components/FileUpload/FileUpload.d.ts +1 -0
- package/dist/Components/FileUpload/FileUpload.js +1 -0
- package/dist/Components/FileUpload/FileUploadProps.d.ts +4 -0
- package/dist/Components/FileUploader/FileUploader.d.ts +1 -0
- package/dist/Components/FileUploader/FileUploader.js +1 -0
- package/dist/Components/FileUploader/FileUploaderProps.d.ts +2 -0
- package/dist/Components/FilterSidebar/FilterSidebar.d.ts +3 -0
- package/dist/Components/Form/FormWrapper.d.ts +3 -0
- package/dist/Components/Form/FormWrapper.js +2 -1
- package/dist/Components/Header/HeaderProps.d.ts +5 -0
- package/dist/Components/Input/Input/InputProps.d.ts +2 -0
- package/dist/Components/Input/PhoneNumberInput.d.ts +1 -0
- package/dist/Components/Input/PhoneNumberInput.js +1 -0
- package/dist/Components/Input/PhoneNumberInputProps.d.ts +3 -0
- package/dist/Components/Input/Switch/InputSwitch.d.ts +2 -0
- package/dist/Components/Input/Switch/InputSwitch.js +1 -0
- package/dist/Components/Input/TextInput.js +1 -0
- package/dist/Components/Input/TextInputProps.d.ts +2 -0
- package/dist/Components/InputTextArea/InputTextArea.d.ts +1 -0
- package/dist/Components/InputTextArea/InputTextArea.js +1 -0
- package/dist/Components/InputTextArea/InputTextAreaProps.d.ts +1 -0
- package/dist/Components/KanbanBoard/AccountCard.d.ts +3 -0
- package/dist/Components/KanbanBoard/AccountCard.js +1 -0
- package/dist/Components/KanbanBoard/AccountRow.d.ts +1 -0
- package/dist/Components/KanbanBoard/AccountRow.js +1 -0
- package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.d.ts +2 -0
- package/dist/Components/KanbanBoard/KanbanActions/KanbanActions.js +1 -0
- package/dist/Components/KanbanBoard/KanbanBoard.d.ts +1 -0
- package/dist/Components/KanbanBoard/KanbanBoard.js +1 -0
- package/dist/Components/KanbanBoard/KanbanBoardProps.d.ts +12 -11
- package/dist/Components/KanbanBoard/MeasuredItem.d.ts +1 -0
- package/dist/Components/KanbanBoard/MeasuredItem.js +1 -0
- package/dist/Components/LazyWrapper/LazyWrapper.d.ts +3 -2
- package/dist/Components/LazyWrapper/LazyWrapper.js +1 -0
- package/dist/Components/LimitReachedModal/LimitReachedModalProps.d.ts +4 -1
- package/dist/Components/LimitReachedModal/limitReachedCopy.d.ts +2 -0
- package/dist/Components/LimitReachedModal/limitReachedCopy.js +2 -0
- package/dist/Components/Loading/Loading.d.ts +1 -0
- package/dist/Components/Loading/Loading.js +1 -0
- package/dist/Components/Loading/LoadingProps.d.ts +2 -0
- package/dist/Components/Modal/ModalProps.d.ts +2 -0
- package/dist/Components/MoreItems/MoreItems.d.ts +1 -0
- package/dist/Components/MoreItems/MoreItems.js +1 -0
- package/dist/Components/MoreItems/MoreItemsProps.d.ts +4 -2
- package/dist/Components/MultiSelect/MultiSelectProps.d.ts +2 -0
- package/dist/Components/NavigationBar/NavigationBarProps.d.ts +3 -0
- package/dist/Components/NoteTextArea/NoteTextArea.d.ts +1 -0
- package/dist/Components/NoteTextArea/NoteTextArea.js +1 -0
- package/dist/Components/NoteTextArea/NoteTextAreaProps.d.ts +2 -0
- package/dist/Components/Notification/Notification.d.ts +1 -0
- package/dist/Components/Notification/Notification.js +1 -0
- package/dist/Components/Notification/NotificationProps.d.ts +6 -0
- package/dist/Components/NumberInput/NumberInput.d.ts +1 -0
- package/dist/Components/NumberInput/NumberInput.js +1 -0
- package/dist/Components/NumberInput/NumberInputProps.d.ts +3 -0
- package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +6 -1
- package/dist/Components/OrgSwitcher/OrgSwitcherProps.js +1 -0
- package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts +10 -2
- package/dist/Components/PdfViewer/PdfViewer.d.ts +2 -1
- package/dist/Components/PdfViewer/PdfViewer.js +1 -0
- package/dist/Components/PinInput/PinInput.d.ts +1 -0
- package/dist/Components/PinInput/PinInput.js +1 -0
- package/dist/Components/PinInput/PinInputProps.d.ts +2 -0
- package/dist/Components/PinInputs/PinInputs.d.ts +1 -0
- package/dist/Components/PinInputs/PinInputs.js +1 -0
- package/dist/Components/PinInputs/PinInputsProps.d.ts +1 -0
- package/dist/Components/PlanBadge/PlanBadgeProps.d.ts +2 -0
- package/dist/Components/PlanPill/PlanPillProps.d.ts +2 -0
- package/dist/Components/ProductCard/ProductCardProps.d.ts +10 -0
- package/dist/Components/ProductCard/ProductReview.d.ts +1 -0
- package/dist/Components/ProductDetails/ProductDetailsProps.d.ts +7 -0
- package/dist/Components/ProfileCard/ProfileCardProps.d.ts +3 -0
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.d.ts +1 -0
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +1 -0
- package/dist/Components/ProfilePhotoViewer/ProfilePhotoViewerProps.d.ts +9 -1
- package/dist/Components/ProgressBar/ProgressBar.d.ts +1 -0
- package/dist/Components/ProgressBar/ProgressBar.js +1 -0
- package/dist/Components/ProgressBar/ProgressBarProps.d.ts +2 -0
- package/dist/Components/RadioButton/RadioButtonProps.d.ts +2 -0
- package/dist/Components/Reorder/Reorder.d.ts +2 -0
- package/dist/Components/Reorder/Reorder.js +1 -0
- package/dist/Components/Reorder/ReorderProps.d.ts +3 -0
- package/dist/Components/RolesPermission/RolesPermissionProps.d.ts +10 -0
- package/dist/Components/ScrollToTop/ScrollToTop.d.ts +3 -2
- package/dist/Components/ScrollToTop/ScrollToTop.js +1 -0
- package/dist/Components/Search/Search.d.ts +1 -0
- package/dist/Components/Search/Search.js +1 -0
- package/dist/Components/Search/SearchProps.d.ts +2 -0
- package/dist/Components/SearchSelect/SearchSelect.d.ts +1 -0
- package/dist/Components/SearchSelect/SearchSelect.js +1 -0
- package/dist/Components/SearchSelect/SearchSelectProps.d.ts +5 -0
- package/dist/Components/SegmentedControl/SegmentedControl.d.ts +1 -0
- package/dist/Components/SegmentedControl/SegmentedControl.js +1 -0
- package/dist/Components/SegmentedControl/SegmentedControlProps.d.ts +4 -0
- package/dist/Components/Select/SelectProps.d.ts +3 -0
- package/dist/Components/SelectSearch/SelectSearch.d.ts +1 -0
- package/dist/Components/SelectSearch/SelectSearch.js +1 -0
- package/dist/Components/SelectSearch/SelectSearchProps.d.ts +5 -0
- package/dist/Components/SelectV2/SelectV2.d.ts +1 -0
- package/dist/Components/SelectV2/SelectV2.js +1 -0
- package/dist/Components/SelectV2/SelectV2Props.d.ts +6 -1
- package/dist/Components/SideBar/SideBarProps.d.ts +9 -0
- package/dist/Components/SignInActivityTable/SignInActivityTableProps.d.ts +3 -0
- package/dist/Components/Skeletons/SkeletonProps.d.ts +2 -0
- package/dist/Components/Skeletons/Skeletons.d.ts +1 -0
- package/dist/Components/Skeletons/Skeletons.js +1 -0
- package/dist/Components/Slider/Slider.d.ts +3 -0
- package/dist/Components/Slider/Slider.js +1 -0
- package/dist/Components/StageProgress/StageItem.d.ts +1 -0
- package/dist/Components/StageProgress/StageItem.js +1 -0
- package/dist/Components/StageProgress/StageProgress.d.ts +1 -0
- package/dist/Components/StageProgress/StageProgress.js +1 -0
- package/dist/Components/StageProgress/StageProgressProps.d.ts +12 -4
- package/dist/Components/Switch/Switch.d.ts +1 -0
- package/dist/Components/Switch/Switch.js +1 -0
- package/dist/Components/Switch/SwitchProps.d.ts +1 -0
- package/dist/Components/Table/TableProps.d.ts +14 -0
- package/dist/Components/Table/filters/CompactSelect.d.ts +1 -0
- package/dist/Components/Table/filters/LeftFilterPane.d.ts +9 -1
- package/dist/Components/Tag/Tag.d.ts +1 -0
- package/dist/Components/Tag/Tag.js +1 -0
- package/dist/Components/Tag/TagProps.d.ts +7 -0
- package/dist/Components/Timeline/Timeline.d.ts +1 -0
- package/dist/Components/Timeline/Timeline.js +1 -0
- package/dist/Components/Timeline/TimelineProps.d.ts +8 -0
- package/dist/Components/Toaster/Toaster.d.ts +1 -0
- package/dist/Components/Toaster/Toaster.js +1 -0
- package/dist/Components/Toaster/ToasterProps.d.ts +3 -0
- package/dist/Components/Toggle/TableToggle.d.ts +1 -0
- package/dist/Components/Toggle/TableToggle.js +1 -0
- package/dist/Components/Toggle/TableToggleProps.d.ts +3 -0
- package/dist/Components/ToggleSwitch/ToggleSwitch.d.ts +1 -0
- package/dist/Components/ToggleSwitch/ToggleSwitch.js +1 -0
- package/dist/Components/ToggleSwitch/ToggleSwitchProps.d.ts +2 -0
- package/dist/Components/ToolTip/ToolTip.d.ts +1 -0
- package/dist/Components/ToolTip/ToolTip.js +1 -0
- package/dist/Components/ToolTip/ToolTipProps.d.ts +2 -0
- package/dist/Components/Trail/EditableCell.d.ts +2 -0
- package/dist/Components/Trail/EditableCell.js +1 -0
- package/dist/Components/Trail/SelectAllCheckbox.d.ts +1 -0
- package/dist/Components/Trail/SelectAllCheckbox.js +1 -0
- package/dist/Components/Trail/TrailWorks.d.ts +1 -0
- package/dist/Components/Trail/TrailWorks.js +1 -0
- package/dist/Components/UpgradeButton/UpgradeButtonProps.d.ts +6 -2
- package/dist/Components/UserDetails/UserDetailsProps.d.ts +17 -1
- package/dist/Components/WorkspaceWindow/WorkspaceWindowProps.d.ts +6 -1
- package/dist/esm/Components/Accordion/Accordion.js +1 -0
- package/dist/esm/Components/AlertDialog/AlertDialog.js +1 -0
- package/dist/esm/Components/Apexcharts/ApexAreaChart/ApexAreaChart.js +1 -0
- package/dist/esm/Components/Apexcharts/ApexRadialChart/ApexRadialChart.js +1 -0
- package/dist/esm/Components/Checkbox/Checkbox.js +1 -0
- package/dist/esm/Components/Common/ErrorComponent.js +1 -0
- package/dist/esm/Components/Common/ErrorMessage.js +2 -2
- package/dist/esm/Components/Common/FormLabel.js +1 -0
- package/dist/esm/Components/Common/FormattedDescription.js +1 -0
- package/dist/esm/Components/Common/HelperText.js +2 -0
- package/dist/esm/Components/Common/Label.js +1 -0
- package/dist/esm/Components/ContactForm/ContactForm.js +1 -0
- package/dist/esm/Components/CopyButton/CopyButton.js +1 -0
- package/dist/esm/Components/DatePicker/CalendarPanel.js +1 -0
- package/dist/esm/Components/DatePicker/DatePicker.js +1 -0
- package/dist/esm/Components/DatePicker/RangeDatePicker.js +1 -0
- package/dist/esm/Components/DatePicker/SingleDatePicker.js +1 -0
- package/dist/esm/Components/DatePicker/ThemeDatePicker.js +1 -0
- package/dist/esm/Components/DatePicker/TimeOnlyPicker.js +4 -1
- package/dist/esm/Components/DatePicker/TimePicker.js +1 -0
- package/dist/esm/Components/DatePicker/TimePickerInput.js +1 -0
- package/dist/esm/Components/Divider/Divider.js +1 -0
- package/dist/esm/Components/Dropdown/DropDown.js +1 -0
- package/dist/esm/Components/Editor/Editor.js +1 -0
- package/dist/esm/Components/EmailCards/VerifyEmailOtp/VerifyEmailOtp.js +2 -5
- package/dist/esm/Components/EmptyState/EmptyState.js +1 -0
- package/dist/esm/Components/FeedbackForm/FeedbackForm.js +1 -0
- package/dist/esm/Components/FieldSelectModal/FieldSelectModal.js +1 -0
- package/dist/esm/Components/FilePreview/FilePreview.js +1 -0
- package/dist/esm/Components/FileUpload/FileUpload.js +1 -0
- package/dist/esm/Components/FileUploader/FileUploader.js +1 -0
- package/dist/esm/Components/Form/FormWrapper.js +2 -1
- package/dist/esm/Components/Input/PhoneNumberInput.js +1 -0
- package/dist/esm/Components/Input/Switch/InputSwitch.js +1 -0
- package/dist/esm/Components/Input/TextInput.js +1 -0
- package/dist/esm/Components/InputTextArea/InputTextArea.js +1 -0
- package/dist/esm/Components/KanbanBoard/AccountCard.js +1 -0
- package/dist/esm/Components/KanbanBoard/AccountRow.js +1 -0
- package/dist/esm/Components/KanbanBoard/KanbanActions/KanbanActions.js +1 -0
- package/dist/esm/Components/KanbanBoard/KanbanBoard.js +1 -0
- package/dist/esm/Components/KanbanBoard/MeasuredItem.js +1 -0
- package/dist/esm/Components/LazyWrapper/LazyWrapper.js +1 -0
- package/dist/esm/Components/LimitReachedModal/limitReachedCopy.js +2 -0
- package/dist/esm/Components/Loading/Loading.js +1 -0
- package/dist/esm/Components/MoreItems/MoreItems.js +1 -0
- package/dist/esm/Components/NoteTextArea/NoteTextArea.js +1 -0
- package/dist/esm/Components/Notification/Notification.js +1 -0
- package/dist/esm/Components/NumberInput/NumberInput.js +1 -0
- package/dist/esm/Components/OrgSwitcher/OrgSwitcherProps.js +1 -0
- package/dist/esm/Components/PdfViewer/PdfViewer.js +1 -0
- package/dist/esm/Components/PinInput/PinInput.js +1 -0
- package/dist/esm/Components/PinInputs/PinInputs.js +1 -0
- package/dist/esm/Components/ProfilePhotoViewer/ProfilePhotoViewer.js +1 -0
- package/dist/esm/Components/ProgressBar/ProgressBar.js +1 -0
- package/dist/esm/Components/Reorder/Reorder.js +1 -0
- package/dist/esm/Components/ScrollToTop/ScrollToTop.js +1 -0
- package/dist/esm/Components/Search/Search.js +1 -0
- package/dist/esm/Components/SearchSelect/SearchSelect.js +1 -0
- package/dist/esm/Components/SegmentedControl/SegmentedControl.js +1 -0
- package/dist/esm/Components/SelectSearch/SelectSearch.js +1 -0
- package/dist/esm/Components/SelectV2/SelectV2.js +1 -0
- package/dist/esm/Components/Skeletons/Skeletons.js +1 -0
- package/dist/esm/Components/Slider/Slider.js +1 -0
- package/dist/esm/Components/StageProgress/StageItem.js +1 -0
- package/dist/esm/Components/StageProgress/StageProgress.js +1 -0
- package/dist/esm/Components/Switch/Switch.js +1 -0
- package/dist/esm/Components/Tag/Tag.js +1 -0
- package/dist/esm/Components/Timeline/Timeline.js +1 -0
- package/dist/esm/Components/Toaster/Toaster.js +1 -0
- package/dist/esm/Components/Toggle/TableToggle.js +1 -0
- package/dist/esm/Components/ToggleSwitch/ToggleSwitch.js +1 -0
- package/dist/esm/Components/ToolTip/ToolTip.js +1 -0
- package/dist/esm/Components/Trail/EditableCell.js +1 -0
- package/dist/esm/Components/Trail/SelectAllCheckbox.js +1 -0
- package/dist/esm/Components/Trail/TrailWorks.js +1 -0
- package/package.json +4 -3
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { ElementType } from "react";
|
|
2
|
+
/** Tag color; primary/secondary/tertiary are brand tokens, the rest are semantic/neutral colors. */
|
|
2
3
|
export type TagColorScheme = "primary" | "secondary" | "tertiary" | "gray" | "red" | "orange" | "yellow" | "green" | "teal" | "blue" | "cyan" | "purple" | "pink";
|
|
4
|
+
/** Tag size; also scales the optional icon via ICON_SIZE. Defaults to "md". */
|
|
3
5
|
export type TagSize = "xs" | "sm" | "md" | "lg";
|
|
6
|
+
/** Passed through to Chakra's Tag variant; defaults to "solid". */
|
|
4
7
|
export type TagVariant = "solid" | "outline" | "subtle";
|
|
8
|
+
/** Props for the pill-shaped status/filter Tag chip — see Tag.tsx for interactive/icon behavior. */
|
|
5
9
|
export interface TagProps {
|
|
6
10
|
label: string;
|
|
11
|
+
/** No effect without icon — turns it into a remove button and stops the click from bubbling to onTagClick. */
|
|
7
12
|
onIconClick?: () => void;
|
|
13
|
+
/** Makes only the label a button, not the tag body — the icon (if present) is a separate click target. */
|
|
8
14
|
onTagClick?: () => void;
|
|
15
|
+
/** Decorative (aria-hidden) unless onIconClick is also passed — icon alone adds no interactivity. */
|
|
9
16
|
icon?: ElementType;
|
|
10
17
|
colorScheme?: TagColorScheme;
|
|
11
18
|
size?: TagSize;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { TimelineProps } from "./TimelineProps";
|
|
2
|
+
/** Renders a grouped, alternating two-column desktop / single-rail mobile event feed with inline notes — not a generic list. */
|
|
2
3
|
declare const Timeline: ({ timelineEvents, onEventClick, onAddNote, onEditNote, onDeleteNote, showAddNote, addNoteLoading, editNoteLoading, deletingNoteId, }: TimelineProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
4
|
export default Timeline;
|
|
@@ -188,6 +188,7 @@ const EventCard = react_2.default.memo(function EventCard({ event, index, accent
|
|
|
188
188
|
setActiveNoteEventIndex(null);
|
|
189
189
|
}, handleCancel: () => setActiveNoteEventIndex(null) }) }))] }));
|
|
190
190
|
});
|
|
191
|
+
/** Renders a grouped, alternating two-column desktop / single-rail mobile event feed with inline notes — not a generic list. */
|
|
191
192
|
const Timeline = ({ timelineEvents, onEventClick, onAddNote, onEditNote, onDeleteNote, showAddNote = false, addNoteLoading, editNoteLoading, deletingNoteId, }) => {
|
|
192
193
|
const theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
193
194
|
const colors = theme.colors;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
/** Config + event data for Timeline's grouped feed; onEventClick/onAddNote/onEditNote/onDeleteNote are all optional so the feed can be read-only. */
|
|
1
2
|
export interface TimelineProps {
|
|
3
|
+
/** Dead prop — Timeline only ever reads timelineEvents; passing events silently renders nothing. */
|
|
2
4
|
events?: TimelineEvent[];
|
|
3
5
|
timelineEvents: TimelineEvents[];
|
|
4
6
|
onEventClick?: (event: TimelineEvents, index: number) => void;
|
|
5
7
|
onAddNote?: (note: string, title: string, files: File[], event: TimelineEvents, index: number) => void;
|
|
8
|
+
/** Unlike onAddNote, the edit editor only auto-closes via editNoteLoading flipping true→false — omit it and Save never closes the form. */
|
|
6
9
|
onEditNote?: (logNoteId: number, note: string, title: string, files: File[], event: TimelineEvents, index: number) => void;
|
|
7
10
|
onDeleteNote?: (logNoteId: number, event: TimelineEvents, index: number) => void;
|
|
8
11
|
showAddNote?: boolean;
|
|
@@ -13,16 +16,19 @@ export interface TimelineProps {
|
|
|
13
16
|
/** log_note_id currently being deleted — shows a spinner on that note. */
|
|
14
17
|
deletingNoteId?: number | string | null;
|
|
15
18
|
}
|
|
19
|
+
/** Shape for the dead events prop only — the array Timeline actually renders is TimelineEvents (plural), below. */
|
|
16
20
|
export interface TimelineEvent {
|
|
17
21
|
title: string;
|
|
18
22
|
description: string;
|
|
19
23
|
time: string;
|
|
20
24
|
}
|
|
25
|
+
/** A file attached to a manual timeline note; size is captured but never read or displayed. */
|
|
21
26
|
export interface TimelineNoteAttachment {
|
|
22
27
|
url: string;
|
|
23
28
|
name?: string;
|
|
24
29
|
size?: number | null;
|
|
25
30
|
}
|
|
31
|
+
/** One manual note attached to a log entry; log_note_id doubles as the React key and the edit/delete target. */
|
|
26
32
|
export interface TimelineNote {
|
|
27
33
|
log_note_id: number;
|
|
28
34
|
logs_id?: number;
|
|
@@ -32,6 +38,7 @@ export interface TimelineNote {
|
|
|
32
38
|
created_at?: number | string | null;
|
|
33
39
|
created_by?: string | null;
|
|
34
40
|
}
|
|
41
|
+
/** One timeline entry (despite the plural name) — the element type of the timelineEvents array Timeline actually renders. */
|
|
35
42
|
export interface TimelineEvents {
|
|
36
43
|
logs_id: number;
|
|
37
44
|
title: string;
|
|
@@ -39,6 +46,7 @@ export interface TimelineEvents {
|
|
|
39
46
|
is_from: string;
|
|
40
47
|
action_from: string;
|
|
41
48
|
action_by: string;
|
|
49
|
+
/** An unparseable value drops the whole event from every render path — no fallback bucket, no error. */
|
|
42
50
|
created_at: number;
|
|
43
51
|
changes: unknown;
|
|
44
52
|
notes?: TimelineNote[] | null;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { ToasterChildren, ToasterContextType } from "./ToasterProps";
|
|
2
|
+
/** Provides useToaster().showToast() — a transient, self-dismissing notification, not hover-triggered info (ToolTip) or a blocking confirmation (AlertDialog). */
|
|
2
3
|
export default function ToasterProvider({ children }: ToasterChildren): import("react/jsx-runtime").JSX.Element;
|
|
3
4
|
export declare const useToaster: () => ToasterContextType;
|
|
@@ -64,6 +64,7 @@ function ToastCard({ onClose, title, description, actions, isClosable, duration,
|
|
|
64
64
|
animationPlayState: paused ? "paused" : "running",
|
|
65
65
|
} }))] }));
|
|
66
66
|
}
|
|
67
|
+
/** Provides useToaster().showToast() — a transient, self-dismissing notification, not hover-triggered info (ToolTip) or a blocking confirmation (AlertDialog). */
|
|
67
68
|
function ToasterProvider({ children }) {
|
|
68
69
|
const toast = (0, react_2.useToast)();
|
|
69
70
|
const theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ToastProps } from "@chakra-ui/react";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
|
+
/** children is Picked from Chakra's ToastProps but never read by showToast — a dead prop; pass description instead. */
|
|
3
4
|
export type ToasterToastProps = Pick<ToastProps, 'description' | 'title' | 'isClosable' | 'duration' | 'children' | 'onClose'> & {
|
|
4
5
|
position?: "top" | "bottom" | "top-right" | "top-left" | "bottom-right" | "bottom-left";
|
|
5
6
|
status?: "success" | "error" | "warning" | "info" | "loading";
|
|
@@ -11,9 +12,11 @@ export type ToasterToastProps = Pick<ToastProps, 'description' | 'title' | 'isCl
|
|
|
11
12
|
*/
|
|
12
13
|
actions?: (onClose: () => void) => ReactNode;
|
|
13
14
|
};
|
|
15
|
+
/** Shape of the ToasterContext value; useToaster() throws if called outside a mounted ToasterProvider. */
|
|
14
16
|
export interface ToasterContextType {
|
|
15
17
|
showToast: (children: ToasterToastProps) => void;
|
|
16
18
|
}
|
|
19
|
+
/** Props for ToasterProvider — just the app subtree it wraps in the toast context. */
|
|
17
20
|
export interface ToasterChildren {
|
|
18
21
|
children: ReactNode;
|
|
19
22
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { ViewToggleProps } from "./TableToggleProps";
|
|
3
|
+
/** Two icon-only IconButtons (Grid/List) with no aria-pressed — selection is shown by color only; shares variant with SegmentedControl (see MODULE.md). */
|
|
3
4
|
declare const TableToggle: React.FC<ViewToggleProps>;
|
|
4
5
|
export default TableToggle;
|
|
@@ -12,6 +12,7 @@ const outlineRung_1 = require("../../Theme/tokens/builders/outlineRung");
|
|
|
12
12
|
const filledSurface_1 = require("../../Theme/tokens/builders/filledSurface");
|
|
13
13
|
const ToolTip_1 = __importDefault(require("../ToolTip/ToolTip"));
|
|
14
14
|
const MODES = ["grid", "list"];
|
|
15
|
+
/** Two icon-only IconButtons (Grid/List) with no aria-pressed — selection is shown by color only; shares variant with SegmentedControl (see MODULE.md). */
|
|
15
16
|
const TableToggle = ({ value, onChange, variant = "default" }) => {
|
|
16
17
|
const theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
17
18
|
const { colors } = theme;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
/** The two views TableToggle switches between — "list" renders as a kanban-style icon, not a literal list. */
|
|
1
2
|
export type ViewMode = "grid" | "list";
|
|
3
|
+
/** Visual style for TableToggle; "default" is the plain segmented control with no sliding indicator. */
|
|
2
4
|
export type TableToggleVariant = "default" | "brandSlide" | "underlineSlide";
|
|
5
|
+
/** Props for TableToggle — the exported type is named ViewToggleProps, not TableToggleProps. */
|
|
3
6
|
export type ViewToggleProps = {
|
|
4
7
|
value: ViewMode;
|
|
5
8
|
onChange: (val: ViewMode) => void;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { ToggleSwitchProps } from "./ToggleSwitchProps";
|
|
2
|
+
/** Binary on/off control, role="switch"; always controlled with no internal state — distinct from the two-option Switch/SegmentedControl. */
|
|
2
3
|
export default function ToggleSwitch({ isChecked, onChange, isDisabled, size, id, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, }: ToggleSwitchProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -8,6 +8,7 @@ const SIZES = {
|
|
|
8
8
|
sm: { w: "2rem", h: "1.125rem", knob: "0.875rem", travel: "0.75rem" },
|
|
9
9
|
md: { w: "2.375rem", h: "1.375rem", knob: "1.125rem", travel: "0.875rem" },
|
|
10
10
|
};
|
|
11
|
+
/** Binary on/off control, role="switch"; always controlled with no internal state — distinct from the two-option Switch/SegmentedControl. */
|
|
11
12
|
function ToggleSwitch({ isChecked, onChange, isDisabled = false, size = "md", id, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, }) {
|
|
12
13
|
const { colors } = (0, useCustomTheme_1.useCustomTheme)();
|
|
13
14
|
const dims = SIZES[size];
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
/** Track/knob size preset for ToggleSwitch; exact widths and travel distance live in ToggleSwitch.tsx's SIZES map. */
|
|
1
2
|
export type ToggleSwitchSize = "sm" | "md";
|
|
3
|
+
/** Props for the switch — isChecked/onChange are required, so there's no uncontrolled/defaultChecked mode. */
|
|
2
4
|
export type ToggleSwitchProps = {
|
|
3
5
|
isChecked: boolean;
|
|
4
6
|
onChange: (checked: boolean) => void;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { ToolTipProps } from "./ToolTipProps";
|
|
2
|
+
/** Renders a hover/focus-triggered Chakra Tooltip — not a substitute for Toaster's transient, unprompted notifications. */
|
|
2
3
|
export default function ToolTip({ placement, label, children, hasArrow, fontSize, bg, color, isDisabled, overflowOnly, isOpen, defaultIsOpen, openDelay, closeDelay, arrowSize, closeOnClick, size, width, height, arrowPadding, arrowShadowColor, direction, gutter, onClose, modifiers, closeOnPointerDown, styles, }: ToolTipProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -8,6 +8,7 @@ const useIsTruncated_1 = require("../../Hooks/useIsTruncated");
|
|
|
8
8
|
const mergeRefs_1 = require("../../Utils/mergeRefs");
|
|
9
9
|
const useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
10
10
|
const accentText_1 = require("../../Theme/tokens/builders/accentText");
|
|
11
|
+
/** Renders a hover/focus-triggered Chakra Tooltip — not a substitute for Toaster's transient, unprompted notifications. */
|
|
11
12
|
function ToolTip({ placement = "top", label, children, hasArrow = true, fontSize = "14px", bg, color, isDisabled, overflowOnly = false, isOpen, defaultIsOpen, openDelay = 0, closeDelay = 0, arrowSize = 10, closeOnClick = false, size, width, height, arrowPadding, arrowShadowColor, direction, gutter = 8, onClose, modifiers, closeOnPointerDown, styles, }) {
|
|
12
13
|
// Measure the child for `overflowOnly`. The hook is always called (Rules of
|
|
13
14
|
// Hooks) but is fully inert unless `overflowOnly` is set — no layout reads,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { TooltipProps as ChakraTooltip } from "@chakra-ui/react";
|
|
2
|
+
/** Closed prop list, no ...rest — shouldWrapChildren/portalProps aren't exposed; hasArrow defaults true, closeOnClick false (both flipped from Chakra). */
|
|
2
3
|
export type ToolTipProps = Pick<ChakraTooltip, "placement" | "label" | "hasArrow" | "fontSize" | "isDisabled" | "isOpen" | "defaultIsOpen" | "openDelay" | "closeDelay" | "arrowSize" | "closeOnClick" | "size" | "width" | "height" | "arrowPadding" | "arrowShadowColor" | "direction" | "gutter" | "onClose" | "modifiers" | "closeOnPointerDown"> & {
|
|
4
|
+
/** bg/color default to the theme's inverted sidebar surface (near-black both modes) — override only if you own the contrast. */
|
|
3
5
|
bg?: string;
|
|
4
6
|
color?: string;
|
|
5
7
|
children: React.ReactNode;
|
|
@@ -5,7 +5,9 @@ interface EditableCellProps {
|
|
|
5
5
|
column: Column;
|
|
6
6
|
isEditable: boolean;
|
|
7
7
|
handleCellClick: (rowId: number, columnId: number) => void;
|
|
8
|
+
/** Also fires on outside-click with the cell's current unchanged value — a commit signal, not only a real edit. */
|
|
8
9
|
handleCellChange: (rowId: number, columnLabel: string, value: string) => void;
|
|
9
10
|
}
|
|
11
|
+
/** Inline editable cell driven entirely by parent-owned row state — no internal draft state of its own. */
|
|
10
12
|
export declare const EditableCell: React.FC<EditableCellProps>;
|
|
11
13
|
export {};
|
|
@@ -7,6 +7,7 @@ const react_2 = require("@chakra-ui/react");
|
|
|
7
7
|
const lucide_react_1 = require("lucide-react");
|
|
8
8
|
const useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
9
9
|
const accentText_1 = require("../../Theme/tokens/builders/accentText");
|
|
10
|
+
/** Inline editable cell driven entirely by parent-owned row state — no internal draft state of its own. */
|
|
10
11
|
const EditableCell = ({ row, column, isEditable, handleCellClick, handleCellChange, }) => {
|
|
11
12
|
const { colors } = (0, useCustomTheme_1.useCustomTheme)();
|
|
12
13
|
const cellRef = (0, react_1.useRef)(null);
|
|
@@ -4,5 +4,6 @@ interface SelectAllCheckboxProps {
|
|
|
4
4
|
isIndeterminate: boolean;
|
|
5
5
|
handleSelectAll: () => void;
|
|
6
6
|
}
|
|
7
|
+
/** Purely presentational — isAllSelected/isIndeterminate must be computed and owned entirely by the parent. */
|
|
7
8
|
export declare const SelectAllCheckbox: React.FC<SelectAllCheckboxProps>;
|
|
8
9
|
export {};
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SelectAllCheckbox = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("@chakra-ui/react");
|
|
6
|
+
/** Purely presentational — isAllSelected/isIndeterminate must be computed and owned entirely by the parent. */
|
|
6
7
|
const SelectAllCheckbox = ({ isAllSelected, isIndeterminate, handleSelectAll, }) => {
|
|
7
8
|
return ((0, jsx_runtime_1.jsx)(react_1.Checkbox, { isChecked: isAllSelected, isIndeterminate: isIndeterminate, onChange: handleSelectAll }));
|
|
8
9
|
};
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
4
|
const react_1 = require("@chakra-ui/react");
|
|
5
5
|
const useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
6
|
+
/** Hardcoded 2-row demo table with no props at all — not a reusable grid; use Table for a real editable/selectable list. */
|
|
6
7
|
const TrailWorks = () => {
|
|
7
8
|
const { colors } = (0, useCustomTheme_1.useCustomTheme)();
|
|
8
9
|
const cellBorder = colors.boxborder[200];
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { ElementType } from "react";
|
|
2
|
+
/** Size preset for UpgradeButton; "sm" is a dense variant of the same badge, not simply a smaller one. */
|
|
2
3
|
export type UpgradeButtonSize = "sm" | "md" | "lg";
|
|
3
4
|
/**
|
|
4
5
|
* Theme-aware color variants. Each resolves to a gradient built from the
|
|
5
6
|
* active theme's tokens, so the button blends with whichever theme is active.
|
|
6
7
|
*/
|
|
7
8
|
export type UpgradeButtonVariant = "brand" | "primary" | "secondary" | "success" | "warning" | "danger" | "info";
|
|
9
|
+
/** Prominent animated shimmer CTA button for "upgrade now" actions — not the compact plan-state pill; see PlanPill/PlanBadge for that. Reused as LimitReachedModal's own CTA. */
|
|
8
10
|
export interface UpgradeButtonProps {
|
|
9
11
|
/** Primary label (shown on md+ screens). */
|
|
10
12
|
label: string;
|
|
@@ -14,7 +16,7 @@ export interface UpgradeButtonProps {
|
|
|
14
16
|
subtitle?: string;
|
|
15
17
|
/** Leading icon. Defaults to lucide `Sparkles`. Pass null to hide. */
|
|
16
18
|
icon?: ElementType | null;
|
|
17
|
-
/**
|
|
19
|
+
/** Defaults to gold only when gold clears AA contrast against the gradient; otherwise silently falls back to the label's ink color. */
|
|
18
20
|
iconColor?: string;
|
|
19
21
|
/**
|
|
20
22
|
* Theme-aware color variant. Defaults to `brand` (the active theme's
|
|
@@ -29,11 +31,13 @@ export interface UpgradeButtonProps {
|
|
|
29
31
|
from: string;
|
|
30
32
|
to: string;
|
|
31
33
|
};
|
|
34
|
+
/** Default "md". */
|
|
32
35
|
size?: UpgradeButtonSize;
|
|
33
36
|
/** Animated light sweep on hover. Default true. */
|
|
34
37
|
shimmer?: boolean;
|
|
35
|
-
/**
|
|
38
|
+
/** Blocks onClick and shows a spinner, but does NOT set the native disabled attribute or dim opacity — pair with isDisabled for that. */
|
|
36
39
|
isLoading?: boolean;
|
|
40
|
+
/** Unlike isLoading, this also dims opacity and sets the native disabled attribute. */
|
|
37
41
|
isDisabled?: boolean;
|
|
38
42
|
/** Truncate the label beyond this width. */
|
|
39
43
|
maxLabelWidth?: string;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ElementType, ReactNode } from "react";
|
|
2
|
+
/** One assignable role offered in the Add User and Change Role selects. */
|
|
2
3
|
export type RoleOption = {
|
|
3
4
|
id: number;
|
|
4
5
|
label: string;
|
|
5
6
|
};
|
|
7
|
+
/** One row in the left-panel user list — see SelectedUserDetail for the richer shape used once selected. */
|
|
6
8
|
export type UserListItem = {
|
|
7
9
|
id: number;
|
|
8
10
|
firstName: string;
|
|
@@ -11,16 +13,20 @@ export type UserListItem = {
|
|
|
11
13
|
role: string;
|
|
12
14
|
profile?: string;
|
|
13
15
|
isActive: boolean;
|
|
16
|
+
/** isPending/isCurrent/isSuperAdmin here are decorative — only SelectedUserDetail's copies (after selection) drive any badge or action-bar behavior. */
|
|
14
17
|
isPending?: boolean;
|
|
15
18
|
isCurrent?: boolean;
|
|
16
19
|
isSuperAdmin?: boolean;
|
|
17
20
|
};
|
|
21
|
+
/** One label/value row in the "Personal Information" panel; icon falls back to a generic user icon when omitted. */
|
|
18
22
|
export type UserDetailRow = {
|
|
19
23
|
label: string;
|
|
20
24
|
value: string;
|
|
21
25
|
icon?: ElementType;
|
|
22
26
|
};
|
|
27
|
+
/** Right-panel shape for the selected user — distinct field names from UserListItem (name, userId); not derived from it. */
|
|
23
28
|
export type SelectedUserDetail = {
|
|
29
|
+
/** When null, Change Role and Resend Invitation silently no-op on click (no disabled state) — unlike Deactivate, which greys out. */
|
|
24
30
|
userId?: number;
|
|
25
31
|
name: string;
|
|
26
32
|
role: string;
|
|
@@ -29,15 +35,18 @@ export type SelectedUserDetail = {
|
|
|
29
35
|
isActive: boolean;
|
|
30
36
|
isPending?: boolean;
|
|
31
37
|
isCurrent?: boolean;
|
|
38
|
+
/** True hides the entire action bar (reinvite/change-role/deactivate), not just the deactivate button. */
|
|
32
39
|
isSuperAdmin?: boolean;
|
|
33
40
|
details: UserDetailRow[];
|
|
34
41
|
};
|
|
42
|
+
/** Form values submitted by the Add User modal; role stays null until the user picks one. */
|
|
35
43
|
export type AddUserFormValues = {
|
|
36
44
|
firstName: string;
|
|
37
45
|
lastName: string;
|
|
38
46
|
email: string;
|
|
39
47
|
role: RoleOption | null;
|
|
40
48
|
};
|
|
49
|
+
/** Payload from the Change Role modal — just the ids, unlike AddUserFormValues which carries the full RoleOption. */
|
|
41
50
|
export type ChangeRoleSubmitPayload = {
|
|
42
51
|
userId: number;
|
|
43
52
|
roleId: number;
|
|
@@ -83,6 +92,7 @@ export type UserDetailsLabels = {
|
|
|
83
92
|
deactivateConfirmQuestion?: string;
|
|
84
93
|
deactivateConfirmDescription?: string;
|
|
85
94
|
};
|
|
95
|
+
/** Two-pane user directory + detail panel with bundled Add/Change-Role/Deactivate modals; not a role editor — pair with RolesPermission for managing roles themselves. */
|
|
86
96
|
export interface UserDetailsProps {
|
|
87
97
|
/** Full list of users shown in the left panel. */
|
|
88
98
|
users: UserListItem[];
|
|
@@ -97,6 +107,7 @@ export interface UserDetailsProps {
|
|
|
97
107
|
/** Loading flags driven by the host app's async calls. */
|
|
98
108
|
isUsersLoading?: boolean;
|
|
99
109
|
isInviteLoading?: boolean;
|
|
110
|
+
/** Unlike isAddUserLoading/isChangeRoleLoading, the confirm modal closes immediately on click — this flag can't keep it open to show a spinner. */
|
|
100
111
|
isDeactivateLoading?: boolean;
|
|
101
112
|
isAddUserLoading?: boolean;
|
|
102
113
|
isChangeRoleLoading?: boolean;
|
|
@@ -109,6 +120,7 @@ export interface UserDetailsProps {
|
|
|
109
120
|
onAddUserSubmit?: (values: AddUserFormValues) => void | Promise<void>;
|
|
110
121
|
onChangeRoleSubmit?: (payload: ChangeRoleSubmitPayload) => void | Promise<void>;
|
|
111
122
|
onReinvite?: (userId: number) => void;
|
|
123
|
+
/** Not awaited — the confirm modal closes right after this fires, so a slow or failing deactivation gets no in-modal feedback. */
|
|
112
124
|
onDeactivate?: (userId: number) => void;
|
|
113
125
|
/** "Add New Role" actions inside the SearchSelect of each modal. */
|
|
114
126
|
onAddRoleClick?: () => void;
|
|
@@ -116,9 +128,10 @@ export interface UserDetailsProps {
|
|
|
116
128
|
addUserUpgradeNotice?: ReactNode;
|
|
117
129
|
/** Translated/override strings. */
|
|
118
130
|
labels?: UserDetailsLabels;
|
|
119
|
-
/**
|
|
131
|
+
/** Also feeds a calc() for the sidebar's max-height — a non-CSS-length value (e.g. "auto") silently breaks that calc. Defaults to "90vh". */
|
|
120
132
|
minHeight?: string;
|
|
121
133
|
}
|
|
134
|
+
/** Self-contained invite form (first/last/email/role) with its own validation — not a generic modal; it always renders these exact fields. */
|
|
122
135
|
export interface AddUserModalProps {
|
|
123
136
|
isOpen: boolean;
|
|
124
137
|
onClose: () => void;
|
|
@@ -129,11 +142,13 @@ export interface AddUserModalProps {
|
|
|
129
142
|
upgradeNotice?: ReactNode;
|
|
130
143
|
labels: Required<Pick<UserDetailsLabels, "addNewUser" | "firstName" | "lastName" | "email" | "role" | "firstNamePlaceholder" | "lastNamePlaceholder" | "emailPlaceholder" | "addNewRole" | "cancel" | "save" | "firstNameRequired" | "lastNameRequired" | "emailRequired" | "emailInvalid" | "roleRequired">>;
|
|
131
144
|
}
|
|
145
|
+
/** Reassigns one user's role only — Save stays disabled until a genuinely different role is picked (see currentRole below). */
|
|
132
146
|
export interface ChangeRoleModalProps {
|
|
133
147
|
isOpen: boolean;
|
|
134
148
|
onClose: () => void;
|
|
135
149
|
userId: number | null;
|
|
136
150
|
email?: string;
|
|
151
|
+
/** Matched to roleOptions by case-insensitive label text; no match silently pre-selects nothing and leaves Save disabled. */
|
|
137
152
|
currentRole?: string;
|
|
138
153
|
roleOptions: RoleOption[];
|
|
139
154
|
isLoading?: boolean;
|
|
@@ -141,6 +156,7 @@ export interface ChangeRoleModalProps {
|
|
|
141
156
|
onAddRoleClick?: () => void;
|
|
142
157
|
labels: Required<Pick<UserDetailsLabels, "changeRoleTitle" | "email" | "role" | "addNewRole" | "cancel" | "save" | "roleRequired">>;
|
|
143
158
|
}
|
|
159
|
+
/** Confirm dialog for deactivating one user — closes immediately on confirm (see isDeactivateLoading); not a delete, the user can be reactivated later. */
|
|
144
160
|
export interface DeactivateConfirmModalProps {
|
|
145
161
|
isOpen: boolean;
|
|
146
162
|
onClose: () => void;
|
|
@@ -2,10 +2,11 @@ import type { ReactNode } from "react";
|
|
|
2
2
|
/**
|
|
3
3
|
* Window state for a WorkspaceWindow.
|
|
4
4
|
* - "medium": default centered dialog (Jira-style)
|
|
5
|
-
* - "maximized":
|
|
5
|
+
* - "maximized": renders IDENTICALLY to "medium" — no separate maximize size exists (see onMaximize)
|
|
6
6
|
* - "minimized": collapsed to a tray pill (rendered by WorkspaceTray, not the window)
|
|
7
7
|
*/
|
|
8
8
|
export type WorkspaceWindowState = "medium" | "maximized" | "minimized";
|
|
9
|
+
/** Props for one WorkspaceWindow instance; minimized windows render separately via WorkspaceTrayProps below. */
|
|
9
10
|
export interface WorkspaceWindowProps {
|
|
10
11
|
/** Title shown in the window's control bar. */
|
|
11
12
|
title: ReactNode;
|
|
@@ -14,6 +15,7 @@ export interface WorkspaceWindowProps {
|
|
|
14
15
|
/** Window body. */
|
|
15
16
|
children: ReactNode;
|
|
16
17
|
onMinimize?: () => void;
|
|
18
|
+
/** Kept for back-compat only — no maximize/restore control is rendered; this is never called. */
|
|
17
19
|
onMedium?: () => void;
|
|
18
20
|
onMaximize?: () => void;
|
|
19
21
|
onClose?: () => void;
|
|
@@ -31,10 +33,12 @@ export interface WorkspaceWindowProps {
|
|
|
31
33
|
/** data-testid for the window container. */
|
|
32
34
|
testId?: string;
|
|
33
35
|
}
|
|
36
|
+
/** One minimized window in the tray; id is passed back to onRestore/onClose so callers can target the right window. */
|
|
34
37
|
export interface WorkspaceTrayItem {
|
|
35
38
|
id: string;
|
|
36
39
|
title: ReactNode;
|
|
37
40
|
}
|
|
41
|
+
/** Props for the bottom-right cluster of minimized-window pills; renders nothing when items is empty. */
|
|
38
42
|
export interface WorkspaceTrayProps {
|
|
39
43
|
/** Minimized items rendered as restore pills along the bottom. */
|
|
40
44
|
items: WorkspaceTrayItem[];
|
|
@@ -53,6 +57,7 @@ export interface WorkspaceTrayProps {
|
|
|
53
57
|
close: () => void;
|
|
54
58
|
}) => ReactNode;
|
|
55
59
|
}
|
|
60
|
+
/** Props for WorkspaceTrayPreview — despite the name, works for any hover trigger, not just tray pills. */
|
|
56
61
|
export interface WorkspaceTrayPreviewProps {
|
|
57
62
|
/**
|
|
58
63
|
* The trigger markup (typically a tray pill). The preview + trigger share one
|
|
@@ -6,6 +6,7 @@ import { useCustomTheme } from "../../Theme/useCustomTheme.js";
|
|
|
6
6
|
import { isDarkCanvas } from "../../Theme/tokens/builders/accentText.js";
|
|
7
7
|
import { liftToContrast, AA_NON_TEXT } from "../../Theme/tokens/builders/outlineRung.js";
|
|
8
8
|
import { getAccordionHoverColors } from "./accordionColors.js";
|
|
9
|
+
/** Chakra Accordion wrapper for header/content pairs; FilterSidebar composes this directly for its collapsible filter sections. */
|
|
9
10
|
const Accordion = ({ allowMultiple, allowToggle, index, onChange, reduceMotion, items, ...rest }) => {
|
|
10
11
|
const { colors } = useCustomTheme();
|
|
11
12
|
const isDark = isDarkCanvas(colors.backgroundColor.main);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { AlertDialog as ChakraAlertDialog, AlertDialogBody, AlertDialogCloseButton, AlertDialogContent, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, Button, } from "@chakra-ui/react";
|
|
3
3
|
import { useCustomTheme } from "../../Theme/useCustomTheme.js";
|
|
4
|
+
/** Renders a fixed Cancel/Confirm AlertDialog from title+content props — not a substitute for Modal when you need custom footer buttons or slots. */
|
|
4
5
|
const AlertDialog = ({ isOpen, onClose, leastDestructiveRef, content, title, confirmButtonText = "Yes", cancelButtonText = "No", isConfirmLoading, onConfirm, ContentStyle, headerStyle, bodyStyle, footerStyle, closeButtonStyle, button1Style, button2Style, isCentered, key, }) => {
|
|
5
6
|
const { colors } = useCustomTheme();
|
|
6
7
|
return (_jsxs(ChakraAlertDialog, { motionPreset: "slideInBottom", leastDestructiveRef: leastDestructiveRef, onClose: onClose, isOpen: isOpen, isCentered: isCentered, children: [_jsx(AlertDialogOverlay, {}), _jsxs(AlertDialogContent, { bg: colors.background[50], sx: ContentStyle, children: [_jsx(AlertDialogHeader, { sx: headerStyle, children: title }), _jsx(AlertDialogCloseButton, { sx: closeButtonStyle }), _jsx(AlertDialogBody, { sx: bodyStyle, children: content }), _jsxs(AlertDialogFooter, { sx: footerStyle, children: [_jsx(Button, { ref: leastDestructiveRef, onClick: onClose, variant: "outline", colorScheme: "red", size: "sm", sx: button1Style, children: cancelButtonText }), _jsx(Button, { colorScheme: "primary", onClick: onConfirm, isLoading: isConfirmLoading, ml: 3, size: "sm", sx: button2Style, children: confirmButtonText })] })] })] }, key));
|
|
@@ -4,6 +4,7 @@ import ReactApexChart from "react-apexcharts";
|
|
|
4
4
|
import { useCustomTheme } from "../../../Theme/useCustomTheme.js";
|
|
5
5
|
import { getDefaultSeriesColors, mergeChartTitleStyle, } from "../../../Theme/tokens/builders/chartColorsFromTheme.js";
|
|
6
6
|
import { baseAxisLabels, baseChart, baseGrid, baseLegend, baseTooltip } from "../chartBase.js";
|
|
7
|
+
/** Filled line chart (basic/stacked/gradient/sparkline); unlike `ApexLineChart`, `data`/`series` are read fresh via `useMemo` every render, not frozen at mount. */
|
|
7
8
|
const ApexAreaChart = ({ variant = "basic", data, series, labels, title, titlePosition = "left", height = 320, width = "100%", colors, showLegend = true, legendPosition = "bottom", yAxisFormatter, }) => {
|
|
8
9
|
const { colors: palette } = useCustomTheme();
|
|
9
10
|
const seriesColors = useMemo(() => colors !== null && colors !== void 0 ? colors : getDefaultSeriesColors(palette), [colors, palette]);
|
|
@@ -4,6 +4,7 @@ import ReactApexChart from "react-apexcharts";
|
|
|
4
4
|
import { useCustomTheme } from "../../../Theme/useCustomTheme.js";
|
|
5
5
|
import { chartInk, getDefaultSeriesColors, mergeChartTitleStyle, } from "../../../Theme/tokens/builders/chartColorsFromTheme.js";
|
|
6
6
|
import { baseChart, baseLegend } from "../chartBase.js";
|
|
7
|
+
/** Radial/gauge chart (gauge/multi/semi); `hollowSize` is silently overridden to a fixed `"52%"` whenever `variant="multi"`. */
|
|
7
8
|
const ApexRadialChart = ({ variant = "gauge", data, labels, title, titlePosition = "left", height = 320, width = "100%", colors, totalLabel = "Total", trackColor, hollowSize = "62%", }) => {
|
|
8
9
|
const { colors: palette } = useCustomTheme();
|
|
9
10
|
const ink = chartInk(palette);
|
|
@@ -4,6 +4,7 @@ import { useCustomTheme } from "../../Theme/useCustomTheme.js";
|
|
|
4
4
|
import ErrorMessage from "../Common/ErrorMessage.js";
|
|
5
5
|
import HelperText from "../Common/HelperText.js";
|
|
6
6
|
import ToolTip from "../ToolTip/ToolTip.js";
|
|
7
|
+
/** Renders Chakra's native role="checkbox"; label is optional and falls back to aria-label — pass isInvalid (not just error) for the invalid state to register. */
|
|
7
8
|
export default function CheckBox({ label, labelFontSize, showLabelTooltip, labelTooltip, labelClampLines, spacing, isInvalid, color, iconColor, iconSize, isChecked, isIndeterminate, onChange, isDisabled, size = "md", value, defaultChecked, sx, error, errorMessage, helperText, onClick, labelSx, ...aria }) {
|
|
8
9
|
const theme = useCustomTheme();
|
|
9
10
|
const controlSize = size === "sm" ? "1rem"
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { HStack, Text } from "@chakra-ui/react";
|
|
3
3
|
import { useCustomTheme } from "../../Theme/useCustomTheme.js";
|
|
4
4
|
import { resolveFilledSurface } from "../../Theme/tokens/builders/filledSurface.js";
|
|
5
|
+
/** Inline error row for Input/PinInputs; `error` is the message text itself, not ErrorMessage's boolean `error` + `errorMessage` pair, and there's no `id` for aria-describedby. */
|
|
5
6
|
const ErrorComponent = ({ error, errorClassName, }) => {
|
|
6
7
|
const { colors } = useCustomTheme();
|
|
7
8
|
const errorText = colors.semanticText.error;
|
|
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { Flex, Text, } from "@chakra-ui/react";
|
|
3
3
|
import { Info } from "lucide-react";
|
|
4
4
|
import { useCustomTheme } from "../../Theme/useCustomTheme.js";
|
|
5
|
-
// `id` lets a field point `aria-describedby` here
|
|
6
|
-
//
|
|
5
|
+
// `id` lets a field point `aria-describedby` here; `role="alert"` announces once, on render.
|
|
6
|
+
// Always pass `errorMessage` when `error` is true — omitted, this renders the literal word "Error", and every caller hides `helperText` while `error` is true.
|
|
7
7
|
const ErrorMessage = ({ errorMessage, id }) => {
|
|
8
8
|
const { colors } = useCustomTheme();
|
|
9
9
|
return (_jsxs(Flex, { id: id, align: "center", color: colors.semanticText.error, fontSize: "0.875rem", role: "alert", children: [_jsx(Info, { width: "0.875rem" }), _jsx(Text, { ml: "0.188rem", children: errorMessage !== null && errorMessage !== void 0 ? errorMessage : "Error" })] }));
|
|
@@ -3,6 +3,7 @@ import { Box, Icon } from "@chakra-ui/react";
|
|
|
3
3
|
import { useCustomTheme } from "../../Theme/useCustomTheme.js";
|
|
4
4
|
import { InfoIcon } from "lucide-react";
|
|
5
5
|
import ToolTip from "../ToolTip/ToolTip.js";
|
|
6
|
+
/** Renders a real `<label htmlFor>` only when `id` is given, else a `<span>` — not a substitute for `Label` (Common/Label.tsx), which always renders a `FormLabel`. */
|
|
6
7
|
export const TextLabel = ({ label, id, isRequired = false, isInformation = false, informationMessage = "", fontSize, showTooltip, tooltipLabel, clampLines, inline = false, }) => {
|
|
7
8
|
const theme = useCustomTheme();
|
|
8
9
|
const clampStyles = clampLines ? {
|
|
@@ -39,6 +39,7 @@ const InlineText = ({ text }) => {
|
|
|
39
39
|
}
|
|
40
40
|
return _jsx(_Fragment, { children: nodes });
|
|
41
41
|
};
|
|
42
|
+
/** Not a full Markdown renderer — lists, links and code blocks render as literal text; returns null (no wrapper) when `content` is falsy. */
|
|
42
43
|
const FormattedDescription = ({ content }) => {
|
|
43
44
|
const { colors } = useCustomTheme();
|
|
44
45
|
if (!content)
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { FormHelperText, Text, useFormControlContext } from "@chakra-ui/react";
|
|
3
3
|
import { useCustomTheme } from "../../Theme/useCustomTheme.js";
|
|
4
|
+
/** `id` is optional — pass one to control aria-describedby yourself; omitted, Chakra auto-generates one only inside a FormControl ancestor. */
|
|
5
|
+
/** Renders `helperText` unconditionally; each field hides this while showing an error (see ErrorMessage) — HelperText itself has no `error` prop. */
|
|
4
6
|
const HelperText = ({ helperText, id }) => {
|
|
5
7
|
const theme = useCustomTheme();
|
|
6
8
|
const field = useFormControlContext();
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { FormLabel, Text } from "@chakra-ui/react";
|
|
3
3
|
import { useCustomTheme } from "../../Theme/useCustomTheme.js";
|
|
4
|
+
/** Always renders a real Chakra `<label>` (FormLabel), even without `htmlFor` — unlike `TextLabel` (FormLabel.tsx), which falls back to a plain `<span>`. */
|
|
4
5
|
const Label = ({ label, htmlFor, labelClassName, isRequired, }) => {
|
|
5
6
|
const { colors } = useCustomTheme();
|
|
6
7
|
return (_jsxs(FormLabel, { htmlFor: htmlFor, mb: 1, fontSize: "sm", fontWeight: "medium", className: labelClassName, color: colors.header[500], children: [label, isRequired && (_jsx(Text, { as: "span", color: colors.semanticText.error, ml: 1, children: "*" }))] }));
|
|
@@ -6,6 +6,7 @@ import { CircleCheck, CircleX } from "lucide-react";
|
|
|
6
6
|
import { useCustomTheme } from "../../Theme/useCustomTheme.js";
|
|
7
7
|
import InputTextArea from "../InputTextArea/InputTextArea.js";
|
|
8
8
|
import Button from "../Button/Button.js";
|
|
9
|
+
/** Fully self-contained enquiry form — validates, POSTs to apiKey, and renders its own success/error alert; there is no onSubmit/onSuccess callback. */
|
|
9
10
|
const ContactForm = ({ apiKey, customFields, getCustomValues, isDisabled = false, organizationId, customerId, buttonColorScheme = "primary", buttonSx, }) => {
|
|
10
11
|
const { colors } = useCustomTheme();
|
|
11
12
|
const [formData, setFormData] = useState({
|
|
@@ -7,6 +7,7 @@ import { accentTextOnCanvas, AA_NORMAL_TEXT } from "../../Theme/tokens/builders/
|
|
|
7
7
|
import { listRowBackgrounds } from "../../Theme/tokens/builders/rowStates.js";
|
|
8
8
|
import { liftToContrast } from "../../Theme/tokens/builders/outlineRung.js";
|
|
9
9
|
import ToolTip from "../ToolTip/ToolTip.js";
|
|
10
|
+
/** Copies `value` to the clipboard in 3 layouts (icon/button/menu-item) — not a full share/export action. */
|
|
10
11
|
const CopyButton = ({ value, variant = "icon", label = "Copy", copiedLabel = "Copied!", tooltip = "Copy", feedbackDuration = 1500, iconSize = 16, size = "sm", onCopy, }) => {
|
|
11
12
|
const theme = useCustomTheme();
|
|
12
13
|
const [copied, setCopied] = useState(false);
|
|
@@ -6,6 +6,7 @@ import Button from "../Button/Button.js";
|
|
|
6
6
|
import { useCustomTheme } from "../../Theme/useCustomTheme.js";
|
|
7
7
|
import { resolveFilledSurface } from "../../Theme/tokens/builders/filledSurface.js";
|
|
8
8
|
import { DAY_CLASS, dayAccessibleName, dayStateClassName, resolveDayStateVisual, } from "./dayStates.js";
|
|
9
|
+
/** Internal month grid shared by Single/RangeDatePicker; not published from index.ts, so only reachable via a deep import. */
|
|
9
10
|
export const CalendarPanel = ({ currentMonth, setCurrentMonth, today, isRange, tempDate, tempRangeStart, tempRangeEnd, isSameDay, isBefore, isAfter, minDate, maxDate, disablePastDates, disableFutureDates, disableToday, onDaySelect, hoveredDate, onDayHover, renderWeekdays, dayStates, renderDayContent, }) => {
|
|
10
11
|
const theme = useCustomTheme();
|
|
11
12
|
const rangeBg = theme.colors.primary.opacity[16];
|
|
@@ -18,6 +18,7 @@ const inferPickerTypeFromFormat = (formatStr) => {
|
|
|
18
18
|
return "time";
|
|
19
19
|
return "date";
|
|
20
20
|
};
|
|
21
|
+
/** Legacy pre-split implementation, still used internally by Table's filter pane — new code should use ThemeDatePicker (exported as DatePicker). */
|
|
21
22
|
export default function CustomDatePicker(props) {
|
|
22
23
|
var _a, _b;
|
|
23
24
|
const { id, name, label, isRequired, isInformation, informationMessage, error, errorMessage, helperText, placeholderText = "Select a date", dateFormat = "dd/MM/yyyy", pickerType, minDate, maxDate, disableFutureDates, disablePastDates, isRange, autoComplete = "off", disabled, width = "100%", disableToday = false, size = "md", } = props;
|
|
@@ -18,6 +18,7 @@ const setTimeFrom = (base, time) => {
|
|
|
18
18
|
const b = base ? new Date(base) : new Date();
|
|
19
19
|
return new Date(b.getFullYear(), b.getMonth(), b.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), 0);
|
|
20
20
|
};
|
|
21
|
+
/** Two-endpoint range field; `onChange` fires only via Apply/Escape, never on a bare day click or on outside-click close. */
|
|
21
22
|
export const RangeDatePicker = (props) => {
|
|
22
23
|
var _a, _b, _c, _d;
|
|
23
24
|
const { id, name, label, isRequired, isInformation, informationMessage, error, errorMessage, helperText, placeholderText, dateFormat = "dd/MM/yyyy", minDate, maxDate, disableFutureDates, disablePastDates, autoComplete = "off", disabled, width = "100%", disableToday = false, size = "md", dayStates, renderDayContent, } = props;
|
|
@@ -219,6 +219,7 @@ const normalizeTimeBuffer = (tokenChar, rawBuffer, segmentLength, is12Hour) => {
|
|
|
219
219
|
}
|
|
220
220
|
return { value: buf, completed: buf.length >= segmentLength };
|
|
221
221
|
};
|
|
222
|
+
/** Date/datetime field with typed-mask input + calendar popover. Import via `DatePicker` (ThemeDatePicker) — direct import bypasses its isRange/pickerType routing. */
|
|
222
223
|
export const SingleDatePicker = (props) => {
|
|
223
224
|
var _a, _b;
|
|
224
225
|
const { id, name, label, isRequired, isInformation, informationMessage, error, errorMessage, helperText, placeholderText, dateFormat = "dd/MM/yyyy", pickerType, minDate, maxDate, disableFutureDates, disablePastDates, autoComplete = "off", disabled, width = "100%", disableToday = false, size = "md", } = props;
|
|
@@ -12,6 +12,7 @@ const inferPickerTypeFromFormat = (formatStr) => {
|
|
|
12
12
|
return "time";
|
|
13
13
|
return "date";
|
|
14
14
|
};
|
|
15
|
+
/** Public DatePicker entry — routes to Range/TimeOnly/Single by `isRange`/`pickerType`; `pickerType` is silently ignored whenever `isRange` is true. */
|
|
15
16
|
const ThemeDatePicker = (props) => {
|
|
16
17
|
var _a, _b;
|
|
17
18
|
if (props.isRange) {
|