From 7722df8c9e8eab217aceca0d13d914773073563b Mon Sep 17 00:00:00 2001 From: goleer Date: Tue, 15 Mar 2022 18:52:10 +0800 Subject: [PATCH] release 1.0.0 --- CHANGELOG.md | 533 --------------------- CODE_OF_CONDUCT.md | 76 --- README.md | 5 +- assets/preview/preview1.png | Bin 0 -> 19052 bytes package.json | 5 +- release/app/yarn.lock | 4 - src/renderer/App.css | 14 + src/renderer/App.tsx | 4 +- src/renderer/features/epub/EpubContent.tsx | 4 +- src/renderer/features/epub/EpubMenu.tsx | 9 +- src/renderer/features/home/Home.tsx | 16 + 11 files changed, 46 insertions(+), 624 deletions(-) create mode 100644 assets/preview/preview1.png delete mode 100644 release/app/yarn.lock create mode 100644 src/renderer/features/home/Home.tsx diff --git a/CHANGELOG.md b/CHANGELOG.md index 5310ab5..e69de29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,533 +0,0 @@ -# 2.1.0 - -- Migrate to `css-minifier-webpack-plugin` - -# 2.0.1 - -## Fixes - -- Fix broken css linking in production build - -# 2.0.0 - -## Breaking Changes - -- drop redux -- remove counter example app -- simplify directory structure -- move `dll` dir to `.erb` dir -- fix icon/font import paths -- migrate to `react-refresh` from `react-hot-loader` -- migrate to webpack@5 -- migrate to electron@11 -- remove e2e tests and testcafe integration -- rename `app` dir to more conventional `src` dir -- rename `resources` dir to `assets` -- simplify npm scripts -- drop stylelint -- simplify styling of boilerplate app -- remove `START_HOT` env variable -- notarize support -- landing page boilerplate -- docs updates -- restore removed debugging support - -# 1.4.0 - -- Migrate to `eslint-config-erb@2` -- Rename `dev` npm script to `start` -- GitHub Actions: only publish GitHub releases when on master branch - -# 1.3.1 - -- Fix sass building bug ([#2540](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2540)) -- Fix CI bug related to E2E tests and network timeouts -- Move automated dependency PRs to `next` ([#2554](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2554)) -- Bump dependencies to patch semver - -# 1.3.0 - -- Fixes E2E tests ([#2516](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2516)) -- Fixes preload entrypoint ([#2503](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2503)) -- Downgrade to `electron@8` -- Bump dependencies to latest semver - -# 1.2.0 - -- Migrate to redux toolkit -- Lazy load routes with react suspense -- Drop support for azure-pipelines and use only github actions -- Bump all deps to latest semver -- Remove `test-e2e` script from tests (blocked on release of https://github.com/DevExpress/testcafe-browser-provider-electron/pull/65) -- Swap `typed-css-modules-webpack-plugin` for `typings-for-css-modules-loader` -- Use latest version of `eslint-config-erb` -- Remove unnecessary file extensions from ts exclude -- Add experimental support for vscode debugging -- Revert https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2365 as default for users, provide as opt in option - -# 1.1.0 - -- Fix #2402 -- Simplify configs (https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2406) - -# 1.0.0 - -- Migrate to TypeScript from Flow ([#2363](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2363)) -- Use browserslist for `@babel/preset-env` targets ([#2368](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2368)) -- Use preload script, disable `nodeIntegration` in renderer process for [improved security](https://www.electronjs.org/docs/tutorial/security#2-do-not-enable-nodejs-integration-for-remote-content) ([#2365](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2365)) -- Add support for azure pipelines ([#2369](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2369)) -- Disable sourcemaps in production - -# 0.18.1 (2019.12.12) - -- Fix HMR env bug ([#2343](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2343)) -- Bump all deps to latest semver -- Bump to `electron@7` - -# 0.18.0 (2019.11.19) - -- Bump electron to `electron@6` (`electron@7` introduces breaking changes to testcafe end to end tests) -- Revert back to [two `package.json` structure](https://www.electron.build/tutorials/two-package-structure) -- Bump all deps to latest semver - -# 0.17.1 (2018.11.20) - -- Fix `yarn test-e2e` and testcafe for single package.json structure -- Fixes incorrect path in `yarn start` script -- Bumped deps -- Bump g++ in travis -- Change clone arguments to clone only master -- Change babel config to target current electron version - -For full change list, see https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/2021 - -# 0.17.0 (2018.10.30) - -- upgraded to `babel@7` (thanks to @vikr01 🎉🎉🎉) -- migrated from [two `package.json` structure](https://www.electron.build/tutorials/two-package-structure) (thanks to @HyperSprite!) -- initial auto update support (experimental) -- migrate from greenkeeper to [renovate](https://renovatebot.com) -- added issue template -- use `babel-preset-env` to target current electron version -- add [opencollective](https://opencollective.com/electron-react-boilerplate-594) banner message display in postinstall script (help support ERB 🙏) -- fix failing ci issues - -# 0.16.0 (2018.10.3) - -- removed unused dependencies -- migrate from `react-redux-router` to `connect-react-router` -- move webpack configs to `./webpack` dir -- use `g++` on travis when testing linux -- migrate from `spectron` to `testcafe` for e2e tests -- add linting support for config styles -- changed stylelint config -- temporarily disabled flow in appveyor to make ci pass -- added necessary infra to publish releases from ci - -# 0.15.0 (2018.8.25) - -- Performance: cache webpack uglify results -- Feature: add start minimized feature -- Feature: lint and fix styles with prettier and stylelint -- Feature: add greenkeeper support - -# 0.14.0 (2018.5.24) - -- Improved CI timings -- Migrated README commands to yarn from npm -- Improved vscode config -- Updated all dependencies to latest semver -- Fix `electron-rebuild` script bug -- Migrated to `mini-css-extract-plugin` from `extract-text-plugin` -- Added `optimize-css-assets-webpack-plugin` -- Run `prettier` on json, css, scss, and more filetypes - -# 0.13.3 (2018.5.24) - -- Add git precommit hook, when git commit will use `prettier` to format git add code -- Add format code function in `lint-fix` npm script which can use `prettier` to format project js code - -# 0.13.2 (2018.1.31) - -- Hot Module Reload (HMR) fixes -- Bumped all dependencies to latest semver -- Prevent error propagation of `CheckNativeDeps` script - -# 0.13.1 (2018.1.13) - -- Hot Module Reload (HMR) fixes -- Bumped all dependencies to latest semver -- Fixed electron-rebuild script -- Fixed tests scripts to run on all platforms -- Skip redux logs in console in test ENV - -# 0.13.0 (2018.1.6) - -#### Additions - -- Add native dependencies check on postinstall -- Updated all dependencies to latest semver - -# 0.12.0 (2017.7.8) - -#### Misc - -- Removed `babel-polyfill` -- Renamed and alphabetized npm scripts - -#### Breaking - -- Changed node dev `__dirname` and `__filename` to node built in fn's (https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/1035) -- Renamed `src/bundle.js` to `src/renderer.prod.js` for consistency -- Renamed `dll/vendor.js` to `dll/renderer.dev.dll.js` for consistency - -#### Additions - -- Enable node_modules cache on CI - -# 0.11.2 (2017.5.1) - -Yay! Another patch release. This release mostly includes refactorings and router bug fixes. Huge thanks to @anthonyraymond! - -⚠️ Windows electron builds are failing because of [this issue](https://github.com/electron/electron/issues/9321). This is not an issue with the boilerplate ⚠️ - -#### Breaking - -- **Renamed `./src/main.development.js` => `./src/main.{dev,prod}.js`:** [#963](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/963) - -#### Fixes - -- **Fixed reloading when not on `/` path:** [#958](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/958) [#949](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/949) - -#### Additions - -- **Added support for stylefmt:** [#960](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/960) - -# 0.11.1 (2017.4.23) - -You can now debug the production build with devtools like so: - -``` -DEBUG_PROD=true npm run package -``` - -🎉🎉🎉 - -#### Additions - -- **Added support for debugging production build:** [#fab245a](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/941/commits/fab245a077d02a09630f74270806c0c534a4ff95) - -#### Bug Fixes - -- **Fixed bug related to importing native dependencies:** [#933](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/933) - -#### Improvements - -- **Updated all deps to latest semver** - -# 0.11.0 (2017.4.19) - -Here's the most notable changes since `v0.10.0`. Its been about a year since a release has been pushed. Expect a new release to be published every 3-4 weeks. - -#### Breaking Changes - -- **Dropped support for node < 6** -- **Refactored webpack config files** -- **Migrate to two-package.json project structure** -- **Updated all devDeps to latest semver** -- **Migrated to Jest:** [#768](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/768) -- **Migrated to `react-router@4`** -- **Migrated to `electron-builder@4`** -- **Migrated to `webpack@2`** -- **Migrated to `react-hot-loader@3`** -- **Changed default live reload server PORT to `1212` from `3000`** - -#### Additions - -- **Added support for Yarn:** [#451](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/451) -- **Added support for Flow:** [#425](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/425) -- **Added support for stylelint:** [#911](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/911) -- **Added support for electron-builder:** [#876](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/876) -- **Added optional support for SASS:** [#880](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/880) -- **Added support for eslint-plugin-flowtype:** [#911](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/911) -- **Added support for appveyor:** [#280](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/280) -- **Added support for webpack dlls:** [#860](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/860) -- **Route based code splitting:** [#884](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/884) -- **Added support for Webpack Bundle Analyzer:** [#922](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/922) - -#### Improvements - -- **Parallelize renderer and main build processes when running `npm run build`** -- **Dynamically generate electron app menu** -- **Improved vscode integration:** [#856](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/856) - -#### Bug Fixes - -- **Fixed hot module replacement race condition bug:** [#917](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/917) [#920](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/920) - -# 0.10.0 (2016.4.18) - -#### Improvements - -- **Use Babel in main process with Webpack build:** [#201](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/201) -- **Change targets to built-in support by webpack:** [#197](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/197) -- **use es2015 syntax for webpack configs:** [#195](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/195) -- **Open application when webcontent is loaded:** [#192](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/192) -- **Upgraded dependencies** - -#### Bug fixed - -- **Fix `npm list electron-prebuilt` in package.js:** [#188](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/188) - -# 0.9.0 (2016.3.23) - -#### Improvements - -- **Added [redux-logger](https://github.com/fcomb/redux-logger)** -- **Upgraded [react-router-redux](https://github.com/reactjs/react-router-redux) to v4** -- **Upgraded dependencies** -- **Added `npm run dev` command:** [#162](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/162) -- **electron to v0.37.2** - -#### Breaking Changes - -- **css module as default:** [#154](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/154). -- **set default NODE_ENV to production:** [#140](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/140) - -# 0.8.0 (2016.2.17) - -#### Bug fixed - -- **Fix lint errors** -- **Fix Webpack publicPath for production builds**: [#119](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/119). -- **package script now chooses correct OS icon extension** - -#### Improvements - -- **babel 6** -- **Upgrade Dependencies** -- **Enable CSS source maps** -- **Add json-loader**: [#128](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/128). -- **react-router 2.0 and react-router-redux 3.0** - -# 0.7.1 (2015.12.27) - -#### Bug fixed - -- **Fixed npm script on windows 10:** [#103](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/103). -- **history and react-router version bump**: [#109](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/109), [#110](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/110). - -#### Improvements - -- **electron 0.36** - -# 0.7.0 (2015.12.16) - -#### Bug fixed - -- **Fixed process.env.NODE_ENV variable in webpack:** [#74](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/74). -- **add missing object-assign**: [#76](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/76). -- **packaging in npm@3:** [#77](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/77). -- **compatibility in windows:** [#100](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/100). -- **disable chrome debugger in production env:** [#102](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/102). - -#### Improvements - -- **redux** -- **css-modules** -- **upgrade to react-router 1.x** -- **unit tests** -- **e2e tests** -- **travis-ci** -- **upgrade to electron 0.35.x** -- **use es2015** -- **check dev engine for node and npm** - -# 0.6.5 (2015.11.7) - -#### Improvements - -- **Bump style-loader to 0.13** -- **Bump css-loader to 0.22** - -# 0.6.4 (2015.10.27) - -#### Improvements - -- **Bump electron-debug to 0.3** - -# 0.6.3 (2015.10.26) - -#### Improvements - -- **Initialize ExtractTextPlugin once:** [#64](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/64). - -# 0.6.2 (2015.10.18) - -#### Bug fixed - -- **Babel plugins production env not be set properly:** [#57](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/57). - -# 0.6.1 (2015.10.17) - -#### Improvements - -- **Bump electron to v0.34.0** - -# 0.6.0 (2015.10.16) - -#### Breaking Changes - -- **From react-hot-loader to react-transform** - -# 0.5.2 (2015.10.15) - -#### Improvements - -- **Run tests with babel-register:** [#29](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/29). - -# 0.5.1 (2015.10.12) - -#### Bug fixed - -- **Fix #51:** use `path.join(__dirname` instead of `./`. - -# 0.5.0 (2015.10.11) - -#### Improvements - -- **Simplify webpack config** see [#50](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/50). - -#### Breaking Changes - -- **webpack configs** -- **port changed:** changed default port from 2992 to 3000. -- **npm scripts:** remove `start-dev` and `dev-server`. rename `hot-dev-server` to `hot-server`. - -# 0.4.3 (2015.9.22) - -#### Bug fixed - -- **Fix #45 zeromq crash:** bump version of `electron-prebuilt`. - -# 0.4.2 (2015.9.15) - -#### Bug fixed - -- **run start-hot breaks chrome refresh(CTRL+R) (#42)**: bump `electron-debug` to `0.2.1` - -# 0.4.1 (2015.9.11) - -#### Improvements - -- **use electron-prebuilt version for packaging (#33)** - -# 0.4.0 (2015.9.5) - -#### Improvements - -- **update dependencies** - -# 0.3.0 (2015.8.31) - -#### Improvements - -- **eslint-config-airbnb** - -# 0.2.10 (2015.8.27) - -#### Features - -- **custom placeholder icon** - -#### Improvements - -- **electron-renderer as target:** via [webpack-target-electron-renderer](https://github.com/chentsulin/webpack-target-electron-renderer) - -# 0.2.9 (2015.8.18) - -#### Bug fixed - -- **Fix hot-reload** - -# 0.2.8 (2015.8.13) - -#### Improvements - -- **bump electron-debug** -- **babelrc** -- **organize webpack scripts** - -# 0.2.7 (2015.7.9) - -#### Bug fixed - -- **defaultProps:** fix typos. - -# 0.2.6 (2015.7.3) - -#### Features - -- **menu** - -#### Bug fixed - -- **package.js:** include webpack build. - -# 0.2.5 (2015.7.1) - -#### Features - -- **NPM Script:** support multi-platform -- **package:** `--all` option - -# 0.2.4 (2015.6.9) - -#### Bug fixed - -- **Eslint:** typo, [#17](https://github.com/electron-react-boilerplate/electron-react-boilerplate/issues/17) and improve `.eslintrc` - -# 0.2.3 (2015.6.3) - -#### Features - -- **Package Version:** use latest release electron version as default -- **Ignore Large peerDependencies** - -#### Bug fixed - -- **Npm Script:** typo, [#6](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/6) -- **Missing css:** [#7](https://github.com/electron-react-boilerplate/electron-react-boilerplate/pull/7) - -# 0.2.2 (2015.6.2) - -#### Features - -- **electron-debug** - -#### Bug fixed - -- **Webpack:** add `.json` and `.node` to extensions for imitating node require. -- **Webpack:** set `node_modules` to externals for native module support. - -# 0.2.1 (2015.5.30) - -#### Bug fixed - -- **Webpack:** #1, change build target to `atom`. - -# 0.2.0 (2015.5.30) - -#### Features - -- **Ignore:** `test`, `tools`, `release` folder and devDependencies in `package.json`. -- **Support asar** -- **Support icon** - -# 0.1.0 (2015.5.27) - -#### Features - -- **Webpack:** babel, react-hot, ... -- **Flux:** actions, api, components, containers, stores.. -- **Package:** darwin (osx), linux and win32 (windows) platform. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 2562267..e69de29 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,76 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at electronreactboilerplate@gmail.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq diff --git a/README.md b/README.md index c382003..4dbfe25 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ ![vector](./assets/icon.png) -a ebook reader which based on electron-react-boilerplate +A ebook reader for epub which based on electron-react-boilerplate + +## Preview +![preview1](./assets/preview/preview1.png) diff --git a/assets/preview/preview1.png b/assets/preview/preview1.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ddcdfb4bc65bd6b4a9cfd8a080df8666030290 GIT binary patch literal 19052 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 V(5ic09E3;xY+!npa@y&a{{?vi=R*Jh literal 0 HcmV?d00001 diff --git a/package.json b/package.json index b4eaaf7..836b3d3 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "name": "vector", + "version": "1.0.0", "description": "a ebook reader which based on electron-react-boilerplate", "scripts": { "build": "concurrently \"yarn build:main\" \"yarn build:renderer\"", @@ -99,7 +100,7 @@ "publish": { "provider": "github", "owner": "lifan1727", - "repo": "" + "repo": "https://github.com/lifan1727/vector" } }, "repository": { @@ -107,7 +108,7 @@ "url": "https://github.com/lifan1727/vector" }, "author": { - "name": "lifan" + "name": "zhangli" }, "license": "MIT", "bugs": { diff --git a/release/app/yarn.lock b/release/app/yarn.lock deleted file mode 100644 index fb57ccd..0000000 --- a/release/app/yarn.lock +++ /dev/null @@ -1,4 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - diff --git a/src/renderer/App.css b/src/renderer/App.css index e802812..87658ad 100644 --- a/src/renderer/App.css +++ b/src/renderer/App.css @@ -17,3 +17,17 @@ html, body { margin:0; padding:0; } + +.scollbar::-webkit-scrollbar { + width: 5px; +} + +.scollbar::-webkit-scrollbar-thumb { + border-radius: 10px; + background: #38bdf8; +} + +.scollbar::-webkit-scrollbar-track { + border-radius: 10px; + background: #EDEDED; +} diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 09c0adc..9f20e62 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -3,6 +3,7 @@ import Epub, { Book } from 'epubjs'; const Pdfjs = require('pdfjs-dist'); const pdfWorker = require('pdfjs-dist/build/pdf.worker.entry'); import BookViewer from './features/bookviewer/BookViewer'; +import Home from './features/home/Home'; import './App.css'; export default function App() { @@ -34,9 +35,8 @@ export default function App() { return ( <> { - Object.keys(book).length === 0?

Vector

: + Object.keys(book).length === 0? : } - {/* */} ); } diff --git a/src/renderer/features/epub/EpubContent.tsx b/src/renderer/features/epub/EpubContent.tsx index 7cabb37..b38c902 100644 --- a/src/renderer/features/epub/EpubContent.tsx +++ b/src/renderer/features/epub/EpubContent.tsx @@ -36,8 +36,8 @@ class EpubContent extends Component {
- - + +
) diff --git a/src/renderer/features/epub/EpubMenu.tsx b/src/renderer/features/epub/EpubMenu.tsx index 94fd6c4..a6dda5b 100644 --- a/src/renderer/features/epub/EpubMenu.tsx +++ b/src/renderer/features/epub/EpubMenu.tsx @@ -23,13 +23,14 @@ const EpubMenu = (props: any) => { return (