From c1ce2fed3d0c9c9cee01a4da893d493238e63b38 Mon Sep 17 00:00:00 2001 From: hacki Date: Sun, 18 Feb 2024 23:58:32 +0100 Subject: [PATCH 1/4] A LOT of improvements to the UX/UI and new fonctionnalities --- front/_colors.scss | 5 + front/_inputs.scss | 0 front/_misc.scss | 23 ++++ front/_recents.scss | 65 +++++++++++ front/index.html | 64 +++++++++++ front/style.scss | 111 ++++++++++++++++++ static/app.js | 88 +++++++++++---- static/favicon.ico | Bin 0 -> 4286 bytes static/favicon.svg | 1 + static/style.css | 268 +++++++++++++++++++++++++++++--------------- 10 files changed, 508 insertions(+), 117 deletions(-) create mode 100644 front/_colors.scss create mode 100644 front/_inputs.scss create mode 100644 front/_misc.scss create mode 100644 front/_recents.scss create mode 100644 front/index.html create mode 100644 front/style.scss create mode 100644 static/favicon.ico create mode 100644 static/favicon.svg diff --git a/front/_colors.scss b/front/_colors.scss new file mode 100644 index 0000000..6a09684 --- /dev/null +++ b/front/_colors.scss @@ -0,0 +1,5 @@ +$accent: #d30f45; +$background: #09090b; +$border: #363636; +$text: #f2f2f7; +$placeholder: #888; \ No newline at end of file diff --git a/front/_inputs.scss b/front/_inputs.scss new file mode 100644 index 0000000..e69de29 diff --git a/front/_misc.scss b/front/_misc.scss new file mode 100644 index 0000000..5770e2c --- /dev/null +++ b/front/_misc.scss @@ -0,0 +1,23 @@ +@use 'colors' as *; + +::selection { + background-color: $accent; + color: $text; +} + +::-webkit-scrollbar { + width: 9px; +} + +::-webkit-scrollbar-track { + background-color: $background; +} + +::-webkit-scrollbar-thumb { + background-color: #444; + border-radius: 9px; +} + +::-webkit-scrollbar-thumb:hover { + background-color: $text; +} \ No newline at end of file diff --git a/front/_recents.scss b/front/_recents.scss new file mode 100644 index 0000000..70cabde --- /dev/null +++ b/front/_recents.scss @@ -0,0 +1,65 @@ +@use 'colors' as *; + +section#recent-plaks { + bottom: 1rem; + display: flex; + flex-flow: column wrap; + gap: 9px; + position: absolute; + right: 1rem; + transition: .15s ease-in-out; + user-select: none; + + .title { + align-items: center; + gap: 18px; + transition: .15s ease-in-out; + + &:hover { + border-color: #555; + } + } + + .recent-plak { + align-items: center; + border: 3px solid $border; + font-weight: 500; + justify-content: space-between; + outline: none; + padding: 8px 18px; + text-decoration: none; + transition: .15s ease-in-out; + width: 12rem; + + &:focus-visible { + border: 2px solid #bbb; + } + + svg { + border-radius: 15px; + cursor: pointer; + height: 22px; + padding: 5px; + stroke: $text; + stroke-width: 2.25; + width: 22px; + transition: .1s ease-in-out; + + &:hover { + background-color: $border; + } + } + } + + a { + color: inherit; + text-decoration: none; + } +} + +h3 { + font-size: 1.5rem; + margin: 0; + transition: .15s ease-in-out; + width: fit-content; +} \ No newline at end of file diff --git a/front/index.html b/front/index.html new file mode 100644 index 0000000..13413ad --- /dev/null +++ b/front/index.html @@ -0,0 +1,64 @@ + + + + + + + + + + + New paste + + + + + +
+
1
+ +
+ +
+
+

Recent plaks

+ + + +
+
+ + + \ No newline at end of file diff --git a/front/style.scss b/front/style.scss new file mode 100644 index 0000000..9397f15 --- /dev/null +++ b/front/style.scss @@ -0,0 +1,111 @@ +@use 'colors' as *; + +@use 'inputs'; +@use 'recents'; +@use 'misc'; + +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=JetBrains+Mono&display=swap'); + +body { + background-color: $background; + color: $text; + font: 400 16px/2 "Inter", "system-ui", sans-serif; + margin: 0; + overflow-x: hidden; +} + +.fr { + display: flex; + flex-flow: row wrap; +} + +#line-numbers, +#content { + font: 400 15px/1.6 "JetBrains Mono", monospace; +} + +#line-numbers { + color: $placeholder; + padding: 16px 1px; + text-align: center; + white-space: pre; + width: 30px; +} + +#content { + color: $text; + height: 100%; + min-height: 90vh; + padding: 16px 16px 0 16px; + width: calc(100vw - 65px); +} + +.menu { + gap: 18px; + position: fixed; + right: 16px; + top: 16px; + + svg { + cursor: pointer; + height: 24px; + fill: none; + margin-bottom: -6px; + stroke: $text; + stroke-width: 2; + width: 24px; + } +} + +input, +select { + background-color: $background; + border: 2px solid $border; + color: $text; + font: 500 14px/2 "Inter", "system-ui", sans-serif; + outline: none; + padding: 3px 10px; + width: 150px; + transition: .15s ease; + + &::placeholder { + color: $placeholder; + } + + &:hover { + border-color: #555; + } + + &:focus-visible { + border: 2px solid #bbb; + } +} + +select { + padding: 8px 10px; +} + +select:focus { + background-color: $background; + transition: none; +} + +option { + background-color: $background; + color: $text; + + &:focus { + background-color: $accent; + color: $background; + } +} + +button, +textarea { + background-color: inherit; + border: none; + margin: 0; + outline: none; + resize: none; +} + diff --git a/static/app.js b/static/app.js index bef2c56..0e89f6a 100644 --- a/static/app.js +++ b/static/app.js @@ -1,31 +1,71 @@ -const codeEditor = document.getElementById('content'); -const lineCounter = document.getElementById('lines'); +const editor = document.getElementById('content'); +const filenameSelector = document.getElementById('filename'); +const recentPlaksDiv = document.getElementById('recent-plaks'); +const lineNumbersDiv = document.getElementById('line-numbers'); -let lineCountCache = 0; +function updateLn() { + const lines = editor.value.split('\n').length; + const lineNumbers = Array.from({ length: lines }, (_, i) => i + 1).join('\n'); -// Update line counter -function updateLineCounter() { - const lineCount = codeEditor.value.split('\n').length; - - if (lineCountCache !== lineCount) { - const outarr = Array.from({length: lineCount}, (_, index) => index + 1); - lineCounter.value = outarr.join('\n'); - } - - lineCountCache = lineCount; + lineNumbersDiv.textContent = lineNumbers; } -codeEditor.addEventListener('input', updateLineCounter); +function updateTitle() { + document.title = filenameSelector.value == '' ? 'New paste' : ` *${filenameSelector.value} - Plakken`; +} -codeEditor.addEventListener('keydown', (e) => { - if (e.key === 'Tab') { - e.preventDefault(); +function getRecentPlaksFromStorage() { + return new Set(JSON.parse(localStorage.getItem('recentPlaks')) || []); +} - const {value, selectionStart, selectionEnd} = codeEditor; - codeEditor.value = `${value.slice(0, selectionStart)}\t${value.slice(selectionEnd)}`; - codeEditor.setSelectionRange(selectionStart + 1, selectionStart + 1); - updateLineCounter(); - } -}); +function updateLocalStorage() { + localStorage.setItem('recentPlaks', JSON.stringify(Array.from(recentPlaks))); +} -updateLineCounter(); +function addRecentPlak(plakId) { + recentPlaks.add(plakId); + updateLocalStorage(); +} + +function deleteRecentPlak(plakId) { + const plak = document.querySelector(`[href="/${plakId}/"]`).parentElement; + + plak.style.transform = 'translateX(150%)'; + setTimeout(() => plak.remove(), 250); + + recentPlaks.delete(plakId); + updateLocalStorage(); +} + +function createRecentPlakComponent(plak) { + const div = document.createElement('div'); + div.classList.add('recent-plak', 'fr'); + + const a = document.createElement('a'); + a.href = `/${plak}/`; + a.textContent = plak; + + const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); + svg.innerHTML = ``; + svg.id = 'cross'; + svg.setAttribute('viewBox', '0 0 24 24'); + svg.onclick = () => deleteRecentPlak(plak); + + div.appendChild(a); + div.appendChild(svg); + + return div; +} + +filenameSelector.addEventListener('input', updateTitle); +editor.addEventListener('input', updateLn); + +let recentPlaks = getRecentPlaksFromStorage(); + +if (recentPlaks === null) { + recentPlaks = []; + localStorage.setItem('recentPlaks', JSON.stringify(recentPlaks)); +} else { + for (const plak of recentPlaks) + recentPlaksDiv.appendChild(createRecentPlakComponent(plak)); +} diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1f47bd4a96a611cc483aa1cecb1adde0cb610e26 GIT binary patch literal 4286 zcmd5=OHWfl6rM&{AR9G-$c{*wxG>d~F}{~3Zge3r_zTpyb?E{Z#-#zDQGCZHDhVqM zTCRvj#Q*_B5mO&UMNtrh@@T=&@7(Ea8feS3T)7@{I_mJ8JqyN)C0#}%pEcRJsbzF3;=t&fmOo2rFGdOU|p-` zrS&(!w3sJ%$yvb}AP@uwqVtAx>WC5G7GuBovF2eHG4|4s$>MO`U5J z?@6Ciu#cr3mEY~|f>lJVU2GxykR_yBCY4JpXHUemnSfE5E7RcxMjA7DDHoJnAp0bK3cqRP(%rbMafS3t4aN z=m1Xf-RR@KoMt48sXu!d^J|`Ip9R~*XCtEwCy9>--x8l^QNy~&3u$JoNu3`i=U#~9 Uq10Ta=k0}!ZelwB2k@%>3t(Q \ No newline at end of file diff --git a/static/style.css b/static/style.css index cf339b3..41531dd 100644 --- a/static/style.css +++ b/static/style.css @@ -1,98 +1,180 @@ -:root { - --accent: #be0560; - --background: #121212; - --border: #333; - --text: #e6e6e6; - --placeholder: #666; +@import url("https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=JetBrains+Mono&display=swap"); +section#recent-plaks { + bottom: 1rem; + display: flex; + flex-flow: column wrap; + gap: 9px; + position: absolute; + right: 1rem; + transition: 0.15s ease-in-out; + user-select: none; +} +section#recent-plaks .title { + align-items: center; + gap: 18px; + transition: 0.15s ease-in-out; +} +section#recent-plaks .title:hover { + border-color: #555; +} +section#recent-plaks .recent-plak { + align-items: center; + border: 3px solid #363636; + font-weight: 500; + justify-content: space-between; + outline: none; + padding: 8px 18px; + text-decoration: none; + transition: 0.15s ease-in-out; + width: 12rem; +} +section#recent-plaks .recent-plak:focus-visible { + border: 2px solid #bbb; +} +section#recent-plaks .recent-plak svg { + border-radius: 15px; + cursor: pointer; + height: 22px; + padding: 5px; + stroke: #f2f2f7; + stroke-width: 2.25; + width: 22px; + transition: 0.1s ease-in-out; +} +section#recent-plaks .recent-plak svg:hover { + background-color: #363636; +} +section#recent-plaks a { + color: inherit; + text-decoration: none; } -body { - background-color: var(--background); - color: var(--text); - font: 400 15px/2 "system-ui", monospace; - margin: 0; -} - -form { - display: flex; - flex-flow: row wrap; -} - -#lines { - color: var(--placeholder); - font: 400 14px/1.6 "JetBrains Mono", monospace; - height: calc(100vh - 29px); - overflow-y: hidden; - padding: 8px 0; - text-align: center; - user-select: none; - width: 26px; -} - -input, select { - background-color: var(--background); - border: 2px solid var(--border); - border-radius: 2px; - color: var(--text); - font-size: 13px; - outline: none; - padding: 6px 8px; - transition: border .15s ease; -} - -input:hover, select:hover { - border-color: var(--text); -} - -button, textarea { - background-color: inherit; - border: none; - outline: none; - resize: none; -} - -#content { - color: var(--text); - font: 400 14px/1.6 "JetBrains Mono", monospace; - height: calc(100vh - 29px); - padding: 8px; - width: calc(100vw - 45px); -} - -nav { - top: 1rem; - display: flex; - flex-flow: row wrap; - position: absolute; - right: 12px; -} - -ul { - display: flex; - flex-flow: row wrap; - gap: 36px; - list-style: none; - margin: 0; - padding: 0 1.9rem; -} - -svg { - cursor: pointer; - height: 24px; - fill: var(--text); - transition: .15s ease; - width: 24px; -} - -svg:hover { - stroke: #fff; -} - -input:focus-visible, select:focus-visible { - border: 2px solid var(--text); +h3 { + font-size: 1.5rem; + margin: 0; + transition: 0.15s ease-in-out; + width: fit-content; } ::selection { - background-color: var(--accent); - color: #fff; -} \ No newline at end of file + background-color: #d30f45; + color: #f2f2f7; +} + +::-webkit-scrollbar { + width: 9px; +} + +::-webkit-scrollbar-track { + background-color: #09090b; +} + +::-webkit-scrollbar-thumb { + background-color: #444; + border-radius: 9px; +} + +::-webkit-scrollbar-thumb:hover { + background-color: #f2f2f7; +} + +body { + background-color: #09090b; + color: #f2f2f7; + font: 400 16px/2 "Inter", "system-ui", sans-serif; + margin: 0; + overflow-x: hidden; +} + +.fr { + display: flex; + flex-flow: row wrap; +} + +#line-numbers, +#content { + font: 400 15px/1.6 "JetBrains Mono", monospace; +} + +#line-numbers { + color: #888; + padding: 16px 1px; + text-align: center; + white-space: pre; + width: 30px; +} + +#content { + color: #f2f2f7; + height: 100%; + min-height: 90vh; + padding: 16px 16px 0 16px; + width: calc(100vw - 65px); +} + +.menu { + gap: 18px; + position: fixed; + right: 16px; + top: 16px; +} +.menu svg { + cursor: pointer; + height: 24px; + fill: none; + margin-bottom: -6px; + stroke: #f2f2f7; + stroke-width: 2; + width: 24px; +} + +input, +select { + background-color: #09090b; + border: 2px solid #363636; + color: #f2f2f7; + font: 500 14px/2 "Inter", "system-ui", sans-serif; + outline: none; + padding: 3px 10px; + width: 150px; + transition: 0.15s ease; +} +input::placeholder, +select::placeholder { + color: #888; +} +input:hover, +select:hover { + border-color: #555; +} +input:focus-visible, +select:focus-visible { + border: 2px solid #bbb; +} + +select { + padding: 8px 10px; +} + +select:focus { + background-color: #09090b; + transition: none; +} + +option { + background-color: #09090b; + color: #f2f2f7; +} +option:focus { + background-color: #d30f45; + color: #09090b; +} + +button, +textarea { + background-color: inherit; + border: none; + margin: 0; + outline: none; + resize: none; +} From 44486ba59afa5c3ec10c27f909b3e5991a6a458d Mon Sep 17 00:00:00 2001 From: hacki Date: Mon, 26 Feb 2024 01:24:05 +0100 Subject: [PATCH 2/4] made UI more consistent, fixed a bug --- .env | 2 +- front/_colors.scss | 4 +- front/style.scss | 6 +-- static/app.js | 2 +- static/index.html | 114 ++++++++++++++++++++++----------------------- static/style.css | 31 ++++++------ 6 files changed, 78 insertions(+), 81 deletions(-) diff --git a/.env b/.env index a7c0978..c92e397 100644 --- a/.env +++ b/.env @@ -1,4 +1,4 @@ -PLAKKEN_LISTEN=:3000 +PLAKKEN_LISTEN=:5000 PLAKKEN_REDIS_ADDRESS=localhost:6379 PLAKKEN_REDIS_USER= PLAKKEN_REDIS_PASSWORD= diff --git a/front/_colors.scss b/front/_colors.scss index 6a09684..573d933 100644 --- a/front/_colors.scss +++ b/front/_colors.scss @@ -1,5 +1,5 @@ $accent: #d30f45; -$background: #09090b; +$background: #0f0f0f; $border: #363636; -$text: #f2f2f7; +$text: #e5e5e7; $placeholder: #888; \ No newline at end of file diff --git a/front/style.scss b/front/style.scss index 9397f15..3df0cd7 100644 --- a/front/style.scss +++ b/front/style.scss @@ -21,7 +21,7 @@ body { #line-numbers, #content { - font: 400 15px/1.6 "JetBrains Mono", monospace; + font: 400 14px/1.6 "JetBrains Mono", monospace; } #line-numbers { @@ -83,6 +83,7 @@ select { select { padding: 8px 10px; + width: fit-content; } select:focus { @@ -107,5 +108,4 @@ textarea { margin: 0; outline: none; resize: none; -} - +} \ No newline at end of file diff --git a/static/app.js b/static/app.js index 0e89f6a..1e7da49 100644 --- a/static/app.js +++ b/static/app.js @@ -11,7 +11,7 @@ function updateLn() { } function updateTitle() { - document.title = filenameSelector.value == '' ? 'New paste' : ` *${filenameSelector.value} - Plakken`; + document.title = filenameSelector.value == '' ? 'New paste' : ` ${filenameSelector.value} (Unsaved) - Plakken`; } function getRecentPlaksFromStorage() { diff --git a/static/index.html b/static/index.html index 8459130..cda5724 100644 --- a/static/index.html +++ b/static/index.html @@ -1,67 +1,63 @@ + - - - - - - New plak • Plakken - + + + + + + + New plak • Plakken + + + -
-
- - -
-
- - - -
+ +
1
+
+ +
+
+

Recent plaks

+ + + +
+
+ \ No newline at end of file diff --git a/static/style.css b/static/style.css index 41531dd..c8031a4 100644 --- a/static/style.css +++ b/static/style.css @@ -36,7 +36,7 @@ section#recent-plaks .recent-plak svg { cursor: pointer; height: 22px; padding: 5px; - stroke: #f2f2f7; + stroke: #e5e5e7; stroke-width: 2.25; width: 22px; transition: 0.1s ease-in-out; @@ -58,7 +58,7 @@ h3 { ::selection { background-color: #d30f45; - color: #f2f2f7; + color: #e5e5e7; } ::-webkit-scrollbar { @@ -66,7 +66,7 @@ h3 { } ::-webkit-scrollbar-track { - background-color: #09090b; + background-color: #0f0f0f; } ::-webkit-scrollbar-thumb { @@ -75,12 +75,12 @@ h3 { } ::-webkit-scrollbar-thumb:hover { - background-color: #f2f2f7; + background-color: #e5e5e7; } body { - background-color: #09090b; - color: #f2f2f7; + background-color: #0f0f0f; + color: #e5e5e7; font: 400 16px/2 "Inter", "system-ui", sans-serif; margin: 0; overflow-x: hidden; @@ -93,7 +93,7 @@ body { #line-numbers, #content { - font: 400 15px/1.6 "JetBrains Mono", monospace; + font: 400 14px/1.6 "JetBrains Mono", monospace; } #line-numbers { @@ -105,7 +105,7 @@ body { } #content { - color: #f2f2f7; + color: #e5e5e7; height: 100%; min-height: 90vh; padding: 16px 16px 0 16px; @@ -123,16 +123,16 @@ body { height: 24px; fill: none; margin-bottom: -6px; - stroke: #f2f2f7; + stroke: #e5e5e7; stroke-width: 2; width: 24px; } input, select { - background-color: #09090b; + background-color: #0f0f0f; border: 2px solid #363636; - color: #f2f2f7; + color: #e5e5e7; font: 500 14px/2 "Inter", "system-ui", sans-serif; outline: none; padding: 3px 10px; @@ -154,20 +154,21 @@ select:focus-visible { select { padding: 8px 10px; + width: fit-content; } select:focus { - background-color: #09090b; + background-color: #0f0f0f; transition: none; } option { - background-color: #09090b; - color: #f2f2f7; + background-color: #0f0f0f; + color: #e5e5e7; } option:focus { background-color: #d30f45; - color: #09090b; + color: #0f0f0f; } button, From 767826f0490b66b07dbc9ed189d5910144128426 Mon Sep 17 00:00:00 2001 From: hacki Date: Tue, 27 Feb 2024 01:16:25 +0100 Subject: [PATCH 3/4] removed post icon and made button less wide --- front/index.html | 7 +------ front/style.scss | 12 +++++++----- static/style.css | 17 +++++++++++------ 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/front/index.html b/front/index.html index 13413ad..d4ce79c 100644 --- a/front/index.html +++ b/front/index.html @@ -44,12 +44,7 @@ - +
diff --git a/front/style.scss b/front/style.scss index 3df0cd7..623ff8d 100644 --- a/front/style.scss +++ b/front/style.scss @@ -57,23 +57,26 @@ body { } } +button, input, select { background-color: $background; border: 2px solid $border; color: $text; font: 500 14px/2 "Inter", "system-ui", sans-serif; + max-width: 145px; outline: none; padding: 3px 10px; - width: 150px; - transition: .15s ease; + transition: border .15s ease; + width: min-content; + &::placeholder { color: $placeholder; } &:hover { - border-color: #555; + border-color: #777; } &:focus-visible { @@ -90,7 +93,7 @@ select:focus { background-color: $background; transition: none; } - +² option { background-color: $background; color: $text; @@ -101,7 +104,6 @@ option { } } -button, textarea { background-color: inherit; border: none; diff --git a/static/style.css b/static/style.css index c8031a4..a2908b6 100644 --- a/static/style.css +++ b/static/style.css @@ -1,3 +1,4 @@ +@charset "UTF-8"; @import url("https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=JetBrains+Mono&display=swap"); section#recent-plaks { bottom: 1rem; @@ -128,25 +129,30 @@ body { width: 24px; } +button, input, select { background-color: #0f0f0f; border: 2px solid #363636; color: #e5e5e7; font: 500 14px/2 "Inter", "system-ui", sans-serif; + max-width: 145px; outline: none; padding: 3px 10px; - width: 150px; - transition: 0.15s ease; + transition: border 0.15s ease; + width: min-content; } +button::placeholder, input::placeholder, select::placeholder { color: #888; } +button:hover, input:hover, select:hover { - border-color: #555; + border-color: #777; } +button:focus-visible, input:focus-visible, select:focus-visible { border: 2px solid #bbb; @@ -162,16 +168,15 @@ select:focus { transition: none; } -option { +² option { background-color: #0f0f0f; color: #e5e5e7; } -option:focus { +² option:focus { background-color: #d30f45; color: #0f0f0f; } -button, textarea { background-color: inherit; border: none; From ef4367ace7859a53b58407737ef36a62525e7416 Mon Sep 17 00:00:00 2001 From: Hacki Date: Wed, 1 May 2024 20:14:58 +0200 Subject: [PATCH 4/4] finalised ui changes --- front/index.html | 89 ++++++++-------- front/style.css | 202 +++++++++++++++++++++++++++++++++++++ front/style.scss | 21 +++- static/index.html | 85 ++++++++-------- static/inter.woff2 | Bin 0 -> 46704 bytes static/jetbrainsmono.woff2 | Bin 0 -> 21088 bytes static/style.css | 22 +++- 7 files changed, 325 insertions(+), 94 deletions(-) create mode 100644 front/style.css create mode 100644 static/inter.woff2 create mode 100644 static/jetbrainsmono.woff2 diff --git a/front/index.html b/front/index.html index d4ce79c..5f1347d 100644 --- a/front/index.html +++ b/front/index.html @@ -2,58 +2,59 @@ - - - - - - - New paste - - + + + + + + + New paste + + -
+
1
-
- -
+ placeholder="Type your paste here"> + + + +
-

Recent plaks

- - +

Recent plaks

+ +
-
+
\ No newline at end of file diff --git a/front/style.css b/front/style.css new file mode 100644 index 0000000..b316714 --- /dev/null +++ b/front/style.css @@ -0,0 +1,202 @@ +section#recent-plaks { + bottom: 1rem; + display: flex; + flex-flow: column wrap; + gap: 9px; + position: absolute; + right: 1rem; + transition: 0.15s ease-in-out; + user-select: none; +} +section#recent-plaks .title { + align-items: center; + gap: 18px; + transition: 0.15s ease-in-out; +} +section#recent-plaks .title:hover { + border-color: #555; +} +section#recent-plaks .recent-plak { + align-items: center; + border: 3px solid #363636; + font-weight: 500; + justify-content: space-between; + outline: none; + padding: 8px 18px; + text-decoration: none; + transition: 0.15s ease-in-out; + width: 12rem; +} +section#recent-plaks .recent-plak:focus-visible { + border: 2px solid #bbb; +} +section#recent-plaks .recent-plak svg { + border-radius: 15px; + cursor: pointer; + height: 22px; + padding: 5px; + stroke: #e5e5e7; + stroke-width: 2.25; + width: 22px; + transition: 0.1s ease-in-out; +} +section#recent-plaks .recent-plak svg:hover { + background-color: #363636; +} +section#recent-plaks a { + color: inherit; + text-decoration: none; +} + +h3 { + font-size: 1.5rem; + margin: 0; + transition: 0.15s ease-in-out; + width: fit-content; +} + +::selection { + background-color: #d30f45; + color: #e5e5e7; +} + +::-webkit-scrollbar { + width: 9px; +} + +::-webkit-scrollbar-track { + background-color: #0f0f0f; +} + +::-webkit-scrollbar-thumb { + background-color: #444; + border-radius: 9px; +} + +::-webkit-scrollbar-thumb:hover { + background-color: #e5e5e7; +} + +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 400 700; + font-display: swap; + src: url(inter.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +@font-face { + font-family: "JetBrains Mono"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(jetbrainsmono.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +body { + background-color: #0f0f0f; + color: #e5e5e7; + font: 400 16px/2 "Inter", "system-ui", sans-serif; + margin: 0; + overflow-x: hidden; +} + +.fr { + display: flex; + flex-flow: row wrap; +} + +#line-numbers, +#content { + font: 400 14px/1.6 "JetBrains Mono", monospace; +} + +#line-numbers { + color: #888; + padding: 16px 1px; + text-align: center; + white-space: pre; + width: 30px; +} + +#content { + color: #e5e5e7; + height: 100%; + min-height: 90vh; + padding: 16px 16px 0 16px; + width: calc(100vw - 65px); +} + +.menu { + gap: 18px; + position: fixed; + right: 16px; + top: 16px; +} +.menu svg { + cursor: pointer; + height: 24px; + fill: none; + margin-bottom: -6px; + stroke: #e5e5e7; + stroke-width: 2; + width: 24px; +} + +button, +input, +select { + background-color: #0f0f0f; + border: 2px solid #363636; + color: #e5e5e7; + font: 500 14px/2 "Inter", "system-ui", sans-serif; + max-width: 145px; + outline: none; + padding: 3px 10px; + transition: border 0.15s ease; + width: min-content; +} +button::placeholder, +input::placeholder, +select::placeholder { + color: #888; +} +button:hover, +input:hover, +select:hover { + border-color: #777; +} +button:focus-visible, +input:focus-visible, +select:focus-visible { + border: 2px solid #bbb; +} + +select { + padding: 8px 10px; + width: fit-content; +} + +select:focus { + background-color: #0f0f0f; + transition: none; +} + +option { + background-color: #0f0f0f; + color: #e5e5e7; +} +option:focus { + background-color: #d30f45; + color: #0f0f0f; +} + +textarea { + background-color: inherit; + border: none; + margin: 0; + outline: none; + resize: none; +} + +/*# sourceMappingURL=style.css.map */ diff --git a/front/style.scss b/front/style.scss index 623ff8d..3826ef7 100644 --- a/front/style.scss +++ b/front/style.scss @@ -4,7 +4,24 @@ @use 'recents'; @use 'misc'; -@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=JetBrains+Mono&display=swap'); +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 400 700; + font-display: swap; + src: url(inter.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: 'JetBrains Mono'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(jetbrainsmono.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + body { background-color: $background; @@ -93,7 +110,7 @@ select:focus { background-color: $background; transition: none; } -² + option { background-color: $background; color: $text; diff --git a/static/index.html b/static/index.html index cda5724..82763a0 100644 --- a/static/index.html +++ b/static/index.html @@ -2,60 +2,57 @@ - - - - - - - New plak • Plakken - - + + + + + + + New paste + + -
+
1
+ +
-

Recent plaks

- - - + + +
diff --git a/static/inter.woff2 b/static/inter.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..40255432a3c6104bf0a82574eaa1d754ec55ab67 GIT binary patch literal 46704 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 Ang9R* literal 0 HcmV?d00001 diff --git a/static/jetbrainsmono.woff2 b/static/jetbrainsmono.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c3f046fc9a32a2cf739a51ad613214f0a8735bc5 GIT binary patch literal 21088 zcmV)FK)=6tPew8T0RR9108(H85C8xG0OAk;08#t^0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/static/style.css b/static/style.css index a2908b6..7706b3c 100644 --- a/static/style.css +++ b/static/style.css @@ -1,5 +1,3 @@ -@charset "UTF-8"; -@import url("https://fonts.googleapis.com/css2?family=Inter:wght@100..900&family=JetBrains+Mono&display=swap"); section#recent-plaks { bottom: 1rem; display: flex; @@ -79,6 +77,22 @@ h3 { background-color: #e5e5e7; } +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 400 700; + font-display: swap; + src: url(inter.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +@font-face { + font-family: "JetBrains Mono"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(jetbrainsmono.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} body { background-color: #0f0f0f; color: #e5e5e7; @@ -168,11 +182,11 @@ select:focus { transition: none; } -² option { +option { background-color: #0f0f0f; color: #e5e5e7; } -² option:focus { +option:focus { background-color: #d30f45; color: #0f0f0f; }