ms store ans terminal

This commit is contained in:
Blue edge
2021-07-08 20:10:21 +05:30
parent ccd8f3fadd
commit e2780f0325
56 changed files with 1182 additions and 214 deletions

1
public/_redirects Normal file
View File

@@ -0,0 +1 @@
/* /index.html 200

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -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
View 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>

View File

@@ -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>
);

View File

@@ -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>

View File

@@ -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);
}
}

View 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": {}
}
}

View File

@@ -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>

View File

@@ -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;
}
}

View File

@@ -5,3 +5,7 @@
.wnstore{
background: rgb(241, 243, 245);
}
.wnterm{
background: rgb(16, 16, 16);
}

View File

@@ -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;
}

View File

@@ -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
View 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;

View File

@@ -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;

View File

@@ -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>
);

View File

@@ -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%;
}
}

View File

@@ -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"
}
];