├── .DS_Store ├── .editorconfig ├── .env.example ├── .gitattributes ├── .gitignore ├── README.md ├── app ├── Console │ ├── Commands │ │ └── GenerateSitemap.php │ └── Kernel.php ├── Enums │ ├── BackupSchedule.php │ ├── NotificationType.php │ ├── OrderStatus.php │ ├── RedirectionStatus.php │ └── ShippingStatus.php ├── Exceptions │ └── Handler.php ├── Exports │ ├── ForModelsTrait.php │ └── ProductExport.php ├── Helpers.php ├── Http │ ├── Controllers │ │ ├── Admin │ │ │ ├── BlogCategoryController.php │ │ │ ├── BlogController.php │ │ │ ├── BrandController.php │ │ │ ├── CategoryController.php │ │ │ ├── CurrencyController.php │ │ │ ├── DashboardController.php │ │ │ ├── EmailController.php │ │ │ ├── FeaturedBannerController.php │ │ │ ├── LanguageController.php │ │ │ ├── NotificationController.php │ │ │ ├── OrderController.php │ │ │ ├── PageController.php │ │ │ ├── ProductController.php │ │ │ ├── ReviewController.php │ │ │ ├── RolesController.php │ │ │ ├── SectionController.php │ │ │ ├── SettingController.php │ │ │ ├── ShippingController.php │ │ │ ├── SliderController.php │ │ │ ├── SubCategoryController.php │ │ │ ├── SubscriberController.php │ │ │ └── UsersController.php │ │ ├── Api │ │ │ ├── AuthController.php │ │ │ └── ProductController.php │ │ ├── Auth │ │ │ ├── AuthenticatedSessionController.php │ │ │ ├── ConfirmablePasswordController.php │ │ │ ├── EmailVerificationNotificationController.php │ │ │ ├── EmailVerificationPromptController.php │ │ │ ├── NewPasswordController.php │ │ │ ├── PasswordResetLinkController.php │ │ │ ├── RegisteredUserController.php │ │ │ └── VerifyEmailController.php │ │ ├── Controller.php │ │ ├── ErrorController.php │ │ ├── FrontController.php │ │ ├── ProductController.php │ │ └── UploadController.php │ ├── Kernel.php │ ├── Livewire │ │ ├── Admin │ │ │ ├── Backup │ │ │ │ └── Index.php │ │ │ ├── Blog │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ └── Index.php │ │ │ ├── BlogCategory │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ └── Index.php │ │ │ ├── Brands │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ ├── Index.php │ │ │ │ └── Show.php │ │ │ ├── Cache.php │ │ │ ├── Categories │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ └── Index.php │ │ │ ├── Comment │ │ │ │ └── Index.php │ │ │ ├── Currency │ │ │ │ ├── Create.php │ │ │ │ └── Index.php │ │ │ ├── Customer │ │ │ │ └── Index.php │ │ │ ├── Email │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ └── Index.php │ │ │ ├── FeaturedBanner │ │ │ │ ├── Create.php │ │ │ │ └── Index.php │ │ │ ├── Language │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ ├── EditTranslation.php │ │ │ │ └── Index.php │ │ │ ├── Menu │ │ │ │ └── Index.php │ │ │ ├── Order │ │ │ │ └── Index.php │ │ │ ├── OrderForm │ │ │ │ └── Index.php │ │ │ ├── Page │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ ├── Index.php │ │ │ │ ├── Settings.php │ │ │ │ └── Template.php │ │ │ ├── Product │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ ├── Highlighted.php │ │ │ │ ├── Image.php │ │ │ │ ├── Import.php │ │ │ │ ├── Index.php │ │ │ │ ├── ProductOptions.php │ │ │ │ ├── PromoPrices.php │ │ │ │ └── Show.php │ │ │ ├── Role │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ └── Index.php │ │ │ ├── Section │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ ├── Index.php │ │ │ │ └── Template.php │ │ │ ├── Settings │ │ │ │ ├── ApiToken.php │ │ │ │ ├── Index.php │ │ │ │ ├── Languages.php │ │ │ │ ├── Page.php │ │ │ │ ├── PopupSettings.php │ │ │ │ └── Redirects.php │ │ │ ├── Shipping │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ └── Index.php │ │ │ ├── Slider │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ └── Index.php │ │ │ ├── Stats │ │ │ │ └── Transactions.php │ │ │ ├── Subcategory │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ └── Index.php │ │ │ ├── Subscriber │ │ │ │ └── Index.php │ │ │ └── Users │ │ │ │ ├── Create.php │ │ │ │ ├── Edit.php │ │ │ │ └── Index.php │ │ ├── Front │ │ │ ├── Account.php │ │ │ ├── AddToCart.php │ │ │ ├── BrandPage.php │ │ │ ├── Brands.php │ │ │ ├── CartBar.php │ │ │ ├── CartCount.php │ │ │ ├── Catalog.php │ │ │ ├── Categories.php │ │ │ ├── Checkout.php │ │ │ ├── Contact.php │ │ │ ├── ContactForm.php │ │ │ ├── DynamicPage.php │ │ │ ├── Index.php │ │ │ ├── Newsletters.php │ │ │ ├── NewslettersForm.php │ │ │ ├── OrderForm.php │ │ │ ├── Popups.php │ │ │ ├── ProductShow.php │ │ │ ├── SearchBox.php │ │ │ ├── StepWizard.php │ │ │ ├── Subcategories.php │ │ │ ├── SubcategoryPage.php │ │ │ └── ThankYou.php │ │ ├── ImageUpload.php │ │ ├── Modal.php │ │ ├── Notifications.php │ │ ├── Quill.php │ │ ├── Select.php │ │ ├── ToggleButton.php │ │ ├── Trix.php │ │ └── WithSorting.php │ ├── Middleware │ │ ├── AuthGate.php │ │ ├── AuthRole.php │ │ ├── Authenticate.php │ │ ├── CheckApproved.php │ │ ├── CheckForMaintenanceMode.php │ │ ├── EncryptCookies.php │ │ ├── HTTPSConnection.php │ │ ├── Locale.php │ │ ├── MaintenanceMode.php │ │ ├── PreventRequestsDuringMaintenance.php │ │ ├── RedirectIfAuthenticated.php │ │ ├── SuperAdmin.php │ │ ├── TrimStrings.php │ │ ├── TrustHosts.php │ │ ├── TrustProxies.php │ │ ├── ValidateSignature.php │ │ └── VerifyCsrfToken.php │ ├── Requests │ │ ├── Auth │ │ │ └── LoginRequest.php │ │ └── ProductRequest.php │ └── Resources │ │ ├── CategoryResource.php │ │ ├── ProductCollection.php │ │ └── ProductResource.php ├── Imports │ ├── BrandsImport.php │ ├── CategoriesImport.php │ ├── ImportUpdates.php │ └── ProductImport.php ├── Jobs │ ├── ImportJob.php │ └── ProductJob.php ├── Mail │ ├── CheckoutMail.php │ ├── ContactForm.php │ ├── CustomerRegistrationMail.php │ ├── OrderFormMail.php │ └── SubscribedMail.php ├── Models │ ├── Blog.php │ ├── BlogCategory.php │ ├── Brand.php │ ├── Category.php │ ├── Currency.php │ ├── EmailTemplate.php │ ├── FeaturedBanner.php │ ├── Language.php │ ├── Menu.php │ ├── Notification.php │ ├── Order.php │ ├── OrderForms.php │ ├── OrderProduct.php │ ├── Packaging.php │ ├── Page.php │ ├── PageSetting.php │ ├── Permission.php │ ├── Popup.php │ ├── Product.php │ ├── Redirect.php │ ├── Review.php │ ├── Role.php │ ├── Section.php │ ├── Settings.php │ ├── Shipping.php │ ├── Slider.php │ ├── Subcategory.php │ ├── Subscriber.php │ └── User.php ├── Notifications │ └── Admin │ │ └── NewOrderNotification.php ├── Observers │ ├── OrderObserver.php │ ├── ProductObserver.php │ └── SettingsObserver.php ├── Providers │ ├── AppServiceProvider.php │ ├── AuthServiceProvider.php │ ├── BroadcastServiceProvider.php │ ├── EventServiceProvider.php │ ├── GoogleDriveServiceProvider.php │ └── RouteServiceProvider.php ├── Support │ ├── FilterQueryBuilder.php │ └── HasAdvancedFilter.php ├── Trait │ ├── CacheCleaner.php │ ├── GetModelByUuid.php │ ├── HasMedia.php │ ├── MakeNotification.php │ ├── UuidGenerator.php │ └── WithMediaManager.php └── View │ └── Components │ ├── AppLayout.php │ ├── Card.php │ ├── Content.php │ ├── DashboardLayout.php │ ├── DatePicker.php │ ├── Dropzone.php │ ├── Footer.php │ ├── GuestLayout.php │ ├── Header.php │ ├── SelectList.php │ ├── Sidebar.php │ ├── Table.php │ └── ToggleButton.php ├── artisan ├── bootstrap ├── app.php └── cache │ └── .gitignore ├── composer.json ├── composer.lock ├── config ├── app.php ├── auth.php ├── backup.php ├── broadcasting.php ├── cache.php ├── cart.php ├── cors.php ├── database.php ├── excel.php ├── filesystems.php ├── firewall.php ├── hashing.php ├── image.php ├── insights.php ├── laravel-translatable-string-exporter.php ├── laravelpopups.php ├── livewire-alert.php ├── livewire.php ├── logging.php ├── mail.php ├── pdf.php ├── permission.php ├── queue.php ├── sanctum.php ├── services.php ├── session.php ├── templates.php ├── theme.php └── view.php ├── database ├── .gitignore ├── factories │ ├── ProductFactory.php │ └── UserFactory.php ├── migrations │ ├── 2014_10_12_100000_create_password_resets_table.php │ ├── 2019_07_15_000000_create_firewall_ips_table.php │ ├── 2019_07_15_000000_create_firewall_logs_table.php │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ ├── 2019_12_14_000001_create_personal_access_tokens_table.php │ ├── 2022_10_12_000000_create_order_forms_table.php │ ├── 2022_10_20_155232_create_roles_table.php │ ├── 2022_10_20_235012_create_permission_tables.php │ ├── 2022_10_21_000000_create_users_table.php │ ├── 2022_10_21_155433_create_role_user_table.php │ ├── 2022_10_21_191400_create_permission_role_table.php │ ├── 2022_10_23_150306_create_languages_table.php │ ├── 2022_10_23_155256_create_currencies_table.php │ ├── 2022_10_23_170451_create_categories_table.php │ ├── 2022_10_23_170529_create_subcategories_table.php │ ├── 2022_10_23_170811_create_brands_table.php │ ├── 2022_10_23_171428_create_settings_table.php │ ├── 2022_10_23_171538_create_products_table.php │ ├── 2022_10_24_150130_create_sliders_table.php │ ├── 2022_10_24_150653_create_sections_table.php │ ├── 2022_10_24_150930_create_packagings_table.php │ ├── 2022_10_24_151003_create_featuredbanners_table.php │ ├── 2022_10_24_151152_create_blog_categories_table.php │ ├── 2022_10_24_151152_create_blogs_table.php │ ├── 2022_10_24_152227_create_pages_table.php │ ├── 2022_10_24_152441_create_pagesettings_table.php │ ├── 2022_10_24_155538_create_shippings_table.php │ ├── 2022_10_24_155732_create_orders_table.php │ ├── 2022_10_24_163011_create_order_products_table.php │ ├── 2022_11_06_180006_create_reviews_table.php │ ├── 2022_12_01_113333_add_condition_to_products_table.php │ ├── 2022_12_01_113333_add_embeded_video_to_featured_banners_table.php │ ├── 2022_12_01_113333_add_embeded_video_to_products_table.php │ ├── 2022_12_01_113333_add_embeded_video_to_sliders_table.php │ ├── 2022_12_01_113333_add_image_to_subcategories_table.php │ ├── 2022_12_01_113333_add_origin_to_brands_table.php │ ├── 2022_12_01_113333_add_slug_to_categories_table.php │ ├── 2023_01_01_213441_create_popups_table.php │ ├── 2023_01_24_213944_create_redirects_table.php │ ├── 2023_02_13_172853_create_subscribers_table.php │ └── 2023_06_21_134012_create_menus_table.php └── seeders │ ├── BlogSeeder.php │ ├── BrandSeeder.php │ ├── CategorySeeder.php │ ├── CurrenciesSeeder.php │ ├── DatabaseSeeder.php │ ├── FeaturedBannerSeeder.php │ ├── LanguagesSeeder.php │ ├── PermissionRoleSeeder.php │ ├── PermissionsSeeder.php │ ├── ProductSeeder.php │ ├── RoleUserSeeder.php │ ├── RolesSeeder.php │ ├── SectionsSeeder.php │ ├── SettingSeeder.php │ ├── ShippingSeeder.php │ ├── SliderSeeder.php │ └── SuperUserSeeder.php ├── lang ├── ar.json ├── en.json ├── en │ ├── auth.php │ ├── pagination.php │ ├── passwords.php │ └── validation.php ├── fr.json └── vendor │ ├── backup │ ├── ar │ │ └── notifications.php │ ├── bg │ │ └── notifications.php │ ├── bn │ │ └── notifications.php │ ├── cs │ │ └── notifications.php │ ├── da │ │ └── notifications.php │ ├── de │ │ └── notifications.php │ ├── en │ │ └── notifications.php │ ├── es │ │ └── notifications.php │ ├── fa │ │ └── notifications.php │ ├── fi │ │ └── notifications.php │ ├── fr │ │ └── notifications.php │ ├── hi │ │ └── notifications.php │ ├── hr │ │ └── notifications.php │ ├── id │ │ └── notifications.php │ ├── it │ │ └── notifications.php │ ├── ja │ │ └── notifications.php │ ├── nl │ │ └── notifications.php │ ├── no │ │ └── notifications.php │ ├── pl │ │ └── notifications.php │ ├── pt-BR │ │ └── notifications.php │ ├── pt │ │ └── notifications.php │ ├── ro │ │ └── notifications.php │ ├── ru │ │ └── notifications.php │ ├── tr │ │ └── notifications.php │ ├── uk │ │ └── notifications.php │ ├── zh-CN │ │ └── notifications.php │ └── zh-TW │ │ └── notifications.php │ └── firewall │ └── en │ ├── notifications.php │ └── responses.php ├── package-lock.json ├── package.json ├── phpstan.neon ├── phpunit.xml ├── pint.json ├── postcss.config.js ├── public ├── .DS_Store ├── .htaccess ├── build │ ├── assets │ │ ├── app-a125a2ab.css │ │ ├── app-c611010a.js │ │ └── app-e351623f.css │ └── manifest.json ├── favicon.ico ├── images │ ├── brands │ │ ├── apple.png │ │ ├── casio-2022-11-17.jpg │ │ ├── casio-2022-11-17.png │ │ ├── oppo.png │ │ ├── samsung.png │ │ └── xiaomi.png │ ├── featuredbanners │ │ └── featured-banner-title.png │ ├── logo │ │ └── logo.png │ ├── public │ │ └── .DS_Store │ └── sliders │ │ ├── des-montres-de-luxe-pour-tous.png │ │ └── slider-title.png ├── index.php ├── logo │ └── logo.png ├── robots.txt ├── storage └── vendor │ ├── corewebvitals │ └── core-web-vital │ │ └── js │ │ └── core-web-vital.js │ ├── livewire-alert │ └── livewire-alert.js │ └── livewire │ ├── livewire.js │ ├── livewire.js.map │ └── manifest.json ├── resources ├── css │ ├── app.css │ ├── select.css │ └── theme.css ├── js │ ├── app.js │ └── bootstrap.js └── views │ ├── admin │ ├── .DS_Store │ ├── blog │ │ ├── category │ │ │ └── index.blade.php │ │ ├── create.blade.php │ │ ├── edit.blade.php │ │ ├── index.blade.php │ │ └── settings.blade.php │ ├── brand │ │ └── index.blade.php │ ├── category │ │ └── index.blade.php │ ├── currency │ │ ├── edit.blade.php │ │ └── index.blade.php │ ├── dashboard.blade.php │ ├── email │ │ ├── config.blade.php │ │ ├── edit.blade.php │ │ ├── group.blade.php │ │ ├── index.blade.php │ │ └── mailbody.blade.php │ ├── featuredbanner │ │ └── index.blade.php │ ├── language │ │ ├── create.blade.php │ │ ├── edit.blade.php │ │ ├── import.blade.php │ │ ├── index.blade.php │ │ └── translation.blade.php │ ├── notification │ │ ├── message.blade.php │ │ ├── order.blade.php │ │ ├── product.blade.php │ │ └── register.blade.php │ ├── order │ │ ├── .DS_Store │ │ └── index.blade.php │ ├── orderforms │ │ └── index.blade.php │ ├── page │ │ ├── index.blade.php │ │ └── settings.blade.php │ ├── product │ │ └── index.blade.php │ ├── profile.blade.php │ ├── review │ │ ├── create.blade.php │ │ ├── edit.blade.php │ │ └── index.blade.php │ ├── roles │ │ ├── create.blade.php │ │ ├── edit.blade.php │ │ ├── index.blade.php │ │ └── partials │ │ │ ├── actions.blade.php │ │ │ └── permissions.blade.php │ ├── section │ │ └── index.blade.php │ ├── settings │ │ ├── error_banner.blade.php │ │ ├── index.blade.php │ │ ├── maintain.blade.php │ │ ├── popupsettings.blade.php │ │ └── redirects.blade.php │ ├── shipping │ │ └── index.blade.php │ ├── slider │ │ └── index.blade.php │ ├── subcategory │ │ ├── create.blade.php │ │ ├── edit.blade.php │ │ └── index.blade.php │ ├── subscribers │ │ └── index.blade.php │ └── user │ │ ├── index.blade.php │ │ └── permissions.blade.php │ ├── auth │ ├── forgot-password.blade.php │ ├── login.blade.php │ ├── register.blade.php │ ├── reset-password.blade.php │ ├── terms.blade.php │ └── verify-email.blade.php │ ├── components │ ├── accordion.blade.php │ ├── alert.blade.php │ ├── alerts │ │ └── error.blade.php │ ├── analytics.blade.php │ ├── application-logo.blade.php │ ├── auth-card.blade.php │ ├── auth-session-status.blade.php │ ├── auth-validation-errors.blade.php │ ├── badge.blade.php │ ├── bottomheader.blade.php │ ├── button.blade.php │ ├── button │ │ ├── auth │ │ │ └── google.blade.php │ │ ├── back.blade.php │ │ ├── icon-link.blade.php │ │ ├── icon.blade.php │ │ ├── index.blade.php │ │ └── link.blade.php │ ├── card.blade.php │ ├── checkbox.blade.php │ ├── chips.blade.php │ ├── copyright.blade.php │ ├── counter-card.blade.php │ ├── date-picker.blade.php │ ├── dialog-modal.blade.php │ ├── dropdown-link.blade.php │ ├── dropdown.blade.php │ ├── dropdown │ │ └── item.blade.php │ ├── dropzone.blade.php │ ├── dynamic-component.blade.php │ ├── file-detail.blade.php │ ├── filepond.blade.php │ ├── fileupload.blade.php │ ├── footer.blade.php │ ├── form-alert.blade.php │ ├── forms │ │ ├── add-input.blade.php │ │ ├── adon-input.blade.php │ │ └── input.blade.php │ ├── from-url.blade.php │ ├── header.blade.php │ ├── icons │ │ ├── bell.blade.php │ │ ├── chevron-down.blade.php │ │ ├── dashboard.blade.php │ │ ├── delivery.blade.php │ │ ├── edit.blade.php │ │ ├── empty-circle.blade.php │ │ ├── eye.blade.php │ │ ├── facebook.blade.php │ │ ├── info-circle.blade.php │ │ ├── instagram.blade.php │ │ ├── menu-fold-left.blade.php │ │ ├── menu-fold-right.blade.php │ │ ├── menu.blade.php │ │ ├── moon.blade.php │ │ ├── sun.blade.php │ │ ├── trash.blade.php │ │ ├── twitter.blade.php │ │ └── x.blade.php │ ├── input-date.blade.php │ ├── input-error.blade.php │ ├── input-label.blade.php │ ├── input.blade.php │ ├── input │ │ ├── checkbox.blade.php │ │ ├── ckeditor5.blade.php │ │ ├── date.blade.php │ │ ├── datepicker.blade.php │ │ ├── draft.blade.php │ │ ├── easymde.blade.php │ │ ├── editor.blade.php │ │ ├── file-upload.blade.php │ │ ├── group.blade.php │ │ ├── money.blade.php │ │ ├── quill.blade.php │ │ ├── rich-text.blade.php │ │ ├── select.blade.php │ │ ├── text.blade.php │ │ ├── textarea.blade.php │ │ ├── tinymce.blade.php │ │ └── trix.blade.php │ ├── label.blade.php │ ├── language-dropdown.blade.php │ ├── loader.blade.php │ ├── loading-mask.blade.php │ ├── loading.blade.php │ ├── loadingBrand.blade.php │ ├── media-upload.blade.php │ ├── modal-card.blade.php │ ├── modal.blade.php │ ├── nav-link.blade.php │ ├── navbar-pos.blade.php │ ├── navbar.blade.php │ ├── navigation │ │ ├── desktop.blade.php │ │ └── mobile.blade.php │ ├── notification.blade.php │ ├── perfect-scrollbar.blade.php │ ├── picture.blade.php │ ├── primary-button.blade.php │ ├── product-card.blade.php │ ├── product-carousel.blade.php │ ├── range.blade.php │ ├── responsive-nav-link.blade.php │ ├── search.blade.php │ ├── secondary-button.blade.php │ ├── select-list.blade.php │ ├── select.blade.php │ ├── sidebar-item.blade.php │ ├── sidebar │ │ ├── content.blade.php │ │ ├── dropdown.blade.php │ │ ├── footer.blade.php │ │ ├── header.blade.php │ │ ├── link.blade.php │ │ ├── overlay.blade.php │ │ ├── sidebar.blade.php │ │ └── sublink.blade.php │ ├── sort │ │ └── sort-field.blade.php │ ├── spinner │ │ ├── code │ │ │ ├── black.blade.php │ │ │ └── white.blade.php │ │ ├── image │ │ │ ├── black.blade.php │ │ │ └── white.blade.php │ │ └── index.blade.php │ ├── tab.blade.php │ ├── table-responsive.blade.php │ ├── table.blade.php │ ├── table │ │ ├── cell.blade.php │ │ ├── checkbox.blade.php │ │ ├── heading.blade.php │ │ ├── row.blade.php │ │ ├── sort.blade.php │ │ ├── tbody.blade.php │ │ ├── td.blade.php │ │ ├── tfoot.blade.php │ │ ├── th.blade.php │ │ ├── thead.blade.php │ │ └── tr.blade.php │ ├── tabs.blade.php │ ├── text-input.blade.php │ ├── toggle-switch.blade.php │ ├── topheader.blade.php │ ├── trix.blade.php │ ├── unsplash.blade.php │ ├── upload.blade.php │ ├── validation-errors.blade.php │ └── whatsapp.blade.php │ ├── emails │ ├── checkout.blade.php │ ├── contact-mail.blade.php │ ├── customer-registration.blade.php │ └── order-form.blade.php │ ├── errors │ ├── 401.blade.php │ ├── 403.blade.php │ ├── 404.blade.php │ ├── 419.blade.php │ ├── 429.blade.php │ ├── 500.blade.php │ ├── 503.blade.php │ ├── illustrated-layout.blade.php │ ├── layout.blade.php │ └── minimal.blade.php │ ├── export │ └── products.blade.php │ ├── front │ ├── blog-page.blade.php │ ├── blog.blade.php │ ├── brand-page.blade.php │ ├── brands.blade.php │ ├── catalog.blade.php │ ├── categories.blade.php │ ├── checkout.blade.php │ ├── contact.blade.php │ ├── dynamic-page.blade.php │ ├── index.blade.php │ ├── order-summary.blade.php │ ├── product.blade.php │ ├── search-results.blade.php │ ├── subcategories.blade.php │ ├── subcategory-page.blade.php │ └── user-account.blade.php │ ├── layouts │ ├── app.blade.php │ ├── dashboard.blade.php │ ├── email.blade.php │ ├── guest.blade.php │ └── print.blade.php │ ├── livewire │ ├── admin │ │ ├── backup │ │ │ └── index.blade.php │ │ ├── blog-category │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ └── index.blade.php │ │ ├── blog │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ └── index.blade.php │ │ ├── brands │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ ├── index.blade.php │ │ │ └── show.blade.php │ │ ├── cache.blade.php │ │ ├── categories │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ └── index.blade.php │ │ ├── currency │ │ │ └── index.blade.php │ │ ├── customer │ │ │ └── index.blade.php │ │ ├── email │ │ │ └── index.blade.php │ │ ├── featured-banner │ │ │ ├── create.blade.php │ │ │ └── index.blade.php │ │ ├── language │ │ │ ├── create.blade.php │ │ │ ├── edit-translation.blade.php │ │ │ ├── edit.blade.php │ │ │ └── index.blade.php │ │ ├── menu │ │ │ └── index.blade.php │ │ ├── order-form │ │ │ └── index.blade.php │ │ ├── order │ │ │ └── index.blade.php │ │ ├── page │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ ├── index.blade.php │ │ │ ├── settings.blade.php │ │ │ └── template.blade.php │ │ ├── payment-gateway │ │ │ └── index.blade.php │ │ ├── permission │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ └── index.blade.php │ │ ├── product │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ ├── highlighted.blade.php │ │ │ ├── image.blade.php │ │ │ ├── import.blade.php │ │ │ ├── index.blade.php │ │ │ ├── product-options.blade.php │ │ │ ├── promo-prices.blade.php │ │ │ └── show.blade.php │ │ ├── role │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ └── index.blade.php │ │ ├── section │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ ├── index.blade.php │ │ │ └── template.blade.php │ │ ├── settings │ │ │ ├── api-token.blade.php │ │ │ ├── index.blade.php │ │ │ ├── page.blade.php │ │ │ ├── popup-settings.blade.php │ │ │ └── redirects.blade.php │ │ ├── shipping │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ └── index.blade.php │ │ ├── slider │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ └── index.blade.php │ │ ├── stats │ │ │ └── transactions.blade.php │ │ ├── subcategory │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ └── index.blade.php │ │ ├── subscriber │ │ │ └── index.blade.php │ │ └── users │ │ │ ├── create.blade.php │ │ │ ├── edit.blade.php │ │ │ └── index.blade.php │ ├── front │ │ ├── account.blade.php │ │ ├── add-to-cart.blade.php │ │ ├── brand-page.blade.php │ │ ├── brands.blade.php │ │ ├── cart-bar.blade.php │ │ ├── cart-count.blade.php │ │ ├── catalog.blade.php │ │ ├── categories.blade.php │ │ ├── checkout.blade.php │ │ ├── contact-form.blade.php │ │ ├── contact.blade.php │ │ ├── dynamic-page.blade.php │ │ ├── index.blade.php │ │ ├── newsletters.blade.php │ │ ├── order-form.blade.php │ │ ├── popups.blade.php │ │ ├── product-show.blade.php │ │ ├── search-box.blade.php │ │ ├── step-wizard.blade.php │ │ ├── subcategories.blade.php │ │ ├── subcategory-page.blade.php │ │ └── thank-you.blade.php │ ├── multiple-uploads.blade.php │ ├── quill.blade.php │ ├── select.blade.php │ ├── toggle-button.blade.php │ └── trix.blade.php │ ├── partials │ ├── css.blade.php │ ├── js.blade.php │ └── product-carousel.blade.php │ ├── vendor │ ├── mail │ │ ├── html │ │ │ ├── button.blade.php │ │ │ ├── footer.blade.php │ │ │ ├── header.blade.php │ │ │ ├── layout.blade.php │ │ │ ├── message.blade.php │ │ │ ├── panel.blade.php │ │ │ ├── subcopy.blade.php │ │ │ ├── table.blade.php │ │ │ └── themes │ │ │ │ └── default.css │ │ └── text │ │ │ ├── button.blade.php │ │ │ ├── footer.blade.php │ │ │ ├── header.blade.php │ │ │ ├── layout.blade.php │ │ │ ├── message.blade.php │ │ │ ├── panel.blade.php │ │ │ ├── subcopy.blade.php │ │ │ └── table.blade.php │ └── notifications │ │ └── email.blade.php │ └── welcome.blade.php ├── routes ├── admin.php ├── api.php ├── auth.php ├── channels.php ├── console.php └── web.php ├── screens ├── Catalog.png ├── dashboard-product-create.png ├── dashboard-products.png ├── dashboard.png └── home.png ├── storage ├── app │ └── .gitignore ├── framework │ ├── .gitignore │ ├── cache │ │ ├── .gitignore │ │ └── data │ │ │ └── .gitignore │ ├── sessions │ │ └── .gitignore │ ├── testing │ │ └── .gitignore │ └── views │ │ └── .gitignore └── logs │ └── .gitignore ├── tailwind.config.js ├── tests ├── CreatesApplication.php ├── Feature │ └── ExampleTest.php ├── TestCase.php └── Unit │ └── ExampleTest.php ├── vite.config.js └── yarn.lock /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/.DS_Store -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 4 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.{yml,yaml}] 15 | indent_size = 2 16 | 17 | [docker-compose.yml] 18 | indent_size = 4 19 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | 3 | *.blade.php diff=html 4 | *.css diff=css 5 | *.html diff=html 6 | *.md diff=markdown 7 | *.php diff=php 8 | 9 | /.github export-ignore 10 | CHANGELOG.md export-ignore 11 | .styleci.yml export-ignore 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | node_modules/ 3 | npm-debug.log 4 | yarn-error.log 5 | /*.DS_Store 6 | storage/*.key 7 | .env 8 | Homestead.yaml 9 | Homestead.json 10 | /.vagrant 11 | .phpunit.result.cache 12 | *.stub 13 | *.xlsx 14 | composer.lock 15 | /.idea 16 | /.vscode 17 | package-lock.json 18 | -------------------------------------------------------------------------------- /app/Enums/BackupSchedule.php: -------------------------------------------------------------------------------- 1 | $value) 29 | // 30 | // @endforeach 31 | } 32 | -------------------------------------------------------------------------------- /app/Enums/RedirectionStatus.php: -------------------------------------------------------------------------------- 1 | $value) 23 | // 24 | // @endforeach 25 | } 26 | -------------------------------------------------------------------------------- /app/Exports/ForModelsTrait.php: -------------------------------------------------------------------------------- 1 | models = $selectedModels; 13 | 14 | return $this; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/Exports/ProductExport.php: -------------------------------------------------------------------------------- 1 | models) { 28 | return Product::query()->whereIn('id', $this->models); 29 | } 30 | 31 | return Product::query()->with('category','brand'); 32 | } 33 | 34 | public function view(): View 35 | { 36 | return view('export.products', [ 37 | 'data' => $this->query()->get(), 38 | ]); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/Http/Controllers/Admin/BlogCategoryController.php: -------------------------------------------------------------------------------- 1 | toArray()); 28 | } 29 | fclose($output); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Http/Controllers/Admin/UsersController.php: -------------------------------------------------------------------------------- 1 | user()->hasVerifiedEmail() 23 | ? redirect()->intended(RouteServiceProvider::CLIENT_HOME) 24 | : view('auth.verify-email'); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/VerifyEmailController.php: -------------------------------------------------------------------------------- 1 | user()->hasVerifiedEmail()) { 24 | return redirect()->intended(RouteServiceProvider::CLIENT_HOME.'?verified=1'); 25 | } 26 | 27 | if ($request->user()->markEmailAsVerified()) { 28 | event(new Verified($request->user())); 29 | } 30 | 31 | return redirect()->intended(RouteServiceProvider::CLIENT_HOME.'?verified=1'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | file('image')) { 14 | if (is_array($request->image)) { 15 | $path = collect($request->image)->map->store('tmp-editor-uploads'); 16 | } else { 17 | $path = $request->image->store('tmp-editor-uploads'); 18 | } 19 | 20 | return response()->json([ 21 | 'url' => $path, 22 | ], 200); 23 | } 24 | 25 | return; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/Http/Livewire/Admin/Brands/Show.php: -------------------------------------------------------------------------------- 1 | brand = Brand::findOrFail($id); 28 | 29 | $this->showModal = true; 30 | } 31 | 32 | public function render(): View|Factory 33 | { 34 | return view('livewire.admin.brands.show'); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/Http/Livewire/Admin/Cache.php: -------------------------------------------------------------------------------- 1 | alert('success', __('All caches have been cleared!')); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/Http/Livewire/Admin/Product/Show.php: -------------------------------------------------------------------------------- 1 | product = Product::findOrFail($id); 28 | 29 | $this->showModal = true; 30 | } 31 | 32 | public function render(): View|Factory 33 | { 34 | return view('livewire.admin.product.show'); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/Http/Livewire/Admin/Settings/ApiToken.php: -------------------------------------------------------------------------------- 1 | resetErrorBag(); 18 | 19 | $this->token = auth()->user()->createToken('api-token')->plainTextToken; 20 | } 21 | 22 | public function deleteToken() 23 | { 24 | auth()->user()->tokens()->delete(); 25 | 26 | $this->token = null; 27 | $this->authenticated = false; 28 | } 29 | 30 | public function render() 31 | { 32 | return view('livewire.settings.api-token'); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/Http/Livewire/Admin/Settings/Page.php: -------------------------------------------------------------------------------- 1 | cartCount = Cart::instance('shopping')->count(); 23 | } 24 | 25 | public function cartCountUpdated() 26 | { 27 | $this->cartCount = Cart::instance('shopping')->count(); 28 | $this->emit('cartBarUpdated'); 29 | } 30 | 31 | public function render(): View|Factory 32 | { 33 | return view('livewire.front.cart-count'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/Http/Livewire/Front/DynamicPage.php: -------------------------------------------------------------------------------- 1 | order = Order::findOrFail($order->id); 21 | } 22 | 23 | public function render(): View|Factory 24 | { 25 | return view('livewire.front.thank-you'); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/Http/Livewire/Modal.php: -------------------------------------------------------------------------------- 1 | 'show', 15 | ]; 16 | 17 | /** 18 | * ------------------------------------------------------------------------------- 19 | * Set Modal 20 | * ------------------------------------------------------------------------------- 21 | */ 22 | public function show() 23 | { 24 | $this->show = true; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Http/Livewire/Notifications.php: -------------------------------------------------------------------------------- 1 | notifications = auth()->user()->notifications->take(10); 22 | } 23 | 24 | public function toggleReadStatus($key) 25 | { 26 | $notification = $this->notifications[$key]; 27 | 28 | $notification->read_at === null ? $notification->read_at = Carbon::now()->toTimeString() : $notification->read_at = null; 29 | $notification->save(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Http/Livewire/Quill.php: -------------------------------------------------------------------------------- 1 | value = $value; 20 | $this->quillId = 'quill-'.uniqid(); 21 | } 22 | 23 | public function updatedValue($value) 24 | { 25 | $this->emit(self::EVENT_VALUE_UPDATED, $this->value); 26 | } 27 | 28 | public function render() 29 | { 30 | return view('livewire.quill'); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/Http/Livewire/Trix.php: -------------------------------------------------------------------------------- 1 | value = $value; 18 | $this->trixId = 'trix-' . uniqid(); 19 | } 20 | 21 | public function updatedValue(string $value): void 22 | { 23 | $this->emitUp('trix:valueUpdated', $value); 24 | } 25 | 26 | public function render() 27 | { 28 | return view('livewire.trix'); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/Http/Livewire/WithSorting.php: -------------------------------------------------------------------------------- 1 | sortBy = $field; 16 | 17 | $this->sortDirection = $this->sortBy === $field 18 | ? $this->reverseSort() 19 | : 'asc'; 20 | } 21 | 22 | public function reverseSort() 23 | { 24 | return $this->sortDirection === 'asc' 25 | ? 'desc' 26 | : 'asc'; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/Http/Middleware/AuthRole.php: -------------------------------------------------------------------------------- 1 | user(); 25 | 26 | if ($user) { 27 | if ($role === Role::ROLE_ADMIN && $user->isAdmin()) { 28 | return $next($request); 29 | } 30 | 31 | if ($role === Role::ROLE_CLIENT && $user->isClient()) { 32 | return $next($request); 33 | } 34 | } 35 | 36 | abort(Response::HTTP_FORBIDDEN, '403 Forbidden'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Http/Middleware/Authenticate.php: -------------------------------------------------------------------------------- 1 | expectsJson()) { 21 | return route('login'); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Http/Middleware/CheckApproved.php: -------------------------------------------------------------------------------- 1 | user()->status) { 22 | return redirect()->route('auth.approval'); 23 | } 24 | 25 | return $next($request); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/Http/Middleware/CheckForMaintenanceMode.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | protected $except = [ 17 | 18 | ]; 19 | } 20 | -------------------------------------------------------------------------------- /app/Http/Middleware/HTTPSConnection.php: -------------------------------------------------------------------------------- 1 | header('x-forwarded-proto') === 'https'; 23 | 24 | // $gs = Generalsetting::find(1); 25 | 26 | // if($gs->is_secure == 1 && $is_enabled) { 27 | // if (!$request->secure()) { 28 | // return redirect()->secure($request->getRequestUri()); 29 | // } else { 30 | // URL::forceScheme('https'); 31 | // } 32 | // } 33 | 34 | return $next($request); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/Http/Middleware/MaintenanceMode.php: -------------------------------------------------------------------------------- 1 | is_maintain === 1) { 17 | return redirect()->route('front-maintenance'); 18 | } 19 | 20 | return $next($request); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/Http/Middleware/PreventRequestsDuringMaintenance.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | protected $except = [ 17 | 18 | ]; 19 | } 20 | -------------------------------------------------------------------------------- /app/Http/Middleware/SuperAdmin.php: -------------------------------------------------------------------------------- 1 | isAdmin()) { 15 | return $next($request); 16 | } 17 | 18 | return redirect()->route('admin.dashboard')->with('unsuccess', "You don't have access to that section"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/Http/Middleware/TrimStrings.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | protected $except = [ 17 | 'current_password', 18 | 'password', 19 | 'password_confirmation', 20 | ]; 21 | } 22 | -------------------------------------------------------------------------------- /app/Http/Middleware/TrustHosts.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | public function hosts() 17 | { 18 | return [ 19 | $this->allSubdomainsOfApplicationUrl(), 20 | ]; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/Http/Middleware/TrustProxies.php: -------------------------------------------------------------------------------- 1 | |string|null 16 | */ 17 | protected $proxies; 18 | 19 | /** 20 | * The headers that should be used to detect proxies. 21 | * 22 | * @var int 23 | */ 24 | protected $headers = 25 | Request::HEADER_X_FORWARDED_FOR | 26 | Request::HEADER_X_FORWARDED_HOST | 27 | Request::HEADER_X_FORWARDED_PORT | 28 | Request::HEADER_X_FORWARDED_PROTO | 29 | Request::HEADER_X_FORWARDED_AWS_ELB; 30 | } 31 | -------------------------------------------------------------------------------- /app/Http/Middleware/ValidateSignature.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | protected $except = [ 17 | // 'fbclid', 18 | // 'utm_campaign', 19 | // 'utm_content', 20 | // 'utm_medium', 21 | // 'utm_source', 22 | // 'utm_term', 23 | ]; 24 | } 25 | -------------------------------------------------------------------------------- /app/Http/Middleware/VerifyCsrfToken.php: -------------------------------------------------------------------------------- 1 | 15 | */ 16 | protected $except = [ 17 | 18 | ]; 19 | } 20 | -------------------------------------------------------------------------------- /app/Http/Requests/ProductRequest.php: -------------------------------------------------------------------------------- 1 | 'required|string', 15 | '*.price' => 'required|numeric', 16 | '*.code' => 'required', 17 | '*.quantity' => 'nullable', 18 | '*.categoryId' => 'nullable|exists:categories,id', 19 | ]; 20 | } 21 | 22 | protected function prepareForValidation() 23 | { 24 | $data = []; 25 | 26 | foreach ($this->toArray() as $obj) { 27 | $obj['category_id'] = $obj['categoryId'] ?? null; 28 | $data[] = $obj; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/Http/Resources/CategoryResource.php: -------------------------------------------------------------------------------- 1 | $this->name, 22 | ]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Http/Resources/ProductCollection.php: -------------------------------------------------------------------------------- 1 | ProductResource::collection($this->collection), 21 | 'links' => [ 22 | 'meta' => ['product_count' => $this->collection->count()], 23 | ], 24 | ]; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Http/Resources/ProductResource.php: -------------------------------------------------------------------------------- 1 | $this->id, 21 | // 'uuid' => $this->uuid, 22 | 'name' => $this->name, 23 | 'code' => $this->code, 24 | 'category' => new CategoryResource($this->category), 25 | 'price' => $this->price, 26 | 'created_at' => (string) $this->created_at, 27 | 'updated_at' => (string) $this->updated_at, 28 | ]; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/Imports/BrandsImport.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/app/Imports/BrandsImport.php -------------------------------------------------------------------------------- /app/Imports/CategoriesImport.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/app/Imports/CategoriesImport.php -------------------------------------------------------------------------------- /app/Mail/CheckoutMail.php: -------------------------------------------------------------------------------- 1 | order = $order; 25 | $this->user = $user; 26 | } 27 | 28 | public function build() 29 | { 30 | return $this->view('emails.checkout') 31 | ->subject('Order Confirmation ', $this->user->first_name) 32 | ->with([ 33 | 'order' => $this->order, 34 | 'user' => $this->user, 35 | ]); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/Mail/ContactForm.php: -------------------------------------------------------------------------------- 1 | contact = $contact; 26 | } 27 | 28 | /** 29 | * Build the message. 30 | * 31 | * @return $this 32 | */ 33 | public function build() 34 | { 35 | return $this->view('emails.contact-mail') 36 | ->subject('Contact Form!') 37 | ->with([ 38 | 'contact' => $this->contact, 39 | ]); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/Mail/CustomerRegistrationMail.php: -------------------------------------------------------------------------------- 1 | user = $user; 23 | } 24 | 25 | public function build() 26 | { 27 | return $this->view('emails.customer-registration') 28 | ->subject('Welcome to our website!', $this->user->name) 29 | ->with([ 30 | 'user' => $this->user, 31 | ]); 32 | } 33 | 34 | public function envelope() 35 | { 36 | return new Envelope( 37 | subject: sprintf('Welcome, %s!', $this->user->name), 38 | ); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/Mail/OrderFormMail.php: -------------------------------------------------------------------------------- 1 | order = $order; 22 | } 23 | 24 | public function build() 25 | { 26 | return $this->view('emails.order-form') 27 | ->subject('New Order Form!', $this->order->name) 28 | ->with([ 29 | 'order' => $this->order, 30 | ]); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/Mail/SubscribedMail.php: -------------------------------------------------------------------------------- 1 | from(('admin@mail.com')) 35 | ->replyTo(request()->input('email')) 36 | ->subject(__('Susbscription'), config('app.name')) 37 | ->subject(__('Thank you for your subscription')) 38 | ->markdown('vendor.notifications.email', [ 39 | 'introLines' => [__('We will get you updated once we will.')], 40 | ]); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/Models/Brand.php: -------------------------------------------------------------------------------- 1 | where('status', 1); 37 | } 38 | 39 | public function products(): HasMany 40 | { 41 | return $this->hasMany(Product::class); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/Models/Currency.php: -------------------------------------------------------------------------------- 1 | where('default', true); 40 | } 41 | 42 | public function scopeActive(Builder $query) 43 | { 44 | return $query->where('status', 'active'); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /app/Models/FeaturedBanner.php: -------------------------------------------------------------------------------- 1 | belongsTo(Product::class, 'product_id'); 35 | } 36 | 37 | public function language() 38 | { 39 | return $this->belongsTo(Language::class, 'language_id'); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/Models/Menu.php: -------------------------------------------------------------------------------- 1 | where('status', true); 26 | } 27 | 28 | public function parent() 29 | { 30 | return $this->belongsTo(Menu::class, 'parent_id'); 31 | } 32 | 33 | public function children() 34 | { 35 | return $this->hasMany(Menu::class, 'parent_id'); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/Models/OrderProduct.php: -------------------------------------------------------------------------------- 1 | belongsTo(Order::class); 17 | } 18 | 19 | public function product() 20 | { 21 | return $this->belongsTo(Product::class); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/Models/Packaging.php: -------------------------------------------------------------------------------- 1 | belongsTo(Product::class); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Models/Settings.php: -------------------------------------------------------------------------------- 1 | first(); 22 | 23 | if ($setting) { 24 | $setting->value = $value; 25 | $setting->save(); 26 | } else { 27 | $setting = self::create([ 28 | 'key' => $key, 29 | 'value' => $value, 30 | ]); 31 | } 32 | 33 | return $setting; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/Models/Shipping.php: -------------------------------------------------------------------------------- 1 | 16 | */ 17 | protected $policies = [ 18 | // 'App\Models\Model' => 'App\Policies\ModelPolicy', 19 | ]; 20 | 21 | /** 22 | * Register any authentication / authorization services. 23 | * 24 | * @return void 25 | */ 26 | public function boot() 27 | { 28 | $this->registerPolicies(); 29 | 30 | Gate::before(function ($user, $ability) { 31 | return $user->hasRole('Super Admin') ? true : null; 32 | }); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/Providers/BroadcastServiceProvider.php: -------------------------------------------------------------------------------- 1 | > 17 | */ 18 | protected $listen = [ 19 | Registered::class => [ 20 | SendEmailVerificationNotification::class, 21 | ], 22 | ]; 23 | 24 | /** 25 | * Register any events for your application. 26 | * 27 | * @return void 28 | */ 29 | public function boot() 30 | { 31 | } 32 | 33 | /** 34 | * Determine if events and listeners should be automatically discovered. 35 | * 36 | * @return bool 37 | */ 38 | public function shouldDiscoverEvents() 39 | { 40 | return false; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/Trait/CacheCleaner.php: -------------------------------------------------------------------------------- 1 | image)) { 15 | return null; 16 | } 17 | 18 | if (Str::startsWith($this->image, ['http', 'https'])) { 19 | return $this->image; 20 | } 21 | 22 | return Storage::disk('public')->url($this->image); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Trait/UuidGenerator.php: -------------------------------------------------------------------------------- 1 | getTable(), 'uuid')) { 17 | $model->uuid = Str::uuid()->toString(); 18 | } 19 | }); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/Trait/WithMediaManager.php: -------------------------------------------------------------------------------- 1 | emitTo('media-manager', 'media-manager:show', [ 12 | 'id' => $id, 13 | 'file' => $file, 14 | 'metadata' => $metadata, 15 | ]); 16 | } 17 | 18 | public function removeFileFromMediaManager() 19 | { 20 | $this->emitTo('media-manager', 'media-manager:file-removed'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/View/Components/AppLayout.php: -------------------------------------------------------------------------------- 1 | options = $options; 22 | } 23 | 24 | /** 25 | * Get the view / contents that represent the component. 26 | * 27 | * @return \Illuminate\Contracts\View\View|string 28 | */ 29 | public function render() 30 | { 31 | return view('components.select-list'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/View/Components/Sidebar.php: -------------------------------------------------------------------------------- 1 | ['api/*', 'sanctum/csrf-cookie'], 19 | 20 | 'allowed_methods' => ['*'], 21 | 22 | 'allowed_origins' => ['*'], 23 | 24 | 'allowed_origins_patterns' => [], 25 | 26 | 'allowed_headers' => ['*'], 27 | 28 | 'exposed_headers' => [], 29 | 30 | 'max_age' => 0, 31 | 32 | 'supports_credentials' => false, 33 | 34 | ]; 35 | -------------------------------------------------------------------------------- /config/image.php: -------------------------------------------------------------------------------- 1 | 'gd', 19 | 20 | ]; 21 | -------------------------------------------------------------------------------- /config/laravelpopups.php: -------------------------------------------------------------------------------- 1 | ['sm', 'md', 'lg', 'xl'], 5 | 'frequency' => 'once', 6 | 'frequency_options' => ['once', 'multiple'], 7 | 'timing' => 'delay', 8 | 'timing_options' => ['delay', 'interval'], 9 | 'delay' => 30, 10 | 'interval' => 60, 11 | 'popup' => [ 12 | 'table_name' => 'popups', 13 | ], 14 | ]; 15 | -------------------------------------------------------------------------------- /config/livewire-alert.php: -------------------------------------------------------------------------------- 1 | [ 9 | 'position' => 'top-end', 10 | 'timer' => 3000, 11 | 'toast' => true, 12 | 'text' => null, 13 | 'showCancelButton' => false, 14 | 'showConfirmButton' => false, 15 | ], 16 | 'confirm' => [ 17 | 'icon' => 'warning', 18 | 'position' => 'center', 19 | 'toast' => false, 20 | 'timer' => null, 21 | 'showConfirmButton' => true, 22 | 'showCancelButton' => true, 23 | 'cancelButtonText' => 'No', 24 | 'confirmButtonColor' => '#3085d6', 25 | 'cancelButtonColor' => '#d33', 26 | ], 27 | ]; 28 | -------------------------------------------------------------------------------- /config/services.php: -------------------------------------------------------------------------------- 1 | [ 18 | 'domain' => env('MAILGUN_DOMAIN'), 19 | 'secret' => env('MAILGUN_SECRET'), 20 | 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), 21 | 'scheme' => 'https', 22 | ], 23 | 24 | 'postmark' => [ 25 | 'token' => env('POSTMARK_TOKEN'), 26 | ], 27 | 28 | 'ses' => [ 29 | 'key' => env('AWS_ACCESS_KEY_ID'), 30 | 'secret' => env('AWS_SECRET_ACCESS_KEY'), 31 | 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), 32 | ], 33 | 34 | ]; 35 | -------------------------------------------------------------------------------- /config/theme.php: -------------------------------------------------------------------------------- 1 | [ 5 | 'v1' => '', 6 | 'v2' => '', 7 | ], 8 | 'menu' => [ 9 | 'v1' => [ 10 | ['text' => 'Categories', 'route' => 'front.categories'], 11 | ['text' => 'Catalog', 'route' => 'front.catalog'], 12 | ['text' => 'Brands', 'route' => 'front.brands'], 13 | ['text' => 'Shop', 'route' => 'front.shop'], 14 | ['text' => 'Contact', 'route' => 'front.contact'], 15 | ], 16 | 'v2' => [ 17 | ['text' => 'Shop', 'route' => 'front.shop'], 18 | ['text' => 'Blog', 'route' => 'front.blog'], 19 | ['text' => 'Contact', 'route' => 'front.contact'], 20 | ], 21 | ], 22 | ]; 23 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite* 2 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_100000_create_password_resets_table.php: -------------------------------------------------------------------------------- 1 | string('email')->index(); 19 | $table->string('token'); 20 | $table->timestamp('created_at')->nullable(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | * 27 | * @return void 28 | */ 29 | public function down() 30 | { 31 | Schema::dropIfExists('password_resets'); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2019_07_15_000000_create_firewall_ips_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 19 | $table->string('ip'); 20 | $table->integer('log_id')->nullable(); 21 | $table->boolean('blocked')->default(1); 22 | $table->timestamps(); 23 | $table->softDeletes(); 24 | 25 | $table->index('ip'); 26 | }); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::drop('firewall_ips'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /database/migrations/2019_08_19_000000_create_failed_jobs_table.php: -------------------------------------------------------------------------------- 1 | id(); 19 | $table->string('uuid')->unique(); 20 | $table->text('connection'); 21 | $table->text('queue'); 22 | $table->longText('payload'); 23 | $table->longText('exception'); 24 | $table->timestamp('failed_at')->useCurrent(); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | * 31 | * @return void 32 | */ 33 | public function down() 34 | { 35 | Schema::dropIfExists('failed_jobs'); 36 | } 37 | }; 38 | -------------------------------------------------------------------------------- /database/migrations/2022_10_20_155232_create_roles_table.php: -------------------------------------------------------------------------------- 1 | id(); 20 | $table->string('name')->nullable(); 21 | $table->string('guard_name')->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('roles'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /database/migrations/2022_10_20_235012_create_permission_tables.php: -------------------------------------------------------------------------------- 1 | id(); 20 | $table->string('title'); 21 | $table->timestamps(); 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | * 28 | * @return void 29 | */ 30 | public function down() 31 | { 32 | Schema::dropIfExists('permissions'); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /database/migrations/2022_10_21_155433_create_role_user_table.php: -------------------------------------------------------------------------------- 1 | id(); 20 | $table->foreignId('role_id')->constrained('roles')->onDelete('cascade'); 21 | $table->foreignId('user_id')->constrained('users')->onDelete('cascade'); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | * 29 | * @return void 30 | */ 31 | public function down() 32 | { 33 | Schema::dropIfExists('role_user'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /database/migrations/2022_10_21_191400_create_permission_role_table.php: -------------------------------------------------------------------------------- 1 | id(); 20 | $table->foreignId('role_id')->constrained('roles')->onDelete('cascade'); 21 | $table->foreignId('permission_id')->constrained('permissions')->onDelete('cascade'); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | * 29 | * @return void 30 | */ 31 | public function down() 32 | { 33 | Schema::dropIfExists('permission_role'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /database/migrations/2022_10_23_150306_create_languages_table.php: -------------------------------------------------------------------------------- 1 | id(); 19 | $table->string('name'); 20 | $table->string('code'); 21 | $table->string('rtl')->default('0'); 22 | $table->string('status')->default('1'); 23 | $table->string('is_default')->default('0'); 24 | $table->timestamps(); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | * 31 | * @return void 32 | */ 33 | public function down() 34 | { 35 | Schema::dropIfExists('languages'); 36 | } 37 | }; 38 | -------------------------------------------------------------------------------- /database/migrations/2022_10_23_155256_create_currencies_table.php: -------------------------------------------------------------------------------- 1 | id(); 19 | $table->string('name'); 20 | $table->string('symbol'); 21 | $table->string('position'); 22 | $table->float('value'); 23 | $table->string('is_default')->default(false); 24 | $table->timestamps(); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | * 31 | * @return void 32 | */ 33 | public function down() 34 | { 35 | Schema::dropIfExists('currenncies'); 36 | } 37 | }; 38 | -------------------------------------------------------------------------------- /database/migrations/2022_10_23_170451_create_categories_table.php: -------------------------------------------------------------------------------- 1 | id(); 19 | $table->string('name'); 20 | $table->string('image')->nullable(); 21 | $table->tinyInteger('status')->default(true); 22 | $table->softDeletes(); 23 | $table->timestamps(); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::dropIfExists('categories'); 35 | } 36 | }; 37 | -------------------------------------------------------------------------------- /database/migrations/2022_10_23_171428_create_settings_table.php: -------------------------------------------------------------------------------- 1 | bigIncrements('id'); 20 | $table->string('key')->unique(); 21 | $table->text('value')->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('settings'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /database/migrations/2022_10_24_150930_create_packagings_table.php: -------------------------------------------------------------------------------- 1 | id(); 19 | $table->string('title'); 20 | $table->string('subtitle'); 21 | $table->decimal('cost', 10, 2)->default(false); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | * 29 | * @return void 30 | */ 31 | public function down() 32 | { 33 | Schema::dropIfExists('packagings'); 34 | } 35 | }; 36 | -------------------------------------------------------------------------------- /database/migrations/2022_10_24_155538_create_shippings_table.php: -------------------------------------------------------------------------------- 1 | id(); 19 | $table->boolean('is_pickup')->default(false); 20 | $table->string('title'); 21 | $table->string('subtitle')->nullable(); 22 | $table->decimal('cost', 10, 2)->default(false); 23 | $table->boolean('status')->default(true); 24 | $table->softDeletes(); 25 | $table->timestamps(); 26 | }); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::dropIfExists('shippings'); 37 | } 38 | }; 39 | -------------------------------------------------------------------------------- /database/migrations/2022_11_06_180006_create_reviews_table.php: -------------------------------------------------------------------------------- 1 | id(); 19 | $table->integer('rating'); 20 | $table->text('comment'); 21 | $table->foreignId('product_id')->constrained()->onDelete('cascade'); 22 | $table->foreignId('user_id')->constrained()->onDelete('cascade'); 23 | $table->timestamps(); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::dropIfExists('reviews'); 35 | } 36 | }; 37 | -------------------------------------------------------------------------------- /database/migrations/2022_12_01_113333_add_condition_to_products_table.php: -------------------------------------------------------------------------------- 1 | string('condition')->nullable(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | * 25 | * @return void 26 | */ 27 | public function down() 28 | { 29 | Schema::table('products', function (Blueprint $table) { 30 | $table->removeColumn('condition'); 31 | }); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2022_12_01_113333_add_embeded_video_to_featured_banners_table.php: -------------------------------------------------------------------------------- 1 | text('embeded_video')->nullable(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | * 25 | * @return void 26 | */ 27 | public function down() 28 | { 29 | Schema::table('featured_banners', function (Blueprint $table) { 30 | $table->removeColumn('embeded_video'); 31 | }); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2022_12_01_113333_add_embeded_video_to_products_table.php: -------------------------------------------------------------------------------- 1 | text('embeded_video')->nullable(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | * 25 | * @return void 26 | */ 27 | public function down() 28 | { 29 | Schema::table('products', function (Blueprint $table) { 30 | $table->removeColumn('embeded_video'); 31 | }); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2022_12_01_113333_add_embeded_video_to_sliders_table.php: -------------------------------------------------------------------------------- 1 | text('embeded_video')->nullable(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | * 25 | * @return void 26 | */ 27 | public function down() 28 | { 29 | Schema::table('sliders', function (Blueprint $table) { 30 | $table->removeColumn('embeded_video'); 31 | }); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2022_12_01_113333_add_image_to_subcategories_table.php: -------------------------------------------------------------------------------- 1 | string('image')->nullable(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | * 25 | * @return void 26 | */ 27 | public function down() 28 | { 29 | Schema::table('subcategories', function (Blueprint $table) { 30 | $table->removeColumn('image'); 31 | }); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2022_12_01_113333_add_origin_to_brands_table.php: -------------------------------------------------------------------------------- 1 | string('origin')->nullable(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | * 25 | * @return void 26 | */ 27 | public function down() 28 | { 29 | Schema::table('brands', function (Blueprint $table) { 30 | $table->removeColumn('origin'); 31 | }); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2022_12_01_113333_add_slug_to_categories_table.php: -------------------------------------------------------------------------------- 1 | string('slug'); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | * 25 | * @return void 26 | */ 27 | public function down() 28 | { 29 | Schema::table('categories', function (Blueprint $table) { 30 | $table->removeColumn('slug'); 31 | }); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2023_01_24_213944_create_redirects_table.php: -------------------------------------------------------------------------------- 1 | id(); 19 | $table->string('old_url'); 20 | $table->string('new_url')->nullable(); 21 | $table->string('http_status_code')->nullable(); 22 | $table->boolean('status')->default(true); 23 | $table->timestamps(); 24 | $table->softDeletes(); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | * 31 | * @return void 32 | */ 33 | public function down() 34 | { 35 | Schema::dropIfExists('redirects'); 36 | } 37 | }; 38 | -------------------------------------------------------------------------------- /database/migrations/2023_02_13_172853_create_subscribers_table.php: -------------------------------------------------------------------------------- 1 | id(); 19 | $table->string('email', 191)->unique(); 20 | $table->string('name', 191)->nullable(); 21 | $table->string('tag', 255)->nullable(); 22 | $table->boolean('status')->default(true); 23 | $table->timestamps(); 24 | $table->softDeletes(); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | * 31 | * @return void 32 | */ 33 | public function down() 34 | { 35 | Schema::dropIfExists('subscribers'); 36 | } 37 | }; 38 | -------------------------------------------------------------------------------- /database/seeders/CurrenciesSeeder.php: -------------------------------------------------------------------------------- 1 | 1, 22 | 'name' => 'Dirham', 23 | 'symbol' => 'DH', 24 | 'position' => 'right', 25 | 'value' => 1, 26 | 'is_default' => 1, 27 | ], 28 | 29 | ]); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /database/seeders/PermissionRoleSeeder.php: -------------------------------------------------------------------------------- 1 | first(); 23 | $admin->syncPermissions($permissions); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /database/seeders/ProductSeeder.php: -------------------------------------------------------------------------------- 1 | count(1000)->create(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /database/seeders/RoleUserSeeder.php: -------------------------------------------------------------------------------- 1 | roles()->sync(1); 20 | User::findOrFail(2)->roles()->sync(1); 21 | User::findOrFail(3)->roles()->sync(2); 22 | User::findOrFail(4)->roles()->sync(2); 23 | User::findOrFail(999)->roles()->sync(1); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /database/seeders/RolesSeeder.php: -------------------------------------------------------------------------------- 1 | 1, 22 | 'name' => Role::ROLE_ADMIN, 23 | 'guard_name' => Role::ROLE_ADMIN, 24 | ], 25 | [ 26 | 'id' => 2, 27 | 'name' => Role::ROLE_CLIENT, 28 | 'guard_name' => Role::ROLE_CLIENT, 29 | ], 30 | ]; 31 | 32 | Role::insert($roles); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /database/seeders/ShippingSeeder.php: -------------------------------------------------------------------------------- 1 | 1, 22 | 'is_pickup' => true, 23 | 'title' => 'local', 24 | 'subtitle' => 'same city', 25 | 'cost' => '0', 26 | ], 27 | ]); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /database/seeders/SuperUserSeeder.php: -------------------------------------------------------------------------------- 1 | 999, 21 | 'first_name' => 'Admin', 22 | 'last_name' => 'Admin', 23 | 'email' => 'admin@gmail.com', 24 | 'password' => bcrypt('password'), 25 | 'zip' => '12345', 26 | 'city' => 'Casablanca', 27 | 'state' => 'Casablanca', 28 | 'country' => 'Morocco', 29 | 'address' => 'Casablanca', 30 | 'phone' => '123456789', 31 | 'statut' => 1, 32 | 'role_id' => 1, 33 | 'remember_token' => null, 34 | 'created_at' => now(), 35 | ]); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /lang/en/auth.php: -------------------------------------------------------------------------------- 1 | 'These credentials do not match our records.', 19 | 'password' => 'The provided password is incorrect.', 20 | 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', 21 | 22 | ]; 23 | -------------------------------------------------------------------------------- /lang/en/pagination.php: -------------------------------------------------------------------------------- 1 | '« Previous', 19 | 'next' => 'Next »', 20 | 21 | ]; 22 | -------------------------------------------------------------------------------- /lang/en/passwords.php: -------------------------------------------------------------------------------- 1 | 'Your password has been reset!', 19 | 'sent' => 'We have emailed your password reset link!', 20 | 'throttled' => 'Please wait before retrying.', 21 | 'token' => 'This password reset token is invalid.', 22 | 'user' => "We can't find a user with that email address.", 23 | 24 | ]; 25 | -------------------------------------------------------------------------------- /lang/vendor/firewall/en/notifications.php: -------------------------------------------------------------------------------- 1 | [ 6 | 7 | 'subject' => '🔥 Possible attack on :domain', 8 | 'message' => 'A possible :middleware attack on :domain has been detected from :ip address. The following URL has been affected: :url', 9 | 10 | ], 11 | 12 | 'slack' => [ 13 | 14 | 'message' => 'A possible attack on :domain has been detected.', 15 | 16 | ], 17 | 18 | ]; 19 | -------------------------------------------------------------------------------- /lang/vendor/firewall/en/responses.php: -------------------------------------------------------------------------------- 1 | [ 6 | 7 | 'message' => 'Access Denied', 8 | 9 | ], 10 | 11 | ]; 12 | -------------------------------------------------------------------------------- /phpstan.neon: -------------------------------------------------------------------------------- 1 | includes: 2 | - ./vendor/nunomaduro/larastan/extension.neon 3 | 4 | parameters: 5 | 6 | paths: 7 | - app/ 8 | 9 | # Level 9 is the highest level 10 | level: 5 11 | 12 | # ignoreErrors: 13 | # - '#PHPDoc tag @var#' 14 | # 15 | # excludePaths: 16 | # - ./*/*/FileToBeExcluded.php 17 | # 18 | # checkMissingIterableValueType: false -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/.DS_Store -------------------------------------------------------------------------------- /public/build/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "resources/css/app.css": { 3 | "file": "assets/app-a125a2ab.css", 4 | "isEntry": true, 5 | "src": "resources/css/app.css" 6 | }, 7 | "resources/js/app.css": { 8 | "file": "assets/app-e351623f.css", 9 | "src": "resources/js/app.css" 10 | }, 11 | "resources/js/app.js": { 12 | "css": [ 13 | "assets/app-e351623f.css" 14 | ], 15 | "file": "assets/app-c611010a.js", 16 | "isEntry": true, 17 | "src": "resources/js/app.js" 18 | } 19 | } -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/favicon.ico -------------------------------------------------------------------------------- /public/images/brands/apple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/images/brands/apple.png -------------------------------------------------------------------------------- /public/images/brands/casio-2022-11-17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/images/brands/casio-2022-11-17.jpg -------------------------------------------------------------------------------- /public/images/brands/casio-2022-11-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/images/brands/casio-2022-11-17.png -------------------------------------------------------------------------------- /public/images/brands/oppo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/images/brands/oppo.png -------------------------------------------------------------------------------- /public/images/brands/samsung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/images/brands/samsung.png -------------------------------------------------------------------------------- /public/images/brands/xiaomi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/images/brands/xiaomi.png -------------------------------------------------------------------------------- /public/images/featuredbanners/featured-banner-title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/images/featuredbanners/featured-banner-title.png -------------------------------------------------------------------------------- /public/images/logo/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/images/logo/logo.png -------------------------------------------------------------------------------- /public/images/public/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/images/public/.DS_Store -------------------------------------------------------------------------------- /public/images/sliders/des-montres-de-luxe-pour-tous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/images/sliders/des-montres-de-luxe-pour-tous.png -------------------------------------------------------------------------------- /public/images/sliders/slider-title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/images/sliders/slider-title.png -------------------------------------------------------------------------------- /public/logo/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/public/logo/logo.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: Googlebot 2 | Disallow: 3 | 4 | User-agent: googlebot-image 5 | Disallow: 6 | 7 | User-agent: googlebot-mobile 8 | Disallow: 9 | 10 | User-agent: * 11 | Disallow: 12 | 13 | Disallow: /cgi-bin/ 14 | Disallow: /login 15 | Disallow: /register 16 | Disallow: /admin/* 17 | Disallow: /panier 18 | Disallow: /caisse 19 | 20 | Sitemap: https://badrluxury.com/sitemap.xml -------------------------------------------------------------------------------- /public/storage: -------------------------------------------------------------------------------- 1 | /Applications/MAMP/htdocs/appEcom/storage/app/public -------------------------------------------------------------------------------- /public/vendor/livewire/manifest.json: -------------------------------------------------------------------------------- 1 | {"/livewire.js":"/livewire.js?id=90730a3b0e7144480175"} -------------------------------------------------------------------------------- /resources/css/app.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | 6 | .toggle-checkbox:checked { 7 | @apply right-0 border-green-400; 8 | right: 0; 9 | border-color: #68D391; 10 | } 11 | .toggle-checkbox:checked + .toggle-label { 12 | @apply bg-green-400; 13 | background-color: #68D391; 14 | } 15 | 16 | -------------------------------------------------------------------------------- /resources/views/admin/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/resources/views/admin/.DS_Store -------------------------------------------------------------------------------- /resources/views/admin/email/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.dashboard') 2 | 3 | @section('content') 4 | 5 |
6 |
7 |
8 |
9 |

{{ __('Email Templates') }}

10 | 21 |
22 |
23 |
24 | 25 |
26 | @endsection 27 | -------------------------------------------------------------------------------- /resources/views/admin/email/mailbody.blade.php: -------------------------------------------------------------------------------- 1 | {!! clean($email_body, array('Attr.EnableID' => true)) !!} -------------------------------------------------------------------------------- /resources/views/admin/language/translation.blade.php: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/resources/views/admin/language/translation.blade.php -------------------------------------------------------------------------------- /resources/views/admin/notification/message.blade.php: -------------------------------------------------------------------------------- 1 | {{ __('New Conversation(s).') }} 2 | @if (count($datas) > 0) 3 | 4 | {{ __('Clear All') }} 5 | 6 | 15 | @else 16 | 17 | {{ __('No New Notifications.') }} 18 | 19 | 20 | @endif 21 | -------------------------------------------------------------------------------- /resources/views/admin/notification/order.blade.php: -------------------------------------------------------------------------------- 1 | {{ __('New Order(s).') }} 2 | @if (count($datas) > 0) 3 | 4 | {{ __('Clear All') }} 5 | 6 | 15 | @else 16 | 17 | {{ __('No New Notifications.') }} 18 | 19 | 20 | @endif 21 | -------------------------------------------------------------------------------- /resources/views/admin/notification/product.blade.php: -------------------------------------------------------------------------------- 1 | {{ __('Product(s) in Low Quantity.') }} 2 | @if(count($datas) > 0) 3 | 4 | {{ __('Clear All') }} 5 | 6 | 15 | 16 | @else 17 | 18 | 19 | {{ __('No New Notifications.') }} 20 | 21 | 22 | @endif -------------------------------------------------------------------------------- /resources/views/admin/notification/register.blade.php: -------------------------------------------------------------------------------- 1 | {{ __('New Notification(s).') }} 2 | @if(count($datas) > 0) 3 | 4 | {{ __('Clear All') }} 5 | 6 | 14 | 15 | @else 16 | 17 | 18 | {{ __('No New Notifications.') }} 19 | 20 | 21 | @endif -------------------------------------------------------------------------------- /resources/views/admin/order/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/resources/views/admin/order/.DS_Store -------------------------------------------------------------------------------- /resources/views/admin/roles/partials/actions.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | -------------------------------------------------------------------------------- /resources/views/admin/roles/partials/permissions.blade.php: -------------------------------------------------------------------------------- 1 | @foreach($data->getPermissionNames() as $permission) 2 | {{ $permission }} 3 | @endforeach 4 | ....... 5 | -------------------------------------------------------------------------------- /resources/views/admin/settings/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.dashboard') 2 | @section('title', __('General Settings')) 3 | @section('content') 4 |
5 |
6 |
7 |
8 | {{ __('General Settings') }} 9 |
10 |
11 |
12 |
13 | @livewire('admin.settings.index') 14 |
15 |
16 | @endsection 17 | -------------------------------------------------------------------------------- /resources/views/auth/terms.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.guest') 2 | @section('title', __('Terms')) 3 | @section('content') 4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | # {{ __('Terms of Service') }} 12 |
13 |

14 | {{ __('Edit this file to define the terms of service for your application.') }} 15 |

16 |
17 |
18 |
19 | @endsection 20 | -------------------------------------------------------------------------------- /resources/views/components/accordion.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'title', 3 | 'id', 4 | 'color' => 'indigo', 5 | ]) 6 | 7 |
8 |
9 |
10 | {{ $title }} 11 |
12 |
13 | 14 | 15 | 16 |
17 |
18 |
19 | {{ $slot }} 20 |
21 |
-------------------------------------------------------------------------------- /resources/views/components/analytics.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | -------------------------------------------------------------------------------- /resources/views/components/application-logo.blade.php: -------------------------------------------------------------------------------- 1 | Site Logomerge(['class' => 'w-auto h-30']) }}> 2 | -------------------------------------------------------------------------------- /resources/views/components/auth-card.blade.php: -------------------------------------------------------------------------------- 1 | {{-- attribute class and title null --}} 2 | 3 | @props(['title' => null]) 4 | 5 |
6 |
7 | @if ($title) 8 |
9 | {{ $title }} 10 |
11 | @endif 12 | 13 | {{ $slot }} 14 |
15 |
-------------------------------------------------------------------------------- /resources/views/components/auth-session-status.blade.php: -------------------------------------------------------------------------------- 1 | @props(['status']) 2 | 3 | @if ($status) 4 |
merge(['class' => 'font-medium text-sm text-green-600']) }}> 5 | {{ $status }} 6 |
7 | @endif 8 | -------------------------------------------------------------------------------- /resources/views/components/auth-validation-errors.blade.php: -------------------------------------------------------------------------------- 1 | @props(['errors']) 2 | 3 | @if ($errors->any()) 4 |
5 |
6 | {{ __('Whoops! Something went wrong.') }} 7 |
8 | 9 | 14 |
15 | @endif 16 | -------------------------------------------------------------------------------- /resources/views/components/button/auth/google.blade.php: -------------------------------------------------------------------------------- 1 | merge(['href' => '#', 'title' => 'Continue with Google']) }}> 2 | 3 | Google logo 4 | Continue with Google 5 | 6 | 7 | -------------------------------------------------------------------------------- /resources/views/components/button/back.blade.php: -------------------------------------------------------------------------------- 1 | @props(['color' => 'transparent']) 2 | 3 | 4 | 5 | {{__('Back')}} 6 | 7 | -------------------------------------------------------------------------------- /resources/views/components/button/icon-link.blade.php: -------------------------------------------------------------------------------- 1 | @props(['color' => 'brand', 'style_override' => null]) 2 | 3 | 12 | 13 | merge(['type' => 'button', 'class' => "btn btn__icon {$style} {$ring}"]) }}> 14 | {{ $slot }} 15 | 16 | -------------------------------------------------------------------------------- /resources/views/components/button/icon.blade.php: -------------------------------------------------------------------------------- 1 | @props(['color' => 'brand', 'style_override' => null]) 2 | 3 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /resources/views/components/button/index.blade.php: -------------------------------------------------------------------------------- 1 | @props(['color' => 'brand', 'style_override' => null]) 2 | 3 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /resources/views/components/button/link.blade.php: -------------------------------------------------------------------------------- 1 | @props(['color' => 'brand', 'style_override' => null]) 2 | 3 | 12 | 13 | merge(['type' => 'button', 'class' => "btn btn__text {$style} {$ring}"]) }}> 14 | {{ $slot }} 15 | 16 | -------------------------------------------------------------------------------- /resources/views/components/card.blade.php: -------------------------------------------------------------------------------- 1 |
2 |
3 | {{ $slot }} 4 |
5 |
6 | -------------------------------------------------------------------------------- /resources/views/components/checkbox.blade.php: -------------------------------------------------------------------------------- 1 | merge(['class' => 'rounded border-gray-300 text-indigo-600 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50']) !!}> 2 | -------------------------------------------------------------------------------- /resources/views/components/copyright.blade.php: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /resources/views/components/counter-card.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 'href' => '#' ,'color' =>'green', 'counter' ,'title']) 2 | 3 |
4 | 6 |
7 | 8 | {{$slot}} 9 | 10 |
11 |
12 |

{{$counter}}

13 | {{$title}} 14 |
15 |
16 |
-------------------------------------------------------------------------------- /resources/views/components/dialog-modal.blade.php: -------------------------------------------------------------------------------- 1 | @props(['id' => null, 'maxWidth' => null]) 2 | 3 | 4 |
5 |
6 |
7 |

8 | {{ $title }} 9 |

10 | 11 |
12 | {{ $content }} 13 |
14 |
15 |
16 |
17 | 18 |
19 | {{ $footer }} 20 |
21 |
22 | -------------------------------------------------------------------------------- /resources/views/components/dropdown-link.blade.php: -------------------------------------------------------------------------------- 1 | merge(['class' => 'block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 transition duration-150 ease-in-out']) }}>{{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/components/dropdown/item.blade.php: -------------------------------------------------------------------------------- 1 | @props(['type' => 'link']) 2 | 3 | @if ($type === 'link') 4 | merge(['href' => '#', 'class' => 'block w-full px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900']) }} role="menuitem"> 5 | {{ $slot }} 6 | 7 | @elseif ($type === 'button') 8 | 11 | @endif 12 | -------------------------------------------------------------------------------- /resources/views/components/dynamic-component.blade.php: -------------------------------------------------------------------------------- 1 | {{-- --}} 2 | @props([ 3 | 'key', 4 | 'name', 5 | 'tab', 6 | 'icon' 7 | ]) 8 | 9 | 14 | 15 | 16 | {{ $name ?? \Illuminate\Support\Str::headline($key) }} 17 | 18 | -------------------------------------------------------------------------------- /resources/views/components/form-alert.blade.php: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /resources/views/components/forms/add-input.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | {{$adon}} 5 | 6 | {{$slot}} 7 |
-------------------------------------------------------------------------------- /resources/views/components/forms/adon-input.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | {{$adon}} 4 | 5 | {{$slot}} 6 |
-------------------------------------------------------------------------------- /resources/views/components/forms/input.blade.php: -------------------------------------------------------------------------------- 1 | merge(['class'=> 'border border-gray-400 rounded-md w-full focus:outline-none px-3 focus:border-blue-700 text-base'])}}> -------------------------------------------------------------------------------- /resources/views/components/from-url.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 6 |
-------------------------------------------------------------------------------- /resources/views/components/icons/bell.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 11 | 14 | -------------------------------------------------------------------------------- /resources/views/components/icons/chevron-down.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /resources/views/components/icons/edit.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 11 | 14 | -------------------------------------------------------------------------------- /resources/views/components/icons/empty-circle.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /resources/views/components/icons/eye.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /resources/views/components/icons/facebook.blade.php: -------------------------------------------------------------------------------- 1 | 3 | 6 | -------------------------------------------------------------------------------- /resources/views/components/icons/info-circle.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /resources/views/components/icons/menu-fold-left.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /resources/views/components/icons/menu-fold-right.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /resources/views/components/icons/menu.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /resources/views/components/icons/moon.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /resources/views/components/icons/sun.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /resources/views/components/icons/trash.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /resources/views/components/icons/twitter.blade.php: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /resources/views/components/icons/x.blade.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/views/components/input-date.blade.php: -------------------------------------------------------------------------------- 1 | @props(['name', 'value' => null, 'placeholder' => null, 'required' => false]) 2 | 3 | @php 4 | $id = $attributes->get('id', Str::random(10)); 5 | @endphp 6 | 7 | merge(['class' => '']) }} 16 | /> 17 | -------------------------------------------------------------------------------- /resources/views/components/input-error.blade.php: -------------------------------------------------------------------------------- 1 | @props(['messages']) 2 | 3 | @if ($messages) 4 | 9 | @endif 10 | -------------------------------------------------------------------------------- /resources/views/components/input-label.blade.php: -------------------------------------------------------------------------------- 1 | @props(['value']) 2 | 3 | 6 | -------------------------------------------------------------------------------- /resources/views/components/input.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'id' => null, 3 | 'type' => 'text', 4 | 'name' => null, 5 | 'value' => null, 6 | 'disabled' => false, 7 | 'required' => false, 8 | 'placeholder' => null, 9 | 'autofocus' => false, 10 | 'autocomplete' => null, 11 | 'readonly' => false, 12 | ]) 13 | 14 | @php 15 | $attributes = $attributes->class([ 16 | 'shadow-sm focus:ring-indigo-500 focus:border-indigo-500 block w-full sm:text-sm border-gray-300 rounded-md', 17 | 'disabled:opacity-50' => $disabled, 18 | 'border-red-300 text-red-900 placeholder-red-300 focus:border-red-300 focus:ring-red-500' => $errors->has($name), 19 | ])->merge([ 20 | 'id' => $id, 21 | 'type' => $type, 22 | 'name' => $name, 23 | 'value' => $value, 24 | 'disabled' => $disabled, 25 | 'required' => $required, 26 | 'placeholder' => $placeholder, 27 | 'autofocus' => $autofocus, 28 | 'autocomplete' => $autocomplete, 29 | 'readonly' => $readonly, 30 | ]); 31 | @endphp 32 | 33 | 34 | -------------------------------------------------------------------------------- /resources/views/components/input/checkbox.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 6 |
7 | -------------------------------------------------------------------------------- /resources/views/components/input/ckeditor5.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
whereDoesntStartWith('wire:model') }} 5 | wire:ignore 6 | > 7 | 11 |
12 | 13 | 14 | @push('scripts') 15 | 16 | 30 | @endpush 31 | -------------------------------------------------------------------------------- /resources/views/components/input/file-upload.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $slot }} 3 | 4 |
5 | 6 | 7 | 10 | 11 |
12 |
13 | -------------------------------------------------------------------------------- /resources/views/components/input/money.blade.php: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | $ 5 | 6 |
7 | 8 | 9 | 10 |
11 | 12 | USD 13 | 14 |
15 |
16 | -------------------------------------------------------------------------------- /resources/views/components/input/select.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'placeholder' => null, 3 | 'trailingAddOn' => null, 4 | ]) 5 | 6 |
7 | 14 | 15 | @if ($trailingAddOn) 16 | {{ $trailingAddOn }} 17 | @endif 18 |
19 | -------------------------------------------------------------------------------- /resources/views/components/input/text.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'leadingAddOn' => false, 3 | ]) 4 | 5 |
6 | @if ($leadingAddOn) 7 | 8 | {{ $leadingAddOn }} 9 | 10 | @endif 11 | 12 | merge(['class' => 'flex-1 form-input border-cool-gray-300 block w-full transition duration-150 ease-in-out sm:text-sm sm:leading-5' . ($leadingAddOn ? ' rounded-none rounded-r-md' : '')]) }}/> 13 |
14 | -------------------------------------------------------------------------------- /resources/views/components/input/textarea.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /resources/views/components/label.blade.php: -------------------------------------------------------------------------------- 1 | @props(['for', 'value', 'required' => false, 'tooltip' => null]) 2 | 3 | @php 4 | $requiredClasses = 'text-red-500'; 5 | $requiredLabel = '*'; 6 | @endphp 7 | 8 | 19 | -------------------------------------------------------------------------------- /resources/views/components/language-dropdown.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | {{ strtoupper(app()->getLocale()) }} 6 | 7 | 8 | 9 | @foreach (\App\Models\Language::all() as $language) 10 | 11 | {{ $language->name }} 12 | 13 | @endforeach 14 | 15 | 16 |
17 | -------------------------------------------------------------------------------- /resources/views/components/loading-mask.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'size' => 'lg', 3 | 'class' => '', 4 | 'sizing' => [ 5 | 'sm' => 6, 6 | 'md' => 10, 7 | 'lg' => 14, 8 | 'xl' => 24, 9 | 'xxl' => 36 10 | ], 11 | ]) 12 |
13 | 14 | 15 | 16 | 17 | 18 |
-------------------------------------------------------------------------------- /resources/views/components/loading.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'size' => 'lg', 3 | 'class' => '', 4 | 'sizing' => [ 5 | 'sm' => 6, 6 | 'md' => 10, 7 | 'lg' => 14, 8 | 'xl' => 24, 9 | 'xxl' => 36 10 | ], 11 | ]) 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /resources/views/components/nav-link.blade.php: -------------------------------------------------------------------------------- 1 | @props(['active']) 2 | 3 | @php 4 | $classes = ($active ?? false) 5 | ? 'inline-flex items-center px-1 pt-1 border-b-2 border-indigo-400 text-sm font-medium leading-5 text-gray-900 focus:outline-none focus:border-indigo-700 transition duration-150 ease-in-out' 6 | : 'inline-flex items-center px-1 pt-1 border-b-2 border-transparent text-sm font-medium leading-5 text-gray-500 hover:text-gray-700 hover:border-gray-300 focus:outline-none focus:text-gray-700 focus:border-gray-300 transition duration-150 ease-in-out'; 7 | @endphp 8 | 9 | merge(['class' => $classes]) }}> 10 | {{ $slot }} 11 | 12 | -------------------------------------------------------------------------------- /resources/views/components/navbar-pos.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 21 |
-------------------------------------------------------------------------------- /resources/views/components/navigation/desktop.blade.php: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /resources/views/components/perfect-scrollbar.blade.php: -------------------------------------------------------------------------------- 1 | @props(['as' => 'div']) 2 | 3 | 4 | <{{ $as }} x-data="perfectScroll" {{ $attributes->merge(['class' => 'relative max-h-full']) }} @mousemove="update"> 5 | {{ $slot }} 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/views/components/picture.blade.php: -------------------------------------------------------------------------------- 1 | 2 | @if (isset($sizes)) 3 | @foreach($sizes as $minWidth => $size) 4 | 5 | @endforeach 6 | @endif 7 | 8 | {{ $alt }} 14 | 15 | -------------------------------------------------------------------------------- /resources/views/components/primary-button.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /resources/views/components/responsive-nav-link.blade.php: -------------------------------------------------------------------------------- 1 | @props(['active']) 2 | 3 | @php 4 | $classes = ($active ?? false) 5 | ? 'block pl-3 pr-4 py-2 border-l-4 border-indigo-400 text-base font-medium text-indigo-700 bg-indigo-50 focus:outline-none focus:text-indigo-800 focus:bg-indigo-100 focus:border-indigo-700 transition duration-150 ease-in-out' 6 | : 'block pl-3 pr-4 py-2 border-l-4 border-transparent text-base font-medium text-gray-600 hover:text-gray-800 hover:bg-gray-50 hover:border-gray-300 focus:outline-none focus:text-gray-800 focus:bg-gray-50 focus:border-gray-300 transition duration-150 ease-in-out'; 7 | @endphp 8 | 9 | merge(['class' => $classes]) }}> 10 | {{ $slot }} 11 | 12 | -------------------------------------------------------------------------------- /resources/views/components/secondary-button.blade.php: -------------------------------------------------------------------------------- 1 | {{-- todo --}} 2 | 5 | -------------------------------------------------------------------------------- /resources/views/components/select-list.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 10 |
-------------------------------------------------------------------------------- /resources/views/components/sidebar-item.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'key', 3 | 'name', 4 | 'tab', 5 | 'icon' 6 | ]) 7 | 8 | 13 | 14 | {{ $name ?? \Illuminate\Support\Str::headline($key) }} 15 | -------------------------------------------------------------------------------- /resources/views/components/sidebar/dropdown.blade.php: -------------------------------------------------------------------------------- 1 | @props(['active' => false, 'title' => '']) 2 | 3 |
4 | 5 | @if ($icon ?? false) 6 | 7 | {{ $icon }} 8 | 9 | @endif 10 | @if ($add ?? false) 11 | 12 | {{ $add }} 13 | 14 | @endif 15 | 16 | 17 |
18 |
    19 | {{ $slot }} 20 |
21 |
22 |
-------------------------------------------------------------------------------- /resources/views/components/sidebar/footer.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 10 | 11 | 12 | 13 |
-------------------------------------------------------------------------------- /resources/views/components/sidebar/header.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | {{ Helpers::settings('site_title') }} 5 | 6 | {{ Helpers::settings('site_title') }} 7 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /resources/views/components/sidebar/overlay.blade.php: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /resources/views/components/sidebar/sidebar.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /resources/views/components/sidebar/sublink.blade.php: -------------------------------------------------------------------------------- 1 | @props(['title' => '', 'active' => false]) 2 | 3 | @php 4 | 5 | $classes = 'transition-colors hover:text-gray-900'; 6 | $active 7 | ? $classes .= ' text-gray-200' 8 | : $classes .= ' text-white'; 9 | @endphp 10 | 11 |
  • 12 | merge(['class' => $classes]) }}>{{ $title }} 13 |
  • -------------------------------------------------------------------------------- /resources/views/components/spinner/code/black.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/views/components/spinner/code/white.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resources/views/components/spinner/image/black.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/views/components/spinner/image/white.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/views/components/spinner/index.blade.php: -------------------------------------------------------------------------------- 1 | @props(['type' => 'white', 'is_image' => false]) 2 | 3 | merge([]) }}> 4 | @if ($type === 'white') 5 | @if ($is_image) 6 | 7 | @else 8 | 9 | @endif 10 | @else 11 | @if ($is_image) 12 | 13 | @else 14 | 15 | @endif 16 | @endif 17 | 18 | -------------------------------------------------------------------------------- /resources/views/components/tab.blade.php: -------------------------------------------------------------------------------- 1 | @props(['name']) 2 | 3 |
    9 | {{ $slot }} 10 |
    -------------------------------------------------------------------------------- /resources/views/components/table-responsive.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | merge(['class' => 'table-auto min-w-full']) }}> 3 | 4 | {{ $slot }} 5 | 6 |
    7 |
    8 | -------------------------------------------------------------------------------- /resources/views/components/table.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $tableClasses = ' table-auto w-full '; 3 | @endphp 4 | 5 |
    6 | 7 | merge(['class' => $tableClasses]) }}> 8 | 9 | {{ $thead }} 10 | 11 | 12 | {{ $slot }} 13 | 14 |
    15 |
    16 | -------------------------------------------------------------------------------- /resources/views/components/table/cell.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'padding' => null, 3 | 'wrap' => 'whitespace-nowrap', 4 | ]) 5 | 6 | @php 7 | $padding = $padding ?? 'px-4 py-4'; 8 | @endphp 9 | merge(['class' => "{$padding} {$wrap} text-sm"]) }}> 10 | {{ $slot }} 11 | 12 | -------------------------------------------------------------------------------- /resources/views/components/table/checkbox.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | {{ $label }} 4 |
    5 | -------------------------------------------------------------------------------- /resources/views/components/table/row.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'tableRowclass' => null, 3 | 'hasDivider' => false, 4 | 'divider' => 'divide-x divide-slate-100' 5 | ]) 6 | 7 | @php 8 | $divider = $hasDivider ? $divider : ''; 9 | @endphp 10 | 11 | merge(['class' => "hover:bg-indigo-50 dark:hover:bg-indigo-500/25 {$divider}"]) }}> 12 | {{ $slot }} 13 | 14 | -------------------------------------------------------------------------------- /resources/views/components/table/sort.blade.php: -------------------------------------------------------------------------------- 1 | @if(in_array($field, $orderable)) 2 | @if($sortBy !== $field) 3 | 4 | @elseif($sortBy === $field && $sortDirection == 'desc') 5 | 6 | @else 7 | 8 | @endif 9 | @endif -------------------------------------------------------------------------------- /resources/views/components/table/tbody.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{ $slot }} 3 | 4 | -------------------------------------------------------------------------------- /resources/views/components/table/td.blade.php: -------------------------------------------------------------------------------- 1 | merge([ 2 | 'class' => 'p-2 text-left text-gray-800', 3 | ]) }}> 4 | {{ $slot }} 5 | -------------------------------------------------------------------------------- /resources/views/components/table/tfoot.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{ $slot }} 3 | 4 | -------------------------------------------------------------------------------- /resources/views/components/table/thead.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ $slot }} 4 | 5 | -------------------------------------------------------------------------------- /resources/views/components/table/tr.blade.php: -------------------------------------------------------------------------------- 1 | merge([ 2 | 'class' => 'border-b border-blue-50 whitespace-nowrap text-sm text-gray-800', 3 | ]) }}> 4 | {{ $slot }} 5 | -------------------------------------------------------------------------------- /resources/views/components/text-input.blade.php: -------------------------------------------------------------------------------- 1 | @props(['disabled' => false]) 2 | 3 | merge(['class' => 'rounded-md shadow-sm border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50']) !!}> 4 | -------------------------------------------------------------------------------- /resources/views/components/toggle-switch.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | merge(['class'=>"toggle-checkbox absolute block w-6 h-6 rounded-full bg-white border-4 appearance-none cursor-pointer"])}}/> 3 | 4 |
    -------------------------------------------------------------------------------- /resources/views/components/trix.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'label' => '', 3 | 'name' => '', 4 | ]) 5 | 6 | @php 7 | $id = $name ? str_replace(' ', '', $name) : uniqid(); 8 | @endphp 9 | 10 |
    11 | @if ($label) 12 | 13 | @endif 14 | 15 |
    16 | 17 |
    18 | 19 | @error($name) 20 | {{ $message }} 21 | @enderror 22 |
    -------------------------------------------------------------------------------- /resources/views/components/unsplash.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | @livewire('unsplash') 3 |
    -------------------------------------------------------------------------------- /resources/views/components/validation-errors.blade.php: -------------------------------------------------------------------------------- 1 | @if ($errors->any()) 2 |
    3 |
    {{ __('Whoops! Something went wrong.') }}
    4 | 5 |
      6 | @foreach ($errors->all() as $error) 7 |
    • {{ $error }}
    • 8 | @endforeach 9 |
    10 |
    11 | @endif 12 | -------------------------------------------------------------------------------- /resources/views/emails/customer-registration.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {{__('Welcome to')}} {{ Helpers::settings('site_title') }}! 8 | 9 | 10 |

    {{__('Welcome to')}} {{ Helpers::settings('site_title') }}!

    11 |

    {{__('Thank you for creating an account with us. We are excited to have you as a customer')}}.

    12 |

    {{__('Here is your account information')}}:

    13 | 18 |

    {{__('Please keep this information safe for future reference')}}.

    19 |

    {{__('You can')}} {{__('login to your account')}}

    20 |

    {{__('We hope you enjoy shopping with us')}}!

    21 | 22 | -------------------------------------------------------------------------------- /resources/views/emails/order-form.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {{__('New Order Form')}} 8 | 9 | 10 |

    {{__('New Order Form')}}

    11 |

    {{__('A new order form has been submitted')}}.

    12 |

    {{__('Here are the details')}}:

    13 | 18 |

    {{__('Thank you for your order!')}}

    19 | 20 | -------------------------------------------------------------------------------- /resources/views/errors/401.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('title', __('Unauthorized')) 4 | @section('code', '401') 5 | @section('message', __('Unauthorized')) 6 | -------------------------------------------------------------------------------- /resources/views/errors/403.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('title', __('Forbidden')) 4 | @section('code', '403') 5 | @section('message', __($exception->getMessage() ?: 'Forbidden')) 6 | -------------------------------------------------------------------------------- /resources/views/errors/419.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('title', __('Page Expired')) 4 | @section('code', '419') 5 | @section('message', __('Page Expired')) 6 | -------------------------------------------------------------------------------- /resources/views/errors/429.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('title', __('Too Many Requests')) 4 | @section('code', '429') 5 | @section('message', __('Too Many Requests')) 6 | -------------------------------------------------------------------------------- /resources/views/errors/500.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('title', __('Server Error')) 4 | @section('code', '500') 5 | @section('message', __('Server Error')) 6 | -------------------------------------------------------------------------------- /resources/views/errors/503.blade.php: -------------------------------------------------------------------------------- 1 | @extends('errors::illustrated-layout') 2 | 3 | @section('title', __('Service Unavailable')) 4 | @section('code', '503') 5 | @section('message', __('Service Unavailable')) 6 | -------------------------------------------------------------------------------- /resources/views/front/blog-page.blade.php: -------------------------------------------------------------------------------- 1 | @section('title', $blog?->title) 2 | 3 |
    4 |
    5 | {{ $blog->title }} 6 |

    7 | {{ $blog->title }} 8 |

    9 |

    {{ $blog->created_at }}

    10 |

    {!! clean($blog->body) !!}

    11 |
    12 |
    13 |
    -------------------------------------------------------------------------------- /resources/views/front/brand-page.blade.php: -------------------------------------------------------------------------------- 1 | @section('title', $brand?->name) 2 | 3 | 4 |
    5 | 6 |
    7 |
    -------------------------------------------------------------------------------- /resources/views/front/brands.blade.php: -------------------------------------------------------------------------------- 1 | 2 | @section('title', __('Brands')) 3 | 4 | 5 |
    6 | 7 |
    8 |
    -------------------------------------------------------------------------------- /resources/views/front/catalog.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('title', __('Catalog')) 4 | 5 | @section('content') 6 |
    7 | 8 |
    9 | @endsection -------------------------------------------------------------------------------- /resources/views/front/categories.blade.php: -------------------------------------------------------------------------------- 1 | 2 | @section('title', __('Categories')) 3 | 4 | 5 |
    6 | 7 |
    8 |
    -------------------------------------------------------------------------------- /resources/views/front/checkout.blade.php: -------------------------------------------------------------------------------- 1 | @section('title', __('Checkout')) 2 | 3 |
    4 |
    5 | 6 |
    7 |
    8 |
    9 | -------------------------------------------------------------------------------- /resources/views/front/contact.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('title', __('Contact')) 4 | 5 | @section('content') 6 |
    7 | 8 |
    9 | @endsection -------------------------------------------------------------------------------- /resources/views/front/dynamic-page.blade.php: -------------------------------------------------------------------------------- 1 | @section('title', $page->title) 2 | 3 |
    4 |
    5 | 6 | {{ $page->title }} 8 | 9 |

    10 | {{ $page->title }} 11 |

    12 |

    13 | {!! $page->details !!} 14 |

    15 |
    16 |
    17 |
    18 | -------------------------------------------------------------------------------- /resources/views/front/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('title', __('Home')) 4 | 5 | @section('content') 6 | 7 | 8 | 9 | @endsection -------------------------------------------------------------------------------- /resources/views/front/order-summary.blade.php: -------------------------------------------------------------------------------- 1 | @section('title', __('Thank you for your order')) 2 | 3 | 4 | @livewire('front.thank-you', ['order' => $order], key($order->id)) 5 | -------------------------------------------------------------------------------- /resources/views/front/product.blade.php: -------------------------------------------------------------------------------- 1 | @section('title', $product?->name) 2 | 3 | 4 |
    5 | 6 |
    7 |
    -------------------------------------------------------------------------------- /resources/views/front/subcategories.blade.php: -------------------------------------------------------------------------------- 1 | 2 | @section('title', __('Subcategories')) 3 | 4 | 5 |
    6 | 7 |
    8 |
    -------------------------------------------------------------------------------- /resources/views/front/subcategory-page.blade.php: -------------------------------------------------------------------------------- 1 | @section('title', $subcategory->category?->name.' '. $subcategory?->name) 2 | 3 | 4 |
    5 | 6 |
    7 |
    -------------------------------------------------------------------------------- /resources/views/front/user-account.blade.php: -------------------------------------------------------------------------------- 1 | @section('title', __('My Account')) 2 | 3 |
    4 |
    5 |
    6 |
    7 |

    8 | {{ __('My Account') }} 9 |

    10 |
    11 |
    12 | @livewire('front.account') 13 |
    14 |
    15 |
    16 |
    17 |
    18 | -------------------------------------------------------------------------------- /resources/views/layouts/guest.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | @yield('title') || {{ config('app.name') }} 11 | 12 | 13 | 14 | 15 | 16 | @vite('resources/css/app.css') 17 | 18 | 19 | 20 | 21 |
    22 | @yield('content') 23 | @isset($slot) 24 | {{ $slot }} 25 | @endisset 26 |
    27 | 28 | @vite('resources/js/app.js') 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /resources/views/livewire/admin/cache.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 10 |
    11 | -------------------------------------------------------------------------------- /resources/views/livewire/admin/product/promo-prices.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | {{ __('Promotion for all products') }} 5 | 6 | 7 |
    8 |
    9 |
    10 | 11 | 12 |
    13 |
    14 | 15 | 16 |
    17 | 18 |
    19 |
    20 |
    21 |
    22 |
    23 | -------------------------------------------------------------------------------- /resources/views/livewire/front/add-to-cart.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 8 |
    9 | -------------------------------------------------------------------------------- /resources/views/livewire/front/dynamic-page.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | {{-- Because she competes with no one, no one can compete with her. --}} 3 |
    4 | -------------------------------------------------------------------------------- /resources/views/livewire/multiple-uploads.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | {{-- To attain knowledge, add things every day; To attain wisdom, subtract things every day. --}} 3 |
    4 | -------------------------------------------------------------------------------- /resources/views/livewire/select.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 18 |
    19 | -------------------------------------------------------------------------------- /resources/views/livewire/toggle-button.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | 6 |
    7 | 8 | -------------------------------------------------------------------------------- /resources/views/livewire/trix.blade.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 6 | 7 |
    8 |
    9 | 10 | @pushOnce('styles') 11 | 12 | @endPushOnce 13 | 14 | @pushOnce('scripts') 15 | 16 | @endPushOnce 17 | -------------------------------------------------------------------------------- /resources/views/partials/css.blade.php: -------------------------------------------------------------------------------- 1 | @vite('resources/css/app.css') 2 | 3 | @livewireStyles 4 | 5 | 6 | 9 | 12 | 13 | @stack('styles') 14 | 15 | 20 | -------------------------------------------------------------------------------- /resources/views/partials/js.blade.php: -------------------------------------------------------------------------------- 1 | 2 | @vite('resources/js/app.js') 3 | 4 | @livewireScripts 5 | 6 | 9 | 10 | 13 | 16 | @include('sweetalert::alert') 17 | 18 | 19 | 20 | @stack('scripts') 21 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/button.blade.php: -------------------------------------------------------------------------------- 1 | @props(['url', 'color' => 'primary', 'align' => 'center']) 2 | 3 | 4 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/footer.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/header.blade.php: -------------------------------------------------------------------------------- 1 | @props(['url']) 2 | 3 | 4 | 5 | {{ $slot }} 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/message.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{-- Header --}} 3 | 4 | 5 | {{ config('app.name') }} 6 | 7 | 8 | 9 | {{-- Body --}} 10 | {{ $slot }} 11 | 12 | {{-- Subcopy --}} 13 | @isset($subcopy) 14 | 15 | 16 | {{ $subcopy }} 17 | 18 | 19 | @endisset 20 | 21 | {{-- Footer --}} 22 | 23 | 24 | © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.') 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/panel.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/subcopy.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/table.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | {{ Illuminate\Mail\Markdown::parse($slot) }} 3 |
    4 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/text/button.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }}: {{ $url }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/text/footer.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/text/header.blade.php: -------------------------------------------------------------------------------- 1 | [{{ $slot }}]({{ $url }}) 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/text/layout.blade.php: -------------------------------------------------------------------------------- 1 | {!! strip_tags($header) !!} 2 | 3 | {!! strip_tags($slot) !!} 4 | @isset($subcopy) 5 | 6 | {!! strip_tags($subcopy) !!} 7 | @endisset 8 | 9 | {!! strip_tags($footer) !!} 10 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/text/message.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{-- Header --}} 3 | 4 | 5 | {{ config('app.name') }} 6 | 7 | 8 | 9 | {{-- Body --}} 10 | {{ $slot }} 11 | 12 | {{-- Subcopy --}} 13 | @isset($subcopy) 14 | 15 | 16 | {{ $subcopy }} 17 | 18 | 19 | @endisset 20 | 21 | {{-- Footer --}} 22 | 23 | 24 | © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.') 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/text/panel.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/text/subcopy.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/text/table.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /routes/api.php: -------------------------------------------------------------------------------- 1 | group(function () { 23 | Route::apiResource('products', ProductController::class); 24 | Route::post('products/bulk', [ProductController::class, 'bulkStore']); 25 | }); 26 | -------------------------------------------------------------------------------- /routes/channels.php: -------------------------------------------------------------------------------- 1 | id === (int) $id; 20 | }); 21 | -------------------------------------------------------------------------------- /routes/console.php: -------------------------------------------------------------------------------- 1 | comment(Inspiring::quote()); 21 | })->purpose('Display an inspiring quote'); 22 | -------------------------------------------------------------------------------- /screens/Catalog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/screens/Catalog.png -------------------------------------------------------------------------------- /screens/dashboard-product-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/screens/dashboard-product-create.png -------------------------------------------------------------------------------- /screens/dashboard-products.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/screens/dashboard-products.png -------------------------------------------------------------------------------- /screens/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/screens/dashboard.png -------------------------------------------------------------------------------- /screens/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zakarialabib/Laravel-Ecommerce/f28c14cb4eb7dba101156d242d72ea761d44c797/screens/home.png -------------------------------------------------------------------------------- /storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !public/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /storage/framework/.gitignore: -------------------------------------------------------------------------------- 1 | compiled.php 2 | config.php 3 | down 4 | events.scanned.php 5 | maintenance.php 6 | routes.php 7 | routes.scanned.php 8 | schedule-* 9 | services.json 10 | -------------------------------------------------------------------------------- /storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !data/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /storage/framework/cache/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/testing/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /tests/CreatesApplication.php: -------------------------------------------------------------------------------- 1 | make(Kernel::class)->bootstrap(); 21 | 22 | return $app; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /tests/Feature/ExampleTest.php: -------------------------------------------------------------------------------- 1 | get('/'); 20 | 21 | $response->assertStatus(200); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import { optimizeCssModules } from 'vite-plugin-optimize-css-modules'; 3 | import laravel from 'laravel-vite-plugin'; 4 | import livewire from '@defstudio/vite-livewire-plugin'; 5 | 6 | export default defineConfig({ 7 | plugins: [ 8 | optimizeCssModules(), 9 | laravel({ 10 | input: [ 11 | 'resources/css/app.css', 12 | 'resources/js/app.js', 13 | ], 14 | refresh: false, 15 | }), 16 | livewire({ 17 | refresh: ['resources/css/app.css'], 18 | }), 19 | ], 20 | }); 21 | --------------------------------------------------------------------------------