├── .prettierrc ├── src ├── types │ └── index.d.ts ├── common │ └── helpers.ts ├── renderer │ ├── app.html │ ├── appRenderer.tsx │ ├── components │ │ ├── Icons.tsx │ │ ├── Theme.scss │ │ ├── Application.tsx │ │ └── Application.scss │ └── appPreload.tsx └── main │ ├── app.ts │ └── appWindow.ts ├── assets ├── icons │ ├── LICENSE │ ├── erwt.png │ ├── react.png │ ├── chrome.png │ ├── license.png │ ├── nodejs.png │ ├── webpack.png │ ├── electron.png │ └── typescript.png └── images │ ├── logo.png │ ├── appIcon.ico │ └── app_screen.png ├── misc └── window │ ├── titlebarContextApi.ts │ ├── windowPreload.ts │ ├── components │ ├── ControlButton.tsx │ ├── WindowControls.tsx │ ├── WindowFrame.tsx │ ├── Titlebar.less │ └── Titlebar.tsx │ ├── titlebarContext.ts │ ├── titlebarIPC.ts │ └── titlebarMenus.ts ├── tools ├── webpack │ ├── webpack.aliases.js │ ├── webpack.helpers.js │ ├── webpack.plugins.js │ ├── webpack.main.js │ ├── webpack.renderer.js │ └── webpack.rules.js └── forge │ └── forge.config.js ├── tsconfig.json ├── LICENSE ├── .eslintrc ├── package.json ├── .gitignore └── README.md /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "all", 4 | "jsxSingleQuote": true 5 | } 6 | -------------------------------------------------------------------------------- /src/types/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.css'; 2 | declare module '*.png'; 3 | declare module '*.jpg'; 4 | declare module '*.jpeg'; 5 | -------------------------------------------------------------------------------- /assets/icons/LICENSE: -------------------------------------------------------------------------------- 1 | # Attribution 2 | 3 | Thanks to Flaticon -------------------------------------------------------------------------------- /assets/icons/erwt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luckypenny1632333/Electron-React-Typescript-starter-boilerplate/HEAD/assets/icons/erwt.png -------------------------------------------------------------------------------- /assets/icons/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luckypenny1632333/Electron-React-Typescript-starter-boilerplate/HEAD/assets/icons/react.png -------------------------------------------------------------------------------- /assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luckypenny1632333/Electron-React-Typescript-starter-boilerplate/HEAD/assets/images/logo.png -------------------------------------------------------------------------------- /assets/icons/chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luckypenny1632333/Electron-React-Typescript-starter-boilerplate/HEAD/assets/icons/chrome.png -------------------------------------------------------------------------------- /assets/icons/license.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luckypenny1632333/Electron-React-Typescript-starter-boilerplate/HEAD/assets/icons/license.png -------------------------------------------------------------------------------- /assets/icons/nodejs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luckypenny1632333/Electron-React-Typescript-starter-boilerplate/HEAD/assets/icons/nodejs.png -------------------------------------------------------------------------------- /assets/icons/webpack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luckypenny1632333/Electron-React-Typescript-starter-boilerplate/HEAD/assets/icons/webpack.png -------------------------------------------------------------------------------- /assets/icons/electron.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luckypenny1632333/Electron-React-Typescript-starter-boilerplate/HEAD/assets/icons/electron.png -------------------------------------------------------------------------------- /assets/icons/typescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luckypenny1632333/Electron-React-Typescript-starter-boilerplate/HEAD/assets/icons/typescript.png -------------------------------------------------------------------------------- /assets/images/appIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luckypenny1632333/Electron-React-Typescript-starter-boilerplate/HEAD/assets/images/appIcon.ico -------------------------------------------------------------------------------- /assets/images/app_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/luckypenny1632333/Electron-React-Typescript-starter-boilerplate/HEAD/assets/images/app_screen.png -------------------------------------------------------------------------------- /src/common/helpers.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Checks if process NODE_ENV in 'development' mode 3 | */ 4 | export function inDev(): boolean { 5 | return process.env.NODE_ENV == 'development'; 6 | } 7 | -------------------------------------------------------------------------------- /misc/window/titlebarContextApi.ts: -------------------------------------------------------------------------------- 1 | import { TitlebarContextApi } from './titlebarContext'; 2 | 3 | const context: TitlebarContextApi = (window as any).electron_window?.titlebar; 4 | 5 | export default context; 6 | -------------------------------------------------------------------------------- /misc/window/windowPreload.ts: -------------------------------------------------------------------------------- 1 | import { contextBridge } from 'electron'; 2 | import titlebarContext from './titlebarContext'; 3 | 4 | contextBridge.exposeInMainWorld('electron_window', { 5 | titlebar: titlebarContext, 6 | }); 7 | -------------------------------------------------------------------------------- /src/renderer/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
8 |
9 |