@moderneinc/neo-styled-components 2.5.0 → 2.6.0-next.162b98

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.
Files changed (35) hide show
  1. package/dist/ActivityHeader/ActivityHeader.d.ts +1 -0
  2. package/dist/Avatar/Avatar.d.ts +2 -1
  3. package/dist/Badge/Badge.d.ts +3 -3
  4. package/dist/Banner/Banner.d.ts +22 -17
  5. package/dist/Button/Button.d.ts +22 -10
  6. package/dist/ButtonTab/ButtonTab.d.ts +19 -0
  7. package/dist/ButtonTabGroup/ButtonTabGroup.d.ts +39 -0
  8. package/dist/CodeSnippet/CodeSnippet.d.ts +6 -6
  9. package/dist/FilterChip/FilterChip.d.ts +42 -0
  10. package/dist/Footer/Footer.d.ts +6 -1
  11. package/dist/GeneralAvatar/GeneralAvatar.d.ts +26 -0
  12. package/dist/IconWrapper/IconWrapper.d.ts +23 -0
  13. package/dist/ListItemButton/ListItemButton.d.ts +6 -5
  14. package/dist/MarketplaceCard/MarketplaceCard.d.ts +9 -8
  15. package/dist/MarketplaceLargeCard/MarketplaceLargeCard.d.ts +91 -0
  16. package/dist/MenuItem/MenuItem.d.ts +4 -2
  17. package/dist/NavigationAvatar/NavigationAvatar.d.ts +15 -0
  18. package/dist/NavigationItem/NavigationItem.d.ts +36 -0
  19. package/dist/SearchChip/SearchChip.d.ts +19 -0
  20. package/dist/StatusBanner/StatusBanner.d.ts +14 -10
  21. package/dist/Tabs/Tabs.d.ts +5 -7
  22. package/dist/Tag/Tag.d.ts +9 -8
  23. package/dist/Toast/Toast.d.ts +19 -11
  24. package/dist/Tooltip/Tooltip.d.ts +6 -6
  25. package/dist/Tree/Tree.d.ts +31 -15
  26. package/dist/index.d.ts +351 -118
  27. package/dist/index.esm.js +1339 -414
  28. package/dist/index.esm.js.map +1 -1
  29. package/dist/index.js +1366 -431
  30. package/dist/index.js.map +1 -1
  31. package/dist/utils/avatarColors.d.ts +7 -0
  32. package/dist/utils/focusRing.d.ts +10 -0
  33. package/package.json +27 -5
  34. package/dist/ButtonGroup/ButtonGroup.d.ts +0 -42
  35. package/dist/LargeCard/LargeCard.d.ts +0 -26
@@ -34,6 +34,7 @@ export interface NeoActivityHeaderProps {
34
34
  *
35
35
  * **Figma Props Mapping:**
36
36
  * - `Size` (Figma) → `size` (React): Height variant matching DataGrid sizes
37
+ * - `Type` (Figma) → `color` (React): Activity type (Commit Job → commitJob, Recipe Run → recipeRun, Visualization → visualization)
37
38
  *
38
39
  * **Design Tokens:**
39
40
  * - `semanticColors.activity.commitJob` - Blue dot for commit job events (#2F42FF)
@@ -20,8 +20,9 @@ export interface NeoAvatarProps extends Omit<AvatarProps, 'variant'> {
20
20
  *
21
21
  * Figma Props Mapping:
22
22
  * - Figma Type "Initials" → variant="initials", size="small" (20px)
23
- * - Figma Type "Small" → variant="circular", size="small" (20px with image)
23
+ * - Figma Type "Small" → variant="circular", size="small" (32px with image)
24
24
  * - Figma Type "Medium" → variant="circular", size="medium" (44px white container with image)
25
+ * - State: Focus → CSS :focus-visible ring (2px white inner + 4px blue outer)
25
26
  * - State: Hover (tooltip) → Wrap component with MUI Tooltip
26
27
  *
27
28
  * Usage:
@@ -12,9 +12,9 @@ export interface NeoBadgeProps extends Omit<ChipProps, 'variant' | 'size'> {
12
12
  * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system-w--correct-set-of-tokens?node-id=4091-17230
13
13
  *
14
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)
15
+ * - Intent (Neutral|Error|Warning|Success|Info) → color (default|error|warning|success|info)
16
+ * - LeadingIcon → icon prop (pass React element)
17
+ * - TrailingIcon → deleteIcon prop (pass React element)
18
18
  * - Label → label prop
19
19
  */
20
20
  export declare const NeoBadge: {
@@ -2,36 +2,41 @@ import { type AlertProps } from '@mui/material/Alert';
2
2
  import type { ReactNode } from 'react';
3
3
  export interface NeoBannerProps extends Omit<AlertProps, 'variant' | 'severity' | 'color'> {
4
4
  /**
5
- * The visual style variant of the banner
6
- * @default "light"
5
+ * The intent/color variant of the banner
6
+ * @default "info"
7
7
  *
8
- * @figmaPropMapping color (Dark|Light|Success|Error|Warning) → variant
8
+ * @figma Intention (Info|Success|Error|Warning|Neutral)
9
9
  */
10
- variant?: 'dark' | 'light' | 'success' | 'error' | 'warning';
10
+ variant?: 'info' | 'success' | 'error' | 'warning' | 'neutral' | 'dark' | 'light';
11
11
  /**
12
- * The message text to display
12
+ * The visual type: outlined (light bg) or filled (solid bg)
13
+ * Only applies to intent variants. Legacy variants (dark, light) ignore this prop.
14
+ * @default "outlined"
13
15
  *
14
- * @figmaPropMapping {Message} → message
16
+ * @figma Type (Outlined|Filled)
17
+ */
18
+ type?: 'outlined' | 'filled';
19
+ /**
20
+ * The message text to display
15
21
  */
16
22
  message: string;
17
23
  /**
18
24
  * Horizontal alignment of the message content
19
25
  * @default "left"
20
26
  *
21
- * @figmaPropMapping messagePosition (Left|Center) → messagePosition
27
+ * @figma Message Position (Left|Center)
22
28
  */
23
29
  messagePosition?: 'left' | 'center';
24
30
  /**
25
- * Optional link text to display after the message
26
- *
27
- * @figmaPropMapping link (boolean) → linkText (string)
31
+ * Optional link text to display after the message.
32
+ * In Figma, "Show Link" is a boolean toggle; when enabled, this string is rendered.
28
33
  */
29
34
  linkText?: string;
30
35
  /**
31
36
  * Whether to show the close button
32
37
  * @default true
33
38
  *
34
- * @figmaPropMapping closeIcon → showClose
39
+ * @figma Dismissible (boolean)
35
40
  */
36
41
  showClose?: boolean;
37
42
  /**
@@ -54,13 +59,13 @@ export interface NeoBannerProps extends Omit<AlertProps, 'variant' | 'severity'
54
59
  * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4170-2158
55
60
  *
56
61
  * 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
+ * - Intention (Info|Success|Error|Warning|Neutral) → variant (info|success|error|warning|neutral)
63
+ * - Type (Outlined|Filled) → type ('outlined'|'filled')
64
+ * - Message Position (Left|Center) → messagePosition ('left'|'center')
65
+ * - Dismissible (boolean) → showClose (boolean)
66
+ * - Show Link (boolean) linkText presence (string when shown)
62
67
  */
63
68
  export declare const NeoBanner: {
64
- ({ variant, message, messagePosition, linkText, showClose, icon, onClose, onLinkClick, ...props }: NeoBannerProps): import("react/jsx-runtime").JSX.Element;
69
+ ({ variant, type, message, messagePosition, linkText, showClose, icon, onClose, onLinkClick, ...props }: NeoBannerProps): import("react/jsx-runtime").JSX.Element;
65
70
  displayName: string;
66
71
  };
@@ -1,5 +1,5 @@
1
- import { type ButtonBaseProps } from '@mui/material/ButtonBase';
2
- import type { ReactNode } from 'react';
1
+ import ButtonBase from '@mui/material/ButtonBase';
2
+ import React, { type ElementType, type ReactNode } from 'react';
3
3
  declare module '@mui/material/ButtonBase' {
4
4
  interface ButtonBasePropsVariantOverrides {
5
5
  primary: true;
@@ -7,11 +7,12 @@ declare module '@mui/material/ButtonBase' {
7
7
  destructive: true;
8
8
  link: true;
9
9
  linkColor: true;
10
+ tertiary: true;
10
11
  }
11
12
  }
12
- type ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'link' | 'linkColor';
13
+ type ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'link' | 'linkColor' | 'tertiary';
13
14
  type ButtonSize = 'small' | 'medium';
14
- export interface NeoButtonProps extends Omit<ButtonBaseProps, 'children'> {
15
+ type NeoButtonOwnProps = {
15
16
  /**
16
17
  * The visual variant of the button
17
18
  * @default "primary"
@@ -41,14 +42,25 @@ export interface NeoButtonProps extends Omit<ButtonBaseProps, 'children'> {
41
42
  * URL to link to. When provided, the button renders as a link element.
42
43
  */
43
44
  href?: string;
44
- }
45
+ /**
46
+ * Icon placed before the button label
47
+ */
48
+ startIcon?: ReactNode;
49
+ /**
50
+ * Icon placed after the button label
51
+ */
52
+ endIcon?: ReactNode;
53
+ };
54
+ export type NeoButtonProps<C extends ElementType = typeof ButtonBase> = NeoButtonOwnProps & Omit<React.ComponentPropsWithoutRef<C>, keyof NeoButtonOwnProps> & {
55
+ component?: C;
56
+ };
45
57
  /**
46
58
  * NeoButton - Text button component based on MUI ButtonBase
47
59
  *
48
60
  * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4086-7590
49
61
  *
50
62
  * Figma Props Mapping:
51
- * - Hierarchy (Primary|Secondary|Destructive|Link|Link Color) → variant prop
63
+ * - Hierarchy (Primary|Secondary|Destructive|Link|Link Color|Tertiary) → variant prop
52
64
  * - Size (Small|Medium) → size prop
53
65
  * - State=Disabled → disabled prop
54
66
  * - State=Loading → loading prop
@@ -56,8 +68,8 @@ export interface NeoButtonProps extends Omit<ButtonBaseProps, 'children'> {
56
68
  * - State=Pressed → CSS :active
57
69
  * - State=Focused → CSS :focus-visible
58
70
  */
59
- export declare const NeoButton: {
60
- ({ variant, size, loading, children, disabled, ...props }: NeoButtonProps): import("react/jsx-runtime").JSX.Element;
61
- displayName: string;
62
- };
71
+ export declare function NeoButton<C extends ElementType = typeof ButtonBase>({ variant, size, loading, children, disabled, startIcon, endIcon, ...rest }: NeoButtonProps<C>): import("react/jsx-runtime").JSX.Element;
72
+ export declare namespace NeoButton {
73
+ var displayName: string;
74
+ }
63
75
  export {};
@@ -0,0 +1,19 @@
1
+ import { type ToggleButtonProps as MuiToggleButtonProps } from '@mui/material/ToggleButton';
2
+ export interface NeoButtonTabProps extends Omit<MuiToggleButtonProps, 'color'> {
3
+ /**
4
+ * Whether the tab is currently selected.
5
+ * When used inside NeoButtonGroup, this is computed automatically from the group's value.
6
+ * @default false
7
+ * @figma Current
8
+ */
9
+ selected?: boolean;
10
+ }
11
+ /**
12
+ * NeoButtonTab - A tab-style toggle button for use within NeoButtonGroup
13
+ *
14
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=4106-11048
15
+ */
16
+ export declare const NeoButtonTab: {
17
+ ({ children, ...props }: NeoButtonTabProps): import("react/jsx-runtime").JSX.Element;
18
+ displayName: string;
19
+ };
@@ -0,0 +1,39 @@
1
+ import { type ToggleButtonGroupProps as MuiToggleButtonGroupProps } from '@mui/material/ToggleButtonGroup';
2
+ type ButtonTabGroupSize = 'small' | 'medium';
3
+ export interface NeoButtonTabGroupProps extends Omit<MuiToggleButtonGroupProps, 'orientation' | 'color' | 'fullWidth'> {
4
+ /**
5
+ * The size of the button tab group
6
+ * @default "medium"
7
+ *
8
+ * @figma Size=Sm → small, Size=Md → medium
9
+ */
10
+ size?: ButtonTabGroupSize;
11
+ /**
12
+ * Whether only one button can be selected at a time
13
+ * @default true
14
+ */
15
+ exclusive?: boolean;
16
+ }
17
+ /**
18
+ * NeoButtonTabGroup - Button tab group container
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
+ * - Active button state → Controlled via value/onChange props
25
+ *
26
+ * Usage:
27
+ * ```tsx
28
+ * <NeoButtonTabGroup value={selected} onChange={(_, val) => setSelected(val)} size="medium">
29
+ * <NeoButtonTab value="tab1">Tab 1</NeoButtonTab>
30
+ * <NeoButtonTab value="tab2">Tab 2</NeoButtonTab>
31
+ * <NeoButtonTab value="tab3">Tab 3</NeoButtonTab>
32
+ * </NeoButtonTabGroup>
33
+ * ```
34
+ */
35
+ export declare const NeoButtonTabGroup: {
36
+ ({ size, exclusive, ...props }: NeoButtonTabGroupProps): import("react/jsx-runtime").JSX.Element;
37
+ displayName: string;
38
+ };
39
+ export {};
@@ -7,20 +7,20 @@ declare module '@mui/material/ButtonBase' {
7
7
  }
8
8
  }
9
9
  type CodeSnippetVariant = 'outlined' | 'filled';
10
- type CodeSnippetSize = 'xs' | 'small' | 'large';
10
+ type CodeSnippetSize = 'xs' | 'small' | 'large' | 'inline';
11
11
  export interface NeoCodeSnippetProps extends Omit<ButtonBaseProps, 'children'> {
12
12
  /**
13
13
  * The visual variant of the code snippet
14
14
  * @default "outlined"
15
15
  *
16
- * @figma Color (Light|Dark)
16
+ * @figma Theme (Dark|Light)
17
17
  */
18
18
  variant?: CodeSnippetVariant;
19
19
  /**
20
20
  * The size of the code snippet
21
21
  * @default "small"
22
22
  *
23
- * @figma size (xs|small|large)
23
+ * @figma Content (Single|Multi|Inline)
24
24
  */
25
25
  size?: CodeSnippetSize;
26
26
  /**
@@ -38,9 +38,9 @@ export interface NeoCodeSnippetProps extends Omit<ButtonBaseProps, 'children'> {
38
38
  * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30353
39
39
  *
40
40
  * Figma Props Mapping:
41
- * - Color (Light|Dark) → variant (outlined|filled)
42
- * - size (Single line|multiline) → auto-detected from children
43
- * - Copy button → endIcon (ReactNode)
41
+ * - Theme (Dark|Light) → variant (outlined|filled)
42
+ * - Content (Single|Multi|Inline) → size (small|large|inline)
43
+ * - Show icon (boolean) → endIcon (ReactNode, unmappable)
44
44
  * - Text content → children prop
45
45
  */
46
46
  export declare const NeoCodeSnippet: {
@@ -0,0 +1,42 @@
1
+ import { type ChipProps } from '@mui/material/Chip';
2
+ export interface NeoFilterChipProps extends Omit<ChipProps, 'variant' | 'color' | 'label'> {
3
+ /**
4
+ * The filter label text
5
+ */
6
+ label: string;
7
+ /**
8
+ * Whether the filter has active selections
9
+ * @default false
10
+ */
11
+ selected?: boolean;
12
+ /**
13
+ * Whether the filter dropdown is expanded
14
+ * @default false
15
+ */
16
+ expanded?: boolean;
17
+ /**
18
+ * Value text shown when selected (e.g. "Filter 1, Filter 2")
19
+ */
20
+ selectedLabel?: string;
21
+ /**
22
+ * Number of active filter selections (shown as badge when selected)
23
+ * @default 0
24
+ */
25
+ count?: number;
26
+ /**
27
+ * Handler for clearing the filter (shows X icon when provided and selected)
28
+ */
29
+ onClear?: (e: React.MouseEvent) => void;
30
+ }
31
+ /**
32
+ * NeoFilterChip - Filter chip for filtering data, based on MUI Chip.
33
+ *
34
+ * @example
35
+ * <NeoFilterChip label="Status" selected selectedLabel="Active, Pending" count={2} onClear={handleClear} />
36
+ *
37
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=8257-239
38
+ */
39
+ export declare const NeoFilterChip: {
40
+ ({ label, selected, expanded, selectedLabel, count, onClear, onClick, ...props }: NeoFilterChipProps): import("react/jsx-runtime").JSX.Element;
41
+ displayName: string;
42
+ };
@@ -54,6 +54,11 @@ export interface NeoFooterProps {
54
54
  * If not provided, will attempt to use DataGrid's pagination state
55
55
  */
56
56
  hasNextPage?: boolean;
57
+ /**
58
+ * Whether to show the selected row count on the left side (pagination variant)
59
+ * @default true
60
+ */
61
+ showSelected?: boolean;
57
62
  /**
58
63
  * Custom content to render in the footer
59
64
  */
@@ -103,6 +108,6 @@ export interface NeoFooterProps {
103
108
  * />
104
109
  */
105
110
  export declare const NeoFooter: {
106
- ({ variant, showShadow, loading, resultCount, onLoadMore, hasMore, paginationInfo, onPreviousPage, onNextPage, hasPreviousPage, hasNextPage, children, }: NeoFooterProps): import("react/jsx-runtime").JSX.Element;
111
+ ({ variant, showShadow, loading, resultCount, onLoadMore, hasMore, paginationInfo, onPreviousPage, onNextPage, hasPreviousPage, hasNextPage, showSelected, children, }: NeoFooterProps): import("react/jsx-runtime").JSX.Element;
107
112
  displayName: string;
108
113
  };
@@ -0,0 +1,26 @@
1
+ import { type AvatarProps } from '@mui/material/Avatar';
2
+ type AvatarSize = 'small' | 'medium';
3
+ export interface NeoGeneralAvatarProps extends Omit<AvatarProps, 'variant'> {
4
+ /**
5
+ * The size of the avatar
6
+ * @default "medium"
7
+ * @figma Size
8
+ */
9
+ size?: AvatarSize;
10
+ /**
11
+ * Color index for initials background (1-7). Use 0 or omit for image mode.
12
+ * @default 0
13
+ * @figma Color Index
14
+ */
15
+ colorIndex?: number;
16
+ }
17
+ /**
18
+ * NeoGeneralAvatar - Avatar with image or colored initials display
19
+ *
20
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=9600-185
21
+ */
22
+ export declare const NeoGeneralAvatar: {
23
+ ({ size, colorIndex, children, ...props }: NeoGeneralAvatarProps): import("react/jsx-runtime").JSX.Element;
24
+ displayName: string;
25
+ };
26
+ export {};
@@ -0,0 +1,23 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ export type IconWrapperSize = 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | 64 | 72 | 80 | 96 | 128 | 160 | 192;
3
+ export interface NeoIconWrapperProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {
4
+ /**
5
+ * The size of the icon wrapper in pixels
6
+ * @figma Size (8px|12px|...|192px)
7
+ * @default 20
8
+ */
9
+ size?: IconWrapperSize;
10
+ /**
11
+ * Icon element to render inside the wrapper
12
+ */
13
+ children?: ReactNode;
14
+ }
15
+ /**
16
+ * NeoIconWrapper - Flex-centered container that sizes icons
17
+ *
18
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4061-9955
19
+ */
20
+ export declare const NeoIconWrapper: {
21
+ ({ size, children, ...props }: NeoIconWrapperProps): import("react/jsx-runtime").JSX.Element;
22
+ displayName: string;
23
+ };
@@ -20,7 +20,7 @@ export interface NeoListItemButtonProps extends ListItemButtonProps {
20
20
  * NeoListItemButton - Selectable list item with icon and text
21
21
  *
22
22
  * A selectable list item component that displays an optional icon with primary
23
- * and secondary text. Supports active (selected), deselected, and disabled states.
23
+ * and secondary text. Supports active (selected), deselected, focus, and disabled states.
24
24
  *
25
25
  * Uses MUI's ListItemButton as base for proper accessibility and interaction.
26
26
  * Compose with ListItemIcon and ListItemText for proper structure.
@@ -41,13 +41,14 @@ export interface NeoListItemButtonProps extends ListItemButtonProps {
41
41
  * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4925-3764
42
42
  *
43
43
  * Figma Props Mapping:
44
- * - property1="Active" → selected={true}
45
- * - property1="Deselected" → selected={false}
46
- * - property1="Disabled" → disabled={true}
44
+ * - state="active" → selected={true}
45
+ * - state="deselected" → selected={false}
46
+ * - state="focus" → focus-visible CSS state
47
+ * - state="disabled" → disabled={true}
47
48
  * - showIcon → Conditional rendering of ListItemIcon child
48
49
  *
49
50
  * Design Tokens Used:
50
- * - semanticColors.border.tabActive (#2f42ff) - Active border
51
+ * - semanticColors.buttons.primary.default (#2f42ff) - Active border
51
52
  * - semanticColors.border.primary (#d1d5db) - Default/disabled border
52
53
  * - semanticColors.icons.default (#1f2937) - Active icon color
53
54
  * - semanticColors.icons.disabled (#d1d5db) - Deselected/disabled icon color
@@ -23,13 +23,13 @@ export interface NeoMarketplaceCardProps extends Omit<CardProps, 'children' | 't
23
23
  /**
24
24
  * Whether the card is in selected/active state
25
25
  * @default false
26
- * @figma Property 1 (Active)
26
+ * @figma State (Active)
27
27
  */
28
28
  selected?: boolean;
29
29
  /**
30
30
  * Whether the card is disabled
31
31
  * @default false
32
- * @figma Property 1 (Disabled)
32
+ * @figma State (Disabled)
33
33
  */
34
34
  disabled?: boolean;
35
35
  /**
@@ -59,16 +59,17 @@ export interface NeoMarketplaceCardProps extends Omit<CardProps, 'children' | 't
59
59
  * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4286-1635&t=Bo58EpFmg6ILJtmv-11
60
60
  *
61
61
  * Figma Props Mapping:
62
- * - Property 1="Active" → selected={true}
63
- * - Property 1="Disabled" → disabled={true}
64
- * - Property 1="Focused" → CSS :focus-visible state (not a prop)
65
- * - Property 1="Default" → Base state (no props)
62
+ * - State="Active" → selected={true}
63
+ * - State="Disabled" → disabled={true}
64
+ * - State="Focused" → CSS :focus-visible state (not a prop)
65
+ * - State="Hover" → CSS :hover state (not a prop)
66
+ * - State="Default" → Base state (no props)
66
67
  *
67
68
  * Design Tokens Used:
68
69
  * - semanticColors.surfaces.card (#FFFFFF) - Default card background
69
70
  * - semanticColors.status.info.light (#f2f3ff) - Active/focused card background
70
- * - semanticColors.border.card (#d1d5db) - Default border
71
- * - semanticColors.border.tabActive (#2f42ff) - Active/focused border
71
+ * - semanticColors.border.primary (#d1d5db) - Default border
72
+ * - semanticColors.buttons.primary.default (#2f42ff) - Active/focused border
72
73
  * - shadows.focusWhite1 - Inner white focus ring (2px spread)
73
74
  * - shadows.focusBlue2 - Outer blue focus ring (4px spread)
74
75
  * - colors.grey[800] (#1F2937) - Text color
@@ -0,0 +1,91 @@
1
+ import { type CardProps } from '@mui/material/Card';
2
+ import type { ReactNode } from 'react';
3
+ type LargeCardState = 'default' | 'active' | 'disabled' | 'focused';
4
+ type LargeCardTheme = 'light' | 'dark';
5
+ export interface NeoMarketplaceLargeCardProps extends Omit<CardProps, 'children' | 'title'> {
6
+ /**
7
+ * The visual state of the card
8
+ * @default "default"
9
+ * @figma State
10
+ */
11
+ state?: LargeCardState;
12
+ /**
13
+ * The theme variant of the card
14
+ * @default "light"
15
+ * @figma Theme
16
+ */
17
+ cardTheme?: LargeCardTheme;
18
+ /**
19
+ * Whether to show the icon
20
+ * @default true
21
+ * @figma Show Icon
22
+ */
23
+ showIcon?: boolean;
24
+ /**
25
+ * Whether to show the gel brand icon
26
+ * @default true
27
+ * @figma Show Gel
28
+ */
29
+ showGel?: boolean;
30
+ /**
31
+ * Whether to show the button area
32
+ * @default true
33
+ * @figma Show Buttons
34
+ */
35
+ showButtons?: boolean;
36
+ /**
37
+ * Icon element to display in the header row (rendered at 20x20)
38
+ */
39
+ icon?: ReactNode;
40
+ /**
41
+ * Gel/brand icon to display in the header row (rendered at 20x20)
42
+ */
43
+ gel?: ReactNode;
44
+ /**
45
+ * Title text displayed inline in the header row with icon and gel
46
+ */
47
+ title?: ReactNode;
48
+ /**
49
+ * Description text displayed below the header row
50
+ */
51
+ children?: ReactNode;
52
+ /**
53
+ * Button/action elements for the footer row
54
+ */
55
+ actions?: ReactNode;
56
+ /**
57
+ * Click handler for the card
58
+ */
59
+ onClick?: () => void;
60
+ }
61
+ /**
62
+ * NeoMarketplaceLargeCard - A large marketplace card with state and theme variants
63
+ *
64
+ * A 340x162px card with optional icon, gel brand icon, title, description, and action buttons.
65
+ * Icon, gel, and title display inline in a header row.
66
+ * Supports 4 states (default, active, disabled, focused) and 2 themes (light, dark).
67
+ *
68
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=5925-11
69
+ *
70
+ * Figma Props Mapping:
71
+ * - State → state (Default/Active/Disabled/Focused)
72
+ * - Theme → cardTheme (Dark/Light)
73
+ * - Show Icon → showIcon
74
+ * - Show Gel → showGel
75
+ * - Show Buttons → showButtons
76
+ *
77
+ * Design Tokens Used:
78
+ * - semanticColors.surfaces.card (#ffffff) - Light theme background
79
+ * - colors.grey[800] (#1f2937) - Dark theme background
80
+ * - semanticColors.border.primary (#d1d5db) - Default border (50% opacity on dark)
81
+ * - semanticColors.buttons.primary.default (#2f42ff) - Active/focused border (light theme)
82
+ * - colors.digitalGreen[300] (#88fe9b) - Active/focused border (dark theme)
83
+ * - borderRadius.xS (4px) - Corner radius
84
+ * - shadows.focusWhite1 + shadows.focusBlue2 - Focus ring
85
+ * - shadows.card - Active state shadow
86
+ */
87
+ export declare const NeoMarketplaceLargeCard: {
88
+ ({ state, cardTheme, showIcon, showGel, showButtons, icon, gel, title, children, actions, onClick, ...props }: NeoMarketplaceLargeCardProps): import("react/jsx-runtime").JSX.Element;
89
+ displayName: string;
90
+ };
91
+ export {};
@@ -30,9 +30,11 @@ export interface NeoMenuItemProps extends MenuItemProps {
30
30
  * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4159-8649
31
31
  *
32
32
  * Figma Props Mapping:
33
+ * - Figma "Dropdown - Menu" component uses Type (Avatar|Button|Icon) and Open (True|False)
34
+ * to control the menu trigger. NeoMenuItem is the individual item inside the menu.
33
35
  * - Text label → children prop (mapped via figma.children)
34
- * - State=Selected → selected prop (mapped via figma.enum)
35
- * - State=Disabled → disabled prop (mapped via figma.enum)
36
+ * - selected → selected prop (React-controlled)
37
+ * - disabled → disabled prop (React-controlled)
36
38
  * - Hover state → CSS :hover (not mapped)
37
39
  * - Icon slot → icon prop (not mappable - ReactNode)
38
40
  * - Secondary text → secondaryText prop (not mappable - ReactNode/string)
@@ -0,0 +1,15 @@
1
+ import { type NeoGeneralAvatarProps } from '../GeneralAvatar/GeneralAvatar';
2
+ export interface NeoNavigationAvatarProps extends Omit<NeoGeneralAvatarProps, 'size'> {
3
+ }
4
+ /**
5
+ * NeoNavigationAvatar - Compact avatar for navigation contexts
6
+ *
7
+ * Wraps NeoGeneralAvatar (size="small") in a 44px container with 6px padding,
8
+ * providing a larger interactive area for navigation UI.
9
+ *
10
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=11325-102
11
+ */
12
+ export declare const NeoNavigationAvatar: {
13
+ ({ colorIndex, children, ...props }: NeoNavigationAvatarProps): import("react/jsx-runtime").JSX.Element;
14
+ displayName: string;
15
+ };
@@ -0,0 +1,36 @@
1
+ import { type ButtonBaseProps } from '@mui/material/ButtonBase';
2
+ import type { ReactNode } from 'react';
3
+ export interface NeoNavigationItemProps extends Omit<ButtonBaseProps, 'children'> {
4
+ /**
5
+ * Icon element to display
6
+ */
7
+ icon?: ReactNode;
8
+ /**
9
+ * Text label below the icon
10
+ */
11
+ label?: string;
12
+ /**
13
+ * Whether the item is selected/active
14
+ * @figma State (Selected)
15
+ * @default false
16
+ */
17
+ selected?: boolean;
18
+ /**
19
+ * Optional tag badge content (e.g., count)
20
+ * @figma Tag
21
+ */
22
+ tag?: string;
23
+ /**
24
+ * Additional content
25
+ */
26
+ children?: ReactNode;
27
+ }
28
+ /**
29
+ * NeoNavigationItem - Vertical navigation item with icon, label, and optional tag
30
+ *
31
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=8455-6120
32
+ */
33
+ export declare const NeoNavigationItem: {
34
+ ({ icon, label, selected, tag, children, ...props }: NeoNavigationItemProps): import("react/jsx-runtime").JSX.Element;
35
+ displayName: string;
36
+ };
@@ -0,0 +1,19 @@
1
+ import { type InputBaseProps } from '@mui/material/InputBase';
2
+ export interface NeoSearchChipProps extends Omit<InputBaseProps, 'startAdornment' | 'endAdornment' | 'type'> {
3
+ /**
4
+ * Handler for clearing the search value (shows X icon when provided and value is non-empty)
5
+ */
6
+ onClear?: () => void;
7
+ }
8
+ /**
9
+ * NeoSearchChip - Pill-shaped search input for inline search functionality.
10
+ *
11
+ * @example
12
+ * <NeoSearchChip placeholder="Search titles" value={query} onChange={handleChange} onClear={handleClear} />
13
+ *
14
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=8542-921
15
+ */
16
+ export declare const NeoSearchChip: {
17
+ ({ onClear, value, ...props }: NeoSearchChipProps): import("react/jsx-runtime").JSX.Element;
18
+ displayName: string;
19
+ };