@moderneinc/neo-styled-components 2.8.0-next.22110f → 2.8.0-next.448c16
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/Banner/Banner.d.ts +18 -20
- package/dist/Checkbox/Checkbox.d.ts +2 -2
- package/dist/CodeSnippet/CodeSnippet.d.ts +4 -4
- package/dist/Radio/Radio.d.ts +0 -1
- package/dist/index.d.ts +23 -27
- package/dist/index.esm.js +57 -88
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +57 -88
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/Banner/Banner.d.ts
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import { type AlertProps } from '@mui/material/Alert';
|
|
2
2
|
import type { ReactNode } from 'react';
|
|
3
|
+
type Intent = 'info' | 'success' | 'error' | 'warning' | 'neutral';
|
|
4
|
+
type BannerType = 'outlined' | 'filled';
|
|
3
5
|
export interface NeoBannerProps extends Omit<AlertProps, 'variant' | 'severity' | 'color'> {
|
|
4
6
|
/**
|
|
5
|
-
* The
|
|
6
|
-
* @default "
|
|
7
|
+
* The intent/purpose of the banner
|
|
8
|
+
* @default "info"
|
|
7
9
|
*
|
|
8
|
-
* @figmaPropMapping
|
|
10
|
+
* @figmaPropMapping Intention (Info|Success|Error|Warning|Neutral) → intent
|
|
9
11
|
*/
|
|
10
|
-
|
|
12
|
+
intent?: Intent;
|
|
13
|
+
/**
|
|
14
|
+
* Visual type: outlined (light bg) or filled (solid bg)
|
|
15
|
+
* @default "outlined"
|
|
16
|
+
*
|
|
17
|
+
* @figmaPropMapping Type (Outlined|Filled) → type
|
|
18
|
+
*/
|
|
19
|
+
type?: BannerType;
|
|
11
20
|
/**
|
|
12
21
|
* The message text to display
|
|
13
22
|
*
|
|
@@ -18,20 +27,20 @@ export interface NeoBannerProps extends Omit<AlertProps, 'variant' | 'severity'
|
|
|
18
27
|
* Horizontal alignment of the message content
|
|
19
28
|
* @default "left"
|
|
20
29
|
*
|
|
21
|
-
* @figmaPropMapping
|
|
30
|
+
* @figmaPropMapping Message Position (Left|Center) → messagePosition
|
|
22
31
|
*/
|
|
23
32
|
messagePosition?: 'left' | 'center';
|
|
24
33
|
/**
|
|
25
34
|
* Optional link text to display after the message
|
|
26
35
|
*
|
|
27
|
-
* @figmaPropMapping
|
|
36
|
+
* @figmaPropMapping Show Link (boolean) → linkText (string)
|
|
28
37
|
*/
|
|
29
38
|
linkText?: string;
|
|
30
39
|
/**
|
|
31
40
|
* Whether to show the close button
|
|
32
41
|
* @default true
|
|
33
42
|
*
|
|
34
|
-
* @figmaPropMapping
|
|
43
|
+
* @figmaPropMapping Dismissible → showClose
|
|
35
44
|
*/
|
|
36
45
|
showClose?: boolean;
|
|
37
46
|
/**
|
|
@@ -48,19 +57,8 @@ export interface NeoBannerProps extends Omit<AlertProps, 'variant' | 'severity'
|
|
|
48
57
|
*/
|
|
49
58
|
onLinkClick?: () => void;
|
|
50
59
|
}
|
|
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
60
|
export declare const NeoBanner: {
|
|
64
|
-
({
|
|
61
|
+
({ intent, type, message, messagePosition, linkText, showClose, icon, onClose, onLinkClick, ...props }: NeoBannerProps): import("react/jsx-runtime").JSX.Element;
|
|
65
62
|
displayName: string;
|
|
66
63
|
};
|
|
64
|
+
export {};
|
|
@@ -2,7 +2,7 @@ import { type CheckboxProps } from '@mui/material/Checkbox';
|
|
|
2
2
|
import type { ReactNode } from 'react';
|
|
3
3
|
/**
|
|
4
4
|
* Custom checkbox icons matching Figma design
|
|
5
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=
|
|
5
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=11487-81
|
|
6
6
|
*
|
|
7
7
|
* Checkbox sizes: xs=12x12, small=16x16, medium=20x20
|
|
8
8
|
* Check/minus paths scaled from Untitled UI (originally 24x24)
|
|
@@ -43,7 +43,7 @@ export interface NeoCheckboxProps extends Omit<CheckboxProps, 'size'> {
|
|
|
43
43
|
/**
|
|
44
44
|
* NeoCheckbox - Checkbox component based on MUI Checkbox
|
|
45
45
|
*
|
|
46
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=
|
|
46
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=11487-81
|
|
47
47
|
*
|
|
48
48
|
* Figma Props Mapping:
|
|
49
49
|
* - Checked (True|False) → checked prop
|
|
@@ -20,7 +20,7 @@ export interface NeoCodeSnippetProps extends Omit<ButtonBaseProps, 'children'> {
|
|
|
20
20
|
* The size of the code snippet
|
|
21
21
|
* @default "small"
|
|
22
22
|
*
|
|
23
|
-
* @figma
|
|
23
|
+
* @figma Content (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
|
-
* -
|
|
42
|
-
* -
|
|
43
|
-
* -
|
|
41
|
+
* - Theme (Dark|Light) → variant (filled|outlined)
|
|
42
|
+
* - Content (Multi|Inline) → size prop + auto-detected multiline
|
|
43
|
+
* - Show icon → endIcon (ReactNode, unmappable: boolean vs ReactNode)
|
|
44
44
|
* - Text content → children prop
|
|
45
45
|
*/
|
|
46
46
|
export declare const NeoCodeSnippet: {
|
package/dist/Radio/Radio.d.ts
CHANGED
|
@@ -32,7 +32,6 @@ export interface NeoRadioProps extends Omit<RadioProps, 'size'> {
|
|
|
32
32
|
* NeoRadio - Radio button component based on MUI Radio
|
|
33
33
|
*
|
|
34
34
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-40039
|
|
35
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-40150
|
|
36
35
|
*
|
|
37
36
|
* Figma Props Mapping:
|
|
38
37
|
* - Checked (True|False) → checked prop
|
package/dist/index.d.ts
CHANGED
|
@@ -362,14 +362,23 @@ declare const NeoBadge: {
|
|
|
362
362
|
displayName: string;
|
|
363
363
|
};
|
|
364
364
|
|
|
365
|
+
type Intent = 'info' | 'success' | 'error' | 'warning' | 'neutral';
|
|
366
|
+
type BannerType = 'outlined' | 'filled';
|
|
365
367
|
interface NeoBannerProps extends Omit<AlertProps, 'variant' | 'severity' | 'color'> {
|
|
366
368
|
/**
|
|
367
|
-
* The
|
|
368
|
-
* @default "
|
|
369
|
+
* The intent/purpose of the banner
|
|
370
|
+
* @default "info"
|
|
371
|
+
*
|
|
372
|
+
* @figmaPropMapping Intention (Info|Success|Error|Warning|Neutral) → intent
|
|
373
|
+
*/
|
|
374
|
+
intent?: Intent;
|
|
375
|
+
/**
|
|
376
|
+
* Visual type: outlined (light bg) or filled (solid bg)
|
|
377
|
+
* @default "outlined"
|
|
369
378
|
*
|
|
370
|
-
* @figmaPropMapping
|
|
379
|
+
* @figmaPropMapping Type (Outlined|Filled) → type
|
|
371
380
|
*/
|
|
372
|
-
|
|
381
|
+
type?: BannerType;
|
|
373
382
|
/**
|
|
374
383
|
* The message text to display
|
|
375
384
|
*
|
|
@@ -380,20 +389,20 @@ interface NeoBannerProps extends Omit<AlertProps, 'variant' | 'severity' | 'colo
|
|
|
380
389
|
* Horizontal alignment of the message content
|
|
381
390
|
* @default "left"
|
|
382
391
|
*
|
|
383
|
-
* @figmaPropMapping
|
|
392
|
+
* @figmaPropMapping Message Position (Left|Center) → messagePosition
|
|
384
393
|
*/
|
|
385
394
|
messagePosition?: 'left' | 'center';
|
|
386
395
|
/**
|
|
387
396
|
* Optional link text to display after the message
|
|
388
397
|
*
|
|
389
|
-
* @figmaPropMapping
|
|
398
|
+
* @figmaPropMapping Show Link (boolean) → linkText (string)
|
|
390
399
|
*/
|
|
391
400
|
linkText?: string;
|
|
392
401
|
/**
|
|
393
402
|
* Whether to show the close button
|
|
394
403
|
* @default true
|
|
395
404
|
*
|
|
396
|
-
* @figmaPropMapping
|
|
405
|
+
* @figmaPropMapping Dismissible → showClose
|
|
397
406
|
*/
|
|
398
407
|
showClose?: boolean;
|
|
399
408
|
/**
|
|
@@ -410,20 +419,8 @@ interface NeoBannerProps extends Omit<AlertProps, 'variant' | 'severity' | 'colo
|
|
|
410
419
|
*/
|
|
411
420
|
onLinkClick?: () => void;
|
|
412
421
|
}
|
|
413
|
-
/**
|
|
414
|
-
* NeoBanner - Inline banner/alert component based on MUI Alert
|
|
415
|
-
*
|
|
416
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4170-2158
|
|
417
|
-
*
|
|
418
|
-
* Figma Props Mapping:
|
|
419
|
-
* - color (Dark|Light|Success|Error|Warning) → variant (dark|light|success|error|warning)
|
|
420
|
-
* - messagePosition (Left|Center) → messagePosition ("left"|"center")
|
|
421
|
-
* - closeIcon (boolean) → showClose (boolean)
|
|
422
|
-
* - link (boolean) → linkText (string)
|
|
423
|
-
* - {Message} → message (string)
|
|
424
|
-
*/
|
|
425
422
|
declare const NeoBanner: {
|
|
426
|
-
({
|
|
423
|
+
({ intent, type, message, messagePosition, linkText, showClose, icon, onClose, onLinkClick, ...props }: NeoBannerProps): react_jsx_runtime.JSX.Element;
|
|
427
424
|
displayName: string;
|
|
428
425
|
};
|
|
429
426
|
|
|
@@ -684,7 +681,7 @@ interface StyledComponent<ComponentProps extends {}, SpecificComponentProps exte
|
|
|
684
681
|
|
|
685
682
|
/**
|
|
686
683
|
* Custom checkbox icons matching Figma design
|
|
687
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=
|
|
684
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=11487-81
|
|
688
685
|
*
|
|
689
686
|
* Checkbox sizes: xs=12x12, small=16x16, medium=20x20
|
|
690
687
|
* Check/minus paths scaled from Untitled UI (originally 24x24)
|
|
@@ -721,7 +718,7 @@ interface NeoCheckboxProps extends Omit<CheckboxProps, 'size'> {
|
|
|
721
718
|
/**
|
|
722
719
|
* NeoCheckbox - Checkbox component based on MUI Checkbox
|
|
723
720
|
*
|
|
724
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=
|
|
721
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=11487-81
|
|
725
722
|
*
|
|
726
723
|
* Figma Props Mapping:
|
|
727
724
|
* - Checked (True|False) → checked prop
|
|
@@ -787,7 +784,7 @@ interface NeoCodeSnippetProps extends Omit<ButtonBaseProps, 'children'> {
|
|
|
787
784
|
* The size of the code snippet
|
|
788
785
|
* @default "small"
|
|
789
786
|
*
|
|
790
|
-
* @figma
|
|
787
|
+
* @figma Content (Multi|Inline)
|
|
791
788
|
*/
|
|
792
789
|
size?: CodeSnippetSize;
|
|
793
790
|
/**
|
|
@@ -805,9 +802,9 @@ interface NeoCodeSnippetProps extends Omit<ButtonBaseProps, 'children'> {
|
|
|
805
802
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30353
|
|
806
803
|
*
|
|
807
804
|
* Figma Props Mapping:
|
|
808
|
-
* -
|
|
809
|
-
* -
|
|
810
|
-
* -
|
|
805
|
+
* - Theme (Dark|Light) → variant (filled|outlined)
|
|
806
|
+
* - Content (Multi|Inline) → size prop + auto-detected multiline
|
|
807
|
+
* - Show icon → endIcon (ReactNode, unmappable: boolean vs ReactNode)
|
|
811
808
|
* - Text content → children prop
|
|
812
809
|
*/
|
|
813
810
|
declare const NeoCodeSnippet: {
|
|
@@ -2006,7 +2003,6 @@ interface NeoRadioProps extends Omit<RadioProps, 'size'> {
|
|
|
2006
2003
|
* NeoRadio - Radio button component based on MUI Radio
|
|
2007
2004
|
*
|
|
2008
2005
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-40039
|
|
2009
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-40150
|
|
2010
2006
|
*
|
|
2011
2007
|
* Figma Props Mapping:
|
|
2012
2008
|
* - Checked (True|False) → checked prop
|
package/dist/index.esm.js
CHANGED
|
@@ -955,33 +955,27 @@ const __iconNode = [
|
|
|
955
955
|
];
|
|
956
956
|
const X = createLucideIcon("x", __iconNode);
|
|
957
957
|
|
|
958
|
+
const intentColors = {
|
|
959
|
+
info: semanticColors.status.info,
|
|
960
|
+
success: semanticColors.status.success,
|
|
961
|
+
error: semanticColors.status.error,
|
|
962
|
+
warning: semanticColors.status.warning,
|
|
963
|
+
neutral: semanticColors.status.neutral,
|
|
964
|
+
};
|
|
958
965
|
// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Alert variant type without global augmentation
|
|
959
966
|
const StyledAlert$2 = styled(Alert, {
|
|
960
|
-
shouldForwardProp: prop => prop !== 'messagePosition' && prop !== '
|
|
961
|
-
})(({
|
|
962
|
-
|
|
963
|
-
const
|
|
964
|
-
|
|
965
|
-
backgroundColor:
|
|
967
|
+
shouldForwardProp: prop => prop !== 'messagePosition' && prop !== 'intent' && prop !== 'bannerType',
|
|
968
|
+
})(({ intent = 'info', bannerType = 'outlined', messagePosition = 'left' }) => {
|
|
969
|
+
const palette = intentColors[intent];
|
|
970
|
+
const typeStyles = bannerType === 'filled'
|
|
971
|
+
? {
|
|
972
|
+
backgroundColor: palette.dark,
|
|
966
973
|
color: semanticColors.surfaces.white,
|
|
967
|
-
}
|
|
968
|
-
|
|
969
|
-
backgroundColor:
|
|
970
|
-
color: colors.grey['800'],
|
|
971
|
-
},
|
|
972
|
-
success: {
|
|
973
|
-
backgroundColor: semanticColors.status.success.light,
|
|
974
|
-
color: colors.grey['800'],
|
|
975
|
-
},
|
|
976
|
-
error: {
|
|
977
|
-
backgroundColor: semanticColors.status.error.light,
|
|
978
|
-
color: colors.grey['800'],
|
|
979
|
-
},
|
|
980
|
-
warning: {
|
|
981
|
-
backgroundColor: semanticColors.status.warning.light,
|
|
974
|
+
}
|
|
975
|
+
: {
|
|
976
|
+
backgroundColor: palette.light,
|
|
982
977
|
color: colors.grey['800'],
|
|
983
|
-
}
|
|
984
|
-
};
|
|
978
|
+
};
|
|
985
979
|
return {
|
|
986
980
|
width: '100%',
|
|
987
981
|
minHeight: 52,
|
|
@@ -995,9 +989,9 @@ const StyledAlert$2 = styled(Alert, {
|
|
|
995
989
|
...(messagePosition === 'center' && { position: 'relative' }),
|
|
996
990
|
boxShadow: `${shadows.neutralSmall.x}px ${shadows.neutralSmall.y}px ${shadows.neutralSmall.blur}px ${shadows.neutralSmall.spread}px ${shadows.neutralSmall.shadow}`,
|
|
997
991
|
fontSize: typography.fontSize.default,
|
|
998
|
-
fontWeight: typography.fontWeight.
|
|
992
|
+
fontWeight: typography.fontWeight.medium,
|
|
999
993
|
lineHeight: 1.5,
|
|
1000
|
-
...
|
|
994
|
+
...typeStyles,
|
|
1001
995
|
[`& .${alertClasses.icon}`]: {
|
|
1002
996
|
padding: 0,
|
|
1003
997
|
opacity: 1,
|
|
@@ -1020,26 +1014,18 @@ const StyledAlert$2 = styled(Alert, {
|
|
|
1020
1014
|
},
|
|
1021
1015
|
};
|
|
1022
1016
|
});
|
|
1023
|
-
const LinkText = styled('span')(({
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
}
|
|
1034
|
-
|
|
1035
|
-
fontWeight: typography.fontWeight.semiBold,
|
|
1036
|
-
color: getLinkColor(),
|
|
1037
|
-
cursor: 'pointer',
|
|
1038
|
-
'&:hover': {
|
|
1039
|
-
textDecoration: 'underline',
|
|
1040
|
-
},
|
|
1041
|
-
};
|
|
1042
|
-
});
|
|
1017
|
+
const LinkText = styled('span')(({ bannerType = 'outlined' }) => ({
|
|
1018
|
+
marginLeft: 'auto',
|
|
1019
|
+
fontWeight: typography.fontWeight.semiBold,
|
|
1020
|
+
color: bannerType === 'filled'
|
|
1021
|
+
? semanticColors.typography.link.white
|
|
1022
|
+
: semanticColors.typography.link.primary,
|
|
1023
|
+
cursor: 'pointer',
|
|
1024
|
+
whiteSpace: 'nowrap',
|
|
1025
|
+
'&:hover': {
|
|
1026
|
+
textDecoration: 'underline',
|
|
1027
|
+
},
|
|
1028
|
+
}));
|
|
1043
1029
|
const StyledIconButton$1 = styled(IconButton)(({ closeIconColor }) => ({
|
|
1044
1030
|
padding: 0,
|
|
1045
1031
|
color: closeIconColor,
|
|
@@ -1047,35 +1033,9 @@ const StyledIconButton$1 = styled(IconButton)(({ closeIconColor }) => ({
|
|
|
1047
1033
|
backgroundColor: 'transparent',
|
|
1048
1034
|
},
|
|
1049
1035
|
}));
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4170-2158
|
|
1054
|
-
*
|
|
1055
|
-
* Figma Props Mapping:
|
|
1056
|
-
* - color (Dark|Light|Success|Error|Warning) → variant (dark|light|success|error|warning)
|
|
1057
|
-
* - messagePosition (Left|Center) → messagePosition ("left"|"center")
|
|
1058
|
-
* - closeIcon (boolean) → showClose (boolean)
|
|
1059
|
-
* - link (boolean) → linkText (string)
|
|
1060
|
-
* - {Message} → message (string)
|
|
1061
|
-
*/
|
|
1062
|
-
const NeoBanner = ({ variant = 'light', message, messagePosition = 'left', linkText, showClose = true, icon, onClose, onLinkClick, ...props }) => {
|
|
1063
|
-
const getCloseIconColor = () => {
|
|
1064
|
-
if (variant === 'dark') {
|
|
1065
|
-
return semanticColors.surfaces.white;
|
|
1066
|
-
}
|
|
1067
|
-
if (variant === 'success') {
|
|
1068
|
-
return semanticColors.status.success.default;
|
|
1069
|
-
}
|
|
1070
|
-
if (variant === 'error') {
|
|
1071
|
-
return semanticColors.status.error.default;
|
|
1072
|
-
}
|
|
1073
|
-
if (variant === 'warning') {
|
|
1074
|
-
return semanticColors.status.warning.default;
|
|
1075
|
-
}
|
|
1076
|
-
return colors.grey['800'];
|
|
1077
|
-
};
|
|
1078
|
-
return (jsx(StyledAlert$2, { ...props, variant: variant, messagePosition: messagePosition, icon: messagePosition === 'left' ? icon || false : false, action: showClose ? (jsx(StyledIconButton$1, { size: "small", onClick: onClose, closeIconColor: getCloseIconColor(), children: jsx(X, { size: 24 }) })) : undefined, children: messagePosition === 'center' ? (jsxs(Fragment, { children: [icon, jsx("span", { children: message }), linkText && (jsx(LinkText, { variant: variant, onClick: onLinkClick, children: linkText }))] })) : (jsxs(Fragment, { children: [jsx("span", { children: message }), linkText && (jsx(LinkText, { variant: variant, onClick: onLinkClick, children: linkText }))] })) }));
|
|
1036
|
+
const NeoBanner = ({ intent = 'info', type = 'outlined', message, messagePosition = 'left', linkText, showClose = true, icon, onClose, onLinkClick, ...props }) => {
|
|
1037
|
+
const closeIconColor = type === 'filled' ? semanticColors.surfaces.white : intentColors[intent].default;
|
|
1038
|
+
return (jsx(StyledAlert$2, { ...props, intent: intent, bannerType: type, messagePosition: messagePosition, icon: messagePosition === 'left' ? icon || false : false, action: showClose ? (jsx(StyledIconButton$1, { size: "small", onClick: onClose, closeIconColor: closeIconColor, children: jsx(X, { size: 24 }) })) : undefined, children: messagePosition === 'center' ? (jsxs(Fragment, { children: [icon, jsx("span", { children: message }), linkText && (jsx(LinkText, { bannerType: type, onClick: onLinkClick, children: linkText }))] })) : (jsxs(Fragment, { children: [jsx("span", { children: message }), linkText && (jsx(LinkText, { bannerType: type, onClick: onLinkClick, children: linkText }))] })) }));
|
|
1079
1039
|
};
|
|
1080
1040
|
NeoBanner.displayName = 'NeoBanner';
|
|
1081
1041
|
|
|
@@ -1786,6 +1746,7 @@ const StyledCheckbox = styled(Checkbox, {
|
|
|
1786
1746
|
padding: 0,
|
|
1787
1747
|
marginTop: size === 'xs' ? 3 : 2,
|
|
1788
1748
|
color: semanticColors.border.primary,
|
|
1749
|
+
borderRadius: config.borderRadius,
|
|
1789
1750
|
flexShrink: 0,
|
|
1790
1751
|
// Root element
|
|
1791
1752
|
[`&.${checkboxClasses.root}`]: {
|
|
@@ -1836,7 +1797,7 @@ const StyledCheckbox = styled(Checkbox, {
|
|
|
1836
1797
|
/**
|
|
1837
1798
|
* NeoCheckbox - Checkbox component based on MUI Checkbox
|
|
1838
1799
|
*
|
|
1839
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=
|
|
1800
|
+
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=11487-81
|
|
1840
1801
|
*
|
|
1841
1802
|
* Figma Props Mapping:
|
|
1842
1803
|
* - Checked (True|False) → checked prop
|
|
@@ -1992,9 +1953,9 @@ const IconWrapper$2 = styled('span')(({ theme, isMultiline }) => ({
|
|
|
1992
1953
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30353
|
|
1993
1954
|
*
|
|
1994
1955
|
* Figma Props Mapping:
|
|
1995
|
-
* -
|
|
1996
|
-
* -
|
|
1997
|
-
* -
|
|
1956
|
+
* - Theme (Dark|Light) → variant (filled|outlined)
|
|
1957
|
+
* - Content (Multi|Inline) → size prop + auto-detected multiline
|
|
1958
|
+
* - Show icon → endIcon (ReactNode, unmappable: boolean vs ReactNode)
|
|
1998
1959
|
* - Text content → children prop
|
|
1999
1960
|
*/
|
|
2000
1961
|
const NeoCodeSnippet = ({ variant = 'outlined', size = 'small', endIcon, children, ...props }) => {
|
|
@@ -5663,17 +5624,19 @@ const NeoQuickFilter = ({ placeholder = 'Search...', onKeyDown, autoFocus = fals
|
|
|
5663
5624
|
NeoQuickFilter.displayName = 'NeoQuickFilter';
|
|
5664
5625
|
|
|
5665
5626
|
// Custom radio icons to match Figma design
|
|
5666
|
-
const UncheckedIcon = ({ size }) => {
|
|
5627
|
+
const UncheckedIcon = ({ size, disabled }) => {
|
|
5667
5628
|
const dimensions = size === 'small' ? 16 : 20;
|
|
5668
5629
|
const radius = size === 'small' ? 8 : 10;
|
|
5669
|
-
return (jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsx("title", { children: "Unchecked radio button" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, stroke: semanticColors.border.primary, strokeWidth: "1", fill:
|
|
5630
|
+
return (jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsx("title", { children: "Unchecked radio button" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, stroke: semanticColors.border.primary, strokeWidth: "1", fill: disabled ? semanticColors.buttons.primary.disabled : 'transparent' })] }));
|
|
5670
5631
|
};
|
|
5671
|
-
const CheckedIcon = ({ size }) => {
|
|
5632
|
+
const CheckedIcon = ({ size, disabled }) => {
|
|
5672
5633
|
const dimensions = size === 'small' ? 16 : 20;
|
|
5673
5634
|
const radius = size === 'small' ? 8 : 10;
|
|
5674
5635
|
const inset = size === 'small' ? 0.3125 : 0.3; // 31.25% or 30%
|
|
5675
5636
|
const innerRadius = radius * (1 - 2 * inset);
|
|
5676
|
-
return (jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsx("title", { children: "Checked radio button" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, fill:
|
|
5637
|
+
return (jsxs("svg", { width: dimensions, height: dimensions, viewBox: `0 0 ${dimensions} ${dimensions}`, fill: "none", "aria-hidden": "true", children: [jsx("title", { children: "Checked radio button" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: radius - 0.5, fill: disabled
|
|
5638
|
+
? semanticColors.buttons.primary.disabled
|
|
5639
|
+
: semanticColors.buttons.primary.default, stroke: disabled ? semanticColors.border.primary : semanticColors.buttons.primary.default, strokeWidth: "1" }), jsx("circle", { cx: dimensions / 2, cy: dimensions / 2, r: innerRadius, fill: disabled ? semanticColors.icons.disabled : semanticColors.surfaces.white })] }));
|
|
5677
5640
|
};
|
|
5678
5641
|
const RadioContainer = styled('label')(({ disabled }) => ({
|
|
5679
5642
|
display: 'inline-flex',
|
|
@@ -5718,6 +5681,10 @@ const StyledRadio = styled(Radio, {
|
|
|
5718
5681
|
height: dimensions,
|
|
5719
5682
|
flexShrink: 0,
|
|
5720
5683
|
borderRadius: radius,
|
|
5684
|
+
color: semanticColors.border.primary,
|
|
5685
|
+
[`&.${radioClasses.checked}`]: {
|
|
5686
|
+
color: semanticColors.buttons.primary.default,
|
|
5687
|
+
},
|
|
5721
5688
|
'&:hover': {
|
|
5722
5689
|
backgroundColor: 'transparent',
|
|
5723
5690
|
},
|
|
@@ -5735,9 +5702,12 @@ const StyledRadio = styled(Radio, {
|
|
|
5735
5702
|
backgroundColor: 'transparent',
|
|
5736
5703
|
},
|
|
5737
5704
|
},
|
|
5738
|
-
// Disabled state
|
|
5705
|
+
// Disabled state — icons handle their own disabled colors
|
|
5739
5706
|
[`&.${radioClasses.disabled}`]: {
|
|
5740
|
-
|
|
5707
|
+
color: semanticColors.border.primary,
|
|
5708
|
+
[`&.${radioClasses.checked}`]: {
|
|
5709
|
+
color: semanticColors.border.primary,
|
|
5710
|
+
},
|
|
5741
5711
|
},
|
|
5742
5712
|
};
|
|
5743
5713
|
});
|
|
@@ -5745,7 +5715,6 @@ const StyledRadio = styled(Radio, {
|
|
|
5745
5715
|
* NeoRadio - Radio button component based on MUI Radio
|
|
5746
5716
|
*
|
|
5747
5717
|
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-40039
|
|
5748
|
-
* @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-40150
|
|
5749
5718
|
*
|
|
5750
5719
|
* Figma Props Mapping:
|
|
5751
5720
|
* - Checked (True|False) → checked prop
|
|
@@ -5785,9 +5754,9 @@ const StyledRadio = styled(Radio, {
|
|
|
5785
5754
|
* </RadioGroup>
|
|
5786
5755
|
*/
|
|
5787
5756
|
const NeoRadio = ({ size = 'medium', label, helperText, disabled, ...props }) => {
|
|
5788
|
-
// Custom icons based on size
|
|
5789
|
-
const uncheckedIcon = jsx(UncheckedIcon, { size: size });
|
|
5790
|
-
const checkedIcon = jsx(CheckedIcon, { size: size });
|
|
5757
|
+
// Custom icons based on size and disabled state
|
|
5758
|
+
const uncheckedIcon = jsx(UncheckedIcon, { size: size, disabled: disabled });
|
|
5759
|
+
const checkedIcon = jsx(CheckedIcon, { size: size, disabled: disabled });
|
|
5791
5760
|
// If no label, return just the radio button
|
|
5792
5761
|
if (!label && !helperText) {
|
|
5793
5762
|
return (jsx(StyledRadio, { size: size, disabled: disabled, icon: uncheckedIcon, checkedIcon: checkedIcon, ...props }));
|