├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── composer.json ├── package.json ├── publishable ├── assets │ ├── css │ │ ├── pwa-admin.css │ │ └── pwa.css │ ├── images │ │ ├── 1-star-icon.svg │ │ ├── 144x144.png │ │ ├── 196x196.png │ │ ├── 2-star-icon.svg │ │ ├── 3-star-icon.svg │ │ ├── 4-star-icon.svg │ │ ├── 48x48.png │ │ ├── 5-star-icon.svg │ │ ├── 96x96.png │ │ ├── Icon-PWA-Active.svg │ │ ├── Icon-PWA.svg │ │ ├── Icon-bell.svg │ │ ├── accordian-down-icon.svg │ │ ├── accordian-up-icon.svg │ │ ├── add-new-white-icon.svg │ │ ├── arrow-bottom-white-icon.svg │ │ ├── arrow-right-icon.svg │ │ ├── arrow_left_icon.png │ │ ├── avatar.svg │ │ ├── back-icon.svg │ │ ├── back-white-icon.svg │ │ ├── bar-icon.svg │ │ ├── blur-bg.png │ │ ├── camera.svg │ │ ├── cart-icon.svg │ │ ├── category-image.png │ │ ├── compare_arrows.png │ │ ├── controls.svg │ │ ├── empty-addresses.svg │ │ ├── empty-cart-icon.svg │ │ ├── empty-cart.svg │ │ ├── empty-category.png │ │ ├── empty-orders.svg │ │ ├── empty-reviews.svg │ │ ├── empty-search.svg │ │ ├── empty-wishlist.svg │ │ ├── filled-wishlist-icon.svg │ │ ├── home-icon.svg │ │ ├── minus-icon.svg │ │ ├── notification-icon.svg │ │ ├── offline.svg │ │ ├── order-success.svg │ │ ├── plus-icon.svg │ │ ├── search-icon.svg │ │ ├── share-icon.svg │ │ ├── sharp-arrow-left-icon.svg │ │ ├── sharp-arrow-line-icon.svg │ │ ├── sharp-arrow-right-icon.svg │ │ ├── sharp-cross-icon.svg │ │ ├── sharp-done-green.svg │ │ ├── sharp-done-white.svg │ │ ├── sharp-edit-icon.svg │ │ ├── sharp-filter-icon.svg │ │ ├── sharp-grid-icon.svg │ │ ├── sharp-invoice-icon.svg │ │ ├── sharp-list-icon.svg │ │ ├── sharp-plus-icon.svg │ │ ├── sharp-post-review-icon.svg │ │ ├── sharp-remove-icon.svg │ │ ├── sharp-repeat-icon.svg │ │ ├── sharp-save-icon.svg │ │ ├── sharp-sort-icon.svg │ │ ├── sharp-trash-icon.svg │ │ ├── star-active-icon.svg │ │ ├── star-icon.svg │ │ ├── star-white-icon.png │ │ ├── star-white-icon.svg │ │ ├── update-icon.svg │ │ ├── white-post-review-icon.svg │ │ └── wishlist-icon.svg │ ├── js │ │ ├── app.js │ │ └── app.js.LICENSE.txt │ └── mix-manifest.json └── pwa │ ├── dist │ └── service-worker.dev.js │ ├── firebase-messaging-sw.js │ ├── manifest.json │ └── service-worker.js ├── src ├── Config │ ├── acl.php │ ├── admin-menu.php │ └── system.php ├── Contracts │ ├── PWALayout.php │ └── PushNotification.php ├── DataGrids │ └── PushNotificationDataGrid.php ├── Database │ └── Migrations │ │ ├── 2019_07_02_121434_create_push_notifications_table.php │ │ ├── 2020_11_05_114057_add_category_product_pwa_in_categories.php │ │ └── 2020_11_10_090451_create_pwa_layout_table.php ├── Helpers │ ├── AdminHelper.php │ ├── Price.php │ └── PwaConfigurableOption.php ├── Http │ ├── Controllers │ │ ├── Admin │ │ │ ├── LayoutController.php │ │ │ └── PushNotificationController.php │ │ ├── Controller.php │ │ ├── Shop │ │ │ ├── CheckoutController.php │ │ │ ├── ComparisonController.php │ │ │ ├── InvoiceController.php │ │ │ ├── LayoutController.php │ │ │ ├── ProductController.php │ │ │ ├── ReviewController.php │ │ │ ├── SmartButtonController.php │ │ │ └── ThemeController.php │ │ ├── SinglePageController.php │ │ └── StandardController.php │ └── Resources │ │ ├── Catalog │ │ └── Category.php │ │ └── Core │ │ ├── Channel.php │ │ ├── Currency.php │ │ └── Locale.php ├── Listeners │ ├── CoreConfig.php │ └── PWAListeners.php ├── Models │ ├── PWALayout.php │ ├── PWALayoutProxy.php │ ├── PushNotification.php │ └── PushNotificationProxy.php ├── Payment │ └── Standard.php ├── Providers │ ├── EventServiceProvider.php │ ├── ModuleServiceProvider.php │ └── PWAServiceProvider.php ├── Repositories │ ├── PWALayoutRepository.php │ └── PushNotificationRepository.php ├── Resources │ ├── assets │ │ ├── firebase │ │ │ ├── firebase-messaging-sw.js │ │ │ └── service-worker.js │ │ ├── images │ │ │ ├── 1-star-icon.svg │ │ │ ├── 144x144.png │ │ │ ├── 196x196.png │ │ │ ├── 2-star-icon.svg │ │ │ ├── 3-star-icon.svg │ │ │ ├── 4-star-icon.svg │ │ │ ├── 48x48.png │ │ │ ├── 5-star-icon.svg │ │ │ ├── 96x96.png │ │ │ ├── Icon-PWA-Active.svg │ │ │ ├── Icon-PWA.svg │ │ │ ├── Icon-bell.svg │ │ │ ├── accordian-down-icon.svg │ │ │ ├── accordian-up-icon.svg │ │ │ ├── add-new-white-icon.svg │ │ │ ├── arrow-bottom-white-icon.svg │ │ │ ├── arrow-right-icon.svg │ │ │ ├── avatar.svg │ │ │ ├── back-icon.svg │ │ │ ├── back-white-icon.svg │ │ │ ├── bar-icon.svg │ │ │ ├── blur-bg.png │ │ │ ├── camera.svg │ │ │ ├── cart-icon.svg │ │ │ ├── category-image.png │ │ │ ├── compare_arrows.png │ │ │ ├── controls.svg │ │ │ ├── empty-addresses.svg │ │ │ ├── empty-cart-icon.svg │ │ │ ├── empty-cart.svg │ │ │ ├── empty-category.png │ │ │ ├── empty-orders.svg │ │ │ ├── empty-reviews.svg │ │ │ ├── empty-search.svg │ │ │ ├── empty-wishlist.svg │ │ │ ├── filled-wishlist-icon.svg │ │ │ ├── minus-icon.svg │ │ │ ├── notification-icon.svg │ │ │ ├── offline.svg │ │ │ ├── order-success.svg │ │ │ ├── plus-icon.svg │ │ │ ├── search-icon.svg │ │ │ ├── share-icon.svg │ │ │ ├── sharp-arrow-left-icon.svg │ │ │ ├── sharp-arrow-line-icon.svg │ │ │ ├── sharp-arrow-right-icon.svg │ │ │ ├── sharp-cross-icon.svg │ │ │ ├── sharp-done-green.svg │ │ │ ├── sharp-done-white.svg │ │ │ ├── sharp-edit-icon.svg │ │ │ ├── sharp-filter-icon.svg │ │ │ ├── sharp-grid-icon.svg │ │ │ ├── sharp-invoice-icon.svg │ │ │ ├── sharp-list-icon.svg │ │ │ ├── sharp-plus-icon.svg │ │ │ ├── sharp-post-review-icon.svg │ │ │ ├── sharp-remove-icon.svg │ │ │ ├── sharp-repeat-icon.svg │ │ │ ├── sharp-save-icon.svg │ │ │ ├── sharp-sort-icon.svg │ │ │ ├── sharp-trash-icon.svg │ │ │ ├── star-active-icon.svg │ │ │ ├── star-icon.svg │ │ │ ├── star-white-icon.png │ │ │ ├── star-white-icon.svg │ │ │ ├── update-icon.svg │ │ │ ├── white-post-review-icon.svg │ │ │ └── wishlist-icon.svg │ │ ├── js │ │ │ ├── app.js │ │ │ ├── bootstrap.js │ │ │ ├── components │ │ │ │ ├── app.vue │ │ │ │ ├── categories │ │ │ │ │ ├── card.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ ├── layered-navigation.vue │ │ │ │ │ └── no-product-found.vue │ │ │ │ ├── checkout │ │ │ │ │ ├── cart │ │ │ │ │ │ ├── empty-cart.vue │ │ │ │ │ │ ├── empty-order-list.vue │ │ │ │ │ │ ├── index.vue │ │ │ │ │ │ └── item.vue │ │ │ │ │ └── onepage │ │ │ │ │ │ ├── address.vue │ │ │ │ │ │ ├── country-state.vue │ │ │ │ │ │ ├── index.vue │ │ │ │ │ │ └── success.vue │ │ │ │ ├── common │ │ │ │ │ ├── ajax-loader.vue │ │ │ │ │ └── drawer-sidebar.vue │ │ │ │ ├── compare │ │ │ │ │ ├── card.vue │ │ │ │ │ ├── empty-compare.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── customers │ │ │ │ │ ├── account │ │ │ │ │ │ ├── addresses │ │ │ │ │ │ │ ├── card.vue │ │ │ │ │ │ │ ├── country-state.vue │ │ │ │ │ │ │ ├── create.vue │ │ │ │ │ │ │ ├── edit.vue │ │ │ │ │ │ │ ├── empty-address-list.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ ├── dashboard │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ ├── index.vue │ │ │ │ │ │ ├── profile │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ │ ├── reviews │ │ │ │ │ │ │ ├── card.vue │ │ │ │ │ │ │ ├── empty-review-list.vue │ │ │ │ │ │ │ ├── index.vue │ │ │ │ │ │ │ └── view.vue │ │ │ │ │ │ ├── sales │ │ │ │ │ │ │ ├── header.vue │ │ │ │ │ │ │ ├── invoices │ │ │ │ │ │ │ │ ├── card.vue │ │ │ │ │ │ │ │ ├── index.vue │ │ │ │ │ │ │ │ └── view.vue │ │ │ │ │ │ │ ├── orders │ │ │ │ │ │ │ │ ├── card.vue │ │ │ │ │ │ │ │ ├── downloadable-products.vue │ │ │ │ │ │ │ │ ├── empty-order-list.vue │ │ │ │ │ │ │ │ ├── index.vue │ │ │ │ │ │ │ │ ├── order-filter.vue │ │ │ │ │ │ │ │ └── view.vue │ │ │ │ │ │ │ └── shipments │ │ │ │ │ │ │ │ ├── card.vue │ │ │ │ │ │ │ │ ├── index.vue │ │ │ │ │ │ │ │ └── view.vue │ │ │ │ │ │ └── wishlist │ │ │ │ │ │ │ ├── card.vue │ │ │ │ │ │ │ ├── empty-wishlist.vue │ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── anonymous │ │ │ │ │ │ ├── forgot-password.vue │ │ │ │ │ │ ├── login-register.vue │ │ │ │ │ │ ├── login.vue │ │ │ │ │ │ └── register.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── home-page │ │ │ │ │ ├── advertisements │ │ │ │ │ │ └── advertisement.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── layouts │ │ │ │ │ ├── custom-header.vue │ │ │ │ │ ├── footer-nav.vue │ │ │ │ │ └── header-nav.vue │ │ │ │ ├── offline │ │ │ │ │ └── index.vue │ │ │ │ ├── products │ │ │ │ │ ├── attributes.vue │ │ │ │ │ ├── booking-options.vue │ │ │ │ │ ├── booking │ │ │ │ │ │ ├── appointment.vue │ │ │ │ │ │ ├── date.vue │ │ │ │ │ │ ├── default-view.vue │ │ │ │ │ │ ├── event.vue │ │ │ │ │ │ ├── rental.vue │ │ │ │ │ │ ├── slots.vue │ │ │ │ │ │ └── table-product.vue │ │ │ │ │ ├── bundle-option-item.vue │ │ │ │ │ ├── bundle-options.vue │ │ │ │ │ ├── card.vue │ │ │ │ │ ├── configurable-options.vue │ │ │ │ │ ├── downloadable-options.vue │ │ │ │ │ ├── gallery-images.vue │ │ │ │ │ ├── grouped-products-options.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ ├── price.vue │ │ │ │ │ ├── review.vue │ │ │ │ │ ├── reviews.vue │ │ │ │ │ ├── social-links.vue │ │ │ │ │ └── stock.vue │ │ │ │ ├── reviews │ │ │ │ │ ├── create.vue │ │ │ │ │ └── index.vue │ │ │ │ ├── search │ │ │ │ │ ├── empty-search.vue │ │ │ │ │ ├── image-search-result.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── result.vue │ │ │ │ └── shared │ │ │ │ │ ├── accordian.vue │ │ │ │ │ ├── bottom-sheet.vue │ │ │ │ │ ├── donut-chart.vue │ │ │ │ │ ├── pagination.vue │ │ │ │ │ ├── tab.vue │ │ │ │ │ └── tabs.vue │ │ │ ├── directives │ │ │ │ └── sticky.vue │ │ │ ├── dist │ │ │ │ └── app.dev.js │ │ │ ├── lang │ │ │ │ ├── ar.json │ │ │ │ ├── de.json │ │ │ │ ├── en.json │ │ │ │ ├── fa.json │ │ │ │ ├── it.json │ │ │ │ ├── ja.json │ │ │ │ ├── nl.json │ │ │ │ ├── pl.json │ │ │ │ ├── pt_BR.json │ │ │ │ └── tr.json │ │ │ ├── plugins │ │ │ │ ├── dist │ │ │ │ │ └── push-notification.dev.js │ │ │ │ ├── i18n.js │ │ │ │ └── push-notification.js │ │ │ ├── router.vue │ │ │ └── store │ │ │ │ ├── actions.js │ │ │ │ ├── dist │ │ │ │ ├── actions.dev.js │ │ │ │ ├── getters.dev.js │ │ │ │ ├── index.dev.js │ │ │ │ ├── mutations.dev.js │ │ │ │ └── state.dev.js │ │ │ │ ├── index.js │ │ │ │ ├── mutations.js │ │ │ │ └── state.js │ │ └── sass │ │ │ ├── _variables.scss │ │ │ ├── admin-icon.scss │ │ │ ├── admin.scss │ │ │ ├── app.scss │ │ │ ├── dist │ │ │ ├── app.css │ │ │ ├── icons.css │ │ │ └── rtl.css │ │ │ ├── icons.scss │ │ │ └── rtl.scss │ ├── lang │ │ ├── ar │ │ │ └── app.php │ │ ├── de │ │ │ └── app.php │ │ ├── en │ │ │ └── app.php │ │ ├── es │ │ │ └── app.php │ │ ├── fa │ │ │ └── app.php │ │ ├── fr │ │ │ └── app.php │ │ ├── it │ │ │ └── app.php │ │ ├── ja │ │ │ └── app.php │ │ ├── nl │ │ │ └── app.php │ │ ├── pl │ │ │ └── app.php │ │ ├── pt_BR │ │ │ └── app.php │ │ └── tr │ │ │ └── app.php │ └── views │ │ ├── admin │ │ ├── catelog │ │ │ └── categories │ │ │ │ └── pwa.blade.php │ │ ├── layouts │ │ │ └── style.blade.php │ │ ├── push-notification │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ ├── index.blade.php │ │ │ └── test.blade.php │ │ └── pwa-layouts │ │ │ └── index.blade.php │ │ ├── master.blade.php │ │ └── paypal │ │ └── standard-redirect.blade.php └── Routes │ ├── admin-routes.php │ ├── front-routes.php │ └── web.php └── webpack.mix.js /.gitignore: -------------------------------------------------------------------------------- 1 | package-lock.json 2 | node_modules -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Webkul 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bagisto/pwa", 3 | "description": "Progressive Web Application transforms your website to a mobile application", 4 | "license": "MIT", 5 | "authors": [ 6 | { 7 | "name": "viveksharma-webkul", 8 | "email": "viveksh047@webkul.com" 9 | }, 10 | { 11 | "name": "Shubham Mehrotra", 12 | "email": "shubhammehrotra.symfony@webkul.com" 13 | } 14 | ], 15 | "require": { 16 | "whichbrowser/parser": "^2.1", 17 | "bagisto/rest-api": "^2.1" 18 | }, 19 | "autoload": { 20 | "psr-4": { 21 | "Webkul\\PWA\\": "src/" 22 | } 23 | }, 24 | "extra": { 25 | "laravel": { 26 | "providers": [ 27 | "Webkul\\PWA\\Providers\\PWAServiceProvider" 28 | ], 29 | "aliases": {} 30 | } 31 | }, 32 | "minimum-stability": "dev" 33 | } 34 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "dev": "npm run development", 5 | "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 6 | "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 7 | "watch-poll": "cross-env npm run watch -- --watch-poll --progress", 8 | "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", 9 | "prod": "npm run production", 10 | "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" 11 | }, 12 | "devDependencies": { 13 | "axios": "^0.21.4", 14 | "cross-env": "^6.0.3", 15 | "jquery": "^3.4.1", 16 | "laravel-mix": "^5.0.0", 17 | "laravel-mix-merge-manifest": "^0.1.2", 18 | "sass": "^1.68.0", 19 | "sass-loader": "^8.0.2", 20 | "vue": "^2.6.14", 21 | "vue-template-compiler": "^2.7.14" 22 | }, 23 | "dependencies": { 24 | "ajv": "^8.8.2", 25 | "firebase": "^9.5.0", 26 | "flatpickr": "^4.6.3", 27 | "imagemin": "^8.0.1", 28 | "vee-validate": "2.0.0-rc.26", 29 | "vue-carousel": "^0.18.0", 30 | "vue-currency-filter": "^5.2.0", 31 | "vue-i18n": "^8.26.7", 32 | "vue-moment": "^4.1.0", 33 | "vue-router": "^3.5.3", 34 | "vue-slider-component": "^3.2.15", 35 | "vue-toasted": "^1.1.28", 36 | "vuex": "^3.6.2" 37 | }, 38 | "name": "pwa", 39 | "version": "1.0.0", 40 | "main": "webpack.mix.js", 41 | "author": "", 42 | "license": "ISC", 43 | "description": "" 44 | } 45 | -------------------------------------------------------------------------------- /publishable/assets/css/pwa-admin.css: -------------------------------------------------------------------------------- 1 | .pwa-icon { 2 | width: 24px; 3 | height: 25px; 4 | display: inline-block; 5 | background-size: cover; 6 | background-image: url("../images/Icon-PWA.svg"); 7 | } 8 | 9 | .bell-icon { 10 | background-image: url("../images/Icon-bell.svg"); 11 | height: 24px; 12 | width: 24px; 13 | } 14 | 15 | .router-link-active .pwa-icon, 16 | .active .pwa-icon { 17 | background-image: url("../images/Icon-PWA-Active.svg"); 18 | } 19 | .router-link-active.pwa-icon, 20 | .active.pwa-icon { 21 | background-image: url("../images/Icon-PWA-Active.svg"); 22 | } -------------------------------------------------------------------------------- /publishable/assets/images/1-star-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /publishable/assets/images/144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/publishable/assets/images/144x144.png -------------------------------------------------------------------------------- /publishable/assets/images/196x196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/publishable/assets/images/196x196.png -------------------------------------------------------------------------------- /publishable/assets/images/2-star-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 2 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /publishable/assets/images/3-star-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 3 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /publishable/assets/images/4-star-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 4 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /publishable/assets/images/48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/publishable/assets/images/48x48.png -------------------------------------------------------------------------------- /publishable/assets/images/5-star-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /publishable/assets/images/96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/publishable/assets/images/96x96.png -------------------------------------------------------------------------------- /publishable/assets/images/Icon-PWA-Active.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon-PWA-active 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /publishable/assets/images/Icon-PWA.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon-PWA 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /publishable/assets/images/Icon-bell.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon-bell 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /publishable/assets/images/accordian-down-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-arrow-bottom 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /publishable/assets/images/accordian-up-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-arrow-top 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /publishable/assets/images/add-new-white-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon-add-new-light 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/arrow-bottom-white-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-arrow-bottom-light 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /publishable/assets/images/arrow-right-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-arrow-right 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /publishable/assets/images/arrow_left_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/publishable/assets/images/arrow_left_icon.png -------------------------------------------------------------------------------- /publishable/assets/images/avatar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | generic-image 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /publishable/assets/images/back-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon / Back / Filled 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/back-white-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon / Back / Filled 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/bar-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon / Menu / Filled 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /publishable/assets/images/blur-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/publishable/assets/images/blur-bg.png -------------------------------------------------------------------------------- /publishable/assets/images/camera.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /publishable/assets/images/cart-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon/action/shopping_cart_24px_sharp 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /publishable/assets/images/category-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/publishable/assets/images/category-image.png -------------------------------------------------------------------------------- /publishable/assets/images/compare_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/publishable/assets/images/compare_arrows.png -------------------------------------------------------------------------------- /publishable/assets/images/controls.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 12 | 13 | 14 | 15 | 17 | 18 | 20 | 21 | 23 | 25 | 26 | 28 | 29 | -------------------------------------------------------------------------------- /publishable/assets/images/empty-cart-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon/sharp/cart-remove 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/empty-category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/publishable/assets/images/empty-category.png -------------------------------------------------------------------------------- /publishable/assets/images/empty-reviews.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | illustration-review 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /publishable/assets/images/empty-wishlist.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | illustration-heart 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /publishable/assets/images/filled-wishlist-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon / Favorite / Filled 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /publishable/assets/images/home-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /publishable/assets/images/minus-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon-qty-down 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /publishable/assets/images/notification-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon/social/notifications_24px_sharp 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /publishable/assets/images/order-success.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | illustration-check 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /publishable/assets/images/plus-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon-qty-up 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /publishable/assets/images/search-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | search 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/share-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon / Share / Filled 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-arrow-left-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-arrow-line-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-arrow-line 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-arrow-right-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-arrow-right 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-cross-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-cross 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-done-green.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-done-24px 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-done-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-done-24px-bright 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-edit-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-edit 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-filter-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-filter 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-grid-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-view-grid 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-invoice-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-invoice 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-list-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-view-list 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-plus-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon-add-new 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-post-review-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-post-review 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-remove-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-remove 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-repeat-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-repeat 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-save-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-save 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-sort-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-sort 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /publishable/assets/images/sharp-trash-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon-Trash 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/star-active-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon-rating-star-on 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /publishable/assets/images/star-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon-rating-star 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /publishable/assets/images/star-white-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/publishable/assets/images/star-white-icon.png -------------------------------------------------------------------------------- /publishable/assets/images/star-white-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon-rating-star 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /publishable/assets/images/update-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon/update 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/white-post-review-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-post-revie-bright 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /publishable/assets/images/wishlist-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-favorite_border-24px 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /publishable/assets/mix-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "/js/app.js": "/js/app.js", 3 | "/css/pwa-admin.css": "/css/pwa-admin.css", 4 | "/css/pwa.css": "/css/pwa.css" 5 | } 6 | -------------------------------------------------------------------------------- /publishable/pwa/firebase-messaging-sw.js: -------------------------------------------------------------------------------- 1 | importScripts("https://www.gstatic.com/firebasejs/8.3.2/firebase-app.js"); 2 | importScripts("https://www.gstatic.com/firebasejs/8.3.2/firebase-messaging.js"); 3 | 4 | firebase.initializeApp({ 5 | messagingSenderId: 6 | "{{core()->getConfigData('pwa.settings.push-notification.messaging-id')}}", 7 | }); 8 | 9 | const messaging = firebase.messaging(); 10 | 11 | messaging.setBackgroundMessageHandler(function (payload) { 12 | // Customize notification here 13 | var notificationTitle = payload.data.title; 14 | var notificationOptions = { 15 | body: payload.data.body, 16 | icon: payload.data.icon, 17 | data: { 18 | click_action: payload.data.click_action, 19 | }, 20 | }; 21 | 22 | return self.registration.showNotification( 23 | notificationTitle, 24 | notificationOptions, 25 | ); 26 | }); 27 | // [END background_handler] 28 | 29 | self.addEventListener("notificationclick", function (event) { 30 | var action_click = event.notification.data.click_action; 31 | event.notification.close(); 32 | 33 | event.waitUntil(clients.openWindow(action_click)); 34 | }); 35 | -------------------------------------------------------------------------------- /publishable/pwa/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pwa app", 3 | "short_name": "pwa short", 4 | "start_url": "http://192.168.15.215/bagisto/v2.1.2/core-2/public/", 5 | "display": "standalone", 6 | "orientation": "any", 7 | "theme_color": "#d1d1d1", 8 | "background_color": "#1d1d1d", 9 | "icons": [ 10 | { 11 | "src": "http://192.168.15.215/bagisto/v2.1.2/core-2/public/storage/configuration/9f4sJCxFIdjiCApx1TgjxiGV9RVNorrSnBICB8Hx.png", 12 | "sizes": "48x48", 13 | "type": "image/png" 14 | }, 15 | { 16 | "src": "http://192.168.15.215/bagisto/v2.1.2/core-2/public/storage/configuration/1ORWNrj4VufMrS167cFMoXhA8lHKSzHjdYzLz7wm.png", 17 | "sizes": "96x96", 18 | "type": "image/png" 19 | }, 20 | { 21 | "src": "http://192.168.15.215/bagisto/v2.1.2/core-2/public/storage/configuration/bGfD6flhXPf5YLYx6n3pWXV5tSmMOOQC4qLvyJot.png", 22 | "sizes": "144x144", 23 | "type": "image/png" 24 | }, 25 | { 26 | "src": "http://192.168.15.215/bagisto/v2.1.2/core-2/public/storage/configuration/TJPJBe0KomCoaxyZ7VFr42gbe080TGDS6h3NpPn6.png", 27 | "sizes": "196x196", 28 | "type": "image/png" 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /src/Config/acl.php: -------------------------------------------------------------------------------- 1 | 'ViewPushNotification', 6 | 'name' => 'pwa::app.admin.system.pushnotification', 7 | 'route' => 'admin.pwa.pushnotification.index', 8 | 'sort' => 3, 9 | ], 10 | ]; 11 | -------------------------------------------------------------------------------- /src/Config/admin-menu.php: -------------------------------------------------------------------------------- 1 | 'PWA', 6 | 'name' => 'pwa::app.admin.system.pwa_full_name', 7 | 'route' => 'admin.pwa.pushnotification.index', 8 | 'sort' => 8, 9 | 'icon' => 'pwa-icon', 10 | ], [ 11 | 'key' => 'PWA.index', 12 | 'route' => 'admin.pwa.pushnotification.index', 13 | 'name' => 'pwa::app.admin.layouts.push-notification', 14 | 'sort' => 1, 15 | ], [ 16 | 'key' => 'PWA.layout', 17 | 'route' => 'admin.pwa.layout', 18 | 'name' => 'pwa::app.admin.layouts.title', 19 | 'sort' => 1, 20 | ], 21 | ]; 22 | -------------------------------------------------------------------------------- /src/Contracts/PWALayout.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('title')->nullable(); 19 | $table->string('description')->nullable(); 20 | $table->string('targeturl')->nullable(); 21 | $table->string('imageurl')->nullable(); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | * 29 | * @return void 30 | */ 31 | public function down() 32 | { 33 | Schema::dropIfExists('push_notifications'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Database/Migrations/2020_11_05_114057_add_category_product_pwa_in_categories.php: -------------------------------------------------------------------------------- 1 | boolean('category_product_in_pwa')->default(0); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('categories', function (Blueprint $table) { 29 | $table->dropColumn('category_product_in_pwa'); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Database/Migrations/2020_11_10_090451_create_pwa_layout_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->text('home_page_content'); 19 | $table->timestamps(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | * 26 | * @return void 27 | */ 28 | public function down() 29 | { 30 | Schema::dropIfExists('pwa_layout'); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Helpers/AdminHelper.php: -------------------------------------------------------------------------------- 1 | categoryRepository = $categoryRepository; 25 | } 26 | 27 | /** 28 | * @param \Webkul\Category\Contracts\Category $category 29 | * @return \Webkul\Category\Contracts\Category 30 | */ 31 | public function storePwaStatusInCategory($category) 32 | { 33 | if (core()->getConfigData('pwa.settings.general.status')) { 34 | $data = request()->all(); 35 | 36 | if (! $category instanceof \Webkul\Category\Contracts\Category) { 37 | $category = $this->categoryRepository->findOrFail($category); 38 | } 39 | 40 | $category->category_product_in_pwa = $data['category_product_in_pwa'] ?? 0; 41 | 42 | $category->save(); 43 | } 44 | 45 | return $category; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/Http/Controllers/Admin/LayoutController.php: -------------------------------------------------------------------------------- 1 | $this->pwaLayoutRepository->first(), 31 | ]); 32 | } 33 | 34 | /** 35 | * Store a newly created resource or update the existing one in storage. 36 | * 37 | * @return \Illuminate\Http\Response 38 | */ 39 | public function store() 40 | { 41 | // $this->validate(request(), [ 42 | // 'home_page_content' => 'required', 43 | // ]); 44 | 45 | $existing = $this->pwaLayoutRepository->first(); 46 | 47 | if ($existing) { 48 | $this->pwaLayoutRepository->update([ 49 | 'home_page_content' => trim(request()->get('home_page_content')), 50 | ], $existing->id); 51 | } else { 52 | $this->pwaLayoutRepository->create([ 53 | 'home_page_content' => trim(request()->get('home_page_content')), 54 | ]); 55 | } 56 | 57 | session()->flash('success', trans('pwa::app.admin.layouts.update-success')); 58 | 59 | return redirect()->route('admin.pwa.layout'); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | invoiceRepository->findOrFail($id); 28 | 29 | $pdf = PDF::loadHTML($this->adjustArabicAndPersianContent(view('shop::customers.account.orders.pdf', compact('invoice'))->render())) 30 | ->setPaper('a4'); 31 | 32 | return $pdf->output(); 33 | } 34 | 35 | /** 36 | * Adjust arabic and persian content. 37 | * 38 | * @return string 39 | */ 40 | protected function adjustArabicAndPersianContent(string $html) 41 | { 42 | $arabic = new \ArPHP\I18N\Arabic(); 43 | 44 | $p = $arabic->arIdentify($html); 45 | 46 | for ($i = count($p) - 1; $i >= 0; $i -= 2) { 47 | $utf8ar = $arabic->utf8Glyphs(substr($html, $p[$i - 1], $p[$i] - $p[$i - 1])); 48 | $html = substr_replace($html, $utf8ar, $p[$i - 1], $p[$i] - $p[$i - 1]); 49 | } 50 | 51 | return $html; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/Http/Controllers/Shop/LayoutController.php: -------------------------------------------------------------------------------- 1 | json([ 29 | 'data' => $this->pwaLayoutRepository->first(), 30 | ]); 31 | } 32 | 33 | /** 34 | * Store a newly created resource or update the existing one in storage. 35 | * 36 | * @return \Illuminate\Http\Response 37 | */ 38 | public function store(Request $request) 39 | { 40 | // $this->validate(request(), [ 41 | // 'home_page_content' => 'required', 42 | // ]); 43 | 44 | $existing = $this->pwaLayoutRepository->first(); 45 | 46 | if ($existing) { 47 | $this->pwaLayoutRepository->update([ 48 | 'home_page_content' => trim(request()->get('home_page_content')), 49 | ], $existing->id); 50 | } else { 51 | $this->pwaLayoutRepository->create([ 52 | 'home_page_content' => trim(request()->get('home_page_content')), 53 | ]); 54 | } 55 | 56 | // flash message 57 | session()->flash('success', trans('pwa::app.admin.layouts.update-success')); 58 | 59 | return redirect()->route('admin.pwa.layout'); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/Http/Controllers/Shop/ThemeController.php: -------------------------------------------------------------------------------- 1 | themeCustomizationRepository->orderBy('sort_order')->findOneWhere([ 27 | 'status' => 1, 28 | 'channel_id' => core()->getCurrentChannel()->id, 29 | 'type' => 'image_carousel', 30 | ]); 31 | 32 | return $sliders->options; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/Http/Controllers/SinglePageController.php: -------------------------------------------------------------------------------- 1 | getConfigData('pwa.settings.general.status')) { 17 | session()->flash('warning', trans('pwa::app.shop.home.enable-pwa-status')); 18 | 19 | return redirect()->route('shop.home.index'); 20 | } 21 | 22 | $parsedUrl = parse_url(config('app.url')); 23 | 24 | $urlPath = isset($parsedUrl['path']) ? $parsedUrl['path'] : ''; 25 | 26 | $result = new Parser(request()->header('User-Agent')); 27 | $device = $result->device; 28 | 29 | return view('pwa::master', compact('urlPath', 'device')); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Http/Controllers/StandardController.php: -------------------------------------------------------------------------------- 1 | flash('error', 'Paypal payment has been canceled.'); 29 | 30 | return redirect('/mobile/checkout/cart'); 31 | } 32 | 33 | /** 34 | * Success payment 35 | * 36 | * @return \Illuminate\Http\Response 37 | */ 38 | public function success() 39 | { 40 | $order = $this->orderRepository->create(Cart::prepareDataForOrder()); 41 | 42 | Cart::deActivateCart(); 43 | 44 | session()->flash('order', $order); 45 | 46 | $url = '/mobile/checkout/success'.'/'.$order->id; 47 | 48 | return redirect($url); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/Http/Resources/Catalog/Category.php: -------------------------------------------------------------------------------- 1 | $this->id, 19 | 'code' => $this->code, 20 | 'name' => $this->name, 21 | 'slug' => $this->slug, 22 | 'status' => $this->status, 23 | 'image_url' => $this->image_url, 24 | 'meta_title' => $this->meta_title, 25 | 'description' => $this->description, 26 | 'display_mode' => $this->display_mode, 27 | 'meta_keywords' => $this->meta_keywords, 28 | 'meta_description' => $this->meta_description, 29 | 'show_products' => $this->category_product_in_pwa, 30 | 'category_icon_path' => \Storage::url($this->category_icon_path), 31 | 'additional' => is_array($this->resource->additional) 32 | ? $this->resource->additional 33 | : json_decode($this->resource->additional, true), 34 | 'category_banner' => \Storage::url($this->category_banner), 35 | 'created_at' => $this->created_at, 36 | 'updated_at' => $this->updated_at, 37 | ]; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/Http/Resources/Core/Currency.php: -------------------------------------------------------------------------------- 1 | $this->id, 19 | 'code' => $this->code, 20 | 'name' => $this->name, 21 | 'created_at' => $this->created_at, 22 | 'updated_at' => $this->updated_at, 23 | ]; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Http/Resources/Core/Locale.php: -------------------------------------------------------------------------------- 1 | $this->id, 19 | 'code' => $this->code, 20 | 'name' => $this->name, 21 | 'created_at' => $this->created_at, 22 | 'updated_at' => $this->updated_at, 23 | ]; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Listeners/PWAListeners.php: -------------------------------------------------------------------------------- 1 | getConfigData('pwa.settings.general.redirect_to_pwa_if_mobile')) { 18 | $result = new Parser(request()->header('User-Agent')); 19 | if ( 20 | $result->isType('mobile', 'tablet') 21 | && request()->url() == route('shop.home.index') 22 | ) { 23 | return redirect()->to('/mobile')->send(); 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Models/PWALayout.php: -------------------------------------------------------------------------------- 1 | imageurl) { 50 | return; 51 | } 52 | 53 | return Storage::url($this->imageurl); 54 | } 55 | 56 | /** 57 | * Get image url for the category image. 58 | */ 59 | public function getImageUrlUrlAttribute() 60 | { 61 | return $this->imageurl_url(); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/Models/PushNotificationProxy.php: -------------------------------------------------------------------------------- 1 | addTemplate('pwa::admin.layouts.style'); 19 | }); 20 | 21 | Event::listen('bagisto.shop.layout.head', 'Webkul\PWA\Listeners\PWAListeners@redirectToPWA'); 22 | 23 | Event::listen('core.configuration.save.after', 'Webkul\PWA\Listeners\CoreConfig@generateManifestFile'); 24 | 25 | // Event::listen('bagisto.shop.layout.head', function ($viewRenderEventManager) { 26 | // $viewRenderEventManager->addTemplate('pwa::shop.desktop.head.index'); 27 | // }); 28 | 29 | // Add new field in category create and update form. 30 | Event::listen( 31 | [ 32 | 'bagisto.admin.catalog.categories.create.card.accordion.settings.after', 33 | 'bagisto.admin.catalog.categories.edit.card.accordion.settings.after', 34 | ], 35 | function ($viewRenderEventManager) { 36 | $viewRenderEventManager->addTemplate( 37 | 'pwa::admin.catelog.categories.pwa' 38 | ); 39 | } 40 | ); 41 | 42 | // Add new filed in array when save category. 43 | Event::listen([ 44 | 'catalog.category.create.after', 45 | 'catalog.category.update.after', 46 | ], 'Webkul\PWA\Helpers\AdminHelper@storePwaStatusInCategory'); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/Providers/ModuleServiceProvider.php: -------------------------------------------------------------------------------- 1 | loadRoutesFrom(__DIR__ . '/../Routes/web.php'); 17 | 18 | $this->app->register(EventServiceProvider::class); 19 | 20 | $this->app->register(ModuleServiceProvider::class); 21 | 22 | $this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); 23 | 24 | $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'pwa'); 25 | 26 | $this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'pwa'); 27 | 28 | $this->publishes([ 29 | __DIR__ . '/../../publishable/pwa' => public_path(), 30 | __DIR__ . '/../../publishable/assets' => public_path('themes/pwa/default/build/assets'), 31 | ], 'public'); 32 | 33 | $this->mergeConfigFrom( 34 | dirname(__DIR__) . '/Config/admin-menu.php', 35 | 'menu.admin' 36 | ); 37 | } 38 | 39 | /** 40 | * Register services. 41 | * 42 | * @return void 43 | */ 44 | public function register() 45 | { 46 | $this->registerConfig(); 47 | } 48 | 49 | /** 50 | * Register package config. 51 | * 52 | * @return void 53 | */ 54 | protected function registerConfig() 55 | { 56 | $this->mergeConfigFrom( 57 | dirname(__DIR__) . '/Config/system.php', 58 | 'core' 59 | ); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/Repositories/PWALayoutRepository.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Resources/assets/images/144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/src/Resources/assets/images/144x144.png -------------------------------------------------------------------------------- /src/Resources/assets/images/196x196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/src/Resources/assets/images/196x196.png -------------------------------------------------------------------------------- /src/Resources/assets/images/2-star-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 2 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Resources/assets/images/3-star-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 3 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Resources/assets/images/4-star-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 4 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Resources/assets/images/48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/src/Resources/assets/images/48x48.png -------------------------------------------------------------------------------- /src/Resources/assets/images/5-star-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Resources/assets/images/96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/src/Resources/assets/images/96x96.png -------------------------------------------------------------------------------- /src/Resources/assets/images/Icon-PWA-Active.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon-PWA-active 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Resources/assets/images/Icon-PWA.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon-PWA 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Resources/assets/images/Icon-bell.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon-bell 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Resources/assets/images/accordian-down-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-arrow-bottom 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Resources/assets/images/accordian-up-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-arrow-top 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Resources/assets/images/add-new-white-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon-add-new-light 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/arrow-bottom-white-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-arrow-bottom-light 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Resources/assets/images/arrow-right-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-arrow-right 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Resources/assets/images/avatar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | generic-image 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Resources/assets/images/back-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon / Back / Filled 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/back-white-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon / Back / Filled 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/bar-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon / Menu / Filled 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Resources/assets/images/blur-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/src/Resources/assets/images/blur-bg.png -------------------------------------------------------------------------------- /src/Resources/assets/images/camera.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Resources/assets/images/cart-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon/action/shopping_cart_24px_sharp 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Resources/assets/images/category-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/src/Resources/assets/images/category-image.png -------------------------------------------------------------------------------- /src/Resources/assets/images/compare_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/src/Resources/assets/images/compare_arrows.png -------------------------------------------------------------------------------- /src/Resources/assets/images/controls.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 12 | 13 | 14 | 15 | 17 | 18 | 20 | 21 | 23 | 25 | 26 | 28 | 29 | -------------------------------------------------------------------------------- /src/Resources/assets/images/empty-cart-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon/sharp/cart-remove 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/empty-category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/src/Resources/assets/images/empty-category.png -------------------------------------------------------------------------------- /src/Resources/assets/images/empty-reviews.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | illustration-review 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Resources/assets/images/empty-wishlist.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | illustration-heart 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/Resources/assets/images/filled-wishlist-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon / Favorite / Filled 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Resources/assets/images/minus-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon-qty-down 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Resources/assets/images/notification-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon/social/notifications_24px_sharp 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Resources/assets/images/order-success.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | illustration-check 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Resources/assets/images/plus-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon-qty-up 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/Resources/assets/images/search-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | search 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/share-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon / Share / Filled 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-arrow-left-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-arrow-line-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-arrow-line 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-arrow-right-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-arrow-right 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-cross-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-cross 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-done-green.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-done-24px 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-done-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-done-24px-bright 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-edit-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-edit 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-filter-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-filter 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-grid-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-view-grid 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-invoice-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-invoice 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-list-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-view-list 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-plus-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon-add-new 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-post-review-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-post-review 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-remove-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-remove 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-repeat-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-repeat 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-save-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-save 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-sort-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-sort 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Resources/assets/images/sharp-trash-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Icon-Trash 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/star-active-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon-rating-star-on 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Resources/assets/images/star-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon-rating-star 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Resources/assets/images/star-white-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bagisto/laravel-pwa/4c5de1399d2cc28f2b4b421404c4b8b11743cb9a/src/Resources/assets/images/star-white-icon.png -------------------------------------------------------------------------------- /src/Resources/assets/images/star-white-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon-rating-star 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Resources/assets/images/update-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon/update 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/white-post-review-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-post-revie-bright 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/images/wishlist-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | sharp-favorite_border-24px 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Resources/assets/js/bootstrap.js: -------------------------------------------------------------------------------- 1 | window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; 2 | 3 | /** 4 | * Next we will register the CSRF Token as a common header with Axios so that 5 | * all outgoing HTTP requests automatically have it attached. This is just 6 | * a simple convenience so we don't have to attach every token manually. 7 | */ 8 | 9 | let token = document.head.querySelector('meta[name="csrf-token"]'); 10 | 11 | if (token) { 12 | window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content; 13 | } else { 14 | console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token'); 15 | } -------------------------------------------------------------------------------- /src/Resources/assets/js/components/categories/no-product-found.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 18 | 19 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/checkout/cart/empty-cart.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 18 | 19 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/checkout/cart/empty-order-list.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 18 | 19 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/checkout/onepage/success.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 34 | 35 | 56 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/compare/empty-compare.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | 18 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/customers/account/addresses/empty-address-list.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 18 | 19 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/customers/account/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 31 | 32 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/customers/account/reviews/empty-review-list.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 20 | 21 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/customers/account/sales/orders/empty-order-list.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 18 | 19 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/customers/account/sales/orders/order-filter.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 35 | 44 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/customers/account/wishlist/empty-wishlist.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 18 | 19 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/customers/index.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/home-page/advertisements/advertisement.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 37 | 38 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/layouts/footer-nav.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 22 | 23 | 49 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/offline/index.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 36 | 37 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/products/booking/date.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/products/booking/default-view.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/products/gallery-images.vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 46 | 47 | 55 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/products/stock.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 21 | 22 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/search/empty-search.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 18 | 19 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/shared/pagination.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 42 | 43 | -------------------------------------------------------------------------------- /src/Resources/assets/js/components/shared/tab.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /src/Resources/assets/js/directives/sticky.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Resources/assets/js/plugins/i18n.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import VueI18n from "vue-i18n"; 3 | import en from "../lang/en.json"; 4 | import ar from "../lang/ar.json"; 5 | import de from "../lang/de.json"; 6 | import fa from "../lang/fa.json"; 7 | import it from "../lang/it.json"; 8 | import ja from "../lang/ja.json"; 9 | import nl from "../lang/nl.json"; 10 | import pl from "../lang/pl.json"; 11 | import tr from "../lang/tr.json"; 12 | import pt_BR from "../lang/pt_BR.json"; 13 | 14 | Vue.use(VueI18n); 15 | 16 | const messages = { 17 | en: en, 18 | ar: ar, 19 | de: de, 20 | fa: fa, 21 | it: it, 22 | ja: ja, 23 | nl: nl, 24 | pl: pl, 25 | tr: tr, 26 | pt_BR: pt_BR, 27 | }; 28 | 29 | export default new VueI18n({ 30 | locale: window.config.currentLocale.code, // set locale 31 | fallbackLocale: "en", // set fallback locale 32 | messages, // set locale messages 33 | }); 34 | -------------------------------------------------------------------------------- /src/Resources/assets/js/store/actions.js: -------------------------------------------------------------------------------- 1 | const getCustomer = ({ commit }) => { 2 | commit("GET_CUSTOMER"); 3 | }; 4 | 5 | const getCart = ({ commit }) => { 6 | commit("GET_CART"); 7 | }; 8 | 9 | export default { 10 | getCustomer, 11 | getCart, 12 | }; 13 | -------------------------------------------------------------------------------- /src/Resources/assets/js/store/dist/actions.dev.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true, 5 | }); 6 | exports["default"] = void 0; 7 | 8 | var getCustomer = function getCustomer(_ref) { 9 | var commit = _ref.commit; 10 | commit("GET_CUSTOMER"); 11 | }; 12 | 13 | var getCart = function getCart(_ref2) { 14 | var commit = _ref2.commit; 15 | commit("GET_CART"); 16 | }; 17 | 18 | var _default = { 19 | getCustomer: getCustomer, 20 | getCart: getCart, 21 | }; 22 | exports["default"] = _default; 23 | -------------------------------------------------------------------------------- /src/Resources/assets/js/store/dist/getters.dev.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.getData = void 0; 7 | 8 | var getData = function getData(state) { 9 | return state.data; 10 | }; 11 | 12 | exports.getData = getData; -------------------------------------------------------------------------------- /src/Resources/assets/js/store/dist/index.dev.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports["default"] = void 0; 7 | 8 | var _vue = _interopRequireDefault(require("vue")); 9 | 10 | var _vuex = _interopRequireDefault(require("vuex")); 11 | 12 | var _state = _interopRequireDefault(require("./state")); 13 | 14 | var _actions = _interopRequireDefault(require("./actions")); 15 | 16 | var _mutations = _interopRequireDefault(require("./mutations")); 17 | 18 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } 19 | 20 | _vue["default"].use(_vuex["default"]); 21 | 22 | var store = new _vuex["default"].Store({ 23 | state: _state["default"], 24 | actions: _actions["default"], 25 | mutations: _mutations["default"] 26 | }); 27 | var _default = store; 28 | exports["default"] = _default; -------------------------------------------------------------------------------- /src/Resources/assets/js/store/dist/state.dev.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true, 5 | }); 6 | exports["default"] = void 0; 7 | var state = { 8 | cart: null, 9 | pagination: null, 10 | customer: false, 11 | isCustomerFetched: false, 12 | token: null, 13 | }; 14 | setTimeout(function () { 15 | EventBus.$on("user-logged-in", function (user) { 16 | state.customer = user.data; 17 | state.token = user.token; 18 | }); 19 | EventBus.$on("user-logged-out", function () { 20 | state.customer = null; 21 | }); 22 | EventBus.$on("checkout.cart.changed", function (cart) { 23 | state.cart = cart; 24 | }); 25 | }, 0); 26 | var _default = state; 27 | exports["default"] = _default; 28 | -------------------------------------------------------------------------------- /src/Resources/assets/js/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from "vuex"; 3 | import state from './state'; 4 | import actions from './actions'; 5 | import mutations from './mutations'; 6 | 7 | Vue.use(Vuex); 8 | 9 | const store = new Vuex.Store({ 10 | state, 11 | actions, 12 | mutations 13 | }); 14 | 15 | export default store; -------------------------------------------------------------------------------- /src/Resources/assets/js/store/state.js: -------------------------------------------------------------------------------- 1 | var state = { 2 | cart: null, 3 | pagination: null, 4 | customer: false, 5 | isCustomerFetched: false, 6 | token: null, 7 | }; 8 | 9 | setTimeout(() => { 10 | EventBus.$on("user-logged-in", (user) => { 11 | state.customer = user.data; 12 | state.token = user.token; 13 | }); 14 | 15 | EventBus.$on("user-logged-out", () => { 16 | state.customer = null; 17 | }); 18 | 19 | EventBus.$on("checkout.cart.changed", (cart) => { 20 | state.cart = cart; 21 | }); 22 | }, 0); 23 | 24 | export default state; 25 | -------------------------------------------------------------------------------- /src/Resources/assets/sass/_variables.scss: -------------------------------------------------------------------------------- 1 | @import url("https://fonts.googleapis.com/css?family=Montserrat:400,500,600"); 2 | 3 | $font-montserrat: "Montserrat", sans-serif; 4 | $font-size: 12px; 5 | $font-dark-black-color: rgba(0,0,0,.87) ; 6 | $font-light-black-color: rgba(0,0,0,.60); 7 | $font-dask-grey-color: rgba(0,0,0,.38) ; 8 | $font-light-grey-color: rgba(0,0,0,.16) ; -------------------------------------------------------------------------------- /src/Resources/assets/sass/admin-icon.scss: -------------------------------------------------------------------------------- 1 | 2 | .pwa-icon { 3 | width: 24px; 4 | height: 25px; 5 | display: inline-block; 6 | background-size: cover; 7 | background-image: url("../images/Icon-PWA.svg"); 8 | } 9 | 10 | .bell-icon { 11 | background-image: url("../images/Icon-bell.svg"); 12 | height: 24px; 13 | width: 24px; 14 | } 15 | 16 | .router-link-active, 17 | .active { 18 | .pwa-icon { 19 | background-image: url("../images/Icon-PWA-Active.svg"); 20 | } 21 | 22 | &.pwa-icon { 23 | background-image: url("../images/Icon-PWA-Active.svg"); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Resources/assets/sass/admin.scss: -------------------------------------------------------------------------------- 1 | @import "admin-icon"; -------------------------------------------------------------------------------- /src/Resources/assets/sass/dist/rtl.css: -------------------------------------------------------------------------------- 1 | .rtl .product-social-links .share-link .icon, 2 | .rtl .product-social-links .wishlist-link .icon { 3 | margin-left: 8px; 4 | float: right !important; 5 | } 6 | .rtl li.category-card { 7 | margin-right: 15px !important; 8 | } 9 | .rtl .drawer .drawer-header .login-info .avatar { 10 | float: right; 11 | margin-left: 15px; 12 | } 13 | .rtl .drawer .drawer-header .login-info .arrow-right-icon { 14 | left: 0; 15 | right: unset; 16 | } 17 | .rtl .drawer .drawer-content .drawer-box { 18 | padding: 15px 15px 0px 15px; 19 | } 20 | .rtl .drawer .drawer-content .drawer-box ul li a { 21 | padding: 15px 0 15px 15px; 22 | } 23 | .rtl .drawer .drawer-content .drawer-box ul li .sharp-arrow-right-icon { 24 | float: left; 25 | } 26 | .rtl header.navbar.navbar-top .navbar-left { 27 | float: right !important; 28 | } 29 | .rtl header.navbar.navbar-top .navbar-left .drawer-icon { 30 | float: right !important; 31 | } 32 | .rtl header.navbar.navbar-top .navbar-left .shop-title { 33 | margin-right: 20px; 34 | } 35 | .rtl header.navbar.navbar-top .navbar-right { 36 | float: left !important; 37 | } 38 | .rtl header.navbar.navbar-top .navbar-right a { 39 | margin-left: 20px; 40 | } 41 | .rtl aside.sidebar.active { 42 | right: 0px; 43 | left: unset !important; 44 | } 45 | .rtl .content .checkout-container .panel .panel-content .address-list .address-item .address_details { 46 | padding-left: 0; 47 | padding-right: 36px; 48 | } 49 | .rtl .content .cart-container .total-summary table tr td:last-child { 50 | text-align: left !important; 51 | } 52 | .rtl .control-group label { 53 | right: 16px; 54 | left: unset; 55 | } 56 | .rtl .icon.arrow-right-icon { 57 | background-image: url(../images/arrow_left_icon.png); 58 | } 59 | .rtl .icon.sharp-arrow-right-icon { 60 | background-image: url(../images/sharp-arrow-left-icon.svg); 61 | } -------------------------------------------------------------------------------- /src/Resources/views/admin/catelog/categories/pwa.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |

5 | @lang('pwa::app.admin.system.pwa') 6 |

7 | 8 | 9 | 10 | 11 | @lang('pwa::app.admin.system.add_in_pwa') 12 | 13 | 14 | @php 15 | $is_add_in_pwa = old('category_product_in_pwa'); 16 | 17 | if (isset($category)) { 18 | $is_add_in_pwa = old('category_product_in_pwa') ?: $category->category_product_in_pwa; 19 | } 20 | @endphp 21 | 22 | 30 | 31 | 32 |
33 |
34 | -------------------------------------------------------------------------------- /src/Resources/views/admin/layouts/style.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/Resources/views/admin/push-notification/index.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ __('pwa::app.admin.push-notification.title') }} 4 | 5 | 6 |
7 |

8 | {{ __('pwa::app.admin.push-notification.title') }} 9 |

10 | 11 |
12 | {!! view_render_event('bagisto.admin.pwa.push-notification.index.create-button.before') !!} 13 | 14 | 15 |
16 | {{ __('pwa::app.admin.push-notification.create-notification') }} 17 |
18 |
19 | 20 | {!! view_render_event('bagisto.admin.pwa.push-notification.index.create-button.after') !!} 21 |
22 |
23 | 24 | {!! view_render_event('bagisto.admin.pwa.push-notification.list.before') !!} 25 | 26 | 27 | 28 | {!! view_render_event('bagisto.admin.pwa.push-notification.list.after') !!} 29 | 30 |
31 | -------------------------------------------------------------------------------- /src/Resources/views/admin/push-notification/test.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 |
6 |
7 | 13 | 14 | -------------------------------------------------------------------------------- /src/Resources/views/paypal/standard-redirect.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | You will be redirected to the PayPal website in a few seconds. 5 | 6 | 7 |
8 | 9 | 10 | @foreach ($paypalStandard->getFormFields() as $name => $value) 11 | 12 | 13 | 14 | @endforeach 15 |
16 | 17 | 20 | -------------------------------------------------------------------------------- /src/Routes/admin-routes.php: -------------------------------------------------------------------------------- 1 | ['web', 'admin'], 'prefix' => 'admin/pwa'], function () { 8 | /** 9 | * Notification routes. 10 | */ 11 | Route::controller(PushNotificationController::class)->group(function () { 12 | Route::get('pushnotification', 'index')->name('admin.pwa.pushnotification.index'); 13 | 14 | Route::get('pushnotification/create', 'create')->name('admin.pwa.pushnotification.create'); 15 | 16 | Route::post('pushnotification/store', 'store')->name('admin.pwa.pushnotification.store'); 17 | 18 | Route::get('pushnotification/edit/{id}', 'edit')->name('admin.pwa.pushnotification.edit'); 19 | 20 | Route::post('pushnotification/update/{id}', 'update')->name('admin.pwa.pushnotification.update'); 21 | 22 | Route::get('pushnotification/delete/{id}', 'destroy')->name('admin.pwa.pushnotification.delete'); 23 | 24 | Route::get('pushnotification/push/{id}', 'pushToFirebase')->name('pwa.pushnotification.pushtofirebase'); 25 | }); 26 | 27 | /** 28 | * Pwa Layout routes. 29 | */ 30 | Route::controller(LayoutController::class)->group(function () { 31 | Route::get('layout', 'index')->name('admin.pwa.layout'); 32 | 33 | Route::post('layout', 'store')->name('admin.pwa.layout.store'); 34 | }); 35 | }); 36 | -------------------------------------------------------------------------------- /src/Routes/web.php: -------------------------------------------------------------------------------- 1 |