monra commited on
Commit
82b391b
1 Parent(s): e66c2a9

Refactor CSS and HTML

Browse files
client/css/background.css ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .background-gradient:nth-child(1) {
2
+ --top: 0;
3
+ --right: 0;
4
+ --size: 70vw;
5
+ --blur: calc(0.5 * var(--size));
6
+ --opacity: 0.3;
7
+ animation: zoom_gradient 6s infinite;
8
+ }
9
+
10
+ .background-gradient {
11
+ position: absolute;
12
+ z-index: -1;
13
+ border-radius: calc(0.5 * var(--size));
14
+ background-color: var(--accent);
15
+ background: radial-gradient(circle at center, var(--accent), var(--accent));
16
+ width: 70vw;
17
+ height: 70vw;
18
+ top: 50%;
19
+ right: 0;
20
+ transform: translateY(-50%);
21
+ filter: blur(calc(0.5 * 70vw)) opacity(var(--opacity));
22
+ }
client/css/buttons.css ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .buttons {
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: left;
5
+ width: 100%;
6
+ }
7
+
8
+ .bottom_buttons {
9
+ width: 100%;
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: 10px;
13
+ }
14
+
15
+ .bottom_buttons button {
16
+ padding: 8px 12px;
17
+ display: flex;
18
+ gap: 18px;
19
+ align-items: center;
20
+ cursor: pointer;
21
+ user-select: none;
22
+ background: transparent;
23
+ border: 1px solid #c7a2ff;
24
+ border-radius: var(--border-radius-1);
25
+ width: 100%;
26
+ }
27
+
28
+ .bottom_buttons button span {
29
+ color: var(--colour-3);
30
+ font-size: 14px;
31
+ }
32
+
33
+ @media screen and (max-width: 990px) {
34
+ .buttons {
35
+ align-items: flex-start;
36
+ flex-wrap: wrap;
37
+ gap: 15px;
38
+ }
39
+ }
client/css/checkbox.css ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ input[type="checkbox"] {
2
+ height: 0;
3
+ width: 0;
4
+ display: none;
5
+ }
6
+
7
+ input:checked + label {
8
+ background: var(--blur-border);
9
+ }
10
+
11
+ input:checked + label:after {
12
+ left: calc(100% - 5px - 20px);
13
+ }
client/css/conversation.css ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .conversation {
2
+ width: 100%;
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: 15px;
6
+ }
7
+
8
+ .conversation #messages {
9
+ width: 100%;
10
+ height: 100%;
11
+ display: flex;
12
+ flex-direction: column;
13
+ overflow: auto;
14
+ overflow-wrap: break-word;
15
+ padding-bottom: 50px;
16
+ }
17
+
18
+ .conversation .user-input {
19
+ max-height: 200px;
20
+ }
21
+
22
+ .conversation .user-input input {
23
+ font-size: 15px;
24
+ width: 100%;
25
+ height: 100%;
26
+ padding: 12px 15px;
27
+ background: none;
28
+ border: none;
29
+ outline: none;
30
+ color: var(--colour-3);
31
+ }
32
+
33
+ .conversation .user-input input::placeholder {
34
+ color: var(--user-input);
35
+ }
36
+
37
+ .conversation-title {
38
+ color: var(--colour-3);
39
+ font-size: 14px;
40
+ }
41
+
42
+ .conversation .user-input textarea {
43
+ font-size: 15px;
44
+ width: 100%;
45
+ height: 100%;
46
+ padding: 12px 15px;
47
+ background: none;
48
+ border: none;
49
+ outline: none;
50
+ color: var(--colour-3);
51
+
52
+ resize: vertical;
53
+ max-height: 150px;
54
+ min-height: 80px;
55
+ }
56
+
57
+ .new-conversation {
58
+ padding: 8px 12px;
59
+ display: flex;
60
+ gap: 18px;
61
+ align-items: center;
62
+ cursor: pointer;
63
+ user-select: none;
64
+ background: transparent;
65
+ border: 1px dashed var(--conversations);
66
+ border-radius: var(--border-radius-1);
67
+ }
68
+
69
+ .new-conversation span {
70
+ color: var(--colour-3);
71
+ font-size: 14px;
72
+ }
73
+
74
+ .new-conversation:hover {
75
+ border-style: solid;
76
+ }
77
+
78
+ .box {
79
+ backdrop-filter: blur(20px);
80
+ -webkit-backdrop-filter: blur(20px);
81
+ background-color: var(--blur-bg);
82
+ height: 100%;
83
+ width: 100%;
84
+ border-radius: var(--border-radius-1);
85
+ border: 1px solid var(--blur-border);
86
+ }
87
+
88
+ .input-box {
89
+ display: flex;
90
+ align-items: center;
91
+ padding-right: 15px;
92
+ cursor: pointer;
93
+ }
94
+
95
+ #cursor {
96
+ line-height: 17px;
97
+ margin-left: 3px;
98
+ -webkit-animation: blink 0.8s infinite;
99
+ animation: blink 0.8s infinite;
100
+ width: 7px;
101
+ height: 15px;
102
+ }
103
+
104
+ @keyframes blink {
105
+ 0% {
106
+ background: #ffffff00;
107
+ }
108
+
109
+ 50% {
110
+ background: white;
111
+ }
112
+
113
+ 100% {
114
+ background: #ffffff00;
115
+ }
116
+ }
117
+
118
+ @-webkit-keyframes blink {
119
+ 0% {
120
+ background: #ffffff00;
121
+ }
122
+
123
+ 50% {
124
+ background: white;
125
+ }
126
+
127
+ 100% {
128
+ background: #ffffff00;
129
+ }
130
+ }
client/css/field.css ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .field {
2
+ height: fit-content;
3
+ display: flex;
4
+ align-items: center;
5
+ gap: 16px;
6
+ padding-right: 15px;
7
+ }
8
+
9
+ .field .about {
10
+ font-size: 14px;
11
+ color: var(--colour-3);
12
+ }
13
+
14
+ @media screen and (max-width: 990px) {
15
+ .field {
16
+ width: fit-content;
17
+ }
18
+ }
client/css/global.css ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import url("https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap");
2
+
3
+ :root {
4
+ --colour-1: #000000;
5
+ --colour-2: #ccc;
6
+ --colour-3: #e4d4ff;
7
+ --colour-4: #f0f0f0;
8
+ --colour-5: #181818;
9
+ --colour-6: #242424;
10
+
11
+ --accent: #8b3dff;
12
+ --blur-bg: #16101b66;
13
+ --blur-border: #84719040;
14
+ --user-input: #ac87bb;
15
+ --conversations: #c7a2ff;
16
+ }
17
+
18
+ :root {
19
+ --font-1: "Inter", sans-serif;
20
+ --section-gap: 25px;
21
+ --border-radius-1: 8px;
22
+ }
23
+
24
+ * {
25
+ margin: 0;
26
+ padding: 0;
27
+ box-sizing: border-box;
28
+ position: relative;
29
+ font-family: var(--font-1);
30
+ }
31
+
32
+ html,
33
+ body {
34
+ scroll-behavior: smooth;
35
+ overflow: hidden;
36
+ }
37
+
38
+ body {
39
+ padding: var(--section-gap);
40
+ background: var(--colour-1);
41
+ color: var(--colour-3);
42
+ height: 100vh;
43
+ }
44
+
45
+ ol,
46
+ ul {
47
+ padding-left: 20px;
48
+ }
49
+
50
+ .shown {
51
+ display: flex;
52
+ }
53
+
54
+ a:-webkit-any-link {
55
+ color: var(--accent);
56
+ }
57
+
58
+ @media screen and (max-height: 640px) {
59
+ body {
60
+ height: 87vh;
61
+ }
62
+ }
client/css/hljs.css ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .hljs {
2
+ color: #e9e9f4;
3
+ background: #28293629;
4
+ border-radius: var(--border-radius-1);
5
+ border: 1px solid var(--blur-border);
6
+ font-size: 15px;
7
+ }
8
+
9
+ #message-input {
10
+ margin-right: 30px;
11
+ height: 80px;
12
+ }
13
+
14
+ #message-input::-webkit-scrollbar {
15
+ width: 5px;
16
+ }
17
+
18
+ /* Track */
19
+ #message-input::-webkit-scrollbar-track {
20
+ background: #f1f1f1;
21
+ }
22
+
23
+ /* Handle */
24
+ #message-input::-webkit-scrollbar-thumb {
25
+ background: #c7a2ff;
26
+ }
27
+
28
+ /* Handle on hover */
29
+ #message-input::-webkit-scrollbar-thumb:hover {
30
+ background: #8b3dff;
31
+ }
32
+
33
+ /* style for hljs copy */
34
+ .hljs-copy-wrapper {
35
+ position: relative;
36
+ overflow: hidden;
37
+ }
38
+
39
+ .hljs-copy-wrapper:hover .hljs-copy-button,
40
+ .hljs-copy-button:focus {
41
+ transform: translateX(0);
42
+ }
43
+
44
+ .hljs-copy-button {
45
+ position: absolute;
46
+ transform: translateX(calc(100% + 1.125em));
47
+ top: 1em;
48
+ right: 1em;
49
+ width: 2rem;
50
+ height: 2rem;
51
+ text-indent: -9999px;
52
+ color: #fff;
53
+ border-radius: 0.25rem;
54
+ border: 1px solid #ffffff22;
55
+ background-color: #2d2b57;
56
+ background-image: url('data:image/svg+xml;utf-8,<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M6 5C5.73478 5 5.48043 5.10536 5.29289 5.29289C5.10536 5.48043 5 5.73478 5 6V20C5 20.2652 5.10536 20.5196 5.29289 20.7071C5.48043 20.8946 5.73478 21 6 21H18C18.2652 21 18.5196 20.8946 18.7071 20.7071C18.8946 20.5196 19 20.2652 19 20V6C19 5.73478 18.8946 5.48043 18.7071 5.29289C18.5196 5.10536 18.2652 5 18 5H16C15.4477 5 15 4.55228 15 4C15 3.44772 15.4477 3 16 3H18C18.7956 3 19.5587 3.31607 20.1213 3.87868C20.6839 4.44129 21 5.20435 21 6V20C21 20.7957 20.6839 21.5587 20.1213 22.1213C19.5587 22.6839 18.7957 23 18 23H6C5.20435 23 4.44129 22.6839 3.87868 22.1213C3.31607 21.5587 3 20.7957 3 20V6C3 5.20435 3.31607 4.44129 3.87868 3.87868C4.44129 3.31607 5.20435 3 6 3H8C8.55228 3 9 3.44772 9 4C9 4.55228 8.55228 5 8 5H6Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M7 3C7 1.89543 7.89543 1 9 1H15C16.1046 1 17 1.89543 17 3V5C17 6.10457 16.1046 7 15 7H9C7.89543 7 7 6.10457 7 5V3ZM15 3H9V5H15V3Z" fill="white"/></svg>');
57
+ background-repeat: no-repeat;
58
+ background-position: center;
59
+ transition: background-color 200ms ease, transform 200ms ease-out;
60
+ }
61
+
62
+ .hljs-copy-button:hover {
63
+ border-color: #ffffff44;
64
+ }
65
+
66
+ .hljs-copy-button:active {
67
+ border-color: #ffffff66;
68
+ }
69
+
70
+ .hljs-copy-button[data-copied="true"] {
71
+ text-indent: 0;
72
+ width: auto;
73
+ background-image: none;
74
+ }
75
+
76
+ .hljs-copy-alert {
77
+ clip: rect(0 0 0 0);
78
+ clip-path: inset(50%);
79
+ height: 1px;
80
+ overflow: hidden;
81
+ position: absolute;
82
+ white-space: nowrap;
83
+ width: 1px;
84
+ }
85
+
86
+ @media (prefers-reduced-motion) {
87
+ .hljs-copy-button {
88
+ transition: none;
89
+ }
90
+ }
client/css/label.css ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ label {
2
+ cursor: pointer;
3
+ text-indent: -9999px;
4
+ width: 50px;
5
+ height: 30px;
6
+ backdrop-filter: blur(20px);
7
+ -webkit-backdrop-filter: blur(20px);
8
+ background-color: var(--blur-bg);
9
+ border-radius: var(--border-radius-1);
10
+ border: 1px solid var(--blur-border);
11
+ display: block;
12
+ border-radius: 100px;
13
+ position: relative;
14
+ overflow: hidden;
15
+ transition: 0.33s;
16
+ }
17
+
18
+ label:after {
19
+ content: "";
20
+ position: absolute;
21
+ top: 50%;
22
+ transform: translateY(-50%);
23
+ left: 5px;
24
+ width: 20px;
25
+ height: 20px;
26
+ background: var(--colour-3);
27
+ border-radius: 90px;
28
+ transition: 0.33s;
29
+ }
client/css/main.css ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ .main-container {
2
+ display: flex;
3
+ gap: var(--section-gap);
4
+ height: 100%;
5
+ }
client/css/message.css ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .message {
2
+ width: 100%;
3
+ overflow-wrap: break-word;
4
+ display: flex;
5
+ gap: var(--section-gap);
6
+ padding: var(--section-gap);
7
+ padding-bottom: 0;
8
+ }
9
+
10
+ .message:last-child {
11
+ animation: 0.6s show_message;
12
+ }
13
+
14
+ @keyframes show_message {
15
+ from {
16
+ transform: translateY(10px);
17
+ opacity: 0;
18
+ }
19
+ }
20
+
21
+ .message .user {
22
+ max-width: 48px;
23
+ max-height: 48px;
24
+ flex-shrink: 0;
25
+ }
26
+
27
+ .message .user img {
28
+ width: 100%;
29
+ height: 100%;
30
+ object-fit: cover;
31
+ border-radius: 8px;
32
+ outline: 1px solid var(--blur-border);
33
+ }
34
+
35
+ .message .content {
36
+ display: flex;
37
+ flex-direction: column;
38
+ gap: 18px;
39
+ }
40
+
41
+ .message .content p,
42
+ .message .content li,
43
+ .message .content code {
44
+ font-size: 15px;
45
+ line-height: 1.3;
46
+ }
47
+
48
+ .message .user i {
49
+ position: absolute;
50
+ bottom: -6px;
51
+ right: -6px;
52
+ z-index: 1000;
53
+ }
client/css/select.css ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ select {
2
+ -webkit-border-radius: 8px;
3
+ -moz-border-radius: 8px;
4
+ border-radius: 8px;
5
+
6
+ -webkit-backdrop-filter: blur(20px);
7
+ backdrop-filter: blur(20px);
8
+
9
+ cursor: pointer;
10
+ background-color: var(--blur-bg);
11
+ border: 1px solid var(--blur-border);
12
+ color: var(--colour-3);
13
+ display: block;
14
+ position: relative;
15
+ overflow: hidden;
16
+ outline: none;
17
+ padding: 8px 16px;
18
+
19
+ appearance: none;
20
+ }
client/css/sidebar.css ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .sidebar {
2
+ max-width: 260px;
3
+ padding: var(--section-gap);
4
+ overflow: auto;
5
+ flex-shrink: 0;
6
+ display: flex;
7
+ flex-direction: column;
8
+ justify-content: space-between;
9
+ gap: 16px;
10
+ }
11
+
12
+ .sidebar .title {
13
+ font-size: 14px;
14
+ font-weight: 500;
15
+ }
16
+
17
+ .sidebar .conversation-sidebar {
18
+ padding: 8px 12px;
19
+ display: flex;
20
+ gap: 18px;
21
+ align-items: center;
22
+ user-select: none;
23
+ justify-content: space-between;
24
+ }
25
+
26
+ .sidebar .conversation-sidebar .left {
27
+ cursor: pointer;
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 10px;
31
+ }
32
+
33
+ .sidebar i {
34
+ color: var(--conversations);
35
+ cursor: pointer;
36
+ }
37
+
38
+ .sidebar .top {
39
+ display: flex;
40
+ flex-direction: column;
41
+ gap: 16px;
42
+ overflow: auto;
43
+ }
44
+
45
+ .sidebar .info {
46
+ padding: 8px 12px;
47
+ display: flex;
48
+ gap: 18px;
49
+ align-items: center;
50
+ user-select: none;
51
+ background: transparent;
52
+ border-radius: var(--border-radius-1);
53
+ width: 100%;
54
+ border: 1px dashed var(--conversations);
55
+ text-decoration: none;
56
+ color: inherit;
57
+ }
58
+
59
+ @keyframes spinner {
60
+ to {
61
+ transform: rotate(360deg);
62
+ }
63
+ }
64
+
65
+ .spinner:before {
66
+ content: "";
67
+ box-sizing: border-box;
68
+ position: absolute;
69
+ top: 50%;
70
+ left: 45%;
71
+ width: 20px;
72
+ height: 20px;
73
+ border-radius: 50%;
74
+ border: 1px solid var(--conversations);
75
+ border-top-color: white;
76
+ animation: spinner 0.6s linear infinite;
77
+ }
78
+
79
+ .mobile-sidebar {
80
+ display: none !important;
81
+ position: absolute;
82
+ z-index: 100000;
83
+ top: 0;
84
+ left: 0;
85
+ margin: 10px;
86
+ font-size: 20px;
87
+ cursor: pointer;
88
+ backdrop-filter: blur(20px);
89
+ -webkit-backdrop-filter: blur(20px);
90
+ background-color: var(--blur-bg);
91
+ border-radius: 10px;
92
+ border: 1px solid var(--blur-border);
93
+ width: 40px;
94
+ height: 40px;
95
+ justify-content: center;
96
+ align-items: center;
97
+ transition: 0.33s;
98
+ }
99
+
100
+ .mobile-sidebar i {
101
+ transition: 0.33s;
102
+ }
103
+
104
+ .rotated {
105
+ transform: rotate(360deg);
106
+ }
107
+
108
+ @media screen and (max-width: 990px) {
109
+ .sidebar {
110
+ display: none;
111
+ width: 100%;
112
+ max-width: none;
113
+ }
114
+
115
+ .mobile-sidebar {
116
+ display: flex !important;
117
+ }
118
+ }
client/css/stop-generating.css ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .stop-generating {
2
+ position: absolute;
3
+ bottom: 118px;
4
+ left: 50%;
5
+ transform: translateX(-50%);
6
+ z-index: 1000000;
7
+ }
8
+
9
+ .stop-generating button {
10
+ backdrop-filter: blur(20px);
11
+ -webkit-backdrop-filter: blur(20px);
12
+ background-color: var(--blur-bg);
13
+ border-radius: var(--border-radius-1);
14
+ border: 1px solid var(--blur-border);
15
+ padding: 10px 15px;
16
+ color: var(--colour-3);
17
+ display: flex;
18
+ justify-content: center;
19
+ align-items: center;
20
+ gap: 12px;
21
+ cursor: pointer;
22
+ animation: show_popup 0.4s;
23
+ }
24
+
25
+ @keyframes show_popup {
26
+ from {
27
+ opacity: 0;
28
+ transform: translateY(10px);
29
+ }
30
+ }
31
+
32
+ @keyframes hide_popup {
33
+ to {
34
+ opacity: 0;
35
+ transform: translateY(10px);
36
+ }
37
+ }
38
+
39
+ .stop-generating-hiding button {
40
+ animation: hide_popup 0.4s;
41
+ }
42
+
43
+ .stop-generating-hidden button {
44
+ display: none;
45
+ }
client/css/style.css CHANGED
@@ -1,670 +1,14 @@
1
- @import url("https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap");
2
-
3
- /* :root {
4
- --colour-1: #ffffff;
5
- --colour-2: #000000;
6
- --colour-3: #000000;
7
- --colour-4: #000000;
8
- --colour-5: #000000;
9
- --colour-6: #000000;
10
-
11
- --accent: #ffffff;
12
- --blur-bg: #98989866;
13
- --blur-border: #00000040;
14
- --user-input: #000000;
15
- --conversations: #000000;
16
- } */
17
-
18
- :root {
19
- --colour-1: #000000;
20
- --colour-2: #ccc;
21
- --colour-3: #e4d4ff;
22
- --colour-4: #f0f0f0;
23
- --colour-5: #181818;
24
- --colour-6: #242424;
25
-
26
- --accent: #8b3dff;
27
- --blur-bg: #16101b66;
28
- --blur-border: #84719040;
29
- --user-input: #ac87bb;
30
- --conversations: #c7a2ff;
31
- }
32
-
33
- :root {
34
- --font-1: "Inter", sans-serif;
35
- --section-gap: 25px;
36
- --border-radius-1: 8px;
37
- }
38
-
39
- * {
40
- margin: 0;
41
- padding: 0;
42
- box-sizing: border-box;
43
- position: relative;
44
- font-family: var(--font-1);
45
- }
46
-
47
- html,
48
- body {
49
- scroll-behavior: smooth;
50
- overflow: hidden;
51
- }
52
-
53
- body {
54
- padding: var(--section-gap);
55
- background: var(--colour-1);
56
- color: var(--colour-3);
57
- height: 100vh;
58
- }
59
-
60
- .row {
61
- display: flex;
62
- gap: var(--section-gap);
63
- height: 100%;
64
- }
65
-
66
- .box {
67
- backdrop-filter: blur(20px);
68
- -webkit-backdrop-filter: blur(20px);
69
- background-color: var(--blur-bg);
70
- height: 100%;
71
- width: 100%;
72
- border-radius: var(--border-radius-1);
73
- border: 1px solid var(--blur-border);
74
- }
75
-
76
- .conversations {
77
- max-width: 260px;
78
- padding: var(--section-gap);
79
- overflow: auto;
80
- flex-shrink: 0;
81
- display: flex;
82
- flex-direction: column;
83
- justify-content: space-between;
84
- }
85
-
86
- .conversation {
87
- width: 100%;
88
- display: flex;
89
- flex-direction: column;
90
- gap: 15px;
91
- }
92
-
93
- .conversation #messages {
94
- width: 100%;
95
- height: 100%;
96
- display: flex;
97
- flex-direction: column;
98
- overflow: auto;
99
- overflow-wrap: break-word;
100
- padding-bottom: 50px;
101
- }
102
-
103
- .conversation .user-input {
104
- max-height: 200px;
105
- }
106
-
107
- .conversation .user-input input {
108
- font-size: 15px;
109
- width: 100%;
110
- height: 100%;
111
- padding: 12px 15px;
112
- background: none;
113
- border: none;
114
- outline: none;
115
- color: var(--colour-3);
116
- }
117
-
118
- .conversation .user-input input::placeholder {
119
- color: var(--user-input)
120
- }
121
-
122
- .gradient:nth-child(1) {
123
- --top: 0;
124
- --right: 0;
125
- --size: 70vw;
126
- --blur: calc(0.5 * var(--size));
127
- --opacity: 0.3;
128
- animation: zoom_gradient 6s infinite;
129
- }
130
-
131
- .gradient {
132
- position: absolute;
133
- z-index: -1;
134
- border-radius: calc(0.5 * var(--size));
135
- background-color: var(--accent);
136
- background: radial-gradient(circle at center, var(--accent), var(--accent));
137
- width: 70vw;
138
- height: 70vw;
139
- top: 50%;
140
- right: 0;
141
- transform: translateY(-50%);
142
- filter: blur(calc(0.5 * 70vw)) opacity(var(--opacity));
143
- }
144
-
145
- .conversations {
146
- display: flex;
147
- flex-direction: column;
148
- gap: 16px;
149
- }
150
-
151
- .conversations .title {
152
- font-size: 14px;
153
- font-weight: 500;
154
- }
155
-
156
- .conversations .convo {
157
- padding: 8px 12px;
158
- display: flex;
159
- gap: 18px;
160
- align-items: center;
161
- user-select: none;
162
- justify-content: space-between;
163
- }
164
-
165
- .conversations .convo .left {
166
- cursor: pointer;
167
- display: flex;
168
- align-items: center;
169
- gap: 10px;
170
- }
171
-
172
- .conversations i {
173
- color: var(--conversations);
174
- cursor: pointer;
175
- }
176
-
177
- .convo-title {
178
- color: var(--colour-3);
179
- font-size: 14px;
180
- }
181
-
182
- .message {
183
-
184
- width: 100%;
185
- overflow-wrap: break-word;
186
- display: flex;
187
- gap: var(--section-gap);
188
- padding: var(--section-gap);
189
- padding-bottom: 0;
190
- }
191
-
192
- .message:last-child {
193
- animation: 0.6s show_message;
194
- }
195
-
196
- @keyframes show_message {
197
- from {
198
- transform: translateY(10px);
199
- opacity: 0;
200
- }
201
- }
202
-
203
- .message .user {
204
- max-width: 48px;
205
- max-height: 48px;
206
- flex-shrink: 0;
207
- }
208
-
209
- .message .user img {
210
- width: 100%;
211
- height: 100%;
212
- object-fit: cover;
213
- border-radius: 8px;
214
- outline: 1px solid var(--blur-border);
215
- }
216
-
217
- .message .content {
218
- display: flex;
219
- flex-direction: column;
220
- gap: 18px;
221
- }
222
-
223
- .message .content p,
224
- .message .content li,
225
- .message .content code {
226
- font-size: 15px;
227
- line-height: 1.3;
228
- }
229
-
230
- .message .user i {
231
- position: absolute;
232
- bottom: -6px;
233
- right: -6px;
234
- z-index: 1000;
235
- }
236
-
237
- .new_convo {
238
- padding: 8px 12px;
239
- display: flex;
240
- gap: 18px;
241
- align-items: center;
242
- cursor: pointer;
243
- user-select: none;
244
- background: transparent;
245
- border: 1px dashed var(--conversations);
246
- border-radius: var(--border-radius-1);
247
- }
248
-
249
- .new_convo span {
250
- color: var(--colour-3);
251
- font-size: 14px;
252
- }
253
-
254
- .new_convo:hover {
255
- border-style: solid;
256
- }
257
-
258
- .stop_generating {
259
- position: absolute;
260
- bottom: 118px;
261
- /* left: 10px;
262
- bottom: 125px;
263
- right: 8px; */
264
- left: 50%;
265
- transform: translateX(-50%);
266
- z-index: 1000000;
267
- }
268
-
269
- .stop_generating button {
270
- backdrop-filter: blur(20px);
271
- -webkit-backdrop-filter: blur(20px);
272
- background-color: var(--blur-bg);
273
- border-radius: var(--border-radius-1);
274
- border: 1px solid var(--blur-border);
275
- padding: 10px 15px;
276
- color: var(--colour-3);
277
- display: flex;
278
- justify-content: center;
279
- align-items: center;
280
- gap: 12px;
281
- cursor: pointer;
282
- animation: show_popup 0.4s;
283
- }
284
-
285
- @keyframes show_popup {
286
- from {
287
- opacity: 0;
288
- transform: translateY(10px);
289
- }
290
- }
291
-
292
- @keyframes hide_popup {
293
- to {
294
- opacity: 0;
295
- transform: translateY(10px);
296
- }
297
- }
298
-
299
- .stop_generating-hiding button {
300
- animation: hide_popup 0.4s;
301
- }
302
-
303
- .stop_generating-hidden button {
304
- display: none;
305
- }
306
-
307
- .typing {
308
- position: absolute;
309
- top: -25px;
310
- left: 0;
311
- font-size: 14px;
312
- animation: show_popup 0.4s;
313
- }
314
-
315
- .typing-hiding {
316
- animation: hide_popup 0.4s;
317
- }
318
-
319
- .typing-hidden {
320
- display: none;
321
- }
322
-
323
- input[type="checkbox"] {
324
- height: 0;
325
- width: 0;
326
- display: none;
327
- }
328
-
329
- label {
330
- cursor: pointer;
331
- text-indent: -9999px;
332
- width: 50px;
333
- height: 30px;
334
- backdrop-filter: blur(20px);
335
- -webkit-backdrop-filter: blur(20px);
336
- background-color: var(--blur-bg);
337
- border-radius: var(--border-radius-1);
338
- border: 1px solid var(--blur-border);
339
- display: block;
340
- border-radius: 100px;
341
- position: relative;
342
- overflow: hidden;
343
- transition: 0.33s;
344
- }
345
-
346
- label:after {
347
- content: "";
348
- position: absolute;
349
- top: 50%;
350
- transform: translateY(-50%);
351
- left: 5px;
352
- width: 20px;
353
- height: 20px;
354
- background: var(--colour-3);
355
- border-radius: 90px;
356
- transition: 0.33s;
357
- }
358
-
359
- input:checked+label {
360
- background: var(--blur-border);
361
- }
362
-
363
- input:checked+label:after {
364
- left: calc(100% - 5px - 20px);
365
- }
366
-
367
- .buttons {
368
- display: flex;
369
- align-items: center;
370
- justify-content: left;
371
- width: 100%;
372
- }
373
-
374
- .field {
375
- height: fit-content;
376
- display: flex;
377
- align-items: center;
378
- gap: 16px;
379
- padding-right: 15px
380
- }
381
-
382
- .field .about {
383
- font-size: 14px;
384
- color: var(--colour-3);
385
- }
386
-
387
-
388
- select {
389
- -webkit-border-radius: 8px;
390
- -moz-border-radius: 8px;
391
- border-radius: 8px;
392
-
393
- -webkit-backdrop-filter: blur(20px);
394
- backdrop-filter: blur(20px);
395
-
396
- cursor: pointer;
397
- background-color: var(--blur-bg);
398
- border: 1px solid var(--blur-border);
399
- color: var(--colour-3);
400
- display: block;
401
- position: relative;
402
- overflow: hidden;
403
- outline: none;
404
- padding: 8px 16px;
405
-
406
- appearance: none;
407
- }
408
-
409
- .input-box {
410
- display: flex;
411
- align-items: center;
412
- padding-right: 15px;
413
- cursor: pointer;
414
- }
415
-
416
- .info {
417
- padding: 8px 12px;
418
- display: flex;
419
- gap: 18px;
420
- align-items: center;
421
- user-select: none;
422
- background: transparent;
423
- border-radius: var(--border-radius-1);
424
- width: 100%;
425
- border: 1px dashed var(--conversations);
426
- text-decoration: none;
427
- color: inherit
428
- }
429
-
430
- .bottom_buttons {
431
- width: 100%;
432
- display: flex;
433
- flex-direction: column;
434
- gap: 10px;
435
- }
436
-
437
- .bottom_buttons button {
438
- padding: 8px 12px;
439
- display: flex;
440
- gap: 18px;
441
- align-items: center;
442
- cursor: pointer;
443
- user-select: none;
444
- background: transparent;
445
- border: 1px solid #c7a2ff;
446
- border-radius: var(--border-radius-1);
447
- width: 100%;
448
- }
449
-
450
- .bottom_buttons button span {
451
- color: var(--colour-3);
452
- font-size: 14px;
453
- }
454
-
455
- .conversations .top {
456
- display: flex;
457
- flex-direction: column;
458
- gap: 16px;
459
- overflow: auto;
460
- }
461
-
462
- #cursor {
463
- line-height: 17px;
464
- margin-left: 3px;
465
- -webkit-animation: blink 0.8s infinite;
466
- animation: blink 0.8s infinite;
467
- width: 7px;
468
- height: 15px;
469
- }
470
-
471
- @keyframes blink {
472
- 0% {
473
- background: #ffffff00;
474
- }
475
-
476
- 50% {
477
- background: white;
478
- }
479
-
480
- 100% {
481
- background: #ffffff00;
482
- }
483
- }
484
-
485
- @-webkit-keyframes blink {
486
- 0% {
487
- background: #ffffff00;
488
- }
489
-
490
- 50% {
491
- background: white;
492
- }
493
-
494
- 100% {
495
- background: #ffffff00;
496
- }
497
- }
498
-
499
-
500
- ol,
501
- ul {
502
- padding-left: 20px;
503
- }
504
-
505
-
506
- @keyframes spinner {
507
- to {
508
- transform: rotate(360deg);
509
- }
510
- }
511
-
512
- .spinner:before {
513
- content: '';
514
- box-sizing: border-box;
515
- position: absolute;
516
- top: 50%;
517
- left: 45%;
518
- width: 20px;
519
- height: 20px;
520
-
521
- border-radius: 50%;
522
- border: 1px solid var(--conversations);
523
- border-top-color: white;
524
- animation: spinner .6s linear infinite;
525
- }
526
-
527
- .grecaptcha-badge {
528
- visibility: hidden;
529
- }
530
-
531
- .mobile-sidebar {
532
- display: none !important;
533
- position: absolute;
534
- z-index: 100000;
535
- top: 0;
536
- left: 0;
537
- margin: 10px;
538
- font-size: 20px;
539
- cursor: pointer;
540
- backdrop-filter: blur(20px);
541
- -webkit-backdrop-filter: blur(20px);
542
- background-color: var(--blur-bg);
543
- border-radius: 10px;
544
- border: 1px solid var(--blur-border);
545
- width: 40px;
546
- height: 40px;
547
- justify-content: center;
548
- align-items: center;
549
- transition: 0.33s;
550
- }
551
-
552
- .mobile-sidebar i {
553
- transition: 0.33s;
554
- }
555
-
556
- .rotated {
557
- transform: rotate(360deg);
558
- }
559
-
560
- @media screen and (max-width: 990px) {
561
- .conversations {
562
- display: none;
563
- width: 100%;
564
- max-width: none;
565
- }
566
-
567
- .buttons {
568
- align-items: flex-start;
569
- flex-wrap: wrap;
570
- gap: 15px;
571
- }
572
-
573
- .field {
574
- width: fit-content;
575
- }
576
-
577
- .mobile-sidebar {
578
- display: flex !important;
579
- }
580
- }
581
-
582
- @media screen and (max-height: 640px) {
583
- body {
584
- height: 87vh
585
- }
586
- }
587
-
588
-
589
- .shown {
590
- display: flex;
591
- }
592
-
593
-
594
- a:-webkit-any-link {
595
- color: var(--accent);
596
- }
597
-
598
- .conversation .user-input textarea {
599
- font-size: 15px;
600
- width: 100%;
601
- height: 100%;
602
- padding: 12px 15px;
603
- background: none;
604
- border: none;
605
- outline: none;
606
- color: var(--colour-3);
607
-
608
- resize: vertical;
609
- max-height: 150px;
610
- min-height: 80px;
611
- }
612
-
613
- /* style for hljs copy */
614
- .hljs-copy-wrapper {
615
- position: relative;
616
- overflow: hidden
617
- }
618
-
619
- .hljs-copy-wrapper:hover .hljs-copy-button,
620
- .hljs-copy-button:focus {
621
- transform: translateX(0)
622
- }
623
-
624
- .hljs-copy-button {
625
- position: absolute;
626
- transform: translateX(calc(100% + 1.125em));
627
- top: 1em;
628
- right: 1em;
629
- width: 2rem;
630
- height: 2rem;
631
- text-indent: -9999px;
632
- color: #fff;
633
- border-radius: .25rem;
634
- border: 1px solid #ffffff22;
635
- background-color: #2d2b57;
636
- background-image: url('data:image/svg+xml;utf-8,<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M6 5C5.73478 5 5.48043 5.10536 5.29289 5.29289C5.10536 5.48043 5 5.73478 5 6V20C5 20.2652 5.10536 20.5196 5.29289 20.7071C5.48043 20.8946 5.73478 21 6 21H18C18.2652 21 18.5196 20.8946 18.7071 20.7071C18.8946 20.5196 19 20.2652 19 20V6C19 5.73478 18.8946 5.48043 18.7071 5.29289C18.5196 5.10536 18.2652 5 18 5H16C15.4477 5 15 4.55228 15 4C15 3.44772 15.4477 3 16 3H18C18.7956 3 19.5587 3.31607 20.1213 3.87868C20.6839 4.44129 21 5.20435 21 6V20C21 20.7957 20.6839 21.5587 20.1213 22.1213C19.5587 22.6839 18.7957 23 18 23H6C5.20435 23 4.44129 22.6839 3.87868 22.1213C3.31607 21.5587 3 20.7957 3 20V6C3 5.20435 3.31607 4.44129 3.87868 3.87868C4.44129 3.31607 5.20435 3 6 3H8C8.55228 3 9 3.44772 9 4C9 4.55228 8.55228 5 8 5H6Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M7 3C7 1.89543 7.89543 1 9 1H15C16.1046 1 17 1.89543 17 3V5C17 6.10457 16.1046 7 15 7H9C7.89543 7 7 6.10457 7 5V3ZM15 3H9V5H15V3Z" fill="white"/></svg>');
637
- background-repeat: no-repeat;
638
- background-position: center;
639
- transition: background-color 200ms ease, transform 200ms ease-out
640
- }
641
-
642
- .hljs-copy-button:hover {
643
- border-color: #ffffff44
644
- }
645
-
646
- .hljs-copy-button:active {
647
- border-color: #ffffff66
648
- }
649
-
650
- .hljs-copy-button[data-copied="true"] {
651
- text-indent: 0;
652
- width: auto;
653
- background-image: none
654
- }
655
-
656
- @media(prefers-reduced-motion) {
657
- .hljs-copy-button {
658
- transition: none
659
- }
660
- }
661
-
662
- .hljs-copy-alert {
663
- clip: rect(0 0 0 0);
664
- clip-path: inset(50%);
665
- height: 1px;
666
- overflow: hidden;
667
- position: absolute;
668
- white-space: nowrap;
669
- width: 1px
670
- }
 
1
+ @import "./global.css";
2
+ @import "./hljs.css";
3
+ @import "./main.css";
4
+ @import "./sidebar.css";
5
+ @import "./conversation.css";
6
+ @import "./background.css";
7
+ @import "./message.css";
8
+ @import "./stop-generating.css";
9
+ @import "./typing.css";
10
+ @import "./checkbox.css";
11
+ @import "./label.css";
12
+ @import "./buttons.css";
13
+ @import "./field.css";
14
+ @import "./select.css";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
client/css/typing.css ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .typing {
2
+ position: absolute;
3
+ top: -25px;
4
+ left: 0;
5
+ font-size: 14px;
6
+ animation: show_popup 0.4s;
7
+ }
8
+
9
+ .typing-hiding {
10
+ animation: hide_popup 0.4s;
11
+ }
12
+
13
+ .typing-hidden {
14
+ display: none;
15
+ }
client/html/index.html CHANGED
@@ -26,39 +26,6 @@
26
  const user_image = `<img src="/assets/img/user.png" alt="User Avatar">`;
27
  const gpt_image = `<img src="/assets/img/gpt.png" alt="GPT Avatar">`;
28
  </script>
29
- <style>
30
- .hljs {
31
- color: #e9e9f4;
32
- background: #28293629;
33
- border-radius: var(--border-radius-1);
34
- border: 1px solid var(--blur-border);
35
- font-size: 15px;
36
- }
37
-
38
- #message-input {
39
- margin-right: 30px;
40
- height: 80px;
41
- }
42
-
43
- #message-input::-webkit-scrollbar {
44
- width: 5px;
45
- }
46
-
47
- /* Track */
48
- #message-input::-webkit-scrollbar-track {
49
- background: #f1f1f1;
50
- }
51
-
52
- /* Handle */
53
- #message-input::-webkit-scrollbar-thumb {
54
- background: #c7a2ff;
55
- }
56
-
57
- /* Handle on hover */
58
- #message-input::-webkit-scrollbar-thumb:hover {
59
- background: #8b3dff;
60
- }
61
- </style>
62
  <script src="/assets/js/highlight.min.js"></script>
63
  <script src="/assets/js/highlightjs-copy.min.js"></script>
64
  <script>
@@ -68,11 +35,11 @@
68
  </head>
69
 
70
  <body>
71
- <div class="gradient"></div>
72
- <div class="row">
73
- <div class="box conversations">
74
  <div class="top">
75
- <button class="new_convo" onclick="new_conversation()">
76
  <i class="fa-regular fa-plus"></i>
77
  <span>New Conversation</span>
78
  </button>
@@ -85,7 +52,7 @@
85
  </button>
86
  <a class="info" href="https://github.com/ramonvc/gptfree-jailbreak-webui" target="_blank">
87
  <i class="fa-brands fa-github"></i>
88
- <span class="convo-title">
89
  @ramonvc<br />
90
  Version: 0.0.2-Alpha<br />
91
  </span>
@@ -93,7 +60,7 @@
93
  </div>
94
  </div>
95
  <div class="conversation">
96
- <div class="stop_generating stop_generating-hidden">
97
  <button id="cancelButton">
98
  <span>Stop Generating</span>
99
  <i class="fa-regular fa-stop"></i>
@@ -124,7 +91,6 @@
124
  <option value="text-gpt-0035-render-sha-0" selected>gpt-3.5-turbo</option>
125
  <option disabled value="text-gpt-0040-render-sha-0">gpt-4 (coming soon)</option>
126
  </select>
127
- <!-- <span class="about">Model</span> -->
128
  </div>
129
  <div class="field">
130
  <select name="jailbreak" id="jailbreak">
 
26
  const user_image = `<img src="/assets/img/user.png" alt="User Avatar">`;
27
  const gpt_image = `<img src="/assets/img/gpt.png" alt="GPT Avatar">`;
28
  </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  <script src="/assets/js/highlight.min.js"></script>
30
  <script src="/assets/js/highlightjs-copy.min.js"></script>
31
  <script>
 
35
  </head>
36
 
37
  <body>
38
+ <div class="background-gradient"></div>
39
+ <div class="main-container">
40
+ <div class="box sidebar">
41
  <div class="top">
42
+ <button class="new-conversation" onclick="new_conversation()">
43
  <i class="fa-regular fa-plus"></i>
44
  <span>New Conversation</span>
45
  </button>
 
52
  </button>
53
  <a class="info" href="https://github.com/ramonvc/gptfree-jailbreak-webui" target="_blank">
54
  <i class="fa-brands fa-github"></i>
55
+ <span class="conversation-title">
56
  @ramonvc<br />
57
  Version: 0.0.2-Alpha<br />
58
  </span>
 
60
  </div>
61
  </div>
62
  <div class="conversation">
63
+ <div class="stop-generating stop-generating-hidden">
64
  <button id="cancelButton">
65
  <span>Stop Generating</span>
66
  <i class="fa-regular fa-stop"></i>
 
91
  <option value="text-gpt-0035-render-sha-0" selected>gpt-3.5-turbo</option>
92
  <option disabled value="text-gpt-0040-render-sha-0">gpt-4 (coming soon)</option>
93
  </select>
 
94
  </div>
95
  <div class="field">
96
  <select name="jailbreak" id="jailbreak">
client/js/chat.js CHANGED
@@ -7,7 +7,7 @@ const message_box = document.getElementById(`messages`);
7
  const message_input = document.getElementById(`message-input`);
8
  const box_conversations = document.querySelector(`.top`);
9
  const spinner = box_conversations.querySelector(".spinner");
10
- const stop_generating = document.querySelector(`.stop_generating`);
11
  const send_button = document.querySelector(`#send-button`);
12
  let prompt_lock = false;
13
 
@@ -44,11 +44,11 @@ const handle_ask = async () => {
44
  };
45
 
46
  const remove_cancel_button = async () => {
47
- stop_generating.classList.add(`stop_generating-hiding`);
48
 
49
  setTimeout(() => {
50
- stop_generating.classList.remove(`stop_generating-hiding`);
51
- stop_generating.classList.add(`stop_generating-hidden`);
52
  }, 300);
53
  };
54
 
@@ -68,7 +68,7 @@ const ask_gpt = async (message) => {
68
  window.text = ``;
69
  window.token = message_id();
70
 
71
- stop_generating.classList.remove(`stop_generating-hidden`);
72
 
73
  message_box.innerHTML += `
74
  <div class="message">
@@ -326,10 +326,10 @@ const load_conversations = async (limit, offset, loader) => {
326
 
327
  for (conversation of conversations) {
328
  box_conversations.innerHTML += `
329
- <div class="convo">
330
  <div class="left" onclick="set_conversation('${conversation.id}')">
331
  <i class="fa-regular fa-comments"></i>
332
- <span class="convo-title">${conversation.title}</span>
333
  </div>
334
  <i onclick="delete_conversation('${conversation.id}')" class="fa-regular fa-trash"></i>
335
  </div>
@@ -415,7 +415,7 @@ window.onload = async () => {
415
  };
416
 
417
  document.querySelector(".mobile-sidebar").addEventListener("click", (event) => {
418
- const sidebar = document.querySelector(".conversations");
419
 
420
  if (sidebar.classList.contains("shown")) {
421
  sidebar.classList.remove("shown");
 
7
  const message_input = document.getElementById(`message-input`);
8
  const box_conversations = document.querySelector(`.top`);
9
  const spinner = box_conversations.querySelector(".spinner");
10
+ const stop_generating = document.querySelector(`.stop-generating`);
11
  const send_button = document.querySelector(`#send-button`);
12
  let prompt_lock = false;
13
 
 
44
  };
45
 
46
  const remove_cancel_button = async () => {
47
+ stop_generating.classList.add(`stop-generating-hiding`);
48
 
49
  setTimeout(() => {
50
+ stop_generating.classList.remove(`stop-generating-hiding`);
51
+ stop_generating.classList.add(`stop-generating-hidden`);
52
  }, 300);
53
  };
54
 
 
68
  window.text = ``;
69
  window.token = message_id();
70
 
71
+ stop_generating.classList.remove(`stop-generating-hidden`);
72
 
73
  message_box.innerHTML += `
74
  <div class="message">
 
326
 
327
  for (conversation of conversations) {
328
  box_conversations.innerHTML += `
329
+ <div class="conversation-sidebar">
330
  <div class="left" onclick="set_conversation('${conversation.id}')">
331
  <i class="fa-regular fa-comments"></i>
332
+ <span class="conversation-title">${conversation.title}</span>
333
  </div>
334
  <i onclick="delete_conversation('${conversation.id}')" class="fa-regular fa-trash"></i>
335
  </div>
 
415
  };
416
 
417
  document.querySelector(".mobile-sidebar").addEventListener("click", (event) => {
418
+ const sidebar = document.querySelector(".sidebar");
419
 
420
  if (sidebar.classList.contains("shown")) {
421
  sidebar.classList.remove("shown");