ms store ans terminal
1
public/_redirects
Normal file
@@ -0,0 +1 @@
|
||||
/* /index.html 200
|
||||
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 4.2 KiB |
BIN
public/img/store/apps/Lightroom.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
public/img/store/apps/amazon prime.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
public/img/store/apps/facebook.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
public/img/store/apps/netflix.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
public/img/store/apps/office.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
public/img/store/apps/telegram.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
public/img/store/apps/whatsApp.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
public/img/store/float/Essential Apps.png
Normal file
|
After Width: | Height: | Size: 127 KiB |
BIN
public/img/store/float/Kids Apps.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
public/img/store/float/Microsoft 365.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
public/img/store/float/Security.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
public/img/store/float/Social Media.png
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
public/img/store/float/Spotify.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
public/img/store/float/Utility Apps.png
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
public/img/store/float/XBOX Gamepass.png
Normal file
|
After Width: | Height: | Size: 292 KiB |
BIN
public/img/store/float/forza horizon.png
Normal file
|
After Width: | Height: | Size: 634 KiB |
BIN
public/img/store/float/luca.png
Normal file
|
After Width: | Height: | Size: 167 KiB |
BIN
public/img/store/float/unescape.png
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
public/img/store/games/Far cry 5.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
public/img/store/games/battle field v.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/img/store/games/call of duty.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/img/store/games/cyberpunk 2077.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
public/img/store/games/hitman 3.png
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
BIN
public/img/store/games/minecraft.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
public/img/store/games/residental evil.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 2.8 MiB After Width: | Height: | Size: 3.5 MiB |
|
Before Width: | Height: | Size: 2.0 MiB After Width: | Height: | Size: 2.8 MiB |
BIN
public/img/store/lucacover1.png
Normal file
|
After Width: | Height: | Size: 2.4 MiB |
BIN
public/img/store/movies/antman.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
public/img/store/movies/godzilla vs kong.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
public/img/store/movies/john wick.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/img/store/movies/nobody.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
public/img/store/movies/tom and jerry.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
public/img/store/movies/wonder woman 1984.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
public/img/store/movies/wrath of man.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
@@ -7,11 +7,11 @@
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta
|
||||
name="description"
|
||||
content="Web site created using create-react-app"
|
||||
content="Windows 11 made in React"
|
||||
/>
|
||||
<!-- <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> -->
|
||||
<!-- <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> -->
|
||||
<title>React App</title>
|
||||
<title>Win 11</title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
|
||||
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
@@ -1,3 +1,7 @@
|
||||
# https://www.robotstxt.org/robotstxt.html
|
||||
#Dark Shadows were following me
|
||||
#Getting immense on every sight
|
||||
#The Moon was the only witness
|
||||
#Of my murder on that night
|
||||
|
||||
User-agent: *
|
||||
Disallow:
|
||||
|
||||
15
public/sitemap.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
<url>
|
||||
<loc>https://blueedge.me/</loc>
|
||||
<lastmod>2021-01-09</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://blueedge.me/unescape</loc>
|
||||
<lastmod>2021-01-09</lastmod>
|
||||
<changefreq>daily</changefreq>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
@@ -107,8 +107,9 @@ export const StartMenu = ()=>{
|
||||
<div key={i} className="pnApp pnEmpty"></div>
|
||||
):(
|
||||
<div key={i} className="pnApp">
|
||||
<Icon className="pnIcon" src={app.icon} payload="full"
|
||||
onClick={clickDispatch} click={app.action} width={24}/>
|
||||
<Icon className="pnIcon" src={app.icon} width={24}
|
||||
onClick={clickDispatch} click={app.action}
|
||||
payload={app.payload?app.payload:"full"}/>
|
||||
<div className="appName">{app.name}</div>
|
||||
</div>
|
||||
);
|
||||
@@ -166,7 +167,7 @@ export const StartMenu = ()=>{
|
||||
ldx.forEach((app,j) => {
|
||||
tpApps.push(
|
||||
<div key={j} className="allApp prtclk" onClick={clickDispatch}
|
||||
data-action={app.action} data-payload="full">
|
||||
data-action={app.action} payload={app.payload?app.payload:"full"}>
|
||||
<Icon className="pnIcon" src={app.icon} width={20}/>
|
||||
<div className="appName">{app.name}</div>
|
||||
</div>
|
||||
@@ -197,8 +198,9 @@ export const StartMenu = ()=>{
|
||||
</div>
|
||||
</div>
|
||||
<div className="menuBar">
|
||||
<div className="profile">
|
||||
<Icon src="blueProf" ui rounded width={26}/>
|
||||
<div className="profile handcr">
|
||||
<Icon src="blueProf" ui rounded width={26}
|
||||
click="EXTERNAL" payload="https://blueedge.me"/>
|
||||
<div className="usName">Blue Edge</div>
|
||||
</div>
|
||||
<div className="powerCtrl">
|
||||
@@ -253,7 +255,8 @@ export const StartMenu = ()=>{
|
||||
return(
|
||||
<div className="topApp pt-4 py-2 bg-gray-100 ltShad">
|
||||
<Icon onClick={clickDispatch} click={app.action}
|
||||
payload="full" src={app.icon} width={24}/>
|
||||
payload={app.payload?app.payload:"full"}
|
||||
src={app.icon} width={24} />
|
||||
<div className="text-xs mt-2">{app.name}</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -5,7 +5,14 @@ import './taskbar.scss';
|
||||
|
||||
const Taskbar = ()=>{
|
||||
const tasks = useSelector(state=>state.taskbar);
|
||||
const apps = useSelector(state=>state.apps);
|
||||
const apps = useSelector(state=>{
|
||||
var tmpApps = {...state.apps};
|
||||
for (var i = 0; i < state.taskbar.apps.length; i++) {
|
||||
tmpApps[state.taskbar.apps[i].icon].task = true;
|
||||
}
|
||||
|
||||
return tmpApps;
|
||||
});
|
||||
const dispatch = useDispatch();
|
||||
|
||||
return (
|
||||
@@ -23,6 +30,14 @@ const Taskbar = ()=>{
|
||||
click={task.action} payload="togg"
|
||||
src={task.icon} width={22}/>
|
||||
})}
|
||||
{Object.keys(apps).map((key,i)=>{
|
||||
return key!="hz" && !apps[key].task && !apps[key].hide?(
|
||||
<Icon key={i} className="tsIcon" width={22}
|
||||
active={apps[key].z==apps.hz}
|
||||
click={apps[key].action} payload="togg"
|
||||
open="true" src={apps[key].icon}/>
|
||||
):null;
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
<div className="taskright">
|
||||
@@ -34,7 +49,8 @@ const Taskbar = ()=>{
|
||||
<div>{new Date().toLocaleDateString("en-US",{year:"2-digit", month:"2-digit",day: "numeric" })}</div>
|
||||
<div>{new Date().toLocaleTimeString("en-US",{hour: 'numeric', minute: 'numeric'})}</div>
|
||||
</div>
|
||||
<Icon className="taskIcon" ui src='sidepane' width={16} invert click='PANETOGG'/>
|
||||
<Icon className="taskIcon mr-2" ui src='sidepane' width={16} invert click='PANETOGG'/>
|
||||
<Icon className="graybd" ui width={6} click='SHOWDSK' pr/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
right: 0;
|
||||
width: auto;
|
||||
height: 100%;
|
||||
margin: 0 10px;
|
||||
margin-left: 10px;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
@@ -79,6 +79,8 @@
|
||||
box-sizing: border-box;
|
||||
border-radius: 0;
|
||||
background: rgba(254, 254, 254, 0);
|
||||
transform-origin: center;
|
||||
animation: popintro 800ms ease-in-out;
|
||||
|
||||
&:hover{
|
||||
background: rgba(#fefefe, 0.64);
|
||||
@@ -102,3 +104,23 @@
|
||||
background: #1f4dcd;
|
||||
}
|
||||
}
|
||||
|
||||
.graybd{
|
||||
border: solid 1px #c3c3c3;
|
||||
border-width: 0 0 0 2px;
|
||||
}
|
||||
|
||||
@keyframes popintro {
|
||||
0%{
|
||||
transform: scale(0);
|
||||
}
|
||||
40%{
|
||||
transform: scale(1.125);
|
||||
}
|
||||
70%{
|
||||
transform: scale(0.725);
|
||||
}
|
||||
100%{
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
239
src/containers/applications/dir.json
Normal file
@@ -0,0 +1,239 @@
|
||||
{
|
||||
"backup": {
|
||||
"config": {}
|
||||
},
|
||||
"bat": {
|
||||
"macros.doskey": {}
|
||||
},
|
||||
"Boot": {},
|
||||
"data": {
|
||||
"diagnostic_data": {}
|
||||
},
|
||||
"Drivers": {
|
||||
"network": {
|
||||
"rt640x64.cat": {},
|
||||
"rt640x64.inf": {},
|
||||
"rt640x64.sys": {}
|
||||
},
|
||||
"storage": {
|
||||
"RsCRIcon.dll": {},
|
||||
"RtsUer.inf": {},
|
||||
"RtsUer.sys": {},
|
||||
"rtsuer64.cat": {}
|
||||
}
|
||||
},
|
||||
"Microsoft": {
|
||||
"Windows": {
|
||||
"Powershell": {}
|
||||
}
|
||||
},
|
||||
"ProgramFiles": {
|
||||
"AMD": {},
|
||||
"APM-Server": {},
|
||||
"Common_Files": {},
|
||||
"Dell": {},
|
||||
"DIFX": {},
|
||||
"dotnet": {},
|
||||
"ffmpeg": {},
|
||||
"Git": {},
|
||||
"Goodix": {},
|
||||
"IIS": {},
|
||||
"Intel": {},
|
||||
"Java": {},
|
||||
"mcafee": {},
|
||||
"MongoDB": {},
|
||||
"MSBuild": {},
|
||||
"MySQL": {},
|
||||
"nodejs": {},
|
||||
"OpenSSL-Win64": {},
|
||||
"PostgreSQL": {},
|
||||
"PuTTY": {},
|
||||
"Realtek": {},
|
||||
"Unity": {},
|
||||
"UNP": {},
|
||||
"Waves": {},
|
||||
"Defender": {},
|
||||
"Mail": {},
|
||||
"MediaPlayer": {},
|
||||
"WindowsNT": {},
|
||||
"PhotoViewer": {},
|
||||
"PortableDevices": {},
|
||||
"WindowsSecurity": {},
|
||||
"WindowsSidebar": {},
|
||||
"WindowsApps": {},
|
||||
"WindowsPowerShell": {},
|
||||
"WinRAR": {}
|
||||
},
|
||||
"ProgramData": {
|
||||
"Adobe": {},
|
||||
"AMD": {},
|
||||
"AnyDesk": {},
|
||||
"apm-server": {},
|
||||
"ApplicationData": {},
|
||||
"ATI": {},
|
||||
"AVASTSoftware": {},
|
||||
"Caphyon": {},
|
||||
"chocolatey": {},
|
||||
"Dell": {},
|
||||
"DellInc": {},
|
||||
"Desktop": {},
|
||||
"Disc-Soft": {},
|
||||
"Documents": {},
|
||||
"ElectronicArts": {},
|
||||
"GOG.com": {},
|
||||
"Goodix": {},
|
||||
"GraphicsType": {},
|
||||
"IDM": {},
|
||||
"Intel": {},
|
||||
"IObit": {},
|
||||
"McAfee": {},
|
||||
"Microsoft": {},
|
||||
"MicrosoftOneDrive": {},
|
||||
"MicrosoftVisualStudio": {},
|
||||
"Mozilla": {},
|
||||
"MySQL": {},
|
||||
"Oracle": {},
|
||||
"PackageCache": {},
|
||||
"Packages": {},
|
||||
"PCDr": {},
|
||||
"Posse": {}
|
||||
},
|
||||
"temp": {
|
||||
"AutofillRegex": {},
|
||||
"BrowserMetrics": {},
|
||||
"CertificateRevocation": {},
|
||||
"chrome_shutdown_ms.txt": {},
|
||||
"Crashpad": {},
|
||||
"CrashpadMetrics-active.pma": {},
|
||||
"CrowdDeny": {},
|
||||
"Default": {},
|
||||
"FileTypePolicies": {},
|
||||
"FirstRun": {},
|
||||
"Greaselion": {},
|
||||
"GrShaderCache": {},
|
||||
"hyphen-data": {},
|
||||
"LastBrowser": {},
|
||||
"LastVersion": {},
|
||||
"LocalState": {},
|
||||
"MEIPreload": {},
|
||||
"ModuleInfoCache": {},
|
||||
"SafeBrowsing": {},
|
||||
"SafetyTips": {},
|
||||
"ShaderCache": {},
|
||||
"SSLErrorAssistant": {}
|
||||
},
|
||||
"Users": {
|
||||
"Default": {},
|
||||
"Public": {},
|
||||
"Blue": {
|
||||
"AppData": {},
|
||||
"config.cfg": {},
|
||||
"Contacts": {},
|
||||
"Cookies": {},
|
||||
"Desktop": {},
|
||||
"Documents": {},
|
||||
"Downloads": {},
|
||||
"Favorites": {},
|
||||
"geckodriver.log": {},
|
||||
"get-pip.py": {},
|
||||
"IntelGraphicsProfiles": {},
|
||||
"javac": {},
|
||||
"joke.txt": {
|
||||
"content": "I have a joke on recursion but I have a joke on ..."
|
||||
},
|
||||
"Links": {},
|
||||
"LocalSettings": {},
|
||||
"MicrosoftEdgeBackups": {},
|
||||
"Music": {},
|
||||
"MyDocuments": {},
|
||||
"NetHood": {},
|
||||
"OneDrive": {},
|
||||
"Postman": {},
|
||||
"PrintHood": {},
|
||||
"Recent": {},
|
||||
"SavedGames": {},
|
||||
"Searches": {},
|
||||
"StartMenu": {},
|
||||
"supersecret.txt": {
|
||||
"content": "github: github.com/blueedgetechno\nwebsite: blueedge.me"
|
||||
},
|
||||
"Templates": {},
|
||||
"VirtualBoxVMs": {},
|
||||
"vmlogs": {}
|
||||
}
|
||||
},
|
||||
"Windows": {
|
||||
"addins": {},
|
||||
"appcompat": {},
|
||||
"apppatch": {},
|
||||
"AppReadiness": {},
|
||||
"assembly": {},
|
||||
"bcastdvr": {},
|
||||
"Boot": {},
|
||||
"Branding": {},
|
||||
"CbsTemp": {},
|
||||
"Containers": {},
|
||||
"Cursors": {},
|
||||
"debug": {},
|
||||
"diagnostics": {},
|
||||
"DiagTrack": {},
|
||||
"DigitalLocker": {},
|
||||
"ELAMBKUP": {},
|
||||
"Firmware": {},
|
||||
"Fonts": {},
|
||||
"GameBarPresenceWriter": {},
|
||||
"Globalization": {},
|
||||
"Help": {},
|
||||
"IAStorAfsService": {},
|
||||
"IdentityCRL": {},
|
||||
"IME": {},
|
||||
"ImmersiveControlPanel": {},
|
||||
"INF": {},
|
||||
"InfusedApps": {},
|
||||
"InputMethod": {},
|
||||
"Installer": {},
|
||||
"L2Schemas": {},
|
||||
"LanguageOverlayCache": {},
|
||||
"LiveKernelReports": {},
|
||||
"Logs": {},
|
||||
"Media": {},
|
||||
"Migration": {},
|
||||
"ModemLogs": {},
|
||||
"OCR": {},
|
||||
"Panther": {},
|
||||
"Performance": {},
|
||||
"PLA": {},
|
||||
"PolicyDefinitions": {},
|
||||
"Prefetch": {},
|
||||
"PrintDialog": {},
|
||||
"Provisioning": {},
|
||||
"Registration": {},
|
||||
"rescache": {},
|
||||
"Resources": {},
|
||||
"SchCache": {},
|
||||
"schemas": {},
|
||||
"scratch": {},
|
||||
"security": {},
|
||||
"ServiceProfiles": {},
|
||||
"ServiceState": {},
|
||||
"servicing": {},
|
||||
"Setup": {},
|
||||
"ShellComponents": {},
|
||||
"ShellExperiences": {},
|
||||
"SKB": {},
|
||||
"SoftwareDistribution": {},
|
||||
"Speech": {},
|
||||
"Speech_OneCore": {},
|
||||
"System": {},
|
||||
"System32": {},
|
||||
"SystemApps": {},
|
||||
"SystemResources": {},
|
||||
"SysWOW64": {},
|
||||
"TAPI": {},
|
||||
"Tasks": {},
|
||||
"Temp": {},
|
||||
"TextInput": {},
|
||||
"tracing": {},
|
||||
"Web": {}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,8 @@ import {Icon, Image, ToolBar} from '../../utils/general';
|
||||
import './tabs.scss';
|
||||
import './wnapp.css';
|
||||
|
||||
import dirs from './dir.json';
|
||||
|
||||
export const EdgeMenu = ()=>{
|
||||
const apps = useSelector(state => state.apps);
|
||||
const wnapp = useSelector(state => state.apps.edge);
|
||||
@@ -119,6 +121,11 @@ export const MicroStore = ()=>{
|
||||
const apps = useSelector(state => state.apps);
|
||||
const wnapp = useSelector(state => state.apps.store);
|
||||
const dispatch = useDispatch();
|
||||
const ribbon = useSelector(state => state.globals.ribbon);
|
||||
const apprib = useSelector(state => state.globals.apprib);
|
||||
const gamerib = useSelector(state => state.globals.gamerib);
|
||||
const movrib = useSelector(state => state.globals.movrib);
|
||||
const [tab, setTab] = useState("sthome");
|
||||
|
||||
const clickDispatch = (event)=>{
|
||||
var action = {
|
||||
@@ -128,6 +135,17 @@ export const MicroStore = ()=>{
|
||||
if(action.type) dispatch(action);
|
||||
}
|
||||
|
||||
const action = (e)=>{
|
||||
var x = e.target && e.target.dataset.action;
|
||||
if(x){
|
||||
var target = document.getElementById(x);
|
||||
if(target){
|
||||
setTab(x);
|
||||
target.parentNode.parentNode.scrollTop = target.offsetTop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<div
|
||||
className="wnstore floatTab dpShad" data-size={wnapp.size}
|
||||
@@ -139,14 +157,389 @@ export const MicroStore = ()=>{
|
||||
name="Microsoft Store"/>
|
||||
<div className="windowScreen flex">
|
||||
<div className="storeNav h-full w-16 flex flex-col">
|
||||
<Icon fafa="faHome" width={20} payload="true"/>
|
||||
<Icon fafa="faThLarge" width={18}/>
|
||||
<Icon fafa="faGamepad" width={20}/>
|
||||
<Icon fafa="faFilm" width={20}/>
|
||||
<Icon fafa="faHome" onClick={action} click="sthome" width={20} payload={tab=="sthome"}/>
|
||||
<Icon fafa="faThLarge" onClick={action} click="apprib" width={18} payload={tab=="apprib"}/>
|
||||
<Icon fafa="faGamepad" onClick={action} click="gamerib" width={20} payload={tab=="gamerib"}/>
|
||||
<Icon fafa="faFilm" onClick={action} click="movrib" width={20} payload={tab=="movrib"}/>
|
||||
</div>
|
||||
<div className="restWindow flex-grow h-full flex flex-col rounded overflow-hidden">
|
||||
<Image className="frontPage w-full" back src="store/lucacover"/>
|
||||
<div className="panelName absolute m-6 text-xl">Home</div>
|
||||
<div className="restWindow msfull thinScroll">
|
||||
<div className="storeSection w-full absolute top-0">
|
||||
<Image id="sthome" className="frontPage w-full" src="store/lucacover"/>
|
||||
<div className="panelName absolute m-6 text-xl top-0">Home</div>
|
||||
<div className="w-full overflow-x-scroll noscroll overflow-y-hidden -mt-16">
|
||||
<div className="storeRibbon">
|
||||
{ribbon && ribbon.map(x=>{
|
||||
return x=="unescape"?(
|
||||
<a href="https://blueedge.me/unescape" target="_blank">
|
||||
<Image className="mx-1 dpShad rounded overflow-hidden"
|
||||
var={x} h={100} dir="store/float" src={x}/>
|
||||
</a>
|
||||
):(
|
||||
<Image className="mx-1 dpShad rounded overflow-hidden"
|
||||
var={x} h={100} dir="store/float" src={x}/>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
<div id="apprib" className="frontCont amzApps my-8 py-20 w-auto mx-8 flex justify-between noscroll overflow-x-scroll overflow-y-hidden">
|
||||
<div className="flex w-64 flex-col text-gray-100 h-full px-8">
|
||||
<div className="text-xl">Windows Apps</div>
|
||||
<div className="text-xs mt-2">Take your windows experience to new heights with these must-have apps</div>
|
||||
</div>
|
||||
<div className="flex w-max pr-8">
|
||||
{apprib && apprib.map(x=>{
|
||||
var stars = 3 + (x.charCodeAt(0)+x.charCodeAt(1))%3;
|
||||
return (
|
||||
<div className="ribcont rounded my-auto p-2 pb-2">
|
||||
<Image className="mx-1 mb-4 rounded overflow-hidden"
|
||||
w={120} dir="store/apps" src={x}/>
|
||||
<div className="capitalize text-xs font-semibold">{x}</div>
|
||||
<div className="flex mt-2 items-center">
|
||||
<Icon className="bluestar" fafa="faStar" width={6}/>
|
||||
<Icon className="bluestar" fafa="faStar" width={6}/>
|
||||
<Icon className="bluestar" fafa="faStar" width={6}/>
|
||||
<Icon className={stars>3?"bluestar":""} fafa="faStar" width={6}/>
|
||||
<Icon className={stars>4?"bluestar":""} fafa="faStar" width={6}/>
|
||||
<div className="text-xss text-gray-800">{1+x.charCodeAt(3)%5}k</div>
|
||||
</div>
|
||||
<div className="text-xss mt-8">{x.charCodeAt(4)%2?"Free":"Owned"}</div>
|
||||
</div>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="gamerib" className="frontCont amzGames my-8 py-20 w-auto mx-8 flex justify-between noscroll overflow-x-scroll overflow-y-hidden">
|
||||
<div className="flex w-64 flex-col text-gray-100 h-full px-8">
|
||||
<div className="text-xl">Featured Games</div>
|
||||
<div className="text-xs mt-2">Explore fun to play xbox games and find a new favorite</div>
|
||||
</div>
|
||||
<div className="flex w-max pr-8">
|
||||
{gamerib && gamerib.map(x=>{
|
||||
var stars = 3 + (x.charCodeAt(0)+x.charCodeAt(1))%3;
|
||||
return (
|
||||
<div className="ribcont rounded my-auto p-2 pb-2">
|
||||
<Image className="mx-1 mb-4 rounded overflow-hidden"
|
||||
w={120} dir="store/games" src={x}/>
|
||||
<div className="capitalize text-xs font-semibold">{x}</div>
|
||||
<div className="flex mt-2 items-center">
|
||||
<Icon className="bluestar" fafa="faStar" width={6}/>
|
||||
<Icon className="bluestar" fafa="faStar" width={6}/>
|
||||
<Icon className="bluestar" fafa="faStar" width={6}/>
|
||||
<Icon className={stars>3?"bluestar":""} fafa="faStar" width={6}/>
|
||||
<Icon className={stars>4?"bluestar":""} fafa="faStar" width={6}/>
|
||||
<div className="text-xss text-gray-800">{1+x.charCodeAt(3)%5}k</div>
|
||||
</div>
|
||||
<div className="text-xss mt-8">{x.charCodeAt(4)%2?"Free":"Owned"}</div>
|
||||
</div>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="movrib" className="frontCont amzMovies my-8 py-20 w-auto mx-8 flex justify-between noscroll overflow-x-scroll overflow-y-hidden">
|
||||
<div className="flex w-64 flex-col text-gray-100 h-full px-8">
|
||||
<div className="text-xl">Featured Games</div>
|
||||
<div className="text-xs mt-2">Explore fun to play xbox games and find a new favorite</div>
|
||||
</div>
|
||||
<div className="flex w-max pr-8">
|
||||
{movrib && movrib.map(x=>{
|
||||
var stars = 3 + (x.charCodeAt(0)+x.charCodeAt(1))%3;
|
||||
return (
|
||||
<div className="ribcont rounded my-auto p-2 pb-2">
|
||||
<Image className="mx-1 mb-4 rounded overflow-hidden"
|
||||
w={120} dir="store/movies" src={x}/>
|
||||
<div className="capitalize text-xs font-semibold">{x}</div>
|
||||
<div className="flex mt-2 items-center">
|
||||
<Icon className="bluestar" fafa="faStar" width={6}/>
|
||||
<Icon className="bluestar" fafa="faStar" width={6}/>
|
||||
<Icon className="bluestar" fafa="faStar" width={6}/>
|
||||
<Icon className={stars>3?"bluestar":""} fafa="faStar" width={6}/>
|
||||
<Icon className={stars>4?"bluestar":""} fafa="faStar" width={6}/>
|
||||
<div className="text-xss text-gray-800">{1+x.charCodeAt(3)%5}k</div>
|
||||
</div>
|
||||
<div className="text-xss mt-8">{x.charCodeAt(4)%2?"Free":"Owned"}</div>
|
||||
</div>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export const WnTerminal = ()=>{
|
||||
const apps = useSelector(state => state.apps);
|
||||
const wnapp = useSelector(state => state.apps.terminal);
|
||||
const [stack, setStack] = useState([
|
||||
"Microsoft Windows [Version 10.0.22000.51]",
|
||||
"(c) Microsoft Corporation. All rights reserved.",
|
||||
""
|
||||
]);
|
||||
const [pwd, setPwd] = useState("C:\\Users\\Blue");
|
||||
const [lastCmd, setLsc] = useState(0);
|
||||
const [wntitle, setWntitle] = useState("Windows Terminal");
|
||||
|
||||
const dispatch = useDispatch();
|
||||
|
||||
const dirFolders = (isFile="")=>{
|
||||
var tdir = {...dirs},
|
||||
curr = pwd=="C:\\"?[]:pwd.replace("C:\\","").split("\\");
|
||||
|
||||
|
||||
if(pwd!="C:\\"){
|
||||
for (var i = 0; i < curr.length; i++) {
|
||||
console.log(tdir);
|
||||
tdir = tdir[curr[i]];
|
||||
}
|
||||
}
|
||||
|
||||
if(isFile==""){
|
||||
return Object.keys(tdir);
|
||||
}else{
|
||||
return tdir[isFile] || {};
|
||||
}
|
||||
}
|
||||
|
||||
const cmdTool = (cmd)=>{
|
||||
var tmpStack = [...stack];
|
||||
tmpStack.push(pwd+">"+cmd);
|
||||
var arr = cmd.split(" "),
|
||||
type = arr[0].trim(), arg = arr.splice(1,arr.length).join(" ") || "";
|
||||
|
||||
arg = arg.trim();
|
||||
|
||||
if(type=="echo"){
|
||||
if(arg.length){
|
||||
tmpStack.push(arg);
|
||||
}else{
|
||||
tmpStack.push("ECHO is on.");
|
||||
}
|
||||
}else if(type=="cd"){
|
||||
if(arg.length){
|
||||
var errp = true;
|
||||
var curr = pwd=="C:\\"?[]:pwd.replace("C:\\","").split("\\");
|
||||
|
||||
if(arg=="."){
|
||||
errp = false;
|
||||
}else if (arg=="..") {
|
||||
errp = false;
|
||||
curr.pop();
|
||||
setPwd("C:\\"+curr.join("\\"));
|
||||
}else if(!arg.includes(".")){
|
||||
var tdir = dirFolders();
|
||||
|
||||
for (var i = 0; i < tdir.length; i++) {
|
||||
if(arg==tdir[i] && errp){
|
||||
curr.push(tdir[i]);
|
||||
errp = false;
|
||||
setPwd("C:\\"+curr.join("\\"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
errp = false;
|
||||
tmpStack.push("The directory name is invalid.");
|
||||
}
|
||||
|
||||
if(errp){
|
||||
tmpStack.push("The system cannot find the path specified.");
|
||||
}
|
||||
}else{
|
||||
tmpStack.push(pwd);
|
||||
}
|
||||
}else if (type=="dir") {
|
||||
tmpStack.push(" Directory of "+pwd);
|
||||
tmpStack.push("");
|
||||
tmpStack.push("<DIR> .")
|
||||
tmpStack.push("<DIR> ..")
|
||||
|
||||
var tdir = dirFolders();
|
||||
for (var i = 0; i < tdir.length; i++) {
|
||||
if(!tdir[i].includes(".")){
|
||||
tmpStack.push("<DIR>..."+tdir[i])
|
||||
}else{
|
||||
tmpStack.push("FILE...."+tdir[i])
|
||||
}
|
||||
}
|
||||
}else if (type=="cls") {
|
||||
tmpStack = [];
|
||||
}else if (type=="type") {
|
||||
var errp = true;
|
||||
|
||||
if(arg.includes(".")){
|
||||
var tdir = dirFolders();
|
||||
|
||||
for (var i = 0; i < tdir.length; i++) {
|
||||
if(arg==tdir[i] && errp){
|
||||
errp = false;
|
||||
var file = dirFolders(tdir[i]);
|
||||
var content = file.content || "";
|
||||
content = content.split("\n");
|
||||
for (var i = 0; i < content.length; i++) {
|
||||
tmpStack.push(content[i]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(errp){
|
||||
tmpStack.push("The system cannot find the file specified.");
|
||||
}
|
||||
}else if (type=="start") {
|
||||
dispatch({type: "EDGELINK", payload: arg});
|
||||
}else if (type=="date") {
|
||||
tmpStack.push("The current date is: " + new Date().toLocaleDateString());
|
||||
}else if (type=="time") {
|
||||
tmpStack.push("The current time is: " +
|
||||
new Date().toLocaleTimeString("en-GB",{
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
second: '2-digit'}).replaceAll(":",".") + "." +
|
||||
Math.floor(Math.random()*100));
|
||||
}else if (type=="exit") {
|
||||
tmpStack = [
|
||||
"Microsoft Windows [Version 10.0.22000.51]",
|
||||
"(c) Microsoft Corporation. All rights reserved.",
|
||||
""
|
||||
];
|
||||
dispatch({type: wnapp.action, payload: "close"})
|
||||
}else if (type=="title") {
|
||||
setWntitle(arg.length?arg:"Windows Terminal");
|
||||
}else if (type=="hostname") {
|
||||
tmpStack.push("Blue");
|
||||
}else if (type=="ver") {
|
||||
tmpStack.push("Microsoft Windows [Version 10.0.22000.51]");
|
||||
}else if (type=="systeminfo") {
|
||||
var dvInfo = [
|
||||
"Host Name: BLUE",
|
||||
"OS Name: Microsoft Windows 11 Home Single Language",
|
||||
"OS Version: 10.0.22000 N/A Build 22000.51",
|
||||
"OS Manufacturer: Microsoft Corporation",
|
||||
"OS Configuration: Standalone Workstation",
|
||||
"OS Build Type: Multiprocessor Free",
|
||||
"Registered Owner: Blue",
|
||||
"Registered Organization: N/A",
|
||||
"Product ID: 7H1S1-5AP1R-473DV-3R5I0N"
|
||||
];
|
||||
|
||||
for (var i = 0; i < dvInfo.length; i++) {
|
||||
tmpStack.push(dvInfo[i]);
|
||||
}
|
||||
}else if (type=="help") {
|
||||
var helpArr = [
|
||||
"CD Displays the name of or changes the current directory.",
|
||||
"CLS Clears the screen.",
|
||||
"DATE Displays or sets the date.",
|
||||
"DIR Displays a list of files and subdirectories in a directory.",
|
||||
"ECHO Displays messages, or turns command echoing on or off.",
|
||||
"EXIT Quits the CMD.EXE program (command interpreter).",
|
||||
"HELP Provides Help information for Windows commands.",
|
||||
"START Starts a separate window to run a specified program or command.",
|
||||
"SYSTEMINFO Displays machine specific properties and configuration.",
|
||||
"TIME Displays or sets the system time.",
|
||||
"TITLE Sets the window title for a CMD.EXE session.",
|
||||
"TYPE Displays the contents of a text file.",
|
||||
"VER Displays the Windows version."
|
||||
];
|
||||
|
||||
for (var i = 0; i < helpArr.length; i++) {
|
||||
tmpStack.push(helpArr[i]);
|
||||
}
|
||||
}else{
|
||||
tmpStack.push(`'${type}' is not recognized as an internal or external command,`);
|
||||
tmpStack.push("operable program or batch file.")
|
||||
tmpStack.push("")
|
||||
tmpStack.push("Type \"help\" for available commands")
|
||||
}
|
||||
|
||||
tmpStack.push("");
|
||||
setStack(tmpStack);
|
||||
}
|
||||
|
||||
const action = (event)=>{
|
||||
var cmdline = document.getElementById('curcmd');
|
||||
var action = event.target.dataset.action;
|
||||
|
||||
if(cmdline){
|
||||
if(action=="hover"){
|
||||
var crline = cmdline.parentNode;
|
||||
var cmdcont = document.getElementById('cmdcont');
|
||||
if(crline && cmdcont){
|
||||
cmdcont.scrollTop = crline.offsetTop;
|
||||
}
|
||||
cmdline.focus();
|
||||
}else if (action=="enter") {
|
||||
if(event.key=="Enter"){
|
||||
event.preventDefault();
|
||||
var tmpStack = [...stack];
|
||||
var cmd = event.target.innerText.trim();
|
||||
event.target.innerText = "";
|
||||
setLsc(tmpStack.length+1);
|
||||
cmdTool(cmd);
|
||||
}else if (event.key=="ArrowUp" || event.key=="ArrowDown") {
|
||||
event.preventDefault();
|
||||
var i = lastCmd + [1,-1][Number(event.key=="ArrowUp")];
|
||||
|
||||
while( i>=0 && i<stack.length){
|
||||
if(stack[i].startsWith("C:\\") && stack[i].includes(">")){
|
||||
var tp = stack[i].split(">");
|
||||
event.target.innerText = tp[1] || "";
|
||||
setLsc(i);
|
||||
break;
|
||||
}
|
||||
|
||||
i+=[1,-1][Number(event.key=="ArrowUp")];
|
||||
}
|
||||
|
||||
cmdline.focus();
|
||||
}else if(event.key=="Tab"){
|
||||
event.preventDefault();
|
||||
var cmd = event.target.innerText.trim(),
|
||||
arr = cmd.split(" ");
|
||||
var arg = arr.splice(1,arr.length).join(" ") || "";
|
||||
|
||||
var tdir = dirFolders();
|
||||
for (var i = 0; i < tdir.length; i++) {
|
||||
if(arg.length &&
|
||||
tdir[i].toLowerCase().startsWith(arg.toLowerCase())){
|
||||
event.target.innerText = arr[0]+" "+tdir[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
cmdline.focus();
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<div
|
||||
className="wnterm floatTab dpShad" data-size={wnapp.size}
|
||||
data-max={wnapp.max} style={{
|
||||
...(wnapp.size=="cstm"?wnapp.dim:null),
|
||||
zIndex: wnapp.z
|
||||
}} data-hide={wnapp.hide}>
|
||||
<ToolBar app={wnapp.action} icon={wnapp.icon}
|
||||
name={wntitle} invert bg="#060606"/>
|
||||
<div className="windowScreen flex" data-dock="true">
|
||||
<div className="restWindow h-full flex-grow text-gray-100">
|
||||
<div className="cmdcont w-full box-border overflow-y-scroll thinScroll prtclk"
|
||||
id="cmdcont" onMouseOver={action} onClick={action} data-action="hover">
|
||||
<div className="w-full h-max pb-12">
|
||||
{stack.map(x=> <div className="cmdLine">{x}</div>)}
|
||||
<div className="cmdLine actmd">
|
||||
{pwd}>
|
||||
<div className="ipcmd" id="curcmd" contentEditable
|
||||
data-action="enter" onKeyDown={action}></div>
|
||||
{/* <input id="curcmd" className="ipcmd" type="text" defaultValue="tyler"/> */}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.floatTab{
|
||||
.floatTab {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
@@ -13,17 +13,17 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
&[data-size="full"]{
|
||||
&[data-size="full"] {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
&[data-size="cstm"]{
|
||||
&[data-size="cstm"] {
|
||||
border-radius: 0;
|
||||
filter: none;
|
||||
border: solid 1px #c7c7c7;
|
||||
}
|
||||
|
||||
&[data-hide="true"]{
|
||||
&[data-hide="true"] {
|
||||
top: 0;
|
||||
left: 0;
|
||||
transform: scale(0.8);
|
||||
@@ -31,7 +31,7 @@
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&[data-max="false"]{
|
||||
&[data-max="false"] {
|
||||
top: calc(100% + 10px);
|
||||
transform: scale(0);
|
||||
transform-origin: bottom;
|
||||
@@ -39,7 +39,7 @@
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&[data-size="mini"]{
|
||||
&[data-size="mini"] {
|
||||
top: 10%;
|
||||
left: 20%;
|
||||
width: 60%;
|
||||
@@ -47,22 +47,30 @@
|
||||
}
|
||||
}
|
||||
|
||||
.appFullName[data-white="true"]{
|
||||
.absolute{
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.appFullName[data-white="true"] {
|
||||
color: #fefefe;
|
||||
}
|
||||
|
||||
.windowScreen{
|
||||
.windowScreen {
|
||||
width: 100%;
|
||||
flex-grow: 1;
|
||||
|
||||
&[data-dock="true"]{
|
||||
height: calc(100% - 26px);
|
||||
}
|
||||
}
|
||||
|
||||
.overTool{
|
||||
.overTool {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: calc(100% - 150px);
|
||||
width: auto;
|
||||
height: 26px;
|
||||
|
||||
.btab{
|
||||
.btab {
|
||||
width: 176px;
|
||||
height: 100%;
|
||||
margin: 0 4px;
|
||||
@@ -74,37 +82,38 @@
|
||||
padding: 0 8px;
|
||||
font-size: 0.72em;
|
||||
|
||||
.uicon{
|
||||
.uicon {
|
||||
color: #505050;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.restWindow{
|
||||
.restWindow {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
flex-grow: 1;
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
.addCont{
|
||||
.addCont {
|
||||
width: 80%;
|
||||
|
||||
input{
|
||||
input {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
|
||||
.storeNav{
|
||||
.uicon{
|
||||
.storeNav {
|
||||
.uicon {
|
||||
padding: 12px 0;
|
||||
margin: 0 4px 2px 4px;
|
||||
margin: 0 4px 2px;
|
||||
color: #888888;
|
||||
position: relative;
|
||||
transition: all ease-in-out 100ms;
|
||||
border-radius: 4px;
|
||||
|
||||
&[data-payload="true"]::after{
|
||||
&[data-payload="true"]::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 3px;
|
||||
@@ -114,18 +123,179 @@
|
||||
background: #2570ff;
|
||||
}
|
||||
|
||||
&:hover, &[data-payload="true"]{
|
||||
&:hover,
|
||||
&[data-payload="true"] {
|
||||
background: #ffffff;
|
||||
color: #2570ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.frontPage{
|
||||
height: 80%;
|
||||
.frontPage {
|
||||
position: relative;
|
||||
max-height: calc(100vh - 150px);
|
||||
overflow-y: hidden;
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
background: rgb(255,255,255);
|
||||
background: -webkit-linear-gradient(bottom, rgba(244, 244, 244, 1) 10%, rgba(135, 135, 135, 0.4) 50%, rgba(0,0,0,0) 100%);
|
||||
background: -o-linear-gradient(bottom, rgba(244, 244, 244, 1) 10%, rgba(135, 135, 135, 0.4) 50%, rgba(0,0,0,0) 100%);
|
||||
background: linear-gradient(to top, rgba(244, 244, 244, 1) 10%, rgba(135, 135, 135, 0.4) 50%, rgba(0,0,0,0) 100%);
|
||||
}
|
||||
}
|
||||
|
||||
.panelName{
|
||||
.panelName {
|
||||
color: #fefefe;
|
||||
text-shadow: -1px 1px 4px rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
.storeRibbon {
|
||||
display: flex;
|
||||
width: max-content;
|
||||
padding: 0 28px;
|
||||
|
||||
&::-webkit-scroll-bar {
|
||||
width: 0;
|
||||
}
|
||||
|
||||
.imageCont::before {
|
||||
content: attr(data-var);
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
color: #fefefe;
|
||||
font-size: 0.72em;
|
||||
padding: 8px 12px;
|
||||
text-transform: capitalize;
|
||||
text-shadow: 0 0 4px #222;
|
||||
}
|
||||
|
||||
.imageCont:nth-child(1)::after {
|
||||
content: "";
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
box-sizing: border-box;
|
||||
border: solid 3px #294bff;
|
||||
}
|
||||
}
|
||||
|
||||
.msfull {
|
||||
width: calc(100% - 61px);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border-radius: 6px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.frontCont {
|
||||
// height: 360px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.amzApps {
|
||||
background: #670cd7;
|
||||
background: -webkit-linear-gradient(48deg, rgba(82, 47, 139, 1) 0%, rgba(113, 35, 133, 1) 100%);
|
||||
background: -o-linear-gradient(48deg, rgba(82, 47, 139, 1) 0%, rgba(113, 35, 133, 1) 100%);
|
||||
background: linear-gradient(138deg, rgba(82, 47, 139, 1) 0%, rgba(113, 35, 133, 1) 100%);
|
||||
}
|
||||
|
||||
.amzGames {
|
||||
background: #214458;
|
||||
background: -webkit-linear-gradient(47deg, rgba(33,68,88,1) 0%, rgba(9,134,146,1) 100%);
|
||||
background: -o-linear-gradient(47deg, rgba(33,68,88,1) 0%, rgba(9,134,146,1) 100%);
|
||||
background: linear-gradient(137deg, rgba(33,68,88,1) 0%, rgba(9,134,146,1) 100%);
|
||||
}
|
||||
|
||||
.amzMovies {
|
||||
background: #217558;
|
||||
background: -webkit-linear-gradient(47deg, rgba(33,117,88,1) 0%, rgba(15,163,69,1) 100%);
|
||||
background: -o-linear-gradient(47deg, rgba(33,117,88,1) 0%, rgba(15,163,69,1) 100%);
|
||||
background: linear-gradient(137deg, rgba(33,117,88,1) 0%, rgba(15,163,69,1) 100%);
|
||||
}
|
||||
|
||||
.ribcont {
|
||||
background: rgba(255, 255, 255, 0.72);
|
||||
margin: auto 6px;
|
||||
height: auto;
|
||||
width: 120px;
|
||||
|
||||
.uicon {
|
||||
color: #aaa;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.bluestar {
|
||||
color: #006ff0;
|
||||
}
|
||||
}
|
||||
|
||||
.cmdcont{
|
||||
height: calc(100% - 24px);
|
||||
}
|
||||
|
||||
.cmdLine {
|
||||
font-size: 0.84em;
|
||||
color: rgba(255, 255, 255, 0.72);
|
||||
font-family: monospace, sans-serif;
|
||||
height: 1.2em;
|
||||
font-weight: lighter;
|
||||
overflow: hidden;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.actmd {
|
||||
height: auto;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.ipcmd {
|
||||
background: inherit;
|
||||
color: inherit;
|
||||
font-family: inherit;
|
||||
padding-right: 100px;
|
||||
// width: calc(100% - 120px);
|
||||
// max-width: calc();
|
||||
position: relative;
|
||||
caret-color: transparent;
|
||||
margin: 0;
|
||||
|
||||
&::after{
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 8px;
|
||||
height: 2px;
|
||||
background: #ccc;
|
||||
animation: blink 1s step-end infinite;
|
||||
}
|
||||
|
||||
&:active,
|
||||
&:focus {
|
||||
outline: none;
|
||||
border: none;
|
||||
caret-color: #ccc;
|
||||
|
||||
&::after{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
from,
|
||||
to {
|
||||
background: transparent;
|
||||
}
|
||||
50% {
|
||||
background: #ccc;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,3 +5,7 @@
|
||||
.wnstore{
|
||||
background: rgb(241, 243, 245);
|
||||
}
|
||||
|
||||
.wnterm{
|
||||
background: rgb(16, 16, 16);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,13 @@ code {
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.w-max{
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
.h-max{
|
||||
height: max-content;
|
||||
}
|
||||
|
||||
input{
|
||||
border: none;
|
||||
@@ -114,3 +121,22 @@ img[data-flip='true'], svg[data-flip='true']{
|
||||
.text-xss{
|
||||
font-size: 0.64em;
|
||||
}
|
||||
|
||||
.noscroll::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.thinScroll::-webkit-scrollbar {
|
||||
width: 2px;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.thinScroll:hover::-webkit-scrollbar-thumb{
|
||||
background: rgba(32, 24, 148, 0.4);
|
||||
}
|
||||
|
||||
.thinScroll::-webkit-scrollbar-thumb {
|
||||
width: 2px;
|
||||
border-radius: 10px;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {allApps} from '../utils';
|
||||
|
||||
var dev = "store";
|
||||
var dev = "";
|
||||
|
||||
const defState = {};
|
||||
for (var i = 0; i < allApps.length; i++) {
|
||||
@@ -86,6 +86,26 @@ const appReducer = (state = defState, action) => {
|
||||
obj.z = tmpState.hz;
|
||||
tmpState["edge"] = obj;
|
||||
return tmpState;
|
||||
}else if(action.type=="SHOWDSK"){
|
||||
var tmpState = {...state};
|
||||
var keys = Object.keys(tmpState);
|
||||
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var obj = tmpState[keys[i]];
|
||||
if(obj.hide==false){
|
||||
obj.max = false;
|
||||
if(obj.max==tmpState.hz){
|
||||
tmpState.hz-=1;
|
||||
}
|
||||
obj.z = -1;
|
||||
tmpState[keys[i]] = obj;
|
||||
}
|
||||
}
|
||||
|
||||
return tmpState;
|
||||
|
||||
}else if (action.type=="EXTERNAL") {
|
||||
window.open(action.payload, '_blank');
|
||||
}else{
|
||||
var keys = Object.keys(state);
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
|
||||
160
src/reducers/globals.js
Normal file
@@ -0,0 +1,160 @@
|
||||
const defState = {
|
||||
lays: [
|
||||
[{
|
||||
dim: {
|
||||
width: "50%"
|
||||
},
|
||||
br: 14
|
||||
}, {
|
||||
dim: {
|
||||
width: "50%",
|
||||
left: "50%"
|
||||
},
|
||||
br: 15
|
||||
}],
|
||||
[{
|
||||
dim: {
|
||||
width: "66%"
|
||||
},
|
||||
br: 14
|
||||
}, {
|
||||
dim: {
|
||||
width: "34%",
|
||||
left: "66%"
|
||||
},
|
||||
br: 15
|
||||
}],
|
||||
[{
|
||||
dim: {
|
||||
width: "33%"
|
||||
},
|
||||
br: 14
|
||||
}, {
|
||||
dim: {
|
||||
width: "34%",
|
||||
left: "33%"
|
||||
},
|
||||
br: 1
|
||||
}, {
|
||||
dim: {
|
||||
width: "33%",
|
||||
left: "67%"
|
||||
},
|
||||
br: 15
|
||||
}],
|
||||
[{
|
||||
dim: {
|
||||
width: "50%"
|
||||
},
|
||||
br: 14
|
||||
}, {
|
||||
dim: {
|
||||
width: "50%",
|
||||
height: "50%",
|
||||
left: "50%"
|
||||
},
|
||||
br: 3
|
||||
}, {
|
||||
dim: {
|
||||
width: "50%",
|
||||
height: "50%",
|
||||
top: "50%",
|
||||
left: "50%"
|
||||
},
|
||||
br: 5
|
||||
}],
|
||||
[{
|
||||
dim: {
|
||||
width: "50%",
|
||||
height: "50%"
|
||||
},
|
||||
br: 2
|
||||
}, {
|
||||
dim: {
|
||||
width: "50%",
|
||||
height: "50%",
|
||||
left: "50%"
|
||||
},
|
||||
br: 3
|
||||
}, {
|
||||
dim: {
|
||||
width: "50%",
|
||||
height: "50%",
|
||||
top: "50%"
|
||||
},
|
||||
br: 7
|
||||
}, {
|
||||
dim: {
|
||||
width: "50%",
|
||||
height: "50%",
|
||||
top: "50%",
|
||||
left: "50%"
|
||||
},
|
||||
br: 5
|
||||
}],
|
||||
[{
|
||||
dim: {
|
||||
width: "25%"
|
||||
},
|
||||
br: 14
|
||||
}, {
|
||||
dim: {
|
||||
width: "50%",
|
||||
left: "25%"
|
||||
},
|
||||
br: 1
|
||||
}, {
|
||||
dim: {
|
||||
width: "25%",
|
||||
left: "75%"
|
||||
},
|
||||
br: 15
|
||||
}]
|
||||
],
|
||||
ribbon: [
|
||||
"luca",
|
||||
"unescape",
|
||||
"microsoft 365",
|
||||
"essential apps",
|
||||
"xbox gamepass",
|
||||
"spotify",
|
||||
"social media",
|
||||
"security",
|
||||
"utility apps",
|
||||
"forza horizon",
|
||||
"kids apps"
|
||||
],
|
||||
apprib: [
|
||||
"netflix",
|
||||
"whatsApp",
|
||||
"telegram",
|
||||
"facebook",
|
||||
"amazon prime",
|
||||
"office",
|
||||
"lightroom"
|
||||
],
|
||||
gamerib: [
|
||||
"call of duty",
|
||||
"cyberpunk 2077",
|
||||
"minecraft",
|
||||
"battle field v",
|
||||
"far cry 5",
|
||||
"hitman 3",
|
||||
"residental evil"
|
||||
],
|
||||
movrib: [
|
||||
"antman",
|
||||
"godzilla vs kong",
|
||||
"tom and jerry",
|
||||
"wrath of man",
|
||||
"john wick",
|
||||
"wonder woman 1984",
|
||||
"nobody"
|
||||
]
|
||||
};
|
||||
|
||||
const globalReducer = (state = defState, action) => {
|
||||
return state;
|
||||
}
|
||||
|
||||
export default globalReducer;
|
||||
@@ -7,6 +7,7 @@ import menuReducer from './startmenu';
|
||||
import paneReducer from './sidepane';
|
||||
import widReducer from './widpane';
|
||||
import appReducer from './apps';
|
||||
import globalReducer from './globals'
|
||||
|
||||
const allReducers = combineReducers({
|
||||
wallpaper: wallReducer,
|
||||
@@ -15,7 +16,8 @@ const allReducers = combineReducers({
|
||||
startmenu: menuReducer,
|
||||
sidepane: paneReducer,
|
||||
widpane: widReducer,
|
||||
apps: appReducer
|
||||
apps: appReducer,
|
||||
globals: globalReducer
|
||||
});
|
||||
|
||||
export default allReducers;
|
||||
|
||||
@@ -44,7 +44,7 @@ export const Icon = (props)=>{
|
||||
data-click={props.click!=null}
|
||||
onClick={props.click!=null?clickDispatch:null}
|
||||
data-flip={props.flip!=null}
|
||||
height={props.height || props.width}
|
||||
height={props.height}
|
||||
data-invert={props.invert!=null?'true':'false'}
|
||||
data-rounded={props.rounded!=null?'true':'false'}
|
||||
src={src}
|
||||
@@ -74,13 +74,17 @@ export const Icon = (props)=>{
|
||||
}
|
||||
|
||||
export const Image = (props)=>{
|
||||
var src = `/img/${props.src}.png`;
|
||||
var src = `/img/${(props.dir?props.dir+"/":"")+props.src}.png`;
|
||||
|
||||
return (
|
||||
<div className={`imageCont ${props.className||""}`} style={{
|
||||
backgroundImage: `url(${src})`
|
||||
}} data-back={props.back!=null}>
|
||||
{!props.back?<img src={src} alt=""/>:null}
|
||||
<div className={`imageCont ${props.className||""}`} id={props.id} style={{
|
||||
backgroundImage: props.back && `url(${src})`
|
||||
}} data-back={props.back!=null} data-var={props.var}>
|
||||
{!props.back?<img
|
||||
width={props.w}
|
||||
height={props.h}
|
||||
data-var={props.var}
|
||||
src={src} alt=""/>:null}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -88,103 +92,9 @@ export const Image = (props)=>{
|
||||
export const SnapScreen = (props)=>{
|
||||
const dispatch = useDispatch();
|
||||
const [delay, setDelay] = useState(false);
|
||||
const lays = useSelector(state => state.globals.lays);
|
||||
|
||||
const vr = "var(--radii)";
|
||||
const lays = [
|
||||
[{
|
||||
dim: {
|
||||
width: "50%"
|
||||
}, br: 14
|
||||
},{
|
||||
dim: {
|
||||
width: "50%",
|
||||
left: "50%"
|
||||
}, br: 15
|
||||
}],
|
||||
[{
|
||||
dim: {
|
||||
width: "66%"
|
||||
}, br: 14
|
||||
},{
|
||||
dim: {
|
||||
width: "34%",
|
||||
left: "66%"
|
||||
},br: 15
|
||||
}],
|
||||
[{
|
||||
dim: {
|
||||
width: "33%"
|
||||
},br: 14
|
||||
},{
|
||||
dim: {
|
||||
width: "34%",
|
||||
left: "33%"
|
||||
},br:1
|
||||
},{
|
||||
dim: {
|
||||
width: "33%",
|
||||
left: "67%"
|
||||
},br: 15
|
||||
}],
|
||||
[{
|
||||
dim: {
|
||||
width: "50%"
|
||||
},br: 14
|
||||
},{
|
||||
dim: {
|
||||
width: "50%",
|
||||
height: "50%",
|
||||
left: "50%"
|
||||
},br: 3
|
||||
},{
|
||||
dim: {
|
||||
width: "50%",
|
||||
height: "50%",
|
||||
top: "50%",
|
||||
left: "50%"
|
||||
},br: 5
|
||||
}],
|
||||
[{
|
||||
dim: {
|
||||
width: "50%",
|
||||
height: "50%"
|
||||
},br:2
|
||||
},{
|
||||
dim: {
|
||||
width: "50%",
|
||||
height: "50%",
|
||||
left: "50%"
|
||||
},br:3
|
||||
},{
|
||||
dim: {
|
||||
width: "50%",
|
||||
height: "50%",
|
||||
top: "50%"
|
||||
},br:7
|
||||
},{
|
||||
dim: {
|
||||
width: "50%",
|
||||
height: "50%",
|
||||
top: "50%",
|
||||
left: "50%"
|
||||
},br:5
|
||||
}],
|
||||
[{
|
||||
dim: {
|
||||
width: "25%"
|
||||
},br: 14
|
||||
},{
|
||||
dim: {
|
||||
width: "50%",
|
||||
left: "25%"
|
||||
},br:1
|
||||
},{
|
||||
dim: {
|
||||
width: "25%",
|
||||
left: "75%"
|
||||
},br:15
|
||||
}]
|
||||
];
|
||||
|
||||
const clickDispatch = (event)=>{
|
||||
var action = {
|
||||
@@ -203,7 +113,7 @@ export const SnapScreen = (props)=>{
|
||||
if(delay && props.snap){
|
||||
setTimeout(()=>{
|
||||
setDelay(false);
|
||||
},1000);
|
||||
},800);
|
||||
}else if(props.snap){
|
||||
setDelay(true);
|
||||
}
|
||||
@@ -245,23 +155,23 @@ export const ToolBar = (props)=>{
|
||||
return (
|
||||
<div className="toolbar" style={{
|
||||
background: props.bg
|
||||
}}>
|
||||
}} data-float={props.float!=null}>
|
||||
<div className="topInfo flex items-center" data-float={props.float!=null}>
|
||||
<Icon src={props.icon} width={12}/>
|
||||
<Icon src={props.icon} width={14}/>
|
||||
<div
|
||||
className="appFullName text-xss"
|
||||
data-white={false}
|
||||
data-white={props.invert!=null}
|
||||
>{props.name}</div>
|
||||
</div>
|
||||
<div className="actbtns flex items-center">
|
||||
<Icon click={props.app} payload="mnmz" pr src="minimize" ui width={8}/>
|
||||
<Icon invert={props.invert} click={props.app} payload="mnmz" pr src="minimize" ui width={8}/>
|
||||
<div className="snapbox h-full" data-hv={snap}
|
||||
onMouseOver={openSnap} onMouseLeave={closeSnap}>
|
||||
<Icon click={props.app} payload="mxmz" pr src="maximize" ui width={8}/>
|
||||
<Icon invert={props.invert} click={props.app} payload="mxmz" pr src="maximize" ui width={8}/>
|
||||
<SnapScreen app={props.app} snap={snap} closeSnap={closeSnap}/>
|
||||
{/* {snap?<SnapScreen app={props.app} closeSnap={closeSnap}/>:null} */}
|
||||
</div>
|
||||
<Icon click={props.app} payload="close" pr src="close" ui width={8}/>
|
||||
<Icon invert={props.invert} click={props.app} payload="close" pr src="close" ui width={8}/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -4,6 +4,11 @@
|
||||
height: 26px;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
|
||||
&[data-float="false"]{
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
&[data-back="light"]{
|
||||
background: #fefefe;
|
||||
@@ -21,7 +26,7 @@
|
||||
}
|
||||
|
||||
.uicon{
|
||||
margin: 0 10px;
|
||||
margin: 0 10px 0 6px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,7 +69,6 @@
|
||||
height: 130px;
|
||||
position: absolute;
|
||||
display: grid;
|
||||
margin-top: -6px;
|
||||
right: -24px;
|
||||
grid-template-columns: repeat(3,minmax(0,1fr));
|
||||
grid-template-rows: repeat(2,minmax(0,1fr));
|
||||
@@ -156,13 +160,17 @@
|
||||
}
|
||||
|
||||
.uicon{
|
||||
position: relative;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
}
|
||||
|
||||
.imageCont{
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
width: auto;
|
||||
height: auto;
|
||||
|
||||
&[data-back="true"]{
|
||||
background-position: center;
|
||||
@@ -170,9 +178,7 @@
|
||||
}
|
||||
|
||||
img{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,22 +85,19 @@ export default [
|
||||
idx: 12,
|
||||
name: 'Camera',
|
||||
icon: 'camera',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 13,
|
||||
name: 'VS Code',
|
||||
icon: 'code',
|
||||
type: 'app',
|
||||
action: 'VSCODE'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 14,
|
||||
name: 'Excel',
|
||||
icon: 'excel',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 15,
|
||||
@@ -113,36 +110,31 @@ export default [
|
||||
idx: 16,
|
||||
name: 'Feedback',
|
||||
icon: 'feedback',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 17,
|
||||
name: 'Get Started',
|
||||
icon: 'getstarted',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 18,
|
||||
name: 'Groove Music',
|
||||
icon: 'groove',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 19,
|
||||
name: 'Help',
|
||||
icon: 'help',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 20,
|
||||
name: 'Yammer',
|
||||
icon: 'yammer',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 21,
|
||||
@@ -155,15 +147,13 @@ export default [
|
||||
idx: 22,
|
||||
name: 'Maps',
|
||||
icon: 'maps',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 23,
|
||||
name: 'Movies',
|
||||
icon: 'movies',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 24,
|
||||
@@ -176,22 +166,19 @@ export default [
|
||||
idx: 25,
|
||||
name: 'MsOffice',
|
||||
icon: 'msoffice',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 26,
|
||||
name: 'Narrator',
|
||||
icon: 'narrator',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 27,
|
||||
name: 'News',
|
||||
icon: 'news',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 28,
|
||||
@@ -204,15 +191,13 @@ export default [
|
||||
idx: 29,
|
||||
name: 'Sticky Notes',
|
||||
icon: 'notes',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 30,
|
||||
name: 'OneDrive',
|
||||
icon: 'oneDrive',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 31,
|
||||
@@ -225,8 +210,7 @@ export default [
|
||||
idx: 32,
|
||||
name: 'Outlook',
|
||||
icon: 'outlook',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 33,
|
||||
@@ -239,8 +223,7 @@ export default [
|
||||
idx: 34,
|
||||
name: 'People',
|
||||
icon: 'people',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 35,
|
||||
@@ -253,8 +236,7 @@ export default [
|
||||
idx: 36,
|
||||
name: 'Pinterest',
|
||||
icon: 'pinterest',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 37,
|
||||
@@ -267,29 +249,27 @@ export default [
|
||||
idx: 38,
|
||||
name: 'Security',
|
||||
icon: 'security',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 39,
|
||||
name: 'Spotify',
|
||||
icon: 'spotify',
|
||||
type: 'app',
|
||||
action: 'LNKSPOTIFY'
|
||||
action: 'EXTERNAL',
|
||||
payload: "https://open.spotify.com/user/62axxw0etmycj09el078cock0"
|
||||
},
|
||||
{
|
||||
idx: 40,
|
||||
name: 'Share',
|
||||
icon: 'share',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 41,
|
||||
name: 'Skype',
|
||||
icon: 'skype',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 42,
|
||||
@@ -301,22 +281,21 @@ export default [
|
||||
idx: 43,
|
||||
name: 'Soltaire',
|
||||
icon: 'soltaire',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 44,
|
||||
name: 'Twitter',
|
||||
icon: 'twitter',
|
||||
type: 'app',
|
||||
action: 'LNKTWITTER'
|
||||
action: 'EXTERNAL',
|
||||
payload: "https://twitter.com/blueedgetechno"
|
||||
},
|
||||
{
|
||||
idx: 45,
|
||||
name: 'Teams',
|
||||
icon: 'teams',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 46,
|
||||
@@ -329,8 +308,7 @@ export default [
|
||||
idx: 47,
|
||||
name: 'Tips',
|
||||
icon: 'tips',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 48,
|
||||
@@ -343,15 +321,13 @@ export default [
|
||||
idx: 49,
|
||||
name: 'Voice Recorder',
|
||||
icon: 'voice',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 50,
|
||||
name: 'Weather',
|
||||
icon: 'weather',
|
||||
type: 'app',
|
||||
action: 'ACTION'
|
||||
type: 'app'
|
||||
},
|
||||
{
|
||||
idx: 51,
|
||||
@@ -379,6 +355,7 @@ export default [
|
||||
name: 'Github',
|
||||
icon: 'github',
|
||||
type: 'app',
|
||||
action: 'LNKTWITTER'
|
||||
action: 'EXTERNAL',
|
||||
payload: "https://github.com/blueedgetechno"
|
||||
}
|
||||
];
|
||||
|
||||