WIP: Enabled themes and login with adminlte

This commit is contained in:
Deon George 2017-12-03 12:20:26 +11:00
parent b1a5807eb3
commit 02087feef2
193 changed files with 69547 additions and 39901 deletions
app
composer.jsoncomposer.lock
config
package-lock.jsonpackage.json
public
resources/assets

@ -54,6 +54,7 @@ class Kernel extends HttpKernel
'dev' => \Laravel\Spark\Http\Middleware\VerifyUserIsDeveloper::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'hasTeam' => \Laravel\Spark\Http\Middleware\VerifyUserHasTeam::class,
'setTheme' => \Igaster\LaravelTheme\Middleware\setTheme::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'subscribed' => \Laravel\Spark\Http\Middleware\VerifyUserIsSubscribed::class,
'teamSubscribed' => \Laravel\Spark\Http\Middleware\VerifyTeamIsSubscribed::class,

@ -3,6 +3,7 @@
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
class AppServiceProvider extends ServiceProvider
{
@ -13,7 +14,7 @@ class AppServiceProvider extends ServiceProvider
*/
public function boot()
{
//
Schema::defaultStringLength(191);
}
/**

@ -9,11 +9,14 @@
"type": "project",
"require": {
"php": ">=7.0.0",
"barryvdh/laravel-debugbar": "^3.1",
"fideloper/proxy": "~3.3",
"laravel/framework": "5.5.*",
"laravel/tinker": "~1.0",
"igaster/laravel-theme": "^2.0",
"laravel/cashier": "~7.0",
"laravel/spark": "*@dev"
"laravel/framework": "5.5.*",
"laravel/spark": "*@dev",
"laravel/tinker": "~1.0",
"orchestra/asset": "^3.5"
},
"require-dev": {
"filp/whoops": "~2.0",
@ -63,4 +66,4 @@
"url": "./spark"
}
]
}
}

423
composer.lock generated

@ -4,8 +4,76 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "8ab7da22a335c55a731323b98ac2797d",
"content-hash": "8fe85a6d50589a911b79a4d65a817e89",
"packages": [
{
"name": "barryvdh/laravel-debugbar",
"version": "v3.1.0",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-debugbar.git",
"reference": "01a859752094e00aa8548832312366753272f8af"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/01a859752094e00aa8548832312366753272f8af",
"reference": "01a859752094e00aa8548832312366753272f8af",
"shasum": ""
},
"require": {
"illuminate/routing": "5.5.x",
"illuminate/session": "5.5.x",
"illuminate/support": "5.5.x",
"maximebf/debugbar": "~1.14.0",
"php": ">=7.0",
"symfony/debug": "^3",
"symfony/finder": "^3"
},
"require-dev": {
"illuminate/framework": "5.5.x"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
},
"laravel": {
"providers": [
"Barryvdh\\Debugbar\\ServiceProvider"
],
"aliases": {
"Debugbar": "Barryvdh\\Debugbar\\Facade"
}
}
},
"autoload": {
"psr-4": {
"Barryvdh\\Debugbar\\": "src/"
},
"files": [
"src/helpers.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Barry vd. Heuvel",
"email": "barryvdh@gmail.com"
}
],
"description": "PHP Debugbar integration for Laravel",
"keywords": [
"debug",
"debugbar",
"laravel",
"profiler",
"webprofiler"
],
"time": "2017-09-18T13:32:46+00:00"
},
{
"name": "dnoegel/php-xdg-base-dir",
"version": "0.1",
@ -602,6 +670,69 @@
],
"time": "2017-03-20T17:10:46+00:00"
},
{
"name": "igaster/laravel-theme",
"version": "v2.0.5",
"source": {
"type": "git",
"url": "https://github.com/igaster/laravel-theme.git",
"reference": "3db2869e85b4ed2d1f1fc89503e0a8487be42ff6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/igaster/laravel-theme/zipball/3db2869e85b4ed2d1f1fc89503e0a8487be42ff6",
"reference": "3db2869e85b4ed2d1f1fc89503e0a8487be42ff6",
"shasum": ""
},
"require": {
"illuminate/contracts": "5.4.*|5.5.*"
},
"require-dev": {
"orchestra/testbench": "~3.4",
"phpunit/phpunit": "^6.0"
},
"suggest": {
"orchestra/asset": "Use '@css' and '@js' in Blade files"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Igaster\\LaravelTheme\\themeServiceProvider"
],
"aliases": {
"Theme": "Igaster\\LaravelTheme\\Facades\\Theme"
}
}
},
"autoload": {
"psr-4": {
"Igaster\\LaravelTheme\\": "src/",
"Igaster\\LaravelTheme\\Tests\\": "tests/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Giannis Gasteratos",
"email": "igasteratos@gmail.com"
}
],
"description": "Laravel 5 Themes: Asset & Views folder per theme. Theme inheritance. Blade integration and more...",
"homepage": "https://github.com/Igaster/laravel-theme.git",
"keywords": [
"assets",
"blade",
"laravel-5",
"package",
"themes",
"views"
],
"time": "2017-09-27T11:05:13+00:00"
},
{
"name": "intervention/image",
"version": "2.4.1",
@ -1069,6 +1200,77 @@
],
"time": "2017-07-13T13:11:05+00:00"
},
{
"name": "laravie/html",
"version": "v5.5.0",
"source": {
"type": "git",
"url": "https://github.com/laravie/html.git",
"reference": "79b6f8b8db5873d7deedeaf874ee58a91245fb7f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravie/html/zipball/79b6f8b8db5873d7deedeaf874ee58a91245fb7f",
"reference": "79b6f8b8db5873d7deedeaf874ee58a91245fb7f",
"shasum": ""
},
"require": {
"illuminate/http": "~5.5.0",
"illuminate/routing": "~5.5.0",
"illuminate/session": "~5.5.0",
"illuminate/support": "~5.5.0",
"php": ">=7.0"
},
"replace": {
"laravelcollective/html": "*"
},
"require-dev": {
"mockery/mockery": "^0.9.4",
"orchestra/database": "~3.5.0",
"orchestra/testbench": "~3.5.0",
"phpunit/phpunit": "~6.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.5-dev"
}
},
"autoload": {
"psr-4": {
"Collective\\Html\\": "src/"
},
"files": [
"src/helpers.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylorotwell@gmail.com"
},
{
"name": "Mior Muhammad Zaki",
"email": "crynobone@gmail.com"
},
{
"name": "Adam Engebretson",
"email": "adam@laravelcollective.com"
}
],
"description": "HTML and Form Builders for the Laravel Framework",
"homepage": "https://github.com/laravie/html",
"keywords": [
"form",
"html",
"laravel"
],
"time": "2017-08-31T00:17:51+00:00"
},
{
"name": "league/flysystem",
"version": "1.0.41",
@ -1152,6 +1354,67 @@
],
"time": "2017-08-06T17:41:04+00:00"
},
{
"name": "maximebf/debugbar",
"version": "v1.14.1",
"source": {
"type": "git",
"url": "https://github.com/maximebf/php-debugbar.git",
"reference": "64251a392344e3d22f3d21c3b7c531ba96eb01d2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/64251a392344e3d22f3d21c3b7c531ba96eb01d2",
"reference": "64251a392344e3d22f3d21c3b7c531ba96eb01d2",
"shasum": ""
},
"require": {
"php": ">=5.3.0",
"psr/log": "^1.0",
"symfony/var-dumper": "^2.6|^3.0"
},
"require-dev": {
"phpunit/phpunit": "^4.0|^5.0"
},
"suggest": {
"kriswallsmith/assetic": "The best way to manage assets",
"monolog/monolog": "Log using Monolog",
"predis/predis": "Redis storage"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.14-dev"
}
},
"autoload": {
"psr-4": {
"DebugBar\\": "src/DebugBar/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Maxime Bouroumeau-Fuseau",
"email": "maxime.bouroumeau@gmail.com",
"homepage": "http://maximebf.com"
},
{
"name": "Barry vd. Heuvel",
"email": "barryvdh@gmail.com"
}
],
"description": "Debug bar in the browser for php application",
"homepage": "https://github.com/maximebf/php-debugbar",
"keywords": [
"debug",
"debugbar"
],
"time": "2017-09-13T12:19:36+00:00"
},
{
"name": "monolog/monolog",
"version": "1.23.0",
@ -1378,6 +1641,164 @@
],
"time": "2017-09-02T17:10:46+00:00"
},
{
"name": "orchestra/asset",
"version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/orchestral/asset.git",
"reference": "9b7fd9ace55e66562ec1fb7377dd9a03c6f1db09"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/orchestral/asset/zipball/9b7fd9ace55e66562ec1fb7377dd9a03c6f1db09",
"reference": "9b7fd9ace55e66562ec1fb7377dd9a03c6f1db09",
"shasum": ""
},
"require": {
"laravie/html": "~5.5.0",
"orchestra/contracts": "~3.5.0",
"orchestra/support-facades": "~3.5.0",
"php": ">=7.0"
},
"require-dev": {
"illuminate/filesystem": "~5.5.0",
"mockery/mockery": "^0.9.4",
"phpunit/phpunit": "~6.0"
},
"suggest": {
"illuminate/filesystem": "Allow using orchestra/asset component outside of Laravel app (~5.5).",
"orchestra/html": "Allow using orchestra/asset with HTML component (~3.5)."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.5-dev"
}
},
"autoload": {
"psr-4": {
"Orchestra\\Asset\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mior Muhammad Zaki",
"email": "crynobone@gmail.com",
"homepage": "https://github.com/crynobone"
}
],
"description": "Asset Component for Orchestra Platform",
"homepage": "http://orchestraplatform.com/docs/latest/components/asset/",
"keywords": [
"asset",
"laravel",
"orchestra-platform",
"orchestral"
],
"time": "2017-07-23T12:12:33+00:00"
},
{
"name": "orchestra/contracts",
"version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/orchestral/contracts.git",
"reference": "7997335b492c9ff009fce6014f9e9a03941d1624"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/orchestral/contracts/zipball/7997335b492c9ff009fce6014f9e9a03941d1624",
"reference": "7997335b492c9ff009fce6014f9e9a03941d1624",
"shasum": ""
},
"require": {
"illuminate/contracts": "~5.5.0",
"php": ">=7.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.5-dev"
}
},
"autoload": {
"psr-4": {
"Orchestra\\Contracts\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mior Muhammad Zaki",
"email": "crynobone@gmail.com",
"homepage": "https://github.com/crynobone"
}
],
"description": "Contracts for Orchestra Platform",
"keywords": [
"contracts",
"orchestra-platform",
"orchestral"
],
"time": "2017-09-04T01:13:03+00:00"
},
{
"name": "orchestra/support-facades",
"version": "v3.5.2",
"source": {
"type": "git",
"url": "https://github.com/orchestral/support-facades.git",
"reference": "542a3a3dbaac70e89460fae23b48ba5aa17c21c6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/orchestral/support-facades/zipball/542a3a3dbaac70e89460fae23b48ba5aa17c21c6",
"reference": "542a3a3dbaac70e89460fae23b48ba5aa17c21c6",
"shasum": ""
},
"require": {
"illuminate/support": "~5.5.0",
"php": ">=7.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.5-dev"
}
},
"autoload": {
"psr-4": {
"Orchestra\\Support\\Facades\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mior Muhammad Zaki",
"email": "crynobone@gmail.com",
"homepage": "https://github.com/crynobone"
}
],
"description": "Support (Facades) Component for Orchestra Platform",
"homepage": "http://orchestraplatform.com/docs/latest/components/support/",
"keywords": [
"laravel",
"orchestra-platform",
"orchestral"
],
"time": "2017-09-03T03:56:13+00:00"
},
{
"name": "paragonie/random_compat",
"version": "v2.0.11",

115
config/themes.php Normal file

@ -0,0 +1,115 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Root path where theme Views will be located.
| Can be outside default views path e.g.: resources/themes
| Leave it null if you will put your themes in the default views folder
| (as defined in config\views.php)
|--------------------------------------------------------------------------
*/
'themes_path' => realpath(base_path('resources/theme')), // eg: base_path('resources/themes')
/*
|--------------------------------------------------------------------------
| Set behavior if an asset is not found in a Theme hierarchy.
| Available options: THROW_EXCEPTION | LOG_ERROR | IGNORE
|--------------------------------------------------------------------------
*/
'asset_not_found' => 'LOG_ERROR',
/*
|--------------------------------------------------------------------------
| Do we want a theme activated by default? Can be set at runtime with:
| Theme::set('theme-name');
|--------------------------------------------------------------------------
*/
'default' => null,
/*
|--------------------------------------------------------------------------
| Cache theme.json configuration files that are located in each theme's folder
| in order to avoid searching theme settings in the filesystem for each request
|--------------------------------------------------------------------------
*/
'cache' => true,
/*
|--------------------------------------------------------------------------
| Define available themes. Format:
|
| 'theme-name' => [
| 'extends' => 'theme-to-extend', // optional
| 'views-path' => 'path-to-views', // defaults to: resources/views/theme-name
| 'asset-path' => 'path-to-assets', // defaults to: public/theme-name
|
| // You can add your own custom keys
| // Use Theme::getSetting('key') & Theme::setSetting('key', 'value') to access them
| 'key' => 'value',
| ],
|
|--------------------------------------------------------------------------
*/
'themes' => [
// Add your themes here. These settings will overide theme.json settings defined for each theme
/*
|---------------------------[ Example Structure ]--------------------------
|
| // Full theme Syntax:
|
| 'example1' => [
| 'extends' => null, // doesn't extend any theme
| 'views-path' => example, // = resources/views/example_theme
| 'asset-path' => example, // = public/example_theme
| ],
|
| // Use all Defaults:
|
| 'example2', // Assets =\public\example2, Views =\resources\views\example2
| // Note that if you use all default values, you can ommit decleration completely.
| // i.e. defaults will be used when you call Theme::set('undefined-theme')
|
|
| // This theme shares the views with example2 but defines its own assets in \public\example3
|
| 'example3' => [
| 'views-path' => 'example',
| ],
|
| // This theme extends example1 and may override SOME views\assets in its own paths
|
| 'example4' => [
| 'extends' => 'example1',
| ],
|
|--------------------------------------------------------------------------
*/
'metronic-fe' => [
'extends' => null,
'views-path' => 'frontend/metronic',
'asset-path' => 'theme/frontend/metronic',
],
'metronic-be' => [
'extends' => null,
'views-path' => 'backend/metronic',
'asset-path' => 'theme/backend/metronic',
],
'adminlte-be' => [
'extends' => null,
'views-path' => 'backend/adminlte',
'asset-path' => 'theme/backend/adminlte',
],
],
];

79
package-lock.json generated

@ -7,6 +7,23 @@
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
"acacha-forms": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/acacha-forms/-/acacha-forms-1.0.8.tgz",
"integrity": "sha512-TjbXOnCnaDI6GKxD+WphZf+Q6o3f54mWAx1pXnAixkRqb5+Sac7wXolVm51ZPEWIcYli8ctu6xfHsz4UTDcnMQ==",
"requires": {
"axios": "0.15.3",
"jquery": "3.2.1",
"toastr": "2.1.2"
},
"dependencies": {
"jquery": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz",
"integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c="
}
}
},
"accepts": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz",
@ -76,6 +93,11 @@
}
}
},
"admin-lte": {
"version": "2.3.11",
"resolved": "https://registry.npmjs.org/admin-lte/-/admin-lte-2.3.11.tgz",
"integrity": "sha1-2lbc001C6e8a82K+FVIKBTqdQ9s="
},
"after": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz",
@ -1153,10 +1175,10 @@
"hoek": "2.16.3"
}
},
"bootstrap": {
"bootstrap-sass": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.3.7.tgz",
"integrity": "sha1-WjiTlFSfIzMIdaOxUGVldPip63E="
"resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.3.7.tgz",
"integrity": "sha1-ZZbHq0D2Y3OTMjqwvIDQZPxjBJg="
},
"brace-expansion": {
"version": "1.1.8",
@ -3088,6 +3110,11 @@
"debug": "2.6.9"
}
},
"font-awesome": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz",
"integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM="
},
"for-in": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@ -3841,13 +3868,6 @@
}
}
},
"string_decoder": {
"version": "1.0.1",
"bundled": true,
"requires": {
"safe-buffer": "5.0.1"
}
},
"string-width": {
"version": "1.0.2",
"bundled": true,
@ -3857,6 +3877,13 @@
"strip-ansi": "3.0.1"
}
},
"string_decoder": {
"version": "1.0.1",
"bundled": true,
"requires": {
"safe-buffer": "5.0.1"
}
},
"stringstream": {
"version": "0.0.5",
"bundled": true,
@ -4606,6 +4633,12 @@
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz",
"integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI="
},
"icheck": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/icheck/-/icheck-1.0.2.tgz",
"integrity": "sha1-BtCNo9R65EjBU7Jjm4bprX/fcSg=",
"dev": true
},
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
@ -4810,6 +4843,11 @@
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
"integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
},
"ionicons": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-3.0.0.tgz",
"integrity": "sha1-QLja9P16MRUL0AIWD2ZJbiKpjDw="
},
"ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
@ -7970,14 +8008,6 @@
"limiter": "1.1.2"
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": {
"safe-buffer": "5.1.1"
}
},
"string-length": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz",
@ -7996,6 +8026,14 @@
"strip-ansi": "3.0.1"
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"requires": {
"safe-buffer": "5.1.1"
}
},
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
@ -8279,6 +8317,11 @@
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
},
"toastr": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.2.tgz",
"integrity": "sha1-/WkGaudXilszV3JfycfDNem2gd8="
},
"tough-cookie": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",

@ -7,17 +7,25 @@
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"dependencies": {
"bootstrap": "^3.0.0",
"acacha-forms": "^1.0.8",
"admin-lte": "^2.3.11",
"axios": "^0.15.2",
"bootstrap-sass": "^3.3.7",
"cross-env": "^3.2.3",
"font-awesome": "^4.7.0",
"ionicons": "^3.0.0",
"jquery": "^2.1.4",
"js-cookie": "^2.1.0",
"cross-env": "^3.2.3",
"laravel-mix": "0.*",
"moment": "^2.10.6",
"promise": "^7.1.1",
"sweetalert": "^1.1.3",
"toastr": "^2.1.2",
"underscore": "^1.8.3",
"urijs": "^1.17.0",
"vue": "2.*",
"axios": "^0.15.2"
"vue": "2.*"
},
"devDependencies": {
"icheck": "^1.0.2"
}
}

5544
public/css/adminlte-app.css vendored Normal file

File diff suppressed because it is too large Load Diff

23437
public/css/all.css vendored Normal file

File diff suppressed because one or more lines are too long

11803
public/css/app.css vendored

File diff suppressed because one or more lines are too long

BIN
public/css/blue.png Normal file

Binary file not shown.

After

(image error) Size: 2.1 KiB

@ -1,932 +0,0 @@
body.stop-scrolling {
height: 100%;
overflow: hidden; }
.sweet-overlay {
background-color: black;
/* IE8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
/* IE8 */
background-color: rgba(0, 0, 0, 0.4);
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
display: none;
z-index: 10000; }
.sweet-alert {
background-color: white;
font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
width: 478px;
padding: 17px;
border-radius: 5px;
text-align: center;
position: fixed;
left: 50%;
top: 50%;
margin-left: -256px;
margin-top: -200px;
overflow: hidden;
display: none;
z-index: 99999; }
@media all and (max-width: 540px) {
.sweet-alert {
width: auto;
margin-left: 0;
margin-right: 0;
left: 15px;
right: 15px; } }
.sweet-alert h2 {
color: #575757;
font-size: 30px;
text-align: center;
font-weight: 600;
text-transform: none;
position: relative;
margin: 25px 0;
padding: 0;
line-height: 40px;
display: block; }
.sweet-alert p {
color: #797979;
font-size: 16px;
text-align: center;
font-weight: 300;
position: relative;
text-align: inherit;
float: none;
margin: 0;
padding: 0;
line-height: normal; }
.sweet-alert fieldset {
border: none;
position: relative; }
.sweet-alert .sa-error-container {
background-color: #f1f1f1;
margin-left: -17px;
margin-right: -17px;
overflow: hidden;
padding: 0 10px;
max-height: 0;
webkit-transition: padding 0.15s, max-height 0.15s;
transition: padding 0.15s, max-height 0.15s; }
.sweet-alert .sa-error-container.show {
padding: 10px 0;
max-height: 100px;
webkit-transition: padding 0.2s, max-height 0.2s;
transition: padding 0.25s, max-height 0.25s; }
.sweet-alert .sa-error-container .icon {
display: inline-block;
width: 24px;
height: 24px;
border-radius: 50%;
background-color: #ea7d7d;
color: white;
line-height: 24px;
text-align: center;
margin-right: 3px; }
.sweet-alert .sa-error-container p {
display: inline-block; }
.sweet-alert .sa-input-error {
position: absolute;
top: 29px;
right: 26px;
width: 20px;
height: 20px;
opacity: 0;
-webkit-transform: scale(0.5);
transform: scale(0.5);
-webkit-transform-origin: 50% 50%;
transform-origin: 50% 50%;
-webkit-transition: all 0.1s;
transition: all 0.1s; }
.sweet-alert .sa-input-error::before, .sweet-alert .sa-input-error::after {
content: "";
width: 20px;
height: 6px;
background-color: #f06e57;
border-radius: 3px;
position: absolute;
top: 50%;
margin-top: -4px;
left: 50%;
margin-left: -9px; }
.sweet-alert .sa-input-error::before {
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg); }
.sweet-alert .sa-input-error::after {
-webkit-transform: rotate(45deg);
transform: rotate(45deg); }
.sweet-alert .sa-input-error.show {
opacity: 1;
-webkit-transform: scale(1);
transform: scale(1); }
.sweet-alert input {
width: 100%;
box-sizing: border-box;
border-radius: 3px;
border: 1px solid #d7d7d7;
height: 43px;
margin-top: 10px;
margin-bottom: 17px;
font-size: 18px;
box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.06);
padding: 0 12px;
display: none;
-webkit-transition: all 0.3s;
transition: all 0.3s; }
.sweet-alert input:focus {
outline: none;
box-shadow: 0px 0px 3px #c4e6f5;
border: 1px solid #b4dbed; }
.sweet-alert input:focus::-moz-placeholder {
transition: opacity 0.3s 0.03s ease;
opacity: 0.5; }
.sweet-alert input:focus:-ms-input-placeholder {
transition: opacity 0.3s 0.03s ease;
opacity: 0.5; }
.sweet-alert input:focus::-webkit-input-placeholder {
transition: opacity 0.3s 0.03s ease;
opacity: 0.5; }
.sweet-alert input::-moz-placeholder {
color: #bdbdbd; }
.sweet-alert input:-ms-input-placeholder {
color: #bdbdbd; }
.sweet-alert input::-webkit-input-placeholder {
color: #bdbdbd; }
.sweet-alert.show-input input {
display: block; }
.sweet-alert .sa-confirm-button-container {
display: inline-block;
position: relative; }
.sweet-alert .la-ball-fall {
position: absolute;
left: 50%;
top: 50%;
margin-left: -27px;
margin-top: 4px;
opacity: 0;
visibility: hidden; }
.sweet-alert button {
background-color: #8CD4F5;
color: white;
border: none;
box-shadow: none;
font-size: 17px;
font-weight: 500;
-webkit-border-radius: 4px;
border-radius: 5px;
padding: 10px 32px;
margin: 26px 5px 0 5px;
cursor: pointer; }
.sweet-alert button:focus {
outline: none;
box-shadow: 0 0 2px rgba(128, 179, 235, 0.5), inset 0 0 0 1px rgba(0, 0, 0, 0.05); }
.sweet-alert button:hover {
background-color: #7ecff4; }
.sweet-alert button:active {
background-color: #5dc2f1; }
.sweet-alert button.cancel {
background-color: #C1C1C1; }
.sweet-alert button.cancel:hover {
background-color: #b9b9b9; }
.sweet-alert button.cancel:active {
background-color: #a8a8a8; }
.sweet-alert button.cancel:focus {
box-shadow: rgba(197, 205, 211, 0.8) 0px 0px 2px, rgba(0, 0, 0, 0.0470588) 0px 0px 0px 1px inset !important; }
.sweet-alert button[disabled] {
opacity: .6;
cursor: default; }
.sweet-alert button.confirm[disabled] {
color: transparent; }
.sweet-alert button.confirm[disabled] ~ .la-ball-fall {
opacity: 1;
visibility: visible;
transition-delay: 0s; }
.sweet-alert button::-moz-focus-inner {
border: 0; }
.sweet-alert[data-has-cancel-button=false] button {
box-shadow: none !important; }
.sweet-alert[data-has-confirm-button=false][data-has-cancel-button=false] {
padding-bottom: 40px; }
.sweet-alert .sa-icon {
width: 80px;
height: 80px;
border: 4px solid gray;
-webkit-border-radius: 40px;
border-radius: 40px;
border-radius: 50%;
margin: 20px auto;
padding: 0;
position: relative;
box-sizing: content-box; }
.sweet-alert .sa-icon.sa-error {
border-color: #F27474; }
.sweet-alert .sa-icon.sa-error .sa-x-mark {
position: relative;
display: block; }
.sweet-alert .sa-icon.sa-error .sa-line {
position: absolute;
height: 5px;
width: 47px;
background-color: #F27474;
display: block;
top: 37px;
border-radius: 2px; }
.sweet-alert .sa-icon.sa-error .sa-line.sa-left {
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
left: 17px; }
.sweet-alert .sa-icon.sa-error .sa-line.sa-right {
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
right: 16px; }
.sweet-alert .sa-icon.sa-warning {
border-color: #F8BB86; }
.sweet-alert .sa-icon.sa-warning .sa-body {
position: absolute;
width: 5px;
height: 47px;
left: 50%;
top: 10px;
-webkit-border-radius: 2px;
border-radius: 2px;
margin-left: -2px;
background-color: #F8BB86; }
.sweet-alert .sa-icon.sa-warning .sa-dot {
position: absolute;
width: 7px;
height: 7px;
-webkit-border-radius: 50%;
border-radius: 50%;
margin-left: -3px;
left: 50%;
bottom: 10px;
background-color: #F8BB86; }
.sweet-alert .sa-icon.sa-info {
border-color: #C9DAE1; }
.sweet-alert .sa-icon.sa-info::before {
content: "";
position: absolute;
width: 5px;
height: 29px;
left: 50%;
bottom: 17px;
border-radius: 2px;
margin-left: -2px;
background-color: #C9DAE1; }
.sweet-alert .sa-icon.sa-info::after {
content: "";
position: absolute;
width: 7px;
height: 7px;
border-radius: 50%;
margin-left: -3px;
top: 19px;
background-color: #C9DAE1; }
.sweet-alert .sa-icon.sa-success {
border-color: #A5DC86; }
.sweet-alert .sa-icon.sa-success::before, .sweet-alert .sa-icon.sa-success::after {
content: '';
-webkit-border-radius: 40px;
border-radius: 40px;
border-radius: 50%;
position: absolute;
width: 60px;
height: 120px;
background: white;
-webkit-transform: rotate(45deg);
transform: rotate(45deg); }
.sweet-alert .sa-icon.sa-success::before {
-webkit-border-radius: 120px 0 0 120px;
border-radius: 120px 0 0 120px;
top: -7px;
left: -33px;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
-webkit-transform-origin: 60px 60px;
transform-origin: 60px 60px; }
.sweet-alert .sa-icon.sa-success::after {
-webkit-border-radius: 0 120px 120px 0;
border-radius: 0 120px 120px 0;
top: -11px;
left: 30px;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
-webkit-transform-origin: 0px 60px;
transform-origin: 0px 60px; }
.sweet-alert .sa-icon.sa-success .sa-placeholder {
width: 80px;
height: 80px;
border: 4px solid rgba(165, 220, 134, 0.2);
-webkit-border-radius: 40px;
border-radius: 40px;
border-radius: 50%;
box-sizing: content-box;
position: absolute;
left: -4px;
top: -4px;
z-index: 2; }
.sweet-alert .sa-icon.sa-success .sa-fix {
width: 5px;
height: 90px;
background-color: white;
position: absolute;
left: 28px;
top: 8px;
z-index: 1;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg); }
.sweet-alert .sa-icon.sa-success .sa-line {
height: 5px;
background-color: #A5DC86;
display: block;
border-radius: 2px;
position: absolute;
z-index: 2; }
.sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
width: 25px;
left: 14px;
top: 46px;
-webkit-transform: rotate(45deg);
transform: rotate(45deg); }
.sweet-alert .sa-icon.sa-success .sa-line.sa-long {
width: 47px;
right: 8px;
top: 38px;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg); }
.sweet-alert .sa-icon.sa-custom {
background-size: contain;
border-radius: 0;
border: none;
background-position: center center;
background-repeat: no-repeat; }
/*
* Animations
*/
@-webkit-keyframes showSweetAlert {
0% {
transform: scale(0.7);
-webkit-transform: scale(0.7); }
45% {
transform: scale(1.05);
-webkit-transform: scale(1.05); }
80% {
transform: scale(0.95);
-webkit-transform: scale(0.95); }
100% {
transform: scale(1);
-webkit-transform: scale(1); } }
@keyframes showSweetAlert {
0% {
transform: scale(0.7);
-webkit-transform: scale(0.7); }
45% {
transform: scale(1.05);
-webkit-transform: scale(1.05); }
80% {
transform: scale(0.95);
-webkit-transform: scale(0.95); }
100% {
transform: scale(1);
-webkit-transform: scale(1); } }
@-webkit-keyframes hideSweetAlert {
0% {
transform: scale(1);
-webkit-transform: scale(1); }
100% {
transform: scale(0.5);
-webkit-transform: scale(0.5); } }
@keyframes hideSweetAlert {
0% {
transform: scale(1);
-webkit-transform: scale(1); }
100% {
transform: scale(0.5);
-webkit-transform: scale(0.5); } }
@-webkit-keyframes slideFromTop {
0% {
top: 0%; }
100% {
top: 50%; } }
@keyframes slideFromTop {
0% {
top: 0%; }
100% {
top: 50%; } }
@-webkit-keyframes slideToTop {
0% {
top: 50%; }
100% {
top: 0%; } }
@keyframes slideToTop {
0% {
top: 50%; }
100% {
top: 0%; } }
@-webkit-keyframes slideFromBottom {
0% {
top: 70%; }
100% {
top: 50%; } }
@keyframes slideFromBottom {
0% {
top: 70%; }
100% {
top: 50%; } }
@-webkit-keyframes slideToBottom {
0% {
top: 50%; }
100% {
top: 70%; } }
@keyframes slideToBottom {
0% {
top: 50%; }
100% {
top: 70%; } }
.showSweetAlert[data-animation=pop] {
-webkit-animation: showSweetAlert 0.3s;
animation: showSweetAlert 0.3s; }
.showSweetAlert[data-animation=none] {
-webkit-animation: none;
animation: none; }
.showSweetAlert[data-animation=slide-from-top] {
-webkit-animation: slideFromTop 0.3s;
animation: slideFromTop 0.3s; }
.showSweetAlert[data-animation=slide-from-bottom] {
-webkit-animation: slideFromBottom 0.3s;
animation: slideFromBottom 0.3s; }
.hideSweetAlert[data-animation=pop] {
-webkit-animation: hideSweetAlert 0.2s;
animation: hideSweetAlert 0.2s; }
.hideSweetAlert[data-animation=none] {
-webkit-animation: none;
animation: none; }
.hideSweetAlert[data-animation=slide-from-top] {
-webkit-animation: slideToTop 0.4s;
animation: slideToTop 0.4s; }
.hideSweetAlert[data-animation=slide-from-bottom] {
-webkit-animation: slideToBottom 0.3s;
animation: slideToBottom 0.3s; }
@-webkit-keyframes animateSuccessTip {
0% {
width: 0;
left: 1px;
top: 19px; }
54% {
width: 0;
left: 1px;
top: 19px; }
70% {
width: 50px;
left: -8px;
top: 37px; }
84% {
width: 17px;
left: 21px;
top: 48px; }
100% {
width: 25px;
left: 14px;
top: 45px; } }
@keyframes animateSuccessTip {
0% {
width: 0;
left: 1px;
top: 19px; }
54% {
width: 0;
left: 1px;
top: 19px; }
70% {
width: 50px;
left: -8px;
top: 37px; }
84% {
width: 17px;
left: 21px;
top: 48px; }
100% {
width: 25px;
left: 14px;
top: 45px; } }
@-webkit-keyframes animateSuccessLong {
0% {
width: 0;
right: 46px;
top: 54px; }
65% {
width: 0;
right: 46px;
top: 54px; }
84% {
width: 55px;
right: 0px;
top: 35px; }
100% {
width: 47px;
right: 8px;
top: 38px; } }
@keyframes animateSuccessLong {
0% {
width: 0;
right: 46px;
top: 54px; }
65% {
width: 0;
right: 46px;
top: 54px; }
84% {
width: 55px;
right: 0px;
top: 35px; }
100% {
width: 47px;
right: 8px;
top: 38px; } }
@-webkit-keyframes rotatePlaceholder {
0% {
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg); }
5% {
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg); }
12% {
transform: rotate(-405deg);
-webkit-transform: rotate(-405deg); }
100% {
transform: rotate(-405deg);
-webkit-transform: rotate(-405deg); } }
@keyframes rotatePlaceholder {
0% {
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg); }
5% {
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg); }
12% {
transform: rotate(-405deg);
-webkit-transform: rotate(-405deg); }
100% {
transform: rotate(-405deg);
-webkit-transform: rotate(-405deg); } }
.animateSuccessTip {
-webkit-animation: animateSuccessTip 0.75s;
animation: animateSuccessTip 0.75s; }
.animateSuccessLong {
-webkit-animation: animateSuccessLong 0.75s;
animation: animateSuccessLong 0.75s; }
.sa-icon.sa-success.animate::after {
-webkit-animation: rotatePlaceholder 4.25s ease-in;
animation: rotatePlaceholder 4.25s ease-in; }
@-webkit-keyframes animateErrorIcon {
0% {
transform: rotateX(100deg);
-webkit-transform: rotateX(100deg);
opacity: 0; }
100% {
transform: rotateX(0deg);
-webkit-transform: rotateX(0deg);
opacity: 1; } }
@keyframes animateErrorIcon {
0% {
transform: rotateX(100deg);
-webkit-transform: rotateX(100deg);
opacity: 0; }
100% {
transform: rotateX(0deg);
-webkit-transform: rotateX(0deg);
opacity: 1; } }
.animateErrorIcon {
-webkit-animation: animateErrorIcon 0.5s;
animation: animateErrorIcon 0.5s; }
@-webkit-keyframes animateXMark {
0% {
transform: scale(0.4);
-webkit-transform: scale(0.4);
margin-top: 26px;
opacity: 0; }
50% {
transform: scale(0.4);
-webkit-transform: scale(0.4);
margin-top: 26px;
opacity: 0; }
80% {
transform: scale(1.15);
-webkit-transform: scale(1.15);
margin-top: -6px; }
100% {
transform: scale(1);
-webkit-transform: scale(1);
margin-top: 0;
opacity: 1; } }
@keyframes animateXMark {
0% {
transform: scale(0.4);
-webkit-transform: scale(0.4);
margin-top: 26px;
opacity: 0; }
50% {
transform: scale(0.4);
-webkit-transform: scale(0.4);
margin-top: 26px;
opacity: 0; }
80% {
transform: scale(1.15);
-webkit-transform: scale(1.15);
margin-top: -6px; }
100% {
transform: scale(1);
-webkit-transform: scale(1);
margin-top: 0;
opacity: 1; } }
.animateXMark {
-webkit-animation: animateXMark 0.5s;
animation: animateXMark 0.5s; }
@-webkit-keyframes pulseWarning {
0% {
border-color: #F8D486; }
100% {
border-color: #F8BB86; } }
@keyframes pulseWarning {
0% {
border-color: #F8D486; }
100% {
border-color: #F8BB86; } }
.pulseWarning {
-webkit-animation: pulseWarning 0.75s infinite alternate;
animation: pulseWarning 0.75s infinite alternate; }
@-webkit-keyframes pulseWarningIns {
0% {
background-color: #F8D486; }
100% {
background-color: #F8BB86; } }
@keyframes pulseWarningIns {
0% {
background-color: #F8D486; }
100% {
background-color: #F8BB86; } }
.pulseWarningIns {
-webkit-animation: pulseWarningIns 0.75s infinite alternate;
animation: pulseWarningIns 0.75s infinite alternate; }
@-webkit-keyframes rotate-loading {
0% {
transform: rotate(0deg); }
100% {
transform: rotate(360deg); } }
@keyframes rotate-loading {
0% {
transform: rotate(0deg); }
100% {
transform: rotate(360deg); } }
/* Internet Explorer 9 has some special quirks that are fixed here */
/* The icons are not animated. */
/* This file is automatically merged into sweet-alert.min.js through Gulp */
/* Error icon */
.sweet-alert .sa-icon.sa-error .sa-line.sa-left {
-ms-transform: rotate(45deg) \9; }
.sweet-alert .sa-icon.sa-error .sa-line.sa-right {
-ms-transform: rotate(-45deg) \9; }
/* Success icon */
.sweet-alert .sa-icon.sa-success {
border-color: transparent\9; }
.sweet-alert .sa-icon.sa-success .sa-line.sa-tip {
-ms-transform: rotate(45deg) \9; }
.sweet-alert .sa-icon.sa-success .sa-line.sa-long {
-ms-transform: rotate(-45deg) \9; }
/*!
* Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/)
* Copyright 2015 Daniel Cardoso <@DanielCardoso>
* Licensed under MIT
*/
.la-ball-fall,
.la-ball-fall > div {
position: relative;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box; }
.la-ball-fall {
display: block;
font-size: 0;
color: #fff; }
.la-ball-fall.la-dark {
color: #333; }
.la-ball-fall > div {
display: inline-block;
float: none;
background-color: currentColor;
border: 0 solid currentColor; }
.la-ball-fall {
width: 54px;
height: 18px; }
.la-ball-fall > div {
width: 10px;
height: 10px;
margin: 4px;
border-radius: 100%;
opacity: 0;
-webkit-animation: ball-fall 1s ease-in-out infinite;
-moz-animation: ball-fall 1s ease-in-out infinite;
-o-animation: ball-fall 1s ease-in-out infinite;
animation: ball-fall 1s ease-in-out infinite; }
.la-ball-fall > div:nth-child(1) {
-webkit-animation-delay: -200ms;
-moz-animation-delay: -200ms;
-o-animation-delay: -200ms;
animation-delay: -200ms; }
.la-ball-fall > div:nth-child(2) {
-webkit-animation-delay: -100ms;
-moz-animation-delay: -100ms;
-o-animation-delay: -100ms;
animation-delay: -100ms; }
.la-ball-fall > div:nth-child(3) {
-webkit-animation-delay: 0ms;
-moz-animation-delay: 0ms;
-o-animation-delay: 0ms;
animation-delay: 0ms; }
.la-ball-fall.la-sm {
width: 26px;
height: 8px; }
.la-ball-fall.la-sm > div {
width: 4px;
height: 4px;
margin: 2px; }
.la-ball-fall.la-2x {
width: 108px;
height: 36px; }
.la-ball-fall.la-2x > div {
width: 20px;
height: 20px;
margin: 8px; }
.la-ball-fall.la-3x {
width: 162px;
height: 54px; }
.la-ball-fall.la-3x > div {
width: 30px;
height: 30px;
margin: 12px; }
/*
* Animation
*/
@-webkit-keyframes ball-fall {
0% {
opacity: 0;
-webkit-transform: translateY(-145%);
transform: translateY(-145%); }
10% {
opacity: .5; }
20% {
opacity: 1;
-webkit-transform: translateY(0);
transform: translateY(0); }
80% {
opacity: 1;
-webkit-transform: translateY(0);
transform: translateY(0); }
90% {
opacity: .5; }
100% {
opacity: 0;
-webkit-transform: translateY(145%);
transform: translateY(145%); } }
@-moz-keyframes ball-fall {
0% {
opacity: 0;
-moz-transform: translateY(-145%);
transform: translateY(-145%); }
10% {
opacity: .5; }
20% {
opacity: 1;
-moz-transform: translateY(0);
transform: translateY(0); }
80% {
opacity: 1;
-moz-transform: translateY(0);
transform: translateY(0); }
90% {
opacity: .5; }
100% {
opacity: 0;
-moz-transform: translateY(145%);
transform: translateY(145%); } }
@-o-keyframes ball-fall {
0% {
opacity: 0;
-o-transform: translateY(-145%);
transform: translateY(-145%); }
10% {
opacity: .5; }
20% {
opacity: 1;
-o-transform: translateY(0);
transform: translateY(0); }
80% {
opacity: 1;
-o-transform: translateY(0);
transform: translateY(0); }
90% {
opacity: .5; }
100% {
opacity: 0;
-o-transform: translateY(145%);
transform: translateY(145%); } }
@keyframes ball-fall {
0% {
opacity: 0;
-webkit-transform: translateY(-145%);
-moz-transform: translateY(-145%);
-o-transform: translateY(-145%);
transform: translateY(-145%); }
10% {
opacity: .5; }
20% {
opacity: 1;
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-o-transform: translateY(0);
transform: translateY(0); }
80% {
opacity: 1;
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-o-transform: translateY(0);
transform: translateY(0); }
90% {
opacity: .5; }
100% {
opacity: 0;
-webkit-transform: translateY(145%);
-moz-transform: translateY(145%);
-o-transform: translateY(145%);
transform: translateY(145%); } }

Binary file not shown.

Before

Width: 32px  |  Height: 32px  |  Size: 5.3 KiB

Binary file not shown.

Before

(image error) Size: 884 B

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

(image error) Size: 434 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

(image error) Size: 391 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

(image error) Size: 26 KiB

Binary file not shown.

Before

(image error) Size: 14 KiB

Binary file not shown.

Before

(image error) Size: 1.2 KiB

Binary file not shown.

Before

(image error) Size: 11 KiB

Binary file not shown.

Before

(image error) Size: 18 KiB

55574
public/js/app.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,5 +1,7 @@
{
"/js/app.js": "/js/app.js",
"/mix.js": "/mix.js",
"/css/app.css": "/css/app.css"
"/css/app.css": "/css/app.css",
"/css/adminlte-app.css": "/css/adminlte-app.css",
"/css/all.css": "/css/all.css"
}

28
public/mix.js vendored

@ -63,30 +63,46 @@
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 299);
/******/ return __webpack_require__(__webpack_require__.s = 71);
/******/ })
/************************************************************************/
/******/ ({
/***/ 142:
/***/ 19:
/***/ (function(module, exports) {
// removed by extract-text-webpack-plugin
/***/ }),
/***/ 143:
/***/ 20:
/***/ (function(module, exports) {
// removed by extract-text-webpack-plugin
/***/ }),
/***/ 21:
/***/ (function(module, exports) {
// removed by extract-text-webpack-plugin
/***/ }),
/***/ 22:
/***/ (function(module, exports) {
/***/ }),
/***/ 299:
/***/ 71:
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(143);
module.exports = __webpack_require__(142);
__webpack_require__(22);
__webpack_require__(20);
__webpack_require__(21);
module.exports = __webpack_require__(19);
/***/ })

@ -14,10 +14,10 @@
|
*/
require('spark-bootstrap');
require('./bootstrap');
require('./components/bootstrap');
window.Vue = require('vue');
var app = new Vue({
mixins: [require('spark')]
const app = new Vue({
el: '#app'
});

@ -13,6 +13,10 @@ try {
require('bootstrap-sass');
} catch (e) {}
require('admin-lte')
window.toastr = require('toastr')
require('icheck')
/**
* We'll load the axios HTTP library which allows us to easily issue requests
* to our Laravel back-end. This library automatically handles sending the
@ -37,6 +41,25 @@ if (token) {
console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}
/**
* Vue is a modern JavaScript library for building interactive web interfaces
* using reactive data binding and reusable components. Vue's API is clean
* and simple, leaving you to focus on building your next great project.
*/
window.Vue = require('vue')
// Use trans function in Vue (equivalent to trans() Laravel Translations helper). See htmlheader.balde.php partial.
Vue.prototype.trans = (key) => {
return _.get(window.trans, key, key)
}
// Laravel AdminLTE vue components
Vue.component('register-form', require('./components/auth/RegisterForm.vue'))
Vue.component('login-form', require('./components/auth/LoginForm.vue'))
Vue.component('email-reset-password-form', require('./components/auth/EmailResetPasswordForm.vue'))
Vue.component('reset-password-form', require('./components/auth/ResetPasswordForm.vue'))
/**
* Echo exposes an expressive API for subscribing to channels and listening
* for events that are broadcast by Laravel. Echo and event broadcasting

@ -0,0 +1,58 @@
<template>
<form method="post" @submit.prevent="submit" @keydown="clearErrors($event.target.name)">
<div class="alert alert-success" v-show="form.succeeded" v-text="result"></div>
<div class="form-group has-feedback" :class="{ 'has-error': form.errors.has('email') }">
<input type="email" class="form-control" :placeholder="trans('adminlte_lang_message.email')" name="email" v-model="form.email" autofocus/>
<span class="glyphicon glyphicon-envelope form-control-feedback"></span>
<transition name="fade">
<span class="help-block" v-if="form.errors.has('email')" v-text="form.errors.get('email')"></span>
</transition>
</div>
<div class="row">
<div class="col-xs-2">
</div><!-- /.col -->
<div class="col-xs-8">
<button type="submit" class="btn btn-primary btn-block btn-flat" :disabled="form.errors.any()"><i v-if="form.submitting" class="fa fa-refresh fa-spin"></i> {{ trans('adminlte_lang_message.sendpassword') }}</button>
</div><!-- /.col -->
<div class="col-xs-2">
</div><!-- /.col -->
</div>
</form>
</template>
<style src="./fade.css"></style>
<script>
import Form from 'acacha-forms'
export default {
data: function () {
return {
form: new Form({ email: ''}),
result: ''
}
},
methods: {
submit () {
this.form.post('/password/email')
.then(response => {
this.result = response.data.status;
})
.catch(error => {
console.log(this.trans('adminlte_lang_message.sendpassword') + ':' + error)
})
},
clearErrors (name) {
this.form.errors.clear(name)
this.form.succeeded = false
this.result = ''
}
},
mounted () {
this.form.clearOnSubmit = true
}
}
</script>

@ -0,0 +1,20 @@
export default {
mounted () {
this.initialitzeICheck()
},
methods: {
initialitzeICheck () {
var component = this
$('input').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%'
}).on('ifChecked', function (event) {
component.form.set('terms', true)
component.form.errors.clear('terms')
}).on('ifUnchecked', function (event) {
component.form.set('terms', '')
})
}
}
}

@ -0,0 +1,125 @@
<template>
<form method="post" @submit.prevent="submit" @keydown="clearErrors($event.target.name)">
<div class="alert alert-success text-center" v-show="form.succeeded" id="result"> {{ trans('message.loggedin') }} <i class="fa fa-refresh fa-spin"></i> {{ trans('message.entering') }}</div>
<div class="form-group has-feedback" :class="{ 'has-error': form.errors.has('email') }" v-if="type === 'email'">
<input type="email" class="form-control" :placeholder="placeholder" :name="name" value="" v-model="form.email" @change="adddomain" autofocus/>
<span class="glyphicon form-control-feedback" :class="[icon]"></span>
<transition name="fade">
<span class="help-block" v-if="form.errors.has('email')" v-text="form.errors.get('email')" id="validation_error_email"></span>
</transition>
</div>
<div class="form-group has-feedback" :class="{ 'has-error': form.errors.has('username') }" v-else>
<input type="text" class="form-control" :placeholder="placeholder" :name="name" v-model="form.username" @change="adddomain" autofocus/>
<span class="glyphicon form-control-feedback" :class="[icon]"></span>
<transition name="fade">
<span class="help-block" v-if="form.errors.has('username')" v-text="form.errors.get('username')" id="validation_error_username"></span>
</transition>
</div>
<div class="form-group has-feedback" :class="{ 'has-error': form.errors.has('password') }">
<input type="password" class="form-control" :placeholder="trans('message.password')" name="password" v-model="form.password"/>
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
<transition name="fade">
<span class="help-block" v-if="form.errors.has('password')" v-text="form.errors.get('password')" id="validation_error_password"></span>
</transition>
</div>
<div class="row">
<div class="col-xs-8">
<div class="checkbox icheck">
<label>
<input style="display:none;" type="checkbox" name="remember" v-model="form.remember"> {{ trans('message.remember') }}
</label>
</div>
</div>
<div class="col-xs-4">
<button type="submit" class="btn btn-primary btn-block btn-flat" v-text="trans('message.buttonsign')" :disabled="form.errors.any()"><i v-if="form.submitting" class="fa fa-refresh fa-spin"></i></button>
</div>
</div>
</form>
</template>
<style src="./fade.css"></style>
<script>
import Form from 'acacha-forms'
import initialitzeIcheck from './InitializeIcheck'
import redirect from './redirect'
export default {
mixins: [initialitzeIcheck, redirect],
data: function () {
let form = new Form({ username: '', password: '', remember: '' })
if (this.name === 'email') {
form = new Form({ email: '', password: '', remember: '' })
}
return {
form: form,
}
},
props: {
name: {
type: String,
required: true
},
domain: {
type: String,
required: false
}
},
computed: {
placeholder: function () {
if (this.name === 'email') return this.trans('message.email')
return this.trans('message.username')
},
type: function () {
if (this.name === 'email') return 'email'
return 'text'
},
icon: function () {
if (this.name === 'email') return 'glyphicon-envelope'
return 'glyphicon-user'
}
},
watch: {
'form.remember': function (value) {
if (value) {
$('input').iCheck('check')
} else {
$('input').iCheck('uncheck')
}
}
},
methods: {
submit () {
this.form.post('/login')
.then(response => {
var component = this;
setTimeout(function(){
component.redirect(response)
}, 2500);
})
.catch(error => {
console.log(this.trans('message.loginerror') + ':' + error)
})
},
adddomain: function () {
if (this.type === 'email') return
if (this.domain === '') return
if (this.form.username.endsWith(this.domain)) return
if (this.form.username.includes('@')) return
this.form.username = this.form.username + '@' + this.domain
},
clearErrors (name) {
if (name === 'password') {
this.form.errors.clear('password')
name = this.name
}
this.form.errors.clear(name)
}
}
}
</script>

@ -0,0 +1,104 @@
<template>
<form method="post" @submit.prevent="submit" @keydown="clearErrors($event.target.name)">
<div class="alert alert-success text-center" v-show="form.succeeded" id="result"> {{ trans('adminlte_lang_message.registered') }} <i class="fa fa-refresh fa-spin"></i> {{ trans('adminlte_lang_message.entering') }}</div>
<div class="form-group has-feedback " :class="{ 'has-error': form.errors.has('name') }">
<input type="text" class="form-control" :placeholder="trans('adminlte_lang_message.fullname')" name="name" value="" v-model="form.name" autofocus/>
<span class="glyphicon glyphicon-user form-control-feedback"></span>
<transition name="fade">
<span class="help-block" v-if="form.errors.has('name')" v-text="form.errors.get('name')"></span>
</transition>
</div>
<div class="form-group has-feedback" :class="{ 'has-error': form.errors.has('email') }">
<input type="email" class="form-control" :placeholder="trans('adminlte_lang_message.email')" name="email" value="" v-model="form.email"/>
<span class="glyphicon glyphicon-envelope form-control-feedback"></span>
<transition name="fade">
<span class="help-block" v-if="form.errors.has('email')" v-text="form.errors.get('email')"></span>
</transition>
</div>
<div class="form-group has-feedback" :class="{ 'has-error': form.errors.has('password') }">
<input type="password" class="form-control" :placeholder="trans('adminlte_lang_message.password')" name="password" v-model="form.password"/>
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
<transition name="fade">
<span class="help-block" v-if="form.errors.has('password')" v-text="form.errors.get('password')"></span>
</transition>
</div>
<div class="form-group has-feedback">
<input type="password" class="form-control" :placeholder="trans('adminlte_lang_message.retypepassword')" name="password_confirmation" v-model="form.password_confirmation"/>
</div>
<div class="form-group has-feedback" :class="{ 'has-error': form.errors.has('token') }">
<input type="text" class="form-control" placeholder="Authorisation Token" name="token" value="" v-model="form.token"/>
<span class="glyphicon glyphicon-barcode form-control-feedback"></span>
<transition name="fade">
<span class="help-block" v-if="form.errors.has('token')" v-text="form.errors.get('token')"></span>
</transition>
</div>
<div class="row">
<div class="col-xs-7">
<label>
<div class="checkbox_register icheck">
<label data-toggle="modal" data-target="#termsModal">
<input type="checkbox" name="terms" v-model="form.terms" class="has-error">
<a href="#" :class="{ 'text-danger': form.errors.has('terms') }" v-text="trans('adminlte_lang_message.conditions')"></a>
</label>
</div>
</label>
</div>
<div class="col-xs-4 col-xs-push-1">
<button type="submit" class="btn btn-primary btn-block btn-flat" :disabled="form.errors.any()" v-text="trans('adminlte_lang_message.register')"><i v-if="form.submitting" class="fa fa-refresh fa-spin"></i> </button>
</div>
</div>
<div v-if="form.errors.has('terms')" class="form-group has-feedback" :class="{ 'has-error': form.errors.has('terms') }">
<span class="help-block" v-if="form.errors.has('terms')" v-text="form.errors.get('terms')"></span>
</div>
</form>
</template>
<style src="./fade.css"></style>
<script>
import Form from 'acacha-forms'
import initialitzeIcheck from './InitializeIcheck'
import redirect from './redirect'
export default {
mixins: [initialitzeIcheck, redirect],
data: function () {
return {
form: new Form({ name: '', email: '', token: '', password: '', password_confirmation: '', terms: '' })
}
},
watch: {
'form.terms': function (value) {
if (value) {
$('input').iCheck('check')
} else {
$('input').iCheck('uncheck')
}
}
},
methods: {
submit () {
this.form.post('/register')
.then(response => {
var component = this;
setTimeout(function(){
component.redirect(response)
}, 2500);
})
.catch(error => {
console.log(this.trans('adminlte_lang_message.registererror') + ':' + error)
})
},
clearErrors (name) {
if (name === 'password_confirmation') {
name = 'password'
this.form.errors.clear('password_confirmation')
}
this.form.errors.clear(name)
}
}
}
</script>

@ -0,0 +1,88 @@
<template>
<form method="post" @submit.prevent="submit" @keydown="clearErrors($event.target.name)">
<div class="alert alert-success" v-show="form.succeeded" id="result">{{ result }}</div>
<input type="hidden" name="token" v-model="form.token">
<div class="form-group has-feedback" :class="{ 'has-error': form.errors.has('email') }">
<input type="email" class="form-control" :placeholder="trans('adminlte_lang_message.email')" name="email" v-model="form.email" autofocus/>
<span class="glyphicon glyphicon-envelope form-control-feedback"></span>
<transition name="fade">
<span class="help-block" v-if="form.errors.has('email')" v-text="form.errors.get('email')"></span>
</transition>
</div>
<div class="form-group has-feedback" :class="{ 'has-error': form.errors.has('password') }">
<input type="password" class="form-control" :placeholder="trans('adminlte_lang_message.password')" name="password" v-model="form.password"/>
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
<transition name="fade">
<span class="help-block" v-if="form.errors.has('password')" v-text="form.errors.get('password')"></span>
</transition>
</div>
<div class="form-group has-feedback">
<input type="password" class="form-control" :placeholder="trans('adminlte_lang_message.retypepassword')" name="password_confirmation" v-model="form.password_confirmation"/>
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
</div>
<div class="row">
<div class="col-xs-2">
</div><!-- /.col -->
<div class="col-xs-8">
<button type="submit" class="btn btn-primary btn-block btn-flat" :disabled="form.errors.any()"><i v-if="form.submitting" class="fa fa-refresh fa-spin"></i> {{ trans('adminlte_lang_message.passwordreset') }}</button>
</div><!-- /.col -->
<div class="col-xs-2">
</div><!-- /.col -->
</div>
</form>
</template>
<style src="./fade.css"></style>
<script>
import Form from 'acacha-forms'
import redirect from './redirect'
export default {
mixins: [redirect],
props: {
token: {
type: String,
required: true
},
},
data: function () {
return {
form: new Form({email: '', password: '', password_confirmation: '', token: this.token }),
result: ''
}
},
methods: {
submit () {
this.form.post('/password/reset')
.then(response => {
this.result = response.data.status;
var component = this;
setTimeout(function(){
component.redirect(response)
}, 3000);
})
.catch(error => {
console.log(this.trans('adminlte_lang_message.passwordreset') + ':' + error)
})
},
clearErrors (name) {
if (name === 'password_confirmation') {
name = 'password'
this.form.errors.clear('password_confirmation')
}
this.form.errors.clear(name)
this.form.succeeded = false
this.result = ''
},
mounted () {
this.form.clearOnSubmit = true
}
}
}
</script>

@ -0,0 +1,7 @@
.fade-enter-active, .fade-leave-active {
transition: opacity 1s ease;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}

@ -0,0 +1,7 @@
export default {
methods: {
redirect (response) {
window.location.reload()
}
}
}

@ -1,5 +0,0 @@
var base = require('auth/register-braintree');
Vue.component('spark-register-braintree', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('auth/register-stripe');
Vue.component('spark-register-stripe', {
mixins: [base]
});

@ -1,92 +0,0 @@
/**
* Layout Components...
*/
require('./navbar/navbar');
require('./notifications/notifications');
/**
* Authentication Components...
*/
require('./auth/register-stripe');
require('./auth/register-braintree');
/**
* Settings Component...
*/
require('./settings/settings');
/**
* Profile Settings Components...
*/
require('./settings/profile');
require('./settings/profile/update-profile-photo');
require('./settings/profile/update-contact-information');
/**
* Teams Settings Components...
*/
require('./settings/teams');
require('./settings/teams/create-team');
require('./settings/teams/pending-invitations');
require('./settings/teams/current-teams');
require('./settings/teams/team-settings');
require('./settings/teams/team-profile');
require('./settings/teams/update-team-photo');
require('./settings/teams/update-team-name');
require('./settings/teams/team-membership');
require('./settings/teams/send-invitation');
require('./settings/teams/mailed-invitations');
require('./settings/teams/team-members');
/**
* Security Settings Components...
*/
require('./settings/security');
require('./settings/security/update-password');
require('./settings/security/enable-two-factor-auth');
require('./settings/security/disable-two-factor-auth');
/**
* API Settings Components...
*/
require('./settings/api');
require('./settings/api/create-token');
require('./settings/api/tokens');
/**
* Subscription Settings Components...
*/
require('./settings/subscription');
require('./settings/subscription/subscribe-stripe');
require('./settings/subscription/subscribe-braintree');
require('./settings/subscription/update-subscription');
require('./settings/subscription/resume-subscription');
require('./settings/subscription/cancel-subscription');
/**
* Payment Method Components...
*/
require('./settings/payment-method-stripe');
require('./settings/payment-method-braintree');
require('./settings/payment-method/update-vat-id');
require('./settings/payment-method/update-payment-method-stripe');
require('./settings/payment-method/update-payment-method-braintree');
require('./settings/payment-method/redeem-coupon');
/**
* Billing History Components...
*/
require('./settings/invoices');
require('./settings/invoices/update-extra-billing-information');
require('./settings/invoices/invoice-list');
/**
* Kiosk Components...
*/
require('./kiosk/kiosk');
require('./kiosk/announcements');
require('./kiosk/metrics');
require('./kiosk/users');
require('./kiosk/profile');
require('./kiosk/add-discount');

@ -1,5 +0,0 @@
var base = require('kiosk/add-discount');
Vue.component('spark-kiosk-add-discount', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('kiosk/announcements');
Vue.component('spark-kiosk-announcements', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('kiosk/kiosk');
Vue.component('spark-kiosk', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('kiosk/metrics');
Vue.component('spark-kiosk-metrics', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('kiosk/profile');
Vue.component('spark-kiosk-profile', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('kiosk/users');
Vue.component('spark-kiosk-users', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('navbar/navbar');
Vue.component('spark-navbar', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('notifications/notifications');
Vue.component('spark-notifications', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/api');
Vue.component('spark-api', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/api/create-token');
Vue.component('spark-create-token', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/api/tokens');
Vue.component('spark-tokens', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/invoices');
Vue.component('spark-invoices', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/invoices/invoice-list');
Vue.component('spark-invoice-list', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/invoices/update-extra-billing-information');
Vue.component('spark-update-extra-billing-information', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/payment-method-braintree');
Vue.component('spark-payment-method-braintree', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/payment-method-stripe');
Vue.component('spark-payment-method-stripe', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/payment-method/redeem-coupon');
Vue.component('spark-redeem-coupon', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/payment-method/update-payment-method-braintree');
Vue.component('spark-update-payment-method-braintree', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/payment-method/update-payment-method-stripe');
Vue.component('spark-update-payment-method-stripe', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/payment-method/update-vat-id');
Vue.component('spark-update-vat-id', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/profile');
Vue.component('spark-profile', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/profile/update-contact-information');
Vue.component('spark-update-contact-information', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/profile/update-profile-photo');
Vue.component('spark-update-profile-photo', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/security');
Vue.component('spark-security', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/security/disable-two-factor-auth');
Vue.component('spark-disable-two-factor-auth', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/security/enable-two-factor-auth');
Vue.component('spark-enable-two-factor-auth', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/security/update-password');
Vue.component('spark-update-password', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/settings');
Vue.component('spark-settings', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/subscription');
Vue.component('spark-subscription', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/subscription/cancel-subscription');
Vue.component('spark-cancel-subscription', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/subscription/resume-subscription');
Vue.component('spark-resume-subscription', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/subscription/subscribe-braintree');
Vue.component('spark-subscribe-braintree', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/subscription/subscribe-stripe');
Vue.component('spark-subscribe-stripe', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/subscription/update-subscription');
Vue.component('spark-update-subscription', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/teams');
Vue.component('spark-teams', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/teams/create-team');
Vue.component('spark-create-team', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/teams/current-teams');
Vue.component('spark-current-teams', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/teams/mailed-invitations');
Vue.component('spark-mailed-invitations', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/teams/pending-invitations');
Vue.component('spark-pending-invitations', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/teams/send-invitation');
Vue.component('spark-send-invitation', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/teams/team-members');
Vue.component('spark-team-members', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/teams/team-membership');
Vue.component('spark-team-membership', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/teams/team-profile');
Vue.component('spark-team-profile', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/teams/team-settings');
Vue.component('spark-team-settings', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/teams/update-team-name');
Vue.component('spark-update-team-name', {
mixins: [base]
});

@ -1,5 +0,0 @@
var base = require('settings/teams/update-team-photo');
Vue.component('spark-update-team-photo', {
mixins: [base]
});

@ -0,0 +1,18 @@
@import "../../../node_modules/admin-lte/build/less/AdminLTE.less";
@boxed-layout-bg-image-path: "../../dist/img/boxed-bg.jpg";
@btn-font-weight: 300;
@font-family-sans-serif: "Roboto", Helvetica, Arial, sans-serif;
body, label, .checkbox label {
font-weight: 300;
}
.error-page {
background-color: @body-bg;
}
[v-cloak] {
display:none;
}

@ -1,4 +0,0 @@
@import "./../../../node_modules/bootstrap/less/bootstrap";
// @import "./spark/spark";
@import "./../../../vendor/laravel/spark/resources/assets/less/spark";

37
resources/assets/sass/_variables.scss vendored Normal file

@ -0,0 +1,37 @@
// Body
$body-bg: #f5f8fa;
// Borders
$laravel-border-color: darken($body-bg, 10%);
$list-group-border: $laravel-border-color;
$navbar-default-border: $laravel-border-color;
$panel-default-border: $laravel-border-color;
$panel-inner-border: $laravel-border-color;
// Brands
$brand-primary: #3097D1;
$brand-info: #8eb4cb;
$brand-success: #2ab27b;
$brand-warning: #cbb956;
$brand-danger: #bf5329;
// Typography
$font-family-sans-serif: "Roboto", Helvetica, Arial, sans-serif;
$font-size-base: 14px;
$line-height-base: 1.6;
$text-color: #636b6f;
// Navbar
$navbar-default-bg: #fff;
// Buttons
$btn-default-color: $text-color;
// Inputs
$input-border: lighten($text-color, 40%);
$input-border-focus: lighten($brand-primary, 25%);
$input-color-placeholder: lighten($text-color, 30%);
// Panels
$panel-default-heading-bg: #fff;

15
resources/assets/sass/app.scss vendored Normal file

@ -0,0 +1,15 @@
// Fonts
@import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600);
// Variables
@import "variables";
// Bootstrap
@import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap";
//Ionicons
@import "node_modules/ionicons/dist/scss/ionicons.scss";
//Font awesome
@import "node_modules/font-awesome/scss/font-awesome.scss";

Some files were not shown because too many files have changed in this diff Show More