Compare commits
	
		
			2 Commits
		
	
	
		
			9dcebb9d88
			...
			2798c9d759
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 2798c9d759 | |||
| d27071dbd3 | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/pic_cole.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 122 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/pic_dustin.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 236 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/pic_elias.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 178 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/pic_fannie.jpeg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 131 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/pic_lucas.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 82 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/pic_natorion.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 72 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/pic_scarlett.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 183 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/qr_cole.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/qr_dustin.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/qr_elias.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/qr_fannie.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/qr_lucas.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/qr_natorion.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/qr_scarlett.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.3 KiB | 
| @@ -220,8 +220,8 @@ $white: #fff; | |||||||
| } | } | ||||||
|  |  | ||||||
| .modal-return { | .modal-return { | ||||||
|   width: 30px; |   width: auto; | ||||||
|   height: 20px; |   height: auto; | ||||||
|   align-items: center; |   align-items: center; | ||||||
|   justify-content: center; |   justify-content: center; | ||||||
|   margin-left: 10px; |   margin-left: 10px; | ||||||
|   | |||||||
| @@ -66,19 +66,19 @@ $white: #fff; | |||||||
|   text-align: left; |   text-align: left; | ||||||
| } | } | ||||||
|  |  | ||||||
| .settings-powerContainer, | .settings-grid, | ||||||
| .settings-creditsContainer { | .settings-creditsContainer { | ||||||
|   width: 80%; |   width: 80%; | ||||||
|   height: 100px; |   height: auto; | ||||||
|   background: linear-gradient( |   background: linear-gradient( | ||||||
|     -30deg, |     -30deg, | ||||||
|     rgb(187 208 236) 0%, |     rgb(187 208 236) 0%, | ||||||
|     rgb(255 255 255 / 100%) 100% |     rgb(255 255 255 / 100%) 100% | ||||||
|   ); |   ); | ||||||
|   display: flex; |   display: flex; | ||||||
|   align-items: center; |   align-items: flex-start; | ||||||
|   justify-content: flex-start; |   justify-content: center; | ||||||
|   flex-direction: row; |   flex-direction: column; | ||||||
|   border-radius: 20px; |   border-radius: 20px; | ||||||
|   border: 1px solid $gray; |   border: 1px solid $gray; | ||||||
|   margin-bottom: 5px; |   margin-bottom: 5px; | ||||||
| @@ -89,6 +89,29 @@ $white: #fff; | |||||||
|   filter: drop-shadow(0 4px 4px rgb(0 0 0 / 25%)); |   filter: drop-shadow(0 4px 4px rgb(0 0 0 / 25%)); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | .settings-gridInner { | ||||||
|  |   width: 100%; | ||||||
|  |   height: auto; | ||||||
|  |   display: flex; | ||||||
|  |   flex-direction: row; | ||||||
|  |   justify-content: flex-start; | ||||||
|  |   align-items: center; | ||||||
|  |   padding: 15px 0px 15px 0px; | ||||||
|  |   background-color: transparent; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .settings-grid h2 { | ||||||
|  |   width: 100%; | ||||||
|  |   height: auto; | ||||||
|  |   font-size: 24px; | ||||||
|  |   font-weight: bold; | ||||||
|  |   color: $dark-blue; | ||||||
|  |   font-family: "Gotham Medium"; | ||||||
|  |   text-align: left; | ||||||
|  |   padding: 20px 10px 0px 10px; | ||||||
|  |   background-color: transparent; | ||||||
|  | } | ||||||
|  |  | ||||||
| .settings-creditsContainer { | .settings-creditsContainer { | ||||||
|   height: 500px; |   height: 500px; | ||||||
|   display: flex; |   display: flex; | ||||||
| @@ -96,10 +119,10 @@ $white: #fff; | |||||||
|   align-items: center; |   align-items: center; | ||||||
| } | } | ||||||
|  |  | ||||||
| .settings-powerButton { | .settings-button { | ||||||
|   width: 200px; |   width: auto; | ||||||
|   height: 50px; |   height: 40px; | ||||||
|   border-radius: 20px; |   border-radius: 15px; | ||||||
|   background: linear-gradient( |   background: linear-gradient( | ||||||
|     15deg, |     15deg, | ||||||
|     rgb(223 223 223) 0%, |     rgb(223 223 223) 0%, | ||||||
| @@ -112,78 +135,182 @@ $white: #fff; | |||||||
|   filter: drop-shadow(5px 5px 2px rgb(0 0 0 / 15%)); |   filter: drop-shadow(5px 5px 2px rgb(0 0 0 / 15%)); | ||||||
|   cursor: pointer; |   cursor: pointer; | ||||||
|   text-decoration: none; |   text-decoration: none; | ||||||
|   margin-right: 20px; |   margin-right: 10px; | ||||||
|   margin-left: 20px; |   margin-left: 10px; | ||||||
| } | } | ||||||
|  |  | ||||||
| .settings-powerButton span { | .settings-button span { | ||||||
|   width: auto; |   width: auto; | ||||||
|   height: auto; |   height: auto; | ||||||
|   font-size: 20px; |   font-size: 16px; | ||||||
|   margin-top: 2px; |  | ||||||
|   color: $medium-blue; |   color: $medium-blue; | ||||||
|   font-family: "Gotham Bold"; |   font-family: "Gotham Bold"; | ||||||
|   background-color: transparent; |   background-color: transparent; | ||||||
|  |   padding: 10px; | ||||||
| } | } | ||||||
|  |  | ||||||
| .settings-credits { | .settings-form { | ||||||
|   width: 95%; |   width: 100%; | ||||||
|   height: 430px; |   height: auto; | ||||||
|  |   display: flex; | ||||||
|  |   align-items: center; | ||||||
|  |   justify-content: center; | ||||||
|  |   flex-direction: row; | ||||||
|   background-color: transparent; |   background-color: transparent; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // text box | ||||||
|  | #sendobject { | ||||||
|  |   width: 90%; | ||||||
|  |   height: 20px; | ||||||
|  |   border-radius: 15px; | ||||||
|  |   background-color: $white; | ||||||
|   display: flex; |   display: flex; | ||||||
|   justify-content: flex-start; |   justify-content: flex-start; | ||||||
|   align-items: flex-start; |   align-items: flex-start; | ||||||
|   flex-direction: column; |   transition: all 0.3s ease-in-out; | ||||||
|  |   filter: drop-shadow(5px 5px 2px rgb(0 0 0 / 15%)); | ||||||
|  |   text-decoration: none; | ||||||
|  |   margin-right: 10px; | ||||||
|  |   margin-left: 10px; | ||||||
|  |   padding: 10px; | ||||||
|  |   margin-top: 10px; | ||||||
|  |   margin-bottom: 10px; | ||||||
|  |   border: 1px solid rgb(199, 199, 199); | ||||||
|  |   text-align: left; | ||||||
| } | } | ||||||
|  |  | ||||||
| .entry-links, | #sendobject:focus { | ||||||
| .entry-name, |   outline: none; | ||||||
| .entry-position, | } | ||||||
| .settings-credits-title { |  | ||||||
|  | #sendobjectButton { | ||||||
|  |   width: 10%; | ||||||
|  |   height: 40px; | ||||||
|  |   border-radius: 15px; | ||||||
|  |   background: linear-gradient( | ||||||
|  |     15deg, | ||||||
|  |     rgb(223 223 223) 0%, | ||||||
|  |     rgb(255 255 255) 100% | ||||||
|  |   ); | ||||||
|  |   display: flex; | ||||||
|  |   justify-content: center; | ||||||
|  |   align-items: center; | ||||||
|  |   transition: all 0.3s ease-in-out; | ||||||
|  |   filter: drop-shadow(5px 5px 2px rgb(0 0 0 / 15%)); | ||||||
|  |   cursor: pointer; | ||||||
|  |   text-decoration: none; | ||||||
|  |   margin-right: 10px; | ||||||
|  |   margin-left: 10px; | ||||||
|  |   margin-top: 10px; | ||||||
|  |   margin-bottom: 10px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #creditsgrid { | ||||||
|  |   width: 100%; | ||||||
|  |   height: auto; | ||||||
|  |   display: flex; | ||||||
|  |   flex-direction: row; | ||||||
|  |   flex-wrap: wrap; | ||||||
|  |   justify-content: center; | ||||||
|  |   align-items: center; | ||||||
|  |   //background-color: red; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .entry { | ||||||
|  |   width: 48%; | ||||||
|  |   height: 150px; | ||||||
|  |   border-radius: 15px; | ||||||
|  |   background: linear-gradient( | ||||||
|  |     15deg, | ||||||
|  |     rgb(223 223 223) 0%, | ||||||
|  |     rgb(255 255 255) 100% | ||||||
|  |   ); | ||||||
|  |   display: flex; | ||||||
|  |   justify-content: center; | ||||||
|  |   align-items: center; | ||||||
|  |   transition: all 0.3s ease-in-out; | ||||||
|  |   filter: drop-shadow(5px 5px 2px rgb(0 0 0 / 15%)); | ||||||
|  |   text-decoration: none; | ||||||
|  |   margin: 10px 10px 10px 10px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .entry-image { | ||||||
|   width: auto; |   width: auto; | ||||||
|   height: auto; |   height: auto; | ||||||
|   text-align: left; |   display: flex; | ||||||
|   font-family: "Gotham Medium"; |  | ||||||
|   color: $light-blue; |  | ||||||
|   font-size: 20px; |  | ||||||
|   background-color: transparent; |   background-color: transparent; | ||||||
|   background: transparent; |  | ||||||
|   text-decoration: none; |  | ||||||
|   margin-bottom: 7px; |  | ||||||
|   margin-right: 30px; |  | ||||||
| } | } | ||||||
|  |  | ||||||
| .settings-credits-title { | .entry-img, | ||||||
|  | .entry-qr { | ||||||
|  |   width: 110px; | ||||||
|  |   height: 110px; | ||||||
|  |   background: linear-gradient( | ||||||
|  |     15deg, | ||||||
|  |     rgb(223 223 223) 0%, | ||||||
|  |     rgb(255 255 255) 100% | ||||||
|  |   ); | ||||||
|  |   display: flex; | ||||||
|  |   justify-content: center; | ||||||
|  |   align-items: center; | ||||||
|  |   border-radius: 15px; | ||||||
|  |   margin: 10px; | ||||||
|  |   filter: drop-shadow(5px 5px 2px rgb(0 0 0 / 15%)); | ||||||
|  |   border: 1px solid $gray; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .entry-qr { | ||||||
|  |   margin: 0px; | ||||||
|  |   padding: 8px; | ||||||
|  |   width: 40px; | ||||||
|  |   height: 40px; | ||||||
|  |   border-radius: 50px; | ||||||
|  |   background: white; | ||||||
|  |   position: fixed; | ||||||
|  |   bottom: 5px; | ||||||
|  |   margin-left: 90px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .entry-qr img { | ||||||
|  |   border-radius: 0px; | ||||||
|  |   width: auto; | ||||||
|  |   height: auto; | ||||||
|  |   background: red; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .entry-title { | ||||||
|  |   width: 70%; | ||||||
|  |   height: 50%; | ||||||
|  |   margin-left: 30px; | ||||||
|  |   display: flex; | ||||||
|  |   align-items: flex-start; | ||||||
|  |   justify-content: center; | ||||||
|  |   flex-direction: column; | ||||||
|  |   background-color: transparent; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .entry-title h2, | ||||||
|  | .entry-title h3 { | ||||||
|  |   width: auto; | ||||||
|  |   height: auto; | ||||||
|   font-size: 24px; |   font-size: 24px; | ||||||
|   font-weight: bold; |   font-weight: bold; | ||||||
|   color: $dark-blue; |   color: $dark-blue; | ||||||
|   font-family: "Gotham Medium"; |   font-family: "Gotham Medium"; | ||||||
|   margin-bottom: 10px; |   text-align: left; | ||||||
| } |  | ||||||
|  |  | ||||||
| .entry { |  | ||||||
|   width: 100%; |  | ||||||
|   height: auto; |  | ||||||
|   display: flex; |  | ||||||
|   justify-content: flex-start; |  | ||||||
|   align-items: center; |  | ||||||
|   background-color: transparent; |   background-color: transparent; | ||||||
|  |   text-align: start; | ||||||
|  |   margin: 0px; | ||||||
|  |   padding: 0px; | ||||||
| } | } | ||||||
|  |  | ||||||
| .entry-name { | .entry-title h2 { | ||||||
|   width: auto; |   margin-bottom: 5px; | ||||||
|   height: auto; |  | ||||||
|   color: $medium-blue; |  | ||||||
| } | } | ||||||
|  |  | ||||||
| .entry-position { | .entry-title h3 { | ||||||
|   width: auto; |   font-size: 16px; | ||||||
|   height: auto; |   font-weight: normal; | ||||||
|   color: $light-blue; |   color: $light-blue; | ||||||
| } | } | ||||||
|  |  | ||||||
| .entry-links { |  | ||||||
|   width: auto; |  | ||||||
|   height: auto; |  | ||||||
|   color: $hover-blue; |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -1,24 +1,114 @@ | |||||||
| import React, { Component } from "react"; | import React, { Component } from "react"; | ||||||
| import BeldenLogo from "../assets/images/belden-white.png"; | import BeldenLogo from "../assets/images/belden-white.png"; | ||||||
|  | import Modal from "react-modal"; | ||||||
| import "../assets/stylesheets/settings.scss"; | import "../assets/stylesheets/settings.scss"; | ||||||
|  |  | ||||||
|  | Modal.setAppElement("#root"); | ||||||
|  |  | ||||||
| export default class SettingsComponent extends Component { | export default class SettingsComponent extends Component { | ||||||
|   shutdownPower = () => { |   constructor(props) { | ||||||
|     console.log("Shutting down..."); |     super(props); | ||||||
|     this.props.socket.send('{"type":"shutdown","call":"request","data":{}}'); |     this.state = { | ||||||
|  |       modalOpen_quickAction: false, | ||||||
|  |       modalOpacity: 0, | ||||||
|  |       action: "", | ||||||
|  |     }; | ||||||
|  |     this.openModal = this.openModal.bind(this); | ||||||
|  |     this.closeModal = this.closeModal.bind(this); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   quickAction = (action, requirePrompt) => { | ||||||
|  |     if (requirePrompt) { | ||||||
|  |       this.openModal("modalOpen_quickAction", action); | ||||||
|  |     } else { | ||||||
|  |       this.quickActionPerform(action); | ||||||
|  |     } | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   restartPower = () => { |   quickActionPerform = (action) => { | ||||||
|  |     switch (action) { | ||||||
|  |       case "shutdown": | ||||||
|  |         console.log("Shutting down..."); | ||||||
|  |         this.props.socket.send( | ||||||
|  |           '{"type":"shutdown","call":"request","data":{}}' | ||||||
|  |         ); | ||||||
|  |         break; | ||||||
|  |       case "restart": | ||||||
|         console.log("Restarting..."); |         console.log("Restarting..."); | ||||||
|         this.props.socket.send('{"type":"restart","call":"request","data":{}}'); |         this.props.socket.send('{"type":"restart","call":"request","data":{}}'); | ||||||
|  |         break; | ||||||
|  |       case "home": | ||||||
|  |         console.log("Homing..."); | ||||||
|  |         this.props.socket.send('{"type":"home","call":"request","data":{}}'); | ||||||
|  |         break; | ||||||
|  |       default: | ||||||
|  |         console.log("Invalid action"); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   modeMessage = () => { |   openModal = (modal, action) => { | ||||||
|     console.log("Sending 'mode' message..."); |     this.setState({ [modal]: true }, () => { | ||||||
|     this.props.socket.send('{"type":"mode","call":"request","data":{}}'); |       setTimeout(() => this.setState({ modalOpacity: 1 }), 100); | ||||||
|  |     }); | ||||||
|  |     this.setState({ action }); | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   closeModal = (modal) => { | ||||||
|  |     this.setState({ modalOpacity: 0 }, () => { | ||||||
|  |       setTimeout(() => this.setState({ [modal]: false }), 300); | ||||||
|  |     }); | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   performActionCloseModal = () => { | ||||||
|  |     console.log("Performing action: " + this.state.action); | ||||||
|  |     this.quickActionPerform(this.state.action); | ||||||
|  |     this.closeModal("modalOpen_quickAction"); | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   sendObject = () => { | ||||||
|  |     const object = document.getElementById("sendobject").value; | ||||||
|  |     console.log("Sending object: " + object); | ||||||
|  |     this.props.socket.send | ||||||
|  |       ? this.props.socket.send(object) | ||||||
|  |       : console.log("No socket connection"); | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   render() { |   render() { | ||||||
|  |     const { modalOpen_quickAction, modalOpacity } = this.state; | ||||||
|  |  | ||||||
|  |     const modalStyle = { | ||||||
|  |       content: { | ||||||
|  |         opacity: modalOpacity, | ||||||
|  |         transition: "opacity 300ms ease-in-out", | ||||||
|  |         top: "50%", | ||||||
|  |         left: "50%", | ||||||
|  |         right: "auto", | ||||||
|  |         bottom: "auto", | ||||||
|  |         marginRight: "-50%", | ||||||
|  |         width: "auto", | ||||||
|  |         height: "auto", | ||||||
|  |         transform: "translate(-50%, -50%)", | ||||||
|  |         overflow: "hidden", | ||||||
|  |         display: "flex", | ||||||
|  |         flexDirection: "column", | ||||||
|  |         justifyContent: "center", | ||||||
|  |         alignItems: "center", | ||||||
|  |         borderRadius: "20px", | ||||||
|  |         background: | ||||||
|  |           "linear-gradient(-30deg, rgb(187, 194, 236) 0%, rgba(255, 255, 255, 1) 100%)", | ||||||
|  |         boxShadow: "0 0 20px rgba(0, 0, 0, 0.5)", | ||||||
|  |         minWidth: "30%", | ||||||
|  |         minHeight: "30%", | ||||||
|  |       }, | ||||||
|  |       overlay: { | ||||||
|  |         opacity: modalOpacity, | ||||||
|  |         transition: "opacity 300ms ease-in-out", | ||||||
|  |         backgroundColor: "rgba(255, 255, 255, 0.15)", | ||||||
|  |         backdropFilter: "blur(5px)", | ||||||
|  |       }, | ||||||
|  |     }; | ||||||
|  |  | ||||||
|     return ( |     return ( | ||||||
|       <div className="settings"> |       <div className="settings"> | ||||||
|         <div className="settings-image"> |         <div className="settings-image"> | ||||||
| @@ -26,94 +116,227 @@ export default class SettingsComponent extends Component { | |||||||
|         </div> |         </div> | ||||||
|         <div className="settings-fieldContainer"> |         <div className="settings-fieldContainer"> | ||||||
|           <h1 className="settings-title">⚙️ Settings</h1> |           <h1 className="settings-title">⚙️ Settings</h1> | ||||||
|           <div className="settings-powerContainer"> |           <div className="settings-grid"> | ||||||
|  |             <h2>⚡Quick Actions:</h2> | ||||||
|  |             <div className="settings-gridInner"> | ||||||
|               <div |               <div | ||||||
|               className="settings-powerButton" |                 className="settings-button" | ||||||
|               onClick={() => this.shutdownPower()} |                 onClick={() => this.quickAction("shutdown", true)} | ||||||
|               > |               > | ||||||
|                 <span>🔴 Power Off</span> |                 <span>🔴 Power Off</span> | ||||||
|               </div> |               </div> | ||||||
|               <div |               <div | ||||||
|               className="settings-powerButton" |                 className="settings-button" | ||||||
|               onClick={() => this.modeMessage()} |                 onClick={() => this.quickAction("restart", false)} | ||||||
|               > |               > | ||||||
|               <span>Send "mode"</span> |                 <span>🟠 Restart</span> | ||||||
|               </div> |               </div> | ||||||
|             {/* <div |               <div | ||||||
|               className="settings-powerButton" |                 className="settings-button" | ||||||
|               onClick={() => this.restartPower()} |                 onClick={() => this.quickAction("home", false)} | ||||||
|               > |               > | ||||||
|               <span>🟨 Restart</span> |                 <span>🏠 Home Arm</span> | ||||||
|             </div> */} |  | ||||||
|               </div> |               </div> | ||||||
|           <div className="settings-creditsContainer"> |  | ||||||
|             <div className="settings-credits"> |  | ||||||
|               <h2 className="settings-credits-title">Credits:</h2> |  | ||||||
|               <div className="entry"> |  | ||||||
|                 <span className="entry-name">Cole Deck,</span> |  | ||||||
|                 <span className="entry-position">Project Lead,</span> |  | ||||||
|                 <a className="entry-links" href="https://deck.sh"> |  | ||||||
|                   https://deck.sh |  | ||||||
|                 </a> |  | ||||||
|             </div> |             </div> | ||||||
|               <div className="entry"> |           </div> | ||||||
|                 <span className="entry-name">Natorion Johnson,</span> |           <div className="settings-grid"> | ||||||
|                 <span className="entry-position">Lead PCB assembler,</span> |             <h2>💻Send Object:</h2> | ||||||
|                 <a |             <div className="settings-gridInner"> | ||||||
|                   className="entry-links" |               <form className="settings-form"> | ||||||
|                   href="https://linkedin.com/in/NatorionJ" |                 <input | ||||||
|  |                   id="sendobject" | ||||||
|  |                   type="text" | ||||||
|  |                   name="sendobject" | ||||||
|  |                   placeholder={`{"type":"cable_map","call":"request","data":{}}`} | ||||||
|  |                 /> | ||||||
|  |                 <div | ||||||
|  |                   className="settings-button" | ||||||
|  |                   id="sendobjectButton" | ||||||
|  |                   onClick={() => this.sendObject()} | ||||||
|                 > |                 > | ||||||
|                   https://linkedin.com/in/NatorionJ |                   <span>Send</span> | ||||||
|                 </a> |  | ||||||
|                 </div> |                 </div> | ||||||
|  |               </form> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |           <div className="settings-grid"> | ||||||
|  |             <h2>⚒️Credits:</h2> | ||||||
|  |             <div id="creditsgrid" className="settings-gridInner"> | ||||||
|               <div className="entry"> |               <div className="entry"> | ||||||
|                 <span className="entry-name">Fannie Yu,</span> |                 <div className="entry-image"> | ||||||
|                 <span className="entry-position"> |                   <img | ||||||
|                   CAD Design, Fabrication Planner |                     className="entry-img" | ||||||
|                 </span> |                     src={require("../assets/images/pic_cole.jpg")} | ||||||
|                 <a |                     alt="Cole Deck" | ||||||
|                   className="entry-links" |                   /> | ||||||
|                   href="https://linkedin.com/in/fannieyu" |                   <div className="entry-qr"> | ||||||
|  |                     <img | ||||||
|  |                       src={require("../assets/images/qr_cole.png")} | ||||||
|  |                       alt="QR" | ||||||
|  |                     /> | ||||||
|  |                   </div> | ||||||
|  |                 </div> | ||||||
|  |                 <div className="entry-title"> | ||||||
|  |                   <h2>Cole Deck</h2> | ||||||
|  |                   <h3>Project Lead</h3> | ||||||
|  |                 </div> | ||||||
|  |               </div> | ||||||
|  |  | ||||||
|  |               <div className="entry"> | ||||||
|  |                 <div className="entry-image"> | ||||||
|  |                   <img | ||||||
|  |                     className="entry-img" | ||||||
|  |                     src={require("../assets/images/pic_scarlett.jpg")} | ||||||
|  |                     alt="Scarlett Kadan" | ||||||
|  |                   /> | ||||||
|  |                   <div className="entry-qr"> | ||||||
|  |                     <img | ||||||
|  |                       src={require("../assets/images/qr_scarlett.png")} | ||||||
|  |                       alt="QR" | ||||||
|  |                     /> | ||||||
|  |                   </div> | ||||||
|  |                 </div> | ||||||
|  |                 <div className="entry-title"> | ||||||
|  |                   <h2>Scarlett Kadan</h2> | ||||||
|  |                   <h3>Lead Front-End Dev, UI/UX Designer</h3> | ||||||
|  |                 </div> | ||||||
|  |               </div> | ||||||
|  |  | ||||||
|  |               <div className="entry"> | ||||||
|  |                 <div className="entry-image"> | ||||||
|  |                   <img | ||||||
|  |                     className="entry-img" | ||||||
|  |                     src={require("../assets/images/pic_natorion.jpg")} | ||||||
|  |                     alt="Natorion Johnson" | ||||||
|  |                   /> | ||||||
|  |                   <div className="entry-qr"> | ||||||
|  |                     <img | ||||||
|  |                       src={require("../assets/images/qr_natorion.png")} | ||||||
|  |                       alt="QR" | ||||||
|  |                     /> | ||||||
|  |                   </div> | ||||||
|  |                 </div> | ||||||
|  |                 <div className="entry-title"> | ||||||
|  |                   <h2>Natorion Johnson</h2> | ||||||
|  |                   <h3>Lead PCB assembler</h3> | ||||||
|  |                 </div> | ||||||
|  |               </div> | ||||||
|  |  | ||||||
|  |               <div className="entry"> | ||||||
|  |                 <div className="entry-image"> | ||||||
|  |                   <img | ||||||
|  |                     className="entry-img" | ||||||
|  |                     src={require("../assets/images/pic_fannie.jpeg")} | ||||||
|  |                     alt="Fannie Yu" | ||||||
|  |                   /> | ||||||
|  |                   <div className="entry-qr"> | ||||||
|  |                     <img | ||||||
|  |                       src={require("../assets/images/qr_fannie.png")} | ||||||
|  |                       alt="QR" | ||||||
|  |                     /> | ||||||
|  |                   </div> | ||||||
|  |                 </div> | ||||||
|  |                 <div className="entry-title"> | ||||||
|  |                   <h2>Fannie Yu</h2> | ||||||
|  |                   <h3>CAD Design, Fabrication Planner</h3> | ||||||
|  |                 </div> | ||||||
|  |               </div> | ||||||
|  |  | ||||||
|  |               <div className="entry"> | ||||||
|  |                 <div className="entry-image"> | ||||||
|  |                   <img | ||||||
|  |                     className="entry-img" | ||||||
|  |                     src={require("../assets/images/pic_elias.jpg")} | ||||||
|  |                     alt="Elias Reschly" | ||||||
|  |                   /> | ||||||
|  |                   <div className="entry-qr"> | ||||||
|  |                     <img | ||||||
|  |                       src={require("../assets/images/qr_elias.png")} | ||||||
|  |                       alt="QR" | ||||||
|  |                     /> | ||||||
|  |                   </div> | ||||||
|  |                 </div> | ||||||
|  |                 <div className="entry-title"> | ||||||
|  |                   <h2>Elias Reschly</h2> | ||||||
|  |                   <h3>Mechanical Design, Fabrication</h3> | ||||||
|  |                 </div> | ||||||
|  |               </div> | ||||||
|  |  | ||||||
|  |               <div className="entry"> | ||||||
|  |                 <div className="entry-image"> | ||||||
|  |                   <img | ||||||
|  |                     className="entry-img" | ||||||
|  |                     src={require("../assets/images/pic_lucas.jpg")} | ||||||
|  |                     alt="Lucas Ferguson" | ||||||
|  |                   /> | ||||||
|  |                   <div className="entry-qr"> | ||||||
|  |                     <img | ||||||
|  |                       src={require("../assets/images/qr_lucas.png")} | ||||||
|  |                       alt="QR" | ||||||
|  |                     /> | ||||||
|  |                   </div> | ||||||
|  |                 </div> | ||||||
|  |                 <div className="entry-title"> | ||||||
|  |                   <h2>Lucas Ferguson</h2> | ||||||
|  |                   <h3>Front-End Dev</h3> | ||||||
|  |                 </div> | ||||||
|  |               </div> | ||||||
|  |  | ||||||
|  |               <div className="entry"> | ||||||
|  |                 <div className="entry-image"> | ||||||
|  |                   <img | ||||||
|  |                     className="entry-img" | ||||||
|  |                     src={require("../assets/images/pic_dustin.jpg")} | ||||||
|  |                     alt="" | ||||||
|  |                   /> | ||||||
|  |                   <div className="entry-qr"> | ||||||
|  |                     <img | ||||||
|  |                       src={require("../assets/images/qr_dustin.png")} | ||||||
|  |                       alt="QR" | ||||||
|  |                     /> | ||||||
|  |                   </div> | ||||||
|  |                 </div> | ||||||
|  |                 <div className="entry-title"> | ||||||
|  |                   <h2>Dustin Thomas</h2> | ||||||
|  |                   <h3>Back-End Dev</h3> | ||||||
|  |                 </div> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |  | ||||||
|  |         <Modal | ||||||
|  |           isOpen={modalOpen_quickAction} | ||||||
|  |           contentLabel="show" | ||||||
|  |           onRequestClose={() => this.closeModal("modalOpen_quickAction")} | ||||||
|  |           style={modalStyle} | ||||||
|         > |         > | ||||||
|                   https://linkedin.com/in/fannieyu |           <div className="modal-container"> | ||||||
|                 </a> |             <div className="modal-title"> | ||||||
|  |               <span>⚠️</span> | ||||||
|  |               <span>Warning</span> | ||||||
|             </div> |             </div> | ||||||
|               <div className="entry"> |             <div className="modal-body"> | ||||||
|                 <span className="entry-name">Elias Frey Reschly,</span> |               <span>Are you sure you want to perform this quick action?</span> | ||||||
|                 <span className="entry-position"> |  | ||||||
|                   Mechanical Design, Fabrication |  | ||||||
|                 </span> |  | ||||||
|                 <div className="entry-links"></div> |  | ||||||
|             </div> |             </div> | ||||||
|               <div className="entry"> |             <div className="modal-tray"> | ||||||
|                 <span className="entry-name">Scarlett Kadan,</span> |               <div | ||||||
|                 <span className="entry-position"> |                 className="modal-return" | ||||||
|                   Front-End Dev, UI/UX Designer, |                 onClick={() => | ||||||
|                 </span> |                   this.performActionCloseModal("modalOpen_quickAction") | ||||||
|                 <a className="entry-links" href="https://kadan.live"> |                 } | ||||||
|                   https://kadan.live |  | ||||||
|                 </a> |  | ||||||
|               </div> |  | ||||||
|               <div className="entry"> |  | ||||||
|                 <span className="entry-name">Lucas Ferguson,</span> |  | ||||||
|                 <span className="entry-position">Front-End Dev,</span> |  | ||||||
|                 <a |  | ||||||
|                   className="entry-links" |  | ||||||
|                   href="https://lucasferguson.webflow.io" |  | ||||||
|               > |               > | ||||||
|                   https://lucasferguson.webflow.io |                 <span>Continue</span> | ||||||
|                 </a> |  | ||||||
|               </div> |  | ||||||
|               <div className="entry"> |  | ||||||
|                 <span className="entry-name">Dustin Thomas,</span> |  | ||||||
|                 <span className="entry-position">Back-End Dev,</span> |  | ||||||
|                 <a className="entry-links" href="https://cptlobster.dev"> |  | ||||||
|                   https://cptlobster.dev |  | ||||||
|                 </a> |  | ||||||
|               </div> |               </div> | ||||||
|  |               <div | ||||||
|  |                 className="modal-return" | ||||||
|  |                 onClick={() => this.closeModal("modalOpen_quickAction")} | ||||||
|  |               > | ||||||
|  |                 <span>Cancel</span> | ||||||
|               </div> |               </div> | ||||||
|             </div> |             </div> | ||||||
|           </div> |           </div> | ||||||
|  |         </Modal> | ||||||
|       </div> |       </div> | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|   | |||||||