@team-monolith/cds 1.125.0 → 1.126.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 (197) hide show
  1. package/@types/emotion.d.ts +194 -194
  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 +45 -45
  10. package/dist/components/Book/Book.js +174 -174
  11. package/dist/components/Button.d.ts +0 -2
  12. package/dist/components/Button.js +181 -181
  13. package/dist/components/CheckboxInput.js +148 -148
  14. package/dist/components/FileTypeAlertDialog.js +6 -6
  15. package/dist/components/Input.js +53 -53
  16. package/dist/components/InputBase.js +72 -72
  17. package/dist/components/Modal.js +4 -4
  18. package/dist/components/OverflowTooltip.js +4 -4
  19. package/dist/components/Pagination.js +56 -56
  20. package/dist/components/PinInput.js +64 -64
  21. package/dist/components/Popover.js +27 -27
  22. package/dist/components/RadioInput.js +73 -73
  23. package/dist/components/Slider.js +58 -58
  24. package/dist/components/SquareButton.js +109 -109
  25. package/dist/components/Switch.js +69 -69
  26. package/dist/components/SwitchButton.js +107 -107
  27. package/dist/components/Tag.js +72 -72
  28. package/dist/components/Tooltip.js +19 -19
  29. package/dist/foundation/breakpoints.js +16 -16
  30. package/dist/foundation/typography.js +186 -186
  31. package/dist/icons/custom/colored/Microsoft.d.ts +5 -0
  32. package/dist/icons/custom/colored/Microsoft.js +7 -0
  33. package/dist/icons/custom/colored/ai-helper.svg +4 -4
  34. package/dist/icons/custom/colored/ai-quiz-color.svg +20 -20
  35. package/dist/icons/custom/colored/ai-socroom-color.svg +14 -14
  36. package/dist/icons/custom/colored/badge-color.svg +4 -4
  37. package/dist/icons/custom/colored/badge-gold.svg +11 -11
  38. package/dist/icons/custom/colored/badge-green.svg +11 -11
  39. package/dist/icons/custom/colored/badge-silver.svg +11 -11
  40. package/dist/icons/custom/colored/basic-plus.svg +31 -31
  41. package/dist/icons/custom/colored/basic.svg +3 -3
  42. package/dist/icons/custom/colored/board-color.svg +5 -5
  43. package/dist/icons/custom/colored/cast-cloudy-color.svg +6 -6
  44. package/dist/icons/custom/colored/cast-partly-color.svg +7 -7
  45. package/dist/icons/custom/colored/cast-rainbow-color.svg +13 -13
  46. package/dist/icons/custom/colored/cast-sunny-color.svg +4 -4
  47. package/dist/icons/custom/colored/clap-bronze.svg +8 -8
  48. package/dist/icons/custom/colored/clap-gold.svg +8 -8
  49. package/dist/icons/custom/colored/clap-silver.svg +8 -8
  50. package/dist/icons/custom/colored/class.svg +13 -13
  51. package/dist/icons/custom/colored/codap-color.svg +13 -13
  52. package/dist/icons/custom/colored/ebook-color.svg +5 -5
  53. package/dist/icons/custom/colored/embedded-color.svg +38 -38
  54. package/dist/icons/custom/colored/emo-clap-color.svg +252 -252
  55. package/dist/icons/custom/colored/emo-good-color.svg +68 -68
  56. package/dist/icons/custom/colored/emo-great-color.svg +67 -67
  57. package/dist/icons/custom/colored/emo-heart-color.svg +239 -239
  58. package/dist/icons/custom/colored/emo-hundred-color.svg +194 -194
  59. package/dist/icons/custom/colored/emo-neutral-color.svg +76 -76
  60. package/dist/icons/custom/colored/emo-stars-color.svg +121 -121
  61. package/dist/icons/custom/colored/emo-thumbup-color.svg +238 -238
  62. package/dist/icons/custom/colored/empty.svg +1 -1
  63. package/dist/icons/custom/colored/entry-color.svg +4 -4
  64. package/dist/icons/custom/colored/filename-all-color.svg +4 -4
  65. package/dist/icons/custom/colored/filename-doc-color.svg +5 -5
  66. package/dist/icons/custom/colored/filename-hwp-color.svg +6 -6
  67. package/dist/icons/custom/colored/filename-img-color.svg +6 -6
  68. package/dist/icons/custom/colored/filename-mp4-color.svg +5 -5
  69. package/dist/icons/custom/colored/filename-pdf-color.svg +12 -12
  70. package/dist/icons/custom/colored/filename-ppt-color.svg +6 -6
  71. package/dist/icons/custom/colored/filename-xls-color.svg +5 -5
  72. package/dist/icons/custom/colored/filename-zip-color.svg +5 -5
  73. package/dist/icons/custom/colored/google.svg +13 -13
  74. package/dist/icons/custom/colored/hand-fill.svg +4 -4
  75. package/dist/icons/custom/colored/index.d.ts +1 -0
  76. package/dist/icons/custom/colored/index.js +1 -0
  77. package/dist/icons/custom/colored/judge-color.svg +6 -6
  78. package/dist/icons/custom/colored/makecode-color.svg +4 -4
  79. package/dist/icons/custom/colored/master.svg +12 -12
  80. package/dist/icons/custom/colored/material.svg +6 -6
  81. package/dist/icons/custom/colored/medal-bronze.svg +9 -9
  82. package/dist/icons/custom/colored/medal-gold.svg +9 -9
  83. package/dist/icons/custom/colored/medal-silver.svg +9 -9
  84. package/dist/icons/custom/colored/microsoft.svg +6 -0
  85. package/dist/icons/custom/colored/pro.svg +4 -4
  86. package/dist/icons/custom/colored/problem.svg +7 -7
  87. package/dist/icons/custom/colored/python-color.svg +4 -4
  88. package/dist/icons/custom/colored/quiz-color.svg +12 -12
  89. package/dist/icons/custom/colored/resource-color.svg +13 -13
  90. package/dist/icons/custom/colored/scratch-color.svg +6 -6
  91. package/dist/icons/custom/colored/type-helper.svg +9 -9
  92. package/dist/icons/custom/colored/whale.svg +7 -7
  93. package/dist/icons/custom/colored/worksheet-color.svg +5 -5
  94. package/dist/icons/custom/default/ai-quiz.svg +8 -8
  95. package/dist/icons/custom/default/ai-socroom.svg +13 -13
  96. package/dist/icons/custom/default/badge.svg +4 -4
  97. package/dist/icons/custom/default/board.svg +5 -5
  98. package/dist/icons/custom/default/cast-cloudy.svg +3 -3
  99. package/dist/icons/custom/default/cast-partly.svg +4 -4
  100. package/dist/icons/custom/default/cast-rainbow.svg +12 -12
  101. package/dist/icons/custom/default/cast-sunny.svg +3 -3
  102. package/dist/icons/custom/default/codap.svg +11 -11
  103. package/dist/icons/custom/default/ebook.svg +3 -3
  104. package/dist/icons/custom/default/embedded.svg +4 -4
  105. package/dist/icons/custom/default/emo-clap.svg +6 -6
  106. package/dist/icons/custom/default/emo-good.svg +12 -12
  107. package/dist/icons/custom/default/emo-great.svg +12 -12
  108. package/dist/icons/custom/default/emo-heart.svg +5 -5
  109. package/dist/icons/custom/default/emo-hundred.svg +3 -3
  110. package/dist/icons/custom/default/emo-neutral.svg +14 -14
  111. package/dist/icons/custom/default/emo-stars.svg +14 -14
  112. package/dist/icons/custom/default/emo-thumbup.svg +3 -3
  113. package/dist/icons/custom/default/entry.svg +4 -4
  114. package/dist/icons/custom/default/fab.svg +10 -10
  115. package/dist/icons/custom/default/grant-alt.svg +5 -5
  116. package/dist/icons/custom/default/grant.svg +4 -4
  117. package/dist/icons/custom/default/hand-line.svg +3 -3
  118. package/dist/icons/custom/default/judge.svg +3 -3
  119. package/dist/icons/custom/default/makecode.svg +5 -5
  120. package/dist/icons/custom/default/pdf.svg +3 -3
  121. package/dist/icons/custom/default/python.svg +7 -7
  122. package/dist/icons/custom/default/quiz.svg +4 -4
  123. package/dist/icons/custom/default/resource.svg +11 -11
  124. package/dist/icons/custom/default/scratch.svg +3 -3
  125. package/dist/icons/custom/default/scroll-alt.svg +5 -5
  126. package/dist/icons/custom/default/scroll-fill.svg +4 -4
  127. package/dist/icons/custom/default/scroll-line.svg +5 -5
  128. package/dist/icons/custom/default/symbol.svg +4 -4
  129. package/dist/icons/custom/default/worksheet.svg +4 -4
  130. package/dist/icons/custom/svgrColoredTemplate.js +26 -26
  131. package/dist/icons/custom/svgrDefaultTemplate.js +26 -26
  132. package/dist/patterns/Accordion.js +20 -20
  133. package/dist/patterns/Dropdown/Dropdown.d.ts +0 -2
  134. package/dist/patterns/Dropdown/Dropdown.js +2 -3
  135. package/dist/patterns/Dropdown/DropdownItem/DropdownItem.js +58 -58
  136. package/dist/patterns/Dropdown/DropdownMenu/DropdownMenu.js +27 -27
  137. package/dist/patterns/Dropdown/DropdownMenu/style.js +19 -19
  138. package/dist/patterns/LexicalEditor/Plugins.js +36 -36
  139. package/dist/patterns/LexicalEditor/components/FileSelectInput.d.ts +0 -1
  140. package/dist/patterns/LexicalEditor/components/FileSelectInput.js +24 -24
  141. package/dist/patterns/LexicalEditor/components/InsertImageDialog/ImagePreview.js +4 -4
  142. package/dist/patterns/LexicalEditor/components/InsertImageDialog/InsertImageDialog.js +15 -15
  143. package/dist/patterns/LexicalEditor/components/InsertVideoDialog/InsertVideoDialog.js +17 -17
  144. package/dist/patterns/LexicalEditor/components/UploadFileDialog/UploadFileDialog.js +2 -2
  145. package/dist/patterns/LexicalEditor/hr.svg +3 -3
  146. package/dist/patterns/LexicalEditor/nodes/FileNode/FileComponent.js +44 -44
  147. package/dist/patterns/LexicalEditor/nodes/FileNode/FileDownloadButton.js +25 -25
  148. package/dist/patterns/LexicalEditor/nodes/ImageNode/ImageComponent.js +8 -8
  149. package/dist/patterns/LexicalEditor/nodes/ImageNode/ImageResizer.js +60 -60
  150. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/InputComponent.js +19 -19
  151. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SegmentedInput.js +49 -49
  152. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/FormSolution.js +7 -7
  153. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/SettingForm.js +73 -73
  154. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/TextTypeDropdown.js +5 -5
  155. package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/TextInput.js +7 -7
  156. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SelectBox/SelectBoxComponent.js +69 -69
  157. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SelectBox/SelectBoxEdit.js +3 -3
  158. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SelectBox/SelectBoxView.js +15 -15
  159. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SelectComponent.js +28 -28
  160. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SettingForm/FormSelection.js +54 -54
  161. package/dist/patterns/LexicalEditor/nodes/ProblemSelectNode/SettingForm/SettingForm.js +61 -61
  162. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/Evaluation.js +75 -75
  163. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/SettingForm/FormIconAndLabel/FormIconAndLabel.js +18 -18
  164. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/SettingForm/FormIconAndLabel/FormLabel.js +7 -7
  165. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/SettingForm/FormQuestion.js +28 -28
  166. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/Evaluation/SettingForm/SettingForm.js +53 -53
  167. package/dist/patterns/LexicalEditor/nodes/SelfEvaluationNode/EvaluationComponent/EvaluationComponent.js +7 -7
  168. package/dist/patterns/LexicalEditor/nodes/SheetInputNode/InputComponent.js +25 -25
  169. package/dist/patterns/LexicalEditor/nodes/SheetInputNode/SettingForm.js +54 -54
  170. package/dist/patterns/LexicalEditor/nodes/SheetSelectNode/SelectComponent/SelectBox/SelectBoxComponent.js +54 -54
  171. package/dist/patterns/LexicalEditor/nodes/SheetSelectNode/SelectComponent/SelectBox/SelectBoxView.js +5 -5
  172. package/dist/patterns/LexicalEditor/nodes/SheetSelectNode/SelectComponent/SelectComponent.js +21 -21
  173. package/dist/patterns/LexicalEditor/nodes/SheetSelectNode/SelectComponent/SettingForm/FormSelection.js +42 -42
  174. package/dist/patterns/LexicalEditor/nodes/SheetSelectNode/SelectComponent/SettingForm/SettingForm.js +72 -72
  175. package/dist/patterns/LexicalEditor/nodes/VideoNode/VideoComponent.js +7 -7
  176. package/dist/patterns/LexicalEditor/plugins/ComponentAdderPlugin/ComponentAdder.js +51 -51
  177. package/dist/patterns/LexicalEditor/plugins/ComponentAdderPlugin/ComponentAdderPlugin.js +11 -11
  178. package/dist/patterns/LexicalEditor/plugins/ComponentAdderPlugin/menu.svg +7 -7
  179. package/dist/patterns/LexicalEditor/plugins/ComponentAdderPlugin/plus.svg +2 -2
  180. package/dist/patterns/LexicalEditor/plugins/ComponentPickerMenuPlugin/ComponentPickerMenuItem.js +32 -32
  181. package/dist/patterns/LexicalEditor/plugins/ComponentPickerMenuPlugin/ComponentPickerMenuList.js +32 -32
  182. package/dist/patterns/LexicalEditor/plugins/ComponentPickerMenuPlugin/ComponentPickerMenuPlugin.js +12 -12
  183. package/dist/patterns/LexicalEditor/plugins/ComponentPickerMenuPlugin/componentPickerOptionUtils.js +2 -2
  184. package/dist/patterns/LexicalEditor/plugins/FloatingLinkEditorPlugin/FloatingLinkEditor.js +49 -49
  185. package/dist/patterns/LexicalEditor/plugins/FloatingTextFormatToolbarPlugin/FloatingTextFormatPopup.js +36 -36
  186. package/dist/patterns/LexicalEditor/plugins/ParagraphPlaceholderPlugin/index.js +7 -7
  187. package/dist/patterns/LexicalEditor/theme.js +243 -243
  188. package/dist/patterns/SegmentedControl/SegmentedControlButton.js +10 -10
  189. package/dist/patterns/SegmentedControl/SegmentedControlGroup.js +8 -8
  190. package/dist/patterns/SegmentedControl/SegmentedControlSquareButton.js +2 -2
  191. package/dist/patterns/Tabs.js +43 -43
  192. package/dist/patterns/ToggleButtonGroup/ToggleButton.js +40 -40
  193. package/dist/patterns/ToggleButtonGroup/ToggleButtonGroup.js +11 -11
  194. package/dist/utils/hover.js +12 -12
  195. package/dist/utils/reset.js +19 -19
  196. package/dist/utils/visuallyHidden.js +10 -10
  197. package/package.json +109 -109
@@ -174,64 +174,64 @@ export function ImageResizer({ onResizeStart, onResizeEnd, buttonRef, imageRef,
174
174
  handlePointerDown(event, Direction.north | Direction.west);
175
175
  } })] }));
176
176
  }
177
- const Container = styled.div `
178
- &.image-control-wrapper--resizing {
179
- touch-action: none;
180
- }
181
- .image-resizer {
182
- display: block;
183
- width: 7px;
184
- height: 7px;
185
- position: absolute;
186
- background-color: rgb(60, 132, 244);
187
- border: 1px solid #fff;
188
- }
189
-
190
- .image-resizer.image-resizer-n {
191
- top: -6px;
192
- left: 48%;
193
- cursor: n-resize;
194
- }
195
-
196
- .image-resizer.image-resizer-ne {
197
- top: -6px;
198
- right: -6px;
199
- cursor: ne-resize;
200
- }
201
-
202
- .image-resizer.image-resizer-e {
203
- bottom: 48%;
204
- right: -6px;
205
- cursor: e-resize;
206
- }
207
-
208
- .image-resizer.image-resizer-se {
209
- bottom: -2px;
210
- right: -6px;
211
- cursor: nwse-resize;
212
- }
213
-
214
- .image-resizer.image-resizer-s {
215
- bottom: -2px;
216
- left: 48%;
217
- cursor: s-resize;
218
- }
219
-
220
- .image-resizer.image-resizer-sw {
221
- bottom: -2px;
222
- left: -6px;
223
- cursor: sw-resize;
224
- }
225
-
226
- .image-resizer.image-resizer-w {
227
- bottom: 48%;
228
- left: -6px;
229
- cursor: w-resize;
230
- }
231
-
232
- .image-resizer.image-resizer-nw {
233
- top: -6px;
234
- left: -6px;
235
- cursor: nw-resize;
236
- }
177
+ const Container = styled.div `
178
+ &.image-control-wrapper--resizing {
179
+ touch-action: none;
180
+ }
181
+ .image-resizer {
182
+ display: block;
183
+ width: 7px;
184
+ height: 7px;
185
+ position: absolute;
186
+ background-color: rgb(60, 132, 244);
187
+ border: 1px solid #fff;
188
+ }
189
+
190
+ .image-resizer.image-resizer-n {
191
+ top: -6px;
192
+ left: 48%;
193
+ cursor: n-resize;
194
+ }
195
+
196
+ .image-resizer.image-resizer-ne {
197
+ top: -6px;
198
+ right: -6px;
199
+ cursor: ne-resize;
200
+ }
201
+
202
+ .image-resizer.image-resizer-e {
203
+ bottom: 48%;
204
+ right: -6px;
205
+ cursor: e-resize;
206
+ }
207
+
208
+ .image-resizer.image-resizer-se {
209
+ bottom: -2px;
210
+ right: -6px;
211
+ cursor: nwse-resize;
212
+ }
213
+
214
+ .image-resizer.image-resizer-s {
215
+ bottom: -2px;
216
+ left: 48%;
217
+ cursor: s-resize;
218
+ }
219
+
220
+ .image-resizer.image-resizer-sw {
221
+ bottom: -2px;
222
+ left: -6px;
223
+ cursor: sw-resize;
224
+ }
225
+
226
+ .image-resizer.image-resizer-w {
227
+ bottom: 48%;
228
+ left: -6px;
229
+ cursor: w-resize;
230
+ }
231
+
232
+ .image-resizer.image-resizer-nw {
233
+ top: -6px;
234
+ left: -6px;
235
+ cursor: nw-resize;
236
+ }
237
237
  `;
@@ -61,27 +61,27 @@ export function InputComponent(props) {
61
61
  }, fullWidth: true }));
62
62
  }
63
63
  // 교사 edit view
64
- return (_jsxs(_Fragment, { children: [_jsxs("div", { css: css `
65
- display: flex;
66
- align-items: center;
67
- gap: 4px;
64
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { css: css `
65
+ display: flex;
66
+ align-items: center;
67
+ gap: 4px;
68
68
  `, children: [_jsx(VirtualInput, { onClick: () => setSettingOpen(true), children: t("주관식 입력 칸", { context: "렉시컬 주관식 입력 도구" }) }), _jsx(SquareButton, { size: "small", color: "icon", icon: _jsx(Settings3FillIcon, {}), onClick: () => {
69
69
  setSettingOpen(true);
70
70
  }, "aria-label": t("입력 칸 설정", { context: "렉시컬 주관식 입력 도구" }) })] }), settingOpen && (_jsx(SettingForm, Object.assign({}, settingFormProps, { onClose: () => setSettingOpen(false) })))] }));
71
71
  }
72
- const VirtualInput = styled.div(({ theme }) => css `
73
- box-sizing: border-box;
74
- height: 36px;
75
- width: 300px;
76
- padding: 8px 16px;
77
- align-items: center;
78
- border-radius: 8px;
79
- background: ${theme.color.background.neutralAlt};
80
- cursor: pointer;
81
- color: ${theme.color.foreground.neutralBaseDisabled};
82
- font-family: ${theme.fontFamily.ui};
83
- font-size: 14px;
84
- font-style: normal;
85
- font-weight: 400;
86
- line-height: 20px; /* 142.857% */
72
+ const VirtualInput = styled.div(({ theme }) => css `
73
+ box-sizing: border-box;
74
+ height: 36px;
75
+ width: 300px;
76
+ padding: 8px 16px;
77
+ align-items: center;
78
+ border-radius: 8px;
79
+ background: ${theme.color.background.neutralAlt};
80
+ cursor: pointer;
81
+ color: ${theme.color.foreground.neutralBaseDisabled};
82
+ font-family: ${theme.fontFamily.ui};
83
+ font-size: 14px;
84
+ font-style: normal;
85
+ font-weight: 400;
86
+ line-height: 20px; /* 142.857% */
87
87
  `);
@@ -91,13 +91,13 @@ export function SegmentedInput(props) {
91
91
  setIsHiddenInputFocused(false);
92
92
  onChange(getFormattedValue(e.target.value).slice(0, answerFormat.length));
93
93
  setIsComposing(false);
94
- }, css: css `
95
- opacity: 0;
96
- height: 0;
97
- ` }), _jsxs(InputWrapper, { children: [_jsx("div", { css: css `
98
- display: flex;
99
- align-items: center;
100
- gap: 4px;
94
+ }, css: css `
95
+ opacity: 0;
96
+ height: 0;
97
+ ` }), _jsxs(InputWrapper, { children: [_jsx("div", { css: css `
98
+ display: flex;
99
+ align-items: center;
100
+ gap: 4px;
101
101
  `, children: despacedFormat.map((_format, i) => (_jsx(SquareInput, { leftSpaced: leftSpacedIndexs.includes(i), size: "small", color: isCorrect === true
102
102
  ? "activeSuccess"
103
103
  : isCorrect === false
@@ -105,10 +105,10 @@ export function SegmentedInput(props) {
105
105
  : isHiddenInputFocused && isSelectedSquareInputIndex(i)
106
106
  ? "activePrimary"
107
107
  : "default", css: isCorrect === false &&
108
- css `
109
- input {
110
- color: ${theme.color.foreground.danger};
111
- }
108
+ css `
109
+ input {
110
+ color: ${theme.color.foreground.danger};
111
+ }
112
112
  `, inputProps: {
113
113
  readOnly,
114
114
  tabIndex: -1,
@@ -124,47 +124,47 @@ export function SegmentedInput(props) {
124
124
  },
125
125
  }, value: splitedValues[i] || "", onChange: () => { } }, i))) }), _jsx(InputMarker, {})] }), _jsx(Text, { children: placeholder })] }));
126
126
  }
127
- const Container = styled.div `
128
- display: flex;
129
- width: fit-content;
130
- flex-direction: column;
131
- justify-content: center;
132
- gap: 8px;
127
+ const Container = styled.div `
128
+ display: flex;
129
+ width: fit-content;
130
+ flex-direction: column;
131
+ justify-content: center;
132
+ gap: 8px;
133
133
  `;
134
- const InputWrapper = styled.div `
135
- display: flex;
136
- width: fit-content;
137
- flex-direction: column;
138
- gap: 8px;
139
- margin: auto;
134
+ const InputWrapper = styled.div `
135
+ display: flex;
136
+ width: fit-content;
137
+ flex-direction: column;
138
+ gap: 8px;
139
+ margin: auto;
140
140
  `;
141
- const SquareInput = styled(InputBase)(({ leftSpaced }) => css `
142
- width: 36px;
143
- height: 36px;
144
- padding-left: 0;
145
- padding-right: 0;
146
- input {
147
- text-align: center;
148
- }
141
+ const SquareInput = styled(InputBase)(({ leftSpaced }) => css `
142
+ width: 36px;
143
+ height: 36px;
144
+ padding-left: 0;
145
+ padding-right: 0;
146
+ input {
147
+ text-align: center;
148
+ }
149
149
  ${leftSpaced &&
150
- css `
151
- margin-left: 8px;
152
- `}
150
+ css `
151
+ margin-left: 8px;
152
+ `}
153
153
  `);
154
- const InputMarker = styled.div(({ theme }) => css `
155
- height: 8px;
156
- border: 1px solid ${theme.color.background.neutralAltActive};
157
- border-top: none;
158
- border-bottom-left-radius: 4px;
159
- border-bottom-right-radius: 4px;
154
+ const InputMarker = styled.div(({ theme }) => css `
155
+ height: 8px;
156
+ border: 1px solid ${theme.color.background.neutralAltActive};
157
+ border-top: none;
158
+ border-bottom-left-radius: 4px;
159
+ border-bottom-right-radius: 4px;
160
160
  `);
161
- const Text = styled.span(({ theme }) => css `
162
- color: ${theme.color.foreground.neutralBaseDisabled};
163
- text-align: center;
164
- /* Default/Label/12px-Md */
165
- font-family: ${theme.fontFamily.ui};
166
- font-size: 12px;
167
- font-style: normal;
168
- font-weight: 500;
169
- line-height: 16px; /* 133.333% */
161
+ const Text = styled.span(({ theme }) => css `
162
+ color: ${theme.color.foreground.neutralBaseDisabled};
163
+ text-align: center;
164
+ /* Default/Label/12px-Md */
165
+ font-family: ${theme.fontFamily.ui};
166
+ font-size: 12px;
167
+ font-style: normal;
168
+ font-weight: 500;
169
+ line-height: 16px; /* 133.333% */
170
170
  `);
@@ -14,13 +14,13 @@ export function FormSolution(props) {
14
14
  const { t } = useTranslation();
15
15
  return (_jsx(Controller, { name: `solutions.${index}.value`, control: control, rules: rules, render: ({ field: { value, onChange }, fieldState: { invalid, error }, }) => {
16
16
  const disabled = (error === null || error === void 0 ? void 0 : error.type) === "enabled";
17
- return (_jsx(Input, { size: "small", color: invalid ? "activeDanger" : "default", onChange: onChange, disabled: disabled, value: value, hintIcon: !disabled && invalid ? _jsx(ErrorWarningFillIcon, {}) : undefined, hintText: !disabled ? error === null || error === void 0 ? void 0 : error.message : undefined, placeholder: t("안녕하세요"), fullWidth: true, css: css `
18
- > div {
19
- padding: 4px 12px;
20
- }
21
- `, startIcon: _jsx(TextTypeDropdown, { index: index, control: control, disabled: disabled }), endIcon: _jsxs("div", { css: css `
22
- display: flex;
23
- gap: 4px;
17
+ return (_jsx(Input, { size: "small", color: invalid ? "activeDanger" : "default", onChange: onChange, disabled: disabled, value: value, hintIcon: !disabled && invalid ? _jsx(ErrorWarningFillIcon, {}) : undefined, hintText: !disabled ? error === null || error === void 0 ? void 0 : error.message : undefined, placeholder: t("안녕하세요"), fullWidth: true, css: css `
18
+ > div {
19
+ padding: 4px 12px;
20
+ }
21
+ `, startIcon: _jsx(TextTypeDropdown, { index: index, control: control, disabled: disabled }), endIcon: _jsxs("div", { css: css `
22
+ display: flex;
23
+ gap: 4px;
24
24
  `, children: [onDelete && (_jsx(SquareButton, { color: "white", size: "xsmall", icon: _jsx(DeleteBinLineIcon, {}), onClick: onDelete, "aria-label": t("삭제", {
25
25
  context: "스퀘어버튼, 렉시컬 주관식 설정창",
26
26
  }) })), disabled && (_jsx(Tooltip, { text: _jsx("span", { children: _jsx(Trans, { i18nKey: "\uC785\uB825 \uCE78 \uC124\uC815\uC774 '\uAE00\uC790 \uC218\uB300\uB85C'\uC778 \uACBD\uC6B0<br/>\uC815\uB2F5\uC744 \uD558\uB098\uB9CC \uB4F1\uB85D\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4." }) }), children: _jsx(SquareButton, { color: "danger", size: "xsmall", icon: _jsx(AlertFillIcon, { color: theme.color.foreground.neutralAlt }), disabled: true, "aria-label": t("정답 등록 불가") }) }))] }) }));
@@ -51,9 +51,9 @@ export function SettingForm(props) {
51
51
  onClose();
52
52
  };
53
53
  const multipleSolutionsDisabled = watch("showCharacterNumber");
54
- return (_jsxs(Form, { onSubmit: handleSubmit(onSettingSubmit), children: [_jsxs(Title, { children: [_jsx(InputMethodLineIcon, { css: css `
55
- width: 12px;
56
- height: 12px;
54
+ return (_jsxs(Form, { onSubmit: handleSubmit(onSettingSubmit), children: [_jsxs(Title, { children: [_jsx(InputMethodLineIcon, { css: css `
55
+ width: 12px;
56
+ height: 12px;
57
57
  ` }), t("주관식 입력 칸", { context: "렉시컬 주관식 설정창" })] }), _jsxs(Content, { children: [_jsxs(Left, { children: [_jsxs(FormArea, { children: [_jsx(Label, { children: t("정답", { context: "소제목, 렉시컬 주관식 설정창" }) }), fields.map((field, index) => (_jsx(FormSolution, { index: index, control: control, rules: {
58
58
  validate: {
59
59
  // required 옵션보다 먼저 검증되어야 하는데 priority 옵션이 없어서 validate에서 통합해서 검증합니다.
@@ -71,21 +71,21 @@ export function SettingForm(props) {
71
71
  textType: "normal",
72
72
  value: "",
73
73
  });
74
- } }), _jsxs("div", { css: css `
75
- display: flex;
76
- gap: 4px;
77
- `, children: [_jsx(AlarmWarningFillIcon, { color: theme.color.foreground.neutralBaseDisabled, css: css `
78
- width: 14px;
79
- height: 14px;
80
- ` }), _jsx(Label, { children: t("가능한 정답을 모두 추가해야 원활하게 자동 채점할 수 있어요.") })] })] }), _jsxs(Right, { children: [_jsxs(FormArea, { children: [_jsxs(Label, { children: [t("입력 칸"), _jsx(Tooltip, { text: _jsx("span", { children: _jsx(Trans, { i18nKey: "\uC608\uB97C \uB4E4\uC5B4 \uC815\uB2F5\uC774 '\uAE00\uC790 \uC218'\uC774\uACE0<br /><strong>{{numCharOptionStr}}</strong> \uC635\uC158\uC744 \uC120\uD0DD\uD588\uB2E4\uBA74<br />\uC785\uB825 \uCE78\uC774 '\u2610\u2610 \u2610' \uCC98\uB7FC \uD45C\uC2DC\uB429\uB2C8\uB2E4.", values: { numCharOptionStr } }) }), placement: "top", children: _jsx(QuestionFillIcon, { css: css `
81
- width: 12px;
82
- height: 12px;
74
+ } }), _jsxs("div", { css: css `
75
+ display: flex;
76
+ gap: 4px;
77
+ `, children: [_jsx(AlarmWarningFillIcon, { color: theme.color.foreground.neutralBaseDisabled, css: css `
78
+ width: 14px;
79
+ height: 14px;
80
+ ` }), _jsx(Label, { children: t("가능한 정답을 모두 추가해야 원활하게 자동 채점할 수 있어요.") })] })] }), _jsxs(Right, { children: [_jsxs(FormArea, { children: [_jsxs(Label, { children: [t("입력 칸"), _jsx(Tooltip, { text: _jsx("span", { children: _jsx(Trans, { i18nKey: "\uC608\uB97C \uB4E4\uC5B4 \uC815\uB2F5\uC774 '\uAE00\uC790 \uC218'\uC774\uACE0<br /><strong>{{numCharOptionStr}}</strong> \uC635\uC158\uC744 \uC120\uD0DD\uD588\uB2E4\uBA74<br />\uC785\uB825 \uCE78\uC774 '\u2610\u2610 \u2610' \uCC98\uB7FC \uD45C\uC2DC\uB429\uB2C8\uB2E4.", values: { numCharOptionStr } }) }), placement: "top", children: _jsx(QuestionFillIcon, { css: css `
81
+ width: 12px;
82
+ height: 12px;
83
83
  ` }) })] }), _jsx(FormSegmentedControl, { control: control, trigger: trigger, name: "showCharacterNumber", items: [
84
84
  { value: false, label: t("한 칸으로") },
85
85
  { value: true, label: numCharOptionStr },
86
- ] })] }), _jsxs(FormArea, { children: [_jsxs(Label, { children: [t("자리 표시자", { context: "렉시컬 주관식 설정창" }), _jsx(Tooltip, { text: getTexts(t, "descriptionDefaultInputText"), placement: "top", children: _jsx(QuestionFillIcon, { css: css `
87
- width: 12px;
88
- height: 12px;
86
+ ] })] }), _jsxs(FormArea, { children: [_jsxs(Label, { children: [t("자리 표시자", { context: "렉시컬 주관식 설정창" }), _jsx(Tooltip, { text: getTexts(t, "descriptionDefaultInputText"), placement: "top", children: _jsx(QuestionFillIcon, { css: css `
87
+ width: 12px;
88
+ height: 12px;
89
89
  ` }) })] }), _jsx(FormPlaceholder, { control: control })] }), _jsxs(FormArea, { children: [_jsx(Label, { children: t("띄어쓰기") }), _jsx(FormSegmentedControl, { control: control, trigger: trigger, name: "ignoreWhitespace", items: [
90
90
  { value: true, label: t("무시하기") },
91
91
  { value: false, label: t("포함하기") },
@@ -94,69 +94,69 @@ export function SettingForm(props) {
94
94
  { value: true, label: t("포함하기") },
95
95
  ] })] })] })] }), _jsxs(Buttons, { children: [_jsx(Button, { color: "grey", size: "xsmall", label: t("닫기", { context: "렉시컬 도구 설정창" }), onClick: onClose }), _jsx(Button, { color: "primary", size: "xsmall", label: t("이대로 넣기", { context: "렉시컬 도구 설정창" }), type: "submit" })] })] }));
96
96
  }
97
- const Form = styled.form(({ theme }) => css `
98
- display: flex;
99
- width: 620px;
100
- flex-direction: column;
101
- border-radius: 6px;
102
- border: 1px solid ${theme.color.background.neutralAltActive};
103
- background: ${theme.color.background.neutralBase};
104
- box-shadow: ${shadows.shadow08};
97
+ const Form = styled.form(({ theme }) => css `
98
+ display: flex;
99
+ width: 620px;
100
+ flex-direction: column;
101
+ border-radius: 6px;
102
+ border: 1px solid ${theme.color.background.neutralAltActive};
103
+ background: ${theme.color.background.neutralBase};
104
+ box-shadow: ${shadows.shadow08};
105
105
  `);
106
- const Title = styled.div(({ theme }) => css `
107
- display: flex;
108
- padding: 8px 12px;
109
- gap: 4px;
110
- align-items: center;
111
- color: ${theme.color.foreground.neutralBase};
112
- /* Default/Label/12px-Md */
113
- font-family: ${theme.fontFamily.ui};
114
- font-size: 12px;
115
- font-style: normal;
116
- font-weight: 500;
117
- line-height: 16px; /* 133.333% */
106
+ const Title = styled.div(({ theme }) => css `
107
+ display: flex;
108
+ padding: 8px 12px;
109
+ gap: 4px;
110
+ align-items: center;
111
+ color: ${theme.color.foreground.neutralBase};
112
+ /* Default/Label/12px-Md */
113
+ font-family: ${theme.fontFamily.ui};
114
+ font-size: 12px;
115
+ font-style: normal;
116
+ font-weight: 500;
117
+ line-height: 16px; /* 133.333% */
118
118
  `);
119
- const Content = styled.div(({ theme }) => css `
120
- display: flex;
121
- border-top: 1px solid ${theme.color.background.neutralAltActive};
122
- border-bottom: 1px solid ${theme.color.background.neutralAltActive};
119
+ const Content = styled.div(({ theme }) => css `
120
+ display: flex;
121
+ border-top: 1px solid ${theme.color.background.neutralAltActive};
122
+ border-bottom: 1px solid ${theme.color.background.neutralAltActive};
123
123
  `);
124
- const Left = styled.div `
125
- display: flex;
126
- flex-direction: column;
127
- padding: 12px;
128
- gap: 12px;
129
- flex: 1;
124
+ const Left = styled.div `
125
+ display: flex;
126
+ flex-direction: column;
127
+ padding: 12px;
128
+ gap: 12px;
129
+ flex: 1;
130
130
  `;
131
- const FormArea = styled.div `
132
- display: flex;
133
- flex-direction: column;
134
- gap: 8px;
131
+ const FormArea = styled.div `
132
+ display: flex;
133
+ flex-direction: column;
134
+ gap: 8px;
135
135
  `;
136
- const Right = styled.div `
137
- display: flex;
138
- box-sizing: border-box;
139
- width: 240px;
140
- flex-direction: column;
141
- padding: 12px;
142
- gap: 12px;
136
+ const Right = styled.div `
137
+ display: flex;
138
+ box-sizing: border-box;
139
+ width: 240px;
140
+ flex-direction: column;
141
+ padding: 12px;
142
+ gap: 12px;
143
143
  `;
144
- const Label = styled.div(({ theme }) => css `
145
- display: flex;
146
- gap: 4px;
147
- align-items: center;
148
- color: ${theme.color.foreground.neutralBaseDisabled};
149
- /* Default/Label/12px-Md */
150
- font-family: ${theme.fontFamily.ui};
151
- font-size: 12px;
152
- font-style: normal;
153
- font-weight: 500;
154
- line-height: 16px; /* 133.333% */
144
+ const Label = styled.div(({ theme }) => css `
145
+ display: flex;
146
+ gap: 4px;
147
+ align-items: center;
148
+ color: ${theme.color.foreground.neutralBaseDisabled};
149
+ /* Default/Label/12px-Md */
150
+ font-family: ${theme.fontFamily.ui};
151
+ font-size: 12px;
152
+ font-style: normal;
153
+ font-weight: 500;
154
+ line-height: 16px; /* 133.333% */
155
155
  `);
156
- const Buttons = styled.div `
157
- display: flex;
158
- padding: 12px;
159
- justify-content: flex-end;
160
- align-items: center;
161
- gap: 8px;
156
+ const Buttons = styled.div `
157
+ display: flex;
158
+ padding: 12px;
159
+ justify-content: flex-end;
160
+ align-items: center;
161
+ gap: 8px;
162
162
  `;
@@ -9,11 +9,11 @@ export function TextTypeDropdown(props) {
9
9
  const { t } = useTranslation();
10
10
  const normalLabel = t("일반 텍스트");
11
11
  const codeLabel = t("코드 텍스트");
12
- return (_jsx(Controller, { name: `solutions.${index}.textType`, control: control, render: ({ field: { value, onChange } }) => (_jsx(Dropdown, { label: value === "normal" ? normalLabel : codeLabel, size: "xsmall", color: "textNeutral", closeOnItemClick: true, disabled: disabled, buttonCss: css `
13
- ${disabled && `color: ${theme.color.foreground.neutralAlt};`}
14
- > span {
15
- font-weight: 700;
16
- }
12
+ return (_jsx(Controller, { name: `solutions.${index}.textType`, control: control, render: ({ field: { value, onChange } }) => (_jsx(Dropdown, { label: value === "normal" ? normalLabel : codeLabel, size: "xsmall", color: "textNeutral", closeOnItemClick: true, disabled: disabled, buttonCss: css `
13
+ ${disabled && `color: ${theme.color.foreground.neutralAlt};`}
14
+ > span {
15
+ font-weight: 700;
16
+ }
17
17
  `, menuProps: {
18
18
  anchorOrigin: {
19
19
  vertical: "bottom",
@@ -27,13 +27,13 @@ export function TextInput(props) {
27
27
  : inputOriginalProps.color, inputProps: {
28
28
  readOnly: true,
29
29
  className: isCorrect === false
30
- ? cssToClassName `
31
- color: ${theme.color.foreground.danger};
32
- &::placeholder {
33
- // inputComponent의 placeholder 스타일을 덮어쓰기 위해 부득이하게 !important 사용
34
- // TODO: static classname을 사용하여 !important 제거
35
- color: ${theme.color.foreground.dangerDisabled} !important;
36
- }
30
+ ? cssToClassName `
31
+ color: ${theme.color.foreground.danger};
32
+ &::placeholder {
33
+ // inputComponent의 placeholder 스타일을 덮어쓰기 위해 부득이하게 !important 사용
34
+ // TODO: static classname을 사용하여 !important 제거
35
+ color: ${theme.color.foreground.dangerDisabled} !important;
36
+ }
37
37
  `
38
38
  : undefined,
39
39
  } })));