diff --git a/Procfile b/Procfile new file mode 100644 index 00000000..063b78f4 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: npm start diff --git a/public/img/asset/bootlogo.png b/public/img/asset/bootlogo.png index 2132281b..7370994c 100644 Binary files a/public/img/asset/bootlogo.png and b/public/img/asset/bootlogo.png differ diff --git a/public/img/asset/prof.jpg b/public/img/asset/prof.jpg new file mode 100644 index 00000000..8c3c116f Binary files /dev/null and b/public/img/asset/prof.jpg differ diff --git a/public/img/icon/ui/passkey.png b/public/img/icon/ui/passkey.png new file mode 100644 index 00000000..3b828394 Binary files /dev/null and b/public/img/icon/ui/passkey.png differ diff --git a/public/img/icon/ui/pinlock.png b/public/img/icon/ui/pinlock.png new file mode 100644 index 00000000..56bb1c93 Binary files /dev/null and b/public/img/icon/ui/pinlock.png differ diff --git a/public/img/wallpaper/lock.jpg b/public/img/wallpaper/lock.jpg new file mode 100644 index 00000000..4ff20fcd Binary files /dev/null and b/public/img/wallpaper/lock.jpg differ diff --git a/public/index.html b/public/index.html index e4833fe2..65ac05a9 100644 --- a/public/index.html +++ b/public/index.html @@ -20,8 +20,8 @@
-
Even Microsoft couldn't make it far with windows on phone then how could I?
- + + diff --git a/public/style.css b/public/style.css index 8f613988..cd8f5582 100644 --- a/public/style.css +++ b/public/style.css @@ -84,114 +84,3 @@ h5 { width: 800px; } } - -/* Loader css */ -#loader { - position: fixed; - top: 0; - left: 0; - height: 100%; - width: 100%; - background: #000000; - z-index: 99999999999999; - display: grid; - text-align: center; - align-items: center; - justify-content: center; -} - -.circledots { - position: relative; - top: 0; - left: 0; - transform: scale(.9); - width: 50px; - height: 50px; - margin: auto; -} - -.circledots .circle { - position: absolute; - width: 38px; - height: 38px; - opacity: 0; - border-radius: 100px; - transform: rotate(225deg); - animation-iteration-count: infinite; - animation-name: orbit; - animation-duration: 5.5s; -} - -.circledots .circle:after { - content: ''; - position: absolute; - width: 6px; - height: 6px; - clip-path: circle(100%); - border-radius: 100px; - background: #fff; -} - -.circledots .circle:nth-child(2) { - animation-delay: 240ms; -} - -.circledots .circle:nth-child(3) { - animation-delay: 480ms; -} - -.circledots .circle:nth-child(4) { - animation-delay: 720ms; -} - -.circledots .circle:nth-child(5) { - animation-delay: 960ms; -} - -@keyframes orbit { - 0% { - transform: rotate(225deg); - opacity: 1; - animation-timing-function: ease-out; - } - - 7% { - transform: rotate(345deg); - animation-timing-function: linear; - } - - 30% { - transform: rotate(455deg); - animation-timing-function: ease-in-out; - } - - 39% { - transform: rotate(690deg); - animation-timing-function: linear; - } - - 70% { - transform: rotate(815deg); - opacity: 1; - animation-timing-function: ease-out; - } - - 75% { - transform: rotate(945deg); - animation-timing-function: ease-out; - } - - 76% { - transform: rotate(945deg); - opacity: 0; - } - - 100% { - transform: rotate(945deg); - opacity: 0; - } -} - -#loads { - fill: #0178D4 !important; -} diff --git a/src/App.js b/src/App.js index 46cf3e77..d336754b 100644 --- a/src/App.js +++ b/src/App.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, {useState, useEffect} from 'react'; import { useSelector, useDispatch @@ -8,7 +8,8 @@ import './short.css'; import { Background, - BootScreen + BootScreen, + LockScreen } from './containers/background'; import Taskbar from './components/taskbar'; import ActMenu from './components/menu'; @@ -24,6 +25,8 @@ import * as Applications from './containers/applications'; function App() { const apps = useSelector(state => state.apps); + const wall = useSelector(state => state.wallpaper); + const [booted, setBoot] = useState(false); const dispatch = useDispatch(); const afterMath = (event) => { @@ -75,13 +78,14 @@ function App() { }); window.addEventListener("load", e => { - // document.querySelector('#loader').remove(); + setBoot(true); }); return (
- {/* */} -
+ {!booted?:null} + {wall.locked?:null} +
diff --git a/src/components/start/startmenu.scss b/src/components/start/startmenu.scss index 877caa7b..24b0a251 100644 --- a/src/components/start/startmenu.scss +++ b/src/components/start/startmenu.scss @@ -45,6 +45,7 @@ &[data-align="left"] { left: 8px; } + background: rgba(255, 255, 255, 0.88); -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px); diff --git a/src/containers/background/back.css b/src/containers/background/back.css deleted file mode 100644 index 5bee4dbf..00000000 --- a/src/containers/background/back.css +++ /dev/null @@ -1,20 +0,0 @@ -.background{ - min-width: 100vw; - min-height: 100vh; - background-color: #fefefe; - background-repeat: no-repeat; - background-size: cover; - background-position: center; -} - -.bootscreen{ - position: absolute; - top: 0; - left: 0; - min-width: 100vw; - min-height: 100vh; - background-color: #010001; - z-index: 20000; - display: grid; - place-items: center; -} diff --git a/src/containers/background/back.scss b/src/containers/background/back.scss new file mode 100644 index 00000000..aea469fa --- /dev/null +++ b/src/containers/background/back.scss @@ -0,0 +1,237 @@ +.appwrap { + position: relative; + z-index: 0; +} + +.background { + min-width: 100vw; + min-height: 100vh; + background-color: #fefefe; + background-repeat: no-repeat; + background-size: cover; + background-position: center; +} + +.bootscreen { + position: absolute; + top: 0; + left: 0; + min-width: 100vw; + min-height: 100vh; + background-color: #010001; + z-index: 2; + display: grid; + place-items: center; +} +/* Loader css */ + +#loader { + position: relative; + top: 0; + left: 0; + /* height: 100%; */ + /* width: 100%; */ + display: grid; + text-align: center; + align-items: center; + justify-content: center; +} + +.circledots { + position: relative; + top: 0; + left: 0; + transform: rotate(-45deg); + width: 50px; + height: 50px; +} + +.circledots .circle { + position: absolute; + width: 40px; + height: 40px; + opacity: 0; + border-radius: 100px; + transform: rotate(225deg); + animation-iteration-count: infinite; + animation-name: orbit; + animation-duration: 5.5s; +} + +.circledots .circle:after { + content: ''; + position: absolute; + width: 4px; + height: 4px; + clip-path: circle(100%); + border-radius: 100px; + background: #aaa; +} + +.circledots .circle:nth-child(2) { + animation-delay: 240ms; +} + +.circledots .circle:nth-child(3) { + animation-delay: 480ms; +} + +.circledots .circle:nth-child(4) { + animation-delay: 720ms; +} + +.circledots .circle:nth-child(5) { + animation-delay: 960ms; +} +@keyframes orbit { + 0% { + transform: rotate(225deg); + opacity: 1; + animation-timing-function: ease-out; + } + + 7% { + transform: rotate(345deg); + animation-timing-function: linear; + } + + 30% { + transform: rotate(455deg); + animation-timing-function: ease-in-out; + } + + 39% { + transform: rotate(690deg); + animation-timing-function: linear; + } + + 70% { + transform: rotate(815deg); + opacity: 1; + animation-timing-function: ease-out; + } + + 75% { + transform: rotate(945deg); + animation-timing-function: ease-out; + } + + 76% { + transform: rotate(945deg); + opacity: 0; + } + + 100% { + transform: rotate(945deg); + opacity: 0; + } +} + +.lockscreen { + position: absolute; + top: 0; + left: 0; + min-width: 100vw; + min-height: 100vh; + z-index: 1; + background-size: cover; + background-repeat: no-repeat; + display: flex; + flex-direction: column; + align-items: center; + transition: all 1s ease-in-out; + + &[data-unlock="true"]{ + opacity: 0; + } + + &::after { + -webkit-backdrop-filter: blur(0); + backdrop-filter: blur(0); + transition: all 200ms ease-in-out; + } + + &[data-blur="true"]::after { + content: ""; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: -1; + -webkit-backdrop-filter: blur(25px); + backdrop-filter: blur(25px); + background: rgba(0, 0, 0, 0.1); + } +} + +.bottomInfo { + position: absolute; + bottom: 24px; + right: 24px; +} + +.splashScreen { + display: flex; + flex-direction: column; + align-items: center; + transform: translateY(0); + transition: all 200ms ease-in-out; + + &[data-faded="true"] { + opacity: 0; + pointer-events: none; + transform: translateY(-200px); + } +} + +.fadeinScreen { + position: absolute; + top: 25%; + display: flex; + flex-direction: column; + align-items: center; + opacity: 0; + transform: translateY(60px); + transition: all 400ms ease-in-out; + pointer-events: none; + + &[data-faded="false"] { + opacity: 1; + pointer-events: auto; + transform: translateY(0px); + } + + &[data-unlock="true"]{ + opacity: 0; + } + + input { + width: 200px; + background: rgba(28, 28, 40, 0.6); + font-size: 12px; + padding: 8px 12px; + font-weight: 500; + color: #cfcfcf; + border: 1px solid rgba(117, 117, 164, 0.6); + + &::-webkit-input-placeholder { + font-weight: 400; + color: rgba(207, 207, 207, 0.6); + } + } +} + +.lockOpt{ + margin-top: 10px; + + .uicon{ + margin: 0 4px; + cursor: pointer; + + &[data-payload="true"]{ + box-sizing: border-box; + border: 1px solid #888; + } + } +} diff --git a/src/containers/background/index.js b/src/containers/background/index.js index 808e2fe4..420005b3 100644 --- a/src/containers/background/index.js +++ b/src/containers/background/index.js @@ -1,28 +1,127 @@ -import React from 'react'; -import {useSelector, useDispatch} from 'react-redux'; -import {Icon, Image} from '../../utils/general'; +import React, {useState, useEffect} from 'react'; +import { + useSelector, + useDispatch +} from 'react-redux'; +import { + Icon, + Image +} from '../../utils/general'; -import './back.css'; +import './back.scss'; -export const Background = ()=>{ - const wallpaper = useSelector(state => state.wallpaper); +export const Background = () => { + const wall = useSelector(state => state.wallpaper); const dispatch = useDispatch(); return (
); } -export const BootScreen = ()=>{ - const wallpaper = useSelector(state => state.wallpaper); +export const BootScreen = () => { const dispatch = useDispatch(); return (
- +
+ +
+
+
+
+
+
+
+
+
+
+
+ ); +} + +export const LockScreen = () => { + const wall = useSelector(state => state.wallpaper); + const [lock, setLock] = useState(false); + const [unlocked, setUnLock] = useState(false); + const [password, setPass] = useState(""); + const [passType, setType] = useState(1); + const [forgot, setForget] = useState(false); + const dispatch = useDispatch(); + + const action = (e)=>{ + var act = e.target.dataset.action, + payload = e.target.dataset.payload; + + if(act=="splash") setLock(true); + else if (act=="inpass"){ + var val = e.target.value + if(!passType){ + val = val.substring(0,4) + val = !Number(val)?"":val + } + setPass(val) + }else if (act=="forgot") setForget(true); + else if (act=="pinlock") setType(0); + else if (act=="passkey") setType(1); + + if (act=="pinlock" || act=="passkey") setPass(""); + } + + const proceed = ()=>{ + setUnLock(true); + setTimeout(()=>{ + dispatch({type: "WALLUNLOCK"}) + },1000) + } + + return ( +
+
+
+ {new Date().toLocaleTimeString("en-US",{ + hour: 'numeric', minute: 'numeric', hour12: true + })} +
+
+ {new Date().toLocaleDateString("en-US",{ + weekday: "long", month:"long",day: "numeric" + })} +
+
+
+ +
Blue Edge
+
+ + +
+
+ {!forgot?`I forgot my ${passType?"password":"pin"}`:"Not my problem"} +
+
+ Sign-in options +
+
+ + +
+
+
+ + +
); } diff --git a/src/reducers/wallpaper.js b/src/reducers/wallpaper.js index 18021e81..75fec87d 100644 --- a/src/reducers/wallpaper.js +++ b/src/reducers/wallpaper.js @@ -1,10 +1,13 @@ const defState = { theme: "default", - src: "img0.jpg" + src: "img0.jpg", + locked: true } const wallReducer = (state=defState, action)=>{ switch(action.type){ + case 'WALLUNLOCK': + return {...state, locked: false}; default: return state }