@moderneinc/neo-styled-components 5.0.0-next.5291ef → 5.0.0-next.6d9b3b
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/Alert/Alert.d.ts +7 -1
- package/dist/Breadcrumbs/Breadcrumbs.d.ts +0 -10
- package/dist/Dot/Dot.d.ts +11 -4
- package/dist/GeneralAvatar/GeneralAvatar.d.ts +1 -7
- package/dist/NavigationAvatar/NavigationAvatar.d.ts +1 -1
- package/dist/NeoAvatarCell/NeoAvatarCell.d.ts +1 -3
- package/dist/index.d.ts +24 -28
- package/dist/index.esm.js +67 -70
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +66 -69
- package/dist/index.js.map +1 -1
- package/dist/utils/colorHelpers.d.ts +6 -0
- package/package.json +1 -1
- package/dist/utils/avatarColors.d.ts +0 -7
package/dist/Alert/Alert.d.ts
CHANGED
|
@@ -39,6 +39,12 @@ export interface NeoAlertProps extends Omit<AlertProps, 'severity' | 'variant' |
|
|
|
39
39
|
* Optional action element (typically a button) displayed on the right
|
|
40
40
|
*/
|
|
41
41
|
action?: ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* Optional content rendered below the title inside the alert container.
|
|
44
|
+
* Use for rich content like stack traces or code blocks. When present,
|
|
45
|
+
* the alert expands to auto height and top-aligns its icon and action.
|
|
46
|
+
*/
|
|
47
|
+
children?: ReactNode;
|
|
42
48
|
}
|
|
43
49
|
/**
|
|
44
50
|
* NeoAlert - Alert component for displaying contextual status messages
|
|
@@ -52,7 +58,7 @@ export interface NeoAlertProps extends Omit<AlertProps, 'severity' | 'variant' |
|
|
|
52
58
|
* - Show Button → action prop presence
|
|
53
59
|
*/
|
|
54
60
|
export declare const NeoAlert: {
|
|
55
|
-
({ intent, type, size, title, description, icon, action, ...props }: NeoAlertProps): import("react/jsx-runtime").JSX.Element;
|
|
61
|
+
({ intent, type, size, title, description, icon, action, children, ...props }: NeoAlertProps): import("react/jsx-runtime").JSX.Element;
|
|
56
62
|
displayName: string;
|
|
57
63
|
};
|
|
58
64
|
export {};
|
|
@@ -3,16 +3,6 @@ import type { ElementType, ReactNode } from 'react';
|
|
|
3
3
|
/**
|
|
4
4
|
* NeoBreadcrumbs - Navigation breadcrumb component
|
|
5
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
6
|
* @see https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4563-122872
|
|
17
7
|
*/
|
|
18
8
|
export interface NeoBreadcrumbsProps {
|
package/dist/Dot/Dot.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
2
|
type DotSize = 'small' | 'medium' | 'large';
|
|
3
3
|
type DotVariant = 'solid' | 'outline';
|
|
4
4
|
type DotColor = 'success' | 'error' | 'warning' | 'info' | 'neutral';
|
|
5
|
-
export interface NeoDotProps extends Omit<
|
|
5
|
+
export interface NeoDotProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
|
|
6
6
|
/**
|
|
7
7
|
* The size of the dot
|
|
8
8
|
* @default "medium"
|
|
@@ -18,9 +18,16 @@ export interface NeoDotProps extends Omit<BadgeProps, 'variant' | 'color' | 'bad
|
|
|
18
18
|
* @default "neutral"
|
|
19
19
|
*/
|
|
20
20
|
color?: DotColor;
|
|
21
|
+
/**
|
|
22
|
+
* Optional icon rendered centered inside the dot. Use to indicate intent within
|
|
23
|
+
* the dot itself (e.g., a minus icon on a disconnected error dot). SVG children
|
|
24
|
+
* using `currentColor` inherit a white stroke/fill for contrast against the
|
|
25
|
+
* colored background, and are scaled to 70% of the dot size.
|
|
26
|
+
*/
|
|
27
|
+
children?: ReactNode;
|
|
21
28
|
}
|
|
22
29
|
/**
|
|
23
|
-
* NeoDot - Status indicator dot
|
|
30
|
+
* NeoDot - Status indicator dot.
|
|
24
31
|
*
|
|
25
32
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4163-3577
|
|
26
33
|
*
|
|
@@ -30,7 +37,7 @@ export interface NeoDotProps extends Omit<BadgeProps, 'variant' | 'color' | 'bad
|
|
|
30
37
|
* - Color is configurable via color prop (success|error|warning|info|neutral)
|
|
31
38
|
*/
|
|
32
39
|
export declare const NeoDot: {
|
|
33
|
-
({ size, variant, color, ...props }: NeoDotProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
({ size, variant, color, children, ...props }: NeoDotProps): import("react/jsx-runtime").JSX.Element;
|
|
34
41
|
displayName: string;
|
|
35
42
|
};
|
|
36
43
|
export {};
|
|
@@ -7,12 +7,6 @@ export interface NeoGeneralAvatarProps extends Omit<AvatarProps, 'variant'> {
|
|
|
7
7
|
* @figma Size
|
|
8
8
|
*/
|
|
9
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
10
|
}
|
|
17
11
|
/**
|
|
18
12
|
* NeoGeneralAvatar - Avatar with image or colored initials display
|
|
@@ -20,7 +14,7 @@ export interface NeoGeneralAvatarProps extends Omit<AvatarProps, 'variant'> {
|
|
|
20
14
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=9600-185
|
|
21
15
|
*/
|
|
22
16
|
export declare const NeoGeneralAvatar: {
|
|
23
|
-
({ size,
|
|
17
|
+
({ size, alt, children, ...props }: NeoGeneralAvatarProps): import("react/jsx-runtime").JSX.Element;
|
|
24
18
|
displayName: string;
|
|
25
19
|
};
|
|
26
20
|
export {};
|
|
@@ -10,6 +10,6 @@ export interface NeoNavigationAvatarProps extends Omit<NeoGeneralAvatarProps, 's
|
|
|
10
10
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=11325-102
|
|
11
11
|
*/
|
|
12
12
|
export declare const NeoNavigationAvatar: {
|
|
13
|
-
({
|
|
13
|
+
({ children, ...props }: NeoNavigationAvatarProps): import("react/jsx-runtime").JSX.Element;
|
|
14
14
|
displayName: string;
|
|
15
15
|
};
|
|
@@ -5,14 +5,12 @@ type NeoAvatarCellEmpty = NeoAvatarCellBase & {
|
|
|
5
5
|
empty: true;
|
|
6
6
|
name?: never;
|
|
7
7
|
src?: never;
|
|
8
|
-
colorIndex?: never;
|
|
9
8
|
label?: never;
|
|
10
9
|
};
|
|
11
10
|
type NeoAvatarCellContent = NeoAvatarCellBase & {
|
|
12
11
|
empty?: false;
|
|
13
12
|
name?: string;
|
|
14
13
|
src?: string;
|
|
15
|
-
colorIndex?: number;
|
|
16
14
|
label?: string;
|
|
17
15
|
};
|
|
18
16
|
export type NeoAvatarCellProps = NeoAvatarCellEmpty | NeoAvatarCellContent;
|
|
@@ -21,7 +19,7 @@ export type NeoAvatarCellProps = NeoAvatarCellEmpty | NeoAvatarCellContent;
|
|
|
21
19
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=13425-1725
|
|
22
20
|
*/
|
|
23
21
|
export declare const NeoAvatarCell: {
|
|
24
|
-
({ name, src,
|
|
22
|
+
({ name, src, label, disabled, empty, }: NeoAvatarCellProps): import("react/jsx-runtime").JSX.Element;
|
|
25
23
|
displayName: string;
|
|
26
24
|
};
|
|
27
25
|
export {};
|
package/dist/index.d.ts
CHANGED
|
@@ -16,7 +16,6 @@ import * as _mui_material_styles from '@mui/material/styles';
|
|
|
16
16
|
import { SxProps, Theme, Breakpoint } from '@mui/material/styles';
|
|
17
17
|
import { DividerProps } from '@mui/material/Divider';
|
|
18
18
|
import { PaperProps } from '@mui/material/Paper';
|
|
19
|
-
import { BadgeProps } from '@mui/material/Badge';
|
|
20
19
|
import { AvatarProps } from '@mui/material/Avatar';
|
|
21
20
|
import { InputBaseProps } from '@mui/material/InputBase';
|
|
22
21
|
import { MenuProps } from '@mui/material/Menu';
|
|
@@ -26,7 +25,7 @@ import { BoxProps } from '@mui/material/Box';
|
|
|
26
25
|
import { LinearProgressProps } from '@mui/material/LinearProgress';
|
|
27
26
|
import { RadioProps } from '@mui/material/Radio';
|
|
28
27
|
import * as _mui_system from '@mui/system';
|
|
29
|
-
import { SelectProps } from '@mui/material/Select';
|
|
28
|
+
import { SelectProps, SelectChangeEvent } from '@mui/material/Select';
|
|
30
29
|
import { SkeletonProps } from '@mui/material/Skeleton';
|
|
31
30
|
import { TableProps } from '@mui/material/Table';
|
|
32
31
|
import * as _mui_material_OverridableComponent from '@mui/material/OverridableComponent';
|
|
@@ -390,16 +389,6 @@ declare const NeoBanner: {
|
|
|
390
389
|
/**
|
|
391
390
|
* NeoBreadcrumbs - Navigation breadcrumb component
|
|
392
391
|
*
|
|
393
|
-
* Figma Mapping:
|
|
394
|
-
* - Base component uses MuiBreadcrumbs with custom styled Links
|
|
395
|
-
* - Uses chevron separator (ChevronRight from lucide-react)
|
|
396
|
-
* - Typography: 14px Medium (500 weight)
|
|
397
|
-
* - Colors:
|
|
398
|
-
* - Non-current: semanticColors.typography.bodySecondary (#6b7280)
|
|
399
|
-
* - Current: semanticColors.buttons.primary.default (#2f42ff)
|
|
400
|
-
* - Hover: semanticColors.icons.hover (#1f2937) or buttons.tertiary.hover (#1e2ec2)
|
|
401
|
-
* - Focus: 2px outline with buttons.primary.focus
|
|
402
|
-
*
|
|
403
392
|
* @see https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4563-122872
|
|
404
393
|
*/
|
|
405
394
|
interface NeoBreadcrumbsProps {
|
|
@@ -1083,14 +1072,12 @@ type NeoAvatarCellEmpty = NeoAvatarCellBase & {
|
|
|
1083
1072
|
empty: true;
|
|
1084
1073
|
name?: never;
|
|
1085
1074
|
src?: never;
|
|
1086
|
-
colorIndex?: never;
|
|
1087
1075
|
label?: never;
|
|
1088
1076
|
};
|
|
1089
1077
|
type NeoAvatarCellContent = NeoAvatarCellBase & {
|
|
1090
1078
|
empty?: false;
|
|
1091
1079
|
name?: string;
|
|
1092
1080
|
src?: string;
|
|
1093
|
-
colorIndex?: number;
|
|
1094
1081
|
label?: string;
|
|
1095
1082
|
};
|
|
1096
1083
|
type NeoAvatarCellProps = NeoAvatarCellEmpty | NeoAvatarCellContent;
|
|
@@ -1099,7 +1086,7 @@ type NeoAvatarCellProps = NeoAvatarCellEmpty | NeoAvatarCellContent;
|
|
|
1099
1086
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=13425-1725
|
|
1100
1087
|
*/
|
|
1101
1088
|
declare const NeoAvatarCell: {
|
|
1102
|
-
({ name, src,
|
|
1089
|
+
({ name, src, label, disabled, empty, }: NeoAvatarCellProps): react_jsx_runtime.JSX.Element;
|
|
1103
1090
|
displayName: string;
|
|
1104
1091
|
};
|
|
1105
1092
|
|
|
@@ -1424,7 +1411,7 @@ declare const NeoDownloadToast: {
|
|
|
1424
1411
|
type DotSize = 'small' | 'medium' | 'large';
|
|
1425
1412
|
type DotVariant = 'solid' | 'outline';
|
|
1426
1413
|
type DotColor = 'success' | 'error' | 'warning' | 'info' | 'neutral';
|
|
1427
|
-
interface NeoDotProps extends Omit<
|
|
1414
|
+
interface NeoDotProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
|
|
1428
1415
|
/**
|
|
1429
1416
|
* The size of the dot
|
|
1430
1417
|
* @default "medium"
|
|
@@ -1440,9 +1427,16 @@ interface NeoDotProps extends Omit<BadgeProps, 'variant' | 'color' | 'badgeConte
|
|
|
1440
1427
|
* @default "neutral"
|
|
1441
1428
|
*/
|
|
1442
1429
|
color?: DotColor;
|
|
1430
|
+
/**
|
|
1431
|
+
* Optional icon rendered centered inside the dot. Use to indicate intent within
|
|
1432
|
+
* the dot itself (e.g., a minus icon on a disconnected error dot). SVG children
|
|
1433
|
+
* using `currentColor` inherit a white stroke/fill for contrast against the
|
|
1434
|
+
* colored background, and are scaled to 70% of the dot size.
|
|
1435
|
+
*/
|
|
1436
|
+
children?: ReactNode;
|
|
1443
1437
|
}
|
|
1444
1438
|
/**
|
|
1445
|
-
* NeoDot - Status indicator dot
|
|
1439
|
+
* NeoDot - Status indicator dot.
|
|
1446
1440
|
*
|
|
1447
1441
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4163-3577
|
|
1448
1442
|
*
|
|
@@ -1452,7 +1446,7 @@ interface NeoDotProps extends Omit<BadgeProps, 'variant' | 'color' | 'badgeConte
|
|
|
1452
1446
|
* - Color is configurable via color prop (success|error|warning|info|neutral)
|
|
1453
1447
|
*/
|
|
1454
1448
|
declare const NeoDot: {
|
|
1455
|
-
({ size, variant, color, ...props }: NeoDotProps): react_jsx_runtime.JSX.Element;
|
|
1449
|
+
({ size, variant, color, children, ...props }: NeoDotProps): react_jsx_runtime.JSX.Element;
|
|
1456
1450
|
displayName: string;
|
|
1457
1451
|
};
|
|
1458
1452
|
|
|
@@ -1506,12 +1500,6 @@ interface NeoGeneralAvatarProps extends Omit<AvatarProps, 'variant'> {
|
|
|
1506
1500
|
* @figma Size
|
|
1507
1501
|
*/
|
|
1508
1502
|
size?: AvatarSize;
|
|
1509
|
-
/**
|
|
1510
|
-
* Color index for initials background (1-7). Use 0 or omit for image mode.
|
|
1511
|
-
* @default 0
|
|
1512
|
-
* @figma Color Index
|
|
1513
|
-
*/
|
|
1514
|
-
colorIndex?: number;
|
|
1515
1503
|
}
|
|
1516
1504
|
/**
|
|
1517
1505
|
* NeoGeneralAvatar - Avatar with image or colored initials display
|
|
@@ -1519,7 +1507,7 @@ interface NeoGeneralAvatarProps extends Omit<AvatarProps, 'variant'> {
|
|
|
1519
1507
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=9600-185
|
|
1520
1508
|
*/
|
|
1521
1509
|
declare const NeoGeneralAvatar: {
|
|
1522
|
-
({ size,
|
|
1510
|
+
({ size, alt, children, ...props }: NeoGeneralAvatarProps): react_jsx_runtime.JSX.Element;
|
|
1523
1511
|
displayName: string;
|
|
1524
1512
|
};
|
|
1525
1513
|
|
|
@@ -1852,7 +1840,7 @@ interface NeoNavigationAvatarProps extends Omit<NeoGeneralAvatarProps, 'size'> {
|
|
|
1852
1840
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=11325-102
|
|
1853
1841
|
*/
|
|
1854
1842
|
declare const NeoNavigationAvatar: {
|
|
1855
|
-
({
|
|
1843
|
+
({ children, ...props }: NeoNavigationAvatarProps): react_jsx_runtime.JSX.Element;
|
|
1856
1844
|
displayName: string;
|
|
1857
1845
|
};
|
|
1858
1846
|
|
|
@@ -2370,6 +2358,8 @@ declare const NeoSelectField: {
|
|
|
2370
2358
|
displayName: string;
|
|
2371
2359
|
};
|
|
2372
2360
|
|
|
2361
|
+
type NeoSelectFieldChangeEvent<T = unknown> = SelectChangeEvent<T>;
|
|
2362
|
+
|
|
2373
2363
|
/**
|
|
2374
2364
|
* NeoSideNav
|
|
2375
2365
|
*
|
|
@@ -2452,6 +2442,12 @@ interface NeoAlertProps extends Omit<AlertProps, 'severity' | 'variant' | 'color
|
|
|
2452
2442
|
* Optional action element (typically a button) displayed on the right
|
|
2453
2443
|
*/
|
|
2454
2444
|
action?: ReactNode;
|
|
2445
|
+
/**
|
|
2446
|
+
* Optional content rendered below the title inside the alert container.
|
|
2447
|
+
* Use for rich content like stack traces or code blocks. When present,
|
|
2448
|
+
* the alert expands to auto height and top-aligns its icon and action.
|
|
2449
|
+
*/
|
|
2450
|
+
children?: ReactNode;
|
|
2455
2451
|
}
|
|
2456
2452
|
/**
|
|
2457
2453
|
* NeoAlert - Alert component for displaying contextual status messages
|
|
@@ -2465,7 +2461,7 @@ interface NeoAlertProps extends Omit<AlertProps, 'severity' | 'variant' | 'color
|
|
|
2465
2461
|
* - Show Button → action prop presence
|
|
2466
2462
|
*/
|
|
2467
2463
|
declare const NeoAlert: {
|
|
2468
|
-
({ intent, type, size, title, description, icon, action, ...props }: NeoAlertProps): react_jsx_runtime.JSX.Element;
|
|
2464
|
+
({ intent, type, size, title, description, icon, action, children, ...props }: NeoAlertProps): react_jsx_runtime.JSX.Element;
|
|
2469
2465
|
displayName: string;
|
|
2470
2466
|
};
|
|
2471
2467
|
|
|
@@ -3360,4 +3356,4 @@ declare module '@mui/x-data-grid-pro' {
|
|
|
3360
3356
|
declare const version: string
|
|
3361
3357
|
|
|
3362
3358
|
export { ActivityScene, CIRCLE_RADIUS, NeoActionsCell, NeoActivityHeader, NeoActivityIndicatorCell, NeoAlert, NeoAvatarCell, NeoBadge, NeoBanner, NeoBreadcrumbLink, NeoBreadcrumbs, NeoButton, NeoButtonTab, NeoButtonTabGroup, NeoCard, NeoCheckbox, NeoCheckboxWithText, NeoCodeSnippet, NeoDataGrid, NeoDataGridCellContent, NeoDataGridColumnsButton, NeoDataGridColumnsPanel, NeoDataGridFilterPanel, NeoDataGridFilterPanelAddIcon, NeoDataGridFilterPanelDeleteIcon, NeoDataGridFilterPanelRemoveAllIcon, NeoDataGridFiltersButton, NeoDataGridHeaderLabel, NeoSelect as NeoDataGridSelect, NeoDatePicker, NeoDatePickerListItem, NeoDatePickerMenu, NeoDivider, NeoDot, NeoDownloadToast, NeoSelect as NeoDropdown, NeoMenu as NeoDropdownMenu, NeoMenuItem as NeoDropdownMenuItem, NeoMenuItem as NeoDropdownOption, NeoFilterChip, NeoFooter, NeoGeneralAvatar, NeoIconButton, NeoIconCell, NeoInfiniteScrollGrid, NeoInputField, NeoListItem, NeoListItemButton, NeoLoadingSpinner, NeoLogoCell, NeoMenu, NeoMenuItem, NeoModal, NeoModalContent, NeoModalFooter, NeoModalHeader, NeoMultiBadgesCell, NeoNavigationAvatar, NeoNavigationItem, NeoPageContent, NeoPaginatedGrid, NeoProgressCell, NeoProgressbar, NeoQuickFilter, NeoRadio, NeoRadioButtonWithText, NeoSearchChip, NeoSelect, NeoSelectField, NeoMenuItem as NeoSelectOption, NeoSideNav, NeoSkeleton, NeoStatusBadgeCell, NeoStatusCell, NeoTab, NeoTabPanel, NeoTable, NeoTabs, NeoTag, NeoToast, NeoToastButton, NeoToggle, NeoToggleButton, NeoToggleButtonGroup, NeoToggleButtonWithText, NeoToolbar, NeoTooltip, NeoTopNav, NeoTourModal, NeoTreeItem, NeoTreeView, StyledToggleButton as NeoTypologyButton, NeoTypologyControl, NeoUserAvatarCell, SortedAscendingIcon, SortedDescendingIcon, UnsortedIcon, focusRingStyles, getDataGridHeaderStyles, getDataGridRowStyles, version };
|
|
3363
|
-
export type { ActivityColor, ActivityEvent, ActivityHeaderSize, BreadcrumbItem, DataGridSize, NeoActionsCellProps, NeoActivityHeaderProps, NeoActivityIndicatorCellProps, NeoAlertProps, NeoAvatarCellProps, NeoBadgeProps, NeoBannerProps, NeoBreadcrumbLinkProps, NeoBreadcrumbsProps, NeoButtonProps, NeoButtonTabGroupProps, NeoButtonTabProps, NeoCardLargeProps, NeoCardProps, NeoCardSize, NeoCardSmallProps, NeoCheckboxProps, NeoCheckboxWithTextProps, NeoCodeSnippetProps, NeoDataGridCellContentProps, NeoDataGridHeaderLabelProps, NeoDataGridProps, NeoDatePickerProps, NeoDividerProps, NeoDotProps, NeoDownloadToastProps, NeoMenuItemProps as NeoDropdownMenuItemProps, NeoMenuProps as NeoDropdownMenuProps, NeoSelectProps as NeoDropdownProps, NeoFilterChipProps, NeoFooterProps, NeoGeneralAvatarProps, NeoIconButtonProps, NeoIconCellProps, NeoInfiniteScrollGridProps, NeoInputFieldProps, NeoListItemButtonProps, NeoListItemProps, NeoLoadingSpinnerProps, NeoLogoCellProps, NeoMenuItemProps, NeoMenuProps, NeoModalContentProps, NeoModalFooterProps, NeoModalHeaderProps, NeoModalProps, NeoMultiBadgesCellProps, NeoNavigationAvatarProps, NeoNavigationItemProps, NeoPageContentProps, NeoPaginatedGridProps, NeoProgressCellProps, NeoProgressbarProps, NeoQuickFilterProps, NeoRadioProps, NeoSearchChipProps, NeoSelectFieldOption, NeoSelectFieldProps, NeoSelectProps, NeoSkeletonProps, NeoStatusBadgeCellProps, NeoStatusCellProps, NeoStatusCellVariant, NeoTabPanelProps, NeoTabProps, NeoTableColumn, NeoTableProps, NeoTagProps, NeoToastProps, NeoToggleButtonGroupProps, NeoToggleButtonProps, NeoToggleProps, NeoToolbarProps, NeoTooltipProps, NeoTreeItemData, NeoTreeItemProps, NeoTreeViewProps, NeoTypologyControlProps, NeoUserAvatarCellProps };
|
|
3359
|
+
export type { ActivityColor, ActivityEvent, ActivityHeaderSize, BreadcrumbItem, DataGridSize, NeoActionsCellProps, NeoActivityHeaderProps, NeoActivityIndicatorCellProps, NeoAlertProps, NeoAvatarCellProps, NeoBadgeProps, NeoBannerProps, NeoBreadcrumbLinkProps, NeoBreadcrumbsProps, NeoButtonProps, NeoButtonTabGroupProps, NeoButtonTabProps, NeoCardLargeProps, NeoCardProps, NeoCardSize, NeoCardSmallProps, NeoCheckboxProps, NeoCheckboxWithTextProps, NeoCodeSnippetProps, NeoDataGridCellContentProps, NeoDataGridHeaderLabelProps, NeoDataGridProps, NeoDatePickerProps, NeoDividerProps, NeoDotProps, NeoDownloadToastProps, NeoMenuItemProps as NeoDropdownMenuItemProps, NeoMenuProps as NeoDropdownMenuProps, NeoSelectProps as NeoDropdownProps, NeoFilterChipProps, NeoFooterProps, NeoGeneralAvatarProps, NeoIconButtonProps, NeoIconCellProps, NeoInfiniteScrollGridProps, NeoInputFieldProps, NeoListItemButtonProps, NeoListItemProps, NeoLoadingSpinnerProps, NeoLogoCellProps, NeoMenuItemProps, NeoMenuProps, NeoModalContentProps, NeoModalFooterProps, NeoModalHeaderProps, NeoModalProps, NeoMultiBadgesCellProps, NeoNavigationAvatarProps, NeoNavigationItemProps, NeoPageContentProps, NeoPaginatedGridProps, NeoProgressCellProps, NeoProgressbarProps, NeoQuickFilterProps, NeoRadioProps, NeoSearchChipProps, NeoSelectFieldChangeEvent, NeoSelectFieldOption, NeoSelectFieldProps, NeoSelectProps, NeoSkeletonProps, NeoStatusBadgeCellProps, NeoStatusCellProps, NeoStatusCellVariant, NeoTabPanelProps, NeoTabProps, NeoTableColumn, NeoTableProps, NeoTagProps, NeoToastProps, NeoToggleButtonGroupProps, NeoToggleButtonProps, NeoToggleProps, NeoToolbarProps, NeoTooltipProps, NeoTreeItemData, NeoTreeItemProps, NeoTreeViewProps, NeoTypologyControlProps, NeoUserAvatarCellProps };
|
package/dist/index.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { semanticColors, spacing, typography, borderRadius,
|
|
2
|
+
import { semanticColors, spacing, typography, borderRadius, shadows, colors } from '@moderneinc/neo-design';
|
|
3
3
|
import Box from '@mui/material/Box';
|
|
4
4
|
import { styled, alpha } from '@mui/material/styles';
|
|
5
5
|
import Chip, { chipClasses } from '@mui/material/Chip';
|
|
@@ -36,7 +36,6 @@ import { pickersCalendarHeaderClasses } from '@mui/x-date-pickers/PickersCalenda
|
|
|
36
36
|
import { PickersShortcuts } from '@mui/x-date-pickers/PickersShortcuts';
|
|
37
37
|
import { DateRangePicker } from '@mui/x-date-pickers-pro/DateRangePicker';
|
|
38
38
|
import { dateRangePickerDayClasses } from '@mui/x-date-pickers-pro/DateRangePickerDay';
|
|
39
|
-
import Badge, { badgeClasses } from '@mui/material/Badge';
|
|
40
39
|
import LinearProgress, { linearProgressClasses } from '@mui/material/LinearProgress';
|
|
41
40
|
import Paper, { paperClasses } from '@mui/material/Paper';
|
|
42
41
|
import Stack from '@mui/material/Stack';
|
|
@@ -144,18 +143,21 @@ const NeoBadge = ({ size = 'medium', variant = 'filled', ...props }) => {
|
|
|
144
143
|
};
|
|
145
144
|
NeoBadge.displayName = 'NeoBadge';
|
|
146
145
|
|
|
146
|
+
const djb2Hash = (str) => {
|
|
147
|
+
let hash = 5381;
|
|
148
|
+
for (let i = 0; i < str.length; i++) {
|
|
149
|
+
hash = (hash * 33) ^ str.charCodeAt(i);
|
|
150
|
+
}
|
|
151
|
+
return hash >>> 0;
|
|
152
|
+
};
|
|
147
153
|
/**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
154
|
+
* Deterministically derives an HSL background color from a string seed.
|
|
155
|
+
* Produces pastel colors matching the aesthetic of the status.avatar.initials
|
|
156
|
+
* semantic tokens (fixed 80% saturation, 90% lightness; only hue varies).
|
|
150
157
|
*/
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
3: { bg: colors.gold[100] },
|
|
155
|
-
4: { bg: colors.red[100] },
|
|
156
|
-
5: { bg: colors.violet[100] },
|
|
157
|
-
6: { bg: colors.tealGreen[100] },
|
|
158
|
-
7: { bg: colors.orange[100] },
|
|
158
|
+
const avatarColorFromSeed = (seed) => {
|
|
159
|
+
const hue = seed ? djb2Hash(seed) % 360 : 235;
|
|
160
|
+
return `hsl(${hue}, 80%, 90%)`;
|
|
159
161
|
};
|
|
160
162
|
|
|
161
163
|
/**
|
|
@@ -170,14 +172,13 @@ const focusRingStyles = {
|
|
|
170
172
|
};
|
|
171
173
|
|
|
172
174
|
const sizeConfig$1 = {
|
|
173
|
-
small: { width: spacing.spacing_4, height: spacing.spacing_4, fontSize: typography.fontSize.
|
|
175
|
+
small: { width: spacing.spacing_4, height: spacing.spacing_4, fontSize: typography.fontSize.sm },
|
|
174
176
|
medium: { width: spacing.spacing_5, height: spacing.spacing_5, fontSize: typography.fontSize.sm },
|
|
175
177
|
};
|
|
176
178
|
const StyledAvatar = styled(MuiAvatar, {
|
|
177
|
-
shouldForwardProp: prop => prop !== 'avatarSize' && prop !== '
|
|
178
|
-
})(({ theme, avatarSize,
|
|
179
|
+
shouldForwardProp: prop => prop !== 'avatarSize' && prop !== 'backgroundColor',
|
|
180
|
+
})(({ theme, avatarSize, backgroundColor }) => {
|
|
179
181
|
const size = sizeConfig$1[avatarSize];
|
|
180
|
-
const palette = avatarColorPalette[colorIndex];
|
|
181
182
|
return {
|
|
182
183
|
boxSizing: 'border-box',
|
|
183
184
|
width: size.width,
|
|
@@ -187,7 +188,7 @@ const StyledAvatar = styled(MuiAvatar, {
|
|
|
187
188
|
fontWeight: typography.fontWeight.regular,
|
|
188
189
|
lineHeight: 1,
|
|
189
190
|
color: semanticColors.typography.body,
|
|
190
|
-
backgroundColor
|
|
191
|
+
backgroundColor,
|
|
191
192
|
border: `1px solid ${semanticColors.border.primary}`,
|
|
192
193
|
'&:focus-visible': {
|
|
193
194
|
...focusRingStyles,
|
|
@@ -200,8 +201,9 @@ const StyledAvatar = styled(MuiAvatar, {
|
|
|
200
201
|
*
|
|
201
202
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=9600-185
|
|
202
203
|
*/
|
|
203
|
-
const NeoGeneralAvatar = ({ size = 'medium',
|
|
204
|
-
|
|
204
|
+
const NeoGeneralAvatar = ({ size = 'medium', alt, children, ...props }) => {
|
|
205
|
+
const backgroundColor = avatarColorFromSeed(alt);
|
|
206
|
+
return (jsx(StyledAvatar, { avatarSize: size, backgroundColor: backgroundColor, alt: alt, ...props, children: children }));
|
|
205
207
|
};
|
|
206
208
|
NeoGeneralAvatar.displayName = 'NeoGeneralAvatar';
|
|
207
209
|
|
|
@@ -912,8 +914,8 @@ const intentColors$2 = {
|
|
|
912
914
|
};
|
|
913
915
|
// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Alert variant type without global augmentation
|
|
914
916
|
const StyledAlert$2 = styled(Alert, {
|
|
915
|
-
shouldForwardProp: prop => prop !== 'intent' && prop !== 'alertType' && prop !== 'alertSize',
|
|
916
|
-
})(({ theme, intent = 'success', alertType = 'outlined', alertSize = 'default' }) => {
|
|
917
|
+
shouldForwardProp: prop => prop !== 'intent' && prop !== 'alertType' && prop !== 'alertSize' && prop !== 'hasChildren',
|
|
918
|
+
})(({ theme, intent = 'success', alertType = 'outlined', alertSize = 'default', hasChildren = false, }) => {
|
|
917
919
|
const palette = intentColors$2[intent];
|
|
918
920
|
const isFilled = alertType === 'filled';
|
|
919
921
|
const isCompact = alertSize === 'compact';
|
|
@@ -922,15 +924,19 @@ const StyledAlert$2 = styled(Alert, {
|
|
|
922
924
|
? semanticColors.typography.tooltip
|
|
923
925
|
: semanticColors.typography.body;
|
|
924
926
|
return {
|
|
925
|
-
...(isCompact
|
|
927
|
+
...(isCompact
|
|
928
|
+
? { minHeight: spacing.spacing_5 }
|
|
929
|
+
: hasChildren
|
|
930
|
+
? { minHeight: spacing.spacing_8, height: 'auto' }
|
|
931
|
+
: { height: spacing.spacing_8 }),
|
|
926
932
|
width: '100%',
|
|
927
933
|
borderRadius: borderRadius.xS,
|
|
928
|
-
alignItems: 'center',
|
|
934
|
+
alignItems: hasChildren ? 'flex-start' : 'center',
|
|
929
935
|
fontFamily: typography.fontFamily.body,
|
|
930
936
|
fontSize: theme.typography.pxToRem(typography.fontSize.default),
|
|
931
937
|
fontWeight: typography.fontWeight.semiBold,
|
|
932
938
|
lineHeight: 1.5,
|
|
933
|
-
padding: theme.spacing(0, 2),
|
|
939
|
+
padding: hasChildren ? theme.spacing(1.5, 2) : theme.spacing(0, 2),
|
|
934
940
|
backgroundColor: isFilled ? palette.dark : palette.light,
|
|
935
941
|
border: isFilled ? 'none' : `1px solid ${palette.transparent}`,
|
|
936
942
|
color: isFilled ? semanticColors.typography.tooltip : semanticColors.typography.body,
|
|
@@ -947,7 +953,7 @@ const StyledAlert$2 = styled(Alert, {
|
|
|
947
953
|
flex: 1,
|
|
948
954
|
display: 'flex',
|
|
949
955
|
flexDirection: 'column',
|
|
950
|
-
justifyContent: 'center',
|
|
956
|
+
justifyContent: hasChildren ? 'flex-start' : 'center',
|
|
951
957
|
'& span:last-child': {
|
|
952
958
|
fontSize: theme.typography.pxToRem(typography.fontSize.sm),
|
|
953
959
|
fontWeight: typography.fontWeight.medium,
|
|
@@ -985,9 +991,9 @@ const iconMap = {
|
|
|
985
991
|
* - Show supporting text → description prop presence
|
|
986
992
|
* - Show Button → action prop presence
|
|
987
993
|
*/
|
|
988
|
-
const NeoAlert = ({ intent = 'success', type = 'outlined', size = 'default', title, description, icon, action, ...props }) => {
|
|
994
|
+
const NeoAlert = ({ intent = 'success', type = 'outlined', size = 'default', title, description, icon, action, children, ...props }) => {
|
|
989
995
|
const defaultIcon = iconMap[intent];
|
|
990
|
-
return (jsxs(StyledAlert$2, { ...props, intent: intent, alertType: type, alertSize: size, icon: icon ?? defaultIcon, action: action, children: [jsx("span", { children: title }), description && jsx("span", { children: description })] }));
|
|
996
|
+
return (jsxs(StyledAlert$2, { ...props, intent: intent, alertType: type, alertSize: size, hasChildren: Boolean(children), icon: icon ?? defaultIcon, action: action, children: [jsx("span", { children: title }), description && jsx("span", { children: description }), children] }));
|
|
991
997
|
};
|
|
992
998
|
NeoAlert.displayName = 'NeoAlert';
|
|
993
999
|
|
|
@@ -1099,12 +1105,12 @@ const StyledBreadcrumbLink = styled(Link, {
|
|
|
1099
1105
|
fontWeight: typography.fontWeight.medium,
|
|
1100
1106
|
lineHeight: 1,
|
|
1101
1107
|
textDecoration: 'none',
|
|
1102
|
-
color: current ? semanticColors.
|
|
1108
|
+
color: current ? semanticColors.typography.bodySecondary : semanticColors.typography.link.primary,
|
|
1103
1109
|
cursor: current ? 'default' : 'pointer',
|
|
1104
1110
|
borderRadius: borderRadius.xS,
|
|
1105
1111
|
transition: 'color 0.2s ease-in-out',
|
|
1106
1112
|
'&:hover': {
|
|
1107
|
-
color: current ? semanticColors.
|
|
1113
|
+
color: current ? semanticColors.icons.hover : semanticColors.buttons.tertiary.hover,
|
|
1108
1114
|
},
|
|
1109
1115
|
'&:focus-visible': {
|
|
1110
1116
|
outline: `2px solid ${semanticColors.border.focus}`,
|
|
@@ -2823,9 +2829,11 @@ const StyledChip$2 = styled(Chip)(({ theme, size, variant, color }) => ({
|
|
|
2823
2829
|
fontSize: theme.typography.pxToRem(typography.fontSize.xs),
|
|
2824
2830
|
lineHeight: 1,
|
|
2825
2831
|
fontWeight: typography.fontWeight.medium,
|
|
2832
|
+
overflow: 'visible',
|
|
2826
2833
|
...(size && sizeStyles$1[size]),
|
|
2827
2834
|
[`& .${chipClasses.label}`]: {
|
|
2828
2835
|
padding: 0,
|
|
2836
|
+
overflow: 'visible',
|
|
2829
2837
|
},
|
|
2830
2838
|
...(variant === 'outlined' &&
|
|
2831
2839
|
color &&
|
|
@@ -3784,26 +3792,34 @@ const sizeMap = {
|
|
|
3784
3792
|
medium: 10,
|
|
3785
3793
|
large: 12,
|
|
3786
3794
|
};
|
|
3787
|
-
const
|
|
3795
|
+
const StyledDot = styled('span', {
|
|
3796
|
+
shouldForwardProp: prop => prop !== 'ownerState',
|
|
3797
|
+
})(({ ownerState }) => {
|
|
3788
3798
|
const size = sizeMap[ownerState.size];
|
|
3789
|
-
const
|
|
3799
|
+
const palette = semanticColors.status[ownerState.color];
|
|
3790
3800
|
return {
|
|
3791
|
-
|
|
3792
|
-
|
|
3793
|
-
|
|
3794
|
-
|
|
3795
|
-
|
|
3796
|
-
|
|
3797
|
-
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
|
|
3801
|
-
|
|
3801
|
+
display: 'inline-flex',
|
|
3802
|
+
alignItems: 'center',
|
|
3803
|
+
justifyContent: 'center',
|
|
3804
|
+
width: size,
|
|
3805
|
+
height: size,
|
|
3806
|
+
minWidth: size,
|
|
3807
|
+
borderRadius: '50%',
|
|
3808
|
+
flexShrink: 0,
|
|
3809
|
+
boxSizing: 'border-box',
|
|
3810
|
+
backgroundColor: palette.default,
|
|
3811
|
+
color: semanticColors.typography.tooltip,
|
|
3812
|
+
...(ownerState.variant === 'outline' && {
|
|
3813
|
+
border: `3px solid ${palette.light}`,
|
|
3814
|
+
}),
|
|
3815
|
+
'& > svg': {
|
|
3816
|
+
width: '70%',
|
|
3817
|
+
height: '70%',
|
|
3802
3818
|
},
|
|
3803
3819
|
};
|
|
3804
3820
|
});
|
|
3805
3821
|
/**
|
|
3806
|
-
* NeoDot - Status indicator dot
|
|
3822
|
+
* NeoDot - Status indicator dot.
|
|
3807
3823
|
*
|
|
3808
3824
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4163-3577
|
|
3809
3825
|
*
|
|
@@ -3812,26 +3828,8 @@ const StyledBadge = styled(Badge)(({ ownerState }) => {
|
|
|
3812
3828
|
* - outline (False|True) → variant prop (solid|outline)
|
|
3813
3829
|
* - Color is configurable via color prop (success|error|warning|info|neutral)
|
|
3814
3830
|
*/
|
|
3815
|
-
const NeoDot = ({ size = 'medium', variant = 'solid', color = 'neutral', ...props }) => {
|
|
3816
|
-
|
|
3817
|
-
const mediumColor = semanticColors.status[color].default;
|
|
3818
|
-
const lightColor = semanticColors.status[color].light;
|
|
3819
|
-
// For outline variant, use SVG for precise control
|
|
3820
|
-
const renderDot = () => {
|
|
3821
|
-
if (variant === 'outline') {
|
|
3822
|
-
// SVG approach: outer circle with light fill, inner circle with medium fill
|
|
3823
|
-
// Stroke width of ~3px creates the ring effect
|
|
3824
|
-
const strokeWidth = 3;
|
|
3825
|
-
const radius = dotSize / 2;
|
|
3826
|
-
const innerRadius = radius - strokeWidth;
|
|
3827
|
-
return (jsxs("svg", { width: dotSize, height: dotSize, viewBox: `0 0 ${dotSize} ${dotSize}`, style: {
|
|
3828
|
-
display: 'block',
|
|
3829
|
-
borderRadius: '50%',
|
|
3830
|
-
}, role: "img", "aria-label": `${color} status indicator`, children: [jsx("title", { children: `${color} status indicator` }), jsx("circle", { cx: radius, cy: radius, r: radius, fill: lightColor }), jsx("circle", { cx: radius, cy: radius, r: innerRadius, fill: mediumColor })] }));
|
|
3831
|
-
}
|
|
3832
|
-
return jsx("span", { style: { display: 'inline-block', width: 0, height: 0 } });
|
|
3833
|
-
};
|
|
3834
|
-
return (jsx(StyledBadge, { ...props, ownerState: { size, variant, color }, variant: "dot", children: renderDot() }));
|
|
3831
|
+
const NeoDot = ({ size = 'medium', variant = 'solid', color = 'neutral', children, ...props }) => {
|
|
3832
|
+
return (jsx(StyledDot, { ...props, ownerState: { size, variant, color }, role: "img", "aria-label": props['aria-label'] ?? `${color} status indicator`, children: children }));
|
|
3835
3833
|
};
|
|
3836
3834
|
NeoDot.displayName = 'NeoDot';
|
|
3837
3835
|
|
|
@@ -5203,9 +5201,8 @@ NeoModalFooter.displayName = 'NeoModalFooter';
|
|
|
5203
5201
|
const NavigationAvatarContainer = styled('div')({
|
|
5204
5202
|
display: 'flex',
|
|
5205
5203
|
boxSizing: 'border-box',
|
|
5206
|
-
width: spacing.spacing_5,
|
|
5207
|
-
height: spacing.spacing_5,
|
|
5208
5204
|
padding: spacing.spacing_1_2,
|
|
5205
|
+
aspectRatio: '1 / 1',
|
|
5209
5206
|
justifyContent: 'center',
|
|
5210
5207
|
alignItems: 'center',
|
|
5211
5208
|
borderRadius: '50%',
|
|
@@ -5223,8 +5220,8 @@ const NavigationAvatarContainer = styled('div')({
|
|
|
5223
5220
|
*
|
|
5224
5221
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=11325-102
|
|
5225
5222
|
*/
|
|
5226
|
-
const NeoNavigationAvatar = ({
|
|
5227
|
-
return (jsx(NavigationAvatarContainer, { children: jsx(NeoGeneralAvatar, { size: "small",
|
|
5223
|
+
const NeoNavigationAvatar = ({ children, ...props }) => {
|
|
5224
|
+
return (jsx(NavigationAvatarContainer, { children: jsx(NeoGeneralAvatar, { size: "small", ...props, children: children }) }));
|
|
5228
5225
|
};
|
|
5229
5226
|
NeoNavigationAvatar.displayName = 'NeoNavigationAvatar';
|
|
5230
5227
|
|
|
@@ -5346,11 +5343,11 @@ const LabelText = styled('span', {
|
|
|
5346
5343
|
* NeoAvatarCell — DataGrid cell displaying a user avatar with optional label.
|
|
5347
5344
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC?node-id=13425-1725
|
|
5348
5345
|
*/
|
|
5349
|
-
const NeoAvatarCell = ({ name, src,
|
|
5346
|
+
const NeoAvatarCell = ({ name, src, label, disabled = false, empty = false, }) => {
|
|
5350
5347
|
if (empty) {
|
|
5351
5348
|
return jsx(StyledCell$1, { disabled: disabled });
|
|
5352
5349
|
}
|
|
5353
|
-
return (jsxs(StyledCell$1, { disabled: disabled, children: [jsx(NeoGeneralAvatar, { size: "small", src: src, alt: name,
|
|
5350
|
+
return (jsxs(StyledCell$1, { disabled: disabled, children: [jsx(NeoGeneralAvatar, { size: "small", src: src, alt: name, children: !src && name ? name.charAt(0).toUpperCase() : undefined }), label && jsx(LabelText, { disabled: disabled, children: label })] }));
|
|
5354
5351
|
};
|
|
5355
5352
|
NeoAvatarCell.displayName = 'NeoAvatarCell';
|
|
5356
5353
|
|
|
@@ -5710,7 +5707,7 @@ function NeoPageContent({ pageTitle, subtitle, breadcrumbs, action, sticky = fal
|
|
|
5710
5707
|
// Also try to scroll window in case component is in a different context
|
|
5711
5708
|
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
5712
5709
|
};
|
|
5713
|
-
const headerContent = (jsxs(Stack, { ref: headerRef, sx: { flexShrink: 0, gap: '0.5rem' }, children: [breadcrumbs && breadcrumbs.items.length > 0 && (jsx(NeoBreadcrumbs, { children: breadcrumbs.items.map((item, index) => (jsx(NeoBreadcrumbLink, { href: item.href, component: item.href && breadcrumbs.linkComponent ? breadcrumbs.linkComponent : undefined, current: index === breadcrumbs.items.length - 1, children: item.label }, item.href ?? index))) })), jsxs(Stack, { direction: "row", justifyContent: "space-between", alignItems: "flex-start", sx: { gap: '1rem' }, children: [jsxs(Stack, { sx: { gap: '0.5rem', flexGrow: 1 }, children: [jsx(PageTitle, { children: pageTitle }), subtitle &&
|
|
5710
|
+
const headerContent = (jsxs(Stack, { ref: headerRef, sx: { flexShrink: 0, gap: '0.5rem' }, children: [breadcrumbs && breadcrumbs.items.length > 0 && (jsx(NeoBreadcrumbs, { children: breadcrumbs.items.map((item, index) => (jsx(NeoBreadcrumbLink, { href: item.href, component: item.href && breadcrumbs.linkComponent ? breadcrumbs.linkComponent : undefined, current: index === breadcrumbs.items.length - 1, children: item.label }, item.href ?? index))) })), jsxs(Stack, { direction: "row", justifyContent: "space-between", alignItems: "flex-start", sx: { gap: '1rem' }, children: [jsxs(Stack, { sx: { gap: '0.5rem', flexGrow: 1 }, children: [typeof pageTitle === 'string' ? jsx(PageTitle, { children: pageTitle }) : pageTitle, subtitle &&
|
|
5714
5711
|
(typeof subtitle === 'string' ? (jsx(Subtitle, { variant: "caption", children: subtitle })) : (subtitle))] }), action] })] }));
|
|
5715
5712
|
const content = isLoading ? (jsx(Box, { sx: {
|
|
5716
5713
|
display: 'flex',
|