@edu-tosel/design 1.0.46 → 1.0.48

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 (60) hide show
  1. package/README.md +42 -42
  2. package/asset/SVG.d.ts +13 -0
  3. package/asset/SVG.js +4 -0
  4. package/asset/SVG.tsx +27 -23
  5. package/asset/svg/Close.tsx +32 -32
  6. package/asset/svg/Direction.tsx +36 -36
  7. package/asset/svg/Email.tsx +20 -20
  8. package/asset/svg/Icon.d.ts +17 -0
  9. package/asset/svg/Icon.js +28 -0
  10. package/asset/svg/Icon.tsx +186 -0
  11. package/asset/svg/Image.tsx +24 -24
  12. package/asset/svg/Notification.tsx +34 -34
  13. package/asset/svg/Operation.tsx +66 -66
  14. package/asset/svg/Phone.tsx +20 -20
  15. package/asset/svg/Profile.tsx +27 -27
  16. package/asset/svg/Symbol.d.ts +12 -0
  17. package/asset/svg/Symbol.js +21 -0
  18. package/asset/svg/Symbol.tsx +60 -0
  19. package/asset/svg/TOSEL.tsx +63 -63
  20. package/globals.css +226 -226
  21. package/interaction/design/Worm.design.js +2 -1
  22. package/interface/domain/Tag.d.ts +8 -0
  23. package/interface/domain/Tag.js +11 -0
  24. package/interface/domain/index.d.ts +1 -0
  25. package/interface/domain/index.js +1 -0
  26. package/interface/widget/Carousel.d.ts +12 -0
  27. package/interface/widget/Carousel.js +1 -0
  28. package/interface/widget/index.d.ts +1 -0
  29. package/interface/widget/index.js +1 -0
  30. package/layout/index.d.ts +2 -0
  31. package/layout/index.js +2 -0
  32. package/layout/template/Gallery.js +1 -1
  33. package/layout/template/home/Navigation.d.ts +4 -0
  34. package/layout/template/home/Navigation.js +32 -0
  35. package/layout/template/home/Notice.d.ts +14 -0
  36. package/layout/template/home/Notice.js +49 -0
  37. package/layout/template/home/Promotion.d.ts +18 -0
  38. package/layout/template/home/Promotion.js +41 -0
  39. package/layout/template/home/Service.d.ts +16 -0
  40. package/layout/template/home/Service.js +53 -0
  41. package/layout/template/home/Shortcut.d.ts +6 -0
  42. package/layout/template/home/Shortcut.js +15 -0
  43. package/layout/template/home/index.d.ts +17 -0
  44. package/layout/template/home/index.js +17 -0
  45. package/layout/template/home/layout/Carousel.d.ts +5 -0
  46. package/layout/template/home/layout/Carousel.js +43 -0
  47. package/layout/template/home/layout/Footer.d.ts +1 -0
  48. package/layout/template/home/layout/Footer.js +26 -0
  49. package/layout/template/home/layout/Header.d.ts +1 -0
  50. package/layout/template/home/layout/Header.js +34 -0
  51. package/layout/template/home/layout/index.d.ts +3 -0
  52. package/layout/template/home/layout/index.js +12 -0
  53. package/package.json +1 -1
  54. package/tailwind.config.ts +618 -605
  55. package/util/index.d.ts +0 -1
  56. package/util/index.js +0 -1
  57. package/version.txt +1 -1
  58. package/widget/design/Select.design.js +2 -1
  59. /package/layout/{design/Tab.design.d.ts → template/Tab.d.ts} +0 -0
  60. /package/layout/{design/Tab.design.js → template/Tab.js} +0 -0
package/globals.css CHANGED
@@ -1,226 +1,226 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
4
-
5
- @font-face {
6
- font-family: "Pretendard-Medium";
7
- src: url("./asset/fonts/Pretendard-Medium.otf") format("opentype");
8
- }
9
-
10
- @font-face {
11
- font-family: "Pretendard-Bold";
12
- src: url("./asset/fonts/Pretendard-Bold.otf") format("opentype");
13
- }
14
-
15
- @font-face {
16
- font-family: "Pretendard-Light";
17
- src: url("./asset/fonts/Pretendard-Light.otf") format("opentype");
18
- }
19
-
20
- @font-face {
21
- font-family: "Kostar";
22
- src: url("./asset/fonts/Kostar.ttf") format("truetype");
23
- }
24
-
25
- @font-face {
26
- font-family: "NicoMoji";
27
- src: url("./asset/fonts/NicoMoji.ttf") format("truetype");
28
- }
29
-
30
- @font-face {
31
- font-family: "Megrim";
32
- src: url("./asset/fonts/Megrim.ttf") format("truetype");
33
- }
34
-
35
- @font-face {
36
- font-family: "Times-Newer-Roman-Bold";
37
- src: url("./asset/fonts/TimesNewerRoman-Bold.otf") format("opentype");
38
- }
39
-
40
- @font-face {
41
- font-family: "Times-Newer-Roman-BoldItalic";
42
- src: url("./asset/fonts/TimesNewerRoman-BoldItalic.otf") format("opentype");
43
- }
44
-
45
- input[type="date"]::-webkit-inner-spin-button,
46
- input[type="date"]::-webkit-calendar-picker-indicator {
47
- display: none;
48
- -webkit-appearance: none;
49
- }
50
-
51
- ::-webkit-scrollbar {
52
- width: 3px;
53
- padding-right: 10px;
54
- }
55
-
56
- ::-webkit-scrollbar-track {
57
- background-color: transparent;
58
- }
59
- ::-webkit-scrollbar-thumb {
60
- background-color: #808080;
61
- opacity: 0.5;
62
- border-radius: 10px;
63
- }
64
-
65
- .box-shadow {
66
- box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.15);
67
- }
68
-
69
- .box-shadow-sm {
70
- box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.2);
71
- }
72
-
73
- .border-gradient-green-to-red {
74
- }
75
-
76
- .x-shape {
77
- position: relative;
78
- width: 0.83625rem;
79
- height: 0.83625rem;
80
- }
81
-
82
- .x-shape::before,
83
- .x-shape::after {
84
- content: "";
85
- position: absolute;
86
- top: 50%;
87
- left: 50%;
88
- width: 2.5px;
89
- border-radius: 2px;
90
- height: 100%;
91
- background-color: white;
92
- transform-origin: center;
93
- }
94
-
95
- .x-shape::before {
96
- transform: translate(-50%, -50%) rotate(45deg);
97
- }
98
-
99
- .x-shape::after {
100
- transform: translate(-50%, -50%) rotate(-45deg);
101
- }
102
-
103
- .border-inner {
104
- box-shadow: 0 0 0 1px #e5e7eb inset, 0 4px 6px -1px rgba(0, 0, 0, 0.1),
105
- 0 2px 4px -1px rgba(0, 0, 0, 0.06);
106
- }
107
- .box-shadow-focus:focus {
108
- box-shadow: 0 0 0 1px #e5e7eb inset, 0 4px 6px -1px rgba(0, 0, 0, 0.1),
109
- 0 2px 4px -1px rgba(0, 0, 0, 0.06);
110
- }
111
- .box-shadow-focus-red:focus {
112
- box-shadow: 0px 0px 10px 0px #ff8383;
113
- }
114
- .box-green {
115
- background: rgba(16, 86, 82, 0.1);
116
- color: #105652;
117
- }
118
- .box-green-focus:focus {
119
- background: white;
120
- color: black;
121
- box-shadow: 0px 0px 10px 0px rgba(16, 86, 82, 0.38);
122
- }
123
- /* box-shadow: 0px 0px 10px 0px rgba(16, 86, 82, 0.38); */
124
- .box-inner-shadow:hover {
125
- box-shadow: 0 0 0 1px #e5e7eb inset, 0 4px 6px -1px rgba(0, 0, 0, 0.1),
126
- 0 2px 4px -1px rgba(0, 0, 0, 0.06);
127
- }
128
- /* Date Picker Css */
129
- .react-datepicker__day--selected {
130
- background-color: #105652 !important;
131
- }
132
- .react-datepicker__header {
133
- background: white !important;
134
- border: none !important;
135
- }
136
- .react-datepicker {
137
- box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.15) !important;
138
- border-radius: 0.375rem !important;
139
- border: none !important;
140
- }
141
- .react-datepicker__day--keyboard-selected {
142
- background-color: white !important;
143
- color: black !important;
144
- }
145
- .react-datepicker__day--outside-month {
146
- color: rgb(161 161 170) !important;
147
- }
148
- .react-datepicker__month-container {
149
- padding-top: 1rem;
150
- padding-left: 1rem;
151
- padding-right: 1rem;
152
- padding-bottom: 0.5rem;
153
- }
154
- .react-datepicker-popper {
155
- transform: translate(0px 295px) !important;
156
- }
157
- .react-datepicker__input-container {
158
- text-align: center !important;
159
- border-radius: 0.375rem !important;
160
- transition: all 0.3s;
161
- }
162
- .react-datepicker__input-container > input {
163
- cursor: pointer !important;
164
- }
165
- .react-datepicker__input-container:hover {
166
- box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.15) !important;
167
- }
168
- .react-datepicker__navigation {
169
- top: 18px !important;
170
- }
171
- .react-datepicker__navigation--next {
172
- right: 20px !important;
173
- }
174
- .react-datepicker__navigation--previous {
175
- left: 182px !important;
176
- }
177
- .react-datepicker__current-month {
178
- text-align: left !important;
179
- margin-left: 16px !important;
180
- }
181
- .react-datepicker__triangle {
182
- display: none !important;
183
- }
184
- .react-datepicker__children-container {
185
- width: 16rem !important;
186
- }
187
- /* toggle button */
188
- .toggle[type="checkbox"]::before {
189
- content: "";
190
- position: absolute;
191
- left: 1px;
192
- top: 1px;
193
- width: 1.1rem;
194
- height: 1.1rem;
195
- border-radius: 50%;
196
- transform: scale(0.9);
197
- background-color: white;
198
- transition: left 100ms linear;
199
- }
200
- .toggle[type="checkbox"]:checked::before {
201
- background-color: white;
202
- left: 1.32rem;
203
- }
204
- .toggle[type="checkbox"]:checked {
205
- background-color: #105652;
206
- }
207
- .toggle[type="checkbox"]:disabled {
208
- opacity: 0.3;
209
- cursor: not-allowed;
210
- }
211
- .toggle[type="checkbox"]:disabled + span {
212
- opacity: 0.3;
213
- cursor: not-allowed;
214
- }
215
-
216
- /* checkbox */
217
- .check-box[type="checkbox"]:checked {
218
- border-color: transparent;
219
- background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M5.707 7.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4a1 1 0 0 0-1.414-1.414L7 8.586 5.707 7.293z'/%3e%3c/svg%3e");
220
- background-size: 150%;
221
- background-position: 50%;
222
- background-repeat: no-repeat;
223
- }
224
- .check-box[type="checkbox"]:disabled {
225
- background-color: #7f7f7f;
226
- }
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ @font-face {
6
+ font-family: "Pretendard-Medium";
7
+ src: url("./asset/fonts/Pretendard-Medium.otf") format("opentype");
8
+ }
9
+
10
+ @font-face {
11
+ font-family: "Pretendard-Bold";
12
+ src: url("./asset/fonts/Pretendard-Bold.otf") format("opentype");
13
+ }
14
+
15
+ @font-face {
16
+ font-family: "Pretendard-Light";
17
+ src: url("./asset/fonts/Pretendard-Light.otf") format("opentype");
18
+ }
19
+
20
+ @font-face {
21
+ font-family: "Kostar";
22
+ src: url("./asset/fonts/Kostar.ttf") format("truetype");
23
+ }
24
+
25
+ @font-face {
26
+ font-family: "NicoMoji";
27
+ src: url("./asset/fonts/NicoMoji.ttf") format("truetype");
28
+ }
29
+
30
+ @font-face {
31
+ font-family: "Megrim";
32
+ src: url("./asset/fonts/Megrim.ttf") format("truetype");
33
+ }
34
+
35
+ @font-face {
36
+ font-family: "Times-Newer-Roman-Bold";
37
+ src: url("./asset/fonts/TimesNewerRoman-Bold.otf") format("opentype");
38
+ }
39
+
40
+ @font-face {
41
+ font-family: "Times-Newer-Roman-BoldItalic";
42
+ src: url("./asset/fonts/TimesNewerRoman-BoldItalic.otf") format("opentype");
43
+ }
44
+
45
+ input[type="date"]::-webkit-inner-spin-button,
46
+ input[type="date"]::-webkit-calendar-picker-indicator {
47
+ display: none;
48
+ -webkit-appearance: none;
49
+ }
50
+
51
+ ::-webkit-scrollbar {
52
+ width: 3px;
53
+ padding-right: 10px;
54
+ }
55
+
56
+ ::-webkit-scrollbar-track {
57
+ background-color: transparent;
58
+ }
59
+ ::-webkit-scrollbar-thumb {
60
+ background-color: #808080;
61
+ opacity: 0.5;
62
+ border-radius: 10px;
63
+ }
64
+
65
+ .box-shadow {
66
+ box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.15);
67
+ }
68
+
69
+ .box-shadow-sm {
70
+ box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.2);
71
+ }
72
+
73
+ .border-gradient-green-to-red {
74
+ }
75
+
76
+ .x-shape {
77
+ position: relative;
78
+ width: 0.83625rem;
79
+ height: 0.83625rem;
80
+ }
81
+
82
+ .x-shape::before,
83
+ .x-shape::after {
84
+ content: "";
85
+ position: absolute;
86
+ top: 50%;
87
+ left: 50%;
88
+ width: 2.5px;
89
+ border-radius: 2px;
90
+ height: 100%;
91
+ background-color: white;
92
+ transform-origin: center;
93
+ }
94
+
95
+ .x-shape::before {
96
+ transform: translate(-50%, -50%) rotate(45deg);
97
+ }
98
+
99
+ .x-shape::after {
100
+ transform: translate(-50%, -50%) rotate(-45deg);
101
+ }
102
+
103
+ .border-inner {
104
+ box-shadow: 0 0 0 1px #e5e7eb inset, 0 4px 6px -1px rgba(0, 0, 0, 0.1),
105
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06);
106
+ }
107
+ .box-shadow-focus:focus {
108
+ box-shadow: 0 0 0 1px #e5e7eb inset, 0 4px 6px -1px rgba(0, 0, 0, 0.1),
109
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06);
110
+ }
111
+ .box-shadow-focus-red:focus {
112
+ box-shadow: 0px 0px 10px 0px #ff8383;
113
+ }
114
+ .box-green {
115
+ background: rgba(16, 86, 82, 0.1);
116
+ color: #105652;
117
+ }
118
+ .box-green-focus:focus {
119
+ background: white;
120
+ color: black;
121
+ box-shadow: 0px 0px 10px 0px rgba(16, 86, 82, 0.38);
122
+ }
123
+ /* box-shadow: 0px 0px 10px 0px rgba(16, 86, 82, 0.38); */
124
+ .box-inner-shadow:hover {
125
+ box-shadow: 0 0 0 1px #e5e7eb inset, 0 4px 6px -1px rgba(0, 0, 0, 0.1),
126
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06);
127
+ }
128
+ /* Date Picker Css */
129
+ .react-datepicker__day--selected {
130
+ background-color: #105652 !important;
131
+ }
132
+ .react-datepicker__header {
133
+ background: white !important;
134
+ border: none !important;
135
+ }
136
+ .react-datepicker {
137
+ box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.15) !important;
138
+ border-radius: 0.375rem !important;
139
+ border: none !important;
140
+ }
141
+ .react-datepicker__day--keyboard-selected {
142
+ background-color: white !important;
143
+ color: black !important;
144
+ }
145
+ .react-datepicker__day--outside-month {
146
+ color: rgb(161 161 170) !important;
147
+ }
148
+ .react-datepicker__month-container {
149
+ padding-top: 1rem;
150
+ padding-left: 1rem;
151
+ padding-right: 1rem;
152
+ padding-bottom: 0.5rem;
153
+ }
154
+ .react-datepicker-popper {
155
+ transform: translate(0px 295px) !important;
156
+ }
157
+ .react-datepicker__input-container {
158
+ text-align: center !important;
159
+ border-radius: 0.375rem !important;
160
+ transition: all 0.3s;
161
+ }
162
+ .react-datepicker__input-container > input {
163
+ cursor: pointer !important;
164
+ }
165
+ .react-datepicker__input-container:hover {
166
+ box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.15) !important;
167
+ }
168
+ .react-datepicker__navigation {
169
+ top: 18px !important;
170
+ }
171
+ .react-datepicker__navigation--next {
172
+ right: 20px !important;
173
+ }
174
+ .react-datepicker__navigation--previous {
175
+ left: 182px !important;
176
+ }
177
+ .react-datepicker__current-month {
178
+ text-align: left !important;
179
+ margin-left: 16px !important;
180
+ }
181
+ .react-datepicker__triangle {
182
+ display: none !important;
183
+ }
184
+ .react-datepicker__children-container {
185
+ width: 16rem !important;
186
+ }
187
+ /* toggle button */
188
+ .toggle[type="checkbox"]::before {
189
+ content: "";
190
+ position: absolute;
191
+ left: 1px;
192
+ top: 1px;
193
+ width: 1.1rem;
194
+ height: 1.1rem;
195
+ border-radius: 50%;
196
+ transform: scale(0.9);
197
+ background-color: white;
198
+ transition: left 100ms linear;
199
+ }
200
+ .toggle[type="checkbox"]:checked::before {
201
+ background-color: white;
202
+ left: 1.32rem;
203
+ }
204
+ .toggle[type="checkbox"]:checked {
205
+ background-color: #105652;
206
+ }
207
+ .toggle[type="checkbox"]:disabled {
208
+ opacity: 0.3;
209
+ cursor: not-allowed;
210
+ }
211
+ .toggle[type="checkbox"]:disabled + span {
212
+ opacity: 0.3;
213
+ cursor: not-allowed;
214
+ }
215
+
216
+ /* checkbox */
217
+ .check-box[type="checkbox"]:checked {
218
+ border-color: transparent;
219
+ background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M5.707 7.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4a1 1 0 0 0-1.414-1.414L7 8.586 5.707 7.293z'/%3e%3c/svg%3e");
220
+ background-size: 150%;
221
+ background-position: 50%;
222
+ background-repeat: no-repeat;
223
+ }
224
+ .check-box[type="checkbox"]:disabled {
225
+ background-color: #7f7f7f;
226
+ }
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { cn, gradient, useEase } from "../../util";
2
+ import { useEase } from "../../hook";
3
+ import { cn, gradient } from "../../util";
3
4
  export default function Worm() {
4
5
  const numbers = [-2, -1, 0, 1, 2];
5
6
  const ease = useEase(1000, 500);
@@ -0,0 +1,8 @@
1
+ type Tag = "NEW" | "REG";
2
+ interface Styles {
3
+ title: string;
4
+ background: string;
5
+ }
6
+ declare const TagStyles: Record<Tag, Styles>;
7
+ export type { Tag };
8
+ export { TagStyles };
@@ -0,0 +1,11 @@
1
+ const TagStyles = {
2
+ NEW: {
3
+ title: "신규론칭",
4
+ background: "bg-blue-navy",
5
+ },
6
+ REG: {
7
+ title: "정기시험",
8
+ background: "bg-crimson-burgundy",
9
+ },
10
+ };
11
+ export { TagStyles };
@@ -0,0 +1 @@
1
+ export * from "./Tag";
@@ -0,0 +1 @@
1
+ export * from "./Tag";
@@ -0,0 +1,12 @@
1
+ import { Titles } from "../Property";
2
+ export type { CarouselContent };
3
+ interface Options {
4
+ background: string;
5
+ text: string;
6
+ }
7
+ interface CarouselContent<T> {
8
+ tag: T;
9
+ titles: Titles;
10
+ image?: string;
11
+ options?: Partial<Options>;
12
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1 +1,2 @@
1
+ export * from "./Carousel";
1
2
  export * from "./Switch";
@@ -1 +1,2 @@
1
+ export * from "./Carousel";
1
2
  export * from "./Switch";
package/layout/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { default as Action } from "./template/Action";
2
+ export { default as Home } from "./template/home";
2
3
  export * from "./template/Dashboard";
3
4
  export { default as Promotion } from "./template/Promotion";
4
5
  export { default as Sign } from "./template/Sign";
@@ -6,3 +7,4 @@ export { default as DataField } from "./template/DataField";
6
7
  export { default as Gallery } from "./template/Gallery";
7
8
  export { default as Row } from "./template/Row";
8
9
  export { default as Shelf } from "./template/Shelf";
10
+ export { default as Tab } from "./template/Tab";
package/layout/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { default as Action } from "./template/Action";
2
+ export { default as Home } from "./template/home";
2
3
  export * from "./template/Dashboard";
3
4
  export { default as Promotion } from "./template/Promotion";
4
5
  export { default as Sign } from "./template/Sign";
@@ -6,3 +7,4 @@ export { default as DataField } from "./template/DataField";
6
7
  export { default as Gallery } from "./template/Gallery";
7
8
  export { default as Row } from "./template/Row";
8
9
  export { default as Shelf } from "./template/Shelf";
10
+ export { default as Tab } from "./template/Tab";
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import Action from "./Action";
3
- import Tab from "../design/Tab.design";
3
+ import Tab from "./Tab";
4
4
  import { cn } from "../../util";
5
5
  export default function Gallery({ action, children, options, }) {
6
6
  const { tabTextColor } = options ?? {};
@@ -0,0 +1,4 @@
1
+ import { OnClick } from "../../../interface";
2
+ export default function Navigation({ clickBrowser, }: {
3
+ clickBrowser: OnClick;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { animated, useTransition } from "react-spring";
4
+ import SVG from "../../../asset/SVG";
5
+ import { cn } from "../../../util";
6
+ export default function Navigation({ clickBrowser, }) {
7
+ const [flag, setFlag] = useState(false);
8
+ const container = {
9
+ displays: "flex flex-col justify-between items-center",
10
+ paddings: "py-12.5",
11
+ backgrounds: "bg-gradient-to-b from-green-dark to-crimson-burgundy",
12
+ styles: "rounded-r-xl",
13
+ };
14
+ const transition = useTransition(!flag, {
15
+ from: { width: 80, height: 424 },
16
+ leave: { width: 0, height: screen.height, duration: 500 },
17
+ });
18
+ const overlayTransition = useTransition(flag, {
19
+ from: { width: 0 },
20
+ enter: { width: screen.width },
21
+ config: { duration: 500 },
22
+ });
23
+ useEffect(() => {
24
+ if (flag) {
25
+ const timer = setTimeout(() => {
26
+ clickBrowser();
27
+ }, 2000);
28
+ return () => clearTimeout(timer);
29
+ }
30
+ }, [flag]);
31
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "h-screen fixed top-0 left-0 flex justify-center items-center z-45", children: transition((styles, item) => item && (_jsxs(animated.div, { style: styles, className: cn(container), children: [_jsx(SVG.Icon.Calendar, {}), _jsx(SVG.Icon.Notification, {}), _jsx(SVG.Icon.Search, {}), _jsx(SVG.Icon.Browser, { onClick: () => setFlag(!flag) }), _jsx(SVG.Icon.Gift, {})] }))) }), overlayTransition((styles, item) => item && (_jsxs(animated.div, { style: styles, className: "bg-white h-screen fixed top-0 left-0 z-40 flex flex-col justify-center items-center overflow-hidden gap-y-14", children: [_jsx("img", { src: "/images/logos/tosel.png", alt: "tosel", width: 368.56, height: 80.07 }), _jsx("div", { children: "dashboard loading..." })] })))] }));
32
+ }
@@ -0,0 +1,14 @@
1
+ import { Titles } from "../../../interface";
2
+ interface NoticeOptions {
3
+ className: string;
4
+ }
5
+ export default function Notice({ banners, options, }: {
6
+ banners: BannerProps[];
7
+ options?: Partial<NoticeOptions>;
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ type Tag = "REG" | "OLY";
10
+ interface BannerProps {
11
+ tag: Tag;
12
+ titles: Titles;
13
+ }
14
+ export {};
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import SVG from "../../../asset/SVG";
3
+ import { cn } from "../../../util";
4
+ export default function Notice({ banners, options, }) {
5
+ const { className } = options ?? {};
6
+ const container = {
7
+ positions: "relative",
8
+ backgrounds: "bg-[#F7F7F7]",
9
+ displays: "flex flex-col",
10
+ sizes: "h-96",
11
+ boundaries: "pl-80 py-12",
12
+ className,
13
+ };
14
+ const body = {
15
+ displays: "flex flex-row gap-x-7.5",
16
+ sizes: "w-fit",
17
+ boundaries: "mt-7.5",
18
+ styles: "overflow-x-hidden",
19
+ };
20
+ const buttonBox = {
21
+ displays: "flex justify-between items-center",
22
+ sizes: "w-18 h-7.5",
23
+ boundaries: "mt-5 px-5",
24
+ backgrounds: "bg-gray-dark",
25
+ styles: " rounded-full",
26
+ };
27
+ return (_jsxs("div", { className: cn(container), children: [_jsx("div", { className: "font-pretendard-bold text-gray-dark text-3xl", children: "\uACF5\uC9C0\uC0AC\uD56D" }), _jsx("div", { className: cn(body), children: banners.map((banner) => (_jsx(Banner, { ...banner }, banner.titles.title))) }), _jsxs("div", { className: cn(buttonBox), children: [_jsx(SVG.Symbol.LessThan, { onClick: () => { } }), _jsx(SVG.Symbol.GreaterThan, { onClick: () => { } })] })] }));
28
+ }
29
+ const TagStyles = {
30
+ REG: { title: "정기시험" },
31
+ OLY: { title: "올림피아드" },
32
+ };
33
+ function Banner({ tag, titles }) {
34
+ const container = {
35
+ displays: "flex flex-col gap-y-7",
36
+ sizes: "w-95 h-40",
37
+ backgrounds: "bg-white",
38
+ boundaries: "pt-6.25 px-6.5",
39
+ styles: "rounded-md",
40
+ };
41
+ const tagBox = {
42
+ displays: "flex justify-center items-center",
43
+ sizes: "w-20 h-7",
44
+ backgrounds: "bg-gray-dark",
45
+ fonts: "text-white font-pretendard-bold ",
46
+ styles: "rounded-md",
47
+ };
48
+ return (_jsxs("div", { className: cn(container), children: [_jsxs("div", { className: "flex gap-x-4 items-center", children: [_jsx("div", { className: cn(tagBox), children: TagStyles[tag].title }), _jsx("div", { className: "font-pretendard-bold text-gray-dark", children: titles.title })] }), _jsx("div", { className: "text-gray-dark", children: titles.subtitle })] }));
49
+ }
@@ -0,0 +1,18 @@
1
+ interface PromotionOptions {
2
+ className: string;
3
+ }
4
+ export default function Promotion({ banners, options, }: {
5
+ banners: BannerProps[];
6
+ options?: Partial<PromotionOptions>;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ interface BannerProps {
9
+ image: {
10
+ src: string;
11
+ location?: string;
12
+ };
13
+ options?: {
14
+ background?: string;
15
+ boundary?: string;
16
+ };
17
+ }
18
+ export {};