@moderneinc/design-system-components 6.0.0-next.02da4a
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/README.md +76 -0
- package/dist/ActivityHeader/ActivityHeader.d.ts +58 -0
- package/dist/ActivityIndicatorCell/ActivityIndicatorCell.d.ts +65 -0
- package/dist/Alert/Alert.d.ts +54 -0
- package/dist/Badge/Badge.d.ts +40 -0
- package/dist/Banner/Banner.d.ts +52 -0
- package/dist/Breadcrumbs/Breadcrumbs.d.ts +53 -0
- package/dist/Button/Button.d.ts +56 -0
- package/dist/ButtonTab/ButtonTab.d.ts +16 -0
- package/dist/ButtonTabGroup/ButtonTabGroup.d.ts +31 -0
- package/dist/CanceledIcon/CanceledIcon.d.ts +11 -0
- package/dist/Card/Card.d.ts +32 -0
- package/dist/Checkbox/Checkbox.d.ts +78 -0
- package/dist/CheckboxWithText/CheckboxWithText.d.ts +32 -0
- package/dist/CodeSnippet/CodeSnippet.d.ts +38 -0
- package/dist/DataGrid/DataGrid.d.ts +58 -0
- package/dist/DataGrid/DataGrid.styles.d.ts +14 -0
- package/dist/DataGridCell/DataGridCell.d.ts +120 -0
- package/dist/DataGridColumnsButton/DataGridColumnsButton.d.ts +15 -0
- package/dist/DataGridColumnsPanel/DataGridColumnsPanel.d.ts +31 -0
- package/dist/DataGridFilterPanel/DataGridFilterPanel.d.ts +55 -0
- package/dist/DataGridFiltersButton/DataGridFiltersButton.d.ts +16 -0
- package/dist/DataGridHeaderCell/DataGridHeaderCell.d.ts +8 -0
- package/dist/DataGridHeaderLabel/DataGridHeaderLabel.d.ts +17 -0
- package/dist/DatePicker/DatePicker.d.ts +97 -0
- package/dist/DatePickerListItem/DatePickerListItem.d.ts +4 -0
- package/dist/DatePickerMenu/DatePickerMenu.d.ts +4 -0
- package/dist/DateTimeCell/DateTimeCell.d.ts +17 -0
- package/dist/Divider/Divider.d.ts +30 -0
- package/dist/Dot/Dot.d.ts +36 -0
- package/dist/DownloadToast/DownloadToast.d.ts +45 -0
- package/dist/DropdownInputField/DropdownInputField.d.ts +17 -0
- package/dist/EmptyState/EmptyState.d.ts +17 -0
- package/dist/FilledStatusIcons/FilledStatusIcons.d.ts +41 -0
- package/dist/FilterChip/FilterChip.d.ts +40 -0
- package/dist/Footer/Footer.d.ts +111 -0
- package/dist/GeneralAvatar/GeneralAvatar.d.ts +23 -0
- package/dist/IconButton/IconButton.d.ts +42 -0
- package/dist/IconWrapper/IconWrapper.d.ts +20 -0
- package/dist/InfiniteScrollGrid/InfiniteScrollGrid.d.ts +44 -0
- package/dist/InputField/InputField.d.ts +65 -0
- package/dist/LinkCell/LinkCell.d.ts +17 -0
- package/dist/ListItem/ListItem.d.ts +71 -0
- package/dist/ListItemButton/ListItemButton.d.ts +64 -0
- package/dist/LoadingSpinner/LoadingSpinner.d.ts +28 -0
- package/dist/Menu/Menu.d.ts +30 -0
- package/dist/MenuItem/MenuItem.d.ts +69 -0
- package/dist/ModActionsCell/ModActionsCell.d.ts +9 -0
- package/dist/ModAvatarCell/ModAvatarCell.d.ts +24 -0
- package/dist/ModIconCell/ModIconCell.d.ts +13 -0
- package/dist/ModLogoCell/ModLogoCell.d.ts +23 -0
- package/dist/ModProgressCell/ModProgressCell.d.ts +20 -0
- package/dist/ModStatusCell/ModStatusCell.d.ts +29 -0
- package/dist/Modal/Modal.d.ts +106 -0
- package/dist/NavIconButton/NavIconButton.d.ts +17 -0
- package/dist/NavigationAvatar/NavigationAvatar.d.ts +13 -0
- package/dist/NavigationItem/NavigationItem.d.ts +55 -0
- package/dist/PageContent/PageContent.d.ts +150 -0
- package/dist/PaginatedGrid/PaginatedGrid.d.ts +32 -0
- package/dist/ProgressSpinner/ProgressSpinner.d.ts +17 -0
- package/dist/Progressbar/Progressbar.d.ts +35 -0
- package/dist/QuickFilter/QuickFilter.d.ts +42 -0
- package/dist/Radio/Radio.d.ts +59 -0
- package/dist/RadioButtonWithText/RadioButtonWithText.d.ts +4 -0
- package/dist/RipplingDot/RipplingDot.d.ts +12 -0
- package/dist/SearchChip/SearchChip.d.ts +17 -0
- package/dist/Select/Select.d.ts +24 -0
- package/dist/SelectField/SelectField.d.ts +64 -0
- package/dist/SideNav/ModSideNavContext.d.ts +5 -0
- package/dist/SideNav/SideNav.d.ts +33 -0
- package/dist/Skeleton/Skeleton.d.ts +29 -0
- package/dist/TabPanel/TabPanel.d.ts +47 -0
- package/dist/Table/Table.d.ts +64 -0
- package/dist/Tabs/Tabs.d.ts +28 -0
- package/dist/Tag/Tag.d.ts +51 -0
- package/dist/Toast/Toast.d.ts +66 -0
- package/dist/Toggle/Toggle.d.ts +52 -0
- package/dist/ToggleButton/ToggleButton.d.ts +34 -0
- package/dist/ToggleButtonGroup/ToggleButtonGroup.d.ts +33 -0
- package/dist/ToggleButtonWithText/ToggleButtonWithText.d.ts +4 -0
- package/dist/Toolbar/Toolbar.d.ts +51 -0
- package/dist/Tooltip/Tooltip.d.ts +46 -0
- package/dist/TopNav/TopNav.d.ts +4 -0
- package/dist/TourModal/TourModal.d.ts +4 -0
- package/dist/Tree/Tree.d.ts +38 -0
- package/dist/TypologyControl/TypologyControl.d.ts +19 -0
- package/dist/VibratingDot/VibratingDot.d.ts +12 -0
- package/dist/index.d.ts +3147 -0
- package/dist/index.esm.js +7414 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +7527 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/colorHelpers.d.ts +7 -0
- package/dist/utils/focusRing.d.ts +10 -0
- package/dist/utils/muiProps.d.ts +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { GridRenderCellParams } from '@mui/x-data-grid';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
export interface ModActionsCellProps extends Omit<GridRenderCellParams, 'api'> {
|
|
4
|
+
api?: GridRenderCellParams['api'];
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
position?: 'bottom-end' | 'bottom-start' | 'top-end' | 'top-start';
|
|
7
|
+
suppressChildrenValidation?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function ModActionsCell(props: ModActionsCellProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
type ModAvatarCellBase = {
|
|
2
|
+
disabled?: boolean;
|
|
3
|
+
};
|
|
4
|
+
type ModAvatarCellEmpty = ModAvatarCellBase & {
|
|
5
|
+
empty: true;
|
|
6
|
+
name?: never;
|
|
7
|
+
src?: never;
|
|
8
|
+
label?: never;
|
|
9
|
+
};
|
|
10
|
+
type ModAvatarCellContent = ModAvatarCellBase & {
|
|
11
|
+
empty?: false;
|
|
12
|
+
name?: string;
|
|
13
|
+
src?: string;
|
|
14
|
+
label?: string;
|
|
15
|
+
};
|
|
16
|
+
export type ModAvatarCellProps = ModAvatarCellEmpty | ModAvatarCellContent;
|
|
17
|
+
/**
|
|
18
|
+
* ModAvatarCell — DataGrid cell displaying a user avatar with optional label.
|
|
19
|
+
*/
|
|
20
|
+
export declare const ModAvatarCell: {
|
|
21
|
+
({ name, src, label, disabled, empty, }: ModAvatarCellProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
displayName: string;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface ModIconCellProps {
|
|
3
|
+
icon?: ReactNode;
|
|
4
|
+
ariaLabel?: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* ModIconCell — Icon cell for DataGrid. Renders an icon centered in the cell.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ModIconCell: {
|
|
11
|
+
({ icon, ariaLabel, disabled }: ModIconCellProps): import("react/jsx-runtime").JSX.Element | null;
|
|
12
|
+
displayName: string;
|
|
13
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
type ModLogoCellNoSrc = {
|
|
2
|
+
src?: undefined;
|
|
3
|
+
alt?: string;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
};
|
|
6
|
+
type ModLogoCellWithSrc = {
|
|
7
|
+
src: string;
|
|
8
|
+
alt: string;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export type ModLogoCellProps = ModLogoCellNoSrc | ModLogoCellWithSrc;
|
|
12
|
+
/**
|
|
13
|
+
* ModLogoCell — DataGrid cell displaying a raster or SVG logo image.
|
|
14
|
+
*
|
|
15
|
+
* Kept separate from ModIconCell to match the design system Icon/Logo component split:
|
|
16
|
+
* - ModIconCell: MUI SvgIcon components
|
|
17
|
+
* - ModLogoCell: raster or SVG image URLs (img tag)
|
|
18
|
+
*/
|
|
19
|
+
export declare const ModLogoCell: {
|
|
20
|
+
({ src, alt, disabled }: ModLogoCellProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
displayName: string;
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
type ModProgressCellBase = {
|
|
2
|
+
disabled?: boolean;
|
|
3
|
+
};
|
|
4
|
+
type ModProgressCellEmpty = ModProgressCellBase & {
|
|
5
|
+
empty: true;
|
|
6
|
+
value?: never;
|
|
7
|
+
};
|
|
8
|
+
type ModProgressCellContent = ModProgressCellBase & {
|
|
9
|
+
empty?: false;
|
|
10
|
+
value?: number;
|
|
11
|
+
};
|
|
12
|
+
export type ModProgressCellProps = ModProgressCellEmpty | ModProgressCellContent;
|
|
13
|
+
/**
|
|
14
|
+
* ModProgressCell — DataGrid cell displaying a linear progress indicator.
|
|
15
|
+
*/
|
|
16
|
+
export declare const ModProgressCell: {
|
|
17
|
+
({ value, disabled, empty, }: ModProgressCellProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
displayName: string;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export type ModStatusCellVariant = 'success' | 'error' | 'warning' | 'info' | 'neutral';
|
|
3
|
+
type ModStatusCellBase = {
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
};
|
|
6
|
+
type ModStatusCellEmpty = ModStatusCellBase & {
|
|
7
|
+
empty: true;
|
|
8
|
+
label?: never;
|
|
9
|
+
icon?: never;
|
|
10
|
+
variant?: never;
|
|
11
|
+
details?: never;
|
|
12
|
+
};
|
|
13
|
+
type ModStatusCellContent = ModStatusCellBase & {
|
|
14
|
+
empty?: false;
|
|
15
|
+
label: string;
|
|
16
|
+
icon?: ReactNode;
|
|
17
|
+
variant?: ModStatusCellVariant;
|
|
18
|
+
/** Error details shown in a hover tooltip. Clipboard actions should be handled by the consuming app. */
|
|
19
|
+
details?: string;
|
|
20
|
+
};
|
|
21
|
+
export type ModStatusCellProps = ModStatusCellEmpty | ModStatusCellContent;
|
|
22
|
+
/**
|
|
23
|
+
* ModStatusCell — DataGrid cell displaying an icon + label chip with optional error tooltip.
|
|
24
|
+
*/
|
|
25
|
+
export declare const ModStatusCell: {
|
|
26
|
+
({ icon, label, details, disabled, variant, empty, }: ModStatusCellProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
displayName: string;
|
|
28
|
+
};
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { type DialogProps } from '@mui/material/Dialog';
|
|
2
|
+
import type { SxProps, Theme } from '@mui/material/styles';
|
|
3
|
+
import type { ComponentType, ReactNode } from 'react';
|
|
4
|
+
export interface ModModalProps extends Omit<DialogProps, 'children'> {
|
|
5
|
+
/**
|
|
6
|
+
* Dialog content
|
|
7
|
+
*/
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* ModModal - Main modal dialog container based on MUI Dialog
|
|
12
|
+
*
|
|
13
|
+
* This is a composition component. Use with ModModalHeader, ModModalContent, and ModModalFooter:
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* <ModModal open={open} onClose={handleClose}>
|
|
17
|
+
* <ModModalHeader
|
|
18
|
+
* title="Title"
|
|
19
|
+
* subtitle="Subtitle"
|
|
20
|
+
* onClose={handleClose}
|
|
21
|
+
* />
|
|
22
|
+
* <ModModalContent>
|
|
23
|
+
* Content goes here
|
|
24
|
+
* </ModModalContent>
|
|
25
|
+
* <ModModalFooter>
|
|
26
|
+
* <ModButton onClick={handleClose}>Action</ModButton>
|
|
27
|
+
* </ModModalFooter>
|
|
28
|
+
* </ModModal>
|
|
29
|
+
*/
|
|
30
|
+
export declare const ModModal: {
|
|
31
|
+
({ children, ...props }: ModModalProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
displayName: string;
|
|
33
|
+
};
|
|
34
|
+
export interface ModModalHeaderProps {
|
|
35
|
+
/**
|
|
36
|
+
* Main title text
|
|
37
|
+
*/
|
|
38
|
+
title?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Optional subtitle text or element
|
|
41
|
+
*/
|
|
42
|
+
subtitle?: ReactNode;
|
|
43
|
+
/**
|
|
44
|
+
* URL to link the title to. When provided, title renders as a link.
|
|
45
|
+
*/
|
|
46
|
+
href?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Custom Link component to use for the title link.
|
|
49
|
+
* Required when href is provided to support framework-specific routing (e.g., Next.js Link).
|
|
50
|
+
*/
|
|
51
|
+
LinkComponent?: ComponentType<{
|
|
52
|
+
href: string;
|
|
53
|
+
children: ReactNode;
|
|
54
|
+
sx?: SxProps<Theme>;
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Close button handler
|
|
58
|
+
*/
|
|
59
|
+
onClose?: () => void;
|
|
60
|
+
/**
|
|
61
|
+
* Hide the close button
|
|
62
|
+
* @default false
|
|
63
|
+
*/
|
|
64
|
+
hideCloseButton?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Additional content to render below title/subtitle (e.g., tabs)
|
|
67
|
+
*/
|
|
68
|
+
children?: ReactNode;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* ModModalHeader - Header section with title, optional subtitle, and close button
|
|
72
|
+
*/
|
|
73
|
+
export declare const ModModalHeader: {
|
|
74
|
+
({ title, subtitle, href, LinkComponent, onClose, hideCloseButton, children, }: ModModalHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
75
|
+
displayName: string;
|
|
76
|
+
};
|
|
77
|
+
export interface ModModalContentProps {
|
|
78
|
+
/**
|
|
79
|
+
* Content to display in the modal body
|
|
80
|
+
*/
|
|
81
|
+
children?: ReactNode;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* ModModalContent - Main content area of the modal
|
|
85
|
+
*/
|
|
86
|
+
export declare const ModModalContent: {
|
|
87
|
+
({ children }: ModModalContentProps): import("react/jsx-runtime").JSX.Element;
|
|
88
|
+
displayName: string;
|
|
89
|
+
};
|
|
90
|
+
export interface ModModalFooterProps {
|
|
91
|
+
/**
|
|
92
|
+
* Optional leading icon or content (e.g., settings icon)
|
|
93
|
+
*/
|
|
94
|
+
leadingContent?: ReactNode;
|
|
95
|
+
/**
|
|
96
|
+
* Action buttons (typically ModButton components)
|
|
97
|
+
*/
|
|
98
|
+
children?: ReactNode;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* ModModalFooter - Footer section with optional leading content and action buttons
|
|
102
|
+
*/
|
|
103
|
+
export declare const ModModalFooter: {
|
|
104
|
+
({ leadingContent, children }: ModModalFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
105
|
+
displayName: string;
|
|
106
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Props for the ModNavIconButton component
|
|
4
|
+
*/
|
|
5
|
+
export interface ModNavIconButtonProps {
|
|
6
|
+
/**
|
|
7
|
+
* The content to display inside the component
|
|
8
|
+
*/
|
|
9
|
+
children?: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* ModNavIconButton — scaffold placeholder, not yet implemented.
|
|
13
|
+
*/
|
|
14
|
+
export declare const ModNavIconButton: {
|
|
15
|
+
({ children, ...props }: ModNavIconButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
displayName: string;
|
|
17
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ModGeneralAvatarProps } from '../GeneralAvatar/GeneralAvatar';
|
|
2
|
+
export interface ModNavigationAvatarProps extends Omit<ModGeneralAvatarProps, 'size'> {
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* ModNavigationAvatar - Compact avatar for navigation contexts
|
|
6
|
+
*
|
|
7
|
+
* Wraps ModGeneralAvatar (size="medium") in a 40px container,
|
|
8
|
+
* providing an interactive area for navigation UI.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ModNavigationAvatar: {
|
|
11
|
+
({ children, ...props }: ModNavigationAvatarProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
displayName: string;
|
|
13
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import ButtonBase, { type ButtonBaseProps } from '@mui/material/ButtonBase';
|
|
2
|
+
import type { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react';
|
|
3
|
+
import type { ModTagOwnProps } from '../Tag/Tag';
|
|
4
|
+
type ModNavigationItemOwnProps = {
|
|
5
|
+
/**
|
|
6
|
+
* Icon element to display
|
|
7
|
+
*/
|
|
8
|
+
icon?: ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* Text label below the icon
|
|
11
|
+
*/
|
|
12
|
+
label?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Whether the item is selected/active
|
|
15
|
+
* @default false
|
|
16
|
+
*/
|
|
17
|
+
selected?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Optional tag badge content (e.g., "Beta")
|
|
20
|
+
*/
|
|
21
|
+
tag?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Hover tooltip shown only when the surrounding ModSideNav is collapsed
|
|
24
|
+
* (and the label is therefore hidden).
|
|
25
|
+
*/
|
|
26
|
+
tooltip?: ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* Slot props for internal sub-components.
|
|
29
|
+
*/
|
|
30
|
+
slotProps?: {
|
|
31
|
+
/**
|
|
32
|
+
* Props forwarded to the ModTag badge rendered when `tag` is set.
|
|
33
|
+
* Override `intent`, `variant`, or `size` to change appearance — e.g.
|
|
34
|
+
* `{ variant: 'outlined', intent: 'default' }` for a calmer grey badge.
|
|
35
|
+
*/
|
|
36
|
+
badge?: ModTagOwnProps & {
|
|
37
|
+
sx?: Record<string, unknown>;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Additional content
|
|
42
|
+
*/
|
|
43
|
+
children?: ReactNode;
|
|
44
|
+
};
|
|
45
|
+
export type ModNavigationItemProps<C extends ElementType = typeof ButtonBase> = ModNavigationItemOwnProps & Omit<ButtonBaseProps, keyof ModNavigationItemOwnProps | 'component'> & Omit<ComponentPropsWithoutRef<C>, keyof ModNavigationItemOwnProps | keyof ButtonBaseProps> & {
|
|
46
|
+
component?: C;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* ModNavigationItem - Vertical navigation item with icon, label, and optional tag
|
|
50
|
+
*/
|
|
51
|
+
export declare function ModNavigationItem<C extends ElementType = typeof ButtonBase>({ icon, label, selected, tag, tooltip, slotProps, children, ...props }: ModNavigationItemProps<C>): import("react/jsx-runtime").JSX.Element;
|
|
52
|
+
export declare namespace ModNavigationItem {
|
|
53
|
+
var displayName: string;
|
|
54
|
+
}
|
|
55
|
+
export {};
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import type { BoxProps } from '@mui/material/Box';
|
|
2
|
+
import type { Breakpoint } from '@mui/material/styles';
|
|
3
|
+
import type { ElementType, ReactNode } from 'react';
|
|
4
|
+
/**
|
|
5
|
+
* Breadcrumb item configuration
|
|
6
|
+
*/
|
|
7
|
+
export interface BreadcrumbItem {
|
|
8
|
+
/** Link label */
|
|
9
|
+
label: ReactNode;
|
|
10
|
+
/** Link href (omit for current/last item) */
|
|
11
|
+
href?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Breadcrumb configuration with link component and items
|
|
15
|
+
*/
|
|
16
|
+
export interface BreadcrumbConfig {
|
|
17
|
+
/** Custom link component for client-side navigation (e.g., Next.js Link) */
|
|
18
|
+
linkComponent?: ElementType;
|
|
19
|
+
/** Breadcrumb items */
|
|
20
|
+
items: BreadcrumbItem[];
|
|
21
|
+
}
|
|
22
|
+
export interface ModPageContentProps extends BoxProps {
|
|
23
|
+
/**
|
|
24
|
+
* Main heading displayed on the page
|
|
25
|
+
*/
|
|
26
|
+
pageTitle: ReactNode | string;
|
|
27
|
+
/**
|
|
28
|
+
* Optional subtitle displayed below the page title
|
|
29
|
+
*/
|
|
30
|
+
subtitle?: ReactNode | string;
|
|
31
|
+
/**
|
|
32
|
+
* Optional breadcrumbs navigation displayed above the page title.
|
|
33
|
+
* Last item is automatically marked as current.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* breadcrumbs={{
|
|
38
|
+
* linkComponent: NextLink,
|
|
39
|
+
* items: [
|
|
40
|
+
* { label: 'Settings', href: '/settings' },
|
|
41
|
+
* { label: 'Team', href: '/team' },
|
|
42
|
+
* { label: 'Team Details' },
|
|
43
|
+
* ]
|
|
44
|
+
* }}
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
breadcrumbs?: BreadcrumbConfig;
|
|
48
|
+
/**
|
|
49
|
+
* Action button displayed in the top-right corner
|
|
50
|
+
*/
|
|
51
|
+
action?: ReactNode;
|
|
52
|
+
/**
|
|
53
|
+
* Make header sticky on scroll
|
|
54
|
+
* @default false
|
|
55
|
+
*/
|
|
56
|
+
sticky?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Maximum width constraint for content
|
|
59
|
+
* @default false
|
|
60
|
+
*/
|
|
61
|
+
contentMaxWidth?: Breakpoint | false;
|
|
62
|
+
/**
|
|
63
|
+
* Center content when using contentMaxWidth
|
|
64
|
+
* @default true
|
|
65
|
+
*/
|
|
66
|
+
centerContent?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Disable gutters/padding
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
71
|
+
disableGutters?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Page layout mode.
|
|
74
|
+
* - `default`: standard centered/max-width-constrained content with
|
|
75
|
+
* gutters. Best for content-driven pages (settings, forms, lists).
|
|
76
|
+
* - `fullBleed`: removes max-width and horizontal/bottom padding, lets
|
|
77
|
+
* the content area flex-fill the viewport. Best for full-height
|
|
78
|
+
* layouts (sidebar + panel canvases, builders, explorers). Title
|
|
79
|
+
* and breadcrumbs still render — they sit at the leading edge.
|
|
80
|
+
* @default 'default'
|
|
81
|
+
*/
|
|
82
|
+
layout?: 'default' | 'fullBleed';
|
|
83
|
+
/**
|
|
84
|
+
* Loading state - shows spinner while content loads
|
|
85
|
+
* @default false
|
|
86
|
+
*/
|
|
87
|
+
isLoading?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Enable back to top button when scrolling
|
|
90
|
+
* @default true
|
|
91
|
+
*/
|
|
92
|
+
showBackToTop?: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Content to display in the main area
|
|
95
|
+
*/
|
|
96
|
+
children: ReactNode;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* ModPageContent - Page content surface from the Moderne Design System
|
|
100
|
+
*
|
|
101
|
+
* Represents the main white card/surface that contains page content:
|
|
102
|
+
* - Page title with optional subtitle and action button
|
|
103
|
+
* - Content area where tabs and page content should be rendered
|
|
104
|
+
*
|
|
105
|
+
* ## Design Tokens
|
|
106
|
+
* - Background: `semanticColors.surface.canvasContent` — the page content
|
|
107
|
+
* canvas (#fbfaf6 light / #1b1b21 dark), not a raised card surface
|
|
108
|
+
|
|
109
|
+
* - Border: `semanticColors.border.primary` (#D1D5DB)
|
|
110
|
+
* - Border radius: `borderRadius.input` (8px)
|
|
111
|
+
* - Padding: `spacing.spacing_2_1_2` (20px) horizontal, `spacing.spacing_2` (16px) vertical
|
|
112
|
+
* - Gap: `spacing.spacing_1` (8px)
|
|
113
|
+
* - Title typography: `typography.fontSize.h3` (21px), `typography.fontWeight.medium`
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```tsx
|
|
117
|
+
* <ModPageContent
|
|
118
|
+
* pageTitle="Users"
|
|
119
|
+
* action={<IconButton>...</IconButton>}
|
|
120
|
+
* >
|
|
121
|
+
* <ModDataGrid ... />
|
|
122
|
+
* </ModPageContent>
|
|
123
|
+
* ```
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```tsx
|
|
127
|
+
* // With subtitle
|
|
128
|
+
* <ModPageContent
|
|
129
|
+
* pageTitle="Settings"
|
|
130
|
+
* subtitle="Manage your account preferences"
|
|
131
|
+
* >
|
|
132
|
+
* <SettingsContent />
|
|
133
|
+
* </ModPageContent>
|
|
134
|
+
* ```
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```tsx
|
|
138
|
+
* // With sticky header
|
|
139
|
+
* <ModPageContent
|
|
140
|
+
* pageTitle="Long Content"
|
|
141
|
+
* sticky
|
|
142
|
+
* >
|
|
143
|
+
* <VeryLongContent />
|
|
144
|
+
* </ModPageContent>
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
export declare function ModPageContent({ pageTitle, subtitle, breadcrumbs, action, sticky, contentMaxWidth: contentMaxWidthProp, centerContent, disableGutters: disableGuttersProp, isLoading, showBackToTop, layout, children, sx, ...boxProps }: ModPageContentProps): import("react/jsx-runtime").JSX.Element;
|
|
148
|
+
export declare namespace ModPageContent {
|
|
149
|
+
var displayName: string;
|
|
150
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { GridSlots } from '@mui/x-data-grid-pro';
|
|
2
|
+
import { type ModDataGridProps } from '../DataGrid/DataGrid';
|
|
3
|
+
export interface ModPaginatedGridProps extends Omit<ModDataGridProps, 'slots'> {
|
|
4
|
+
/**
|
|
5
|
+
* Custom slots (merged with design system defaults)
|
|
6
|
+
*/
|
|
7
|
+
slots?: Partial<GridSlots>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* ModPaginatedGrid - DataGrid with standard pagination controls
|
|
11
|
+
*
|
|
12
|
+
* Features:
|
|
13
|
+
* - Standard MUI pagination with page numbers
|
|
14
|
+
* - Shows "1-10 of 100" format in footer
|
|
15
|
+
* - Previous/Next navigation buttons
|
|
16
|
+
* - Auto-calculates page size to fit viewport (autoPageSize)
|
|
17
|
+
* - No vertical scrollbar within pages - use pagination to navigate
|
|
18
|
+
* - Inherits all responsive features from ModDataGrid
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* <ModPaginatedGrid
|
|
22
|
+
* rows={rows}
|
|
23
|
+
* columns={columns}
|
|
24
|
+
* paginationModel={{ page: 0, pageSize: 10 }}
|
|
25
|
+
* onPaginationModelChange={handlePaginationChange}
|
|
26
|
+
* rowCount={100}
|
|
27
|
+
* />
|
|
28
|
+
*/
|
|
29
|
+
export declare function ModPaginatedGrid({ slots, pageSizeOptions, slotProps: userSlotProps, ...props }: ModPaginatedGridProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare namespace ModPaginatedGrid {
|
|
31
|
+
var displayName: string;
|
|
32
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Props for the ModProgressSpinner component
|
|
4
|
+
*/
|
|
5
|
+
export interface ModProgressSpinnerProps {
|
|
6
|
+
/**
|
|
7
|
+
* The content to display inside the component
|
|
8
|
+
*/
|
|
9
|
+
children?: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* ModProgressSpinner — scaffold placeholder, not yet implemented.
|
|
13
|
+
*/
|
|
14
|
+
export declare const ModProgressSpinner: {
|
|
15
|
+
({ children, ...props }: ModProgressSpinnerProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
displayName: string;
|
|
17
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type LinearProgressProps } from '@mui/material/LinearProgress';
|
|
2
|
+
export interface ModProgressbarProps extends Omit<LinearProgressProps, 'variant'> {
|
|
3
|
+
/**
|
|
4
|
+
* The value of the progress indicator for the determinate variant.
|
|
5
|
+
* Value between 0 and 100.
|
|
6
|
+
* @default 0
|
|
7
|
+
*/
|
|
8
|
+
value?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Position of the label showing the progress percentage
|
|
11
|
+
* @default "none"
|
|
12
|
+
*/
|
|
13
|
+
labelPosition?: 'none' | 'right' | 'top' | 'bottom';
|
|
14
|
+
/**
|
|
15
|
+
* The variant of the progress indicator
|
|
16
|
+
* @default "default"
|
|
17
|
+
*/
|
|
18
|
+
variant?: 'default' | 'cancelled';
|
|
19
|
+
/**
|
|
20
|
+
* Custom label text to display instead of the percentage
|
|
21
|
+
*/
|
|
22
|
+
labelText?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* ModProgressbar - Linear progress indicator based on MUI LinearProgress
|
|
26
|
+
*
|
|
27
|
+
* Design Decisions (from Issue #75):
|
|
28
|
+
* - MUI Base Component: LinearProgress (provides accessibility, animations, progress tracking)
|
|
29
|
+
* - Label Positioning: Single labelPosition prop with values 'none', 'right', 'top', 'bottom'
|
|
30
|
+
* - Cancelled State: Separate variant prop (variant='cancelled') alongside value prop
|
|
31
|
+
*/
|
|
32
|
+
export declare const ModProgressbar: {
|
|
33
|
+
({ value, labelPosition, variant, labelText, ...props }: ModProgressbarProps): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
displayName: string;
|
|
35
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export interface ModQuickFilterProps {
|
|
2
|
+
/**
|
|
3
|
+
* Placeholder text for the search input
|
|
4
|
+
* @default "Search..."
|
|
5
|
+
*/
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Callback fired when a key is pressed
|
|
9
|
+
*/
|
|
10
|
+
onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;
|
|
11
|
+
/**
|
|
12
|
+
* If true, the input will be focused on mount
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
autoFocus?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* ModQuickFilter - Quick search/filter input component for data grids
|
|
19
|
+
*
|
|
20
|
+
* Uses MUI X DataGrid's QuickFilterControl with Moderne design system styling.
|
|
21
|
+
* Styled to match the Figma design with search icon, clear button, and proper spacing.
|
|
22
|
+
*
|
|
23
|
+
* **Note:** This component must be used within a DataGrid context (inside a DataGrid component's toolbar).
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* // Basic usage in DataGrid toolbar
|
|
27
|
+
* <DataGrid
|
|
28
|
+
* rows={rows}
|
|
29
|
+
* columns={columns}
|
|
30
|
+
* slots={{
|
|
31
|
+
* toolbar: () => (
|
|
32
|
+
* <ModToolbar>
|
|
33
|
+
* <ModQuickFilter placeholder="Search users..." />
|
|
34
|
+
* </ModToolbar>
|
|
35
|
+
* ),
|
|
36
|
+
* }}
|
|
37
|
+
* />
|
|
38
|
+
*/
|
|
39
|
+
export declare const ModQuickFilter: {
|
|
40
|
+
({ placeholder, onKeyDown, autoFocus, }: ModQuickFilterProps): import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
displayName: string;
|
|
42
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { RadioProps } from '@mui/material/Radio';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
declare module '@mui/material/Radio' {
|
|
4
|
+
interface RadioPropsSizeOverrides {
|
|
5
|
+
small: true;
|
|
6
|
+
medium: true;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
type RadioSize = 'small' | 'medium';
|
|
10
|
+
export interface ModRadioProps extends Omit<RadioProps, 'size'> {
|
|
11
|
+
/**
|
|
12
|
+
* The size of the radio button
|
|
13
|
+
* @default "medium"
|
|
14
|
+
*/
|
|
15
|
+
size?: RadioSize;
|
|
16
|
+
/**
|
|
17
|
+
* The label text displayed next to the radio button
|
|
18
|
+
*/
|
|
19
|
+
label?: ReactNode;
|
|
20
|
+
/**
|
|
21
|
+
* The helper text displayed below the label
|
|
22
|
+
*/
|
|
23
|
+
helperText?: ReactNode;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* ModRadio - Radio button component based on MUI Radio
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* // Basic radio button (just the icon)
|
|
30
|
+
* <ModRadio />
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* // With label
|
|
34
|
+
* <ModRadio label="Remember me" />
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* // With label and helper text
|
|
38
|
+
* <ModRadio label="Remember me" helperText="Save my login details for next time." />
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* // Small size
|
|
42
|
+
* <ModRadio size="small" label="Remember me" />
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* // Controlled
|
|
46
|
+
* <ModRadio checked={value === 'option1'} onChange={handleChange} value="option1" label="Option 1" />
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* // Radio group
|
|
50
|
+
* <RadioGroup value={value} onChange={handleChange}>
|
|
51
|
+
* <ModRadio value="option1" label="Option 1" helperText="First option" />
|
|
52
|
+
* <ModRadio value="option2" label="Option 2" helperText="Second option" />
|
|
53
|
+
* </RadioGroup>
|
|
54
|
+
*/
|
|
55
|
+
export declare const ModRadio: {
|
|
56
|
+
({ size, label, helperText, disabled, ...props }: ModRadioProps): import("react/jsx-runtime").JSX.Element;
|
|
57
|
+
displayName: string;
|
|
58
|
+
};
|
|
59
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ModRadioButtonWithText
|
|
3
|
+
*/
|
|
4
|
+
export declare const ModRadioButtonWithText: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type BoxProps } from '@mui/material';
|
|
2
|
+
import type { FunctionComponent } from 'react';
|
|
3
|
+
export interface ModRipplingDotProps extends BoxProps {
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* ModRipplingDot - Animated status dot with an expanding ripple ring.
|
|
7
|
+
*
|
|
8
|
+
* Indicates an in-progress, indeterminate state (RUNNING / SYNCING / PROCESSING).
|
|
9
|
+
* Color is inherited from `currentColor`; set it via the `color`/`sx` prop or a
|
|
10
|
+
* parent. Sized to the lowercase-letter height regardless of parent fontSize.
|
|
11
|
+
*/
|
|
12
|
+
export declare const ModRipplingDot: FunctionComponent<ModRipplingDotProps>;
|