openfree commited on
Commit
b9dd10a
·
verified ·
1 Parent(s): 23f5049

Update app.css

Browse files
Files changed (1) hide show
  1. app.css +110 -314
app.css CHANGED
@@ -1,3 +1,4 @@
 
1
  /* Modern color scheme */
2
  :root {
3
  /* 주요 브랜드 컬러 */
@@ -33,345 +34,140 @@ body {
33
  line-height: 1.5;
34
  }
35
 
36
- .left_header {
37
- display: flex;
38
- flex-direction: column;
39
- justify-content: center;
40
- align-items: center;
41
- background: linear-gradient(135deg, var(--surface), var(--neutral-100));
42
- backdrop-filter: blur(10px);
43
- border-radius: 24px;
44
- padding: 2rem;
45
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
46
- border: 1px solid var(--neutral-200);
47
- text-align: center;
48
- margin-bottom: 2rem;
49
- }
50
-
51
- .left_header img {
52
- width: 180px;
53
- margin-bottom: 1rem;
54
  border-radius: 12px;
55
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
56
  }
57
 
58
- .left_header h1 {
59
- margin: 0.5rem 0;
60
- font-weight: 600;
61
- color: var(--text-primary);
 
 
 
 
 
 
62
  }
63
 
64
- .render_header {
65
- height: 30px;
 
66
  width: 100%;
67
- padding: 5px 16px;
68
- background-color: var(--neutral-100);
69
- margin-top: 50px;
70
- border-radius: 8px 8px 0 0;
71
- }
72
-
73
- .header_btn {
74
- display: inline-block;
75
- height: 10px;
76
- width: 10px;
77
- border-radius: 50%;
78
- margin-right: 4px;
79
- }
80
-
81
- .render_header > .header_btn:nth-child(1) {
82
- background-color: var(--error);
83
- }
84
-
85
- .render_header > .header_btn:nth-child(2) {
86
- background-color: var(--warning);
87
- }
88
-
89
- .render_header > .header_btn:nth-child(3) {
90
- background-color: var(--success);
91
- }
92
-
93
- .right_content {
94
- height: 920px;
95
- display: flex;
96
- flex-direction: column;
97
- justify-content: center;
98
- align-items: center;
99
- background: var(--surface);
100
- border-radius: 0 0 8px 8px;
101
- }
102
-
103
- .history_chatbot button {
104
- background: none;
105
- border: none;
106
- }
107
-
108
- footer, .footer, div[class*="footer"], #footer {
109
- display: none !important;
110
- }
111
-
112
- #component-0 textarea,
113
- .gradio-container textarea,
114
- .ant-input-textarea-large textarea {
115
- height: 300px !important;
116
- min-height: 300px !important;
117
- resize: vertical !important;
118
- border: 2px solid var(--neutral-200);
119
- border-radius: 12px;
120
- transition: all 0.3s;
121
  background: var(--surface);
122
- color: var(--text-primary);
123
- padding: 1rem;
124
- }
125
-
126
- #component-0 textarea:focus,
127
- .gradio-container textarea:focus,
128
- .ant-input-textarea-large textarea:focus {
129
- border-color: var(--accent);
130
- box-shadow: 0 0 0 3px rgba(102, 163, 255, 0.2);
131
- }
132
-
133
- .setting-buttons {
134
- position: sticky;
135
- top: 1rem;
136
- right: 0;
137
- z-index: 1000;
138
- display: flex;
139
- gap: 8px;
140
- padding: 12px;
141
- background: rgba(255, 255, 255, 0.9);
142
- backdrop-filter: blur(8px);
143
- border-radius: 12px;
144
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
145
- border: 1px solid var(--neutral-200);
146
- }
147
-
148
- .right_panel {
149
- position: relative;
150
- min-height: 600px;
151
- padding-top: 50px;
152
  }
153
 
154
- .html_content {
 
155
  height: 100%;
156
- border-radius: 12px;
157
- overflow: hidden;
158
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
159
- background: var(--surface);
160
  }
161
 
162
- .ant-btn {
163
- flex: 1;
164
- min-width: 80px;
165
- border-radius: 8px;
166
- font-weight: 500;
167
- transition: all 0.3s;
168
- height: 40px;
169
  display: flex;
170
  align-items: center;
171
- justify-content: center;
172
- }
173
-
174
- .ant-btn-primary {
175
- background: linear-gradient(to right, var(--primary), var(--secondary));
176
- border: none;
177
- color: white;
178
- }
179
-
180
- .ant-btn-primary:hover {
181
- transform: translateY(-2px);
182
- box-shadow: 0 4px 12px rgba(0, 102, 204, 0.3);
183
- }
184
-
185
- .ant-btn-default {
186
- background: var(--surface);
187
- border: 1px solid var(--primary);
188
- color: var(--primary);
189
- }
190
-
191
- .ant-btn-default:hover {
192
- color: var(--secondary);
193
- border-color: var(--secondary);
194
- transform: translateY(-2px);
195
- box-shadow: 0 4px 12px rgba(0, 102, 204, 0.1);
196
- }
197
-
198
- .ant-btn-default[title="Code 실행"] {
199
- background-color: var(--success);
200
- color: white;
201
- border: none;
202
- }
203
-
204
- .ant-btn-default[title="Code 실행"]:hover {
205
- background-color: #40d869;
206
  }
207
 
208
- .session-drawer .chatbot {
209
- height: calc(100vh - 200px);
210
- overflow-y: auto;
211
- }
212
-
213
- .session-history {
214
- height: 700px;
215
- overflow-y: auto;
216
- padding: 1rem;
217
- }
218
-
219
- .prompt-grid {
220
- display: grid;
221
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
222
- gap: 1.5rem;
223
- padding: 1.5rem;
224
- }
225
-
226
- .prompt-card {
227
- background: var(--surface);
228
- border-radius: 16px;
229
- padding: 1.25rem;
230
- cursor: pointer;
231
- transition: all 0.3s;
232
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
233
- min-height: 300px;
234
- border: 1px solid var(--neutral-200);
235
- }
236
-
237
- .prompt-card:hover {
238
- transform: translateY(-4px);
239
- box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
240
- }
241
-
242
- .card-image {
243
- width: 100%;
244
- height: 200px;
245
- object-fit: cover;
246
- border-radius: 12px;
247
- margin-bottom: 1rem;
248
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
249
- }
250
-
251
- .card-name {
252
- font-weight: 600;
253
- margin-bottom: 0.8rem;
254
- font-size: 1.1rem;
255
- color: var(--text-primary);
256
- }
257
-
258
- .card-prompt-container {
259
- position: relative;
260
- padding-right: 60px;
261
- }
262
-
263
- .card-prompt {
264
- font-size: 0.9rem;
265
- color: var(--text-secondary);
266
- display: -webkit-box;
267
- -webkit-line-clamp: 3;
268
- -webkit-box-orient: vertical;
269
- overflow: hidden;
270
- background: var(--neutral-100);
271
- padding: 0.8rem;
272
- border-radius: 8px;
273
- line-height: 1.5;
274
  }
275
 
276
- .copy-btn {
 
277
  position: absolute;
 
278
  right: 0;
279
- top: 0;
280
- padding: 6px 12px;
281
- background: var(--accent);
282
- color: white;
283
- border: none;
284
- border-radius: 6px;
285
- cursor: pointer;
286
- font-size: 0.9em;
287
- transition: all 0.2s ease;
288
- }
289
-
290
- .copy-btn:hover {
291
- background: var(--primary);
292
- transform: translateY(-1px);
293
- }
294
-
295
- .copy-btn:active {
296
- transform: translateY(0);
297
- }
298
-
299
- .template-buttons {
300
- margin-top: 1rem;
301
- display: flex;
302
- gap: 0.5rem;
303
  }
304
 
305
- /* Custom scrollbar */
306
- ::-webkit-scrollbar {
307
- width: 8px;
308
- height: 8px;
309
- }
310
-
311
- ::-webkit-scrollbar-track {
312
- background: var(--neutral-100);
313
- }
314
-
315
- ::-webkit-scrollbar-thumb {
316
- background: var(--neutral-300);
317
- border-radius: 4px;
318
- }
319
-
320
- ::-webkit-scrollbar-thumb:hover {
321
- background: var(--neutral-400);
322
- }
323
-
324
- /* Drawer customization */
325
- .ant-drawer-content-wrapper {
326
- border-radius: 16px 0 0 16px;
327
- }
328
-
329
- .ant-drawer-header {
330
- background: var(--primary);
331
- color: white;
332
- border-radius: 16px 0 0 0;
333
- }
334
-
335
- .ant-drawer-title {
336
- color: white;
337
- font-weight: 500;
338
- }
339
-
340
- .ant-drawer-close {
341
- color: white;
342
- }
343
-
344
- .ant-drawer-body {
345
- background: var(--surface);
346
- }
347
-
348
- /* Responsive adjustments */
349
  @media (max-width: 768px) {
350
- .left_header {
351
- padding: 1rem;
352
- }
353
-
354
- .prompt-grid {
355
- grid-template-columns: 1fr;
356
- }
357
-
358
- .setting-buttons {
359
- flex-wrap: wrap;
360
- }
361
-
362
- .ant-btn {
363
- min-width: 60px;
364
- font-size: 0.9rem;
365
  }
366
  }
367
 
368
- /* Animations */
369
- @keyframes fadeIn {
370
- from { opacity: 0; transform: translateY(10px); }
371
- to { opacity: 1; transform: translateY(0); }
372
- }
373
-
374
- .fade-in {
375
- animation: fadeIn 0.5s ease-out;
 
 
 
 
 
 
376
  }
377
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <style>
2
  /* Modern color scheme */
3
  :root {
4
  /* 주요 브랜드 컬러 */
 
34
  line-height: 1.5;
35
  }
36
 
37
+ /* 우측 패널 크기 조절 */
38
+ .right_panel {
39
+ position: relative;
40
+ height: 600px; /* 기본 높이 축소 */
41
+ min-height: 400px;
42
+ max-height: 800px;
43
+ resize: vertical;
44
+ overflow: hidden;
45
+ margin: 20px;
 
 
 
 
 
 
 
 
 
46
  border-radius: 12px;
47
+ box-shadow: 0 4px 12px rgba(0,0,0,0.1);
48
  }
49
 
50
+ /* 리사이즈 핸들 */
51
+ .right_panel::after {
52
+ content: '';
53
+ position: absolute;
54
+ bottom: 0;
55
+ left: 0;
56
+ right: 0;
57
+ height: 6px;
58
+ background: var(--neutral-200);
59
+ cursor: ns-resize;
60
  }
61
 
62
+ /* 렌더링 영역 */
63
+ .html_content {
64
+ height: calc(100% - 30px);
65
  width: 100%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  background: var(--surface);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  }
68
 
69
+ .html_content iframe {
70
+ width: 100%;
71
  height: 100%;
72
+ border: none;
 
 
 
73
  }
74
 
75
+ /* 렌더링 헤더 */
76
+ .render_header {
77
+ height: 30px;
78
+ background: var(--neutral-100);
79
+ border-radius: 8px 8px 0 0;
 
 
80
  display: flex;
81
  align-items: center;
82
+ padding: 0 12px;
83
+ gap: 6px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  }
85
 
86
+ .header_btn {
87
+ width: 12px;
88
+ height: 12px;
89
+ border-radius: 50%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  }
91
 
92
+ /* 리사이즈 컨트롤 */
93
+ .resize-handle {
94
  position: absolute;
95
+ bottom: 0;
96
  right: 0;
97
+ width: 20px;
98
+ height: 20px;
99
+ cursor: se-resize;
100
+ background: var(--neutral-200);
101
+ border-radius: 0 0 4px 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  }
103
 
104
+ /* 반응형 조정 */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  @media (max-width: 768px) {
106
+ .right_panel {
107
+ height: 400px;
108
+ margin: 10px;
 
 
 
 
 
 
 
 
 
 
 
 
109
  }
110
  }
111
 
112
+ /* 기존 스타일 유지 */
113
+ .left_header {
114
+ display: flex;
115
+ flex-direction: column;
116
+ justify-content: center;
117
+ align-items: center;
118
+ background: linear-gradient(135deg, var(--surface), var(--neutral-100));
119
+ backdrop-filter: blur(10px);
120
+ border-radius: 24px;
121
+ padding: 2rem;
122
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
123
+ border: 1px solid var(--neutral-200);
124
+ text-align: center;
125
+ margin-bottom: 2rem;
126
  }
127
 
128
+ /* 나머지 기존 스타일들... */
129
+
130
+ </style>
131
+
132
+ <script>
133
+ document.addEventListener('DOMContentLoaded', function() {
134
+ const panel = document.querySelector('.right_panel');
135
+ let isResizing = false;
136
+ let startY;
137
+ let startHeight;
138
+
139
+ // 리사이즈 이벤트
140
+ panel.addEventListener('mousedown', function(e) {
141
+ if (e.offsetY > panel.offsetHeight - 6) {
142
+ isResizing = true;
143
+ startY = e.pageY;
144
+ startHeight = panel.offsetHeight;
145
+ document.body.style.cursor = 'ns-resize';
146
+ }
147
+ });
148
+
149
+ document.addEventListener('mousemove', function(e) {
150
+ if (!isResizing) return;
151
+
152
+ const diff = e.pageY - startY;
153
+ const newHeight = Math.max(400, Math.min(800, startHeight + diff));
154
+ panel.style.height = `${newHeight}px`;
155
+ });
156
+
157
+ document.addEventListener('mouseup', function() {
158
+ isResizing = false;
159
+ document.body.style.cursor = '';
160
+ });
161
+
162
+ // 더블클릭으로 크기 토글
163
+ panel.addEventListener('dblclick', function(e) {
164
+ if (e.offsetY > panel.offsetHeight - 6) {
165
+ if (panel.offsetHeight === 600) {
166
+ panel.style.height = '800px';
167
+ } else {
168
+ panel.style.height = '600px';
169
+ }
170
+ }
171
+ });
172
+ });
173
+ </script>