LucaVivona commited on
Commit
8cfbb4d
β€’
1 Parent(s): f1637d7
backend/app.py CHANGED
@@ -19,7 +19,7 @@ global visable, watcher, dog
19
  visable = []
20
 
21
  @app.route("/")
22
- def Home():
23
  return jsonify({"message" :"everything is up amd running... πŸš€",})
24
 
25
  @app.route("/api/append/port" , methods=["POST"])
 
19
  visable = []
20
 
21
  @app.route("/")
22
+ def Root():
23
  return jsonify({"message" :"everything is up amd running... πŸš€",})
24
 
25
  @app.route("/api/append/port" , methods=["POST"])
backend/main.py ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from fastapi.encoders import jsonable_encoder
3
+
4
+ app = FastAPI()
5
+
6
+ global STREAMABLE
7
+
8
+ STREAMABLE = []
9
+
10
+ @app.get("/")
11
+ def root():
12
+ return { "Root" : "Server is up"}
13
+
14
+ @app.put("/port/append/{stream}")
15
+ def push(stream):
16
+ try:
17
+ streamline = jsonable_encoder(stream)
18
+ except E:
19
+ return {"appended" : True, "error" : f"{E}"}
20
+
21
+ STREAMABLE.append(jsonable_encoder(streamline))
22
+ return {"appended" : True }
23
+
24
+ @app.get('/port/open')
25
+ def open():
26
+ return jsonable_encoder(STREAMABLE)
27
+
28
+ @app.put('/port/remove/{stream}')
29
+ def remove(stream):
30
+ STREAMABLE.remove(stream)
31
+ return STREAMABLE
frontend/Makefile CHANGED
@@ -1,6 +1,6 @@
1
  start:
2
  npm run start
3
 
4
- tailwind:
5
  npx tailwindcss -i ./src/css/input.css -o ./src/css/dist/output.css --watch
6
 
 
1
  start:
2
  npm run start
3
 
4
+ tw:
5
  npx tailwindcss -i ./src/css/input.css -o ./src/css/dist/output.css --watch
6
 
frontend/src/components/Modal/importer.js ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Modal, Icon, Message} from 'semantic-ui-react'
2
+ import "../../css/dist/output.css"
3
+ import {ReactComponent as Gradio} from '../../images/gradio.svg'
4
+ import {ReactComponent as Streamlit} from '../../images/streamlit.svg'
5
+ import {ReactComponent as Exit} from '../../images/exit.svg'
6
+ import { useState } from 'react'
7
+ import {BsSearch} from 'react-icons/bs';
8
+
9
+ export default function Import(props){
10
+ const [tab, setTab] = useState("gradio")
11
+ const [subTab, setSubTab] = useState(0)
12
+
13
+ return (<div>
14
+ <Modal
15
+ basic
16
+ open={props.open}
17
+ size='larg'
18
+ >
19
+ <div className='w-full shadow-lg rounded-lg'>
20
+ <ul class="flex flex-wrap text-sm font-medium text-center text-gray-500 bg-gray-100 rounded-t-lg border-gray-200 dark:border-gray-700 dark:text-gray-400 dark:bg-gray-800" id="defaultTab" data-tabs-toggle="#defaultTabContent" role="tablist">
21
+ <li class="mr-2" onClick={()=>{setTab("gradio")}}>
22
+ <button id="gradio-tab" data-tabs-target="#Gradio" type="button" role="tab" aria-controls="gradio" aria-selected={tab === "gradio" ? "true" : "false"} className={`inline-block p-4 rounded-tl-lg ${ tab === "gradio" ? 'bg-gray-200' : 'hover:bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-700 focus:bg-gray-700'}`}><Gradio className=" w-20 h-10"/></button>
23
+ </li>
24
+ <li class="mr-2">
25
+ <button id="services-tab" data-tabs-target="#Streamlit" type="button" role="tab" aria-controls="services" aria-selected="false" className="inline-block p-4 opacity-30"><Streamlit className=" w-20 h-10"/></button>
26
+ </li>
27
+ </ul>
28
+ <div className='absolute right-5 top-5 z-20 mr-5'
29
+ onClick={()=>{props.quitHandeler(false)}}>
30
+ <button type="button"
31
+ className=" bg-neutral-300 rounded-2xl p-2 inline-flex items-center justify-center text-gray-400 hover:text-gray-300 hover:opacity-70 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500">
32
+ <Exit className="w-[20px] h-[20px]"/>
33
+ </button>
34
+ </div>
35
+ </div>
36
+ { tab === "gradio" &&
37
+ <div className='w-full bg-white'>
38
+ <ul class="flex flex-wrap text-sm font-medium text-center text-gray-500 bg-gray-200 border-gray-200 dark:border-gray-700 dark:text-gray-400 dark:bg-gray-800" id="defaultTab" data-tabs-toggle="#defaultTabContent" role="tablist">
39
+ <li class="" onClick={()=>{setSubTab(0)}}>
40
+ <button id="local-sub-tab" data-tabs-target="#local" type="button" role="tab" aria-controls="local-gradio" aria-selected={tab === "gradio" ? "true" : "false"} className={`inline-block p-4 px-6 text-base font-sans font-bold ${subTab === 0 ? 'bg-gray-300' : '' } hover:bg-gray-300 dark:bg-gray-800 dark:hover:bg-gray-700 focus:bg-gray-700`}>Local</button>
41
+ </li>
42
+ <li class="" onClick={()=>{setSubTab(1)}}>
43
+ <button id="shared-sub-tab" data-tabs-target="#Gradio" type="button" role="tab" aria-controls="shared-gradio" aria-selected={tab === "gradio" ? "true" : "false"} className={`inline-block p-4 px-6 text-base font-sans font-bold ${subTab === 1 ? 'bg-gray-300' : '' } hover:bg-gray-300 dark:bg-gray-800 dark:hover:bg-gray-700 focus:bg-gray-700`}>Shared</button>
44
+ </li>
45
+ </ul>
46
+ {subTab === 0 && <></>}
47
+ {subTab === 1 && <Shared textHandler={props.textHandler} appendHandler={props.appendHandler} />}
48
+
49
+ {props.catch &&
50
+ <Message negative className='p-2'>
51
+ <Message.Header className=" text-lg text-center">🚫 Something went wrong...</Message.Header>
52
+ <br/>
53
+ <h1 className=" underline pb-3 font-bold text-lg">πŸ€” Possible Things That could of happen <br/></h1>
54
+ <ul className="font-bold">
55
+ <li key={"error_1"}>- The input was empty</li>
56
+ <li key={"error_2"}>- The connection was forbidden</li>
57
+ <li key={"error_3"}>- The name was already taken</li>
58
+ <li key={"error_4"}>- The link you gave did not pass the regex</li>
59
+ <ul className="px-6">
60
+ <li key={"error_5"}>- http://localhost:xxxx</li>
61
+ <li key={"error_6"}>- http://xxxxx.gradio.app</li>
62
+ <li key={"error_7"}>- https://hf.space/embed/$user/$space_name/+</li>
63
+ </ul>
64
+ <li>- link already exist within the menu</li>
65
+ </ul>
66
+
67
+ </Message>}
68
+ </div>
69
+ }
70
+ </Modal>
71
+ </div>)
72
+ }
73
+
74
+ function Shared(props){
75
+ return (
76
+ <div className='w-full shadow-lg'>
77
+
78
+ <div className={`flex items-center rounded-md bg-light-white mt-6 border-dashed`}>
79
+ <label className="relative block w-full p-5 focus:shadow-xl">
80
+ <span className={`absolute inset-y-0 left-0 flex items-center pl-8`}>
81
+ <BsSearch className="block float-left cursor-pointer text-gray-500"/>
82
+ </span>
83
+ <input className={`placeholder:italic placeholder:text-slate-400 text-black block w-full border border-slate-300 border-dashed rounded-md py-2 pl-9 pr-3 focus:shadow-xl focus:outline-none focus:border-sky-500 focus:ring-sky-500 focus:ring-1 sm:text-sm bg-transparent`}
84
+ placeholder={`URL`}
85
+ type="text" name="search"
86
+ onChange={(e) => {
87
+ props.textHandler(e, "text")
88
+ }}
89
+ />
90
+ </label>
91
+ </div>
92
+ <div className={`flex items-center rounded-md bg-light-white mt-6 border-dashed`}>
93
+ <label className="relative block p-5 w-full focus:shadow-xl">
94
+ <span className={`absolute inset-y-0 left-0 flex items-center pl-7`}>
95
+ <Icon className=" text-gray-500 block float-left cursor-pointer mr-2" name="address card"/>
96
+ </span>
97
+ <input className={`placeholder:italic placeholder:text-slate-400 text-black block bg-transparent w-full border border-slate-300 border-dashed rounded-md py-2 pl-9 pr-3 focus:shadow-xl focus:outline-none focus:border-sky-500 focus:ring-sky-500 focus:ring-1 sm:text-sm`}
98
+ placeholder={`Name` }
99
+ type="text" name="search"
100
+ autoComplete='off'
101
+ onChange={(e) => {
102
+ props.textHandler(e, "name")
103
+ }}
104
+ />
105
+ </label>
106
+ </div>
107
+ <div className='w-full ml-4'>
108
+ <button className="relative p-0.5 mb-2 mr-2 overflow-hidden text-sm font-sans font-bold text-gray-900 rounded-lg group bg-gradient-to-br from-purple-600 to-blue-500 group-hover:from-purple-600 group-hover:to-blue-500 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-blue-300 dark:focus:ring-blue-800"
109
+ onClick={()=>{props.appendHandler()}}>
110
+ <span className="relative px-5 py-2.5 transition-all ease-in duration-75 bg-white dark:bg-gray-900 rounded-md group-hover:bg-opacity-0">
111
+ Enter
112
+ </span>
113
+ </button>
114
+ </div>
115
+ </div>
116
+
117
+ )
118
+ }
frontend/src/components/Navagation/navbar.js CHANGED
@@ -4,7 +4,7 @@ import "../../css/dist/output.css"
4
  import {ReactComponent as ReactLogo} from '../../images/logo.svg'
5
  import { random_colour, random_emoji } from "../../helper/visual";
6
  import { Message, Header, Modal, Button, Icon } from 'semantic-ui-react'
7
-
8
  export default class Navbar extends Component{
9
  constructor(props){
10
  super(props)
@@ -242,8 +242,12 @@ export default class Navbar extends Component{
242
  <Icon className=" block mr-auto ml-auto" name="plus"/>
243
  </div>
244
  </div>
245
-
246
- <Modal
 
 
 
 
247
  basic
248
  open={this.state.modal}
249
  size='small'
@@ -316,7 +320,7 @@ export default class Navbar extends Component{
316
  <Icon name='checkmark' /> Append
317
  </Button>
318
  </Modal.Actions>
319
- </Modal>
320
 
321
  <div className=" relative z-10 h-auto overflow-auto pt-4">
322
  <ul className="pt-2">
 
4
  import {ReactComponent as ReactLogo} from '../../images/logo.svg'
5
  import { random_colour, random_emoji } from "../../helper/visual";
6
  import { Message, Header, Modal, Button, Icon } from 'semantic-ui-react'
7
+ import Import from '../Modal/importer'
8
  export default class Navbar extends Component{
9
  constructor(props){
10
  super(props)
 
242
  <Icon className=" block mr-auto ml-auto" name="plus"/>
243
  </div>
244
  </div>
245
+ <Import open={this.state.modal}
246
+ quitHandeler={this.handelModal}
247
+ textHandler={this.updateText}
248
+ appendHandler={this.append_gradio}
249
+ catch={this.state.error}/>
250
+ {/* <Modal
251
  basic
252
  open={this.state.modal}
253
  size='small'
 
320
  <Icon name='checkmark' /> Append
321
  </Button>
322
  </Modal.Actions>
323
+ </Modal> */}
324
 
325
  <div className=" relative z-10 h-auto overflow-auto pt-4">
326
  <ul className="pt-2">
frontend/src/css/dist/output.css CHANGED
@@ -604,18 +604,26 @@ video {
604
  bottom: 0px;
605
  }
606
 
607
- .-right-3 {
608
- right: -0.75rem;
609
  }
610
 
611
- .top-9 {
612
- top: 2.25rem;
613
  }
614
 
615
  .left-0 {
616
  left: 0px;
617
  }
618
 
 
 
 
 
 
 
 
 
619
  .bottom-0 {
620
  bottom: 0px;
621
  }
@@ -624,28 +632,20 @@ video {
624
  top: 0px;
625
  }
626
 
627
- .-bottom-1 {
628
- bottom: -0.25rem;
629
  }
630
 
631
- .-right-2 {
632
- right: -0.5rem;
633
  }
634
 
635
  .top-4 {
636
  top: 1rem;
637
  }
638
 
639
- .right-5 {
640
- right: 1.25rem;
641
- }
642
-
643
- .-bottom-0 {
644
- bottom: -0px;
645
- }
646
-
647
- .right-0 {
648
- right: 0px;
649
  }
650
 
651
  .-z-20 {
@@ -656,10 +656,6 @@ video {
656
  z-index: 10;
657
  }
658
 
659
- .z-20 {
660
- z-index: 20;
661
- }
662
-
663
  .-z-10 {
664
  z-index: -10;
665
  }
@@ -668,6 +664,10 @@ video {
668
  z-index: 50;
669
  }
670
 
 
 
 
 
671
  .float-left {
672
  float: left;
673
  }
@@ -680,12 +680,24 @@ video {
680
  margin: 0px;
681
  }
682
 
683
- .m-5 {
684
- margin: 1.25rem;
685
  }
686
 
687
- .m-1 {
688
- margin: 0.25rem;
 
 
 
 
 
 
 
 
 
 
 
 
689
  }
690
 
691
  .mt-4 {
@@ -704,14 +716,6 @@ video {
704
  margin-right: auto;
705
  }
706
 
707
- .mt-6 {
708
- margin-top: 1.5rem;
709
- }
710
-
711
- .mr-2 {
712
- margin-right: 0.5rem;
713
- }
714
-
715
  .-mt-3 {
716
  margin-top: -0.75rem;
717
  }
@@ -720,22 +724,14 @@ video {
720
  margin-top: 0.25rem;
721
  }
722
 
723
- .mb-auto {
724
- margin-bottom: auto;
725
- }
726
-
727
- .mt-auto {
728
- margin-top: auto;
729
- }
730
-
731
- .mt-2 {
732
- margin-top: 0.5rem;
733
- }
734
-
735
  .block {
736
  display: block;
737
  }
738
 
 
 
 
 
739
  .flex {
740
  display: flex;
741
  }
@@ -748,6 +744,14 @@ video {
748
  display: none;
749
  }
750
 
 
 
 
 
 
 
 
 
751
  .h-screen {
752
  height: 100vh;
753
  }
@@ -756,10 +760,6 @@ video {
756
  height: 2.25rem;
757
  }
758
 
759
- .h-10 {
760
- height: 2.5rem;
761
- }
762
-
763
  .h-auto {
764
  height: auto;
765
  }
@@ -772,56 +772,28 @@ video {
772
  height: 600px;
773
  }
774
 
775
- .h-5 {
776
- height: 1.25rem;
777
- }
778
-
779
- .h-\[13rem\] {
780
- height: 13rem;
781
- }
782
-
783
- .h-\[4rem\] {
784
- height: 4rem;
785
- }
786
-
787
- .h-\[10rem\] {
788
- height: 10rem;
789
- }
790
-
791
- .h-\[11rem\] {
792
- height: 11rem;
793
- }
794
-
795
- .h-\[31\.5px\] {
796
- height: 31.5px;
797
- }
798
-
799
- .h-\[39\.750px\] {
800
- height: 39.750px;
801
- }
802
-
803
- .h-\[157px\] {
804
- height: 157px;
805
  }
806
 
807
  .h-\[41px\] {
808
  height: 41px;
809
  }
810
 
811
- .h-\[203\.3px\] {
812
- height: 203.3px;
813
  }
814
 
815
- .h-\[203\.3333px\] {
816
- height: 203.3333px;
817
  }
818
 
819
- .w-10 {
820
- width: 2.5rem;
821
  }
822
 
823
- .w-full {
824
- width: 100%;
825
  }
826
 
827
  .w-9 {
@@ -832,10 +804,6 @@ video {
832
  width: 8rem;
833
  }
834
 
835
- .w-20 {
836
- width: 5rem;
837
- }
838
-
839
  .w-0 {
840
  width: 0px;
841
  }
@@ -852,26 +820,14 @@ video {
852
  width: 1.25rem;
853
  }
854
 
855
- .w-screen {
856
- width: 100vw;
857
- }
858
-
859
- .w-\[31\.5\] {
860
- width: 31.5;
861
- }
862
-
863
- .w-\[31\.5px\] {
864
- width: 31.5px;
865
- }
866
-
867
- .w-\[29\.5px\] {
868
- width: 29.5px;
869
- }
870
-
871
  .w-\[41px\] {
872
  width: 41px;
873
  }
874
 
 
 
 
 
875
  .max-w-full {
876
  max-width: 100%;
877
  }
@@ -896,32 +852,22 @@ video {
896
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
897
  }
898
 
899
- .rotate-90 {
900
- --tw-rotate: 90deg;
901
- -webkit-transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
902
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
903
  }
904
 
905
  .cursor-grab {
906
  cursor: grab;
907
  }
908
 
909
- .cursor-pointer {
910
- cursor: pointer;
911
- }
912
-
913
- .cursor-ns-resize {
914
- cursor: ns-resize;
915
  }
916
 
917
  .cursor-default {
918
  cursor: default;
919
  }
920
 
921
- .cursor-nwse-resize {
922
- cursor: nwse-resize;
923
- }
924
-
925
  .select-none {
926
  -webkit-user-select: none;
927
  user-select: none;
@@ -939,10 +885,22 @@ video {
939
  flex-direction: column;
940
  }
941
 
 
 
 
 
 
 
 
 
942
  .items-center {
943
  align-items: center;
944
  }
945
 
 
 
 
 
946
  .space-y-4 > :not([hidden]) ~ :not([hidden]) {
947
  --tw-space-y-reverse: 0;
948
  margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
@@ -963,14 +921,18 @@ video {
963
  overflow: hidden;
964
  }
965
 
966
- .overflow-scroll {
967
- overflow: scroll;
968
- }
969
-
970
  .break-all {
971
  word-break: break-all;
972
  }
973
 
 
 
 
 
 
 
 
 
974
  .rounded-md {
975
  border-radius: 0.375rem;
976
  }
@@ -979,14 +941,15 @@ video {
979
  border-radius: 9999px;
980
  }
981
 
982
- .rounded-lg {
983
- border-radius: 0.5rem;
984
- }
985
-
986
  .rounded-xl {
987
  border-radius: 0.75rem;
988
  }
989
 
 
 
 
 
 
990
  .rounded-l-xl {
991
  border-top-left-radius: 0.75rem;
992
  border-bottom-left-radius: 0.75rem;
@@ -997,6 +960,10 @@ video {
997
  border-bottom-right-radius: 0.75rem;
998
  }
999
 
 
 
 
 
1000
  .border {
1001
  border-width: 1px;
1002
  }
@@ -1005,10 +972,6 @@ video {
1005
  border-width: 2px;
1006
  }
1007
 
1008
- .border-\[3px\] {
1009
- border-width: 3px;
1010
- }
1011
-
1012
  .border-y-2 {
1013
  border-top-width: 2px;
1014
  border-bottom-width: 2px;
@@ -1026,9 +989,9 @@ video {
1026
  border-style: dotted;
1027
  }
1028
 
1029
- .border-black {
1030
  --tw-border-opacity: 1;
1031
- border-color: rgb(0 0 0 / var(--tw-border-opacity));
1032
  }
1033
 
1034
  .border-slate-300 {
@@ -1036,6 +999,11 @@ video {
1036
  border-color: rgb(203 213 225 / var(--tw-border-opacity));
1037
  }
1038
 
 
 
 
 
 
1039
  .border-red-600 {
1040
  --tw-border-opacity: 1;
1041
  border-color: rgb(220 38 38 / var(--tw-border-opacity));
@@ -1051,9 +1019,19 @@ video {
1051
  border-color: rgb(255 255 255 / var(--tw-border-opacity));
1052
  }
1053
 
1054
- .border-Happy-Cool-Blue {
1055
- --tw-border-opacity: 1;
1056
- border-color: rgb(80 142 231 / var(--tw-border-opacity));
 
 
 
 
 
 
 
 
 
 
1057
  }
1058
 
1059
  .bg-white {
@@ -1061,14 +1039,19 @@ video {
1061
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
1062
  }
1063
 
1064
- .bg-transparent {
1065
- background-color: transparent;
 
1066
  }
1067
 
1068
  .bg-light-white {
1069
  background-color: rgba(255,255,255, 0.18);
1070
  }
1071
 
 
 
 
 
1072
  .bg-Warm-Blue {
1073
  --tw-bg-opacity: 1;
1074
  background-color: rgb(40 58 184 / var(--tw-bg-opacity));
@@ -1098,6 +1081,10 @@ video {
1098
  background-image: linear-gradient(to bottom left, var(--tw-gradient-stops));
1099
  }
1100
 
 
 
 
 
1101
  .from-Retro-light-blue {
1102
  --tw-gradient-from: #2de2e6;
1103
  --tw-gradient-to: rgb(45 226 230 / 0);
@@ -1182,6 +1169,12 @@ video {
1182
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
1183
  }
1184
 
 
 
 
 
 
 
1185
  .via-purple-500 {
1186
  --tw-gradient-to: rgb(168 85 247 / 0);
1187
  --tw-gradient-stops: var(--tw-gradient-from), #a855f7, var(--tw-gradient-to);
@@ -1274,24 +1267,52 @@ video {
1274
  --tw-gradient-to: #1565C0;
1275
  }
1276
 
1277
- .p-5 {
1278
- padding: 1.25rem;
1279
  }
1280
 
1281
  .p-4 {
1282
  padding: 1rem;
1283
  }
1284
 
1285
- .p-1 {
1286
- padding: 0.25rem;
 
 
 
 
 
 
 
 
1287
  }
1288
 
1289
  .p-0 {
1290
  padding: 0px;
1291
  }
1292
 
1293
- .p-2 {
1294
- padding: 0.5rem;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1295
  }
1296
 
1297
  .px-2 {
@@ -1309,34 +1330,29 @@ video {
1309
  padding-bottom: 0.75rem;
1310
  }
1311
 
1312
- .py-2 {
1313
- padding-top: 0.5rem;
1314
- padding-bottom: 0.5rem;
1315
  }
1316
 
1317
- .px-6 {
1318
- padding-left: 1.5rem;
1319
- padding-right: 1.5rem;
1320
  }
1321
 
1322
- .px-1 {
1323
- padding-left: 0.25rem;
1324
- padding-right: 0.25rem;
1325
  }
1326
 
1327
- .py-1 {
1328
- padding-top: 0.25rem;
1329
- padding-bottom: 0.25rem;
1330
  }
1331
 
1332
- .px-\[0\.5px\] {
1333
- padding-left: 0.5px;
1334
- padding-right: 0.5px;
1335
  }
1336
 
1337
- .py-\[0\.5px\] {
1338
- padding-top: 0.5px;
1339
- padding-bottom: 0.5px;
1340
  }
1341
 
1342
  .pt-8 {
@@ -1347,22 +1363,10 @@ video {
1347
  padding-left: 1.25rem;
1348
  }
1349
 
1350
- .pr-3 {
1351
- padding-right: 0.75rem;
1352
- }
1353
-
1354
  .pl-3 {
1355
  padding-left: 0.75rem;
1356
  }
1357
 
1358
- .pl-9 {
1359
- padding-left: 2.25rem;
1360
- }
1361
-
1362
- .pb-3 {
1363
- padding-bottom: 0.75rem;
1364
- }
1365
-
1366
  .pt-4 {
1367
  padding-top: 1rem;
1368
  }
@@ -1371,18 +1375,6 @@ video {
1371
  padding-top: 0.5rem;
1372
  }
1373
 
1374
- .pb-1 {
1375
- padding-bottom: 0.25rem;
1376
- }
1377
-
1378
- .pb-2 {
1379
- padding-bottom: 0.5rem;
1380
- }
1381
-
1382
- .pb-6 {
1383
- padding-bottom: 1.5rem;
1384
- }
1385
-
1386
  .pb-0 {
1387
  padding-bottom: 0px;
1388
  }
@@ -1395,6 +1387,21 @@ video {
1395
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
1396
  }
1397
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1398
  .text-4xl {
1399
  font-size: 2.25rem;
1400
  line-height: 2.5rem;
@@ -1410,19 +1417,13 @@ video {
1410
  line-height: 2.25rem;
1411
  }
1412
 
1413
- .text-lg {
1414
- font-size: 1.125rem;
1415
- line-height: 1.75rem;
1416
- }
1417
-
1418
  .text-2xl {
1419
  font-size: 1.5rem;
1420
  line-height: 2rem;
1421
  }
1422
 
1423
- .text-5xl {
1424
- font-size: 3rem;
1425
- line-height: 1;
1426
  }
1427
 
1428
  .font-bold {
@@ -1437,14 +1438,14 @@ video {
1437
  line-height: 1.25;
1438
  }
1439
 
1440
- .text-white {
1441
  --tw-text-opacity: 1;
1442
- color: rgb(255 255 255 / var(--tw-text-opacity));
1443
  }
1444
 
1445
- .text-blue-50 {
1446
  --tw-text-opacity: 1;
1447
- color: rgb(239 246 255 / var(--tw-text-opacity));
1448
  }
1449
 
1450
  .text-black {
@@ -1452,9 +1453,19 @@ video {
1452
  color: rgb(0 0 0 / var(--tw-text-opacity));
1453
  }
1454
 
1455
- .text-cream {
 
 
 
 
 
 
 
 
 
 
1456
  --tw-text-opacity: 1;
1457
- color: rgb(250 249 246 / var(--tw-text-opacity));
1458
  }
1459
 
1460
  .text-selected-text {
@@ -1467,12 +1478,12 @@ video {
1467
  text-decoration-line: underline;
1468
  }
1469
 
1470
- .opacity-60 {
1471
- opacity: 0.6;
1472
  }
1473
 
1474
- .opacity-50 {
1475
- opacity: 0.5;
1476
  }
1477
 
1478
  .shadow-lg {
@@ -1515,20 +1526,8 @@ video {
1515
  transition-duration: 150ms;
1516
  }
1517
 
1518
- .delay-\[170ms\] {
1519
- transition-delay: 170ms;
1520
- }
1521
-
1522
- .delay-\[270ms\] {
1523
- transition-delay: 270ms;
1524
- }
1525
-
1526
- .delay-\[100ms\] {
1527
- transition-delay: 100ms;
1528
- }
1529
-
1530
- .delay-\[200ms\] {
1531
- transition-delay: 200ms;
1532
  }
1533
 
1534
  .duration-300 {
@@ -1539,8 +1538,8 @@ video {
1539
  transition-duration: 500ms;
1540
  }
1541
 
1542
- .duration-150 {
1543
- transition-duration: 150ms;
1544
  }
1545
 
1546
  .placeholder\:italic::-webkit-input-placeholder {
@@ -1593,6 +1592,30 @@ video {
1593
  border-color: rgb(74 222 128 / var(--tw-border-opacity));
1594
  }
1595
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1596
  .hover\:opacity-50:hover {
1597
  opacity: 0.5;
1598
  }
@@ -1602,33 +1625,99 @@ video {
1602
  border-color: rgb(14 165 233 / var(--tw-border-opacity));
1603
  }
1604
 
 
 
 
 
 
1605
  .focus\:from-fuchsia-200:focus {
1606
  --tw-gradient-from: #f5d0fe;
1607
  --tw-gradient-to: rgb(245 208 254 / 0);
1608
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
1609
  }
1610
 
 
 
 
 
 
 
1611
  .focus\:outline-none:focus {
1612
  outline: 2px solid transparent;
1613
  outline-offset: 2px;
1614
  }
1615
 
 
 
 
 
 
 
1616
  .focus\:ring-1:focus {
1617
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1618
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
1619
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
1620
  }
1621
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1622
  .focus\:ring-sky-500:focus {
1623
  --tw-ring-opacity: 1;
1624
  --tw-ring-color: rgb(14 165 233 / var(--tw-ring-opacity));
1625
  }
1626
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1627
  .dark .dark\:border-white {
1628
  --tw-border-opacity: 1;
1629
  border-color: rgb(255 255 255 / var(--tw-border-opacity));
1630
  }
1631
 
 
 
 
 
 
 
 
 
 
 
1632
  .dark .dark\:bg-stone-900 {
1633
  --tw-bg-opacity: 1;
1634
  background-color: rgb(28 25 23 / var(--tw-bg-opacity));
@@ -1653,14 +1742,24 @@ video {
1653
  --tw-gradient-to: #BDD4E7;
1654
  }
1655
 
 
 
 
 
 
1656
  .dark .dark\:text-white {
1657
  --tw-text-opacity: 1;
1658
  color: rgb(255 255 255 / var(--tw-text-opacity));
1659
  }
1660
 
1661
- .dark .dark\:text-cream {
1662
- --tw-text-opacity: 1;
1663
- color: rgb(250 249 246 / var(--tw-text-opacity));
 
 
 
 
 
1664
  }
1665
 
1666
  @media (min-width: 640px) {
 
604
  bottom: 0px;
605
  }
606
 
607
+ .right-5 {
608
+ right: 1.25rem;
609
  }
610
 
611
+ .top-5 {
612
+ top: 1.25rem;
613
  }
614
 
615
  .left-0 {
616
  left: 0px;
617
  }
618
 
619
+ .-right-3 {
620
+ right: -0.75rem;
621
+ }
622
+
623
+ .top-9 {
624
+ top: 2.25rem;
625
+ }
626
+
627
  .bottom-0 {
628
  bottom: 0px;
629
  }
 
632
  top: 0px;
633
  }
634
 
635
+ .-bottom-0 {
636
+ bottom: -0px;
637
  }
638
 
639
+ .right-0 {
640
+ right: 0px;
641
  }
642
 
643
  .top-4 {
644
  top: 1rem;
645
  }
646
 
647
+ .z-20 {
648
+ z-index: 20;
 
 
 
 
 
 
 
 
649
  }
650
 
651
  .-z-20 {
 
656
  z-index: 10;
657
  }
658
 
 
 
 
 
659
  .-z-10 {
660
  z-index: -10;
661
  }
 
664
  z-index: 50;
665
  }
666
 
667
+ .float-right {
668
+ float: right;
669
+ }
670
+
671
  .float-left {
672
  float: left;
673
  }
 
680
  margin: 0px;
681
  }
682
 
683
+ .mr-2 {
684
+ margin-right: 0.5rem;
685
  }
686
 
687
+ .mr-5 {
688
+ margin-right: 1.25rem;
689
+ }
690
+
691
+ .mt-6 {
692
+ margin-top: 1.5rem;
693
+ }
694
+
695
+ .ml-4 {
696
+ margin-left: 1rem;
697
+ }
698
+
699
+ .mb-2 {
700
+ margin-bottom: 0.5rem;
701
  }
702
 
703
  .mt-4 {
 
716
  margin-right: auto;
717
  }
718
 
 
 
 
 
 
 
 
 
719
  .-mt-3 {
720
  margin-top: -0.75rem;
721
  }
 
724
  margin-top: 0.25rem;
725
  }
726
 
 
 
 
 
 
 
 
 
 
 
 
 
727
  .block {
728
  display: block;
729
  }
730
 
731
+ .inline-block {
732
+ display: inline-block;
733
+ }
734
+
735
  .flex {
736
  display: flex;
737
  }
 
744
  display: none;
745
  }
746
 
747
+ .h-10 {
748
+ height: 2.5rem;
749
+ }
750
+
751
+ .h-\[20px\] {
752
+ height: 20px;
753
+ }
754
+
755
  .h-screen {
756
  height: 100vh;
757
  }
 
760
  height: 2.25rem;
761
  }
762
 
 
 
 
 
763
  .h-auto {
764
  height: auto;
765
  }
 
772
  height: 600px;
773
  }
774
 
775
+ .h-\[203\.3333px\] {
776
+ height: 203.3333px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
777
  }
778
 
779
  .h-\[41px\] {
780
  height: 41px;
781
  }
782
 
783
+ .w-full {
784
+ width: 100%;
785
  }
786
 
787
+ .w-20 {
788
+ width: 5rem;
789
  }
790
 
791
+ .w-\[20px\] {
792
+ width: 20px;
793
  }
794
 
795
+ .w-10 {
796
+ width: 2.5rem;
797
  }
798
 
799
  .w-9 {
 
804
  width: 8rem;
805
  }
806
 
 
 
 
 
807
  .w-0 {
808
  width: 0px;
809
  }
 
820
  width: 1.25rem;
821
  }
822
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
823
  .w-\[41px\] {
824
  width: 41px;
825
  }
826
 
827
+ .w-screen {
828
+ width: 100vw;
829
+ }
830
+
831
  .max-w-full {
832
  max-width: 100%;
833
  }
 
852
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
853
  }
854
 
855
+ .cursor-pointer {
856
+ cursor: pointer;
 
 
857
  }
858
 
859
  .cursor-grab {
860
  cursor: grab;
861
  }
862
 
863
+ .cursor-nwse-resize {
864
+ cursor: nwse-resize;
 
 
 
 
865
  }
866
 
867
  .cursor-default {
868
  cursor: default;
869
  }
870
 
 
 
 
 
871
  .select-none {
872
  -webkit-user-select: none;
873
  user-select: none;
 
885
  flex-direction: column;
886
  }
887
 
888
+ .flex-wrap {
889
+ flex-wrap: wrap;
890
+ }
891
+
892
+ .items-end {
893
+ align-items: flex-end;
894
+ }
895
+
896
  .items-center {
897
  align-items: center;
898
  }
899
 
900
+ .justify-center {
901
+ justify-content: center;
902
+ }
903
+
904
  .space-y-4 > :not([hidden]) ~ :not([hidden]) {
905
  --tw-space-y-reverse: 0;
906
  margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
 
921
  overflow: hidden;
922
  }
923
 
 
 
 
 
924
  .break-all {
925
  word-break: break-all;
926
  }
927
 
928
+ .rounded-lg {
929
+ border-radius: 0.5rem;
930
+ }
931
+
932
+ .rounded-2xl {
933
+ border-radius: 1rem;
934
+ }
935
+
936
  .rounded-md {
937
  border-radius: 0.375rem;
938
  }
 
941
  border-radius: 9999px;
942
  }
943
 
 
 
 
 
944
  .rounded-xl {
945
  border-radius: 0.75rem;
946
  }
947
 
948
+ .rounded-t-lg {
949
+ border-top-left-radius: 0.5rem;
950
+ border-top-right-radius: 0.5rem;
951
+ }
952
+
953
  .rounded-l-xl {
954
  border-top-left-radius: 0.75rem;
955
  border-bottom-left-radius: 0.75rem;
 
960
  border-bottom-right-radius: 0.75rem;
961
  }
962
 
963
+ .rounded-tl-lg {
964
+ border-top-left-radius: 0.5rem;
965
+ }
966
+
967
  .border {
968
  border-width: 1px;
969
  }
 
972
  border-width: 2px;
973
  }
974
 
 
 
 
 
975
  .border-y-2 {
976
  border-top-width: 2px;
977
  border-bottom-width: 2px;
 
989
  border-style: dotted;
990
  }
991
 
992
+ .border-gray-200 {
993
  --tw-border-opacity: 1;
994
+ border-color: rgb(229 231 235 / var(--tw-border-opacity));
995
  }
996
 
997
  .border-slate-300 {
 
999
  border-color: rgb(203 213 225 / var(--tw-border-opacity));
1000
  }
1001
 
1002
+ .border-black {
1003
+ --tw-border-opacity: 1;
1004
+ border-color: rgb(0 0 0 / var(--tw-border-opacity));
1005
+ }
1006
+
1007
  .border-red-600 {
1008
  --tw-border-opacity: 1;
1009
  border-color: rgb(220 38 38 / var(--tw-border-opacity));
 
1019
  border-color: rgb(255 255 255 / var(--tw-border-opacity));
1020
  }
1021
 
1022
+ .bg-gray-100 {
1023
+ --tw-bg-opacity: 1;
1024
+ background-color: rgb(243 244 246 / var(--tw-bg-opacity));
1025
+ }
1026
+
1027
+ .bg-gray-200 {
1028
+ --tw-bg-opacity: 1;
1029
+ background-color: rgb(229 231 235 / var(--tw-bg-opacity));
1030
+ }
1031
+
1032
+ .bg-neutral-300 {
1033
+ --tw-bg-opacity: 1;
1034
+ background-color: rgb(212 212 212 / var(--tw-bg-opacity));
1035
  }
1036
 
1037
  .bg-white {
 
1039
  background-color: rgb(255 255 255 / var(--tw-bg-opacity));
1040
  }
1041
 
1042
+ .bg-gray-300 {
1043
+ --tw-bg-opacity: 1;
1044
+ background-color: rgb(209 213 219 / var(--tw-bg-opacity));
1045
  }
1046
 
1047
  .bg-light-white {
1048
  background-color: rgba(255,255,255, 0.18);
1049
  }
1050
 
1051
+ .bg-transparent {
1052
+ background-color: transparent;
1053
+ }
1054
+
1055
  .bg-Warm-Blue {
1056
  --tw-bg-opacity: 1;
1057
  background-color: rgb(40 58 184 / var(--tw-bg-opacity));
 
1081
  background-image: linear-gradient(to bottom left, var(--tw-gradient-stops));
1082
  }
1083
 
1084
+ .bg-gradient-to-br {
1085
+ background-image: linear-gradient(to bottom right, var(--tw-gradient-stops));
1086
+ }
1087
+
1088
  .from-Retro-light-blue {
1089
  --tw-gradient-from: #2de2e6;
1090
  --tw-gradient-to: rgb(45 226 230 / 0);
 
1169
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
1170
  }
1171
 
1172
+ .from-purple-600 {
1173
+ --tw-gradient-from: #9333ea;
1174
+ --tw-gradient-to: rgb(147 51 234 / 0);
1175
+ --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
1176
+ }
1177
+
1178
  .via-purple-500 {
1179
  --tw-gradient-to: rgb(168 85 247 / 0);
1180
  --tw-gradient-stops: var(--tw-gradient-from), #a855f7, var(--tw-gradient-to);
 
1267
  --tw-gradient-to: #1565C0;
1268
  }
1269
 
1270
+ .to-blue-500 {
1271
+ --tw-gradient-to: #3b82f6;
1272
  }
1273
 
1274
  .p-4 {
1275
  padding: 1rem;
1276
  }
1277
 
1278
+ .p-2 {
1279
+ padding: 0.5rem;
1280
+ }
1281
+
1282
+ .p-5 {
1283
+ padding: 1.25rem;
1284
+ }
1285
+
1286
+ .p-0\.5 {
1287
+ padding: 0.125rem;
1288
  }
1289
 
1290
  .p-0 {
1291
  padding: 0px;
1292
  }
1293
 
1294
+ .p-1 {
1295
+ padding: 0.25rem;
1296
+ }
1297
+
1298
+ .px-6 {
1299
+ padding-left: 1.5rem;
1300
+ padding-right: 1.5rem;
1301
+ }
1302
+
1303
+ .py-2 {
1304
+ padding-top: 0.5rem;
1305
+ padding-bottom: 0.5rem;
1306
+ }
1307
+
1308
+ .px-5 {
1309
+ padding-left: 1.25rem;
1310
+ padding-right: 1.25rem;
1311
+ }
1312
+
1313
+ .py-2\.5 {
1314
+ padding-top: 0.625rem;
1315
+ padding-bottom: 0.625rem;
1316
  }
1317
 
1318
  .px-2 {
 
1330
  padding-bottom: 0.75rem;
1331
  }
1332
 
1333
+ .px-1 {
1334
+ padding-left: 0.25rem;
1335
+ padding-right: 0.25rem;
1336
  }
1337
 
1338
+ .pb-3 {
1339
+ padding-bottom: 0.75rem;
 
1340
  }
1341
 
1342
+ .pl-8 {
1343
+ padding-left: 2rem;
 
1344
  }
1345
 
1346
+ .pl-9 {
1347
+ padding-left: 2.25rem;
 
1348
  }
1349
 
1350
+ .pr-3 {
1351
+ padding-right: 0.75rem;
 
1352
  }
1353
 
1354
+ .pl-7 {
1355
+ padding-left: 1.75rem;
 
1356
  }
1357
 
1358
  .pt-8 {
 
1363
  padding-left: 1.25rem;
1364
  }
1365
 
 
 
 
 
1366
  .pl-3 {
1367
  padding-left: 0.75rem;
1368
  }
1369
 
 
 
 
 
 
 
 
 
1370
  .pt-4 {
1371
  padding-top: 1rem;
1372
  }
 
1375
  padding-top: 0.5rem;
1376
  }
1377
 
 
 
 
 
 
 
 
 
 
 
 
 
1378
  .pb-0 {
1379
  padding-bottom: 0px;
1380
  }
 
1387
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
1388
  }
1389
 
1390
+ .text-sm {
1391
+ font-size: 0.875rem;
1392
+ line-height: 1.25rem;
1393
+ }
1394
+
1395
+ .text-base {
1396
+ font-size: 1rem;
1397
+ line-height: 1.5rem;
1398
+ }
1399
+
1400
+ .text-lg {
1401
+ font-size: 1.125rem;
1402
+ line-height: 1.75rem;
1403
+ }
1404
+
1405
  .text-4xl {
1406
  font-size: 2.25rem;
1407
  line-height: 2.5rem;
 
1417
  line-height: 2.25rem;
1418
  }
1419
 
 
 
 
 
 
1420
  .text-2xl {
1421
  font-size: 1.5rem;
1422
  line-height: 2rem;
1423
  }
1424
 
1425
+ .font-medium {
1426
+ font-weight: 500;
 
1427
  }
1428
 
1429
  .font-bold {
 
1438
  line-height: 1.25;
1439
  }
1440
 
1441
+ .text-gray-500 {
1442
  --tw-text-opacity: 1;
1443
+ color: rgb(107 114 128 / var(--tw-text-opacity));
1444
  }
1445
 
1446
+ .text-gray-400 {
1447
  --tw-text-opacity: 1;
1448
+ color: rgb(156 163 175 / var(--tw-text-opacity));
1449
  }
1450
 
1451
  .text-black {
 
1453
  color: rgb(0 0 0 / var(--tw-text-opacity));
1454
  }
1455
 
1456
+ .text-gray-900 {
1457
+ --tw-text-opacity: 1;
1458
+ color: rgb(17 24 39 / var(--tw-text-opacity));
1459
+ }
1460
+
1461
+ .text-white {
1462
+ --tw-text-opacity: 1;
1463
+ color: rgb(255 255 255 / var(--tw-text-opacity));
1464
+ }
1465
+
1466
+ .text-blue-50 {
1467
  --tw-text-opacity: 1;
1468
+ color: rgb(239 246 255 / var(--tw-text-opacity));
1469
  }
1470
 
1471
  .text-selected-text {
 
1478
  text-decoration-line: underline;
1479
  }
1480
 
1481
+ .opacity-30 {
1482
+ opacity: 0.3;
1483
  }
1484
 
1485
+ .opacity-60 {
1486
+ opacity: 0.6;
1487
  }
1488
 
1489
  .shadow-lg {
 
1526
  transition-duration: 150ms;
1527
  }
1528
 
1529
+ .duration-75 {
1530
+ transition-duration: 75ms;
 
 
 
 
 
 
 
 
 
 
 
 
1531
  }
1532
 
1533
  .duration-300 {
 
1538
  transition-duration: 500ms;
1539
  }
1540
 
1541
+ .ease-in {
1542
+ transition-timing-function: cubic-bezier(0.4, 0, 1, 1);
1543
  }
1544
 
1545
  .placeholder\:italic::-webkit-input-placeholder {
 
1592
  border-color: rgb(74 222 128 / var(--tw-border-opacity));
1593
  }
1594
 
1595
+ .hover\:bg-gray-200:hover {
1596
+ --tw-bg-opacity: 1;
1597
+ background-color: rgb(229 231 235 / var(--tw-bg-opacity));
1598
+ }
1599
+
1600
+ .hover\:bg-gray-300:hover {
1601
+ --tw-bg-opacity: 1;
1602
+ background-color: rgb(209 213 219 / var(--tw-bg-opacity));
1603
+ }
1604
+
1605
+ .hover\:text-gray-300:hover {
1606
+ --tw-text-opacity: 1;
1607
+ color: rgb(209 213 219 / var(--tw-text-opacity));
1608
+ }
1609
+
1610
+ .hover\:text-white:hover {
1611
+ --tw-text-opacity: 1;
1612
+ color: rgb(255 255 255 / var(--tw-text-opacity));
1613
+ }
1614
+
1615
+ .hover\:opacity-70:hover {
1616
+ opacity: 0.7;
1617
+ }
1618
+
1619
  .hover\:opacity-50:hover {
1620
  opacity: 0.5;
1621
  }
 
1625
  border-color: rgb(14 165 233 / var(--tw-border-opacity));
1626
  }
1627
 
1628
+ .focus\:bg-gray-700:focus {
1629
+ --tw-bg-opacity: 1;
1630
+ background-color: rgb(55 65 81 / var(--tw-bg-opacity));
1631
+ }
1632
+
1633
  .focus\:from-fuchsia-200:focus {
1634
  --tw-gradient-from: #f5d0fe;
1635
  --tw-gradient-to: rgb(245 208 254 / 0);
1636
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
1637
  }
1638
 
1639
+ .focus\:shadow-xl:focus {
1640
+ --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
1641
+ --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);
1642
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
1643
+ }
1644
+
1645
  .focus\:outline-none:focus {
1646
  outline: 2px solid transparent;
1647
  outline-offset: 2px;
1648
  }
1649
 
1650
+ .focus\:ring-2:focus {
1651
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1652
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
1653
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
1654
+ }
1655
+
1656
  .focus\:ring-1:focus {
1657
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1658
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
1659
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
1660
  }
1661
 
1662
+ .focus\:ring-4:focus {
1663
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1664
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
1665
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
1666
+ }
1667
+
1668
+ .focus\:ring-inset:focus {
1669
+ --tw-ring-inset: inset;
1670
+ }
1671
+
1672
+ .focus\:ring-indigo-500:focus {
1673
+ --tw-ring-opacity: 1;
1674
+ --tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity));
1675
+ }
1676
+
1677
  .focus\:ring-sky-500:focus {
1678
  --tw-ring-opacity: 1;
1679
  --tw-ring-color: rgb(14 165 233 / var(--tw-ring-opacity));
1680
  }
1681
 
1682
+ .focus\:ring-blue-300:focus {
1683
+ --tw-ring-opacity: 1;
1684
+ --tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
1685
+ }
1686
+
1687
+ .group:hover .group-hover\:bg-opacity-0 {
1688
+ --tw-bg-opacity: 0;
1689
+ }
1690
+
1691
+ .group:hover .group-hover\:from-purple-600 {
1692
+ --tw-gradient-from: #9333ea;
1693
+ --tw-gradient-to: rgb(147 51 234 / 0);
1694
+ --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
1695
+ }
1696
+
1697
+ .group:hover .group-hover\:to-blue-500 {
1698
+ --tw-gradient-to: #3b82f6;
1699
+ }
1700
+
1701
+ .dark .dark\:border-gray-700 {
1702
+ --tw-border-opacity: 1;
1703
+ border-color: rgb(55 65 81 / var(--tw-border-opacity));
1704
+ }
1705
+
1706
  .dark .dark\:border-white {
1707
  --tw-border-opacity: 1;
1708
  border-color: rgb(255 255 255 / var(--tw-border-opacity));
1709
  }
1710
 
1711
+ .dark .dark\:bg-gray-800 {
1712
+ --tw-bg-opacity: 1;
1713
+ background-color: rgb(31 41 55 / var(--tw-bg-opacity));
1714
+ }
1715
+
1716
+ .dark .dark\:bg-gray-900 {
1717
+ --tw-bg-opacity: 1;
1718
+ background-color: rgb(17 24 39 / var(--tw-bg-opacity));
1719
+ }
1720
+
1721
  .dark .dark\:bg-stone-900 {
1722
  --tw-bg-opacity: 1;
1723
  background-color: rgb(28 25 23 / var(--tw-bg-opacity));
 
1742
  --tw-gradient-to: #BDD4E7;
1743
  }
1744
 
1745
+ .dark .dark\:text-gray-400 {
1746
+ --tw-text-opacity: 1;
1747
+ color: rgb(156 163 175 / var(--tw-text-opacity));
1748
+ }
1749
+
1750
  .dark .dark\:text-white {
1751
  --tw-text-opacity: 1;
1752
  color: rgb(255 255 255 / var(--tw-text-opacity));
1753
  }
1754
 
1755
+ .dark .dark\:hover\:bg-gray-700:hover {
1756
+ --tw-bg-opacity: 1;
1757
+ background-color: rgb(55 65 81 / var(--tw-bg-opacity));
1758
+ }
1759
+
1760
+ .dark .dark\:focus\:ring-blue-800:focus {
1761
+ --tw-ring-opacity: 1;
1762
+ --tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity));
1763
  }
1764
 
1765
  @media (min-width: 640px) {
frontend/src/images/exit.svg ADDED
frontend/src/images/gradio.svg ADDED
frontend/src/images/streamlit.svg ADDED