├── .gitignore ├── LICENSE ├── README.md ├── README_CN.md ├── babel.config.js ├── dist_electron ├── index.js └── package.json ├── logo.icns ├── logo.ico ├── logo.png ├── package-lock.json ├── package.json ├── postcss.config.js ├── public ├── favicon.ico └── index.html ├── screen-shot ├── 1.png ├── 2.png └── 3.png ├── src ├── App.vue ├── assets │ ├── avatar.jpeg │ ├── css │ │ ├── all.css │ │ ├── all.min.css │ │ ├── brands.css │ │ ├── brands.min.css │ │ ├── fontawesome.css │ │ ├── fontawesome.min.css │ │ ├── regular.css │ │ ├── regular.min.css │ │ ├── solid.css │ │ ├── solid.min.css │ │ ├── svg-with-js.css │ │ ├── svg-with-js.min.css │ │ ├── v4-shims.css │ │ └── v4-shims.min.css │ ├── js │ │ ├── bootstrap.bundle.js │ │ ├── bootstrap.bundle.js.map │ │ ├── bootstrap.bundle.min.js │ │ ├── bootstrap.bundle.min.js.map │ │ ├── bootstrap.js │ │ ├── bootstrap.js.map │ │ ├── bootstrap.min.js │ │ └── bootstrap.min.js.map │ ├── logo.png │ ├── paypal.png │ ├── redis.png │ ├── sass4.3 │ │ ├── _alert.scss │ │ ├── _badge.scss │ │ ├── _breadcrumb.scss │ │ ├── _button-group.scss │ │ ├── _buttons.scss │ │ ├── _card.scss │ │ ├── _carousel.scss │ │ ├── _close.scss │ │ ├── _code.scss │ │ ├── _custom-forms.scss │ │ ├── _dropdown.scss │ │ ├── _forms.scss │ │ ├── _functions.scss │ │ ├── _grid.scss │ │ ├── _images.scss │ │ ├── _input-group.scss │ │ ├── _jumbotron.scss │ │ ├── _kedis.scss │ │ ├── _list-group.scss │ │ ├── _media.scss │ │ ├── _mixins.scss │ │ ├── _modal.scss │ │ ├── _nav.scss │ │ ├── _navbar.scss │ │ ├── _pagination.scss │ │ ├── _popover.scss │ │ ├── _print.scss │ │ ├── _progress.scss │ │ ├── _reboot.scss │ │ ├── _root.scss │ │ ├── _spinners.scss │ │ ├── _tables.scss │ │ ├── _toasts.scss │ │ ├── _tooltip.scss │ │ ├── _transitions.scss │ │ ├── _type.scss │ │ ├── _utilities.scss │ │ ├── _variables.scss │ │ ├── bootstrap-grid.scss │ │ ├── bootstrap-reboot.scss │ │ ├── bootstrap.scss │ │ ├── customs │ │ │ ├── _contextMenu.scss │ │ │ ├── _customModal.scss │ │ │ ├── _el.scss │ │ │ ├── _select.scss │ │ │ ├── _table.scss │ │ │ └── _tree.scss │ │ ├── mixins │ │ │ ├── _alert.scss │ │ │ ├── _background-variant.scss │ │ │ ├── _badge.scss │ │ │ ├── _border-radius.scss │ │ │ ├── _box-shadow.scss │ │ │ ├── _breakpoints.scss │ │ │ ├── _buttons.scss │ │ │ ├── _caret.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _deprecate.scss │ │ │ ├── _float.scss │ │ │ ├── _forms.scss │ │ │ ├── _gradients.scss │ │ │ ├── _grid-framework.scss │ │ │ ├── _grid.scss │ │ │ ├── _hover.scss │ │ │ ├── _image.scss │ │ │ ├── _list-group.scss │ │ │ ├── _lists.scss │ │ │ ├── _nav-divider.scss │ │ │ ├── _pagination.scss │ │ │ ├── _reset-text.scss │ │ │ ├── _resize.scss │ │ │ ├── _screen-reader.scss │ │ │ ├── _size.scss │ │ │ ├── _table-row.scss │ │ │ ├── _text-emphasis.scss │ │ │ ├── _text-hide.scss │ │ │ ├── _text-truncate.scss │ │ │ ├── _transition.scss │ │ │ └── _visibility.scss │ │ ├── over-write.scss │ │ ├── utilities │ │ │ ├── _align.scss │ │ │ ├── _background.scss │ │ │ ├── _borders.scss │ │ │ ├── _clearfix.scss │ │ │ ├── _display.scss │ │ │ ├── _embed.scss │ │ │ ├── _flex.scss │ │ │ ├── _float.scss │ │ │ ├── _overflow.scss │ │ │ ├── _position.scss │ │ │ ├── _screenreaders.scss │ │ │ ├── _shadows.scss │ │ │ ├── _sizing.scss │ │ │ ├── _spacing.scss │ │ │ ├── _stretched-link.scss │ │ │ ├── _text.scss │ │ │ └── _visibility.scss │ │ └── vendor │ │ │ └── _rfs.scss │ ├── slogen.png │ ├── splash.png │ ├── webfonts │ │ ├── fa-brands-400.eot │ │ ├── fa-brands-400.svg │ │ ├── fa-brands-400.ttf │ │ ├── fa-brands-400.woff │ │ ├── fa-brands-400.woff2 │ │ ├── fa-regular-400.eot │ │ ├── fa-regular-400.svg │ │ ├── fa-regular-400.ttf │ │ ├── fa-regular-400.woff │ │ ├── fa-regular-400.woff2 │ │ ├── fa-solid-900.eot │ │ ├── fa-solid-900.svg │ │ ├── fa-solid-900.ttf │ │ ├── fa-solid-900.woff │ │ └── fa-solid-900.woff2 │ ├── wx.png │ └── zfb.png ├── background.ts ├── components │ ├── ContextMenuComponent.vue │ ├── KeyInfoPanel.vue │ ├── NewKeyModal.vue │ ├── NewKeysFilterModal.vue │ ├── NewRedisServerModal.vue │ ├── ValueHash.vue │ ├── ValueList.vue │ ├── ValueSet.vue │ ├── ValueString.vue │ └── ValueZSet.vue ├── i18n.ts ├── locales │ ├── en.json │ └── zh_CN.json ├── main.ts ├── models │ ├── ContextMenuItem.ts │ ├── KeyInfo.ts │ ├── KeysFilter.ts │ ├── ListInfo.ts │ └── RedisServer.ts ├── plugins │ └── tree │ │ ├── tree.css │ │ ├── tree.d.ts │ │ ├── tree.js │ │ └── tree.vue ├── router │ └── index.ts ├── shims-tsx.d.ts ├── shims-vue.d.ts ├── utils │ ├── EventBus.ts │ ├── RedisStore.ts │ ├── ResizeManager.ts │ └── Store.ts └── views │ ├── Console.vue │ ├── FooterBar.vue │ ├── Home.vue │ ├── Left.vue │ ├── Mid.vue │ └── Right.vue ├── tsconfig.json ├── tslint.json └── vue.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | app/node_modules 3 | /.git-credentials 4 | dist 5 | 6 | dist_electron -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Image](https://raw.githubusercontent.com/uniorder/kedis/master/src/assets/slogen.png "Kedis") 2 | 3 | # Kedis 4 | ``` 5 | 👇🏿👇🏿👇🏿👇🏿👇🏿👇🏿👇🏿👇🏿👇🏿👇🏿👇🏿 6 | 👉🏿👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👈🏿 7 | 👉🏿👉🏾👇🏽👇🏽👇🏽👇🏽👇🏽👇🏽👇🏽👈🏾👈🏿 8 | 👉🏿👉🏾👉🏽👇🏼👇🏼👇🏼👇🏼👇🏼👈🏽👈🏾👈🏿 9 | 👉🏿👉🏾👉🏽👉🏼👇🏻👇🏻👇🏻👈🏼👈🏽👈🏾👈🏿 10 | 👉🏿👉🏾👉🏽👉🏼 Kedis 👈🏼👈🏽👈🏾👈🏿 11 | 👉🏿👉🏾👉🏽👉🏼👆🏻👆🏻👆🏻👈🏼👈🏽👈🏾👈🏿 12 | 👉🏿👉🏾👉🏽👆🏼👆🏼👆🏼👆🏼👆🏼👈🏽👈🏾👈🏿 13 | 👉🏿👉🏾👆🏽👆🏽👆🏽👆🏽👆🏽👆🏽👆🏽👈🏾👈🏿 14 | 👉🏿👆🏾👆🏾👆🏾👆🏾👆🏾👆🏾👆🏾👆🏾👆🏾👈🏿 15 | 👉🏿👆🏿👆🏿👆🏿👆🏿👆🏿👆🏿👆🏿👆🏿👆🏿👈🏿 16 | ``` 17 | [中文](https://github.com/uniorder/kedis/blob/master/README_CN.md) 18 | 19 | This application powered by [Kehaw](http://www.kehaw.com) 20 | 21 | Kedis is a free Redis desktop manager app, it is based on Electron. Thanks for these open source projects: 22 | 23 | - [Electron](https://electronjs.org/) 24 | - [ioredis](https://github.com/luin/ioredis) 25 | - [vuejs](https://github.com/vuejs/vue) 26 | - [vue-cli-plugin-electron-builder](https://github.com/nklayman/vue-cli-plugin-electron-builder) 27 | - [Bootstrap](https://getbootstrap.com/) 28 | 29 | The other projects please check `package.json`. 30 | 31 | `.dmg` here: [Donwload](https://gitee.com/kehaw9818/Kedis/attach_files/294751/download) 32 | 33 | ![Image](https://raw.githubusercontent.com/uniorder/kedis/master/screen-shot/1.png "Kedis") 34 | 35 | ![Image](https://raw.githubusercontent.com/uniorder/kedis/master/screen-shot/2.png "Kedis") 36 | 37 | ![Image](https://raw.githubusercontent.com/uniorder/kedis/master/screen-shot/3.png "Kedis") 38 | 39 | ## Thanks 40 | 41 | These guys donate me: 42 | 43 | | Donator | Date | 44 | | ------- | ---------- | 45 | | \*煜 | 2019-03-17 | 46 | | F\*s | 2018-07-30 | 47 | | \*羽 | 2018-04-23 | 48 | | \*🐟 | 2018-04-22 | 49 | | \*语 | 2018-08-04 | 50 | | \*泽涛 | 2018-12-05 | 51 | | A\*d | 2018-12-05 | 52 | 53 | ## Tips 54 | 55 | Each collection only displays a maximum of 1000 pieces of data, e.g `keys *`, `hgetall`, if you wants to get more items, please use filter. 56 | 57 | ## Mac OS Prepares 58 | 59 | If you are using macOS Catalina, please install xcode command line tools first: 60 | 61 | ``` 62 | xcode-select --install 63 | ``` 64 | 65 | ## node-sass rebuild 66 | 67 | Some times you could get an error like: 68 | 69 | ``` 70 | Error: ENOENT: no such file or directory, scandir '**/node_modules/node-sass/vendor' 71 | ``` 72 | 73 | You should do this: 74 | 75 | ``` 76 | npm update 77 | npm install 78 | npm rebuild node-sass 79 | ``` 80 | 81 | ## Project setup 82 | 83 | ``` 84 | npm install 85 | ``` 86 | 87 | ### Compiles and hot-reloads for development 88 | 89 | ``` 90 | npm run electron:serve 91 | ``` 92 | 93 | ### Compiles and minifies for production 94 | 95 | ``` 96 | npm run electron:build 97 | ``` 98 | -------------------------------------------------------------------------------- /README_CN.md: -------------------------------------------------------------------------------- 1 | # Kedis 2 | 3 | [English](https://github.com/uniorder/kedis/blob/master/README.md) 4 | 5 | ![Image](https://raw.githubusercontent.com/uniorder/kedis/master/src/assets/slogen.png "Kedis") 6 | 7 | # Kedis 8 | ``` 9 | 👇🏿👇🏿👇🏿👇🏿👇🏿👇🏿👇🏿👇🏿👇🏿👇🏿👇🏿 10 | 👉🏿👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👇🏾👈🏿 11 | 👉🏿👉🏾👇🏽👇🏽👇🏽👇🏽👇🏽👇🏽👇🏽👈🏾👈🏿 12 | 👉🏿👉🏾👉🏽👇🏼👇🏼👇🏼👇🏼👇🏼👈🏽👈🏾👈🏿 13 | 👉🏿👉🏾👉🏽👉🏼👇🏻👇🏻👇🏻👈🏼👈🏽👈🏾👈🏿 14 | 👉🏿👉🏾👉🏽👉🏼 Kedis 👈🏼👈🏽👈🏾👈🏿 15 | 👉🏿👉🏾👉🏽👉🏼👆🏻👆🏻👆🏻👈🏼👈🏽👈🏾👈🏿 16 | 👉🏿👉🏾👉🏽👆🏼👆🏼👆🏼👆🏼👆🏼👈🏽👈🏾👈🏿 17 | 👉🏿👉🏾👆🏽👆🏽👆🏽👆🏽👆🏽👆🏽👆🏽👈🏾👈🏿 18 | 👉🏿👆🏾👆🏾👆🏾👆🏾👆🏾👆🏾👆🏾👆🏾👆🏾👈🏿 19 | 👉🏿👆🏿👆🏿👆🏿👆🏿👆🏿👆🏿👆🏿👆🏿👆🏿👈🏿 20 | ``` 21 | 22 | Kedis 是一个免费的Redis桌面管理工具,它基于Electron开发,特别感谢以下开源项目: 23 | 24 | - [Electron](https://electronjs.org/) 25 | - [ioredis](https://github.com/luin/ioredis) 26 | - [vuejs](https://github.com/vuejs/vue) 27 | - [vue-cli-plugin-electron-builder](https://github.com/nklayman/vue-cli-plugin-electron-builder) 28 | - [Bootstrap](https://getbootstrap.com/) 29 | 30 | 更多的依赖参看 `package.json` 文件. 31 | 32 | ![Image](http://www.kehaw.com/assets/img/1.png "Kedis") 33 | 34 | ![Image](http://www.kehaw.com/assets/img/2.png "Kedis") 35 | 36 | ![Image](http://www.kehaw.com/assets/img/3.png "Kedis") 37 | 38 | ## Thanks 39 | 40 | 捐助我的人: 41 | 42 | | Donator | Date | 43 | | ------- | ---------- | 44 | | \*煜 | 2019-03-17 | 45 | | F\*s | 2018-07-30 | 46 | | \*羽 | 2018-04-23 | 47 | | \*🐟 | 2018-04-22 | 48 | | \*语 | 2018-08-04 | 49 | | \*泽涛 | 2018-12-05 | 50 | | A\*d | 2018-12-05 | 51 | 52 | ## 提示 53 | 54 | 每一个集合,例如key、hset、set等,最多只显示1000条数据,如果想要查看更多的数据,请使用过滤功能。 55 | 56 | ## Mac OS 上的一些问题 57 | 58 | 如果你使用的是最新版的 macOS,可能会遇到gyp编译错误问题,此时你可以先安装Xcode命令行工具: 59 | 60 | ``` 61 | xcode-select --install 62 | ``` 63 | 64 | ## node-sass rebuild 65 | 66 | 如果在构建过程中发生了关于node-sass的错误,例如: 67 | 68 | ``` 69 | Error: ENOENT: no such file or directory, scandir '**/node_modules/node-sass/vendor' 70 | ``` 71 | 72 | 你可以尝试以下操作: 73 | 74 | ``` 75 | npm update 76 | npm install 77 | npm rebuild node-sass 78 | ``` 79 | 80 | ## 初始化 81 | 82 | ``` 83 | npm install 84 | ``` 85 | 86 | ### 运行 87 | 88 | ``` 89 | npm run electron:serve 90 | ``` 91 | 92 | ### 编译 93 | 94 | ``` 95 | npm run electron:build 96 | ``` 97 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /dist_electron/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kedis", 3 | "version": "2.4.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint", 9 | "electron:build": "vue-cli-service electron:build", 10 | "electron:serve": "vue-cli-service electron:serve", 11 | "i18n:report": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/locales/**/*.json'", 12 | "postinstall": "electron-builder install-app-deps", 13 | "postuninstall": "electron-builder install-app-deps" 14 | }, 15 | "main": "background.js", 16 | "dependencies": { 17 | "@types/ioredis": "^4.0.18", 18 | "@types/jquery": "^3.3.31", 19 | "@types/jqueryui": "^1.12.9", 20 | "@types/js-yaml": "^3.12.1", 21 | "@types/ssh2": "^0.5.39", 22 | "axios": "^0.19.0", 23 | "bootstrap-vue": "^2.0.4", 24 | "core-js": "^3.4.0", 25 | "hiredis": "^0.5.0", 26 | "ioredis": "^4.14.1", 27 | "jquery": "^3.4.1", 28 | "jqueryui": "^1.11.1", 29 | "js-yaml": "^3.13.1", 30 | "ssh2": "^0.8.5", 31 | "vee-validate": "^3.0.11", 32 | "vue": "^2.6.10", 33 | "vue-class-component": "^7.0.2", 34 | "vue-i18n": "^8.0.0", 35 | "vue-property-decorator": "^8.3.0", 36 | "vue-router": "^3.1.3" 37 | }, 38 | "devDependencies": { 39 | "@types/webpack": "^4.39.8", 40 | "@vue/cli-plugin-babel": "^4.0.0", 41 | "@vue/cli-plugin-router": "^4.0.0", 42 | "@vue/cli-plugin-typescript": "^4.0.0", 43 | "@vue/cli-service": "^4.0.0", 44 | "electron": "^6.1.4", 45 | "node-sass": "^4.12.0", 46 | "sass-loader": "^8.0.0", 47 | "tslint-config-prettier": "^1.18.0", 48 | "typescript": "~3.5.3", 49 | "vue-cli-plugin-electron-builder": "^1.4.0", 50 | "vue-cli-plugin-i18n": "^0.6.0", 51 | "vue-template-compiler": "^2.6.10" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /logo.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniorder/kedis/13dc97cb0648649b6a53eb25c98251db0233c932/logo.icns -------------------------------------------------------------------------------- /logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniorder/kedis/13dc97cb0648649b6a53eb25c98251db0233c932/logo.ico -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniorder/kedis/13dc97cb0648649b6a53eb25c98251db0233c932/logo.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kedis", 3 | "version": "2.4.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint", 9 | "electron:build": "vue-cli-service electron:build", 10 | "electron:serve": "vue-cli-service electron:serve", 11 | "i18n:report": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/locales/**/*.json'", 12 | "postinstall": "electron-builder install-app-deps", 13 | "postuninstall": "electron-builder install-app-deps" 14 | }, 15 | "main": "background.js", 16 | "dependencies": { 17 | "@types/ioredis": "^4.0.18", 18 | "@types/jquery": "^3.3.31", 19 | "@types/jqueryui": "^1.12.9", 20 | "@types/js-yaml": "^3.12.1", 21 | "@types/ssh2": "^0.5.39", 22 | "axios": "^0.19.0", 23 | "bootstrap-vue": "^2.0.4", 24 | "core-js": "^3.4.0", 25 | "hiredis": "^0.5.0", 26 | "ioredis": "^4.14.1", 27 | "jquery": "^3.4.1", 28 | "jqueryui": "^1.11.1", 29 | "js-yaml": "^3.13.1", 30 | "ssh2": "^0.8.5", 31 | "vee-validate": "^3.0.11", 32 | "vue": "^2.6.10", 33 | "vue-class-component": "^7.0.2", 34 | "vue-i18n": "^8.0.0", 35 | "vue-property-decorator": "^8.3.0", 36 | "vue-router": "^3.1.3" 37 | }, 38 | "devDependencies": { 39 | "@types/webpack": "^4.39.8", 40 | "@vue/cli-plugin-babel": "^4.0.0", 41 | "@vue/cli-plugin-router": "^4.0.0", 42 | "@vue/cli-plugin-typescript": "^4.0.0", 43 | "@vue/cli-service": "^4.0.0", 44 | "electron": "^6.1.4", 45 | "node-sass": "^4.12.0", 46 | "sass-loader": "^8.0.0", 47 | "tslint-config-prettier": "^1.18.0", 48 | "typescript": "~3.5.3", 49 | "vue-cli-plugin-electron-builder": "^1.4.0", 50 | "vue-cli-plugin-i18n": "^0.6.0", 51 | "vue-template-compiler": "^2.6.10" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniorder/kedis/13dc97cb0648649b6a53eb25c98251db0233c932/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | kedis 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /screen-shot/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniorder/kedis/13dc97cb0648649b6a53eb25c98251db0233c932/screen-shot/1.png -------------------------------------------------------------------------------- /screen-shot/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniorder/kedis/13dc97cb0648649b6a53eb25c98251db0233c932/screen-shot/2.png -------------------------------------------------------------------------------- /screen-shot/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniorder/kedis/13dc97cb0648649b6a53eb25c98251db0233c932/screen-shot/3.png -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 79 | -------------------------------------------------------------------------------- /src/assets/avatar.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniorder/kedis/13dc97cb0648649b6a53eb25c98251db0233c932/src/assets/avatar.jpeg -------------------------------------------------------------------------------- /src/assets/css/brands.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.6.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Brands'; 7 | font-style: normal; 8 | font-weight: normal; 9 | src: url("../webfonts/fa-brands-400.eot"); 10 | src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); } 11 | 12 | .fab { 13 | font-family: 'Font Awesome 5 Brands'; } 14 | -------------------------------------------------------------------------------- /src/assets/css/brands.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.6.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"} -------------------------------------------------------------------------------- /src/assets/css/regular.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.6.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Free'; 7 | font-style: normal; 8 | font-weight: 400; 9 | src: url("../webfonts/fa-regular-400.eot"); 10 | src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); } 11 | 12 | .far { 13 | font-family: 'Font Awesome 5 Free'; 14 | font-weight: 400; } 15 | -------------------------------------------------------------------------------- /src/assets/css/regular.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.6.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400} -------------------------------------------------------------------------------- /src/assets/css/solid.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.6.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face { 6 | font-family: 'Font Awesome 5 Free'; 7 | font-style: normal; 8 | font-weight: 900; 9 | src: url("../webfonts/fa-solid-900.eot"); 10 | src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); } 11 | 12 | .fa, 13 | .fas { 14 | font-family: 'Font Awesome 5 Free'; 15 | font-weight: 900; } 16 | -------------------------------------------------------------------------------- /src/assets/css/solid.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.6.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | @font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900} -------------------------------------------------------------------------------- /src/assets/css/svg-with-js.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome Free 5.6.1 by @fontawesome - https://fontawesome.com 3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) 4 | */ 5 | .svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible}.svg-inline--fa{display:inline-block;font-size:inherit;height:1em;vertical-align:-.125em}.svg-inline--fa.fa-lg{vertical-align:-.225em}.svg-inline--fa.fa-w-1{width:.0625em}.svg-inline--fa.fa-w-2{width:.125em}.svg-inline--fa.fa-w-3{width:.1875em}.svg-inline--fa.fa-w-4{width:.25em}.svg-inline--fa.fa-w-5{width:.3125em}.svg-inline--fa.fa-w-6{width:.375em}.svg-inline--fa.fa-w-7{width:.4375em}.svg-inline--fa.fa-w-8{width:.5em}.svg-inline--fa.fa-w-9{width:.5625em}.svg-inline--fa.fa-w-10{width:.625em}.svg-inline--fa.fa-w-11{width:.6875em}.svg-inline--fa.fa-w-12{width:.75em}.svg-inline--fa.fa-w-13{width:.8125em}.svg-inline--fa.fa-w-14{width:.875em}.svg-inline--fa.fa-w-15{width:.9375em}.svg-inline--fa.fa-w-16{width:1em}.svg-inline--fa.fa-w-17{width:1.0625em}.svg-inline--fa.fa-w-18{width:1.125em}.svg-inline--fa.fa-w-19{width:1.1875em}.svg-inline--fa.fa-w-20{width:1.25em}.svg-inline--fa.fa-pull-left{margin-right:.3em;width:auto}.svg-inline--fa.fa-pull-right{margin-left:.3em;width:auto}.svg-inline--fa.fa-border{height:1.5em}.svg-inline--fa.fa-li{width:2em}.svg-inline--fa.fa-fw{width:1.25em}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{transform-origin:center center}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers-text{left:50%;top:50%;transform:translate(-50%,-50%);transform-origin:center center}.fa-layers-counter{background-color:#ff253a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:0;text-overflow:ellipsis;top:0;transform:scale(.25);transform-origin:top right}.fa-layers-bottom-right{bottom:0;right:0;top:auto;transform:scale(.25);transform-origin:bottom right}.fa-layers-bottom-left{bottom:0;left:0;right:auto;top:auto;transform:scale(.25);transform-origin:bottom left}.fa-layers-top-right{right:0;top:0;transform:scale(.25);transform-origin:top right}.fa-layers-top-left{left:0;right:auto;top:0;transform:scale(.25);transform-origin:top left}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{display:inline-block;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:#fff}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto} -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniorder/kedis/13dc97cb0648649b6a53eb25c98251db0233c932/src/assets/logo.png -------------------------------------------------------------------------------- /src/assets/paypal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniorder/kedis/13dc97cb0648649b6a53eb25c98251db0233c932/src/assets/paypal.png -------------------------------------------------------------------------------- /src/assets/redis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniorder/kedis/13dc97cb0648649b6a53eb25c98251db0233c932/src/assets/redis.png -------------------------------------------------------------------------------- /src/assets/sass4.3/_alert.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .alert { 6 | position: relative; 7 | padding: $alert-padding-y $alert-padding-x; 8 | margin-bottom: $alert-margin-bottom; 9 | border: $alert-border-width solid transparent; 10 | @include border-radius($alert-border-radius); 11 | } 12 | 13 | // Headings for larger alerts 14 | .alert-heading { 15 | // Specified to prevent conflicts of changing $headings-color 16 | color: inherit; 17 | } 18 | 19 | // Provide class for links that match alerts 20 | .alert-link { 21 | font-weight: $alert-link-font-weight; 22 | } 23 | 24 | 25 | // Dismissible alerts 26 | // 27 | // Expand the right padding and account for the close button's positioning. 28 | 29 | .alert-dismissible { 30 | padding-right: $close-font-size + $alert-padding-x * 2; 31 | 32 | // Adjust close link position 33 | .close { 34 | position: absolute; 35 | top: 0; 36 | right: 0; 37 | padding: $alert-padding-y $alert-padding-x; 38 | color: inherit; 39 | } 40 | } 41 | 42 | 43 | // Alternate styles 44 | // 45 | // Generate contextual modifier classes for colorizing the alert. 46 | 47 | @each $color, $value in $theme-colors { 48 | .alert-#{$color} { 49 | @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level)); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/assets/sass4.3/_badge.scss: -------------------------------------------------------------------------------- 1 | // Base class 2 | // 3 | // Requires one of the contextual, color modifier classes for `color` and 4 | // `background-color`. 5 | 6 | .badge { 7 | display: inline-block; 8 | padding: $badge-padding-y $badge-padding-x; 9 | @include font-size($badge-font-size); 10 | font-weight: $badge-font-weight; 11 | line-height: 1; 12 | text-align: center; 13 | white-space: nowrap; 14 | vertical-align: baseline; 15 | @include border-radius($badge-border-radius); 16 | @include transition($badge-transition); 17 | 18 | @at-root a#{&} { 19 | @include hover-focus { 20 | text-decoration: none; 21 | } 22 | } 23 | 24 | // Empty badges collapse automatically 25 | &:empty { 26 | display: none; 27 | } 28 | } 29 | 30 | // Quick fix for badges in buttons 31 | .btn .badge { 32 | position: relative; 33 | top: -1px; 34 | } 35 | 36 | // Pill badges 37 | // 38 | // Make them extra rounded with a modifier to replace v3's badges. 39 | 40 | .badge-pill { 41 | padding-right: $badge-pill-padding-x; 42 | padding-left: $badge-pill-padding-x; 43 | @include border-radius($badge-pill-border-radius); 44 | } 45 | 46 | // Colors 47 | // 48 | // Contextual variations (linked badges get darker on :hover). 49 | 50 | @each $color, $value in $theme-colors { 51 | .badge-#{$color} { 52 | @include badge-variant($value); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/assets/sass4.3/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | display: flex; 3 | flex-wrap: wrap; 4 | padding: $breadcrumb-padding-y $breadcrumb-padding-x; 5 | margin-bottom: $breadcrumb-margin-bottom; 6 | list-style: none; 7 | background-color: $breadcrumb-bg; 8 | @include border-radius($breadcrumb-border-radius); 9 | } 10 | 11 | .breadcrumb-item { 12 | // The separator between breadcrumbs (by default, a forward-slash: "/") 13 | + .breadcrumb-item { 14 | padding-left: $breadcrumb-item-padding; 15 | 16 | &::before { 17 | display: inline-block; // Suppress underlining of the separator in modern browsers 18 | padding-right: $breadcrumb-item-padding; 19 | color: $breadcrumb-divider-color; 20 | content: $breadcrumb-divider; 21 | } 22 | } 23 | 24 | // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built 25 | // without `