@moderneinc/neo-styled-components 0.0.0-development → 1.6.1-next.02b147
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/dist/Avatar.d.ts +57 -0
- package/dist/Badge.d.ts +23 -0
- package/dist/Banner.d.ts +66 -0
- package/dist/Breadcrumbs.d.ts +61 -0
- package/dist/Button.d.ts +59 -0
- package/dist/ButtonGroup.d.ts +42 -0
- package/dist/Checkbox.d.ts +80 -0
- package/dist/CodeSnippet.d.ts +59 -0
- package/dist/DataGridCell.d.ts +144 -0
- package/dist/DataGridFilterPanel.d.ts +57 -0
- package/dist/Divider.d.ts +32 -0
- package/dist/Dot.d.ts +36 -0
- package/dist/Footer.d.ts +103 -0
- package/dist/IconButton.d.ts +31 -0
- package/dist/InputField.d.ts +90 -0
- package/dist/LoadingSpinner.d.ts +30 -0
- package/dist/Menu.d.ts +45 -0
- package/dist/MenuItem.d.ts +55 -0
- package/dist/Modal.d.ts +100 -0
- package/dist/Progressbar.d.ts +41 -0
- package/dist/QuickFilter.d.ts +51 -0
- package/dist/Radio.d.ts +78 -0
- package/dist/Select.d.ts +24 -0
- package/dist/Skeleton.d.ts +36 -0
- package/dist/Tabs.d.ts +51 -0
- package/dist/Tag.d.ts +48 -0
- package/dist/Toast.d.ts +68 -0
- package/dist/Toggle.d.ts +69 -0
- package/dist/Toolbar.d.ts +53 -0
- package/dist/index.d.ts +1665 -4
- package/dist/index.esm.js +3375 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +3418 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +28 -0
- package/package.json +17 -6
package/dist/Avatar.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type AvatarProps } from '@mui/material/Avatar';
|
|
2
|
+
declare module '@mui/material/Avatar' {
|
|
3
|
+
interface AvatarPropsVariantOverrides {
|
|
4
|
+
initials: true;
|
|
5
|
+
rounded: false;
|
|
6
|
+
square: false;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export interface NeoAvatarProps extends Omit<AvatarProps, 'variant'> {
|
|
10
|
+
/**
|
|
11
|
+
* The size of the avatar
|
|
12
|
+
* @default "medium"
|
|
13
|
+
*/
|
|
14
|
+
size?: 'small' | 'medium';
|
|
15
|
+
/**
|
|
16
|
+
* The variant of the avatar
|
|
17
|
+
* - "circular": Image avatar with white surface container (medium only)
|
|
18
|
+
* - "initials": Text/initials avatar with violet background (no container)
|
|
19
|
+
* @default "circular"
|
|
20
|
+
*/
|
|
21
|
+
variant?: 'circular' | 'initials';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* NeoAvatar - User avatar component based on MUI Avatar
|
|
25
|
+
*
|
|
26
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4214-58134
|
|
27
|
+
*
|
|
28
|
+
* Figma Props Mapping:
|
|
29
|
+
* - Figma Type "Initials" → variant="initials", size="small" (20px)
|
|
30
|
+
* - Figma Type "Small" → variant="circular", size="small" (20px with image)
|
|
31
|
+
* - Figma Type "Medium" → variant="circular", size="medium" (44px white container with image)
|
|
32
|
+
* - State: Hover (tooltip) → Wrap component with MUI Tooltip
|
|
33
|
+
*
|
|
34
|
+
* Usage:
|
|
35
|
+
* ```tsx
|
|
36
|
+
* // Medium image avatar (with white container)
|
|
37
|
+
* <NeoAvatar variant="circular" size="medium" src="/avatar.jpg" alt="User" />
|
|
38
|
+
*
|
|
39
|
+
* // Small image avatar (no container)
|
|
40
|
+
* <NeoAvatar variant="circular" size="small" src="/avatar.jpg" alt="User" />
|
|
41
|
+
*
|
|
42
|
+
* // Small initials avatar
|
|
43
|
+
* <NeoAvatar variant="initials" size="small">A</NeoAvatar>
|
|
44
|
+
*
|
|
45
|
+
* // Medium initials avatar
|
|
46
|
+
* <NeoAvatar variant="initials" size="medium">AB</NeoAvatar>
|
|
47
|
+
*
|
|
48
|
+
* // With tooltip (user wraps)
|
|
49
|
+
* <Tooltip title="This is a tooltip" arrow placement="top">
|
|
50
|
+
* <NeoAvatar variant="initials">A</NeoAvatar>
|
|
51
|
+
* </Tooltip>
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare const NeoAvatar: {
|
|
55
|
+
({ size, variant, ...props }: NeoAvatarProps): import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
displayName: string;
|
|
57
|
+
};
|
package/dist/Badge.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ChipProps } from '@mui/material/Chip';
|
|
2
|
+
export interface NeoBadgeProps extends Omit<ChipProps, 'variant' | 'size'> {
|
|
3
|
+
/**
|
|
4
|
+
* The color/state of the badge
|
|
5
|
+
* @default "default"
|
|
6
|
+
*/
|
|
7
|
+
color?: 'default' | 'error' | 'warning' | 'success' | 'info';
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* NeoBadge - Status badge component based on MUI Chip
|
|
11
|
+
*
|
|
12
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system-w--correct-set-of-tokens?node-id=4091-17230
|
|
13
|
+
*
|
|
14
|
+
* Figma Props Mapping:
|
|
15
|
+
* - state (Neutral|Error|Warning|Success|Info) → color (default|error|warning|success|info)
|
|
16
|
+
* - iconLeading → icon prop (pass React element)
|
|
17
|
+
* - iconTrailing → deleteIcon prop (pass React element)
|
|
18
|
+
* - Label → label prop
|
|
19
|
+
*/
|
|
20
|
+
export declare const NeoBadge: {
|
|
21
|
+
(props: NeoBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
displayName: string;
|
|
23
|
+
};
|
package/dist/Banner.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { type AlertProps } from '@mui/material/Alert';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
export interface NeoBannerProps extends Omit<AlertProps, 'variant' | 'severity' | 'color'> {
|
|
4
|
+
/**
|
|
5
|
+
* The visual style variant of the banner
|
|
6
|
+
* @default "light"
|
|
7
|
+
*
|
|
8
|
+
* @figmaPropMapping color (Dark|Light|Success|Error|Warning) → variant
|
|
9
|
+
*/
|
|
10
|
+
variant?: 'dark' | 'light' | 'success' | 'error' | 'warning';
|
|
11
|
+
/**
|
|
12
|
+
* The message text to display
|
|
13
|
+
*
|
|
14
|
+
* @figmaPropMapping {Message} → message
|
|
15
|
+
*/
|
|
16
|
+
message: string;
|
|
17
|
+
/**
|
|
18
|
+
* Horizontal alignment of the message content
|
|
19
|
+
* @default "left"
|
|
20
|
+
*
|
|
21
|
+
* @figmaPropMapping messagePosition (Left|Center) → messagePosition
|
|
22
|
+
*/
|
|
23
|
+
messagePosition?: 'left' | 'center';
|
|
24
|
+
/**
|
|
25
|
+
* Optional link text to display after the message
|
|
26
|
+
*
|
|
27
|
+
* @figmaPropMapping link (boolean) → linkText (string)
|
|
28
|
+
*/
|
|
29
|
+
linkText?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Whether to show the close button
|
|
32
|
+
* @default true
|
|
33
|
+
*
|
|
34
|
+
* @figmaPropMapping closeIcon → showClose
|
|
35
|
+
*/
|
|
36
|
+
showClose?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Custom icon to display (optional)
|
|
39
|
+
* If not provided, no icon will be shown
|
|
40
|
+
*/
|
|
41
|
+
icon?: ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* Callback when close button is clicked
|
|
44
|
+
*/
|
|
45
|
+
onClose?: () => void;
|
|
46
|
+
/**
|
|
47
|
+
* Callback when link text is clicked
|
|
48
|
+
*/
|
|
49
|
+
onLinkClick?: () => void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* NeoBanner - Inline banner/alert component based on MUI Alert
|
|
53
|
+
*
|
|
54
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4170-2158
|
|
55
|
+
*
|
|
56
|
+
* Figma Props Mapping:
|
|
57
|
+
* - color (Dark|Light|Success|Error|Warning) → variant (dark|light|success|error|warning)
|
|
58
|
+
* - messagePosition (Left|Center) → messagePosition ("left"|"center")
|
|
59
|
+
* - closeIcon (boolean) → showClose (boolean)
|
|
60
|
+
* - link (boolean) → linkText (string)
|
|
61
|
+
* - {Message} → message (string)
|
|
62
|
+
*/
|
|
63
|
+
export declare const NeoBanner: {
|
|
64
|
+
({ variant, message, messagePosition, linkText, showClose, icon, onClose, onLinkClick, ...props }: NeoBannerProps): import("react/jsx-runtime").JSX.Element;
|
|
65
|
+
displayName: string;
|
|
66
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type LinkProps } from '@mui/material/Link';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* NeoBreadcrumbs - Navigation breadcrumb component
|
|
5
|
+
*
|
|
6
|
+
* Figma Mapping:
|
|
7
|
+
* - Base component uses MuiBreadcrumbs with custom styled Links
|
|
8
|
+
* - Uses chevron separator (ChevronRight from lucide-react)
|
|
9
|
+
* - Typography: 14px Medium (500 weight)
|
|
10
|
+
* - Colors:
|
|
11
|
+
* - Non-current: semanticColors.typography.bodySecondary (#6b7280)
|
|
12
|
+
* - Current: semanticColors.buttons.primary.default (#2f42ff)
|
|
13
|
+
* - Hover: semanticColors.icons.hover (#1f2937) or buttons.tertiary.hover (#1e2ec2)
|
|
14
|
+
* - Focus: 2px outline with buttons.primary.focus
|
|
15
|
+
*
|
|
16
|
+
* @see https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4563-122872
|
|
17
|
+
*/
|
|
18
|
+
export interface NeoBreadcrumbsProps {
|
|
19
|
+
/** Breadcrumb items as Link elements */
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
/** Additional CSS classes */
|
|
22
|
+
className?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface NeoBreadcrumbLinkProps extends Omit<LinkProps, 'color'> {
|
|
25
|
+
/** Marks this breadcrumb as the current page (sets aria-current="page") */
|
|
26
|
+
current?: boolean;
|
|
27
|
+
/** Link content */
|
|
28
|
+
children: ReactNode;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* NeoBreadcrumbLink - Individual breadcrumb link
|
|
32
|
+
*
|
|
33
|
+
* Use this component as children of NeoBreadcrumbs to create breadcrumb items.
|
|
34
|
+
* Set `current` prop on the last item to indicate the current page.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* <NeoBreadcrumbs>
|
|
39
|
+
* <NeoBreadcrumbLink href="/settings">Settings</NeoBreadcrumbLink>
|
|
40
|
+
* <NeoBreadcrumbLink href="/team">Team</NeoBreadcrumbLink>
|
|
41
|
+
* <NeoBreadcrumbLink current>Team Details</NeoBreadcrumbLink>
|
|
42
|
+
* </NeoBreadcrumbs>
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function NeoBreadcrumbLink({ current, children, ...props }: NeoBreadcrumbLinkProps): import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
/**
|
|
47
|
+
* NeoBreadcrumbs - Navigation breadcrumb component
|
|
48
|
+
*
|
|
49
|
+
* Provides hierarchical navigation with styled links and chevron separators.
|
|
50
|
+
* Use NeoBreadcrumbLink components as children to create breadcrumb items.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```tsx
|
|
54
|
+
* <NeoBreadcrumbs>
|
|
55
|
+
* <NeoBreadcrumbLink href="/settings">Settings</NeoBreadcrumbLink>
|
|
56
|
+
* <NeoBreadcrumbLink href="/team">Team</NeoBreadcrumbLink>
|
|
57
|
+
* <NeoBreadcrumbLink current>Team Details</NeoBreadcrumbLink>
|
|
58
|
+
* </NeoBreadcrumbs>
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function NeoBreadcrumbs({ children, className }: NeoBreadcrumbsProps): import("react/jsx-runtime").JSX.Element;
|
package/dist/Button.d.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type ButtonBaseProps } from '@mui/material/ButtonBase';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
declare module '@mui/material/ButtonBase' {
|
|
4
|
+
interface ButtonBasePropsVariantOverrides {
|
|
5
|
+
primary: true;
|
|
6
|
+
secondary: true;
|
|
7
|
+
destructive: true;
|
|
8
|
+
link: true;
|
|
9
|
+
linkColor: true;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
type ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'link' | 'linkColor';
|
|
13
|
+
type ButtonSize = 'small' | 'medium';
|
|
14
|
+
export interface NeoButtonProps extends Omit<ButtonBaseProps, 'children'> {
|
|
15
|
+
/**
|
|
16
|
+
* The visual variant of the button
|
|
17
|
+
* @default "primary"
|
|
18
|
+
*
|
|
19
|
+
* @figma Hierarchy
|
|
20
|
+
*/
|
|
21
|
+
variant?: ButtonVariant;
|
|
22
|
+
/**
|
|
23
|
+
* The size of the button
|
|
24
|
+
* @default "medium"
|
|
25
|
+
*
|
|
26
|
+
* @figma Size
|
|
27
|
+
*/
|
|
28
|
+
size?: ButtonSize;
|
|
29
|
+
/**
|
|
30
|
+
* Show loading spinner instead of children
|
|
31
|
+
* @default false
|
|
32
|
+
*
|
|
33
|
+
* @figma State=Loading
|
|
34
|
+
*/
|
|
35
|
+
loading?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Button content
|
|
38
|
+
*/
|
|
39
|
+
children?: ReactNode;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* NeoButton - Text button component based on MUI ButtonBase
|
|
43
|
+
*
|
|
44
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4086-7590
|
|
45
|
+
*
|
|
46
|
+
* Figma Props Mapping:
|
|
47
|
+
* - Hierarchy (Primary|Secondary|Destructive|Link|Link Color) → variant prop
|
|
48
|
+
* - Size (Small|Medium) → size prop
|
|
49
|
+
* - State=Disabled → disabled prop
|
|
50
|
+
* - State=Loading → loading prop
|
|
51
|
+
* - State=Hover → CSS :hover
|
|
52
|
+
* - State=Pressed → CSS :active
|
|
53
|
+
* - State=Focused → CSS :focus-visible
|
|
54
|
+
*/
|
|
55
|
+
export declare const NeoButton: {
|
|
56
|
+
({ variant, size, loading, children, disabled, ...props }: NeoButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
57
|
+
displayName: string;
|
|
58
|
+
};
|
|
59
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type ButtonGroupProps as MuiButtonGroupProps } from '@mui/material/ButtonGroup';
|
|
2
|
+
type ButtonGroupSize = 'small' | 'medium';
|
|
3
|
+
export interface NeoButtonGroupProps extends Omit<MuiButtonGroupProps, 'size' | 'variant'> {
|
|
4
|
+
/**
|
|
5
|
+
* The size of the button group
|
|
6
|
+
* @default "medium"
|
|
7
|
+
*
|
|
8
|
+
* @figma Size=Sm → small, Size=Md → medium
|
|
9
|
+
*/
|
|
10
|
+
size?: ButtonGroupSize;
|
|
11
|
+
/**
|
|
12
|
+
* The visual variant of the buttons
|
|
13
|
+
* ButtonGroup uses a fixed outlined style from the design
|
|
14
|
+
*/
|
|
15
|
+
variant?: 'outlined';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* NeoButtonGroup - Button group component based on MUI ButtonGroup
|
|
19
|
+
*
|
|
20
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4106-11129
|
|
21
|
+
*
|
|
22
|
+
* Figma Props Mapping:
|
|
23
|
+
* - Size (Sm|Md) → size prop (small|medium)
|
|
24
|
+
* - Icon=False → Icon support not included in this implementation
|
|
25
|
+
* - Active button state → Controlled externally via button props or classes
|
|
26
|
+
*
|
|
27
|
+
* Usage:
|
|
28
|
+
* ```tsx
|
|
29
|
+
* <NeoButtonGroup size="medium">
|
|
30
|
+
* <NeoButton>Button 1</NeoButton>
|
|
31
|
+
* <NeoButton>Button 2</NeoButton>
|
|
32
|
+
* <NeoButton>Button 3</NeoButton>
|
|
33
|
+
* </NeoButtonGroup>
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* Note: To show active state, add 'active' class to the selected button
|
|
37
|
+
*/
|
|
38
|
+
export declare const NeoButtonGroup: {
|
|
39
|
+
({ size, variant, ...props }: NeoButtonGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
displayName: string;
|
|
41
|
+
};
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { type CheckboxProps } from '@mui/material/Checkbox';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
declare module '@mui/material/Checkbox' {
|
|
4
|
+
interface CheckboxPropsSizeOverrides {
|
|
5
|
+
xs: true;
|
|
6
|
+
small: true;
|
|
7
|
+
medium: true;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
type CheckboxSize = 'xs' | 'small' | 'medium';
|
|
11
|
+
export interface NeoCheckboxProps extends Omit<CheckboxProps, 'size'> {
|
|
12
|
+
/**
|
|
13
|
+
* The size of the checkbox
|
|
14
|
+
* @default "medium"
|
|
15
|
+
*
|
|
16
|
+
* @figma Size
|
|
17
|
+
*/
|
|
18
|
+
size?: CheckboxSize;
|
|
19
|
+
/**
|
|
20
|
+
* The label text displayed next to the checkbox
|
|
21
|
+
*
|
|
22
|
+
* @figma Text (label)
|
|
23
|
+
*/
|
|
24
|
+
label?: ReactNode;
|
|
25
|
+
/**
|
|
26
|
+
* The helper text displayed below the label
|
|
27
|
+
*
|
|
28
|
+
* @figma Text (supporting text)
|
|
29
|
+
*/
|
|
30
|
+
helperText?: ReactNode;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* NeoCheckbox - Checkbox component based on MUI Checkbox
|
|
34
|
+
*
|
|
35
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-39311
|
|
36
|
+
*
|
|
37
|
+
* Figma Props Mapping:
|
|
38
|
+
* - Checked (True|False) → checked prop
|
|
39
|
+
* - Indeterminate (True|False) → indeterminate prop
|
|
40
|
+
* - Size (xs|sm|md) → size prop (xs|small|medium)
|
|
41
|
+
* - State=Default → default state
|
|
42
|
+
* - State=Hover → CSS :hover
|
|
43
|
+
* - State=Focused → CSS :focus-visible
|
|
44
|
+
* - State=Disabled → disabled prop
|
|
45
|
+
* - Text (label) → label prop
|
|
46
|
+
* - Text (supporting text) → helperText prop
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* // Basic checkbox
|
|
50
|
+
* <NeoCheckbox />
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* // With label
|
|
54
|
+
* <NeoCheckbox label="Remember me" />
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* // With label and helper text
|
|
58
|
+
* <NeoCheckbox label="Remember me" helperText="Save my login details for next time." />
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* // Small size
|
|
62
|
+
* <NeoCheckbox size="small" label="Remember me" />
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* // Extra small size
|
|
66
|
+
* <NeoCheckbox size="xs" label="Remember me" />
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* // Controlled
|
|
70
|
+
* <NeoCheckbox checked={isChecked} onChange={handleChange} label="Remember me" />
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* // Indeterminate state (for "select all" checkboxes)
|
|
74
|
+
* <NeoCheckbox indeterminate={true} label="Select all" />
|
|
75
|
+
*/
|
|
76
|
+
export declare const NeoCheckbox: {
|
|
77
|
+
({ size, label, helperText, disabled, ...props }: NeoCheckboxProps): import("react/jsx-runtime").JSX.Element;
|
|
78
|
+
displayName: string;
|
|
79
|
+
};
|
|
80
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { ButtonBaseProps } from '@mui/material/ButtonBase';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
declare module '@mui/material/ButtonBase' {
|
|
4
|
+
interface ButtonBasePropsVariantOverrides {
|
|
5
|
+
outlined: true;
|
|
6
|
+
filled: true;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
type CodeSnippetVariant = 'outlined' | 'filled';
|
|
10
|
+
type CodeSnippetSize = 'xs' | 'small' | 'large';
|
|
11
|
+
export interface NeoCodeSnippetProps extends Omit<ButtonBaseProps, 'children'> {
|
|
12
|
+
/**
|
|
13
|
+
* The visual variant of the code snippet
|
|
14
|
+
* @default "outlined"
|
|
15
|
+
*
|
|
16
|
+
* @figma Color (Light|Dark)
|
|
17
|
+
*/
|
|
18
|
+
variant?: CodeSnippetVariant;
|
|
19
|
+
/**
|
|
20
|
+
* The size of the code snippet
|
|
21
|
+
* @default "small"
|
|
22
|
+
*
|
|
23
|
+
* @figma size (xs|small|large)
|
|
24
|
+
*/
|
|
25
|
+
size?: CodeSnippetSize;
|
|
26
|
+
/**
|
|
27
|
+
* Icon to display at the start (leading position)
|
|
28
|
+
*
|
|
29
|
+
* @figma leadingIcon
|
|
30
|
+
*/
|
|
31
|
+
startIcon?: ReactNode;
|
|
32
|
+
/**
|
|
33
|
+
* Icon to display at the end (trailing position)
|
|
34
|
+
*
|
|
35
|
+
* @figma trailingIcon
|
|
36
|
+
*/
|
|
37
|
+
endIcon?: ReactNode;
|
|
38
|
+
/**
|
|
39
|
+
* Code snippet content to display
|
|
40
|
+
*/
|
|
41
|
+
children: ReactNode;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* NeoCodeSnippet - Inline code snippet component based on MUI ButtonBase
|
|
45
|
+
*
|
|
46
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30353
|
|
47
|
+
*
|
|
48
|
+
* Figma Props Mapping:
|
|
49
|
+
* - Color (Light|Dark) → variant (outlined|filled)
|
|
50
|
+
* - size (xs|small|large) → size prop
|
|
51
|
+
* - leadingIcon (boolean) → startIcon (ReactNode)
|
|
52
|
+
* - trailingIcon (boolean) → endIcon (ReactNode)
|
|
53
|
+
* - Text content → children prop
|
|
54
|
+
*/
|
|
55
|
+
export declare const NeoCodeSnippet: {
|
|
56
|
+
({ variant, size, startIcon, endIcon, children, ...props }: NeoCodeSnippetProps): import("react/jsx-runtime").JSX.Element;
|
|
57
|
+
displayName: string;
|
|
58
|
+
};
|
|
59
|
+
export {};
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface CellContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* DataGridCellContent - Layout helper for cells that need flex layout with gap spacing
|
|
7
|
+
*
|
|
8
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4212-41631
|
|
9
|
+
*
|
|
10
|
+
* Use this for any cell content that needs horizontal flex layout with proper spacing:
|
|
11
|
+
* - Multiple badges
|
|
12
|
+
* - Avatar + text
|
|
13
|
+
* - Action buttons/icons
|
|
14
|
+
* - Any other horizontal layouts
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // Badges
|
|
18
|
+
* renderCell: (params) => (
|
|
19
|
+
* <DataGridCellContent>
|
|
20
|
+
* <NeoBadge label="Active" color="success" />
|
|
21
|
+
* <NeoBadge label="New" color="info" />
|
|
22
|
+
* </DataGridCellContent>
|
|
23
|
+
* )
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* // Avatar with text
|
|
27
|
+
* renderCell: (params) => (
|
|
28
|
+
* <DataGridCellContent>
|
|
29
|
+
* <NeoAvatar src={params.row.avatarUrl} />
|
|
30
|
+
* <span>{params.row.name}</span>
|
|
31
|
+
* </DataGridCellContent>
|
|
32
|
+
* )
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* // Action buttons
|
|
36
|
+
* renderCell: () => (
|
|
37
|
+
* <DataGridCellContent>
|
|
38
|
+
* <NeoIconButton size="small"><Edit2 /></NeoIconButton>
|
|
39
|
+
* <NeoIconButton size="small"><Delete /></NeoIconButton>
|
|
40
|
+
* </DataGridCellContent>
|
|
41
|
+
* )
|
|
42
|
+
*/
|
|
43
|
+
export declare const DataGridCellContent: {
|
|
44
|
+
({ children, ...props }: CellContentProps): import("react/jsx-runtime").JSX.Element;
|
|
45
|
+
displayName: string;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Utility function to get DataGrid sx styles for consistent cell appearance
|
|
49
|
+
*
|
|
50
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4212-41631
|
|
51
|
+
*
|
|
52
|
+
* Apply this to DataGrid's `sx` prop to ensure cells are properly aligned and styled.
|
|
53
|
+
*
|
|
54
|
+
* @param size - Row size variant (affects row height)
|
|
55
|
+
* @returns SxProps for DataGrid
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* <DataGrid
|
|
59
|
+
* sx={getDataGridCellStyles('default')}
|
|
60
|
+
* rows={rows}
|
|
61
|
+
* columns={columns}
|
|
62
|
+
* />
|
|
63
|
+
*/
|
|
64
|
+
export declare const getDataGridCellStyles: (size?: "condensed" | "default" | "relaxed") => {
|
|
65
|
+
[x: string]: {
|
|
66
|
+
minHeight: string;
|
|
67
|
+
maxHeight: string;
|
|
68
|
+
display?: undefined;
|
|
69
|
+
alignItems?: undefined;
|
|
70
|
+
} | {
|
|
71
|
+
display: string;
|
|
72
|
+
alignItems: string;
|
|
73
|
+
minHeight?: undefined;
|
|
74
|
+
maxHeight?: undefined;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* StatusBadgeCell - Ready-to-use cell component for status badges
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* renderCell: (params) => (
|
|
82
|
+
* <StatusBadgeCell
|
|
83
|
+
* status={params.value}
|
|
84
|
+
* colorMap={{
|
|
85
|
+
* Active: 'success',
|
|
86
|
+
* Pending: 'warning',
|
|
87
|
+
* Inactive: 'default'
|
|
88
|
+
* }}
|
|
89
|
+
* />
|
|
90
|
+
* )
|
|
91
|
+
*/
|
|
92
|
+
export interface StatusBadgeCellProps {
|
|
93
|
+
status: string;
|
|
94
|
+
colorMap?: Record<string, 'default' | 'error' | 'info' | 'success' | 'warning'>;
|
|
95
|
+
}
|
|
96
|
+
export declare const StatusBadgeCell: {
|
|
97
|
+
({ status, colorMap }: StatusBadgeCellProps): import("react/jsx-runtime").JSX.Element;
|
|
98
|
+
displayName: string;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* UserAvatarCell - Ready-to-use cell component for user avatar + name
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* renderCell: (params) => (
|
|
105
|
+
* <UserAvatarCell
|
|
106
|
+
* name={params.row.name}
|
|
107
|
+
* avatarUrl={params.row.avatarUrl}
|
|
108
|
+
* />
|
|
109
|
+
* )
|
|
110
|
+
*/
|
|
111
|
+
export interface UserAvatarCellProps {
|
|
112
|
+
name: string;
|
|
113
|
+
avatarUrl?: string;
|
|
114
|
+
avatarSize?: number;
|
|
115
|
+
}
|
|
116
|
+
export declare const UserAvatarCell: {
|
|
117
|
+
({ name, avatarUrl, avatarSize }: UserAvatarCellProps): import("react/jsx-runtime").JSX.Element;
|
|
118
|
+
displayName: string;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* MultiBadgesCell - Ready-to-use cell component for multiple badges
|
|
122
|
+
*
|
|
123
|
+
* Uses tighter spacing (8px) between badges compared to standard DataGridCellContent (16px).
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* renderCell: (params) => (
|
|
127
|
+
* <MultiBadgesCell
|
|
128
|
+
* badges={[
|
|
129
|
+
* { label: 'Active', color: 'success' },
|
|
130
|
+
* { label: 'New', color: 'info' }
|
|
131
|
+
* ]}
|
|
132
|
+
* />
|
|
133
|
+
* )
|
|
134
|
+
*/
|
|
135
|
+
export interface MultiBadgesCellProps {
|
|
136
|
+
badges: Array<{
|
|
137
|
+
label: string;
|
|
138
|
+
color?: 'default' | 'error' | 'info' | 'success' | 'warning';
|
|
139
|
+
}>;
|
|
140
|
+
}
|
|
141
|
+
export declare const MultiBadgesCell: {
|
|
142
|
+
({ badges }: MultiBadgesCellProps): import("react/jsx-runtime").JSX.Element;
|
|
143
|
+
displayName: string;
|
|
144
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { GridFilterPanel as MuiGridFilterPanel } from '@mui/x-data-grid';
|
|
2
|
+
import type React from 'react';
|
|
3
|
+
import { NeoSelect } from './Select';
|
|
4
|
+
export type { GridFilterItem as FilterItem, GridFilterOperator as FilterOperator, } from '@mui/x-data-grid';
|
|
5
|
+
/**
|
|
6
|
+
* Icon components for DataGrid filter panel slots
|
|
7
|
+
* These must be passed to the DataGrid's slots prop
|
|
8
|
+
*/
|
|
9
|
+
export declare const NeoDataGridFilterPanelAddIcon: {
|
|
10
|
+
(): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
displayName: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const NeoDataGridFilterPanelDeleteIcon: {
|
|
14
|
+
(): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
displayName: string;
|
|
16
|
+
};
|
|
17
|
+
export declare const NeoDataGridFilterPanelRemoveAllIcon: {
|
|
18
|
+
(): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
displayName: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* NeoDataGridFilterPanel - MUI GridFilterPanel with Neo design system styling and Lucide icons
|
|
23
|
+
*
|
|
24
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4594-163847
|
|
25
|
+
*
|
|
26
|
+
* A styled version of MUI's GridFilterPanel that applies Neo design tokens.
|
|
27
|
+
* The per-row delete icon uses Lucide Trash2 internally.
|
|
28
|
+
*
|
|
29
|
+
* For footer button icons ("Add filter" and "Remove all"), you must also pass the icon components
|
|
30
|
+
* to the DataGrid's slots prop.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```tsx
|
|
34
|
+
* import {
|
|
35
|
+
* NeoDataGridFilterPanel,
|
|
36
|
+
* FilterPanelAddIcon,
|
|
37
|
+
* FilterPanelDeleteIcon,
|
|
38
|
+
* FilterPanelRemoveAllIcon
|
|
39
|
+
* } from '@moderneinc/neo-styled-components'
|
|
40
|
+
*
|
|
41
|
+
* <DataGridPro
|
|
42
|
+
* rows={rows}
|
|
43
|
+
* columns={columns}
|
|
44
|
+
* slots={{
|
|
45
|
+
* filterPanel: NeoDataGridFilterPanel,
|
|
46
|
+
* filterPanelAddIcon: FilterPanelAddIcon,
|
|
47
|
+
* filterPanelDeleteIcon: FilterPanelDeleteIcon,
|
|
48
|
+
* filterPanelRemoveAllIcon: FilterPanelRemoveAllIcon,
|
|
49
|
+
* }}
|
|
50
|
+
* />
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export { NeoSelect as NeoDataGridSelect };
|
|
54
|
+
export declare const NeoDataGridFilterPanel: {
|
|
55
|
+
(props: React.ComponentProps<typeof MuiGridFilterPanel>): import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
displayName: string;
|
|
57
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type DividerProps } from '@mui/material/Divider';
|
|
2
|
+
export interface NeoDividerProps extends DividerProps {
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* NeoDivider - Horizontal divider for separating content
|
|
6
|
+
*
|
|
7
|
+
* Generic divider component that can be used in menus, lists, cards, or any layout
|
|
8
|
+
* that needs visual separation between content sections.
|
|
9
|
+
*
|
|
10
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4159-8649
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* // In a menu
|
|
15
|
+
* <NeoMenu>
|
|
16
|
+
* <NeoMenuItem>Settings</NeoMenuItem>
|
|
17
|
+
* <NeoDivider />
|
|
18
|
+
* <NeoMenuItem>Sign out</NeoMenuItem>
|
|
19
|
+
* </NeoMenu>
|
|
20
|
+
*
|
|
21
|
+
* // In a card
|
|
22
|
+
* <Card>
|
|
23
|
+
* <CardHeader>Title</CardHeader>
|
|
24
|
+
* <NeoDivider />
|
|
25
|
+
* <CardContent>Content</CardContent>
|
|
26
|
+
* </Card>
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare const NeoDivider: {
|
|
30
|
+
(props: NeoDividerProps): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
displayName: string;
|
|
32
|
+
};
|