diff --git a/release/app/package-lock.json b/release/app/package-lock.json
index 8e7821d..c5c0c8c 100644
--- a/release/app/package-lock.json
+++ b/release/app/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "pile",
- "version": "0.7.16",
+ "version": "0.7.20",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "pile",
- "version": "0.7.16",
+ "version": "0.7.20",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
diff --git a/src/main/main.ts b/src/main/main.ts
index 420f3bb..57afafe 100644
--- a/src/main/main.ts
+++ b/src/main/main.ts
@@ -1,5 +1,5 @@
/* eslint global-require: off, no-console: off, promise/always-return: off */
-import { app, BrowserWindow, shell, protocol, net } from 'electron';
+import { app, BrowserWindow, shell, protocol, net, Menu } from 'electron';
import { autoUpdater } from 'electron-updater';
import log from 'electron-log';
import MenuBuilder from './menu';
@@ -9,6 +9,8 @@ import path from 'path';
import './ipc';
+Menu.setApplicationMenu(null);
+
class AppUpdater {
constructor() {
log.transports.file.level = 'info';
diff --git a/src/renderer/App.css b/src/renderer/App.css
index 1cae8bb..aa01b71 100644
--- a/src/renderer/App.css
+++ b/src/renderer/App.css
@@ -41,8 +41,8 @@
--primary: #fff;
--secondary: #c1c1c1;
- --base: #6297ff;
- --base-hover: #b6ceff;
+ --base: #4d88ff;
+ --base-hover: #82acff;
--base-yellow: #776b0e;
--base-green: #128212;
--base-red: #cb1d1d;
@@ -58,6 +58,60 @@
--bg-secondary: #373737;
--bg-tertiary: #575757;
--bg-color-secondary-hover: rgb(108, 108, 108);
+
+ /* Theme 1 */
+ /* --translucent: rgba(13, 10, 35, 0.5);
+ --sidebar-width: 250px;
+ --nav-height: 52px;
+
+ --primary: #ffe9ff;
+ --secondary: #ab92ae;
+
+ --base: #d014e1;
+ --base-hover: #df38e5;
+ --base-yellow: #776b0e;
+ --base-green: #128212;
+ --base-red: rgb(255, 71, 71);
+ --base-red-light: #3d2323;
+
+ --active: #ff9500;
+ --active-hover: #df7000;
+ --active-text: #fff;
+
+ --border: #5f4263;
+
+ --bg: #251b24;
+ --bg-secondary: #481e51;
+ --bg-tertiary: #5a1a5f;
+ --bg-color-secondary-hover: rgb(114, 95, 122);
+ --bg-translucent: rgba(32, 10, 35, 0.45); */
+
+ /* Midnight */
+ /* --translucent: rgba(13, 10, 35, 0.5);
+ --sidebar-width: 250px;
+ --nav-height: 52px;
+
+ --primary: #e9f3ff;
+ --secondary: #9299ae;
+
+ --base: #4d8eff;
+ --base-hover: #8299ff;
+ --base-yellow: #776b0e;
+ --base-green: #128212;
+ --base-red: rgb(255, 25, 25);
+ --base-red-light: #3d2323;
+
+ --active: #ff9634;
+ --active-hover: #ff8000;
+ --active-text: #fff;
+
+ --border: #424a63;
+
+ --bg: #1b1d25;
+ --bg-secondary: #16233c;
+ --bg-tertiary: #1a375f;
+ --bg-color-secondary-hover: rgb(95, 100, 122);
+ --bg-translucent: rgba(10, 15, 35, 0.45); */
}
}
@@ -77,14 +131,13 @@
body {
position: relative;
- color: var(--primary);
- padding: 0;
- margin: 0;
width: 100vw;
- overflow: hidden;
height: 100vh;
- /* background: var(--bg); */
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
font-family: 'Inter', sans-serif;
+ color: var(--primary);
}
li {
diff --git a/src/renderer/context/PilesContext.js b/src/renderer/context/PilesContext.js
index 4303803..a256cc8 100644
--- a/src/renderer/context/PilesContext.js
+++ b/src/renderer/context/PilesContext.js
@@ -25,22 +25,17 @@ export const PilesContextProvider = ({ children }) => {
const getConfig = async () => {
const configFilePath = window.electron.getConfigPath();
- // Setup piles.json if doesn't exist
+
+ // Setup new piles.json if doesn't exist,
+ // or read in the existing
if (!window.electron.existsSync(configFilePath)) {
window.electron.writeFile(configFilePath, JSON.stringify([]), (err) => {
- if (err) {
- console.error('Error writing to config');
- return;
- }
-
+ if (err) return;
setPiles([]);
});
} else {
await window.electron.readFile(configFilePath, (err, data) => {
- if (err) {
- console.error('Error reading file', err);
- return;
- }
+ if (err) return;
const jsonData = JSON.parse(data);
setPiles(jsonData);
});
@@ -107,12 +102,35 @@ export const PilesContextProvider = ({ children }) => {
writeConfig(newPiles);
};
+ // Update current pile
+ const updateCurrentPile = (newPile) => {
+ const newPiles = piles.map((pile) => {
+ if (currentPile.path === path) {
+ setCurrentPile(newPile);
+ return newPile;
+ }
+ return pile;
+ });
+ writeConfig(newPiles);
+ };
+
+ // THEMES
+ const getTheme = () => {
+ return currentPile.theme ?? 'light';
+ };
+
+ const setTheme = (theme = 'light') => {
+ const valid = ['light', 'dark', 'purple', 'green', 'night'];
+ if (!valid.includes(theme)) return;
+ const _pile = { ...currentPile, theme: theme };
+ updateCurrentPile(_pile);
+ };
+
const pilesContextValue = {
piles,
getCurrentPilePath,
createPile,
currentPile,
- changeCurrentPile,
deletePile,
};
diff --git a/src/renderer/context/TimelineContext.js b/src/renderer/context/TimelineContext.js
index 3c5a105..b3df7eb 100644
--- a/src/renderer/context/TimelineContext.js
+++ b/src/renderer/context/TimelineContext.js
@@ -6,11 +6,16 @@ import {
useCallback,
} from 'react';
import { useLocation } from 'react-router-dom';
+import debounce from 'renderer/utils/debounce';
export const TimelineContext = createContext();
export const TimelineContextProvider = ({ children }) => {
- const [closestDate, setClosestDate] = useState(new Date());
+ const [closestDate, _setClosestDate] = useState(new Date());
+
+ const setClosestDate = debounce((val) => {
+ _setClosestDate(val);
+ }, 15);
const timelineContextValue = { closestDate, setClosestDate };
diff --git a/src/renderer/index.tsx b/src/renderer/index.tsx
index 3c1b96c..efbd603 100644
--- a/src/renderer/index.tsx
+++ b/src/renderer/index.tsx
@@ -6,6 +6,8 @@ const root = createRoot(container);
root.render(