Material ripple
PACE.js loader
RTL support
RTL mode
Theme settings panel
Light style
Material style
Dark style
PAGE LAYOUT
LAYOUT OPTIONS
{{option[1]}}
Fixed navbar
Fixed footer
Reversed
Collapsed sidenav
THEME
NAVBAR BG
{{option}}
SIDENAV BG
{{option}}
FOOTER BG
{{option}}
const { EnvironmentPlugin } = require('webpack') const mix = require('laravel-mix') const glob = require('glob') const path = require('path') /* |-------------------------------------------------------------------------- | Mix config |-------------------------------------------------------------------------- */ mix.options({ resourceRoot: process.env.ASSET_URL || undefined, postCss: [require('autoprefixer')] }) /* |-------------------------------------------------------------------------- | Configure Webpack |-------------------------------------------------------------------------- */ mix.webpackConfig({ output: { publicPath: process.env.ASSET_URL || undefined, libraryTarget: 'window' }, plugins: [ new EnvironmentPlugin({ // Application's public url BASE_URL: process.env.ASSET_URL ? `${process.env.ASSET_URL}/` : '/' }) ], module: { rules: [{ test: /\.js$/, include: [ path.join(__dirname, 'node_modules/bootstrap/'), path.join(__dirname, 'node_modules/bootstrap-slider/'), path.join(__dirname, 'node_modules/popper.js/'), path.join(__dirname, 'node_modules/bootstrap-table/'), path.join(__dirname, 'node_modules/shepherd.js/'), path.join(__dirname, 'node_modules/flot/'), path.join(__dirname, 'node_modules/plyr/'), path.join(__dirname, 'node_modules/rangetouch/') ], loader: 'babel-loader', options: { presets: [['@babel/preset-env', { targets: 'last 2 versions, ie >= 10' }]], plugins: ['@babel/plugin-transform-destructuring', '@babel/plugin-proposal-object-rest-spread', '@babel/plugin-transform-template-literals'], babelrc: false } }] }, externals: { 'jquery': 'jQuery', 'moment': 'moment', 'datatables.net': '$.fn.dataTable', 'spin.js': 'Spinner', 'jsdom': 'jsdom', 'd3': 'd3', 'eve': 'eve', 'velocity': 'Velocity', 'hammer': 'Hammer', 'raphael': 'Raphael', 'jquery-mapael': 'Mapael', 'pace': '"pace-progress"', 'popper.js': 'Popper', 'jquery-validation': 'jQuery', // blueimp-file-upload plugin 'canvas-to-blob': 'blueimpDataURLtoBlob', 'blueimp-tmpl': 'blueimpTmpl', 'load-image': 'blueimpLoadImage', 'load-image-meta': 'null', 'load-image-scale': 'null', 'load-image-exif': 'null', 'jquery-ui/ui/widget': 'null', './jquery.fileupload': 'null', './jquery.fileupload-process': 'null', './jquery.fileupload-image': 'null', './jquery.fileupload-video': 'null', './jquery.fileupload-validate': 'null', // blueimp-gallery plugin './blueimp-helper': 'jQuery', './blueimp-gallery': 'blueimpGallery', './blueimp-gallery-video': 'blueimpGallery' } }) /* |-------------------------------------------------------------------------- | Vendor assets |-------------------------------------------------------------------------- */ function mixAssetsDir(query, cb) { (glob.sync('resources/assets/' + query) || []).forEach(f => { f = f.replace(/[\\\/]+/g, '/') cb(f, f.replace('resources/assets', 'public')) }) } const sassOptions = { implementation: require('node-sass') } {% if not settingsPanel -%} // Core stylesheets mix.sass('resources/assets/vendor/sass{% if rtlSupport %}/rtl{% endif %}/bootstrap{% if style == 'material' %}-material{% elif style == 'dark' %}-dark{% endif %}.scss', 'public/vendor/css', sassOptions) .sass('resources/assets/vendor/sass{% if rtlSupport %}/rtl{% endif %}/appwork{% if style == 'material' %}-material{% elif style == 'dark' %}-dark{% endif %}.scss', 'public/vendor/css', sassOptions) .sass('resources/assets/vendor/sass{% if rtlSupport %}/rtl{% endif %}/theme-{{theme}}{% if style == 'material' %}-material{% elif style == 'dark' %}-dark{% endif %}.scss', 'public/vendor/css', sassOptions) .sass('resources/assets/vendor/sass{% if rtlSupport %}/rtl{% endif %}/colors{% if style == 'material' %}-material{% elif style == 'dark' %}-dark{% endif %}.scss', 'public/vendor/css', sassOptions) .sass('resources/assets/vendor/sass{% if rtlSupport %}/rtl{% endif %}/uikit.scss', 'public/vendor/css', sassOptions) {%- else -%} // Core stylesheets {%- for fileName in ['appwork', 'bootstrap', 'colors'] -%}{% set isFirstLoop = loop.first %}{% for styleName in styles %} {% if isFirstLoop and loop.first %}mix{% else %} {% endif -%} .sass('resources/assets/vendor/sass{% if rtlSupport %}/rtl{% endif %}/{{fileName}}{% if styleName == 'material' %}-material{% elif styleName == 'dark' %}-dark{% endif %}.scss', 'public/vendor/css', sassOptions) {%- endfor %}{% endfor %} .sass('resources/assets/vendor/sass{% if rtlSupport %}/rtl{% endif %}/uikit.scss', 'public/vendor/css', sassOptions) // Themes {%- for themeName in ['air', 'corporate', 'cotton', 'gradient', 'paper', 'shadow', 'soft', 'sunrise', 'twitlight', 'vibrant'] -%}{% set isFirstLoop = loop.first %}{% for styleName in styles %} {% if isFirstLoop and loop.first %}mix{% else %} {% endif -%} .sass('resources/assets/vendor/sass{% if rtlSupport %}/rtl{% endif %}/theme-{{themeName}}{% if styleName == 'material' %}-material{% elif styleName == 'dark' %}-dark{% endif %}.scss', 'public/vendor/css', sassOptions) {%- endfor %}{% endfor %} {%- endif %} // Core javascripts mixAssetsDir('vendor/js/**/*.js', (src, dest) => mix.js(src, dest)) // Libs mixAssetsDir('vendor/libs/**/*.js', (src, dest) => mix.js(src, dest)) mixAssetsDir('vendor/libs/**/!(_)*.scss', (src, dest) => mix.sass(src, dest.replace(/\.scss$/, '.css'), sassOptions)) // Pages mixAssetsDir('vendor/sass/pages/**/!(_)*.scss', (src, dest) => mix.sass(src, dest.replace(/(\\|\/)sass(\\|\/)/, '$1css$2').replace(/\.scss$/, '.css'), sassOptions)) // Fonts mixAssetsDir('vendor/fonts/*.css', (src, dest) => mix.copy(src, dest)) mixAssetsDir('vendor/fonts/*/*', (src, dest) => mix.copy(src, dest)) /* |-------------------------------------------------------------------------- | Application assets |-------------------------------------------------------------------------- */ mix.js('resources/assets/js/application.js', 'public/js') .sass('resources/assets/sass/application.scss', 'public/css') mix.version()
{% raw %}{{{% endraw %} isset($title) ? $title.' - ' : '' {% raw %}}}{% endraw %}Laravel Starter
{% if materialRipple %} {% endif %} {%- if materialRipple and not settingsPanel -%} {% endif %} {% if pageLayout != 'blank' or settingsPanel %} {% endif %} {% if settingsPanel %} {% endif %} {% if paceLoader %} {% endif %} {% if pageLayout != 'blank' and pageLayout != 'without-sidenav' %}
{% endif %} @yield('styles')
{% if paceLoader %}
{% endif %} @yield('layout-content') {%- if pageLayout != 'blank' and pageLayout != 'without-sidenav' %} {%- endif %} {% if pageLayout != 'blank' and pageLayout != 'without-sidenav' %} {% endif %} @yield('scripts')
@extends('layouts.layout-{{pageLayout.replace('layout-', '')}}') @section('content')
Home
Page content.
Button
@endsection
@extends('layouts.layout-{{pageLayout.replace('layout-', '')}}') @section('content')
Page 2
Page content.
Button
@endsection
Laravel Starter
@empty($hide_layout_sidenav_toggle)
@endempty
Link 1
Link 2
Home
Page 2
Link 1
Link 2
$enable-rtl-support: {% if rtlSupport %}true{% else %}false{% endif %}; $enable-light-style: {% if (not settingsPanel and style == 'light') or (settingsPanel and styles.indexOf('light') !== -1) %}true{% else %}false{% endif %}; $enable-material-style: {% if (not settingsPanel and style == 'material') or (settingsPanel and styles.indexOf('material') !== -1) %}true{% else %}false{% endif %}; $enable-dark-style: {% if (not settingsPanel and style == 'dark') or (settingsPanel and styles.indexOf('dark') !== -1) %}true{% else %}false{% endif %}; @mixin feature-ltr($as-child: true) { @if $enable-rtl-support { @if $as-child { html:not([dir=rtl]) & { @content; } } @else { html:not([dir=rtl]) { @content; } } } @else { @content; } } @mixin feature-ltr-style() { @if $enable-rtl-support { &:not([dir=rtl]) { @content; } } @else { @content; } } @mixin feature-rtl($as-child: true) { @if $enable-rtl-support { @if $as-child { [dir=rtl] & { @content; } } @else { [dir=rtl] { @content; } } } } @mixin feature-rtl-style() { @if $enable-rtl-support { &[dir=rtl] { @content; } } }