Spaces:
Configuration error
Configuration error
LucaVivona
commited on
Commit
Β·
9aeb710
1
Parent(s):
5ac078a
Frontend Refactor π
Browse files
frontend/src/components/Navagation/navbar.js
CHANGED
@@ -221,11 +221,11 @@ export default class Navbar extends Component{
|
|
221 |
|
222 |
return(<>
|
223 |
<li key={`${item.name}-${item.port}`} onDragStart={(event) => this.onDragStart(event, 'custom', item, index)}
|
224 |
-
className={` text-white text-md flex text-center items-center cursor-grab shadow-lg
|
225 |
p-5 px-2 mt-4 rounded-md ${ this.state.open ? `hover:animate-pulse ${this.state.colour[index] === null ? "" : this.state.colour[index]} ` : `hidden`} break-all -z-20`} draggable>
|
226 |
|
227 |
-
<
|
228 |
-
<
|
229 |
|
230 |
</li >
|
231 |
|
|
|
221 |
|
222 |
return(<>
|
223 |
<li key={`${item.name}-${item.port}`} onDragStart={(event) => this.onDragStart(event, 'custom', item, index)}
|
224 |
+
className={` text-white text-md flex flex-col text-center items-center cursor-grab shadow-lg
|
225 |
p-5 px-2 mt-4 rounded-md ${ this.state.open ? `hover:animate-pulse ${this.state.colour[index] === null ? "" : this.state.colour[index]} ` : `hidden`} break-all -z-20`} draggable>
|
226 |
|
227 |
+
<div className=" absolute -mt-2 text-4xl opacity-60 z-10 ">{`${this.state.emoji[index] === null ? "" : this.state.emoji[index]}`}</div>
|
228 |
+
<h4 className={` max-w-full font-sans text-blue-50 leading-tight font-bold text-xl flex-1 z-20 ${this.state.open ? "" : "hidden"}`} style={{"text-shadow" : "0px 1px 2px rgba(0, 0, 0, 0.25)"}} >{`${item.name}`} </h4>
|
229 |
|
230 |
</li >
|
231 |
|
frontend/src/components/Nodes/Custom.js
CHANGED
@@ -17,17 +17,19 @@ export default class CustomNodeIframe extends React.Component {
|
|
17 |
width : 540,
|
18 |
height : 600,
|
19 |
size : false,
|
20 |
-
iframe : 0
|
|
|
|
|
21 |
}
|
22 |
|
23 |
}
|
24 |
|
25 |
handelSelected = () => {
|
26 |
-
this.setState({id : this.state.id, reachable : this.state.reachable, selected : !this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : this.state.size, iframe : this.state.iframe})
|
27 |
}
|
28 |
|
29 |
handelSizeState = () => {
|
30 |
-
this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : !this.state.size, iframe : this.state.iframe})
|
31 |
}
|
32 |
|
33 |
isFetchable = async (host) => {
|
@@ -47,24 +49,34 @@ export default class CustomNodeIframe extends React.Component {
|
|
47 |
}
|
48 |
|
49 |
onRefresh(){
|
50 |
-
if(!this.isFetchable) this.onNodeClick(this.state.
|
51 |
else{
|
52 |
-
this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : this.state.size, iframe : this.state.iframe + 1})
|
53 |
}
|
54 |
}
|
55 |
|
56 |
handelOnChange(evt, type){
|
57 |
-
this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : type === "width" ? parseInt(evt.target.value) : this.state.width, height : type === "height" ? parseInt(evt.target.value) : this.state.height, size : this.state.size, iframe : this.state.iframe})
|
58 |
type === "width" ? this.myRef.current.style.width = `${parseInt(evt.target.value)}px` : this.myRef.current.style.height = `${parseInt(evt.target.value)}px`
|
59 |
}
|
60 |
|
61 |
handelSize(evt, increment, change){
|
62 |
if (evt === "increment") {
|
63 |
-
this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : change === "width" ? this.state.width + increment : this.state.width, height : change === "height" ? this.state.height + increment : this.state.height, size : this.state.size, iframe : this.state.iframe})
|
64 |
change === "width" ? this.myRef.current.style.width = `${this.state.width + increment}px` : this.myRef.current.style.height = `${this.state.height + increment}px`
|
65 |
}
|
66 |
|
67 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
|
69 |
Counter(focus, size){
|
70 |
return (<div className="custom-number-input h-10 w-32 dark:text-white text-black ">
|
@@ -81,7 +93,7 @@ export default class CustomNodeIframe extends React.Component {
|
|
81 |
}
|
82 |
|
83 |
render(){
|
84 |
-
if (!this.state.reachable) this.onNodeClick(this.state.
|
85 |
return (<>
|
86 |
<>
|
87 |
<div className=" flex w-full h-10 top-0 cursor-pointer" onClick={this.handelEvent}>
|
@@ -91,7 +103,7 @@ export default class CustomNodeIframe extends React.Component {
|
|
91 |
<div className={` flex ${this.state.selected ? '' : 'w-0 hidden'}`}>
|
92 |
<div title="Adjust Node Size" className="duration-300 cursor-pointer shadow-xl border-2 dark:border-white border-white h-10 w-10 mr-2 -mt-3 bg-Warm-Violet rounded-xl" onClick={this.handelSizeState}><TbResize className="h-full w-full text-white p-1"/></div>
|
93 |
<a href={this.state.data.host} target="_blank" rel="noopener noreferrer"><div title="Gradio Host Site" className="duration-300 cursor-pointer shadow-xl border-2 dark:border-white border-white h-10 w-10 mr-2 -mt-3 bg-Warm-Pink rounded-xl"><BiCube className="h-full w-full text-white p-1"/></div></a>
|
94 |
-
<div title="Delete Node" className="duration-300 cursor-pointer shadow-xl border-2 dark:border-white border-white h-10 w-10 mr-2 -mt-3 bg-Warm-Red rounded-xl" onClick={() => this.onNodeClick(this.state.
|
95 |
<div title="Refresh Node" className="duration-300 cursor-pointer shadow-xl border-2 dark:border-white border-white h-10 w-10 mr-2 -mt-3 bg-Warm-Orange rounded-xl" onClick={() => this.onRefresh()}><BiRefresh className="h-full w-full text-white p-1"/></div>
|
96 |
|
97 |
{ this.state.size && <div className="duration-300 flex w-auto h-full mr-2 -mt-3 space-x-4">
|
@@ -102,8 +114,8 @@ export default class CustomNodeIframe extends React.Component {
|
|
102 |
|
103 |
</div>
|
104 |
|
105 |
-
<div className={`relative w-[540px] h-[600px] overflow-hidden m-0 p-0 shadow-2xl`} ref={this.myRef}>
|
106 |
-
<div className={`absolute h-full w-full ${this.state.data.colour} border-
|
107 |
<iframe
|
108 |
id="iframe"
|
109 |
key={this.state.iframe}
|
@@ -113,6 +125,12 @@ export default class CustomNodeIframe extends React.Component {
|
|
113 |
className=" -z-10 container h-full p-2 flex-grow space-iframe overflow-scroll "
|
114 |
sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"></iframe>
|
115 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
</>
|
117 |
</>)
|
118 |
}
|
|
|
17 |
width : 540,
|
18 |
height : 600,
|
19 |
size : false,
|
20 |
+
iframe : 0,
|
21 |
+
initial_pos : 0,
|
22 |
+
initial_size : 0,
|
23 |
}
|
24 |
|
25 |
}
|
26 |
|
27 |
handelSelected = () => {
|
28 |
+
this.setState({id : this.state.id, reachable : this.state.reachable, selected : !this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : this.state.size, iframe : this.state.iframe, initial_pos : this.state.initial_pos, initial_size : this.state.initial_size})
|
29 |
}
|
30 |
|
31 |
handelSizeState = () => {
|
32 |
+
this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : !this.state.size, iframe : this.state.iframe, initial_pos : this.state.initial_pos, initial_size : this.state.initial_size})
|
33 |
}
|
34 |
|
35 |
isFetchable = async (host) => {
|
|
|
49 |
}
|
50 |
|
51 |
onRefresh(){
|
52 |
+
if(!this.isFetchable) this.onNodeClick(this.state.id)
|
53 |
else{
|
54 |
+
this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : this.state.size, iframe : this.state.iframe + 1, initial_pos : this.state.initial_pos, initial_size : this.state.initial_size})
|
55 |
}
|
56 |
}
|
57 |
|
58 |
handelOnChange(evt, type){
|
59 |
+
this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : type === "width" ? parseInt(evt.target.value) : this.state.width, height : type === "height" ? parseInt(evt.target.value) : this.state.height, size : this.state.size, iframe : this.state.iframe, initial_pos : this.state.initial_pos, initial_size : this.state.initial_size})
|
60 |
type === "width" ? this.myRef.current.style.width = `${parseInt(evt.target.value)}px` : this.myRef.current.style.height = `${parseInt(evt.target.value)}px`
|
61 |
}
|
62 |
|
63 |
handelSize(evt, increment, change){
|
64 |
if (evt === "increment") {
|
65 |
+
this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : change === "width" ? this.state.width + increment : this.state.width, height : change === "height" ? this.state.height + increment : this.state.height, size : this.state.size, iframe : this.state.iframe, initial_pos : this.state.initial_pos, initial_size : this.state.initial_size})
|
66 |
change === "width" ? this.myRef.current.style.width = `${this.state.width + increment}px` : this.myRef.current.style.height = `${this.state.height + increment}px`
|
67 |
}
|
68 |
|
69 |
}
|
70 |
+
|
71 |
+
// (Experimental) resize nodes by dragging
|
72 |
+
// initial = (e) => {
|
73 |
+
// this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height , size : this.state.size, iframe : this.state.iframe, initial_pos : e.clientY, initial_size : this.myRef.current.offsetHeight })
|
74 |
+
// }
|
75 |
+
|
76 |
+
// resize = (e) => {
|
77 |
+
// this.setState({id : this.state.id, reachable : this.state.reachable, selected : this.state.selected, data : this.state.data, width : this.state.width, height : this.state.height, size : this.state.size, iframe : this.state.iframe, initial_pos : this.state.initial_pos, initial_size : this.state.initial_size})
|
78 |
+
// this.myRef.current.style.height = `${parseInt(this.state.initial_size) + parseInt(e.clientY - this.state.initial_pos)}px`
|
79 |
+
// }
|
80 |
|
81 |
Counter(focus, size){
|
82 |
return (<div className="custom-number-input h-10 w-32 dark:text-white text-black ">
|
|
|
93 |
}
|
94 |
|
95 |
render(){
|
96 |
+
if (!this.state.reachable) this.onNodeClick(this.state.id)
|
97 |
return (<>
|
98 |
<>
|
99 |
<div className=" flex w-full h-10 top-0 cursor-pointer" onClick={this.handelEvent}>
|
|
|
103 |
<div className={` flex ${this.state.selected ? '' : 'w-0 hidden'}`}>
|
104 |
<div title="Adjust Node Size" className="duration-300 cursor-pointer shadow-xl border-2 dark:border-white border-white h-10 w-10 mr-2 -mt-3 bg-Warm-Violet rounded-xl" onClick={this.handelSizeState}><TbResize className="h-full w-full text-white p-1"/></div>
|
105 |
<a href={this.state.data.host} target="_blank" rel="noopener noreferrer"><div title="Gradio Host Site" className="duration-300 cursor-pointer shadow-xl border-2 dark:border-white border-white h-10 w-10 mr-2 -mt-3 bg-Warm-Pink rounded-xl"><BiCube className="h-full w-full text-white p-1"/></div></a>
|
106 |
+
<div title="Delete Node" className="duration-300 cursor-pointer shadow-xl border-2 dark:border-white border-white h-10 w-10 mr-2 -mt-3 bg-Warm-Red rounded-xl" onClick={() => this.onNodeClick(this.state.id)}><BsTrash className="h-full w-full text-white p-1"/></div>
|
107 |
<div title="Refresh Node" className="duration-300 cursor-pointer shadow-xl border-2 dark:border-white border-white h-10 w-10 mr-2 -mt-3 bg-Warm-Orange rounded-xl" onClick={() => this.onRefresh()}><BiRefresh className="h-full w-full text-white p-1"/></div>
|
108 |
|
109 |
{ this.state.size && <div className="duration-300 flex w-auto h-full mr-2 -mt-3 space-x-4">
|
|
|
114 |
|
115 |
</div>
|
116 |
|
117 |
+
<div id="draggable" className={`relative w-[540px] h-[600px] overflow-hidden m-0 p-0 shadow-2xl`} ref={this.myRef}>
|
118 |
+
<div className={`absolute h-full w-full ${this.state.data.colour} border-1 shadow-2xl rounded-xl -z-20`}></div>
|
119 |
<iframe
|
120 |
id="iframe"
|
121 |
key={this.state.iframe}
|
|
|
125 |
className=" -z-10 container h-full p-2 flex-grow space-iframe overflow-scroll "
|
126 |
sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"></iframe>
|
127 |
</div>
|
128 |
+
{// (Experimental) Do not uncomment
|
129 |
+
/* <div className={`absolute bottom-0 w-full h-10 bg-transparent border-1 shadow-2xl rounded-xl z-10 cursor-ns-resize`}
|
130 |
+
draggable
|
131 |
+
onDragStart={(e) => { this.initial(e)}}
|
132 |
+
onDrag={(e) => { this.resize(e)}}
|
133 |
+
></div> */}
|
134 |
</>
|
135 |
</>)
|
136 |
}
|
frontend/src/components/ReactFlow/ReactFlowEnv.js
CHANGED
@@ -38,11 +38,13 @@ export default function ReactEnviorment() {
|
|
38 |
}, []);
|
39 |
|
40 |
const deleteNodeContains = (id) =>{setNodes((nds) => nds.filter(n => !n.id.includes(`${id}-`) ))}
|
|
|
41 |
|
|
|
42 |
const onDrop = useCallback(
|
43 |
(event) => {
|
44 |
event.preventDefault();
|
45 |
-
|
46 |
const reactFlowBounds = reactFlowWrapper.current.getBoundingClientRect();
|
47 |
const type = event.dataTransfer.getData('application/reactflow');
|
48 |
const item = JSON.parse(event.dataTransfer.getData('application/item'));
|
@@ -60,7 +62,8 @@ export default function ReactEnviorment() {
|
|
60 |
id: `${item.name}-${nodes.length}`,
|
61 |
type,
|
62 |
position,
|
63 |
-
|
|
|
64 |
};
|
65 |
setNodes((nds) => nds.concat(newNode));
|
66 |
},
|
@@ -75,7 +78,7 @@ export default function ReactEnviorment() {
|
|
75 |
<Navbar onDelete={deleteNodeContains}/>
|
76 |
<ReactFlowProvider>
|
77 |
<div className="h-screen w-screen" ref={reactFlowWrapper}>
|
78 |
-
<ReactFlow nodes={nodes} edges={edges} nodeTypes={types} onNodesChange={onNodesChange} onEdgesChange={onEdgesChange} onNodesDelete={
|
79 |
<Background variant='dots' size={1} className=" bg-white dark:bg-neutral-800"/>
|
80 |
</ReactFlow>
|
81 |
</div>
|
|
|
38 |
}, []);
|
39 |
|
40 |
const deleteNodeContains = (id) =>{setNodes((nds) => nds.filter(n => !n.id.includes(`${id}-`) ))}
|
41 |
+
const deleteNode = (id) =>{setNodes((nds) => nds.filter(n => n.id !== id ))}
|
42 |
|
43 |
+
|
44 |
const onDrop = useCallback(
|
45 |
(event) => {
|
46 |
event.preventDefault();
|
47 |
+
console.log(event.dataTransfer.getData('application/reactflow'))
|
48 |
const reactFlowBounds = reactFlowWrapper.current.getBoundingClientRect();
|
49 |
const type = event.dataTransfer.getData('application/reactflow');
|
50 |
const item = JSON.parse(event.dataTransfer.getData('application/item'));
|
|
|
62 |
id: `${item.name}-${nodes.length}`,
|
63 |
type,
|
64 |
position,
|
65 |
+
dragHandle : `#draggable`,
|
66 |
+
data: { label: `${item.name}`, host : `${item.host}`, colour : `${colour}`, delete : deleteNode },
|
67 |
};
|
68 |
setNodes((nds) => nds.concat(newNode));
|
69 |
},
|
|
|
78 |
<Navbar onDelete={deleteNodeContains}/>
|
79 |
<ReactFlowProvider>
|
80 |
<div className="h-screen w-screen" ref={reactFlowWrapper}>
|
81 |
+
<ReactFlow nodes={nodes} edges={edges} nodeTypes={types} onNodesChange={onNodesChange} onEdgesChange={onEdgesChange} onNodesDelete={deleteNode} onDragOver={onDragOver} onDrop={onDrop} onInit={setReactFlowInstance} fitView>
|
82 |
<Background variant='dots' size={1} className=" bg-white dark:bg-neutral-800"/>
|
83 |
</ReactFlow>
|
84 |
</div>
|
frontend/src/css/dist/output.css
CHANGED
@@ -583,6 +583,10 @@ video {
|
|
583 |
}
|
584 |
}
|
585 |
|
|
|
|
|
|
|
|
|
586 |
.absolute {
|
587 |
position: absolute;
|
588 |
}
|
@@ -628,6 +632,22 @@ video {
|
|
628 |
right: 1.25rem;
|
629 |
}
|
630 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
631 |
.-z-20 {
|
632 |
z-index: -20;
|
633 |
}
|
@@ -648,6 +668,26 @@ video {
|
|
648 |
z-index: 50;
|
649 |
}
|
650 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
651 |
.float-left {
|
652 |
float: left;
|
653 |
}
|
@@ -660,6 +700,21 @@ video {
|
|
660 |
margin: 0px;
|
661 |
}
|
662 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
663 |
.mt-4 {
|
664 |
margin-top: 1rem;
|
665 |
}
|
@@ -684,6 +739,46 @@ video {
|
|
684 |
margin-top: -0.75rem;
|
685 |
}
|
686 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
687 |
.block {
|
688 |
display: block;
|
689 |
}
|
@@ -696,6 +791,10 @@ video {
|
|
696 |
display: inline-flex;
|
697 |
}
|
698 |
|
|
|
|
|
|
|
|
|
699 |
.hidden {
|
700 |
display: none;
|
701 |
}
|
@@ -760,6 +859,10 @@ video {
|
|
760 |
width: 100vw;
|
761 |
}
|
762 |
|
|
|
|
|
|
|
|
|
763 |
.flex-1 {
|
764 |
flex: 1 1 0%;
|
765 |
}
|
@@ -782,15 +885,27 @@ video {
|
|
782 |
cursor: pointer;
|
783 |
}
|
784 |
|
|
|
|
|
|
|
|
|
785 |
.select-none {
|
786 |
-webkit-user-select: none;
|
787 |
user-select: none;
|
788 |
}
|
789 |
|
|
|
|
|
|
|
|
|
790 |
.flex-row {
|
791 |
flex-direction: row;
|
792 |
}
|
793 |
|
|
|
|
|
|
|
|
|
794 |
.items-center {
|
795 |
align-items: center;
|
796 |
}
|
@@ -937,6 +1052,11 @@ video {
|
|
937 |
background-color: rgb(254 169 89 / var(--tw-bg-opacity));
|
938 |
}
|
939 |
|
|
|
|
|
|
|
|
|
|
|
940 |
.bg-gradient-to-bl {
|
941 |
background-image: linear-gradient(to bottom left, var(--tw-gradient-stops));
|
942 |
}
|
@@ -1025,12 +1145,6 @@ video {
|
|
1025 |
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
1026 |
}
|
1027 |
|
1028 |
-
.from-Entrepreneurial-Lies-Gray {
|
1029 |
-
--tw-gradient-from: #8693AB;
|
1030 |
-
--tw-gradient-to: rgb(134 147 171 / 0);
|
1031 |
-
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
1032 |
-
}
|
1033 |
-
|
1034 |
.via-purple-500 {
|
1035 |
--tw-gradient-to: rgb(168 85 247 / 0);
|
1036 |
--tw-gradient-stops: var(--tw-gradient-from), #a855f7, var(--tw-gradient-to);
|
@@ -1123,10 +1237,6 @@ video {
|
|
1123 |
--tw-gradient-to: #1565C0;
|
1124 |
}
|
1125 |
|
1126 |
-
.to-Entrepreneurial-Lies-Gray {
|
1127 |
-
--tw-gradient-to: #8693AB;
|
1128 |
-
}
|
1129 |
-
|
1130 |
.p-5 {
|
1131 |
padding: 1.25rem;
|
1132 |
}
|
@@ -1172,6 +1282,16 @@ video {
|
|
1172 |
padding-right: 1.5rem;
|
1173 |
}
|
1174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1175 |
.pt-8 {
|
1176 |
padding-top: 2rem;
|
1177 |
}
|
@@ -1204,6 +1324,10 @@ video {
|
|
1204 |
padding-top: 0.5rem;
|
1205 |
}
|
1206 |
|
|
|
|
|
|
|
|
|
1207 |
.text-center {
|
1208 |
text-align: center;
|
1209 |
}
|
@@ -1237,6 +1361,11 @@ video {
|
|
1237 |
line-height: 2rem;
|
1238 |
}
|
1239 |
|
|
|
|
|
|
|
|
|
|
|
1240 |
.font-bold {
|
1241 |
font-weight: 700;
|
1242 |
}
|
@@ -1245,6 +1374,14 @@ video {
|
|
1245 |
font-weight: 600;
|
1246 |
}
|
1247 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1248 |
.text-white {
|
1249 |
--tw-text-opacity: 1;
|
1250 |
color: rgb(255 255 255 / var(--tw-text-opacity));
|
@@ -1255,6 +1392,11 @@ video {
|
|
1255 |
color: rgb(0 0 0 / var(--tw-text-opacity));
|
1256 |
}
|
1257 |
|
|
|
|
|
|
|
|
|
|
|
1258 |
.underline {
|
1259 |
-webkit-text-decoration-line: underline;
|
1260 |
text-decoration-line: underline;
|
@@ -1264,6 +1406,10 @@ video {
|
|
1264 |
opacity: 0.7;
|
1265 |
}
|
1266 |
|
|
|
|
|
|
|
|
|
1267 |
.shadow-lg {
|
1268 |
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
1269 |
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
|
@@ -1288,11 +1434,6 @@ video {
|
|
1288 |
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
1289 |
}
|
1290 |
|
1291 |
-
.shadow-black {
|
1292 |
-
--tw-shadow-color: #000;
|
1293 |
-
--tw-shadow: var(--tw-shadow-colored);
|
1294 |
-
}
|
1295 |
-
|
1296 |
.outline-none {
|
1297 |
outline: 2px solid transparent;
|
1298 |
outline-offset: 2px;
|
@@ -1419,10 +1560,6 @@ video {
|
|
1419 |
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
1420 |
}
|
1421 |
|
1422 |
-
.dark .dark\:to-Entrepreneurial-Lies-Gray {
|
1423 |
-
--tw-gradient-to: #8693AB;
|
1424 |
-
}
|
1425 |
-
|
1426 |
.dark .dark\:to-Entrepreneurial-Lies-White {
|
1427 |
--tw-gradient-to: #BDD4E7;
|
1428 |
}
|
@@ -1433,17 +1570,51 @@ video {
|
|
1433 |
}
|
1434 |
|
1435 |
@media (min-width: 640px) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1436 |
.sm\:w-60 {
|
1437 |
width: 15rem;
|
1438 |
}
|
1439 |
|
|
|
|
|
|
|
|
|
1440 |
.sm\:text-sm {
|
1441 |
font-size: 0.875rem;
|
1442 |
line-height: 1.25rem;
|
1443 |
}
|
1444 |
}
|
1445 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1446 |
@media (min-width: 1024px) {
|
|
|
|
|
|
|
|
|
1447 |
.lg\:w-72 {
|
1448 |
width: 18rem;
|
1449 |
}
|
|
|
583 |
}
|
584 |
}
|
585 |
|
586 |
+
.fixed {
|
587 |
+
position: fixed;
|
588 |
+
}
|
589 |
+
|
590 |
.absolute {
|
591 |
position: absolute;
|
592 |
}
|
|
|
632 |
right: 1.25rem;
|
633 |
}
|
634 |
|
635 |
+
.left-\[50\%\] {
|
636 |
+
left: 50%;
|
637 |
+
}
|
638 |
+
|
639 |
+
.right-\[50\%\] {
|
640 |
+
right: 50%;
|
641 |
+
}
|
642 |
+
|
643 |
+
.right-\[45\%\] {
|
644 |
+
right: 45%;
|
645 |
+
}
|
646 |
+
|
647 |
+
.right-\[39\.1\%\] {
|
648 |
+
right: 39.1%;
|
649 |
+
}
|
650 |
+
|
651 |
.-z-20 {
|
652 |
z-index: -20;
|
653 |
}
|
|
|
668 |
z-index: 50;
|
669 |
}
|
670 |
|
671 |
+
.-z-0 {
|
672 |
+
z-index: 0;
|
673 |
+
}
|
674 |
+
|
675 |
+
.z-30 {
|
676 |
+
z-index: 30;
|
677 |
+
}
|
678 |
+
|
679 |
+
.-z-40 {
|
680 |
+
z-index: -40;
|
681 |
+
}
|
682 |
+
|
683 |
+
.z-\[100\] {
|
684 |
+
z-index: 100;
|
685 |
+
}
|
686 |
+
|
687 |
+
.z-\[\] {
|
688 |
+
z-index: ;
|
689 |
+
}
|
690 |
+
|
691 |
.float-left {
|
692 |
float: left;
|
693 |
}
|
|
|
700 |
margin: 0px;
|
701 |
}
|
702 |
|
703 |
+
.my-auto {
|
704 |
+
margin-top: auto;
|
705 |
+
margin-bottom: auto;
|
706 |
+
}
|
707 |
+
|
708 |
+
.my-5 {
|
709 |
+
margin-top: 1.25rem;
|
710 |
+
margin-bottom: 1.25rem;
|
711 |
+
}
|
712 |
+
|
713 |
+
.mx-auto {
|
714 |
+
margin-left: auto;
|
715 |
+
margin-right: auto;
|
716 |
+
}
|
717 |
+
|
718 |
.mt-4 {
|
719 |
margin-top: 1rem;
|
720 |
}
|
|
|
739 |
margin-top: -0.75rem;
|
740 |
}
|
741 |
|
742 |
+
.-mr-6 {
|
743 |
+
margin-right: -1.5rem;
|
744 |
+
}
|
745 |
+
|
746 |
+
.mb-4 {
|
747 |
+
margin-bottom: 1rem;
|
748 |
+
}
|
749 |
+
|
750 |
+
.mb-10 {
|
751 |
+
margin-bottom: 2.5rem;
|
752 |
+
}
|
753 |
+
|
754 |
+
.mr-10 {
|
755 |
+
margin-right: 2.5rem;
|
756 |
+
}
|
757 |
+
|
758 |
+
.ml-10 {
|
759 |
+
margin-left: 2.5rem;
|
760 |
+
}
|
761 |
+
|
762 |
+
.ml-60 {
|
763 |
+
margin-left: 15rem;
|
764 |
+
}
|
765 |
+
|
766 |
+
.mb-1 {
|
767 |
+
margin-bottom: 0.25rem;
|
768 |
+
}
|
769 |
+
|
770 |
+
.mb-2 {
|
771 |
+
margin-bottom: 0.5rem;
|
772 |
+
}
|
773 |
+
|
774 |
+
.-mb-2 {
|
775 |
+
margin-bottom: -0.5rem;
|
776 |
+
}
|
777 |
+
|
778 |
+
.-mt-2 {
|
779 |
+
margin-top: -0.5rem;
|
780 |
+
}
|
781 |
+
|
782 |
.block {
|
783 |
display: block;
|
784 |
}
|
|
|
791 |
display: inline-flex;
|
792 |
}
|
793 |
|
794 |
+
.table {
|
795 |
+
display: table;
|
796 |
+
}
|
797 |
+
|
798 |
.hidden {
|
799 |
display: none;
|
800 |
}
|
|
|
859 |
width: 100vw;
|
860 |
}
|
861 |
|
862 |
+
.max-w-full {
|
863 |
+
max-width: 100%;
|
864 |
+
}
|
865 |
+
|
866 |
.flex-1 {
|
867 |
flex: 1 1 0%;
|
868 |
}
|
|
|
885 |
cursor: pointer;
|
886 |
}
|
887 |
|
888 |
+
.cursor-ns-resize {
|
889 |
+
cursor: ns-resize;
|
890 |
+
}
|
891 |
+
|
892 |
.select-none {
|
893 |
-webkit-user-select: none;
|
894 |
user-select: none;
|
895 |
}
|
896 |
|
897 |
+
.resize {
|
898 |
+
resize: both;
|
899 |
+
}
|
900 |
+
|
901 |
.flex-row {
|
902 |
flex-direction: row;
|
903 |
}
|
904 |
|
905 |
+
.flex-col {
|
906 |
+
flex-direction: column;
|
907 |
+
}
|
908 |
+
|
909 |
.items-center {
|
910 |
align-items: center;
|
911 |
}
|
|
|
1052 |
background-color: rgb(254 169 89 / var(--tw-bg-opacity));
|
1053 |
}
|
1054 |
|
1055 |
+
.bg-black {
|
1056 |
+
--tw-bg-opacity: 1;
|
1057 |
+
background-color: rgb(0 0 0 / var(--tw-bg-opacity));
|
1058 |
+
}
|
1059 |
+
|
1060 |
.bg-gradient-to-bl {
|
1061 |
background-image: linear-gradient(to bottom left, var(--tw-gradient-stops));
|
1062 |
}
|
|
|
1145 |
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
1146 |
}
|
1147 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1148 |
.via-purple-500 {
|
1149 |
--tw-gradient-to: rgb(168 85 247 / 0);
|
1150 |
--tw-gradient-stops: var(--tw-gradient-from), #a855f7, var(--tw-gradient-to);
|
|
|
1237 |
--tw-gradient-to: #1565C0;
|
1238 |
}
|
1239 |
|
|
|
|
|
|
|
|
|
1240 |
.p-5 {
|
1241 |
padding: 1.25rem;
|
1242 |
}
|
|
|
1282 |
padding-right: 1.5rem;
|
1283 |
}
|
1284 |
|
1285 |
+
.px-4 {
|
1286 |
+
padding-left: 1rem;
|
1287 |
+
padding-right: 1rem;
|
1288 |
+
}
|
1289 |
+
|
1290 |
+
.px-9 {
|
1291 |
+
padding-left: 2.25rem;
|
1292 |
+
padding-right: 2.25rem;
|
1293 |
+
}
|
1294 |
+
|
1295 |
.pt-8 {
|
1296 |
padding-top: 2rem;
|
1297 |
}
|
|
|
1324 |
padding-top: 0.5rem;
|
1325 |
}
|
1326 |
|
1327 |
+
.pl-10 {
|
1328 |
+
padding-left: 2.5rem;
|
1329 |
+
}
|
1330 |
+
|
1331 |
.text-center {
|
1332 |
text-align: center;
|
1333 |
}
|
|
|
1361 |
line-height: 2rem;
|
1362 |
}
|
1363 |
|
1364 |
+
.text-xl {
|
1365 |
+
font-size: 1.25rem;
|
1366 |
+
line-height: 1.75rem;
|
1367 |
+
}
|
1368 |
+
|
1369 |
.font-bold {
|
1370 |
font-weight: 700;
|
1371 |
}
|
|
|
1374 |
font-weight: 600;
|
1375 |
}
|
1376 |
|
1377 |
+
.font-extrabold {
|
1378 |
+
font-weight: 800;
|
1379 |
+
}
|
1380 |
+
|
1381 |
+
.leading-tight {
|
1382 |
+
line-height: 1.25;
|
1383 |
+
}
|
1384 |
+
|
1385 |
.text-white {
|
1386 |
--tw-text-opacity: 1;
|
1387 |
color: rgb(255 255 255 / var(--tw-text-opacity));
|
|
|
1392 |
color: rgb(0 0 0 / var(--tw-text-opacity));
|
1393 |
}
|
1394 |
|
1395 |
+
.text-blue-50 {
|
1396 |
+
--tw-text-opacity: 1;
|
1397 |
+
color: rgb(239 246 255 / var(--tw-text-opacity));
|
1398 |
+
}
|
1399 |
+
|
1400 |
.underline {
|
1401 |
-webkit-text-decoration-line: underline;
|
1402 |
text-decoration-line: underline;
|
|
|
1406 |
opacity: 0.7;
|
1407 |
}
|
1408 |
|
1409 |
+
.opacity-60 {
|
1410 |
+
opacity: 0.6;
|
1411 |
+
}
|
1412 |
+
|
1413 |
.shadow-lg {
|
1414 |
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
1415 |
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
|
|
|
1434 |
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
1435 |
}
|
1436 |
|
|
|
|
|
|
|
|
|
|
|
1437 |
.outline-none {
|
1438 |
outline: 2px solid transparent;
|
1439 |
outline-offset: 2px;
|
|
|
1560 |
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
1561 |
}
|
1562 |
|
|
|
|
|
|
|
|
|
1563 |
.dark .dark\:to-Entrepreneurial-Lies-White {
|
1564 |
--tw-gradient-to: #BDD4E7;
|
1565 |
}
|
|
|
1570 |
}
|
1571 |
|
1572 |
@media (min-width: 640px) {
|
1573 |
+
.sm\:left-\[38\.5\%\] {
|
1574 |
+
left: 38.5%;
|
1575 |
+
}
|
1576 |
+
|
1577 |
+
.sm\:left-\[50\%\] {
|
1578 |
+
left: 50%;
|
1579 |
+
}
|
1580 |
+
|
1581 |
+
.sm\:left-\[70\%\] {
|
1582 |
+
left: 70%;
|
1583 |
+
}
|
1584 |
+
|
1585 |
+
.sm\:right-\[\%\] {
|
1586 |
+
right: %;
|
1587 |
+
}
|
1588 |
+
|
1589 |
.sm\:w-60 {
|
1590 |
width: 15rem;
|
1591 |
}
|
1592 |
|
1593 |
+
.sm\:pl-5 {
|
1594 |
+
padding-left: 1.25rem;
|
1595 |
+
}
|
1596 |
+
|
1597 |
.sm\:text-sm {
|
1598 |
font-size: 0.875rem;
|
1599 |
line-height: 1.25rem;
|
1600 |
}
|
1601 |
}
|
1602 |
|
1603 |
+
@media (min-width: 768px) {
|
1604 |
+
.md\:left-\[39\.15\%\] {
|
1605 |
+
left: 39.15%;
|
1606 |
+
}
|
1607 |
+
|
1608 |
+
.md\:right-\[\%\] {
|
1609 |
+
right: %;
|
1610 |
+
}
|
1611 |
+
}
|
1612 |
+
|
1613 |
@media (min-width: 1024px) {
|
1614 |
+
.lg\:left-\[40\%\] {
|
1615 |
+
left: 40%;
|
1616 |
+
}
|
1617 |
+
|
1618 |
.lg\:w-72 {
|
1619 |
width: 18rem;
|
1620 |
}
|