@tipp/ui 2.10.0 → 2.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/index.js +8 -8
- package/dist/app/platform/edit-coaching-time.js +8 -8
- package/dist/app/platform/edit-service-type.js +8 -8
- package/dist/app/platform/goal-manage-card-edit.js +8 -8
- package/dist/app/platform/on-offline-radio-card.js +8 -8
- package/dist/app/platform/reservation-card.js +8 -8
- package/dist/app/platform/session-card.js +8 -8
- package/dist/app/roleplay/index.cjs +362 -428
- package/dist/app/roleplay/index.cjs.map +1 -1
- package/dist/app/roleplay/index.js +19 -18
- package/dist/app/roleplay/parts/content.cjs +281 -290
- package/dist/app/roleplay/parts/content.cjs.map +1 -1
- package/dist/app/roleplay/parts/content.js +15 -14
- package/dist/app/roleplay/parts/header.cjs +1 -1
- package/dist/app/roleplay/parts/header.cjs.map +1 -1
- package/dist/app/roleplay/parts/header.js +1 -1
- package/dist/app/roleplay/parts/score-summary.cjs +32 -46
- package/dist/app/roleplay/parts/score-summary.cjs.map +1 -1
- package/dist/app/roleplay/parts/score-summary.js +2 -1
- package/dist/app/roleplay/parts/score-trend-section.cjs +16 -15
- package/dist/app/roleplay/parts/score-trend-section.cjs.map +1 -1
- package/dist/app/roleplay/parts/score-trend-section.js +9 -10
- package/dist/app/roleplay/parts/script-transcript.cjs +29 -37
- package/dist/app/roleplay/parts/script-transcript.cjs.map +1 -1
- package/dist/app/roleplay/parts/script-transcript.js +2 -1
- package/dist/app/roleplay/parts/section-nav.cjs +3 -2
- package/dist/app/roleplay/parts/section-nav.cjs.map +1 -1
- package/dist/app/roleplay/parts/section-nav.js +1 -1
- package/dist/app/roleplay/parts/session-replay-dialog.cjs +39 -47
- package/dist/app/roleplay/parts/session-replay-dialog.cjs.map +1 -1
- package/dist/app/roleplay/parts/session-replay-dialog.js +3 -2
- package/dist/app/roleplay/parts/speech-share-bar.cjs +2171 -0
- package/dist/app/roleplay/parts/speech-share-bar.cjs.map +1 -0
- package/dist/app/roleplay/parts/speech-share-bar.d.cts +9 -0
- package/dist/app/roleplay/parts/speech-share-bar.d.ts +9 -0
- package/dist/app/roleplay/parts/speech-share-bar.js +96 -0
- package/dist/app/roleplay/parts/speech-share-bar.js.map +1 -0
- package/dist/app/roleplay/parts/step-summary.cjs +2 -2
- package/dist/app/roleplay/parts/step-summary.cjs.map +1 -1
- package/dist/app/roleplay/parts/step-summary.js +1 -1
- package/dist/app/roleplay/rp-session-detail.cjs +362 -428
- package/dist/app/roleplay/rp-session-detail.cjs.map +1 -1
- package/dist/app/roleplay/rp-session-detail.js +19 -18
- package/dist/{chunk-6YIKOYBQ.js → chunk-2XDAK4B7.js} +5 -73
- package/dist/chunk-2XDAK4B7.js.map +1 -0
- package/dist/{chunk-U2EAXN3Y.js → chunk-A32HLL53.js} +4 -4
- package/dist/{chunk-3UGBMKSQ.js → chunk-AS3JVRQ3.js} +2 -2
- package/dist/{chunk-NKW6BO5R.js → chunk-DIISQDYA.js} +4 -3
- package/dist/chunk-DIISQDYA.js.map +1 -0
- package/dist/{chunk-N242VJOP.js → chunk-IIZ7I7NS.js} +5 -5
- package/dist/{chunk-2TOASXPK.js → chunk-MD64AUR6.js} +8 -8
- package/dist/chunk-MD64AUR6.js.map +1 -0
- package/dist/{chunk-LRNO4W2P.js → chunk-NSDVLCCW.js} +5 -5
- package/dist/{chunk-EHDUKUML.js → chunk-RNGEVYY5.js} +12 -72
- package/dist/chunk-RNGEVYY5.js.map +1 -0
- package/dist/{chunk-XM4GWPXC.js → chunk-RZW6FVML.js} +18 -12
- package/dist/chunk-RZW6FVML.js.map +1 -0
- package/dist/{chunk-T7LKMJVA.js → chunk-SZAU7YP3.js} +4 -4
- package/dist/{chunk-O332K3SW.js → chunk-UK3LP7VH.js} +2 -2
- package/dist/{chunk-QMAINJ4G.js → chunk-VM2PEQLQ.js} +2 -2
- package/dist/chunk-VM2PEQLQ.js.map +1 -0
- package/dist/chunk-W72CR2TG.js +71 -0
- package/dist/chunk-W72CR2TG.js.map +1 -0
- package/dist/{chunk-EBFQFOUQ.js → chunk-WVY3C64M.js} +3 -3
- package/dist/chunk-WVY3C64M.js.map +1 -0
- package/dist/{chunk-SOKGYD5B.js → chunk-YFR3HXSV.js} +2 -2
- package/dist/index.js +8 -8
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +3 -3
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +5 -5
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +6 -6
- package/dist/molecules/curriculumV2/CurriculumContents/index.js +8 -8
- package/dist/molecules/curriculumV2/index.js +8 -8
- package/dist/molecules/index.js +8 -8
- package/package.json +1 -1
- package/src/app/roleplay/parts/content.tsx +3 -3
- package/src/app/roleplay/parts/header.tsx +1 -1
- package/src/app/roleplay/parts/score-summary.tsx +4 -57
- package/src/app/roleplay/parts/score-trend-section.tsx +19 -9
- package/src/app/roleplay/parts/script-transcript.tsx +9 -64
- package/src/app/roleplay/parts/section-nav.tsx +3 -2
- package/src/app/roleplay/parts/speech-share-bar.tsx +54 -0
- package/src/app/roleplay/parts/step-summary.tsx +2 -4
- package/dist/chunk-2TOASXPK.js.map +0 -1
- package/dist/chunk-6YIKOYBQ.js.map +0 -1
- package/dist/chunk-EBFQFOUQ.js.map +0 -1
- package/dist/chunk-EHDUKUML.js.map +0 -1
- package/dist/chunk-NKW6BO5R.js.map +0 -1
- package/dist/chunk-QMAINJ4G.js.map +0 -1
- package/dist/chunk-XM4GWPXC.js.map +0 -1
- /package/dist/{chunk-U2EAXN3Y.js.map → chunk-A32HLL53.js.map} +0 -0
- /package/dist/{chunk-3UGBMKSQ.js.map → chunk-AS3JVRQ3.js.map} +0 -0
- /package/dist/{chunk-N242VJOP.js.map → chunk-IIZ7I7NS.js.map} +0 -0
- /package/dist/{chunk-LRNO4W2P.js.map → chunk-NSDVLCCW.js.map} +0 -0
- /package/dist/{chunk-T7LKMJVA.js.map → chunk-SZAU7YP3.js.map} +0 -0
- /package/dist/{chunk-O332K3SW.js.map → chunk-UK3LP7VH.js.map} +0 -0
- /package/dist/{chunk-SOKGYD5B.js.map → chunk-YFR3HXSV.js.map} +0 -0
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
RpSessionDetail
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-SZAU7YP3.js";
|
|
5
5
|
import "../../chunk-TFJJKM3W.js";
|
|
6
|
-
import "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
8
|
-
import "../../chunk-
|
|
9
|
-
import "../../chunk-
|
|
10
|
-
import "../../chunk-
|
|
11
|
-
import "../../chunk-6YIKOYBQ.js";
|
|
12
|
-
import "../../chunk-XM4GWPXC.js";
|
|
13
|
-
import "../../chunk-NKW6BO5R.js";
|
|
14
|
-
import "../../chunk-KJPBBBVK.js";
|
|
6
|
+
import "../../chunk-VM2PEQLQ.js";
|
|
7
|
+
import "../../chunk-AS3JVRQ3.js";
|
|
8
|
+
import "../../chunk-RNGEVYY5.js";
|
|
9
|
+
import "../../chunk-MD64AUR6.js";
|
|
10
|
+
import "../../chunk-WVY3C64M.js";
|
|
15
11
|
import "../../chunk-5QIT4URV.js";
|
|
12
|
+
import "../../chunk-2XDAK4B7.js";
|
|
13
|
+
import "../../chunk-RZW6FVML.js";
|
|
14
|
+
import "../../chunk-DIISQDYA.js";
|
|
15
|
+
import "../../chunk-W72CR2TG.js";
|
|
16
|
+
import "../../chunk-KJPBBBVK.js";
|
|
16
17
|
import "../../chunk-4YAA25AV.js";
|
|
17
18
|
import "../../chunk-UXAEOCOH.js";
|
|
18
19
|
import "../../chunk-7MXY3D3Z.js";
|
|
@@ -22,7 +23,8 @@ import "../../chunk-WSWSAPSS.js";
|
|
|
22
23
|
import "../../chunk-RXK3JM34.js";
|
|
23
24
|
import "../../chunk-SYMOHU2B.js";
|
|
24
25
|
import "../../chunk-AS7ID74X.js";
|
|
25
|
-
import "../../chunk-
|
|
26
|
+
import "../../chunk-IIZ7I7NS.js";
|
|
27
|
+
import "../../chunk-KFUBWOCN.js";
|
|
26
28
|
import "../../chunk-RRC4WFG3.js";
|
|
27
29
|
import "../../chunk-P2H3VCIB.js";
|
|
28
30
|
import "../../chunk-WS7IOHVK.js";
|
|
@@ -31,22 +33,21 @@ import "../../chunk-QLOYGKKM.js";
|
|
|
31
33
|
import "../../chunk-S4MEMFKG.js";
|
|
32
34
|
import "../../chunk-K4RZTENM.js";
|
|
33
35
|
import "../../chunk-UXH2XIB2.js";
|
|
34
|
-
import "../../chunk-
|
|
35
|
-
import "../../chunk-
|
|
36
|
-
import "../../chunk-
|
|
37
|
-
import "../../chunk-
|
|
38
|
-
import "../../chunk-
|
|
36
|
+
import "../../chunk-UK3LP7VH.js";
|
|
37
|
+
import "../../chunk-NSDVLCCW.js";
|
|
38
|
+
import "../../chunk-YFR3HXSV.js";
|
|
39
|
+
import "../../chunk-A32HLL53.js";
|
|
40
|
+
import "../../chunk-ZGTGEBQX.js";
|
|
39
41
|
import "../../chunk-WLKK5L3P.js";
|
|
40
42
|
import "../../chunk-GE4M5GOQ.js";
|
|
41
43
|
import "../../chunk-G3KQN32M.js";
|
|
42
44
|
import "../../chunk-VK6INFSB.js";
|
|
43
45
|
import "../../chunk-CGLDFUOY.js";
|
|
44
46
|
import "../../chunk-OUDDTPEN.js";
|
|
45
|
-
import "../../chunk-ZGTGEBQX.js";
|
|
46
47
|
import "../../chunk-SINRU2A6.js";
|
|
47
48
|
import "../../chunk-NVRVOTWZ.js";
|
|
49
|
+
import "../../chunk-LK2H4QTJ.js";
|
|
48
50
|
import "../../chunk-GMKRNFH5.js";
|
|
49
|
-
import "../../chunk-KFUBWOCN.js";
|
|
50
51
|
import "../../chunk-XWHBJY5V.js";
|
|
51
52
|
import "../../chunk-WA5A2GB4.js";
|
|
52
53
|
import "../../chunk-K3Q4XLCN.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./chunk-
|
|
2
|
+
SpeechShareBar
|
|
3
|
+
} from "./chunk-W72CR2TG.js";
|
|
4
4
|
import {
|
|
5
5
|
Separator
|
|
6
6
|
} from "./chunk-HYITAA4J.js";
|
|
@@ -22,74 +22,6 @@ import {
|
|
|
22
22
|
|
|
23
23
|
// src/app/roleplay/parts/score-summary.tsx
|
|
24
24
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
25
|
-
function SpeechShareBar({ share }) {
|
|
26
|
-
const isOvertalking = share.userPct > SPEECH_OVERTALK_THRESHOLD;
|
|
27
|
-
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
28
|
-
/* @__PURE__ */ jsxs(Flex, { align: "center", justify: "between", mb: "1", children: [
|
|
29
|
-
/* @__PURE__ */ jsxs(
|
|
30
|
-
Typo,
|
|
31
|
-
{
|
|
32
|
-
as: "span",
|
|
33
|
-
style: {
|
|
34
|
-
fontSize: "0.75rem",
|
|
35
|
-
color: isOvertalking ? "var(--red-11)" : "var(--accent-11)"
|
|
36
|
-
},
|
|
37
|
-
variant: "body",
|
|
38
|
-
weight: "medium",
|
|
39
|
-
children: [
|
|
40
|
-
"\uB0B4 \uBC1C\uD654\uB7C9 ",
|
|
41
|
-
share.userPct,
|
|
42
|
-
"%"
|
|
43
|
-
]
|
|
44
|
-
}
|
|
45
|
-
),
|
|
46
|
-
/* @__PURE__ */ jsxs(
|
|
47
|
-
Typo,
|
|
48
|
-
{
|
|
49
|
-
as: "span",
|
|
50
|
-
color: "gray",
|
|
51
|
-
style: { fontSize: "0.75rem" },
|
|
52
|
-
variant: "body",
|
|
53
|
-
children: [
|
|
54
|
-
"\uC0C1\uB300 ",
|
|
55
|
-
share.partnerPct,
|
|
56
|
-
"%"
|
|
57
|
-
]
|
|
58
|
-
}
|
|
59
|
-
)
|
|
60
|
-
] }),
|
|
61
|
-
/* @__PURE__ */ jsx(
|
|
62
|
-
Flex,
|
|
63
|
-
{
|
|
64
|
-
style: {
|
|
65
|
-
height: 6,
|
|
66
|
-
borderRadius: "var(--radius-1)",
|
|
67
|
-
overflow: "hidden",
|
|
68
|
-
background: "var(--gray-4)"
|
|
69
|
-
},
|
|
70
|
-
children: /* @__PURE__ */ jsx(
|
|
71
|
-
Box,
|
|
72
|
-
{
|
|
73
|
-
style: {
|
|
74
|
-
width: `${share.userPct}%`,
|
|
75
|
-
background: isOvertalking ? "var(--red-9)" : "var(--accent-9)"
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
)
|
|
79
|
-
}
|
|
80
|
-
),
|
|
81
|
-
isOvertalking ? /* @__PURE__ */ jsx(
|
|
82
|
-
Typo,
|
|
83
|
-
{
|
|
84
|
-
as: "p",
|
|
85
|
-
mt: "1",
|
|
86
|
-
style: { fontSize: "0.75rem", color: "var(--red-11)" },
|
|
87
|
-
variant: "body",
|
|
88
|
-
children: "\uC0C1\uB300\uC758 \uB9D0\uC744 \uB354 \uB4E3\uACE0 \uC9C8\uBB38\xB7\uACBD\uCCAD\uC758 \uBE44\uC911\uC744 \uB192\uC5EC \uBCF4\uC138\uC694"
|
|
89
|
-
}
|
|
90
|
-
) : null
|
|
91
|
-
] });
|
|
92
|
-
}
|
|
93
25
|
function ScoreSummary({
|
|
94
26
|
detail,
|
|
95
27
|
report,
|
|
@@ -150,8 +82,8 @@ function ScoreSummary({
|
|
|
150
82
|
Typo,
|
|
151
83
|
{
|
|
152
84
|
as: "p",
|
|
85
|
+
color: "amber",
|
|
153
86
|
mono: true,
|
|
154
|
-
style: { color: "var(--amber-11)" },
|
|
155
87
|
variant: "body",
|
|
156
88
|
weight: "medium",
|
|
157
89
|
children: [
|
|
@@ -165,7 +97,7 @@ function ScoreSummary({
|
|
|
165
97
|
Typo,
|
|
166
98
|
{
|
|
167
99
|
as: "p",
|
|
168
|
-
|
|
100
|
+
color: "amber",
|
|
169
101
|
variant: "body",
|
|
170
102
|
children: report.deduction.basis
|
|
171
103
|
}
|
|
@@ -182,4 +114,4 @@ function ScoreSummary({
|
|
|
182
114
|
export {
|
|
183
115
|
ScoreSummary
|
|
184
116
|
};
|
|
185
|
-
//# sourceMappingURL=chunk-
|
|
117
|
+
//# sourceMappingURL=chunk-2XDAK4B7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/app/roleplay/parts/score-summary.tsx"],"sourcesContent":["'use client';\n\nimport { Box, Card, Flex, Grid, Separator, Typo } from '../../../atoms';\nimport type { RpReport } from '../utils/report-parse';\nimport type { RpSessionDetailData } from '../types';\nimport type { SpeechShare } from '../utils/session-utils';\nimport { SpeechShareBar } from './speech-share-bar';\n\nexport interface ScoreSummaryProps {\n detail: RpSessionDetailData;\n report: RpReport;\n speechShare: SpeechShare | null;\n}\n\nexport function ScoreSummary({\n detail,\n report,\n speechShare,\n}: ScoreSummaryProps): React.ReactElement {\n const scoreValue = detail.totalScore ?? report.totalScore;\n const comment = report.comment;\n\n return (\n <Grid\n align=\"start\"\n columns={comment ? { initial: '1', md: 'minmax(0, 240px) 1fr' } : '1'}\n gap=\"5\"\n >\n <Card variant=\"surface\">\n <Flex align=\"center\" direction=\"column\" gap=\"2\" py=\"3\">\n <Typo as=\"p\" color=\"gray\" variant=\"body\" weight=\"medium\">\n 종합 점수\n </Typo>\n <Flex align=\"baseline\" gap=\"1\">\n <Typo\n as=\"span\"\n mono\n style={{\n color: 'var(--gray-12)',\n fontSize: '3.75rem',\n lineHeight: 1.1,\n }}\n weight=\"bold\"\n >\n {scoreValue ?? '—'}\n </Typo>\n <Typo as=\"span\" color=\"gray\" mono variant=\"subtitle\">\n /100\n </Typo>\n </Flex>\n </Flex>\n {speechShare ? (\n <>\n <Separator my=\"3\" size=\"4\" />\n <SpeechShareBar share={speechShare} />\n </>\n ) : null}\n </Card>\n\n {comment ? (\n <Flex direction=\"column\" gap=\"3\">\n <Typo as=\"p\" variant=\"body\" weight=\"medium\">\n 종합 분석\n </Typo>\n <Box style={{ maxWidth: '65ch' }}>\n <Typo as=\"p\" variant=\"body\">\n {comment}\n </Typo>\n </Box>\n {report.deduction ? (\n <Box\n pl=\"3\"\n pr=\"3\"\n py=\"2\"\n style={{\n borderLeft: '2px solid var(--amber-a6)',\n background: 'var(--amber-a2)',\n borderRadius: 'var(--radius-2)',\n }}\n >\n <Typo\n as=\"p\"\n color=\"amber\"\n mono\n variant=\"body\"\n weight=\"medium\"\n >\n 감점 {report.deduction.score}점\n </Typo>\n <Box mt=\"1\" style={{ maxWidth: '65ch' }}>\n <Typo\n as=\"p\"\n color=\"amber\"\n variant=\"body\"\n >\n {report.deduction.basis}\n </Typo>\n </Box>\n </Box>\n ) : null}\n </Flex>\n ) : null}\n </Grid>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA8BU,SAsBA,UAtBA,KAGA,YAHA;AAhBH,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,GAA0C;AAlB1C;AAmBE,QAAM,cAAa,YAAO,eAAP,YAAqB,OAAO;AAC/C,QAAM,UAAU,OAAO;AAEvB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,SAAS,UAAU,EAAE,SAAS,KAAK,IAAI,uBAAuB,IAAI;AAAA,MAClE,KAAI;AAAA,MAEJ;AAAA,6BAAC,QAAK,SAAQ,WACZ;AAAA,+BAAC,QAAK,OAAM,UAAS,WAAU,UAAS,KAAI,KAAI,IAAG,KACjD;AAAA,gCAAC,QAAK,IAAG,KAAI,OAAM,QAAO,SAAQ,QAAO,QAAO,UAAS,uCAEzD;AAAA,YACA,qBAAC,QAAK,OAAM,YAAW,KAAI,KACzB;AAAA;AAAA,gBAAC;AAAA;AAAA,kBACC,IAAG;AAAA,kBACH,MAAI;AAAA,kBACJ,OAAO;AAAA,oBACL,OAAO;AAAA,oBACP,UAAU;AAAA,oBACV,YAAY;AAAA,kBACd;AAAA,kBACA,QAAO;AAAA,kBAEN,4CAAc;AAAA;AAAA,cACjB;AAAA,cACA,oBAAC,QAAK,IAAG,QAAO,OAAM,QAAO,MAAI,MAAC,SAAQ,YAAW,kBAErD;AAAA,eACF;AAAA,aACF;AAAA,UACC,cACC,iCACE;AAAA,gCAAC,aAAU,IAAG,KAAI,MAAK,KAAI;AAAA,YAC3B,oBAAC,kBAAe,OAAO,aAAa;AAAA,aACtC,IACE;AAAA,WACN;AAAA,QAEC,UACC,qBAAC,QAAK,WAAU,UAAS,KAAI,KAC3B;AAAA,8BAAC,QAAK,IAAG,KAAI,SAAQ,QAAO,QAAO,UAAS,uCAE5C;AAAA,UACA,oBAAC,OAAI,OAAO,EAAE,UAAU,OAAO,GAC7B,8BAAC,QAAK,IAAG,KAAI,SAAQ,QAClB,mBACH,GACF;AAAA,UACC,OAAO,YACN;AAAA,YAAC;AAAA;AAAA,cACC,IAAG;AAAA,cACH,IAAG;AAAA,cACH,IAAG;AAAA,cACH,OAAO;AAAA,gBACL,YAAY;AAAA,gBACZ,YAAY;AAAA,gBACZ,cAAc;AAAA,cAChB;AAAA,cAEA;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAG;AAAA,oBACH,OAAM;AAAA,oBACN,MAAI;AAAA,oBACJ,SAAQ;AAAA,oBACR,QAAO;AAAA,oBACR;AAAA;AAAA,sBACK,OAAO,UAAU;AAAA,sBAAM;AAAA;AAAA;AAAA,gBAC7B;AAAA,gBACA,oBAAC,OAAI,IAAG,KAAI,OAAO,EAAE,UAAU,OAAO,GACpC;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAG;AAAA,oBACH,OAAM;AAAA,oBACN,SAAQ;AAAA,oBAEP,iBAAO,UAAU;AAAA;AAAA,gBACpB,GACF;AAAA;AAAA;AAAA,UACF,IACE;AAAA,WACN,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;","names":[]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ReviewQuestionSatisfisText
|
|
3
|
+
} from "./chunk-ZGTGEBQX.js";
|
|
1
4
|
import {
|
|
2
5
|
review_question_text_default
|
|
3
6
|
} from "./chunk-WLKK5L3P.js";
|
|
@@ -7,9 +10,6 @@ import {
|
|
|
7
10
|
import {
|
|
8
11
|
review_question_satisfaction_option_default
|
|
9
12
|
} from "./chunk-OUDDTPEN.js";
|
|
10
|
-
import {
|
|
11
|
-
ReviewQuestionSatisfisText
|
|
12
|
-
} from "./chunk-ZGTGEBQX.js";
|
|
13
13
|
|
|
14
14
|
// src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.tsx
|
|
15
15
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -66,4 +66,4 @@ var review_question_body_default = ReviewQuestionBody;
|
|
|
66
66
|
export {
|
|
67
67
|
review_question_body_default
|
|
68
68
|
};
|
|
69
|
-
//# sourceMappingURL=chunk-
|
|
69
|
+
//# sourceMappingURL=chunk-A32HLL53.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ScriptTranscript
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RNGEVYY5.js";
|
|
4
4
|
import {
|
|
5
5
|
computeSpeechShare,
|
|
6
6
|
isLengthClose
|
|
@@ -163,4 +163,4 @@ function SessionReplayDialog({
|
|
|
163
163
|
export {
|
|
164
164
|
SessionReplayDialog
|
|
165
165
|
};
|
|
166
|
-
//# sourceMappingURL=chunk-
|
|
166
|
+
//# sourceMappingURL=chunk-AS3JVRQ3.js.map
|
|
@@ -71,8 +71,9 @@ function StepMetricBadge({ step }) {
|
|
|
71
71
|
Typo,
|
|
72
72
|
{
|
|
73
73
|
as: "span",
|
|
74
|
+
color: "gray",
|
|
74
75
|
mono: true,
|
|
75
|
-
style: { flexShrink: 0
|
|
76
|
+
style: { flexShrink: 0 },
|
|
76
77
|
variant: "body",
|
|
77
78
|
weight: "medium",
|
|
78
79
|
children: scoreText
|
|
@@ -227,8 +228,8 @@ function SectionNav({ items, steps }) {
|
|
|
227
228
|
Typo,
|
|
228
229
|
{
|
|
229
230
|
as: "span",
|
|
231
|
+
color: "gray",
|
|
230
232
|
mono: true,
|
|
231
|
-
style: { color: "var(--gray-11)" },
|
|
232
233
|
variant: "body",
|
|
233
234
|
weight: "medium",
|
|
234
235
|
children: stepCode(step)
|
|
@@ -261,4 +262,4 @@ function SectionNav({ items, steps }) {
|
|
|
261
262
|
export {
|
|
262
263
|
SectionNav
|
|
263
264
|
};
|
|
264
|
-
//# sourceMappingURL=chunk-
|
|
265
|
+
//# sourceMappingURL=chunk-DIISQDYA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/app/roleplay/parts/section-nav.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\nimport { Box, Flex, Progress, Typo } from '../../../atoms';\nimport type { RpReportStep } from '../utils/report-parse';\nimport {\n stepCode,\n stepColor,\n stepGradeLabel,\n stepRatio,\n stepScoreText,\n stepVars,\n} from '../utils/session-utils';\n\nexport interface SectionNavItem {\n id: string;\n label: string;\n score?: number | null;\n max?: number;\n}\n\nexport interface SectionNavProps {\n items: SectionNavItem[];\n steps: RpReportStep[];\n}\n\nconst NAV_ICONS: Record<string, React.ReactNode> = {\n 'score-summary': (\n <>\n <path d=\"m12 14 4-4\" />\n <path d=\"M3.34 19a10 10 0 1 1 17.32 0\" />\n </>\n ),\n strengths: (\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n ),\n improvements: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\n <circle cx=\"12\" cy=\"12\" r=\"1.5\" />\n </>\n ),\n 'score-trend': (\n <>\n <path d=\"M3 3v18h18\" />\n <path d=\"m19 8-5 5-4-4-4 4\" />\n </>\n ),\n 'step-summary': (\n <path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\" />\n ),\n 'step-detail': (\n <>\n <line x1=\"8\" x2=\"21\" y1=\"6\" y2=\"6\" />\n <line x1=\"8\" x2=\"21\" y1=\"12\" y2=\"12\" />\n <line x1=\"8\" x2=\"21\" y1=\"18\" y2=\"18\" />\n <path d=\"M3 6h.01M3 12h.01M3 18h.01\" />\n </>\n ),\n coaching: <polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\" />,\n};\n\nfunction NavIcon({ children }: { children: React.ReactNode }): React.ReactElement {\n return (\n <svg\n aria-hidden=\"true\"\n fill=\"none\"\n height=\"13\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.8\"\n style={{ flexShrink: 0 }}\n viewBox=\"0 0 24 24\"\n width=\"13\"\n >\n {children}\n </svg>\n );\n}\n\nfunction StepMetricBadge({ step }: { step: RpReportStep }): React.ReactElement | null {\n const scoreText = stepScoreText(step);\n if (scoreText !== null) {\n return (\n <Typo\n as=\"span\"\n color=\"gray\"\n mono\n style={{ flexShrink: 0 }}\n variant=\"body\"\n weight=\"medium\"\n >\n {scoreText}\n </Typo>\n );\n }\n const gradeLabel = stepGradeLabel(step);\n if (gradeLabel !== null) {\n return (\n <Typo\n as=\"span\"\n mono\n style={{ flexShrink: 0, color: stepVars(step).fg }}\n variant=\"body\"\n weight=\"medium\"\n >\n {gradeLabel}\n </Typo>\n );\n }\n return null;\n}\n\nfunction useScrollSpy(ids: string[]): string | null {\n const [activeId, setActiveId] = useState<string | null>(null);\n const watchKey = ids.join(',');\n\n useEffect(() => {\n const els = ids\n .map((id) => document.getElementById(id))\n .filter((el): el is HTMLElement => el !== null);\n if (els.length === 0) return;\n\n const observer = new IntersectionObserver(\n (entries) => {\n const visible = entries\n .filter((e) => e.isIntersecting)\n .sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);\n if (visible[0]) setActiveId(visible[0].target.id);\n },\n { rootMargin: '0px 0px -72% 0px', threshold: 0 }\n );\n els.forEach((el) => {\n observer.observe(el);\n });\n return () => {\n observer.disconnect();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- watchKey가 ids 변경을 대표한다\n }, [watchKey]);\n\n return activeId;\n}\n\nfunction scrollToId(id: string): void {\n document.getElementById(id)?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n}\n\nexport function SectionNav({ items, steps }: SectionNavProps): React.ReactElement {\n const activeId = useScrollSpy(items.map((i) => i.id));\n const stepDetailActive = activeId === 'step-summary' || activeId === 'step-detail';\n\n return (\n <Box asChild className=\"rp-section-nav\">\n <aside>\n <Box>\n <Typo\n as=\"p\"\n color=\"gray\"\n style={{\n paddingLeft: 'calc(var(--space-3) + 2px)',\n paddingBottom: 'var(--space-1)',\n }}\n variant=\"body\"\n weight=\"medium\"\n >\n 목차\n </Typo>\n <Box asChild>\n <ul style={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {items.map((item) => {\n const active = activeId === item.id;\n return (\n <li key={item.id}>\n <button\n aria-current={active ? 'true' : undefined}\n className=\"rp-nav-btn\"\n onClick={() => {\n scrollToId(item.id);\n }}\n style={\n active\n ? {\n borderLeftColor: 'var(--accent-9)',\n background: 'var(--accent-a2)',\n }\n : undefined\n }\n type=\"button\"\n >\n <Flex align=\"center\" gap=\"2\" style={{ minWidth: 0 }}>\n {NAV_ICONS[item.id] ? (\n <NavIcon>{NAV_ICONS[item.id]}</NavIcon>\n ) : null}\n <Typo\n as=\"span\"\n truncate\n variant=\"body\"\n weight={active ? 'medium' : 'regular'}\n >\n {item.label}\n </Typo>\n </Flex>\n {typeof item.score === 'number' ? (\n <Typo as=\"span\" mono style={{ flexShrink: 0 }} variant=\"body\">\n <Typo\n as=\"span\"\n style={{\n color: active ? 'var(--gray-12)' : 'var(--gray-11)',\n }}\n variant=\"body\"\n weight=\"medium\"\n >\n {item.score}\n </Typo>\n <Typo as=\"span\" style={{ color: 'var(--gray-9)' }} variant=\"body\">\n /{item.max}\n </Typo>\n </Typo>\n ) : null}\n </button>\n </li>\n );\n })}\n </ul>\n </Box>\n\n {steps.length > 0 && (\n <Box mt=\"3\" pt=\"3\" style={{ borderTop: '1px solid var(--gray-4)' }}>\n <Box pb=\"1\" px=\"3\">\n <Typo\n as=\"span\"\n style={{\n color: stepDetailActive ? 'var(--gray-12)' : 'var(--gray-10)',\n }}\n variant=\"body\"\n weight=\"medium\"\n >\n 단계별 점수\n </Typo>\n </Box>\n <Box asChild>\n <ul style={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {steps.map((step) => {\n const ratio = stepRatio(step);\n return (\n <li key={step.key}>\n <button\n className=\"rp-jump-btn\"\n onClick={() => {\n scrollToId(`step-${step.key}`);\n }}\n type=\"button\"\n >\n <Flex align=\"center\" gap=\"2\" justify=\"between\">\n <Typo\n as=\"span\"\n style={{ minWidth: 0 }}\n truncate\n variant=\"body\"\n >\n <Typo\n as=\"span\"\n color=\"gray\"\n mono\n variant=\"body\"\n weight=\"medium\"\n >\n {stepCode(step)}\n </Typo>{' '}\n <Typo\n as=\"span\"\n style={{ color: 'var(--gray-9)' }}\n variant=\"body\"\n >\n {step.label}\n </Typo>\n </Typo>\n <StepMetricBadge step={step} />\n </Flex>\n {ratio !== null ? (\n <Box mt=\"1\">\n <Progress color={stepColor(step)} size=\"1\" value={ratio * 100} />\n </Box>\n ) : null}\n </button>\n </li>\n );\n })}\n </ul>\n </Box>\n </Box>\n )}\n </Box>\n </aside>\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
curriculum_video_default
|
|
3
|
+
} from "./chunk-KFUBWOCN.js";
|
|
1
4
|
import {
|
|
2
5
|
curriculum_ai_traning_default
|
|
3
6
|
} from "./chunk-K4RZTENM.js";
|
|
@@ -6,10 +9,7 @@ import {
|
|
|
6
9
|
} from "./chunk-UXH2XIB2.js";
|
|
7
10
|
import {
|
|
8
11
|
curriculum_review_default
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import {
|
|
11
|
-
curriculum_video_default
|
|
12
|
-
} from "./chunk-KFUBWOCN.js";
|
|
12
|
+
} from "./chunk-UK3LP7VH.js";
|
|
13
13
|
import {
|
|
14
14
|
useCurriculumContext
|
|
15
15
|
} from "./chunk-WA5A2GB4.js";
|
|
@@ -66,4 +66,4 @@ function CurriculumBody() {
|
|
|
66
66
|
export {
|
|
67
67
|
CurriculumBody
|
|
68
68
|
};
|
|
69
|
-
//# sourceMappingURL=chunk-
|
|
69
|
+
//# sourceMappingURL=chunk-IIZ7I7NS.js.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
StepSummary
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WVY3C64M.js";
|
|
4
4
|
import {
|
|
5
5
|
ScoreSummary
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2XDAK4B7.js";
|
|
7
7
|
import {
|
|
8
8
|
ScoreTrendSection
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-RZW6FVML.js";
|
|
10
10
|
import {
|
|
11
11
|
SectionNav
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-DIISQDYA.js";
|
|
13
13
|
import {
|
|
14
14
|
StepDetail
|
|
15
15
|
} from "./chunk-KJPBBBVK.js";
|
|
@@ -82,7 +82,7 @@ function Content({
|
|
|
82
82
|
strengths.length > 0 ? /* @__PURE__ */ jsx(Box, { id: "strengths", style: { scrollMarginTop }, children: /* @__PURE__ */ jsx(
|
|
83
83
|
AnalysisSection,
|
|
84
84
|
{
|
|
85
|
-
desc: "\uC774\uBC88 \uC138\uC158\uC5D0\uC11C \
|
|
85
|
+
desc: "\uC774\uBC88 \uC138\uC158\uC5D0\uC11C \uAC00\uC7A5 \uB3CB\uBCF4\uC778 \uAC15\uC810\uB4E4\uC774\uC5D0\uC694.",
|
|
86
86
|
items: strengths,
|
|
87
87
|
title: "\uAC15\uC810",
|
|
88
88
|
tone: "good"
|
|
@@ -91,7 +91,7 @@ function Content({
|
|
|
91
91
|
improvements.length > 0 ? /* @__PURE__ */ jsx(Box, { id: "improvements", style: { scrollMarginTop }, children: /* @__PURE__ */ jsx(
|
|
92
92
|
AnalysisSection,
|
|
93
93
|
{
|
|
94
|
-
desc: "\uB2E4\uC74C \
|
|
94
|
+
desc: "\uB2E4\uC74C\uC5D0 \uBCF4\uC644\uD55C\uB2E4\uBA74 \uB354 \uB098\uC740 \uACB0\uACFC\uB97C \uC5BB\uC744 \uC218 \uC788\uC744 \uAC70\uC5D0\uC694.",
|
|
95
95
|
items: improvements,
|
|
96
96
|
title: "\uAC1C\uC120\uC810",
|
|
97
97
|
tone: "bad"
|
|
@@ -102,7 +102,7 @@ function Content({
|
|
|
102
102
|
showStepDetail ? /* @__PURE__ */ jsx(Box, { id: "step-detail", style: { scrollMarginTop }, children: /* @__PURE__ */ jsx(
|
|
103
103
|
Section,
|
|
104
104
|
{
|
|
105
|
-
desc: "\uB300\uD654 \
|
|
105
|
+
desc: "\uC774\uBC88 \uB300\uD654\uC758 \uB354 \uB098\uC544\uC9C8 \uC218 \uC788\uB294 \uBC29\uD5A5\uC744 \uC54C\uB824\uB4DC\uB9B4\uAC8C\uC694.",
|
|
106
106
|
title: "\uB2E8\uACC4\uBCC4 \uC0C1\uC138 \uBD84\uC11D",
|
|
107
107
|
children: /* @__PURE__ */ jsx(Flex, { direction: "column", children: steps.map((step, i) => /* @__PURE__ */ jsxs(Box, { children: [
|
|
108
108
|
i > 0 ? /* @__PURE__ */ jsx(
|
|
@@ -128,4 +128,4 @@ function Content({
|
|
|
128
128
|
export {
|
|
129
129
|
Content
|
|
130
130
|
};
|
|
131
|
-
//# sourceMappingURL=chunk-
|
|
131
|
+
//# sourceMappingURL=chunk-MD64AUR6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/app/roleplay/parts/content.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\nimport { Box, Flex, Grid, Heading, Separator, Typo } from '../../../atoms';\nimport type { RpSessionDetailData, RpSessionHistoryItem } from '../types';\nimport type { RpReport } from '../utils/report-parse';\nimport { hasStepSignal } from '../utils/session-utils';\nimport type { SpeechShare } from '../utils/session-utils';\nimport { AnalysisSection, Section } from './analysis-section';\nimport { CoachingPanel } from './coaching-panel';\nimport { ScoreSummary } from './score-summary';\nimport { ScoreTrendSection } from './score-trend-section';\nimport { SectionNav } from './section-nav';\nimport type { SectionNavItem } from './section-nav';\nimport { StepDetail } from './step-detail';\nimport { StepSummary } from './step-summary';\n\nexport interface ContentProps {\n detail: RpSessionDetailData;\n report: RpReport;\n history: RpSessionHistoryItem[];\n speechShare: SpeechShare | null;\n scrollMarginTop: string;\n}\n\nexport function Content({\n detail,\n report,\n history,\n speechShare,\n scrollMarginTop,\n}: ContentProps): React.ReactElement {\n const { steps, skills, strengths, improvements } = report;\n const scoreValue = detail.totalScore ?? report.totalScore;\n\n const showTrend = history.length > 1;\n const showStepSummary = steps.length > 0 && steps.some(hasStepSignal);\n const showStepDetail = steps.length > 0;\n\n const navItems: SectionNavItem[] = [\n { id: 'score-summary', label: '종합 점수', score: scoreValue, max: 100 },\n ...(strengths.length > 0 ? [{ id: 'strengths', label: '강점' }] : []),\n ...(improvements.length > 0 ? [{ id: 'improvements', label: '개선점' }] : []),\n ...(showTrend ? [{ id: 'score-trend', label: '총점 추이' }] : []),\n ...(showStepSummary ? [{ id: 'step-summary', label: '평가 단계 요약' }] : []),\n ...(showStepDetail ? [{ id: 'step-detail', label: '단계별 상세 분석' }] : []),\n ...(skills.length > 0 ? [{ id: 'coaching', label: '즉시 적용 스킬' }] : []),\n ];\n\n return (\n <Grid\n align=\"start\"\n columns={{ initial: '1', md: 'minmax(0, 1fr) 224px' }}\n gap=\"7\"\n >\n <Flex direction=\"column\" gap=\"7\">\n {report.frameworkTitle !== null || report.frameworkDescription !== null ? (\n <Box>\n {report.frameworkTitle !== null ? (\n <Heading size=\"5\" weight=\"bold\">\n {report.frameworkTitle}\n </Heading>\n ) : null}\n {report.frameworkDescription !== null ? (\n <Box mt={report.frameworkTitle !== null ? '2' : '0'}>\n <Typo as=\"p\" variant=\"body\">\n {report.frameworkDescription}\n </Typo>\n </Box>\n ) : null}\n </Box>\n ) : null}\n\n <Box id=\"score-summary\" style={{ scrollMarginTop }}>\n <ScoreSummary detail={detail} report={report} speechShare={speechShare} />\n </Box>\n\n {strengths.length > 0 ? (\n <Box id=\"strengths\" style={{ scrollMarginTop }}>\n <AnalysisSection\n desc=\"이번 세션에서 가장 돋보인 강점들이에요.\"\n items={strengths}\n title=\"강점\"\n tone=\"good\"\n />\n </Box>\n ) : null}\n\n {improvements.length > 0 ? (\n <Box id=\"improvements\" style={{ scrollMarginTop }}>\n <AnalysisSection\n desc=\"다음에 보완한다면 더 나은 결과를 얻을 수 있을 거에요.\"\n items={improvements}\n title=\"개선점\"\n tone=\"bad\"\n />\n </Box>\n ) : null}\n\n {showTrend ? (\n <Box id=\"score-trend\" style={{ scrollMarginTop }}>\n <ScoreTrendSection history={history} />\n </Box>\n ) : null}\n\n {showStepSummary ? (\n <Box id=\"step-summary\" style={{ scrollMarginTop }}>\n <StepSummary steps={steps} />\n </Box>\n ) : null}\n\n {showStepDetail ? (\n <Box id=\"step-detail\" style={{ scrollMarginTop }}>\n <Section\n desc=\"이번 대화의 더 나아질 수 있는 방향을 알려드릴게요.\"\n title=\"단계별 상세 분석\"\n >\n <Flex direction=\"column\">\n {steps.map((step, i) => (\n <Box key={step.key}>\n {i > 0 ? (\n <Separator\n mb=\"6\"\n size=\"4\"\n style={{ marginTop: 'calc(var(--space-9) * 1.6)' }}\n />\n ) : null}\n <StepDetail scrollMarginTop={scrollMarginTop} step={step} />\n </Box>\n ))}\n </Flex>\n </Section>\n </Box>\n ) : null}\n\n {skills.length > 0 ? (\n <Box id=\"coaching\" style={{ scrollMarginTop }}>\n <CoachingPanel skills={skills} />\n </Box>\n ) : null}\n </Flex>\n\n <SectionNav items={navItems} steps={showStepDetail ? steps : []} />\n </Grid>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDU,SAEI,KAFJ;AAhCH,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAqC;AA/BrC;AAgCE,QAAM,EAAE,OAAO,QAAQ,WAAW,aAAa,IAAI;AACnD,QAAM,cAAa,YAAO,eAAP,YAAqB,OAAO;AAE/C,QAAM,YAAY,QAAQ,SAAS;AACnC,QAAM,kBAAkB,MAAM,SAAS,KAAK,MAAM,KAAK,aAAa;AACpE,QAAM,iBAAiB,MAAM,SAAS;AAEtC,QAAM,WAA6B;AAAA,IACjC,EAAE,IAAI,iBAAiB,OAAO,6BAAS,OAAO,YAAY,KAAK,IAAI;AAAA,IACnE,GAAI,UAAU,SAAS,IAAI,CAAC,EAAE,IAAI,aAAa,OAAO,eAAK,CAAC,IAAI,CAAC;AAAA,IACjE,GAAI,aAAa,SAAS,IAAI,CAAC,EAAE,IAAI,gBAAgB,OAAO,qBAAM,CAAC,IAAI,CAAC;AAAA,IACxE,GAAI,YAAY,CAAC,EAAE,IAAI,eAAe,OAAO,4BAAQ,CAAC,IAAI,CAAC;AAAA,IAC3D,GAAI,kBAAkB,CAAC,EAAE,IAAI,gBAAgB,OAAO,yCAAW,CAAC,IAAI,CAAC;AAAA,IACrE,GAAI,iBAAiB,CAAC,EAAE,IAAI,eAAe,OAAO,+CAAY,CAAC,IAAI,CAAC;AAAA,IACpE,GAAI,OAAO,SAAS,IAAI,CAAC,EAAE,IAAI,YAAY,OAAO,yCAAW,CAAC,IAAI,CAAC;AAAA,EACrE;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,SAAS,EAAE,SAAS,KAAK,IAAI,uBAAuB;AAAA,MACpD,KAAI;AAAA,MAEJ;AAAA,6BAAC,QAAK,WAAU,UAAS,KAAI,KAC1B;AAAA,iBAAO,mBAAmB,QAAQ,OAAO,yBAAyB,OACjE,qBAAC,OACE;AAAA,mBAAO,mBAAmB,OACzB,oBAAC,WAAQ,MAAK,KAAI,QAAO,QACtB,iBAAO,gBACV,IACE;AAAA,YACH,OAAO,yBAAyB,OAC/B,oBAAC,OAAI,IAAI,OAAO,mBAAmB,OAAO,MAAM,KAC9C,8BAAC,QAAK,IAAG,KAAI,SAAQ,QAClB,iBAAO,sBACV,GACF,IACE;AAAA,aACN,IACE;AAAA,UAEJ,oBAAC,OAAI,IAAG,iBAAgB,OAAO,EAAE,gBAAgB,GAC/C,8BAAC,gBAAa,QAAgB,QAAgB,aAA0B,GAC1E;AAAA,UAEC,UAAU,SAAS,IAClB,oBAAC,OAAI,IAAG,aAAY,OAAO,EAAE,gBAAgB,GAC3C;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAO;AAAA,cACP,OAAM;AAAA,cACN,MAAK;AAAA;AAAA,UACP,GACF,IACE;AAAA,UAEH,aAAa,SAAS,IACrB,oBAAC,OAAI,IAAG,gBAAe,OAAO,EAAE,gBAAgB,GAC9C;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAO;AAAA,cACP,OAAM;AAAA,cACN,MAAK;AAAA;AAAA,UACP,GACF,IACE;AAAA,UAEH,YACC,oBAAC,OAAI,IAAG,eAAc,OAAO,EAAE,gBAAgB,GAC7C,8BAAC,qBAAkB,SAAkB,GACvC,IACE;AAAA,UAEH,kBACC,oBAAC,OAAI,IAAG,gBAAe,OAAO,EAAE,gBAAgB,GAC9C,8BAAC,eAAY,OAAc,GAC7B,IACE;AAAA,UAEH,iBACC,oBAAC,OAAI,IAAG,eAAc,OAAO,EAAE,gBAAgB,GAC7C;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAM;AAAA,cAEN,8BAAC,QAAK,WAAU,UACb,gBAAM,IAAI,CAAC,MAAM,MAChB,qBAAC,OACE;AAAA,oBAAI,IACH;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAG;AAAA,oBACH,MAAK;AAAA,oBACL,OAAO,EAAE,WAAW,6BAA6B;AAAA;AAAA,gBACnD,IACE;AAAA,gBACJ,oBAAC,cAAW,iBAAkC,MAAY;AAAA,mBARlD,KAAK,GASf,CACD,GACH;AAAA;AAAA,UACF,GACF,IACE;AAAA,UAEH,OAAO,SAAS,IACf,oBAAC,OAAI,IAAG,YAAW,OAAO,EAAE,gBAAgB,GAC1C,8BAAC,iBAAc,QAAgB,GACjC,IACE;AAAA,WACN;AAAA,QAEA,oBAAC,cAAW,OAAO,UAAU,OAAO,iBAAiB,QAAQ,CAAC,GAAG;AAAA;AAAA;AAAA,EACnE;AAEJ;","names":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
start_review_default
|
|
3
|
-
} from "./chunk-LK2H4QTJ.js";
|
|
4
1
|
import {
|
|
5
2
|
ReviewQuestion_default
|
|
6
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YFR3HXSV.js";
|
|
7
4
|
import {
|
|
8
5
|
complete_review_default
|
|
9
6
|
} from "./chunk-NVRVOTWZ.js";
|
|
7
|
+
import {
|
|
8
|
+
start_review_default
|
|
9
|
+
} from "./chunk-LK2H4QTJ.js";
|
|
10
10
|
import {
|
|
11
11
|
CurriculumReviewProvider,
|
|
12
12
|
useCurriculumReviewContext
|
|
@@ -86,4 +86,4 @@ var CurriculumReviewSteps_default = CurriculumReviewSteps;
|
|
|
86
86
|
export {
|
|
87
87
|
CurriculumReviewSteps_default
|
|
88
88
|
};
|
|
89
|
-
//# sourceMappingURL=chunk-
|
|
89
|
+
//# sourceMappingURL=chunk-NSDVLCCW.js.map
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
SpeechShareBar
|
|
3
|
+
} from "./chunk-W72CR2TG.js";
|
|
4
|
+
import {
|
|
3
5
|
formatTimestamp
|
|
4
6
|
} from "./chunk-4YAA25AV.js";
|
|
5
7
|
import {
|
|
@@ -14,65 +16,6 @@ import {
|
|
|
14
16
|
|
|
15
17
|
// src/app/roleplay/parts/script-transcript.tsx
|
|
16
18
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
17
|
-
function SpeechShareBar({ share }) {
|
|
18
|
-
const isOvertalking = share.userPct > SPEECH_OVERTALK_THRESHOLD;
|
|
19
|
-
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
20
|
-
/* @__PURE__ */ jsxs(Flex, { align: "center", justify: "between", mb: "1", children: [
|
|
21
|
-
/* @__PURE__ */ jsxs(
|
|
22
|
-
Typo,
|
|
23
|
-
{
|
|
24
|
-
as: "span",
|
|
25
|
-
style: {
|
|
26
|
-
fontSize: "0.75rem",
|
|
27
|
-
color: isOvertalking ? "var(--red-11)" : "var(--accent-11)"
|
|
28
|
-
},
|
|
29
|
-
variant: "body",
|
|
30
|
-
weight: "medium",
|
|
31
|
-
children: [
|
|
32
|
-
"\uB0B4 \uBC1C\uD654\uB7C9 ",
|
|
33
|
-
share.userPct,
|
|
34
|
-
"%"
|
|
35
|
-
]
|
|
36
|
-
}
|
|
37
|
-
),
|
|
38
|
-
/* @__PURE__ */ jsxs(Typo, { as: "span", color: "gray", style: { fontSize: "0.75rem" }, variant: "body", children: [
|
|
39
|
-
"\uC0C1\uB300 ",
|
|
40
|
-
share.partnerPct,
|
|
41
|
-
"%"
|
|
42
|
-
] })
|
|
43
|
-
] }),
|
|
44
|
-
/* @__PURE__ */ jsx(
|
|
45
|
-
Flex,
|
|
46
|
-
{
|
|
47
|
-
style: {
|
|
48
|
-
height: 6,
|
|
49
|
-
borderRadius: "var(--radius-1)",
|
|
50
|
-
overflow: "hidden",
|
|
51
|
-
background: "var(--gray-4)"
|
|
52
|
-
},
|
|
53
|
-
children: /* @__PURE__ */ jsx(
|
|
54
|
-
Box,
|
|
55
|
-
{
|
|
56
|
-
style: {
|
|
57
|
-
width: `${share.userPct}%`,
|
|
58
|
-
background: isOvertalking ? "var(--red-9)" : "var(--accent-9)"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
)
|
|
62
|
-
}
|
|
63
|
-
),
|
|
64
|
-
isOvertalking ? /* @__PURE__ */ jsx(
|
|
65
|
-
Typo,
|
|
66
|
-
{
|
|
67
|
-
as: "p",
|
|
68
|
-
mt: "1",
|
|
69
|
-
style: { fontSize: "0.75rem", color: "var(--red-11)" },
|
|
70
|
-
variant: "body",
|
|
71
|
-
children: "\uC0C1\uB300\uC758 \uB9D0\uC744 \uB354 \uB4E3\uACE0 \uC9C8\uBB38\xB7\uACBD\uCCAD\uC758 \uBE44\uC911\uC744 \uB192\uC5EC \uBCF4\uC138\uC694"
|
|
72
|
-
}
|
|
73
|
-
) : null
|
|
74
|
-
] });
|
|
75
|
-
}
|
|
76
19
|
function ScriptTranscript({
|
|
77
20
|
lines,
|
|
78
21
|
partnerName,
|
|
@@ -91,13 +34,12 @@ function ScriptTranscript({
|
|
|
91
34
|
{
|
|
92
35
|
as: "span",
|
|
93
36
|
color: "gray",
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
children: canSync ? "\uC7AC\uC0DD \uC704\uCE58\uC5D0 \uB9DE\uCDB0 \uD45C\uC2DC" : "\uD0C0\uC784\uB77C\uC778 \uBE44\uB3D9\uAE30"
|
|
37
|
+
variant: "caption",
|
|
38
|
+
children: canSync ? "" : "\uD0C0\uC784\uB77C\uC778 \uAE30\uB2A5 \uC0AC\uC6A9 \uBD88\uAC00"
|
|
97
39
|
}
|
|
98
40
|
)
|
|
99
41
|
] }),
|
|
100
|
-
partnerName ? /* @__PURE__ */ jsxs(Typo, { as: "p", color: "gray", mt: "1",
|
|
42
|
+
partnerName ? /* @__PURE__ */ jsxs(Typo, { as: "p", color: "gray", mt: "1", variant: "body", children: [
|
|
101
43
|
"\uC0C1\uB300 \xB7 ",
|
|
102
44
|
partnerName
|
|
103
45
|
] }) : null,
|
|
@@ -129,12 +71,11 @@ function ScriptTranscript({
|
|
|
129
71
|
mono: true,
|
|
130
72
|
style: {
|
|
131
73
|
color: isActive ? "var(--accent-11)" : "var(--gray-9)",
|
|
132
|
-
fontSize: "0.75rem",
|
|
133
74
|
flexShrink: 0,
|
|
134
75
|
minWidth: 32,
|
|
135
76
|
lineHeight: "1.7"
|
|
136
77
|
},
|
|
137
|
-
variant: "
|
|
78
|
+
variant: "caption",
|
|
138
79
|
children: formatTimestamp(line.startMs)
|
|
139
80
|
}
|
|
140
81
|
) : null,
|
|
@@ -144,14 +85,13 @@ function ScriptTranscript({
|
|
|
144
85
|
as: "span",
|
|
145
86
|
style: {
|
|
146
87
|
color: isUser ? "var(--accent-11)" : "var(--gray-11)",
|
|
147
|
-
fontSize: "0.8125rem",
|
|
148
88
|
flexShrink: 0,
|
|
149
89
|
minWidth: 28,
|
|
150
90
|
lineHeight: "1.7",
|
|
151
|
-
fontWeight: 700,
|
|
152
91
|
whiteSpace: "nowrap"
|
|
153
92
|
},
|
|
154
93
|
variant: "body",
|
|
94
|
+
weight: "bold",
|
|
155
95
|
children: isUser ? "\uB098" : "\uC0C1\uB300"
|
|
156
96
|
}
|
|
157
97
|
),
|
|
@@ -159,10 +99,10 @@ function ScriptTranscript({
|
|
|
159
99
|
Typo,
|
|
160
100
|
{
|
|
161
101
|
as: "span",
|
|
102
|
+
color: "gray",
|
|
103
|
+
highContrast: isActive,
|
|
162
104
|
style: {
|
|
163
|
-
|
|
164
|
-
lineHeight: "1.7",
|
|
165
|
-
color: isActive ? "var(--gray-12)" : "var(--gray-11)"
|
|
105
|
+
lineHeight: "1.7"
|
|
166
106
|
},
|
|
167
107
|
variant: "body",
|
|
168
108
|
weight: isActive ? "medium" : void 0,
|
|
@@ -180,4 +120,4 @@ function ScriptTranscript({
|
|
|
180
120
|
export {
|
|
181
121
|
ScriptTranscript
|
|
182
122
|
};
|
|
183
|
-
//# sourceMappingURL=chunk-
|
|
123
|
+
//# sourceMappingURL=chunk-RNGEVYY5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/app/roleplay/parts/script-transcript.tsx"],"sourcesContent":["'use client';\n\nimport { Box, Flex, Typo } from '../../../atoms';\nimport { formatTimestamp, type SpeechShare } from '../utils/session-utils';\nimport type { RpSessionScriptLine } from '../types';\nimport { SpeechShareBar } from './speech-share-bar';\n\nexport interface ScriptTranscriptProps {\n lines: RpSessionScriptLine[];\n partnerName: string | null;\n speechShare: SpeechShare | null;\n canSync: boolean;\n currentMs: number;\n onSeek: (startMs: number) => void;\n}\n\nexport function ScriptTranscript({\n lines,\n partnerName,\n speechShare,\n canSync,\n currentMs,\n onSeek,\n}: ScriptTranscriptProps): React.ReactElement {\n const activeIndex = canSync\n ? lines.reduce((acc, line, i) => (line.startMs <= currentMs ? i : acc), -1)\n : -1;\n\n return (\n <Flex direction=\"column\" gap=\"2\" style={{ minWidth: 0 }}>\n <Box>\n <Flex align=\"center\" gap=\"2\" justify=\"between\">\n <Typo as=\"span\" variant=\"body\" weight=\"bold\">\n 대화 스크립트\n </Typo>\n <Typo\n as=\"span\"\n color=\"gray\"\n variant=\"caption\"\n >\n {canSync ? '' : '타임라인 기능 사용 불가'}\n </Typo>\n </Flex>\n {partnerName ? (\n <Typo as=\"p\" color=\"gray\" mt=\"1\" variant=\"body\">\n 상대 · {partnerName}\n </Typo>\n ) : null}\n {speechShare ? (\n <Box mt=\"2\">\n <SpeechShareBar share={speechShare} />\n </Box>\n ) : null}\n </Box>\n\n {lines.length === 0 ? (\n <Typo as=\"p\" color=\"gray\" variant=\"body\">\n 대화 스크립트가 없습니다.\n </Typo>\n ) : (\n <Box style={{ maxHeight: 440, overflowY: 'auto' }}>\n <Flex direction=\"column\" gap=\"1\">\n {lines.map((line, i) => {\n const isUser = line.speaker === 'user';\n const isActive = i === activeIndex;\n return (\n <Flex\n align=\"start\"\n gap=\"3\"\n key={`${line.startMs}-${line.speaker}`}\n onClick={\n canSync\n ? () => {\n onSeek(line.startMs);\n }\n : undefined\n }\n px=\"2\"\n py=\"2\"\n style={{\n cursor: canSync ? 'pointer' : 'default',\n borderRadius: 'var(--radius-2)',\n background: isActive ? 'var(--accent-a3)' : 'transparent',\n }}\n >\n {canSync ? (\n <Typo\n as=\"span\"\n mono\n style={{\n color: isActive ? 'var(--accent-11)' : 'var(--gray-9)',\n flexShrink: 0,\n minWidth: 32,\n lineHeight: '1.7',\n }}\n variant=\"caption\"\n >\n {formatTimestamp(line.startMs)}\n </Typo>\n ) : null}\n <Typo\n as=\"span\"\n style={{\n color: isUser ? 'var(--accent-11)' : 'var(--gray-11)',\n flexShrink: 0,\n minWidth: 28,\n lineHeight: '1.7',\n whiteSpace: 'nowrap',\n }}\n variant=\"body\"\n weight=\"bold\"\n >\n {isUser ? '나' : '상대'}\n </Typo>\n <Typo\n as=\"span\"\n color=\"gray\"\n highContrast={isActive}\n style={{\n lineHeight: '1.7',\n }}\n variant=\"body\"\n weight={isActive ? 'medium' : undefined}\n >\n {line.text}\n </Typo>\n </Flex>\n );\n })}\n </Flex>\n </Box>\n )}\n </Flex>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AA+BQ,SACE,KADF;AAfD,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA8C;AAC5C,QAAM,cAAc,UAChB,MAAM,OAAO,CAAC,KAAK,MAAM,MAAO,KAAK,WAAW,YAAY,IAAI,KAAM,EAAE,IACxE;AAEJ,SACE,qBAAC,QAAK,WAAU,UAAS,KAAI,KAAI,OAAO,EAAE,UAAU,EAAE,GACpD;AAAA,yBAAC,OACC;AAAA,2BAAC,QAAK,OAAM,UAAS,KAAI,KAAI,SAAQ,WACnC;AAAA,4BAAC,QAAK,IAAG,QAAO,SAAQ,QAAO,QAAO,QAAO,mDAE7C;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,OAAM;AAAA,YACN,SAAQ;AAAA,YAEP,oBAAU,KAAK;AAAA;AAAA,QAClB;AAAA,SACF;AAAA,MACC,cACC,qBAAC,QAAK,IAAG,KAAI,OAAM,QAAO,IAAG,KAAK,SAAQ,QAAO;AAAA;AAAA,QACzC;AAAA,SACR,IACE;AAAA,MACH,cACC,oBAAC,OAAI,IAAG,KACN,8BAAC,kBAAe,OAAO,aAAa,GACtC,IACE;AAAA,OACN;AAAA,IAEC,MAAM,WAAW,IAChB,oBAAC,QAAK,IAAG,KAAI,OAAM,QAAO,SAAQ,QAAO,mFAEzC,IAEA,oBAAC,OAAI,OAAO,EAAE,WAAW,KAAK,WAAW,OAAO,GAC9C,8BAAC,QAAK,WAAU,UAAS,KAAI,KAC1B,gBAAM,IAAI,CAAC,MAAM,MAAM;AACtB,YAAM,SAAS,KAAK,YAAY;AAChC,YAAM,WAAW,MAAM;AACvB,aACE;AAAA,QAAC;AAAA;AAAA,UACC,OAAM;AAAA,UACN,KAAI;AAAA,UAEJ,SACE,UACI,MAAM;AACJ,mBAAO,KAAK,OAAO;AAAA,UACrB,IACA;AAAA,UAEN,IAAG;AAAA,UACH,IAAG;AAAA,UACH,OAAO;AAAA,YACL,QAAQ,UAAU,YAAY;AAAA,YAC9B,cAAc;AAAA,YACd,YAAY,WAAW,qBAAqB;AAAA,UAC9C;AAAA,UAEC;AAAA,sBACC;AAAA,cAAC;AAAA;AAAA,gBACC,IAAG;AAAA,gBACH,MAAI;AAAA,gBACJ,OAAO;AAAA,kBACL,OAAO,WAAW,qBAAqB;AAAA,kBACvC,YAAY;AAAA,kBACZ,UAAU;AAAA,kBACV,YAAY;AAAA,gBACd;AAAA,gBACA,SAAQ;AAAA,gBAEP,0BAAgB,KAAK,OAAO;AAAA;AAAA,YAC/B,IACE;AAAA,YACJ;AAAA,cAAC;AAAA;AAAA,gBACC,IAAG;AAAA,gBACH,OAAO;AAAA,kBACL,OAAO,SAAS,qBAAqB;AAAA,kBACrC,YAAY;AAAA,kBACZ,UAAU;AAAA,kBACV,YAAY;AAAA,kBACZ,YAAY;AAAA,gBACd;AAAA,gBACA,SAAQ;AAAA,gBACR,QAAO;AAAA,gBAEN,mBAAS,WAAM;AAAA;AAAA,YAClB;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAG;AAAA,gBACH,OAAM;AAAA,gBACN,cAAc;AAAA,gBACd,OAAO;AAAA,kBACL,YAAY;AAAA,gBACd;AAAA,gBACA,SAAQ;AAAA,gBACR,QAAQ,WAAW,WAAW;AAAA,gBAE7B,eAAK;AAAA;AAAA,YACR;AAAA;AAAA;AAAA,QAxDK,GAAG,KAAK,OAAO,IAAI,KAAK,OAAO;AAAA,MAyDtC;AAAA,IAEJ,CAAC,GACH,GACF;AAAA,KAEJ;AAEJ;","names":[]}
|