@moderneinc/neo-styled-components 2.6.0 → 2.7.0-next.4bcf59

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.
@@ -16,7 +16,7 @@ export interface NeoAvatarProps extends Omit<AvatarProps, 'variant'> {
16
16
  /**
17
17
  * NeoAvatar - User avatar component based on MUI Avatar
18
18
  *
19
- * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4214-58134
19
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=9600-185
20
20
  *
21
21
  * Figma Props Mapping:
22
22
  * - Figma Type "Initials" → variant="initials", size="small" (20px)
@@ -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 {};
@@ -1,6 +1,6 @@
1
1
  import { GridFilterPanel as MuiGridFilterPanel } from '@mui/x-data-grid';
2
2
  import type React from 'react';
3
- import { NeoSelect } from '../Select/Select';
3
+ import { NeoDropdown } from '../Dropdown/Dropdown';
4
4
  export type { GridFilterItem as FilterItem, GridFilterOperator as FilterOperator, } from '@mui/x-data-grid';
5
5
  /**
6
6
  * Icon components for DataGrid filter panel slots
@@ -50,7 +50,7 @@ export declare const NeoDataGridFilterPanelRemoveAllIcon: {
50
50
  * />
51
51
  * ```
52
52
  */
53
- export { NeoSelect as NeoDataGridSelect };
53
+ export { NeoDropdown as NeoDataGridSelect };
54
54
  export declare const NeoDataGridFilterPanel: {
55
55
  (props: React.ComponentProps<typeof MuiGridFilterPanel>): import("react/jsx-runtime").JSX.Element;
56
56
  displayName: string;
@@ -7,16 +7,16 @@ export interface NeoDividerProps extends DividerProps {
7
7
  * Generic divider component that can be used in menus, lists, cards, or any layout
8
8
  * that needs visual separation between content sections.
9
9
  *
10
- * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4159-8649
10
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4633-39807
11
11
  *
12
12
  * @example
13
13
  * ```tsx
14
14
  * // In a menu
15
- * <NeoMenu>
16
- * <NeoMenuItem>Settings</NeoMenuItem>
15
+ * <NeoDropdownMenu>
16
+ * <NeoDropdownMenuItem>Settings</NeoDropdownMenuItem>
17
17
  * <NeoDivider />
18
- * <NeoMenuItem>Sign out</NeoMenuItem>
19
- * </NeoMenu>
18
+ * <NeoDropdownMenuItem>Sign out</NeoDropdownMenuItem>
19
+ * </NeoDropdownMenu>
20
20
  *
21
21
  * // In a card
22
22
  * <Card>
@@ -0,0 +1,24 @@
1
+ import { type SelectProps as MuiSelectProps } from '@mui/material/Select';
2
+ import { NeoDropdownMenuItem } from '../DropdownMenuItem/DropdownMenuItem';
3
+ export type NeoDropdownProps = MuiSelectProps;
4
+ /**
5
+ * NeoDropdown - Dropdown select component with Neo design system styling
6
+ *
7
+ * A styled version of MUI's Select that uses Neo design tokens, Lucide ChevronDown icon,
8
+ * and NeoDropdownMenu/NeoDropdownMenuItem for the dropdown list.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * import { NeoDropdown, NeoDropdownOption } from '@moderneinc/neo-styled-components'
13
+ *
14
+ * <NeoDropdown value={value} onChange={handleChange}>
15
+ * <NeoDropdownOption value="option1">Option 1</NeoDropdownOption>
16
+ * <NeoDropdownOption value="option2">Option 2</NeoDropdownOption>
17
+ * </NeoDropdown>
18
+ * ```
19
+ */
20
+ export declare const NeoDropdown: {
21
+ (props: NeoDropdownProps): import("react/jsx-runtime").JSX.Element;
22
+ displayName: string;
23
+ };
24
+ export { NeoDropdownMenuItem as NeoDropdownOption };
@@ -0,0 +1,32 @@
1
+ import { type MenuProps } from '@mui/material/Menu';
2
+ export interface NeoDropdownMenuProps extends MenuProps {
3
+ /**
4
+ * Menu content (typically NeoDropdownMenuItem components)
5
+ */
6
+ children?: React.ReactNode;
7
+ }
8
+ /**
9
+ * NeoDropdownMenu - Dropdown menu component based on MUI Menu
10
+ *
11
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=11141-4980
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);
16
+ * const open = Boolean(anchorEl);
17
+ *
18
+ * <Button onClick={(e) => setAnchorEl(e.currentTarget)}>Open Menu</Button>
19
+ * <NeoDropdownMenu
20
+ * open={open}
21
+ * anchorEl={anchorEl}
22
+ * onClose={() => setAnchorEl(null)}
23
+ * >
24
+ * <NeoDropdownMenuItem icon={<Icon />} shortcut="⌘+P">View profile</NeoDropdownMenuItem>
25
+ * <NeoDropdownMenuItem>Settings</NeoDropdownMenuItem>
26
+ * </NeoDropdownMenu>
27
+ * ```
28
+ */
29
+ export declare const NeoDropdownMenu: {
30
+ ({ children, ...props }: NeoDropdownMenuProps): import("react/jsx-runtime").JSX.Element;
31
+ displayName: string;
32
+ };
@@ -0,0 +1,50 @@
1
+ import { type MenuItemProps } from '@mui/material/MenuItem';
2
+ import type { ReactNode } from 'react';
3
+ export interface NeoDropdownMenuItemProps extends MenuItemProps {
4
+ /**
5
+ * Optional icon to display on the left side
6
+ * Note: Cannot be directly mapped from Figma (ReactNode)
7
+ */
8
+ icon?: ReactNode;
9
+ /**
10
+ * Optional keyboard shortcut to display on the right side
11
+ * @example "⌘+P" or "Ctrl+K"
12
+ * Note: Cannot be directly mapped from Figma (ReactNode/string)
13
+ */
14
+ shortcut?: string;
15
+ /**
16
+ * Optional secondary text to display next to the primary label
17
+ * @example "@username" or supporting text
18
+ * Note: Cannot be directly mapped from Figma (ReactNode/string)
19
+ */
20
+ secondaryText?: string;
21
+ /**
22
+ * Menu item content (text label)
23
+ * @figma children mapped from Figma layer content
24
+ */
25
+ children?: ReactNode;
26
+ }
27
+ /**
28
+ * NeoDropdownMenuItem - Dropdown menu item component based on MUI MenuItem
29
+ *
30
+ * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4159-8584
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * // With icon and shortcut
35
+ * <NeoDropdownMenuItem icon={<UserIcon />} shortcut="⌘+P">
36
+ * View profile
37
+ * </NeoDropdownMenuItem>
38
+ *
39
+ * // With secondary text (user list pattern from Figma node 4305:41844)
40
+ * <NeoDropdownMenuItem secondaryText="@phoenix">Phoenix Baker</NeoDropdownMenuItem>
41
+ * <NeoDropdownMenuItem secondaryText="@olivia">Olivia Rhye</NeoDropdownMenuItem>
42
+ *
43
+ * // Disabled state
44
+ * <NeoDropdownMenuItem disabled>Disabled item</NeoDropdownMenuItem>
45
+ * ```
46
+ */
47
+ export declare const NeoDropdownMenuItem: {
48
+ ({ icon, shortcut, secondaryText, children, ...props }: NeoDropdownMenuItemProps): import("react/jsx-runtime").JSX.Element;
49
+ displayName: string;
50
+ };
@@ -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 {};
@@ -48,7 +48,7 @@ export interface NeoListItemButtonProps extends ListItemButtonProps {
48
48
  * - showIcon → Conditional rendering of ListItemIcon child
49
49
  *
50
50
  * Design Tokens Used:
51
- * - semanticColors.border.tabActive (#2f42ff) - Active border
51
+ * - semanticColors.buttons.primary.default (#2f42ff) - Active border
52
52
  * - semanticColors.border.primary (#d1d5db) - Default/disabled border
53
53
  * - semanticColors.icons.default (#1f2937) - Active icon color
54
54
  * - semanticColors.icons.disabled (#d1d5db) - Deselected/disabled icon color
@@ -68,8 +68,8 @@ export interface NeoMarketplaceCardProps extends Omit<CardProps, 'children' | 't
68
68
  * Design Tokens Used:
69
69
  * - semanticColors.surfaces.card (#FFFFFF) - Default card background
70
70
  * - semanticColors.status.info.light (#f2f3ff) - Active/focused card background
71
- * - semanticColors.border.card (#d1d5db) - Default border
72
- * - semanticColors.border.tabActive (#2f42ff) - Active/focused border
71
+ * - semanticColors.border.primary (#d1d5db) - Default border
72
+ * - semanticColors.buttons.primary.default (#2f42ff) - Active/focused border
73
73
  * - shadows.focusWhite1 - Inner white focus ring (2px spread)
74
74
  * - shadows.focusBlue2 - Outer blue focus ring (4px spread)
75
75
  * - colors.grey[800] (#1F2937) - Text color
@@ -77,8 +77,8 @@ export interface NeoMarketplaceLargeCardProps extends Omit<CardProps, 'children'
77
77
  * Design Tokens Used:
78
78
  * - semanticColors.surfaces.card (#ffffff) - Light theme background
79
79
  * - colors.grey[800] (#1f2937) - Dark theme background
80
- * - semanticColors.border.card (#d1d5db) - Default border (50% opacity on dark)
81
- * - semanticColors.border.tabActive (#2f42ff) - Active/focused border (light theme)
80
+ * - semanticColors.border.primary (#d1d5db) - Default border (50% opacity on dark)
81
+ * - semanticColors.buttons.primary.default (#2f42ff) - Active/focused border (light theme)
82
82
  * - colors.digitalGreen[300] (#88fe9b) - Active/focused border (dark theme)
83
83
  * - borderRadius.xS (4px) - Corner radius
84
84
  * - shadows.focusWhite1 + shadows.focusBlue2 - Focus ring
@@ -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
+ };
@@ -38,10 +38,10 @@ export interface NeoStatusBannerProps extends Omit<AlertProps, 'severity' | 'var
38
38
  * - Mode (Light|Dark) → variant ('outlined'|'filled')
39
39
  *
40
40
  * Design Tokens Used:
41
- * - status.success.light, status.success.medium
42
- * - status.error.light, status.error.medium
43
- * - status.neutral.light, status.neutral.medium
44
- * - status.info.light, status.info.medium
41
+ * - status.success.light, status.success.default
42
+ * - status.error.light, status.error.default
43
+ * - status.neutral.light, status.neutral.default
44
+ * - status.info.light, status.info.default
45
45
  * - typography.tooltip, typography.bodySecondary
46
46
  * - grey[800]
47
47
  * - fontSize.default, fontSize.sm