From af36695c49549f67861cd80836f372b8d3bf5706 Mon Sep 17 00:00:00 2001 From: Alec Dilanchian Date: Tue, 22 Nov 2022 21:23:25 -0500 Subject: [PATCH] Adding buildspace badge --- assets/buildspace-logo.png | Bin 1561 -> 1898 bytes pages/index.js | 49 +++++++++++++----- pages/styles.css | 101 +++++++++++++++++++++++++++---------- 3 files changed, 110 insertions(+), 40 deletions(-) diff --git a/assets/buildspace-logo.png b/assets/buildspace-logo.png index 2000b807da0d56552be18a72b0439b4fbf011946..030570a867567ea4491dc40216fbedecab974a69 100644 GIT binary patch delta 1869 zcmV-T2eSB?4C)RciBL{Q4GJ0x0000DNk~Le0001v0001Z2nGNE03C8h*E)_3glGabReYyUk6kN&Q-97 z6+m155iL;!unX=tgONRB&sgF!@VIzb0>&01dhf@DAGdzA^ay{w@}u#?!7!L8m@7Z- z=`g;+m^NMnAD+!Fhtk^YGg177fB$sEEMwv^9%hEranwHXG;;D@cqUl(|sDq56G4a$w0nv0^!O%%T(R5gaSsN6#5$>owCLT?Y4AFF$ zcr@TI)RN@!Hw?K@*yWariAN&-!h9v!aK-uqDq)5S@E4@INu<2e6vhp-fAVuRp$Hc&A zFQE^I;Ca-=F{+qxI^yl_Ep&MvhVQa?=J^dJ)Z%fr#M|6+KYl$^ zvOH4o7h^%XuuV}ZP{`)2e@G7|9!Zd{<;%n)2@12%4e8(lhAjL=nUjv$$Kn_gq0rVu zI-ekns_Hlc`4940lCUg~2}cLKC9#qu9utlpL}htQIJ$5U62~y%=)*yPc>X|P;s?NM zH&4YI9vbs0nQ;i>`KW0}eH191N@(}oe)5631{okd#lY8?PHPnkf0f%qPg=H=_)da! z3x~Nw0kV1=3d_<8VQD%9{&^PJlB`|YKDaeq_BcjvbIhV~IG)CjmcsJpU_7VEEuL(` zq2O5@PGf;!3L6;DVew?!QO`N!jP<4*LJ7V#0li?6OFUVG6PFi@KNRQ&>a`uEkwNv&0i_s59>;+{6uv~pF%+6(6#11MfO=9s7-AN`kK z5T;NgAM>Gc3~?Q~qW|IL%fZOSwg2ZmsuiBdR&M5him>qFIk?s)x(8qs5KpCZ7&$mt zJfe5UqyJ&^e`fwC4+m#?RCOJV856GmI2b8u{6B1Op;leHTJt~I=oOFJKF3i&+~Rd= z+Xgu~k9&+S==C@h4$nCVB>JDvF#nU1y;+_Y!ii$x*x|kZwnc~|Fd}!Ay?Ac?ID-i& z1zncM_5KuRR4F{kt@p^O)LDphHHOqgOZ%=l1<@SCf09fpkl}XbgL75AUpA zA5(G635C238)ye(3?4Q`JCDOfpCOqP{vENW3jCY=Y5r$a=G}Fk#o4CCIB>?}v&6ONeUo4y(l*7TgN@!&LF6J#tcjq?$qX)hl-E`*osG|`HX<%Koq{G`c zVXulaEs#@9buj-Um2cg4((dgzm*Yz`KiY>wfABvmTfRi_!;5Coee)okc=(*l@TGg$ zJZBE`Kc)E|w`m@DQUGM}#En3SF@y%@e{$1xw0N-*{%YlTC&$aCc>_5(nE%NEuRfRD z3}VnJ2medg2+NnW7=nZOpHy&~^DJKby}Y?swG%^-m}8m4{Lfgd5d^b1q}kHJo18lW ze=`457oCqeKPI_(^zOLeb4(8Ae~#fzAJfO+SVb%vn*Y(sK|ZFBlkzy`f7G$Y5k97m zQG#4b{Lh%7d~K{Tz{m74Y64KW|GAo=|LJ_p`4At|N0R8M0{?Sc`SQhrIoZebk-R?+ z$!>&ngCM3k>S682ms#RNk;#SA5tj(Af3r9kDOe-K9@fY}HsN%bfJSG#ETvkK_K{sU zjGf~i1r`iPV6IQSwH`td;dBW1KayD^gOBN>XrJSq`VaT=+rW5>HAb$-3`InPZ0lq5 zCdukCLn*pcy@vUpClvKDeTWlIhxwmv7mdr(OOjf+k6+v>mU;y=uWf9e(x zw+U{b1XV5hsZReR*2h!_)zing_RUtA_z#`ir?#Yz6`7AI59#qgs(j2Ops;)`NG2>8 z{@YUbTQr73^8Ana7)?-l|Fa_VF?yl={--7LF?B$B{EzvVTA_6QXG!K`>W9YjKPxgH zGd*ay|7pp5%(S87mM`-$##5qzBbvDU+&`OLxE6C^f_dbBbAMSe;c`p900000NkvXX Hu0mjfI^&v9 delta 1529 zcmV1!M=V9ncIJxmf{+6&PmB=p87mpqVlX z7OrZFoJvx$E$Kb^edpX$89B0iOS+cjSKyq}P3k9&lRi#*JnD~0KTirc&J%8#4fA+~ zB5oq*$ah?4nx`5j-Qet&G(|nGe^8pv+(0{It#QsrAZJHxWgIuq&RCjpUeotDO>;*c zTq9 z7YkofkE4bI_JZ_1jv8drdu$o#4o4LMTT|H`jyew5FpqELP>Nt<6mkP8CZOL$seOW@ z5<&kRnHxwk>EdWMk4gi5e~x1XVXh&h=1IJp#}#AZ)Ig4~$px&fruPC3Y|}}Rc?8>vf4EV*H0X{75w`EB zfo-O;n4xVo)zKI^OS=uMGf~Xgwi;?~E60Jn9Tr(W=f})#Ytle1tuPC7E#!#*ut*}U zqh(zyD`}omE5^b+jg9yo7@?7V=%_P%CnL!#ZHtxKR!Wfu3{-Q+UeEJe8DhnDl{Ap) zsvHOEcVM{Cu2{KUf2Cx;tc!-yZ;}76g+v8yDy0#_2zoBopsYP5&)Y0%=zNc@4sT87 zf8t5dU%|9x^{k+FeV(-T^W&sHnO8%-MqgRFm8mw6px=Q3H<20xbfDzqqD+Js`Tk60C;>v@jVNKA9OnQgj3t~-j-nn7J0}pr} zYF+QnJ9XUnf8g5lP=`-tYp?IW;rS-xKZ$rAYE@n8z}o`lQ1cr^>_d^r74^Br;xc_^YMOIXqEsl>`p z)I)O~axU}0*~rtO!_CP=J>`k$`(|rac-n!QmhU5FfAdg8=S9+}$b~!f8}xPJNSUcj z+j(o&vn7m0X-5v^HIc@1)~ExoAWAzkwW%i$8qZgg(%pFA4csg3)X4UENaJ~G(a6G4 zU(maSVev^_AVQHgTT)to>(~H6?|V`M>rE8N+eS-DQ&g6s2Z1*8kj8VWp#udTln2_% zLmJPef22kVukH)&pJ!88Z_w>mx%a1&jl5r50% zB7*0kmrT>)yo%s?=%hDq0d;2foQFKuY(!vRCc5+p#aV&SejXa}T$2@{y*%W(rZ6q! zA$I{T+g$+c&^zc!ty*c; { }; const generateAction = useCallback(async () => { + if (isGenerating) return; + setIsGenerating(true); const response = await fetch('/api/generate', { method: 'POST', @@ -29,7 +31,22 @@ const Home = () => { ); setIsGenerating(false); - }, [input]); + }, [input, isGenerating]); + + useEffect(() => { + const keydownHandler = async (event) => { + if ((event.metaKey || event.ctrlKey) && event.code === 'Enter') { + event.preventDefault(); + await generateAction(); + } + }; + + window.addEventListener('keydown', keydownHandler); + + return () => { + window.removeEventListener('keydown', keydownHandler); + }; + }, [generateAction]); return ( @@ -81,6 +94,18 @@ const Home = () => { )} + ); }; diff --git a/pages/styles.css b/pages/styles.css index 891a0d0..a11a732 100644 --- a/pages/styles.css +++ b/pages/styles.css @@ -202,6 +202,72 @@ body { margin: 0; } +.loading { + opacity: 0.7; + cursor: default; +} + +.badge-container { + display: flex; + bottom: 20px; + flex: 0 0 auto; + height: auto; + left: 20px; + position: fixed; + width: auto; + z-index: 1; +} + +.badge-container a { + border-bottom-width: 1px; + border-color: rgba(255, 255, 255, 0.1); + border-left-width: 1px; + border-right-width: 1px; + border-style: solid; + border-top-width: 1px; + background-color: rgb(0, 0, 0); + border-radius: 54.3478% / 238.095%; + filter: grayscale(1); + transform: none; + transform-origin: 50% 50% 0px; + font-size: 14px; + font-weight: 700; + letter-spacing: -0.5px; + line-height: 1em; + color: #fff; + padding: 12px; + text-decoration: none; +} + +.badge { + display: flex; + align-items: center; +} + +.badge img { + width: 21px; + height: 17px; + image-rendering: pixelated; + flex-shrink: 0; + fill: black; + color: black; + transform: none; + transform-origin: 50% 50% 0px; + padding-right: 5px; +} + +.badge p { + margin: 0; +} + +.grow { + transition: all .2s ease-in-out; +} + +.grow:hover { + transform: scale(1.1); +} + .output { place-content: center flex-start; align-items: center; @@ -327,39 +393,18 @@ body { /* Loading ring animation */ -.lds-ring { - display: inline-block; - position: relative; - width: auto; - height: 20px; -} - -.lds-ring div { - box-sizing: border-box; - display: block; - position: absolute; +.loader { width: 18px; height: 18px; - margin: 4px; - border: 2px solid #000; border-radius: 50%; - animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite; - border-color: #000 transparent transparent transparent; + display: inline-block; + border-top: 2px solid #FFF; + border-right: 2px solid transparent; + box-sizing: border-box; + animation: rotation 1s linear infinite; } -.lds-ring div:nth-child(1) { - animation-delay: -0.45s; -} - -.lds-ring div:nth-child(2) { - animation-delay: -0.3s; -} - -.lds-ring div:nth-child(3) { - animation-delay: -0.15s; -} - -@keyframes lds-ring { +@keyframes rotation { 0% { transform: rotate(0deg); }