@edu-tosel/design 1.0.266 → 1.0.268

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 (166) hide show
  1. package/asset/SVG.d.ts +4 -0
  2. package/asset/SVG.js +4 -0
  3. package/asset/SVG.tsx +4 -0
  4. package/asset/svg/MiniClose.d.ts +4 -0
  5. package/asset/svg/MiniClose.js +4 -0
  6. package/asset/svg/MiniClose.tsx +19 -0
  7. package/asset/svg/Search.d.ts +1 -0
  8. package/asset/svg/Search.js +4 -0
  9. package/asset/svg/Search.tsx +24 -0
  10. package/board/design/Board.design.js +2 -2
  11. package/board/design/Header.design.d.ts +1 -1
  12. package/board/design/Header.design.js +12 -3
  13. package/board/template/ManageBoard.js +1 -1
  14. package/globals.css +7 -2
  15. package/interface/Board.d.ts +11 -1
  16. package/layout/design/Shelf.design.js +2 -2
  17. package/layout/index.d.ts +0 -9
  18. package/layout/index.js +0 -9
  19. package/layout/template/DataField.js +1 -1
  20. package/layout/template/home/Promotion.js +1 -0
  21. package/layout/template/home/Service.js +1 -0
  22. package/layout/template/home/layout/Carousel.js +27 -8
  23. package/layout/template/home/layout/Navigation.js +86 -12
  24. package/package.json +2 -2
  25. package/util/createSearch.d.ts +4 -7
  26. package/util/createSearch.js +208 -24
  27. package/util/index.d.ts +1 -1
  28. package/util/index.js +1 -1
  29. package/version.txt +1 -1
  30. package/widget/template/Input/index.js +8 -0
  31. package/layout/template/About/SectionA.d.ts +0 -1
  32. package/layout/template/About/SectionA.js +0 -51
  33. package/layout/template/About/SectionB.d.ts +0 -2
  34. package/layout/template/About/SectionB.js +0 -55
  35. package/layout/template/About/SectionC.d.ts +0 -1
  36. package/layout/template/About/SectionC.js +0 -35
  37. package/layout/template/About/SectionCCards.d.ts +0 -13
  38. package/layout/template/About/SectionCCards.js +0 -13
  39. package/layout/template/About/SectionCD.d.ts +0 -1
  40. package/layout/template/About/SectionCD.js +0 -15
  41. package/layout/template/About/SectionCLeaf.d.ts +0 -15
  42. package/layout/template/About/SectionCLeaf.js +0 -104
  43. package/layout/template/About/SectionD.d.ts +0 -1
  44. package/layout/template/About/SectionD.js +0 -131
  45. package/layout/template/About/SectionE.d.ts +0 -1
  46. package/layout/template/About/SectionE.js +0 -7
  47. package/layout/template/About/SectionECards.d.ts +0 -1
  48. package/layout/template/About/SectionECards.js +0 -79
  49. package/layout/template/About/SectionF.d.ts +0 -1
  50. package/layout/template/About/SectionF.js +0 -4
  51. package/layout/template/About/SectionG.d.ts +0 -10
  52. package/layout/template/About/SectionG.js +0 -27
  53. package/layout/template/About/index.d.ts +0 -19
  54. package/layout/template/About/index.js +0 -19
  55. package/layout/template/Books/Books.layout.d.ts +0 -1
  56. package/layout/template/Books/Books.layout.js +0 -13
  57. package/layout/template/Books/SectionA.d.ts +0 -2
  58. package/layout/template/Books/SectionA.js +0 -430
  59. package/layout/template/Books/index.d.ts +0 -5
  60. package/layout/template/Books/index.js +0 -5
  61. package/layout/template/MonthlyProgressReport/Layout.d.ts +0 -4
  62. package/layout/template/MonthlyProgressReport/Layout.js +0 -52
  63. package/layout/template/MonthlyProgressReport/Report.d.ts +0 -46
  64. package/layout/template/MonthlyProgressReport/Report.js +0 -124
  65. package/layout/template/MonthlyProgressReport/index.d.ts +0 -8
  66. package/layout/template/MonthlyProgressReport/index.js +0 -7
  67. package/layout/template/Olympiad/Banner.d.ts +0 -1
  68. package/layout/template/Olympiad/Banner.js +0 -31
  69. package/layout/template/Olympiad/Conditions.d.ts +0 -1
  70. package/layout/template/Olympiad/Conditions.js +0 -168
  71. package/layout/template/Olympiad/Features.d.ts +0 -1
  72. package/layout/template/Olympiad/Features.js +0 -44
  73. package/layout/template/Olympiad/Olympiad.layout.d.ts +0 -1
  74. package/layout/template/Olympiad/Olympiad.layout.js +0 -19
  75. package/layout/template/Olympiad/Prizes.d.ts +0 -1
  76. package/layout/template/Olympiad/Prizes.js +0 -49
  77. package/layout/template/Olympiad/Sponsors.d.ts +0 -1
  78. package/layout/template/Olympiad/Sponsors.js +0 -31
  79. package/layout/template/Olympiad/Videoset.d.ts +0 -1
  80. package/layout/template/Olympiad/Videoset.js +0 -71
  81. package/layout/template/Olympiad/index.d.ts +0 -15
  82. package/layout/template/Olympiad/index.js +0 -15
  83. package/layout/template/Regexam/Banner.d.ts +0 -1
  84. package/layout/template/Regexam/Banner.js +0 -183
  85. package/layout/template/Regexam/Evaluation.d.ts +0 -3
  86. package/layout/template/Regexam/Evaluation.js +0 -132
  87. package/layout/template/Regexam/OfflineExam.d.ts +0 -4
  88. package/layout/template/Regexam/OfflineExam.js +0 -204
  89. package/layout/template/Regexam/Regexam.layout.d.ts +0 -1
  90. package/layout/template/Regexam/Regexam.layout.js +0 -13
  91. package/layout/template/Regexam/Types.d.ts +0 -1
  92. package/layout/template/Regexam/Types.js +0 -294
  93. package/layout/template/Regexam/index.d.ts +0 -11
  94. package/layout/template/Regexam/index.js +0 -11
  95. package/layout/template/Transcript/Layout.d.ts +0 -6
  96. package/layout/template/Transcript/Layout.js +0 -52
  97. package/layout/template/Transcript/design/Transcript.d.ts +0 -228
  98. package/layout/template/Transcript/design/Transcript.design.d.ts +0 -13
  99. package/layout/template/Transcript/design/Transcript.design.js +0 -58
  100. package/layout/template/Transcript/design/Transcript.js +0 -181
  101. package/layout/template/Transcript/design/TranscriptAdvanced.design.d.ts +0 -5
  102. package/layout/template/Transcript/design/TranscriptAdvanced.design.js +0 -55
  103. package/layout/template/Transcript/design/atom/CardTitle.d.ts +0 -5
  104. package/layout/template/Transcript/design/atom/CardTitle.js +0 -13
  105. package/layout/template/Transcript/design/atom/CardTitleDivided.d.ts +0 -0
  106. package/layout/template/Transcript/design/atom/CardTitleDivided.js +0 -1
  107. package/layout/template/Transcript/design/atom/GetPartDescriptionFromLevel.d.ts +0 -3
  108. package/layout/template/Transcript/design/atom/GetPartDescriptionFromLevel.js +0 -4
  109. package/layout/template/Transcript/design/atom/GetPartTitleFromLevel.d.ts +0 -3
  110. package/layout/template/Transcript/design/atom/GetPartTitleFromLevel.js +0 -4
  111. package/layout/template/Transcript/design/atom/GetStyleFromLevel.d.ts +0 -2
  112. package/layout/template/Transcript/design/atom/GetStyleFromLevel.js +0 -4
  113. package/layout/template/Transcript/design/atom/LevelToPartDescriptionMap.d.ts +0 -6
  114. package/layout/template/Transcript/design/atom/LevelToPartDescriptionMap.js +0 -95
  115. package/layout/template/Transcript/design/atom/LevelToPartTitleMap.d.ts +0 -6
  116. package/layout/template/Transcript/design/atom/LevelToPartTitleMap.js +0 -95
  117. package/layout/template/Transcript/design/atom/LevelToStyleMap.d.ts +0 -6
  118. package/layout/template/Transcript/design/atom/LevelToStyleMap.js +0 -42
  119. package/layout/template/Transcript/design/atom/PrintBoxStyles.d.ts +0 -4
  120. package/layout/template/Transcript/design/atom/PrintBoxStyles.js +0 -4
  121. package/layout/template/Transcript/design/molecule/BarGraph.d.ts +0 -11
  122. package/layout/template/Transcript/design/molecule/BarGraph.js +0 -81
  123. package/layout/template/Transcript/design/molecule/BarGraphDuo.d.ts +0 -10
  124. package/layout/template/Transcript/design/molecule/BarGraphDuo.js +0 -6
  125. package/layout/template/Transcript/design/molecule/BarGraphMulti.d.ts +0 -11
  126. package/layout/template/Transcript/design/molecule/BarGraphMulti.js +0 -9
  127. package/layout/template/Transcript/design/molecule/CircularGauge.d.ts +0 -10
  128. package/layout/template/Transcript/design/molecule/CircularGauge.js +0 -68
  129. package/layout/template/Transcript/design/molecule/LSWRChart.d.ts +0 -11
  130. package/layout/template/Transcript/design/molecule/LSWRChart.js +0 -44
  131. package/layout/template/Transcript/design/molecule/LevelIndex.d.ts +0 -3
  132. package/layout/template/Transcript/design/molecule/LevelIndex.js +0 -14
  133. package/layout/template/Transcript/design/molecule/MIChart.d.ts +0 -1
  134. package/layout/template/Transcript/design/molecule/MIChart.js +0 -51
  135. package/layout/template/Transcript/design/molecule/OCIChart.d.ts +0 -1
  136. package/layout/template/Transcript/design/molecule/OCIChart.js +0 -60
  137. package/layout/template/Transcript/design/molecule/RadarGraph.d.ts +0 -10
  138. package/layout/template/Transcript/design/molecule/RadarGraph.js +0 -5
  139. package/layout/template/Transcript/design/organism/BarCardCol.d.ts +0 -8
  140. package/layout/template/Transcript/design/organism/BarCardCol.js +0 -30
  141. package/layout/template/Transcript/design/organism/BarCardRow.d.ts +0 -8
  142. package/layout/template/Transcript/design/organism/BarCardRow.js +0 -30
  143. package/layout/template/Transcript/design/organism/HonorCard.d.ts +0 -4
  144. package/layout/template/Transcript/design/organism/HonorCard.js +0 -16
  145. package/layout/template/Transcript/design/organism/IdCard.d.ts +0 -8
  146. package/layout/template/Transcript/design/organism/IdCard.js +0 -64
  147. package/layout/template/Transcript/design/organism/IntelligenceCard.d.ts +0 -12
  148. package/layout/template/Transcript/design/organism/IntelligenceCard.js +0 -39
  149. package/layout/template/Transcript/design/organism/NationalPositionCard.d.ts +0 -4
  150. package/layout/template/Transcript/design/organism/NationalPositionCard.js +0 -14
  151. package/layout/template/Transcript/design/organism/OCICard.d.ts +0 -4
  152. package/layout/template/Transcript/design/organism/OCICard.js +0 -17
  153. package/layout/template/Transcript/design/organism/PerformanceCard.d.ts +0 -5
  154. package/layout/template/Transcript/design/organism/PerformanceCard.js +0 -25
  155. package/layout/template/Transcript/design/organism/RadarCard.d.ts +0 -7
  156. package/layout/template/Transcript/design/organism/RadarCard.js +0 -54
  157. package/layout/template/Transcript/design/organism/ResultGaugeCard.d.ts +0 -7
  158. package/layout/template/Transcript/design/organism/ResultGaugeCard.js +0 -19
  159. package/layout/template/Transcript/design/organism/ScoreCard.d.ts +0 -4
  160. package/layout/template/Transcript/design/organism/ScoreCard.js +0 -11
  161. package/layout/template/Transcript/design/organism/SectionRadarCard.d.ts +0 -8
  162. package/layout/template/Transcript/design/organism/SectionRadarCard.js +0 -42
  163. package/layout/template/Transcript/index.d.ts +0 -11
  164. package/layout/template/Transcript/index.js +0 -9
  165. package/layout/template/Transcript/interface.d.ts +0 -50
  166. package/layout/template/Transcript/interface.js +0 -1
@@ -1,124 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { InfoCard } from "../../../card";
3
- import CardDesign from "../../../card/design/Card.design";
4
- import { LineBreaks } from "../../../text";
5
- import { cn } from "../../../util";
6
- import { ResponsiveContainer, PieChart, Pie, Cell, LineChart, XAxis, YAxis, Line, Legend, } from "recharts";
7
- import moment from "moment-timezone";
8
- import { forwardRef } from "react";
9
- function ProgressReport({ props, }, ref) {
10
- const { studentInfo, recentResult, comment, results, commentType = "tosel", } = props;
11
- const container = {
12
- displays: "flex justify-between ",
13
- sizes: "w-[297mm] h-[210mm]",
14
- boundaries: " px-10 pt-7 pb-9",
15
- fonts: "font-pretendard-var",
16
- };
17
- const leftBody = {
18
- displays: "flex flex-col gap-y-7.5",
19
- };
20
- const rightBody = {
21
- displays: "flex flex-col",
22
- };
23
- const calculate = (result, type) => {
24
- const section1 = Object.values(result.report)
25
- .slice(0, 4)
26
- .filter((v) => v !== null)
27
- .reduce((acc, cur) => Number(acc) + Number(cur), 0);
28
- const section2 = Object.values(result.report)
29
- .slice(4, 8)
30
- .filter((v) => v !== null)
31
- .reduce((acc, cur) => Number(acc) + Number(cur), 0);
32
- const total = (section1 ?? 0) + (section2 ?? 0);
33
- if (type === "section1")
34
- return section1;
35
- if (type === "section2")
36
- return section2;
37
- return total;
38
- };
39
- const preparePieChartData = (result, type) => {
40
- const sectionScore = calculate(result, type);
41
- const maxScore = 50; // 만점
42
- const remainingScore = maxScore - sectionScore;
43
- return [
44
- { name: "Score", value: sectionScore },
45
- { name: "Remaining", value: remainingScore },
46
- ];
47
- };
48
- const sectionWrapper = {
49
- displays: "relative flex items-center justify-center overflow-visible",
50
- sizes: "aspect-square ",
51
- fonts: "text-4xl font-bold text-blue-navy",
52
- };
53
- const pieTray = {
54
- displays: "absolute left-0 top-0",
55
- sizes: "h-full w-full",
56
- };
57
- const gradientId = "gradient1";
58
- const gradientDefinition = (_jsx("defs", { children: _jsxs("linearGradient", { id: gradientId, x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [_jsx("stop", { offset: "0%", style: { stopColor: "#82ca9d", stopOpacity: 1 } }), _jsx("stop", { offset: "100%", style: { stopColor: "#8884d8", stopOpacity: 1 } })] }) }));
59
- const pieStyles = {
60
- cx: "50%",
61
- cy: "50%",
62
- innerRadius: 35,
63
- outerRadius: 49,
64
- dataKey: "value",
65
- nameKey: "name",
66
- };
67
- const cellStyles = {
68
- stroke: "rgba(255, 255, 255, 0)",
69
- };
70
- return (_jsxs("div", { ref: ref, className: cn(container), children: [_jsxs("div", { className: cn(leftBody), children: [_jsxs("div", { className: "flex flex-col text-blue-navy pl-4 border-l-4 border-blue-navy", children: [_jsx("div", { className: "flex items-center", children: _jsx("img", { src: "/images/logos/lab-spiral.png", alt: "lab" }) }), _jsx("div", { className: "text-2xl leading-tight font-bold", children: "Monthly Progress Report" })] }), _jsxs("div", { className: "flex flex-col justify-between h-full", children: [_jsx(InfoCard.Student, { titles: {
71
- title: studentInfo.name,
72
- subtitle: studentInfo.birthday,
73
- }, image: studentInfo.image, data: {
74
- belong: studentInfo.belong,
75
- academy: studentInfo.academy,
76
- }, option: {
77
- boundary: "border-2 border-slate-300",
78
- titleColor: "text-blue-navy",
79
- } }), _jsx("div", { className: "h-96", children: _jsxs(CardDesign, { option: {
80
- height: "full",
81
- boundary: "border-2 border-slate-300 pt-5 px-6 pb-6",
82
- }, children: [_jsxs("div", { className: "flex flex-col justify-center border-b-2 border-blue-navy pb-2.5", children: [_jsx("div", { className: " text-lg font-bold text-blue-navy", children: "\uCD5C\uADFC \uC2DC\uD5D8" }), _jsx("div", { children: recentResult.examName })] }), _jsxs("div", { className: "flex flex-col gap-y-7.5 absolute bottom-0 w-full px-3.5", children: [_jsxs("div", { className: "flex gap-x-12 justify-between w-full", children: [_jsxs("div", { className: "flex-1", children: [_jsx("div", { className: "text-center mb-3.5 text-lg font-bold text-blue-navy", children: "Section I" }), _jsxs("div", { className: cn(sectionWrapper), children: [_jsx("div", { className: cn(pieTray), children: _jsx(ResponsiveContainer, { children: _jsxs(PieChart, { children: [gradientDefinition, _jsxs(Pie, { data: preparePieChartData(recentResult, "section1"), ...pieStyles, children: [_jsx(Cell, { fill: `url(#${gradientId})`, ...cellStyles }), _jsx(Cell, { fill: "rgba(255, 255, 255, 0)", ...cellStyles })] })] }) }) }), calculate(recentResult, "section1")] })] }), _jsxs("div", { className: "flex-1", children: [_jsx("div", { className: "text-center mb-3.5 text-lg font-bold text-blue-navy", children: "Section II" }), _jsxs("div", { className: cn(sectionWrapper), children: [_jsx("div", { className: cn(pieTray), children: _jsx(ResponsiveContainer, { children: _jsxs(PieChart, { children: [gradientDefinition, _jsxs(Pie, { data: preparePieChartData(recentResult, "section2"), ...pieStyles, children: [_jsx(Cell, { fill: `url(#${gradientId})`, ...cellStyles }), _jsx(Cell, { fill: "rgba(255, 255, 255, 0)", ...cellStyles })] })] }) }) }), calculate(recentResult, "section2")] })] })] }), _jsxs("div", { className: "flex justify-between items-end", children: [_jsx("div", { className: "flex ", children: props.recentResult.rank < 11 ? (_jsxs("div", { className: "flex items-end font-bold leading-tight text-blue-navy", children: [_jsx("div", { className: "text-xl", children: "\uC804\uAD6D" }), _jsx("div", { className: "ml-2 text-2xl", children: props.recentResult.rank }), _jsx("div", { className: "text-lg", children: "\uC704" })] })) : (_jsxs("div", { className: "flex items-end font-bold leading-none text-blue-navy", children: [_jsx("div", { children: "\uC804\uAD6D \uC0C1\uC704" }), _jsx("div", { className: "ml-2 text-2xl", children: props.recentResult.percentRank.toFixed(2) }), _jsx("div", { children: "%" })] })) }), _jsxs("div", { className: "flex gap-x-2 justify-end items-end font-bold text-blue-navy", children: [_jsx("div", { className: "text-xl", children: "total" }), _jsx("div", { className: "text-5xl leading-none ", children: calculate(recentResult) })] })] })] })] }) })] })] }), _jsxs("div", { className: cn(rightBody), children: [_jsx("div", { className: "h-12 flex justify-end text-blue-navy font-bold", children: _jsx("div", { children: moment(new Date()).format("YYYY-MM-DD HH:mm:ss") }) }), _jsxs("div", { className: "flex flex-col justify-between h-full", children: [_jsx("div", { className: "h-88", children: _jsx(CardDesign, { option: {
83
- width: "xl",
84
- height: "full",
85
- boundary: "border-2 border-slate-300 pt-8 pr-8",
86
- background: "bg-slate-200",
87
- }, children: _jsx(ResponsiveContainer, { width: "100%", height: "100%", className: "absolute left-0 bottom-0", children: _jsxs(LineChart, { data: [
88
- ...results.map((result) => ({
89
- ...result,
90
- date: moment.unix(result.date).format("YY-MM-DD"),
91
- })),
92
- {
93
- score: predict(results.slice(-1)[0].score, studentInfo.birthday),
94
- date: "예상치",
95
- },
96
- ], children: [_jsx(XAxis, { dataKey: "date" }), _jsx(YAxis, { dataKey: "score", scale: "log", domain: ["auto", "auto"] }), _jsx(Line, { type: "monotone", name: "Monthly Test", dataKey: "score", stroke: "#173A8B", fill: "#173A8B" }), _jsx(Legend, {})] }) }) }) }), _jsx("div", { className: "h-72", children: _jsxs(CardDesign, { option: {
97
- width: "xl",
98
- height: "full",
99
- boundary: "border-2 border-slate-300 p-5",
100
- }, children: [_jsxs("div", { className: "flex text-blue-navy font-bold text-lg", children: [_jsx("div", { children: commentType === "director" ? "원장님" : "TOSEL Lab" }), _jsx("div", { children: "\uC758 \uCF54\uBA58\uD2B8" })] }), _jsx("div", { className: "h-52 overflow-y-scroll scrollbar-hidden text-sm mt-2.5", children: _jsx(LineBreaks, { texts: comment }) })] }) })] })] })] }));
101
- }
102
- export default forwardRef(ProgressReport);
103
- function predict(score, birthday) {
104
- const ln = Number(birthday.slice(-1));
105
- const weight = score + ln;
106
- const result = () => {
107
- if (weight > 90)
108
- return weight + 1;
109
- if (weight > 80)
110
- return weight + 2;
111
- if (weight > 70)
112
- return weight + 3;
113
- if (weight > 60)
114
- return weight + 4;
115
- if (weight > 50)
116
- return weight + 5;
117
- if (weight > 40)
118
- return weight + 6;
119
- return weight + 7;
120
- };
121
- if (result() > 100)
122
- return 100;
123
- return result();
124
- }
@@ -1,8 +0,0 @@
1
- import Layout from "./Layout";
2
- declare const MonthlyProgressReport: {
3
- Report: import("react").ForwardRefExoticComponent<{
4
- props: import("./Report").ProgressReportProps;
5
- } & import("react").RefAttributes<HTMLDivElement>>;
6
- Layout: typeof Layout;
7
- };
8
- export default MonthlyProgressReport;
@@ -1,7 +0,0 @@
1
- import Layout from "./Layout";
2
- import Report from "./Report";
3
- const MonthlyProgressReport = {
4
- Report,
5
- Layout,
6
- };
7
- export default MonthlyProgressReport;
@@ -1 +0,0 @@
1
- export default function Banner(): import("react/jsx-runtime").JSX.Element;
@@ -1,31 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn } from "../../../util";
3
- export default function Banner() {
4
- const container = {
5
- sizes: "w-full h-screen",
6
- displays: "flex justify-center items-center",
7
- spacings: "px-5",
8
- textstyles: "antialiased",
9
- backgrounds: "bg-[url('/images/olympiad/img-oly-bg-a.png')] bg-cover bg-center",
10
- };
11
- const explainer = {
12
- textstyles: "text-xl md:text-2xl font-pretendard-medium text-gray-light mix-blend-difference sm:text-green-dark sm:mix-blend-normal",
13
- };
14
- const brandTextCore = {
15
- textstyles: "text-7xl md:text-8xl font-pretendard-bold text-green-dark leading-none mt-6 mix-blend-plus-darker",
16
- animations: "duration-300",
17
- };
18
- const brandTextSub = {
19
- textstyles: "text-2xl md:text-3xl font-pretendard-bold text-green-dark",
20
- animations: "duration-300",
21
- };
22
- const AdvertButton = {
23
- sizes: "h-fit w-full xxxs:w-fit rounded-lg",
24
- backgrounds: "bg-green-light",
25
- textstyles: "text-lg text-green-dark font-pretendard-medium text-center",
26
- spacings: "px-3 py-2 mt-30 xxxs:mt-16",
27
- hoveractions: "hover:bg-green-dark hover:text-white",
28
- animations: "duration-300",
29
- };
30
- return (_jsx("div", { className: cn(container), children: _jsxs("div", { className: "flex flex-col w-full justify-start max-w-6xl", children: [_jsxs("div", { className: cn(explainer), children: ["\uD559\uC0DD\uC774\uB77C\uBA74, ", _jsx("br", {}), "\uC804\uAD6D \uC5B4\uB514\uC5D0\uC11C\uB098 \uCC38\uC5EC \uAC00\uB2A5\uD55C"] }), _jsx("div", { className: cn(brandTextCore), children: "VOCA" }), _jsx("div", { className: cn(brandTextSub), children: "\uC62C\uB9BC\uD53C\uC544\uB4DC" }), _jsx("a", { href: "https://olympiad.tosel.co.kr/dashboard", className: cn(AdvertButton), children: "\uC9C0\uAE08 \uC811\uC218\uD558\uAE30" })] }) }));
31
- }
@@ -1 +0,0 @@
1
- export default function Conditions(): import("react/jsx-runtime").JSX.Element;
@@ -1,168 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useRef } from "react";
3
- import { cn } from "../../../util";
4
- import { getMaxBday } from "../../../util/getMaxBday";
5
- export default function Conditions() {
6
- const scrollContainerRef = useRef(null);
7
- const cardWidth = 400; // card width
8
- const handleScroll = (direction) => {
9
- if (scrollContainerRef.current) {
10
- const scrollAmount = cardWidth;
11
- const currentScrollLeft = scrollContainerRef.current.scrollLeft;
12
- const newScrollLeft = direction === "left"
13
- ? Math.max(currentScrollLeft - scrollAmount, 0)
14
- : currentScrollLeft + scrollAmount;
15
- scrollContainerRef.current.scrollTo({
16
- left: newScrollLeft,
17
- behavior: "smooth",
18
- });
19
- }
20
- };
21
- const container = {
22
- positions: "relative z-10 group mt-10 md:mt-20 mb-16 md:mb-40",
23
- displays: "flex flex-col",
24
- textstyles: "break-keep antialiased font-pretendard-var",
25
- };
26
- const deckTitlePositioning = {
27
- displays: "flex flex-col justify-center items-center",
28
- sizes: "w-full",
29
- };
30
- const deckTitle = {
31
- textstyles: "text-xl text-center text-green-dark font-pretendard-bold md:text-2xl",
32
- animations: "duration-300",
33
- };
34
- const subTitle = {
35
- textstyles: "text-xs sm:text-sm md:text-base font-pretendard-medium text-green-dark",
36
- animations: "duration-300",
37
- spacings: "mb-10",
38
- };
39
- const cardPositioning = {
40
- displays: "flex flex-nowrap",
41
- sizes: "w-full",
42
- };
43
- const cardWrapper = {
44
- sizes: "w-full overflow-x-auto scroll-smooth scrollbar-hidden scroll-px-4",
45
- display: "flex flex-nowrap vertical-top",
46
- spacings: "px-5 pt-4 md:pt-6 pb-12",
47
- snap: "snap-x snap-mandatory scroll-ms-0",
48
- };
49
- //adjust the responsive right margin of scroller
50
- const cardDeck = {
51
- displays: "inline-flex",
52
- spacings: "gap-5 ml:mr-[calc(100vw-1200px)]",
53
- };
54
- const buttonPositioning = {
55
- displays: "hidden flex-row md:flex",
56
- sizes: "w-full h-full",
57
- spacings: "px-2",
58
- positions: "absolute top-0 left-0 justify-between items-center opacity-0 group-hover:opacity-100 duration-300",
59
- hovering: "group pointer-events-none",
60
- };
61
- const hoverButton = {
62
- sizes: "rounded-full w-12 h-12 scale-50 group-hover:scale-100",
63
- animation: "duration-300 ",
64
- test: "bg-gray-medium/20 hover:bg-gray-medium/50 pointer-events-auto backdrop-blur-sm fill-red-500",
65
- };
66
- return (_jsxs("div", { className: cn(container), children: [_jsxs("div", { className: cn(deckTitlePositioning), children: [_jsx("div", { className: cn(deckTitle), children: "\uC5F0\uB839\uBCC4 \uCC38\uAC00\uAE30\uC900" }), _jsx("div", { className: cn(subTitle), children: "\uD559\uC0DD\uC774\uB77C\uBA74, \uB204\uAD6C\uB098 \uCC38\uAC00\uD560 \uC218 \uC788\uC5B4\uC694" }), _jsx("div", { className: "h-0.5 w-1/4 mb-8 bg-green-dark rounded-lg" })] }), _jsx("div", { className: cn(cardPositioning), children: _jsx("div", { className: cn(cardWrapper), ref: scrollContainerRef, children: _jsx("div", { className: cn(cardDeck), children: Object.entries(levelStyles).map(([key, { name, description, maxBday, majorColor, imgSrc }]) => (_jsx(LevelCard, { name: name, description: description, maxBday: maxBday, majorColor: majorColor, imgSrc: imgSrc }, key))) }) }) }), _jsxs("div", { className: cn(buttonPositioning), children: [_jsx("div", { className: cn(hoverButton), onClick: () => handleScroll("left"), children: _jsx("img", { src: "images/home/handle-left.svg", alt: "" }) }), _jsx("div", { className: cn(hoverButton), onClick: () => handleScroll("right"), children: _jsx("img", { src: "images/home/handle-right.svg", alt: "" }) })] })] }));
67
- }
68
- const levelStyles = {
69
- PS: {
70
- name: "Pre-Starter",
71
- description: "초등학교 2학년까지 참가 가능",
72
- maxBday: getMaxBday().PS,
73
- majorColor: "text-ps-pink",
74
- imgSrc: "/images/olympiad/img-oly-book-ps.png",
75
- },
76
- ST: {
77
- name: "Starter",
78
- description: "초등학교 4학년까지 참가 가능",
79
- maxBday: getMaxBday().ST,
80
- majorColor: "text-st-orange",
81
- imgSrc: "/images/olympiad/img-oly-book-st.png",
82
- },
83
- BA: {
84
- name: "Basic",
85
- description: "초등학교 6학년까지 참가 가능",
86
- maxBday: getMaxBday().BA,
87
- majorColor: "text-ba-yellow",
88
- imgSrc: "/images/olympiad/img-oly-book-ba.png",
89
- },
90
- JR: {
91
- name: "Junior",
92
- description: "중학교 3학년까지 참가 가능",
93
- maxBday: getMaxBday().JR,
94
- majorColor: "text-jr-blue",
95
- imgSrc: "/images/olympiad/img-oly-book-jr.png",
96
- },
97
- HJ: {
98
- name: "High Junior",
99
- description: "고등학교 3학년까지 참가 가능",
100
- maxBday: getMaxBday().HJ,
101
- majorColor: "text-hj-blue",
102
- imgSrc: "/images/olympiad/img-oly-book-hj.png",
103
- },
104
- };
105
- const LevelCard = ({ name, description, maxBday, majorColor, imgSrc, }) => {
106
- const ghostCard = {
107
- displays: "flex",
108
- spacings: "ms-0 ps-0 ",
109
- scroll: "snap-start",
110
- };
111
- //adjust the responsive left margin of scroller
112
- //adjust the card size
113
- const card = {
114
- graphics: "shadow-main group/book",
115
- sizes: "h-100 w-65 xxxs:w-76 md:w-100 md:h-125 rounded-xl md:rounded-2xl",
116
- hover: "hover:shadow-main-hover hover:scale-[1.03]",
117
- position: "ml:translate-x-[calc(50vw-600px)]",
118
- transition: "duration-300",
119
- displays: "relative display-block overflow-hidden",
120
- fonts: "font-pretendard-var",
121
- // styling varies by level
122
- // colors: majorColor ? "hover:bg-" + majorColor + "/10" : "hover:bg-white",
123
- };
124
- const imageWrapper = {
125
- sizes: "w-full h-full p-10",
126
- displays: "absolute flex justify-center items-center",
127
- positions: "bottom-0 left-0",
128
- background: "bg-[#f6f6f6]",
129
- };
130
- // const bookTagWrapper = {
131
- // sizes: "w-full h-full p-10",
132
- // displays: "absolute flex justify-center items-center",
133
- // positions: "bottom-0 left-0",
134
- // clickEvent: "pointer-events-auto",
135
- // };
136
- // const bookTag = {
137
- // sizes: "w-fit h-fit rounded-md",
138
- // spacings: "py-1 px-2",
139
- // textStyles: "font-medium text-white",
140
- // background: "bg-green-dark",
141
- // opacity: "opacity-0 group-hover/book:opacity-100",
142
- // animation: "duration-300",
143
- // };
144
- const contentsWrapper = {
145
- sizes: "w-full h-full",
146
- displays: "relative flex flex-col gap-4 justify-between items-start",
147
- spacings: "p-4 md:p-8",
148
- };
149
- const titleWrapper = {
150
- displays: "flex flex-col justify-center items-center gap-0",
151
- sizes: "w-full",
152
- };
153
- const title = {
154
- textStyles: "text-lg font-bold",
155
- textColor: majorColor ?? "text-gray-dark",
156
- sizes: "w-fit h-fit rounded-md",
157
- spacings: "py-1 px-2",
158
- };
159
- const subtitle = {
160
- textStyles: "text-sm font-medium",
161
- textColor: "text-gray-medium",
162
- };
163
- const dateText = {
164
- textStyles: "text-sm font-medium md:text-base",
165
- textColor: "text-gray-dark",
166
- };
167
- return (_jsx("div", { className: cn(ghostCard), children: _jsxs("div", { className: cn(card), children: [_jsx("div", { className: cn(imageWrapper), children: _jsx("div", { style: { backgroundImage: imgSrc ? `url(${imgSrc})` : undefined }, className: "w-full h-70 bg-cover bg-center" }) }), _jsxs("div", { className: cn(contentsWrapper), children: [_jsxs("div", { className: cn(titleWrapper), children: [_jsx("div", { className: cn(title), children: name }), _jsx("div", { className: cn(subtitle), children: description })] }), _jsxs("div", { className: cn(dateText), children: [maxBday, "\uC0DD \uC774\uC804\uBD80\uD130 ", _jsx("br", {}), " \uCC38\uC5EC\uD560 \uC218 \uC788\uC5B4\uC694"] })] })] }) }));
168
- };
@@ -1 +0,0 @@
1
- export default function Features(): import("react/jsx-runtime").JSX.Element;
@@ -1,44 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn } from "../../../util";
3
- export default function Features() {
4
- const container = {
5
- sizes: "w-full h-fit",
6
- spacings: "p-5 my-20 lg:my-40",
7
- displays: "flex flex-col justify-center items-center",
8
- graphics: "antialiased",
9
- text: "break-keep",
10
- };
11
- const boxWrapper = {
12
- sizes: "w-full h-fit",
13
- displays: "flex flex-col items-center md:flex-row md:items-start md:justify-center md:max-w-6xl",
14
- spacings: "gap-8",
15
- animations: "duration-300",
16
- };
17
- const sectiontitle = {
18
- textstyles: "text-xl text-center text-green-dark mb-10 font-pretendard-bold md:text-2xl",
19
- animations: "duration-300",
20
- };
21
- // styling of feature box components
22
- const featureBox = {
23
- sizes: "w-full h-fit max-w-md",
24
- displays: "flex flex-col items-center md:grow",
25
- spacings: "py-4",
26
- animations: "duration-300 hover:scale-105",
27
- };
28
- const boxTitle = {
29
- textstyles: "font-pretendard-bold text-lg text-center text-green-dark my-4 md:text-xl",
30
- animations: "duration-300",
31
- };
32
- const boxSubTitle = {
33
- textstyles: "font-pretendard-medium text-base text-center text-green-dark mt-6",
34
- animations: "duration-300",
35
- };
36
- // common svg attributes
37
- const svgAttributes = {
38
- xmlns: "http://www.w3.org/2000/svg",
39
- fill: "none",
40
- viewBox: "0 0 24 24",
41
- className: "size-6 xxs:size-8 xs:size-10 fill-green-dark",
42
- };
43
- return (_jsxs("div", { className: cn(container), children: [_jsx("div", { className: cn(sectiontitle), children: "\uC804\uAD6D \uB2E8\uC704 \uC62C\uB9BC\uD53C\uC544\uB4DC, \uC9D1\uC5D0\uC11C \uAC04\uD3B8\uD558\uAC8C \uB3C4\uC804\uD558\uC138\uC694." }), _jsx("div", { className: "h-0.5 w-1/4 mb-8 bg-green-dark rounded-lg" }), _jsxs("div", { className: cn(boxWrapper), children: [_jsxs("div", { className: cn(featureBox), children: [_jsxs("svg", { ...svgAttributes, children: [_jsx("path", { d: "M11.47 3.841a.75.75 0 0 1 1.06 0l8.69 8.69a.75.75 0 1 0 1.06-1.061l-8.689-8.69a2.25 2.25 0 0 0-3.182 0l-8.69 8.69a.75.75 0 1 0 1.061 1.06l8.69-8.689Z" }), _jsx("path", { d: "m12 5.432 8.159 8.159c.03.03.06.058.091.086v6.198c0 1.035-.84 1.875-1.875 1.875H15a.75.75 0 0 1-.75-.75v-4.5a.75.75 0 0 0-.75-.75h-3a.75.75 0 0 0-.75.75V21a.75.75 0 0 1-.75.75H5.625a1.875 1.875 0 0 1-1.875-1.875v-6.198a2.29 2.29 0 0 0 .091-.086L12 5.432Z" })] }), _jsx("div", { className: cn(boxTitle), children: "\uC9D1\uC5D0\uC11C \uD3B8\uB9AC\uD558\uAC8C \uC751\uC2DC" }), _jsx("img", { src: "images/olympiad/img-oly-b1.png", alt: "\uCEF4\uD4E8\uD130\uB85C \uBB38\uC81C\uB97C \uD478\uB294 \uC5EC\uC131" }), _jsx("div", { className: cn(boxSubTitle), children: "\uC5B4\uB514\uC11C\uB098 \uC628\uB77C\uC778 \uBE0C\uB77C\uC6B0\uC800 \uC2DC\uD5D8 \uC751\uC2DC\uAC00 \uAC00\uB2A5\uD569\uB2C8\uB2E4." })] }), _jsxs("div", { className: cn(featureBox), children: [_jsx("svg", { ...svgAttributes, children: _jsx("path", { "fill-rule": "evenodd", d: "M5.166 2.621v.858c-1.035.148-2.059.33-3.071.543a.75.75 0 0 0-.584.859 6.753 6.753 0 0 0 6.138 5.6 6.73 6.73 0 0 0 2.743 1.346A6.707 6.707 0 0 1 9.279 15H8.54c-1.036 0-1.875.84-1.875 1.875V19.5h-.75a2.25 2.25 0 0 0-2.25 2.25c0 .414.336.75.75.75h15a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-2.25-2.25h-.75v-2.625c0-1.036-.84-1.875-1.875-1.875h-.739a6.706 6.706 0 0 1-1.112-3.173 6.73 6.73 0 0 0 2.743-1.347 6.753 6.753 0 0 0 6.139-5.6.75.75 0 0 0-.585-.858 47.077 47.077 0 0 0-3.07-.543V2.62a.75.75 0 0 0-.658-.744 49.22 49.22 0 0 0-6.093-.377c-2.063 0-4.096.128-6.093.377a.75.75 0 0 0-.657.744Zm0 2.629c0 1.196.312 2.32.857 3.294A5.266 5.266 0 0 1 3.16 5.337a45.6 45.6 0 0 1 2.006-.343v.256Zm13.5 0v-.256c.674.1 1.343.214 2.006.343a5.265 5.265 0 0 1-2.863 3.207 6.72 6.72 0 0 0 .857-3.294Z", "clip-rule": "evenodd" }) }), _jsx("div", { className: cn(boxTitle), children: "\uAD6D\uB0B4 \uC720\uC77C\uC758 \uC218\uC0C1\uD61C\uD0DD" }), _jsx("img", { src: "images/olympiad/img-oly-b2.png", alt: "\uD2B8\uB85C\uD53C\uB97C \uB4E4\uACE0 \uC88B\uC544\uD558\uB294 \uC0AC\uB78C" }), _jsx("div", { className: cn(boxSubTitle), children: "\uB300\uD68C \uC6B0\uC2B9\uC790\uC5D0\uAC8C\uB294 \uACE0\uB824\uB300\uD559\uAD50 \uAE30\uAD00\uC7A5\uC0C1\uC774 \uC218\uC5EC\uB429\uB2C8\uB2E4." })] }), _jsxs("div", { className: cn(featureBox), children: [_jsx("svg", { ...svgAttributes, children: _jsx("path", { "fill-rule": "evenodd", d: "M8.603 3.799A4.49 4.49 0 0 1 12 2.25c1.357 0 2.573.6 3.397 1.549a4.49 4.49 0 0 1 3.498 1.307 4.491 4.491 0 0 1 1.307 3.497A4.49 4.49 0 0 1 21.75 12a4.49 4.49 0 0 1-1.549 3.397 4.491 4.491 0 0 1-1.307 3.497 4.491 4.491 0 0 1-3.497 1.307A4.49 4.49 0 0 1 12 21.75a4.49 4.49 0 0 1-3.397-1.549 4.49 4.49 0 0 1-3.498-1.306 4.491 4.491 0 0 1-1.307-3.498A4.49 4.49 0 0 1 2.25 12c0-1.357.6-2.573 1.549-3.397a4.49 4.49 0 0 1 1.307-3.497 4.49 4.49 0 0 1 3.497-1.307Zm7.007 6.387a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z", "clip-rule": "evenodd" }) }), _jsx("div", { className: cn(boxTitle), children: "\uAC04\uD3B8\uD55C \uACB0\uACFC \uD655\uC778" }), _jsx("img", { src: "images/olympiad/img-oly-b3.png", alt: "\uD2B8\uB85C\uD53C\uB97C \uB4E4\uACE0 \uC88B\uC544\uD558\uB294 \uC0AC\uB78C" }), _jsx("div", { className: cn(boxSubTitle), children: "\uB300\uC2DC\uBCF4\uB4DC\uC5D0\uC11C \uC218\uC0C1\uC5EC\uBD80\uB97C \uAC04\uD3B8\uD558\uAC8C \uD655\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4." })] })] })] }));
44
- }
@@ -1 +0,0 @@
1
- export default function OlympiadLayout(): import("react/jsx-runtime").JSX.Element;
@@ -1,19 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useRef } from "react";
3
- import { Olympiad } from "../../../layout";
4
- import { cn } from "../../../util";
5
- export default function OlympiadLayout() {
6
- const ref = useRef(null);
7
- const container = {
8
- sizes: "min-h-screen w-full",
9
- textoptions: "break-keep",
10
- cursor: "cursor-default",
11
- // test: "border-4 border-red-500",
12
- };
13
- // const { scroll } = useScroll();
14
- // const a = useSmoothScroll(800);
15
- // useEffect(() => {
16
- // console.log(scroll);
17
- // }, [scroll]);
18
- return (_jsxs("div", { className: cn(container), children: [_jsx(Olympiad.Banner, {}), _jsx(Olympiad.Sponsors, {}), _jsx(Olympiad.Features, {}), _jsx(Olympiad.Prizes, {}), _jsx(Olympiad.Conditions, {}), _jsx(Olympiad.Videoset, {})] }));
19
- }
@@ -1 +0,0 @@
1
- export default function Prizes(): import("react/jsx-runtime").JSX.Element;
@@ -1,49 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn } from "../../../util";
3
- export default function Prizes() {
4
- const container = {
5
- sizes: "relative w-full h-fit",
6
- spacings: "py-20",
7
- displays: "flex flex-col justify-start items-center",
8
- backgrounds: "bg-green-light",
9
- graphics: "antialiased",
10
- text: "break-keep",
11
- };
12
- //section title breaking control in reactive viewport
13
- const sectionTitleBreaker = {
14
- displays: "flex flex-col xs:flex-row xs:justify-center xs:gap-1",
15
- sizes: "h-fit w-full",
16
- };
17
- const sectionTitle = {
18
- textstyles: "text-xl text-center text-green-dark font-pretendard-bold md:text-2xl",
19
- sizes: "h-fit",
20
- };
21
- //controls prizeSet reactive position
22
- const prizeWrapper = {
23
- sizes: "max-w-6xl w-full",
24
- displays: "flex flex-row items-center justify-center md:justify-start",
25
- };
26
- const prizeSet = {
27
- displays: "left-0 bottom-0 flex flex-col",
28
- };
29
- //controls medalholdingimga reactive position
30
- const medalHandler = {
31
- displays: "hidden md:absolute md:block md:max-w-160 right-0 z-0",
32
- };
33
- //text styling of prize detail
34
- const prizeExplainWrapper = {
35
- displays: "flex flex-col gap-2 items-center justify-center",
36
- spacings: "mt-8",
37
- };
38
- const prizeExplainSet = {
39
- displays: "flex flex-row gap-4 items-center justify-center",
40
- textstyles: "text-green-dark text-sm md:text-lg",
41
- };
42
- const prizeTitle = {
43
- textstyles: "font-pretendard-bold",
44
- };
45
- const prizeDetail = {
46
- textstyles: "font-pretendard-medium",
47
- };
48
- return (_jsxs("div", { className: cn(container), children: [_jsx("div", { className: cn(medalHandler), children: _jsx("img", { src: "images/olympiad/img-oly-prize-medal.png", alt: "" }) }), _jsxs("div", { className: cn(sectionTitleBreaker), children: [_jsx("div", { className: cn(sectionTitle), children: "\uACE0\uB824\uB300\uD559\uAD50 \uAE30\uAD00\uC7A5\uC0C1\uC744" }), _jsx("div", { className: cn(sectionTitle), children: "\uC218\uC0C1\uD560 \uC218 \uC788\uB294 \uAE30\uD68C" })] }), _jsx("div", { className: "h-0.5 w-1/4 my-10 bg-green-dark rounded-lg" }), _jsx("div", { className: cn(prizeWrapper), children: _jsxs("div", { className: cn(prizeSet), children: [_jsx("div", { className: "px-8 max-w-lg flex flex-col md:max-w-2xl", children: _jsx("img", { src: "images/olympiad/img-oly-prize-certificate.png", alt: "\uCEF4\uD4E8\uD130\uB85C \uBB38\uC81C\uB97C \uD478\uB294 \uC5EC\uC131", className: "rounded-xl overflow-hidden shadow-main hover:shadow-main-hover duration-300 hover:scale-105" }) }), _jsxs("div", { className: cn(prizeExplainWrapper), children: [_jsxs("div", { className: cn(prizeExplainSet), children: [_jsx("div", { className: cn(prizeTitle), children: "\uB300\uC0C1" }), _jsx("div", { className: cn(prizeDetail), children: "\uACE0\uB824\uB300\uD559\uAD50 \uACBD\uC601\uB300\uD559 \uD559\uC7A5\uC0C1" })] }), _jsxs("div", { className: cn(prizeExplainSet), children: [_jsx("div", { className: cn(prizeTitle), children: "\uAE08\uC0C1/\uC740\uC0C1/\uB3D9\uC0C1" }), _jsx("div", { className: cn(prizeDetail), children: "\uACE0\uB824\uB300\uD559\uAD50 \uC5B8\uC5B4\uC815\uBCF4\uC5F0\uAD6C\uC18C \uC18C\uC7A5\uC0C1" })] }), _jsxs("div", { className: cn(prizeExplainSet), children: [_jsx("div", { className: cn(prizeTitle), children: "\uC7A5\uB824\uC0C1" }), _jsx("div", { className: cn(prizeDetail), children: "\uACE0\uB824\uB300\uD559\uAD50 \uAD6D\uC81C\uD1A0\uC140\uC704\uC6D0\uD68C \uC704\uC6D0\uC7A5\uC0C1" })] })] })] }) })] }));
49
- }
@@ -1 +0,0 @@
1
- export default function Sponsors(): import("react/jsx-runtime").JSX.Element;
@@ -1,31 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn } from "../../../util";
3
- export default function Sponsors() {
4
- const container = {
5
- sizes: "w-full h-fit",
6
- spacings: "px-5 pt-10 pb-6",
7
- displays: "flex flex-col justify-center items-center",
8
- backgrounds: "bg-gradient-to-r from-green-dark to-crimson-dark",
9
- graphics: "antialiased",
10
- text: "break-keep",
11
- };
12
- const logoWrapper = {
13
- disaplys: "flex flex-col justify-center items-center xs:flex-row",
14
- spacings: "gap-8",
15
- };
16
- // styling of single logo set
17
- const logoSet = {
18
- displays: "flex flex-col justify-center items-center lg:flex-row",
19
- };
20
- const tag = {
21
- sizes: "w-fit h-fit rounded-md",
22
- spacings: "py-0.25 px-2",
23
- backgrounds: "bg-white",
24
- textstyles: "font-pretendard-bold text-sm text-crimson-dark",
25
- };
26
- const imgStyle = {
27
- sizes: "max-h-20",
28
- backgrounds: "bg-cover",
29
- };
30
- return (_jsx("div", { className: cn(container), children: _jsxs("div", { className: cn(logoWrapper), children: [_jsxs("div", { className: cn(logoSet), children: [_jsx("div", { className: cn(tag), children: "\uC8FC\uCD5C" }), _jsx("img", { src: "images/olympiad/img-oly-logo-1.png", alt: "\uD1A0\uC140\uB85C\uACE0", className: cn(imgStyle) })] }), _jsxs("div", { className: cn(logoSet), children: [_jsx("div", { className: cn(tag), children: "\uC8FC\uAD00" }), _jsx("img", { src: "images/olympiad/img-oly-logo-2.png", alt: "\uACE0\uB824\uB300\uD559\uAD50 \uC5B8\uC5B4\uC815\uBCF4\uC5F0\uAD6C\uC18C \uB85C\uACE0", className: cn(imgStyle) })] }), _jsxs("div", { className: cn(logoSet), children: [_jsx("div", { className: cn(tag), children: "\uD6C4\uC6D0" }), _jsx("img", { src: "images/olympiad/img-oly-logo-3.png", alt: "\uACE0\uB824\uB300\uD559\uAD50 \uC5B8\uC5B4\uC815\uBCF4\uC5F0\uAD6C\uC18C \uB85C\uACE0", className: cn(imgStyle) })] })] }) }));
31
- }
@@ -1 +0,0 @@
1
- export default function Videoset(): import("react/jsx-runtime").JSX.Element;
@@ -1,71 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn } from "../../../util";
3
- import YouTubePlayer from "react-youtube";
4
- export default function Videoset() {
5
- //iframe related controls
6
- const iframeControl = {
7
- ratio: "aspect-video",
8
- sizes: "w-full h-full",
9
- };
10
- // youtube realated options
11
- const ytplayOption = {
12
- iframeClassName: cn(iframeControl),
13
- videoId: "exHlXrjPm7U",
14
- opts: {},
15
- };
16
- // video container
17
- const videoBox = {
18
- sizes: "w-full max-w-5xl h-fit rounded-xl overflow-hidden",
19
- };
20
- // normal HTML styling
21
- const container = {
22
- sizes: "w-full h-fit",
23
- spacings: "py-20",
24
- backgrounds: "bg-gradient-to-r from-green-dark to-crimson-dark",
25
- displays: "flex flex-col justify-center items-center",
26
- graphics: "antialiased",
27
- };
28
- const subContainerA = {
29
- sizes: "w-full h-fit",
30
- displays: "flex flex-col justify-center items-center",
31
- spacings: "px-5",
32
- };
33
- const subContainerB = {
34
- sizes: "w-full h-fit",
35
- displays: "flex flex-col justify-center items-center",
36
- spacings: "mt-20",
37
- };
38
- const subTitle = {
39
- textstyles: "text-xs sm:text-sm md:text-base font-pretendard-medium text-white",
40
- animations: "duration-300",
41
- };
42
- const sectionTitle = {
43
- textstyles: "text-xl text-center text-white font-pretendard-bold md:text-2xl",
44
- animations: "duration-300",
45
- };
46
- // controls reactive video component action
47
- const videoWrapper = {
48
- sizes: "flex flex-col justify-center items-center h-fit w-full",
49
- };
50
- //
51
- const iconSetWrapper = {
52
- displays: "flex flex-col flex-nowrap justify-start items-start xxs:items-center xxs:justify-center md:flex-wrap md:flex-row md:justify-center md:items-center",
53
- spacings: "gap-4 xxs:gap-6 md:gap-12",
54
- sizes: "max-w-6xl",
55
- };
56
- const iconSet = {
57
- displays: "flex flex-row flex-1 gap-4 justify-center items-center",
58
- sizes: "min-w-72",
59
- };
60
- const iconText = {
61
- textstyles: "font-pretendard-medium text-white text-base md:text-lg",
62
- };
63
- // common svg attributes
64
- const svgAttributes = {
65
- xmlns: "http://www.w3.org/2000/svg",
66
- fill: "none",
67
- viewBox: "0 0 24 24",
68
- className: "w-6 fill-white xs:w-8 md:w-12",
69
- };
70
- return (_jsxs("div", { className: cn(container), children: [_jsxs("div", { className: cn(subContainerA), children: [_jsx("div", { className: cn(sectionTitle), children: "\uC62C\uB9BC\uD53C\uC544\uB4DC \uC751\uC2DC \uBC29\uBC95" }), _jsx("div", { className: cn(subTitle), children: "\uD29C\uD1A0\uB9AC\uC5BC\uC744 \uD655\uC778\uD574\uBCF4\uC138\uC694" }), _jsx("div", { className: "h-0.5 w-1/4 my-8 bg-white rounded-lg justify-center" }), _jsx("div", { className: cn(videoWrapper), children: _jsx("div", { className: cn(videoBox), children: _jsx(YouTubePlayer, { ...ytplayOption }) }) })] }), _jsxs("div", { className: "flex flex-row justify-center items-center gap-2 bg-white rounded-md px-2 py-1 mt-8", children: [_jsx("div", { children: _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", "stroke-width": "1.5", className: "size-6 stroke-green-dark", children: _jsx("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "M3.375 19.5h17.25m-17.25 0a1.125 1.125 0 0 1-1.125-1.125M3.375 19.5h1.5C5.496 19.5 6 18.996 6 18.375m-3.75 0V5.625m0 12.75v-1.5c0-.621.504-1.125 1.125-1.125m18.375 2.625V5.625m0 12.75c0 .621-.504 1.125-1.125 1.125m1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125m0 3.75h-1.5A1.125 1.125 0 0 1 18 18.375M20.625 4.5H3.375m17.25 0c.621 0 1.125.504 1.125 1.125M20.625 4.5h-1.5C18.504 4.5 18 5.004 18 5.625m3.75 0v1.5c0 .621-.504 1.125-1.125 1.125M3.375 4.5c-.621 0-1.125.504-1.125 1.125M3.375 4.5h1.5C5.496 4.5 6 5.004 6 5.625m-3.75 0v1.5c0 .621.504 1.125 1.125 1.125m0 0h1.5m-1.5 0c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125m1.5-3.75C5.496 8.25 6 7.746 6 7.125v-1.5M4.875 8.25C5.496 8.25 6 8.754 6 9.375v1.5m0-5.25v5.25m0-5.25C6 5.004 6.504 4.5 7.125 4.5h9.75c.621 0 1.125.504 1.125 1.125m1.125 2.625h1.5m-1.5 0A1.125 1.125 0 0 1 18 7.125v-1.5m1.125 2.625c-.621 0-1.125.504-1.125 1.125v1.5m2.625-2.625c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125M18 5.625v5.25M7.125 12h9.75m-9.75 0A1.125 1.125 0 0 1 6 10.875M7.125 12C6.504 12 6 12.504 6 13.125m0-2.25C6 11.496 5.496 12 4.875 12M18 10.875c0 .621-.504 1.125-1.125 1.125M18 10.875c0 .621.504 1.125 1.125 1.125m-2.25 0c.621 0 1.125.504 1.125 1.125m-12 5.25v-5.25m0 5.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125m-12 0v-1.5c0-.621-.504-1.125-1.125-1.125M18 18.375v-5.25m0 5.25v-1.5c0-.621.504-1.125 1.125-1.125M18 13.125v1.5c0 .621.504 1.125 1.125 1.125M18 13.125c0-.621.504-1.125 1.125-1.125M6 13.125v1.5c0 .621-.504 1.125-1.125 1.125M6 13.125C6 12.504 5.496 12 4.875 12m-1.5 0h1.5m-1.5 0c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125M19.125 12h1.5m0 0c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125m-17.25 0h1.5m14.25 0h1.5" }) }) }), _jsx("div", { className: "text-green-dark font-pretendard-medium text-base", children: "\uD29C\uD1A0\uB9AC\uC5BC \uC601\uC0C1" })] }), _jsxs("div", { className: cn(subContainerB), children: [_jsx("div", { className: cn(sectionTitle), children: "\uC774\uB7F0 \uD589\uB3D9\uC740 \uC870\uC2EC\uD574\uC57C \uD574\uC694" }), _jsx("div", { className: cn(subTitle), children: "\uBD80\uC815\uD589\uC704\uB294 \uC2DC\uD5D8 \uC751\uC2DC \uD6C4 \uAC10\uB3C5\uAD00\uC774 \uAC80\uD1A0\uD560 \uC608\uC815\uC774\uC5D0\uC694" }), _jsx("div", { className: "h-0.5 w-1/4 my-8 bg-white rounded-lg justify-center" }), _jsx("div", { className: "flex w-full h-fit bg-white/20 p-5 xxs:p-12 md:p-20 lg:p-40 justify-center", children: _jsxs("div", { className: cn(iconSetWrapper), children: [_jsxs("div", { className: cn(iconSet), children: [_jsx("svg", { ...svgAttributes, children: _jsx("path", { d: "M13.5 4.06c0-1.336-1.616-2.005-2.56-1.06l-4.5 4.5H4.508c-1.141 0-2.318.664-2.66 1.905A9.76 9.76 0 0 0 1.5 12c0 .898.121 1.768.35 2.595.341 1.24 1.518 1.905 2.659 1.905h1.93l4.5 4.5c.945.945 2.561.276 2.561-1.06V4.06ZM17.78 9.22a.75.75 0 1 0-1.06 1.06L18.44 12l-1.72 1.72a.75.75 0 1 0 1.06 1.06l1.72-1.72 1.72 1.72a.75.75 0 1 0 1.06-1.06L20.56 12l1.72-1.72a.75.75 0 1 0-1.06-1.06l-1.72 1.72-1.72-1.72Z" }) }), _jsx("div", { className: cn(iconText), children: "\uD5E4\uB4DC\uD3F0\uC774\uB098 \uC774\uC5B4\uD3F0\uC744 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC5B4\uC694." })] }), _jsxs("div", { className: cn(iconSet), children: [_jsx("svg", { ...svgAttributes, children: _jsx("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125" }) }), _jsx("div", { className: cn(iconText), children: "\uC885\uC774\uC640 \uD544\uAE30\uAD6C\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC5B4\uC694." })] }), _jsxs("div", { className: cn(iconSet), children: [_jsx("svg", { ...svgAttributes, children: _jsx("path", { "fill-rule": "evenodd", d: "M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25Zm-2.625 6c-.54 0-.828.419-.936.634a1.96 1.96 0 0 0-.189.866c0 .298.059.605.189.866.108.215.395.634.936.634.54 0 .828-.419.936-.634.13-.26.189-.568.189-.866 0-.298-.059-.605-.189-.866-.108-.215-.395-.634-.936-.634Zm4.314.634c.108-.215.395-.634.936-.634.54 0 .828.419.936.634.13.26.189.568.189.866 0 .298-.059.605-.189.866-.108.215-.395.634-.936.634-.54 0-.828-.419-.936-.634a1.96 1.96 0 0 1-.189-.866c0-.298.059-.605.189-.866Zm2.023 6.828a.75.75 0 1 0-1.06-1.06 3.75 3.75 0 0 1-5.304 0 .75.75 0 0 0-1.06 1.06 5.25 5.25 0 0 0 7.424 0Z", "clip-rule": "evenodd" }) }), _jsx("div", { className: cn(iconText), children: "\uC5BC\uAD74\uACFC \uADC0\uAC00 \uAC00\uB824\uC9C0\uC9C0 \uC54A\uC544\uC57C \uD574\uC694." })] }), _jsxs("div", { className: cn(iconSet), children: [_jsx("svg", { ...svgAttributes, children: _jsx("path", { "fill-rule": "evenodd", d: "M2.25 6a3 3 0 0 1 3-3h13.5a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3V6Zm18 3H3.75v9a1.5 1.5 0 0 0 1.5 1.5h13.5a1.5 1.5 0 0 0 1.5-1.5V9Zm-15-3.75A.75.75 0 0 0 4.5 6v.008c0 .414.336.75.75.75h.008a.75.75 0 0 0 .75-.75V6a.75.75 0 0 0-.75-.75H5.25Zm1.5.75a.75.75 0 0 1 .75-.75h.008a.75.75 0 0 1 .75.75v.008a.75.75 0 0 1-.75.75H7.5a.75.75 0 0 1-.75-.75V6Zm3-.75A.75.75 0 0 0 9 6v.008c0 .414.336.75.75.75h.008a.75.75 0 0 0 .75-.75V6a.75.75 0 0 0-.75-.75H9.75Z", "clip-rule": "evenodd" }) }), _jsx("div", { className: cn(iconText), children: "\uC9C4\uD589\uC911\uC778 \uC2DC\uD5D8\uD654\uBA74\uC744 \uB5A0\uB098\uBA74 \uC548\uB3FC\uC694." })] }), _jsxs("div", { className: cn(iconSet), children: [_jsx("svg", { ...svgAttributes, children: _jsx("path", { d: "M4.5 4.5a3 3 0 0 0-3 3v9a3 3 0 0 0 3 3h8.25a3 3 0 0 0 3-3v-9a3 3 0 0 0-3-3H4.5ZM19.94 18.75l-2.69-2.69V7.94l2.69-2.69c.944-.945 2.56-.276 2.56 1.06v11.38c0 1.336-1.616 2.005-2.56 1.06Z" }) }), _jsx("div", { className: cn(iconText), children: "\uCE74\uBA54\uB77C, \uB9C8\uC774\uD06C\uAC00 \uCF1C\uC838\uC788\uC5B4\uC57C \uD574\uC694." })] }), _jsxs("div", { className: cn(iconSet), children: [_jsx("svg", { ...svgAttributes, children: _jsx("path", { "fill-rule": "evenodd", d: "M2.25 5.25a3 3 0 0 1 3-3h13.5a3 3 0 0 1 3 3V15a3 3 0 0 1-3 3h-3v.257c0 .597.237 1.17.659 1.591l.621.622a.75.75 0 0 1-.53 1.28h-9a.75.75 0 0 1-.53-1.28l.621-.622a2.25 2.25 0 0 0 .659-1.59V18h-3a3 3 0 0 1-3-3V5.25Zm1.5 0v7.5a1.5 1.5 0 0 0 1.5 1.5h13.5a1.5 1.5 0 0 0 1.5-1.5v-7.5a1.5 1.5 0 0 0-1.5-1.5H5.25a1.5 1.5 0 0 0-1.5 1.5Z", "clip-rule": "evenodd" }) }), _jsx("div", { className: cn(iconText), children: "\uB4C0\uC5BC \uBAA8\uB2C8\uD130\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC5B4\uC694" })] })] }) })] })] }));
71
- }
@@ -1,15 +0,0 @@
1
- import Banner from "./Banner";
2
- import Sponsors from "./Sponsors";
3
- import Features from "./Features";
4
- import Prizes from "./Prizes";
5
- import Videoset from "./Videoset";
6
- import Conditions from "./Conditions";
7
- declare const Olympiad: {
8
- Banner: typeof Banner;
9
- Sponsors: typeof Sponsors;
10
- Features: typeof Features;
11
- Prizes: typeof Prizes;
12
- Conditions: typeof Conditions;
13
- Videoset: typeof Videoset;
14
- };
15
- export default Olympiad;