@lunit/design-system 1.0.0-b.3 → 1.0.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.
Files changed (77) hide show
  1. package/dist/cjs/components/Alert/index.js +1 -1
  2. package/dist/cjs/components/Alert/index.js.map +1 -1
  3. package/dist/cjs/components/Button/index.js +1 -1
  4. package/dist/cjs/components/Button/index.js.map +1 -1
  5. package/dist/cjs/components/Chip/index.js +1 -1
  6. package/dist/cjs/components/Chip/index.js.map +1 -1
  7. package/dist/cjs/components/TextField/index.js +1 -1
  8. package/dist/cjs/components/TextField/index.js.map +1 -1
  9. package/dist/cjs/components/Toggle/index.js +1 -1
  10. package/dist/cjs/components/Toggle/index.js.map +1 -1
  11. package/dist/cjs/components/ToggleButton/index.js +1 -1
  12. package/dist/cjs/components/ToggleButton/index.js.map +1 -1
  13. package/dist/cjs/index.js +1 -1
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/components/Button/Button.js +30 -6
  16. package/dist/components/Button/Button.js.map +1 -1
  17. package/dist/components/Button/Button.styled.js +1 -10
  18. package/dist/components/Button/Button.styled.js.map +1 -1
  19. package/dist/components/Chip/Chip.js +6 -5
  20. package/dist/components/Chip/Chip.js.map +1 -1
  21. package/dist/components/TextField/TextField.js +4 -4
  22. package/dist/components/TextField/TextField.js.map +1 -1
  23. package/dist/components/Toggle/Toggle.js +4 -4
  24. package/dist/components/Toggle/Toggle.js.map +1 -1
  25. package/dist/components/Toggle/Toggle.styled.js +2 -3
  26. package/dist/components/Toggle/Toggle.styled.js.map +1 -1
  27. package/dist/components/ToggleButton/ToggleButton.js +6 -5
  28. package/dist/components/ToggleButton/ToggleButton.js.map +1 -1
  29. package/dist/components/ToggleButton/ToggleButton.styled.js +9 -2
  30. package/dist/components/ToggleButton/ToggleButton.styled.js.map +1 -1
  31. package/dist/foundation/Typography/index.js +20 -2
  32. package/dist/foundation/Typography/index.js.map +1 -1
  33. package/dist/foundation/Typography/tokens.js +2 -2
  34. package/dist/foundation/colors/index.js +4 -0
  35. package/dist/foundation/colors/index.js.map +1 -1
  36. package/dist/foundation/colors/token/core.js +0 -2
  37. package/dist/foundation/colors/token/core.js.map +1 -1
  38. package/dist/foundation/index.js +1 -1
  39. package/dist/foundation/index.js.map +1 -1
  40. package/dist/types/components/Button/Button.styled.d.ts +0 -8
  41. package/dist/types/components/Button/Button.types.d.ts +8 -5
  42. package/dist/types/components/Chip/Chip.types.d.ts +7 -2
  43. package/dist/types/components/TextField/TextField.types.d.ts +8 -3
  44. package/dist/types/components/Toggle/Toggle.d.ts +1 -1
  45. package/dist/types/components/Toggle/Toggle.styled.d.ts +1 -1
  46. package/dist/types/components/Toggle/Toggle.types.d.ts +5 -5
  47. package/dist/types/components/ToggleButton/ToggleButton.d.ts +2 -2
  48. package/dist/types/components/ToggleButton/ToggleButton.styled.d.ts +4 -0
  49. package/dist/types/components/ToggleButton/ToggleButton.types.d.ts +4 -5
  50. package/dist/types/foundation/Typography/index.d.ts +21 -4
  51. package/dist/types/foundation/Typography/tokens.d.ts +2 -2
  52. package/dist/types/foundation/colors/index.d.ts +4 -0
  53. package/dist/types/foundation/index.d.ts +4 -0
  54. package/package.json +1 -1
  55. package/src/components/Button/Button.styled.ts +1 -10
  56. package/src/components/Button/Button.tsx +120 -37
  57. package/src/components/Button/Button.types.ts +8 -4
  58. package/src/components/Chip/Chip.tsx +15 -4
  59. package/src/components/Chip/Chip.types.ts +9 -2
  60. package/src/components/TextField/TextField.tsx +10 -10
  61. package/src/components/TextField/TextField.types.ts +11 -4
  62. package/src/components/Toggle/Toggle.styled.ts +4 -4
  63. package/src/components/Toggle/Toggle.tsx +28 -9
  64. package/src/components/Toggle/Toggle.types.ts +8 -8
  65. package/src/components/ToggleButton/ToggleButton.styled.ts +14 -7
  66. package/src/components/ToggleButton/ToggleButton.tsx +92 -79
  67. package/src/components/ToggleButton/ToggleButton.types.ts +5 -4
  68. package/src/foundation/Typography/index.ts +20 -2
  69. package/src/foundation/Typography/tokens.ts +2 -2
  70. package/src/foundation/colors/index.ts +4 -0
  71. package/src/foundation/colors/token/core.ts +0 -2
  72. package/src/foundation/index.ts +1 -1
  73. package/src/stories/components/Button/BasicButton.stories.tsx +11 -0
  74. package/src/stories/components/Button/IconButton.stories.tsx +11 -0
  75. package/src/stories/components/Button/Kind.stories.tsx +62 -25
  76. package/src/stories/components/Chip/Chip.stories.tsx +15 -5
  77. package/src/stories/components/SelectControl/Toggle.stories.tsx +10 -10
@@ -1,18 +1,37 @@
1
- import React from 'react'
2
- import { CommonToggle, CommonIndeterminateToggle } from './Toggle.styled'
3
- import type { ToggleProps } from './Toggle.types'
4
-
1
+ import React from "react";
2
+ import { CommonToggle, CommonIndeterminateToggle } from "./Toggle.styled";
3
+ import type { ToggleProps } from "./Toggle.types";
5
4
 
6
5
  const Toggle = (props: ToggleProps) => {
7
- const { size = "medium", indeterminate = false, disableRipple, ...switchProps } = props
6
+ const {
7
+ size = "small",
8
+ indeterminate = false,
9
+ disableRipple,
10
+ ...switchProps
11
+ } = props;
8
12
 
9
13
  if (indeterminate) {
10
14
  const { checked: _, ...restProps } = switchProps;
11
15
  // can't use checked props with indeterminate
12
- return <CommonIndeterminateToggle toggleSize={size} checked focusRipple={false} disableRipple={disableRipple} {...restProps} />
16
+ return (
17
+ <CommonIndeterminateToggle
18
+ toggleSize={size}
19
+ checked
20
+ focusRipple={false}
21
+ disableRipple={disableRipple}
22
+ {...restProps}
23
+ />
24
+ );
13
25
  }
14
26
 
15
- return <CommonToggle toggleSize={size} focusRipple={false} disableRipple={disableRipple} {...switchProps}/>
16
- }
27
+ return (
28
+ <CommonToggle
29
+ toggleSize={size}
30
+ focusRipple={false}
31
+ disableRipple={disableRipple}
32
+ {...switchProps}
33
+ />
34
+ );
35
+ };
17
36
 
18
- export default Toggle
37
+ export default Toggle;
@@ -1,14 +1,14 @@
1
- import type { SwitchProps } from "@mui/material"
1
+ import type { SwitchProps } from "@mui/material";
2
2
 
3
- export interface ToggleProps extends Omit<SwitchProps, "size" > {
3
+ export interface ToggleProps extends Omit<SwitchProps, "size"> {
4
4
  /**
5
5
  * The size of the component.
6
- * @default medium
6
+ * @default small
7
7
  */
8
- size?: 'medium' | 'large'
8
+ size?: "small" | "large";
9
9
  /**
10
- * If `true`, the component has consistent 'checked' value and change shape.
11
- * @default false
12
- */
13
- indeterminate?: boolean
10
+ * If `true`, the component has consistent 'checked' value and change shape.
11
+ * @default false
12
+ */
13
+ indeterminate?: boolean;
14
14
  }
@@ -2,12 +2,7 @@ import { styled } from "@mui/material/styles";
2
2
  import { ToggleButton as MuiToggleButton } from "@mui/material";
3
3
 
4
4
  import type { ToggleButtonProps } from "../ToggleButton/ToggleButton.types";
5
- import {
6
- commonStyle,
7
- sizeStyle,
8
- kindStyle,
9
- iconStyle,
10
- } from "../Button/Button.styled";
5
+ import { commonStyle, sizeStyle, kindStyle } from "../Button/Button.styled";
11
6
 
12
7
  type CustomToggleButtonProps = ToggleButtonProps & { hasIconOnly: boolean };
13
8
 
@@ -31,7 +26,6 @@ export const CustomToggleButton = styled(MuiToggleButton, {
31
26
  return {
32
27
  border: "none",
33
28
  ...commonStyle({ lunit_token }),
34
- ...iconStyle({ size, hasIconOnly }),
35
29
  ...sizeStyle({ size, kind, hasIconOnly, selected, typography }),
36
30
  ...kindStyle({ kind, color, lunit_token }),
37
31
  ...(selectedColor === "primary" && {
@@ -56,3 +50,16 @@ export const IconAndChildrenWrapper = styled("div")({
56
50
  display: "flex",
57
51
  alignItems: "center",
58
52
  });
53
+
54
+ export const IconWrapper = styled("div")<{
55
+ hasIconOnly: boolean;
56
+ size: string;
57
+ }>(({ hasIconOnly, size }) => ({
58
+ width: "20px",
59
+ height: "20px",
60
+ marginRight: hasIconOnly ? "0px" : size === "large" ? "8px" : "4px",
61
+
62
+ "*:nth-of-type(1)": {
63
+ fontSize: "20px",
64
+ },
65
+ }));
@@ -1,89 +1,102 @@
1
- import React from "react";
1
+ import React, { forwardRef } from "react";
2
2
  import {
3
+ IconWrapper,
3
4
  CustomToggleButton,
4
5
  IconAndChildrenWrapper,
5
6
  } from "./ToggleButton.styled";
6
7
  import type { ToggleButtonProps } from "./ToggleButton.types";
7
8
 
8
- const ToggleButton = (props: ToggleButtonProps) => {
9
- const {
10
- kind = "contained",
11
- size = "small",
12
- color = "primary",
13
- selectedColor = "primary",
14
- className = "",
15
- icon,
16
- selected,
17
- children,
18
- ...buttonProps
19
- } = props;
9
+ const ToggleButton = forwardRef<HTMLButtonElement, ToggleButtonProps>(
10
+ (props, ref) => {
11
+ const {
12
+ kind = "contained",
13
+ size = "small",
14
+ color = "primary",
15
+ selectedColor = "primary",
16
+ className = "",
17
+ icon,
18
+ selected,
19
+ children,
20
+ ...buttonProps
21
+ } = props;
20
22
 
21
- const hasIconOnly = Boolean(icon && !children);
22
- const excludeToggleGroupClass = className
23
- .replace("MuiToggleButtonGroup-grouped", "")
24
- .replace("MuiToggleButtonGroup-groupedHorizontal", "");
23
+ const hasIconOnly = Boolean(icon && !children);
24
+ const excludeToggleGroupClass = className
25
+ .replace("MuiToggleButtonGroup-grouped", "")
26
+ .replace("MuiToggleButtonGroup-groupedHorizontal", "");
25
27
 
26
- return (
27
- <>
28
- {kind === "contained" || kind === "ghost" ? (
29
- <CustomToggleButton
30
- className={`${kind} ${excludeToggleGroupClass}`}
31
- selected={selected}
32
- kind={kind}
33
- color={color}
34
- size={size}
35
- hasIconOnly={hasIconOnly}
36
- selectedColor={selectedColor}
37
- disableRipple
38
- disableFocusRipple
39
- {...buttonProps}
40
- >
41
- {!hasIconOnly ? (
42
- <>
43
- {icon ? (
44
- <IconAndChildrenWrapper>
45
- {icon}
46
- {children}
47
- </IconAndChildrenWrapper>
48
- ) : (
49
- children
50
- )}
51
- </>
52
- ) : (
53
- icon
54
- )}
55
- </CustomToggleButton>
56
- ) : (
57
- <CustomToggleButton
58
- className={`outlined ${excludeToggleGroupClass}`}
59
- selected={selected}
60
- kind="outlined"
61
- color="primary"
62
- size={size}
63
- hasIconOnly={hasIconOnly}
64
- selectedColor={selectedColor}
65
- disableRipple
66
- disableFocusRipple
67
- {...buttonProps}
68
- >
69
- {!hasIconOnly ? (
70
- <>
71
- {icon ? (
72
- <IconAndChildrenWrapper>
73
- {icon}
74
- {children}
75
- </IconAndChildrenWrapper>
76
- ) : (
77
- children
78
- )}
79
- </>
80
- ) : (
81
- icon
82
- )}
83
- </CustomToggleButton>
84
- )}
85
- </>
86
- );
87
- };
28
+ return (
29
+ <>
30
+ {kind === "contained" || kind === "ghost" ? (
31
+ <CustomToggleButton
32
+ ref={ref}
33
+ className={`${kind} ${excludeToggleGroupClass}`}
34
+ selected={selected}
35
+ kind={kind}
36
+ color={color}
37
+ size={size}
38
+ hasIconOnly={hasIconOnly}
39
+ selectedColor={selectedColor}
40
+ disableRipple
41
+ disableFocusRipple
42
+ {...buttonProps}
43
+ >
44
+ {!hasIconOnly ? (
45
+ <>
46
+ {icon ? (
47
+ <IconAndChildrenWrapper>
48
+ <IconWrapper size={size} hasIconOnly={hasIconOnly}>
49
+ {icon}
50
+ </IconWrapper>
51
+ {children}
52
+ </IconAndChildrenWrapper>
53
+ ) : (
54
+ children
55
+ )}
56
+ </>
57
+ ) : (
58
+ <IconWrapper size={size} hasIconOnly={hasIconOnly}>
59
+ {icon}
60
+ </IconWrapper>
61
+ )}
62
+ </CustomToggleButton>
63
+ ) : (
64
+ <CustomToggleButton
65
+ ref={ref}
66
+ className={`outlined ${excludeToggleGroupClass}`}
67
+ selected={selected}
68
+ kind="outlined"
69
+ color="primary"
70
+ size={size}
71
+ hasIconOnly={hasIconOnly}
72
+ selectedColor={selectedColor}
73
+ disableRipple
74
+ disableFocusRipple
75
+ {...buttonProps}
76
+ >
77
+ {!hasIconOnly ? (
78
+ <>
79
+ {icon ? (
80
+ <IconAndChildrenWrapper>
81
+ <IconWrapper size={size} hasIconOnly={hasIconOnly}>
82
+ {icon}
83
+ </IconWrapper>
84
+ {children}
85
+ </IconAndChildrenWrapper>
86
+ ) : (
87
+ children
88
+ )}
89
+ </>
90
+ ) : (
91
+ <IconWrapper size={size} hasIconOnly={hasIconOnly}>
92
+ {icon}
93
+ </IconWrapper>
94
+ )}
95
+ </CustomToggleButton>
96
+ )}
97
+ </>
98
+ );
99
+ }
100
+ );
88
101
 
89
102
  export default ToggleButton;
@@ -1,20 +1,21 @@
1
1
  import type { ToggleButtonProps as MuiToggleButtonProps } from "@mui/material";
2
2
 
3
- interface ToggleButtonBaseProps extends Omit<MuiToggleButtonProps, "variant"> {
3
+ export interface ToggleButtonBaseProps
4
+ extends Omit<MuiToggleButtonProps, "variant"> {
4
5
  selectedColor?: "primary" | "secondary";
5
6
  icon?: React.ReactNode;
6
7
  }
7
- interface ContainedToggleButtonProps extends ToggleButtonBaseProps {
8
+ export interface ContainedToggleButtonProps extends ToggleButtonBaseProps {
8
9
  kind?: "contained";
9
10
  color?: "primary" | "secondary";
10
11
  }
11
12
 
12
- interface GhostToggleButtonProps extends ToggleButtonBaseProps {
13
+ export interface GhostToggleButtonProps extends ToggleButtonBaseProps {
13
14
  kind?: "ghost";
14
15
  color?: "primary" | "secondary";
15
16
  }
16
17
 
17
- interface OutlinedToggleButtonProps extends ToggleButtonBaseProps {
18
+ export interface OutlinedToggleButtonProps extends ToggleButtonBaseProps {
18
19
  kind?: "outlined";
19
20
  color?: "primary";
20
21
  }
@@ -79,13 +79,31 @@ export const typographyDefaultProps = {
79
79
 
80
80
  export const createTypographyCssBaseline = () => {
81
81
  return {
82
- html: {
83
- fontFamily,
82
+ "*, *:before, *:after": {
83
+ // @font-face: font-feature-settings로 대체 가능하나, 브라우저 지원이 부족함 https://caniuse.com/mdn-css_at-rules_font-face_font-feature-settings
84
84
  fontFeatureSettings: `'tnum', 'ss01', 'ss02', 'ss08'`,
85
85
  },
86
86
  ":root": {
87
87
  ...cssVariables,
88
88
  },
89
+ ".light1": {
90
+ color: "var(--text_normal)",
91
+ },
92
+ ".light2": {
93
+ color: "var(--text_normal)",
94
+ },
95
+ ".dark1": {
96
+ color: "var(--text_normal)",
97
+ },
98
+ ".dark2": {
99
+ color: "var(--text_normal)",
100
+ },
101
+ ".dark3": {
102
+ color: "var(--text_normal)",
103
+ },
104
+ ".dark4": {
105
+ color: "var(--text_normal)",
106
+ },
89
107
  };
90
108
  };
91
109
 
@@ -13,10 +13,10 @@ const headline = {
13
13
  "--headline1-line-height": "68px",
14
14
  "--headline2-font-weight": "var(--font-weight-bold)",
15
15
  "--headline2-font-size": "38px",
16
- "--headline2-line-height": "48px",
16
+ "--headline2-line-height": "65px",
17
17
  "--headline3-font-weight": "var(--font-weight-semibold)",
18
18
  "--headline3-font-size": "24px",
19
- "--headline3-line-height": "36px",
19
+ "--headline3-line-height": "57px",
20
20
  "--headline4-font-weight": "var(--font-weight-semibold)",
21
21
  "--headline4-font-size": "20px",
22
22
  "--headline4-line-height": "28px",
@@ -172,6 +172,10 @@ const paletteOptions = {
172
172
  main: base.green[40], // core.text_success.dark1
173
173
  },
174
174
  grey: base.greyForMUI,
175
+ text: {
176
+ primary: base.grey[5], // core.text_normal.dark1
177
+ secondary: base.grey[40], // core.text_medium.dark1
178
+ },
175
179
  lunit_global: lunitColors,
176
180
  lunit_token: {
177
181
  core: {
@@ -70,7 +70,6 @@ export const tokenCoreColor: TokenCoreColorValue = {
70
70
  dark4: "--red_30",
71
71
  },
72
72
  text_success: {
73
- // TODO: sucess -> success 로 바뀌었으니 코드 내 사용되는 부분 확인해서 업데이트. 개발자들에게도 공지할것.
74
73
  light1: "--green_40",
75
74
  light2: "--green_40",
76
75
  dark1: "--green_40",
@@ -127,7 +126,6 @@ export const tokenCoreColor: TokenCoreColorValue = {
127
126
  dark4: "--red_30",
128
127
  },
129
128
  icon_success_02: {
130
- // TODO: sucess -> success 로 바뀌었으니 코드 내 사용되는 부분 확인해서 업데이트. 개발자들에게도 공지할것.
131
129
  light1: "--green_40",
132
130
  light2: "--green_40",
133
131
  dark1: "--green_30",
@@ -9,7 +9,7 @@ import { createElevationCssBaseline, elevationOptions } from "./Elevation";
9
9
 
10
10
  export const foundationCssBaseline: Components<Theme>["MuiCssBaseline"] = {
11
11
  styleOverrides: deepmerge(
12
- deepmerge(createTypographyCssBaseline(), createColorCssBaseline()),
12
+ deepmerge(createColorCssBaseline(), createTypographyCssBaseline()),
13
13
  createElevationCssBaseline()
14
14
  ),
15
15
  };
@@ -50,6 +50,16 @@ export default {
50
50
  defaultValue: { summary: "contained" },
51
51
  },
52
52
  },
53
+ variant: {
54
+ control: {
55
+ type: "radio",
56
+ },
57
+ options: ["contained", "outlined", "text", "ghost"],
58
+ description: "The variant is alias of kind.",
59
+ table: {
60
+ defaultValue: { summary: "contained" },
61
+ },
62
+ },
53
63
  color: {
54
64
  control: {
55
65
  type: "radio",
@@ -98,6 +108,7 @@ export default {
98
108
  "disabled",
99
109
  "size",
100
110
  "kind",
111
+ "variant",
101
112
  "color",
102
113
  "icon",
103
114
  ],
@@ -36,6 +36,16 @@ export default {
36
36
  defaultValue: { summary: "contained" },
37
37
  },
38
38
  },
39
+ variant: {
40
+ control: {
41
+ type: "radio",
42
+ },
43
+ options: ["contained", "outlined", "text", "ghost"],
44
+ description: "The variant is alias of kind.",
45
+ table: {
46
+ defaultValue: { summary: "contained" },
47
+ },
48
+ },
39
49
  color: {
40
50
  control: {
41
51
  type: "radio",
@@ -85,6 +95,7 @@ export default {
85
95
  "disabled",
86
96
  "size",
87
97
  "kind",
98
+ "variant",
88
99
  "color",
89
100
  ],
90
101
  },