@moderneinc/neo-styled-components 0.0.0-development → 1.6.1-next.13e7c8
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/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/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/Progressbar.d.ts +41 -0
- package/dist/QuickFilter.d.ts +51 -0
- package/dist/Radio.d.ts +78 -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 +1260 -4
- package/dist/index.esm.js +2744 -2
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +2770 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +28 -0
- package/package.json +16 -6
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,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
|
+
};
|
package/dist/Dot.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type BadgeProps } from '@mui/material/Badge';
|
|
2
|
+
type DotSize = 'small' | 'medium' | 'large';
|
|
3
|
+
type DotVariant = 'solid' | 'outline';
|
|
4
|
+
type DotColor = 'success' | 'error' | 'warning' | 'info' | 'neutral';
|
|
5
|
+
export interface NeoDotProps extends Omit<BadgeProps, 'variant' | 'color' | 'badgeContent' | 'children'> {
|
|
6
|
+
/**
|
|
7
|
+
* The size of the dot
|
|
8
|
+
* @default "medium"
|
|
9
|
+
*/
|
|
10
|
+
size?: DotSize;
|
|
11
|
+
/**
|
|
12
|
+
* The variant of the dot
|
|
13
|
+
* @default "solid"
|
|
14
|
+
*/
|
|
15
|
+
variant?: DotVariant;
|
|
16
|
+
/**
|
|
17
|
+
* The color/status of the dot
|
|
18
|
+
* @default "neutral"
|
|
19
|
+
*/
|
|
20
|
+
color?: DotColor;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* NeoDot - Status indicator dot component based on MUI Badge
|
|
24
|
+
*
|
|
25
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4163-3577
|
|
26
|
+
*
|
|
27
|
+
* Figma Props Mapping:
|
|
28
|
+
* - size (sm|md|lg) → size prop (small|medium|large)
|
|
29
|
+
* - outline (False|True) → variant prop (solid|outline)
|
|
30
|
+
* - Color is configurable via color prop (success|error|warning|info|neutral)
|
|
31
|
+
*/
|
|
32
|
+
export declare const NeoDot: {
|
|
33
|
+
({ size, variant, color, ...props }: NeoDotProps): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
displayName: string;
|
|
35
|
+
};
|
|
36
|
+
export {};
|
package/dist/Footer.d.ts
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface NeoFooterProps {
|
|
3
|
+
/**
|
|
4
|
+
* Footer variant
|
|
5
|
+
* - "loading": Shows result count with loading indicator and "Load more" button
|
|
6
|
+
* - "pagination": Shows pagination controls with page range and navigation buttons
|
|
7
|
+
* @default "pagination"
|
|
8
|
+
*/
|
|
9
|
+
variant?: 'loading' | 'pagination';
|
|
10
|
+
/**
|
|
11
|
+
* Whether to show the loading indicator (only for "loading" variant)
|
|
12
|
+
* @default false
|
|
13
|
+
*/
|
|
14
|
+
loading?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Total number of results (for "loading" variant)
|
|
17
|
+
*/
|
|
18
|
+
resultCount?: number;
|
|
19
|
+
/**
|
|
20
|
+
* Callback when "Load more" is clicked (for "loading" variant)
|
|
21
|
+
*/
|
|
22
|
+
onLoadMore?: () => void;
|
|
23
|
+
/**
|
|
24
|
+
* Whether there are more results to load (for "loading" variant)
|
|
25
|
+
* @default true
|
|
26
|
+
*/
|
|
27
|
+
hasMore?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Custom pagination info text (for "pagination" variant)
|
|
30
|
+
* If not provided, will attempt to use DataGrid's pagination state
|
|
31
|
+
* @example "1-80 of 120"
|
|
32
|
+
*/
|
|
33
|
+
paginationInfo?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Callback when previous page button is clicked (for "pagination" variant)
|
|
36
|
+
*/
|
|
37
|
+
onPreviousPage?: () => void;
|
|
38
|
+
/**
|
|
39
|
+
* Callback when next page button is clicked (for "pagination" variant)
|
|
40
|
+
*/
|
|
41
|
+
onNextPage?: () => void;
|
|
42
|
+
/**
|
|
43
|
+
* Whether the previous page button is disabled (for "pagination" variant)
|
|
44
|
+
* If not provided, will attempt to use DataGrid's pagination state
|
|
45
|
+
*/
|
|
46
|
+
hasPreviousPage?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Whether the next page button is disabled (for "pagination" variant)
|
|
49
|
+
* If not provided, will attempt to use DataGrid's pagination state
|
|
50
|
+
*/
|
|
51
|
+
hasNextPage?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Custom content to render in the footer
|
|
54
|
+
*/
|
|
55
|
+
children?: ReactNode;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* NeoFooter - Footer component for data grids
|
|
59
|
+
*
|
|
60
|
+
* Provides two variants:
|
|
61
|
+
* - "loading": Shows result count with loading indicator and "Load more" button for infinite scroll
|
|
62
|
+
* - "pagination": Shows pagination controls with page range and navigation buttons
|
|
63
|
+
*
|
|
64
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4261-3133
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* // Loading variant with load more
|
|
68
|
+
* <NeoFooter
|
|
69
|
+
* variant="loading"
|
|
70
|
+
* loading={isLoading}
|
|
71
|
+
* resultCount={40}
|
|
72
|
+
* hasMore={true}
|
|
73
|
+
* onLoadMore={() => loadMore()}
|
|
74
|
+
* />
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* // Pagination variant
|
|
78
|
+
* <NeoFooter
|
|
79
|
+
* variant="pagination"
|
|
80
|
+
* paginationInfo="1-80 of 120"
|
|
81
|
+
* hasPreviousPage={false}
|
|
82
|
+
* hasNextPage={true}
|
|
83
|
+
* onPreviousPage={() => goToPrevious()}
|
|
84
|
+
* onNextPage={() => goToNext()}
|
|
85
|
+
* />
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* // Used with DataGrid (automatically reads pagination state)
|
|
89
|
+
* <DataGrid
|
|
90
|
+
* rows={rows}
|
|
91
|
+
* columns={columns}
|
|
92
|
+
* slots={{ footer: NeoFooter }}
|
|
93
|
+
* slotProps={{
|
|
94
|
+
* footer: {
|
|
95
|
+
* variant: 'pagination',
|
|
96
|
+
* },
|
|
97
|
+
* }}
|
|
98
|
+
* />
|
|
99
|
+
*/
|
|
100
|
+
export declare const NeoFooter: {
|
|
101
|
+
({ variant, loading, resultCount, onLoadMore, hasMore, paginationInfo, onPreviousPage, onNextPage, hasPreviousPage, hasNextPage, children, }: NeoFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
102
|
+
displayName: string;
|
|
103
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type IconButtonProps } from '@mui/material/IconButton';
|
|
2
|
+
type IconButtonSize = 'small' | 'medium';
|
|
3
|
+
export interface NeoIconButtonProps extends Omit<IconButtonProps, 'color' | 'size'> {
|
|
4
|
+
/**
|
|
5
|
+
* The size of the icon button
|
|
6
|
+
* @default "medium"
|
|
7
|
+
*
|
|
8
|
+
* @figma Size
|
|
9
|
+
*/
|
|
10
|
+
size?: IconButtonSize;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* NeoIconButton - Icon-only button component based on MUI IconButton
|
|
14
|
+
*
|
|
15
|
+
* Simple, neutral icon button with transparent background and icon color states.
|
|
16
|
+
*
|
|
17
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4086-7590
|
|
18
|
+
*
|
|
19
|
+
* Figma Props Mapping:
|
|
20
|
+
* - Hierarchy=Icon → Single default style (no variant prop)
|
|
21
|
+
* - Size (Small|Medium) → size prop
|
|
22
|
+
* - State=Disabled → disabled prop
|
|
23
|
+
* - State=Hover → CSS :hover
|
|
24
|
+
* - State=Pressed → CSS :active
|
|
25
|
+
* - State=Focused → CSS :focus-visible
|
|
26
|
+
*/
|
|
27
|
+
export declare const NeoIconButton: {
|
|
28
|
+
({ size, ...props }: NeoIconButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
displayName: string;
|
|
30
|
+
};
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { type InputBaseProps } from '@mui/material/InputBase';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
type InputFieldSize = 'small' | 'medium';
|
|
4
|
+
export interface NeoInputFieldProps extends Omit<InputBaseProps, 'size'> {
|
|
5
|
+
/**
|
|
6
|
+
* The size of the input field
|
|
7
|
+
* @default "medium"
|
|
8
|
+
*
|
|
9
|
+
* @figma Size
|
|
10
|
+
*/
|
|
11
|
+
size?: InputFieldSize;
|
|
12
|
+
/**
|
|
13
|
+
* Show error/destructive state with red styling
|
|
14
|
+
* @default false
|
|
15
|
+
*
|
|
16
|
+
* @figma Destructive
|
|
17
|
+
*/
|
|
18
|
+
destructive?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Label text for the input
|
|
21
|
+
*
|
|
22
|
+
* @figma Label
|
|
23
|
+
*/
|
|
24
|
+
label?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Show required indicator (asterisk)
|
|
27
|
+
* @default false
|
|
28
|
+
*
|
|
29
|
+
* @figma Required indicator
|
|
30
|
+
*/
|
|
31
|
+
required?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Info icon to display next to the label
|
|
34
|
+
*
|
|
35
|
+
* @figma Info icon
|
|
36
|
+
*/
|
|
37
|
+
infoIcon?: ReactNode;
|
|
38
|
+
/**
|
|
39
|
+
* Helper text displayed below the input (normal state)
|
|
40
|
+
*
|
|
41
|
+
* @figma Helper text
|
|
42
|
+
*/
|
|
43
|
+
helperText?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Error message displayed below the input (destructive state)
|
|
46
|
+
* Takes precedence over helperText when destructive is true
|
|
47
|
+
*
|
|
48
|
+
* @figma Error message
|
|
49
|
+
*/
|
|
50
|
+
errorMessage?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Icon to display at the start of the input
|
|
53
|
+
*
|
|
54
|
+
* @figma Left icon
|
|
55
|
+
*/
|
|
56
|
+
startIcon?: ReactNode;
|
|
57
|
+
/**
|
|
58
|
+
* Icon to display at the end of the input
|
|
59
|
+
* In destructive state, an error icon is automatically shown
|
|
60
|
+
*
|
|
61
|
+
* @figma Right icon
|
|
62
|
+
*/
|
|
63
|
+
endIcon?: ReactNode;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* NeoInputField - Form input field component using MUI FormControl composition
|
|
67
|
+
*
|
|
68
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4091-23373
|
|
69
|
+
*
|
|
70
|
+
* Figma Props Mapping:
|
|
71
|
+
* - Size (small|medium) → size prop
|
|
72
|
+
* - Destructive (false|true) → destructive prop
|
|
73
|
+
* - State=Placeholder → empty value with placeholder text
|
|
74
|
+
* - State=Hover → CSS :hover
|
|
75
|
+
* - State=Filled → value prop with text
|
|
76
|
+
* - State=Focused → CSS :focus
|
|
77
|
+
* - State=Disabled → disabled prop
|
|
78
|
+
* - Label → label prop
|
|
79
|
+
* - Required indicator (*) → required prop
|
|
80
|
+
* - Info icon → infoIcon prop
|
|
81
|
+
* - Helper text → helperText prop
|
|
82
|
+
* - Error message → errorMessage prop (shown when destructive=true)
|
|
83
|
+
* - Left icon → startIcon prop
|
|
84
|
+
* - Right icon → endIcon prop (auto error icon when destructive=true)
|
|
85
|
+
*/
|
|
86
|
+
export declare const NeoInputField: {
|
|
87
|
+
({ size, destructive, label, required, infoIcon, helperText, errorMessage, startIcon, endIcon, disabled, id, ...props }: NeoInputFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
88
|
+
displayName: string;
|
|
89
|
+
};
|
|
90
|
+
export {};
|