@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.
@@ -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
+ };
@@ -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;
@@ -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 {};
@@ -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 {};