@tipp/ui 2.9.0 → 2.10.1
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 +17 -17
- package/dist/app/platform/edit-coaching-time.js +17 -17
- package/dist/app/platform/edit-service-type.js +17 -17
- package/dist/app/platform/goal-manage-card-edit.js +17 -17
- package/dist/app/platform/on-offline-radio-card.js +17 -17
- package/dist/app/platform/reservation-card.js +17 -17
- package/dist/app/platform/session-card.js +17 -17
- package/dist/app/roleplay/chart/session-chart.cjs +351 -0
- package/dist/app/roleplay/chart/session-chart.cjs.map +1 -0
- package/dist/app/roleplay/chart/session-chart.d.cts +16 -0
- package/dist/app/roleplay/chart/session-chart.d.ts +16 -0
- package/dist/app/roleplay/chart/session-chart.js +14 -0
- package/dist/app/roleplay/chart/session-chart.js.map +1 -0
- package/dist/app/roleplay/index.cjs +5715 -0
- package/dist/app/roleplay/index.cjs.map +1 -0
- package/dist/app/roleplay/index.d.cts +4 -0
- package/dist/app/roleplay/index.d.ts +4 -0
- package/dist/app/roleplay/index.js +182 -0
- package/dist/app/roleplay/index.js.map +1 -0
- package/dist/app/roleplay/parts/analysis-section.cjs +2178 -0
- package/dist/app/roleplay/parts/analysis-section.cjs.map +1 -0
- package/dist/app/roleplay/parts/analysis-section.d.cts +17 -0
- package/dist/app/roleplay/parts/analysis-section.d.ts +17 -0
- package/dist/app/roleplay/parts/analysis-section.js +97 -0
- package/dist/app/roleplay/parts/analysis-section.js.map +1 -0
- package/dist/app/roleplay/parts/coaching-panel.cjs +2191 -0
- package/dist/app/roleplay/parts/coaching-panel.cjs.map +1 -0
- package/dist/app/roleplay/parts/coaching-panel.d.cts +8 -0
- package/dist/app/roleplay/parts/coaching-panel.d.ts +8 -0
- package/dist/app/roleplay/parts/coaching-panel.js +95 -0
- package/dist/app/roleplay/parts/coaching-panel.js.map +1 -0
- package/dist/app/roleplay/parts/content.cjs +4687 -0
- package/dist/app/roleplay/parts/content.cjs.map +1 -0
- package/dist/app/roleplay/parts/content.d.cts +15 -0
- package/dist/app/roleplay/parts/content.d.ts +15 -0
- package/dist/app/roleplay/parts/content.js +174 -0
- package/dist/app/roleplay/parts/content.js.map +1 -0
- package/dist/app/roleplay/parts/header.cjs +2300 -0
- package/dist/app/roleplay/parts/header.cjs.map +1 -0
- package/dist/app/roleplay/parts/header.d.cts +13 -0
- package/dist/app/roleplay/parts/header.d.ts +13 -0
- package/dist/app/roleplay/parts/header.js +96 -0
- package/dist/app/roleplay/parts/header.js.map +1 -0
- package/dist/app/roleplay/parts/score-summary.cjs +2276 -0
- package/dist/app/roleplay/parts/score-summary.cjs.map +1 -0
- package/dist/app/roleplay/parts/score-summary.d.cts +12 -0
- package/dist/app/roleplay/parts/score-summary.d.ts +12 -0
- package/dist/app/roleplay/parts/score-summary.js +96 -0
- package/dist/app/roleplay/parts/score-summary.js.map +1 -0
- package/dist/app/roleplay/parts/score-trend-section.cjs +3687 -0
- package/dist/app/roleplay/parts/score-trend-section.cjs.map +1 -0
- package/dist/app/roleplay/parts/score-trend-section.d.cts +14 -0
- package/dist/app/roleplay/parts/score-trend-section.d.ts +14 -0
- package/dist/app/roleplay/parts/score-trend-section.js +167 -0
- package/dist/app/roleplay/parts/score-trend-section.js.map +1 -0
- package/dist/app/roleplay/parts/script-transcript.cjs +2288 -0
- package/dist/app/roleplay/parts/script-transcript.cjs.map +1 -0
- package/dist/app/roleplay/parts/script-transcript.d.cts +15 -0
- package/dist/app/roleplay/parts/script-transcript.d.ts +15 -0
- package/dist/app/roleplay/parts/script-transcript.js +96 -0
- package/dist/app/roleplay/parts/script-transcript.js.map +1 -0
- package/dist/app/roleplay/parts/section-nav.cjs +2433 -0
- package/dist/app/roleplay/parts/section-nav.cjs.map +1 -0
- package/dist/app/roleplay/parts/section-nav.d.cts +15 -0
- package/dist/app/roleplay/parts/section-nav.d.ts +15 -0
- package/dist/app/roleplay/parts/section-nav.js +96 -0
- package/dist/app/roleplay/parts/section-nav.js.map +1 -0
- package/dist/app/roleplay/parts/session-replay-dialog.cjs +2598 -0
- package/dist/app/roleplay/parts/session-replay-dialog.cjs.map +1 -0
- package/dist/app/roleplay/parts/session-replay-dialog.d.cts +14 -0
- package/dist/app/roleplay/parts/session-replay-dialog.d.ts +14 -0
- package/dist/app/roleplay/parts/session-replay-dialog.js +97 -0
- package/dist/app/roleplay/parts/session-replay-dialog.js.map +1 -0
- package/dist/app/roleplay/parts/step-detail.cjs +2311 -0
- package/dist/app/roleplay/parts/step-detail.cjs.map +1 -0
- package/dist/app/roleplay/parts/step-detail.d.cts +9 -0
- package/dist/app/roleplay/parts/step-detail.d.ts +9 -0
- package/dist/app/roleplay/parts/step-detail.js +96 -0
- package/dist/app/roleplay/parts/step-detail.js.map +1 -0
- package/dist/app/roleplay/parts/step-radar.cjs +463 -0
- package/dist/app/roleplay/parts/step-radar.cjs.map +1 -0
- package/dist/app/roleplay/parts/step-radar.d.cts +8 -0
- package/dist/app/roleplay/parts/step-radar.d.ts +8 -0
- package/dist/app/roleplay/parts/step-radar.js +14 -0
- package/dist/app/roleplay/parts/step-radar.js.map +1 -0
- package/dist/app/roleplay/parts/step-summary.cjs +2651 -0
- package/dist/app/roleplay/parts/step-summary.cjs.map +1 -0
- package/dist/app/roleplay/parts/step-summary.d.cts +8 -0
- package/dist/app/roleplay/parts/step-summary.d.ts +8 -0
- package/dist/app/roleplay/parts/step-summary.js +101 -0
- package/dist/app/roleplay/parts/step-summary.js.map +1 -0
- package/dist/app/roleplay/rp-session-detail.cjs +5712 -0
- package/dist/app/roleplay/rp-session-detail.cjs.map +1 -0
- package/dist/app/roleplay/rp-session-detail.d.cts +17 -0
- package/dist/app/roleplay/rp-session-detail.d.ts +17 -0
- package/dist/app/roleplay/rp-session-detail.js +179 -0
- package/dist/app/roleplay/rp-session-detail.js.map +1 -0
- package/dist/app/roleplay/types.cjs +19 -0
- package/dist/app/roleplay/types.cjs.map +1 -0
- package/dist/app/roleplay/types.d.cts +42 -0
- package/dist/app/roleplay/types.d.ts +42 -0
- package/dist/app/roleplay/types.js +2 -0
- package/dist/app/roleplay/types.js.map +1 -0
- package/dist/app/roleplay/utils/report-parse.cjs +285 -0
- package/dist/app/roleplay/utils/report-parse.cjs.map +1 -0
- package/dist/app/roleplay/utils/report-parse.d.cts +57 -0
- package/dist/app/roleplay/utils/report-parse.d.ts +57 -0
- package/dist/app/roleplay/utils/report-parse.js +8 -0
- package/dist/app/roleplay/utils/report-parse.js.map +1 -0
- package/dist/app/roleplay/utils/report-parse.test.cjs +491 -0
- package/dist/app/roleplay/utils/report-parse.test.cjs.map +1 -0
- package/dist/app/roleplay/utils/report-parse.test.d.cts +2 -0
- package/dist/app/roleplay/utils/report-parse.test.d.ts +2 -0
- package/dist/app/roleplay/utils/report-parse.test.js +237 -0
- package/dist/app/roleplay/utils/report-parse.test.js.map +1 -0
- package/dist/app/roleplay/utils/session-utils.cjs +204 -0
- package/dist/app/roleplay/utils/session-utils.cjs.map +1 -0
- package/dist/app/roleplay/utils/session-utils.d.cts +38 -0
- package/dist/app/roleplay/utils/session-utils.d.ts +38 -0
- package/dist/app/roleplay/utils/session-utils.js +46 -0
- package/dist/app/roleplay/utils/session-utils.js.map +1 -0
- package/dist/chunk-32WIS4L7.js +131 -0
- package/dist/chunk-32WIS4L7.js.map +1 -0
- package/dist/chunk-3UGBMKSQ.js +166 -0
- package/dist/chunk-3UGBMKSQ.js.map +1 -0
- package/dist/chunk-4YAA25AV.js +161 -0
- package/dist/chunk-4YAA25AV.js.map +1 -0
- package/dist/chunk-5QIT4URV.js +87 -0
- package/dist/chunk-5QIT4URV.js.map +1 -0
- package/dist/chunk-6YIKOYBQ.js +185 -0
- package/dist/chunk-6YIKOYBQ.js.map +1 -0
- package/dist/chunk-7MXY3D3Z.js +84 -0
- package/dist/chunk-7MXY3D3Z.js.map +1 -0
- package/dist/chunk-EBFQFOUQ.js +138 -0
- package/dist/chunk-EBFQFOUQ.js.map +1 -0
- package/dist/chunk-EHDUKUML.js +183 -0
- package/dist/chunk-EHDUKUML.js.map +1 -0
- package/dist/{chunk-NEJCZABQ.js → chunk-FJEDSUGU.js} +7 -7
- package/dist/chunk-GA6W62DO.js +101 -0
- package/dist/chunk-GA6W62DO.js.map +1 -0
- package/dist/chunk-KJPBBBVK.js +142 -0
- package/dist/chunk-KJPBBBVK.js.map +1 -0
- package/dist/{chunk-TQTCT7DC.js → chunk-LRNO4W2P.js} +5 -5
- package/dist/{chunk-6DWUGXSY.js → chunk-N242VJOP.js} +2 -2
- package/dist/chunk-NKW6BO5R.js +264 -0
- package/dist/chunk-NKW6BO5R.js.map +1 -0
- package/dist/{chunk-R5UDNKV2.js → chunk-O332K3SW.js} +2 -2
- package/dist/chunk-OUP3VFXG.js +1 -0
- package/dist/chunk-OUP3VFXG.js.map +1 -0
- package/dist/chunk-QMAINJ4G.js +190 -0
- package/dist/chunk-QMAINJ4G.js.map +1 -0
- package/dist/{chunk-KLJVIEFW.js → chunk-SOKGYD5B.js} +7 -7
- package/dist/chunk-TFJJKM3W.js +261 -0
- package/dist/chunk-TFJJKM3W.js.map +1 -0
- package/dist/{chunk-KQ3ME6XY.js → chunk-U2EAXN3Y.js} +4 -4
- package/dist/chunk-UXAEOCOH.js +150 -0
- package/dist/chunk-UXAEOCOH.js.map +1 -0
- package/dist/chunk-YHP75Y5K.js +242 -0
- package/dist/chunk-YHP75Y5K.js.map +1 -0
- package/dist/chunk-ZE36DFOC.js +142 -0
- package/dist/chunk-ZE36DFOC.js.map +1 -0
- package/dist/index.css +76 -0
- package/dist/index.js +32 -32
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.js +5 -5
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/review-question-body.js +2 -2
- package/dist/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/index.js +7 -7
- package/dist/molecules/curriculumV2/CurriculumContents/curriculum-review.js +8 -8
- package/dist/molecules/curriculumV2/CurriculumContents/index.js +9 -9
- package/dist/molecules/curriculumV2/index.js +11 -11
- package/dist/molecules/dynamic-form-editor.js +2 -2
- package/dist/molecules/index.js +29 -29
- package/package.json +28 -2
- package/src/app/roleplay/chart/session-chart.tsx +185 -0
- package/src/app/roleplay/index.ts +8 -0
- package/src/app/roleplay/parts/analysis-section.tsx +98 -0
- package/src/app/roleplay/parts/coaching-panel.tsx +101 -0
- package/src/app/roleplay/parts/content.tsx +146 -0
- package/src/app/roleplay/parts/header.tsx +168 -0
- package/src/app/roleplay/parts/score-summary.tsx +158 -0
- package/src/app/roleplay/parts/score-trend-section.tsx +265 -0
- package/src/app/roleplay/parts/script-transcript.tsx +190 -0
- package/src/app/roleplay/parts/section-nav.tsx +299 -0
- package/src/app/roleplay/parts/session-replay-dialog.tsx +168 -0
- package/src/app/roleplay/parts/step-detail.tsx +173 -0
- package/src/app/roleplay/parts/step-radar.tsx +80 -0
- package/src/app/roleplay/parts/step-summary.tsx +149 -0
- package/src/app/roleplay/rp-session-detail.tsx +176 -0
- package/src/app/roleplay/types.ts +61 -0
- package/src/app/roleplay/utils/report-parse.test.ts +268 -0
- package/src/app/roleplay/utils/report-parse.ts +443 -0
- package/src/app/roleplay/utils/session-utils.ts +215 -0
- package/src/constrant/trainingLog.dummy.json +1 -0
- /package/dist/{chunk-NEJCZABQ.js.map → chunk-FJEDSUGU.js.map} +0 -0
- /package/dist/{chunk-TQTCT7DC.js.map → chunk-LRNO4W2P.js.map} +0 -0
- /package/dist/{chunk-6DWUGXSY.js.map → chunk-N242VJOP.js.map} +0 -0
- /package/dist/{chunk-R5UDNKV2.js.map → chunk-O332K3SW.js.map} +0 -0
- /package/dist/{chunk-KLJVIEFW.js.map → chunk-SOKGYD5B.js.map} +0 -0
- /package/dist/{chunk-KQ3ME6XY.js.map → chunk-U2EAXN3Y.js.map} +0 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import {
|
|
2
|
+
stepCode,
|
|
3
|
+
stepColor,
|
|
4
|
+
stepGradeLabel,
|
|
5
|
+
stepRatio,
|
|
6
|
+
stepScoreText,
|
|
7
|
+
stepVars
|
|
8
|
+
} from "./chunk-4YAA25AV.js";
|
|
9
|
+
import {
|
|
10
|
+
Progress
|
|
11
|
+
} from "./chunk-TNNF5Q62.js";
|
|
12
|
+
import {
|
|
13
|
+
Box
|
|
14
|
+
} from "./chunk-4Y5BEXVN.js";
|
|
15
|
+
import {
|
|
16
|
+
Typo
|
|
17
|
+
} from "./chunk-L4QQGIYQ.js";
|
|
18
|
+
import {
|
|
19
|
+
Flex
|
|
20
|
+
} from "./chunk-25HMMI7R.js";
|
|
21
|
+
|
|
22
|
+
// src/app/roleplay/parts/section-nav.tsx
|
|
23
|
+
import { useEffect, useState } from "react";
|
|
24
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
25
|
+
var NAV_ICONS = {
|
|
26
|
+
"score-summary": /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
27
|
+
/* @__PURE__ */ jsx("path", { d: "m12 14 4-4" }),
|
|
28
|
+
/* @__PURE__ */ jsx("path", { d: "M3.34 19a10 10 0 1 1 17.32 0" })
|
|
29
|
+
] }),
|
|
30
|
+
strengths: /* @__PURE__ */ jsx("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" }),
|
|
31
|
+
improvements: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
32
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "9" }),
|
|
33
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "5" }),
|
|
34
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "1.5" })
|
|
35
|
+
] }),
|
|
36
|
+
"score-trend": /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
37
|
+
/* @__PURE__ */ jsx("path", { d: "M3 3v18h18" }),
|
|
38
|
+
/* @__PURE__ */ jsx("path", { d: "m19 8-5 5-4-4-4 4" })
|
|
39
|
+
] }),
|
|
40
|
+
"step-summary": /* @__PURE__ */ jsx("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" }),
|
|
41
|
+
"step-detail": /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
42
|
+
/* @__PURE__ */ jsx("line", { x1: "8", x2: "21", y1: "6", y2: "6" }),
|
|
43
|
+
/* @__PURE__ */ jsx("line", { x1: "8", x2: "21", y1: "12", y2: "12" }),
|
|
44
|
+
/* @__PURE__ */ jsx("line", { x1: "8", x2: "21", y1: "18", y2: "18" }),
|
|
45
|
+
/* @__PURE__ */ jsx("path", { d: "M3 6h.01M3 12h.01M3 18h.01" })
|
|
46
|
+
] }),
|
|
47
|
+
coaching: /* @__PURE__ */ jsx("polygon", { points: "13 2 3 14 12 14 11 22 21 10 12 10 13 2" })
|
|
48
|
+
};
|
|
49
|
+
function NavIcon({ children }) {
|
|
50
|
+
return /* @__PURE__ */ jsx(
|
|
51
|
+
"svg",
|
|
52
|
+
{
|
|
53
|
+
"aria-hidden": "true",
|
|
54
|
+
fill: "none",
|
|
55
|
+
height: "13",
|
|
56
|
+
stroke: "currentColor",
|
|
57
|
+
strokeLinecap: "round",
|
|
58
|
+
strokeLinejoin: "round",
|
|
59
|
+
strokeWidth: "1.8",
|
|
60
|
+
style: { flexShrink: 0 },
|
|
61
|
+
viewBox: "0 0 24 24",
|
|
62
|
+
width: "13",
|
|
63
|
+
children
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
function StepMetricBadge({ step }) {
|
|
68
|
+
const scoreText = stepScoreText(step);
|
|
69
|
+
if (scoreText !== null) {
|
|
70
|
+
return /* @__PURE__ */ jsx(
|
|
71
|
+
Typo,
|
|
72
|
+
{
|
|
73
|
+
as: "span",
|
|
74
|
+
mono: true,
|
|
75
|
+
style: { flexShrink: 0, color: "var(--gray-11)" },
|
|
76
|
+
variant: "body",
|
|
77
|
+
weight: "medium",
|
|
78
|
+
children: scoreText
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
const gradeLabel = stepGradeLabel(step);
|
|
83
|
+
if (gradeLabel !== null) {
|
|
84
|
+
return /* @__PURE__ */ jsx(
|
|
85
|
+
Typo,
|
|
86
|
+
{
|
|
87
|
+
as: "span",
|
|
88
|
+
mono: true,
|
|
89
|
+
style: { flexShrink: 0, color: stepVars(step).fg },
|
|
90
|
+
variant: "body",
|
|
91
|
+
weight: "medium",
|
|
92
|
+
children: gradeLabel
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
function useScrollSpy(ids) {
|
|
99
|
+
const [activeId, setActiveId] = useState(null);
|
|
100
|
+
const watchKey = ids.join(",");
|
|
101
|
+
useEffect(() => {
|
|
102
|
+
const els = ids.map((id) => document.getElementById(id)).filter((el) => el !== null);
|
|
103
|
+
if (els.length === 0) return;
|
|
104
|
+
const observer = new IntersectionObserver(
|
|
105
|
+
(entries) => {
|
|
106
|
+
const visible = entries.filter((e) => e.isIntersecting).sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);
|
|
107
|
+
if (visible[0]) setActiveId(visible[0].target.id);
|
|
108
|
+
},
|
|
109
|
+
{ rootMargin: "0px 0px -72% 0px", threshold: 0 }
|
|
110
|
+
);
|
|
111
|
+
els.forEach((el) => {
|
|
112
|
+
observer.observe(el);
|
|
113
|
+
});
|
|
114
|
+
return () => {
|
|
115
|
+
observer.disconnect();
|
|
116
|
+
};
|
|
117
|
+
}, [watchKey]);
|
|
118
|
+
return activeId;
|
|
119
|
+
}
|
|
120
|
+
function scrollToId(id) {
|
|
121
|
+
var _a;
|
|
122
|
+
(_a = document.getElementById(id)) == null ? void 0 : _a.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
123
|
+
}
|
|
124
|
+
function SectionNav({ items, steps }) {
|
|
125
|
+
const activeId = useScrollSpy(items.map((i) => i.id));
|
|
126
|
+
const stepDetailActive = activeId === "step-summary" || activeId === "step-detail";
|
|
127
|
+
return /* @__PURE__ */ jsx(Box, { asChild: true, className: "rp-section-nav", children: /* @__PURE__ */ jsx("aside", { children: /* @__PURE__ */ jsxs(Box, { children: [
|
|
128
|
+
/* @__PURE__ */ jsx(
|
|
129
|
+
Typo,
|
|
130
|
+
{
|
|
131
|
+
as: "p",
|
|
132
|
+
color: "gray",
|
|
133
|
+
style: {
|
|
134
|
+
paddingLeft: "calc(var(--space-3) + 2px)",
|
|
135
|
+
paddingBottom: "var(--space-1)"
|
|
136
|
+
},
|
|
137
|
+
variant: "body",
|
|
138
|
+
weight: "medium",
|
|
139
|
+
children: "\uBAA9\uCC28"
|
|
140
|
+
}
|
|
141
|
+
),
|
|
142
|
+
/* @__PURE__ */ jsx(Box, { asChild: true, children: /* @__PURE__ */ jsx("ul", { style: { listStyle: "none", margin: 0, padding: 0 }, children: items.map((item) => {
|
|
143
|
+
const active = activeId === item.id;
|
|
144
|
+
return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
|
|
145
|
+
"button",
|
|
146
|
+
{
|
|
147
|
+
"aria-current": active ? "true" : void 0,
|
|
148
|
+
className: "rp-nav-btn",
|
|
149
|
+
onClick: () => {
|
|
150
|
+
scrollToId(item.id);
|
|
151
|
+
},
|
|
152
|
+
style: active ? {
|
|
153
|
+
borderLeftColor: "var(--accent-9)",
|
|
154
|
+
background: "var(--accent-a2)"
|
|
155
|
+
} : void 0,
|
|
156
|
+
type: "button",
|
|
157
|
+
children: [
|
|
158
|
+
/* @__PURE__ */ jsxs(Flex, { align: "center", gap: "2", style: { minWidth: 0 }, children: [
|
|
159
|
+
NAV_ICONS[item.id] ? /* @__PURE__ */ jsx(NavIcon, { children: NAV_ICONS[item.id] }) : null,
|
|
160
|
+
/* @__PURE__ */ jsx(
|
|
161
|
+
Typo,
|
|
162
|
+
{
|
|
163
|
+
as: "span",
|
|
164
|
+
truncate: true,
|
|
165
|
+
variant: "body",
|
|
166
|
+
weight: active ? "medium" : "regular",
|
|
167
|
+
children: item.label
|
|
168
|
+
}
|
|
169
|
+
)
|
|
170
|
+
] }),
|
|
171
|
+
typeof item.score === "number" ? /* @__PURE__ */ jsxs(Typo, { as: "span", mono: true, style: { flexShrink: 0 }, variant: "body", children: [
|
|
172
|
+
/* @__PURE__ */ jsx(
|
|
173
|
+
Typo,
|
|
174
|
+
{
|
|
175
|
+
as: "span",
|
|
176
|
+
style: {
|
|
177
|
+
color: active ? "var(--gray-12)" : "var(--gray-11)"
|
|
178
|
+
},
|
|
179
|
+
variant: "body",
|
|
180
|
+
weight: "medium",
|
|
181
|
+
children: item.score
|
|
182
|
+
}
|
|
183
|
+
),
|
|
184
|
+
/* @__PURE__ */ jsxs(Typo, { as: "span", style: { color: "var(--gray-9)" }, variant: "body", children: [
|
|
185
|
+
"/",
|
|
186
|
+
item.max
|
|
187
|
+
] })
|
|
188
|
+
] }) : null
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
) }, item.id);
|
|
192
|
+
}) }) }),
|
|
193
|
+
steps.length > 0 && /* @__PURE__ */ jsxs(Box, { mt: "3", pt: "3", style: { borderTop: "1px solid var(--gray-4)" }, children: [
|
|
194
|
+
/* @__PURE__ */ jsx(Box, { pb: "1", px: "3", children: /* @__PURE__ */ jsx(
|
|
195
|
+
Typo,
|
|
196
|
+
{
|
|
197
|
+
as: "span",
|
|
198
|
+
style: {
|
|
199
|
+
color: stepDetailActive ? "var(--gray-12)" : "var(--gray-10)"
|
|
200
|
+
},
|
|
201
|
+
variant: "body",
|
|
202
|
+
weight: "medium",
|
|
203
|
+
children: "\uB2E8\uACC4\uBCC4 \uC810\uC218"
|
|
204
|
+
}
|
|
205
|
+
) }),
|
|
206
|
+
/* @__PURE__ */ jsx(Box, { asChild: true, children: /* @__PURE__ */ jsx("ul", { style: { listStyle: "none", margin: 0, padding: 0 }, children: steps.map((step) => {
|
|
207
|
+
const ratio = stepRatio(step);
|
|
208
|
+
return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
|
|
209
|
+
"button",
|
|
210
|
+
{
|
|
211
|
+
className: "rp-jump-btn",
|
|
212
|
+
onClick: () => {
|
|
213
|
+
scrollToId(`step-${step.key}`);
|
|
214
|
+
},
|
|
215
|
+
type: "button",
|
|
216
|
+
children: [
|
|
217
|
+
/* @__PURE__ */ jsxs(Flex, { align: "center", gap: "2", justify: "between", children: [
|
|
218
|
+
/* @__PURE__ */ jsxs(
|
|
219
|
+
Typo,
|
|
220
|
+
{
|
|
221
|
+
as: "span",
|
|
222
|
+
style: { minWidth: 0 },
|
|
223
|
+
truncate: true,
|
|
224
|
+
variant: "body",
|
|
225
|
+
children: [
|
|
226
|
+
/* @__PURE__ */ jsx(
|
|
227
|
+
Typo,
|
|
228
|
+
{
|
|
229
|
+
as: "span",
|
|
230
|
+
mono: true,
|
|
231
|
+
style: { color: "var(--gray-11)" },
|
|
232
|
+
variant: "body",
|
|
233
|
+
weight: "medium",
|
|
234
|
+
children: stepCode(step)
|
|
235
|
+
}
|
|
236
|
+
),
|
|
237
|
+
" ",
|
|
238
|
+
/* @__PURE__ */ jsx(
|
|
239
|
+
Typo,
|
|
240
|
+
{
|
|
241
|
+
as: "span",
|
|
242
|
+
style: { color: "var(--gray-9)" },
|
|
243
|
+
variant: "body",
|
|
244
|
+
children: step.label
|
|
245
|
+
}
|
|
246
|
+
)
|
|
247
|
+
]
|
|
248
|
+
}
|
|
249
|
+
),
|
|
250
|
+
/* @__PURE__ */ jsx(StepMetricBadge, { step })
|
|
251
|
+
] }),
|
|
252
|
+
ratio !== null ? /* @__PURE__ */ jsx(Box, { mt: "1", children: /* @__PURE__ */ jsx(Progress, { color: stepColor(step), size: "1", value: ratio * 100 }) }) : null
|
|
253
|
+
]
|
|
254
|
+
}
|
|
255
|
+
) }, step.key);
|
|
256
|
+
}) }) })
|
|
257
|
+
] })
|
|
258
|
+
] }) }) });
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
export {
|
|
262
|
+
SectionNav
|
|
263
|
+
};
|
|
264
|
+
//# sourceMappingURL=chunk-NKW6BO5R.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 mono\n style={{ flexShrink: 0, color: 'var(--gray-11)' }}\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 mono\n style={{ color: 'var(--gray-11)' }}\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,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CurriculumReviewSteps_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LRNO4W2P.js";
|
|
4
4
|
import {
|
|
5
5
|
useCurriculumContext
|
|
6
6
|
} from "./chunk-WA5A2GB4.js";
|
|
@@ -193,4 +193,4 @@ var curriculum_review_default = CurriculumReview;
|
|
|
193
193
|
export {
|
|
194
194
|
curriculum_review_default
|
|
195
195
|
};
|
|
196
|
-
//# sourceMappingURL=chunk-
|
|
196
|
+
//# sourceMappingURL=chunk-O332K3SW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-OUP3VFXG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import {
|
|
2
|
+
formatDate,
|
|
3
|
+
formatDuration,
|
|
4
|
+
statusLabelOf
|
|
5
|
+
} from "./chunk-4YAA25AV.js";
|
|
6
|
+
import {
|
|
7
|
+
Heading
|
|
8
|
+
} from "./chunk-USGOLLYO.js";
|
|
9
|
+
import {
|
|
10
|
+
Box
|
|
11
|
+
} from "./chunk-4Y5BEXVN.js";
|
|
12
|
+
import {
|
|
13
|
+
Typo
|
|
14
|
+
} from "./chunk-L4QQGIYQ.js";
|
|
15
|
+
import {
|
|
16
|
+
Flex
|
|
17
|
+
} from "./chunk-25HMMI7R.js";
|
|
18
|
+
import {
|
|
19
|
+
Button
|
|
20
|
+
} from "./chunk-2LCH3PDF.js";
|
|
21
|
+
import {
|
|
22
|
+
Badge
|
|
23
|
+
} from "./chunk-BK74U562.js";
|
|
24
|
+
|
|
25
|
+
// src/app/roleplay/parts/header.tsx
|
|
26
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
27
|
+
function PdfIcon() {
|
|
28
|
+
return /* @__PURE__ */ jsxs(
|
|
29
|
+
"svg",
|
|
30
|
+
{
|
|
31
|
+
"aria-hidden": "true",
|
|
32
|
+
fill: "none",
|
|
33
|
+
height: "13",
|
|
34
|
+
stroke: "currentColor",
|
|
35
|
+
strokeLinecap: "round",
|
|
36
|
+
strokeLinejoin: "round",
|
|
37
|
+
strokeWidth: "2",
|
|
38
|
+
viewBox: "0 0 24 24",
|
|
39
|
+
width: "13",
|
|
40
|
+
children: [
|
|
41
|
+
/* @__PURE__ */ jsx("path", { d: "M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z" }),
|
|
42
|
+
/* @__PURE__ */ jsx("path", { d: "M14 3v5h5" }),
|
|
43
|
+
/* @__PURE__ */ jsx("path", { d: "M12 12v5" }),
|
|
44
|
+
/* @__PURE__ */ jsx("path", { d: "M9.5 14.5 12 17l2.5-2.5" })
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
function VideoIcon() {
|
|
50
|
+
return /* @__PURE__ */ jsxs(
|
|
51
|
+
"svg",
|
|
52
|
+
{
|
|
53
|
+
"aria-hidden": "true",
|
|
54
|
+
fill: "none",
|
|
55
|
+
height: "13",
|
|
56
|
+
stroke: "currentColor",
|
|
57
|
+
strokeLinecap: "round",
|
|
58
|
+
strokeLinejoin: "round",
|
|
59
|
+
strokeWidth: "2",
|
|
60
|
+
viewBox: "0 0 24 24",
|
|
61
|
+
width: "13",
|
|
62
|
+
children: [
|
|
63
|
+
/* @__PURE__ */ jsx("rect", { height: "12", rx: "2", width: "13", x: "2", y: "6" }),
|
|
64
|
+
/* @__PURE__ */ jsx("path", { d: "m15 10 6-3v10l-6-3z" })
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
function Header({
|
|
70
|
+
detail,
|
|
71
|
+
hasScript,
|
|
72
|
+
onOpenReplay,
|
|
73
|
+
onResolveMediaUrl
|
|
74
|
+
}) {
|
|
75
|
+
var _a;
|
|
76
|
+
const pdfHref = detail.trainingLogURL;
|
|
77
|
+
const hasReplayMedia = Boolean(
|
|
78
|
+
detail.trainingVideoURL || detail.trainingAudioURL
|
|
79
|
+
);
|
|
80
|
+
const handlePdfClick = () => {
|
|
81
|
+
if (!pdfHref || !onResolveMediaUrl) return;
|
|
82
|
+
void Promise.resolve(
|
|
83
|
+
onResolveMediaUrl(pdfHref, { disposition: "attachment" })
|
|
84
|
+
).then((url) => {
|
|
85
|
+
window.open(url, "_blank");
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
const replayActive = hasScript && hasReplayMedia;
|
|
89
|
+
return /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(
|
|
90
|
+
Flex,
|
|
91
|
+
{
|
|
92
|
+
align: { md: "start" },
|
|
93
|
+
direction: { initial: "column", md: "row" },
|
|
94
|
+
gap: "4",
|
|
95
|
+
justify: "between",
|
|
96
|
+
children: [
|
|
97
|
+
/* @__PURE__ */ jsxs(Box, { style: { minWidth: 0 }, children: [
|
|
98
|
+
/* @__PURE__ */ jsxs(Flex, { align: "center", gap: "2", mb: "2", wrap: "wrap", children: [
|
|
99
|
+
/* @__PURE__ */ jsx(Badge, { color: "neutral", size: "small", variant: "soft", children: statusLabelOf(detail.status) }),
|
|
100
|
+
/* @__PURE__ */ jsxs(Typo, { as: "span", style: { color: "var(--gray-11)" }, variant: "body", children: [
|
|
101
|
+
detail.trainingSessionNum,
|
|
102
|
+
"\uD68C\uCC28",
|
|
103
|
+
detail.characterTitle ? ` \xB7 ${detail.characterTitle}` : ""
|
|
104
|
+
] })
|
|
105
|
+
] }),
|
|
106
|
+
/* @__PURE__ */ jsx(
|
|
107
|
+
Heading,
|
|
108
|
+
{
|
|
109
|
+
size: { initial: "5", md: "7" },
|
|
110
|
+
style: { textWrap: "balance" },
|
|
111
|
+
weight: "bold",
|
|
112
|
+
children: (_a = detail.scenarioTitle) != null ? _a : "\uB864\uD50C\uB808\uC789 \uC138\uC158"
|
|
113
|
+
}
|
|
114
|
+
),
|
|
115
|
+
/* @__PURE__ */ jsxs(Typo, { as: "p", color: "gray", mono: true, mt: "1", variant: "body", children: [
|
|
116
|
+
formatDate(detail.createdAt),
|
|
117
|
+
" \xB7 ",
|
|
118
|
+
formatDuration(detail.trainingTime)
|
|
119
|
+
] })
|
|
120
|
+
] }),
|
|
121
|
+
/* @__PURE__ */ jsxs(
|
|
122
|
+
Flex,
|
|
123
|
+
{
|
|
124
|
+
gap: "2",
|
|
125
|
+
justify: { initial: "start", md: "end" },
|
|
126
|
+
style: { flexShrink: 0 },
|
|
127
|
+
wrap: "wrap",
|
|
128
|
+
children: [
|
|
129
|
+
onResolveMediaUrl ? /* @__PURE__ */ jsxs(
|
|
130
|
+
Button,
|
|
131
|
+
{
|
|
132
|
+
color: "gray",
|
|
133
|
+
disabled: !pdfHref,
|
|
134
|
+
onClick: pdfHref ? handlePdfClick : void 0,
|
|
135
|
+
size: { initial: "small", md: "medium" },
|
|
136
|
+
title: pdfHref ? void 0 : "\uC0B0\uCD9C\uBB3C \uC5C6\uC74C",
|
|
137
|
+
type: "button",
|
|
138
|
+
variant: "outline",
|
|
139
|
+
children: [
|
|
140
|
+
/* @__PURE__ */ jsx(PdfIcon, {}),
|
|
141
|
+
/* @__PURE__ */ jsx("span", { style: { whiteSpace: "nowrap" }, children: "PDF \uB2E4\uC6B4\uB85C\uB4DC" })
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
) : /* @__PURE__ */ jsx(
|
|
145
|
+
Button,
|
|
146
|
+
{
|
|
147
|
+
asChild: Boolean(pdfHref),
|
|
148
|
+
color: "gray",
|
|
149
|
+
disabled: !pdfHref,
|
|
150
|
+
size: { initial: "small", md: "medium" },
|
|
151
|
+
title: pdfHref ? void 0 : "\uC0B0\uCD9C\uBB3C \uC5C6\uC74C",
|
|
152
|
+
type: "button",
|
|
153
|
+
variant: "outline",
|
|
154
|
+
children: pdfHref ? /* @__PURE__ */ jsxs("a", { href: pdfHref, rel: "noopener noreferrer", target: "_blank", children: [
|
|
155
|
+
/* @__PURE__ */ jsx(PdfIcon, {}),
|
|
156
|
+
/* @__PURE__ */ jsx("span", { style: { whiteSpace: "nowrap" }, children: "PDF \uB2E4\uC6B4\uB85C\uB4DC" })
|
|
157
|
+
] }) : /* @__PURE__ */ jsxs("span", { children: [
|
|
158
|
+
/* @__PURE__ */ jsx(PdfIcon, {}),
|
|
159
|
+
/* @__PURE__ */ jsx("span", { style: { whiteSpace: "nowrap" }, children: "PDF \uB2E4\uC6B4\uB85C\uB4DC" })
|
|
160
|
+
] })
|
|
161
|
+
}
|
|
162
|
+
),
|
|
163
|
+
hasScript ? /* @__PURE__ */ jsxs(
|
|
164
|
+
Button,
|
|
165
|
+
{
|
|
166
|
+
color: "gray",
|
|
167
|
+
disabled: !replayActive,
|
|
168
|
+
onClick: onOpenReplay,
|
|
169
|
+
size: { initial: "small", md: "medium" },
|
|
170
|
+
title: replayActive ? void 0 : "\uB2E4\uC2DC\uBCF4\uAE30 \uC5C6\uC74C",
|
|
171
|
+
type: "button",
|
|
172
|
+
variant: "outline",
|
|
173
|
+
children: [
|
|
174
|
+
/* @__PURE__ */ jsx(VideoIcon, {}),
|
|
175
|
+
/* @__PURE__ */ jsx("span", { style: { whiteSpace: "nowrap" }, children: "\uC601\uC0C1" })
|
|
176
|
+
]
|
|
177
|
+
}
|
|
178
|
+
) : null
|
|
179
|
+
]
|
|
180
|
+
}
|
|
181
|
+
)
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
) });
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export {
|
|
188
|
+
Header
|
|
189
|
+
};
|
|
190
|
+
//# sourceMappingURL=chunk-QMAINJ4G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/app/roleplay/parts/header.tsx"],"sourcesContent":["'use client';\n\nimport { Badge, Box, Button, Flex, Heading, Typo } from '../../../atoms';\nimport type { RpSessionDetailData } from '../types';\nimport { formatDate, formatDuration, statusLabelOf } from '../utils/session-utils';\n\nexport interface HeaderProps {\n detail: RpSessionDetailData;\n hasScript: boolean;\n onOpenReplay: () => void;\n onResolveMediaUrl?: (\n rawUrl: string,\n options: { disposition: 'inline' | 'attachment' }\n ) => string | Promise<string>;\n}\n\nfunction PdfIcon(): 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=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"13\"\n >\n <path d=\"M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z\" />\n <path d=\"M14 3v5h5\" />\n <path d=\"M12 12v5\" />\n <path d=\"M9.5 14.5 12 17l2.5-2.5\" />\n </svg>\n );\n}\n\nfunction VideoIcon(): 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=\"2\"\n viewBox=\"0 0 24 24\"\n width=\"13\"\n >\n <rect height=\"12\" rx=\"2\" width=\"13\" x=\"2\" y=\"6\" />\n <path d=\"m15 10 6-3v10l-6-3z\" />\n </svg>\n );\n}\n\nexport function Header({\n detail,\n hasScript,\n onOpenReplay,\n onResolveMediaUrl,\n}: HeaderProps): React.ReactElement {\n const pdfHref = detail.trainingLogURL;\n const hasReplayMedia = Boolean(\n detail.trainingVideoURL || detail.trainingAudioURL\n );\n\n const handlePdfClick = (): void => {\n if (!pdfHref || !onResolveMediaUrl) return;\n void Promise.resolve(\n onResolveMediaUrl(pdfHref, { disposition: 'attachment' })\n ).then((url) => {\n window.open(url, '_blank');\n });\n };\n\n const replayActive = hasScript && hasReplayMedia;\n\n return (\n <Box>\n <Flex\n align={{ md: 'start' }}\n direction={{ initial: 'column', md: 'row' }}\n gap=\"4\"\n justify=\"between\"\n >\n <Box style={{ minWidth: 0 }}>\n <Flex align=\"center\" gap=\"2\" mb=\"2\" wrap=\"wrap\">\n <Badge color=\"neutral\" size=\"small\" variant=\"soft\">\n {statusLabelOf(detail.status)}\n </Badge>\n <Typo as=\"span\" style={{ color: 'var(--gray-11)' }} variant=\"body\">\n {detail.trainingSessionNum}회차\n {detail.characterTitle ? ` · ${detail.characterTitle}` : ''}\n </Typo>\n </Flex>\n <Heading\n size={{ initial: '5', md: '7' }}\n style={{ textWrap: 'balance' }}\n weight=\"bold\"\n >\n {detail.scenarioTitle ?? '롤플레잉 세션'}\n </Heading>\n <Typo as=\"p\" color=\"gray\" mono mt=\"1\" variant=\"body\">\n {formatDate(detail.createdAt)} · {formatDuration(detail.trainingTime)}\n </Typo>\n </Box>\n <Flex\n gap=\"2\"\n justify={{ initial: 'start', md: 'end' }}\n style={{ flexShrink: 0 }}\n wrap=\"wrap\"\n >\n {onResolveMediaUrl ? (\n <Button\n color=\"gray\"\n disabled={!pdfHref}\n onClick={pdfHref ? handlePdfClick : undefined}\n size={{ initial: 'small', md: 'medium' }}\n title={pdfHref ? undefined : '산출물 없음'}\n type=\"button\"\n variant=\"outline\"\n >\n <PdfIcon />\n <span style={{ whiteSpace: 'nowrap' }}>PDF 다운로드</span>\n </Button>\n ) : (\n <Button\n asChild={Boolean(pdfHref)}\n color=\"gray\"\n disabled={!pdfHref}\n size={{ initial: 'small', md: 'medium' }}\n title={pdfHref ? undefined : '산출물 없음'}\n type=\"button\"\n variant=\"outline\"\n >\n {pdfHref ? (\n <a href={pdfHref} rel=\"noopener noreferrer\" target=\"_blank\">\n <PdfIcon />\n <span style={{ whiteSpace: 'nowrap' }}>PDF 다운로드</span>\n </a>\n ) : (\n <span>\n <PdfIcon />\n <span style={{ whiteSpace: 'nowrap' }}>PDF 다운로드</span>\n </span>\n )}\n </Button>\n )}\n {hasScript ? (\n <Button\n color=\"gray\"\n disabled={!replayActive}\n onClick={onOpenReplay}\n size={{ initial: 'small', md: 'medium' }}\n title={replayActive ? undefined : '다시보기 없음'}\n type=\"button\"\n variant=\"outline\"\n >\n <VideoIcon />\n <span style={{ whiteSpace: 'nowrap' }}>영상</span>\n </Button>\n ) : null}\n </Flex>\n </Flex>\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
review_question_body_default
|
|
3
|
+
} from "./chunk-U2EAXN3Y.js";
|
|
4
|
+
import {
|
|
5
|
+
review_question_footer_default
|
|
6
|
+
} from "./chunk-GE4M5GOQ.js";
|
|
1
7
|
import {
|
|
2
8
|
review_question_header_default
|
|
3
9
|
} from "./chunk-G3KQN32M.js";
|
|
4
10
|
import {
|
|
5
11
|
review_question_layout_default
|
|
6
12
|
} from "./chunk-VK6INFSB.js";
|
|
7
|
-
import {
|
|
8
|
-
review_question_body_default
|
|
9
|
-
} from "./chunk-KQ3ME6XY.js";
|
|
10
|
-
import {
|
|
11
|
-
review_question_footer_default
|
|
12
|
-
} from "./chunk-GE4M5GOQ.js";
|
|
13
13
|
|
|
14
14
|
// src/molecules/curriculumV2/CurriculumContents/CurriculumReviewSteps/ReviewQuestion/index.tsx
|
|
15
15
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -60,4 +60,4 @@ var ReviewQuestion_default = ReviewQuestion;
|
|
|
60
60
|
export {
|
|
61
61
|
ReviewQuestion_default
|
|
62
62
|
};
|
|
63
|
-
//# sourceMappingURL=chunk-
|
|
63
|
+
//# sourceMappingURL=chunk-SOKGYD5B.js.map
|