diff --git a/.env.example b/.env.example
index bed60c01..44c0354e 100644
--- a/.env.example
+++ b/.env.example
@@ -25,13 +25,13 @@ REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
-MAIL_DRIVER=smtp
-MAIL_HOST=smtp.mailtrap.io
-MAIL_PORT=2525
-MAIL_USERNAME=null
-MAIL_PASSWORD=null
-MAIL_ENCRYPTION=null
-MAIL_FROM_ADDRESS=null
+MAIL_DRIVER=
+MAIL_HOST=
+MAIL_PORT=
+MAIL_USERNAME=
+MAIL_PASSWORD=
+MAIL_ENCRYPTION=
+MAIL_FROM_ADDRESS="${MAIL_USERNAME}"
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
diff --git a/app/Http/Controllers/Admin/DashboardController.php b/app/Http/Controllers/Admin/DashboardController.php
new file mode 100644
index 00000000..24fb845f
--- /dev/null
+++ b/app/Http/Controllers/Admin/DashboardController.php
@@ -0,0 +1,56 @@
+stripe = $stripe;
+ }
+
+ public function index()
+ {
+ // Get total users
+ $total_users = User::all()->count();
+
+ // Get total used space
+ $total_used_space = FileManagerFile::all()->map(function ($item) {
+ return (int)$item->getRawOriginal('filesize');
+ })->sum();
+
+ // Get total premium users
+ $total_premium_users = Subscription::where('stripe_status', 'active')->get()->count();
+
+ return [
+ 'app_version' => config('vuefilemanager.version'),
+ 'total_users' => $total_users,
+ 'total_used_space' => Metric::bytes($total_used_space)->format(),
+ 'total_premium_users' => $total_premium_users,
+ ];
+ }
+
+ /**
+ * Get the newest users
+ *
+ * @return UsersCollection
+ */
+ public function new_registrations()
+ {
+ return new UsersCollection(
+ User::take(5)->orderByDesc('created_at')->get()
+ );
+ }
+}
diff --git a/app/Http/Controllers/Admin/GatewayController.php b/app/Http/Controllers/Admin/GatewayController.php
deleted file mode 100644
index 4ff9852a..00000000
--- a/app/Http/Controllers/Admin/GatewayController.php
+++ /dev/null
@@ -1,69 +0,0 @@
-firstOrFail();
-
- return new GatewayResource($gateway);
- }
-
- /**
- * Get single payment gateway by slug
- *
- * @param $slug
- * @return InvoiceCollection
- */
- public function show_transactions($slug)
- {
- return new InvoiceCollection(
- Invoice::where('provider', $slug)->get()
- );
- }
-
- /**
- * Update payment gateway options
- *
- * @param Request $request
- * @param $slug
- * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
- */
- public function update(Request $request, $slug)
- {
- // TODO: validation request
-
- $gateway = PaymentGateway::where('slug', $slug)->first();
-
- // Update text data
- $gateway->update(make_single_input($request));
-
- return response('Saved!', 204);
- }
-}
diff --git a/app/Http/Controllers/Admin/PlanController.php b/app/Http/Controllers/Admin/PlanController.php
index f6bc8780..e0c819a6 100644
--- a/app/Http/Controllers/Admin/PlanController.php
+++ b/app/Http/Controllers/Admin/PlanController.php
@@ -12,6 +12,7 @@ use App\Services\StripeService;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
+use Laravel\Cashier\Subscription;
use Rinvex\Subscriptions\Models\PlanFeature;
class PlanController extends Controller
@@ -126,10 +127,7 @@ class PlanController extends Controller
*/
public function subscribers($id)
{
- $subscribers = app('rinvex.subscriptions.plan')
- ->find($id)
- ->subscriptions
- ->pluck('user_id');
+ $subscribers = Subscription::where('stripe_plan', $id)->pluck('user_id');
return new UsersCollection(
User::findMany($subscribers)
diff --git a/app/Http/Controllers/General/SetupWizardController.php b/app/Http/Controllers/General/SetupWizardController.php
index a51c84e7..4151b23c 100644
--- a/app/Http/Controllers/General/SetupWizardController.php
+++ b/app/Http/Controllers/General/SetupWizardController.php
@@ -106,7 +106,7 @@ class SetupWizardController extends Controller
// Store database credentials
$database_credentials->each(function ($col) {
- $this->setEnvironmentValue($col['name'], $col['value']);
+ setEnvironmentValue($col['name'], $col['value']);
});
// Set database connection
@@ -161,8 +161,8 @@ class SetupWizardController extends Controller
$client = \DB::table('oauth_clients')->where('name', '=', 'vuefilemanager')->first();
// Set passport client to .env
- $this->setEnvironmentValue('PASSPORT_CLIENT_ID', $client->id);
- $this->setEnvironmentValue('PASSPORT_CLIENT_SECRET', $client->secret);
+ setEnvironmentValue('PASSPORT_CLIENT_ID', $client->id);
+ setEnvironmentValue('PASSPORT_CLIENT_SECRET', $client->secret);
// Clear cache
Artisan::call('config:clear');
@@ -208,19 +208,13 @@ class SetupWizardController extends Controller
]);
// Set stripe credentials to .env
- $this->setEnvironmentValue('CASHIER_CURRENCY', $request->currency);
- $this->setEnvironmentValue('STRIPE_KEY', $request->key);
- $this->setEnvironmentValue('STRIPE_SECRET', $request->secret);
- $this->setEnvironmentValue('STRIPE_WEBHOOK_SECRET', $request->webhookSecret);
-
- // Store options
- $settings->each(function ($col) {
- Setting::updateOrCreate(['name' => $col['name']], $col);
- });
+ setEnvironmentValue('CASHIER_CURRENCY', $request->currency);
+ setEnvironmentValue('STRIPE_KEY', $request->key);
+ setEnvironmentValue('STRIPE_SECRET', $request->secret);
+ setEnvironmentValue('STRIPE_WEBHOOK_SECRET', $request->webhookSecret);
// Clear cache
Artisan::call('config:clear');
- //Artisan::call('config:cache');
return response('Done', 200);
}
@@ -427,7 +421,7 @@ class SetupWizardController extends Controller
// Store storage driver options
$storage->each(function ($col) {
- $this->setEnvironmentValue($col['name'], $col['value']);
+ setEnvironmentValue($col['name'], $col['value']);
});
// Get options
@@ -460,12 +454,11 @@ class SetupWizardController extends Controller
// Store mail options
$mail->each(function ($col) {
- $this->setEnvironmentValue($col['name'], $col['value']);
+ setEnvironmentValue($col['name'], $col['value']);
});
// Clear cache
Artisan::call('config:clear');
- //Artisan::call('config:cache');
return response('Done', 200);
}
@@ -545,10 +538,12 @@ class SetupWizardController extends Controller
{
// Validate request
$request->validate([
- 'email' => 'required|string|email|unique:users',
- 'password' => 'required|string|min:6|confirmed',
- 'name' => 'required|string',
- 'avatar' => 'sometimes|file',
+ 'email' => 'required|string|email|unique:users',
+ 'password' => 'required|string|min:6|confirmed',
+ 'name' => 'required|string',
+ 'purchase_code' => 'required|string',
+ 'license' => 'required|string',
+ 'avatar' => 'sometimes|file',
]);
// Store avatar
@@ -580,6 +575,18 @@ class SetupWizardController extends Controller
'value' => 1,
]);
+ // Store License
+ Setting::create([
+ 'name' => 'license',
+ 'value' => $request->license,
+ ]);
+
+ // Store Purchase Code
+ Setting::create([
+ 'name' => 'license',
+ 'value' => $request->purchase_code,
+ ]);
+
// Retrieve access token
$response = Route::dispatch(self::make_login_request($request));
@@ -613,23 +620,4 @@ class SetupWizardController extends Controller
return Request::create(url('/oauth/token'), 'POST', $request->all());
}
-
- /**
- * Set environment value
- *
- * @param $key
- * @param $value
- */
- public function setEnvironmentValue($key, $value)
- {
- $env_path = app()->environmentFilePath();
-
- $escaped = preg_quote('=' . env($key), '/');
-
- file_put_contents($env_path, preg_replace(
- "/^{$key}{$escaped}/m",
- $key . '=' . $value,
- file_get_contents($env_path)
- ));
- }
}
diff --git a/app/Http/Controllers/SettingController.php b/app/Http/Controllers/SettingController.php
index 74fb34e4..e369b50e 100644
--- a/app/Http/Controllers/SettingController.php
+++ b/app/Http/Controllers/SettingController.php
@@ -3,83 +3,105 @@
namespace App\Http\Controllers;
use App\Setting;
+use Artisan;
use Illuminate\Http\Request;
class SettingController extends Controller
{
/**
- * Display a listing of the resource.
+ * Get table content
*
- * @return \Illuminate\Http\Response
+ * @param Request $request
+ * @return mixed
*/
- public function index()
- {
- //
- }
+ public function show(Request $request) {
- /**
- * Show the form for creating a new resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function create()
- {
- //
- }
+ $column = $request->get('column');
- /**
- * Store a newly created resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @return \Illuminate\Http\Response
- */
- public function store(Request $request)
- {
- //
- }
+ if (strpos($column, '|') !== false) {
- /**
- * Display the specified resource.
- *
- * @param \App\Setting $setting
- * @return \Illuminate\Http\Response
- */
- public function show(Setting $setting)
- {
- //
- }
+ $columns = explode('|', $column);
- /**
- * Show the form for editing the specified resource.
- *
- * @param \App\Setting $setting
- * @return \Illuminate\Http\Response
- */
- public function edit(Setting $setting)
- {
- //
+ return Setting::whereIn('name', $columns)->pluck('value', 'name');
+ }
+
+ return Setting::where('name', $column)->pluck('value', 'name');
}
/**
* Update the specified resource in storage.
*
- * @param \Illuminate\Http\Request $request
- * @param \App\Setting $setting
+ * @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
- public function update(Request $request, Setting $setting)
+ public function update(Request $request)
{
- //
+ // Store image if exist
+ if ($request->hasFile($request->name)) {
+
+ // Store image
+ $image_path = store_system_image($request->file($request->name), 'system');
+
+ // Find and update image path
+ Setting::updateOrCreate(['name' => $request->name], [
+ 'value' => $image_path
+ ]);
+
+ return response('Done', 204);
+ }
+
+ // Find and update variable
+ Setting::updateOrCreate(['name' => $request->name], [
+ 'value' => $request->value
+ ]);
+
+ return response('Done', 204);
}
/**
- * Remove the specified resource from storage.
+ * Set new email credentials to .env file
*
- * @param \App\Setting $setting
- * @return \Illuminate\Http\Response
+ * @param Request $request
+ * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/
- public function destroy(Setting $setting)
- {
- //
+ public function set_email(Request $request) {
+
+ // Get options
+ $mail = collect([
+ [
+ 'name' => 'MAIL_DRIVER',
+ 'value' => $request->input('driver'),
+ ],
+ [
+ 'name' => 'MAIL_HOST',
+ 'value' => $request->input('host'),
+ ],
+ [
+ 'name' => 'MAIL_PORT',
+ 'value' => $request->input('port'),
+ ],
+ [
+ 'name' => 'MAIL_USERNAME',
+ 'value' => $request->input('username'),
+ ],
+ [
+ 'name' => 'MAIL_PASSWORD',
+ 'value' => $request->input('password'),
+ ],
+ [
+ 'name' => 'MAIL_ENCRYPTION',
+ 'value' => $request->input('encryption'),
+ ],
+ ]);
+
+ // Store mail options
+ $mail->each(function ($col) {
+ setEnvironmentValue($col['name'], $col['value']);
+ });
+
+ // Clear cache
+ Artisan::call('config:clear');
+
+ return response('Done', 204);
}
}
diff --git a/app/Http/Helpers/helpers.php b/app/Http/Helpers/helpers.php
index e29eb118..8c433c1c 100644
--- a/app/Http/Helpers/helpers.php
+++ b/app/Http/Helpers/helpers.php
@@ -6,11 +6,29 @@ use App\Share;
use ByteUnits\Metric;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
-use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Intervention\Image\ImageManagerStatic as Image;
+/**
+ * Set environment value
+ *
+ * @param $key
+ * @param $value
+ */
+function setEnvironmentValue($key, $value)
+{
+ $env_path = app()->environmentFilePath();
+
+ $escaped = preg_quote('=' . env($key), '/');
+
+ file_put_contents($env_path, preg_replace(
+ "/^{$key}{$escaped}/m",
+ $key . '=' . $value,
+ file_get_contents($env_path)
+ ));
+}
+
/**
* Get invoice number
*
@@ -27,6 +45,10 @@ function get_invoice_number()
}
}
+/**
+ * Forget many cache keys at once
+ * @param $cache
+ */
function cache_forget_many($cache)
{
foreach ($cache as $item) {
diff --git a/app/Http/Resources/InvoiceAdminResource.php b/app/Http/Resources/InvoiceAdminResource.php
index 3dc232d5..3ddb775e 100644
--- a/app/Http/Resources/InvoiceAdminResource.php
+++ b/app/Http/Resources/InvoiceAdminResource.php
@@ -52,8 +52,8 @@ class InvoiceAdminResource extends JsonResource
'id' => (string)$user->id,
'type' => 'user',
'attributes' => [
- 'name' => $user->name,
- 'avatar' => $user->avatar,
+ 'name' => $user->name,
+ 'avatar' => $user->avatar,
]
]
]
diff --git a/app/Http/Resources/InvoiceResource.php b/app/Http/Resources/InvoiceResource.php
index 8cce4286..c0c83fa5 100644
--- a/app/Http/Resources/InvoiceResource.php
+++ b/app/Http/Resources/InvoiceResource.php
@@ -26,7 +26,7 @@ class InvoiceResource extends JsonResource
'customer' => $this->customer,
'total' => $this->total(),
'currency' => $this->currency,
- 'created_at_formatted' => format_date($this->date()),
+ 'created_at_formatted' => format_date($this->date(), '%d. %B. %Y'),
'created_at' => $this->created,
'order' => $this->number,
'user_id' => $user ? $user->id : null,
diff --git a/app/Http/Resources/PlanResource.php b/app/Http/Resources/PlanResource.php
index 03b7bb22..0abbfc43 100644
--- a/app/Http/Resources/PlanResource.php
+++ b/app/Http/Resources/PlanResource.php
@@ -3,6 +3,8 @@
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
+use Laravel\Cashier\Cashier;
+use Laravel\Cashier\Subscription;
class PlanResource extends JsonResource
{
@@ -14,18 +16,22 @@ class PlanResource extends JsonResource
*/
public function toArray($request)
{
+ // Get subscribers
+ $subscriber_count = Subscription::where('stripe_plan', $this['plan']['id'])->get();
+
return [
'data' => [
'id' => $this['plan']['id'],
'type' => 'plans',
'attributes' => [
- 'subscribers' => $this['plan']['aggregate_usage'],
- 'status' => $this['plan']['active'],
+ 'subscribers' => $subscriber_count->count(),
+ 'status' => $this['plan']['active'] ? 1 : 0,
'name' => $this['product']['name'],
'description' => $this['product']['description'],
'price' => $this['plan']['amount'],
+ 'price_formatted' => Cashier::formatAmount($this['plan']['amount']),
'capacity_formatted' => format_gigabytes($this['product']['metadata']['capacity']),
- 'capacity' => $this['product']['metadata']['capacity'],
+ 'capacity' => (int) $this['product']['metadata']['capacity'],
'created_at_formatted' => format_date($this['plan']['created']),
'created_at' => $this['plan']['created'],
]
diff --git a/config/vuefilemanager.php b/config/vuefilemanager.php
index a3407e7d..fc763067 100644
--- a/config/vuefilemanager.php
+++ b/config/vuefilemanager.php
@@ -2,17 +2,5 @@
return [
- 'version' => '1.6.3',
-
- // Your app name
- 'app_name' => 'VueFileManager',
-
- // Your app logo
- 'app_logo' => '/assets/images/hero.svg',
-
- // Enable or disable user account registration
- 'registration' => true,
-
- // Limit your storage size for every user if this option is enabled
- 'limit_storage_by_capacity' => true,
+ 'version' => '1.7',
];
\ No newline at end of file
diff --git a/public/mix-manifest.json b/public/mix-manifest.json
index 0c142982..e9e9a0f9 100644
--- a/public/mix-manifest.json
+++ b/public/mix-manifest.json
@@ -228,5 +228,383 @@
"/js/main.0cf8831e92ff6f5a1027.hot-update.js": "/js/main.0cf8831e92ff6f5a1027.hot-update.js",
"/js/main.5cbee996e80957a738f2.hot-update.js": "/js/main.5cbee996e80957a738f2.hot-update.js",
"/js/main.9a24bd7a75a877705d40.hot-update.js": "/js/main.9a24bd7a75a877705d40.hot-update.js",
- "/js/main.2ecd9a546308a5bb528a.hot-update.js": "/js/main.2ecd9a546308a5bb528a.hot-update.js"
+ "/js/main.2ecd9a546308a5bb528a.hot-update.js": "/js/main.2ecd9a546308a5bb528a.hot-update.js",
+ "/js/main.a9aeb4df0e09a70f4ec8.hot-update.js": "/js/main.a9aeb4df0e09a70f4ec8.hot-update.js",
+ "/js/main.9bf7aa6441ae107090d4.hot-update.js": "/js/main.9bf7aa6441ae107090d4.hot-update.js",
+ "/js/main.0daba0063cb5697dc767.hot-update.js": "/js/main.0daba0063cb5697dc767.hot-update.js",
+ "/js/main.31f05dfd2001129a8fc5.hot-update.js": "/js/main.31f05dfd2001129a8fc5.hot-update.js",
+ "/js/main.d2b72f113673d28f3c59.hot-update.js": "/js/main.d2b72f113673d28f3c59.hot-update.js",
+ "/js/main.073817fa2426387d3745.hot-update.js": "/js/main.073817fa2426387d3745.hot-update.js",
+ "/js/main.37ac8a311fc1087fcc2f.hot-update.js": "/js/main.37ac8a311fc1087fcc2f.hot-update.js",
+ "/js/main.2bde9f71b5d8131f5928.hot-update.js": "/js/main.2bde9f71b5d8131f5928.hot-update.js",
+ "/js/main.9df8ef628601cef7a6a5.hot-update.js": "/js/main.9df8ef628601cef7a6a5.hot-update.js",
+ "/js/main.ca4251328bc4169dd5f6.hot-update.js": "/js/main.ca4251328bc4169dd5f6.hot-update.js",
+ "/js/main.5761e22b5dc8194b04c7.hot-update.js": "/js/main.5761e22b5dc8194b04c7.hot-update.js",
+ "/js/main.cab7cbeb3d5d492f39ba.hot-update.js": "/js/main.cab7cbeb3d5d492f39ba.hot-update.js",
+ "/js/main.726f3d68977a95d4e90e.hot-update.js": "/js/main.726f3d68977a95d4e90e.hot-update.js",
+ "/js/main.243884a8a7e3a13794a7.hot-update.js": "/js/main.243884a8a7e3a13794a7.hot-update.js",
+ "/js/main.b363f9fe306c90d3bea9.hot-update.js": "/js/main.b363f9fe306c90d3bea9.hot-update.js",
+ "/js/main.df63396c1532271c6de1.hot-update.js": "/js/main.df63396c1532271c6de1.hot-update.js",
+ "/js/main.1f2f6ae9328a61a32c9b.hot-update.js": "/js/main.1f2f6ae9328a61a32c9b.hot-update.js",
+ "/js/main.0bd8c23a58693130fc17.hot-update.js": "/js/main.0bd8c23a58693130fc17.hot-update.js",
+ "/js/main.ee79e38ff92d0f742d6e.hot-update.js": "/js/main.ee79e38ff92d0f742d6e.hot-update.js",
+ "/js/main.517d46a9db04a7db47d3.hot-update.js": "/js/main.517d46a9db04a7db47d3.hot-update.js",
+ "/js/main.b441e4a6d755a50477a7.hot-update.js": "/js/main.b441e4a6d755a50477a7.hot-update.js",
+ "/js/main.63531cfb10cfff9d4271.hot-update.js": "/js/main.63531cfb10cfff9d4271.hot-update.js",
+ "/js/main.2df58097c81bcc54d255.hot-update.js": "/js/main.2df58097c81bcc54d255.hot-update.js",
+ "/js/main.9e088bfaa8eb3387988a.hot-update.js": "/js/main.9e088bfaa8eb3387988a.hot-update.js",
+ "/js/main.44a7ebb3f583b95cf504.hot-update.js": "/js/main.44a7ebb3f583b95cf504.hot-update.js",
+ "/js/main.b6d9dd61120dc4dd5137.hot-update.js": "/js/main.b6d9dd61120dc4dd5137.hot-update.js",
+ "/js/main.b47af3291ecd700d363a.hot-update.js": "/js/main.b47af3291ecd700d363a.hot-update.js",
+ "/js/main.731736cf111ded41ca59.hot-update.js": "/js/main.731736cf111ded41ca59.hot-update.js",
+ "/js/main.8821e3435181c45a4efe.hot-update.js": "/js/main.8821e3435181c45a4efe.hot-update.js",
+ "/js/main.20979fe3d1769ef98369.hot-update.js": "/js/main.20979fe3d1769ef98369.hot-update.js",
+ "/js/main.2ffc183bac24a4613d5b.hot-update.js": "/js/main.2ffc183bac24a4613d5b.hot-update.js",
+ "/js/main.1e6f3de193e1eb41e3f8.hot-update.js": "/js/main.1e6f3de193e1eb41e3f8.hot-update.js",
+ "/js/main.250e55b4bc88222cf2bd.hot-update.js": "/js/main.250e55b4bc88222cf2bd.hot-update.js",
+ "/js/main.05b9cad5fcae320220cf.hot-update.js": "/js/main.05b9cad5fcae320220cf.hot-update.js",
+ "/js/main.70fe96e65497d24ada87.hot-update.js": "/js/main.70fe96e65497d24ada87.hot-update.js",
+ "/js/main.2d0692b8d1b139678ea5.hot-update.js": "/js/main.2d0692b8d1b139678ea5.hot-update.js",
+ "/js/main.ccaed9fac1fa6686e62d.hot-update.js": "/js/main.ccaed9fac1fa6686e62d.hot-update.js",
+ "/js/main.59812fdf3d8df2071110.hot-update.js": "/js/main.59812fdf3d8df2071110.hot-update.js",
+ "/js/main.ede87598deed0a8c2062.hot-update.js": "/js/main.ede87598deed0a8c2062.hot-update.js",
+ "/js/main.58751759a25668b5b807.hot-update.js": "/js/main.58751759a25668b5b807.hot-update.js",
+ "/js/main.965475f49f9a23fc8920.hot-update.js": "/js/main.965475f49f9a23fc8920.hot-update.js",
+ "/js/main.fd25a0ff5e4fdedd17dd.hot-update.js": "/js/main.fd25a0ff5e4fdedd17dd.hot-update.js",
+ "/js/main.da72a2d3a9ec9eaad632.hot-update.js": "/js/main.da72a2d3a9ec9eaad632.hot-update.js",
+ "/js/main.39754f4a16f1a7c40ad3.hot-update.js": "/js/main.39754f4a16f1a7c40ad3.hot-update.js",
+ "/js/main.6108877fbeecf1a314d3.hot-update.js": "/js/main.6108877fbeecf1a314d3.hot-update.js",
+ "/js/main.a420126064791edbc6bd.hot-update.js": "/js/main.a420126064791edbc6bd.hot-update.js",
+ "/js/main.7dd34dcba41c61c93874.hot-update.js": "/js/main.7dd34dcba41c61c93874.hot-update.js",
+ "/js/main.ee22470c79de439cb17a.hot-update.js": "/js/main.ee22470c79de439cb17a.hot-update.js",
+ "/js/main.b20467e29f72f2c2a43a.hot-update.js": "/js/main.b20467e29f72f2c2a43a.hot-update.js",
+ "/js/main.74ed66a1e6e61a59c726.hot-update.js": "/js/main.74ed66a1e6e61a59c726.hot-update.js",
+ "/js/main.1b35cacb98ad335dc603.hot-update.js": "/js/main.1b35cacb98ad335dc603.hot-update.js",
+ "/js/main.e2d923caede2fd0e9ee9.hot-update.js": "/js/main.e2d923caede2fd0e9ee9.hot-update.js",
+ "/js/main.f053c756cb426a7f7f02.hot-update.js": "/js/main.f053c756cb426a7f7f02.hot-update.js",
+ "/js/main.0d9bc815c8955418e14d.hot-update.js": "/js/main.0d9bc815c8955418e14d.hot-update.js",
+ "/js/main.212f10ad9990506452bc.hot-update.js": "/js/main.212f10ad9990506452bc.hot-update.js",
+ "/js/main.13e6dae0d08658ab17da.hot-update.js": "/js/main.13e6dae0d08658ab17da.hot-update.js",
+ "/js/main.88b4ad3f37f9b1774047.hot-update.js": "/js/main.88b4ad3f37f9b1774047.hot-update.js",
+ "/js/main.c9b6d032281c78b8413f.hot-update.js": "/js/main.c9b6d032281c78b8413f.hot-update.js",
+ "/js/main.99443545526048f4cc53.hot-update.js": "/js/main.99443545526048f4cc53.hot-update.js",
+ "/js/main.a986fccabd91fafa8902.hot-update.js": "/js/main.a986fccabd91fafa8902.hot-update.js",
+ "/js/main.9c7aa8d3304c04a09c22.hot-update.js": "/js/main.9c7aa8d3304c04a09c22.hot-update.js",
+ "/js/main.d8a9103a7a6400055308.hot-update.js": "/js/main.d8a9103a7a6400055308.hot-update.js",
+ "/js/main.6adfb10ae4c11c2c4870.hot-update.js": "/js/main.6adfb10ae4c11c2c4870.hot-update.js",
+ "/js/main.a36325466e8b00e7b615.hot-update.js": "/js/main.a36325466e8b00e7b615.hot-update.js",
+ "/js/main.33d6d9af87dab520be16.hot-update.js": "/js/main.33d6d9af87dab520be16.hot-update.js",
+ "/js/main.df8a6030831d5c6fc7ed.hot-update.js": "/js/main.df8a6030831d5c6fc7ed.hot-update.js",
+ "/js/main.43e2677447332829f8cf.hot-update.js": "/js/main.43e2677447332829f8cf.hot-update.js",
+ "/js/main.c50fe1ffc43419a8e371.hot-update.js": "/js/main.c50fe1ffc43419a8e371.hot-update.js",
+ "/js/main.90bf9b653edbc8c036b4.hot-update.js": "/js/main.90bf9b653edbc8c036b4.hot-update.js",
+ "/js/main.f487dd6abb989d2be7f5.hot-update.js": "/js/main.f487dd6abb989d2be7f5.hot-update.js",
+ "/js/main.be807354d256e90aaa4a.hot-update.js": "/js/main.be807354d256e90aaa4a.hot-update.js",
+ "/js/main.6edb2b0bd968e3732628.hot-update.js": "/js/main.6edb2b0bd968e3732628.hot-update.js",
+ "/js/main.da00b20ca4885ff4ac09.hot-update.js": "/js/main.da00b20ca4885ff4ac09.hot-update.js",
+ "/js/main.7c05a3f75b8d0fd3d7a1.hot-update.js": "/js/main.7c05a3f75b8d0fd3d7a1.hot-update.js",
+ "/js/main.ab38426d3250e1622830.hot-update.js": "/js/main.ab38426d3250e1622830.hot-update.js",
+ "/js/main.9d0f2dbd79d7b103684d.hot-update.js": "/js/main.9d0f2dbd79d7b103684d.hot-update.js",
+ "/js/main.b76c61916ae29b6be638.hot-update.js": "/js/main.b76c61916ae29b6be638.hot-update.js",
+ "/js/main.0bd7da88f8de2ae7f5de.hot-update.js": "/js/main.0bd7da88f8de2ae7f5de.hot-update.js",
+ "/js/main.37d310f86266f8e2f8af.hot-update.js": "/js/main.37d310f86266f8e2f8af.hot-update.js",
+ "/js/main.3d92d7ffe2cb83e6438c.hot-update.js": "/js/main.3d92d7ffe2cb83e6438c.hot-update.js",
+ "/js/main.04244bb60dc1e20dc4c4.hot-update.js": "/js/main.04244bb60dc1e20dc4c4.hot-update.js",
+ "/js/main.0b94fa8596095bdee261.hot-update.js": "/js/main.0b94fa8596095bdee261.hot-update.js",
+ "/js/main.e57b173b91990862814a.hot-update.js": "/js/main.e57b173b91990862814a.hot-update.js",
+ "/js/main.1251088060e2a88fffc3.hot-update.js": "/js/main.1251088060e2a88fffc3.hot-update.js",
+ "/js/main.96fed4906621b3f94187.hot-update.js": "/js/main.96fed4906621b3f94187.hot-update.js",
+ "/js/main.fee3081c0b7fffc5f769.hot-update.js": "/js/main.fee3081c0b7fffc5f769.hot-update.js",
+ "/js/main.c3d6a61bb34165a6b384.hot-update.js": "/js/main.c3d6a61bb34165a6b384.hot-update.js",
+ "/js/main.df82c14cac779d7006fc.hot-update.js": "/js/main.df82c14cac779d7006fc.hot-update.js",
+ "/js/main.2d4a45fe1b581c9a7beb.hot-update.js": "/js/main.2d4a45fe1b581c9a7beb.hot-update.js",
+ "/js/main.6481aa4922d9b76d954c.hot-update.js": "/js/main.6481aa4922d9b76d954c.hot-update.js",
+ "/js/main.27079245b2bf0120760c.hot-update.js": "/js/main.27079245b2bf0120760c.hot-update.js",
+ "/js/main.29a09d3256e19a9ceb69.hot-update.js": "/js/main.29a09d3256e19a9ceb69.hot-update.js",
+ "/js/main.d74598876b29288d6407.hot-update.js": "/js/main.d74598876b29288d6407.hot-update.js",
+ "/js/main.9bb1e42907e84c4449be.hot-update.js": "/js/main.9bb1e42907e84c4449be.hot-update.js",
+ "/js/main.62b41bc71640b74b4aa8.hot-update.js": "/js/main.62b41bc71640b74b4aa8.hot-update.js",
+ "/js/main.17305704d03c324dd8a9.hot-update.js": "/js/main.17305704d03c324dd8a9.hot-update.js",
+ "/js/main.6e2eff04c81d033b5900.hot-update.js": "/js/main.6e2eff04c81d033b5900.hot-update.js",
+ "/js/main.fde14e611bd080c04359.hot-update.js": "/js/main.fde14e611bd080c04359.hot-update.js",
+ "/js/main.f3d1b5f18cb8b280c8a8.hot-update.js": "/js/main.f3d1b5f18cb8b280c8a8.hot-update.js",
+ "/js/main.ee62b7df7093e451084d.hot-update.js": "/js/main.ee62b7df7093e451084d.hot-update.js",
+ "/js/main.cdb73ff90d532b4912c7.hot-update.js": "/js/main.cdb73ff90d532b4912c7.hot-update.js",
+ "/js/main.bf9c690516f80e14267a.hot-update.js": "/js/main.bf9c690516f80e14267a.hot-update.js",
+ "/js/main.a781a04264a7c7ee8662.hot-update.js": "/js/main.a781a04264a7c7ee8662.hot-update.js",
+ "/js/main.c32ae81891394df8966c.hot-update.js": "/js/main.c32ae81891394df8966c.hot-update.js",
+ "/js/main.87376cc90c6422487ef5.hot-update.js": "/js/main.87376cc90c6422487ef5.hot-update.js",
+ "/js/main.9c15ba958d6f151718e5.hot-update.js": "/js/main.9c15ba958d6f151718e5.hot-update.js",
+ "/js/main.ca11d0d3e7e6548db463.hot-update.js": "/js/main.ca11d0d3e7e6548db463.hot-update.js",
+ "/js/main.c0ebe1c24d0f3b200d14.hot-update.js": "/js/main.c0ebe1c24d0f3b200d14.hot-update.js",
+ "/js/main.2f74177767e6040ca80b.hot-update.js": "/js/main.2f74177767e6040ca80b.hot-update.js",
+ "/js/main.55d7ec43b99bba0bfcd3.hot-update.js": "/js/main.55d7ec43b99bba0bfcd3.hot-update.js",
+ "/js/main.d128d1383b2c1a38ce93.hot-update.js": "/js/main.d128d1383b2c1a38ce93.hot-update.js",
+ "/js/main.5540a8eeb4b79f986c32.hot-update.js": "/js/main.5540a8eeb4b79f986c32.hot-update.js",
+ "/js/main.ea864bbc020706b3771c.hot-update.js": "/js/main.ea864bbc020706b3771c.hot-update.js",
+ "/js/main.def370fcc6f9538dbbda.hot-update.js": "/js/main.def370fcc6f9538dbbda.hot-update.js",
+ "/js/main.2d3cf541ccb2fc9e0e85.hot-update.js": "/js/main.2d3cf541ccb2fc9e0e85.hot-update.js",
+ "/js/main.afd20da200abbc8c6a08.hot-update.js": "/js/main.afd20da200abbc8c6a08.hot-update.js",
+ "/js/main.4804fb86e21f548250aa.hot-update.js": "/js/main.4804fb86e21f548250aa.hot-update.js",
+ "/js/main.6d5b3e87bc0b7e673517.hot-update.js": "/js/main.6d5b3e87bc0b7e673517.hot-update.js",
+ "/js/main.9a017e2922144c301988.hot-update.js": "/js/main.9a017e2922144c301988.hot-update.js",
+ "/js/main.5a106890cb5905af701a.hot-update.js": "/js/main.5a106890cb5905af701a.hot-update.js",
+ "/js/main.dea9c33e910b52cead09.hot-update.js": "/js/main.dea9c33e910b52cead09.hot-update.js",
+ "/js/main.4224f9a6ac1fe049fd37.hot-update.js": "/js/main.4224f9a6ac1fe049fd37.hot-update.js",
+ "/js/main.38f268c3a71eab9ce5bc.hot-update.js": "/js/main.38f268c3a71eab9ce5bc.hot-update.js",
+ "/js/main.0d4e180970ec3c4d45ec.hot-update.js": "/js/main.0d4e180970ec3c4d45ec.hot-update.js",
+ "/js/main.693e4a862910aaed3aac.hot-update.js": "/js/main.693e4a862910aaed3aac.hot-update.js",
+ "/js/main.7804b447fa1b91b1a80a.hot-update.js": "/js/main.7804b447fa1b91b1a80a.hot-update.js",
+ "/js/main.5f90346563b3ff5220fb.hot-update.js": "/js/main.5f90346563b3ff5220fb.hot-update.js",
+ "/js/main.d656e96b2908c4f503ee.hot-update.js": "/js/main.d656e96b2908c4f503ee.hot-update.js",
+ "/js/main.2e8f76f47f727a693d5b.hot-update.js": "/js/main.2e8f76f47f727a693d5b.hot-update.js",
+ "/js/main.37480ef5f8e61c14783d.hot-update.js": "/js/main.37480ef5f8e61c14783d.hot-update.js",
+ "/js/main.193421983c10faf9d145.hot-update.js": "/js/main.193421983c10faf9d145.hot-update.js",
+ "/js/main.8fd708f023b6acf486d3.hot-update.js": "/js/main.8fd708f023b6acf486d3.hot-update.js",
+ "/js/main.5bd9a89dc494d93da831.hot-update.js": "/js/main.5bd9a89dc494d93da831.hot-update.js",
+ "/js/main.6847a02e533ad6446e5c.hot-update.js": "/js/main.6847a02e533ad6446e5c.hot-update.js",
+ "/js/main.5790aab9e27dc5b99581.hot-update.js": "/js/main.5790aab9e27dc5b99581.hot-update.js",
+ "/js/main.9cbed327a373f7d8d699.hot-update.js": "/js/main.9cbed327a373f7d8d699.hot-update.js",
+ "/js/main.3cb0bdf506f18b7160f7.hot-update.js": "/js/main.3cb0bdf506f18b7160f7.hot-update.js",
+ "/js/main.9bd00e48a8662f61e1e4.hot-update.js": "/js/main.9bd00e48a8662f61e1e4.hot-update.js",
+ "/js/main.b3f92e8fb2e0634a415b.hot-update.js": "/js/main.b3f92e8fb2e0634a415b.hot-update.js",
+ "/js/main.0c2ae430c9e9794d30b1.hot-update.js": "/js/main.0c2ae430c9e9794d30b1.hot-update.js",
+ "/js/main.cae8e58f9def02d6856e.hot-update.js": "/js/main.cae8e58f9def02d6856e.hot-update.js",
+ "/js/main.1e975719c8e6293673c7.hot-update.js": "/js/main.1e975719c8e6293673c7.hot-update.js",
+ "/js/main.f2766ac3b40405939464.hot-update.js": "/js/main.f2766ac3b40405939464.hot-update.js",
+ "/js/main.9112a25dbcbbb65def79.hot-update.js": "/js/main.9112a25dbcbbb65def79.hot-update.js",
+ "/js/main.a1a839083b9b0af30fcb.hot-update.js": "/js/main.a1a839083b9b0af30fcb.hot-update.js",
+ "/js/main.39e716c80acd5a7264b8.hot-update.js": "/js/main.39e716c80acd5a7264b8.hot-update.js",
+ "/js/main.50270c3093d1b3ca22b0.hot-update.js": "/js/main.50270c3093d1b3ca22b0.hot-update.js",
+ "/js/main.ef196bbfccb5f8b66167.hot-update.js": "/js/main.ef196bbfccb5f8b66167.hot-update.js",
+ "/js/main.5ca3431d17a903e5dae4.hot-update.js": "/js/main.5ca3431d17a903e5dae4.hot-update.js",
+ "/js/main.ac8b2be1c1abcc0327dc.hot-update.js": "/js/main.ac8b2be1c1abcc0327dc.hot-update.js",
+ "/js/main.06e4b8a06af109921c82.hot-update.js": "/js/main.06e4b8a06af109921c82.hot-update.js",
+ "/js/main.9baa3c23f69a94e0b5ad.hot-update.js": "/js/main.9baa3c23f69a94e0b5ad.hot-update.js",
+ "/js/main.5822ef64e54b9209de83.hot-update.js": "/js/main.5822ef64e54b9209de83.hot-update.js",
+ "/js/main.213d947cbcc3f0ddabe2.hot-update.js": "/js/main.213d947cbcc3f0ddabe2.hot-update.js",
+ "/js/main.e6eb49612e52d6f68fa5.hot-update.js": "/js/main.e6eb49612e52d6f68fa5.hot-update.js",
+ "/js/main.06a6d9087f92ba28396f.hot-update.js": "/js/main.06a6d9087f92ba28396f.hot-update.js",
+ "/js/main.5ab6617ebf4ac899b12a.hot-update.js": "/js/main.5ab6617ebf4ac899b12a.hot-update.js",
+ "/js/main.6ad11678d55922bb484d.hot-update.js": "/js/main.6ad11678d55922bb484d.hot-update.js",
+ "/js/main.a3f8b0e0ceef8ef3b710.hot-update.js": "/js/main.a3f8b0e0ceef8ef3b710.hot-update.js",
+ "/js/main.1cc5c4295c61f0856f9d.hot-update.js": "/js/main.1cc5c4295c61f0856f9d.hot-update.js",
+ "/js/main.c665b5fc70a69f41abe4.hot-update.js": "/js/main.c665b5fc70a69f41abe4.hot-update.js",
+ "/js/main.293834e2b76a7f705b38.hot-update.js": "/js/main.293834e2b76a7f705b38.hot-update.js",
+ "/js/main.0a1c66ffda84f6244db2.hot-update.js": "/js/main.0a1c66ffda84f6244db2.hot-update.js",
+ "/js/main.9da787fd6d37b9cf6b0d.hot-update.js": "/js/main.9da787fd6d37b9cf6b0d.hot-update.js",
+ "/js/main.865f8c7aa478fdc0403c.hot-update.js": "/js/main.865f8c7aa478fdc0403c.hot-update.js",
+ "/js/main.847c9bc6bbf4ad7dfa13.hot-update.js": "/js/main.847c9bc6bbf4ad7dfa13.hot-update.js",
+ "/js/main.357e30500e48699429ff.hot-update.js": "/js/main.357e30500e48699429ff.hot-update.js",
+ "/js/main.a25e763451c1a4436288.hot-update.js": "/js/main.a25e763451c1a4436288.hot-update.js",
+ "/js/main.32e7df5e1300cd27fd38.hot-update.js": "/js/main.32e7df5e1300cd27fd38.hot-update.js",
+ "/js/main.32ea6e6436c28641e78b.hot-update.js": "/js/main.32ea6e6436c28641e78b.hot-update.js",
+ "/js/main.08e0c0adedd226a4eedb.hot-update.js": "/js/main.08e0c0adedd226a4eedb.hot-update.js",
+ "/js/main.78664d675fff7ea43452.hot-update.js": "/js/main.78664d675fff7ea43452.hot-update.js",
+ "/js/main.eaed9db22000c5d16fec.hot-update.js": "/js/main.eaed9db22000c5d16fec.hot-update.js",
+ "/js/main.0e05f46777d4a99fe594.hot-update.js": "/js/main.0e05f46777d4a99fe594.hot-update.js",
+ "/js/main.3cf4c81de9c1ed3d009b.hot-update.js": "/js/main.3cf4c81de9c1ed3d009b.hot-update.js",
+ "/js/main.3b1bdc22c339357c813f.hot-update.js": "/js/main.3b1bdc22c339357c813f.hot-update.js",
+ "/js/main.2139e17ae489f5a0ec09.hot-update.js": "/js/main.2139e17ae489f5a0ec09.hot-update.js",
+ "/js/main.bc5d4d6ceeefe6bf49dc.hot-update.js": "/js/main.bc5d4d6ceeefe6bf49dc.hot-update.js",
+ "/js/main.3a860712dcfd80c34a59.hot-update.js": "/js/main.3a860712dcfd80c34a59.hot-update.js",
+ "/js/main.033529d501b9a9e2ca25.hot-update.js": "/js/main.033529d501b9a9e2ca25.hot-update.js",
+ "/js/main.e870de84740494ac895b.hot-update.js": "/js/main.e870de84740494ac895b.hot-update.js",
+ "/js/main.918c797daa15df9fded1.hot-update.js": "/js/main.918c797daa15df9fded1.hot-update.js",
+ "/js/main.22c4dbc3a443023318da.hot-update.js": "/js/main.22c4dbc3a443023318da.hot-update.js",
+ "/js/main.005cfff54dbee629f505.hot-update.js": "/js/main.005cfff54dbee629f505.hot-update.js",
+ "/js/main.6f7967a34dc8a961b327.hot-update.js": "/js/main.6f7967a34dc8a961b327.hot-update.js",
+ "/js/main.479ceaebee83e41a5ade.hot-update.js": "/js/main.479ceaebee83e41a5ade.hot-update.js",
+ "/js/main.a20acf70f18ebdd66447.hot-update.js": "/js/main.a20acf70f18ebdd66447.hot-update.js",
+ "/js/main.ee332693faa2218fb662.hot-update.js": "/js/main.ee332693faa2218fb662.hot-update.js",
+ "/js/main.9d2b4b00f63f83496122.hot-update.js": "/js/main.9d2b4b00f63f83496122.hot-update.js",
+ "/js/main.14055957de8219277cf2.hot-update.js": "/js/main.14055957de8219277cf2.hot-update.js",
+ "/js/main.1d042c41bb9132120809.hot-update.js": "/js/main.1d042c41bb9132120809.hot-update.js",
+ "/js/main.33cde9abbbdf337fa042.hot-update.js": "/js/main.33cde9abbbdf337fa042.hot-update.js",
+ "/js/main.a7162761be0f4213da47.hot-update.js": "/js/main.a7162761be0f4213da47.hot-update.js",
+ "/js/main.6e0e492148c23360c4ad.hot-update.js": "/js/main.6e0e492148c23360c4ad.hot-update.js",
+ "/js/main.0627042acb7ded093af9.hot-update.js": "/js/main.0627042acb7ded093af9.hot-update.js",
+ "/js/main.c8379f58424b233f021e.hot-update.js": "/js/main.c8379f58424b233f021e.hot-update.js",
+ "/js/main.ee495d19d310fd76d796.hot-update.js": "/js/main.ee495d19d310fd76d796.hot-update.js",
+ "/js/main.443446feba272089fbe5.hot-update.js": "/js/main.443446feba272089fbe5.hot-update.js",
+ "/js/main.0a8e2d5c71cd84bcafa5.hot-update.js": "/js/main.0a8e2d5c71cd84bcafa5.hot-update.js",
+ "/js/main.ae62fecbaca54f248911.hot-update.js": "/js/main.ae62fecbaca54f248911.hot-update.js",
+ "/js/main.ac2be1471f24e4d4ba24.hot-update.js": "/js/main.ac2be1471f24e4d4ba24.hot-update.js",
+ "/js/main.6fe33464860d885096e0.hot-update.js": "/js/main.6fe33464860d885096e0.hot-update.js",
+ "/js/main.cd23d51469b76577cd44.hot-update.js": "/js/main.cd23d51469b76577cd44.hot-update.js",
+ "/js/main.597db468fc7721bde000.hot-update.js": "/js/main.597db468fc7721bde000.hot-update.js",
+ "/js/main.deb9e4b4f44cda4e874c.hot-update.js": "/js/main.deb9e4b4f44cda4e874c.hot-update.js",
+ "/js/main.4eca7117450e797fb033.hot-update.js": "/js/main.4eca7117450e797fb033.hot-update.js",
+ "/js/main.836b40243606ace4caf7.hot-update.js": "/js/main.836b40243606ace4caf7.hot-update.js",
+ "/js/main.b3bc3a73412a51ef454a.hot-update.js": "/js/main.b3bc3a73412a51ef454a.hot-update.js",
+ "/js/main.92750ee5fc3e1003361c.hot-update.js": "/js/main.92750ee5fc3e1003361c.hot-update.js",
+ "/js/main.35dd99c6164ae958964e.hot-update.js": "/js/main.35dd99c6164ae958964e.hot-update.js",
+ "/js/main.721ccf8c6f1a9f27f7e6.hot-update.js": "/js/main.721ccf8c6f1a9f27f7e6.hot-update.js",
+ "/js/main.1f2c1f70a54b1f4a9c30.hot-update.js": "/js/main.1f2c1f70a54b1f4a9c30.hot-update.js",
+ "/js/main.8281e75f5ab1a6823519.hot-update.js": "/js/main.8281e75f5ab1a6823519.hot-update.js",
+ "/js/main.0768e908f1f2c29e02e3.hot-update.js": "/js/main.0768e908f1f2c29e02e3.hot-update.js",
+ "/js/main.9225c3f05bc4dc4ee3f7.hot-update.js": "/js/main.9225c3f05bc4dc4ee3f7.hot-update.js",
+ "/js/main.fcc822857e917b9de3c5.hot-update.js": "/js/main.fcc822857e917b9de3c5.hot-update.js",
+ "/js/main.9e6cc2423230d3bad63a.hot-update.js": "/js/main.9e6cc2423230d3bad63a.hot-update.js",
+ "/js/main.92d5d0453b3362391ba1.hot-update.js": "/js/main.92d5d0453b3362391ba1.hot-update.js",
+ "/js/main.df2161c49a65f59cc814.hot-update.js": "/js/main.df2161c49a65f59cc814.hot-update.js",
+ "/js/main.8e2c35d2851b9f6e093e.hot-update.js": "/js/main.8e2c35d2851b9f6e093e.hot-update.js",
+ "/js/main.ee6ea14ade1aa0517972.hot-update.js": "/js/main.ee6ea14ade1aa0517972.hot-update.js",
+ "/js/main.beed37bf065c800da07c.hot-update.js": "/js/main.beed37bf065c800da07c.hot-update.js",
+ "/js/main.af2f39ea90ae11a196ce.hot-update.js": "/js/main.af2f39ea90ae11a196ce.hot-update.js",
+ "/js/main.c6164a4f084321d65d93.hot-update.js": "/js/main.c6164a4f084321d65d93.hot-update.js",
+ "/js/main.c2e596f91cdb037dbfa3.hot-update.js": "/js/main.c2e596f91cdb037dbfa3.hot-update.js",
+ "/js/main.1049fc5f8a8c9a2f73f1.hot-update.js": "/js/main.1049fc5f8a8c9a2f73f1.hot-update.js",
+ "/js/main.ea031f841752fa33de34.hot-update.js": "/js/main.ea031f841752fa33de34.hot-update.js",
+ "/js/main.8ca99c2bdc4900b71d75.hot-update.js": "/js/main.8ca99c2bdc4900b71d75.hot-update.js",
+ "/js/main.e2c88b3ebc170d555ab3.hot-update.js": "/js/main.e2c88b3ebc170d555ab3.hot-update.js",
+ "/js/main.df4f07672b66f5362b6c.hot-update.js": "/js/main.df4f07672b66f5362b6c.hot-update.js",
+ "/js/main.52bd67b62e3b204ff75f.hot-update.js": "/js/main.52bd67b62e3b204ff75f.hot-update.js",
+ "/js/main.9df3c750abbdf710fdf6.hot-update.js": "/js/main.9df3c750abbdf710fdf6.hot-update.js",
+ "/js/main.6a799e06681bac8a9936.hot-update.js": "/js/main.6a799e06681bac8a9936.hot-update.js",
+ "/js/main.33171569b8a14f3177c5.hot-update.js": "/js/main.33171569b8a14f3177c5.hot-update.js",
+ "/js/main.3b24e8ee819c583b4711.hot-update.js": "/js/main.3b24e8ee819c583b4711.hot-update.js",
+ "/js/main.19658b188ad9b89b1291.hot-update.js": "/js/main.19658b188ad9b89b1291.hot-update.js",
+ "/js/main.0f33df348a32c0b85b51.hot-update.js": "/js/main.0f33df348a32c0b85b51.hot-update.js",
+ "/js/main.dcd9fa74a9b8fb50721c.hot-update.js": "/js/main.dcd9fa74a9b8fb50721c.hot-update.js",
+ "/js/main.c95068df5ce07b66fea1.hot-update.js": "/js/main.c95068df5ce07b66fea1.hot-update.js",
+ "/js/main.a3458d59bdadd34e7332.hot-update.js": "/js/main.a3458d59bdadd34e7332.hot-update.js",
+ "/js/main.64f59bbf5718479f5c1a.hot-update.js": "/js/main.64f59bbf5718479f5c1a.hot-update.js",
+ "/js/main.85e70811c03956265a4a.hot-update.js": "/js/main.85e70811c03956265a4a.hot-update.js",
+ "/js/main.18117fa6c58f27fa1550.hot-update.js": "/js/main.18117fa6c58f27fa1550.hot-update.js",
+ "/js/main.8dbb00ce91497aebf928.hot-update.js": "/js/main.8dbb00ce91497aebf928.hot-update.js",
+ "/js/main.cbaf2d1fdd9887442320.hot-update.js": "/js/main.cbaf2d1fdd9887442320.hot-update.js",
+ "/js/main.97d8dbec3784ef41b8de.hot-update.js": "/js/main.97d8dbec3784ef41b8de.hot-update.js",
+ "/js/main.3bb9e845b47af251d98c.hot-update.js": "/js/main.3bb9e845b47af251d98c.hot-update.js",
+ "/js/main.92b3e383e6f53242ad8f.hot-update.js": "/js/main.92b3e383e6f53242ad8f.hot-update.js",
+ "/js/main.224e8c595ad8212532dc.hot-update.js": "/js/main.224e8c595ad8212532dc.hot-update.js",
+ "/js/main.d5d306a7fb721e5b568b.hot-update.js": "/js/main.d5d306a7fb721e5b568b.hot-update.js",
+ "/js/main.fd75a70cdfee4df31e3d.hot-update.js": "/js/main.fd75a70cdfee4df31e3d.hot-update.js",
+ "/js/main.0e90c7c25050b0901e22.hot-update.js": "/js/main.0e90c7c25050b0901e22.hot-update.js",
+ "/js/main.e5f0c4a2d082e6ed582a.hot-update.js": "/js/main.e5f0c4a2d082e6ed582a.hot-update.js",
+ "/js/main.ec4b3cf54c23e7a67fdf.hot-update.js": "/js/main.ec4b3cf54c23e7a67fdf.hot-update.js",
+ "/js/main.6ec5aa28087299c4e856.hot-update.js": "/js/main.6ec5aa28087299c4e856.hot-update.js",
+ "/js/main.a38904ba2f1080ce202d.hot-update.js": "/js/main.a38904ba2f1080ce202d.hot-update.js",
+ "/js/main.7db0b0759803351fa5a8.hot-update.js": "/js/main.7db0b0759803351fa5a8.hot-update.js",
+ "/js/main.304a51e1c9a5dd60ef1f.hot-update.js": "/js/main.304a51e1c9a5dd60ef1f.hot-update.js",
+ "/js/main.901b82d4317258ea1c53.hot-update.js": "/js/main.901b82d4317258ea1c53.hot-update.js",
+ "/js/main.497e4e7fb9d33a44d93e.hot-update.js": "/js/main.497e4e7fb9d33a44d93e.hot-update.js",
+ "/js/main.57b63d01d97fa279f5b5.hot-update.js": "/js/main.57b63d01d97fa279f5b5.hot-update.js",
+ "/js/main.b7ff67de50c1df9bb09d.hot-update.js": "/js/main.b7ff67de50c1df9bb09d.hot-update.js",
+ "/js/main.aa8688f0e56f8b3e23f9.hot-update.js": "/js/main.aa8688f0e56f8b3e23f9.hot-update.js",
+ "/js/main.61483e331d7628ffea3c.hot-update.js": "/js/main.61483e331d7628ffea3c.hot-update.js",
+ "/js/main.2d5aa09f0165d80526fd.hot-update.js": "/js/main.2d5aa09f0165d80526fd.hot-update.js",
+ "/js/main.2ebd8f430597b13b630a.hot-update.js": "/js/main.2ebd8f430597b13b630a.hot-update.js",
+ "/js/main.f6c19a18e72765f9a229.hot-update.js": "/js/main.f6c19a18e72765f9a229.hot-update.js",
+ "/js/main.d3bfbed0ec0028cb0428.hot-update.js": "/js/main.d3bfbed0ec0028cb0428.hot-update.js",
+ "/js/main.d47df9461115ef02036f.hot-update.js": "/js/main.d47df9461115ef02036f.hot-update.js",
+ "/js/main.73cd57634d0f137050ca.hot-update.js": "/js/main.73cd57634d0f137050ca.hot-update.js",
+ "/js/main.ea50f373ba7287f8fcec.hot-update.js": "/js/main.ea50f373ba7287f8fcec.hot-update.js",
+ "/js/main.780bd95f63fdce648807.hot-update.js": "/js/main.780bd95f63fdce648807.hot-update.js",
+ "/js/main.2511471d932786e69741.hot-update.js": "/js/main.2511471d932786e69741.hot-update.js",
+ "/js/main.e6fe9ef69de6247618e4.hot-update.js": "/js/main.e6fe9ef69de6247618e4.hot-update.js",
+ "/js/main.a059aae251c2a60e35fa.hot-update.js": "/js/main.a059aae251c2a60e35fa.hot-update.js",
+ "/js/main.7d2c4d9d7ede9b195ad6.hot-update.js": "/js/main.7d2c4d9d7ede9b195ad6.hot-update.js",
+ "/js/main.3b27e3dfc95158d78f41.hot-update.js": "/js/main.3b27e3dfc95158d78f41.hot-update.js",
+ "/js/main.3db5bb5180473c4f9981.hot-update.js": "/js/main.3db5bb5180473c4f9981.hot-update.js",
+ "/js/main.e3064029ae8fff3e24e0.hot-update.js": "/js/main.e3064029ae8fff3e24e0.hot-update.js",
+ "/js/main.724b4ccde32156d48650.hot-update.js": "/js/main.724b4ccde32156d48650.hot-update.js",
+ "/js/main.b669b01458144dedf1ed.hot-update.js": "/js/main.b669b01458144dedf1ed.hot-update.js",
+ "/js/main.3ebc6636e9b6580176ef.hot-update.js": "/js/main.3ebc6636e9b6580176ef.hot-update.js",
+ "/js/main.af6ced35684c6ad3a53c.hot-update.js": "/js/main.af6ced35684c6ad3a53c.hot-update.js",
+ "/js/main.5147fb055a4e390b206c.hot-update.js": "/js/main.5147fb055a4e390b206c.hot-update.js",
+ "/js/main.52bcb577491bdee1e509.hot-update.js": "/js/main.52bcb577491bdee1e509.hot-update.js",
+ "/js/main.af9a25403871667c883e.hot-update.js": "/js/main.af9a25403871667c883e.hot-update.js",
+ "/js/main.dbd2c30f3868860def45.hot-update.js": "/js/main.dbd2c30f3868860def45.hot-update.js",
+ "/js/main.1ac32029b0ef21cb8d44.hot-update.js": "/js/main.1ac32029b0ef21cb8d44.hot-update.js",
+ "/js/main.0bcbc8497cb962299815.hot-update.js": "/js/main.0bcbc8497cb962299815.hot-update.js",
+ "/js/main.177edbc74755c0b26289.hot-update.js": "/js/main.177edbc74755c0b26289.hot-update.js",
+ "/js/main.16b565aad7c618074b80.hot-update.js": "/js/main.16b565aad7c618074b80.hot-update.js",
+ "/js/main.50226ddbf0e191df338b.hot-update.js": "/js/main.50226ddbf0e191df338b.hot-update.js",
+ "/js/main.b85f0c073a0becc8950e.hot-update.js": "/js/main.b85f0c073a0becc8950e.hot-update.js",
+ "/js/main.88f96a34e9921d36d9b1.hot-update.js": "/js/main.88f96a34e9921d36d9b1.hot-update.js",
+ "/js/main.758c6b91d4be63105d03.hot-update.js": "/js/main.758c6b91d4be63105d03.hot-update.js",
+ "/js/main.0cea0f2ec0077ec93401.hot-update.js": "/js/main.0cea0f2ec0077ec93401.hot-update.js",
+ "/js/main.92e39411babd7e72c72a.hot-update.js": "/js/main.92e39411babd7e72c72a.hot-update.js",
+ "/js/main.4e386766ef0c2d277b6b.hot-update.js": "/js/main.4e386766ef0c2d277b6b.hot-update.js",
+ "/js/main.7917fee1daaffbc31e35.hot-update.js": "/js/main.7917fee1daaffbc31e35.hot-update.js",
+ "/js/main.fe1618b8df6ec204cab2.hot-update.js": "/js/main.fe1618b8df6ec204cab2.hot-update.js",
+ "/js/main.2cd9f63bf0d43e7148d2.hot-update.js": "/js/main.2cd9f63bf0d43e7148d2.hot-update.js",
+ "/js/main.518074fbc907d4017f70.hot-update.js": "/js/main.518074fbc907d4017f70.hot-update.js",
+ "/js/main.7dd9fe7c54dbee4520c9.hot-update.js": "/js/main.7dd9fe7c54dbee4520c9.hot-update.js",
+ "/js/main.c50c2bdab81c3e8dadd3.hot-update.js": "/js/main.c50c2bdab81c3e8dadd3.hot-update.js",
+ "/js/main.8c77b46f07ae9c304b33.hot-update.js": "/js/main.8c77b46f07ae9c304b33.hot-update.js",
+ "/js/main.3c3128c4aca4cb5a2658.hot-update.js": "/js/main.3c3128c4aca4cb5a2658.hot-update.js",
+ "/js/main.a7707a95ba691d4db803.hot-update.js": "/js/main.a7707a95ba691d4db803.hot-update.js",
+ "/js/main.c10d7c511b782f5ac55a.hot-update.js": "/js/main.c10d7c511b782f5ac55a.hot-update.js",
+ "/js/main.0f2c49b1045bd0a436e4.hot-update.js": "/js/main.0f2c49b1045bd0a436e4.hot-update.js",
+ "/js/main.dba3d626a3c5055e72c7.hot-update.js": "/js/main.dba3d626a3c5055e72c7.hot-update.js",
+ "/js/main.124319628e4d177a457e.hot-update.js": "/js/main.124319628e4d177a457e.hot-update.js",
+ "/js/main.0ee8ac9d83933c29f45d.hot-update.js": "/js/main.0ee8ac9d83933c29f45d.hot-update.js",
+ "/js/main.1861aa984800939f39d9.hot-update.js": "/js/main.1861aa984800939f39d9.hot-update.js",
+ "/js/main.d4142c7600c1e5b23765.hot-update.js": "/js/main.d4142c7600c1e5b23765.hot-update.js",
+ "/js/main.4b876ab726f63941830e.hot-update.js": "/js/main.4b876ab726f63941830e.hot-update.js",
+ "/js/main.ce1298b64c553bce5147.hot-update.js": "/js/main.ce1298b64c553bce5147.hot-update.js",
+ "/js/main.126669fa69f23f4b2e1e.hot-update.js": "/js/main.126669fa69f23f4b2e1e.hot-update.js",
+ "/js/main.1dc3aad59b010c3ecfaa.hot-update.js": "/js/main.1dc3aad59b010c3ecfaa.hot-update.js",
+ "/js/main.b6861e2411d696fc18f7.hot-update.js": "/js/main.b6861e2411d696fc18f7.hot-update.js",
+ "/js/main.3b9519c66ea3ae751920.hot-update.js": "/js/main.3b9519c66ea3ae751920.hot-update.js",
+ "/js/main.293d111adda10d8cf051.hot-update.js": "/js/main.293d111adda10d8cf051.hot-update.js",
+ "/js/main.d834fdf285e5259e659f.hot-update.js": "/js/main.d834fdf285e5259e659f.hot-update.js",
+ "/js/main.25320ecaa68f65cf39d8.hot-update.js": "/js/main.25320ecaa68f65cf39d8.hot-update.js",
+ "/js/main.b345766be64fdbd77fad.hot-update.js": "/js/main.b345766be64fdbd77fad.hot-update.js",
+ "/js/main.73a62d68c6aa716d4442.hot-update.js": "/js/main.73a62d68c6aa716d4442.hot-update.js",
+ "/js/main.a20280dd94ace4dfe791.hot-update.js": "/js/main.a20280dd94ace4dfe791.hot-update.js",
+ "/js/main.7cb118acb9c4531576bf.hot-update.js": "/js/main.7cb118acb9c4531576bf.hot-update.js",
+ "/js/main.94721e0268654221490d.hot-update.js": "/js/main.94721e0268654221490d.hot-update.js",
+ "/js/main.d188ccf0643fd0323c99.hot-update.js": "/js/main.d188ccf0643fd0323c99.hot-update.js",
+ "/js/main.79c779b79d5fdc43cb7a.hot-update.js": "/js/main.79c779b79d5fdc43cb7a.hot-update.js",
+ "/js/main.751b2d66fcc7795387b8.hot-update.js": "/js/main.751b2d66fcc7795387b8.hot-update.js",
+ "/js/main.f865ed47daf098ce851b.hot-update.js": "/js/main.f865ed47daf098ce851b.hot-update.js",
+ "/js/main.fde8c29fa890fafb6918.hot-update.js": "/js/main.fde8c29fa890fafb6918.hot-update.js",
+ "/js/main.fc020c4b1a85703ba2fd.hot-update.js": "/js/main.fc020c4b1a85703ba2fd.hot-update.js",
+ "/js/main.12e914b5398fed5263c3.hot-update.js": "/js/main.12e914b5398fed5263c3.hot-update.js",
+ "/js/main.a9e85de5f20a914d9792.hot-update.js": "/js/main.a9e85de5f20a914d9792.hot-update.js",
+ "/js/main.6b7625a214c48be0e8fe.hot-update.js": "/js/main.6b7625a214c48be0e8fe.hot-update.js",
+ "/js/main.081425b1a319a39ba57d.hot-update.js": "/js/main.081425b1a319a39ba57d.hot-update.js",
+ "/js/main.83b69a601e558b4c66dd.hot-update.js": "/js/main.83b69a601e558b4c66dd.hot-update.js",
+ "/js/main.cd56ccae0a8d70d9fbb5.hot-update.js": "/js/main.cd56ccae0a8d70d9fbb5.hot-update.js",
+ "/js/main.fddc2d35c7100276599f.hot-update.js": "/js/main.fddc2d35c7100276599f.hot-update.js",
+ "/js/main.545aae91e9ba07a7fd33.hot-update.js": "/js/main.545aae91e9ba07a7fd33.hot-update.js",
+ "/js/main.73b0d6729b2068f1605e.hot-update.js": "/js/main.73b0d6729b2068f1605e.hot-update.js",
+ "/js/main.80906e773a38b7d3a2d7.hot-update.js": "/js/main.80906e773a38b7d3a2d7.hot-update.js",
+ "/js/main.3e6fac83667df2a5aa9a.hot-update.js": "/js/main.3e6fac83667df2a5aa9a.hot-update.js",
+ "/js/main.06d8baefc20e76dc93ae.hot-update.js": "/js/main.06d8baefc20e76dc93ae.hot-update.js",
+ "/js/main.63019f721aff16c32040.hot-update.js": "/js/main.63019f721aff16c32040.hot-update.js",
+ "/js/main.2668706d7ae6ba7e57d7.hot-update.js": "/js/main.2668706d7ae6ba7e57d7.hot-update.js",
+ "/js/main.7c95c0035cf9ef725975.hot-update.js": "/js/main.7c95c0035cf9ef725975.hot-update.js",
+ "/js/main.25e6f3570af5d6997c3b.hot-update.js": "/js/main.25e6f3570af5d6997c3b.hot-update.js",
+ "/js/main.833de212f7174cf943d0.hot-update.js": "/js/main.833de212f7174cf943d0.hot-update.js",
+ "/js/main.42f1f72fc008c3d55328.hot-update.js": "/js/main.42f1f72fc008c3d55328.hot-update.js",
+ "/js/main.c30865644e19484ffdb2.hot-update.js": "/js/main.c30865644e19484ffdb2.hot-update.js",
+ "/js/main.093932c5788754777120.hot-update.js": "/js/main.093932c5788754777120.hot-update.js",
+ "/js/main.68a0f6d8fb9a63f25a63.hot-update.js": "/js/main.68a0f6d8fb9a63f25a63.hot-update.js",
+ "/js/main.dde11d552c1431c3c013.hot-update.js": "/js/main.dde11d552c1431c3c013.hot-update.js",
+ "/js/main.751b0c260d1129f5fdd0.hot-update.js": "/js/main.751b0c260d1129f5fdd0.hot-update.js",
+ "/js/main.29d30192df173c07196b.hot-update.js": "/js/main.29d30192df173c07196b.hot-update.js",
+ "/js/main.60764aab6c1adc329237.hot-update.js": "/js/main.60764aab6c1adc329237.hot-update.js",
+ "/js/main.3ba38878f8e0401a6622.hot-update.js": "/js/main.3ba38878f8e0401a6622.hot-update.js",
+ "/js/main.0ac7209eec896afa5fd7.hot-update.js": "/js/main.0ac7209eec896afa5fd7.hot-update.js",
+ "/js/main.7c43b93309d76b9c689e.hot-update.js": "/js/main.7c43b93309d76b9c689e.hot-update.js",
+ "/js/main.6b0d4d6682db03e57a7e.hot-update.js": "/js/main.6b0d4d6682db03e57a7e.hot-update.js",
+ "/js/main.bae2bbea92c87bbe9b6e.hot-update.js": "/js/main.bae2bbea92c87bbe9b6e.hot-update.js",
+ "/js/main.15d07623969b0491f4a0.hot-update.js": "/js/main.15d07623969b0491f4a0.hot-update.js",
+ "/js/main.a0152fd5be092487b17a.hot-update.js": "/js/main.a0152fd5be092487b17a.hot-update.js",
+ "/js/main.4c881d50bd3c151afc7e.hot-update.js": "/js/main.4c881d50bd3c151afc7e.hot-update.js",
+ "/js/main.4a24e98b1e515772aba1.hot-update.js": "/js/main.4a24e98b1e515772aba1.hot-update.js",
+ "/js/main.79741fe597e91dc1543e.hot-update.js": "/js/main.79741fe597e91dc1543e.hot-update.js",
+ "/js/main.cef63d6a6cac0a6f6a11.hot-update.js": "/js/main.cef63d6a6cac0a6f6a11.hot-update.js",
+ "/js/main.cbfd2196668397b14480.hot-update.js": "/js/main.cbfd2196668397b14480.hot-update.js",
+ "/js/main.4ddd8429fdd59155d1c3.hot-update.js": "/js/main.4ddd8429fdd59155d1c3.hot-update.js",
+ "/js/main.bf31b90c9bef9eacbfc6.hot-update.js": "/js/main.bf31b90c9bef9eacbfc6.hot-update.js",
+ "/js/main.84d101ec6f861c3727d7.hot-update.js": "/js/main.84d101ec6f861c3727d7.hot-update.js",
+ "/js/main.0dc92a7ac7bacc039422.hot-update.js": "/js/main.0dc92a7ac7bacc039422.hot-update.js",
+ "/js/main.821175555d08638e00e9.hot-update.js": "/js/main.821175555d08638e00e9.hot-update.js",
+ "/js/main.150365f52e29e60ad89e.hot-update.js": "/js/main.150365f52e29e60ad89e.hot-update.js",
+ "/js/main.018aa3ac776b804d86f6.hot-update.js": "/js/main.018aa3ac776b804d86f6.hot-update.js"
}
diff --git a/resources/js/App.vue b/resources/js/App.vue
index fa8cdc8e..e7655086 100644
--- a/resources/js/App.vue
+++ b/resources/js/App.vue
@@ -122,7 +122,7 @@
diff --git a/resources/js/components/Admin/WidgetTotals.vue b/resources/js/components/Admin/WidgetTotals.vue
new file mode 100644
index 00000000..2f191754
--- /dev/null
+++ b/resources/js/components/Admin/WidgetTotals.vue
@@ -0,0 +1,62 @@
+
+
+
+ {{ value }}
+
+
+
+
+
+
+
+
diff --git a/resources/js/components/Admin/WidgetWrapper.vue b/resources/js/components/Admin/WidgetWrapper.vue
new file mode 100644
index 00000000..4ea775c0
--- /dev/null
+++ b/resources/js/components/Admin/WidgetWrapper.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
diff --git a/resources/js/components/FilesView/ButtonBase.vue b/resources/js/components/FilesView/ButtonBase.vue
index 3b252bc9..c7f37c22 100644
--- a/resources/js/components/FilesView/ButtonBase.vue
+++ b/resources/js/components/FilesView/ButtonBase.vue
@@ -1,16 +1,23 @@
-
-
-
-
+
+
+
+
+
+
@@ -26,40 +33,81 @@
border-radius: 8px;
border: 0;
padding: 10px 28px;
- display: inline-block;
white-space: nowrap;
+ display: flex;
+ align-items: center;
+
+ .icon {
+ line-height: 1;
+ margin-right: 10px;
+ }
+
+ .content {
+ width: 100%;
+ }
&:active {
transform: scale(0.95);
}
&.theme {
- color: $theme;
background: rgba($theme, .1);
+
+ .content {
+ color: $theme;
+ }
+
+ polyline, path {
+ stroke: $theme;
+ }
}
&.theme-solid {
- color: white;
background: $theme;
- path {
- fill: white;
+ .content {
+ color: white;
+ }
+
+ polyline, path {
+ stroke: white;
}
}
&.danger {
- color: $danger;
background: rgba($danger, .1);
+
+ .content {
+ color: $danger;
+ }
+
+ polyline, path {
+ stroke: $danger;
+ }
}
&.danger-solid {
- color: white;
background: $danger;
+
+ .content {
+ color: white;
+ }
+
+ polyline, path {
+ stroke: white;
+ }
}
&.secondary {
- color: $text;
background: $light_background;
+
+ .content {
+ color: $text;
+ }
+
+ polyline, path {
+ stroke: $text;
+ }
}
}
diff --git a/resources/js/components/Others/EmptyPageContent.vue b/resources/js/components/Others/EmptyPageContent.vue
new file mode 100644
index 00000000..8d5b691d
--- /dev/null
+++ b/resources/js/components/Others/EmptyPageContent.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
diff --git a/resources/js/components/Others/Forms/ImageInput.vue b/resources/js/components/Others/Forms/ImageInput.vue
index 7afe91a8..62b18457 100644
--- a/resources/js/components/Others/Forms/ImageInput.vue
+++ b/resources/js/components/Others/Forms/ImageInput.vue
@@ -120,7 +120,7 @@
height: 100%;
object-fit: contain;
left: 0;
- padding: 7px;
+ padding: 25px;
display: block;
&.fit-image {
diff --git a/resources/js/components/Others/Forms/InfoBox.vue b/resources/js/components/Others/Forms/InfoBox.vue
index 1b67e78b..36711914 100644
--- a/resources/js/components/Others/Forms/InfoBox.vue
+++ b/resources/js/components/Others/Forms/InfoBox.vue
@@ -34,6 +34,12 @@
@include font-size(15);
line-height: 1.6;
word-break: break-all;
+ font-weight: 600;
+ }
+
+ b {
+ font-weight: 700;
+ color: $theme;
}
a {
diff --git a/resources/js/components/Others/PlanPricingTables.vue b/resources/js/components/Others/PlanPricingTables.vue
index 29e6e273..ed68a7b4 100644
--- a/resources/js/components/Others/PlanPricingTables.vue
+++ b/resources/js/components/Others/PlanPricingTables.vue
@@ -120,6 +120,7 @@
.sign-in-button {
width: 100%;
+ text-align: center;
}
.price {
diff --git a/resources/js/components/Sidebar/MenuBar.vue b/resources/js/components/Sidebar/MenuBar.vue
index f53671eb..c35d68d1 100644
--- a/resources/js/components/Sidebar/MenuBar.vue
+++ b/resources/js/components/Sidebar/MenuBar.vue
@@ -32,7 +32,7 @@
-
+
@@ -82,16 +82,21 @@
data() {
return {
adminRoutes: [
+ 'AppSettings',
+ 'AppAppearance',
+ 'AppBillings',
+ 'AppEmail',
+ 'AppOthers',
+ 'Dashboard',
'PlanSubscribers',
+ 'PlanCreate',
'PlanSettings',
'PlanDelete',
-
- 'GatewayTransactions',
- 'GatewaySettings',
- 'UserInvoices',
+ 'UserSubscription',
'UserInvoices',
'UserPassword',
'UserStorage',
+ 'UserDelete',
'PlanCreate',
'UserCreate',
'UserDelete',
diff --git a/resources/js/helpers.js b/resources/js/helpers.js
index a6a002b7..a85598ca 100644
--- a/resources/js/helpers.js
+++ b/resources/js/helpers.js
@@ -20,16 +20,13 @@ const Helpers = {
})
}, 300)
- Vue.prototype.$getCreditCardBrand = function (brand) {
- return `/assets/icons/${brand}.svg`
- }
-
Vue.prototype.$updateImage = function (route, name, image) {
// Create form
let formData = new FormData()
// Add image to form
+ formData.append('name', name)
formData.append(name, image)
formData.append('_method', 'PATCH')
@@ -46,6 +43,14 @@ const Helpers = {
})
}
+ Vue.prototype.$getCreditCardBrand = function (brand) {
+ return `/assets/icons/${brand}.svg`
+ }
+
+ Vue.prototype.$getInvoiceLink = function (customer, id) {
+ return '/invoice/' + customer + '/' + id
+ }
+
Vue.prototype.$openImageOnNewTab = function (source) {
let win = window.open(source, '_blank')
diff --git a/resources/js/router.js b/resources/js/router.js
index dae63577..a3e45605 100644
--- a/resources/js/router.js
+++ b/resources/js/router.js
@@ -29,6 +29,7 @@ import UserProfileMobileMenu from './views/Mobile/UserProfileMobileMenu'
import Admin from './views/Admin'
import Invoices from './views/Admin/Invoices'
+import Dashboard from './views/Admin/Dashboard'
import AppSettings from './views/Admin/AppSettings/AppSettings'
// App Settings
@@ -81,6 +82,15 @@ const routesAdmin = [
title: 'Admin'
},
children: [
+ {
+ name: 'Dashboard',
+ path: '/admin/dashboard',
+ component: Dashboard,
+ meta: {
+ requiresAuth: true,
+ title: 'Dashboard'
+ },
+ },
{
name: 'Invoices',
path: '/admin/invoices',
diff --git a/resources/js/views/Admin.vue b/resources/js/views/Admin.vue
index 83160bf2..3d1f3247 100644
--- a/resources/js/views/Admin.vue
+++ b/resources/js/views/Admin.vue
@@ -6,6 +6,14 @@