├── public ├── favicon.ico ├── robots.txt ├── assets │ └── json │ │ ├── img │ │ ├── avatars │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ ├── 6.png │ │ │ └── 7.png │ │ ├── elements │ │ │ ├── 1.png │ │ │ ├── 10.png │ │ │ ├── 11.png │ │ │ ├── 12.png │ │ │ ├── 13.png │ │ │ ├── 14.png │ │ │ ├── 15.png │ │ │ ├── 16.png │ │ │ ├── 17.png │ │ │ ├── 18.png │ │ │ ├── 19.png │ │ │ ├── 2.png │ │ │ ├── 20.png │ │ │ ├── 22.png │ │ │ ├── 23.png │ │ │ ├── 24.png │ │ │ ├── 25.png │ │ │ ├── 26.png │ │ │ ├── 27.png │ │ │ ├── 28.png │ │ │ ├── 29.png │ │ │ ├── 3.png │ │ │ ├── 30.png │ │ │ ├── 31.png │ │ │ ├── 32.png │ │ │ ├── 33.png │ │ │ ├── 34.png │ │ │ ├── 35.png │ │ │ ├── 36.png │ │ │ ├── 37.png │ │ │ ├── 38.png │ │ │ ├── 39.png │ │ │ ├── 4.png │ │ │ ├── 40.png │ │ │ ├── 41.png │ │ │ ├── 42.png │ │ │ ├── 43.png │ │ │ ├── 44.png │ │ │ ├── 45.png │ │ │ ├── 46.png │ │ │ ├── 47.png │ │ │ ├── 48.png │ │ │ ├── 49.png │ │ │ ├── 5.png │ │ │ ├── 50.png │ │ │ ├── 51.png │ │ │ ├── 52.png │ │ │ ├── 53.png │ │ │ ├── 54.png │ │ │ ├── 55.png │ │ │ ├── 56.jpg │ │ │ ├── 6.png │ │ │ ├── 7.png │ │ │ ├── 8.png │ │ │ └── 9.png │ │ ├── backgrounds │ │ │ └── 18.jpg │ │ ├── favicon │ │ │ └── favicon.ico │ │ ├── icons │ │ │ ├── brands │ │ │ │ ├── aws.png │ │ │ │ ├── asana.png │ │ │ │ ├── github.png │ │ │ │ ├── google.png │ │ │ │ ├── slack.png │ │ │ │ ├── behance.png │ │ │ │ ├── dribbble.png │ │ │ │ ├── facebook.png │ │ │ │ ├── linkedin.png │ │ │ │ ├── instagram.png │ │ │ │ ├── mailchimp.png │ │ │ │ ├── twitter-dark.png │ │ │ │ └── twitter-light.png │ │ │ ├── misc │ │ │ │ ├── aviato.png │ │ │ │ ├── bitbank.png │ │ │ │ ├── zipcar.png │ │ │ │ └── triangle-light.png │ │ │ └── payments │ │ │ │ ├── citi.png │ │ │ │ ├── gumroad.png │ │ │ │ ├── stripes.png │ │ │ │ ├── american-bank.png │ │ │ │ ├── digital-ocean.png │ │ │ │ └── mastercard-2.png │ │ ├── illustrations │ │ │ ├── 404.png │ │ │ ├── tree.png │ │ │ ├── tree-3.png │ │ │ ├── trophy.png │ │ │ ├── misc-mask-light.png │ │ │ ├── auth-basic-mask-light.png │ │ │ └── misc-under-maintenance.png │ │ └── layouts │ │ │ ├── layout-fluid-light.png │ │ │ ├── layout-container-light.png │ │ │ ├── layout-without-menu-light.png │ │ │ └── layout-without-navbar-light.png │ │ └── user-profile.json ├── index.php └── .htaccess ├── resources ├── css │ └── app.css ├── assets │ ├── vendor │ │ ├── scss │ │ │ ├── _bootstrap-extended │ │ │ │ ├── _helpers.scss │ │ │ │ ├── forms │ │ │ │ │ ├── _validation.scss │ │ │ │ │ ├── _labels.scss │ │ │ │ │ ├── _form-range.scss │ │ │ │ │ ├── _form-select.scss │ │ │ │ │ └── _form-control.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _type.scss │ │ │ │ ├── _forms.scss │ │ │ │ ├── _offcanvas.scss │ │ │ │ ├── _progress.scss │ │ │ │ ├── mixins │ │ │ │ │ ├── _misc.scss │ │ │ │ │ ├── _border-radius.scss │ │ │ │ │ └── _caret.scss │ │ │ │ ├── _include.scss │ │ │ │ ├── helpers │ │ │ │ │ └── _color-bg.scss │ │ │ │ ├── _spinners.scss │ │ │ │ ├── _breadcrumb.scss │ │ │ │ ├── _tooltip.scss │ │ │ │ ├── _toasts.scss │ │ │ │ ├── _functions.scss │ │ │ │ ├── _reboot.scss │ │ │ │ ├── _alert.scss │ │ │ │ ├── _dropdown.scss │ │ │ │ ├── _badge.scss │ │ │ │ ├── _root.scss │ │ │ │ ├── _list-group.scss │ │ │ │ ├── _popover.scss │ │ │ │ └── _navbar.scss │ │ │ ├── _custom-styles.scss │ │ │ ├── core.scss │ │ │ ├── pages │ │ │ │ ├── page-account-settings.scss │ │ │ │ ├── page-icons.scss │ │ │ │ ├── page-misc.scss │ │ │ │ └── page-auth.scss │ │ │ ├── _components │ │ │ │ ├── _include.scss │ │ │ │ ├── _common.scss │ │ │ │ ├── _app-brand.scss │ │ │ │ ├── _base.scss │ │ │ │ ├── _root.scss │ │ │ │ └── _footer.scss │ │ │ ├── _components.scss │ │ │ ├── _custom-variables │ │ │ │ ├── _components.scss │ │ │ │ └── _bootstrap-extended.scss │ │ │ ├── _bootstrap-extended.scss │ │ │ ├── _bootstrap.scss │ │ │ └── _colors.scss │ │ ├── libs │ │ │ ├── highlight │ │ │ │ ├── highlight-github.scss │ │ │ │ ├── highlight.scss │ │ │ │ └── highlight.js │ │ │ ├── node-waves │ │ │ │ ├── node-waves.js │ │ │ │ └── node-waves.scss │ │ │ ├── masonry │ │ │ │ └── masonry.js │ │ │ ├── apex-charts │ │ │ │ ├── apexcharts.js │ │ │ │ └── apex-charts.scss │ │ │ ├── jquery │ │ │ │ └── jquery.js │ │ │ ├── perfect-scrollbar │ │ │ │ ├── perfect-scrollbar.js │ │ │ │ └── perfect-scrollbar.scss │ │ │ └── popper │ │ │ │ └── popper.js │ │ └── js │ │ │ └── bootstrap.js │ ├── js │ │ ├── form-basic-inputs.js │ │ ├── ui-popover.js │ │ ├── pages-account-settings-account.js │ │ ├── ui-modals.js │ │ ├── extended-ui-perfect-scrollbar.js │ │ ├── ui-toasts.js │ │ └── config.js │ └── css │ │ └── demo.css ├── js │ ├── bootstrap.js │ └── app.js └── views │ ├── content │ ├── layouts-example │ │ ├── layouts-blank.blade.php │ │ ├── layouts-container.blade.php │ │ ├── layouts-without-navbar.blade.php │ │ ├── layouts-fluid.blade.php │ │ └── layouts-without-menu.blade.php │ ├── pages │ │ ├── pages-misc-error.blade.php │ │ └── pages-misc-under-maintenance.blade.php │ ├── authentications │ │ └── auth-forgot-password-basic.blade.php │ └── user-interface │ │ ├── ui-footer.blade.php │ │ └── ui-alerts.blade.php │ ├── layouts │ ├── blankLayout.blade.php │ ├── sections │ │ ├── scriptsIncludes.blade.php │ │ ├── navbar │ │ │ └── navbar.blade.php │ │ ├── scripts.blade.php │ │ ├── styles.blade.php │ │ ├── footer │ │ │ └── footer.blade.php │ │ └── menu │ │ │ ├── submenu.blade.php │ │ │ └── verticalMenu.blade.php │ ├── commonMaster.blade.php │ └── contentNavbarLayout.blade.php │ └── _partials │ └── macros.blade.php ├── database ├── .gitignore ├── seeders │ └── DatabaseSeeder.php ├── migrations │ ├── 0001_01_01_000001_create_cache_table.php │ ├── 0001_01_01_000000_create_users_table.php │ └── 0001_01_01_000002_create_jobs_table.php └── factories │ └── UserFactory.php ├── bootstrap ├── cache │ └── .gitignore ├── providers.php └── app.php ├── storage ├── logs │ └── .gitignore ├── app │ ├── private │ │ └── .gitignore │ ├── public │ │ └── .gitignore │ └── .gitignore └── framework │ ├── testing │ └── .gitignore │ ├── views │ └── .gitignore │ ├── cache │ ├── data │ │ └── .gitignore │ └── .gitignore │ ├── sessions │ └── .gitignore │ └── .gitignore ├── .eslintignore ├── .stylelintignore ├── .prettierignore ├── app ├── Http │ └── Controllers │ │ ├── Controller.php │ │ ├── icons │ │ └── RiIcons.php │ │ ├── cards │ │ └── CardBasic.php │ │ ├── tables │ │ └── Basic.php │ │ ├── pages │ │ ├── MiscError.php │ │ ├── MiscUnderMaintenance.php │ │ ├── AccountSettingsAccount.php │ │ ├── AccountSettingsConnections.php │ │ └── AccountSettingsNotifications.php │ │ ├── layouts │ │ ├── Blank.php │ │ ├── Fluid.php │ │ ├── Container.php │ │ ├── WithoutMenu.php │ │ └── WithoutNavbar.php │ │ ├── user_interface │ │ ├── Alerts.php │ │ ├── Badges.php │ │ ├── Footer.php │ │ ├── Modals.php │ │ ├── Navbar.php │ │ ├── Toasts.php │ │ ├── Buttons.php │ │ ├── Carousel.php │ │ ├── Collapse.php │ │ ├── Progress.php │ │ ├── Spinners.php │ │ ├── Accordion.php │ │ ├── Dropdowns.php │ │ ├── Offcanvas.php │ │ ├── TabsPills.php │ │ ├── ListGroups.php │ │ ├── Typography.php │ │ ├── TooltipsPopovers.php │ │ └── PaginationBreadcrumbs.php │ │ ├── dashboard │ │ └── Analytics.php │ │ ├── extended_ui │ │ ├── TextDivider.php │ │ └── PerfectScrollbar.php │ │ ├── form_elements │ │ ├── BasicInput.php │ │ └── InputGroups.php │ │ ├── authentications │ │ ├── LoginBasic.php │ │ ├── RegisterBasic.php │ │ └── ForgotPasswordBasic.php │ │ └── form_layouts │ │ ├── VerticalForm.php │ │ └── HorizontalForm.php ├── Providers │ ├── AppServiceProvider.php │ └── MenuServiceProvider.php └── Models │ └── User.php ├── tests ├── TestCase.php ├── Unit │ └── ExampleTest.php └── Feature │ └── ExampleTest.php ├── .styleci.yml ├── .editorconfig ├── routes └── console.php ├── hire-us.html ├── .gitignore ├── .vscode ├── extensions.json └── settings.json ├── artisan ├── .eslintrc.json ├── .prettierrc.json ├── documentation.html ├── LICENSE ├── config ├── services.php ├── variables.php └── filesystems.php ├── phpunit.xml ├── .env.example ├── .env ├── vite.icons.plugin.js ├── vite.config.js ├── composer.json └── package.json /public/favicon.ico: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resources/css/app.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite* 2 | -------------------------------------------------------------------------------- /bootstrap/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /storage/app/private/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/app/public/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/testing/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | **/*.* 2 | !resources/assets/vendor/js/*.js 3 | -------------------------------------------------------------------------------- /.stylelintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | build 4 | _temp/ 5 | -------------------------------------------------------------------------------- /storage/framework/cache/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | public/assets/vendor 4 | -------------------------------------------------------------------------------- /storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !data/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !private/ 3 | !public/ 4 | !.gitignore 5 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_helpers.scss: -------------------------------------------------------------------------------- 1 | @import "helpers/color-bg"; 2 | -------------------------------------------------------------------------------- /resources/assets/vendor/libs/highlight/highlight-github.scss: -------------------------------------------------------------------------------- 1 | @import "highlight.js/styles/github.css"; 2 | -------------------------------------------------------------------------------- /resources/assets/vendor/libs/node-waves/node-waves.js: -------------------------------------------------------------------------------- 1 | import nodeWaves from 'node-waves/src/js/waves'; 2 | 3 | export { nodeWaves }; 4 | -------------------------------------------------------------------------------- /app/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | Blank Page 7 | @endsection 8 | -------------------------------------------------------------------------------- /.styleci.yml: -------------------------------------------------------------------------------- 1 | php: 2 | preset: laravel 3 | version: 10.0 4 | disabled: 5 | - no_unused_imports 6 | finder: 7 | not-name: 8 | - index.php 9 | js: 10 | finder: 11 | not-name: 12 | - webpack.mix.js 13 | css: true 14 | -------------------------------------------------------------------------------- /resources/assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.js: -------------------------------------------------------------------------------- 1 | import PerfectScrollbar from 'perfect-scrollbar/dist/perfect-scrollbar'; 2 | 3 | try { 4 | window.PerfectScrollbar = PerfectScrollbar; 5 | } catch (e) {} 6 | 7 | export { PerfectScrollbar }; 8 | -------------------------------------------------------------------------------- /resources/assets/js/form-basic-inputs.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Form Basic Inputs 3 | */ 4 | 5 | 'use strict'; 6 | 7 | (function () { 8 | // Indeterminate checkbox 9 | const checkbox = document.getElementById('defaultCheck2'); 10 | checkbox.indeterminate = true; 11 | })(); 12 | -------------------------------------------------------------------------------- /resources/views/layouts/blankLayout.blade.php: -------------------------------------------------------------------------------- 1 | @isset($pageConfigs) 2 | {!! Helper::updatePageConfig($pageConfigs) !!} 3 | @endisset 4 | 5 | @extends('layouts/commonMaster') 6 | 7 | @section('layoutContent') 8 | 9 | @yield('content') 10 | 11 | @endsection 12 | -------------------------------------------------------------------------------- /app/Http/Controllers/icons/RiIcons.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 2 7 | indent_style = space 8 | insert_final_newline = true 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 | -------------------------------------------------------------------------------- /app/Http/Controllers/layouts/Container.php: -------------------------------------------------------------------------------- 1 | comment(Inspiring::quote()); 10 | })->purpose('Display an inspiring quote'); 11 | -------------------------------------------------------------------------------- /app/Http/Controllers/user_interface/Accordion.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Hire Us 6 | 8 | 9 | 10 | 11 |

If you do not redirect please visit : https://themeselection.com/hire-us/

12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/Http/Controllers/authentications/ForgotPasswordBasic.php: -------------------------------------------------------------------------------- 1 | get('/'); 16 | 17 | $response->assertStatus(200); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_progress.scss: -------------------------------------------------------------------------------- 1 | /* Progress 2 | ******************************************************************************* */ 3 | 4 | .progress-bar { 5 | background-color: var(--#{$prefix}primary); 6 | color: var(--#{$prefix}white); 7 | } 8 | 9 | .progress-bar:first-child { 10 | @include border-start-radius($progress-border-radius); 11 | } 12 | .progress-bar:last-child { 13 | @include border-end-radius($progress-border-radius); 14 | } 15 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_custom-variables/_components.scss: -------------------------------------------------------------------------------- 1 | // ================================================================================================ 2 | // ? TIP: It is recommended to use this file for overriding component variables (_components/_variables.scss). 3 | // Copy and paste variables as needed, modify their values, and remove the !default flag. 4 | // ================================================================================================ 5 | 6 | // $menu-color: #000 !default; 7 | -------------------------------------------------------------------------------- /artisan: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | handleCommand(new ArgvInput); 17 | 18 | exit($status); 19 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/mixins/_misc.scss: -------------------------------------------------------------------------------- 1 | // Keyframes 2 | // ******************************************************************************* 3 | 4 | @mixin keyframes($name) { 5 | @keyframes #{$name} { 6 | @content; 7 | } 8 | } 9 | 10 | // icons 11 | // ******************************************************************************* 12 | 13 | @mixin icon-base($size: var(--#{$prefix}icon-size)) { 14 | block-size: $size; 15 | font-size: $size; 16 | inline-size: $size; 17 | } 18 | -------------------------------------------------------------------------------- /resources/assets/js/ui-popover.js: -------------------------------------------------------------------------------- 1 | // /** 2 | // * UI Tooltips & Popovers 3 | // */ 4 | 5 | 'use strict'; 6 | 7 | (function () { 8 | const popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')); 9 | const popoverList = popoverTriggerList.map(function (popoverTriggerEl) { 10 | // added { html: true, sanitize: false } option to render button in content area of popover 11 | return new bootstrap.Popover(popoverTriggerEl, { html: true, sanitize: false }); 12 | }); 13 | })(); 14 | -------------------------------------------------------------------------------- /resources/views/layouts/sections/scriptsIncludes.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | use Illuminate\Support\Facades\Vite; 3 | @endphp 4 | 5 | @vite(['resources/assets/vendor/js/helpers.js']) 6 | 7 | 8 | @vite(['resources/assets/js/config.js']) 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/Providers/AppServiceProvider.php: -------------------------------------------------------------------------------- 1 | withRouting( 9 | web: __DIR__.'/../routes/web.php', 10 | commands: __DIR__.'/../routes/console.php', 11 | health: '/up', 12 | ) 13 | ->withMiddleware(function (Middleware $middleware) { 14 | // 15 | }) 16 | ->withExceptions(function (Exceptions $exceptions) { 17 | // 18 | })->create(); -------------------------------------------------------------------------------- /database/seeders/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | create(); 17 | 18 | User::factory()->create([ 19 | 'name' => 'Test User', 20 | 'email' => 'test@example.com', 21 | ]); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_custom-variables/_bootstrap-extended.scss: -------------------------------------------------------------------------------- 1 | // =================================================================================================================== 2 | // ? TIP: It is recommended to use this file for overriding bootstrap extended variables (_bootstrap-extended/_variables.scss). 3 | // Copy and paste variables as needed, modify their values, and remove the !default flag. 4 | // =================================================================================================================== 5 | 6 | // $font-size-root: 14px !default; 7 | // $success: #00ff00 !default; 8 | -------------------------------------------------------------------------------- /resources/views/layouts/sections/navbar/navbar.blade.php: -------------------------------------------------------------------------------- 1 | 2 | @if (isset($navbarDetached) && $navbarDetached == 'navbar-detached') 3 | 6 | @else 7 | 10 | @endif 11 | 12 | -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | handleRequest(Request::capture()); 21 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "commonjs": true, 5 | "es6": true, 6 | "jquery": true 7 | }, 8 | "plugins": ["prettier"], 9 | "extends": ["airbnb-base", "plugin:prettier/recommended"], 10 | "rules": { 11 | "prettier/prettier": "error", 12 | "no-underscore-dangle": "off", 13 | "semi": ["error", "never"], 14 | "arrow-parens": ["error", "as-needed"], 15 | "no-param-reassign": "off", 16 | "no-plusplus": [ 17 | "error", 18 | { 19 | "allowForLoopAfterthoughts": true 20 | } 21 | ], 22 | "no-cond-assign": ["error", "except-parens"] 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_include.scss: -------------------------------------------------------------------------------- 1 | // Functions 2 | @import "bootstrap/scss/functions"; // Bootstrap core functions 3 | @import "functions"; // Bootstrap extended functions 4 | 5 | // Variables 6 | @import "../_custom-variables/bootstrap-extended"; // Bootstrap extended custom variable (for customization purpose) 7 | @import "variables"; // Bootstrap extended variable 8 | @import "bootstrap/scss/variables"; // Bootstrap core variable 9 | @import "bootstrap/scss/maps"; // Bootstrap core maps 10 | 11 | // Mixins 12 | @import "bootstrap/scss/mixins"; // Bootstrap core mixins 13 | @import "mixins"; // Bootstrap extended mixins 14 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/helpers/_color-bg.scss: -------------------------------------------------------------------------------- 1 | $color-classes: $custom-theme-colors !default; 2 | 3 | @each $color, $value in $color-classes { 4 | .bg-label-#{$color} { 5 | background-color: color-mix(in sRGB, var(--#{$prefix}paper-bg) var(--#{$prefix}bg-label-tint-amount), var(--#{$prefix}#{$color})) if($enable-important-utilities, !important, null); 6 | @if $color == "light" { 7 | color: RGBA(color-contrast($value), var(--#{$prefix}bg-label-tint-amount)) if($enable-important-utilities, !important, null); 8 | } @else { 9 | color: var(--#{$prefix}#{$color}) if($enable-important-utilities, !important, null); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /resources/views/content/layouts-example/layouts-container.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts/contentNavbarLayout') 2 | 3 | @section('title', 'Container - Layouts') 4 | 5 | @section('content') 6 | 7 |
8 |
9 | Layout container 10 |
11 |
12 |

Layout container

13 |

Container layout sets a max-width at each responsive breakpoint.

14 |
15 |
16 | 17 | 18 | 19 | @endsection -------------------------------------------------------------------------------- /resources/views/content/layouts-example/layouts-without-navbar.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $isNavbar = false; 3 | @endphp 4 | 5 | @extends('layouts/contentNavbarLayout') 6 | 7 | @section('title', 'Without navbar - Layouts') 8 | 9 | @section('content') 10 | 11 | 12 |
13 |
14 | Layout without navbar 15 |
16 |
17 |

Layout without Navbar

18 |

Layout does not contain Navbar component.

19 |
20 |
21 | 22 | 23 | @endsection 24 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "avoid", 3 | "bracketSpacing": true, 4 | "bracketSameLine": true, 5 | "htmlWhitespaceSensitivity": "css", 6 | "insertPragma": false, 7 | "jsxSingleQuote": true, 8 | "printWidth": 120, 9 | "proseWrap": "preserve", 10 | "quoteProps": "as-needed", 11 | "requirePragma": false, 12 | "semi": true, 13 | "singleQuote": true, 14 | "tabWidth": 2, 15 | "trailingComma": "none", 16 | "useTabs": false, 17 | "endOfLine": "lf", 18 | "embeddedLanguageFormatting": "auto", 19 | "overrides": [ 20 | { 21 | "files": [ 22 | "full-version/resources/assets/vendor/js/*.js" 23 | ], 24 | "options": { 25 | "semi": false 26 | } 27 | } 28 | ] 29 | } -------------------------------------------------------------------------------- /documentation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Materio - Bootstrap 5 HTML + Laravel Admin Template 5 | 9 | 10 | 11 | 12 |

13 | If you do not redirect please visit : 14 | https://demos.themeselection.com/materio-bootstrap-html-admin-template/documentation/laravel-introduction.html 18 |

19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/views/content/layouts-example/layouts-fluid.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $container = 'container-fluid'; 3 | $containerNav = 'container-fluid'; 4 | @endphp 5 | 6 | @extends('layouts/contentNavbarLayout') 7 | 8 | @section('title', 'Fluid - Layouts') 9 | 10 | @section('content') 11 | 12 |
13 |
14 | Layout fluid 15 |
16 |
17 |

Layout fluid

18 |

Fluid layout sets a 100% width at each responsive breakpoint.

19 |
20 |
21 | 22 | @endsection -------------------------------------------------------------------------------- /app/Providers/MenuServiceProvider.php: -------------------------------------------------------------------------------- 1 | app->make('view')->share('menuData', [$verticalMenuData]); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /resources/views/content/layouts-example/layouts-without-menu.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $isMenu = false; 3 | $navbarHideToggle = false; 4 | @endphp 5 | 6 | @extends('layouts/contentNavbarLayout') 7 | 8 | @section('title', 'Without menu - Layouts') 9 | 10 | @section('content') 11 | 12 | 13 |
14 |
15 | Layout without menu 16 |
17 |
18 |

Layout without Menu (Navigation)

19 | 20 |
21 |
22 | 23 | 24 | @endsection -------------------------------------------------------------------------------- /resources/views/layouts/sections/scripts.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | @vite(['resources/assets/vendor/libs/jquery/jquery.js', 'resources/assets/vendor/libs/popper/popper.js', 'resources/assets/vendor/js/bootstrap.js', 'resources/assets/vendor/libs/node-waves/node-waves.js']) 4 | 5 | @vite(['resources/assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.js', 'resources/assets/vendor/js/menu.js']) 6 | 7 | @yield('vendor-script') 8 | 9 | 10 | @vite(['resources/assets/js/main.js']) 11 | 12 | 13 | 14 | @stack('pricing-script') 15 | 16 | 17 | @yield('page-script') 18 | 19 | 20 | 21 | @vite(['resources/js/app.js']) 22 | 23 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_spinners.scss: -------------------------------------------------------------------------------- 1 | /* Spinners */ 2 | 3 | /* Large size */ 4 | .spinner-border-lg, 5 | .spinner-grow-lg { 6 | --#{$prefix}spinner-border-width: #{$spinner-border-width-lg}; 7 | --#{$prefix}spinner-height: #{$spinner-height-lg}; 8 | --#{$prefix}spinner-width: #{$spinner-width-lg}; 9 | } 10 | 11 | /* Within button 12 | ******************************************************************************* */ 13 | 14 | .btn { 15 | .spinner-border, 16 | .spinner-grow { 17 | --#{$prefix}spinner-height: 1em; 18 | --#{$prefix}spinner-width: 1em; 19 | inset-block-start: -.0625rem; 20 | } 21 | 22 | .spinner-border { 23 | --#{$prefix}spinner-border-width: .15em; 24 | } 25 | } 26 | 27 | @keyframes spinner-border-rtl { 28 | to { 29 | transform: rotate(-360deg); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews -Indexes 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Handle Authorization Header 9 | RewriteCond %{HTTP:Authorization} . 10 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 11 | 12 | # Handle X-XSRF-Token Header 13 | RewriteCond %{HTTP:x-xsrf-token} . 14 | RewriteRule .* - [E=HTTP_X_XSRF_TOKEN:%{HTTP:X-XSRF-Token}] 15 | 16 | # Redirect Trailing Slashes If Not A Folder... 17 | RewriteCond %{REQUEST_FILENAME} !-d 18 | RewriteCond %{REQUEST_URI} (.+)/$ 19 | RewriteRule ^ %1 [L,R=301] 20 | 21 | # Send Requests To Front Controller... 22 | RewriteCond %{REQUEST_FILENAME} !-d 23 | RewriteCond %{REQUEST_FILENAME} !-f 24 | RewriteRule ^ index.php [L] 25 | 26 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | // Breadcrumbs 2 | // ******************************************************************************* 3 | 4 | 5 | .breadcrumb { 6 | --#{$prefix}breadcrumb-color: #{$breadcrumb-color}; 7 | } 8 | 9 | 10 | .breadcrumb-item { 11 | a { 12 | color: var(--#{$prefix}breadcrumb-color); 13 | 14 | &:hover, 15 | &:focus { 16 | color: var(--#{$prefix}breadcrumb-item-active-color); 17 | } 18 | } 19 | &:not(.active).icon-base.breadcrumb-icon { 20 | color: var(--#{$prefix}breadcrumb-divider-color); 21 | } 22 | } 23 | 24 | .breadcrumb-item.active a { 25 | &, 26 | &:hover, 27 | &:focus, 28 | &:active { 29 | color: inherit; 30 | } 31 | } 32 | 33 | .breadcrumb-custom-icon .breadcrumb-item + .breadcrumb-item::before { 34 | content: none !important; 35 | } 36 | -------------------------------------------------------------------------------- /resources/views/layouts/sections/styles.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | @vite(['resources/assets/vendor/fonts/iconify/iconify.css']) 9 | 10 | 11 | @vite(['resources/assets/vendor/libs/node-waves/node-waves.scss']) 12 | 13 | 14 | 15 | @vite(['resources/assets/vendor/scss/core.scss', 'resources/assets/css/demo.css']) 16 | 17 | 18 | @vite('resources/assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.scss') 19 | @yield('vendor-style') 20 | 21 | 22 | @yield('page-style') 23 | 24 | 25 | @vite(['resources/css/app.css']) 26 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/pages/page-icons.scss: -------------------------------------------------------------------------------- 1 | /* Page Icons (Page specific only) 2 | ******************************************************************************* */ 3 | 4 | @import "../_bootstrap-extended/include"; 5 | 6 | #icons-container { 7 | .icon-card { 8 | inline-size: 128px; 9 | 10 | .icon-base { 11 | @include icon-base(2rem); 12 | } 13 | } 14 | } 15 | 16 | @media (width <= 1024px) { 17 | #icons-container { 18 | .icon-card { 19 | flex: 1 1 auto; 20 | inline-size: 126px; 21 | } 22 | } 23 | } 24 | 25 | @include media-breakpoint-down(md) { 26 | #icons-container { 27 | .icon-card { 28 | inline-size: 131px; 29 | } 30 | } 31 | } 32 | 33 | @media (width <= 414px) { 34 | #icons-container { 35 | .icon-card { 36 | inline-size: 110px; 37 | } 38 | } 39 | } 40 | 41 | @media (width <= 375px) { 42 | #icons-container { 43 | .icon-card { 44 | inline-size: 150px; 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /resources/assets/js/pages-account-settings-account.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Account Settings - Account 3 | */ 4 | 5 | 'use strict'; 6 | 7 | document.addEventListener('DOMContentLoaded', function (e) { 8 | (function () { 9 | const deactivateAcc = document.querySelector('#formAccountDeactivation'); 10 | 11 | // Update/reset user image of account page 12 | let accountUserImage = document.getElementById('uploadedAvatar'); 13 | const fileInput = document.querySelector('.account-file-input'), 14 | resetFileInput = document.querySelector('.account-image-reset'); 15 | 16 | if (accountUserImage) { 17 | const resetImage = accountUserImage.src; 18 | fileInput.onchange = () => { 19 | if (fileInput.files[0]) { 20 | accountUserImage.src = window.URL.createObjectURL(fileInput.files[0]); 21 | } 22 | }; 23 | resetFileInput.onclick = () => { 24 | fileInput.value = ''; 25 | accountUserImage.src = resetImage; 26 | }; 27 | } 28 | })(); 29 | }); 30 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/pages/page-misc.scss: -------------------------------------------------------------------------------- 1 | // * Miscellaneous 2 | // ******************************************************************************* 3 | 4 | @import "../_bootstrap-extended/include"; 5 | 6 | // Misc wrapper styles 7 | .misc-wrapper { 8 | position: relative; 9 | display: flex; 10 | flex-direction: column; 11 | align-items: center; 12 | justify-content: center; 13 | padding: 1.25rem; 14 | min-block-size: 100vh; 15 | } 16 | 17 | // Misc background image styles 18 | .misc-bg { 19 | position: absolute; 20 | inline-size: 100%; 21 | inset-block-end: 0; 22 | inset-inline-start: 0; 23 | } 24 | 25 | // Misc object styles 26 | .misc-object, 27 | .misc-object-right { 28 | position: absolute; 29 | z-index: 1; 30 | } 31 | .misc-object { 32 | inset-block-end: 6%; 33 | inset-inline-start: 3%; 34 | } 35 | .misc-object-right { 36 | inset-block-end: 7%; 37 | inset-inline-end: 3%; 38 | } 39 | 40 | // Misc model style 41 | 42 | .misc-model { 43 | position: relative; 44 | inset-block-end: 3rem; 45 | } 46 | -------------------------------------------------------------------------------- /database/migrations/0001_01_01_000001_create_cache_table.php: -------------------------------------------------------------------------------- 1 | string('key')->primary(); 16 | $table->mediumText('value'); 17 | $table->integer('expiration'); 18 | }); 19 | 20 | Schema::create('cache_locks', function (Blueprint $table) { 21 | $table->string('key')->primary(); 22 | $table->string('owner'); 23 | $table->integer('expiration'); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | */ 30 | public function down(): void 31 | { 32 | Schema::dropIfExists('cache'); 33 | Schema::dropIfExists('cache_locks'); 34 | } 35 | }; 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 ThemeSelection 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_components/_common.scss: -------------------------------------------------------------------------------- 1 | /* Common 2 | ******************************************************************************* */ 3 | 4 | @import "../_bootstrap-extended/include"; 5 | 6 | /* Line Clamp with ellipsis 7 | ******************************************************************************* */ 8 | 9 | $clamp-numbers: ( 10 | "1": 1, 11 | "2": 2, 12 | "3": 3 13 | ) !default; 14 | 15 | @each $clamp-class, $clamp-value in $clamp-numbers { 16 | .line-clamp-#{$clamp-class} { 17 | display: -webkit-box; 18 | overflow: hidden; 19 | -webkit-box-orient: vertical; 20 | -webkit-line-clamp: $clamp-value; 21 | } 22 | } 23 | 24 | /* Background 25 | ******************************************************************************* */ 26 | 27 | .ui-bg-cover { 28 | background-color: rgb(0 0 0 / 0%); 29 | background-position: center center; 30 | background-size: cover; 31 | } 32 | 33 | .ui-bg-overlay-container, 34 | .ui-bg-video-container { 35 | position: relative; 36 | 37 | > * { 38 | position: relative; 39 | } 40 | } 41 | 42 | .ui-bg-overlay-container .ui-bg-overlay { 43 | position: absolute; 44 | display: block; 45 | inset: 0; 46 | } 47 | -------------------------------------------------------------------------------- /config/services.php: -------------------------------------------------------------------------------- 1 | [ 18 | 'token' => env('POSTMARK_TOKEN'), 19 | ], 20 | 21 | 'ses' => [ 22 | 'key' => env('AWS_ACCESS_KEY_ID'), 23 | 'secret' => env('AWS_SECRET_ACCESS_KEY'), 24 | 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), 25 | ], 26 | 27 | 'resend' => [ 28 | 'key' => env('RESEND_KEY'), 29 | ], 30 | 31 | 'slack' => [ 32 | 'notifications' => [ 33 | 'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'), 34 | 'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'), 35 | ], 36 | ], 37 | 38 | ]; 39 | -------------------------------------------------------------------------------- /app/Models/User.php: -------------------------------------------------------------------------------- 1 | */ 13 | use HasFactory, Notifiable; 14 | 15 | /** 16 | * The attributes that are mass assignable. 17 | * 18 | * @var list 19 | */ 20 | protected $fillable = [ 21 | 'name', 22 | 'email', 23 | 'password', 24 | ]; 25 | 26 | /** 27 | * The attributes that should be hidden for serialization. 28 | * 29 | * @var list 30 | */ 31 | protected $hidden = [ 32 | 'password', 33 | 'remember_token', 34 | ]; 35 | 36 | /** 37 | * Get the attributes that should be cast. 38 | * 39 | * @return array 40 | */ 41 | protected function casts(): array 42 | { 43 | return [ 44 | 'email_verified_at' => 'datetime', 45 | 'password' => 'hashed', 46 | ]; 47 | } 48 | } -------------------------------------------------------------------------------- /resources/assets/js/ui-modals.js: -------------------------------------------------------------------------------- 1 | /** 2 | * UI Modals 3 | */ 4 | 5 | 'use strict'; 6 | 7 | (function () { 8 | // On hiding modal, remove iframe video/audio to stop playing 9 | const youTubeModal = document.querySelector('#youTubeModal'), 10 | youTubeModalVideo = youTubeModal.querySelector('iframe'); 11 | youTubeModal.addEventListener('hidden.bs.modal', function () { 12 | youTubeModalVideo.setAttribute('src', ''); 13 | }); 14 | 15 | // Function to get and auto play youTube video 16 | const autoPlayYouTubeModal = function () { 17 | const modalTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="modal"]')); 18 | modalTriggerList.map(function (modalTriggerEl) { 19 | modalTriggerEl.onclick = function () { 20 | const theModal = this.getAttribute('data-bs-target'), 21 | videoSRC = this.getAttribute('data-theVideo'), 22 | videoSRCauto = `${videoSRC}?autoplay=1`, 23 | modalVideo = document.querySelector(`${theModal} iframe`); 24 | if (modalVideo) { 25 | modalVideo.setAttribute('src', videoSRCauto); 26 | } 27 | }; 28 | }); 29 | }; 30 | 31 | // Calling function on load 32 | autoPlayYouTubeModal(); 33 | })(); 34 | -------------------------------------------------------------------------------- /resources/assets/js/extended-ui-perfect-scrollbar.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Perfect Scrollbar 3 | */ 4 | 'use strict'; 5 | 6 | document.addEventListener('DOMContentLoaded', function () { 7 | (function () { 8 | const verticalExample = document.getElementById('vertical-example'), 9 | horizontalExample = document.getElementById('horizontal-example'), 10 | horizVertExample = document.getElementById('both-scrollbars-example'); 11 | 12 | // Vertical Example 13 | // -------------------------------------------------------------------- 14 | if (verticalExample) { 15 | new PerfectScrollbar(verticalExample, { 16 | wheelPropagation: false 17 | }); 18 | } 19 | 20 | // Horizontal Example 21 | // -------------------------------------------------------------------- 22 | if (horizontalExample) { 23 | new PerfectScrollbar(horizontalExample, { 24 | wheelPropagation: false, 25 | suppressScrollY: true 26 | }); 27 | } 28 | 29 | // Both vertical and Horizontal Example 30 | // -------------------------------------------------------------------- 31 | if (horizVertExample) { 32 | new PerfectScrollbar(horizVertExample, { 33 | wheelPropagation: false 34 | }); 35 | } 36 | })(); 37 | }); 38 | -------------------------------------------------------------------------------- /database/factories/UserFactory.php: -------------------------------------------------------------------------------- 1 | 11 | */ 12 | class UserFactory extends Factory 13 | { 14 | /** 15 | * The current password being used by the factory. 16 | */ 17 | protected static ?string $password; 18 | 19 | /** 20 | * Define the model's default state. 21 | * 22 | * @return array 23 | */ 24 | public function definition(): array 25 | { 26 | return [ 27 | 'name' => fake()->name(), 28 | 'email' => fake()->unique()->safeEmail(), 29 | 'email_verified_at' => now(), 30 | 'password' => static::$password ??= Hash::make('password'), 31 | 'remember_token' => Str::random(10), 32 | ]; 33 | } 34 | 35 | /** 36 | * Indicate that the model's email address should be unverified. 37 | */ 38 | public function unverified(): static 39 | { 40 | return $this->state(fn (array $attributes) => [ 41 | 'email_verified_at' => null, 42 | ]); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/mixins/_border-radius.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable property-disallowed-list 2 | 3 | // Single side border-radius 4 | 5 | @mixin border-end-radius($radius: $border-radius) { 6 | @if $enable-rounded { 7 | border-end-end-radius: valid-radius($radius); 8 | border-start-end-radius: valid-radius($radius); 9 | } 10 | } 11 | 12 | @mixin border-start-radius($radius: $border-radius) { 13 | @if $enable-rounded { 14 | border-end-start-radius: valid-radius($radius); 15 | border-start-start-radius: valid-radius($radius); 16 | } 17 | } 18 | 19 | @mixin border-top-start-radius($radius: $border-radius) { 20 | @if $enable-rounded { 21 | border-start-start-radius: valid-radius($radius); 22 | } 23 | } 24 | 25 | @mixin border-top-end-radius($radius: $border-radius) { 26 | @if $enable-rounded { 27 | border-start-end-radius: valid-radius($radius); 28 | } 29 | } 30 | 31 | @mixin border-bottom-end-radius($radius: $border-radius) { 32 | @if $enable-rounded { 33 | border-end-end-radius: valid-radius($radius); 34 | } 35 | } 36 | 37 | @mixin border-bottom-start-radius($radius: $border-radius) { 38 | @if $enable-rounded { 39 | border-end-start-radius: valid-radius($radius); 40 | } 41 | } 42 | 43 | // scss-docs-end border-radius-mixins 44 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | tests/Unit 10 | 11 | 12 | tests/Feature 13 | 14 | 15 | 16 | 17 | app 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended.scss: -------------------------------------------------------------------------------- 1 | // Configuration 2 | @import "_bootstrap-extended/include"; 3 | @import "_bootstrap-extended/utilities"; 4 | 5 | // Layout & components 6 | @import "_bootstrap-extended/root"; 7 | @import "_bootstrap-extended/reboot"; 8 | @import "_bootstrap-extended/type"; 9 | @import "_bootstrap-extended/tables"; 10 | @import "_bootstrap-extended/forms"; 11 | @import "_bootstrap-extended/buttons"; 12 | @import "_bootstrap-extended/dropdown"; 13 | @import "_bootstrap-extended/button-group"; 14 | @import "_bootstrap-extended/nav"; 15 | @import "_bootstrap-extended/navbar"; 16 | @import "_bootstrap-extended/card"; 17 | @import "_bootstrap-extended/accordion"; 18 | @import "_bootstrap-extended/breadcrumb"; 19 | @import "_bootstrap-extended/pagination"; 20 | @import "_bootstrap-extended/badge"; 21 | @import "_bootstrap-extended/alert"; 22 | @import "_bootstrap-extended/progress"; 23 | @import "_bootstrap-extended/list-group"; 24 | @import "_bootstrap-extended/toasts"; 25 | @import "_bootstrap-extended/modal"; 26 | @import "_bootstrap-extended/tooltip"; 27 | @import "_bootstrap-extended/popover"; 28 | @import "_bootstrap-extended/spinners"; 29 | @import "_bootstrap-extended/offcanvas"; 30 | 31 | // Helpers 32 | @import "_bootstrap-extended/helpers"; 33 | 34 | // Utilities 35 | @import "bootstrap/scss/utilities/api"; 36 | -------------------------------------------------------------------------------- /resources/views/content/pages/pages-misc-error.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts/blankLayout') 2 | 3 | @section('title', 'Error - Pages') 4 | 5 | @section('page-style') 6 | 7 | @vite(['resources/assets/vendor/scss/pages/page-misc.scss']) 8 | @endsection 9 | 10 | 11 | @section('content') 12 | 13 |
14 |

404

15 |

Page Not Found 🙄

16 |

we couldn't find the page you are looking for

17 |
18 | misc-tree 19 | misc-error 20 |
21 | misc-error 22 |
23 | Back to home 24 |
25 |
26 |
27 |
28 | 29 | @endsection -------------------------------------------------------------------------------- /resources/views/content/pages/pages-misc-under-maintenance.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts/blankLayout') 2 | 3 | @section('title', 'Under Maintenance - Pages') 4 | 5 | @section('page-style') 6 | 7 | @vite(['resources/assets/vendor/scss/pages/page-misc.scss']) 8 | @endsection 9 | 10 | @section('content') 11 | 12 |
13 |

Under Maintenance! 🚧

14 |

Sorry for the inconvenience but we're performing some maintenance at the moment

15 |
16 | misc-tree 17 | misc-error 18 |
19 | misc-error 20 |
21 | Back to home 22 |
23 |
24 |
25 |
26 | 27 | @endsection 28 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | APP_NAME=Laravel 2 | APP_ENV=local 3 | APP_KEY= 4 | APP_DEBUG=true 5 | APP_URL=http://localhost 6 | 7 | APP_LOCALE=en 8 | APP_FALLBACK_LOCALE=en 9 | APP_FAKER_LOCALE=en_US 10 | 11 | APP_MAINTENANCE_DRIVER=file 12 | # APP_MAINTENANCE_STORE=database 13 | 14 | PHP_CLI_SERVER_WORKERS=4 15 | 16 | BCRYPT_ROUNDS=12 17 | 18 | LOG_CHANNEL=stack 19 | LOG_STACK=single 20 | LOG_DEPRECATIONS_CHANNEL=null 21 | LOG_LEVEL=debug 22 | 23 | DB_CONNECTION=sqlite 24 | # DB_HOST=127.0.0.1 25 | # DB_PORT=3306 26 | # DB_DATABASE=laravel 27 | # DB_USERNAME=root 28 | # DB_PASSWORD= 29 | 30 | SESSION_DRIVER=database 31 | SESSION_LIFETIME=120 32 | SESSION_ENCRYPT=false 33 | SESSION_PATH=/ 34 | SESSION_DOMAIN=null 35 | 36 | BROADCAST_CONNECTION=log 37 | FILESYSTEM_DISK=local 38 | QUEUE_CONNECTION=database 39 | 40 | CACHE_STORE=database 41 | # CACHE_PREFIX= 42 | 43 | MEMCACHED_HOST=127.0.0.1 44 | 45 | REDIS_CLIENT=phpredis 46 | REDIS_HOST=127.0.0.1 47 | REDIS_PASSWORD=null 48 | REDIS_PORT=6379 49 | 50 | MAIL_MAILER=log 51 | MAIL_SCHEME=null 52 | MAIL_HOST=127.0.0.1 53 | MAIL_PORT=2525 54 | MAIL_USERNAME=null 55 | MAIL_PASSWORD=null 56 | MAIL_FROM_ADDRESS="hello@example.com" 57 | MAIL_FROM_NAME="${APP_NAME}" 58 | 59 | AWS_ACCESS_KEY_ID= 60 | AWS_SECRET_ACCESS_KEY= 61 | AWS_DEFAULT_REGION=us-east-1 62 | AWS_BUCKET= 63 | AWS_USE_PATH_STYLE_ENDPOINT=false 64 | 65 | VITE_APP_NAME="${APP_NAME}" 66 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_tooltip.scss: -------------------------------------------------------------------------------- 1 | /* Tooltips 2 | ******************************************************************************* */ 3 | 4 | 5 | /* Open modal tooltip z-index */ 6 | .modal-open .tooltip { 7 | z-index: $zindex-modal + 2; 8 | } 9 | 10 | .tooltip-inner { 11 | font-weight: $font-weight-medium; 12 | } 13 | 14 | [class^="tooltip-"], 15 | [class^="tooltip-"] > .tooltip{ 16 | &.bs-tooltip-auto { 17 | &[data-popper-placement="top"] .tooltip-arrow::before { 18 | border-block-start-color: var(--#{$prefix}tooltip-arrow-bg); 19 | } 20 | &[data-popper-placement="left"] .tooltip-arrow::before { 21 | border-inline-start-color: var(--#{$prefix}tooltip-arrow-bg); 22 | } 23 | &[data-popper-placement="bottom"] .tooltip-arrow::before { 24 | border-block-end-color: var(--#{$prefix}tooltip-arrow-bg); 25 | } 26 | 27 | &[data-popper-placement="right"] .tooltip-arrow::before { 28 | border-inline-end-color: var(--#{$prefix}tooltip-arrow-bg); 29 | } 30 | } 31 | } 32 | 33 | // scss-docs-start tooltip-modifiers 34 | 35 | @each $state in map-keys($theme-colors) { 36 | .tooltip.tooltip-#{$state}, .tooltip-#{$state} > .tooltip { 37 | --#{$prefix}tooltip-bg: var(--#{$prefix}#{$state}); 38 | --#{$prefix}tooltip-color: var(--#{$prefix}#{$state}-contrast); 39 | } 40 | } 41 | 42 | // scss-docs-end tooltip-modifiers 43 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | APP_NAME=Laravel 2 | APP_ENV=local 3 | APP_KEY=base64:mln1keRjYJYz06TPXJg8SZhJ7JN+oToy08vrPQhoq78= 4 | APP_DEBUG=true 5 | APP_URL=http://localhost 6 | 7 | APP_LOCALE=en 8 | APP_FALLBACK_LOCALE=en 9 | APP_FAKER_LOCALE=en_US 10 | 11 | APP_MAINTENANCE_DRIVER=file 12 | # APP_MAINTENANCE_STORE=database 13 | 14 | PHP_CLI_SERVER_WORKERS=4 15 | 16 | BCRYPT_ROUNDS=12 17 | 18 | LOG_CHANNEL=stack 19 | LOG_STACK=single 20 | LOG_DEPRECATIONS_CHANNEL=null 21 | LOG_LEVEL=debug 22 | 23 | DB_CONNECTION=mysql 24 | DB_HOST=127.0.0.1 25 | DB_PORT=3306 26 | DB_DATABASE=laravel 27 | DB_USERNAME=root 28 | DB_PASSWORD= 29 | 30 | SESSION_DRIVER=database 31 | SESSION_LIFETIME=120 32 | SESSION_ENCRYPT=false 33 | SESSION_PATH=/ 34 | SESSION_DOMAIN=null 35 | 36 | BROADCAST_CONNECTION=log 37 | FILESYSTEM_DISK=local 38 | QUEUE_CONNECTION=database 39 | 40 | CACHE_STORE=database 41 | # CACHE_PREFIX= 42 | 43 | MEMCACHED_HOST=127.0.0.1 44 | 45 | REDIS_CLIENT=phpredis 46 | REDIS_HOST=127.0.0.1 47 | REDIS_PASSWORD=null 48 | REDIS_PORT=6379 49 | 50 | MAIL_MAILER=log 51 | MAIL_SCHEME=null 52 | MAIL_HOST=127.0.0.1 53 | MAIL_PORT=2525 54 | MAIL_USERNAME=null 55 | MAIL_PASSWORD=null 56 | MAIL_FROM_ADDRESS="hello@example.com" 57 | MAIL_FROM_NAME="${APP_NAME}" 58 | 59 | AWS_ACCESS_KEY_ID= 60 | AWS_SECRET_ACCESS_KEY= 61 | AWS_DEFAULT_REGION=us-east-1 62 | AWS_BUCKET= 63 | AWS_USE_PATH_STYLE_ENDPOINT=false 64 | 65 | VITE_APP_NAME="${APP_NAME}" 66 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap.scss: -------------------------------------------------------------------------------- 1 | @import "bootstrap/scss/mixins/banner"; 2 | @include bsBanner(""); 3 | 4 | // Configuration 5 | @import "_bootstrap-extended/include"; 6 | 7 | // Layout & components 8 | @import "bootstrap/scss/root"; 9 | @import "bootstrap/scss/reboot"; 10 | @import "bootstrap/scss/type"; 11 | @import "bootstrap/scss/images"; 12 | @import "bootstrap/scss/containers"; 13 | @import "bootstrap/scss/grid"; 14 | @import "bootstrap/scss/tables"; 15 | @import "bootstrap/scss/forms"; 16 | @import "bootstrap/scss/buttons"; 17 | @import "bootstrap/scss/transitions"; 18 | @import "bootstrap/scss/dropdown"; 19 | @import "bootstrap/scss/button-group"; 20 | @import "bootstrap/scss/nav"; 21 | @import "bootstrap/scss/navbar"; 22 | @import "bootstrap/scss/card"; 23 | @import "bootstrap/scss/accordion"; 24 | @import "bootstrap/scss/breadcrumb"; 25 | @import "bootstrap/scss/pagination"; 26 | @import "bootstrap/scss/badge"; 27 | @import "bootstrap/scss/alert"; 28 | @import "bootstrap/scss/progress"; 29 | @import "bootstrap/scss/list-group"; 30 | @import "bootstrap/scss/close"; 31 | @import "bootstrap/scss/toasts"; 32 | @import "bootstrap/scss/modal"; 33 | @import "bootstrap/scss/tooltip"; 34 | @import "bootstrap/scss/popover"; 35 | @import "bootstrap/scss/carousel"; 36 | @import "bootstrap/scss/spinners"; 37 | @import "bootstrap/scss/offcanvas"; 38 | @import "bootstrap/scss/placeholders"; 39 | 40 | // Helpers 41 | @import "bootstrap/scss/helpers"; 42 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_toasts.scss: -------------------------------------------------------------------------------- 1 | /* Toasts 2 | ******************************************************************************* */ 3 | 4 | .bs-toast[class^="bg-"], 5 | .bs-toast[class*=" bg-"] { 6 | --#{$prefix}toast-header-color: var(--#{$prefix}white); 7 | --#{$prefix}toast-color: var(--#{$prefix}white); 8 | } 9 | 10 | .toast.bs-toast { 11 | z-index: $zindex-toast; 12 | background-color: var(--#{$prefix}toast-bg) !important; 13 | } 14 | .toast-container { 15 | --#{$prefix}toast-zindex: 8; 16 | } 17 | 18 | .toast-header { 19 | border-block-end: $border-width solid $toast-header-border-color; 20 | .btn-close { 21 | background-image: str-replace(str-replace($btn-close-bg, "#{$btn-close-color}", $body-secondary-color), "#", "%23"); 22 | margin-inline: $toast-padding-x $toast-padding-x * -.5; 23 | } 24 | } 25 | 26 | /* Bootstrap Toasts Example */ 27 | .toast-ex { 28 | position: fixed; 29 | inset-block-start: 4.1rem; 30 | inset-inline: auto .5rem; 31 | } 32 | 33 | /* Placement Toast example */ 34 | .toast-placement-ex { 35 | position: fixed; 36 | } 37 | 38 | /* Generate contextual modifier classes for colorizing the alert */ 39 | @each $state in map-keys($theme-colors) { 40 | .bs-toast{ 41 | &.bg-#{$state} { 42 | --#{$prefix}toast-bg: rgba(var(--#{$prefix}#{$state}-rgb), .85); 43 | --#{$prefix}toast-box-shadow: 0 .25rem 1rem rgba(var(--#{$prefix}#{$state}-rgb), .4); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/mixins/_caret.scss: -------------------------------------------------------------------------------- 1 | // Carets - for dropdown arrows 2 | // ******************************************************************************* 3 | 4 | @mixin caret-up($caret-width) { 5 | border: $caret-border-width solid; 6 | block-size: $caret-width; 7 | border-block-end: 0; 8 | border-inline-start: 0; 9 | inline-size: $caret-width; 10 | margin-block-start: .97 * divide($caret-width, 2); 11 | margin-inline: $caret-spacing 0; 12 | transform: rotate(-45deg); 13 | } 14 | 15 | @mixin caret-down($caret-width) { 16 | border: $caret-border-width solid; 17 | block-size: $caret-width; 18 | border-block-start: 0; 19 | border-inline-start: 0; 20 | inline-size: $caret-width; 21 | margin-block-start: -.5 * divide($caret-width, 2); 22 | margin-inline: $caret-spacing 0; 23 | transform: rotate(45deg); 24 | } 25 | 26 | @mixin caret-start($caret-width) { 27 | border: $caret-border-width solid; 28 | block-size: $caret-width; 29 | border-block-start: 0; 30 | border-inline-end: 0; 31 | inline-size: $caret-width; 32 | margin-block-start: 0; 33 | margin-inline: 0 $caret-spacing; 34 | transform: rotate(45deg); 35 | } 36 | 37 | @mixin caret-end($caret-width) { 38 | border: $caret-border-width solid; 39 | block-size: $caret-width; 40 | border-block-start: 0; 41 | border-inline-start: 0; 42 | inline-size: $caret-width; 43 | margin-block-start: 0; 44 | margin-inline: $caret-spacing 0; 45 | transform: rotate(-45deg); 46 | } 47 | -------------------------------------------------------------------------------- /vite.icons.plugin.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs/promises'; 2 | import path from 'path'; 3 | import { getIconsCSS } from '@iconify/utils'; 4 | 5 | export default function iconifyPlugin() { 6 | return { 7 | name: 'vite-iconify-plugin', 8 | apply: 'build', // Run only during build 9 | 10 | async buildStart() { 11 | console.log('🔨 Generating iconify CSS file...'); 12 | 13 | try { 14 | const iconSetPaths = [path.resolve(process.cwd(), 'node_modules/@iconify/json/json/ri.json')]; 15 | 16 | const iconSets = await Promise.all( 17 | iconSetPaths.map(async filePath => { 18 | const data = await fs.readFile(filePath, 'utf-8'); 19 | return JSON.parse(data); 20 | }) 21 | ); 22 | 23 | const allIcons = iconSets 24 | .map(iconSet => { 25 | return getIconsCSS(iconSet, Object.keys(iconSet.icons), { 26 | iconSelector: '.{prefix}-{name}', 27 | commonSelector: '.ri', 28 | format: 'expanded' 29 | }); 30 | }) 31 | .join('\n'); 32 | 33 | const outputPath = path.resolve(process.cwd(), 'resources/assets/vendor/fonts/iconify/iconify.css'); 34 | const dir = path.dirname(outputPath); 35 | await fs.mkdir(dir, { recursive: true }); 36 | await fs.writeFile(outputPath, allIcons, 'utf8'); 37 | 38 | console.log(`✅ Iconify CSS generated at: ${outputPath}`); 39 | } catch (error) { 40 | console.error('❌ Error generating Iconify CSS or copying additional files:', error); 41 | } 42 | } 43 | }; 44 | } 45 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/forms/_form-range.scss: -------------------------------------------------------------------------------- 1 | /* Range select 2 | ******************************************************************************* */ 3 | 4 | .form-range { 5 | // Chrome specific 6 | &::-webkit-slider-thumb { 7 | box-shadow: $form-range-thumb-box-shadow; 8 | transform-origin: center; 9 | @include transition(transform .2s, box-shadow .2s ease); 10 | 11 | &:hover { 12 | box-shadow: 0 0 0 .5rem rgba(var(--#{$prefix}primary-rgb), .16); 13 | } 14 | &:active, 15 | &:focus { 16 | box-shadow: 0 0 0 .8125rem rgba(var(--#{$prefix}primary-rgb), .16); 17 | } 18 | } 19 | 20 | // Mozilla specific 21 | &::-moz-range-thumb { 22 | box-shadow: $form-range-thumb-box-shadow; 23 | transform-origin: center; 24 | @include transition(transform .2s, box-shadow .2s ease); 25 | &:hover { 26 | box-shadow: 0 0 0 .5rem rgba(var(--#{$prefix}primary-rgb), .16); 27 | } 28 | &:active, 29 | &:focus { 30 | box-shadow: 0 0 0 .8125rem rgba(var(--#{$prefix}primary-rgb), .16); 31 | } 32 | } 33 | &:disabled { 34 | &::-webkit-slider-runnable-track { 35 | background-color: $form-range-track-disabled-bg; 36 | } 37 | 38 | &::-moz-range-track { 39 | background-color: $form-range-track-disabled-bg; 40 | } 41 | 42 | &::-webkit-slider-thumb { 43 | border-color: $form-range-track-disabled-border-color; 44 | box-shadow: none; 45 | } 46 | 47 | &::-moz-range-thumb { 48 | border-color: $form-range-track-disabled-border-color; 49 | box-shadow: none; 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_functions.scss: -------------------------------------------------------------------------------- 1 | // Functions 2 | 3 | // Remove the unit of a length 4 | @function strip-unit($number) { 5 | @if type-of($number) == "number" and not unitless($number) { 6 | @return divide($number, ($number * 0 + 1)); 7 | } 8 | 9 | @return $number; 10 | } 11 | 12 | // Convert size px to rem 13 | @function px-to-rem($value) { 14 | // Assumes the browser default font size = `16px` 15 | @return (divide(strip-unit($value), 16)) * 1rem; 16 | } 17 | 18 | // Convert size rem to px 19 | @function rem-to-px($value) { 20 | // Assumes the browser default font size = `16px` 21 | @return (strip-unit($value) * 16) * 1px; 22 | } 23 | 24 | // * Colors 25 | // ******************************************************************************* 26 | 27 | // ? Override shade, tint and shift function with custom background color option i.e $card-bg to make it similar like design 28 | // Shade a color: mix a color with background/white 29 | @function tint-color($color, $weight, $background: null) { 30 | $background: if($background, $background, #fff); 31 | 32 | @return mix($background, $color, $weight); 33 | } 34 | 35 | // Shade a color: mix a color with background/black 36 | @function shade-color($color, $weight, $background: null) { 37 | $background: if($background, $background, #000); 38 | 39 | @return mix($background, $color, $weight); 40 | } 41 | 42 | // Shade the color if the weight is positive, else tint it 43 | @function shift-color($color, $weight, $background: null) { 44 | @return if($weight > 0, shade-color($color, $weight, $background), tint-color($color, -$weight)); 45 | } 46 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_reboot.scss: -------------------------------------------------------------------------------- 1 | /* Reboot */ 2 | 3 | b, 4 | strong { 5 | font-weight: $font-weight-bold; 6 | } 7 | 8 | caption { 9 | text-align: start; 10 | } 11 | 12 | dd { 13 | margin-inline-start: 0; 14 | } 15 | 16 | // TODO: checkinbs6 - a new variable has been created because the $link-color scss variable was being used,and changing the color did not reflect the update. this new variable ensures that future color changes are applied correctly. 17 | a { 18 | color: var(--#{$prefix}custom-link-color); 19 | &:hover { 20 | color: color-mix(in sRGB, var(--#{$prefix}custom-link-color) 80%, var(--#{$prefix}base-color)); 21 | } 22 | &:not([href]) { 23 | &, 24 | &:hover { 25 | color: inherit; 26 | text-decoration: none; 27 | } 28 | } 29 | } 30 | 31 | /* Autofill input bg and text color issue on different OS and browsers */ 32 | input:-webkit-autofill, 33 | input:-webkit-autofill:hover, 34 | input:-webkit-autofill:focus, 35 | textarea:-webkit-autofill, 36 | textarea:-webkit-autofill:hover, 37 | textarea:-webkit-autofill:focus, 38 | select:-webkit-autofill, 39 | select:-webkit-autofill:hover, 40 | select:-webkit-autofill:focus, 41 | input:-internal-autofill-selected { 42 | background-clip: text !important; 43 | } 44 | 45 | h1 { 46 | line-height: $h1-line-height; 47 | } 48 | 49 | h2 { 50 | line-height: $h2-line-height; 51 | } 52 | 53 | h3 { 54 | line-height: $h3-line-height; 55 | } 56 | 57 | h4 { 58 | line-height: $h4-line-height; 59 | } 60 | 61 | h5 { 62 | line-height: $h5-line-height; 63 | } 64 | 65 | h6 { 66 | line-height: $h6-line-height; 67 | } 68 | 69 | img[data-app-light-img][data-app-dark-img] { 70 | visibility: visible; 71 | } 72 | -------------------------------------------------------------------------------- /database/migrations/0001_01_01_000000_create_users_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('name'); 17 | $table->string('email')->unique(); 18 | $table->timestamp('email_verified_at')->nullable(); 19 | $table->string('password'); 20 | $table->rememberToken(); 21 | $table->timestamps(); 22 | }); 23 | 24 | Schema::create('password_reset_tokens', function (Blueprint $table) { 25 | $table->string('email')->primary(); 26 | $table->string('token'); 27 | $table->timestamp('created_at')->nullable(); 28 | }); 29 | 30 | Schema::create('sessions', function (Blueprint $table) { 31 | $table->string('id')->primary(); 32 | $table->foreignId('user_id')->nullable()->index(); 33 | $table->string('ip_address', 45)->nullable(); 34 | $table->text('user_agent')->nullable(); 35 | $table->longText('payload'); 36 | $table->integer('last_activity')->index(); 37 | }); 38 | } 39 | 40 | /** 41 | * Reverse the migrations. 42 | */ 43 | public function down(): void 44 | { 45 | Schema::dropIfExists('users'); 46 | Schema::dropIfExists('password_reset_tokens'); 47 | Schema::dropIfExists('sessions'); 48 | } 49 | }; 50 | -------------------------------------------------------------------------------- /resources/assets/js/ui-toasts.js: -------------------------------------------------------------------------------- 1 | /** 2 | * UI Toasts 3 | */ 4 | 5 | 'use strict'; 6 | 7 | document.addEventListener('DOMContentLoaded', function (e) { 8 | // Bootstrap toasts example 9 | // -------------------------------------------------------------------- 10 | const toastPlacementExample = document.querySelector('.toast-placement-ex'), 11 | toastPlacementBtn = document.querySelector('#showToastPlacement'); 12 | let selectedType, selectedPlacement, toastPlacement; 13 | 14 | // Dispose toast when open another 15 | function toastDispose(toast) { 16 | if (toast && toast._element !== null) { 17 | if (toastPlacementExample) { 18 | toastPlacementExample.querySelectorAll('i[class*="ri-"]').forEach(function (element) { 19 | element.classList.remove(selectedType); 20 | }); 21 | DOMTokenList.prototype.remove.apply(toastPlacementExample.classList, selectedPlacement); 22 | } 23 | toast.dispose(); 24 | } 25 | } 26 | // Placement Button click 27 | if (toastPlacementBtn) { 28 | toastPlacementBtn.onclick = function () { 29 | if (toastPlacement) { 30 | toastDispose(toastPlacement); 31 | } 32 | selectedType = document.querySelector('#selectTypeOpt').value; 33 | selectedPlacement = document.querySelector('#selectPlacement').value.split(' '); 34 | 35 | toastPlacementExample.querySelectorAll('i[class*="ri-"]').forEach(function (element) { 36 | element.classList.add(selectedType); 37 | }); 38 | DOMTokenList.prototype.add.apply(toastPlacementExample.classList, selectedPlacement); 39 | toastPlacement = new bootstrap.Toast(toastPlacementExample); 40 | toastPlacement.show(); 41 | }; 42 | } 43 | }); 44 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_colors.scss: -------------------------------------------------------------------------------- 1 | /* Custom colors 2 | ******************************************************************************* */ 3 | 4 | $facebook: #3b5998 !default; 5 | $twitter: #1da1f2 !default; 6 | $google-plus: #dd4b39 !default; 7 | $instagram: #e1306c !default; 8 | $linkedin: #0077b5 !default; 9 | $github: #333 !default; 10 | $dribbble: #ea4c89 !default; 11 | $pinterest: #cb2027 !default; 12 | $slack: #4a154b !default; 13 | $reddit: #ff4500 !default; 14 | $youtube: #f00 !default; 15 | $vimeo: #1ab7ea !default; 16 | $custom-colors: ( 17 | "facebook": $facebook, 18 | "twitter": $twitter, 19 | "google-plus": $google-plus, 20 | "instagram": $instagram, 21 | "linkedin": $linkedin, 22 | "github": $github, 23 | "dribbble": $dribbble, 24 | "pinterest": $pinterest, 25 | "slack": $slack, 26 | "reddit": $reddit, 27 | "youtube": $youtube, 28 | "vimeo": $vimeo 29 | ) !default; 30 | 31 | :root { 32 | @each $color, $value in $custom-colors { 33 | --#{$prefix}#{$color}: #{$value}; 34 | --#{$prefix}#{$color}-rgb: #{red($value)}, #{green($value)}, #{blue($value)}; 35 | } 36 | 37 | @each $state in map-keys($theme-colors) { 38 | .bg-gradient-#{$state} { 39 | --#{$prefix}bg-gradient-color: var(--#{$prefix}#{$state}); 40 | --#{$prefix}bg-gradient-color-rgb: var(--#{$prefix}#{$state}-rgb); 41 | background-image: linear-gradient(45deg, var(--#{$prefix}bg-gradient-color), rgba(var(--#{$prefix}bg-gradient-color-rgb), .5)) !important; 42 | } 43 | } 44 | } 45 | 46 | // A new variable $custom-theme-colors was created by merging the $theme-colors and $custom-colors arrays. This was necessary to enable the use of both theme and custom colors for buttons and background color configurations. 47 | 48 | $custom-theme-colors: map-merge($theme-colors, $custom-colors) !default; 49 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_components/_app-brand.scss: -------------------------------------------------------------------------------- 1 | /* App Brand 2 | ******************************************************************************* */ 3 | .app-brand { 4 | display: flex; 5 | flex-grow: 0; 6 | flex-shrink: 0; 7 | align-items: center; 8 | line-height: 1; 9 | 10 | 11 | .app-brand-text { 12 | opacity: 1; 13 | transition: opacity $menu-animation-duration ease-in-out; 14 | } 15 | 16 | 17 | .layout-menu-toggle { 18 | display: block; 19 | } 20 | 21 | .app-brand-img{ 22 | display: block; 23 | } 24 | .app-brand-img-collapsed{ 25 | display: none; 26 | } 27 | } 28 | .app-brand-text { 29 | text-transform: uppercase; 30 | } 31 | 32 | // For cover auth pages 33 | .auth-cover-brand { 34 | position: absolute; 35 | z-index: 1; 36 | inset-block-start: 1.8rem; 37 | inset-inline-start: 3rem; 38 | } 39 | 40 | .app-brand-link { 41 | display: flex; 42 | align-items: center; 43 | } 44 | 45 | /* App brand with vertical menu */ 46 | 47 | .menu-vertical .app-brand { 48 | padding-inline: calc($menu-vertical-link-padding-x + .125rem) calc($menu-vertical-link-padding-x - .25rem); 49 | } 50 | 51 | /* App brand with horizontal menu */ 52 | .menu-horizontal .app-brand, 53 | .menu-horizontal .app-brand + .menu-divider { 54 | display: none !important; 55 | } 56 | 57 | @include media-breakpoint-up($menu-collapsed-layout-breakpoint) { 58 | // .layout-menu-collapsed:not(.layout-menu-hover, .layout-menu-offcanvas, .layout-menu-fixed-offcanvas) .layout-menu { 59 | .layout-menu-collapsed:not(.layout-menu-hover) .layout-menu, 60 | .menu-collapsed:not(:hover) .app-brand { 61 | .app-brand-logo ~ .app-brand-text{ 62 | opacity: 0; 63 | } 64 | .app-brand-img{ 65 | display: none; 66 | } 67 | .app-brand-img-collapsed{ 68 | display: block; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_components/_base.scss: -------------------------------------------------------------------------------- 1 | // Base 2 | // ******************************************************************************* 3 | 4 | body { 5 | letter-spacing: $letter-spacing; 6 | } 7 | 8 | /* App Overlay 9 | ******************************************************************************* */ 10 | 11 | .app-overlay { 12 | position: absolute; 13 | z-index: 3; 14 | background-color: transparent; 15 | inset: 0; 16 | transition: all .25s ease-in-out; 17 | visibility: hidden; 18 | 19 | &.show { 20 | background-color: rgba($black, .5); 21 | visibility: visible; 22 | } 23 | } 24 | 25 | /* IE Fixes 26 | ******************************************************************************* */ 27 | 28 | @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { 29 | /* Fix IE parent container height bug when containing image with fluid width */ 30 | .card, 31 | .card-body, 32 | .media, 33 | .flex-column, 34 | .tab-content { 35 | min-block-size: 1px; 36 | } 37 | 38 | img { 39 | block-size: auto; 40 | min-block-size: 1px; 41 | } 42 | } 43 | 44 | /* Containers 45 | ******************************************************************************* */ 46 | 47 | .container, 48 | .container-fluid, 49 | .container-xxl { 50 | padding-inline: $container-padding-x-sm; 51 | 52 | @include media-breakpoint-up(lg) { 53 | padding-inline: $container-padding-x; 54 | } 55 | } 56 | 57 | /* Buy now section 58 | ******************************************************************************* */ 59 | .buy-now { 60 | .btn-buy-now { 61 | position: fixed; 62 | z-index: $zindex-menu-fixed; 63 | box-shadow: 0 1px 20px 1px $danger; 64 | inset-block-end: 3rem; 65 | inset-inline-end: $container-padding-x; 66 | 67 | &:hover { 68 | box-shadow: none !important; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /resources/views/layouts/sections/footer/footer.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $containerFooter = !empty($containerNav) ? $containerNav : 'container-fluid'; 3 | @endphp 4 | 5 | 6 | 25 | 26 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_components/_root.scss: -------------------------------------------------------------------------------- 1 | :root, 2 | [data-bs-theme="light"]{ 3 | --#{$prefix}navbar-search-shadow: #{$navbar-search-shadow}; 4 | 5 | /* Menu */ 6 | --#{$prefix}menu-bg: #{$menu-bg}; 7 | --#{$prefix}menu-bg-rgb: #{$menu-bg-rgb}; 8 | --#{$prefix}menu-color: #{$menu-color}; 9 | --#{$prefix}menu-color-rgb: #{$menu-color-rgb}; 10 | --#{$prefix}menu-hover-bg: color-mix(in sRGB, var(--#{$prefix}base-color) 6%, var(--#{$prefix}menu-bg)); 11 | --#{$prefix}menu-hover-color: #{$menu-hover-color}; 12 | --#{$prefix}menu-sub-active-bg: color-mix(in sRGB, var(--#{$prefix}base-color) 8%, var(--#{$prefix}menu-bg)); 13 | --#{$prefix}menu-sub-active-color: #{$menu-hover-color}; 14 | --#{$prefix}menu-active-color: #{$menu-active-color}; 15 | --#{$prefix}menu-active-bg: #{$menu-active-bg}; 16 | --#{$prefix}menu-horizontal-active-bg: #{var(--#{$prefix}primary-bg-subtle)}; 17 | --#{$prefix}menu-box-shadow: #{$menu-box-shadow}; 18 | --#{$prefix}menu-divider-color: #{$menu-divider-color}; 19 | --#{$prefix}menu-item-icon-color: #{$menu-item-icon-color}; 20 | --#{$prefix}menu-width: #{$menu-width}; 21 | --#{$prefix}menu-collapsed-width: #{$menu-collapsed-width}; 22 | --#{$prefix}menu-item-spacer: #{$menu-item-spacer}; 23 | --#{$prefix}menu-vertical-link-padding-y: #{$menu-vertical-link-padding-y}; 24 | --#{$prefix}menu-vertical-link-padding-x: #{$menu-vertical-link-padding-x}; 25 | --#{$prefix}menu-vertical-menu-link-padding-y: #{$menu-vertical-menu-link-padding-y}; 26 | --#{$prefix}menu-vertical-menu-level-spacer: #{$menu-vertical-menu-level-spacer}; 27 | 28 | .layout-menu-horizontal { 29 | --#{$prefix}menu-bg: #{$paper-bg}; 30 | --#{$prefix}menu-hover-bg: color-mix(in sRGB, var(--#{$prefix}base-color) 6%, var(--#{$prefix}menu-bg)); 31 | --#{$prefix}menu-sub-active-bg: color-mix(in sRGB, var(--#{$prefix}base-color) 8%, var(--#{$prefix}menu-bg)); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /resources/views/layouts/sections/menu/submenu.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | use Illuminate\Support\Facades\Route; 3 | @endphp 4 | 5 | 53 | -------------------------------------------------------------------------------- /resources/assets/js/config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Config 3 | * ------------------------------------------------------------------------------------- 4 | * ! IMPORTANT: Make sure you clear the browser local storage In order to see the config changes in the template. 5 | * ! To clear local storage: (https://www.leadshook.com/help/how-to-clear-local-storage-in-google-chrome-browser/). 6 | */ 7 | 8 | 'use strict'; 9 | /* JS global variables 10 | !Please use the hex color code (#000) here. Don't use rgba(), hsl(), etc 11 | */ 12 | window.config = { 13 | // global color variables for charts except chartjs 14 | colors: { 15 | primary: window.Helpers.getCssVar('primary'), 16 | secondary: window.Helpers.getCssVar('secondary'), 17 | success: window.Helpers.getCssVar('success'), 18 | info: window.Helpers.getCssVar('info'), 19 | warning: window.Helpers.getCssVar('warning'), 20 | danger: window.Helpers.getCssVar('danger'), 21 | dark: window.Helpers.getCssVar('dark'), 22 | black: window.Helpers.getCssVar('pure-black'), 23 | white: window.Helpers.getCssVar('white'), 24 | cardColor: window.Helpers.getCssVar('paper-bg'), 25 | bodyBg: window.Helpers.getCssVar('body-bg'), 26 | bodyColor: window.Helpers.getCssVar('body-color'), 27 | headingColor: window.Helpers.getCssVar('heading-color'), 28 | textMuted: window.Helpers.getCssVar('secondary-color'), 29 | borderColor: window.Helpers.getCssVar('border-color') 30 | }, 31 | colors_label: { 32 | primary: window.Helpers.getCssVar('primary-bg-subtle'), 33 | secondary: window.Helpers.getCssVar('secondary-bg-subtle'), 34 | success: window.Helpers.getCssVar('success-bg-subtle'), 35 | info: window.Helpers.getCssVar('info-bg-subtle'), 36 | warning: window.Helpers.getCssVar('warning-bg-subtle'), 37 | danger: window.Helpers.getCssVar('danger-bg-subtle'), 38 | dark: window.Helpers.getCssVar('dark-bg-subtle') 39 | }, 40 | fontFamily: window.Helpers.getCssVar('font-family-base'), 41 | enableMenuLocalStorage: true // Enable menu state with local storage support 42 | }; 43 | -------------------------------------------------------------------------------- /database/migrations/0001_01_01_000002_create_jobs_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('queue')->index(); 17 | $table->longText('payload'); 18 | $table->unsignedTinyInteger('attempts'); 19 | $table->unsignedInteger('reserved_at')->nullable(); 20 | $table->unsignedInteger('available_at'); 21 | $table->unsignedInteger('created_at'); 22 | }); 23 | 24 | Schema::create('job_batches', function (Blueprint $table) { 25 | $table->string('id')->primary(); 26 | $table->string('name'); 27 | $table->integer('total_jobs'); 28 | $table->integer('pending_jobs'); 29 | $table->integer('failed_jobs'); 30 | $table->longText('failed_job_ids'); 31 | $table->mediumText('options')->nullable(); 32 | $table->integer('cancelled_at')->nullable(); 33 | $table->integer('created_at'); 34 | $table->integer('finished_at')->nullable(); 35 | }); 36 | 37 | Schema::create('failed_jobs', function (Blueprint $table) { 38 | $table->id(); 39 | $table->string('uuid')->unique(); 40 | $table->text('connection'); 41 | $table->text('queue'); 42 | $table->longText('payload'); 43 | $table->longText('exception'); 44 | $table->timestamp('failed_at')->useCurrent(); 45 | }); 46 | } 47 | 48 | /** 49 | * Reverse the migrations. 50 | */ 51 | public function down(): void 52 | { 53 | Schema::dropIfExists('jobs'); 54 | Schema::dropIfExists('job_batches'); 55 | Schema::dropIfExists('failed_jobs'); 56 | } 57 | }; 58 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.wordWrap": "off", 3 | "editor.tabSize": 2, 4 | "editor.formatOnSave": true, 5 | "editor.codeActionsOnSave": { 6 | "source.fixAll": "explicit" 7 | }, 8 | "files.trimFinalNewlines": true, 9 | "diffEditor.ignoreTrimWhitespace": true, 10 | "cSpell.language": "en", 11 | "search.exclude": { 12 | "**/node_modules": true, 13 | "**/_temp": true, 14 | "**/bower_components": true, 15 | "*.min.js": true, 16 | "*.min.css": true 17 | }, 18 | "blade.format.enable": true, 19 | "bladeFormatter.format.indentSize": 2, 20 | // JS 21 | "javascript.updateImportsOnFileMove.enabled": "always", 22 | // JSON 23 | "[json]": { 24 | "editor.defaultFormatter": "vscode.json-language-features" 25 | }, 26 | "[jsonc]": { 27 | "editor.defaultFormatter": "vscode.json-language-features" 28 | }, 29 | // Extension: Prettier 30 | "prettier.requireConfig": true, 31 | "prettier.configPath": ".prettierrc.json", 32 | "prettier.ignorePath": ".prettierignore", 33 | "[html]": { 34 | "editor.defaultFormatter": "esbenp.prettier-vscode" 35 | }, 36 | "[javascript]": { 37 | "editor.defaultFormatter": "esbenp.prettier-vscode" 38 | }, 39 | "[markdown]": { 40 | "editor.defaultFormatter": "esbenp.prettier-vscode" 41 | }, 42 | // Extension: Stylelint 43 | "stylelint.packageManager": "pnpm", 44 | "stylelint.validate": [ 45 | "scss" 46 | ], 47 | "[css]": { 48 | "editor.defaultFormatter": "esbenp.prettier-vscode" 49 | }, 50 | // Extension: Git 51 | "git.rebaseWhenSync": true, 52 | "git.enableSmartCommit": true, 53 | // Extension: ESLint 54 | "eslint.packageManager": "yarn", 55 | "eslint.format.enable": true, 56 | "eslint.options": { 57 | "overrideConfigFile": ".eslintrc.json" 58 | }, 59 | "eslint.validate": [ 60 | "vue", 61 | "html", 62 | "javascript", 63 | "typescript", 64 | "javascriptreact", 65 | "typescriptreact" 66 | ], 67 | // Extension: npm 68 | "npm.packageManager": "yarn", 69 | "[blade]": { 70 | "editor.defaultFormatter": "shufo.vscode-blade-formatter" 71 | } 72 | } -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_alert.scss: -------------------------------------------------------------------------------- 1 | // Alerts 2 | // ******************************************************************************* 3 | 4 | /* Alert icon styles */ 5 | .alert { 6 | --#{$prefix}alert-link-hover-color: var(--#{$prefix}primary); 7 | --#{$prefix}alert-hr: var(--#{$prefix}black); 8 | --#{$prefix}alert-close-icon: var(--#{$prefix}black); 9 | line-height: 1.375rem; 10 | &[class*="alert-"] { 11 | hr { 12 | background-color: var(--#{$prefix}alert-hr); 13 | color: var(--#{$prefix}alert-hr); 14 | } 15 | } 16 | .alert-link { 17 | &:hover { 18 | color: var(--#{$prefix}alert-link-hover-color); 19 | } 20 | } 21 | } 22 | 23 | /* Adjust close link position */ 24 | .alert-dismissible { 25 | padding-inline-end: $alert-dismissible-padding-r; 26 | padding-inline-start: $alert-padding-x; 27 | .btn-close { 28 | padding: 0; 29 | background: var(--#{$prefix}alert-close-icon); 30 | block-size: .8125rem; 31 | filter: none; 32 | inline-size: .8125rem; 33 | inset-inline: auto 0; 34 | margin-block: calc(#{$alert-padding-y} * 1.3); 35 | margin-inline: calc(#{$alert-padding-x} * .9); 36 | mask-image: str-replace($btn-close-bg, "#{$btn-close-color}", currentColor); 37 | mask-repeat: no-repeat; 38 | mask-size: 100% 100%; 39 | } 40 | } 41 | 42 | // scss-docs-start alert-modifiers 43 | 44 | // Generate contextual modifier classes for colorizing the alert 45 | @each $state in map-keys($theme-colors) { 46 | .alert-#{$state} { 47 | @if $state == "light" { 48 | --#{$prefix}alert-color: var(--#{$prefix}#{$state}-contrast); 49 | --#{$prefix}alert-close-icon: var(--#{$prefix}#{$state}-contrast); 50 | } @else { 51 | --#{$prefix}alert-color: var(--#{$prefix}#{$state}); 52 | --#{$prefix}alert-close-icon: var(--#{$prefix}#{$state}); 53 | } 54 | --#{$prefix}alert-link-color: var(--#{$prefix}#{$state}); 55 | --#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-bg-subtle); 56 | --#{$prefix}alert-link-hover-color: var(--#{$prefix}#{$state}); 57 | --#{$prefix}alert-hr: var(--#{$prefix}#{$state}); 58 | } 59 | } 60 | 61 | // scss-docs-end alert-modifiers 62 | -------------------------------------------------------------------------------- /config/variables.php: -------------------------------------------------------------------------------- 1 | "ThemeSelection", 5 | "creatorUrl" => "https://themeselection.com", 6 | "templateName" => "Materio", 7 | "templateSuffix" => "Materio Bootstrap 5 HTML + Laravel Admin Template", 8 | "templateVersion" => "2.0.0", 9 | "templateFree" => true, 10 | "templateDescription" => "Most Powerful & Comprehensive Bootstrap 5 + Laravel HTML Admin Dashboard Template built for developers!", 11 | "templateKeyword" => "dashboard, bootstrap 5 dashboard, bootstrap 5 design, bootstrap 5, bootstrap 5 free, free admin template", 12 | "licenseUrl" => "https://themeselection.com/license/", 13 | "livePreview" => "https://demos.themeselection.com/materio-bootstrap-html-laravel-admin-template/demo-1/", 14 | "productPage" => "https://themeselection.com/item/materio-dashboard-pro-laravel/", 15 | "support" => "https://themeselection.com/support/", 16 | "adminTemplates" => "https://themeselection.com/item/category/admin-templates/", 17 | "bootstrapDashboard" => "https://themeselection.com/item/category/bootstrap-admin-templates/", 18 | "ogTitle" => "Materio Bootstrap 5 HTML + Laravel Admin Template by ThemeSelection", 19 | "ogImage" => "https://ts-assets.b-cdn.net/ts-assets/materio/materio-bootstrap-laravel-admin-template/marketing/materio-bootstrap-laravel-admin-template-smm.png", 20 | "ogType" => "product", 21 | "moreThemes" => "https://themeselection.com/", 22 | "documentation" => "https://demos.themeselection.com/materio-bootstrap-html-admin-template/documentation", 23 | "repository" => "https://github.com/themeselection/materio-bootstrap-html-laravel-admin-template-free", 24 | "gitRepo" => "https://github.com/themeselection/materio-bootstrap-html-laravel-admin-template-free.git", 25 | "gitRepoAccess" => "https://tools.themeselection.com/github/github-access", 26 | "githubFreeUrl" => "https://github.com/themeselection", 27 | "facebookUrl" => "https://www.facebook.com/ThemeSelections/", 28 | "twitterUrl" => "https://x.com/Theme_Selection", 29 | "githubUrl" => "https://github.com/themeselection", 30 | "dribbbleUrl" => "https://dribbble.com/themeselection", 31 | "instagramUrl" => "https://www.instagram.com/themeselection/" 32 | ]; 33 | -------------------------------------------------------------------------------- /resources/assets/vendor/libs/perfect-scrollbar/perfect-scrollbar.scss: -------------------------------------------------------------------------------- 1 | @import "../../scss/_bootstrap-extended/include"; 2 | @import "perfect-scrollbar/css/perfect-scrollbar"; 3 | 4 | $ps-width: .25rem !default; 5 | $ps-hover-width: .375rem !default; 6 | 7 | 8 | .ps { 9 | position: relative; 10 | .ps__rail-x { 11 | block-size: $ps-width; 12 | } 13 | 14 | .ps__rail-y { 15 | z-index: 3; 16 | inline-size: $ps-width; 17 | } 18 | 19 | .ps__rail-x, 20 | .ps__rail-y, 21 | .ps__thumb-x, 22 | .ps__thumb-y { 23 | @include border-radius($border-radius-pill); 24 | } 25 | 26 | .ps__rail-x:hover, 27 | .ps__rail-x:focus, 28 | .ps__rail-x.ps--clicking, 29 | .ps__rail-x:hover > .ps__thumb-x, 30 | .ps__rail-x:focus > .ps__thumb-x, 31 | .ps__rail-x.ps--clicking > .ps__thumb-x { 32 | block-size: $ps-hover-width; 33 | } 34 | 35 | .ps__rail-y:hover, 36 | .ps__rail-y:focus, 37 | .ps__rail-y.ps--clicking, 38 | .ps__rail-y:hover > .ps__thumb-y, 39 | .ps__rail-y:focus > .ps__thumb-y, 40 | .ps__rail-y.ps--clicking > .ps__thumb-y { 41 | inline-size: $ps-hover-width; 42 | } 43 | 44 | .ps__thumb-x { 45 | block-size: $ps-width; 46 | inset-block-end: 0; 47 | } 48 | 49 | .ps__thumb-y { 50 | inline-size: $ps-width; 51 | inset-inline-end: 0; 52 | } 53 | .ps__thumb-x, 54 | .ps__thumb-y { 55 | background-color: var(--#{$prefix}gray-400); 56 | } 57 | 58 | .ps__rail-x:hover, 59 | .ps__rail-y:hover, 60 | .ps__rail-x:focus, 61 | .ps__rail-y:focus, 62 | .ps__rail-x.ps--clicking, 63 | .ps__rail-y.ps--clicking { 64 | background-color: var(--#{$prefix}gray-200); 65 | } 66 | 67 | .ps__rail-x:hover > .ps__thumb-x, 68 | .ps__rail-y:hover > .ps__thumb-y, 69 | .ps__rail-x:focus > .ps__thumb-x, 70 | .ps__rail-y:focus > .ps__thumb-y, 71 | .ps__rail-x.ps--clicking > .ps__thumb-x, 72 | .ps__rail-y.ps--clicking > .ps__thumb-y { 73 | background-color: var(--#{$prefix}gray-700); 74 | } 75 | } 76 | 77 | /* Firefox width issue fixed */ 78 | @supports (-moz-appearance: none) { 79 | #both-scrollbars-example { 80 | margin-block: 0; 81 | margin-inline: auto; 82 | max-inline-size: 1080px; 83 | padding-inline: 0; 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/forms/_form-select.scss: -------------------------------------------------------------------------------- 1 | /* Select 2 | ******************************************************************************* */ 3 | 4 | .form-select { 5 | background-clip: padding-box; 6 | padding-block: calc($form-select-padding-y - $input-border-width); 7 | padding-inline-end: calc($form-select-indicator-padding - $input-border-width); 8 | padding-inline-start: calc($form-select-padding-x - $input-border-width); 9 | &[multiple], 10 | &[size]:not([size="1"]) { 11 | padding-inline-end: $form-select-padding-x; 12 | } 13 | &:hover { 14 | &:not(:focus):not(:disabled) { 15 | border-color: $input-hover-border-color; 16 | } 17 | } 18 | &:disabled { 19 | background-image: escape-svg($form-select-disabled-indicator); 20 | } 21 | &:focus, 22 | &:focus-within { 23 | border-width: $input-focus-border-width; 24 | background-position: right calc($form-select-padding-x - 1px) center; 25 | padding-block: calc($form-select-padding-y - $input-focus-border-width); 26 | padding-inline-end: calc($form-select-indicator-padding - $input-focus-border-width); 27 | padding-inline-start: calc($form-select-padding-x - $input-focus-border-width); 28 | } 29 | &.form-select-lg { 30 | background-size: 24px 24px; 31 | min-block-size: $input-height-lg; 32 | padding-block: calc($form-select-padding-y-lg - $input-border-width); 33 | padding-inline-start: calc($form-select-padding-x-lg - $input-border-width); 34 | &:focus { 35 | padding-block: calc($form-select-padding-y-lg - $input-focus-border-width); 36 | padding-inline-start: calc($form-select-padding-x-lg - $input-focus-border-width); 37 | } 38 | } 39 | &.form-select-sm { 40 | background-size: 20px 20px; 41 | min-block-size: $input-height-sm; 42 | padding-block: calc($form-select-padding-y-sm - $input-border-width); 43 | padding-inline-start: calc($form-select-padding-x-sm - $input-border-width); 44 | &:focus { 45 | padding-block: calc($form-select-padding-y-sm - $input-focus-border-width); 46 | padding-inline-start: calc($form-select-padding-x-sm - $input-focus-border-width); 47 | } 48 | } 49 | &[multiple]:focus { 50 | padding-inline-end: .875rem !important; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_dropdown.scss: -------------------------------------------------------------------------------- 1 | // Dropdowns 2 | // ***************************************************************** 3 | 4 | .dropdown-menu { 5 | box-shadow: var(--#{$prefix}dropdown-box-shadow); 6 | 7 | text-align: start; 8 | > li:not(.disabled) > a:not(.dropdown-item):active, 9 | > li:not(.disabled) > a:not(.dropdown-item).active, 10 | > li.active:not(.disabled) > a:not(.dropdown-item) { 11 | background-color: var(--#{$prefix}dropdown-link-active-bg); 12 | color: var(--#{$prefix}dropdown-link-active-color); 13 | } 14 | 15 | /* Mega dropdown inside the dropdown menu */ 16 | .mega-dropdown > & { 17 | inset-inline: 0; 18 | } 19 | } 20 | 21 | .btn-xs.dropdown-toggle::after { 22 | @include caret-down(.45em); 23 | } 24 | 25 | /* Split dropdowns */ 26 | .dropdown-toggle-split { 27 | &::after, 28 | .dropup &::after, 29 | .dropend &::after { 30 | margin-inline: 0; 31 | } 32 | .dropstart &::before { 33 | margin-inline: 0; 34 | } 35 | } 36 | 37 | /* Dropdown item line height */ 38 | .dropdown-item { 39 | &.waves-effect { 40 | .waves-ripple { 41 | background: 42 | radial-gradient( 43 | rgba(var(--#{$prefix}primary-rgb), .2) 0, 44 | rgba(var(--#{$prefix}primary-rgb), .3) 40%, 45 | rgba(var(--#{$prefix}primary-rgb), .4) 50%, 46 | rgba(var(--#{$prefix}primary-rgb), .5) 60%, 47 | rgba(var(--#{$prefix}white-rgb), 0) 70% 48 | ); 49 | } 50 | } 51 | &.text-danger:active { 52 | color: var(--#{$prefix}primary) !important; 53 | } 54 | } 55 | 56 | /* Hidden dropdown toggle arrow */ 57 | .dropdown-toggle.hide-arrow, 58 | .dropdown-toggle-hide-arrow > .dropdown-toggle { 59 | &::before, 60 | &::after { 61 | display: none; 62 | } 63 | } 64 | 65 | @each $breakpoint in map-keys($grid-breakpoints) { 66 | @include media-breakpoint-up($breakpoint) { 67 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 68 | 69 | .dropdown-menu#{$infix}-start { 70 | --#{$prefix}position: start; 71 | &[data-bs-popper] { 72 | inset-inline: 0 auto; 73 | } 74 | } 75 | 76 | .dropdown-menu#{$infix}-end { 77 | --#{$prefix}position: end; 78 | &[data-bs-popper] { 79 | inset-inline: auto 0; 80 | } 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_badge.scss: -------------------------------------------------------------------------------- 1 | // Badges 2 | // ? Bootstrap use bg-label-variant and bg color for solid and label style, hence we have not created mixin for that. 3 | // ******************************************************************************* 4 | 5 | .badge { 6 | --#{$prefix}badge-border-width: #{$badge-border-width}; 7 | --#{$prefix}badge-border-color: var(--#{$prefix}primary); 8 | --#{$prefix}badge-bg-color: #{$badge-bg-color}; 9 | border: var(--#{$prefix}badge-border-width) var(--#{$prefix}border-style) var(--#{$prefix}badge-border-color); 10 | background-color: var(--#{$prefix}badge-bg-color); 11 | line-height: $line-height-base; 12 | 13 | // badge outline style 14 | &[class*="badge-outline"] { 15 | --#{$prefix}badge-border-width: 1px; 16 | background-color: transparent; 17 | --#{$prefix}badge-padding-x: #{calc($badge-padding-x - .0625rem)}; 18 | --#{$prefix}badge-padding-y: #{calc($badge-padding-y - .0625rem)}; 19 | } 20 | } 21 | 22 | /* Badge Center Style */ 23 | 24 | .badge-center { 25 | display: inline-flex; 26 | align-items: center; 27 | justify-content: center; 28 | padding: 0; 29 | block-size: #{$badge-height}; 30 | inline-size: #{$badge-width}; 31 | --#{$prefix}badge-font-size: #{$badge-center-font-size}; 32 | .icon-base { 33 | @include icon-base(.875rem); 34 | } 35 | } 36 | 37 | /* Dots Style */ 38 | 39 | .badge.badge-dot { 40 | display: inline-block; 41 | padding: 0; 42 | @include border-radius(50%); 43 | margin: 0; 44 | block-size: .5rem; 45 | inline-size: .5rem; 46 | } 47 | 48 | /* Notifications */ 49 | 50 | .badge.badge-notifications { 51 | position: absolute; 52 | display: inline-block; 53 | margin: 0; 54 | inset-block-start: auto; 55 | transform: translate(-50%, -30%); 56 | 57 | &:not(.badge-center) { 58 | font-size: .582rem; 59 | line-height: .75rem; 60 | padding-block: .05rem; 61 | padding-inline: .2rem; 62 | } 63 | .btn[class*="btn-"] & { 64 | transform: translate(-50%, -50%); 65 | } 66 | } 67 | 68 | 69 | @each $state in map-keys($theme-colors) { 70 | .badge-outline-#{$state}, 71 | .btn[class*="-outline"] .badge-outline-#{$state} { 72 | --#{$prefix}badge-color: var(--#{$prefix}#{$state}); 73 | --#{$prefix}badge-border-color: var(--#{$prefix}#{$state}); 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import laravel from 'laravel-vite-plugin'; 3 | import html from '@rollup/plugin-html'; 4 | import { glob } from 'glob'; 5 | import path from 'path'; 6 | import iconsPlugin from './vite.icons.plugin.js'; 7 | 8 | /** 9 | * Get Files from a directory 10 | * @param {string} query 11 | * @returns array 12 | */ 13 | function GetFilesArray(query) { 14 | return glob.sync(query); 15 | } 16 | 17 | // Page JS Files 18 | const pageJsFiles = GetFilesArray('resources/assets/js/*.js'); 19 | 20 | // Processing Vendor JS Files 21 | const vendorJsFiles = GetFilesArray('resources/assets/vendor/js/*.js'); 22 | 23 | // Processing Libs JS Files 24 | const LibsJsFiles = GetFilesArray('resources/assets/vendor/libs/**/*.js'); 25 | 26 | // Processing Libs Scss & Css Files 27 | const LibsScssFiles = GetFilesArray('resources/assets/vendor/libs/**/!(_)*.scss'); 28 | const LibsCssFiles = GetFilesArray('resources/assets/vendor/libs/**/*.css'); 29 | 30 | // Processing Core, Themes & Pages Scss Files 31 | const CoreScssFiles = GetFilesArray('resources/assets/vendor/scss/**/!(_)*.scss'); 32 | 33 | // Processing Fonts Scss & JS Files 34 | const FontsScssFiles = GetFilesArray('resources/assets/vendor/fonts/!(_)*.scss'); 35 | const FontsJsFiles = GetFilesArray('resources/assets/vendor/fonts/**/!(_)*.js'); 36 | const FontsCssFiles = GetFilesArray('resources/assets/vendor/fonts/**/!(_)*.css'); 37 | 38 | export default defineConfig({ 39 | plugins: [ 40 | laravel({ 41 | input: [ 42 | 'resources/css/app.css', 43 | 'resources/assets/css/demo.css', 44 | 'resources/js/app.js', 45 | ...pageJsFiles, 46 | ...vendorJsFiles, 47 | ...LibsJsFiles, 48 | ...CoreScssFiles, 49 | ...LibsScssFiles, 50 | ...LibsCssFiles, 51 | ...FontsScssFiles, 52 | ...FontsJsFiles, 53 | ...FontsCssFiles 54 | ], 55 | refresh: true 56 | }), 57 | html(), 58 | iconsPlugin() 59 | ], 60 | resolve: { 61 | alias: { 62 | '@': path.resolve(__dirname, 'resources') 63 | } 64 | }, 65 | json: { 66 | stringify: true // Helps with JSON import compatibility 67 | }, 68 | build: { 69 | commonjsOptions: { 70 | include: [/node_modules/] // Helps with importing CommonJS modules 71 | } 72 | } 73 | }); 74 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/forms/_form-control.scss: -------------------------------------------------------------------------------- 1 | /* Form control 2 | ******************************************************************************* */ 3 | 4 | .form-control { 5 | /* 6 | ? Form control (all size) padding calc due to border increase on focus */ 7 | padding-block: calc($input-padding-y - $input-border-width); 8 | padding-inline: calc($input-padding-x - $input-border-width); 9 | 10 | // form input placeholder animation 11 | &::placeholder, 12 | &:focus::placeholder { 13 | @include transition(all ease .2s); 14 | } 15 | 16 | /* border color on hover state when element not in focus or disabled */ 17 | &:hover { 18 | &:not(:focus):not(.tagify--focus) { 19 | border-color: $input-hover-border-color; 20 | } 21 | } 22 | 23 | &:focus{ 24 | border-width: $input-focus-border-width; 25 | padding-block: calc($input-padding-y - $input-focus-border-width); 26 | padding-inline: calc($input-padding-x - $input-focus-border-width); 27 | &::file-selector-button { 28 | box-shadow: $input-border-width 0 0 $input-focus-border-color; 29 | } 30 | } 31 | &.form-control-lg { 32 | padding-block: calc($input-padding-y-lg - $input-border-width); 33 | padding-inline: calc($input-padding-x-lg - $input-border-width); 34 | &:focus { 35 | padding-block: calc($input-padding-y-lg - $input-focus-border-width); 36 | padding-inline: calc($input-padding-x-lg - $input-focus-border-width); 37 | } 38 | &::file-selector-button { 39 | margin-block: (-$input-padding-y-lg - .0625rem); 40 | padding-block: calc($input-padding-y-lg + .0625rem); 41 | } 42 | } 43 | &.form-control-sm { 44 | padding-block: calc($input-padding-y-sm - $input-border-width); 45 | padding-inline: calc($input-padding-x-sm - $input-border-width); 46 | &:focus { 47 | padding-block: calc($input-padding-y-sm - $input-focus-border-width); 48 | padding-inline: calc($input-padding-x-sm - $input-focus-border-width); 49 | } 50 | &::file-selector-button { 51 | margin-block: (-$input-padding-y-sm - .0625rem); 52 | padding-block: calc($input-padding-y-sm + .0625rem); 53 | } 54 | } 55 | &.autosize{ 56 | field-sizing: content; 57 | min-block-size: $autozise-min-height; 58 | overflow-x: hidden; 59 | resize: none; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://getcomposer.org/schema.json", 3 | "name": "laravel/laravel", 4 | "type": "project", 5 | "description": "The skeleton application for the Laravel framework.", 6 | "keywords": [ 7 | "laravel", 8 | "framework" 9 | ], 10 | "license": "MIT", 11 | "require": { 12 | "php": "^8.2", 13 | "laravel/framework": "^12.0", 14 | "laravel/tinker": "^2.10.1" 15 | }, 16 | "require-dev": { 17 | "fakerphp/faker": "^1.23", 18 | "laravel/pail": "^1.2.2", 19 | "laravel/pint": "^1.13", 20 | "laravel/sail": "^1.41", 21 | "mockery/mockery": "^1.6", 22 | "nunomaduro/collision": "^8.6", 23 | "phpunit/phpunit": "^11.5.3" 24 | }, 25 | "autoload": { 26 | "psr-4": { 27 | "App\\": "app/", 28 | "Database\\Factories\\": "database/factories/", 29 | "Database\\Seeders\\": "database/seeders/" 30 | } 31 | }, 32 | "autoload-dev": { 33 | "psr-4": { 34 | "Tests\\": "tests/" 35 | } 36 | }, 37 | "scripts": { 38 | "post-autoload-dump": [ 39 | "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", 40 | "@php artisan package:discover --ansi" 41 | ], 42 | "post-update-cmd": [ 43 | "@php artisan vendor:publish --tag=laravel-assets --ansi --force" 44 | ], 45 | "post-root-package-install": [ 46 | "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" 47 | ], 48 | "post-create-project-cmd": [ 49 | "@php artisan key:generate --ansi", 50 | "@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"", 51 | "@php artisan migrate --graceful --ansi" 52 | ], 53 | "dev": [ 54 | "Composer\\Config::disableProcessTimeout", 55 | "npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite" 56 | ] 57 | }, 58 | "extra": { 59 | "laravel": { 60 | "dont-discover": [] 61 | } 62 | }, 63 | "config": { 64 | "optimize-autoloader": true, 65 | "preferred-install": "dist", 66 | "sort-packages": true, 67 | "allow-plugins": { 68 | "pestphp/pest-plugin": true, 69 | "php-http/discovery": true 70 | } 71 | }, 72 | "minimum-stability": "stable", 73 | "prefer-stable": true 74 | } -------------------------------------------------------------------------------- /resources/assets/vendor/libs/apex-charts/apex-charts.scss: -------------------------------------------------------------------------------- 1 | /** 2 | * Apex Charts 3 | */ 4 | @import "../../scss/_bootstrap-extended/include"; 5 | @import "apexcharts/dist/apexcharts"; 6 | 7 | .apexcharts-canvas { 8 | .apexcharts-tooltip { 9 | box-shadow: var(--#{$prefix}box-shadow); 10 | &.apexcharts-theme-light { 11 | border-width: 0; 12 | background: var(--#{$prefix}paper-bg); 13 | .apexcharts-tooltip-title { 14 | background: var(--#{$prefix}paper-bg); 15 | border-block-end-color: var(--#{$prefix}border-color); 16 | font-family: $font-family-base !important; 17 | font-weight: $headings-font-weight; 18 | } 19 | } 20 | &.apexcharts-theme-dark { 21 | background: transparent; 22 | } 23 | } 24 | 25 | .apexcharts-xaxistooltip, 26 | .apexcharts-yaxistooltip { 27 | border-color: var(--#{$prefix}border-color); 28 | background: var(--#{$prefix}paper-bg); 29 | color: var(--#{$prefix}heading-color); 30 | 31 | &.apexcharts-xaxistooltip-bottom, 32 | &.apexcharts-yaxistooltip-bottom { 33 | &::after { 34 | border-block-end-color: var(--#{$prefix}paper-bg); 35 | } 36 | &::before { 37 | border-block-end-color: var(--#{$prefix}border-color); 38 | } 39 | } 40 | 41 | &.apexcharts-xaxistooltip-left, 42 | &.apexcharts-yaxistooltip-left { 43 | &::after { 44 | border-inline-start-color: var(--#{$prefix}paper-bg); 45 | } 46 | &::before { 47 | border-inline-start-color: var(--#{$prefix}border-color); 48 | } 49 | } 50 | 51 | &.apexcharts-xaxistooltip-right, 52 | &.apexcharts-yaxistooltip-right { 53 | &::after { 54 | border-inline-end-color: var(--#{$prefix}paper-bg); 55 | } 56 | &::before { 57 | border-inline-end-color: var(--#{$prefix}border-color); 58 | } 59 | } 60 | 61 | &.apexcharts-xaxistooltip-top, 62 | &.apexcharts-yaxistooltip-top { 63 | &::after { 64 | border-block-start-color: var(--#{$prefix}paper-bg); 65 | } 66 | &::before { 67 | border-block-start-color: var(--#{$prefix}border-color); 68 | } 69 | } 70 | } 71 | 72 | .apexcharts-tooltip-text { 73 | font-family: $font-family-base !important; 74 | } 75 | .apexcharts-legend-marker, 76 | .apexcharts-tooltip-marker { 77 | margin-inline: 0 .1875rem; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_root.scss: -------------------------------------------------------------------------------- 1 | /* The color-scheme CSS property https://web.dev/color-scheme/ */ 2 | :root{ 3 | // variable prefix 4 | --prefix: #{$prefix}; 5 | 6 | --#{$prefix}pure-black: #{$pure-black}; 7 | 8 | // Icons sizing 9 | --#{$prefix}icon-size: #{$icon-size}; 10 | --#{$prefix}icon-size-xs: #{$icon-size-xs}; 11 | --#{$prefix}icon-size-sm: #{$icon-size-sm}; 12 | --#{$prefix}icon-size-md: #{$icon-size-md}; 13 | --#{$prefix}icon-size-lg: #{$icon-size-lg}; 14 | --#{$prefix}icon-size-xl: #{$icon-size-xl}; 15 | 16 | @function calculate-contrast($color) { 17 | @return if(lightness($color) > 75%, var(--#{$prefix}black), var(--#{$prefix}white)); 18 | } 19 | @each $color, $value in $custom-theme-colors { 20 | // Construct CSS variable names with Sass interpolation 21 | --#{$prefix}#{$color}-contrast: #{calculate-contrast($value)}; 22 | } 23 | } 24 | 25 | :root, 26 | [data-bs-theme="light"] { 27 | // global custom variables 28 | --#{$prefix}bg-label-tint-amount: #{$bg-label-tint-amount}; 29 | --#{$prefix}border-subtle-amount: #{$border-subtle-amount}; 30 | --#{$prefix}base-color: #{$black}; 31 | --#{$prefix}base-color-rgb: #{$base-rgb}; 32 | --#{$prefix}paper-bg: #{$paper-bg}; 33 | --#{$prefix}paper-bg-rgb: #{$paper-bg-rgb}; 34 | 35 | --#{$prefix}min-contrast-ratio: #{$min-contrast-ratio}; 36 | 37 | // Box-shadow variables 38 | --#{$prefix}box-shadow: #{$box-shadow}; 39 | --#{$prefix}box-shadow-xs: #{$box-shadow-xs}; 40 | --#{$prefix}box-shadow-sm: #{$box-shadow-sm}; 41 | --#{$prefix}box-shadow-lg: #{$box-shadow-lg}; 42 | --#{$prefix}box-shadow-xl: #{$box-shadow-xl}; 43 | 44 | --#{$prefix}floating-component-shadow: #{$floating-component-shadow}; 45 | 46 | // TODO: CheckInBS6 - A new variable has been created because the `$link-color` SCSS #{to-rgb($link-color)} variable was being used, and changing the color did not reflect the update. This new variable ensures that future color changes are applied correctly. 47 | --#{$prefix}custom-link-color: var(--#{$prefix}primary); 48 | 49 | // Navbar 50 | --#{$prefix}navbar-bg: #{$navbar-bg}; 51 | --#{$prefix}navbar-box-shadow: #{$navbar-box-shadow}; 52 | --#{$prefix}navbar-border-width: #{$border-width}; 53 | --#{$prefix}navbar-border-color: #{$navbar-bg}; 54 | 55 | // Menu 56 | --#{$prefix}menu-header-color: #{$navbar-light-color}; 57 | 58 | 59 | // Tabs & Pills 60 | --#{$prefix}nav-box-shadow: #{$nav-box-shadow}; 61 | --#{$prefix}nav-border-color: #{$nav-border-color}; 62 | 63 | } 64 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/pages/page-auth.scss: -------------------------------------------------------------------------------- 1 | // * Authentication 2 | // ******************************************************************************* 3 | 4 | @import "../_bootstrap-extended/include"; 5 | 6 | $authentication-1-inner-max-width: 460px !default; 7 | 8 | .authentication-wrapper { 9 | display: flex; 10 | flex-basis: 100%; 11 | inline-size: 100%; 12 | min-block-size: 100vh; 13 | 14 | .authentication-inner { 15 | inline-size: 100%; 16 | } 17 | 18 | &.authentication-basic { 19 | align-items: center; 20 | justify-content: center; 21 | } 22 | .auth-cover-illustration { 23 | z-index: 1; 24 | max-inline-size: 38rem; 25 | } 26 | 27 | .authentication-image-object { 28 | &-left { 29 | position: absolute; 30 | inset-block-end: 6%; 31 | inset-inline-start: 4%; 32 | } 33 | &-right { 34 | position: absolute; 35 | inset-block-end: 7%; 36 | inset-inline-end: 4%; 37 | } 38 | } 39 | 40 | .authentication-image { 41 | position: absolute; 42 | z-index: -1; 43 | inline-size: 100%; 44 | inset-block-end: 0; 45 | inset-inline-start: 0; 46 | } 47 | .authentication-image-model { 48 | inline-size: 768px; 49 | } 50 | 51 | &.authentication-cover { 52 | align-items: flex-start; 53 | .authentication-inner { 54 | position: relative; 55 | min-block-size: 100vh; 56 | } 57 | .authentication-image { 58 | inset-inline-start: unset; 59 | } 60 | .authentication-image-tree { 61 | position: absolute; 62 | inset-block-end: 4rem; 63 | inset-inline-start: 3rem; 64 | } 65 | } 66 | 67 | &.authentication-basic .authentication-inner { 68 | max-inline-size: $authentication-1-inner-max-width; 69 | } 70 | 71 | // For two-steps auth 72 | .auth-input-wrapper .auth-input { 73 | max-inline-size: 50px; 74 | padding-inline: .4rem; 75 | } 76 | } 77 | 78 | // Two-steps auth responsive style 79 | @include media-breakpoint-down(sm) { 80 | .authentication-wrapper { 81 | .auth-input-wrapper .auth-input { 82 | font-size: $h5-font-size; 83 | } 84 | } 85 | } 86 | 87 | // Responsive style for cover mask 88 | @include media-breakpoint-down(xl) { 89 | .authentication-cover { 90 | .authentication-image-model { 91 | position: relative; 92 | inline-size: 575px; 93 | inset-block-start: 1rem; 94 | } 95 | } 96 | } 97 | .authentication-wrapper .authentication-bg { 98 | background-color: $white; 99 | } 100 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_list-group.scss: -------------------------------------------------------------------------------- 1 | /* List groups 2 | ******************************************************************************* */ 3 | 4 | /* List Group Mixin */ 5 | .list-group { 6 | --#{$prefix}list-group-border-color: #{$list-group-border-color}; 7 | --#{$prefix}list-group-active-border-color: var(--#{$prefix}border-color); 8 | --#{$prefix}list-group-action-hover-color: var(--#{$prefix}heading-color); 9 | --#{$prefix}list-group-action-active-color: var(--#{$prefix}body-color); 10 | --#{$prefix}list-group-active-bg: var(--#{$prefix}primary-bg-subtle); 11 | 12 | .list-group-item { 13 | line-height: 1.375rem; 14 | padding-block-end: calc($list-group-item-padding-y - 1px); 15 | } 16 | &:not([class*="list-group-flush"]) .list-group-item:first-of-type { 17 | padding-block-start: calc($list-group-item-padding-y - 1px); 18 | } 19 | &[class*="list-group-flush"] .list-group-item:last-of-type { 20 | padding-block-end: $list-group-item-padding-y; 21 | } 22 | &[class*="list-group-horizontal-md"] .list-group-item { 23 | word-wrap: normal; 24 | @include media-breakpoint-up(md) { 25 | padding-block-start: calc($list-group-item-padding-y - 1px); 26 | } 27 | } 28 | 29 | .list-group-item.active { 30 | color: var(--#{$prefix}primary); 31 | h1, 32 | .h1, 33 | h2, 34 | .h2, 35 | h3, 36 | .h3, 37 | h4, 38 | .h4, 39 | h5, 40 | .h5, 41 | h6, 42 | .h6 { 43 | color: var(--#{$prefix}primary); 44 | } 45 | &, 46 | &:hover, 47 | &:focus { 48 | --#{$prefix}list-group-color: var(--#{$prefix}white); 49 | } 50 | } 51 | 52 | @include media-breakpoint-up(md) { 53 | &.list-group-horizontal-md > .list-group-item + .list-group-item { 54 | border-inline-end-width: var(--#{$prefix}list-group-border-width); 55 | border-inline-start-width: 0; 56 | } 57 | } 58 | } 59 | 60 | // scss-docs-start list-group-modifiers 61 | 62 | @each $state in map-keys($theme-colors) { 63 | .list-group-item-#{$state} { 64 | --#{$prefix}list-group-border-color: var(--#{$prefix}#{$state}); 65 | --#{$prefix}list-group-active-border-color: var(--#{$prefix}#{$state}); 66 | --#{$prefix}list-group-active-bg: var(--#{$prefix}#{$state}-bg-subtle); 67 | --#{$prefix}list-group-color: var(--#{$prefix}#{$state}-text-emphasis); 68 | --#{$prefix}list-group-action-hover-color: var(--#{$prefix}#{$state}-text-emphasis); 69 | --#{$prefix}list-group-action-active-color: var(--#{$prefix}#{$state}-text-emphasis); 70 | } 71 | } 72 | // scss-docs-end list-group-modifiers 73 | -------------------------------------------------------------------------------- /resources/views/layouts/commonMaster.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | @yield('title') | {{ config('variables.templateName') ? config('variables.templateName') : 'TemplateName' }} 10 | - {{ config('variables.templateSuffix') ? config('variables.templateSuffix') : 'TemplateSuffix' }} 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | @include('layouts/sections/styles') 30 | 31 | 32 | @include('layouts/sections/scriptsIncludes') 33 | 34 | 35 | 36 | 37 | @yield('layoutContent') 38 | 39 | 40 | 41 | 42 | 43 | @include('layouts/sections/scripts') 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /resources/views/_partials/macros.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $width = $width ?? '30'; 3 | $height = $height ?? '24'; 4 | @endphp 5 | 6 | 7 | 9 | 12 | 14 | 16 | 19 | 21 | 23 | 26 | 29 | 32 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /config/filesystems.php: -------------------------------------------------------------------------------- 1 | env('FILESYSTEM_DISK', 'local'), 17 | 18 | /* 19 | |-------------------------------------------------------------------------- 20 | | Filesystem Disks 21 | |-------------------------------------------------------------------------- 22 | | 23 | | Below you may configure as many filesystem disks as necessary, and you 24 | | may even configure multiple disks for the same driver. Examples for 25 | | most supported storage drivers are configured here for reference. 26 | | 27 | | Supported drivers: "local", "ftp", "sftp", "s3" 28 | | 29 | */ 30 | 31 | 'disks' => [ 32 | 33 | 'local' => [ 34 | 'driver' => 'local', 35 | 'root' => storage_path('app/private'), 36 | 'serve' => true, 37 | 'throw' => false, 38 | 'report' => false, 39 | ], 40 | 41 | 'public' => [ 42 | 'driver' => 'local', 43 | 'root' => storage_path('app/public'), 44 | 'url' => env('APP_URL').'/storage', 45 | 'visibility' => 'public', 46 | 'throw' => false, 47 | 'report' => false, 48 | ], 49 | 50 | 's3' => [ 51 | 'driver' => 's3', 52 | 'key' => env('AWS_ACCESS_KEY_ID'), 53 | 'secret' => env('AWS_SECRET_ACCESS_KEY'), 54 | 'region' => env('AWS_DEFAULT_REGION'), 55 | 'bucket' => env('AWS_BUCKET'), 56 | 'url' => env('AWS_URL'), 57 | 'endpoint' => env('AWS_ENDPOINT'), 58 | 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), 59 | 'throw' => false, 60 | 'report' => false, 61 | ], 62 | 63 | ], 64 | 65 | /* 66 | |-------------------------------------------------------------------------- 67 | | Symbolic Links 68 | |-------------------------------------------------------------------------- 69 | | 70 | | Here you may configure the symbolic links that will be created when the 71 | | `storage:link` Artisan command is executed. The array keys should be 72 | | the locations of the links and the values should be their targets. 73 | | 74 | */ 75 | 76 | 'links' => [ 77 | public_path('storage') => storage_path('app/public'), 78 | ], 79 | 80 | ]; 81 | -------------------------------------------------------------------------------- /resources/views/content/authentications/auth-forgot-password-basic.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts/blankLayout') 2 | 3 | @section('title', 'Forgot Password Basic - Pages') 4 | 5 | @section('page-style') 6 | @vite(['resources/assets/vendor/scss/pages/page-auth.scss']) 7 | @endsection 8 | 9 | @section('content') 10 |
11 |
12 |
13 | 14 |
15 | 16 | 22 | 23 |
24 |

Forgot Password? 🔒

25 |

Enter your email and we'll send you instructions to reset your password

26 |
27 |
28 | 29 | 30 |
31 | 32 |
33 | 39 |
40 |
41 | 42 | auth-tree 43 | triangle-bg 44 | auth-tree 45 |
46 |
47 |
48 | @endsection -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_components/_footer.scss: -------------------------------------------------------------------------------- 1 | /* Footer 2 | ******************************************************************************* */ 3 | 4 | .footer { 5 | --#{$prefix}footer-color: #{$footer-color}; 6 | --#{$prefix}footer-bg: #{$footer-bg}; 7 | --#{$prefix}footer-border-width: #{$footer-border-width}; 8 | --#{$prefix}footer-border-color: #{$footer-border-color}; 9 | --#{$prefix}footer-link-color: #{$footer-link-color}; 10 | --#{$prefix}footer-link-hover-color: #{$footer-link-hover-color}; 11 | --#{$prefix}footer-link-disabled-color: #{$footer-link-disabled-color}; 12 | --#{$prefix}footer-link-active-color: #{$footer-link-active-color}; 13 | --#{$prefix}footer-brand-color: #{$footer-brand-color}; 14 | --#{$prefix}footer-brand-hover-color: #{$footer-brand-hover-color}; 15 | --#{$prefix}footer-box-shadow: #{$footer-box-shadow}; 16 | 17 | color: var(--#{$prefix}footer-color); 18 | 19 | .footer-brand{ 20 | color: var(--#{$prefix}footer-brand-color); 21 | &:hover, 22 | &:focus { 23 | color: var(--#{$prefix}footer-brand-hover-color); 24 | } 25 | } 26 | 27 | .footer-link{ 28 | display: inline-block; 29 | color: var(--#{$prefix}footer-link-color); 30 | &:hover, 31 | &:focus { 32 | color: var(--#{$prefix}footer-link-hover-color); 33 | } 34 | &.disabled { 35 | color: var(--#{$prefix}footer-link-disabled-color) !important; 36 | } 37 | &:active, 38 | &.active { 39 | color: var(--#{$prefix}footer-link-active-color); 40 | } 41 | } 42 | &.bg-footer-theme { 43 | --#{$prefix}footer-brand-color: var(--#{$prefix}body-color); 44 | } 45 | &.bg-white { 46 | --#{$prefix}footer-link-hover-color: #{$pure-black}; 47 | --#{$prefix}footer-brand-color: #{$black}; 48 | --#{$prefix}footer-brand-hover-color: #{$pure-black}; 49 | } 50 | } 51 | 52 | /* Generate contextual modifier classes for colorizing the footer */ 53 | @each $state in map-keys($theme-colors) { 54 | .footer.bg-#{$state} { 55 | @if $state == "light" { 56 | --#{$prefix}footer-brand-hover-color: color-mix(in sRGB, var(--#{$prefix}paper-bg) 40%, var(--#{$prefix}#{$state}-contrast)); 57 | --#{$prefix}footer-link-hover-color: var(--#{$prefix}#{$state}-contrast); 58 | --#{$prefix}footer-color: var(--#{$prefix}body-color); 59 | --#{$prefix}footer-link-color: var(--#{$prefix}body-color); 60 | --#{$prefix}footer-brand-color: var(--#{$prefix}heading-color); 61 | } 62 | @else { 63 | --#{$prefix}footer-brand-hover-color: color-mix(in sRGB, var(--#{$prefix}paper-bg) #{$bg-label-tint-amount}, var(--#{$prefix}#{$state})); 64 | --#{$prefix}footer-link-hover-color: color-mix(in sRGB, var(--#{$prefix}paper-bg) #{$bg-label-tint-amount}, var(--#{$prefix}#{$state})); 65 | --#{$prefix}footer-color: var(--#{$prefix}#{$state}-contrast); 66 | --#{$prefix}footer-link-color: var(--#{$prefix}#{$state}-contrast); 67 | --#{$prefix}footer-brand-color: var(--#{$prefix}#{$state}-contrast); 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /resources/views/layouts/sections/menu/verticalMenu.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | use Illuminate\Support\Facades\Route; 3 | @endphp 4 | 78 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "materio-bootstrap-html-laravel-admin-template-free", 3 | "version": "2.0.0", 4 | "private": true, 5 | "type": "module", 6 | "license": "MIT", 7 | "scripts": { 8 | "dev": "vite", 9 | "build": "vite build" 10 | }, 11 | "devDependencies": { 12 | "@babel/core": "~7.26.10", 13 | "@babel/plugin-transform-destructuring": "~7.23.3", 14 | "@babel/plugin-transform-object-rest-spread": "7.23.4", 15 | "@babel/plugin-transform-template-literals": "~7.23.3", 16 | "@babel/preset-env": "~7.26.9", 17 | "@prettier/plugin-php": "0.22.4", 18 | "@rollup/plugin-html": "^1.1.0", 19 | "@stylistic/stylelint-config": "^1.0.1", 20 | "@stylistic/stylelint-plugin": "^2.1.3", 21 | "ajv": "^8.17.1", 22 | "autoprefixer": "^10.4.21", 23 | "axios": "^1.12.2", 24 | "babel-loader": "~9.1.3", 25 | "browser-sync": "^3.0.4", 26 | "concurrently": "^9.2.1", 27 | "cross-env": "^7.0.3", 28 | "glob": "^10.4.5", 29 | "eslint": "~9.16.0", 30 | "eslint-config-airbnb-base": "^15.0.0", 31 | "eslint-config-prettier": "^9.1.2", 32 | "eslint-plugin-import": "^2.32.0", 33 | "eslint-plugin-prettier": "^5.5.4", 34 | "lodash": "^4.17.21", 35 | "postcss": "^8.5.6", 36 | "prettier": "^3.6.2", 37 | "resolve-url-loader": "5.0.0", 38 | "sass": "1.76.0", 39 | "sass-loader": "~14.0.0", 40 | "source-map-resolve": "0.6.0", 41 | "vite": "^6.3.6" 42 | }, 43 | "overrides": { 44 | "prop-types": "15.8.1", 45 | "sass": "1.76.0" 46 | }, 47 | "resolutions": { 48 | "prop-types": "15.8.1", 49 | "sass": "1.76.0" 50 | }, 51 | "browserslist": [ 52 | ">= 1%", 53 | "last 2 versions", 54 | "not dead", 55 | "Chrome >= 45", 56 | "Firefox >= 38", 57 | "Edge >= 12", 58 | "Explorer >= 10", 59 | "iOS >= 9", 60 | "Safari >= 9", 61 | "Android >= 4.4", 62 | "Opera >= 30" 63 | ], 64 | "babel": { 65 | "presets": [ 66 | [ 67 | "@babel/env", 68 | { 69 | "targets": { 70 | "browsers": [ 71 | ">= 1%", 72 | "last 2 versions", 73 | "not dead", 74 | "Chrome >= 45", 75 | "Firefox >= 38", 76 | "Edge >= 12", 77 | "Explorer >= 10", 78 | "iOS >= 9", 79 | "Safari >= 9", 80 | "Android >= 4.4", 81 | "Opera >= 30" 82 | ] 83 | } 84 | } 85 | ] 86 | ] 87 | }, 88 | "dependencies": { 89 | "@popperjs/core": "^2.11.8", 90 | "apexcharts": "~4.2.0", 91 | "bootstrap": "~5.3.3", 92 | "highlight.js": "~11.10.0", 93 | "@iconify/json": "^2.2.392", 94 | "@iconify/tools": "^4.1.4", 95 | "@iconify/types": "^2.0.0", 96 | "@iconify/utils": "^2.3.0", 97 | "jquery": "~3.7.1", 98 | "masonry-layout": "~4.2.2", 99 | "node-waves": "~0.7.6", 100 | "perfect-scrollbar": "~1.5.6", 101 | "laravel-vite-plugin": "1.0.6" 102 | } 103 | } -------------------------------------------------------------------------------- /resources/assets/css/demo.css: -------------------------------------------------------------------------------- 1 | /* 2 | * demo.css 3 | * File include item demo only specific css only 4 | ******************************************************************************/ 5 | 6 | .menu .app-brand.demo { 7 | height: 64px; 8 | } 9 | 10 | .app-brand-logo.demo svg { 11 | width: 30px; 12 | height: 24px; 13 | } 14 | 15 | .app-brand-text.demo { 16 | font-size: 1.25rem; 17 | } 18 | 19 | .authentication-wrapper .app-brand-text.demo { 20 | font-size: 1.5rem; 21 | text-transform: capitalize; 22 | } 23 | 24 | /* ! For .layout-navbar-fixed added fix padding top to .layout-page */ 25 | /* Default navbar */ 26 | .layout-navbar-fixed .layout-wrapper:not(.layout-without-menu) .layout-page { 27 | padding-top: 64px !important; 28 | } 29 | 30 | /* Navbar page z-index issue solution */ 31 | .content-wrapper .navbar { 32 | z-index: auto; 33 | } 34 | 35 | /* 36 | * Content 37 | ******************************************************************************/ 38 | 39 | .demo-blocks > * { 40 | display: block !important; 41 | } 42 | 43 | .demo-inline-spacing > * { 44 | margin: 1rem 0.375rem 0 0 !important; 45 | } 46 | 47 | /* ? .demo-vertical-spacing class is used to have vertical margins between elements. To remove margin-top from the first-child, use .demo-only-element class with .demo-vertical-spacing class. For example, we have used this class in forms-input-groups.html file. */ 48 | .demo-vertical-spacing > * { 49 | margin-top: 1.25rem !important; 50 | margin-bottom: 0 !important; 51 | } 52 | .demo-vertical-spacing.demo-only-element > :first-child { 53 | margin-top: 0 !important; 54 | } 55 | 56 | .demo-vertical-spacing-lg > * { 57 | margin-top: 1.875rem !important; 58 | margin-bottom: 0 !important; 59 | } 60 | .demo-vertical-spacing-lg.demo-only-element > :first-child { 61 | margin-top: 0 !important; 62 | } 63 | 64 | .demo-vertical-spacing-xl > * { 65 | margin-top: 5rem !important; 66 | margin-bottom: 0 !important; 67 | } 68 | .demo-vertical-spacing-xl.demo-only-element > :first-child { 69 | margin-top: 0 !important; 70 | } 71 | 72 | /* Dropdown buttons going out of small screens */ 73 | @media (max-width: 576px) { 74 | #dropdown-variation-demo .btn-group .text-truncate { 75 | width: 300px; 76 | position: relative; 77 | } 78 | #dropdown-variation-demo .btn-group .text-truncate::after { 79 | position: absolute; 80 | top: 45%; 81 | right: 0.65rem; 82 | } 83 | } 84 | /* 85 | * Layout demo 86 | ******************************************************************************/ 87 | 88 | .layout-demo-wrapper { 89 | display: -webkit-box; 90 | display: -ms-flexbox; 91 | display: flex; 92 | -webkit-box-align: center; 93 | -ms-flex-align: center; 94 | align-items: center; 95 | -webkit-box-orient: vertical; 96 | -webkit-box-direction: normal; 97 | -ms-flex-direction: column; 98 | flex-direction: column; 99 | margin-top: 1.25rem; 100 | } 101 | .layout-demo-placeholder img { 102 | width: 900px; 103 | } 104 | .layout-demo-info { 105 | text-align: center; 106 | margin-top: 1.25rem; 107 | } 108 | -------------------------------------------------------------------------------- /resources/views/layouts/contentNavbarLayout.blade.php: -------------------------------------------------------------------------------- 1 | @isset($pageConfigs) 2 | {!! Helper::updatePageConfig($pageConfigs) !!} 3 | @endisset 4 | @extends('layouts/commonMaster') 5 | 6 | @php 7 | /* Display elements */ 8 | $contentNavbar = $contentNavbar ?? true; 9 | $containerNav = $containerNav ?? 'container-xxl'; 10 | $isNavbar = $isNavbar ?? true; 11 | $isMenu = $isMenu ?? true; 12 | $isFlex = $isFlex ?? false; 13 | $isFooter = $isFooter ?? true; 14 | $customizerHidden = $customizerHidden ?? ''; 15 | 16 | /* HTML Classes */ 17 | $navbarDetached = 'navbar-detached'; 18 | $menuFixed = isset($configData['menuFixed']) ? $configData['menuFixed'] : ''; 19 | if (isset($navbarType)) { 20 | $configData['navbarType'] = $navbarType; 21 | } 22 | $navbarType = isset($configData['navbarType']) ? $configData['navbarType'] : ''; 23 | $footerFixed = isset($configData['footerFixed']) ? $configData['footerFixed'] : ''; 24 | $menuCollapsed = isset($configData['menuCollapsed']) ? $configData['menuCollapsed'] : ''; 25 | 26 | /* Content classes */ 27 | $container = ($container ?? 'container-xxl'); 28 | 29 | @endphp 30 | 31 | @section('layoutContent') 32 |
33 |
34 | 35 | @if ($isMenu) 36 | @include('layouts/sections/menu/verticalMenu') 37 | @endif 38 | 39 | 40 | 41 |
42 | 43 | {{-- Below commented code read by artisan command while installing jetstream. !! Do not remove if you want to use jetstream. --}} 44 | {{-- --}} 45 | 46 | 47 | @if ($isNavbar) 48 | @include('layouts/sections/navbar/navbar') 49 | @endif 50 | 51 | 52 | 53 | 54 |
55 | 56 | 57 | @if ($isFlex) 58 |
59 | @else 60 |
61 | @endif 62 | 63 | @yield('content') 64 | 65 |
66 | 67 | 68 | 69 | @if ($isFooter) 70 | @include('layouts/sections/footer/footer') 71 | @endif 72 | 73 |
74 |
75 | 76 |
77 | 78 |
79 | 80 | @if ($isMenu) 81 | 82 |
83 | @endif 84 | 85 |
86 |
87 | 88 |
89 | @endsection 90 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_popover.scss: -------------------------------------------------------------------------------- 1 | /* Popovers 2 | ******************************************************************************* */ 3 | 4 | .modal-open .popover { 5 | z-index: $zindex-modal + 1; 6 | } 7 | .popover:not(.custom-popover) { 8 | --#{$prefix}popover-header-bg: transparent; 9 | .popover-header { 10 | --#{$prefix}popover-border-width: 0; 11 | padding-block-end: 0; 12 | } 13 | .popover-arrow::after { 14 | --#{$prefix}popover-arrow-border: var(--#{$prefix}popover-bg); 15 | } 16 | } 17 | .popover:has([class^="popover-"]):not(.custom-popover) { 18 | --#{$prefix}popover-border-color: transparent; 19 | --#{$prefix}popover-header-bg: transparent; 20 | .popover-body { 21 | background-color: transparent; 22 | } 23 | } 24 | .popover:has([class^="popover-header-"]) { 25 | --#{$prefix}popover-border-color: #{$popover-border-color}; 26 | --#{$prefix}popover-body-color: var(--#{$prefix}body-color); 27 | --#{$prefix}popover-header-bg: var(--#{$prefix}primary); 28 | } 29 | 30 | .popover { 31 | box-shadow: var(--#{$prefix}popover-box-shadow); 32 | 33 | .popover-header { 34 | font-size: $h5-font-size; 35 | padding-block-end: 0; 36 | } 37 | 38 | .popover-body { 39 | padding-block-start: $spacer; 40 | } 41 | 42 | .popover-arrow { 43 | z-index: 1; 44 | } 45 | 46 | &:not(.custom-popover).bs-popover-auto { 47 | > .popover-arrow::before { 48 | --#{$prefix}popover-bg: #{rgba(var(--#{$prefix}white-rgb), .1)}; 49 | } 50 | &[data-popper-placement="bottom"] > { 51 | .popover-arrow { 52 | &::after { 53 | border-block-end-color: var(--#{$prefix}popover-arrow-border); 54 | inset-block-start: 1px; 55 | } 56 | } 57 | .popover-header::before { 58 | --#{$prefix}popover-border-width: 0; 59 | } 60 | } 61 | } 62 | [data-bs-theme="light"] & { 63 | &.popover-dark { 64 | --#{$prefix}popover-bg: color-mix(in sRGB, var(--#{$prefix}base-color) 90%, var(--#{$prefix}paper-bg)); 65 | } 66 | } 67 | } 68 | 69 | /* custom popover 70 | ******************************************************************************* */ 71 | .custom-popover { 72 | --#{$prefix}popover-max-width: 200px; 73 | --#{$prefix}popover-header-color: var(--#{$prefix}white); 74 | --#{$prefix}popover-body-padding-x: 1rem; 75 | --#{$prefix}popover-body-padding-y: 1rem; 76 | --#{$prefix}popover-header-padding-y: .625rem; 77 | .popover-header { 78 | --#{$prefix}popover-header-bg: var(--#{$prefix}primary); 79 | } 80 | } 81 | 82 | // scss-docs-start popover-modifiers 83 | @each $state in map-keys($theme-colors) { 84 | .popover { 85 | &.popover-#{$state} { 86 | --#{$prefix}popover-bg: var(--#{$prefix}#{$state}); 87 | --#{$prefix}popover-header-bg: var(--#{$prefix}#{$state}); 88 | --#{$prefix}popover-header-color: var(--#{$prefix}#{$state}-contrast); 89 | --#{$prefix}popover-body-color: var(--#{$prefix}#{$state}-contrast); 90 | & > .popover-arrow::after { 91 | --#{$prefix}popover-arrow-border: var(--#{$prefix}#{$state}); 92 | } 93 | } 94 | } 95 | } 96 | 97 | // scss-docs-end popover-modifiers 98 | -------------------------------------------------------------------------------- /resources/assets/vendor/scss/_bootstrap-extended/_navbar.scss: -------------------------------------------------------------------------------- 1 | /* Navbar 2 | ******************************************************************************* */ 3 | .layout-navbar { 4 | background-color: var(--#{$prefix}body-bg); 5 | } 6 | 7 | .navbar-brand { 8 | margin-inline: 0 var(--#{$prefix}navbar-brand-margin-end); 9 | a { 10 | color: var(--#{$prefix}heading-color); 11 | } 12 | } 13 | 14 | /* IE fix */ 15 | 16 | /* .navbar-collapse, 17 | .navbar-brand, 18 | .navbar-text { 19 | flex-shrink: 1; 20 | } */ 21 | 22 | /* Mega dropdown 23 | ****************************************************************************** */ 24 | 25 | .mega-dropdown { 26 | .dropdown-toggle { 27 | box-shadow: none; 28 | outline: 0; 29 | } 30 | 31 | .dropdown-menu { 32 | inline-size: 100%; 33 | } 34 | } 35 | .navbar { 36 | &.bg-body-tertiary { 37 | --#{$prefix}navbar-color: var(--#{$prefix}body-color); 38 | --#{$prefix}navbar-hover-color: var(--#{$prefix}heading-color); 39 | --#{$prefix}navbar-disabled-color: color-mix(in sRGB, var(--#{$prefix}base-color) 40%, var(--#{$prefix}paper-bg)); 40 | --#{$prefix}navbar-active-color: var(--#{$prefix}heading-color); 41 | --#{$prefix}navbar-brand-color: var(--#{$prefix}heading-color); 42 | --#{$prefix}navbar-brand-hover-color: color-mix(in sRGB, var(--#{$prefix}base-color) 70%, var(--#{$prefix}paper-bg)); 43 | } 44 | &.bg-white { 45 | --#{$prefix}navbar-color: color-mix(in sRGB, var(--#{$prefix}pure-black) #{$bg-label-tint-amount}, var(--#{$prefix}white)); 46 | --#{$prefix}navbar-hover-color: var(--#{$prefix}pure-black); 47 | --#{$prefix}navbar-disabled-color: color-mix(in sRGB, var(--#{$prefix}pure-black) 40%, var(--#{$prefix}white)); 48 | --#{$prefix}navbar-active-color: var(--#{$prefix}pure-black); 49 | --#{$prefix}navbar-brand-color: var(--#{$prefix}pure-black); 50 | --#{$prefix}navbar-brand-hover-color: color-mix(in sRGB, var(--#{$prefix}pure-black) #{$bg-label-tint-amount}, var(--#{$prefix}white)); 51 | } 52 | } 53 | 54 | /* Generate contextual modifier classes for colorizing the navbar */ 55 | @each $state in map-keys($theme-colors) { 56 | .navbar.bg-#{$state} { 57 | @if $state == "light" { 58 | --#{$prefix}navbar-color: var(--#{$prefix}body-color); 59 | --#{$prefix}navbar-hover-color: var(--#{$prefix}heading-color); 60 | --#{$prefix}navbar-disabled-color: color-mix(in sRGB, var(--#{$prefix}base-color) 40%, var(--#{$prefix}paper-bg)); 61 | --#{$prefix}navbar-active-color: var(--#{$prefix}heading-color); 62 | --#{$prefix}navbar-brand-color: var(--#{$prefix}heading-color); 63 | --#{$prefix}navbar-brand-hover-color: color-mix(in sRGB, var(--#{$prefix}base-color) 70%, var(--#{$prefix}paper-bg)); 64 | } 65 | @else { 66 | --#{$prefix}navbar-color: color-mix(in sRGB, var(--#{$prefix}#{$state}-contrast) #{$bg-label-tint-amount}, var(--#{$prefix}#{$state})); 67 | --#{$prefix}navbar-hover-color: var(--#{$prefix}#{$state}-contrast); 68 | --#{$prefix}navbar-disabled-color: color-mix(in sRGB, var(--#{$prefix}#{$state}-contrast) 60%, var(--#{$prefix}#{$state})); 69 | --#{$prefix}navbar-active-color: var(--#{$prefix}#{$state}-contrast); 70 | --#{$prefix}navbar-brand-color: var(--#{$prefix}#{$state}-contrast); 71 | --#{$prefix}navbar-brand-hover-color: color-mix(in sRGB, var(--#{$prefix}paper-bg) #{$bg-label-tint-amount}, var(--#{$prefix}#{$state})); 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /resources/views/content/user-interface/ui-footer.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts/contentNavbarLayout') 2 | 3 | @section('title', 'Footer - UI elements') 4 | 5 | @section('content') 6 | 7 | 25 | 26 |
27 | 28 | 29 | 58 | 59 | @endsection 60 | -------------------------------------------------------------------------------- /public/assets/json/user-profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "id": 1, 5 | "project_img": "xd-label.png", 6 | "project_leader": "Fred", 7 | "project_name": "App Design", 8 | "team": [ 9 | "1.png", 10 | "3.png", 11 | "4.png" 12 | ], 13 | "date": "09 Feb 2021", 14 | "status": "89%" 15 | }, 16 | { 17 | "id": 2, 18 | "project_img": "react-label.png", 19 | "project_leader": "Georgie", 20 | "project_name": "Create Website", 21 | "team": [ 22 | "2.png", 23 | "6.png", 24 | "5.png", 25 | "3.png", 26 | "5.png", 27 | "3.png" 28 | ], 29 | "date": "20 Mar 2021", 30 | "status": "72%" 31 | }, 32 | { 33 | "id": 3, 34 | "project_img": "social-label.png", 35 | "project_leader": "Owen", 36 | "project_name": "Social Banners", 37 | "team": [ 38 | "11.png", 39 | "10.png", 40 | "7.png", 41 | "12.png", 42 | "4.png" 43 | ], 44 | "date": "03 Jan 2021", 45 | "status": "45%" 46 | }, 47 | { 48 | "id": 4, 49 | "project_img": "sketch-label.png", 50 | "project_leader": "Keith", 51 | "project_name": "Logo Designs", 52 | "team": [ 53 | "5.png", 54 | "7.png", 55 | "12.png", 56 | "4.png" 57 | ], 58 | "date": "12 Aug 2021", 59 | "status": "92%" 60 | }, 61 | { 62 | "id": 5, 63 | "project_img": "figma-label.png", 64 | "project_leader": "Harmonia", 65 | "project_name": "Figma Dashboards", 66 | "team": [ 67 | "9.png", 68 | "2.png", 69 | "4.png" 70 | ], 71 | "date": "08 Apr 2021", 72 | "status": "25%" 73 | }, 74 | { 75 | "id": 6, 76 | "project_img": "vue-label.png", 77 | "project_leader": "Genevra", 78 | "project_name": "Admin Template", 79 | "team": [ 80 | "11.png", 81 | "13.png", 82 | "7.png", 83 | "6.png" 84 | ], 85 | "date": "06 Oct 2021", 86 | "status": "100%" 87 | }, 88 | { 89 | "id": 7, 90 | "project_img": "", 91 | "project_leader": "Eileen", 92 | "project_name": "Website SEO", 93 | "team": [ 94 | "10.png", 95 | "3.png", 96 | "2.png", 97 | "8.png", 98 | "13.png", 99 | "10.png", 100 | "3.png" 101 | ], 102 | "date": "10 May 2021", 103 | "status": "38%" 104 | }, 105 | { 106 | "id": 8, 107 | "project_img": "xd-label.png", 108 | "project_leader": "Richardo", 109 | "project_name": "Angular APIs", 110 | "team": [ 111 | "4.png", 112 | "13.png", 113 | "10.png", 114 | "3.png" 115 | ], 116 | "date": "17 June 2021", 117 | "status": "77%" 118 | }, 119 | { 120 | "id": 9, 121 | "project_img": "html-label.png", 122 | "project_leader": "Allyson", 123 | "project_name": "Crypto Admin", 124 | "team": [ 125 | "7.png", 126 | "3.png", 127 | "7.png", 128 | "2.png" 129 | ], 130 | "date": "29 Sept 2021", 131 | "status": "36%" 132 | }, 133 | { 134 | "id": 10, 135 | "project_img": "sketch-label.png", 136 | "project_leader": "Merline", 137 | "project_name": "IOS App Design", 138 | "team": [ 139 | "2.png", 140 | "8.png", 141 | "5.png", 142 | "1.png" 143 | ], 144 | "date": "19 Apr 2021", 145 | "status": "56%" 146 | } 147 | ] 148 | } -------------------------------------------------------------------------------- /resources/views/content/user-interface/ui-alerts.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts/contentNavbarLayout') 2 | 3 | @section('title', 'Alerts - UI elements') 4 | 5 | @section('content') 6 |
7 | 8 |
9 |
10 |
Basic Alerts
11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 |
28 | 29 | 30 |
31 |
32 |
Dismissible Alerts
33 |
34 | 38 | 39 | 43 | 44 | 48 | 49 | 53 | 54 | 58 | 59 | 63 | 64 | 68 |
69 |
70 |
71 | 72 |
73 | @endsection --------------------------------------------------------------------------------