@team-monolith/cds 0.1.0
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/README.md +46 -0
- package/dist/CodleDesignSystemProvider.d.ts +5 -0
- package/dist/CodleDesignSystemProvider.js +96 -0
- package/dist/components/AlertDialog/AlertDialog.d.ts +14 -0
- package/dist/components/AlertDialog/AlertDialog.js +45 -0
- package/dist/components/AlertDialog/AlertDialogActions.d.ts +8 -0
- package/dist/components/AlertDialog/AlertDialogActions.js +35 -0
- package/dist/components/AlertDialog/AlertDialogContent.d.ts +8 -0
- package/dist/components/AlertDialog/AlertDialogContent.js +36 -0
- package/dist/components/AlertDialog/AlertDialogTitle.d.ts +13 -0
- package/dist/components/AlertDialog/AlertDialogTitle.js +38 -0
- package/dist/components/AlertDialog/index.d.ts +4 -0
- package/dist/components/AlertDialog/index.js +4 -0
- package/dist/components/Banner.d.ts +29 -0
- package/dist/components/Banner.js +65 -0
- package/dist/components/Button.d.ts +26 -0
- package/dist/components/Button.js +72 -0
- package/dist/components/CheckboxInput.d.ts +27 -0
- package/dist/components/CheckboxInput.js +77 -0
- package/dist/components/Input.d.ts +17 -0
- package/dist/components/Input.js +72 -0
- package/dist/components/InputBase.d.ts +42 -0
- package/dist/components/InputBase.js +52 -0
- package/dist/components/Pagination.d.ts +27 -0
- package/dist/components/Pagination.js +32 -0
- package/dist/components/PinInput.d.ts +36 -0
- package/dist/components/PinInput.js +154 -0
- package/dist/components/RadioInput.d.ts +23 -0
- package/dist/components/RadioInput.js +78 -0
- package/dist/components/SquareButton.d.ts +26 -0
- package/dist/components/SquareButton.js +80 -0
- package/dist/components/Switch.d.ts +19 -0
- package/dist/components/Switch.js +59 -0
- package/dist/components/Tag.d.ts +21 -0
- package/dist/components/Tag.js +61 -0
- package/dist/components/Tooltip.d.ts +26 -0
- package/dist/components/Tooltip.js +50 -0
- package/dist/foundation/color.d.ts +75 -0
- package/dist/foundation/color.js +75 -0
- package/dist/foundation/shadows.d.ts +9 -0
- package/dist/foundation/shadows.js +10 -0
- package/dist/icons/arrows.d.ts +16 -0
- package/dist/icons/arrows.js +17 -0
- package/dist/icons/brand.d.ts +4 -0
- package/dist/icons/brand.js +13 -0
- package/dist/icons/map.d.ts +4 -0
- package/dist/icons/map.js +13 -0
- package/dist/icons/system.d.ts +25 -0
- package/dist/icons/system.js +20 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/patterns/Dropdown/Dropdown.d.ts +27 -0
- package/dist/patterns/Dropdown/Dropdown.js +41 -0
- package/dist/patterns/Dropdown/DropdownItem.d.ts +42 -0
- package/dist/patterns/Dropdown/DropdownItem.js +89 -0
- package/dist/patterns/Dropdown/DropdownMenu.d.ts +30 -0
- package/dist/patterns/Dropdown/DropdownMenu.js +85 -0
- package/dist/patterns/Dropdown/index.d.ts +2 -0
- package/dist/patterns/Dropdown/index.js +2 -0
- package/dist/patterns/EmptyState/EmptyState.d.ts +16 -0
- package/dist/patterns/EmptyState/EmptyState.js +36 -0
- package/dist/patterns/EmptyState/index.d.ts +2 -0
- package/dist/patterns/EmptyState/index.js +2 -0
- package/dist/patterns/Grid/EnhancedTableCell.d.ts +9 -0
- package/dist/patterns/Grid/EnhancedTableCell.js +122 -0
- package/dist/patterns/Grid/Grid.d.ts +51 -0
- package/dist/patterns/Grid/Grid.js +140 -0
- package/dist/patterns/Grid/index.d.ts +3 -0
- package/dist/patterns/Grid/index.js +2 -0
- package/dist/patterns/SegmentedControl/SegmentedControlButton.d.ts +8 -0
- package/dist/patterns/SegmentedControl/SegmentedControlButton.js +41 -0
- package/dist/patterns/SegmentedControl/SegmentedControlGroup.d.ts +26 -0
- package/dist/patterns/SegmentedControl/SegmentedControlGroup.js +50 -0
- package/dist/patterns/SegmentedControl/SegmentedControlGroupPropsContext.d.ts +5 -0
- package/dist/patterns/SegmentedControl/SegmentedControlGroupPropsContext.js +5 -0
- package/dist/patterns/SegmentedControl/SegmentedControlSquareButton.d.ts +8 -0
- package/dist/patterns/SegmentedControl/SegmentedControlSquareButton.js +45 -0
- package/dist/patterns/SegmentedControl/index.d.ts +3 -0
- package/dist/patterns/SegmentedControl/index.js +3 -0
- package/dist/patterns/Table/Table.d.ts +16 -0
- package/dist/patterns/Table/Table.js +33 -0
- package/dist/patterns/Table/TableBody.d.ts +8 -0
- package/dist/patterns/Table/TableBody.js +26 -0
- package/dist/patterns/Table/TableCell.d.ts +15 -0
- package/dist/patterns/Table/TableCell.js +78 -0
- package/dist/patterns/Table/TableHead.d.ts +8 -0
- package/dist/patterns/Table/TableHead.js +26 -0
- package/dist/patterns/Table/TableRow.d.ts +12 -0
- package/dist/patterns/Table/TableRow.js +29 -0
- package/dist/patterns/Table/TableSizeContext.d.ts +7 -0
- package/dist/patterns/Table/TableSizeContext.js +3 -0
- package/dist/patterns/Table/TableVariantContext.d.ts +6 -0
- package/dist/patterns/Table/TableVariantContext.js +3 -0
- package/dist/patterns/Table/index.d.ts +7 -0
- package/dist/patterns/Table/index.js +6 -0
- package/dist/utils/hover.d.ts +3 -0
- package/dist/utils/hover.js +14 -0
- package/dist/utils/reset.d.ts +2 -0
- package/dist/utils/reset.js +8 -0
- package/dist/utils/zIndex.d.ts +3 -0
- package/dist/utils/zIndex.js +3 -0
- package/package.json +52 -0
- package/public/favicon.ico +0 -0
- package/public/index.html +43 -0
- package/public/logo192.png +0 -0
- package/public/logo512.png +0 -0
- package/public/manifest.json +25 -0
- package/public/robots.txt +3 -0
- package/src/App.tsx +7 -0
- package/src/cds/CodleDesignSystemProvider.tsx +93 -0
- package/src/cds/README.md +23 -0
- package/src/cds/components/AlertDialog/AlertDialog.tsx +101 -0
- package/src/cds/components/AlertDialog/AlertDialogActions.tsx +34 -0
- package/src/cds/components/AlertDialog/AlertDialogContent.tsx +38 -0
- package/src/cds/components/AlertDialog/AlertDialogTitle.tsx +63 -0
- package/src/cds/components/AlertDialog/index.tsx +4 -0
- package/src/cds/components/Banner.tsx +176 -0
- package/src/cds/components/Button.tsx +239 -0
- package/src/cds/components/CheckboxInput.tsx +270 -0
- package/src/cds/components/Input.tsx +166 -0
- package/src/cds/components/InputBase.tsx +226 -0
- package/src/cds/components/Pagination.tsx +99 -0
- package/src/cds/components/PinInput.tsx +322 -0
- package/src/cds/components/RadioInput.tsx +226 -0
- package/src/cds/components/SquareButton.tsx +229 -0
- package/src/cds/components/Switch.tsx +129 -0
- package/src/cds/components/Tag.tsx +155 -0
- package/src/cds/components/Tooltip.tsx +104 -0
- package/src/cds/emotion.d.ts +70 -0
- package/src/cds/foundation/color.ts +83 -0
- package/src/cds/foundation/shadows.ts +17 -0
- package/src/cds/icons/arrows.tsx +61 -0
- package/src/cds/icons/brand.tsx +13 -0
- package/src/cds/icons/map.tsx +14 -0
- package/src/cds/icons/system.tsx +113 -0
- package/src/cds/index.ts +3 -0
- package/src/cds/patterns/Dropdown/Dropdown.tsx +111 -0
- package/src/cds/patterns/Dropdown/DropdownItem.tsx +203 -0
- package/src/cds/patterns/Dropdown/DropdownMenu.tsx +176 -0
- package/src/cds/patterns/Dropdown/index.tsx +2 -0
- package/src/cds/patterns/EmptyState/EmptyState.tsx +91 -0
- package/src/cds/patterns/EmptyState/empty-state-icon.svg +36 -0
- package/src/cds/patterns/EmptyState/index.tsx +2 -0
- package/src/cds/patterns/Grid/EnhancedTableCell.tsx +180 -0
- package/src/cds/patterns/Grid/Grid.tsx +360 -0
- package/src/cds/patterns/Grid/index.tsx +4 -0
- package/src/cds/patterns/SegmentedControl/SegmentedControlButton.tsx +41 -0
- package/src/cds/patterns/SegmentedControl/SegmentedControlGroup.tsx +81 -0
- package/src/cds/patterns/SegmentedControl/SegmentedControlGroupPropsContext.tsx +9 -0
- package/src/cds/patterns/SegmentedControl/SegmentedControlSquareButton.tsx +51 -0
- package/src/cds/patterns/SegmentedControl/index.ts +3 -0
- package/src/cds/patterns/Table/Table.tsx +56 -0
- package/src/cds/patterns/Table/TableBody.tsx +30 -0
- package/src/cds/patterns/Table/TableCell.tsx +242 -0
- package/src/cds/patterns/Table/TableHead.tsx +30 -0
- package/src/cds/patterns/Table/TableRow.tsx +54 -0
- package/src/cds/patterns/Table/TableSizeContext.tsx +10 -0
- package/src/cds/patterns/Table/TableVariantContext.tsx +9 -0
- package/src/cds/patterns/Table/index.tsx +15 -0
- package/src/cds/utils/hover.tsx +24 -0
- package/src/cds/utils/reset.tsx +19 -0
- package/src/cds/utils/zIndex.tsx +3 -0
- package/src/index.tsx +10 -0
- package/src/react-app-env.d.ts +1 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// eslint-disable-next-line import/no-anonymous-default-export
|
|
2
|
+
export default {
|
|
3
|
+
blue10: "#1C3D73",
|
|
4
|
+
priamry09: "#234E91",
|
|
5
|
+
blue08: "#2C61B5",
|
|
6
|
+
blue07: "#3574D9",
|
|
7
|
+
blue06: "#3E88FF",
|
|
8
|
+
blue05: "#619DFF",
|
|
9
|
+
blue04: "#85B4FF",
|
|
10
|
+
blue03: "#ACCCFF",
|
|
11
|
+
blue02: "#D1E2FF",
|
|
12
|
+
blue01: "#ECF3FF",
|
|
13
|
+
|
|
14
|
+
orange10: "#6B421A",
|
|
15
|
+
orange09: "#8C5622",
|
|
16
|
+
orange08: "#B56F2C",
|
|
17
|
+
orange07: "#E88F38",
|
|
18
|
+
orange06: "#FF9D3E",
|
|
19
|
+
orange05: "#FFB165",
|
|
20
|
+
orange04: "#FFBD7E",
|
|
21
|
+
orange03: "#FFD2A6",
|
|
22
|
+
orange02: "#FFE1C3",
|
|
23
|
+
orange01: "#FFF5EC",
|
|
24
|
+
|
|
25
|
+
teal10: "#1C6069",
|
|
26
|
+
teal09: "#257D89",
|
|
27
|
+
teal08: "#30A2B1",
|
|
28
|
+
teal07: "#3DCFE3",
|
|
29
|
+
teal06: "#43E4F9",
|
|
30
|
+
teal05: "#69E9FA",
|
|
31
|
+
teal04: "#81EDFB",
|
|
32
|
+
teal03: "#A9F3FC",
|
|
33
|
+
teal02: "#C5F7FD",
|
|
34
|
+
teal01: "#ECFCFE",
|
|
35
|
+
|
|
36
|
+
yellow10: "#6B5402",
|
|
37
|
+
yellow09: "#8C6F03",
|
|
38
|
+
yellow08: "#B58F04",
|
|
39
|
+
yellow07: "#E8B705",
|
|
40
|
+
yellow06: "#FFC905",
|
|
41
|
+
yellow05: "#FFD437",
|
|
42
|
+
yellow04: "#FFDB58",
|
|
43
|
+
yellow03: "#FFE68C",
|
|
44
|
+
yellow02: "#FFEEB2",
|
|
45
|
+
yellow01: "#FFFAE6",
|
|
46
|
+
|
|
47
|
+
green10: "#3F580C",
|
|
48
|
+
green09: "#527310",
|
|
49
|
+
green08: "#6A9415",
|
|
50
|
+
green07: "#88BE1A",
|
|
51
|
+
green06: "#95D11D",
|
|
52
|
+
green05: "#AADA4A",
|
|
53
|
+
green04: "#B8E068",
|
|
54
|
+
green03: "#CEEA97",
|
|
55
|
+
green02: "#DEF1B9",
|
|
56
|
+
green01: "#F4FAE8",
|
|
57
|
+
|
|
58
|
+
red10: "#6B2013",
|
|
59
|
+
red09: "#8C2A19",
|
|
60
|
+
red08: "#B53720",
|
|
61
|
+
red07: "#E84629",
|
|
62
|
+
red06: "#FF4D2D",
|
|
63
|
+
red05: "#FF7157",
|
|
64
|
+
red04: "#FF8872",
|
|
65
|
+
red03: "#FFAD9E",
|
|
66
|
+
red02: "#FFC8BE",
|
|
67
|
+
red01: "#FFEDEA",
|
|
68
|
+
|
|
69
|
+
black: "#363636",
|
|
70
|
+
|
|
71
|
+
grey10: "#3E3E3E",
|
|
72
|
+
grey09: "#454545",
|
|
73
|
+
grey08: "#5F5F5F",
|
|
74
|
+
grey07: "#717171",
|
|
75
|
+
grey06: "#9C9C9C",
|
|
76
|
+
grey05: "#C8C8C8",
|
|
77
|
+
grey04: "#DEDEDE",
|
|
78
|
+
grey03: "#F2F2F2",
|
|
79
|
+
grey02: "#F6F6F6",
|
|
80
|
+
grey01: "#FDFDFD",
|
|
81
|
+
|
|
82
|
+
white: "#FFFFFF",
|
|
83
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// https://www.figma.com/file/wefLB6cN0oM2VZjwYmBA6B/Codle-PD-Kit---Foundation?type=design&node-id=1-14238&t=Jg9tQ0vSRG6mw1RZ-0
|
|
2
|
+
const shadows = {
|
|
3
|
+
shadow02: `0px 0.15px 0.45px rgba(0, 0, 0, 0.11),
|
|
4
|
+
0px 0.8px 1.8px rgba(0, 0, 0, 0.13)`,
|
|
5
|
+
shadow04: `0px 0.3px 0.9px rgba(0, 0, 0, 0.07),
|
|
6
|
+
0px 1.6px 3.6px rgba(0, 0, 0, 0.11);`,
|
|
7
|
+
shadow08: `0px 0.6px 1.8px rgba(0, 0, 0, 0.11),
|
|
8
|
+
0px 3.2px 7.2px rgba(0, 0, 0, 0.13)`,
|
|
9
|
+
shadow16: `0px 1.2px 3.6px rgba(0, 0, 0, 0.11),
|
|
10
|
+
0px 6.4px 14.4px rgba(0, 0, 0, 0.13)`,
|
|
11
|
+
shadow32: `0px 2.4px 7.4px rgba(0, 0, 0, 0.18),
|
|
12
|
+
0px 12.8px 28.8px rgba(0, 0, 0, 0.22)`,
|
|
13
|
+
shadow64: `0px 4.8px 14.4px rgba(0, 0, 0, 0.18),
|
|
14
|
+
0px 25.6px 57.6px rgba(0, 0, 0, 0.22)`,
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export default shadows;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export const ArrowDropDownFillIcon = (props: { className?: string }) => (
|
|
2
|
+
<svg
|
|
3
|
+
{...props}
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
>
|
|
9
|
+
<path fill="currentColor" d="m12 14l-4-4h8l-4 4Z" />
|
|
10
|
+
</svg>
|
|
11
|
+
);
|
|
12
|
+
export const ExpandUpDownIcon = (props: { className?: string }) => (
|
|
13
|
+
<svg
|
|
14
|
+
{...props}
|
|
15
|
+
width="24"
|
|
16
|
+
height="24"
|
|
17
|
+
viewBox="0 0 24 24"
|
|
18
|
+
fill="none"
|
|
19
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
20
|
+
>
|
|
21
|
+
<path d="M18 9L12 3L6 9H18ZM18 15L12 21L6 15H18Z" fill="currentColor" />
|
|
22
|
+
</svg>
|
|
23
|
+
);
|
|
24
|
+
export const ArrowDownFillIcon = (props: { className?: string }) => (
|
|
25
|
+
<svg
|
|
26
|
+
{...props}
|
|
27
|
+
width="24"
|
|
28
|
+
height="24"
|
|
29
|
+
viewBox="0 0 24 24"
|
|
30
|
+
fill="none"
|
|
31
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
32
|
+
>
|
|
33
|
+
<path d="M13 12H20L12 20L4 12H11V4H13V12Z" fill="currentColor" />
|
|
34
|
+
</svg>
|
|
35
|
+
);
|
|
36
|
+
export const ArrowUpFillIcon = (props: { className?: string }) => (
|
|
37
|
+
<svg
|
|
38
|
+
{...props}
|
|
39
|
+
width="24"
|
|
40
|
+
height="24"
|
|
41
|
+
viewBox="0 0 24 24"
|
|
42
|
+
fill="none"
|
|
43
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
44
|
+
>
|
|
45
|
+
<path d="M13 12V20H11V12H4L12 4L20 12H13Z" fill="currentColor" />
|
|
46
|
+
</svg>
|
|
47
|
+
);
|
|
48
|
+
export const ArrowRightSLineIcon = (props: { className?: string }) => (
|
|
49
|
+
<svg
|
|
50
|
+
{...props}
|
|
51
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
52
|
+
width="24"
|
|
53
|
+
height="24"
|
|
54
|
+
viewBox="0 0 24 24"
|
|
55
|
+
>
|
|
56
|
+
<path
|
|
57
|
+
d="M13.1714 12.0007L8.22168 7.05093L9.63589 5.63672L15.9999 12.0007L9.63589 18.3646L8.22168 16.9504L13.1714 12.0007Z"
|
|
58
|
+
fill="currentColor"
|
|
59
|
+
/>
|
|
60
|
+
</svg>
|
|
61
|
+
);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const SymbolIcon = (props: { className?: string }) => (
|
|
2
|
+
<svg
|
|
3
|
+
{...props}
|
|
4
|
+
viewBox="-3 -2 24 24"
|
|
5
|
+
fill="none"
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
7
|
+
>
|
|
8
|
+
<path
|
|
9
|
+
d="M8.89269 0C3.98164 0 0 3.80096 0 8.49034C0 12.0308 2.26988 15.0622 5.4957 16.336C6.05262 16.5557 6.36122 17.1512 6.19366 17.7238L5.83323 18.9592C5.66206 19.5427 6.17196 20.1009 6.76987 19.9845C8.47801 19.6495 11.564 18.7587 14.0701 16.4644C16.9898 13.7908 17.7854 10.9527 17.7854 8.49154C17.7854 3.80337 13.8037 0.00120173 8.89269 0.00120173V0Z"
|
|
10
|
+
fill="currentColor"
|
|
11
|
+
/>
|
|
12
|
+
</svg>
|
|
13
|
+
);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const EarthFillIcon = (props: { className?: string }) => (
|
|
2
|
+
<svg
|
|
3
|
+
{...props}
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
>
|
|
9
|
+
<path
|
|
10
|
+
d="M12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2ZM16.0043 12.8777C15.6589 12.3533 15.4097 11.9746 14.4622 12.1248C12.6717 12.409 12.4732 12.7224 12.3877 13.2375L12.3636 13.3943L12.3393 13.5597C12.2416 14.2428 12.2453 14.5012 12.5589 14.8308C13.8241 16.1582 14.582 17.115 14.8116 17.6746C14.9237 17.9484 15.2119 18.7751 15.0136 19.5927C16.2372 19.1066 17.3156 18.3332 18.1653 17.3559C18.2755 16.9821 18.3551 16.5166 18.3551 15.9518V15.8472C18.3551 14.9247 18.3551 14.504 17.7031 14.1314C17.428 13.9751 17.2227 13.881 17.0582 13.8064C16.691 13.6394 16.4479 13.5297 16.1198 13.0499C16.0807 12.9928 16.0425 12.9358 16.0043 12.8777ZM12 3.83333C9.68259 3.83333 7.59062 4.79858 6.1042 6.34896C6.28116 6.47186 6.43537 6.64453 6.54129 6.88256C6.74529 7.34029 6.74529 7.8112 6.74529 8.22764C6.74488 8.55621 6.74442 8.8672 6.84992 9.09302C6.99443 9.40134 7.6164 9.53227 8.16548 9.64736C8.36166 9.68867 8.56395 9.73083 8.74797 9.78176C9.25405 9.92233 9.64554 10.3765 9.95938 10.7412C10.0896 10.8931 10.2819 11.1163 10.3783 11.1717C10.4286 11.1356 10.59 10.9608 10.6699 10.6735C10.7307 10.4547 10.7134 10.2597 10.6239 10.1543C10.0648 9.49445 10.0952 8.2232 10.268 7.75495C10.5402 7.01606 11.3905 7.07058 12.012 7.11097C12.2438 7.12589 12.4626 7.14023 12.6257 7.11976C13.2482 7.04166 13.4396 6.09538 13.575 5.91C13.8671 5.50981 14.7607 4.9071 15.3158 4.53454C14.3025 4.08382 13.1805 3.83333 12 3.83333Z"
|
|
11
|
+
fill="currentColor"
|
|
12
|
+
/>
|
|
13
|
+
</svg>
|
|
14
|
+
);
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
export const CloseFillIcon = (props: { className?: string }) => (
|
|
2
|
+
<svg
|
|
3
|
+
{...props}
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5
|
+
width="24"
|
|
6
|
+
height="24"
|
|
7
|
+
viewBox="0 0 24 24"
|
|
8
|
+
>
|
|
9
|
+
<path
|
|
10
|
+
fill="currentColor"
|
|
11
|
+
d="m12 10.586l4.95-4.95l1.415 1.415l-4.95 4.95l4.95 4.95l-1.415 1.414l-4.95-4.95l-4.95 4.95l-1.413-1.415l4.95-4.95l-4.95-4.95L7.05 5.638l4.95 4.95Z"
|
|
12
|
+
/>
|
|
13
|
+
</svg>
|
|
14
|
+
);
|
|
15
|
+
export const CloseCircleFillIcon = (props: { className?: string }) => (
|
|
16
|
+
<svg
|
|
17
|
+
{...props}
|
|
18
|
+
width="24"
|
|
19
|
+
height="24"
|
|
20
|
+
viewBox="0 0 24 24"
|
|
21
|
+
fill="none"
|
|
22
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
23
|
+
>
|
|
24
|
+
<path
|
|
25
|
+
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 10.5858L9.17157 7.75736L7.75736 9.17157L10.5858 12L7.75736 14.8284L9.17157 16.2426L12 13.4142L14.8284 16.2426L16.2426 14.8284L13.4142 12L16.2426 9.17157L14.8284 7.75736L12 10.5858Z"
|
|
26
|
+
fill="currentColor"
|
|
27
|
+
/>
|
|
28
|
+
</svg>
|
|
29
|
+
);
|
|
30
|
+
export const ErrorWarningFillIcon = (props: { className?: string }) => (
|
|
31
|
+
<svg
|
|
32
|
+
{...props}
|
|
33
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
34
|
+
width="24"
|
|
35
|
+
height="24"
|
|
36
|
+
viewBox="0 0 24 24"
|
|
37
|
+
>
|
|
38
|
+
<path
|
|
39
|
+
fill="currentColor"
|
|
40
|
+
d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10Zm-1-7v2h2v-2h-2Zm0-8v6h2V7h-2Z"
|
|
41
|
+
/>
|
|
42
|
+
</svg>
|
|
43
|
+
);
|
|
44
|
+
export const AlertFillIcon = (props: { className?: string }) => (
|
|
45
|
+
<svg
|
|
46
|
+
{...props}
|
|
47
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
48
|
+
width="24"
|
|
49
|
+
height="24"
|
|
50
|
+
viewBox="0 0 24 24"
|
|
51
|
+
>
|
|
52
|
+
<path
|
|
53
|
+
fill="currentColor"
|
|
54
|
+
d="m12.865 3l9.526 16.5a1 1 0 0 1-.866 1.5H2.473a1 1 0 0 1-.866-1.5L11.133 3a1 1 0 0 1 1.732 0Zm-1.866 13v2h2v-2h-2Zm0-7v5h2V9h-2Z"
|
|
55
|
+
/>
|
|
56
|
+
</svg>
|
|
57
|
+
);
|
|
58
|
+
export const CheckboxCircleFillIcon = (props: { className?: string }) => (
|
|
59
|
+
<svg
|
|
60
|
+
{...props}
|
|
61
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
62
|
+
width="24"
|
|
63
|
+
height="24"
|
|
64
|
+
viewBox="0 0 24 24"
|
|
65
|
+
>
|
|
66
|
+
<path
|
|
67
|
+
fill="currentColor"
|
|
68
|
+
d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10s-4.477 10-10 10Zm-.997-6l7.07-7.071l-1.413-1.414l-5.657 5.657l-2.829-2.829l-1.414 1.414L11.003 16Z"
|
|
69
|
+
/>
|
|
70
|
+
</svg>
|
|
71
|
+
);
|
|
72
|
+
export const EyeFillIcon = (props: { className?: string }) => (
|
|
73
|
+
<svg
|
|
74
|
+
{...props}
|
|
75
|
+
width="24"
|
|
76
|
+
height="24"
|
|
77
|
+
viewBox="0 0 24 24"
|
|
78
|
+
fill="none"
|
|
79
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
80
|
+
>
|
|
81
|
+
<path
|
|
82
|
+
d="M1.18164 12C2.12215 6.87976 6.60812 3 12.0003 3C17.3924 3 21.8784 6.87976 22.8189 12C21.8784 17.1202 17.3924 21 12.0003 21C6.60812 21 2.12215 17.1202 1.18164 12ZM12.0003 17C14.7617 17 17.0003 14.7614 17.0003 12C17.0003 9.23858 14.7617 7 12.0003 7C9.23884 7 7.00026 9.23858 7.00026 12C7.00026 14.7614 9.23884 17 12.0003 17ZM12.0003 15C10.3434 15 9.00026 13.6569 9.00026 12C9.00026 10.3431 10.3434 9 12.0003 9C13.6571 9 15.0003 10.3431 15.0003 12C15.0003 13.6569 13.6571 15 12.0003 15Z"
|
|
83
|
+
fill="currentColor"
|
|
84
|
+
/>
|
|
85
|
+
</svg>
|
|
86
|
+
);
|
|
87
|
+
export const InformationFillIcon = (props: { className?: string }) => (
|
|
88
|
+
<svg
|
|
89
|
+
{...props}
|
|
90
|
+
width="24"
|
|
91
|
+
height="24"
|
|
92
|
+
viewBox="0 0 24 24"
|
|
93
|
+
fill="none"
|
|
94
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
95
|
+
>
|
|
96
|
+
<path
|
|
97
|
+
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM11 11V17H13V11H11ZM11 7V9H13V7H11Z"
|
|
98
|
+
fill="currentColor"
|
|
99
|
+
/>
|
|
100
|
+
</svg>
|
|
101
|
+
);
|
|
102
|
+
export const FilterFillIcon = (props: { className?: string }) => (
|
|
103
|
+
<svg
|
|
104
|
+
{...props}
|
|
105
|
+
width="24"
|
|
106
|
+
height="24"
|
|
107
|
+
viewBox="0 0 24 24"
|
|
108
|
+
fill="none"
|
|
109
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
110
|
+
>
|
|
111
|
+
<path d="M21 4V6H20L14 15V22H10V15L4 6H3V4H21Z" fill="currentColor" />
|
|
112
|
+
</svg>
|
|
113
|
+
);
|
package/src/cds/index.ts
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import React, { useRef, useState } from "react";
|
|
2
|
+
import Button, { ButtonColor, ButtonSize } from "../../components/Button";
|
|
3
|
+
import DropdownMenu, { DropdownMenuProps } from "./DropdownMenu";
|
|
4
|
+
import { ArrowDropDownFillIcon } from "../../icons/arrows";
|
|
5
|
+
|
|
6
|
+
/* 드롭다운 패턴은 버튼 컴포넌트와 드롭다운 메뉴 컴포넌트를 합쳐서 사용합니다.
|
|
7
|
+
드롭다운 메뉴 컴포넌트는 MUI의 Menu 컴포넌트를 사용하며, 드롭다운 아이템의 리스트 형태로 구성됩니다.
|
|
8
|
+
|
|
9
|
+
<DropdownMenu>
|
|
10
|
+
드롭다운 메뉴는 기본값으로 Mui Modal의 성질을 갖고 있어서 클릭 이벤트가 발생하면 메뉴가 열리고,
|
|
11
|
+
생성된 메뉴 외부 영역을 클릭하면 메뉴가 닫힙니다.
|
|
12
|
+
그런데, 중첩된 드롭다운 메뉴를 구현할 때 이러한 성질이 문제가 됩니다.
|
|
13
|
+
이 생성된 메뉴 외부 영역이 상위 드롭다운 메뉴를 가려서 클릭이 되지 않기 때문입니다.
|
|
14
|
+
그래서 중첩된 메뉴(isNestedMenu)의 경우 이 모달의 position을 적절히 이동시켜 상위 메뉴와 상호작용 할 수 있게 만들었습니다.
|
|
15
|
+
또한 메뉴에서 열려있는 서브메뉴가 최대 하나만 존재하게 하기 위해 selectedIndex 상태를 추가했습니다.
|
|
16
|
+
handleClick을 통해 아이템이 아닌 다른 곳을 클릭하면 메뉴가 닫히도록 했습니다.
|
|
17
|
+
|
|
18
|
+
<DropdownItem>
|
|
19
|
+
드롭다운 아이템의 서브메뉴가 열리는 조건은 복잡합니다.
|
|
20
|
+
1. 서브메뉴가 존재해야 하고,(isSubMenuExist)
|
|
21
|
+
2. 드롭다운 아이템이 클릭되어 내부 상태(isSubMenuOpen)가 true가 되어야 하며,
|
|
22
|
+
3. 서브메뉴 노출이 허용되어 있어야 합니다.(shouldSubMenuOpen)
|
|
23
|
+
|
|
24
|
+
드롭다운 메뉴의 handleClick은 드롭다운 메뉴를 닫는 역할을 하므로,
|
|
25
|
+
드롭다운 아이템의 handleClick은 e.stopPropagation()을 통해 이벤트 전파를 막습니다.
|
|
26
|
+
그리고 드롭다운 아이템을 클릭하면 내부 상태(isSubMenuOpen)를 true로 만들고,
|
|
27
|
+
onClick을 통해 전달된 함수를 통해 드롭다운 메뉴의 selectedIndex 상태를 변경합니다.
|
|
28
|
+
이 selectedIndex 상태를 이용해서 서브메뉴 노출 허용여부(shouldSubMenuOpen)를 전달했습니다.
|
|
29
|
+
이를 통해 서브메뉴는 최대 하나만 열리도록 구현했습니다.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
export interface DropdownProps {
|
|
33
|
+
className?: string;
|
|
34
|
+
component?: React.ElementType;
|
|
35
|
+
|
|
36
|
+
/** 버튼 비활성화 여부 */
|
|
37
|
+
disabled?: boolean;
|
|
38
|
+
|
|
39
|
+
/** 버튼 컴포넌트 색상 */
|
|
40
|
+
color?: ButtonColor;
|
|
41
|
+
|
|
42
|
+
/** 버튼 컴포넌트 크기 */
|
|
43
|
+
size?: ButtonSize;
|
|
44
|
+
|
|
45
|
+
/** 버튼 컴포넌트 내 좌측에 표기될 아이콘 */
|
|
46
|
+
startIcon?: React.ReactNode;
|
|
47
|
+
|
|
48
|
+
/** 버튼 컴포넌트 내 우측에 표기될 아이콘 */
|
|
49
|
+
endIcon?: React.ReactNode;
|
|
50
|
+
|
|
51
|
+
/** 버튼 컴포넌트 내 표기될 문자열 */
|
|
52
|
+
label: string;
|
|
53
|
+
|
|
54
|
+
/** 버튼 클릭 시 호출될 콜백 함수 */
|
|
55
|
+
onClick?: () => void;
|
|
56
|
+
|
|
57
|
+
/** 드롭다운 메뉴의 props */
|
|
58
|
+
menuProps: DropdownMenuProps;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* [피그마](https://www.figma.com/file/PnQp3tPxiCjgsPZfLUaUL1/Codle-PD-Kit---Patterns?type=design&node-id=203-95329&t=FwczLZ1IVvskUVbT-0)
|
|
63
|
+
*/
|
|
64
|
+
export default function Dropdown(props: DropdownProps) {
|
|
65
|
+
const {
|
|
66
|
+
className,
|
|
67
|
+
component: Component = "div",
|
|
68
|
+
disabled,
|
|
69
|
+
color = "primary",
|
|
70
|
+
size = "medium",
|
|
71
|
+
startIcon,
|
|
72
|
+
endIcon = <ArrowDropDownFillIcon />,
|
|
73
|
+
label,
|
|
74
|
+
onClick,
|
|
75
|
+
menuProps,
|
|
76
|
+
} = props;
|
|
77
|
+
const buttonProps = {
|
|
78
|
+
disabled,
|
|
79
|
+
color,
|
|
80
|
+
size,
|
|
81
|
+
startIcon,
|
|
82
|
+
endIcon,
|
|
83
|
+
};
|
|
84
|
+
const menuRef = useRef<HTMLButtonElement | null>(null);
|
|
85
|
+
const [open, setOpen] = useState(false);
|
|
86
|
+
|
|
87
|
+
const handleClick = () => {
|
|
88
|
+
onClick?.();
|
|
89
|
+
setOpen(true);
|
|
90
|
+
};
|
|
91
|
+
const handleClose = (e: React.MouseEvent<HTMLElement>) => {
|
|
92
|
+
menuProps.onClose?.(e);
|
|
93
|
+
setOpen(false);
|
|
94
|
+
};
|
|
95
|
+
return (
|
|
96
|
+
<Component className={className}>
|
|
97
|
+
<Button
|
|
98
|
+
ref={menuRef}
|
|
99
|
+
{...buttonProps}
|
|
100
|
+
label={label}
|
|
101
|
+
onClick={handleClick}
|
|
102
|
+
/>
|
|
103
|
+
<DropdownMenu
|
|
104
|
+
{...menuProps}
|
|
105
|
+
open={open}
|
|
106
|
+
onClose={handleClose}
|
|
107
|
+
anchorEl={menuRef.current}
|
|
108
|
+
/>
|
|
109
|
+
</Component>
|
|
110
|
+
);
|
|
111
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/** @jsxImportSource @emotion/react */
|
|
2
|
+
import { css, Theme } from "@emotion/react";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import styled from "@emotion/styled";
|
|
5
|
+
import { MenuItem } from "@mui/material";
|
|
6
|
+
import { HOVER } from "../../utils/hover";
|
|
7
|
+
import CheckboxInput, {
|
|
8
|
+
CheckboxInputProps,
|
|
9
|
+
} from "../../components/CheckboxInput";
|
|
10
|
+
import { useRef, useState } from "react";
|
|
11
|
+
import DropdownMenu, { DropdownMenuProps } from "./DropdownMenu";
|
|
12
|
+
import { ArrowRightSLineIcon } from "../../icons/arrows";
|
|
13
|
+
|
|
14
|
+
export type DropdownItemType = "default" | "danger";
|
|
15
|
+
|
|
16
|
+
export const DROPDOWN_ITEM_WIDTH = 116;
|
|
17
|
+
|
|
18
|
+
const TYPE_TO_COLOR = (theme: Theme, type: DropdownItemType): string => {
|
|
19
|
+
return {
|
|
20
|
+
default: theme.color.foreground.neutralBase,
|
|
21
|
+
danger: theme.color.foreground.danger,
|
|
22
|
+
}[type];
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export interface DropdownItemProps {
|
|
26
|
+
className?: string;
|
|
27
|
+
component?: React.ElementType;
|
|
28
|
+
|
|
29
|
+
/** 드롭다운 아이템의 타입 */
|
|
30
|
+
type?: DropdownItemType;
|
|
31
|
+
/** 체크박스 노출여부 */
|
|
32
|
+
checkbox?: boolean;
|
|
33
|
+
/** 체크박스 설정 props. 초기 체크여부 및 체크박스 값 변경시 호출되는 함수 등을 지정합니다. */
|
|
34
|
+
checkboxProps?: CheckboxInputProps;
|
|
35
|
+
/** 시작 아이콘 설정 */
|
|
36
|
+
startIcon?: React.ReactNode;
|
|
37
|
+
/** 드롭다운 아이템의 라벨 */
|
|
38
|
+
label?: string;
|
|
39
|
+
/** 끝 아이콘 설정. subMenuProps가 없으면 노출되지 않습니다. */
|
|
40
|
+
endIcon?: React.ReactNode;
|
|
41
|
+
/** 비활성화 여부 */
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
/** 드롭다운 아이템의 활성화 여부. 서브 메뉴가 노출될 때 true가 됩니다. */
|
|
44
|
+
active?: boolean;
|
|
45
|
+
/** 드롭다운 아이템 마우스 호버 시 호출될 콜백 함수 */
|
|
46
|
+
onMouseEnter?: (e: React.MouseEvent<HTMLElement>) => void;
|
|
47
|
+
/** 드롭다운 아이템 마우스 아웃 시 호출될 콜백 함수 */
|
|
48
|
+
onMouseLeave?: (e: React.MouseEvent<HTMLElement>) => void;
|
|
49
|
+
/** 드롭다운 아이템 클릭 시 호출될 콜백 함수 */
|
|
50
|
+
onClick?: (e: React.MouseEvent<HTMLElement>) => void;
|
|
51
|
+
/** 드롭다운 아이템의 서브 메뉴가 열려야 하는지 여부 */
|
|
52
|
+
shouldSubMenuOpen?: boolean;
|
|
53
|
+
/** 아이템이 가지는 드롭다운 메뉴 props. 주어지지 않으면 서브메뉴가 없습니다. */
|
|
54
|
+
subMenuProps?: DropdownMenuProps;
|
|
55
|
+
/** 드롭다운 아이템의 서브 메뉴가 닫힐 때 실행할 콜백함수 */
|
|
56
|
+
onSubMenuClose?: (e: React.MouseEvent<HTMLElement>) => void;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* [피그마](https://www.figma.com/file/PnQp3tPxiCjgsPZfLUaUL1/Codle-PD-Kit---Patterns?type=design&node-id=106-1900&t=FwczLZ1IVvskUVbT-0)
|
|
61
|
+
*/
|
|
62
|
+
const DropdownItem = React.forwardRef<any, DropdownItemProps>(
|
|
63
|
+
(props, ref): React.ReactElement => {
|
|
64
|
+
const {
|
|
65
|
+
className,
|
|
66
|
+
component: Component = "div",
|
|
67
|
+
type = "default",
|
|
68
|
+
checkbox,
|
|
69
|
+
checkboxProps = { checked: false },
|
|
70
|
+
startIcon,
|
|
71
|
+
label,
|
|
72
|
+
endIcon = <ArrowRightSLineIcon />,
|
|
73
|
+
disabled,
|
|
74
|
+
active,
|
|
75
|
+
onMouseEnter,
|
|
76
|
+
onMouseLeave,
|
|
77
|
+
onClick,
|
|
78
|
+
shouldSubMenuOpen = false,
|
|
79
|
+
subMenuProps = {
|
|
80
|
+
itemsProps: [],
|
|
81
|
+
},
|
|
82
|
+
onSubMenuClose,
|
|
83
|
+
...other
|
|
84
|
+
} = props;
|
|
85
|
+
const itemRef = useRef<HTMLLIElement | null>(null);
|
|
86
|
+
const [isSubMenuOpen, setIsSubMenuOpen] = useState(false);
|
|
87
|
+
const handleClick = (e: React.MouseEvent<HTMLElement>) => {
|
|
88
|
+
e.stopPropagation();
|
|
89
|
+
setIsSubMenuOpen(true);
|
|
90
|
+
onClick?.(e);
|
|
91
|
+
};
|
|
92
|
+
const handleClose = (e: React.MouseEvent<HTMLElement>) => {
|
|
93
|
+
setIsSubMenuOpen(false);
|
|
94
|
+
onSubMenuClose?.(e);
|
|
95
|
+
};
|
|
96
|
+
const isSubMenuExist = subMenuProps.itemsProps.length > 0;
|
|
97
|
+
const isSubMenuShowed =
|
|
98
|
+
isSubMenuExist && isSubMenuOpen && shouldSubMenuOpen;
|
|
99
|
+
|
|
100
|
+
return (
|
|
101
|
+
<Component
|
|
102
|
+
className={className}
|
|
103
|
+
ref={ref}
|
|
104
|
+
onMouseEnter={onMouseEnter}
|
|
105
|
+
onMouseLeave={onMouseLeave}
|
|
106
|
+
onClick={handleClick}
|
|
107
|
+
{...other}
|
|
108
|
+
>
|
|
109
|
+
<StyledMenuItem
|
|
110
|
+
ref={itemRef}
|
|
111
|
+
disabled={disabled}
|
|
112
|
+
selected={isSubMenuShowed || active}
|
|
113
|
+
>
|
|
114
|
+
<LeftWrapper>
|
|
115
|
+
{checkbox && (
|
|
116
|
+
<StyledCheckboxInput
|
|
117
|
+
{...checkboxProps}
|
|
118
|
+
onClick={(e) => {
|
|
119
|
+
e.stopPropagation();
|
|
120
|
+
checkboxProps.onClick?.(e);
|
|
121
|
+
}}
|
|
122
|
+
/>
|
|
123
|
+
)}
|
|
124
|
+
{startIcon && <IconDiv type={type}>{startIcon}</IconDiv>}
|
|
125
|
+
<LabelDiv type={type}>{label}</LabelDiv>
|
|
126
|
+
</LeftWrapper>
|
|
127
|
+
{isSubMenuExist && <IconDiv type={type}>{endIcon}</IconDiv>}
|
|
128
|
+
</StyledMenuItem>
|
|
129
|
+
{isSubMenuExist && (
|
|
130
|
+
<DropdownMenu
|
|
131
|
+
{...subMenuProps}
|
|
132
|
+
open={isSubMenuShowed}
|
|
133
|
+
anchorEl={itemRef.current}
|
|
134
|
+
isNestedMenu={true}
|
|
135
|
+
onClose={handleClose}
|
|
136
|
+
anchorOrigin={{
|
|
137
|
+
vertical: "top",
|
|
138
|
+
horizontal: "right",
|
|
139
|
+
}}
|
|
140
|
+
/>
|
|
141
|
+
)}
|
|
142
|
+
</Component>
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
const StyledCheckboxInput = styled(CheckboxInput)`
|
|
148
|
+
margin: 4px;
|
|
149
|
+
`;
|
|
150
|
+
|
|
151
|
+
const IconDiv = styled.div<{ type: DropdownItemType }>(
|
|
152
|
+
({ theme, type }) => css`
|
|
153
|
+
width: 14px;
|
|
154
|
+
height: 14px;
|
|
155
|
+
svg {
|
|
156
|
+
width: 14px;
|
|
157
|
+
height: 14px;
|
|
158
|
+
path {
|
|
159
|
+
fill: ${TYPE_TO_COLOR(theme, type)};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
`
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
const LabelDiv = styled.div<{ type: DropdownItemType }>`
|
|
166
|
+
overflow: hidden;
|
|
167
|
+
text-overflow: ellipsis;
|
|
168
|
+
white-space: nowrap;
|
|
169
|
+
font-size: 14px;
|
|
170
|
+
color: ${({ theme, type }) => TYPE_TO_COLOR(theme, type)};
|
|
171
|
+
`;
|
|
172
|
+
|
|
173
|
+
const LeftWrapper = styled.div`
|
|
174
|
+
display: flex;
|
|
175
|
+
align-items: center;
|
|
176
|
+
overflow: hidden;
|
|
177
|
+
white-space: nowrap;
|
|
178
|
+
gap: 4px;
|
|
179
|
+
`;
|
|
180
|
+
|
|
181
|
+
const StyledMenuItem = styled(MenuItem)(
|
|
182
|
+
({ theme }) => css`
|
|
183
|
+
&.MuiMenuItem-root {
|
|
184
|
+
background-color: ${theme.color.background.neutralBase};
|
|
185
|
+
width: ${DROPDOWN_ITEM_WIDTH}px;
|
|
186
|
+
height: 32px;
|
|
187
|
+
border-radius: 6px;
|
|
188
|
+
padding: 4px 8px 4px 8px;
|
|
189
|
+
display: flex;
|
|
190
|
+
align-items: center;
|
|
191
|
+
justify-content: space-between;
|
|
192
|
+
line-height: 14px;
|
|
193
|
+
${HOVER(css`
|
|
194
|
+
background-color: ${theme.color.background.neutralAlt};
|
|
195
|
+
`)}
|
|
196
|
+
&.Mui-selected {
|
|
197
|
+
background-color: ${theme.color.background.neutralAlt};
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
`
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
export default DropdownItem;
|