@team-monolith/cds 1.122.4 → 1.122.5

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 (188) hide show
  1. package/@types/emotion.d.ts +162 -162
  2. package/README.md +37 -37
  3. package/dist/CdsProvider.js +4 -4
  4. package/dist/components/AlertDialog/AlertDialog.js +54 -54
  5. package/dist/components/AlertDialog/AlertDialogActions.js +7 -7
  6. package/dist/components/AlertDialog/AlertDialogContent.js +8 -8
  7. package/dist/components/AlertDialog/AlertDialogTitle.js +34 -34
  8. package/dist/components/AnimatedButton.js +32 -32
  9. package/dist/components/Banner.js +51 -51
  10. package/dist/components/Book/Book.js +174 -174
  11. package/dist/components/Button.js +179 -179
  12. package/dist/components/CheckboxInput.js +148 -148
  13. package/dist/components/FileTypeAlertDialog.js +4 -4
  14. package/dist/components/Input.js +53 -53
  15. package/dist/components/InputBase.js +72 -72
  16. package/dist/components/Modal.js +4 -4
  17. package/dist/components/OverflowTooltip.js +4 -4
  18. package/dist/components/Pagination.js +56 -56
  19. package/dist/components/PinInput.js +64 -64
  20. package/dist/components/Popover.js +27 -27
  21. package/dist/components/RadioInput.js +73 -73
  22. package/dist/components/Slider.js +58 -58
  23. package/dist/components/SquareButton.js +109 -109
  24. package/dist/components/Switch.js +69 -69
  25. package/dist/components/SwitchButton.js +107 -107
  26. package/dist/components/Tag.js +72 -72
  27. package/dist/components/Tooltip.js +19 -19
  28. package/dist/foundation/breakpoints.d.ts +2 -0
  29. package/dist/foundation/breakpoints.js +18 -16
  30. package/dist/icons/custom/colored/ai-helper.svg +4 -4
  31. package/dist/icons/custom/colored/ai-quiz-color.svg +20 -20
  32. package/dist/icons/custom/colored/ai-socroom-color.svg +14 -14
  33. package/dist/icons/custom/colored/badge-color.svg +4 -4
  34. package/dist/icons/custom/colored/badge-gold.svg +11 -11
  35. package/dist/icons/custom/colored/badge-green.svg +11 -11
  36. package/dist/icons/custom/colored/badge-silver.svg +11 -11
  37. package/dist/icons/custom/colored/basic-plus.svg +31 -31
  38. package/dist/icons/custom/colored/basic.svg +3 -3
  39. package/dist/icons/custom/colored/board-color.svg +5 -5
  40. package/dist/icons/custom/colored/cast-cloudy-color.svg +6 -6
  41. package/dist/icons/custom/colored/cast-partly-color.svg +7 -7
  42. package/dist/icons/custom/colored/cast-rainbow-color.svg +13 -13
  43. package/dist/icons/custom/colored/cast-sunny-color.svg +4 -4
  44. package/dist/icons/custom/colored/clap-bronze.svg +8 -8
  45. package/dist/icons/custom/colored/clap-gold.svg +8 -8
  46. package/dist/icons/custom/colored/clap-silver.svg +8 -8
  47. package/dist/icons/custom/colored/class.svg +13 -13
  48. package/dist/icons/custom/colored/codap-color.svg +13 -13
  49. package/dist/icons/custom/colored/ebook-color.svg +5 -5
  50. package/dist/icons/custom/colored/embedded-color.svg +38 -38
  51. package/dist/icons/custom/colored/emo-clap-color.svg +252 -252
  52. package/dist/icons/custom/colored/emo-good-color.svg +68 -68
  53. package/dist/icons/custom/colored/emo-great-color.svg +67 -67
  54. package/dist/icons/custom/colored/emo-heart-color.svg +239 -239
  55. package/dist/icons/custom/colored/emo-hundred-color.svg +194 -194
  56. package/dist/icons/custom/colored/emo-neutral-color.svg +76 -76
  57. package/dist/icons/custom/colored/emo-stars-color.svg +121 -121
  58. package/dist/icons/custom/colored/emo-thumbup-color.svg +238 -238
  59. package/dist/icons/custom/colored/empty.svg +1 -1
  60. package/dist/icons/custom/colored/entry-color.svg +4 -4
  61. package/dist/icons/custom/colored/filename-all-color.svg +4 -4
  62. package/dist/icons/custom/colored/filename-doc-color.svg +5 -5
  63. package/dist/icons/custom/colored/filename-hwp-color.svg +6 -6
  64. package/dist/icons/custom/colored/filename-img-color.svg +6 -6
  65. package/dist/icons/custom/colored/filename-mp4-color.svg +5 -5
  66. package/dist/icons/custom/colored/filename-pdf-color.svg +12 -12
  67. package/dist/icons/custom/colored/filename-ppt-color.svg +6 -6
  68. package/dist/icons/custom/colored/filename-xls-color.svg +5 -5
  69. package/dist/icons/custom/colored/filename-zip-color.svg +5 -5
  70. package/dist/icons/custom/colored/google.svg +13 -13
  71. package/dist/icons/custom/colored/hand-fill.svg +4 -4
  72. package/dist/icons/custom/colored/judge-color.svg +6 -6
  73. package/dist/icons/custom/colored/makecode-color.svg +4 -4
  74. package/dist/icons/custom/colored/master.svg +12 -12
  75. package/dist/icons/custom/colored/material.svg +6 -6
  76. package/dist/icons/custom/colored/medal-bronze.svg +9 -9
  77. package/dist/icons/custom/colored/medal-gold.svg +9 -9
  78. package/dist/icons/custom/colored/medal-silver.svg +9 -9
  79. package/dist/icons/custom/colored/pro.svg +4 -4
  80. package/dist/icons/custom/colored/problem.svg +7 -7
  81. package/dist/icons/custom/colored/python-color.svg +4 -4
  82. package/dist/icons/custom/colored/quiz-color.svg +12 -12
  83. package/dist/icons/custom/colored/resource-color.svg +13 -13
  84. package/dist/icons/custom/colored/scratch-color.svg +6 -6
  85. package/dist/icons/custom/colored/type-helper.svg +9 -9
  86. package/dist/icons/custom/colored/whale.svg +7 -7
  87. package/dist/icons/custom/colored/worksheet-color.svg +5 -5
  88. package/dist/icons/custom/default/ai-quiz.svg +8 -8
  89. package/dist/icons/custom/default/ai-socroom.svg +13 -13
  90. package/dist/icons/custom/default/badge.svg +4 -4
  91. package/dist/icons/custom/default/board.svg +5 -5
  92. package/dist/icons/custom/default/cast-cloudy.svg +3 -3
  93. package/dist/icons/custom/default/cast-partly.svg +4 -4
  94. package/dist/icons/custom/default/cast-rainbow.svg +12 -12
  95. package/dist/icons/custom/default/cast-sunny.svg +3 -3
  96. package/dist/icons/custom/default/codap.svg +11 -11
  97. package/dist/icons/custom/default/ebook.svg +3 -3
  98. package/dist/icons/custom/default/embedded.svg +4 -4
  99. package/dist/icons/custom/default/emo-clap.svg +6 -6
  100. package/dist/icons/custom/default/emo-good.svg +12 -12
  101. package/dist/icons/custom/default/emo-great.svg +12 -12
  102. package/dist/icons/custom/default/emo-heart.svg +5 -5
  103. package/dist/icons/custom/default/emo-hundred.svg +3 -3
  104. package/dist/icons/custom/default/emo-neutral.svg +14 -14
  105. package/dist/icons/custom/default/emo-stars.svg +14 -14
  106. package/dist/icons/custom/default/emo-thumbup.svg +3 -3
  107. package/dist/icons/custom/default/entry.svg +4 -4
  108. package/dist/icons/custom/default/fab.svg +10 -10
  109. package/dist/icons/custom/default/grant-alt.svg +5 -5
  110. package/dist/icons/custom/default/grant.svg +4 -4
  111. package/dist/icons/custom/default/hand-line.svg +3 -3
  112. package/dist/icons/custom/default/judge.svg +3 -3
  113. package/dist/icons/custom/default/makecode.svg +5 -5
  114. package/dist/icons/custom/default/pdf.svg +3 -3
  115. package/dist/icons/custom/default/python.svg +7 -7
  116. package/dist/icons/custom/default/quiz.svg +4 -4
  117. package/dist/icons/custom/default/resource.svg +11 -11
  118. package/dist/icons/custom/default/scratch.svg +3 -3
  119. package/dist/icons/custom/default/scroll-alt.svg +5 -5
  120. package/dist/icons/custom/default/scroll-fill.svg +4 -4
  121. package/dist/icons/custom/default/scroll-line.svg +5 -5
  122. package/dist/icons/custom/default/symbol.svg +4 -4
  123. package/dist/icons/custom/default/worksheet.svg +4 -4
  124. package/dist/icons/custom/svgrColoredTemplate.js +26 -26
  125. package/dist/icons/custom/svgrDefaultTemplate.js +26 -26
  126. package/dist/patterns/Accordion.js +20 -20
  127. package/dist/patterns/Dropdown/DropdownItem/DropdownItem.js +60 -60
  128. package/dist/patterns/Dropdown/DropdownMenu/DropdownMenu.js +27 -27
  129. package/dist/patterns/Dropdown/DropdownMenu/style.js +19 -19
  130. package/dist/patterns/LexicalEditor/Plugins.js +36 -36
  131. package/dist/patterns/LexicalEditor/components/FileSelectInput.js +23 -23
  132. package/dist/patterns/LexicalEditor/components/InsertImageDialog/ImagePreview.js +4 -4
  133. package/dist/patterns/LexicalEditor/components/InsertImageDialog/InsertImageDialog.js +15 -15
  134. package/dist/patterns/LexicalEditor/components/InsertVideoDialog/InsertVideoDialog.js +17 -17
  135. package/dist/patterns/LexicalEditor/components/UploadFileDialog/UploadFileDialog.js +2 -2
  136. package/dist/patterns/LexicalEditor/hr.svg +3 -3
  137. package/dist/patterns/LexicalEditor/nodes/FileNode/FileComponent.js +44 -44
  138. package/dist/patterns/LexicalEditor/nodes/FileNode/FileDownloadButton.js +25 -25
  139. package/dist/patterns/LexicalEditor/nodes/ImageNode/ImageComponent.js +8 -8
  140. package/dist/patterns/LexicalEditor/nodes/ImageNode/ImageResizer.js +60 -60
  141. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/InputComponent.js +19 -19
  142. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SegmentedInput.js +49 -49
  143. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/FormSolution.js +7 -7
  144. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/SettingForm.js +73 -73
  145. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/TextTypeDropdown.js +5 -5
  146. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/TextInput.js +7 -7
  147. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SelectBox/SelectBoxComponent.js +69 -69
  148. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SelectBox/SelectBoxEdit.js +3 -3
  149. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SelectBox/SelectBoxView.js +15 -15
  150. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SelectComponent.js +28 -28
  151. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SettingForm/FormSelection.js +54 -54
  152. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SettingForm/SettingForm.js +61 -61
  153. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/Evaluation.js +75 -75
  154. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/SettingForm/FormIconAndLabel/FormIconAndLabel.js +17 -17
  155. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/SettingForm/FormIconAndLabel/FormLabel.js +7 -7
  156. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/SettingForm/FormQuestion.js +28 -28
  157. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/SettingForm/SettingForm.js +52 -52
  158. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/EvaluationComponent.js +7 -7
  159. package/dist/patterns/LexicalEditor/nodes/SheetInputNode/InputComponent.js +25 -25
  160. package/dist/patterns/LexicalEditor/nodes/SheetInputNode/SettingForm.js +53 -53
  161. package/dist/patterns/LexicalEditor/nodes/SheetSelectNode/SelectComponent/SelectBox/SelectBoxComponent.js +54 -54
  162. package/dist/patterns/LexicalEditor/nodes/SheetSelectNode/SelectComponent/SelectBox/SelectBoxView.js +5 -5
  163. package/dist/patterns/LexicalEditor/nodes/SheetSelectNode/SelectComponent/SelectComponent.js +21 -21
  164. package/dist/patterns/LexicalEditor/nodes/SheetSelectNode/SelectComponent/SettingForm/FormSelection.js +42 -42
  165. package/dist/patterns/LexicalEditor/nodes/SheetSelectNode/SelectComponent/SettingForm/SettingForm.js +71 -71
  166. package/dist/patterns/LexicalEditor/nodes/VideoNode/VideoComponent.js +7 -7
  167. package/dist/patterns/LexicalEditor/plugins/ComponentAdderPlugin/ComponentAdder.js +51 -51
  168. package/dist/patterns/LexicalEditor/plugins/ComponentAdderPlugin/ComponentAdderPlugin.js +11 -11
  169. package/dist/patterns/LexicalEditor/plugins/ComponentAdderPlugin/menu.svg +7 -7
  170. package/dist/patterns/LexicalEditor/plugins/ComponentAdderPlugin/plus.svg +2 -2
  171. package/dist/patterns/LexicalEditor/plugins/ComponentPickerMenuPlugin/ComponentPickerMenuItem.js +32 -32
  172. package/dist/patterns/LexicalEditor/plugins/ComponentPickerMenuPlugin/ComponentPickerMenuList.js +32 -32
  173. package/dist/patterns/LexicalEditor/plugins/ComponentPickerMenuPlugin/ComponentPickerMenuPlugin.js +12 -12
  174. package/dist/patterns/LexicalEditor/plugins/ComponentPickerMenuPlugin/componentPickerOptionUtils.js +2 -2
  175. package/dist/patterns/LexicalEditor/plugins/FloatingLinkEditorPlugin/FloatingLinkEditor.js +49 -49
  176. package/dist/patterns/LexicalEditor/plugins/FloatingTextFormatToolbarPlugin/FloatingTextFormatPopup.js +36 -36
  177. package/dist/patterns/LexicalEditor/plugins/ParagraphPlaceholderPlugin/index.js +7 -7
  178. package/dist/patterns/LexicalEditor/theme.js +243 -243
  179. package/dist/patterns/SegmentedControl/SegmentedControlButton.js +10 -10
  180. package/dist/patterns/SegmentedControl/SegmentedControlGroup.js +8 -8
  181. package/dist/patterns/SegmentedControl/SegmentedControlSquareButton.js +2 -2
  182. package/dist/patterns/Tabs.js +43 -43
  183. package/dist/patterns/ToggleButtonGroup/ToggleButton.js +40 -40
  184. package/dist/patterns/ToggleButtonGroup/ToggleButtonGroup.js +11 -11
  185. package/dist/utils/hover.js +12 -12
  186. package/dist/utils/reset.js +19 -19
  187. package/dist/utils/visuallyHidden.js +10 -10
  188. package/package.json +109 -109
@@ -6,28 +6,28 @@ export const animatedButtonClasses = {
6
6
  root: "AnimatedButton",
7
7
  };
8
8
  const DARK_BLACK_COLOR = "#202020";
9
- const getGradient = (baseColor, activeColor) => css `
10
- background-image: repeating-linear-gradient(
11
- -45deg,
12
- ${baseColor} 0%,
13
- ${baseColor} 20%,
14
- ${activeColor} 20%,
15
- ${activeColor} 25%,
16
- ${baseColor} 25%,
17
- ${baseColor} 30%,
18
- ${activeColor} 30%,
19
- ${activeColor} 40%,
20
- ${baseColor} 40%,
21
- ${baseColor} 60%,
22
- ${activeColor} 60%,
23
- ${activeColor} 70%,
24
- ${baseColor} 70%,
25
- ${baseColor} 75%,
26
- ${activeColor} 75%,
27
- ${activeColor} 80%,
28
- ${baseColor} 80%,
29
- ${baseColor} 100%
30
- );
9
+ const getGradient = (baseColor, activeColor) => css `
10
+ background-image: repeating-linear-gradient(
11
+ -45deg,
12
+ ${baseColor} 0%,
13
+ ${baseColor} 20%,
14
+ ${activeColor} 20%,
15
+ ${activeColor} 25%,
16
+ ${baseColor} 25%,
17
+ ${baseColor} 30%,
18
+ ${activeColor} 30%,
19
+ ${activeColor} 40%,
20
+ ${baseColor} 40%,
21
+ ${baseColor} 60%,
22
+ ${activeColor} 60%,
23
+ ${activeColor} 70%,
24
+ ${baseColor} 70%,
25
+ ${baseColor} 75%,
26
+ ${activeColor} 75%,
27
+ ${activeColor} 80%,
28
+ ${baseColor} 80%,
29
+ ${baseColor} 100%
30
+ );
31
31
  `;
32
32
  const COLOR_TO_BACKGROUND_IMAGE = (theme, color) => ({
33
33
  primary: getGradient(theme.color.background.primary, theme.color.background.primaryActive),
@@ -36,13 +36,13 @@ const COLOR_TO_BACKGROUND_IMAGE = (theme, color) => ({
36
36
  black: getGradient(theme.color.background.inverse, DARK_BLACK_COLOR),
37
37
  white: getGradient(theme.color.background.neutralBase, theme.color.background.neutralAltActive),
38
38
  })[color];
39
- const backgroundSlideAnimation = keyframes `
40
- 0% {
41
- background-position: 400% 50%;
42
- }
43
- 100% {
44
- background-position: 0% 50%;
45
- }
39
+ const backgroundSlideAnimation = keyframes `
40
+ 0% {
41
+ background-position: 400% 50%;
42
+ }
43
+ 100% {
44
+ background-position: 0% 50%;
45
+ }
46
46
  `;
47
47
  /**
48
48
  * 반짝이는 애니메이션 효과가 적용된 Button 컴포넌트
@@ -55,9 +55,9 @@ export function AnimatedButton(props) {
55
55
  .join(" "), css: disabled || loading
56
56
  ? []
57
57
  : [
58
- css `
59
- background-size: 400% 100%;
60
- animation: ${backgroundSlideAnimation} 8s linear infinite;
58
+ css `
59
+ background-size: 400% 100%;
60
+ animation: ${backgroundSlideAnimation} 8s linear infinite;
61
61
  `,
62
62
  COLOR_TO_BACKGROUND_IMAGE(theme, color),
63
63
  ] })));
@@ -61,67 +61,67 @@ export const Banner = React.forwardRef(function Banner(props, ref) {
61
61
  const { className, component: Component = "div", headline, content, icon, color, buttonLabel, onButtonClick, buttonProps, close, onClose, fullWidth } = props, other = __rest(props, ["className", "component", "headline", "content", "icon", "color", "buttonLabel", "onButtonClick", "buttonProps", "close", "onClose", "fullWidth"]);
62
62
  const theme = useTheme();
63
63
  return (_jsxs(Component, Object.assign({}, other, { ref: ref, className: [bannerClasses.root, className].filter(Boolean).join(" "), css: [
64
- css `
65
- display: flex;
66
- align-items: center;
67
- padding: 0px 12px;
68
- line-height: 125%;
69
- background: ${COLOR_PALETTE(theme, color).background};
64
+ css `
65
+ display: flex;
66
+ align-items: center;
67
+ padding: 0px 12px;
68
+ line-height: 125%;
69
+ background: ${COLOR_PALETTE(theme, color).background};
70
70
  `,
71
71
  fullWidth
72
- ? css `
73
- width: 100%;
72
+ ? css `
73
+ width: 100%;
74
74
  `
75
- : css `
76
- border-radius: 12px;
77
- width: fit-content;
75
+ : css `
76
+ border-radius: 12px;
77
+ width: fit-content;
78
78
  `,
79
- ], children: [icon && (_jsx(Icon, { className: bannerClasses.icon, css: css `
80
- align-self: ${headline && content ? "flex-start" : "center"};
81
- color: ${COLOR_PALETTE(theme, color).headline};
82
- `, children: icon })), _jsxs(TextContainer, { className: bannerClasses.textContainer, children: [headline && (_jsx(Headline, { className: bannerClasses.headline, css: css `
83
- color: ${COLOR_PALETTE(theme, color).headline};
84
- `, children: headline })), content && (_jsx(Content, { className: bannerClasses.content, css: css `
85
- color: ${COLOR_PALETTE(theme, color).content};
79
+ ], children: [icon && (_jsx(Icon, { className: bannerClasses.icon, css: css `
80
+ align-self: ${headline && content ? "flex-start" : "center"};
81
+ color: ${COLOR_PALETTE(theme, color).headline};
82
+ `, children: icon })), _jsxs(TextContainer, { className: bannerClasses.textContainer, children: [headline && (_jsx(Headline, { className: bannerClasses.headline, css: css `
83
+ color: ${COLOR_PALETTE(theme, color).headline};
84
+ `, children: headline })), content && (_jsx(Content, { className: bannerClasses.content, css: css `
85
+ color: ${COLOR_PALETTE(theme, color).content};
86
86
  `, children: content }))] }), buttonLabel && (_jsx(Button, Object.assign({ className: bannerClasses.button, css: !buttonProps &&
87
- css `
88
- color: ${COLOR_PALETTE(theme, color).content};
87
+ css `
88
+ color: ${COLOR_PALETTE(theme, color).content};
89
89
  `, color: "textNeutral", size: "small", label: buttonLabel, onClick: onButtonClick }, buttonProps, {
90
90
  // component 속성이 없는 경우 제네릭 인자로 전달되는 타입을 확인하지 못하므로 component 속성 명시
91
- component: (_a = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.component) !== null && _a !== void 0 ? _a : "button" }))), close && (_jsx(SquareButton, { className: bannerClasses.closeSquareButton, css: css `
92
- color: ${COLOR_PALETTE(theme, color).content};
91
+ component: (_a = buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.component) !== null && _a !== void 0 ? _a : "button" }))), close && (_jsx(SquareButton, { className: bannerClasses.closeSquareButton, css: css `
92
+ color: ${COLOR_PALETTE(theme, color).content};
93
93
  `, color: "icon", size: "small", icon: _jsx(CloseFillIcon, {}), onClick: onClose, "aria-label": "\uB2EB\uAE30" }))] })));
94
94
  });
95
- const Icon = styled.div `
96
- display: flex;
97
- align-items: flex-start;
98
- padding: 12px 0px;
99
-
100
- svg {
101
- width: 20px;
102
- height: 20px;
103
- }
95
+ const Icon = styled.div `
96
+ display: flex;
97
+ align-items: flex-start;
98
+ padding: 12px 0px;
99
+
100
+ svg {
101
+ width: 20px;
102
+ height: 20px;
103
+ }
104
104
  `;
105
- const Headline = styled.div(({ theme }) => css `
106
- font-family: ${theme.fontFamily.ui};
107
- font-size: 16px;
108
- font-style: normal;
109
- font-weight: 700;
110
- line-height: 20px; /* 125% */
105
+ const Headline = styled.div(({ theme }) => css `
106
+ font-family: ${theme.fontFamily.ui};
107
+ font-size: 16px;
108
+ font-style: normal;
109
+ font-weight: 700;
110
+ line-height: 20px; /* 125% */
111
111
  `);
112
- const Content = styled.div(({ theme }) => css `
113
- font-family: ${theme.fontFamily.ui};
114
- font-size: 16px;
115
- font-style: normal;
116
- font-weight: 400;
117
- line-height: 24px; /* 150% */
112
+ const Content = styled.div(({ theme }) => css `
113
+ font-family: ${theme.fontFamily.ui};
114
+ font-size: 16px;
115
+ font-style: normal;
116
+ font-weight: 400;
117
+ line-height: 24px; /* 150% */
118
118
  `);
119
- const TextContainer = styled.div `
120
- flex: 1;
121
-
122
- display: flex;
123
- flex-direction: column;
124
- align-items: flex-start;
125
- padding: 12px;
126
- gap: 4px;
119
+ const TextContainer = styled.div `
120
+ flex: 1;
121
+
122
+ display: flex;
123
+ flex-direction: column;
124
+ align-items: flex-start;
125
+ padding: 12px;
126
+ gap: 4px;
127
127
  `;
@@ -99,198 +99,198 @@ export const Book = forwardRef(function Book(props, ref) {
99
99
  setOpen(false);
100
100
  onHoverEnd === null || onHoverEnd === void 0 ? void 0 : onHoverEnd();
101
101
  }, children: [_jsxs(Cover, { className: bookClasses.cover, css: onCoverClick &&
102
- css `
103
- cursor: pointer;
102
+ css `
103
+ cursor: pointer;
104
104
  `, variants: coverMotion, onClick: () => {
105
105
  setOpen(!open);
106
106
  onCoverClick === null || onCoverClick === void 0 ? void 0 : onCoverClick();
107
- }, children: [icon && _jsx(CoverIcon, { className: bookClasses.coverIcon, children: icon }), isHidden && (_jsxs(_Fragment, { children: [_jsx(Hide, { className: bookClasses.hide }), _jsx(EyeOffFillIcon, { color: theme.color.foreground.neutralAlt, css: css `
108
- position: absolute;
109
- z-index: ${ZINDEX_HIDE};
110
- left: 50%;
111
- top: 50%;
112
- transform: translate(-50%, -50%);
113
- opacity: 0.8;
114
- ` })] })), _jsxs(CoverTexts, { className: bookClasses.coverTexts, variants: buttons ? textMotion : undefined, children: [tagsProps && tagsProps.length > 0 && (_jsx("div", { css: css `
115
- display: flex;
116
- gap: 4px;
117
- flex-wrap: wrap;
118
- `, children: tagsProps.map((tagProps, index) => (_jsx(Tag, Object.assign({}, tagProps), index))) })), _jsx(Subtitle, { className: bookClasses.subtitle, children: subtitle }), _jsx(Subtitle, { className: bookClasses.subtitle, css: css `
119
- font-weight: 800;
120
- `, children: subtitleBold }), _jsx(CoverTitle, { className: bookClasses.coverTitle, showProgress: Boolean(progressInfo), children: title }), progressInfo && (_jsxs(Progress, { className: bookClasses.progress, children: [_jsx("div", { className: bookClasses.progressText, children: progressInfo.title }), _jsxs("div", { css: css `
121
- display: flex;
122
- justify-content: space-between;
123
- align-items: center;
124
- `, children: [_jsx("div", { className: bookClasses.progressBase, css: css `
125
- overflow: hidden;
126
- width: 128px;
127
- height: 6px;
128
- border-radius: 3px;
129
- `, children: _jsx("div", { className: bookClasses.progressBar, css: css `
130
- width: ${progressInfo.value * 100}%;
131
- height: 6px;
132
- ` }) }), _jsxs("div", { className: bookClasses.progressText, css: css `
133
- width: 32px;
134
- display: flex;
135
- justify-content: center;
136
- align-items: center;
107
+ }, children: [icon && _jsx(CoverIcon, { className: bookClasses.coverIcon, children: icon }), isHidden && (_jsxs(_Fragment, { children: [_jsx(Hide, { className: bookClasses.hide }), _jsx(EyeOffFillIcon, { color: theme.color.foreground.neutralAlt, css: css `
108
+ position: absolute;
109
+ z-index: ${ZINDEX_HIDE};
110
+ left: 50%;
111
+ top: 50%;
112
+ transform: translate(-50%, -50%);
113
+ opacity: 0.8;
114
+ ` })] })), _jsxs(CoverTexts, { className: bookClasses.coverTexts, variants: buttons ? textMotion : undefined, children: [tagsProps && tagsProps.length > 0 && (_jsx("div", { css: css `
115
+ display: flex;
116
+ gap: 4px;
117
+ flex-wrap: wrap;
118
+ `, children: tagsProps.map((tagProps, index) => (_jsx(Tag, Object.assign({}, tagProps), index))) })), _jsx(Subtitle, { className: bookClasses.subtitle, children: subtitle }), _jsx(Subtitle, { className: bookClasses.subtitle, css: css `
119
+ font-weight: 800;
120
+ `, children: subtitleBold }), _jsx(CoverTitle, { className: bookClasses.coverTitle, showProgress: Boolean(progressInfo), children: title }), progressInfo && (_jsxs(Progress, { className: bookClasses.progress, children: [_jsx("div", { className: bookClasses.progressText, children: progressInfo.title }), _jsxs("div", { css: css `
121
+ display: flex;
122
+ justify-content: space-between;
123
+ align-items: center;
124
+ `, children: [_jsx("div", { className: bookClasses.progressBase, css: css `
125
+ overflow: hidden;
126
+ width: 128px;
127
+ height: 6px;
128
+ border-radius: 3px;
129
+ `, children: _jsx("div", { className: bookClasses.progressBar, css: css `
130
+ width: ${progressInfo.value * 100}%;
131
+ height: 6px;
132
+ ` }) }), _jsxs("div", { className: bookClasses.progressText, css: css `
133
+ width: 32px;
134
+ display: flex;
135
+ justify-content: center;
136
+ align-items: center;
137
137
  `, children: [Math.round(progressInfo.value * 100), "%"] })] })] }))] }), _jsx(BookGradient, {}), _jsx(Buttons, { className: bookClasses.buttons, variants: buttonsMotion, onClick: (e) => {
138
138
  // Button 클릭 시에도 CoverClick 이벤트가 발생하지 않도록 막습니다.
139
139
  e.stopPropagation();
140
140
  }, children: buttons })] }), _jsx(Shelf, { className: bookClasses.shelf })] }));
141
141
  });
142
- const Container = styled(motion.div) `
143
- position: relative;
144
-
145
- width: 200px;
146
- height: ${BOOK_HEIGHT + HOVER_Y_OFFSET + SHELF_HEIGHT + BOOK_SHELF_GAP}px;
147
-
148
- padding-top: ${HOVER_Y_OFFSET}px;
142
+ const Container = styled(motion.div) `
143
+ position: relative;
144
+
145
+ width: 200px;
146
+ height: ${BOOK_HEIGHT + HOVER_Y_OFFSET + SHELF_HEIGHT + BOOK_SHELF_GAP}px;
147
+
148
+ padding-top: ${HOVER_Y_OFFSET}px;
149
149
  `;
150
- const Cover = styled(motion.div) `
151
- height: ${BOOK_HEIGHT}px;
152
-
153
- border-radius: 8px;
154
- box-shadow: ${shadows.shadow04};
155
-
156
- display: flex;
157
- flex-direction: row;
158
- gap: 12px;
159
- overflow: hidden;
160
-
161
- position: relative;
162
- bottom: 0px;
163
- z-index: ${ZINDEX_COVER};
150
+ const Cover = styled(motion.div) `
151
+ height: ${BOOK_HEIGHT}px;
152
+
153
+ border-radius: 8px;
154
+ box-shadow: ${shadows.shadow04};
155
+
156
+ display: flex;
157
+ flex-direction: row;
158
+ gap: 12px;
159
+ overflow: hidden;
160
+
161
+ position: relative;
162
+ bottom: 0px;
163
+ z-index: ${ZINDEX_COVER};
164
164
  `;
165
- const CoverTexts = styled(motion.div) `
166
- width: 100%;
167
- height: 100%;
168
- padding: 12px 12px 12px 24px;
169
-
170
- position: absolute;
171
- top: 0;
172
- left: 0;
173
- z-index: ${ZINDEX_TEXT};
174
-
175
- display: flex;
176
- flex-direction: column;
177
- gap: 4px;
165
+ const CoverTexts = styled(motion.div) `
166
+ width: 100%;
167
+ height: 100%;
168
+ padding: 12px 12px 12px 24px;
169
+
170
+ position: absolute;
171
+ top: 0;
172
+ left: 0;
173
+ z-index: ${ZINDEX_TEXT};
174
+
175
+ display: flex;
176
+ flex-direction: column;
177
+ gap: 4px;
178
178
  `;
179
179
  const CoverTitle = styled("h1", {
180
180
  shouldForwardProp: (prop) => prop !== "showProgress",
181
- })(({ theme, showProgress }) => css `
182
- word-wrap: break-word;
183
- word-break: keep-all;
184
-
185
- margin: auto 0 ${showProgress ? "4px" : "8px"} 0;
186
- color: ${CARD_COLOR_PALETTE(theme).text};
187
-
188
- /* Alt/Paragraph/16px-Eb */
189
- font-family: ${theme.fontFamily.title};
190
- font-size: 16px;
191
- font-style: normal;
192
- font-weight: 800;
193
- line-height: 24px;
194
-
195
- /* multiline 말줄임말 적용 css */
196
- overflow: hidden;
197
- text-overflow: ellipsis;
198
- display: -webkit-box;
199
- -webkit-line-clamp: 7;
200
- -webkit-box-orient: vertical;
181
+ })(({ theme, showProgress }) => css `
182
+ word-wrap: break-word;
183
+ word-break: keep-all;
184
+
185
+ margin: auto 0 ${showProgress ? "4px" : "8px"} 0;
186
+ color: ${CARD_COLOR_PALETTE(theme).text};
187
+
188
+ /* Alt/Paragraph/16px-Eb */
189
+ font-family: ${theme.fontFamily.title};
190
+ font-size: 16px;
191
+ font-style: normal;
192
+ font-weight: 800;
193
+ line-height: 24px;
194
+
195
+ /* multiline 말줄임말 적용 css */
196
+ overflow: hidden;
197
+ text-overflow: ellipsis;
198
+ display: -webkit-box;
199
+ -webkit-line-clamp: 7;
200
+ -webkit-box-orient: vertical;
201
201
  `);
202
- const BookGradient = styled.div `
203
- width: 200px;
204
- height: ${BOOK_HEIGHT}px;
205
- background:
206
- linear-gradient(
207
- 180deg,
208
- rgba(255, 255, 255, 0) 0%,
209
- rgba(0, 0, 0, 0.75) 100%
210
- ),
211
- linear-gradient(
212
- 90deg,
213
- #999 0%,
214
- #fbfbfb 2%,
215
- #fbfbfb 4%,
216
- #cdcdcd 6%,
217
- #fbfbfb 10%,
218
- #fbfbfb 100%
219
- );
220
- mix-blend-mode: multiply;
221
-
222
- position: absolute;
223
- top: 0;
224
- left: 0;
225
- border-radius: 8px;
226
- z-index: ${ZINDEX_COVER};
202
+ const BookGradient = styled.div `
203
+ width: 200px;
204
+ height: ${BOOK_HEIGHT}px;
205
+ background:
206
+ linear-gradient(
207
+ 180deg,
208
+ rgba(255, 255, 255, 0) 0%,
209
+ rgba(0, 0, 0, 0.75) 100%
210
+ ),
211
+ linear-gradient(
212
+ 90deg,
213
+ #999 0%,
214
+ #fbfbfb 2%,
215
+ #fbfbfb 4%,
216
+ #cdcdcd 6%,
217
+ #fbfbfb 10%,
218
+ #fbfbfb 100%
219
+ );
220
+ mix-blend-mode: multiply;
221
+
222
+ position: absolute;
223
+ top: 0;
224
+ left: 0;
225
+ border-radius: 8px;
226
+ z-index: ${ZINDEX_COVER};
227
227
  `;
228
- const Progress = styled.div(({ theme }) => css `
229
- display: flex;
230
- flex-direction: column;
231
- height: 32px;
232
-
233
- /* Default/Label/12px-Md */
234
- font-family: ${theme.fontFamily.ui};
235
- font-size: 12px;
236
- font-style: normal;
237
- font-weight: 500;
238
- line-height: 16px; /* 133.333% */
228
+ const Progress = styled.div(({ theme }) => css `
229
+ display: flex;
230
+ flex-direction: column;
231
+ height: 32px;
232
+
233
+ /* Default/Label/12px-Md */
234
+ font-family: ${theme.fontFamily.ui};
235
+ font-size: 12px;
236
+ font-style: normal;
237
+ font-weight: 500;
238
+ line-height: 16px; /* 133.333% */
239
239
  `);
240
- const Buttons = styled(motion.div) `
241
- display: flex;
242
- gap: 8px;
243
- width: 100%;
244
- padding: 0 12px 0 24px;
245
-
246
- position: absolute;
247
- bottom: 12px;
248
- z-index: ${ZINDEX_BUTTONS};
240
+ const Buttons = styled(motion.div) `
241
+ display: flex;
242
+ gap: 8px;
243
+ width: 100%;
244
+ padding: 0 12px 0 24px;
245
+
246
+ position: absolute;
247
+ bottom: 12px;
248
+ z-index: ${ZINDEX_BUTTONS};
249
249
  `;
250
- const Shelf = styled.div(({ theme }) => css `
251
- height: ${SHELF_HEIGHT}px;
252
- width: calc(100% + 32px);
253
- border-radius: 4px;
254
- background: ${theme.color.background.neutralAltActive};
255
-
256
- position: absolute;
257
- bottom: 0px;
258
- left: -16px;
250
+ const Shelf = styled.div(({ theme }) => css `
251
+ height: ${SHELF_HEIGHT}px;
252
+ width: calc(100% + 32px);
253
+ border-radius: 4px;
254
+ background: ${theme.color.background.neutralAltActive};
255
+
256
+ position: absolute;
257
+ bottom: 0px;
258
+ left: -16px;
259
259
  `);
260
- const Hide = styled.div(({ theme }) => css `
261
- position: absolute;
262
- left: 0;
263
- top: 0;
264
-
265
- width: 100%;
266
- height: 100%;
267
-
268
- background: ${theme.color.blanket.neutral};
269
- border-radius: 8px;
270
-
271
- z-index: ${ZINDEX_HIDE};
260
+ const Hide = styled.div(({ theme }) => css `
261
+ position: absolute;
262
+ left: 0;
263
+ top: 0;
264
+
265
+ width: 100%;
266
+ height: 100%;
267
+
268
+ background: ${theme.color.blanket.neutral};
269
+ border-radius: 8px;
270
+
271
+ z-index: ${ZINDEX_HIDE};
272
272
  `);
273
- const Subtitle = styled.div(({ theme }) => css `
274
- color: ${CARD_COLOR_PALETTE(theme).text};
275
-
276
- /* Default/Label/12px-Md */
277
- font-family: ${theme.fontFamily.ui};
278
- font-size: 12px;
279
- font-style: normal;
280
- font-weight: 500;
281
- line-height: 16px; /* 133.333% */
273
+ const Subtitle = styled.div(({ theme }) => css `
274
+ color: ${CARD_COLOR_PALETTE(theme).text};
275
+
276
+ /* Default/Label/12px-Md */
277
+ font-family: ${theme.fontFamily.ui};
278
+ font-size: 12px;
279
+ font-style: normal;
280
+ font-weight: 500;
281
+ line-height: 16px; /* 133.333% */
282
282
  `);
283
- const CoverIcon = styled.div(({ theme }) => css `
284
- position: absolute;
285
- top: 50%;
286
- left: 100px;
287
- transform: translateY(-50%);
288
-
289
- svg {
290
- width: 120px;
291
- height: 120px;
292
- color: ${theme.color.blanket.neutral};
293
- }
294
-
295
- z-index: ${ZINDEX_ICON};
283
+ const CoverIcon = styled.div(({ theme }) => css `
284
+ position: absolute;
285
+ top: 50%;
286
+ left: 100px;
287
+ transform: translateY(-50%);
288
+
289
+ svg {
290
+ width: 120px;
291
+ height: 120px;
292
+ color: ${theme.color.blanket.neutral};
293
+ }
294
+
295
+ z-index: ${ZINDEX_ICON};
296
296
  `);