Command palette - initial implementation (#388)
This commit is contained in:
parent
a3b2291d5d
commit
449f5c2708
|
@ -15,7 +15,8 @@
|
||||||
"@speedy-tuner/ini": "^0.3.0",
|
"@speedy-tuner/ini": "^0.3.0",
|
||||||
"@speedy-tuner/types": "^0.3.0",
|
"@speedy-tuner/types": "^0.3.0",
|
||||||
"antd": "^4.18.4",
|
"antd": "^4.18.4",
|
||||||
"firebase": "^9.6.3",
|
"firebase": "^9.6.4",
|
||||||
|
"kbar": "^0.1.0-beta.27",
|
||||||
"mlg-converter": "^0.5.1",
|
"mlg-converter": "^0.5.1",
|
||||||
"nanoid": "^3.2.0",
|
"nanoid": "^3.2.0",
|
||||||
"pako": "^2.0.4",
|
"pako": "^2.0.4",
|
||||||
|
@ -42,7 +43,7 @@
|
||||||
"eslint-plugin-prettier": "^4.0.0",
|
"eslint-plugin-prettier": "^4.0.0",
|
||||||
"less-loader": "^6.1.0",
|
"less-loader": "^6.1.0",
|
||||||
"prettier": "^2.5.1",
|
"prettier": "^2.5.1",
|
||||||
"typescript": "^4.5.4",
|
"typescript": "^4.5.5",
|
||||||
"worker-loader": "^3.0.8"
|
"worker-loader": "^3.0.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -2035,9 +2036,9 @@
|
||||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
||||||
},
|
},
|
||||||
"node_modules/@firebase/app": {
|
"node_modules/@firebase/app": {
|
||||||
"version": "0.7.13",
|
"version": "0.7.14",
|
||||||
"resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.7.13.tgz",
|
"resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.7.14.tgz",
|
||||||
"integrity": "sha512-nMnz+lxASVZrWcAgLIgvs2QcsySjYvNpGjDeyhMzrbyBoBLgTux0cGWtm5RrJKx7arqueRpIihxcJtKAzCcIsw==",
|
"integrity": "sha512-15Pv8Rt45GlDwqlnFRXqlNjjERx2VkWDyWGLsXlCZYg9+F8c++GTWezacFoZfkLzUZ4W54iyofDujfUadzHv1g==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@firebase/component": "0.5.10",
|
"@firebase/component": "0.5.10",
|
||||||
"@firebase/logger": "0.3.2",
|
"@firebase/logger": "0.3.2",
|
||||||
|
@ -2090,11 +2091,11 @@
|
||||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
||||||
},
|
},
|
||||||
"node_modules/@firebase/app-compat": {
|
"node_modules/@firebase/app-compat": {
|
||||||
"version": "0.1.14",
|
"version": "0.1.15",
|
||||||
"resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.1.14.tgz",
|
"resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.1.15.tgz",
|
||||||
"integrity": "sha512-CvT7/TdfWNRudrExAyWiPcMVtaqljE4mch/KfmfSz1mGmK0j/y1DN6PDJ+NZxkI+Za+YRkOI55H6DdIBsYQ0Qg==",
|
"integrity": "sha512-hfk6eHKUb+qHPZLtQuUdNFY4gTYD47Q64oajKAtb6r6YcErYvxRoZPDJ2Xjv4PCioG+3q+f0YDUKfMJlRtK0IA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@firebase/app": "0.7.13",
|
"@firebase/app": "0.7.14",
|
||||||
"@firebase/component": "0.5.10",
|
"@firebase/component": "0.5.10",
|
||||||
"@firebase/logger": "0.3.2",
|
"@firebase/logger": "0.3.2",
|
||||||
"@firebase/util": "1.4.3",
|
"@firebase/util": "1.4.3",
|
||||||
|
@ -2117,9 +2118,9 @@
|
||||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
||||||
},
|
},
|
||||||
"node_modules/@firebase/auth": {
|
"node_modules/@firebase/auth": {
|
||||||
"version": "0.19.5",
|
"version": "0.19.6",
|
||||||
"resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.19.5.tgz",
|
"resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.19.6.tgz",
|
||||||
"integrity": "sha512-3+9XUnxaNb+ck6yULtEwOZbikWpL9KXuNLR34GxRv3mpOKD3uNbbONT149zMo3C6asI1bdv4+hCM78aS8VhZ0w==",
|
"integrity": "sha512-hlIX9jJWk/4E6JiEf9H4LLv8dNJLR17iryR1MaC58Y4U9ioYcxz8q7NMSUTyr5mJjYD/YBWrQXkE1V+gUnMnJw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@firebase/component": "0.5.10",
|
"@firebase/component": "0.5.10",
|
||||||
"@firebase/logger": "0.3.2",
|
"@firebase/logger": "0.3.2",
|
||||||
|
@ -2133,11 +2134,11 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@firebase/auth-compat": {
|
"node_modules/@firebase/auth-compat": {
|
||||||
"version": "0.2.5",
|
"version": "0.2.6",
|
||||||
"resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.2.5.tgz",
|
"resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.2.6.tgz",
|
||||||
"integrity": "sha512-Ft9PkmWOioxPMts6CMopN7sHpSXipQigOdm4BQ5HYTGHyLZpid2cj+2LxWsOYqQlhA1YBtzwE7sBRpV0W6bblQ==",
|
"integrity": "sha512-gBxhGGJ/jiL4LfMC6Nlx7LteKNMlKV+0SsyrXT3SFzpseCX8ayOVo+qKCTAkTJqupm4li1lIgwIXhrD2OsbHBw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@firebase/auth": "0.19.5",
|
"@firebase/auth": "0.19.6",
|
||||||
"@firebase/auth-types": "0.11.0",
|
"@firebase/auth-types": "0.11.0",
|
||||||
"@firebase/component": "0.5.10",
|
"@firebase/component": "0.5.10",
|
||||||
"@firebase/util": "1.4.3",
|
"@firebase/util": "1.4.3",
|
||||||
|
@ -2374,9 +2375,9 @@
|
||||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
||||||
},
|
},
|
||||||
"node_modules/@firebase/messaging": {
|
"node_modules/@firebase/messaging": {
|
||||||
"version": "0.9.6",
|
"version": "0.9.7",
|
||||||
"resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.9.6.tgz",
|
"resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.9.7.tgz",
|
||||||
"integrity": "sha512-weDGzgU0MNtC6FCFJu/AW+pXbuX/YasHqR42NcLyoHNL8EgjXLPC0EYeMi7B8dY7MCsbc5lbPtqiveOP97L1jQ==",
|
"integrity": "sha512-qRPWO5fvS1yahe0As0rlpo+Gc3v5IKHlULGJPYvWGJWE3W5aCvooxsT3vYgYNmAMFjgLlugfg8KKd41O1ebgqg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@firebase/component": "0.5.10",
|
"@firebase/component": "0.5.10",
|
||||||
"@firebase/installations": "0.5.5",
|
"@firebase/installations": "0.5.5",
|
||||||
|
@ -2390,12 +2391,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@firebase/messaging-compat": {
|
"node_modules/@firebase/messaging-compat": {
|
||||||
"version": "0.1.6",
|
"version": "0.1.7",
|
||||||
"resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.1.6.tgz",
|
"resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.1.7.tgz",
|
||||||
"integrity": "sha512-VzNM5ew8YAH7tzyukY0QqrCKdmaIe1FsWJSNPWcfzMNri8mpfKALIjeFzle+6DrRWZweFsp8ejvcvvulIDILGw==",
|
"integrity": "sha512-EKKcMin7myL8GXu2Mq6daje6o13VZtgxUKe+sLVL4DfxPbJdhVvNirYTi14KM81tDPdKAIakZNIGiIm/r8S2zA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@firebase/component": "0.5.10",
|
"@firebase/component": "0.5.10",
|
||||||
"@firebase/messaging": "0.9.6",
|
"@firebase/messaging": "0.9.7",
|
||||||
"@firebase/util": "1.4.3",
|
"@firebase/util": "1.4.3",
|
||||||
"tslib": "^2.1.0"
|
"tslib": "^2.1.0"
|
||||||
},
|
},
|
||||||
|
@ -3710,6 +3711,48 @@
|
||||||
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
|
||||||
"integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
|
"integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
|
||||||
},
|
},
|
||||||
|
"node_modules/@reach/observe-rect": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@reach/observe-rect/-/observe-rect-1.2.0.tgz",
|
||||||
|
"integrity": "sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ=="
|
||||||
|
},
|
||||||
|
"node_modules/@reach/portal": {
|
||||||
|
"version": "0.16.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@reach/portal/-/portal-0.16.2.tgz",
|
||||||
|
"integrity": "sha512-9ur/yxNkuVYTIjAcfi46LdKUvH0uYZPfEp4usWcpt6PIp+WDF57F/5deMe/uGi/B/nfDweQu8VVwuMVrCb97JQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"@reach/utils": "0.16.0",
|
||||||
|
"tiny-warning": "^1.0.3",
|
||||||
|
"tslib": "^2.3.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": "^16.8.0 || 17.x",
|
||||||
|
"react-dom": "^16.8.0 || 17.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@reach/portal/node_modules/tslib": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
||||||
|
},
|
||||||
|
"node_modules/@reach/utils": {
|
||||||
|
"version": "0.16.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@reach/utils/-/utils-0.16.0.tgz",
|
||||||
|
"integrity": "sha512-PCggBet3qaQmwFNcmQ/GqHSefadAFyNCUekq9RrWoaU9hh/S4iaFgf2MBMdM47eQj5i/Bk0Mm07cP/XPFlkN+Q==",
|
||||||
|
"dependencies": {
|
||||||
|
"tiny-warning": "^1.0.3",
|
||||||
|
"tslib": "^2.3.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": "^16.8.0 || 17.x",
|
||||||
|
"react-dom": "^16.8.0 || 17.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@reach/utils/node_modules/tslib": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
||||||
|
},
|
||||||
"node_modules/@reduxjs/toolkit": {
|
"node_modules/@reduxjs/toolkit": {
|
||||||
"version": "1.7.1",
|
"version": "1.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.7.1.tgz",
|
||||||
|
@ -10119,6 +10162,11 @@
|
||||||
"integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
|
"integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/fast-equals": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w=="
|
||||||
|
},
|
||||||
"node_modules/fast-glob": {
|
"node_modules/fast-glob": {
|
||||||
"version": "3.2.7",
|
"version": "3.2.7",
|
||||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
|
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
|
||||||
|
@ -10370,19 +10418,19 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/firebase": {
|
"node_modules/firebase": {
|
||||||
"version": "9.6.3",
|
"version": "9.6.4",
|
||||||
"resolved": "https://registry.npmjs.org/firebase/-/firebase-9.6.3.tgz",
|
"resolved": "https://registry.npmjs.org/firebase/-/firebase-9.6.4.tgz",
|
||||||
"integrity": "sha512-CMzv2LJGruZNtKI6pk1XLVaDC7ujIcq/S57wbC9XGllykIh86GLNPwVEWuCqCWmQDAZLyhi0t6tW/F2NX3HcPA==",
|
"integrity": "sha512-f9DpaBeesOKhF1mkAzAmDQ8pWq9VMvjV9y27BDtih+0VrAlHgmGPTt58y9IFZbjQyRsegpuVXjml1hMXe7qG+A==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@firebase/analytics": "0.7.5",
|
"@firebase/analytics": "0.7.5",
|
||||||
"@firebase/analytics-compat": "0.1.6",
|
"@firebase/analytics-compat": "0.1.6",
|
||||||
"@firebase/app": "0.7.13",
|
"@firebase/app": "0.7.14",
|
||||||
"@firebase/app-check": "0.5.3",
|
"@firebase/app-check": "0.5.3",
|
||||||
"@firebase/app-check-compat": "0.2.3",
|
"@firebase/app-check-compat": "0.2.3",
|
||||||
"@firebase/app-compat": "0.1.14",
|
"@firebase/app-compat": "0.1.15",
|
||||||
"@firebase/app-types": "0.7.0",
|
"@firebase/app-types": "0.7.0",
|
||||||
"@firebase/auth": "0.19.5",
|
"@firebase/auth": "0.19.6",
|
||||||
"@firebase/auth-compat": "0.2.5",
|
"@firebase/auth-compat": "0.2.6",
|
||||||
"@firebase/database": "0.12.5",
|
"@firebase/database": "0.12.5",
|
||||||
"@firebase/database-compat": "0.1.5",
|
"@firebase/database-compat": "0.1.5",
|
||||||
"@firebase/firestore": "3.4.3",
|
"@firebase/firestore": "3.4.3",
|
||||||
|
@ -10390,8 +10438,8 @@
|
||||||
"@firebase/functions": "0.7.7",
|
"@firebase/functions": "0.7.7",
|
||||||
"@firebase/functions-compat": "0.1.8",
|
"@firebase/functions-compat": "0.1.8",
|
||||||
"@firebase/installations": "0.5.5",
|
"@firebase/installations": "0.5.5",
|
||||||
"@firebase/messaging": "0.9.6",
|
"@firebase/messaging": "0.9.7",
|
||||||
"@firebase/messaging-compat": "0.1.6",
|
"@firebase/messaging-compat": "0.1.7",
|
||||||
"@firebase/performance": "0.5.5",
|
"@firebase/performance": "0.5.5",
|
||||||
"@firebase/performance-compat": "0.1.5",
|
"@firebase/performance-compat": "0.1.5",
|
||||||
"@firebase/polyfill": "0.3.36",
|
"@firebase/polyfill": "0.3.36",
|
||||||
|
@ -14308,6 +14356,22 @@
|
||||||
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
|
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
|
||||||
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
|
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
|
||||||
},
|
},
|
||||||
|
"node_modules/kbar": {
|
||||||
|
"version": "0.1.0-beta.27",
|
||||||
|
"resolved": "https://registry.npmjs.org/kbar/-/kbar-0.1.0-beta.27.tgz",
|
||||||
|
"integrity": "sha512-4knRJxDQqx3LUduhjuJh9EDGxnFpaQKjXt11UOsjKQ4ByXTTQpPjfAaKagVcTp9uVwEXGDhvGrsGbMfrI+6/Kg==",
|
||||||
|
"dependencies": {
|
||||||
|
"@reach/portal": "^0.16.0",
|
||||||
|
"fast-equals": "^2.0.3",
|
||||||
|
"match-sorter": "^6.3.0",
|
||||||
|
"react-virtual": "^2.8.2",
|
||||||
|
"tiny-invariant": "^1.2.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": "^16.0.0 || ^17.0.0",
|
||||||
|
"react-dom": "^16.0.0 || ^17.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/killable": {
|
"node_modules/killable": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
|
||||||
|
@ -14652,6 +14716,15 @@
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/match-sorter": {
|
||||||
|
"version": "6.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz",
|
||||||
|
"integrity": "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==",
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/runtime": "^7.12.5",
|
||||||
|
"remove-accents": "0.4.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/md5.js": {
|
"node_modules/md5.js": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
||||||
|
@ -19311,6 +19384,20 @@
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/react-virtual": {
|
||||||
|
"version": "2.10.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-virtual/-/react-virtual-2.10.3.tgz",
|
||||||
|
"integrity": "sha512-ZcQ+4oTQnJw79gmIzoEx6gfobADLj+9gdIiG4TTK5mUI6BAkEh83lmNU9WZPzi3FI77tXOYlWKC3fnHRH6kR5w==",
|
||||||
|
"funding": [
|
||||||
|
"https://github.com/sponsors/tannerlinsley"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"@reach/observe-rect": "^1.1.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": "^16.6.3 || ^17.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/read-pkg": {
|
"node_modules/read-pkg": {
|
||||||
"version": "5.2.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
|
||||||
|
@ -19631,6 +19718,11 @@
|
||||||
"url": "https://opencollective.com/unified"
|
"url": "https://opencollective.com/unified"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/remove-accents": {
|
||||||
|
"version": "0.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz",
|
||||||
|
"integrity": "sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U="
|
||||||
|
},
|
||||||
"node_modules/remove-trailing-separator": {
|
"node_modules/remove-trailing-separator": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
|
||||||
|
@ -22546,9 +22638,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/typescript": {
|
"node_modules/typescript": {
|
||||||
"version": "4.5.4",
|
"version": "4.5.5",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
|
||||||
"integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==",
|
"integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
|
||||||
"bin": {
|
"bin": {
|
||||||
"tsc": "bin/tsc",
|
"tsc": "bin/tsc",
|
||||||
"tsserver": "bin/tsserver"
|
"tsserver": "bin/tsserver"
|
||||||
|
@ -26530,9 +26622,9 @@
|
||||||
"integrity": "sha512-DNE2Waiwy5+zZnCfintkDtBfaW6MjIG883474v6Z0K1XZIvl76cLND4iv0YUb48leyF+PJK1KO2XrgHb/KpmhQ=="
|
"integrity": "sha512-DNE2Waiwy5+zZnCfintkDtBfaW6MjIG883474v6Z0K1XZIvl76cLND4iv0YUb48leyF+PJK1KO2XrgHb/KpmhQ=="
|
||||||
},
|
},
|
||||||
"@firebase/app": {
|
"@firebase/app": {
|
||||||
"version": "0.7.13",
|
"version": "0.7.14",
|
||||||
"resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.7.13.tgz",
|
"resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.7.14.tgz",
|
||||||
"integrity": "sha512-nMnz+lxASVZrWcAgLIgvs2QcsySjYvNpGjDeyhMzrbyBoBLgTux0cGWtm5RrJKx7arqueRpIihxcJtKAzCcIsw==",
|
"integrity": "sha512-15Pv8Rt45GlDwqlnFRXqlNjjERx2VkWDyWGLsXlCZYg9+F8c++GTWezacFoZfkLzUZ4W54iyofDujfUadzHv1g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@firebase/component": "0.5.10",
|
"@firebase/component": "0.5.10",
|
||||||
"@firebase/logger": "0.3.2",
|
"@firebase/logger": "0.3.2",
|
||||||
|
@ -26590,11 +26682,11 @@
|
||||||
"integrity": "sha512-uZfn9s4uuRsaX5Lwx+gFP3B6YsyOKUE+Rqa6z9ojT4VSRAsZFko9FRn6OxQUA1z5t5d08fY4pf+/+Dkd5wbdbA=="
|
"integrity": "sha512-uZfn9s4uuRsaX5Lwx+gFP3B6YsyOKUE+Rqa6z9ojT4VSRAsZFko9FRn6OxQUA1z5t5d08fY4pf+/+Dkd5wbdbA=="
|
||||||
},
|
},
|
||||||
"@firebase/app-compat": {
|
"@firebase/app-compat": {
|
||||||
"version": "0.1.14",
|
"version": "0.1.15",
|
||||||
"resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.1.14.tgz",
|
"resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.1.15.tgz",
|
||||||
"integrity": "sha512-CvT7/TdfWNRudrExAyWiPcMVtaqljE4mch/KfmfSz1mGmK0j/y1DN6PDJ+NZxkI+Za+YRkOI55H6DdIBsYQ0Qg==",
|
"integrity": "sha512-hfk6eHKUb+qHPZLtQuUdNFY4gTYD47Q64oajKAtb6r6YcErYvxRoZPDJ2Xjv4PCioG+3q+f0YDUKfMJlRtK0IA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@firebase/app": "0.7.13",
|
"@firebase/app": "0.7.14",
|
||||||
"@firebase/component": "0.5.10",
|
"@firebase/component": "0.5.10",
|
||||||
"@firebase/logger": "0.3.2",
|
"@firebase/logger": "0.3.2",
|
||||||
"@firebase/util": "1.4.3",
|
"@firebase/util": "1.4.3",
|
||||||
|
@ -26614,9 +26706,9 @@
|
||||||
"integrity": "sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg=="
|
"integrity": "sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg=="
|
||||||
},
|
},
|
||||||
"@firebase/auth": {
|
"@firebase/auth": {
|
||||||
"version": "0.19.5",
|
"version": "0.19.6",
|
||||||
"resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.19.5.tgz",
|
"resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.19.6.tgz",
|
||||||
"integrity": "sha512-3+9XUnxaNb+ck6yULtEwOZbikWpL9KXuNLR34GxRv3mpOKD3uNbbONT149zMo3C6asI1bdv4+hCM78aS8VhZ0w==",
|
"integrity": "sha512-hlIX9jJWk/4E6JiEf9H4LLv8dNJLR17iryR1MaC58Y4U9ioYcxz8q7NMSUTyr5mJjYD/YBWrQXkE1V+gUnMnJw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@firebase/component": "0.5.10",
|
"@firebase/component": "0.5.10",
|
||||||
"@firebase/logger": "0.3.2",
|
"@firebase/logger": "0.3.2",
|
||||||
|
@ -26634,11 +26726,11 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@firebase/auth-compat": {
|
"@firebase/auth-compat": {
|
||||||
"version": "0.2.5",
|
"version": "0.2.6",
|
||||||
"resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.2.5.tgz",
|
"resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.2.6.tgz",
|
||||||
"integrity": "sha512-Ft9PkmWOioxPMts6CMopN7sHpSXipQigOdm4BQ5HYTGHyLZpid2cj+2LxWsOYqQlhA1YBtzwE7sBRpV0W6bblQ==",
|
"integrity": "sha512-gBxhGGJ/jiL4LfMC6Nlx7LteKNMlKV+0SsyrXT3SFzpseCX8ayOVo+qKCTAkTJqupm4li1lIgwIXhrD2OsbHBw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@firebase/auth": "0.19.5",
|
"@firebase/auth": "0.19.6",
|
||||||
"@firebase/auth-types": "0.11.0",
|
"@firebase/auth-types": "0.11.0",
|
||||||
"@firebase/component": "0.5.10",
|
"@firebase/component": "0.5.10",
|
||||||
"@firebase/util": "1.4.3",
|
"@firebase/util": "1.4.3",
|
||||||
|
@ -26857,9 +26949,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@firebase/messaging": {
|
"@firebase/messaging": {
|
||||||
"version": "0.9.6",
|
"version": "0.9.7",
|
||||||
"resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.9.6.tgz",
|
"resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.9.7.tgz",
|
||||||
"integrity": "sha512-weDGzgU0MNtC6FCFJu/AW+pXbuX/YasHqR42NcLyoHNL8EgjXLPC0EYeMi7B8dY7MCsbc5lbPtqiveOP97L1jQ==",
|
"integrity": "sha512-qRPWO5fvS1yahe0As0rlpo+Gc3v5IKHlULGJPYvWGJWE3W5aCvooxsT3vYgYNmAMFjgLlugfg8KKd41O1ebgqg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@firebase/component": "0.5.10",
|
"@firebase/component": "0.5.10",
|
||||||
"@firebase/installations": "0.5.5",
|
"@firebase/installations": "0.5.5",
|
||||||
|
@ -26877,12 +26969,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@firebase/messaging-compat": {
|
"@firebase/messaging-compat": {
|
||||||
"version": "0.1.6",
|
"version": "0.1.7",
|
||||||
"resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.1.6.tgz",
|
"resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.1.7.tgz",
|
||||||
"integrity": "sha512-VzNM5ew8YAH7tzyukY0QqrCKdmaIe1FsWJSNPWcfzMNri8mpfKALIjeFzle+6DrRWZweFsp8ejvcvvulIDILGw==",
|
"integrity": "sha512-EKKcMin7myL8GXu2Mq6daje6o13VZtgxUKe+sLVL4DfxPbJdhVvNirYTi14KM81tDPdKAIakZNIGiIm/r8S2zA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@firebase/component": "0.5.10",
|
"@firebase/component": "0.5.10",
|
||||||
"@firebase/messaging": "0.9.6",
|
"@firebase/messaging": "0.9.7",
|
||||||
"@firebase/util": "1.4.3",
|
"@firebase/util": "1.4.3",
|
||||||
"tslib": "^2.1.0"
|
"tslib": "^2.1.0"
|
||||||
},
|
},
|
||||||
|
@ -27906,6 +27998,44 @@
|
||||||
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
|
||||||
"integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
|
"integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
|
||||||
},
|
},
|
||||||
|
"@reach/observe-rect": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@reach/observe-rect/-/observe-rect-1.2.0.tgz",
|
||||||
|
"integrity": "sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ=="
|
||||||
|
},
|
||||||
|
"@reach/portal": {
|
||||||
|
"version": "0.16.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@reach/portal/-/portal-0.16.2.tgz",
|
||||||
|
"integrity": "sha512-9ur/yxNkuVYTIjAcfi46LdKUvH0uYZPfEp4usWcpt6PIp+WDF57F/5deMe/uGi/B/nfDweQu8VVwuMVrCb97JQ==",
|
||||||
|
"requires": {
|
||||||
|
"@reach/utils": "0.16.0",
|
||||||
|
"tiny-warning": "^1.0.3",
|
||||||
|
"tslib": "^2.3.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"tslib": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@reach/utils": {
|
||||||
|
"version": "0.16.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@reach/utils/-/utils-0.16.0.tgz",
|
||||||
|
"integrity": "sha512-PCggBet3qaQmwFNcmQ/GqHSefadAFyNCUekq9RrWoaU9hh/S4iaFgf2MBMdM47eQj5i/Bk0Mm07cP/XPFlkN+Q==",
|
||||||
|
"requires": {
|
||||||
|
"tiny-warning": "^1.0.3",
|
||||||
|
"tslib": "^2.3.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"tslib": {
|
||||||
|
"version": "2.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
||||||
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"@reduxjs/toolkit": {
|
"@reduxjs/toolkit": {
|
||||||
"version": "1.7.1",
|
"version": "1.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.7.1.tgz",
|
||||||
|
@ -32843,6 +32973,11 @@
|
||||||
"integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
|
"integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"fast-equals": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w=="
|
||||||
|
},
|
||||||
"fast-glob": {
|
"fast-glob": {
|
||||||
"version": "3.2.7",
|
"version": "3.2.7",
|
||||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
|
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
|
||||||
|
@ -33038,19 +33173,19 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"firebase": {
|
"firebase": {
|
||||||
"version": "9.6.3",
|
"version": "9.6.4",
|
||||||
"resolved": "https://registry.npmjs.org/firebase/-/firebase-9.6.3.tgz",
|
"resolved": "https://registry.npmjs.org/firebase/-/firebase-9.6.4.tgz",
|
||||||
"integrity": "sha512-CMzv2LJGruZNtKI6pk1XLVaDC7ujIcq/S57wbC9XGllykIh86GLNPwVEWuCqCWmQDAZLyhi0t6tW/F2NX3HcPA==",
|
"integrity": "sha512-f9DpaBeesOKhF1mkAzAmDQ8pWq9VMvjV9y27BDtih+0VrAlHgmGPTt58y9IFZbjQyRsegpuVXjml1hMXe7qG+A==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@firebase/analytics": "0.7.5",
|
"@firebase/analytics": "0.7.5",
|
||||||
"@firebase/analytics-compat": "0.1.6",
|
"@firebase/analytics-compat": "0.1.6",
|
||||||
"@firebase/app": "0.7.13",
|
"@firebase/app": "0.7.14",
|
||||||
"@firebase/app-check": "0.5.3",
|
"@firebase/app-check": "0.5.3",
|
||||||
"@firebase/app-check-compat": "0.2.3",
|
"@firebase/app-check-compat": "0.2.3",
|
||||||
"@firebase/app-compat": "0.1.14",
|
"@firebase/app-compat": "0.1.15",
|
||||||
"@firebase/app-types": "0.7.0",
|
"@firebase/app-types": "0.7.0",
|
||||||
"@firebase/auth": "0.19.5",
|
"@firebase/auth": "0.19.6",
|
||||||
"@firebase/auth-compat": "0.2.5",
|
"@firebase/auth-compat": "0.2.6",
|
||||||
"@firebase/database": "0.12.5",
|
"@firebase/database": "0.12.5",
|
||||||
"@firebase/database-compat": "0.1.5",
|
"@firebase/database-compat": "0.1.5",
|
||||||
"@firebase/firestore": "3.4.3",
|
"@firebase/firestore": "3.4.3",
|
||||||
|
@ -33058,8 +33193,8 @@
|
||||||
"@firebase/functions": "0.7.7",
|
"@firebase/functions": "0.7.7",
|
||||||
"@firebase/functions-compat": "0.1.8",
|
"@firebase/functions-compat": "0.1.8",
|
||||||
"@firebase/installations": "0.5.5",
|
"@firebase/installations": "0.5.5",
|
||||||
"@firebase/messaging": "0.9.6",
|
"@firebase/messaging": "0.9.7",
|
||||||
"@firebase/messaging-compat": "0.1.6",
|
"@firebase/messaging-compat": "0.1.7",
|
||||||
"@firebase/performance": "0.5.5",
|
"@firebase/performance": "0.5.5",
|
||||||
"@firebase/performance-compat": "0.1.5",
|
"@firebase/performance-compat": "0.1.5",
|
||||||
"@firebase/polyfill": "0.3.36",
|
"@firebase/polyfill": "0.3.36",
|
||||||
|
@ -35967,6 +36102,18 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"kbar": {
|
||||||
|
"version": "0.1.0-beta.27",
|
||||||
|
"resolved": "https://registry.npmjs.org/kbar/-/kbar-0.1.0-beta.27.tgz",
|
||||||
|
"integrity": "sha512-4knRJxDQqx3LUduhjuJh9EDGxnFpaQKjXt11UOsjKQ4ByXTTQpPjfAaKagVcTp9uVwEXGDhvGrsGbMfrI+6/Kg==",
|
||||||
|
"requires": {
|
||||||
|
"@reach/portal": "^0.16.0",
|
||||||
|
"fast-equals": "^2.0.3",
|
||||||
|
"match-sorter": "^6.3.0",
|
||||||
|
"react-virtual": "^2.8.2",
|
||||||
|
"tiny-invariant": "^1.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"killable": {
|
"killable": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
|
||||||
|
@ -36247,6 +36394,15 @@
|
||||||
"object-visit": "^1.0.0"
|
"object-visit": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"match-sorter": {
|
||||||
|
"version": "6.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz",
|
||||||
|
"integrity": "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==",
|
||||||
|
"requires": {
|
||||||
|
"@babel/runtime": "^7.12.5",
|
||||||
|
"remove-accents": "0.4.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"md5.js": {
|
"md5.js": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
||||||
|
@ -39772,6 +39928,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"react-virtual": {
|
||||||
|
"version": "2.10.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-virtual/-/react-virtual-2.10.3.tgz",
|
||||||
|
"integrity": "sha512-ZcQ+4oTQnJw79gmIzoEx6gfobADLj+9gdIiG4TTK5mUI6BAkEh83lmNU9WZPzi3FI77tXOYlWKC3fnHRH6kR5w==",
|
||||||
|
"requires": {
|
||||||
|
"@reach/observe-rect": "^1.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"read-pkg": {
|
"read-pkg": {
|
||||||
"version": "5.2.0",
|
"version": "5.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
|
||||||
|
@ -40018,6 +40182,11 @@
|
||||||
"unified": "^10.0.0"
|
"unified": "^10.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"remove-accents": {
|
||||||
|
"version": "0.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz",
|
||||||
|
"integrity": "sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U="
|
||||||
|
},
|
||||||
"remove-trailing-separator": {
|
"remove-trailing-separator": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
|
||||||
|
@ -42294,9 +42463,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"typescript": {
|
"typescript": {
|
||||||
"version": "4.5.4",
|
"version": "4.5.5",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
|
||||||
"integrity": "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg=="
|
"integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA=="
|
||||||
},
|
},
|
||||||
"unbox-primitive": {
|
"unbox-primitive": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
|
|
|
@ -37,7 +37,8 @@
|
||||||
"@speedy-tuner/ini": "^0.3.0",
|
"@speedy-tuner/ini": "^0.3.0",
|
||||||
"@speedy-tuner/types": "^0.3.0",
|
"@speedy-tuner/types": "^0.3.0",
|
||||||
"antd": "^4.18.4",
|
"antd": "^4.18.4",
|
||||||
"firebase": "^9.6.3",
|
"firebase": "^9.6.4",
|
||||||
|
"kbar": "^0.1.0-beta.27",
|
||||||
"mlg-converter": "^0.5.1",
|
"mlg-converter": "^0.5.1",
|
||||||
"nanoid": "^3.2.0",
|
"nanoid": "^3.2.0",
|
||||||
"pako": "^2.0.4",
|
"pako": "^2.0.4",
|
||||||
|
@ -64,7 +65,7 @@
|
||||||
"eslint-plugin-prettier": "^4.0.0",
|
"eslint-plugin-prettier": "^4.0.0",
|
||||||
"less-loader": "^6.1.0",
|
"less-loader": "^6.1.0",
|
||||||
"prettier": "^2.5.1",
|
"prettier": "^2.5.1",
|
||||||
"typescript": "^4.5.4",
|
"typescript": "^4.5.5",
|
||||||
"worker-loader": "^3.0.8"
|
"worker-loader": "^3.0.8"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
14
src/App.less
14
src/App.less
|
@ -5,6 +5,14 @@
|
||||||
@import './themes/common.less';
|
@import './themes/common.less';
|
||||||
@import './themes/ant.less';
|
@import './themes/ant.less';
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--background: @component-background;
|
||||||
|
--foreground: @text;
|
||||||
|
--a1: @main;
|
||||||
|
--border: @border-color-split;
|
||||||
|
--shadow: @shadow-2;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +98,7 @@ html, body {
|
||||||
|
|
||||||
td {
|
td {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border: 1px solid @main-light;
|
border: 1px solid @component-background;
|
||||||
height: 50px;
|
height: 50px;
|
||||||
// transition: all 0.1s;
|
// transition: all 0.1s;
|
||||||
|
|
||||||
|
@ -142,12 +150,12 @@ select:-webkit-autofill:focus {
|
||||||
}
|
}
|
||||||
|
|
||||||
.markdown-preview {
|
.markdown-preview {
|
||||||
background-color: @main-light;
|
background-color: @component-background;
|
||||||
padding: 5px 11px;
|
padding: 5px 11px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
border-radius: @border-radius-base;
|
border-radius: @border-radius-base;
|
||||||
border-color: @main-dark;
|
border-color: @border-color-split;
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 2em;
|
font-size: 2em;
|
||||||
|
|
|
@ -24,8 +24,6 @@ import { Routes } from './routes';
|
||||||
import { loadTune } from './utils/api';
|
import { loadTune } from './utils/api';
|
||||||
import store from './store';
|
import store from './store';
|
||||||
import Log from './pages/Log';
|
import Log from './pages/Log';
|
||||||
|
|
||||||
import 'react-perfect-scrollbar/dist/css/styles.css';
|
|
||||||
import './App.less';
|
import './App.less';
|
||||||
import {
|
import {
|
||||||
AppState,
|
AppState,
|
||||||
|
@ -36,6 +34,8 @@ import useDb from './hooks/useDb';
|
||||||
import useServerStorage from './hooks/useServerStorage';
|
import useServerStorage from './hooks/useServerStorage';
|
||||||
import Info from './pages/Info';
|
import Info from './pages/Info';
|
||||||
|
|
||||||
|
import 'react-perfect-scrollbar/dist/css/styles.css';
|
||||||
|
|
||||||
// TODO: fix this
|
// TODO: fix this
|
||||||
// lazy loading this component causes a weird Curve canvas scaling
|
// lazy loading this component causes a weird Curve canvas scaling
|
||||||
// const Log = lazy(() => import('./pages/Log'));
|
// const Log = lazy(() => import('./pages/Log'));
|
||||||
|
|
|
@ -0,0 +1,257 @@
|
||||||
|
import {
|
||||||
|
CSSProperties,
|
||||||
|
forwardRef,
|
||||||
|
Fragment,
|
||||||
|
Ref,
|
||||||
|
useMemo,
|
||||||
|
ReactNode,
|
||||||
|
useCallback,
|
||||||
|
} from 'react';
|
||||||
|
import {
|
||||||
|
ActionId,
|
||||||
|
KBarAnimator,
|
||||||
|
KBarProvider,
|
||||||
|
KBarPortal,
|
||||||
|
KBarPositioner,
|
||||||
|
KBarSearch,
|
||||||
|
KBarResults,
|
||||||
|
useMatches,
|
||||||
|
ActionImpl,
|
||||||
|
} from 'kbar';
|
||||||
|
import {
|
||||||
|
CloudUploadOutlined,
|
||||||
|
LoginOutlined,
|
||||||
|
UserAddOutlined,
|
||||||
|
LogoutOutlined,
|
||||||
|
} from '@ant-design/icons';
|
||||||
|
import { useHistory } from 'react-router';
|
||||||
|
import { Routes } from '../routes';
|
||||||
|
import { useAuth } from '../contexts/AuthContext';
|
||||||
|
import {
|
||||||
|
logOutFailed,
|
||||||
|
logOutSuccessful,
|
||||||
|
} from '../pages/auth/notifications';
|
||||||
|
import store from '../store';
|
||||||
|
import { isMac } from '../utils/env';
|
||||||
|
|
||||||
|
enum Sections {
|
||||||
|
NAVIGATION = 'Navigation',
|
||||||
|
AUTH = 'Authentication',
|
||||||
|
};
|
||||||
|
|
||||||
|
const searchStyle = {
|
||||||
|
padding: '12px 16px',
|
||||||
|
fontSize: '16px',
|
||||||
|
width: '100%',
|
||||||
|
boxSizing: 'border-box' as CSSProperties['boxSizing'],
|
||||||
|
outline: 'none',
|
||||||
|
border: 'none',
|
||||||
|
background: 'var(--background)',
|
||||||
|
color: 'var(--foreground)',
|
||||||
|
};
|
||||||
|
|
||||||
|
const animatorStyle = {
|
||||||
|
maxWidth: '600px',
|
||||||
|
width: '100%',
|
||||||
|
background: 'var(--background)',
|
||||||
|
color: 'var(--foreground)',
|
||||||
|
borderRadius: '8px',
|
||||||
|
overflow: 'hidden',
|
||||||
|
boxShadow: 'var(--shadow)',
|
||||||
|
};
|
||||||
|
|
||||||
|
const groupNameStyle = {
|
||||||
|
padding: '8px 16px',
|
||||||
|
fontSize: '10px',
|
||||||
|
textTransform: 'uppercase' as const,
|
||||||
|
opacity: 0.5,
|
||||||
|
};
|
||||||
|
|
||||||
|
const ResultItem = forwardRef(
|
||||||
|
(
|
||||||
|
{
|
||||||
|
action,
|
||||||
|
active,
|
||||||
|
currentRootActionId,
|
||||||
|
}: {
|
||||||
|
action: ActionImpl;
|
||||||
|
active: boolean;
|
||||||
|
currentRootActionId: ActionId;
|
||||||
|
},
|
||||||
|
ref: Ref<HTMLDivElement>,
|
||||||
|
) => {
|
||||||
|
const ancestors = useMemo(() => {
|
||||||
|
if (!currentRootActionId) return action.ancestors;
|
||||||
|
const index = action.ancestors.findIndex(
|
||||||
|
(ancestor) => ancestor.id === currentRootActionId,
|
||||||
|
);
|
||||||
|
// +1 removes the currentRootAction (currently active item)
|
||||||
|
return action.ancestors.slice(index + 1);
|
||||||
|
}, [action.ancestors, currentRootActionId]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
ref={ref}
|
||||||
|
style={{
|
||||||
|
padding: '12px 16px',
|
||||||
|
background: active ? 'var(--a1)' : 'transparent',
|
||||||
|
borderLeft: `2px solid ${active ? 'var(--foreground)' : 'transparent'}`,
|
||||||
|
display: 'flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
cursor: 'pointer',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
display: 'flex',
|
||||||
|
gap: '8px',
|
||||||
|
alignItems: 'center',
|
||||||
|
fontSize: 14,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{action.icon && action.icon}
|
||||||
|
<div style={{ display: 'flex', flexDirection: 'column' }}>
|
||||||
|
<div>
|
||||||
|
{ancestors.length > 0 &&
|
||||||
|
ancestors.map((ancestor: any) => (
|
||||||
|
<Fragment key={ancestor.id}>
|
||||||
|
<span
|
||||||
|
style={{
|
||||||
|
opacity: 0.5,
|
||||||
|
marginRight: 8,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{ancestor.name}
|
||||||
|
</span>
|
||||||
|
<span style={{ marginRight: 8 }}>
|
||||||
|
›
|
||||||
|
</span>
|
||||||
|
</Fragment>
|
||||||
|
))}
|
||||||
|
<span>{action.name}</span>
|
||||||
|
</div>
|
||||||
|
{action.subtitle && (
|
||||||
|
<span style={{ fontSize: 12 }}>{action.subtitle}</span>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{action.shortcut?.length ? (
|
||||||
|
<div
|
||||||
|
aria-hidden
|
||||||
|
style={{ display: 'grid', gridAutoFlow: 'column', gap: '4px' }}
|
||||||
|
>
|
||||||
|
{action.shortcut.map((sc: any) => (
|
||||||
|
<kbd
|
||||||
|
key={sc}
|
||||||
|
style={{
|
||||||
|
padding: '4px 6px',
|
||||||
|
background: 'rgba(0 0 0 / .1)',
|
||||||
|
borderRadius: '4px',
|
||||||
|
fontSize: 14,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{sc}
|
||||||
|
</kbd>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
const RenderResults = () => {
|
||||||
|
const { results, rootActionId } = useMatches();
|
||||||
|
|
||||||
|
const onResultsRender = ({ item, active }: { item: any, active: any }) =>
|
||||||
|
typeof item === 'string' ? (
|
||||||
|
<div style={groupNameStyle}>{item}</div>
|
||||||
|
) : (
|
||||||
|
<ResultItem
|
||||||
|
action={item}
|
||||||
|
active={active}
|
||||||
|
currentRootActionId={rootActionId as string}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<KBarResults
|
||||||
|
items={results}
|
||||||
|
onRender={onResultsRender}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const CommandPalette = (props: { children: ReactNode }) => {
|
||||||
|
const { children } = props;
|
||||||
|
const history = useHistory();
|
||||||
|
const { logout } = useAuth();
|
||||||
|
|
||||||
|
const logoutAction = useCallback(async() => {
|
||||||
|
try {
|
||||||
|
await logout();
|
||||||
|
logOutSuccessful();
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(error);
|
||||||
|
logOutFailed(error as Error);
|
||||||
|
}
|
||||||
|
}, [logout]);
|
||||||
|
|
||||||
|
const initialActions = useMemo(() => [
|
||||||
|
{
|
||||||
|
id: 'ToggleSidebar',
|
||||||
|
name: 'Toggle Sidebar',
|
||||||
|
shortcut: [isMac ? '⌘' : 'ctrl', '\\'],
|
||||||
|
perform: () => store.dispatch({ type: 'ui/toggleSidebar' }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'UploadAction',
|
||||||
|
name: 'Upload',
|
||||||
|
section: Sections.NAVIGATION,
|
||||||
|
icon: <CloudUploadOutlined />,
|
||||||
|
subtitle: 'Upload tune and logs.',
|
||||||
|
perform: () => history.push(Routes.UPLOAD),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'LoginAction',
|
||||||
|
name: 'Login',
|
||||||
|
section: Sections.AUTH,
|
||||||
|
icon: <LoginOutlined />,
|
||||||
|
subtitle: 'Login using email, Google or GitHub account.',
|
||||||
|
perform: () => history.push(Routes.LOGIN),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'SignUpAction',
|
||||||
|
name: 'Sign-up',
|
||||||
|
section: Sections.AUTH,
|
||||||
|
icon: <UserAddOutlined />,
|
||||||
|
subtitle: 'Create new account.',
|
||||||
|
perform: () => history.push(Routes.SIGN_UP),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'LogoutAction',
|
||||||
|
name: 'Logout',
|
||||||
|
section: Sections.AUTH,
|
||||||
|
icon: <LogoutOutlined />,
|
||||||
|
subtitle: 'Logout current user.',
|
||||||
|
perform: logoutAction,
|
||||||
|
},
|
||||||
|
], [history, logoutAction]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<KBarProvider actions={initialActions}>
|
||||||
|
<KBarPortal>
|
||||||
|
<KBarPositioner>
|
||||||
|
<KBarAnimator style={animatorStyle}>
|
||||||
|
<KBarSearch style={searchStyle} />
|
||||||
|
<RenderResults />
|
||||||
|
</KBarAnimator>
|
||||||
|
</KBarPositioner>
|
||||||
|
</KBarPortal>
|
||||||
|
{children}
|
||||||
|
</KBarProvider>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default CommandPalette;
|
|
@ -1,3 +1,8 @@
|
||||||
|
import {
|
||||||
|
useCallback,
|
||||||
|
useEffect,
|
||||||
|
useMemo,
|
||||||
|
} from 'react';
|
||||||
import {
|
import {
|
||||||
matchPath,
|
matchPath,
|
||||||
useLocation,
|
useLocation,
|
||||||
|
@ -41,12 +46,7 @@ import {
|
||||||
LogoutOutlined,
|
LogoutOutlined,
|
||||||
InfoCircleOutlined,
|
InfoCircleOutlined,
|
||||||
} from '@ant-design/icons';
|
} from '@ant-design/icons';
|
||||||
import {
|
import { useKBar } from 'kbar';
|
||||||
useCallback,
|
|
||||||
useEffect,
|
|
||||||
useMemo,
|
|
||||||
useRef,
|
|
||||||
} from 'react';
|
|
||||||
import store from '../store';
|
import store from '../store';
|
||||||
import { isMac } from '../utils/env';
|
import { isMac } from '../utils/env';
|
||||||
import {
|
import {
|
||||||
|
@ -69,6 +69,7 @@ const TopBar = ({ tuneId }: { tuneId: string | null }) => {
|
||||||
const { pathname } = useLocation();
|
const { pathname } = useLocation();
|
||||||
const { currentUser, logout } = useAuth();
|
const { currentUser, logout } = useAuth();
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
|
const { query } = useKBar();
|
||||||
const buildTuneUrl = (route: string) => tuneId ? generatePath(route, { tuneId }) : null;
|
const buildTuneUrl = (route: string) => tuneId ? generatePath(route, { tuneId }) : null;
|
||||||
const matchedTuneRootPath = useMemo(() => matchPath(pathname, {
|
const matchedTuneRootPath = useMemo(() => matchPath(pathname, {
|
||||||
path: Routes.TUNE_ROOT,
|
path: Routes.TUNE_ROOT,
|
||||||
|
@ -86,20 +87,19 @@ const TopBar = ({ tuneId }: { tuneId: string | null }) => {
|
||||||
}
|
}
|
||||||
}, [logout]);
|
}, [logout]);
|
||||||
|
|
||||||
const searchInput = useRef<HTMLElement | null>(null);
|
const toggleCommandPalette = useCallback(() => query.toggle(), [query]);
|
||||||
const handleGlobalKeyboard = (e: KeyboardEvent) => {
|
|
||||||
|
const handleGlobalKeyboard = useCallback((e: KeyboardEvent) => {
|
||||||
if (isCommand(e)) {
|
if (isCommand(e)) {
|
||||||
if (searchInput) {
|
toggleCommandPalette();
|
||||||
e.preventDefault();
|
|
||||||
searchInput.current!.focus();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isToggleSidebar(e)) {
|
if (isToggleSidebar(e)) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
store.dispatch({ type: 'ui/toggleSidebar' });
|
store.dispatch({ type: 'ui/toggleSidebar' });
|
||||||
}
|
}
|
||||||
};
|
}, [toggleCommandPalette]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
document.addEventListener('keydown', handleGlobalKeyboard);
|
document.addEventListener('keydown', handleGlobalKeyboard);
|
||||||
|
|
||||||
|
@ -143,21 +143,31 @@ const TopBar = ({ tuneId }: { tuneId: string | null }) => {
|
||||||
</Col>
|
</Col>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const rightMenuColProps = tuneId ? {
|
||||||
|
span: 10,
|
||||||
|
md: 8,
|
||||||
|
sm: 8,
|
||||||
|
} : {
|
||||||
|
span: 14,
|
||||||
|
md: 10,
|
||||||
|
sm: 8,
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Header className="app-top-bar">
|
<Header className="app-top-bar">
|
||||||
<Row>
|
<Row>
|
||||||
<Col span={0} md={4} sm={0} />
|
<Col span={0} md={4} sm={0} />
|
||||||
{tuneId ? tabs : <Col span={10} md={10} sm={16} />}
|
{tuneId ? tabs : <Col span={10} md={10} sm={16} />}
|
||||||
<Col span={10} md={8} sm={8} style={{ textAlign: 'right' }}>
|
<Col {...rightMenuColProps} style={{ textAlign: 'right' }}>
|
||||||
<Space>
|
<Space>
|
||||||
{sm && <Tooltip visible={false} title={
|
{sm && <Tooltip title={
|
||||||
<>
|
<>
|
||||||
<Typography.Text keyboard>{isMac ? '⌘' : 'CTRL'}</Typography.Text>
|
<Typography.Text keyboard>{isMac ? '⌘' : 'CTRL'}</Typography.Text>
|
||||||
<Typography.Text keyboard>SHIFT</Typography.Text>
|
<Typography.Text keyboard>SHIFT</Typography.Text>
|
||||||
<Typography.Text keyboard>P</Typography.Text>
|
<Typography.Text keyboard>P</Typography.Text>
|
||||||
</>
|
</>
|
||||||
}>
|
}>
|
||||||
<Button disabled icon={<SearchOutlined />} ref={searchInput} />
|
<Button icon={<SearchOutlined />} onClick={toggleCommandPalette} />
|
||||||
</Tooltip>}
|
</Tooltip>}
|
||||||
<Link to={Routes.UPLOAD}>
|
<Link to={Routes.UPLOAD}>
|
||||||
<Button icon={<CloudUploadOutlined />} type={matchedTabPath?.url === Routes.UPLOAD ? 'primary' : 'default'}>
|
<Button icon={<CloudUploadOutlined />} type={matchedTabPath?.url === Routes.UPLOAD ? 'primary' : 'default'}>
|
||||||
|
@ -166,7 +176,7 @@ const TopBar = ({ tuneId }: { tuneId: string | null }) => {
|
||||||
</Link>
|
</Link>
|
||||||
<Dropdown
|
<Dropdown
|
||||||
overlay={
|
overlay={
|
||||||
<Menu>
|
<Menu disabled>
|
||||||
<SubMenu key="tune-sub" title="Tune" icon={<SlidersOutlined />}>
|
<SubMenu key="tune-sub" title="Tune" icon={<SlidersOutlined />}>
|
||||||
<Menu.Item key="download" icon={<SaveOutlined />}>
|
<Menu.Item key="download" icon={<SaveOutlined />}>
|
||||||
<a href="/tunes/202103.msq" target="__blank" rel="noopener noreferrer">
|
<a href="/tunes/202103.msq" target="__blank" rel="noopener noreferrer">
|
||||||
|
|
|
@ -11,6 +11,7 @@ import {
|
||||||
sentryDsn,
|
sentryDsn,
|
||||||
} from './utils/env';
|
} from './utils/env';
|
||||||
import { AuthProvider } from './contexts/AuthContext';
|
import { AuthProvider } from './contexts/AuthContext';
|
||||||
|
import CommandPalette from './components/CommandPalette';
|
||||||
|
|
||||||
if (isProduction) {
|
if (isProduction) {
|
||||||
Sentry.init({
|
Sentry.init({
|
||||||
|
@ -25,7 +26,9 @@ ReactDOM.render(
|
||||||
<HashRouter>
|
<HashRouter>
|
||||||
<AuthProvider>
|
<AuthProvider>
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
<App />
|
<CommandPalette>
|
||||||
|
<App />
|
||||||
|
</CommandPalette>
|
||||||
</Provider>
|
</Provider>
|
||||||
</AuthProvider>
|
</AuthProvider>
|
||||||
</HashRouter>,
|
</HashRouter>,
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
@main: @white;
|
@main: @white;
|
||||||
@text: @white;
|
@text: @white;
|
||||||
@main-light: #181818;
|
|
||||||
|
|
||||||
@body-background: @main;
|
@body-background: @main;
|
||||||
@menu-bg: @main;
|
@menu-bg: @main;
|
||||||
|
|
Loading…
Reference in New Issue