diff --git a/.all-contributorsrc b/.all-contributorsrc index ec5db5021..68aec8532 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -3181,6 +3181,15 @@ "contributions": [ "code" ] + }, + { + "login": "Glukose1", + "name": "Glukose1", + "avatar_url": "https://avatars.githubusercontent.com/u/167117705?v=4", + "profile": "https://github.com/Glukose1", + "contributions": [ + "code" + ] } ] } diff --git a/.gitignore b/.gitignore index 25a887e38..0715ac049 100755 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,5 @@ _ide_helper_models.php storage/ldap_client_tls.cert storage/ldap_client_tls.key /storage/framework/testing + +/.phpunit.cache \ No newline at end of file diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 0e4efc974..6359814b4 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -52,6 +52,7 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/ken | [
bilias](https://github.com/bilias)
[💻](https://github.com/snipe/snipe-it/commits?author=bilias "Code") | [
coach1988](https://github.com/coach1988)
[💻](https://github.com/snipe/snipe-it/commits?author=coach1988 "Code") | [
MrM](https://github.com/mauro-miatello)
[💻](https://github.com/snipe/snipe-it/commits?author=mauro-miatello "Code") | [
koiakoia](https://github.com/koiakoia)
[💻](https://github.com/snipe/snipe-it/commits?author=koiakoia "Code") | [
Mustafa Online](https://github.com/mustafa-online)
[💻](https://github.com/snipe/snipe-it/commits?author=mustafa-online "Code") | [
franceslui](https://github.com/franceslui)
[💻](https://github.com/snipe/snipe-it/commits?author=franceslui "Code") | [
Q4kK](https://github.com/Q4kK)
[💻](https://github.com/snipe/snipe-it/commits?author=Q4kK "Code") | | [
squintfox](https://github.com/squintfox)
[💻](https://github.com/snipe/snipe-it/commits?author=squintfox "Code") | [
Jeff Clay](https://github.com/jeffclay)
[💻](https://github.com/snipe/snipe-it/commits?author=jeffclay "Code") | [
Phil J R](https://github.com/PP-JN-RL)
[💻](https://github.com/snipe/snipe-it/commits?author=PP-JN-RL "Code") | [
i_virus](https://www.corelight.com/)
[💻](https://github.com/snipe/snipe-it/commits?author=chandanchowdhury "Code") | [
Paul Grime](https://github.com/gitgrimbo)
[💻](https://github.com/snipe/snipe-it/commits?author=gitgrimbo "Code") | [
Lee Porte](https://leeporte.co.uk)
[💻](https://github.com/snipe/snipe-it/commits?author=LeePorte "Code") | [
BRYAN ](https://github.com/bryanlopezinc)
[💻](https://github.com/snipe/snipe-it/commits?author=bryanlopezinc "Code") [⚠️](https://github.com/snipe/snipe-it/commits?author=bryanlopezinc "Tests") | | [
U-H-T](https://github.com/U-H-T)
[💻](https://github.com/snipe/snipe-it/commits?author=U-H-T "Code") | [
Matt Tyree](https://github.com/Tyree)
[📖](https://github.com/snipe/snipe-it/commits?author=Tyree "Documentation") | [
Florent Bervas](http://spoontux.net)
[💻](https://github.com/snipe/snipe-it/commits?author=FlorentDotMe "Code") | [
Daniel Albertsen](https://ditscheri.com)
[💻](https://github.com/snipe/snipe-it/commits?author=dbakan "Code") | [
r-xyz](https://github.com/r-xyz)
[💻](https://github.com/snipe/snipe-it/commits?author=r-xyz "Code") | [
Steven Mainor](https://github.com/DrekiDegga)
[💻](https://github.com/snipe/snipe-it/commits?author=DrekiDegga "Code") | [
arne-kroeger](https://github.com/arne-kroeger)
[💻](https://github.com/snipe/snipe-it/commits?author=arne-kroeger "Code") | +| [
Glukose1](https://github.com/Glukose1)
[💻](https://github.com/snipe/snipe-it/commits?author=Glukose1 "Code") | This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome! diff --git a/Dockerfile.alpine b/Dockerfile.alpine index 6d68e7ad9..c08cbbd95 100644 --- a/Dockerfile.alpine +++ b/Dockerfile.alpine @@ -1,35 +1,35 @@ -FROM alpine:3.18.6 +FROM alpine:3.19 # Apache + PHP RUN apk add --no-cache \ apache2 \ - php81 \ - php81-common \ - php81-apache2 \ - php81-curl \ - php81-ldap \ - php81-mysqli \ - php81-gd \ - php81-xml \ - php81-mbstring \ - php81-zip \ - php81-ctype \ - php81-tokenizer \ - php81-pdo_mysql \ - php81-openssl \ - php81-bcmath \ - php81-phar \ - php81-json \ - php81-iconv \ - php81-fileinfo \ - php81-simplexml \ - php81-session \ - php81-dom \ - php81-xmlwriter \ - php81-xmlreader \ - php81-sodium \ - php81-redis \ - php81-pecl-memcached \ - php81-exif \ + php82 \ + php82-common \ + php82-apache2 \ + php82-curl \ + php82-ldap \ + php82-mysqli \ + php82-gd \ + php82-xml \ + php82-mbstring \ + php82-zip \ + php82-ctype \ + php82-tokenizer \ + php82-pdo_mysql \ + php82-openssl \ + php82-bcmath \ + php82-phar \ + php82-json \ + php82-iconv \ + php82-fileinfo \ + php82-simplexml \ + php82-session \ + php82-dom \ + php82-xmlwriter \ + php82-xmlreader \ + php82-sodium \ + php82-redis \ + php82-pecl-memcached \ + php82-exif \ curl \ wget \ vim \ @@ -42,7 +42,7 @@ COPY docker/column-statistics.cnf /etc/mysql/conf.d/column-statistics.cnf # Where apache's PID lives RUN mkdir -p /run/apache2 && chown apache:apache /run/apache2 -RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php81/php.ini +RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php82/php.ini COPY docker/000-default-2.4.conf /etc/apache2/conf.d/default.conf # Enable mod_rewrite diff --git a/README.md b/README.md index 6d2c45ac7..0086c7b32 100644 --- a/README.md +++ b/README.md @@ -72,12 +72,13 @@ Since the release of the JSON REST API, several third-party developers have been - [Snipe-IT plugin for Jira Service Desk](https://marketplace.atlassian.com/apps/1220964/snipe-it-for-jira) - [Python 3 CSV importer](https://github.com/gastamper/snipeit-csvimporter) - allows importing assets into Snipe-IT based on Item Name rather than Asset Tag. - [Snipe-IT Kubernetes Helm Chart](https://github.com/t3n/helm-charts/tree/master/snipeit) - For more information, [click here](https://hub.helm.sh/charts/t3n/snipeit). -- [Snipe-IT Bulk Edit](https://github.com/bricelabelle/snipe-it-bulkedit) - Google Script files to use Google Sheets as a bulk checkout/checkin/edit tool for Snipe-it. -- [MosyleSnipeSync](https://github.com/RodneyLeeBrands/MosyleSnipeSync) by [@Karpadiem](https://github.com/Karpadiem) - Python script to synchronize information between Mosyle and Snipe-IT +- [Snipe-IT Bulk Edit](https://github.com/bricelabelle/snipe-it-bulkedit) - Google Script files to use Google Sheets as a bulk checkout/checkin/edit tool for Snipe-IT. +- [MosyleSnipeSync](https://github.com/RodneyLeeBrands/MosyleSnipeSync) by [@Karpadiem](https://github.com/Karpadiem) - Python script to synchronize information between Mosyle and Snipe-IT. - [WWW::SnipeIT](https://github.com/SEDC/perl-www-snipeit) by [@SEDC](https://github.com/SEDC) - perl module for accessing the API - [UniFi to Snipe-IT](https://github.com/RodneyLeeBrands/UnifiSnipeSync) by [@karpadiem](https://github.com/karpadiem) - Python script that synchronizes UniFi devices with Snipe-IT. - [Kandji2Snipe](https://github.com/grokability/kandji2snipe) by [@briangoldstein](https://github.com/briangoldstein) - Python script that synchronizes Kandji with Snipe-IT. -- [SnipeAgent](https://github.com/ReticentRobot/SnipeAgent) by @ReticentRobot - Windows agent for Snipe-IT +- [SnipeAgent](https://github.com/ReticentRobot/SnipeAgent) by [@ReticentRobot](https://github.com/ReticentRobot) - Windows agent for Snipe-IT. +- [Gate Pass Generator](https://github.com/cha7uraAE/snipe-it-gate-pass-system) by [@cha7uraAE](https://github.com/cha7uraAE) - A Streamlit application for generating gate passes based on hardware data from a Snipe-IT API. ----- diff --git a/app/Console/Commands/FixupAssignedToWithoutAssignedType.php b/app/Console/Commands/FixupAssignedToWithoutAssignedType.php new file mode 100644 index 000000000..ea3a55439 --- /dev/null +++ b/app/Console/Commands/FixupAssignedToWithoutAssignedType.php @@ -0,0 +1,66 @@ +whereNotNull("assigned_to")->withTrashed(); + $this->withProgressBar($assets->get(), function (Asset $asset) { + //now check each action log, from the most recent backwards, to find the last checkin or checkout + foreach($asset->log()->orderBy("id","desc")->get() as $action_log) { + if($this->option("debug")) { + $this->info("Asset id: " . $asset->id . " action log, action type is: " . $action_log->action_type); + } + switch($action_log->action_type) { + case 'checkin from': + if($this->option("debug")) { + $this->info("Doing a checkin for ".$asset->id); + } + $asset->assigned_to = null; + // if you have a required custom field, we still want to save, and we *don't* want an action_log + $asset->saveQuietly(); + return; + + case 'checkout': + if($this->option("debug")) { + $this->info("Doing a checkout for " . $asset->id . " picking target type: " . $action_log->target_type); + } + if($asset->assigned_to != $action_log->target_id) { + $this->error("Asset's assigned_to does *NOT* match Action Log's target_id. \$asset->assigned_to=".$asset->assigned_to." vs. \$action_log->target_id=".$action_log->target_id); + //FIXME - do we abort here? Do we try to keep looking? I don't know, this means your data is *really* messed up... + } + $asset->assigned_type = $action_log->target_type; + $asset->saveQuietly(); // see above + return; + } + } + $asset->assigned_to = null; //asset was never checked in or out in its lifetime - it stays 'checked in' + $asset->saveQuietly(); //see above + }); + $this->newLine(); + $this->info("Assets assigned_type are fixed"); + } +} diff --git a/app/Http/Controllers/Account/AcceptanceController.php b/app/Http/Controllers/Account/AcceptanceController.php index 2c9d29fc1..6d84861fb 100644 --- a/app/Http/Controllers/Account/AcceptanceController.php +++ b/app/Http/Controllers/Account/AcceptanceController.php @@ -218,6 +218,7 @@ class AcceptanceController extends Controller 'item_tag' => $item->asset_tag, 'item_model' => $display_model, 'item_serial' => $item->serial, + 'item_status' => $item->assetstatus?->name, 'eula' => $item->getEula(), 'note' => $request->input('note'), 'check_out_date' => Carbon::parse($acceptance->created_at)->format('Y-m-d'), @@ -308,6 +309,7 @@ class AcceptanceController extends Controller 'item_tag' => $item->asset_tag, 'item_model' => $display_model, 'item_serial' => $item->serial, + 'item_status' => $item->assetstatus?->name, 'note' => $request->input('note'), 'declined_date' => Carbon::parse($acceptance->declined_at)->format('Y-m-d'), 'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null, diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 8361971d5..855bc5126 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -928,7 +928,7 @@ class AssetsController extends Controller } } - if ($request->has('status_id')) { + if ($request->filled('status_id')) { $asset->status_id = $request->input('status_id'); } @@ -978,7 +978,7 @@ class AssetsController extends Controller public function checkinByTag(Request $request, $tag = null) : JsonResponse { $this->authorize('checkin', Asset::class); - if(null == $tag && null !== ($request->input('asset_tag'))) { + if (null == $tag && null !== ($request->input('asset_tag'))) { $tag = $request->input('asset_tag'); } $asset = Asset::where('asset_tag', $tag)->first(); diff --git a/app/Http/Controllers/Api/DepreciationsController.php b/app/Http/Controllers/Api/DepreciationsController.php index 93088bb04..0209eae39 100644 --- a/app/Http/Controllers/Api/DepreciationsController.php +++ b/app/Http/Controllers/Api/DepreciationsController.php @@ -20,9 +20,9 @@ class DepreciationsController extends Controller public function index(Request $request) : JsonResponse | array { $this->authorize('view', Depreciation::class); - $allowed_columns = ['id','name','months','depreciation_min','created_at']; + $allowed_columns = ['id','name','months','depreciation_min', 'depreciation_type','created_at']; - $depreciations = Depreciation::select('id','name','months','depreciation_min','user_id','created_at','updated_at'); + $depreciations = Depreciation::select('id','name','months','depreciation_min','depreciation_type','user_id','created_at','updated_at'); if ($request->filled('search')) { $depreciations = $depreciations->TextSearch($request->input('search')); diff --git a/app/Http/Controllers/Api/LocationsController.php b/app/Http/Controllers/Api/LocationsController.php index 73227e082..10744bee2 100644 --- a/app/Http/Controllers/Api/LocationsController.php +++ b/app/Http/Controllers/Api/LocationsController.php @@ -248,6 +248,7 @@ class LocationsController extends Controller ->withCount('rtd_assets as rtd_assets_count') ->withCount('children as children_count') ->withCount('users as users_count') + ->withCount('accessories as accessories_count') ->findOrFail($id); if (! $location->isDeletable()) { diff --git a/app/Http/Controllers/Api/PredefinedKitsController.php b/app/Http/Controllers/Api/PredefinedKitsController.php index 2bc118db3..26ccb5035 100644 --- a/app/Http/Controllers/Api/PredefinedKitsController.php +++ b/app/Http/Controllers/Api/PredefinedKitsController.php @@ -246,7 +246,7 @@ class PredefinedKitsController extends Controller $relation = $kit->models(); if ($relation->find($model_id)) { - return response()->json(Helper::formatStandardApiResponse('error', null, ['model' => 'Model already attached to kit'])); + return response()->json(Helper::formatStandardApiResponse('error', null, ['model' => trans('admin/kits/general.model_already_attached')])); } $relation->attach($model_id, ['quantity' => $quantity]); diff --git a/app/Http/Controllers/Api/ReportsController.php b/app/Http/Controllers/Api/ReportsController.php index b0f64189d..931886fb2 100644 --- a/app/Http/Controllers/Api/ReportsController.php +++ b/app/Http/Controllers/Api/ReportsController.php @@ -83,11 +83,19 @@ class ReportsController extends Controller $offset = ($request->input('offset') > $total) ? $total : app('api_offset_value'); $limit = app('api_limit_value'); - $sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at'; $order = ($request->input('order') == 'asc') ? 'asc' : 'desc'; + switch ($request->input('sort')) { + case 'admin': + $actionlogs->OrderAdmin($order); + break; + default: + $sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at'; + $actionlogs = $actionlogs->orderBy($sort, $order); + break; + } - $actionlogs = $actionlogs->orderBy($sort, $order)->skip($offset)->take($limit)->get(); + $actionlogs = $actionlogs->skip($offset)->take($limit)->get(); return response()->json((new ActionlogsTransformer)->transformActionlogs($actionlogs, $total), 200, ['Content-Type' => 'application/json;charset=utf8'], JSON_UNESCAPED_UNICODE); } diff --git a/app/Http/Controllers/Api/StatuslabelsController.php b/app/Http/Controllers/Api/StatuslabelsController.php index 95ac5956f..ce61d653f 100644 --- a/app/Http/Controllers/Api/StatuslabelsController.php +++ b/app/Http/Controllers/Api/StatuslabelsController.php @@ -8,6 +8,7 @@ use App\Http\Transformers\AssetsTransformer; use App\Http\Transformers\SelectlistTransformer; use App\Http\Transformers\StatuslabelsTransformer; use App\Models\Asset; +use App\Models\Setting; use App\Models\Statuslabel; use Illuminate\Http\Request; use App\Http\Transformers\PieChartTransformer; @@ -187,8 +188,14 @@ class StatuslabelsController extends Controller public function getAssetCountByStatuslabel() : array { $this->authorize('view', Statuslabel::class); - $statuslabels = Statuslabel::withCount('assets')->get(); - $total = Array(); + + if (Setting::getSettings()->show_archived_in_list == 0 ) { + $statuslabels = Statuslabel::withCount('assets')->where('archived','0')->get(); + } else { + $statuslabels = Statuslabel::withCount('assets')->get(); + } + + $total = []; foreach ($statuslabels as $statuslabel) { diff --git a/app/Http/Controllers/Assets/AssetsController.php b/app/Http/Controllers/Assets/AssetsController.php index 0852a4624..75646e726 100755 --- a/app/Http/Controllers/Assets/AssetsController.php +++ b/app/Http/Controllers/Assets/AssetsController.php @@ -478,9 +478,16 @@ class AssetsController extends Controller $tag = $tag ? $tag : $request->get('assetTag'); $topsearch = ($request->get('topsearch') == 'true'); - if (! $asset = Asset::where('asset_tag', '=', $tag)->first()) { - return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.does_not_exist')); + // Search for an exact and unique asset tag match + $assets = Asset::where('asset_tag', '=', $tag); + + // If not a unique result, redirect to the index view + if ($assets->count() != 1) { + return redirect()->route('hardware.index') + ->with('search', $tag) + ->with('warning', trans('admin/hardware/message.does_not_exist_var', [ 'asset_tag' => $tag ])); } + $asset = $assets->first(); $this->authorize('view', $asset); return redirect()->route('hardware.show', $asset->id)->with('topsearch', $topsearch); @@ -837,7 +844,7 @@ class AssetsController extends Controller { $this->authorize('checkin', Asset::class); - return view('hardware/quickscan-checkin'); + return view('hardware/quickscan-checkin')->with('statusLabel_list', Helper::statusLabelList()); } public function audit($id) diff --git a/app/Http/Controllers/Assets/BulkAssetsController.php b/app/Http/Controllers/Assets/BulkAssetsController.php index 287bc0611..d58edbaca 100644 --- a/app/Http/Controllers/Assets/BulkAssetsController.php +++ b/app/Http/Controllers/Assets/BulkAssetsController.php @@ -227,7 +227,8 @@ class BulkAssetsController extends Controller * its checkout status. */ - if (($request->filled('purchase_date')) + if (($request->filled('name')) + || ($request->filled('purchase_date')) || ($request->filled('expected_checkin')) || ($request->filled('purchase_cost')) || ($request->filled('supplier_id')) @@ -239,6 +240,7 @@ class BulkAssetsController extends Controller || ($request->filled('status_id')) || ($request->filled('model_id')) || ($request->filled('next_audit_date')) + || ($request->filled('null_name')) || ($request->filled('null_purchase_date')) || ($request->filled('null_expected_checkin_date')) || ($request->filled('null_next_audit_date')) @@ -251,13 +253,14 @@ class BulkAssetsController extends Controller $this->update_array = []; /** - * Leave out model_id and status here because we do math on that later. We have to do some extra - * validation and checks on those two. + * Leave out model_id and status here because we do math on that later. We have to do some + * extra validation and checks on those two. * * It's tempting to make these match the request check above, but some of these values require * extra work to make sure the data makes sense. */ - $this->conditionallyAddItem('purchase_date') + $this->conditionallyAddItem('name') + ->conditionallyAddItem('purchase_date') ->conditionallyAddItem('expected_checkin') ->conditionallyAddItem('order_number') ->conditionallyAddItem('requestable') @@ -271,6 +274,11 @@ class BulkAssetsController extends Controller /** * Blank out fields that were requested to be blanked out via checkbox */ + if ($request->input('null_name')=='1') { + + $this->update_array['name'] = null; + } + if ($request->input('null_purchase_date')=='1') { $this->update_array['purchase_date'] = null; } diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index 9ac976b43..e7b10877c 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -508,8 +508,8 @@ class LoginController extends Controller protected function validator(array $data) { return Validator::make($data, [ - 'username' => 'required', - 'password' => 'required', + 'username' => 'required|not_array', + 'password' => 'required|not_array', ]); } diff --git a/app/Http/Controllers/Auth/SamlController.php b/app/Http/Controllers/Auth/SamlController.php index 769f90349..6a4c1f65b 100644 --- a/app/Http/Controllers/Auth/SamlController.php +++ b/app/Http/Controllers/Auth/SamlController.php @@ -99,12 +99,18 @@ class SamlController extends Controller { $saml = $this->saml; $auth = $saml->getAuth(); - $auth->processResponse(); + $saml_exception = false; + try { + $auth->processResponse(); + } catch (\Exception $e) { + Log::warning("Exception caught in SAML login: " . $e->getMessage()); + $saml_exception = true; + } $errors = $auth->getErrors(); - if (! empty($errors)) { - Log::error('There was an error with SAML ACS: '.implode(', ', $errors)); - Log::error('Reason: '.$auth->getLastErrorReason()); + if (!empty($errors) || $saml_exception) { + Log::warning('There was an error with SAML ACS: ' . implode(', ', $errors)); + Log::warning('Reason: ' . $auth->getLastErrorReason()); return redirect()->route('login')->with('error', trans('auth/message.signin.error')); } @@ -132,12 +138,18 @@ class SamlController extends Controller { $auth = $this->saml->getAuth(); $retrieveParametersFromServer = $this->saml->getSetting('retrieveParametersFromServer', false); - $sloUrl = $auth->processSLO(true, null, $retrieveParametersFromServer, null, true); + $saml_exception = false; + try { + $sloUrl = $auth->processSLO(true, null, $retrieveParametersFromServer, null, true); + } catch (\Exception $e) { + Log::warning("Exception caught in SAML single-logout: " . $e->getMessage()); + $saml_exception = true; + } $errors = $auth->getErrors(); - if (! empty($errors)) { - Log::error('There was an error with SAML SLS: '.implode(', ', $errors)); - Log::error('Reason: '.$auth->getLastErrorReason()); + if (!empty($errors) || $saml_exception) { + Log::warning('There was an error with SAML SLS: ' . implode(', ', $errors)); + Log::warning('Reason: ' . $auth->getLastErrorReason()); return view('errors.403'); } diff --git a/app/Http/Controllers/CheckInOutRequest.php b/app/Http/Controllers/CheckInOutRequest.php index 328553eb4..6ab327fff 100644 --- a/app/Http/Controllers/CheckInOutRequest.php +++ b/app/Http/Controllers/CheckInOutRequest.php @@ -20,7 +20,7 @@ trait CheckInOutRequest return Location::findOrFail(request('assigned_location')); case 'asset': return Asset::findOrFail(request('assigned_asset')); - case 'user': + default: return User::findOrFail(request('assigned_user')); } diff --git a/app/Http/Controllers/Components/ComponentCheckoutController.php b/app/Http/Controllers/Components/ComponentCheckoutController.php index 5547b7170..e9db70811 100644 --- a/app/Http/Controllers/Components/ComponentCheckoutController.php +++ b/app/Http/Controllers/Components/ComponentCheckoutController.php @@ -8,6 +8,7 @@ use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Models\Asset; use App\Models\Component; +use App\Models\Setting; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Input; @@ -97,6 +98,10 @@ class ComponentCheckoutController extends Controller // Check if the asset exists $asset = Asset::find($request->input('asset_id')); + if ((Setting::getSettings()->full_multiple_companies_support) && $component->company_id !== $asset->company_id) { + return redirect()->route('components.checkout.show', $componentId)->with('error', trans('general.error_user_company')); + } + // Update the component data $component->asset_id = $request->input('asset_id'); $component->assets()->attach($component->id, [ diff --git a/app/Http/Controllers/DepreciationsController.php b/app/Http/Controllers/DepreciationsController.php index 57ad35fea..c564cc98f 100755 --- a/app/Http/Controllers/DepreciationsController.php +++ b/app/Http/Controllers/DepreciationsController.php @@ -62,6 +62,20 @@ class DepreciationsController extends Controller $depreciation->name = $request->input('name'); $depreciation->months = $request->input('months'); $depreciation->user_id = Auth::id(); + + $request->validate([ + 'depreciation_min' => [ + 'required', + 'numeric', + function ($attribute, $value, $fail) use ($request) { + if ($request->input('depreciation_type') == 'percent' && ($value < 0 || $value > 100)) { + $fail(trans('validation.percent')); + } + }, + ], + 'depreciation_type' => 'required|in:amount,percent', + ]); + $depreciation->depreciation_type = $request->input('depreciation_type'); $depreciation->depreciation_min = $request->input('depreciation_min'); // Was the asset created? @@ -116,6 +130,20 @@ class DepreciationsController extends Controller // Depreciation data $depreciation->name = $request->input('name'); $depreciation->months = $request->input('months'); + + $request->validate([ + 'depreciation_min' => [ + 'required', + 'numeric', + function ($attribute, $value, $fail) use ($request) { + if ($request->input('depreciation_type') == 'percent' && ($value < 0 || $value > 100)) { + $fail(trans('validation.percent')); + } + }, + ], + 'depreciation_type' => 'required|in:amount,percent', + ]); + $depreciation->depreciation_type = $request->input('depreciation_type'); $depreciation->depreciation_min = $request->input('depreciation_min'); // Was the asset created? diff --git a/app/Http/Controllers/Kits/CheckoutKitController.php b/app/Http/Controllers/Kits/CheckoutKitController.php index c75e4ea8f..bf4f64a8d 100644 --- a/app/Http/Controllers/Kits/CheckoutKitController.php +++ b/app/Http/Controllers/Kits/CheckoutKitController.php @@ -62,10 +62,10 @@ class CheckoutKitController extends Controller $checkout_result = $this->kitService->checkout($request, $kit, $user); if (Arr::has($checkout_result, 'errors') && count($checkout_result['errors']) > 0) { - return redirect()->back()->with('error', trans('general.checkout_error'))->with('error_messages', $checkout_result['errors']); + return redirect()->back()->with('error', trans('admin/kits/general.checkout_error'))->with('error_messages', $checkout_result['errors']); } - return redirect()->back()->with('success', trans('general.checkout_success')) + return redirect()->back()->with('success', trans('admin/kits/general.checkout_success')) ->with('assets', Arr::get($checkout_result, 'assets', null)) ->with('accessories', Arr::get($checkout_result, 'accessories', null)) ->with('consumables', Arr::get($checkout_result, 'consumables', null)); diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index f1e3c257c..abe09e8af 100755 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -49,6 +49,8 @@ class ProfileController extends Controller $user->gravatar = $request->input('gravatar'); $user->skin = $request->input('skin'); $user->phone = $request->input('phone'); + $user->enable_sounds = $request->input('enable_sounds', false); + $user->enable_confetti = $request->input('enable_confetti', false); if (! config('app.lock_passwords')) { $user->locale = $request->input('locale', 'en-US'); diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index f0903f412..3c8456bcd 100755 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -324,6 +324,7 @@ class SettingsController extends Controller $setting->full_multiple_companies_support = $request->input('full_multiple_companies_support', '0'); $setting->unique_serial = $request->input('unique_serial', '0'); + $setting->shortcuts_enabled = $request->input('shortcuts_enabled', '0'); $setting->show_images_in_email = $request->input('show_images_in_email', '0'); $setting->show_archived_in_list = $request->input('show_archived_in_list', '0'); $setting->dashboard_message = $request->input('dashboard_message'); @@ -638,6 +639,7 @@ class SettingsController extends Controller $setting->alert_threshold = $request->input('alert_threshold'); $setting->audit_interval = $request->input('audit_interval'); $setting->audit_warning_days = $request->input('audit_warning_days'); + $setting->due_checkin_days = $request->input('due_checkin_days'); $setting->show_alerts_in_menu = $request->input('show_alerts_in_menu', '0'); if ($setting->save()) { diff --git a/app/Http/Controllers/Users/BulkUsersController.php b/app/Http/Controllers/Users/BulkUsersController.php index fcd295ca6..1a8f84b7a 100644 --- a/app/Http/Controllers/Users/BulkUsersController.php +++ b/app/Http/Controllers/Users/BulkUsersController.php @@ -16,6 +16,7 @@ use App\Models\Consumable; use App\Models\User; use Carbon\Carbon; use Illuminate\Http\Request; +use Illuminate\Support\Collection; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Password; @@ -218,21 +219,19 @@ class BulkUsersController extends Controller } $users = User::whereIn('id', $user_raw_array)->get(); - $assets = Asset::whereIn('assigned_to', $user_raw_array)->where('assigned_type', \App\Models\User::class)->get(); - $accessories = DB::table('accessories_checkout')->whereIn('assigned_to', $user_raw_array)->get(); + $assets = Asset::whereIn('assigned_to', $user_raw_array)->where('assigned_type', User::class)->get(); + $accessoryUserRows = DB::table('accessories_checkout')->where('assigned_type', User::class)->whereIn('assigned_to', $user_raw_array)->get(); $licenses = DB::table('license_seats')->whereIn('assigned_to', $user_raw_array)->get(); - $consumables = DB::table('consumables_users')->whereIn('assigned_to', $user_raw_array)->get(); + $consumableUserRows = DB::table('consumables_users')->whereIn('assigned_to', $user_raw_array)->get(); if ((($assets->count() > 0) && ((!$request->filled('status_id')) || ($request->input('status_id') == '')))) { return redirect()->route('users.index')->with('error', 'No status selected'); } - $this->logItemCheckinAndDelete($assets, Asset::class); - $this->logItemCheckinAndDelete($accessories, Accessory::class); + $this->logAccessoriesCheckin($accessoryUserRows); $this->logItemCheckinAndDelete($licenses, License::class); - $this->logItemCheckinAndDelete($consumables, Consumable::class); - + $this->logConsumablesCheckin($consumableUserRows); Asset::whereIn('id', $assets->pluck('id'))->update([ 'status_id' => e(request('status_id')), @@ -241,19 +240,14 @@ class BulkUsersController extends Controller 'expected_checkin' => null, ]); - LicenseSeat::whereIn('id', $licenses->pluck('id'))->update(['assigned_to' => null]); - ConsumableAssignment::whereIn('id', $consumables->pluck('id'))->delete(); - + ConsumableAssignment::whereIn('id', $consumableUserRows->pluck('id'))->delete(); foreach ($users as $user) { - - $user->consumables()->sync([]); $user->accessories()->sync([]); if ($request->input('delete_user')=='1') { $user->delete(); } - } $msg = trans('general.bulk_checkin_success'); @@ -279,7 +273,7 @@ class BulkUsersController extends Controller if ($itemType == License::class){ $item_id = $item->license_id; } - + $logAction->item_id = $item_id; // We can't rely on get_class here because the licenses/accessories fetched above are not eloquent models, but simply arrays. $logAction->item_type = $itemType; @@ -291,6 +285,34 @@ class BulkUsersController extends Controller } } + private function logAccessoriesCheckin(Collection $accessoryUserRows): void + { + foreach ($accessoryUserRows as $accessoryUserRow) { + $logAction = new Actionlog(); + $logAction->item_id = $accessoryUserRow->accessory_id; + $logAction->item_type = Accessory::class; + $logAction->target_id = $accessoryUserRow->assigned_to; + $logAction->target_type = User::class; + $logAction->user_id = Auth::id(); + $logAction->note = 'Bulk checkin items'; + $logAction->logaction('checkin from'); + } + } + + private function logConsumablesCheckin(Collection $consumableUserRows): void + { + foreach ($consumableUserRows as $consumableUserRow) { + $logAction = new Actionlog(); + $logAction->item_id = $consumableUserRow->consumable_id; + $logAction->item_type = Consumable::class; + $logAction->target_id = $consumableUserRow->assigned_to; + $logAction->target_type = User::class; + $logAction->user_id = Auth::id(); + $logAction->note = 'Bulk checkin items'; + $logAction->logaction('checkin from'); + } + } + /** * Save bulk-edited users * diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 73358454d..79027547b 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -48,6 +48,7 @@ class Kernel extends HttpKernel 'api' => [ 'auth:api', + \App\Http\Middleware\CheckLocale::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ]; diff --git a/app/Http/Requests/Traits/MayContainCustomFields.php b/app/Http/Requests/Traits/MayContainCustomFields.php index 50b239b60..9a7f85e3a 100644 --- a/app/Http/Requests/Traits/MayContainCustomFields.php +++ b/app/Http/Requests/Traits/MayContainCustomFields.php @@ -15,8 +15,7 @@ trait MayContainCustomFields $asset_model = AssetModel::find($this->model_id); } if ($this->method() == 'PATCH' || $this->method() == 'PUT') { - // this is dependent on the asset update request PR - $asset_model = $this->asset; + $asset_model = $this->asset->model; } // collect the custom fields in the request $validator->after(function ($validator) use ($asset_model) { @@ -25,7 +24,7 @@ trait MayContainCustomFields }); // if there are custom fields, find the one's that don't exist on the model's fieldset and add an error to the validator's error bag if (count($request_fields) > 0) { - $request_fields->diff($asset_model->fieldset->fields->pluck('db_column')) + $request_fields->diff($asset_model?->fieldset?->fields?->pluck('db_column')) ->each(function ($request_field_name) use ($request_fields, $validator) { if (CustomField::where('db_column', $request_field_name)->exists()) { $validator->errors()->add($request_field_name, trans('validation.custom.custom_field_not_found_on_model')); diff --git a/app/Http/Requests/UpdateAssetRequest.php b/app/Http/Requests/UpdateAssetRequest.php index cc23a65c4..a749e5816 100644 --- a/app/Http/Requests/UpdateAssetRequest.php +++ b/app/Http/Requests/UpdateAssetRequest.php @@ -2,12 +2,14 @@ namespace App\Http\Requests; +use App\Http\Requests\Traits\MayContainCustomFields; use App\Models\Asset; use Illuminate\Support\Facades\Gate; use Illuminate\Validation\Rule; class UpdateAssetRequest extends ImageUploadRequest { + use MayContainCustomFields; /** * Determine if the user is authorized to make this request. * diff --git a/app/Http/Traits/TwoColumnUniqueUndeletedTrait.php b/app/Http/Traits/TwoColumnUniqueUndeletedTrait.php index 4aae02bfb..0cf0edb45 100644 --- a/app/Http/Traits/TwoColumnUniqueUndeletedTrait.php +++ b/app/Http/Traits/TwoColumnUniqueUndeletedTrait.php @@ -11,15 +11,17 @@ trait TwoColumnUniqueUndeletedTrait * @param string $field * @return string */ - protected function prepareTwoColumnUniqueUndeletedRule($parameters, $field) + protected function prepareTwoColumnUniqueUndeletedRule($parameters) { $column = $parameters[0]; $value = $this->{$parameters[0]}; + // This is an existing model we're updating so ignore the current ID ($this->getKey()) if ($this->exists) { return 'two_column_unique_undeleted:'.$this->table.','.$this->getKey().','.$column.','.$value; } + // This is a new record, so we can ignore the current ID return 'two_column_unique_undeleted:'.$this->table.',0,'.$column.','.$value; } } diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php index d3a19929e..17693fccf 100644 --- a/app/Http/Transformers/AssetsTransformer.php +++ b/app/Http/Transformers/AssetsTransformer.php @@ -86,7 +86,7 @@ class AssetsTransformer 'next_audit_date' => Helper::getFormattedDateObject($asset->next_audit_date, 'date'), 'deleted_at' => Helper::getFormattedDateObject($asset->deleted_at, 'datetime'), 'purchase_date' => Helper::getFormattedDateObject($asset->purchase_date, 'date'), - 'age' => $asset->purchase_date ? $asset->purchase_date->diffForHumans() : '', + 'age' => $asset->purchase_date ? $asset->purchase_date->locale(app()->getLocale())->diffForHumans() : '', 'last_checkout' => Helper::getFormattedDateObject($asset->last_checkout, 'datetime'), 'last_checkin' => Helper::getFormattedDateObject($asset->last_checkin, 'datetime'), 'expected_checkin' => Helper::getFormattedDateObject($asset->expected_checkin, 'date'), diff --git a/app/Http/Transformers/DepreciationsTransformer.php b/app/Http/Transformers/DepreciationsTransformer.php index 78a01b4c1..87e2ddaca 100644 --- a/app/Http/Transformers/DepreciationsTransformer.php +++ b/app/Http/Transformers/DepreciationsTransformer.php @@ -7,6 +7,7 @@ use App\Models\Depreciable; use App\Models\Depreciation; use Illuminate\Support\Facades\Gate; use Illuminate\Database\Eloquent\Collection; +use Illuminate\Support\Facades\Log; class DepreciationsTransformer { @@ -26,7 +27,7 @@ class DepreciationsTransformer 'id' => (int) $depreciation->id, 'name' => e($depreciation->name), 'months' => $depreciation->months.' '.trans('general.months'), - 'depreciation_min' => $depreciation->depreciation_min, + 'depreciation_min' => $depreciation->depreciation_type === 'percent' ? $depreciation->depreciation_min.'%' : $depreciation->depreciation_min, 'created_at' => Helper::getFormattedDateObject($depreciation->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($depreciation->updated_at, 'datetime') ]; diff --git a/app/Importer/AssetImporter.php b/app/Importer/AssetImporter.php index 4bb887bcd..781a6311f 100644 --- a/app/Importer/AssetImporter.php +++ b/app/Importer/AssetImporter.php @@ -71,8 +71,10 @@ class AssetImporter extends ItemImporter $asset = Asset::where(['asset_tag'=> (string) $asset_tag])->first(); if ($asset) { if (! $this->updating) { - $this->log('A matching Asset '.$asset_tag.' already exists'); - return; + $exists_error = trans('general.import_asset_tag_exists', ['asset_tag' => $asset_tag]); + $this->log($exists_error); + $this->addErrorToBag($asset, 'asset_tag', $exists_error); + return $exists_error; } $this->log('Updating Asset'); diff --git a/app/Importer/Importer.php b/app/Importer/Importer.php index 973872350..c2214ef37 100644 --- a/app/Importer/Importer.php +++ b/app/Importer/Importer.php @@ -281,6 +281,13 @@ abstract class Importer } } + protected function addErrorToBag($item, $field, $error_message) + { + if ($this->errorCallback) { + call_user_func($this->errorCallback, $item, $field, [$field => [$error_message]]); + } + } + /** * Finds the user matching given data, or creates a new one if there is no match. * This is NOT used by the User Import, only for Asset/Accessory/etc where diff --git a/app/Importer/ItemImporter.php b/app/Importer/ItemImporter.php index ee680413d..29197ca5d 100644 --- a/app/Importer/ItemImporter.php +++ b/app/Importer/ItemImporter.php @@ -196,64 +196,77 @@ class ItemImporter extends Importer { $condition = array(); $asset_model_name = $this->findCsvMatch($row, 'asset_model'); + $asset_model_category = $this->findCsvMatch($row, 'category'); $asset_modelNumber = $this->findCsvMatch($row, 'model_number'); + // TODO: At the moment, this means we can't update the model number if the model name stays the same. if (! $this->shouldUpdateField($asset_model_name)) { return; } + if ((empty($asset_model_name)) && (! empty($asset_modelNumber))) { $asset_model_name = $asset_modelNumber; } elseif ((empty($asset_model_name)) && (empty($asset_modelNumber))) { $asset_model_name = 'Unknown'; } - if ((!empty($asset_model_name)) && (empty($asset_modelNumber))) { - $condition[] = ['name', '=', $asset_model_name]; - } elseif ((!empty($asset_model_name)) && (!empty($asset_modelNumber))) { - $condition[] = ['name', '=', $asset_model_name]; - $condition[] = ['model_number', '=', $asset_modelNumber]; + $asset_model = AssetModel::select('id'); + + if (!empty($asset_model_name)) { + $asset_model = $asset_model->where('name', '=', $asset_model_name); + + if (!empty($asset_modelNumber)) { + $asset_model = $asset_model->where('model_number', '=', $asset_modelNumber); + } } $editingModel = $this->updating; - $asset_model = AssetModel::where($condition)->first(); + $asset_model = $asset_model->first(); if ($asset_model) { + if (! $this->updating) { $this->log('A matching model already exists, returning it.'); - return $asset_model->id; } + $this->log('Matching Model found, updating it.'); $item = $this->sanitizeItemForStoring($asset_model, $editingModel); $item['name'] = $asset_model_name; $item['notes'] = $this->findCsvMatch($row, 'model_notes'); - if(!empty($asset_modelNumber)){ + if (!empty($asset_modelNumber)){ $item['model_number'] = $asset_modelNumber; } $asset_model->update($item); $asset_model->save(); $this->log('Asset Model Updated'); - + return $asset_model->id; - } - $this->log('No Matching Model, Creating a new one'); + } + + $this->log('No Matching Model, Creating a new one'); $asset_model = new AssetModel(); $item = $this->sanitizeItemForStoring($asset_model, $editingModel); $item['name'] = $asset_model_name; $item['model_number'] = $asset_modelNumber; $item['notes'] = $this->findCsvMatch($row, 'model_notes'); + $item['category_id'] = $this->createOrFetchCategory($asset_model_category); $asset_model->fill($item); + //$asset_model = AssetModel::firstOrNew($item); $item = null; + + if ($asset_model->save()) { $this->log('Asset Model '.$asset_model_name.' with model number '.$asset_modelNumber.' was created'); return $asset_model->id; } + $this->log('Asset Model Errors: '.$asset_model->getErrors()); $this->logError($asset_model, 'Asset Model "'.$asset_model_name.'"'); return null; diff --git a/app/Listeners/CheckoutableListener.php b/app/Listeners/CheckoutableListener.php index 63e552233..5968632fd 100644 --- a/app/Listeners/CheckoutableListener.php +++ b/app/Listeners/CheckoutableListener.php @@ -137,7 +137,11 @@ class CheckoutableListener */ private function getCheckoutAcceptance($event) { - if (! $event->checkoutable->requireAcceptance()) { + $checkedOutToType = get_class($event->checkedOutTo); + if ($checkedOutToType != "App\Models\User") { + return null; + } + if (!$event->checkoutable->requireAcceptance()) { return null; } diff --git a/app/Livewire/Importer.php b/app/Livewire/Importer.php index e164af36d..32dd7912f 100644 --- a/app/Livewire/Importer.php +++ b/app/Livewire/Importer.php @@ -374,6 +374,12 @@ class Importer extends Component 'model name', 'model', ], + 'eol_date' => + [ + 'eol', + 'eol date', + 'asset eol date', + ], 'gravatar' => [ 'gravatar', diff --git a/app/Models/Actionlog.php b/app/Models/Actionlog.php index 33e9707f2..7f3b46e46 100755 --- a/app/Models/Actionlog.php +++ b/app/Models/Actionlog.php @@ -7,7 +7,6 @@ use App\Presenters\Presentable; use Carbon\Carbon; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\SoftDeletes; -use Illuminate\Support\Facades\Auth; /** * Model for the Actionlog (the table that keeps a historical log of @@ -17,10 +16,12 @@ use Illuminate\Support\Facades\Auth; */ class Actionlog extends SnipeModel { + use CompanyableTrait; use HasFactory; // This is to manually set the source (via setActionSource()) for determineActionSource() protected ?string $source = null; + protected $with = ['admin']; protected $presenter = \App\Presenters\ActionlogPresenter::class; use SoftDeletes; @@ -372,4 +373,9 @@ class Actionlog extends SnipeModel { $this->source = $source; } + + public function scopeOrderAdmin($query, $order) + { + return $query->leftJoin('users as admin_sort', 'action_logs.user_id', '=', 'admin_sort.id')->select('action_logs.*')->orderBy('admin_sort.first_name', $order)->orderBy('admin_sort.last_name', $order); + } } diff --git a/app/Models/Asset.php b/app/Models/Asset.php index cddca9802..98d7275b1 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -2,7 +2,6 @@ namespace App\Models; -use App\Events\AssetCheckedOut; use App\Events\CheckoutableCheckedOut; use App\Exceptions\CheckoutNotAllowed; use App\Helpers\Helper; @@ -31,6 +30,7 @@ class Asset extends Depreciable { protected $presenter = AssetPresenter::class; + protected $with = ['model', 'admin']; use CompanyableTrait; use HasFactory, Loggable, Requestable, Presentable, SoftDeletes, ValidatingTrait, UniqueUndeletedTrait; @@ -716,7 +716,7 @@ class Asset extends Depreciable * @since [v1.0] * @return \Illuminate\Database\Eloquent\Relations\Relation */ - public function adminuser() + public function admin() { return $this->belongsTo(\App\Models\User::class, 'user_id'); } @@ -1315,7 +1315,7 @@ class Asset extends Depreciable public function scopeDueForCheckin($query, $settings) { - $interval = $settings->audit_warning_days ?? 0; + $interval = $settings->due_checkin_days ?? 0; $today = Carbon::now(); $interval_date = $today->copy()->addDays($interval)->format('Y-m-d'); diff --git a/app/Models/AssetModel.php b/app/Models/AssetModel.php index 07e7a5e24..3c023507d 100755 --- a/app/Models/AssetModel.php +++ b/app/Models/AssetModel.php @@ -10,6 +10,7 @@ use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Storage; use Watson\Validating\ValidatingTrait; use \App\Presenters\AssetModelPresenter; +use App\Http\Traits\TwoColumnUniqueUndeletedTrait; /** * Model for Asset Models. Asset Models contain higher level @@ -21,21 +22,8 @@ class AssetModel extends SnipeModel { use HasFactory; use SoftDeletes; - protected $presenter = AssetModelPresenter::class; use Loggable, Requestable, Presentable; - - protected $table = 'models'; - protected $hidden = ['user_id', 'deleted_at']; - - // Declare the rules for the model validation - protected $rules = [ - 'name' => 'required|min:1|max:255', - 'model_number' => 'max:255|nullable', - 'min_amt' => 'integer|min:0|nullable', - 'category_id' => 'required|integer|exists:categories,id', - 'manufacturer_id' => 'integer|exists:manufacturers,id|nullable', - 'eol' => 'integer:min:0|max:240|nullable', - ]; + use TwoColumnUniqueUndeletedTrait; /** * Whether the model should inject its identifier to the unique @@ -44,8 +32,26 @@ class AssetModel extends SnipeModel * * @var bool */ + protected $injectUniqueIdentifier = true; use ValidatingTrait; + protected $table = 'models'; + protected $hidden = ['user_id', 'deleted_at']; + protected $presenter = AssetModelPresenter::class; + + // Declare the rules for the model validation + + + protected $rules = [ + 'name' => 'string|required|min:1|max:255|two_column_unique_undeleted:model_number', + 'model_number' => 'string|max:255|nullable|two_column_unique_undeleted:name', + 'min_amt' => 'integer|min:0|nullable', + 'category_id' => 'required|integer|exists:categories,id', + 'manufacturer_id' => 'integer|exists:manufacturers,id|nullable', + 'eol' => 'integer:min:0|max:240|nullable', + ]; + + /** * The attributes that are mass assignable. @@ -86,6 +92,9 @@ class AssetModel extends SnipeModel 'manufacturer' => ['name'], ]; + + + /** * Establishes the model -> assets relationship * diff --git a/app/Models/Component.php b/app/Models/Component.php index 671b0101c..536e06d0a 100644 --- a/app/Models/Component.php +++ b/app/Models/Component.php @@ -205,7 +205,11 @@ class Component extends SnipeModel public function numCheckedOut() { $checkedout = 0; - foreach ($this->assets as $checkout) { + + // In case there are elements checked out to assets that belong to a different company + // than this asset and full multiple company support is on we'll remove the global scope, + // so they are included in the count. + foreach ($this->assets()->withoutGlobalScope(new CompanyableScope)->get() as $checkout) { $checkedout += $checkout->pivot->assigned_qty; } diff --git a/app/Models/Depreciable.php b/app/Models/Depreciable.php index 6139cda08..0c513a3d3 100644 --- a/app/Models/Depreciable.php +++ b/app/Models/Depreciable.php @@ -76,9 +76,9 @@ class Depreciable extends SnipeModel if ($months_passed >= $this->get_depreciation()->months){ //if there is a floor use it - if(!$this->get_depreciation()->depreciation_min == null) { + if($this->get_depreciation()->depreciation_min) { - $current_value = $this->get_depreciation()->depreciation_min; + $current_value = $this->calculateDepreciation(); }else{ $current_value = 0; @@ -86,7 +86,7 @@ class Depreciable extends SnipeModel } else { // The equation here is (Purchase_Cost-Floor_min)*(Months_passed/Months_til_depreciated) - $current_value = round(($this->purchase_cost-($this->purchase_cost - ($this->get_depreciation()->depreciation_min)) * ($months_passed / $this->get_depreciation()->months)), 2); + $current_value = round(($this->purchase_cost-($this->purchase_cost - ($this->calculateDepreciation())) * ($months_passed / $this->get_depreciation()->months)), 2); } @@ -95,7 +95,7 @@ class Depreciable extends SnipeModel public function getMonthlyDepreciation(){ - return ($this->purchase_cost-$this->get_depreciation()->depreciation_min)/$this->get_depreciation()->months; + return ($this->purchase_cost-$this->calculateDepreciation())/$this->get_depreciation()->months; } @@ -191,4 +191,16 @@ class Depreciable extends SnipeModel { return new \DateTime($time); } + + private function calculateDepreciation() + { + if($this->get_depreciation()->depreciation_type === 'percent') { + $depreciation_percent= $this->get_depreciation()->depreciation_min / 100; + $depreciation_min= $this->purchase_cost * $depreciation_percent; + return $depreciation_min; + } + + $depreciation_min = $this->get_depreciation()->depreciation_min; + return $depreciation_min; + } } diff --git a/app/Models/Location.php b/app/Models/Location.php index 67131902a..f08a51a98 100755 --- a/app/Models/Location.php +++ b/app/Models/Location.php @@ -108,10 +108,11 @@ class Location extends SnipeModel { return Gate::allows('delete', $this) - && ($this->assets_count === 0) - && ($this->assigned_assets_count === 0) - && ($this->children_count === 0) - && ($this->users_count === 0); + && ($this->assets_count == 0) + && ($this->assigned_assets_count == 0) + && ($this->children_count == 0) + && ($this->accessories_count == 0) + && ($this->users_count == 0); } /** diff --git a/app/Models/Setting.php b/app/Models/Setting.php index 1a25735e0..d775be81c 100755 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -74,7 +74,10 @@ class Setting extends Model 'login_remote_user_header_name' => 'string|nullable', 'thumbnail_max_h' => 'numeric|max:500|min:25', 'pwd_secure_min' => 'numeric|required|min:8', + 'alert_threshold' => 'numeric|nullable', + 'alert_interval' => 'numeric|nullable', 'audit_warning_days' => 'numeric|nullable', + 'due_checkin_days' => 'numeric|nullable', 'audit_interval' => 'numeric|nullable', 'custom_forgot_pass_url' => 'url|nullable', 'privacy_policy_link' => 'nullable|url', diff --git a/app/Notifications/AcceptanceAssetAcceptedNotification.php b/app/Notifications/AcceptanceAssetAcceptedNotification.php index db1555b57..7798dbc0d 100644 --- a/app/Notifications/AcceptanceAssetAcceptedNotification.php +++ b/app/Notifications/AcceptanceAssetAcceptedNotification.php @@ -24,6 +24,7 @@ class AcceptanceAssetAcceptedNotification extends Notification $this->item_tag = $params['item_tag']; $this->item_model = $params['item_model']; $this->item_serial = $params['item_serial']; + $this->item_status = $params['item_status']; $this->accepted_date = Helper::getFormattedDateObject($params['accepted_date'], 'date', false); $this->assigned_to = $params['assigned_to']; $this->note = $params['note']; @@ -65,6 +66,7 @@ class AcceptanceAssetAcceptedNotification extends Notification 'item_tag' => $this->item_tag, 'item_model' => $this->item_model, 'item_serial' => $this->item_serial, + 'item_status' => $this->item_status, 'note' => $this->note, 'accepted_date' => $this->accepted_date, 'assigned_to' => $this->assigned_to, diff --git a/app/Notifications/AcceptanceAssetDeclinedNotification.php b/app/Notifications/AcceptanceAssetDeclinedNotification.php index abdfbbf0c..0a9d6c211 100644 --- a/app/Notifications/AcceptanceAssetDeclinedNotification.php +++ b/app/Notifications/AcceptanceAssetDeclinedNotification.php @@ -24,6 +24,7 @@ class AcceptanceAssetDeclinedNotification extends Notification $this->item_tag = $params['item_tag']; $this->item_model = $params['item_model']; $this->item_serial = $params['item_serial']; + $this->item_status = $params['item_status']; $this->declined_date = Helper::getFormattedDateObject($params['declined_date'], 'date', false); $this->note = $params['note']; $this->assigned_to = $params['assigned_to']; @@ -63,6 +64,7 @@ class AcceptanceAssetDeclinedNotification extends Notification 'item_tag' => $this->item_tag, 'item_model' => $this->item_model, 'item_serial' => $this->item_serial, + 'item_status' => $this->item_status, 'note' => $this->note, 'declined_date' => $this->declined_date, 'assigned_to' => $this->assigned_to, diff --git a/app/Notifications/CheckinAssetNotification.php b/app/Notifications/CheckinAssetNotification.php index 54b96777f..77cd6d9b5 100644 --- a/app/Notifications/CheckinAssetNotification.php +++ b/app/Notifications/CheckinAssetNotification.php @@ -162,6 +162,7 @@ class CheckinAssetNotification extends Notification $message = (new MailMessage)->markdown('notifications.markdown.checkin-asset', [ 'item' => $this->item, + 'status' => $this->item->assetstatus?->name, 'admin' => $this->admin, 'note' => $this->note, 'target' => $this->target, diff --git a/app/Notifications/CheckoutAssetNotification.php b/app/Notifications/CheckoutAssetNotification.php index 1c8c901b5..5ebde7e4f 100644 --- a/app/Notifications/CheckoutAssetNotification.php +++ b/app/Notifications/CheckoutAssetNotification.php @@ -209,6 +209,7 @@ public function toGoogleChat() [ 'item' => $this->item, 'admin' => $this->admin, + 'status' => $this->item->assetstatus?->name, 'note' => $this->note, 'target' => $this->target, 'fields' => $fields, diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index a69a6cadf..2875dc286 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -230,7 +230,8 @@ class AuthServiceProvider extends ServiceProvider || $user->can('update', Accessory::class) || $user->can('create', Accessory::class) || $user->can('update', User::class) - || $user->can('create', User::class); + || $user->can('create', User::class) + || ($user->hasAccess('reports.view')); }); diff --git a/app/Providers/ValidationServiceProvider.php b/app/Providers/ValidationServiceProvider.php index 041aaad98..1f3abca8a 100644 --- a/app/Providers/ValidationServiceProvider.php +++ b/app/Providers/ValidationServiceProvider.php @@ -6,10 +6,7 @@ use App\Models\CustomField; use App\Models\Department; use App\Models\Setting; use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Crypt; -use Illuminate\Support\Facades\Log; use Illuminate\Support\ServiceProvider; -use Illuminate\Validation\Rule; use Illuminate\Support\Facades\Validator; /** @@ -91,18 +88,26 @@ class ValidationServiceProvider extends ServiceProvider * * $parameters[0] - the name of the first table we're looking at * $parameters[1] - the ID (this will be 0 on new creations) - * $parameters[2] - the name of the second table we're looking at + * $parameters[2] - the name of the second field we're looking at * $parameters[3] - the value that the request is passing for the second table we're * checking for uniqueness across * */ Validator::extend('two_column_unique_undeleted', function ($attribute, $value, $parameters, $validator) { + if (count($parameters)) { + $count = DB::table($parameters[0]) - ->select('id')->where($attribute, '=', $value) - ->whereNull('deleted_at') - ->where('id', '!=', $parameters[1]) - ->where($parameters[2], $parameters[3])->count(); + ->select('id') + ->where($attribute, '=', $value) + ->where('id', '!=', $parameters[1]); + + if ($parameters[3]!='') { + $count = $count->where($parameters[2], $parameters[3]); + } + + $count = $count->whereNull('deleted_at') + ->count(); return $count < 1; } diff --git a/app/Services/Saml.php b/app/Services/Saml.php index 820286801..860ec7617 100644 --- a/app/Services/Saml.php +++ b/app/Services/Saml.php @@ -337,12 +337,12 @@ class Saml /** * Get a setting. * - * @author Johnson Yi - * * @param string|array|int $key * @param mixed $default * - * @return void + * @return mixed + * @author Johnson Yi + * */ public function getSetting($key, $default = null) { diff --git a/composer.json b/composer.json index 9a76301e2..a72d80839 100644 --- a/composer.json +++ b/composer.json @@ -52,7 +52,7 @@ "livewire/livewire": "^3.5", "neitanod/forceutf8": "^2.0", "nesbot/carbon": "^2.32", - "nunomaduro/collision": "^6.1", + "nunomaduro/collision": "^7.0", "okvpn/clock-lts": "^1.0", "onelogin/php-saml": "^3.4", "paragonie/constant_time_encoding": "^2.3", @@ -74,13 +74,13 @@ "ext-exif": "*" }, "require-dev": { - "brianium/paratest": "^v6.4.4", + "brianium/paratest": "^7.0", "fakerphp/faker": "^1.16", "larastan/larastan": "^2.9", "mockery/mockery": "^1.4", - "nunomaduro/phpinsights": "^2.7", + "nunomaduro/phpinsights": "^2.11", "php-mock/php-mock-phpunit": "^2.10", - "phpunit/phpunit": "^9.6.19", + "phpunit/phpunit": "^10.0", "squizlabs/php_codesniffer": "^3.5", "symfony/css-selector": "^4.4", "symfony/dom-crawler": "^4.4", diff --git a/composer.lock b/composer.lock index ae6675b71..715070df0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "51e716db4ccd70bf942062789f7303ad", + "content-hash": "3819ab4ef72eb77fabe494c0e746b83b", "packages": [ { "name": "alek13/slack", @@ -5184,38 +5184,43 @@ }, { "name": "nunomaduro/collision", - "version": "v6.4.0", + "version": "v7.10.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015" + "reference": "49ec67fa7b002712da8526678abd651c09f375b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f05978827b9343cba381ca05b8c7deee346b6015", - "reference": "f05978827b9343cba381ca05b8c7deee346b6015", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2", "shasum": "" }, "require": { - "filp/whoops": "^2.14.5", - "php": "^8.0.0", - "symfony/console": "^6.0.2" + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" + }, + "conflict": { + "laravel/framework": ">=11.0.0" }, "require-dev": { - "brianium/paratest": "^6.4.1", - "laravel/framework": "^9.26.1", - "laravel/pint": "^1.1.1", - "nunomaduro/larastan": "^1.0.3", - "nunomaduro/mock-final-classes": "^1.1.0", - "orchestra/testbench": "^7.7", - "phpunit/phpunit": "^9.5.23", - "spatie/ignition": "^1.4.1" + "brianium/paratest": "^7.3.0", + "laravel/framework": "^10.28.0", + "laravel/pint": "^1.13.3", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.13.0", + "pestphp/pest": "^2.23.2", + "phpunit/phpunit": "^10.4.1", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-develop": "6.x-dev" - }, "laravel": { "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" @@ -5223,6 +5228,9 @@ } }, "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], "psr-4": { "NunoMaduro\\Collision\\": "src/" } @@ -5268,7 +5276,7 @@ "type": "patreon" } ], - "time": "2023-01-03T12:54:54+00:00" + "time": "2023-10-11T15:45:01+00:00" }, { "name": "nunomaduro/termwind", @@ -7524,30 +7532,32 @@ }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -7586,7 +7596,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -7594,33 +7605,33 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/diff", - "version": "4.0.6", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -7652,7 +7663,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -7660,34 +7672,34 @@ "type": "github" } ], - "time": "2024-03-02T06:30:58+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.6", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -7729,7 +7741,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -7737,32 +7750,32 @@ "type": "github" } ], - "time": "2024-03-02T06:33:00+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -7792,7 +7805,7 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -7800,7 +7813,7 @@ "type": "github" } ], - "time": "2023-02-03T06:07:39+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { "name": "spatie/backtrace", @@ -8541,16 +8554,16 @@ }, { "name": "symfony/console", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91" + "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91", - "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91", + "url": "https://api.github.com/repos/symfony/console/zipball/504974cbe43d05f83b201d6498c206f16fc0cdbc", + "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc", "shasum": "" }, "require": { @@ -8615,7 +8628,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.8" + "source": "https://github.com/symfony/console/tree/v6.4.10" }, "funding": [ { @@ -8631,7 +8644,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-26T12:30:32+00:00" }, { "name": "symfony/css-selector", @@ -10445,16 +10458,16 @@ }, { "name": "symfony/string", - "version": "v6.4.8", + "version": "v6.4.10", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d" + "reference": "ccf9b30251719567bfd46494138327522b9a9446" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d", - "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d", + "url": "https://api.github.com/repos/symfony/string/zipball/ccf9b30251719567bfd46494138327522b9a9446", + "reference": "ccf9b30251719567bfd46494138327522b9a9446", "shasum": "" }, "require": { @@ -10511,7 +10524,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.8" + "source": "https://github.com/symfony/string/tree/v6.4.10" }, "funding": [ { @@ -10527,7 +10540,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-07-22T10:21:14+00:00" }, { "name": "symfony/translation", @@ -11846,16 +11859,16 @@ }, { "name": "brianium/paratest", - "version": "v6.11.1", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "78e297a969049ca7cc370e80ff5e102921ef39a3" + "reference": "551f46f52a93177d873f3be08a1649ae886b4a30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/78e297a969049ca7cc370e80ff5e102921ef39a3", - "reference": "78e297a969049ca7cc370e80ff5e102921ef39a3", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/551f46f52a93177d873f3be08a1649ae886b4a30", + "reference": "551f46f52a93177d873f3be08a1649ae886b4a30", "shasum": "" }, "require": { @@ -11863,25 +11876,28 @@ "ext-pcre": "*", "ext-reflection": "*", "ext-simplexml": "*", - "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", + "fidry/cpu-core-counter": "^0.5.1 || ^1.0.0", "jean85/pretty-package-versions": "^2.0.5", - "php": "^7.3 || ^8.0", - "phpunit/php-code-coverage": "^9.2.25", - "phpunit/php-file-iterator": "^3.0.6", - "phpunit/php-timer": "^5.0.3", - "phpunit/phpunit": "^9.6.4", - "sebastian/environment": "^5.1.5", - "symfony/console": "^5.4.28 || ^6.3.4 || ^7.0.0", - "symfony/process": "^5.4.28 || ^6.3.4 || ^7.0.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.7", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-timer": "^6.0", + "phpunit/phpunit": "^10.4.2", + "sebastian/environment": "^6.0.1", + "symfony/console": "^6.3.4 || ^7.0.0", + "symfony/process": "^6.3.4 || ^7.0.0" }, "require-dev": { "doctrine/coding-standard": "^12.0.0", "ext-pcov": "*", "ext-posix": "*", "infection/infection": "^0.27.6", + "phpstan/phpstan": "^1.10.40", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", "squizlabs/php_codesniffer": "^3.7.2", - "symfony/filesystem": "^5.4.25 || ^6.3.1 || ^7.0.0", - "vimeo/psalm": "^5.7.7" + "symfony/filesystem": "^6.3.1 || ^7.0.0" }, "bin": [ "bin/paratest", @@ -11922,7 +11938,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v6.11.1" + "source": "https://github.com/paratestphp/paratest/tree/v7.3.1" }, "funding": [ { @@ -11934,7 +11950,7 @@ "type": "paypal" } ], - "time": "2024-03-13T06:54:29+00:00" + "time": "2023-10-31T09:24:17+00:00" }, { "name": "clue/ndjson-react", @@ -13971,16 +13987,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.31", + "version": "10.1.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" + "reference": "5da8b1728acd1e6ffdf2ff32ffbdfd04307f26ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/5da8b1728acd1e6ffdf2ff32ffbdfd04307f26ae", + "reference": "5da8b1728acd1e6ffdf2ff32ffbdfd04307f26ae", "shasum": "" }, "require": { @@ -13988,18 +14004,18 @@ "ext-libxml": "*", "ext-xmlwriter": "*", "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -14008,7 +14024,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -14037,7 +14053,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.15" }, "funding": [ { @@ -14045,32 +14061,32 @@ "type": "github" } ], - "time": "2024-03-02T06:37:42+00:00" + "time": "2024-06-29T08:25:15+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -14097,7 +14113,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -14105,28 +14122,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-pcntl": "*" @@ -14134,7 +14151,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -14160,7 +14177,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -14168,32 +14185,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -14219,7 +14236,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -14227,32 +14245,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -14278,7 +14296,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -14286,54 +14304,52 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "9.6.19", + "version": "10.5.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8" + "reference": "8e9e80872b4e8064401788ee8a32d40b4455318f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8e9e80872b4e8064401788ee8a32d40b4455318f", + "reference": "8e9e80872b4e8064401788ee8a32d40b4455318f", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.28", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", - "sebastian/version": "^3.0.2" + "myclabs/deep-copy": "^1.12.0", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.15", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.1", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -14341,7 +14357,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -14373,7 +14389,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.29" }, "funding": [ { @@ -14389,7 +14405,7 @@ "type": "tidelift" } ], - "time": "2024-04-05T04:35:58+00:00" + "time": "2024-07-30T11:08:00+00:00" }, { "name": "react/cache", @@ -14923,28 +14939,28 @@ }, { "name": "sebastian/cli-parser", - "version": "1.0.2", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -14967,7 +14983,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -14975,32 +14992,32 @@ "type": "github" } ], - "time": "2024-03-02T06:27:43+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", - "version": "1.0.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -15023,7 +15040,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -15031,435 +15048,27 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-22T06:19:30+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-02-03T06:03:51+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.7", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T06:35:11+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-12-22T06:20:34+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { @@ -15482,10 +15091,11 @@ "email": "sebastian@phpunit.de" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -15493,32 +15103,386 @@ "type": "github" } ], - "time": "2024-03-14T16:00:52+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { - "name": "sebastian/type", - "version": "3.2.1", + "name": "sebastian/complexity", + "version": "3.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:37:17+00:00" + }, + { + "name": "sebastian/environment", + "version": "6.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-23T08:47:14+00:00" + }, + { + "name": "sebastian/global-state", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:19:19+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:38:20+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:08:32+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:06:18+00:00" + }, + { + "name": "sebastian/type", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" } }, "autoload": { @@ -15541,7 +15505,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -15549,29 +15513,29 @@ "type": "github" } ], - "time": "2023-02-03T06:13:03+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -15594,7 +15558,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -15602,7 +15566,7 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "slevomat/coding-standard", diff --git a/config/version.php b/config/version.php index f419bf1bd..e00f58b0b 100644 --- a/config/version.php +++ b/config/version.php @@ -1,10 +1,10 @@ 'v7.0.10', - 'full_app_version' => 'v7.0.10 - build 14684-gc2bcc2e2d', - 'build_version' => '14684', + 'app_version' => 'v7.0.11', + 'full_app_version' => 'v7.0.11 - build 14904-g6c0cf9447', + 'build_version' => '14904', 'prerelease_version' => '', - 'hash_version' => 'gc2bcc2e2d', - 'full_hash' => 'v7.0.10-311-gc2bcc2e2d', + 'hash_version' => 'g6c0cf9447', + 'full_hash' => 'v7.0.11-218-g6c0cf9447', 'branch' => 'develop', ); \ No newline at end of file diff --git a/database/migrations/2024_07_16_184145_add_deprecitation_type_to_depreciations_table.php b/database/migrations/2024_07_16_184145_add_deprecitation_type_to_depreciations_table.php new file mode 100644 index 000000000..1a5355f73 --- /dev/null +++ b/database/migrations/2024_07_16_184145_add_deprecitation_type_to_depreciations_table.php @@ -0,0 +1,28 @@ +string('depreciation_type')->after('depreciation_min')->default('amount'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('depreciations', function (Blueprint $table) { + $table->dropColumn('depreciation_type'); + }); + } +}; diff --git a/database/migrations/2024_08_06_175114_add_shortcuts_enabled_to_settings_table.php b/database/migrations/2024_08_06_175114_add_shortcuts_enabled_to_settings_table.php new file mode 100644 index 000000000..1d38c6b89 --- /dev/null +++ b/database/migrations/2024_08_06_175114_add_shortcuts_enabled_to_settings_table.php @@ -0,0 +1,27 @@ +boolean('shortcuts_enabled')->default(false); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('settings', function (Blueprint $table) { + $table->dropColumn('shortcuts_enabled'); + }); + } +}; diff --git a/database/migrations/2024_08_07_204014_add_play_sounds_to_profile.php b/database/migrations/2024_08_07_204014_add_play_sounds_to_profile.php new file mode 100644 index 000000000..a6e03fd69 --- /dev/null +++ b/database/migrations/2024_08_07_204014_add_play_sounds_to_profile.php @@ -0,0 +1,28 @@ +boolean('enable_sounds')->default(false); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('enable_sounds'); + }); + } +}; diff --git a/database/migrations/2024_08_15_111816_add_confetti_to_users.php b/database/migrations/2024_08_15_111816_add_confetti_to_users.php new file mode 100644 index 000000000..a3aa85d4f --- /dev/null +++ b/database/migrations/2024_08_15_111816_add_confetti_to_users.php @@ -0,0 +1,28 @@ +boolean('enable_confetti')->default(false); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('enable_confetti'); + }); + } +}; diff --git a/database/migrations/2024_08_16_104137_add_due_checkin_days_to_settings.php b/database/migrations/2024_08_16_104137_add_due_checkin_days_to_settings.php new file mode 100644 index 000000000..09314b88f --- /dev/null +++ b/database/migrations/2024_08_16_104137_add_due_checkin_days_to_settings.php @@ -0,0 +1,28 @@ +integer('due_checkin_days')->nullable()->default(null); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('settings', function (Blueprint $table) { + $table->dropColumn('due_checkin_days'); + }); + } +}; diff --git a/docker/entrypoint_alpine.sh b/docker/entrypoint_alpine.sh index c1a75b0cb..d9d6c8a9a 100644 --- a/docker/entrypoint_alpine.sh +++ b/docker/entrypoint_alpine.sh @@ -1,7 +1,48 @@ #!/bin/sh +# Cribbed from nextcloud docker official repo +# https://github.com/nextcloud/docker/blob/master/docker-entrypoint.sh +# usage: file_env VAR [DEFAULT] +# ie: file_env 'XYZ_DB_PASSWORD' 'example' +# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of +# "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature) +file_env() { + local var="$1" + local fileVar="${var}_FILE" + local def="${2:-}" + local varValue=$(env | grep -E "^${var}=" | sed -E -e "s/^${var}=//") + local fileVarValue=$(env | grep -E "^${fileVar}=" | sed -E -e "s/^${fileVar}=//") + if [ -n "${varValue}" ] && [ -n "${fileVarValue}" ]; then + echo >&2 "error: both $var and $fileVar are set (but are exclusive)" + exit 1 + fi + if [ -n "${varValue}" ]; then + export "$var"="${varValue}" + elif [ -n "${fileVarValue}" ]; then + export "$var"="$(cat "${fileVarValue}")" + elif [ -n "${def}" ]; then + export "$var"="$def" + fi + unset "$fileVar" +} + +# Add docker secrets support for the variables below: +file_env APP_KEY +file_env DB_HOST +file_env DB_PORT +file_env DB_DATABASE +file_env DB_USERNAME +file_env DB_PASSWORD +file_env REDIS_HOST +file_env REDIS_PASSWORD +file_env REDIS_PORT +file_env MAIL_HOST +file_env MAIL_PORT +file_env MAIL_USERNAME +file_env MAIL_PASSWORD + # fix key if needed -if [ -z "$APP_KEY" ] +if [ -z "$APP_KEY" -a -z "$APP_KEY_FILE" ] then echo "Please re-run this container with an environment variable \$APP_KEY" echo "An example APP_KEY you could use is: " diff --git a/docker/startup.sh b/docker/startup.sh index 62002a2ba..2f6be7b0f 100644 --- a/docker/startup.sh +++ b/docker/startup.sh @@ -1,7 +1,48 @@ #!/bin/bash +# Cribbed from nextcloud docker official repo +# https://github.com/nextcloud/docker/blob/master/docker-entrypoint.sh +# usage: file_env VAR [DEFAULT] +# ie: file_env 'XYZ_DB_PASSWORD' 'example' +# (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of +# "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature) +file_env() { + local var="$1" + local fileVar="${var}_FILE" + local def="${2:-}" + local varValue=$(env | grep -E "^${var}=" | sed -E -e "s/^${var}=//") + local fileVarValue=$(env | grep -E "^${fileVar}=" | sed -E -e "s/^${fileVar}=//") + if [ -n "${varValue}" ] && [ -n "${fileVarValue}" ]; then + echo >&2 "error: both $var and $fileVar are set (but are exclusive)" + exit 1 + fi + if [ -n "${varValue}" ]; then + export "$var"="${varValue}" + elif [ -n "${fileVarValue}" ]; then + export "$var"="$(cat "${fileVarValue}")" + elif [ -n "${def}" ]; then + export "$var"="$def" + fi + unset "$fileVar" +} + +# Add docker secrets support for the variables below: +file_env APP_KEY +file_env DB_HOST +file_env DB_PORT +file_env DB_DATABASE +file_env DB_USERNAME +file_env DB_PASSWORD +file_env REDIS_HOST +file_env REDIS_PASSWORD +file_env REDIS_PORT +file_env MAIL_HOST +file_env MAIL_PORT +file_env MAIL_USERNAME +file_env MAIL_PASSWORD + # fix key if needed -if [ -z "$APP_KEY" ] +if [ -z "$APP_KEY" -a -z "$APP_KEY_FILE" ] then echo "Please re-run this container with an environment variable \$APP_KEY" echo "An example APP_KEY you could use is: " diff --git a/package-lock.json b/package-lock.json index 8ede99141..d71c3f9fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "@fortawesome/fontawesome-free": "^6.5.2", + "@fortawesome/fontawesome-free": "^6.6.0", "acorn": "^8.12.0", "acorn-import-assertions": "^1.9.0", "admin-lte": "^2.4.18", @@ -16,6 +16,7 @@ "bootstrap-datepicker": "^1.10.0", "bootstrap-less": "^3.3.8", "bootstrap-table": "1.23.0", + "canvas-confetti": "^1.9.3", "chart.js": "^2.9.4", "clipboard": "^2.0.11", "css-loader": "^5.0.0", @@ -23,7 +24,7 @@ "imagemin": "^8.0.1", "jquery-slimscroll": "^1.3.8", "jquery-ui": "^1.13.3", - "jquery-validation": "^1.20.1", + "jquery-validation": "^1.21.0", "jquery.iframe-transport": "^1.0.0", "jspdf-autotable": "^3.8.2", "less": "^4.2.0", @@ -1918,9 +1919,9 @@ } }, "node_modules/@fortawesome/fontawesome-free": { - "version": "6.5.2", - "hasInstallScript": true, - "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.6.0.tgz", + "integrity": "sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==", "engines": { "node": ">=6" } @@ -4098,6 +4099,15 @@ ], "license": "CC-BY-4.0" }, + "node_modules/canvas-confetti": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/canvas-confetti/-/canvas-confetti-1.9.3.tgz", + "integrity": "sha512-rFfTURMvmVEX1gyXFgn5QMn81bYk70qa0HLzcIOSVEyl57n6o9ItHeBtUSWdvKAPY0xlvBHno4/v3QPrT83q9g==", + "funding": { + "type": "donate", + "url": "https://www.paypal.me/kirilvatev" + } + }, "node_modules/canvg": { "version": "3.0.10", "license": "MIT", @@ -7064,9 +7074,9 @@ } }, "node_modules/jquery-validation": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.20.1.tgz", - "integrity": "sha512-rbBy36Xe5WBCO8OLdZLhPhVjb70KayuoX3WYRNwNpy9TXuUadhNTcaipr6jEIacn+V4jgXB2xUJl6hYzJxr5jw==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.21.0.tgz", + "integrity": "sha512-xNot0rlUIgu7duMcQ5qb6MGkGL/Z1PQaRJQoZAURW9+a/2PGOUxY36o/WyNeP2T9R6jvWB8Z9lUVvvQWI/Zs5w==", "peerDependencies": { "jquery": "^1.7 || ^2.0 || ^3.1" } diff --git a/package.json b/package.json index e933aae37..468c6c289 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "postcss": "^8.4.5" }, "dependencies": { - "@fortawesome/fontawesome-free": "^6.5.2", + "@fortawesome/fontawesome-free": "^6.6.0", "acorn": "^8.12.0", "acorn-import-assertions": "^1.9.0", "admin-lte": "^2.4.18", @@ -36,6 +36,7 @@ "bootstrap-datepicker": "^1.10.0", "bootstrap-less": "^3.3.8", "bootstrap-table": "1.23.0", + "canvas-confetti": "^1.9.3", "chart.js": "^2.9.4", "clipboard": "^2.0.11", "css-loader": "^5.0.0", @@ -43,7 +44,7 @@ "imagemin": "^8.0.1", "jquery-slimscroll": "^1.3.8", "jquery-ui": "^1.13.3", - "jquery-validation": "^1.20.1", + "jquery-validation": "^1.21.0", "jquery.iframe-transport": "^1.0.0", "jspdf-autotable": "^3.8.2", "less": "^4.2.0", diff --git a/phpunit.xml b/phpunit.xml index 9d4fa9114..c21353eef 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,21 +1,14 @@ - - - app/ - - ./tests/Unit @@ -33,4 +26,9 @@ + + + app/ + + diff --git a/public/css/build/app.css b/public/css/build/app.css index 2b8dc0987..f70346905 100644 --- a/public/css/build/app.css +++ b/public/css/build/app.css @@ -701,14 +701,137 @@ body { z-index: 0 !important; } @media print { - a[href]:after { - content: none; + @page { + size: A4; + margin: 0mm; } .tab-content > .tab-pane { display: block !important; opacity: 1 !important; visibility: visible !important; } + .img-responsive { + width: 200px; + } + html, + body { + width: 1024px; + } + body { + margin: 0 auto; + line-height: 1em; + word-spacing: 1px; + letter-spacing: 0.2px; + font: 15px "Times New Roman", Times, serif; + background: white; + color: black; + width: 100%; + float: none; + } + /* avoid page-breaks inside a listingContainer*/ + .listingContainer { + page-break-inside: avoid; + } + h1 { + font: 28px "Times New Roman", Times, serif; + } + h2 { + font: 24px "Times New Roman", Times, serif; + } + h3 { + font: 20px "Times New Roman", Times, serif; + } + /* Improve colour contrast of links */ + a:link, + a:visited { + color: #781351; + } + /* URL */ + a:link, + a:visited { + background: transparent; + color: #333; + text-decoration: none; + } + a[href]:after { + content: "" !important; + } + a[href^="http://"] { + color: #000; + } + #header { + height: 75px; + font-size: 24pt; + color: black; + } + div.row-new-striped { + margin: 0px; + padding: 0px; + } + .pagination-detail, + .fixed-table-toolbar { + visibility: hidden; + } + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12 .col-sm-pull-3 .col-sm-push-9 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } +} +.select2-selection__choice__remove { + color: white !important; +} +.select2-selection--multiple { + border-color: #d2d6de !important; + height: 34px; +} +.select2-selection__choice { + border-radius: 0px !important; } img.navbar-brand-img, .navbar-brand > img { @@ -999,10 +1122,19 @@ th.css-location > .th-inner::before { margin-top: 50px; } } -.ellipsis { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; +@media screen and (max-width: 1318px) and (min-width: 1200px) { + .admin.box { + height: 170px; + } +} +@media screen and (max-width: 1494px) and (min-width: 1200px) { + .dashboard.small-box { + white-space: nowrap; + text-overflow: ellipsis; + max-width: 188px; + display: block; + overflow: hidden; + } } /** Form-stuff overrides for checkboxes and stuff **/ label.form-control { @@ -1140,6 +1272,9 @@ input[type="radio"]:checked::before { .select2-container .select2-search--inline .select2-search__field { padding-left: 15px; } +.nav-tabs-custom > .nav-tabs > li.active { + font-weight: bold; +} /** --------------------------------------- **/ /** End checkbox styles to replace iCheck **/ /** --------------------------------------- **/ diff --git a/public/css/build/overrides.css b/public/css/build/overrides.css index 24696882a..d8169245b 100644 --- a/public/css/build/overrides.css +++ b/public/css/build/overrides.css @@ -334,14 +334,137 @@ body { z-index: 0 !important; } @media print { - a[href]:after { - content: none; + @page { + size: A4; + margin: 0mm; } .tab-content > .tab-pane { display: block !important; opacity: 1 !important; visibility: visible !important; } + .img-responsive { + width: 200px; + } + html, + body { + width: 1024px; + } + body { + margin: 0 auto; + line-height: 1em; + word-spacing: 1px; + letter-spacing: 0.2px; + font: 15px "Times New Roman", Times, serif; + background: white; + color: black; + width: 100%; + float: none; + } + /* avoid page-breaks inside a listingContainer*/ + .listingContainer { + page-break-inside: avoid; + } + h1 { + font: 28px "Times New Roman", Times, serif; + } + h2 { + font: 24px "Times New Roman", Times, serif; + } + h3 { + font: 20px "Times New Roman", Times, serif; + } + /* Improve colour contrast of links */ + a:link, + a:visited { + color: #781351; + } + /* URL */ + a:link, + a:visited { + background: transparent; + color: #333; + text-decoration: none; + } + a[href]:after { + content: "" !important; + } + a[href^="http://"] { + color: #000; + } + #header { + height: 75px; + font-size: 24pt; + color: black; + } + div.row-new-striped { + margin: 0px; + padding: 0px; + } + .pagination-detail, + .fixed-table-toolbar { + visibility: hidden; + } + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12 .col-sm-pull-3 .col-sm-push-9 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } +} +.select2-selection__choice__remove { + color: white !important; +} +.select2-selection--multiple { + border-color: #d2d6de !important; + height: 34px; +} +.select2-selection__choice { + border-radius: 0px !important; } img.navbar-brand-img, .navbar-brand > img { @@ -632,10 +755,19 @@ th.css-location > .th-inner::before { margin-top: 50px; } } -.ellipsis { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; +@media screen and (max-width: 1318px) and (min-width: 1200px) { + .admin.box { + height: 170px; + } +} +@media screen and (max-width: 1494px) and (min-width: 1200px) { + .dashboard.small-box { + white-space: nowrap; + text-overflow: ellipsis; + max-width: 188px; + display: block; + overflow: hidden; + } } /** Form-stuff overrides for checkboxes and stuff **/ label.form-control { @@ -773,6 +905,9 @@ input[type="radio"]:checked::before { .select2-container .select2-search--inline .select2-search__field { padding-left: 15px; } +.nav-tabs-custom > .nav-tabs > li.active { + font-weight: bold; +} /** --------------------------------------- **/ /** End checkbox styles to replace iCheck **/ /** --------------------------------------- **/ diff --git a/public/css/dist/all.css b/public/css/dist/all.css index 4ee80b33c..8957c0099 100644 --- a/public/css/dist/all.css +++ b/public/css/dist/all.css @@ -6833,7 +6833,7 @@ button.close { } /*# sourceMappingURL=bootstrap.css.map */ /*! - * Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. */ @@ -6841,15 +6841,15 @@ button.close { font-family: var(--fa-style-family, "Font Awesome 6 Free"); font-weight: var(--fa-style, 900); } -.fa, -.fa-classic, -.fa-sharp, -.fas, .fa-solid, -.far, .fa-regular, +.fa-brands, +.fas, +.far, .fab, -.fa-brands { +.fa-sharp-solid, +.fa-classic, +.fa { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; display: var(--fa-display, inline-block); @@ -6941,7 +6941,7 @@ button.close { position: relative; } .fa-li { - left: calc(var(--fa-li-width, 2em) * -1); + left: calc(-1 * var(--fa-li-width, 2em)); position: absolute; text-align: center; width: var(--fa-li-width, 2em); @@ -6963,118 +6963,71 @@ button.close { margin-left: var(--fa-pull-margin, 0.3em); } .fa-beat { - -webkit-animation-name: fa-beat; - animation-name: fa-beat; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); - animation-timing-function: var(--fa-animation-timing, ease-in-out); } + animation-name: fa-beat; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } .fa-bounce { - -webkit-animation-name: fa-bounce; - animation-name: fa-bounce; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } + animation-name: fa-bounce; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); } .fa-fade { - -webkit-animation-name: fa-fade; - animation-name: fa-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + animation-name: fa-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } .fa-beat-fade { - -webkit-animation-name: fa-beat-fade; - animation-name: fa-beat-fade; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } + animation-name: fa-beat-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); } .fa-flip { - -webkit-animation-name: fa-flip; - animation-name: fa-flip; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); - animation-timing-function: var(--fa-animation-timing, ease-in-out); } + animation-name: fa-flip; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); } .fa-shake { - -webkit-animation-name: fa-shake; - animation-name: fa-shake; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, linear); - animation-timing-function: var(--fa-animation-timing, linear); } + animation-name: fa-shake; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); } .fa-spin { - -webkit-animation-name: fa-spin; - animation-name: fa-spin; - -webkit-animation-delay: var(--fa-animation-delay, 0s); - animation-delay: var(--fa-animation-delay, 0s); - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 2s); - animation-duration: var(--fa-animation-duration, 2s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, linear); - animation-timing-function: var(--fa-animation-timing, linear); } + animation-name: fa-spin; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 2s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); } .fa-spin-reverse { --fa-animation-direction: reverse; } .fa-pulse, .fa-spin-pulse { - -webkit-animation-name: fa-spin; - animation-name: fa-spin; - -webkit-animation-direction: var(--fa-animation-direction, normal); - animation-direction: var(--fa-animation-direction, normal); - -webkit-animation-duration: var(--fa-animation-duration, 1s); - animation-duration: var(--fa-animation-duration, 1s); - -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); - animation-timing-function: var(--fa-animation-timing, steps(8)); } + animation-name: fa-spin; + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, steps(8)); } @media (prefers-reduced-motion: reduce) { .fa-beat, @@ -7086,219 +7039,97 @@ button.close { .fa-shake, .fa-spin, .fa-spin-pulse { - -webkit-animation-delay: -1ms; - animation-delay: -1ms; - -webkit-animation-duration: 1ms; - animation-duration: 1ms; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; - -webkit-transition-delay: 0s; - transition-delay: 0s; - -webkit-transition-duration: 0s; - transition-duration: 0s; } } - -@-webkit-keyframes fa-beat { - 0%, 90% { - -webkit-transform: scale(1); - transform: scale(1); } - 45% { - -webkit-transform: scale(var(--fa-beat-scale, 1.25)); - transform: scale(var(--fa-beat-scale, 1.25)); } } + animation-delay: -1ms; + animation-duration: 1ms; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; } } @keyframes fa-beat { 0%, 90% { - -webkit-transform: scale(1); - transform: scale(1); } + transform: scale(1); } 45% { - -webkit-transform: scale(var(--fa-beat-scale, 1.25)); - transform: scale(var(--fa-beat-scale, 1.25)); } } - -@-webkit-keyframes fa-bounce { - 0% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } - 10% { - -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } - 30% { - -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } - 50% { - -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } - 57% { - -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } - 64% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } - 100% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } } + transform: scale(var(--fa-beat-scale, 1.25)); } } @keyframes fa-bounce { 0% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } + transform: scale(1, 1) translateY(0); } 10% { - -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); } 30% { - -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); } 50% { - -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); } 57% { - -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); } 64% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } + transform: scale(1, 1) translateY(0); } 100% { - -webkit-transform: scale(1, 1) translateY(0); - transform: scale(1, 1) translateY(0); } } - -@-webkit-keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity, 0.4); } } + transform: scale(1, 1) translateY(0); } } @keyframes fa-fade { 50% { opacity: var(--fa-fade-opacity, 0.4); } } -@-webkit-keyframes fa-beat-fade { - 0%, 100% { - opacity: var(--fa-beat-fade-opacity, 0.4); - -webkit-transform: scale(1); - transform: scale(1); } - 50% { - opacity: 1; - -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); - transform: scale(var(--fa-beat-fade-scale, 1.125)); } } - @keyframes fa-beat-fade { 0%, 100% { opacity: var(--fa-beat-fade-opacity, 0.4); - -webkit-transform: scale(1); - transform: scale(1); } + transform: scale(1); } 50% { opacity: 1; - -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); - transform: scale(var(--fa-beat-fade-scale, 1.125)); } } - -@-webkit-keyframes fa-flip { - 50% { - -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } + transform: scale(var(--fa-beat-fade-scale, 1.125)); } } @keyframes fa-flip { 50% { - -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } - -@-webkit-keyframes fa-shake { - 0% { - -webkit-transform: rotate(-15deg); - transform: rotate(-15deg); } - 4% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); } - 8%, 24% { - -webkit-transform: rotate(-18deg); - transform: rotate(-18deg); } - 12%, 28% { - -webkit-transform: rotate(18deg); - transform: rotate(18deg); } - 16% { - -webkit-transform: rotate(-22deg); - transform: rotate(-22deg); } - 20% { - -webkit-transform: rotate(22deg); - transform: rotate(22deg); } - 32% { - -webkit-transform: rotate(-12deg); - transform: rotate(-12deg); } - 36% { - -webkit-transform: rotate(12deg); - transform: rotate(12deg); } - 40%, 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } } + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } } @keyframes fa-shake { 0% { - -webkit-transform: rotate(-15deg); - transform: rotate(-15deg); } + transform: rotate(-15deg); } 4% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); } + transform: rotate(15deg); } 8%, 24% { - -webkit-transform: rotate(-18deg); - transform: rotate(-18deg); } + transform: rotate(-18deg); } 12%, 28% { - -webkit-transform: rotate(18deg); - transform: rotate(18deg); } + transform: rotate(18deg); } 16% { - -webkit-transform: rotate(-22deg); - transform: rotate(-22deg); } + transform: rotate(-22deg); } 20% { - -webkit-transform: rotate(22deg); - transform: rotate(22deg); } + transform: rotate(22deg); } 32% { - -webkit-transform: rotate(-12deg); - transform: rotate(-12deg); } + transform: rotate(-12deg); } 36% { - -webkit-transform: rotate(12deg); - transform: rotate(12deg); } + transform: rotate(12deg); } 40%, 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } } - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } + transform: rotate(0deg); } } @keyframes fa-spin { 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); } + transform: rotate(0deg); } 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); } } + transform: rotate(360deg); } } .fa-rotate-90 { - -webkit-transform: rotate(90deg); - transform: rotate(90deg); } + transform: rotate(90deg); } .fa-rotate-180 { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); } + transform: rotate(180deg); } .fa-rotate-270 { - -webkit-transform: rotate(270deg); - transform: rotate(270deg); } + transform: rotate(270deg); } .fa-flip-horizontal { - -webkit-transform: scale(-1, 1); - transform: scale(-1, 1); } + transform: scale(-1, 1); } .fa-flip-vertical { - -webkit-transform: scale(1, -1); - transform: scale(1, -1); } + transform: scale(1, -1); } .fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { - -webkit-transform: scale(-1, -1); - transform: scale(-1, -1); } + transform: scale(-1, -1); } .fa-rotate-by { - -webkit-transform: rotate(var(--fa-rotate-angle, 0)); - transform: rotate(var(--fa-rotate-angle, 0)); } + transform: rotate(var(--fa-rotate-angle, 0)); } .fa-stack { display: inline-block; @@ -8726,6 +8557,12 @@ readers do not read off random characters that represent icons */ .fa-passport::before { content: "\f5ab"; } +.fa-thumbtack-slash::before { + content: "\e68f"; } + +.fa-thumb-tack-slash::before { + content: "\e68f"; } + .fa-heart-pulse::before { content: "\f21e"; } @@ -13037,6 +12874,9 @@ readers do not read off random characters that represent icons */ .fa-bone::before { content: "\f5d7"; } +.fa-table-cells-row-unlock::before { + content: "\e691"; } + .fa-user-injured::before { content: "\f728"; } @@ -13324,6 +13164,9 @@ readers do not read off random characters that represent icons */ .fa-jxl:before { content: "\e67b"; } +.fa-dart-lang:before { + content: "\e693"; } + .fa-hire-a-helper:before { content: "\f3b0"; } @@ -14263,6 +14106,9 @@ readers do not read off random characters that represent icons */ .fa-twitch:before { content: "\f1e8"; } +.fa-flutter:before { + content: "\e694"; } + .fa-ravelry:before { content: "\f2d9"; } @@ -21827,14 +21673,137 @@ body { z-index: 0 !important; } @media print { - a[href]:after { - content: none; + @page { + size: A4; + margin: 0mm; } .tab-content > .tab-pane { display: block !important; opacity: 1 !important; visibility: visible !important; } + .img-responsive { + width: 200px; + } + html, + body { + width: 1024px; + } + body { + margin: 0 auto; + line-height: 1em; + word-spacing: 1px; + letter-spacing: 0.2px; + font: 15px "Times New Roman", Times, serif; + background: white; + color: black; + width: 100%; + float: none; + } + /* avoid page-breaks inside a listingContainer*/ + .listingContainer { + page-break-inside: avoid; + } + h1 { + font: 28px "Times New Roman", Times, serif; + } + h2 { + font: 24px "Times New Roman", Times, serif; + } + h3 { + font: 20px "Times New Roman", Times, serif; + } + /* Improve colour contrast of links */ + a:link, + a:visited { + color: #781351; + } + /* URL */ + a:link, + a:visited { + background: transparent; + color: #333; + text-decoration: none; + } + a[href]:after { + content: "" !important; + } + a[href^="http://"] { + color: #000; + } + #header { + height: 75px; + font-size: 24pt; + color: black; + } + div.row-new-striped { + margin: 0px; + padding: 0px; + } + .pagination-detail, + .fixed-table-toolbar { + visibility: hidden; + } + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12 .col-sm-pull-3 .col-sm-push-9 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } +} +.select2-selection__choice__remove { + color: white !important; +} +.select2-selection--multiple { + border-color: #d2d6de !important; + height: 34px; +} +.select2-selection__choice { + border-radius: 0px !important; } img.navbar-brand-img, .navbar-brand > img { @@ -22125,10 +22094,19 @@ th.css-location > .th-inner::before { margin-top: 50px; } } -.ellipsis { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; +@media screen and (max-width: 1318px) and (min-width: 1200px) { + .admin.box { + height: 170px; + } +} +@media screen and (max-width: 1494px) and (min-width: 1200px) { + .dashboard.small-box { + white-space: nowrap; + text-overflow: ellipsis; + max-width: 188px; + display: block; + overflow: hidden; + } } /** Form-stuff overrides for checkboxes and stuff **/ label.form-control { @@ -22266,6 +22244,9 @@ input[type="radio"]:checked::before { .select2-container .select2-search--inline .select2-search__field { padding-left: 15px; } +.nav-tabs-custom > .nav-tabs > li.active { + font-weight: bold; +} /** --------------------------------------- **/ /** End checkbox styles to replace iCheck **/ /** --------------------------------------- **/ @@ -23120,14 +23101,137 @@ body { z-index: 0 !important; } @media print { - a[href]:after { - content: none; + @page { + size: A4; + margin: 0mm; } .tab-content > .tab-pane { display: block !important; opacity: 1 !important; visibility: visible !important; } + .img-responsive { + width: 200px; + } + html, + body { + width: 1024px; + } + body { + margin: 0 auto; + line-height: 1em; + word-spacing: 1px; + letter-spacing: 0.2px; + font: 15px "Times New Roman", Times, serif; + background: white; + color: black; + width: 100%; + float: none; + } + /* avoid page-breaks inside a listingContainer*/ + .listingContainer { + page-break-inside: avoid; + } + h1 { + font: 28px "Times New Roman", Times, serif; + } + h2 { + font: 24px "Times New Roman", Times, serif; + } + h3 { + font: 20px "Times New Roman", Times, serif; + } + /* Improve colour contrast of links */ + a:link, + a:visited { + color: #781351; + } + /* URL */ + a:link, + a:visited { + background: transparent; + color: #333; + text-decoration: none; + } + a[href]:after { + content: "" !important; + } + a[href^="http://"] { + color: #000; + } + #header { + height: 75px; + font-size: 24pt; + color: black; + } + div.row-new-striped { + margin: 0px; + padding: 0px; + } + .pagination-detail, + .fixed-table-toolbar { + visibility: hidden; + } + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12 .col-sm-pull-3 .col-sm-push-9 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } +} +.select2-selection__choice__remove { + color: white !important; +} +.select2-selection--multiple { + border-color: #d2d6de !important; + height: 34px; +} +.select2-selection__choice { + border-radius: 0px !important; } img.navbar-brand-img, .navbar-brand > img { @@ -23418,10 +23522,19 @@ th.css-location > .th-inner::before { margin-top: 50px; } } -.ellipsis { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; +@media screen and (max-width: 1318px) and (min-width: 1200px) { + .admin.box { + height: 170px; + } +} +@media screen and (max-width: 1494px) and (min-width: 1200px) { + .dashboard.small-box { + white-space: nowrap; + text-overflow: ellipsis; + max-width: 188px; + display: block; + overflow: hidden; + } } /** Form-stuff overrides for checkboxes and stuff **/ label.form-control { @@ -23559,6 +23672,9 @@ input[type="radio"]:checked::before { .select2-container .select2-search--inline .select2-search__field { padding-left: 15px; } +.nav-tabs-custom > .nav-tabs > li.active { + font-weight: bold; +} /** --------------------------------------- **/ /** End checkbox styles to replace iCheck **/ /** --------------------------------------- **/ diff --git a/public/css/dist/skins/_all-skins.css b/public/css/dist/skins/_all-skins.css new file mode 100644 index 000000000..c4d2130f9 --- /dev/null +++ b/public/css/dist/skins/_all-skins.css @@ -0,0 +1,5408 @@ +/* + * Skin: Black + * ---------- + */ +.skin-black .main-header .navbar { + background-color: #111; +} +.skin-black .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-black .main-header .navbar .nav > li > a:hover, +.skin-black .main-header .navbar .nav > li > a:active, +.skin-black .main-header .navbar .nav > li > a:focus, +.skin-black .main-header .navbar .nav .open > a, +.skin-black .main-header .navbar .nav .open > a:hover, +.skin-black .main-header .navbar .nav .open > a:focus, +.skin-black .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-black .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-black .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-black .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-black .main-header .navbar .sidebar-toggle:hover { + background-color: #040404; +} +@media (max-width: 767px) { + .skin-black .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-black .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-black .main-header .navbar .dropdown-menu li a:hover { + background: #040404; + } +} +.skin-black .main-header li.user-header { + background-color: #111; +} +.skin-black .content-header { + background: transparent; +} +.skin-black .wrapper, +.skin-black .main-sidebar, +.skin-black .left-side { + background-color: #222d32; +} +.skin-black .user-panel > .info, +.skin-black .user-panel > .info > a { + color: #fff; +} +.skin-black .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-black .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-black .sidebar-menu > li:hover > a, +.skin-black .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #111; +} +.skin-black .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-black .sidebar a { + color: #b8c7ce; +} +.skin-black .sidebar a:hover { + text-decoration: none; +} +.skin-black .treeview-menu > li > a { + color: #8aa4af; +} +.skin-black .treeview-menu > li.active > a, +.skin-black .treeview-menu > li > a:hover { + color: #fff; +} +.skin-black .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-black .sidebar-form input[type="text"], +.skin-black .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-black .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-black .sidebar-form input[type="text"]:focus, +.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-black .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-black.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #000; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #505156; + border-color: #FFF; + color: #FFF; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #111; + border-color: #1f1f21; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + color: #fff; +} +.btn.btn-white:visited, +.btn:hover.btn-white:visited { + color: #fff; +} +a { + color: var(--link); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #000000; +} +:root { + --button-default: #000000; + --button-primary: #000000; + --button-hover: #000000; + --header: #111; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #black; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #111; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #999999; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +.btn-danger.btn-sm.disabled { + color: #FFF; +} +.far fa-life-ring { + color: var(--link); +} +.sidebar-toggle-mobile { + color: #FFF !important; +} +.skin-black .main-header .navbar .nav > li > a, +.skin-black .main-header .navbar .nav > li > a { + text-decoration: none; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #111; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +/* + * Skin: black dark + * ---------- + */ +.skin-black-dark .main-header .navbar { + background-color: #111; +} +.skin-black-dark .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-black-dark .main-header .navbar .nav > li > a:hover, +.skin-black-dark .main-header .navbar .nav > li > a:active, +.skin-black-dark .main-header .navbar .nav > li > a:focus, +.skin-black-dark .main-header .navbar .nav .open > a, +.skin-black-dark .main-header .navbar .nav .open > a:hover, +.skin-black-dark .main-header .navbar .nav .open > a:focus, +.skin-black-dark .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-black-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-black-dark .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-black-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-black-dark .main-header .navbar .sidebar-toggle:hover { + background-color: #040404; +} +@media (max-width: 767px) { + .skin-black-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-black-dark .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-black-dark .main-header .navbar .dropdown-menu li a:hover { + background: #040404; + color: #fff; + } +} +@media (max-width: 991px) { + .skin-black-dark .main-header .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-sub); + } +} +.skin-black-dark .main-header li.user-header { + background-color: #111; +} +.skin-black-dark .content-header { + background: transparent; +} +.skin-black-dark .wrapper, +.skin-black-dark .main-sidebar, +.skin-black-dark .left-side { + background-color: #222d32; +} +.skin-black-dark .user-panel > .info, +.skin-black-dark .user-panel > .info > a { + color: #fff; +} +.skin-black-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-black-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-black-dark .sidebar-menu > li:hover > a, +.skin-black-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #111; +} +.skin-black-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-black-dark .sidebar a { + color: #b8c7ce; +} +.skin-black-dark .sidebar a:hover { + text-decoration: none; +} +.skin-black-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-black-dark .treeview-menu > li.active > a, +.skin-black-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-black-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-black-dark .sidebar-form input[type="text"], +.skin-black-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-black-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-black-dark .sidebar-form input[type="text"]:focus, +.skin-black-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-black-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-black-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-black-dark.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #fff; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #000000; + border-color: #FFF; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #000000; + border-color: #000000; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #000000; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #000000; + color: #fff; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +a:hover { + color: #fff; +} +a:visited { + color: #fff; +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #3d4144; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #000000; + --button-primary: #000000; + --button-hover: #000000; + --header: #111; + /* Use same as Header picker */ + --text-main: #fff; + --text-sub: #9b9b9b; + --link: #fff; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #fff; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #949494; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +a.actions { + color: #fff !important; +} +.pagination > li > a { + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +a:hover > h2.task_menu { + color: var(--header); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu > li.header { + background-color: var(--header); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.far fa-life-ring { + color: var(--link); +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +.btn-primary.hover { + color: var(--nav-link); +} +.small-box h3, +.small-box p { + color: var(--nav-link) !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +a:link.btn-default { + color: var(--nav-link); +} +/* Trying to figure out a way of having links different shades based on what row they are on (even/odd). +a unique challenge for this dark mode skin. +Probably writing the specificity for this incorrectly. --Godfrey Martinez 02/04/21 + +.table-striped>tbody>tr:nth-of-type(even)>a:link{ + color:#000d07; +} +.table-striped>tbody>tr:nth-of-type(odd)>a:link{ + color:#bfbfbf; + +}*/ +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--button-default); + color: var(--nav-link); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--nav-link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--nav-link); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-black { + color: var(--nav-link) !important; +} +.btn-primary:hover { + background-color: var(--button-primary); + color: var(--link) !important; +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: var(--back-sub) !important; +} +.input-group, +.input-group-addon { + background-color: var(--back-sub); + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + background-color: var(--back-main); + color: var(--header); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--nav-link); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--back-sub); + color: var(--visited-link); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-black-dark .main-header .navbar .dropdown-menu li a { + color: #FFFFFF; +} +.skin-black-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #000000; +} +.fixed-table-body thead th .th-inner, +.skin-black-dark .sidebar-menu > li.active > a, +.skin-black .sidebar-menu > li:hover > a, +.sidebar-toggle:hover { + background-color: var(--header) !important; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +a { + color: var(--link); +} +a:link { + color: var(--link); +} +a:hover { + color: var(--hover-link); + text-decoration: underline; +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +div.container.row-new-striped { + background-color: var(--back-sub); +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: var(--back-sub); +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} +/* + * Skin: Blue + * ---------- + */ +.skin-blue .main-header .navbar { + background-color: #3c8dbc; +} +.skin-blue .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-blue .main-header .navbar .nav > li > a:hover, +.skin-blue .main-header .navbar .nav > li > a:active, +.skin-blue .main-header .navbar .nav > li > a:focus, +.skin-blue .main-header .navbar .nav .open > a, +.skin-blue .main-header .navbar .nav .open > a:hover, +.skin-blue .main-header .navbar .nav .open > a:focus, +.skin-blue .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-blue .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-blue .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-blue .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-blue .main-header .navbar .sidebar-toggle:hover { + background-color: #367fa9; +} +@media (max-width: 767px) { + .skin-blue .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-blue .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-blue .main-header .navbar .dropdown-menu li a:hover { + background: #367fa9; + } +} +.skin-blue .main-header li.user-header { + background-color: #3c8dbc; +} +.skin-blue .content-header { + background: transparent; +} +.skin-blue .wrapper, +.skin-blue .main-sidebar, +.skin-blue .left-side { + background-color: #222d32; +} +.skin-blue .user-panel > .info, +.skin-blue .user-panel > .info > a { + color: #fff; +} +.skin-blue .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-blue .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-blue .sidebar-menu > li:hover > a, +.skin-blue .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #3c8dbc; +} +.skin-blue .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-blue .sidebar a { + color: #b8c7ce; +} +.skin-blue .sidebar a:hover { + text-decoration: none; +} +.skin-blue .treeview-menu > li > a { + color: #8aa4af; +} +.skin-blue .treeview-menu > li.active > a, +.skin-blue .treeview-menu > li > a:hover { + color: #fff; +} +.skin-blue .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-blue .sidebar-form input[type="text"], +.skin-blue .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-blue .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-blue .sidebar-form input[type="text"]:focus, +.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-blue .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-blue.layout-top-nav .main-header > .logo .logo-variant { + background-color: unset; +} +.btn.btn-primary, +btn-sm.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +btn-sm .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #307095; + border-color: #23536f; + color: #fff !important; +} +.btna.btn-primary:hover, +btn-sma.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #23536f; + border-color: #23536f; + color: #fff; +} +.btn.btn-white:link, +btn-sm.btn-white:link, +.btn:hover.btn-white:link { + background-color: #307095; + color: #fff; +} +.btn.btn-white:hover, +btn-sm.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #173648; + color: #fff; +} +.btn.btn-white:visited, +btn-sm.btn-white:visited, +.btn:hover.btn-white:visited { + background-color: #173648; + color: #fff; +} +.btn-warning, +.btn-warning:link, +a.btn-warning:hover, +.btn-warning:link, +.btn-warning:visited, +.btn-danger, +.btn-danger:link, +a.btn-danger:hover, +.btn-danger:link, +.btn-danger:visited { + color: #fff; +} +.btn-default:link, +a.btn-default:hover, +.btn-default:visited { + color: #505156; +} +:root { + --button-default: #505156; + --button-primary: #1d455b; + --button-hover: #173648; + --header: #3c8dbc; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #296282; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #5fa4cc; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #86bad8; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +a:link { + color: var(--link); +} +a:visited { + color: var(--visited-link); +} +a:hover { + color: var(--hover-link); +} +.text-primary { + color: #23536f; +} +.far fa-life-ring { + color: var(--link); +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #3c8dbc; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +a.settings_button:link, +a.settings_button:visited, +a.settings_button:hover { + color: #3c8dbc; +} +/* + * Skin: blue dark + * ---------- + */ +.skin-blue-dark .main-header .navbar { + background-color: #3c8dbc; +} +.skin-blue-dark .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-blue-dark .main-header .navbar .nav > li > a:hover, +.skin-blue-dark .main-header .navbar .nav > li > a:active, +.skin-blue-dark .main-header .navbar .nav > li > a:focus, +.skin-blue-dark .main-header .navbar .nav .open > a, +.skin-blue-dark .main-header .navbar .nav .open > a:hover, +.skin-blue-dark .main-header .navbar .nav .open > a:focus, +.skin-blue-dark .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-blue-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-blue-dark .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-blue-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-blue-dark .main-header .navbar .sidebar-toggle:hover { + background-color: #367fa9; +} +@media (max-width: 767px) { + .skin-blue-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-blue-dark .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-blue-dark .main-header .navbar .dropdown-menu li a:hover { + background: #367fa9; + color: #fff; + } +} +.skin-blue-dark .main-header li.user-header { + background-color: #3c8dbc; +} +.skin-blue-dark .content-header { + background: transparent; +} +.skin-blue-dark .wrapper, +.skin-blue-dark .main-sidebar, +.skin-blue-dark .left-side { + background-color: #222d32; +} +.skin-blue-dark .user-panel > .info, +.skin-blue-dark .user-panel > .info > a { + color: #fff; +} +.skin-blue-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-blue-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-blue-dark .sidebar-menu > li:hover > a, +.skin-blue-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #3c8dbc; +} +.skin-blue-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-blue-dark .sidebar a { + color: #b8c7ce; +} +.skin-blue-dark .sidebar a:hover { + text-decoration: none; +} +.skin-blue-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-blue-dark .treeview-menu > li.active > a, +.skin-blue-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-blue-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-blue-dark .sidebar-form input[type="text"], +.skin-blue-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-blue-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-blue-dark .sidebar-form input[type="text"]:focus, +.skin-blue-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-blue-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-blue-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-blue-dark.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #fff !important; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #307095; + border-color: #FFF; + color: #FFF; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #23536f; + border-color: #23536f; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #307095; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #173648; + color: #fff; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #272727; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #296282; + --button-primary: #1d455b; + --button-hover: #173648; + --header: #3c8dbc; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #00BFFF; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #4dd2ff; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #99e5ff; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +a.actions { + color: #fff !important; +} +.pagination > li > a { + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu { + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.far fa-life-ring { + color: var(--link); +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +a:link { + color: var(--link); +} +.btn-primary.hover { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.small-box h3, +.small-box p { + color: var(--nav-link) !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--button-default); + color: var(--link); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--link); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-blue { + color: var(--text-main); +} +.btn-primary:hover { + background-color: var(--button-primary); +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.fixed-table-body thead th .th-inner { + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.input-group, +.input-group-addon { + background-color: var(--back-sub) !important; + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + background-color: var(--back-main); + color: var(--header); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--header); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--header); + color: var(--back-main); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-blue-dark .main-header .navbar .dropdown-menu li a { + color: #FFFFFF; +} +.skin-blue-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #3c8dbc; +} +.fixed-table-body thead th .th-inner, +.skin-blue-dark .sidebar-menu > li.active > a, +.skin-blue .sidebar-menu > li:hover > a, +.sidebar-toggle:hover { + background-color: var(--header) !important; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub-alt); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +a { + color: var(--link); +} +a:link { + color: var(--link); +} +a:hover { + color: var(--hover-link); + text-decoration: underline; +} +a:visited { + color: var(--visited-link); +} +#customFieldsTable a[href*='/models'] { + color: var(--back-sub); +} +#customFieldsTable a[href*='/fieldsets'] { + background-color: transparent; +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} +/* + * Skin: Contrast + * ---------- + */ +.skin-contrast .main-header .navbar { + background-color: #001F3F; +} +.skin-contrast .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-contrast .main-header .navbar .nav > li > a:hover, +.skin-contrast .main-header .navbar .nav > li > a:active, +.skin-contrast .main-header .navbar .nav > li > a:focus, +.skin-contrast .main-header .navbar .nav .open > a, +.skin-contrast .main-header .navbar .nav .open > a:hover, +.skin-contrast .main-header .navbar .nav .open > a:focus, +.skin-contrast .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-contrast .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-contrast .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-contrast .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-contrast .main-header .navbar .sidebar-toggle:hover { + background-color: #001226; +} +@media (max-width: 767px) { + .skin-contrast .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-contrast .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-contrast .main-header .navbar .dropdown-menu li a:hover { + background: #001226; + } +} +.skin-contrast .main-header li.user-header { + background-color: #001F3F; +} +.skin-contrast .content-header { + background: transparent; +} +.skin-contrast .wrapper, +.skin-contrast .main-sidebar, +.skin-contrast .left-side { + background-color: #222d32; +} +.skin-contrast .user-panel > .info, +.skin-contrast .user-panel > .info > a { + color: #fff; +} +.skin-contrast .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-contrast .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-contrast .sidebar-menu > li:hover > a, +.skin-contrast .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #001F3F; +} +.skin-contrast .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-contrast .sidebar a { + color: #b8c7ce; +} +.skin-contrast .sidebar a:hover { + text-decoration: none; +} +.skin-contrast .treeview-menu > li > a { + color: #8aa4af; +} +.skin-contrast .treeview-menu > li.active > a, +.skin-contrast .treeview-menu > li > a:hover { + color: #fff; +} +.skin-contrast .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-contrast .sidebar-form input[type="text"], +.skin-contrast .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-contrast .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-contrast .sidebar-form input[type="text"]:focus, +.skin-contrast .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-contrast .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-contrast .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-contrast.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #00060c; + border-color: #000000; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #000000; + border-color: #000000; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #00060c; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #000000; + color: #fff; +} +a.btn.btn-link.text-left { + color: #001F3F; + border: 1px solid #000; +} +a.btn.btn-link.text-left:hover { + color: #001F3F; +} +a { + color: #001F3F; +} +a:hover { + color: #001F3F; + text-decoration: underline; +} +a:visited { + color: #001F3F; +} +a.btn:hover { + color: #fff; + text-decoration: underline; +} +.text-primary { + color: #000000; +} +.skin-contrast .treeview-menu > li > a { + color: #FFF; +} +.bg-teal { + background-color: #1b6a6a !important; +} +.bg-orange { + background-color: #995400 !important; +} +.bg-purple { + background-color: #3a3767 !important; +} +.bg-maroon { + background-color: #7d1038 !important; +} +.pagination > li > a { + color: #00060c !important; +} +.pagination > .active > a { + background-color: #001F3F; + color: #FFF !important; +} +btn-success { + background-color: #000d07; +} +input::-webkit-input-placeholder { + /* Chrome/Opera/Safari */ + color: #b5bbc8 !important; +} +input::-moz-placeholder { + /* Firefox 19+ */ + color: #b5bbc8 !important; +} +input::-ms-input-placeholder { + /* IE 10+ */ + color: #b5bbc8 !important; +} +.select2-default, +.select2-selection__placeholder { + color: #37383c !important; +} +.callout.callout-info { + background-color: #23536f !important; +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +/* + * Skin: Green + * ---------- + */ +:root { + --background: #222; + --back-main: #333; + --back-sub: #3d4144; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #005a31; + --button-primary: #002715; + --button-hover: #000d07; + --header: #00a65a; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #00a65a; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #00f383; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #0dff90; +} +.skin-green .main-header .navbar { + background-color: #00a65a; +} +.skin-green .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-green .main-header .navbar .nav > li > a:hover, +.skin-green .main-header .navbar .nav > li > a:active, +.skin-green .main-header .navbar .nav > li > a:focus, +.skin-green .main-header .navbar .nav .open > a, +.skin-green .main-header .navbar .nav .open > a:hover, +.skin-green .main-header .navbar .nav .open > a:focus, +.skin-green .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-green .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-green .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-green .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-green .main-header .navbar .sidebar-toggle:hover { + background-color: #008d4c; +} +@media (max-width: 767px) { + .skin-green .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-green .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-green .main-header .navbar .dropdown-menu li a:hover { + background: #008d4c; + } +} +.skin-green .main-header li.user-header { + background-color: #00a65a; +} +.skin-green .content-header { + background: transparent; +} +.skin-green .wrapper, +.skin-green .main-sidebar, +.skin-green .left-side { + background-color: #222d32; +} +.skin-green .user-panel > .info, +.skin-green .user-panel > .info > a { + color: #fff; +} +.skin-green .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-green .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-green .sidebar-menu > li:hover > a, +.skin-green .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #00a65a; +} +.skin-green .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-green .sidebar a { + color: #b8c7ce; +} +.skin-green .sidebar a:hover { + text-decoration: none; +} +.skin-green .treeview-menu > li > a { + color: #8aa4af; +} +.skin-green .treeview-menu > li.active > a, +.skin-green .treeview-menu > li > a:hover { + color: #fff; +} +.skin-green .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-green .sidebar-form input[type="text"], +.skin-green .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-green .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-green .sidebar-form input[type="text"]:focus, +.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-green .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-green.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #00733e; + border-color: #004023; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #004023; + border-color: #004023; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #00733e; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #000d07; + color: #fff; +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +a:link { + color: var(--link); +} +a:visited { + color: var(--visited-link); +} +a { + color: #00a65a; +} +a:hover { + color: #004023; +} +a:visited { + color: #00a65a; +} +.text-primary { + color: #004023; +} +.far fa-life-ring { + color: var(--link); +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #00a65a; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +/* + * Skin: green dark + * ---------- + */ +.skin-green-dark .main-header .navbar { + background-color: #00a65a; +} +.skin-green-dark .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-green-dark .main-header .navbar .nav > li > a:hover, +.skin-green-dark .main-header .navbar .nav > li > a:active, +.skin-green-dark .main-header .navbar .nav > li > a:focus, +.skin-green-dark .main-header .navbar .nav .open > a, +.skin-green-dark .main-header .navbar .nav .open > a:hover, +.skin-green-dark .main-header .navbar .nav .open > a:focus, +.skin-green-dark .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-green-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-green-dark .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-green-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-green-dark .main-header .navbar .sidebar-toggle:hover { + background-color: #008d4c; +} +@media (max-width: 767px) { + .skin-green-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-green-dark .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-green-dark .main-header .navbar .dropdown-menu li a:hover { + background: #008d4c; + color: #fff; + } +} +.skin-green-dark .main-header li.user-header { + background-color: #00a65a; +} +.skin-green-dark .content-header { + background: transparent; +} +.skin-green-dark .wrapper, +.skin-green-dark .main-sidebar, +.skin-green-dark .left-side { + background-color: #222d32; +} +.skin-green-dark .user-panel > .info, +.skin-green-dark .user-panel > .info > a { + color: #fff; +} +.skin-green-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-green-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-green-dark .sidebar-menu > li:hover > a, +.skin-green-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #00a65a; +} +.skin-green-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-green-dark .sidebar a { + color: #b8c7ce; +} +.skin-green-dark .sidebar a:hover { + text-decoration: none; +} +.skin-green-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-green-dark .treeview-menu > li.active > a, +.skin-green-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-green-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-green-dark .sidebar-form input[type="text"], +.skin-green-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-green-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-green-dark .sidebar-form input[type="text"]:focus, +.skin-green-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-green-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-green-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-green-dark.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #FFF !important; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #00733e; + border-color: #FFF; + color: #FFF; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #004023; + border-color: #004023; + color: #FFF; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #00733e; + color: #FFF; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #000d07; + color: #FFF; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #312F2F; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #006400; + --button-primary: #003100; + --button-hover: #000000; + --header: #006400; + /* Use same as Header picker */ + --text-main: #FFF; + --text-sub: #9b9b9b; + --link: #9ACD32; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #b8dc70; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #d7ebad; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +a.actions { + color: #fff !important; +} +.pagination > li > a { + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu { + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--nav-link); +} +.far fa-life-ring { + color: var(--link); +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +.btn-primary.hover { + color: var(--nav-link); +} +.small-box h3, +.small-box p { + color: var(--nav-link) !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--button-default); + color: var(--link); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--link); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-green { + color: var(--text-main); +} +.btn-primary:hover { + background-color: var(--button-primary); +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.fixed-table-body thead th .th-inner { + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.input-group, +.input-group-addon { + background-color: var(--back-sub) !important; + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--header); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--header); + color: var(--back-main); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-green-dark .main-header .navbar .dropdown-menu li a { + color: #FFFFFF; +} +.skin-green-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #006300; +} +.fixed-table-body thead th .th-inner, +.skin-green-dark .sidebar-menu > li.active > a, +.skin-green .sidebar-menu > li:hover > a, +.sidebar-toggle:hover { + background-color: var(--header) !important; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +a { + color: var(--link); +} +a:link { + color: var(--link); +} +a:hover { + color: var(--hover-link); + text-decoration: underline; +} +a:visited { + color: var(--visited-link); +} +#customFieldsTable a[href*='/models'] { + color: var(--back-sub); +} +#customFieldsTable a[href*='/fieldsets'] { + background-color: transparent; +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} +/* + * Skin: orange dark + * ---------- + */ +.skin-orange-dark .main-header .navbar { + background-color: #FF8C00; +} +.skin-orange-dark .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-orange-dark .main-header .navbar .nav > li > a:hover, +.skin-orange-dark .main-header .navbar .nav > li > a:active, +.skin-orange-dark .main-header .navbar .nav > li > a:focus, +.skin-orange-dark .main-header .navbar .nav .open > a, +.skin-orange-dark .main-header .navbar .nav .open > a:hover, +.skin-orange-dark .main-header .navbar .nav .open > a:focus, +.skin-orange-dark .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-orange-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-orange-dark .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-orange-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-orange-dark .main-header .navbar .sidebar-toggle:hover { + background-color: #e67e00; +} +@media (max-width: 767px) { + .skin-orange-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-orange-dark .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-orange-dark .main-header .navbar .dropdown-menu li a:hover { + background: #e67e00; + color: #fff; + } +} +.skin-orange-dark .main-header li.user-header { + background-color: #FF8C00; +} +.skin-orange-dark .content-header { + background: transparent; +} +.skin-orange-dark .wrapper, +.skin-orange-dark .main-sidebar, +.skin-orange-dark .left-side { + background-color: #222d32; +} +.skin-orange-dark .user-panel > .info, +.skin-orange-dark .user-panel > .info > a { + color: #fff; +} +.skin-orange-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-orange-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-orange-dark .sidebar-menu > li:hover > a, +.skin-orange-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #FF8C00; +} +.skin-orange-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-orange-dark .sidebar a { + color: #b8c7ce; +} +.skin-orange-dark .sidebar a:hover { + text-decoration: none; +} +.skin-orange-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-orange-dark .treeview-menu > li.active > a, +.skin-orange-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-orange-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-orange-dark .sidebar-form input[type="text"], +.skin-orange-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-orange-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-orange-dark .sidebar-form input[type="text"]:focus, +.skin-orange-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-orange-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-orange-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-orange-dark.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #fff !important; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #cc7000; + border-color: #fff; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #995400; + border-color: #995400; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #cc7000; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #663800; + color: #fff; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #2E2C2C; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #b36200; + --button-primary: #804600; + --button-hover: #663800; + --header: #FF8C00; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #FFA500; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #ffc04d; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #ffdb99; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +a.actions { + color: #fff !important; +} +.pagination > li > a { + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu { + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +.far fa-life-ring { + color: var(--link); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +a:link { + color: var(--link); +} +a:visited { + color: var(--visited-link); +} +a:hover { + color: var(--hover-link); +} +.btn-primary.hover { + color: var(--nav-link); +} +.small-box h3, +.small-box p { + color: var(--nav-link) !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--button-default); + color: var(--nav-link); +} +a:link.btn-default { + color: var(--nav-link); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--nav-link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--background); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-orange { + color: var(--nav-link) !important; + border-color: var(--button-primary); +} +.btn-primary:hover { + background-color: var(--button-primary); +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.fixed-table-body thead th .th-inner { + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.input-group, +.input-group-addon { + background-color: var(--back-sub) !important; + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + background-color: var(--back-main); + color: var(--header); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--header); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--header); + color: var(--back-main); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-orange-dark .main-header .navbar .dropdown-menu li a { + color: #FFFFFF; +} +.skin-orange-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #ff8c00; +} +.fixed-table-body thead th .th-inner, +.skin-orange-dark .sidebar-menu > li.active > a, +.skin-orange .sidebar-menu > li:hover > a, +.sidebar-toggle:hover { + background-color: var(--header) !important; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub-alt); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +#customFieldsTable a[href*='/models'] { + color: var(--back-sub); +} +#customFieldsTable a[href*='/fieldsets'] { + background-color: transparent; +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} +/* + * Skin: Purple + * ---------- + */ +.skin-purple .main-header .navbar { + background-color: #605ca8; +} +.skin-purple .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-purple .main-header .navbar .nav > li > a:hover, +.skin-purple .main-header .navbar .nav > li > a:active, +.skin-purple .main-header .navbar .nav > li > a:focus, +.skin-purple .main-header .navbar .nav .open > a, +.skin-purple .main-header .navbar .nav .open > a:hover, +.skin-purple .main-header .navbar .nav .open > a:focus, +.skin-purple .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-purple .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-purple .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-purple .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-purple .main-header .navbar .sidebar-toggle:hover { + background-color: #555299; +} +@media (max-width: 767px) { + .skin-purple .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-purple .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-purple .main-header .navbar .dropdown-menu li a:hover { + background: #555299; + } +} +.skin-purple .main-header li.user-header { + background-color: #605ca8; +} +.skin-purple .content-header { + background: transparent; +} +.skin-purple .wrapper, +.skin-purple .main-sidebar, +.skin-purple .left-side { + background-color: #222d32; +} +.skin-purple .user-panel > .info, +.skin-purple .user-panel > .info > a { + color: #fff; +} +.skin-purple .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-purple .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-purple .sidebar-menu > li:hover > a, +.skin-purple .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #605ca8; +} +.skin-purple .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-purple .sidebar a { + color: #b8c7ce; +} +.skin-purple .sidebar a:hover { + text-decoration: none; +} +.skin-purple .treeview-menu > li > a { + color: #8aa4af; +} +.skin-purple .treeview-menu > li.active > a, +.skin-purple .treeview-menu > li > a:hover { + color: #fff; +} +.skin-purple .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-purple .sidebar-form input[type="text"], +.skin-purple .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-purple .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-purple .sidebar-form input[type="text"]:focus, +.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-purple .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-purple.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #4c4988; + border-color: #3a3767; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #3a3767; + border-color: #3a3767; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #4c4988; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #272546; + color: #fff; +} +a { + color: var(--link); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #3a3767; +} +:root { + --button-default: #434078; + --button-primary: #302e56; + --button-hover: #272546; + --header: #605ca8; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #605ca8; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #918ec3; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #c1c0dd; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #605ca8; +} +.far fa-life-ring { + color: var(--link); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +/* + * Skin: purple dark + * ---------- + */ +.skin-purple-dark .main-header .navbar { + background-color: #605ca8; +} +.skin-purple-dark .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-purple-dark .main-header .navbar .nav > li > a:hover, +.skin-purple-dark .main-header .navbar .nav > li > a:active, +.skin-purple-dark .main-header .navbar .nav > li > a:focus, +.skin-purple-dark .main-header .navbar .nav .open > a, +.skin-purple-dark .main-header .navbar .nav .open > a:hover, +.skin-purple-dark .main-header .navbar .nav .open > a:focus, +.skin-purple-dark .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-purple-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-purple-dark .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-purple-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-purple-dark .main-header .navbar .sidebar-toggle:hover { + background-color: #555299; +} +@media (max-width: 767px) { + .skin-purple-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-purple-dark .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-purple-dark .main-header .navbar .dropdown-menu li a:hover { + background: #555299; + color: #fff; + } +} +.skin-purple-dark .main-header li.user-header { + background-color: #605ca8; +} +.skin-purple-dark .content-header { + background: transparent; +} +.skin-purple-dark .wrapper, +.skin-purple-dark .main-sidebar, +.skin-purple-dark .left-side { + background-color: #222d32; +} +.skin-purple-dark .user-panel > .info, +.skin-purple-dark .user-panel > .info > a { + color: #fff; +} +.skin-purple-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-purple-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-purple-dark .sidebar-menu > li:hover > a, +.skin-purple-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #605ca8; +} +.skin-purple-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-purple-dark .sidebar a { + color: #b8c7ce; +} +.skin-purple-dark .sidebar a:hover { + text-decoration: none; +} +.skin-purple-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-purple-dark .treeview-menu > li.active > a, +.skin-purple-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-purple-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-purple-dark .sidebar-form input[type="text"], +.skin-purple-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-purple-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-purple-dark .sidebar-form input[type="text"]:focus, +.skin-purple-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-purple-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-purple-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-purple-dark.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #fff !important; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #4c4988; + border-color: #FFF; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #3a3767; + border-color: #3a3767; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #4c4988; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #272546; + color: #fff; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #080808; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #434078; + --button-primary: #302e56; + --button-hover: #272546; + --header: #605ca8; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #AC83FF; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #dfd0ff; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #ffffff; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +.pagination > li > a { + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--button-default); + border-color: var(--light-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu { + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.label-default { + background-color: var(--back-sub); + color: #fff; +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +a:link { + color: var(--link); +} +.far fa-life-ring { + color: var(--link); +} +.btn-primary.hover { + color: var(--nav-link); +} +.small-box h3, +.small-box p { + color: var(--nav-link) !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +a:link.btn-default { + color: var(--nav-link); +} +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--button-default); + color: var(--nav-link); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--nav-link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--nav-link); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-purple { + color: var(--nav-link) !important; +} +.btn-primary:hover { + background-color: var(--button-primary); +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.fixed-table-body thead th .th-inner { + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.input-group, +.input-group-addon { + background-color: var(--back-sub) !important; + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + background-color: var(--back-main); + color: var(--link); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--header); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--header); + color: var(--back-main); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-purple-dark .main-header .navbar .dropdown-menu li a { + color: #FFFFFF; +} +.skin-purple-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #5f5ca8; +} +.fixed-table-body thead th .th-inner, +.skin-purple-dark .sidebar-menu > li.active > a, +.skin-purple .sidebar-menu > li:hover > a, +.sidebar-toggle:hover { + background-color: var(--header) !important; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub-alt); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +a { + color: var(--link); +} +a:link { + color: var(--link); +} +a:hover { + color: var(--hover-link); + text-decoration: underline; +} +a:visited { + color: var(--visited-link); +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} +/* + * Skin: Red + * ---------- + */ +.skin-red .main-header .navbar { + background-color: #dd4b39; +} +.skin-red .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-red .main-header .navbar .nav > li > a:hover, +.skin-red .main-header .navbar .nav > li > a:active, +.skin-red .main-header .navbar .nav > li > a:focus, +.skin-red .main-header .navbar .nav .open > a, +.skin-red .main-header .navbar .nav .open > a:hover, +.skin-red .main-header .navbar .nav .open > a:focus, +.skin-red .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-red .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-red .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-red .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-red .main-header .navbar .sidebar-toggle:hover { + background-color: #d73925; +} +@media (max-width: 767px) { + .skin-red .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-red .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-red .main-header .navbar .dropdown-menu li a:hover { + background: #d73925; + } +} +.skin-red .main-header li.user-header { + background-color: #dd4b39; +} +.skin-red .content-header { + background: transparent; +} +.skin-red .wrapper, +.skin-red .main-sidebar, +.skin-red .left-side { + background-color: #222d32; +} +.skin-red .user-panel > .info, +.skin-red .user-panel > .info > a { + color: #fff; +} +.skin-red .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-red .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-red .sidebar-menu > li:hover > a, +.skin-red .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #dd4b39; +} +.skin-red .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-red .sidebar a { + color: #b8c7ce; +} +.skin-red .sidebar a:hover { + text-decoration: none; +} +.skin-red .treeview-menu > li > a { + color: #8aa4af; +} +.skin-red .treeview-menu > li.active > a, +.skin-red .treeview-menu > li > a:hover { + color: #fff; +} +.skin-red .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-red .sidebar-form input[type="text"], +.skin-red .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-red .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-red .sidebar-form input[type="text"]:focus, +.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-red .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-red.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #c23321; + border-color: #96271a; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #96271a; + border-color: #96271a; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #c23321; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #6b1c12; + color: #fff; +} +a { + color: #dd4b39; +} +a:hover { + color: #96271a; +} +a:visited { + color: #dd4b39; +} +.text-primary { + color: #96271a; +} +:root { + --button-default: #ac2d1e; + --button-primary: #802216; + --button-hover: #6b1c12; + --header: #dd4b39; + /* Use same as Header picker */ + --text-main: #BBB; + --text-alt: #222; + --text-sub: #9b9b9b; + --link: #dd4b39; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #e8867a; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #f3c2bc; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +a:link { + color: var(--link); +} +a:visited { + color: var(--visited-link); +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #dd4b39; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.far fa-life-ring { + color: var(--link); +} +/* + * Skin: red dark + * ---------- + */ +.skin-red-dark .main-header .navbar { + background-color: #dd4b39; +} +.skin-red-dark .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-red-dark .main-header .navbar .nav > li > a:hover, +.skin-red-dark .main-header .navbar .nav > li > a:active, +.skin-red-dark .main-header .navbar .nav > li > a:focus, +.skin-red-dark .main-header .navbar .nav .open > a, +.skin-red-dark .main-header .navbar .nav .open > a:hover, +.skin-red-dark .main-header .navbar .nav .open > a:focus, +.skin-red-dark .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-red-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-red-dark .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-red-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-red-dark .main-header .navbar .sidebar-toggle:hover { + background-color: #d73925; +} +@media (max-width: 767px) { + .skin-red-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-red-dark .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-red-dark .main-header .navbar .dropdown-menu li a:hover { + background: #d73925; + color: #fff; + } +} +.skin-red-dark .main-header li.user-header { + background-color: #dd4b39; +} +.skin-red-dark .content-header { + background: transparent; +} +.skin-red-dark .wrapper, +.skin-red-dark .main-sidebar, +.skin-red-dark .left-side { + background-color: #222d32; +} +.skin-red-dark .user-panel > .info, +.skin-red-dark .user-panel > .info > a { + color: #fff; +} +.skin-red-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-red-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-red-dark .sidebar-menu > li:hover > a, +.skin-red-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #dd4b39; +} +.skin-red-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-red-dark .sidebar a { + color: #b8c7ce; +} +.skin-red-dark .sidebar a:hover { + text-decoration: none; +} +.skin-red-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-red-dark .treeview-menu > li.active > a, +.skin-red-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-red-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-red-dark .sidebar-form input[type="text"], +.skin-red-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-red-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-red-dark .sidebar-form input[type="text"]:focus, +.skin-red-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-red-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-red-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-red-dark.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #fff; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #c23321; + border-color: #FFF; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #96271a; + border-color: #96271a; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #c23321; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #6b1c12; + color: #fff; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +a:hover { + color: #fff; +} +a:visited { + color: #fff; +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #3d4144; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #ac2d1e; + --button-primary: #802216; + --button-hover: #6b1c12; + --header: #dd4b39; + /* Use same as Header picker */ + --text-main: #BBB; + --text-alt: #222; + --text-sub: #9b9b9b; + --link: #e00000; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #D24D57; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #D24D57; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +.pagination > li > a { + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu { + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +a:link { + color: var(--link); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--nav-link); +} +.far fa-life-ring { + color: var(--link); +} +.btn-primary.hover { + color: var(--nav-link); +} +.small-box h3, +.small-box p { + color: var(--nav-link) !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--back-sub); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--link); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-red { + color: var(--button-primary); +} +.btn-primary:hover { + background-color: var(--button-primary); +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.fixed-table-body thead th .th-inner { + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.input-group, +.input-group-addon { + background-color: var(--back-sub) !important; + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + background-color: var(--back-main); + color: var(--header); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--header); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--header); + color: var(--back-main); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-red-dark .main-header .navbar .dropdown-menu li a { + color: #FFFFFF; +} +.skin-red-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #c23320; +} +.fixed-table-body thead th .th-inner, +.skin-red-dark .sidebar-menu > li.active > a, +.skin-red .sidebar-menu > li:hover > a, +.sidebar-toggle:hover { + background-color: var(--header) !important; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub-alt); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +#upload-table tbody > tr.warning > td, +#upload-table h3, +#upload-table p { + background-color: #fcf8e3; + color: #000; +} +a { + color: var(--link); +} +a:link { + color: var(--nav-link); +} +a:hover { + color: var(--nav-link); + text-decoration: underline; +} +a:visited { + color: var(--nav-link); +} +#customFieldsTable a[href*='/models'] { + color: var(--back-sub); +} +#customFieldsTable a[href*='/fieldsets'] { + background-color: transparent; +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} +/* + * Skin: Orange + * ---------- + */ +.skin-orange .main-header .navbar { + background-color: #FF8C00; +} +.skin-orange .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-orange .main-header .navbar .nav > li > a:hover, +.skin-orange .main-header .navbar .nav > li > a:active, +.skin-orange .main-header .navbar .nav > li > a:focus, +.skin-orange .main-header .navbar .nav .open > a, +.skin-orange .main-header .navbar .nav .open > a:hover, +.skin-orange .main-header .navbar .nav .open > a:focus, +.skin-orange .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-orange .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-orange .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-orange .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-orange .main-header .navbar .sidebar-toggle:hover { + background-color: #e67e00; +} +@media (max-width: 767px) { + .skin-orange .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-orange .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-orange .main-header .navbar .dropdown-menu li a:hover { + background: #e67e00; + } +} +.skin-orange .main-header li.user-header { + background-color: #FF8C00; +} +.skin-orange .content-header { + background: transparent; +} +.skin-orange .wrapper, +.skin-orange .main-sidebar, +.skin-orange .left-side { + background-color: #222d32; +} +.skin-orange .user-panel > .info, +.skin-orange .user-panel > .info > a { + color: #fff; +} +.skin-orange .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-orange .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-orange .sidebar-menu > li:hover > a, +.skin-orange .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #FF8C00; +} +.skin-orange .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-orange .sidebar a { + color: #b8c7ce; +} +.skin-orange .sidebar a:hover { + text-decoration: none; +} +.skin-orange .treeview-menu > li > a { + color: #8aa4af; +} +.skin-orange .treeview-menu > li.active > a, +.skin-orange .treeview-menu > li > a:hover { + color: #fff; +} +.skin-orange .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-orange .sidebar-form input[type="text"], +.skin-orange .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-orange .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-orange .sidebar-form input[type="text"]:focus, +.skin-orange .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-orange .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-orange .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-orange.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #cc7000; + border-color: #995400; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #995400; + border-color: #995400; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #cc7000; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #663800; + color: #fff; +} +a { + color: var(--link); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #995400; +} +:root { + --button-default: #b36200; + --button-primary: #804600; + --button-hover: #663800; + --header: #FF8C00; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #FF8C00; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #ffa333; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #ffaf4d; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +.far fa-life-ring { + color: var(--link); +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #FF8C00; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +/* + * Skin: Yellow + * ---------- + */ +.skin-yellow .main-header .navbar { + background-color: #FBCC34; +} +.skin-yellow .main-header .navbar .nav > li > a { + color: rgba(255, 255, 255, 0.8); +} +.skin-yellow .main-header .navbar .nav > li > a:hover, +.skin-yellow .main-header .navbar .nav > li > a:active, +.skin-yellow .main-header .navbar .nav > li > a:focus, +.skin-yellow .main-header .navbar .nav .open > a, +.skin-yellow .main-header .navbar .nav .open > a:hover, +.skin-yellow .main-header .navbar .nav .open > a:focus, +.skin-yellow .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-yellow .main-header .navbar .sidebar-toggle { + color: rgba(255, 255, 255, 0.8); +} +.skin-yellow .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-yellow .main-header .navbar .sidebar-toggle { + color: #000; +} +.skin-yellow .main-header .navbar .sidebar-toggle:hover { + background-color: #fbc61b; +} +@media (max-width: 767px) { + .skin-yellow .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-yellow .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-yellow .main-header .navbar .dropdown-menu li a:hover { + background: #fbc61b; + } +} +.skin-yellow .main-header li.user-header { + background-color: #FBCC34; +} +.skin-yellow .content-header { + background: transparent; +} +.skin-yellow .wrapper, +.skin-yellow .main-sidebar, +.skin-yellow .left-side { + background-color: #222d32; +} +.skin-yellow .user-panel > .info, +.skin-yellow .user-panel > .info > a { + color: #fff; +} +.skin-yellow .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-yellow .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-yellow .sidebar-menu > li:hover > a, +.skin-yellow .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #FBCC34; +} +.skin-yellow .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-yellow .sidebar a { + color: #b8c7ce; +} +.skin-yellow .sidebar a:hover { + text-decoration: none; +} +.skin-yellow .treeview-menu > li > a { + color: #8aa4af; +} +.skin-yellow .treeview-menu > li.active > a, +.skin-yellow .treeview-menu > li > a:hover { + color: #fff; +} +.skin-yellow .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-yellow .sidebar-form input[type="text"], +.skin-yellow .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-yellow .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-yellow .sidebar-form input[type="text"]:focus, +.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-yellow .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-yellow.layout-top-nav .main-header > .logo .logo-variant { + color: #413F42; + background-color: none; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #f7be05; + border-color: #c59704; + color: var(--nav-link); +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #c59704; + border-color: #c59704; + color: var(--nav-link); +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #f7be05; + color: var(--nav-link); +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #937103; + color: var(--nav-link); +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +a { + color: var(--link); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #c59704; +} +:root { + --button-default: #deab04; + --button-primary: #ac8403; + --button-hover: #937103; + --header: #FBCC34; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #5b585c; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #747176; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #b4b1b5; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #222; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #FBCC34; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.navbar-nav > li > a:visited { + color: var(--nav-link); +} +:hover { + color: var(--nav-link); +} +.skin-yellow .main-header .navbar .nav > li > a { + color: #413F42; +} +.far fa-life-ring { + color: var(--link); +} +/* + * Skin: yellow dark + * ---------- + */ +.skin-yellow-dark .main-header .navbar .sidebar-toggle { + color: #000 !important; +} +.skin-yellow-dark .main-header .navbar .sidebar-toggle:hover { + background-color: var(--link); +} +@media (max-width: 767px) { + .skin-yellow-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-yellow-dark .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-yellow-dark .main-header .navbar .dropdown-menu li a:hover { + background: #e08e0b; + color: #fff; + } +} +.skin-yellow-dark .main-header li.user-header { + background-color: #f39c12; +} +.skin-yellow-dark .content-header { + background: transparent; +} +.skin-yellow-dark .wrapper, +.skin-yellow-dark .main-sidebar, +.skin-yellow-dark .left-side { + background-color: #222d32; +} +.skin-yellow-dark .user-panel > .info, +.skin-yellow-dark .user-panel > .info > a { + color: #fff; +} +.skin-yellow-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-yellow-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-yellow-dark .sidebar-menu > li:hover > a, +.skin-yellow-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #f39c12; +} +.skin-yellow-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-yellow-dark .sidebar a { + color: #b8c7ce; +} +.skin-yellow-dark .sidebar a:hover { + text-decoration: none; +} +.skin-yellow-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-yellow-dark .treeview-menu > li.active > a, +.skin-yellow-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-yellow-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-yellow-dark .sidebar-form input[type="text"], +.skin-yellow-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-yellow-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-yellow-dark .sidebar-form input[type="text"]:focus, +.skin-yellow-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-yellow-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-yellow-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: var(--button-default); + border-color: #000000; + color: #545454; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: var(--button-hover); + border-color: var(--button-hover); + color: #545454; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: var(--button-default); + color: #545454; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: var(--hover-link); + color: #545454; +} +a.actions { + color: #fff !important; +} +a:visited.label-default, +a:link.label-default { + color: #444; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +a:link { + color: var(--link); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #3d4144; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #FFCC32; + --button-primary: #b28500; + --button-hover: #987200; + --header: #FFCC32; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #F0E68C; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #f9f5d0; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #ffffff; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #222; + /* Use same as Header picker */ + --light-link: #545454; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +.pagination > li > a { + color: var(--text-main); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--button-default); + border-color: var(--light-link); + color: var(--nav-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu { + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +a.btn.btn-default { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--text-main); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.navbar-nav > li > a:visited { + color: var(--nav-link); +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +a:link.btn-default { + color: var(--nav-link); +} +.btn-primary.hover { + color: var(--nav-link); +} +.small-box h3, +.small-box p { + color: #fff !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +.far fa-life-ring { + color: var(--link); +} +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--button-default); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--nav-link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--nav-link); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-yellow { + color: var(--nav-link) !important; +} +.btn-primary:hover { + background-color: var(--button-primary); + color: var(--nav-link) !important; +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.input-group, +.input-group-addon { + background-color: var(--back-sub) !important; + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + background-color: var(--back-main); + color: var(--header); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--header); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--header); + color: var(--back-main); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-yellow-dark .main-header .navbar .dropdown-menu li a { + color: var(--header); +} +.skin-yellow-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #000000; +} +tr th div.th-inner { + color: #FFFFFF; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub-alt); +} +.th-inner { + color: var(--nav-link); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} + diff --git a/public/css/dist/skins/_all-skins.min.css b/public/css/dist/skins/_all-skins.min.css new file mode 100644 index 000000000..c4d2130f9 --- /dev/null +++ b/public/css/dist/skins/_all-skins.min.css @@ -0,0 +1,5408 @@ +/* + * Skin: Black + * ---------- + */ +.skin-black .main-header .navbar { + background-color: #111; +} +.skin-black .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-black .main-header .navbar .nav > li > a:hover, +.skin-black .main-header .navbar .nav > li > a:active, +.skin-black .main-header .navbar .nav > li > a:focus, +.skin-black .main-header .navbar .nav .open > a, +.skin-black .main-header .navbar .nav .open > a:hover, +.skin-black .main-header .navbar .nav .open > a:focus, +.skin-black .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-black .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-black .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-black .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-black .main-header .navbar .sidebar-toggle:hover { + background-color: #040404; +} +@media (max-width: 767px) { + .skin-black .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-black .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-black .main-header .navbar .dropdown-menu li a:hover { + background: #040404; + } +} +.skin-black .main-header li.user-header { + background-color: #111; +} +.skin-black .content-header { + background: transparent; +} +.skin-black .wrapper, +.skin-black .main-sidebar, +.skin-black .left-side { + background-color: #222d32; +} +.skin-black .user-panel > .info, +.skin-black .user-panel > .info > a { + color: #fff; +} +.skin-black .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-black .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-black .sidebar-menu > li:hover > a, +.skin-black .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #111; +} +.skin-black .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-black .sidebar a { + color: #b8c7ce; +} +.skin-black .sidebar a:hover { + text-decoration: none; +} +.skin-black .treeview-menu > li > a { + color: #8aa4af; +} +.skin-black .treeview-menu > li.active > a, +.skin-black .treeview-menu > li > a:hover { + color: #fff; +} +.skin-black .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-black .sidebar-form input[type="text"], +.skin-black .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-black .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-black .sidebar-form input[type="text"]:focus, +.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-black .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-black.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #000; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #505156; + border-color: #FFF; + color: #FFF; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #111; + border-color: #1f1f21; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + color: #fff; +} +.btn.btn-white:visited, +.btn:hover.btn-white:visited { + color: #fff; +} +a { + color: var(--link); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #000000; +} +:root { + --button-default: #000000; + --button-primary: #000000; + --button-hover: #000000; + --header: #111; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #black; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #111; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #999999; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +.btn-danger.btn-sm.disabled { + color: #FFF; +} +.far fa-life-ring { + color: var(--link); +} +.sidebar-toggle-mobile { + color: #FFF !important; +} +.skin-black .main-header .navbar .nav > li > a, +.skin-black .main-header .navbar .nav > li > a { + text-decoration: none; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #111; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +/* + * Skin: black dark + * ---------- + */ +.skin-black-dark .main-header .navbar { + background-color: #111; +} +.skin-black-dark .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-black-dark .main-header .navbar .nav > li > a:hover, +.skin-black-dark .main-header .navbar .nav > li > a:active, +.skin-black-dark .main-header .navbar .nav > li > a:focus, +.skin-black-dark .main-header .navbar .nav .open > a, +.skin-black-dark .main-header .navbar .nav .open > a:hover, +.skin-black-dark .main-header .navbar .nav .open > a:focus, +.skin-black-dark .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-black-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-black-dark .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-black-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-black-dark .main-header .navbar .sidebar-toggle:hover { + background-color: #040404; +} +@media (max-width: 767px) { + .skin-black-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-black-dark .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-black-dark .main-header .navbar .dropdown-menu li a:hover { + background: #040404; + color: #fff; + } +} +@media (max-width: 991px) { + .skin-black-dark .main-header .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-sub); + } +} +.skin-black-dark .main-header li.user-header { + background-color: #111; +} +.skin-black-dark .content-header { + background: transparent; +} +.skin-black-dark .wrapper, +.skin-black-dark .main-sidebar, +.skin-black-dark .left-side { + background-color: #222d32; +} +.skin-black-dark .user-panel > .info, +.skin-black-dark .user-panel > .info > a { + color: #fff; +} +.skin-black-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-black-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-black-dark .sidebar-menu > li:hover > a, +.skin-black-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #111; +} +.skin-black-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-black-dark .sidebar a { + color: #b8c7ce; +} +.skin-black-dark .sidebar a:hover { + text-decoration: none; +} +.skin-black-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-black-dark .treeview-menu > li.active > a, +.skin-black-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-black-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-black-dark .sidebar-form input[type="text"], +.skin-black-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-black-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-black-dark .sidebar-form input[type="text"]:focus, +.skin-black-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-black-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-black-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-black-dark.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #fff; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #000000; + border-color: #FFF; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #000000; + border-color: #000000; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #000000; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #000000; + color: #fff; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +a:hover { + color: #fff; +} +a:visited { + color: #fff; +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #3d4144; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #000000; + --button-primary: #000000; + --button-hover: #000000; + --header: #111; + /* Use same as Header picker */ + --text-main: #fff; + --text-sub: #9b9b9b; + --link: #fff; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #fff; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #949494; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +a.actions { + color: #fff !important; +} +.pagination > li > a { + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +a:hover > h2.task_menu { + color: var(--header); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu > li.header { + background-color: var(--header); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.far fa-life-ring { + color: var(--link); +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +.btn-primary.hover { + color: var(--nav-link); +} +.small-box h3, +.small-box p { + color: var(--nav-link) !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +a:link.btn-default { + color: var(--nav-link); +} +/* Trying to figure out a way of having links different shades based on what row they are on (even/odd). +a unique challenge for this dark mode skin. +Probably writing the specificity for this incorrectly. --Godfrey Martinez 02/04/21 + +.table-striped>tbody>tr:nth-of-type(even)>a:link{ + color:#000d07; +} +.table-striped>tbody>tr:nth-of-type(odd)>a:link{ + color:#bfbfbf; + +}*/ +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--button-default); + color: var(--nav-link); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--nav-link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--nav-link); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-black { + color: var(--nav-link) !important; +} +.btn-primary:hover { + background-color: var(--button-primary); + color: var(--link) !important; +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: var(--back-sub) !important; +} +.input-group, +.input-group-addon { + background-color: var(--back-sub); + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + background-color: var(--back-main); + color: var(--header); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--nav-link); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--back-sub); + color: var(--visited-link); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-black-dark .main-header .navbar .dropdown-menu li a { + color: #FFFFFF; +} +.skin-black-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #000000; +} +.fixed-table-body thead th .th-inner, +.skin-black-dark .sidebar-menu > li.active > a, +.skin-black .sidebar-menu > li:hover > a, +.sidebar-toggle:hover { + background-color: var(--header) !important; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +a { + color: var(--link); +} +a:link { + color: var(--link); +} +a:hover { + color: var(--hover-link); + text-decoration: underline; +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +div.container.row-new-striped { + background-color: var(--back-sub); +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: var(--back-sub); +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} +/* + * Skin: Blue + * ---------- + */ +.skin-blue .main-header .navbar { + background-color: #3c8dbc; +} +.skin-blue .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-blue .main-header .navbar .nav > li > a:hover, +.skin-blue .main-header .navbar .nav > li > a:active, +.skin-blue .main-header .navbar .nav > li > a:focus, +.skin-blue .main-header .navbar .nav .open > a, +.skin-blue .main-header .navbar .nav .open > a:hover, +.skin-blue .main-header .navbar .nav .open > a:focus, +.skin-blue .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-blue .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-blue .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-blue .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-blue .main-header .navbar .sidebar-toggle:hover { + background-color: #367fa9; +} +@media (max-width: 767px) { + .skin-blue .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-blue .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-blue .main-header .navbar .dropdown-menu li a:hover { + background: #367fa9; + } +} +.skin-blue .main-header li.user-header { + background-color: #3c8dbc; +} +.skin-blue .content-header { + background: transparent; +} +.skin-blue .wrapper, +.skin-blue .main-sidebar, +.skin-blue .left-side { + background-color: #222d32; +} +.skin-blue .user-panel > .info, +.skin-blue .user-panel > .info > a { + color: #fff; +} +.skin-blue .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-blue .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-blue .sidebar-menu > li:hover > a, +.skin-blue .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #3c8dbc; +} +.skin-blue .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-blue .sidebar a { + color: #b8c7ce; +} +.skin-blue .sidebar a:hover { + text-decoration: none; +} +.skin-blue .treeview-menu > li > a { + color: #8aa4af; +} +.skin-blue .treeview-menu > li.active > a, +.skin-blue .treeview-menu > li > a:hover { + color: #fff; +} +.skin-blue .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-blue .sidebar-form input[type="text"], +.skin-blue .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-blue .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-blue .sidebar-form input[type="text"]:focus, +.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-blue .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-blue.layout-top-nav .main-header > .logo .logo-variant { + background-color: unset; +} +.btn.btn-primary, +btn-sm.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +btn-sm .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #307095; + border-color: #23536f; + color: #fff !important; +} +.btna.btn-primary:hover, +btn-sma.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #23536f; + border-color: #23536f; + color: #fff; +} +.btn.btn-white:link, +btn-sm.btn-white:link, +.btn:hover.btn-white:link { + background-color: #307095; + color: #fff; +} +.btn.btn-white:hover, +btn-sm.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #173648; + color: #fff; +} +.btn.btn-white:visited, +btn-sm.btn-white:visited, +.btn:hover.btn-white:visited { + background-color: #173648; + color: #fff; +} +.btn-warning, +.btn-warning:link, +a.btn-warning:hover, +.btn-warning:link, +.btn-warning:visited, +.btn-danger, +.btn-danger:link, +a.btn-danger:hover, +.btn-danger:link, +.btn-danger:visited { + color: #fff; +} +.btn-default:link, +a.btn-default:hover, +.btn-default:visited { + color: #505156; +} +:root { + --button-default: #505156; + --button-primary: #1d455b; + --button-hover: #173648; + --header: #3c8dbc; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #296282; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #5fa4cc; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #86bad8; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +a:link { + color: var(--link); +} +a:visited { + color: var(--visited-link); +} +a:hover { + color: var(--hover-link); +} +.text-primary { + color: #23536f; +} +.far fa-life-ring { + color: var(--link); +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #3c8dbc; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +a.settings_button:link, +a.settings_button:visited, +a.settings_button:hover { + color: #3c8dbc; +} +/* + * Skin: blue dark + * ---------- + */ +.skin-blue-dark .main-header .navbar { + background-color: #3c8dbc; +} +.skin-blue-dark .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-blue-dark .main-header .navbar .nav > li > a:hover, +.skin-blue-dark .main-header .navbar .nav > li > a:active, +.skin-blue-dark .main-header .navbar .nav > li > a:focus, +.skin-blue-dark .main-header .navbar .nav .open > a, +.skin-blue-dark .main-header .navbar .nav .open > a:hover, +.skin-blue-dark .main-header .navbar .nav .open > a:focus, +.skin-blue-dark .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-blue-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-blue-dark .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-blue-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-blue-dark .main-header .navbar .sidebar-toggle:hover { + background-color: #367fa9; +} +@media (max-width: 767px) { + .skin-blue-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-blue-dark .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-blue-dark .main-header .navbar .dropdown-menu li a:hover { + background: #367fa9; + color: #fff; + } +} +.skin-blue-dark .main-header li.user-header { + background-color: #3c8dbc; +} +.skin-blue-dark .content-header { + background: transparent; +} +.skin-blue-dark .wrapper, +.skin-blue-dark .main-sidebar, +.skin-blue-dark .left-side { + background-color: #222d32; +} +.skin-blue-dark .user-panel > .info, +.skin-blue-dark .user-panel > .info > a { + color: #fff; +} +.skin-blue-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-blue-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-blue-dark .sidebar-menu > li:hover > a, +.skin-blue-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #3c8dbc; +} +.skin-blue-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-blue-dark .sidebar a { + color: #b8c7ce; +} +.skin-blue-dark .sidebar a:hover { + text-decoration: none; +} +.skin-blue-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-blue-dark .treeview-menu > li.active > a, +.skin-blue-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-blue-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-blue-dark .sidebar-form input[type="text"], +.skin-blue-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-blue-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-blue-dark .sidebar-form input[type="text"]:focus, +.skin-blue-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-blue-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-blue-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-blue-dark.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #fff !important; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #307095; + border-color: #FFF; + color: #FFF; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #23536f; + border-color: #23536f; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #307095; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #173648; + color: #fff; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #272727; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #296282; + --button-primary: #1d455b; + --button-hover: #173648; + --header: #3c8dbc; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #00BFFF; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #4dd2ff; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #99e5ff; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +a.actions { + color: #fff !important; +} +.pagination > li > a { + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu { + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.far fa-life-ring { + color: var(--link); +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +a:link { + color: var(--link); +} +.btn-primary.hover { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.small-box h3, +.small-box p { + color: var(--nav-link) !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--button-default); + color: var(--link); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--link); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-blue { + color: var(--text-main); +} +.btn-primary:hover { + background-color: var(--button-primary); +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.fixed-table-body thead th .th-inner { + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.input-group, +.input-group-addon { + background-color: var(--back-sub) !important; + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + background-color: var(--back-main); + color: var(--header); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--header); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--header); + color: var(--back-main); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-blue-dark .main-header .navbar .dropdown-menu li a { + color: #FFFFFF; +} +.skin-blue-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #3c8dbc; +} +.fixed-table-body thead th .th-inner, +.skin-blue-dark .sidebar-menu > li.active > a, +.skin-blue .sidebar-menu > li:hover > a, +.sidebar-toggle:hover { + background-color: var(--header) !important; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub-alt); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +a { + color: var(--link); +} +a:link { + color: var(--link); +} +a:hover { + color: var(--hover-link); + text-decoration: underline; +} +a:visited { + color: var(--visited-link); +} +#customFieldsTable a[href*='/models'] { + color: var(--back-sub); +} +#customFieldsTable a[href*='/fieldsets'] { + background-color: transparent; +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} +/* + * Skin: Contrast + * ---------- + */ +.skin-contrast .main-header .navbar { + background-color: #001F3F; +} +.skin-contrast .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-contrast .main-header .navbar .nav > li > a:hover, +.skin-contrast .main-header .navbar .nav > li > a:active, +.skin-contrast .main-header .navbar .nav > li > a:focus, +.skin-contrast .main-header .navbar .nav .open > a, +.skin-contrast .main-header .navbar .nav .open > a:hover, +.skin-contrast .main-header .navbar .nav .open > a:focus, +.skin-contrast .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-contrast .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-contrast .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-contrast .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-contrast .main-header .navbar .sidebar-toggle:hover { + background-color: #001226; +} +@media (max-width: 767px) { + .skin-contrast .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-contrast .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-contrast .main-header .navbar .dropdown-menu li a:hover { + background: #001226; + } +} +.skin-contrast .main-header li.user-header { + background-color: #001F3F; +} +.skin-contrast .content-header { + background: transparent; +} +.skin-contrast .wrapper, +.skin-contrast .main-sidebar, +.skin-contrast .left-side { + background-color: #222d32; +} +.skin-contrast .user-panel > .info, +.skin-contrast .user-panel > .info > a { + color: #fff; +} +.skin-contrast .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-contrast .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-contrast .sidebar-menu > li:hover > a, +.skin-contrast .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #001F3F; +} +.skin-contrast .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-contrast .sidebar a { + color: #b8c7ce; +} +.skin-contrast .sidebar a:hover { + text-decoration: none; +} +.skin-contrast .treeview-menu > li > a { + color: #8aa4af; +} +.skin-contrast .treeview-menu > li.active > a, +.skin-contrast .treeview-menu > li > a:hover { + color: #fff; +} +.skin-contrast .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-contrast .sidebar-form input[type="text"], +.skin-contrast .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-contrast .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-contrast .sidebar-form input[type="text"]:focus, +.skin-contrast .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-contrast .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-contrast .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-contrast.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #00060c; + border-color: #000000; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #000000; + border-color: #000000; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #00060c; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #000000; + color: #fff; +} +a.btn.btn-link.text-left { + color: #001F3F; + border: 1px solid #000; +} +a.btn.btn-link.text-left:hover { + color: #001F3F; +} +a { + color: #001F3F; +} +a:hover { + color: #001F3F; + text-decoration: underline; +} +a:visited { + color: #001F3F; +} +a.btn:hover { + color: #fff; + text-decoration: underline; +} +.text-primary { + color: #000000; +} +.skin-contrast .treeview-menu > li > a { + color: #FFF; +} +.bg-teal { + background-color: #1b6a6a !important; +} +.bg-orange { + background-color: #995400 !important; +} +.bg-purple { + background-color: #3a3767 !important; +} +.bg-maroon { + background-color: #7d1038 !important; +} +.pagination > li > a { + color: #00060c !important; +} +.pagination > .active > a { + background-color: #001F3F; + color: #FFF !important; +} +btn-success { + background-color: #000d07; +} +input::-webkit-input-placeholder { + /* Chrome/Opera/Safari */ + color: #b5bbc8 !important; +} +input::-moz-placeholder { + /* Firefox 19+ */ + color: #b5bbc8 !important; +} +input::-ms-input-placeholder { + /* IE 10+ */ + color: #b5bbc8 !important; +} +.select2-default, +.select2-selection__placeholder { + color: #37383c !important; +} +.callout.callout-info { + background-color: #23536f !important; +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +/* + * Skin: Green + * ---------- + */ +:root { + --background: #222; + --back-main: #333; + --back-sub: #3d4144; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #005a31; + --button-primary: #002715; + --button-hover: #000d07; + --header: #00a65a; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #00a65a; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #00f383; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #0dff90; +} +.skin-green .main-header .navbar { + background-color: #00a65a; +} +.skin-green .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-green .main-header .navbar .nav > li > a:hover, +.skin-green .main-header .navbar .nav > li > a:active, +.skin-green .main-header .navbar .nav > li > a:focus, +.skin-green .main-header .navbar .nav .open > a, +.skin-green .main-header .navbar .nav .open > a:hover, +.skin-green .main-header .navbar .nav .open > a:focus, +.skin-green .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-green .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-green .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-green .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-green .main-header .navbar .sidebar-toggle:hover { + background-color: #008d4c; +} +@media (max-width: 767px) { + .skin-green .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-green .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-green .main-header .navbar .dropdown-menu li a:hover { + background: #008d4c; + } +} +.skin-green .main-header li.user-header { + background-color: #00a65a; +} +.skin-green .content-header { + background: transparent; +} +.skin-green .wrapper, +.skin-green .main-sidebar, +.skin-green .left-side { + background-color: #222d32; +} +.skin-green .user-panel > .info, +.skin-green .user-panel > .info > a { + color: #fff; +} +.skin-green .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-green .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-green .sidebar-menu > li:hover > a, +.skin-green .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #00a65a; +} +.skin-green .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-green .sidebar a { + color: #b8c7ce; +} +.skin-green .sidebar a:hover { + text-decoration: none; +} +.skin-green .treeview-menu > li > a { + color: #8aa4af; +} +.skin-green .treeview-menu > li.active > a, +.skin-green .treeview-menu > li > a:hover { + color: #fff; +} +.skin-green .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-green .sidebar-form input[type="text"], +.skin-green .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-green .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-green .sidebar-form input[type="text"]:focus, +.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-green .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-green.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #00733e; + border-color: #004023; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #004023; + border-color: #004023; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #00733e; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #000d07; + color: #fff; +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +a:link { + color: var(--link); +} +a:visited { + color: var(--visited-link); +} +a { + color: #00a65a; +} +a:hover { + color: #004023; +} +a:visited { + color: #00a65a; +} +.text-primary { + color: #004023; +} +.far fa-life-ring { + color: var(--link); +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #00a65a; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +/* + * Skin: green dark + * ---------- + */ +.skin-green-dark .main-header .navbar { + background-color: #00a65a; +} +.skin-green-dark .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-green-dark .main-header .navbar .nav > li > a:hover, +.skin-green-dark .main-header .navbar .nav > li > a:active, +.skin-green-dark .main-header .navbar .nav > li > a:focus, +.skin-green-dark .main-header .navbar .nav .open > a, +.skin-green-dark .main-header .navbar .nav .open > a:hover, +.skin-green-dark .main-header .navbar .nav .open > a:focus, +.skin-green-dark .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-green-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-green-dark .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-green-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-green-dark .main-header .navbar .sidebar-toggle:hover { + background-color: #008d4c; +} +@media (max-width: 767px) { + .skin-green-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-green-dark .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-green-dark .main-header .navbar .dropdown-menu li a:hover { + background: #008d4c; + color: #fff; + } +} +.skin-green-dark .main-header li.user-header { + background-color: #00a65a; +} +.skin-green-dark .content-header { + background: transparent; +} +.skin-green-dark .wrapper, +.skin-green-dark .main-sidebar, +.skin-green-dark .left-side { + background-color: #222d32; +} +.skin-green-dark .user-panel > .info, +.skin-green-dark .user-panel > .info > a { + color: #fff; +} +.skin-green-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-green-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-green-dark .sidebar-menu > li:hover > a, +.skin-green-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #00a65a; +} +.skin-green-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-green-dark .sidebar a { + color: #b8c7ce; +} +.skin-green-dark .sidebar a:hover { + text-decoration: none; +} +.skin-green-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-green-dark .treeview-menu > li.active > a, +.skin-green-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-green-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-green-dark .sidebar-form input[type="text"], +.skin-green-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-green-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-green-dark .sidebar-form input[type="text"]:focus, +.skin-green-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-green-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-green-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-green-dark.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #FFF !important; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #00733e; + border-color: #FFF; + color: #FFF; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #004023; + border-color: #004023; + color: #FFF; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #00733e; + color: #FFF; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #000d07; + color: #FFF; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #312F2F; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #006400; + --button-primary: #003100; + --button-hover: #000000; + --header: #006400; + /* Use same as Header picker */ + --text-main: #FFF; + --text-sub: #9b9b9b; + --link: #9ACD32; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #b8dc70; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #d7ebad; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +a.actions { + color: #fff !important; +} +.pagination > li > a { + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu { + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--nav-link); +} +.far fa-life-ring { + color: var(--link); +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +.btn-primary.hover { + color: var(--nav-link); +} +.small-box h3, +.small-box p { + color: var(--nav-link) !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--button-default); + color: var(--link); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--link); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-green { + color: var(--text-main); +} +.btn-primary:hover { + background-color: var(--button-primary); +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.fixed-table-body thead th .th-inner { + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.input-group, +.input-group-addon { + background-color: var(--back-sub) !important; + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--header); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--header); + color: var(--back-main); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-green-dark .main-header .navbar .dropdown-menu li a { + color: #FFFFFF; +} +.skin-green-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #006300; +} +.fixed-table-body thead th .th-inner, +.skin-green-dark .sidebar-menu > li.active > a, +.skin-green .sidebar-menu > li:hover > a, +.sidebar-toggle:hover { + background-color: var(--header) !important; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +a { + color: var(--link); +} +a:link { + color: var(--link); +} +a:hover { + color: var(--hover-link); + text-decoration: underline; +} +a:visited { + color: var(--visited-link); +} +#customFieldsTable a[href*='/models'] { + color: var(--back-sub); +} +#customFieldsTable a[href*='/fieldsets'] { + background-color: transparent; +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} +/* + * Skin: orange dark + * ---------- + */ +.skin-orange-dark .main-header .navbar { + background-color: #FF8C00; +} +.skin-orange-dark .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-orange-dark .main-header .navbar .nav > li > a:hover, +.skin-orange-dark .main-header .navbar .nav > li > a:active, +.skin-orange-dark .main-header .navbar .nav > li > a:focus, +.skin-orange-dark .main-header .navbar .nav .open > a, +.skin-orange-dark .main-header .navbar .nav .open > a:hover, +.skin-orange-dark .main-header .navbar .nav .open > a:focus, +.skin-orange-dark .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-orange-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-orange-dark .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-orange-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-orange-dark .main-header .navbar .sidebar-toggle:hover { + background-color: #e67e00; +} +@media (max-width: 767px) { + .skin-orange-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-orange-dark .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-orange-dark .main-header .navbar .dropdown-menu li a:hover { + background: #e67e00; + color: #fff; + } +} +.skin-orange-dark .main-header li.user-header { + background-color: #FF8C00; +} +.skin-orange-dark .content-header { + background: transparent; +} +.skin-orange-dark .wrapper, +.skin-orange-dark .main-sidebar, +.skin-orange-dark .left-side { + background-color: #222d32; +} +.skin-orange-dark .user-panel > .info, +.skin-orange-dark .user-panel > .info > a { + color: #fff; +} +.skin-orange-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-orange-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-orange-dark .sidebar-menu > li:hover > a, +.skin-orange-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #FF8C00; +} +.skin-orange-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-orange-dark .sidebar a { + color: #b8c7ce; +} +.skin-orange-dark .sidebar a:hover { + text-decoration: none; +} +.skin-orange-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-orange-dark .treeview-menu > li.active > a, +.skin-orange-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-orange-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-orange-dark .sidebar-form input[type="text"], +.skin-orange-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-orange-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-orange-dark .sidebar-form input[type="text"]:focus, +.skin-orange-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-orange-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-orange-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-orange-dark.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #fff !important; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #cc7000; + border-color: #fff; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #995400; + border-color: #995400; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #cc7000; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #663800; + color: #fff; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #2E2C2C; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #b36200; + --button-primary: #804600; + --button-hover: #663800; + --header: #FF8C00; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #FFA500; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #ffc04d; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #ffdb99; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +a.actions { + color: #fff !important; +} +.pagination > li > a { + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu { + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +.far fa-life-ring { + color: var(--link); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +a:link { + color: var(--link); +} +a:visited { + color: var(--visited-link); +} +a:hover { + color: var(--hover-link); +} +.btn-primary.hover { + color: var(--nav-link); +} +.small-box h3, +.small-box p { + color: var(--nav-link) !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--button-default); + color: var(--nav-link); +} +a:link.btn-default { + color: var(--nav-link); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--nav-link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--background); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-orange { + color: var(--nav-link) !important; + border-color: var(--button-primary); +} +.btn-primary:hover { + background-color: var(--button-primary); +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.fixed-table-body thead th .th-inner { + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.input-group, +.input-group-addon { + background-color: var(--back-sub) !important; + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + background-color: var(--back-main); + color: var(--header); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--header); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--header); + color: var(--back-main); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-orange-dark .main-header .navbar .dropdown-menu li a { + color: #FFFFFF; +} +.skin-orange-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #ff8c00; +} +.fixed-table-body thead th .th-inner, +.skin-orange-dark .sidebar-menu > li.active > a, +.skin-orange .sidebar-menu > li:hover > a, +.sidebar-toggle:hover { + background-color: var(--header) !important; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub-alt); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +#customFieldsTable a[href*='/models'] { + color: var(--back-sub); +} +#customFieldsTable a[href*='/fieldsets'] { + background-color: transparent; +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} +/* + * Skin: Purple + * ---------- + */ +.skin-purple .main-header .navbar { + background-color: #605ca8; +} +.skin-purple .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-purple .main-header .navbar .nav > li > a:hover, +.skin-purple .main-header .navbar .nav > li > a:active, +.skin-purple .main-header .navbar .nav > li > a:focus, +.skin-purple .main-header .navbar .nav .open > a, +.skin-purple .main-header .navbar .nav .open > a:hover, +.skin-purple .main-header .navbar .nav .open > a:focus, +.skin-purple .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-purple .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-purple .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-purple .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-purple .main-header .navbar .sidebar-toggle:hover { + background-color: #555299; +} +@media (max-width: 767px) { + .skin-purple .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-purple .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-purple .main-header .navbar .dropdown-menu li a:hover { + background: #555299; + } +} +.skin-purple .main-header li.user-header { + background-color: #605ca8; +} +.skin-purple .content-header { + background: transparent; +} +.skin-purple .wrapper, +.skin-purple .main-sidebar, +.skin-purple .left-side { + background-color: #222d32; +} +.skin-purple .user-panel > .info, +.skin-purple .user-panel > .info > a { + color: #fff; +} +.skin-purple .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-purple .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-purple .sidebar-menu > li:hover > a, +.skin-purple .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #605ca8; +} +.skin-purple .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-purple .sidebar a { + color: #b8c7ce; +} +.skin-purple .sidebar a:hover { + text-decoration: none; +} +.skin-purple .treeview-menu > li > a { + color: #8aa4af; +} +.skin-purple .treeview-menu > li.active > a, +.skin-purple .treeview-menu > li > a:hover { + color: #fff; +} +.skin-purple .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-purple .sidebar-form input[type="text"], +.skin-purple .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-purple .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-purple .sidebar-form input[type="text"]:focus, +.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-purple .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-purple.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #4c4988; + border-color: #3a3767; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #3a3767; + border-color: #3a3767; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #4c4988; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #272546; + color: #fff; +} +a { + color: var(--link); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #3a3767; +} +:root { + --button-default: #434078; + --button-primary: #302e56; + --button-hover: #272546; + --header: #605ca8; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #605ca8; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #918ec3; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #c1c0dd; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #605ca8; +} +.far fa-life-ring { + color: var(--link); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +/* + * Skin: purple dark + * ---------- + */ +.skin-purple-dark .main-header .navbar { + background-color: #605ca8; +} +.skin-purple-dark .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-purple-dark .main-header .navbar .nav > li > a:hover, +.skin-purple-dark .main-header .navbar .nav > li > a:active, +.skin-purple-dark .main-header .navbar .nav > li > a:focus, +.skin-purple-dark .main-header .navbar .nav .open > a, +.skin-purple-dark .main-header .navbar .nav .open > a:hover, +.skin-purple-dark .main-header .navbar .nav .open > a:focus, +.skin-purple-dark .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-purple-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-purple-dark .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-purple-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-purple-dark .main-header .navbar .sidebar-toggle:hover { + background-color: #555299; +} +@media (max-width: 767px) { + .skin-purple-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-purple-dark .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-purple-dark .main-header .navbar .dropdown-menu li a:hover { + background: #555299; + color: #fff; + } +} +.skin-purple-dark .main-header li.user-header { + background-color: #605ca8; +} +.skin-purple-dark .content-header { + background: transparent; +} +.skin-purple-dark .wrapper, +.skin-purple-dark .main-sidebar, +.skin-purple-dark .left-side { + background-color: #222d32; +} +.skin-purple-dark .user-panel > .info, +.skin-purple-dark .user-panel > .info > a { + color: #fff; +} +.skin-purple-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-purple-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-purple-dark .sidebar-menu > li:hover > a, +.skin-purple-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #605ca8; +} +.skin-purple-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-purple-dark .sidebar a { + color: #b8c7ce; +} +.skin-purple-dark .sidebar a:hover { + text-decoration: none; +} +.skin-purple-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-purple-dark .treeview-menu > li.active > a, +.skin-purple-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-purple-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-purple-dark .sidebar-form input[type="text"], +.skin-purple-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-purple-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-purple-dark .sidebar-form input[type="text"]:focus, +.skin-purple-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-purple-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-purple-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-purple-dark.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #fff !important; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #4c4988; + border-color: #FFF; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #3a3767; + border-color: #3a3767; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #4c4988; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #272546; + color: #fff; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #080808; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #434078; + --button-primary: #302e56; + --button-hover: #272546; + --header: #605ca8; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #AC83FF; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #dfd0ff; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #ffffff; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +.pagination > li > a { + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--button-default); + border-color: var(--light-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu { + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.label-default { + background-color: var(--back-sub); + color: #fff; +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +a:link { + color: var(--link); +} +.far fa-life-ring { + color: var(--link); +} +.btn-primary.hover { + color: var(--nav-link); +} +.small-box h3, +.small-box p { + color: var(--nav-link) !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +a:link.btn-default { + color: var(--nav-link); +} +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--button-default); + color: var(--nav-link); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--nav-link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--nav-link); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-purple { + color: var(--nav-link) !important; +} +.btn-primary:hover { + background-color: var(--button-primary); +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.fixed-table-body thead th .th-inner { + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.input-group, +.input-group-addon { + background-color: var(--back-sub) !important; + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + background-color: var(--back-main); + color: var(--link); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--header); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--header); + color: var(--back-main); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-purple-dark .main-header .navbar .dropdown-menu li a { + color: #FFFFFF; +} +.skin-purple-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #5f5ca8; +} +.fixed-table-body thead th .th-inner, +.skin-purple-dark .sidebar-menu > li.active > a, +.skin-purple .sidebar-menu > li:hover > a, +.sidebar-toggle:hover { + background-color: var(--header) !important; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub-alt); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +a { + color: var(--link); +} +a:link { + color: var(--link); +} +a:hover { + color: var(--hover-link); + text-decoration: underline; +} +a:visited { + color: var(--visited-link); +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} +/* + * Skin: Red + * ---------- + */ +.skin-red .main-header .navbar { + background-color: #dd4b39; +} +.skin-red .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-red .main-header .navbar .nav > li > a:hover, +.skin-red .main-header .navbar .nav > li > a:active, +.skin-red .main-header .navbar .nav > li > a:focus, +.skin-red .main-header .navbar .nav .open > a, +.skin-red .main-header .navbar .nav .open > a:hover, +.skin-red .main-header .navbar .nav .open > a:focus, +.skin-red .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-red .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-red .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-red .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-red .main-header .navbar .sidebar-toggle:hover { + background-color: #d73925; +} +@media (max-width: 767px) { + .skin-red .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-red .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-red .main-header .navbar .dropdown-menu li a:hover { + background: #d73925; + } +} +.skin-red .main-header li.user-header { + background-color: #dd4b39; +} +.skin-red .content-header { + background: transparent; +} +.skin-red .wrapper, +.skin-red .main-sidebar, +.skin-red .left-side { + background-color: #222d32; +} +.skin-red .user-panel > .info, +.skin-red .user-panel > .info > a { + color: #fff; +} +.skin-red .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-red .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-red .sidebar-menu > li:hover > a, +.skin-red .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #dd4b39; +} +.skin-red .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-red .sidebar a { + color: #b8c7ce; +} +.skin-red .sidebar a:hover { + text-decoration: none; +} +.skin-red .treeview-menu > li > a { + color: #8aa4af; +} +.skin-red .treeview-menu > li.active > a, +.skin-red .treeview-menu > li > a:hover { + color: #fff; +} +.skin-red .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-red .sidebar-form input[type="text"], +.skin-red .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-red .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-red .sidebar-form input[type="text"]:focus, +.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-red .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-red.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #c23321; + border-color: #96271a; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #96271a; + border-color: #96271a; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #c23321; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #6b1c12; + color: #fff; +} +a { + color: #dd4b39; +} +a:hover { + color: #96271a; +} +a:visited { + color: #dd4b39; +} +.text-primary { + color: #96271a; +} +:root { + --button-default: #ac2d1e; + --button-primary: #802216; + --button-hover: #6b1c12; + --header: #dd4b39; + /* Use same as Header picker */ + --text-main: #BBB; + --text-alt: #222; + --text-sub: #9b9b9b; + --link: #dd4b39; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #e8867a; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #f3c2bc; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +a:link { + color: var(--link); +} +a:visited { + color: var(--visited-link); +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #dd4b39; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.far fa-life-ring { + color: var(--link); +} +/* + * Skin: red dark + * ---------- + */ +.skin-red-dark .main-header .navbar { + background-color: #dd4b39; +} +.skin-red-dark .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-red-dark .main-header .navbar .nav > li > a:hover, +.skin-red-dark .main-header .navbar .nav > li > a:active, +.skin-red-dark .main-header .navbar .nav > li > a:focus, +.skin-red-dark .main-header .navbar .nav .open > a, +.skin-red-dark .main-header .navbar .nav .open > a:hover, +.skin-red-dark .main-header .navbar .nav .open > a:focus, +.skin-red-dark .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-red-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-red-dark .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-red-dark .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-red-dark .main-header .navbar .sidebar-toggle:hover { + background-color: #d73925; +} +@media (max-width: 767px) { + .skin-red-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-red-dark .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-red-dark .main-header .navbar .dropdown-menu li a:hover { + background: #d73925; + color: #fff; + } +} +.skin-red-dark .main-header li.user-header { + background-color: #dd4b39; +} +.skin-red-dark .content-header { + background: transparent; +} +.skin-red-dark .wrapper, +.skin-red-dark .main-sidebar, +.skin-red-dark .left-side { + background-color: #222d32; +} +.skin-red-dark .user-panel > .info, +.skin-red-dark .user-panel > .info > a { + color: #fff; +} +.skin-red-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-red-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-red-dark .sidebar-menu > li:hover > a, +.skin-red-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #dd4b39; +} +.skin-red-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-red-dark .sidebar a { + color: #b8c7ce; +} +.skin-red-dark .sidebar a:hover { + text-decoration: none; +} +.skin-red-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-red-dark .treeview-menu > li.active > a, +.skin-red-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-red-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-red-dark .sidebar-form input[type="text"], +.skin-red-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-red-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-red-dark .sidebar-form input[type="text"]:focus, +.skin-red-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-red-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-red-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-red-dark.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn, +.btn:hover { + color: #fff; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #c23321; + border-color: #FFF; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #96271a; + border-color: #96271a; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #c23321; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #6b1c12; + color: #fff; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +a:hover { + color: #fff; +} +a:visited { + color: #fff; +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #3d4144; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #ac2d1e; + --button-primary: #802216; + --button-hover: #6b1c12; + --header: #dd4b39; + /* Use same as Header picker */ + --text-main: #BBB; + --text-alt: #222; + --text-sub: #9b9b9b; + --link: #e00000; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #D24D57; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #D24D57; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +.pagination > li > a { + color: var(--light-link); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--visited-link); + border-color: var(--light-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu { + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +a:link { + color: var(--link); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--nav-link); +} +.far fa-life-ring { + color: var(--link); +} +.btn-primary.hover { + color: var(--nav-link); +} +.small-box h3, +.small-box p { + color: var(--nav-link) !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--back-sub); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--link); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-red { + color: var(--button-primary); +} +.btn-primary:hover { + background-color: var(--button-primary); +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.fixed-table-body thead th .th-inner { + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.input-group, +.input-group-addon { + background-color: var(--back-sub) !important; + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + background-color: var(--back-main); + color: var(--header); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--header); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--header); + color: var(--back-main); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-red-dark .main-header .navbar .dropdown-menu li a { + color: #FFFFFF; +} +.skin-red-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #c23320; +} +.fixed-table-body thead th .th-inner, +.skin-red-dark .sidebar-menu > li.active > a, +.skin-red .sidebar-menu > li:hover > a, +.sidebar-toggle:hover { + background-color: var(--header) !important; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub-alt); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +#upload-table tbody > tr.warning > td, +#upload-table h3, +#upload-table p { + background-color: #fcf8e3; + color: #000; +} +a { + color: var(--link); +} +a:link { + color: var(--nav-link); +} +a:hover { + color: var(--nav-link); + text-decoration: underline; +} +a:visited { + color: var(--nav-link); +} +#customFieldsTable a[href*='/models'] { + color: var(--back-sub); +} +#customFieldsTable a[href*='/fieldsets'] { + background-color: transparent; +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} +/* + * Skin: Orange + * ---------- + */ +.skin-orange .main-header .navbar { + background-color: #FF8C00; +} +.skin-orange .main-header .navbar .nav > li > a { + color: #fff; +} +.skin-orange .main-header .navbar .nav > li > a:hover, +.skin-orange .main-header .navbar .nav > li > a:active, +.skin-orange .main-header .navbar .nav > li > a:focus, +.skin-orange .main-header .navbar .nav .open > a, +.skin-orange .main-header .navbar .nav .open > a:hover, +.skin-orange .main-header .navbar .nav .open > a:focus, +.skin-orange .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-orange .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-orange .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-orange .main-header .navbar .sidebar-toggle { + color: #fff; +} +.skin-orange .main-header .navbar .sidebar-toggle:hover { + background-color: #e67e00; +} +@media (max-width: 767px) { + .skin-orange .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-orange .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-orange .main-header .navbar .dropdown-menu li a:hover { + background: #e67e00; + } +} +.skin-orange .main-header li.user-header { + background-color: #FF8C00; +} +.skin-orange .content-header { + background: transparent; +} +.skin-orange .wrapper, +.skin-orange .main-sidebar, +.skin-orange .left-side { + background-color: #222d32; +} +.skin-orange .user-panel > .info, +.skin-orange .user-panel > .info > a { + color: #fff; +} +.skin-orange .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-orange .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-orange .sidebar-menu > li:hover > a, +.skin-orange .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #FF8C00; +} +.skin-orange .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-orange .sidebar a { + color: #b8c7ce; +} +.skin-orange .sidebar a:hover { + text-decoration: none; +} +.skin-orange .treeview-menu > li > a { + color: #8aa4af; +} +.skin-orange .treeview-menu > li.active > a, +.skin-orange .treeview-menu > li > a:hover { + color: #fff; +} +.skin-orange .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-orange .sidebar-form input[type="text"], +.skin-orange .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-orange .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-orange .sidebar-form input[type="text"]:focus, +.skin-orange .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-orange .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-orange .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-orange.layout-top-nav .main-header > .logo .logo-variant { + background-color: none; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #cc7000; + border-color: #995400; + color: #fff; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #995400; + border-color: #995400; + color: #fff; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #cc7000; + color: #fff; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #663800; + color: #fff; +} +a { + color: var(--link); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #995400; +} +:root { + --button-default: #b36200; + --button-primary: #804600; + --button-hover: #663800; + --header: #FF8C00; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #FF8C00; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #ffa333; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #ffaf4d; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #FFF; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +.far fa-life-ring { + color: var(--link); +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #FF8C00; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +/* + * Skin: Yellow + * ---------- + */ +.skin-yellow .main-header .navbar { + background-color: #FBCC34; +} +.skin-yellow .main-header .navbar .nav > li > a { + color: rgba(255, 255, 255, 0.8); +} +.skin-yellow .main-header .navbar .nav > li > a:hover, +.skin-yellow .main-header .navbar .nav > li > a:active, +.skin-yellow .main-header .navbar .nav > li > a:focus, +.skin-yellow .main-header .navbar .nav .open > a, +.skin-yellow .main-header .navbar .nav .open > a:hover, +.skin-yellow .main-header .navbar .nav .open > a:focus, +.skin-yellow .main-header .navbar .nav > .active > a { + background: rgba(0, 0, 0, 0.1); + color: #f6f6f6; +} +.skin-yellow .main-header .navbar .sidebar-toggle { + color: rgba(255, 255, 255, 0.8); +} +.skin-yellow .main-header .navbar .sidebar-toggle:hover { + color: #f6f6f6; + background: rgba(0, 0, 0, 0.1); +} +.skin-yellow .main-header .navbar .sidebar-toggle { + color: #000; +} +.skin-yellow .main-header .navbar .sidebar-toggle:hover { + background-color: #fbc61b; +} +@media (max-width: 767px) { + .skin-yellow .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + } + .skin-yellow .main-header .navbar .dropdown-menu li a { + color: #333; + } + .skin-yellow .main-header .navbar .dropdown-menu li a:hover { + background: #fbc61b; + } +} +.skin-yellow .main-header li.user-header { + background-color: #FBCC34; +} +.skin-yellow .content-header { + background: transparent; +} +.skin-yellow .wrapper, +.skin-yellow .main-sidebar, +.skin-yellow .left-side { + background-color: #222d32; +} +.skin-yellow .user-panel > .info, +.skin-yellow .user-panel > .info > a { + color: #fff; +} +.skin-yellow .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-yellow .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-yellow .sidebar-menu > li:hover > a, +.skin-yellow .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #FBCC34; +} +.skin-yellow .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-yellow .sidebar a { + color: #b8c7ce; +} +.skin-yellow .sidebar a:hover { + text-decoration: none; +} +.skin-yellow .treeview-menu > li > a { + color: #8aa4af; +} +.skin-yellow .treeview-menu > li.active > a, +.skin-yellow .treeview-menu > li > a:hover { + color: #fff; +} +.skin-yellow .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-yellow .sidebar-form input[type="text"], +.skin-yellow .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-yellow .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-yellow .sidebar-form input[type="text"]:focus, +.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-yellow .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.skin-yellow.layout-top-nav .main-header > .logo .logo-variant { + color: #413F42; + background-color: none; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: #f7be05; + border-color: #c59704; + color: var(--nav-link); +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: #c59704; + border-color: #c59704; + color: var(--nav-link); +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: #f7be05; + color: var(--nav-link); +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: #937103; + color: var(--nav-link); +} +a.btn-info:link, +a.btn-warning:link, +a.btn-danger:link { + color: #FFF; +} +a.btn-info:visited, +a.btn-warning:visited, +a.btn-danger:visited { + color: #FFF; +} +a { + color: var(--link); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #c59704; +} +:root { + --button-default: #deab04; + --button-primary: #ac8403; + --button-hover: #937103; + --header: #FBCC34; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #5b585c; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #747176; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #b4b1b5; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #222; + /* Use same as Header picker */ + --light-link: #fff; + /* Use same as Header picker */ +} +.fixed-table-container tbody .selected td { + background-color: #fff8af; +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #FBCC34; +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.navbar-nav > li > a:visited { + color: var(--nav-link); +} +:hover { + color: var(--nav-link); +} +.skin-yellow .main-header .navbar .nav > li > a { + color: #413F42; +} +.far fa-life-ring { + color: var(--link); +} +/* + * Skin: yellow dark + * ---------- + */ +.skin-yellow-dark .main-header .navbar .sidebar-toggle { + color: #000 !important; +} +.skin-yellow-dark .main-header .navbar .sidebar-toggle:hover { + background-color: var(--link); +} +@media (max-width: 767px) { + .skin-yellow-dark .main-header .navbar .dropdown-menu li.divider { + background-color: rgba(255, 255, 255, 0.1); + color: #fff; + } + .skin-yellow-dark .main-header .navbar .dropdown-menu li a { + color: #fff; + } + .skin-yellow-dark .main-header .navbar .dropdown-menu li a:hover { + background: #e08e0b; + color: #fff; + } +} +.skin-yellow-dark .main-header li.user-header { + background-color: #f39c12; +} +.skin-yellow-dark .content-header { + background: transparent; +} +.skin-yellow-dark .wrapper, +.skin-yellow-dark .main-sidebar, +.skin-yellow-dark .left-side { + background-color: #222d32; +} +.skin-yellow-dark .user-panel > .info, +.skin-yellow-dark .user-panel > .info > a { + color: #fff; +} +.skin-yellow-dark .sidebar-menu > li.header { + color: #4b646f; + background: #1a2226; +} +.skin-yellow-dark .sidebar-menu > li > a { + border-left: 3px solid transparent; +} +.skin-yellow-dark .sidebar-menu > li:hover > a, +.skin-yellow-dark .sidebar-menu > li.active > a { + color: #fff; + background: #1e282c; + border-left-color: #f39c12; +} +.skin-yellow-dark .sidebar-menu > li > .treeview-menu { + margin: 0 1px; + background: #2c3b41; +} +.skin-yellow-dark .sidebar a { + color: #b8c7ce; +} +.skin-yellow-dark .sidebar a:hover { + text-decoration: none; +} +.skin-yellow-dark .treeview-menu > li > a { + color: #8aa4af; +} +.skin-yellow-dark .treeview-menu > li.active > a, +.skin-yellow-dark .treeview-menu > li > a:hover { + color: #fff; +} +.skin-yellow-dark .sidebar-form { + border-radius: 3px; + border: 1px solid #374850; + margin: 10px 10px; +} +.skin-yellow-dark .sidebar-form input[type="text"], +.skin-yellow-dark .sidebar-form .btn { + box-shadow: none; + background-color: #374850; + border: 1px solid transparent; + height: 35px; + transition: all 0.3s ease-in-out; +} +.skin-yellow-dark .sidebar-form input[type="text"] { + color: #666; + border-top-left-radius: 2px; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 2px; +} +.skin-yellow-dark .sidebar-form input[type="text"]:focus, +.skin-yellow-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + background-color: #fff; + color: #666; +} +.skin-yellow-dark .sidebar-form input[type="text"]:focus + .input-group-btn .btn { + border-left-color: #fff; +} +.skin-yellow-dark .sidebar-form .btn { + color: #999; + border-top-left-radius: 0; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-bottom-left-radius: 0; +} +.btn.btn-primary, +.btn:hover.btn-primary, +.btn .btn-primary:link, +.btn:hover .btn-primary:link { + background-color: var(--button-default); + border-color: #000000; + color: #545454; +} +.btna.btn-primary:hover, +.btn:hovera.btn-primary:hover { + background-color: var(--button-hover); + border-color: var(--button-hover); + color: #545454; +} +.btn.btn-white:link, +.btn:hover.btn-white:link { + background-color: var(--button-default); + color: #545454; +} +.btn.btn-white:hover, +.btn:hover.btn-white:hover { + background-color: var(--hover-link); + color: #545454; +} +a.actions { + color: #fff !important; +} +a:visited.label-default, +a:link.label-default { + color: #444; +} +/** +The dropdown is white, so use a darker color + */ +li.dropdown-item-marker { + color: var(--button-primary); +} +a:link { + color: var(--link); +} +a:hover { + color: var(--hover-link); +} +a:visited { + color: var(--visited-link); +} +.text-primary { + color: #fff; +} +:root { + --background: #222; + --back-main: #333; + --back-sub: #3d4144; + --back-sub-alt: rgba(0, 0, 0, 0.36); + --button-default: #FFCC32; + --button-primary: #b28500; + --button-hover: #987200; + --header: #FFCC32; + /* Use same as Header picker */ + --text-main: #BBB; + --text-sub: #9b9b9b; + --link: #F0E68C; + /* Use same as Header picker, lighten by 70% */ + --visited-link: #f9f5d0; + /* Use same as Header picker, lighten by 70% */ + --hover-link: #ffffff; + /* Use same as Header picker, lighten by 70% */ + --nav-link: #222; + /* Use same as Header picker */ + --light-link: #545454; + /* Use same as Header picker */ +} +#ldapad_test_results.well.well-sm { + color: var(--back-main); +} +.pagination > li > a { + color: var(--text-main); + background-color: var(--back-main); +} +.pagination > .active > a { + background-color: var(--button-default); + border-color: var(--light-link); + color: var(--nav-link); +} +.pagination > .active > a:hover { + background-color: var(--hover-link); +} +.tasks-menu > .dropdown-menu > li .menu { + background-color: var(--back-main); +} +.tasks-menu > .dropdown-menu > li .menu > li > a:hover .progress { + background-color: var(--background); +} +h2.task_menu { + color: var(--link); +} +.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + background-color: var(--back-main); + color: var(--link); +} +.main-header .navbar, +.main-header .logo { + background-color: var(--header); + background: linear-gradient(to bottom, var(--header) 0%, var(--header) 100%); + border-color: var(--header); +} +a.btn.btn-default { + color: var(--nav-link); +} +.bootstrap-table .fixed-table-container .table thead th .sortable { + color: var(--text-main); +} +.bootstrap-table .fixed-table-toolbar .columns label { + color: #000; +} +.thead, +.navbar-nav > li > a:link { + color: var(--nav-link); +} +.navbar-nav > li > a:visited { + color: var(--nav-link); +} +.modal-content { + background-color: var(--back-main); + color: var(--text-main); +} +a:link.btn-default { + color: var(--nav-link); +} +.btn-primary.hover { + color: var(--nav-link); +} +.small-box h3, +.small-box p { + color: #fff !important; +} +.small-box h3 a:hover, +.small-box p a:hover { + text-decoration: none; + color: var(--nav-link) !important; +} +.far fa-life-ring { + color: var(--link); +} +#accessoriesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#assetsListingTable > tbody > tr.selected > td { + background-color: var(--back-main); +} +body { + color: var(--text-main); +} +.box, +.box.box-default { + border-top: 3px solid var(--header); + border-top-color: var(--header); +} +.box-body, +.box-footer, +.box-header { + background-color: var(--back-sub); + color: var(--header); +} +.btn-default { + background-color: var(--button-default); +} +.btn-default dropdown-toggle { + background-color: var(--button-default); + color: var(--nav-link); +} +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.btn-default.active { + background-color: var(--button-hover); + color: var(--nav-link); +} +.btn-primary, +.btn-primary.hover, +.btn-primary:active, +.text-yellow { + color: var(--nav-link) !important; +} +.btn-primary:hover { + background-color: var(--button-primary); + color: var(--nav-link) !important; +} +#componentsTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +#consumablesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.content-wrapper { + background-color: var(--background); +} +#create-form > div > div > div > span > i.fa { + background-color: var(--back-sub); + color: var(--header); +} +.datepicker .datepicker-switch:hover, +.datepicker .next:hover, +.datepicker .prev:hover, +.datepicker tfoot tr th:hover, +.datepicker table tr td.day.focused, +.datepicker table tr td.day:hover { + background-color: var(--header); +} +.datepicker.dropdown-menu { + background-color: var(--back-main); + color: var(--text-main); +} +#details > div > div > div > table { + background-color: transparent; +} +.dropdown-menu > li > a:hover { + background-color: var(--back-main); + color: var(--nav-link); +} +.form-control { + background-color: var(--back-main); + color: var(--text-main); +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: var(--back-main); + color: var(--text-main); +} +h1, +h2, +h3, +h4, +h5, +h6, +p { + color: var(--text-main); +} +.help-block { + color: var(--text-sub); +} +input[type=text], +input[type=search] { + background-color: var(--back-sub); + color: var(--text-main); +} +.input-group, +.input-group-addon { + background-color: var(--back-sub) !important; + color: var(--text-main); +} +#licensesTable > tbody > tr > td > nobr > a > i.fa { + color: var(--text-main); +} +.main-footer { + background-color: var(--back-main); + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li > a, +.nav-tabs-custom > .nav-tabs > li.active > a { + color: var(--text-main); +} +.nav-tabs-custom > .nav-tabs > li.active { + border-top-color: var(--header); +} +.nav-tabs-custom > .nav-tabs > li.active > a { + background-color: var(--back-main); +} +.nav-tabs-custom > .nav-tabs > li.active > a:hover { + background-color: var(--back-sub); + color: var(--text-main); +} +.nav-tabs-custom, +.nav-tabs-custom > .tab-content { + background-color: var(--back-main); +} +.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + background-color: var(--back-main); + color: var(--header); +} +.open > .dropdown-toggle.btn-default { + background-color: var(--back-sub); + color: var(--header); +} +.panel { + background-color: var(--back-sub); + color: var(--text-main); +} +.panel-default > .panel-heading { + background-color: var(--back-main); + color: var(--header); +} +.select2-container--default .select2-results__option[aria-selected=true], +.select2-container--default .select2-results__option[aria-selected=true]:hover { + background-color: var(--back-sub); + color: var(--header); +} +.select2-container--default .select2-results__option--highlighted[aria-selected] { + background-color: var(--header); + color: var(--back-main); +} +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: var(--text-main); +} +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: var(--header); +} +.select2-selection--single { + background-color: var(--back-sub) !important; + color: var(--text-main) !important; +} +.select2-dropdown { + background-color: var(--back-main); + color: var(--text-main); +} +.skin-yellow-dark .main-header .navbar .dropdown-menu li a { + color: var(--header); +} +.skin-yellow-dark .main-header .navbar .dropdown-menu li a:hover { + background-color: #000000; +} +tr th div.th-inner { + color: #FFFFFF; +} +.tab-content, +.tab-pane { + background-color: var(--back-main); + color: var(--text-main); +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: var(--back-sub); +} +.table-striped > tbody > tr:nth-of-type(even) { + background-color: var(--back-sub-alt); +} +.th-inner { + color: var(--nav-link); +} +#webui > div > div > div > div > div > table > tbody > tr > td > a > i.fa, +.box-body, +.box-footer, +.box-header { + color: var(--text-main); +} +.box-header.with-border { + border-bottom: #000; +} +.row-striped { + vertical-align: top; + line-height: 2.6; + padding: 0px; + margin-left: 20px; + box-sizing: border-box; + display: table; +} +.row-striped .row:nth-of-type(odd) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-striped .row:nth-of-type(even) div { + background-color: var(--back-sub); + color: var(--text-main); + border-top: 1px solid #dddddd; + display: table-cell; +} +.row-new-striped > .row:nth-of-type(odd) { + background-color: var(--back-sub); + color: var(--text-main); +} +.row-new-striped > .row:nth-of-type(even) { + background-color: var(--back-sub-alt); + color: var(--text-main); +} +.search-highlight, +.search-highlight:hover { + background-color: #e9d15b; +} +.table > tbody > tr.warning > td { + background-color: var(--back-sub); +} + diff --git a/public/css/webfonts/fa-brands-400.ttf b/public/css/webfonts/fa-brands-400.ttf index 1fbb1f7c3..08362f342 100644 Binary files a/public/css/webfonts/fa-brands-400.ttf and b/public/css/webfonts/fa-brands-400.ttf differ diff --git a/public/css/webfonts/fa-brands-400.woff2 b/public/css/webfonts/fa-brands-400.woff2 index 5d2802169..d84512f38 100644 Binary files a/public/css/webfonts/fa-brands-400.woff2 and b/public/css/webfonts/fa-brands-400.woff2 differ diff --git a/public/css/webfonts/fa-regular-400.ttf b/public/css/webfonts/fa-regular-400.ttf index 549d68dc0..7f9b53c1d 100644 Binary files a/public/css/webfonts/fa-regular-400.ttf and b/public/css/webfonts/fa-regular-400.ttf differ diff --git a/public/css/webfonts/fa-regular-400.woff2 b/public/css/webfonts/fa-regular-400.woff2 index 18400d7fa..452b49c04 100644 Binary files a/public/css/webfonts/fa-regular-400.woff2 and b/public/css/webfonts/fa-regular-400.woff2 differ diff --git a/public/css/webfonts/fa-solid-900.ttf b/public/css/webfonts/fa-solid-900.ttf index bb2a86956..e7e2ecfa3 100644 Binary files a/public/css/webfonts/fa-solid-900.ttf and b/public/css/webfonts/fa-solid-900.ttf differ diff --git a/public/css/webfonts/fa-solid-900.woff2 b/public/css/webfonts/fa-solid-900.woff2 index 758dd4f60..fec1fae77 100644 Binary files a/public/css/webfonts/fa-solid-900.woff2 and b/public/css/webfonts/fa-solid-900.woff2 differ diff --git a/public/css/webfonts/fa-v4compatibility.ttf b/public/css/webfonts/fa-v4compatibility.ttf index 8c5864c42..577b7a00c 100644 Binary files a/public/css/webfonts/fa-v4compatibility.ttf and b/public/css/webfonts/fa-v4compatibility.ttf differ diff --git a/public/css/webfonts/fa-v4compatibility.woff2 b/public/css/webfonts/fa-v4compatibility.woff2 index f94bec227..73931680d 100644 Binary files a/public/css/webfonts/fa-v4compatibility.woff2 and b/public/css/webfonts/fa-v4compatibility.woff2 differ diff --git a/public/js/build/app.js b/public/js/build/app.js index bec87e49b..c5c6a5cd6 100644 --- a/public/js/build/app.js +++ b/public/js/build/app.js @@ -3157,6 +3157,903 @@ if (typeof jQuery === 'undefined') { }(jQuery); +/***/ }), + +/***/ "./node_modules/canvas-confetti/dist/confetti.browser.js": +/*!***************************************************************!*\ + !*** ./node_modules/canvas-confetti/dist/confetti.browser.js ***! + \***************************************************************/ +/***/ (() => { + +// canvas-confetti v1.9.3 built on 2024-04-30T22:19:17.794Z +!(function (window, module) { +// source content +/* globals Map */ + +(function main(global, module, isWorker, workerSize) { + var canUseWorker = !!( + global.Worker && + global.Blob && + global.Promise && + global.OffscreenCanvas && + global.OffscreenCanvasRenderingContext2D && + global.HTMLCanvasElement && + global.HTMLCanvasElement.prototype.transferControlToOffscreen && + global.URL && + global.URL.createObjectURL); + + var canUsePaths = typeof Path2D === 'function' && typeof DOMMatrix === 'function'; + var canDrawBitmap = (function () { + // this mostly supports ssr + if (!global.OffscreenCanvas) { + return false; + } + + var canvas = new OffscreenCanvas(1, 1); + var ctx = canvas.getContext('2d'); + ctx.fillRect(0, 0, 1, 1); + var bitmap = canvas.transferToImageBitmap(); + + try { + ctx.createPattern(bitmap, 'no-repeat'); + } catch (e) { + return false; + } + + return true; + })(); + + function noop() {} + + // create a promise if it exists, otherwise, just + // call the function directly + function promise(func) { + var ModulePromise = module.exports.Promise; + var Prom = ModulePromise !== void 0 ? ModulePromise : global.Promise; + + if (typeof Prom === 'function') { + return new Prom(func); + } + + func(noop, noop); + + return null; + } + + var bitmapMapper = (function (skipTransform, map) { + // see https://github.com/catdad/canvas-confetti/issues/209 + // creating canvases is actually pretty expensive, so we should create a + // 1:1 map for bitmap:canvas, so that we can animate the confetti in + // a performant manner, but also not store them forever so that we don't + // have a memory leak + return { + transform: function(bitmap) { + if (skipTransform) { + return bitmap; + } + + if (map.has(bitmap)) { + return map.get(bitmap); + } + + var canvas = new OffscreenCanvas(bitmap.width, bitmap.height); + var ctx = canvas.getContext('2d'); + ctx.drawImage(bitmap, 0, 0); + + map.set(bitmap, canvas); + + return canvas; + }, + clear: function () { + map.clear(); + } + }; + })(canDrawBitmap, new Map()); + + var raf = (function () { + var TIME = Math.floor(1000 / 60); + var frame, cancel; + var frames = {}; + var lastFrameTime = 0; + + if (typeof requestAnimationFrame === 'function' && typeof cancelAnimationFrame === 'function') { + frame = function (cb) { + var id = Math.random(); + + frames[id] = requestAnimationFrame(function onFrame(time) { + if (lastFrameTime === time || lastFrameTime + TIME - 1 < time) { + lastFrameTime = time; + delete frames[id]; + + cb(); + } else { + frames[id] = requestAnimationFrame(onFrame); + } + }); + + return id; + }; + cancel = function (id) { + if (frames[id]) { + cancelAnimationFrame(frames[id]); + } + }; + } else { + frame = function (cb) { + return setTimeout(cb, TIME); + }; + cancel = function (timer) { + return clearTimeout(timer); + }; + } + + return { frame: frame, cancel: cancel }; + }()); + + var getWorker = (function () { + var worker; + var prom; + var resolves = {}; + + function decorate(worker) { + function execute(options, callback) { + worker.postMessage({ options: options || {}, callback: callback }); + } + worker.init = function initWorker(canvas) { + var offscreen = canvas.transferControlToOffscreen(); + worker.postMessage({ canvas: offscreen }, [offscreen]); + }; + + worker.fire = function fireWorker(options, size, done) { + if (prom) { + execute(options, null); + return prom; + } + + var id = Math.random().toString(36).slice(2); + + prom = promise(function (resolve) { + function workerDone(msg) { + if (msg.data.callback !== id) { + return; + } + + delete resolves[id]; + worker.removeEventListener('message', workerDone); + + prom = null; + + bitmapMapper.clear(); + + done(); + resolve(); + } + + worker.addEventListener('message', workerDone); + execute(options, id); + + resolves[id] = workerDone.bind(null, { data: { callback: id }}); + }); + + return prom; + }; + + worker.reset = function resetWorker() { + worker.postMessage({ reset: true }); + + for (var id in resolves) { + resolves[id](); + delete resolves[id]; + } + }; + } + + return function () { + if (worker) { + return worker; + } + + if (!isWorker && canUseWorker) { + var code = [ + 'var CONFETTI, SIZE = {}, module = {};', + '(' + main.toString() + ')(this, module, true, SIZE);', + 'onmessage = function(msg) {', + ' if (msg.data.options) {', + ' CONFETTI(msg.data.options).then(function () {', + ' if (msg.data.callback) {', + ' postMessage({ callback: msg.data.callback });', + ' }', + ' });', + ' } else if (msg.data.reset) {', + ' CONFETTI && CONFETTI.reset();', + ' } else if (msg.data.resize) {', + ' SIZE.width = msg.data.resize.width;', + ' SIZE.height = msg.data.resize.height;', + ' } else if (msg.data.canvas) {', + ' SIZE.width = msg.data.canvas.width;', + ' SIZE.height = msg.data.canvas.height;', + ' CONFETTI = module.exports.create(msg.data.canvas);', + ' }', + '}', + ].join('\n'); + try { + worker = new Worker(URL.createObjectURL(new Blob([code]))); + } catch (e) { + // eslint-disable-next-line no-console + typeof console !== undefined && typeof console.warn === 'function' ? console.warn('🎊 Could not load worker', e) : null; + + return null; + } + + decorate(worker); + } + + return worker; + }; + })(); + + var defaults = { + particleCount: 50, + angle: 90, + spread: 45, + startVelocity: 45, + decay: 0.9, + gravity: 1, + drift: 0, + ticks: 200, + x: 0.5, + y: 0.5, + shapes: ['square', 'circle'], + zIndex: 100, + colors: [ + '#26ccff', + '#a25afd', + '#ff5e7e', + '#88ff5a', + '#fcff42', + '#ffa62d', + '#ff36ff' + ], + // probably should be true, but back-compat + disableForReducedMotion: false, + scalar: 1 + }; + + function convert(val, transform) { + return transform ? transform(val) : val; + } + + function isOk(val) { + return !(val === null || val === undefined); + } + + function prop(options, name, transform) { + return convert( + options && isOk(options[name]) ? options[name] : defaults[name], + transform + ); + } + + function onlyPositiveInt(number){ + return number < 0 ? 0 : Math.floor(number); + } + + function randomInt(min, max) { + // [min, max) + return Math.floor(Math.random() * (max - min)) + min; + } + + function toDecimal(str) { + return parseInt(str, 16); + } + + function colorsToRgb(colors) { + return colors.map(hexToRgb); + } + + function hexToRgb(str) { + var val = String(str).replace(/[^0-9a-f]/gi, ''); + + if (val.length < 6) { + val = val[0]+val[0]+val[1]+val[1]+val[2]+val[2]; + } + + return { + r: toDecimal(val.substring(0,2)), + g: toDecimal(val.substring(2,4)), + b: toDecimal(val.substring(4,6)) + }; + } + + function getOrigin(options) { + var origin = prop(options, 'origin', Object); + origin.x = prop(origin, 'x', Number); + origin.y = prop(origin, 'y', Number); + + return origin; + } + + function setCanvasWindowSize(canvas) { + canvas.width = document.documentElement.clientWidth; + canvas.height = document.documentElement.clientHeight; + } + + function setCanvasRectSize(canvas) { + var rect = canvas.getBoundingClientRect(); + canvas.width = rect.width; + canvas.height = rect.height; + } + + function getCanvas(zIndex) { + var canvas = document.createElement('canvas'); + + canvas.style.position = 'fixed'; + canvas.style.top = '0px'; + canvas.style.left = '0px'; + canvas.style.pointerEvents = 'none'; + canvas.style.zIndex = zIndex; + + return canvas; + } + + function ellipse(context, x, y, radiusX, radiusY, rotation, startAngle, endAngle, antiClockwise) { + context.save(); + context.translate(x, y); + context.rotate(rotation); + context.scale(radiusX, radiusY); + context.arc(0, 0, 1, startAngle, endAngle, antiClockwise); + context.restore(); + } + + function randomPhysics(opts) { + var radAngle = opts.angle * (Math.PI / 180); + var radSpread = opts.spread * (Math.PI / 180); + + return { + x: opts.x, + y: opts.y, + wobble: Math.random() * 10, + wobbleSpeed: Math.min(0.11, Math.random() * 0.1 + 0.05), + velocity: (opts.startVelocity * 0.5) + (Math.random() * opts.startVelocity), + angle2D: -radAngle + ((0.5 * radSpread) - (Math.random() * radSpread)), + tiltAngle: (Math.random() * (0.75 - 0.25) + 0.25) * Math.PI, + color: opts.color, + shape: opts.shape, + tick: 0, + totalTicks: opts.ticks, + decay: opts.decay, + drift: opts.drift, + random: Math.random() + 2, + tiltSin: 0, + tiltCos: 0, + wobbleX: 0, + wobbleY: 0, + gravity: opts.gravity * 3, + ovalScalar: 0.6, + scalar: opts.scalar, + flat: opts.flat + }; + } + + function updateFetti(context, fetti) { + fetti.x += Math.cos(fetti.angle2D) * fetti.velocity + fetti.drift; + fetti.y += Math.sin(fetti.angle2D) * fetti.velocity + fetti.gravity; + fetti.velocity *= fetti.decay; + + if (fetti.flat) { + fetti.wobble = 0; + fetti.wobbleX = fetti.x + (10 * fetti.scalar); + fetti.wobbleY = fetti.y + (10 * fetti.scalar); + + fetti.tiltSin = 0; + fetti.tiltCos = 0; + fetti.random = 1; + } else { + fetti.wobble += fetti.wobbleSpeed; + fetti.wobbleX = fetti.x + ((10 * fetti.scalar) * Math.cos(fetti.wobble)); + fetti.wobbleY = fetti.y + ((10 * fetti.scalar) * Math.sin(fetti.wobble)); + + fetti.tiltAngle += 0.1; + fetti.tiltSin = Math.sin(fetti.tiltAngle); + fetti.tiltCos = Math.cos(fetti.tiltAngle); + fetti.random = Math.random() + 2; + } + + var progress = (fetti.tick++) / fetti.totalTicks; + + var x1 = fetti.x + (fetti.random * fetti.tiltCos); + var y1 = fetti.y + (fetti.random * fetti.tiltSin); + var x2 = fetti.wobbleX + (fetti.random * fetti.tiltCos); + var y2 = fetti.wobbleY + (fetti.random * fetti.tiltSin); + + context.fillStyle = 'rgba(' + fetti.color.r + ', ' + fetti.color.g + ', ' + fetti.color.b + ', ' + (1 - progress) + ')'; + + context.beginPath(); + + if (canUsePaths && fetti.shape.type === 'path' && typeof fetti.shape.path === 'string' && Array.isArray(fetti.shape.matrix)) { + context.fill(transformPath2D( + fetti.shape.path, + fetti.shape.matrix, + fetti.x, + fetti.y, + Math.abs(x2 - x1) * 0.1, + Math.abs(y2 - y1) * 0.1, + Math.PI / 10 * fetti.wobble + )); + } else if (fetti.shape.type === 'bitmap') { + var rotation = Math.PI / 10 * fetti.wobble; + var scaleX = Math.abs(x2 - x1) * 0.1; + var scaleY = Math.abs(y2 - y1) * 0.1; + var width = fetti.shape.bitmap.width * fetti.scalar; + var height = fetti.shape.bitmap.height * fetti.scalar; + + var matrix = new DOMMatrix([ + Math.cos(rotation) * scaleX, + Math.sin(rotation) * scaleX, + -Math.sin(rotation) * scaleY, + Math.cos(rotation) * scaleY, + fetti.x, + fetti.y + ]); + + // apply the transform matrix from the confetti shape + matrix.multiplySelf(new DOMMatrix(fetti.shape.matrix)); + + var pattern = context.createPattern(bitmapMapper.transform(fetti.shape.bitmap), 'no-repeat'); + pattern.setTransform(matrix); + + context.globalAlpha = (1 - progress); + context.fillStyle = pattern; + context.fillRect( + fetti.x - (width / 2), + fetti.y - (height / 2), + width, + height + ); + context.globalAlpha = 1; + } else if (fetti.shape === 'circle') { + context.ellipse ? + context.ellipse(fetti.x, fetti.y, Math.abs(x2 - x1) * fetti.ovalScalar, Math.abs(y2 - y1) * fetti.ovalScalar, Math.PI / 10 * fetti.wobble, 0, 2 * Math.PI) : + ellipse(context, fetti.x, fetti.y, Math.abs(x2 - x1) * fetti.ovalScalar, Math.abs(y2 - y1) * fetti.ovalScalar, Math.PI / 10 * fetti.wobble, 0, 2 * Math.PI); + } else if (fetti.shape === 'star') { + var rot = Math.PI / 2 * 3; + var innerRadius = 4 * fetti.scalar; + var outerRadius = 8 * fetti.scalar; + var x = fetti.x; + var y = fetti.y; + var spikes = 5; + var step = Math.PI / spikes; + + while (spikes--) { + x = fetti.x + Math.cos(rot) * outerRadius; + y = fetti.y + Math.sin(rot) * outerRadius; + context.lineTo(x, y); + rot += step; + + x = fetti.x + Math.cos(rot) * innerRadius; + y = fetti.y + Math.sin(rot) * innerRadius; + context.lineTo(x, y); + rot += step; + } + } else { + context.moveTo(Math.floor(fetti.x), Math.floor(fetti.y)); + context.lineTo(Math.floor(fetti.wobbleX), Math.floor(y1)); + context.lineTo(Math.floor(x2), Math.floor(y2)); + context.lineTo(Math.floor(x1), Math.floor(fetti.wobbleY)); + } + + context.closePath(); + context.fill(); + + return fetti.tick < fetti.totalTicks; + } + + function animate(canvas, fettis, resizer, size, done) { + var animatingFettis = fettis.slice(); + var context = canvas.getContext('2d'); + var animationFrame; + var destroy; + + var prom = promise(function (resolve) { + function onDone() { + animationFrame = destroy = null; + + context.clearRect(0, 0, size.width, size.height); + bitmapMapper.clear(); + + done(); + resolve(); + } + + function update() { + if (isWorker && !(size.width === workerSize.width && size.height === workerSize.height)) { + size.width = canvas.width = workerSize.width; + size.height = canvas.height = workerSize.height; + } + + if (!size.width && !size.height) { + resizer(canvas); + size.width = canvas.width; + size.height = canvas.height; + } + + context.clearRect(0, 0, size.width, size.height); + + animatingFettis = animatingFettis.filter(function (fetti) { + return updateFetti(context, fetti); + }); + + if (animatingFettis.length) { + animationFrame = raf.frame(update); + } else { + onDone(); + } + } + + animationFrame = raf.frame(update); + destroy = onDone; + }); + + return { + addFettis: function (fettis) { + animatingFettis = animatingFettis.concat(fettis); + + return prom; + }, + canvas: canvas, + promise: prom, + reset: function () { + if (animationFrame) { + raf.cancel(animationFrame); + } + + if (destroy) { + destroy(); + } + } + }; + } + + function confettiCannon(canvas, globalOpts) { + var isLibCanvas = !canvas; + var allowResize = !!prop(globalOpts || {}, 'resize'); + var hasResizeEventRegistered = false; + var globalDisableForReducedMotion = prop(globalOpts, 'disableForReducedMotion', Boolean); + var shouldUseWorker = canUseWorker && !!prop(globalOpts || {}, 'useWorker'); + var worker = shouldUseWorker ? getWorker() : null; + var resizer = isLibCanvas ? setCanvasWindowSize : setCanvasRectSize; + var initialized = (canvas && worker) ? !!canvas.__confetti_initialized : false; + var preferLessMotion = typeof matchMedia === 'function' && matchMedia('(prefers-reduced-motion)').matches; + var animationObj; + + function fireLocal(options, size, done) { + var particleCount = prop(options, 'particleCount', onlyPositiveInt); + var angle = prop(options, 'angle', Number); + var spread = prop(options, 'spread', Number); + var startVelocity = prop(options, 'startVelocity', Number); + var decay = prop(options, 'decay', Number); + var gravity = prop(options, 'gravity', Number); + var drift = prop(options, 'drift', Number); + var colors = prop(options, 'colors', colorsToRgb); + var ticks = prop(options, 'ticks', Number); + var shapes = prop(options, 'shapes'); + var scalar = prop(options, 'scalar'); + var flat = !!prop(options, 'flat'); + var origin = getOrigin(options); + + var temp = particleCount; + var fettis = []; + + var startX = canvas.width * origin.x; + var startY = canvas.height * origin.y; + + while (temp--) { + fettis.push( + randomPhysics({ + x: startX, + y: startY, + angle: angle, + spread: spread, + startVelocity: startVelocity, + color: colors[temp % colors.length], + shape: shapes[randomInt(0, shapes.length)], + ticks: ticks, + decay: decay, + gravity: gravity, + drift: drift, + scalar: scalar, + flat: flat + }) + ); + } + + // if we have a previous canvas already animating, + // add to it + if (animationObj) { + return animationObj.addFettis(fettis); + } + + animationObj = animate(canvas, fettis, resizer, size , done); + + return animationObj.promise; + } + + function fire(options) { + var disableForReducedMotion = globalDisableForReducedMotion || prop(options, 'disableForReducedMotion', Boolean); + var zIndex = prop(options, 'zIndex', Number); + + if (disableForReducedMotion && preferLessMotion) { + return promise(function (resolve) { + resolve(); + }); + } + + if (isLibCanvas && animationObj) { + // use existing canvas from in-progress animation + canvas = animationObj.canvas; + } else if (isLibCanvas && !canvas) { + // create and initialize a new canvas + canvas = getCanvas(zIndex); + document.body.appendChild(canvas); + } + + if (allowResize && !initialized) { + // initialize the size of a user-supplied canvas + resizer(canvas); + } + + var size = { + width: canvas.width, + height: canvas.height + }; + + if (worker && !initialized) { + worker.init(canvas); + } + + initialized = true; + + if (worker) { + canvas.__confetti_initialized = true; + } + + function onResize() { + if (worker) { + // TODO this really shouldn't be immediate, because it is expensive + var obj = { + getBoundingClientRect: function () { + if (!isLibCanvas) { + return canvas.getBoundingClientRect(); + } + } + }; + + resizer(obj); + + worker.postMessage({ + resize: { + width: obj.width, + height: obj.height + } + }); + return; + } + + // don't actually query the size here, since this + // can execute frequently and rapidly + size.width = size.height = null; + } + + function done() { + animationObj = null; + + if (allowResize) { + hasResizeEventRegistered = false; + global.removeEventListener('resize', onResize); + } + + if (isLibCanvas && canvas) { + if (document.body.contains(canvas)) { + document.body.removeChild(canvas); + } + canvas = null; + initialized = false; + } + } + + if (allowResize && !hasResizeEventRegistered) { + hasResizeEventRegistered = true; + global.addEventListener('resize', onResize, false); + } + + if (worker) { + return worker.fire(options, size, done); + } + + return fireLocal(options, size, done); + } + + fire.reset = function () { + if (worker) { + worker.reset(); + } + + if (animationObj) { + animationObj.reset(); + } + }; + + return fire; + } + + // Make default export lazy to defer worker creation until called. + var defaultFire; + function getDefaultFire() { + if (!defaultFire) { + defaultFire = confettiCannon(null, { useWorker: true, resize: true }); + } + return defaultFire; + } + + function transformPath2D(pathString, pathMatrix, x, y, scaleX, scaleY, rotation) { + var path2d = new Path2D(pathString); + + var t1 = new Path2D(); + t1.addPath(path2d, new DOMMatrix(pathMatrix)); + + var t2 = new Path2D(); + // see https://developer.mozilla.org/en-US/docs/Web/API/DOMMatrix/DOMMatrix + t2.addPath(t1, new DOMMatrix([ + Math.cos(rotation) * scaleX, + Math.sin(rotation) * scaleX, + -Math.sin(rotation) * scaleY, + Math.cos(rotation) * scaleY, + x, + y + ])); + + return t2; + } + + function shapeFromPath(pathData) { + if (!canUsePaths) { + throw new Error('path confetti are not supported in this browser'); + } + + var path, matrix; + + if (typeof pathData === 'string') { + path = pathData; + } else { + path = pathData.path; + matrix = pathData.matrix; + } + + var path2d = new Path2D(path); + var tempCanvas = document.createElement('canvas'); + var tempCtx = tempCanvas.getContext('2d'); + + if (!matrix) { + // attempt to figure out the width of the path, up to 1000x1000 + var maxSize = 1000; + var minX = maxSize; + var minY = maxSize; + var maxX = 0; + var maxY = 0; + var width, height; + + // do some line skipping... this is faster than checking + // every pixel and will be mostly still correct + for (var x = 0; x < maxSize; x += 2) { + for (var y = 0; y < maxSize; y += 2) { + if (tempCtx.isPointInPath(path2d, x, y, 'nonzero')) { + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); + } + } + } + + width = maxX - minX; + height = maxY - minY; + + var maxDesiredSize = 10; + var scale = Math.min(maxDesiredSize/width, maxDesiredSize/height); + + matrix = [ + scale, 0, 0, scale, + -Math.round((width/2) + minX) * scale, + -Math.round((height/2) + minY) * scale + ]; + } + + return { + type: 'path', + path: path, + matrix: matrix + }; + } + + function shapeFromText(textData) { + var text, + scalar = 1, + color = '#000000', + // see https://nolanlawson.com/2022/04/08/the-struggle-of-using-native-emoji-on-the-web/ + fontFamily = '"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "EmojiOne Color", "Android Emoji", "Twemoji Mozilla", "system emoji", sans-serif'; + + if (typeof textData === 'string') { + text = textData; + } else { + text = textData.text; + scalar = 'scalar' in textData ? textData.scalar : scalar; + fontFamily = 'fontFamily' in textData ? textData.fontFamily : fontFamily; + color = 'color' in textData ? textData.color : color; + } + + // all other confetti are 10 pixels, + // so this pixel size is the de-facto 100% scale confetti + var fontSize = 10 * scalar; + var font = '' + fontSize + 'px ' + fontFamily; + + var canvas = new OffscreenCanvas(fontSize, fontSize); + var ctx = canvas.getContext('2d'); + + ctx.font = font; + var size = ctx.measureText(text); + var width = Math.ceil(size.actualBoundingBoxRight + size.actualBoundingBoxLeft); + var height = Math.ceil(size.actualBoundingBoxAscent + size.actualBoundingBoxDescent); + + var padding = 2; + var x = size.actualBoundingBoxLeft + padding; + var y = size.actualBoundingBoxAscent + padding; + width += padding + padding; + height += padding + padding; + + canvas = new OffscreenCanvas(width, height); + ctx = canvas.getContext('2d'); + ctx.font = font; + ctx.fillStyle = color; + + ctx.fillText(text, x, y); + + var scale = 1 / scalar; + + return { + type: 'bitmap', + // TODO these probably need to be transfered for workers + bitmap: canvas.transferToImageBitmap(), + matrix: [scale, 0, 0, scale, -width * scale / 2, -height * scale / 2] + }; + } + + module.exports = function() { + return getDefaultFire().apply(this, arguments); + }; + module.exports.reset = function() { + getDefaultFire().reset(); + }; + module.exports.create = confettiCannon; + module.exports.shapeFromPath = shapeFromPath; + module.exports.shapeFromText = shapeFromText; +}((function () { + if (typeof window !== 'undefined') { + return window; + } + + if (typeof self !== 'undefined') { + return self; + } + + return this || {}; +})(), module, false)); + +// end source content + + window.confetti = module.exports; +}(window, {})); + + /***/ }), /***/ "./node_modules/jquery-ui/ui/version.js": @@ -32048,10 +32945,10 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/** /***/ }), -/***/ "./resources/assets/less/skins/skin-contrast.less": -/*!********************************************************!*\ - !*** ./resources/assets/less/skins/skin-contrast.less ***! - \********************************************************/ +/***/ "./resources/assets/less/skins/skin-black.less": +/*!*****************************************************!*\ + !*** ./resources/assets/less/skins/skin-black.less ***! + \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; @@ -32061,10 +32958,36 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/***/ "./resources/assets/less/skins/skin-green.less": -/*!*****************************************************!*\ - !*** ./resources/assets/less/skins/skin-green.less ***! - \*****************************************************/ +/***/ "./resources/assets/less/skins/skin-blue-dark.less": +/*!*********************************************************!*\ + !*** ./resources/assets/less/skins/skin-blue-dark.less ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "./resources/assets/less/skins/skin-blue.less": +/*!****************************************************!*\ + !*** ./resources/assets/less/skins/skin-blue.less ***! + \****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "./resources/assets/less/skins/skin-contrast.less": +/*!********************************************************!*\ + !*** ./resources/assets/less/skins/skin-contrast.less ***! + \********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; @@ -32087,9 +33010,9 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/***/ "./resources/assets/less/skins/skin-black.less": +/***/ "./resources/assets/less/skins/skin-green.less": /*!*****************************************************!*\ - !*** ./resources/assets/less/skins/skin-black.less ***! + !*** ./resources/assets/less/skins/skin-green.less ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { @@ -32098,97 +33021,6 @@ __webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin -/***/ }), - -/***/ "./resources/assets/less/skins/skin-black-dark.less": -/*!**********************************************************!*\ - !*** ./resources/assets/less/skins/skin-black-dark.less ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }), - -/***/ "./resources/assets/less/skins/skin-red-dark.less": -/*!********************************************************!*\ - !*** ./resources/assets/less/skins/skin-red-dark.less ***! - \********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }), - -/***/ "./resources/assets/less/skins/skin-purple.less": -/*!******************************************************!*\ - !*** ./resources/assets/less/skins/skin-purple.less ***! - \******************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }), - -/***/ "./resources/assets/less/skins/skin-purple-dark.less": -/*!***********************************************************!*\ - !*** ./resources/assets/less/skins/skin-purple-dark.less ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }), - -/***/ "./resources/assets/less/skins/skin-yellow.less": -/*!******************************************************!*\ - !*** ./resources/assets/less/skins/skin-yellow.less ***! - \******************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }), - -/***/ "./resources/assets/less/skins/skin-yellow-dark.less": -/*!***********************************************************!*\ - !*** ./resources/assets/less/skins/skin-yellow-dark.less ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }), - -/***/ "./resources/assets/less/skins/skin-blue-dark.less": -/*!*********************************************************!*\ - !*** ./resources/assets/less/skins/skin-blue-dark.less ***! - \*********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - /***/ }), /***/ "./resources/assets/less/skins/skin-orange-dark.less": @@ -32215,6 +33047,84 @@ __webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin +/***/ }), + +/***/ "./resources/assets/less/skins/skin-purple-dark.less": +/*!***********************************************************!*\ + !*** ./resources/assets/less/skins/skin-purple-dark.less ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "./resources/assets/less/skins/skin-purple.less": +/*!******************************************************!*\ + !*** ./resources/assets/less/skins/skin-purple.less ***! + \******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "./resources/assets/less/skins/skin-red-dark.less": +/*!********************************************************!*\ + !*** ./resources/assets/less/skins/skin-red-dark.less ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "./resources/assets/less/skins/skin-red.less": +/*!***************************************************!*\ + !*** ./resources/assets/less/skins/skin-red.less ***! + \***************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "./resources/assets/less/skins/skin-yellow-dark.less": +/*!***********************************************************!*\ + !*** ./resources/assets/less/skins/skin-yellow-dark.less ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "./resources/assets/less/skins/skin-yellow.less": +/*!******************************************************!*\ + !*** ./resources/assets/less/skins/skin-yellow.less ***! + \******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + /***/ }), /***/ "./node_modules/admin-lte/build/less/AdminLTE.less": @@ -32256,10 +33166,10 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/***/ "./resources/assets/less/skins/skin-blue.less": -/*!****************************************************!*\ - !*** ./resources/assets/less/skins/skin-blue.less ***! - \****************************************************/ +/***/ "./resources/assets/less/skins/_all-skins.less": +/*!*****************************************************!*\ + !*** ./resources/assets/less/skins/_all-skins.less ***! + \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; @@ -32269,10 +33179,10 @@ __webpack_require__.r(__webpack_exports__); /***/ }), -/***/ "./resources/assets/less/skins/skin-red.less": -/*!***************************************************!*\ - !*** ./resources/assets/less/skins/skin-red.less ***! - \***************************************************/ +/***/ "./resources/assets/less/skins/skin-black-dark.less": +/*!**********************************************************!*\ + !*** ./resources/assets/less/skins/skin-black-dark.less ***! + \**********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; @@ -32393,24 +33303,25 @@ __webpack_require__.r(__webpack_exports__); /******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded /******/ var installedChunks = { /******/ "/js/build/app": 0, -/******/ "css/dist/skins/skin-red": 0, -/******/ "css/dist/skins/skin-blue": 0, +/******/ "css/dist/skins/skin-black-dark": 0, +/******/ "css/dist/skins/_all-skins": 0, /******/ "css/build/overrides": 0, /******/ "css/build/app": 0, /******/ "css/build/AdminLTE": 0, +/******/ "css/dist/skins/skin-yellow": 0, +/******/ "css/dist/skins/skin-yellow-dark": 0, +/******/ "css/dist/skins/skin-red": 0, +/******/ "css/dist/skins/skin-red-dark": 0, +/******/ "css/dist/skins/skin-purple": 0, +/******/ "css/dist/skins/skin-purple-dark": 0, /******/ "css/dist/skins/skin-orange": 0, /******/ "css/dist/skins/skin-orange-dark": 0, -/******/ "css/dist/skins/skin-blue-dark": 0, -/******/ "css/dist/skins/skin-yellow-dark": 0, -/******/ "css/dist/skins/skin-yellow": 0, -/******/ "css/dist/skins/skin-purple-dark": 0, -/******/ "css/dist/skins/skin-purple": 0, -/******/ "css/dist/skins/skin-red-dark": 0, -/******/ "css/dist/skins/skin-black-dark": 0, -/******/ "css/dist/skins/skin-black": 0, -/******/ "css/dist/skins/skin-green-dark": 0, /******/ "css/dist/skins/skin-green": 0, -/******/ "css/dist/skins/skin-contrast": 0 +/******/ "css/dist/skins/skin-green-dark": 0, +/******/ "css/dist/skins/skin-contrast": 0, +/******/ "css/dist/skins/skin-blue": 0, +/******/ "css/dist/skins/skin-blue-dark": 0, +/******/ "css/dist/skins/skin-black": 0 /******/ }; /******/ /******/ // no chunk on demand loading @@ -32460,26 +33371,28 @@ __webpack_require__.r(__webpack_exports__); /******/ // startup /******/ // Load entry module and return exports /******/ // This entry module depends on other loaded chunks and execution need to be delayed -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/js/snipeit.js"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/js/snipeit_modals.js"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./node_modules/admin-lte/build/less/AdminLTE.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/app.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/overrides.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-blue.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-red.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-contrast.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-green.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-green-dark.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-black.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-black-dark.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-red-dark.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-purple.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-purple-dark.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-yellow.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-yellow-dark.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-blue-dark.less"))) -/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-orange-dark.less"))) -/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["css/dist/skins/skin-red","css/dist/skins/skin-blue","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-blue-dark","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-yellow","css/dist/skins/skin-purple-dark","css/dist/skins/skin-purple","css/dist/skins/skin-red-dark","css/dist/skins/skin-black-dark","css/dist/skins/skin-black","css/dist/skins/skin-green-dark","css/dist/skins/skin-green","css/dist/skins/skin-contrast"], () => (__webpack_require__("./resources/assets/less/skins/skin-orange.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/js/snipeit.js"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/js/snipeit_modals.js"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./node_modules/canvas-confetti/dist/confetti.browser.js"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./node_modules/admin-lte/build/less/AdminLTE.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/app.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/overrides.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/_all-skins.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-black-dark.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-black.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-blue-dark.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-blue.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-contrast.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-green-dark.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-green.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-orange-dark.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-orange.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-purple-dark.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-purple.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-red-dark.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-red.less"))) +/******/ __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-yellow-dark.less"))) +/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["css/dist/skins/skin-black-dark","css/dist/skins/_all-skins","css/build/overrides","css/build/app","css/build/AdminLTE","css/dist/skins/skin-yellow","css/dist/skins/skin-yellow-dark","css/dist/skins/skin-red","css/dist/skins/skin-red-dark","css/dist/skins/skin-purple","css/dist/skins/skin-purple-dark","css/dist/skins/skin-orange","css/dist/skins/skin-orange-dark","css/dist/skins/skin-green","css/dist/skins/skin-green-dark","css/dist/skins/skin-contrast","css/dist/skins/skin-blue","css/dist/skins/skin-blue-dark","css/dist/skins/skin-black"], () => (__webpack_require__("./resources/assets/less/skins/skin-yellow.less"))) /******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__); /******/ /******/ })() diff --git a/public/js/build/vendor.js b/public/js/build/vendor.js index cb5129028..102713f1f 100644 --- a/public/js/build/vendor.js +++ b/public/js/build/vendor.js @@ -54842,7 +54842,7 @@ return SignaturePad; })); /*! - * jQuery Validation Plugin v1.20.1 + * jQuery Validation Plugin v1.21.0 * * https://jqueryvalidation.org/ * @@ -55136,6 +55136,7 @@ $.extend( $.validator, { onsubmit: true, ignore: ":hidden", ignoreTitle: false, + customElements: [], onfocusin: function( element ) { this.lastActive = element; @@ -55283,17 +55284,17 @@ $.extend( $.validator, { settings[ eventType ].call( validator, this, event ); } } - + var focusListeners = [ ":text", "[type='password']", "[type='file']", "select", "textarea", "[type='number']", "[type='search']", + "[type='tel']", "[type='url']", "[type='email']", "[type='datetime']", "[type='date']", "[type='month']", + "[type='week']", "[type='time']", "[type='datetime-local']", "[type='range']", "[type='color']", + "[type='radio']", "[type='checkbox']", "[contenteditable]", "[type='button']" ]; + var clickListeners = [ "select", "option", "[type='radio']", "[type='checkbox']" ]; $( this.currentForm ) - .on( "focusin.validate focusout.validate keyup.validate", - ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " + - "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " + - "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " + - "[type='radio'], [type='checkbox'], [contenteditable], [type='button']", delegate ) + .on( "focusin.validate focusout.validate keyup.validate", focusListeners.concat( this.settings.customElements ).join( ", " ), delegate ) // Support: Chrome, oldIE // "select" is provided as event.target when clicking a option - .on( "click.validate", "select, option, [type='radio'], [type='checkbox']", delegate ); + .on( "click.validate", clickListeners.concat( this.settings.customElements ).join( ", " ), delegate ); if ( this.settings.invalidHandler ) { $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler ); @@ -55490,11 +55491,12 @@ $.extend( $.validator, { elements: function() { var validator = this, - rulesCache = {}; + rulesCache = {}, + selectors = [ "input", "select", "textarea", "[contenteditable]" ]; // Select all valid inputs inside the form (no submit or reset buttons) return $( this.currentForm ) - .find( "input, select, textarea, [contenteditable]" ) + .find( selectors.concat( this.settings.customElements ).join( ", " ) ) .not( ":submit, :reset, :image, :disabled" ) .not( this.settings.ignore ) .filter( function() { @@ -56344,7 +56346,7 @@ $.extend( $.validator, { // https://jqueryvalidation.org/number-method/ number: function( value, element ) { - return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value ); + return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:-?\.\d+)?$/.test( value ); }, // https://jqueryvalidation.org/digits-method/ diff --git a/public/js/dist/all-defer.js b/public/js/dist/all-defer.js index 7480ea7c6..09559f9cb 100644 --- a/public/js/dist/all-defer.js +++ b/public/js/dist/all-defer.js @@ -1,3381 +1 @@ -(() => { - // packages/alpinejs/src/scheduler.js - var flushPending = false; - var flushing = false; - var queue = []; - var lastFlushedIndex = -1; - function scheduler(callback) { - queueJob(callback); - } - function queueJob(job) { - if (!queue.includes(job)) - queue.push(job); - queueFlush(); - } - function dequeueJob(job) { - let index = queue.indexOf(job); - if (index !== -1 && index > lastFlushedIndex) - queue.splice(index, 1); - } - function queueFlush() { - if (!flushing && !flushPending) { - flushPending = true; - queueMicrotask(flushJobs); - } - } - function flushJobs() { - flushPending = false; - flushing = true; - for (let i = 0; i < queue.length; i++) { - queue[i](); - lastFlushedIndex = i; - } - queue.length = 0; - lastFlushedIndex = -1; - flushing = false; - } - - // packages/alpinejs/src/reactivity.js - var reactive; - var effect; - var release; - var raw; - var shouldSchedule = true; - function disableEffectScheduling(callback) { - shouldSchedule = false; - callback(); - shouldSchedule = true; - } - function setReactivityEngine(engine) { - reactive = engine.reactive; - release = engine.release; - effect = (callback) => engine.effect(callback, { scheduler: (task) => { - if (shouldSchedule) { - scheduler(task); - } else { - task(); - } - } }); - raw = engine.raw; - } - function overrideEffect(override) { - effect = override; - } - function elementBoundEffect(el) { - let cleanup2 = () => { - }; - let wrappedEffect = (callback) => { - let effectReference = effect(callback); - if (!el._x_effects) { - el._x_effects = /* @__PURE__ */ new Set(); - el._x_runEffects = () => { - el._x_effects.forEach((i) => i()); - }; - } - el._x_effects.add(effectReference); - cleanup2 = () => { - if (effectReference === void 0) - return; - el._x_effects.delete(effectReference); - release(effectReference); - }; - return effectReference; - }; - return [wrappedEffect, () => { - cleanup2(); - }]; - } - function watch(getter, callback) { - let firstTime = true; - let oldValue; - let effectReference = effect(() => { - let value = getter(); - JSON.stringify(value); - if (!firstTime) { - queueMicrotask(() => { - callback(value, oldValue); - oldValue = value; - }); - } else { - oldValue = value; - } - firstTime = false; - }); - return () => release(effectReference); - } - - // packages/alpinejs/src/mutation.js - var onAttributeAddeds = []; - var onElRemoveds = []; - var onElAddeds = []; - function onElAdded(callback) { - onElAddeds.push(callback); - } - function onElRemoved(el, callback) { - if (typeof callback === "function") { - if (!el._x_cleanups) - el._x_cleanups = []; - el._x_cleanups.push(callback); - } else { - callback = el; - onElRemoveds.push(callback); - } - } - function onAttributesAdded(callback) { - onAttributeAddeds.push(callback); - } - function onAttributeRemoved(el, name, callback) { - if (!el._x_attributeCleanups) - el._x_attributeCleanups = {}; - if (!el._x_attributeCleanups[name]) - el._x_attributeCleanups[name] = []; - el._x_attributeCleanups[name].push(callback); - } - function cleanupAttributes(el, names) { - if (!el._x_attributeCleanups) - return; - Object.entries(el._x_attributeCleanups).forEach(([name, value]) => { - if (names === void 0 || names.includes(name)) { - value.forEach((i) => i()); - delete el._x_attributeCleanups[name]; - } - }); - } - function cleanupElement(el) { - if (el._x_cleanups) { - while (el._x_cleanups.length) - el._x_cleanups.pop()(); - } - } - var observer = new MutationObserver(onMutate); - var currentlyObserving = false; - function startObservingMutations() { - observer.observe(document, { subtree: true, childList: true, attributes: true, attributeOldValue: true }); - currentlyObserving = true; - } - function stopObservingMutations() { - flushObserver(); - observer.disconnect(); - currentlyObserving = false; - } - var queuedMutations = []; - function flushObserver() { - let records = observer.takeRecords(); - queuedMutations.push(() => records.length > 0 && onMutate(records)); - let queueLengthWhenTriggered = queuedMutations.length; - queueMicrotask(() => { - if (queuedMutations.length === queueLengthWhenTriggered) { - while (queuedMutations.length > 0) - queuedMutations.shift()(); - } - }); - } - function mutateDom(callback) { - if (!currentlyObserving) - return callback(); - stopObservingMutations(); - let result = callback(); - startObservingMutations(); - return result; - } - var isCollecting = false; - var deferredMutations = []; - function deferMutations() { - isCollecting = true; - } - function flushAndStopDeferringMutations() { - isCollecting = false; - onMutate(deferredMutations); - deferredMutations = []; - } - function onMutate(mutations) { - if (isCollecting) { - deferredMutations = deferredMutations.concat(mutations); - return; - } - let addedNodes = /* @__PURE__ */ new Set(); - let removedNodes = /* @__PURE__ */ new Set(); - let addedAttributes = /* @__PURE__ */ new Map(); - let removedAttributes = /* @__PURE__ */ new Map(); - for (let i = 0; i < mutations.length; i++) { - if (mutations[i].target._x_ignoreMutationObserver) - continue; - if (mutations[i].type === "childList") { - mutations[i].addedNodes.forEach((node) => node.nodeType === 1 && addedNodes.add(node)); - mutations[i].removedNodes.forEach((node) => node.nodeType === 1 && removedNodes.add(node)); - } - if (mutations[i].type === "attributes") { - let el = mutations[i].target; - let name = mutations[i].attributeName; - let oldValue = mutations[i].oldValue; - let add2 = () => { - if (!addedAttributes.has(el)) - addedAttributes.set(el, []); - addedAttributes.get(el).push({ name, value: el.getAttribute(name) }); - }; - let remove = () => { - if (!removedAttributes.has(el)) - removedAttributes.set(el, []); - removedAttributes.get(el).push(name); - }; - if (el.hasAttribute(name) && oldValue === null) { - add2(); - } else if (el.hasAttribute(name)) { - remove(); - add2(); - } else { - remove(); - } - } - } - removedAttributes.forEach((attrs, el) => { - cleanupAttributes(el, attrs); - }); - addedAttributes.forEach((attrs, el) => { - onAttributeAddeds.forEach((i) => i(el, attrs)); - }); - for (let node of removedNodes) { - if (addedNodes.has(node)) - continue; - onElRemoveds.forEach((i) => i(node)); - } - addedNodes.forEach((node) => { - node._x_ignoreSelf = true; - node._x_ignore = true; - }); - for (let node of addedNodes) { - if (removedNodes.has(node)) - continue; - if (!node.isConnected) - continue; - delete node._x_ignoreSelf; - delete node._x_ignore; - onElAddeds.forEach((i) => i(node)); - node._x_ignore = true; - node._x_ignoreSelf = true; - } - addedNodes.forEach((node) => { - delete node._x_ignoreSelf; - delete node._x_ignore; - }); - addedNodes = null; - removedNodes = null; - addedAttributes = null; - removedAttributes = null; - } - - // packages/alpinejs/src/scope.js - function scope(node) { - return mergeProxies(closestDataStack(node)); - } - function addScopeToNode(node, data2, referenceNode) { - node._x_dataStack = [data2, ...closestDataStack(referenceNode || node)]; - return () => { - node._x_dataStack = node._x_dataStack.filter((i) => i !== data2); - }; - } - function closestDataStack(node) { - if (node._x_dataStack) - return node._x_dataStack; - if (typeof ShadowRoot === "function" && node instanceof ShadowRoot) { - return closestDataStack(node.host); - } - if (!node.parentNode) { - return []; - } - return closestDataStack(node.parentNode); - } - function mergeProxies(objects) { - return new Proxy({ objects }, mergeProxyTrap); - } - var mergeProxyTrap = { - ownKeys({ objects }) { - return Array.from( - new Set(objects.flatMap((i) => Object.keys(i))) - ); - }, - has({ objects }, name) { - if (name == Symbol.unscopables) - return false; - return objects.some( - (obj) => Object.prototype.hasOwnProperty.call(obj, name) || Reflect.has(obj, name) - ); - }, - get({ objects }, name, thisProxy) { - if (name == "toJSON") - return collapseProxies; - return Reflect.get( - objects.find( - (obj) => Reflect.has(obj, name) - ) || {}, - name, - thisProxy - ); - }, - set({ objects }, name, value, thisProxy) { - const target = objects.find( - (obj) => Object.prototype.hasOwnProperty.call(obj, name) - ) || objects[objects.length - 1]; - const descriptor = Object.getOwnPropertyDescriptor(target, name); - if (descriptor?.set && descriptor?.get) - return Reflect.set(target, name, value, thisProxy); - return Reflect.set(target, name, value); - } - }; - function collapseProxies() { - let keys = Reflect.ownKeys(this); - return keys.reduce((acc, key) => { - acc[key] = Reflect.get(this, key); - return acc; - }, {}); - } - - // packages/alpinejs/src/interceptor.js - function initInterceptors(data2) { - let isObject2 = (val) => typeof val === "object" && !Array.isArray(val) && val !== null; - let recurse = (obj, basePath = "") => { - Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, { value, enumerable }]) => { - if (enumerable === false || value === void 0) - return; - if (typeof value === "object" && value !== null && value.__v_skip) - return; - let path = basePath === "" ? key : `${basePath}.${key}`; - if (typeof value === "object" && value !== null && value._x_interceptor) { - obj[key] = value.initialize(data2, path, key); - } else { - if (isObject2(value) && value !== obj && !(value instanceof Element)) { - recurse(value, path); - } - } - }); - }; - return recurse(data2); - } - function interceptor(callback, mutateObj = () => { - }) { - let obj = { - initialValue: void 0, - _x_interceptor: true, - initialize(data2, path, key) { - return callback(this.initialValue, () => get(data2, path), (value) => set(data2, path, value), path, key); - } - }; - mutateObj(obj); - return (initialValue) => { - if (typeof initialValue === "object" && initialValue !== null && initialValue._x_interceptor) { - let initialize = obj.initialize.bind(obj); - obj.initialize = (data2, path, key) => { - let innerValue = initialValue.initialize(data2, path, key); - obj.initialValue = innerValue; - return initialize(data2, path, key); - }; - } else { - obj.initialValue = initialValue; - } - return obj; - }; - } - function get(obj, path) { - return path.split(".").reduce((carry, segment) => carry[segment], obj); - } - function set(obj, path, value) { - if (typeof path === "string") - path = path.split("."); - if (path.length === 1) - obj[path[0]] = value; - else if (path.length === 0) - throw error; - else { - if (obj[path[0]]) - return set(obj[path[0]], path.slice(1), value); - else { - obj[path[0]] = {}; - return set(obj[path[0]], path.slice(1), value); - } - } - } - - // packages/alpinejs/src/magics.js - var magics = {}; - function magic(name, callback) { - magics[name] = callback; - } - function injectMagics(obj, el) { - Object.entries(magics).forEach(([name, callback]) => { - let memoizedUtilities = null; - function getUtilities() { - if (memoizedUtilities) { - return memoizedUtilities; - } else { - let [utilities, cleanup2] = getElementBoundUtilities(el); - memoizedUtilities = { interceptor, ...utilities }; - onElRemoved(el, cleanup2); - return memoizedUtilities; - } - } - Object.defineProperty(obj, `$${name}`, { - get() { - return callback(el, getUtilities()); - }, - enumerable: false - }); - }); - return obj; - } - - // packages/alpinejs/src/utils/error.js - function tryCatch(el, expression, callback, ...args) { - try { - return callback(...args); - } catch (e) { - handleError(e, el, expression); - } - } - function handleError(error2, el, expression = void 0) { - error2 = Object.assign( - error2 ?? { message: "No error message given." }, - { el, expression } - ); - console.warn(`Alpine Expression Error: ${error2.message} - -${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el); - setTimeout(() => { - throw error2; - }, 0); - } - - // packages/alpinejs/src/evaluator.js - var shouldAutoEvaluateFunctions = true; - function dontAutoEvaluateFunctions(callback) { - let cache = shouldAutoEvaluateFunctions; - shouldAutoEvaluateFunctions = false; - let result = callback(); - shouldAutoEvaluateFunctions = cache; - return result; - } - function evaluate(el, expression, extras = {}) { - let result; - evaluateLater(el, expression)((value) => result = value, extras); - return result; - } - function evaluateLater(...args) { - return theEvaluatorFunction(...args); - } - var theEvaluatorFunction = normalEvaluator; - function setEvaluator(newEvaluator) { - theEvaluatorFunction = newEvaluator; - } - function normalEvaluator(el, expression) { - let overriddenMagics = {}; - injectMagics(overriddenMagics, el); - let dataStack = [overriddenMagics, ...closestDataStack(el)]; - let evaluator = typeof expression === "function" ? generateEvaluatorFromFunction(dataStack, expression) : generateEvaluatorFromString(dataStack, expression, el); - return tryCatch.bind(null, el, expression, evaluator); - } - function generateEvaluatorFromFunction(dataStack, func) { - return (receiver = () => { - }, { scope: scope2 = {}, params = [] } = {}) => { - let result = func.apply(mergeProxies([scope2, ...dataStack]), params); - runIfTypeOfFunction(receiver, result); - }; - } - var evaluatorMemo = {}; - function generateFunctionFromString(expression, el) { - if (evaluatorMemo[expression]) { - return evaluatorMemo[expression]; - } - let AsyncFunction = Object.getPrototypeOf(async function() { - }).constructor; - let rightSideSafeExpression = /^[\n\s]*if.*\(.*\)/.test(expression.trim()) || /^(let|const)\s/.test(expression.trim()) ? `(async()=>{ ${expression} })()` : expression; - const safeAsyncFunction = () => { - try { - let func2 = new AsyncFunction( - ["__self", "scope"], - `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;` - ); - Object.defineProperty(func2, "name", { - value: `[Alpine] ${expression}` - }); - return func2; - } catch (error2) { - handleError(error2, el, expression); - return Promise.resolve(); - } - }; - let func = safeAsyncFunction(); - evaluatorMemo[expression] = func; - return func; - } - function generateEvaluatorFromString(dataStack, expression, el) { - let func = generateFunctionFromString(expression, el); - return (receiver = () => { - }, { scope: scope2 = {}, params = [] } = {}) => { - func.result = void 0; - func.finished = false; - let completeScope = mergeProxies([scope2, ...dataStack]); - if (typeof func === "function") { - let promise = func(func, completeScope).catch((error2) => handleError(error2, el, expression)); - if (func.finished) { - runIfTypeOfFunction(receiver, func.result, completeScope, params, el); - func.result = void 0; - } else { - promise.then((result) => { - runIfTypeOfFunction(receiver, result, completeScope, params, el); - }).catch((error2) => handleError(error2, el, expression)).finally(() => func.result = void 0); - } - } - }; - } - function runIfTypeOfFunction(receiver, value, scope2, params, el) { - if (shouldAutoEvaluateFunctions && typeof value === "function") { - let result = value.apply(scope2, params); - if (result instanceof Promise) { - result.then((i) => runIfTypeOfFunction(receiver, i, scope2, params)).catch((error2) => handleError(error2, el, value)); - } else { - receiver(result); - } - } else if (typeof value === "object" && value instanceof Promise) { - value.then((i) => receiver(i)); - } else { - receiver(value); - } - } - - // packages/alpinejs/src/directives.js - var prefixAsString = "x-"; - function prefix(subject = "") { - return prefixAsString + subject; - } - function setPrefix(newPrefix) { - prefixAsString = newPrefix; - } - var directiveHandlers = {}; - function directive(name, callback) { - directiveHandlers[name] = callback; - return { - before(directive2) { - if (!directiveHandlers[directive2]) { - console.warn(String.raw`Cannot find directive \`${directive2}\`. \`${name}\` will use the default order of execution`); - return; - } - const pos = directiveOrder.indexOf(directive2); - directiveOrder.splice(pos >= 0 ? pos : directiveOrder.indexOf("DEFAULT"), 0, name); - } - }; - } - function directiveExists(name) { - return Object.keys(directiveHandlers).includes(name); - } - function directives(el, attributes, originalAttributeOverride) { - attributes = Array.from(attributes); - if (el._x_virtualDirectives) { - let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value]) => ({ name, value })); - let staticAttributes = attributesOnly(vAttributes); - vAttributes = vAttributes.map((attribute) => { - if (staticAttributes.find((attr) => attr.name === attribute.name)) { - return { - name: `x-bind:${attribute.name}`, - value: `"${attribute.value}"` - }; - } - return attribute; - }); - attributes = attributes.concat(vAttributes); - } - let transformedAttributeMap = {}; - let directives2 = attributes.map(toTransformedAttributes((newName, oldName) => transformedAttributeMap[newName] = oldName)).filter(outNonAlpineAttributes).map(toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort(byPriority); - return directives2.map((directive2) => { - return getDirectiveHandler(el, directive2); - }); - } - function attributesOnly(attributes) { - return Array.from(attributes).map(toTransformedAttributes()).filter((attr) => !outNonAlpineAttributes(attr)); - } - var isDeferringHandlers = false; - var directiveHandlerStacks = /* @__PURE__ */ new Map(); - var currentHandlerStackKey = Symbol(); - function deferHandlingDirectives(callback) { - isDeferringHandlers = true; - let key = Symbol(); - currentHandlerStackKey = key; - directiveHandlerStacks.set(key, []); - let flushHandlers = () => { - while (directiveHandlerStacks.get(key).length) - directiveHandlerStacks.get(key).shift()(); - directiveHandlerStacks.delete(key); - }; - let stopDeferring = () => { - isDeferringHandlers = false; - flushHandlers(); - }; - callback(flushHandlers); - stopDeferring(); - } - function getElementBoundUtilities(el) { - let cleanups = []; - let cleanup2 = (callback) => cleanups.push(callback); - let [effect3, cleanupEffect] = elementBoundEffect(el); - cleanups.push(cleanupEffect); - let utilities = { - Alpine: alpine_default, - effect: effect3, - cleanup: cleanup2, - evaluateLater: evaluateLater.bind(evaluateLater, el), - evaluate: evaluate.bind(evaluate, el) - }; - let doCleanup = () => cleanups.forEach((i) => i()); - return [utilities, doCleanup]; - } - function getDirectiveHandler(el, directive2) { - let noop = () => { - }; - let handler4 = directiveHandlers[directive2.type] || noop; - let [utilities, cleanup2] = getElementBoundUtilities(el); - onAttributeRemoved(el, directive2.original, cleanup2); - let fullHandler = () => { - if (el._x_ignore || el._x_ignoreSelf) - return; - handler4.inline && handler4.inline(el, directive2, utilities); - handler4 = handler4.bind(handler4, el, directive2, utilities); - isDeferringHandlers ? directiveHandlerStacks.get(currentHandlerStackKey).push(handler4) : handler4(); - }; - fullHandler.runCleanups = cleanup2; - return fullHandler; - } - var startingWith = (subject, replacement) => ({ name, value }) => { - if (name.startsWith(subject)) - name = name.replace(subject, replacement); - return { name, value }; - }; - var into = (i) => i; - function toTransformedAttributes(callback = () => { - }) { - return ({ name, value }) => { - let { name: newName, value: newValue } = attributeTransformers.reduce((carry, transform) => { - return transform(carry); - }, { name, value }); - if (newName !== name) - callback(newName, name); - return { name: newName, value: newValue }; - }; - } - var attributeTransformers = []; - function mapAttributes(callback) { - attributeTransformers.push(callback); - } - function outNonAlpineAttributes({ name }) { - return alpineAttributeRegex().test(name); - } - var alpineAttributeRegex = () => new RegExp(`^${prefixAsString}([^:^.]+)\\b`); - function toParsedDirectives(transformedAttributeMap, originalAttributeOverride) { - return ({ name, value }) => { - let typeMatch = name.match(alpineAttributeRegex()); - let valueMatch = name.match(/:([a-zA-Z0-9\-_:]+)/); - let modifiers = name.match(/\.[^.\]]+(?=[^\]]*$)/g) || []; - let original = originalAttributeOverride || transformedAttributeMap[name] || name; - return { - type: typeMatch ? typeMatch[1] : null, - value: valueMatch ? valueMatch[1] : null, - modifiers: modifiers.map((i) => i.replace(".", "")), - expression: value, - original - }; - }; - } - var DEFAULT = "DEFAULT"; - var directiveOrder = [ - "ignore", - "ref", - "data", - "id", - "anchor", - "bind", - "init", - "for", - "model", - "modelable", - "transition", - "show", - "if", - DEFAULT, - "teleport" - ]; - function byPriority(a, b) { - let typeA = directiveOrder.indexOf(a.type) === -1 ? DEFAULT : a.type; - let typeB = directiveOrder.indexOf(b.type) === -1 ? DEFAULT : b.type; - return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB); - } - - // packages/alpinejs/src/utils/dispatch.js - function dispatch(el, name, detail = {}) { - el.dispatchEvent( - new CustomEvent(name, { - detail, - bubbles: true, - // Allows events to pass the shadow DOM barrier. - composed: true, - cancelable: true - }) - ); - } - - // packages/alpinejs/src/utils/walk.js - function walk(el, callback) { - if (typeof ShadowRoot === "function" && el instanceof ShadowRoot) { - Array.from(el.children).forEach((el2) => walk(el2, callback)); - return; - } - let skip = false; - callback(el, () => skip = true); - if (skip) - return; - let node = el.firstElementChild; - while (node) { - walk(node, callback, false); - node = node.nextElementSibling; - } - } - - // packages/alpinejs/src/utils/warn.js - function warn(message, ...args) { - console.warn(`Alpine Warning: ${message}`, ...args); - } - - // packages/alpinejs/src/lifecycle.js - var started = false; - function start() { - if (started) - warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."); - started = true; - if (!document.body) - warn("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's ` +@endif \ No newline at end of file diff --git a/resources/views/partials/forms/edit/submit.blade.php b/resources/views/partials/forms/edit/submit.blade.php index 4c87c7bb2..3d132b6e1 100644 --- a/resources/views/partials/forms/edit/submit.blade.php +++ b/resources/views/partials/forms/edit/submit.blade.php @@ -2,6 +2,6 @@ diff --git a/resources/views/partials/more-info.blade.php b/resources/views/partials/more-info.blade.php index 71dafb2a0..bc2e56a3a 100644 --- a/resources/views/partials/more-info.blade.php +++ b/resources/views/partials/more-info.blade.php @@ -1,3 +1,3 @@ - + diff --git a/resources/views/reports/activity.blade.php b/resources/views/reports/activity.blade.php index a7e6f9f15..6ed55dc16 100644 --- a/resources/views/reports/activity.blade.php +++ b/resources/views/reports/activity.blade.php @@ -52,7 +52,7 @@ {{ trans('admin/hardware/table.serial') }} {{ trans('general.item') }} {{ trans('general.to') }} - {{ trans('general.notes') }} + {{ trans('general.notes') }} {{ trans('general.changed') }} {{ trans('admin/settings/general.login_ip') }} {{ trans('admin/settings/general.login_user_agent') }} diff --git a/resources/views/settings/alerts.blade.php b/resources/views/settings/alerts.blade.php index 0d434040a..870692f1f 100644 --- a/resources/views/settings/alerts.blade.php +++ b/resources/views/settings/alerts.blade.php @@ -139,14 +139,29 @@
{{ Form::text('audit_warning_days', old('audit_warning_days', $setting->audit_warning_days), array('class' => 'form-control','placeholder' => '14', 'maxlength'=>'3', 'style'=>'width: 60px;')) }} {{ trans('general.days') }} +
+
+ {!! $errors->first('audit_warning_days', '') !!} +

{{ trans('admin/settings/general.audit_warning_days_help') }}

+
+ + + +
+
+ {{ Form::label('due_checkin_days', trans('admin/settings/general.due_checkin_days')) }} +
+
+ {{ Form::text('due_checkin_days', old('due_checkin_days', $setting->due_checkin_days), array('class' => 'form-control','placeholder' => '14', 'maxlength'=>'3', 'style'=>'width: 60px;')) }} + {{ trans('general.days') }}
- {!! $errors->first('audit_warning_days', '') !!} -

{{ trans('admin/settings/general.audit_warning_days_help') }}

+ {!! $errors->first('due_checkin_days', '') !!} +

{{ trans('admin/settings/general.due_checkin_days_help') }}

diff --git a/resources/views/settings/general.blade.php b/resources/views/settings/general.blade.php index 477d8e68a..a7d4979d1 100644 --- a/resources/views/settings/general.blade.php +++ b/resources/views/settings/general.blade.php @@ -163,6 +163,21 @@ + +
+
+ {{ trans('admin/settings/general.shortcuts_enabled') }} +
+
+ + {!! $errors->first('shortcuts_enabled', '') !!} +

{!!trans('admin/settings/general.shortcuts_help_text') !!}

+
+
+
diff --git a/resources/views/settings/index.blade.php b/resources/views/settings/index.blade.php index 3b805f921..ac7095814 100755 --- a/resources/views/settings/index.blade.php +++ b/resources/views/settings/index.blade.php @@ -57,7 +57,7 @@
-
+
@@ -74,7 +74,7 @@
-
+
@@ -91,7 +91,7 @@
-
+
-
+
@@ -124,7 +124,7 @@
-
+
@@ -142,7 +142,7 @@
-
+
-
+
-
+
-
+
-
+
@@ -219,7 +219,7 @@
-
+
-
+
-
+
-
+
@@ -280,7 +280,7 @@
-
+
-
+
@@ -311,7 +311,7 @@ @if (config('app.debug')=== true)
-
+
@@ -329,7 +329,7 @@
-
+
diff --git a/resources/views/settings/labels.blade.php b/resources/views/settings/labels.blade.php index 65d7e6c84..058446e74 100644 --- a/resources/views/settings/labels.blade.php +++ b/resources/views/settings/labels.blade.php @@ -147,14 +147,13 @@
@php $select1DValues = [ - 'default' => trans('admin/settings/general.default').' [ '.$setting->alt_barcode.' ]', - 'none' => trans('admin/settings/general.none'), 'C128' => 'C128', 'C39' => 'C39', 'EAN5' => 'EAN5', 'EAN13' => 'EAN13', 'UPCA' => 'UPCA', - 'UPCE' => 'UPCE' + 'UPCE' => 'UPCE', + 'none' => trans('admin/settings/general.none'), ]; @endphp {{ Form::select('label2_1d_type', $select1DValues, old('label2_1d_type', $setting->label2_1d_type), [ 'class'=>'select2 col-md-4', 'aria-label'=>'label2_1d_type' ]) }} @@ -179,11 +178,10 @@
@php $select2DValues = [ - 'default' => trans('admin/settings/general.default').' [ '.$setting->barcode_type.' ]', - 'none' => trans('admin/settings/general.none'), 'QRCODE' => 'QRCODE', 'DATAMATRIX' => 'DATAMATRIX', 'PDF417' => 'PDF417', + 'none' => trans('admin/settings/general.none'), ]; @endphp {{ Form::select('label2_2d_type', $select2DValues, old('label2_2d_type', $setting->label2_2d_type), [ 'class'=>'select2 col-md-4', 'aria-label'=>'label2_2d_type' ]) }} diff --git a/resources/views/settings/logins.blade.php b/resources/views/settings/logins.blade.php index aedef4f84..959392b63 100644 --- a/resources/views/settings/logins.blade.php +++ b/resources/views/settings/logins.blade.php @@ -2,7 +2,7 @@ {{-- Page title --}} @section('title') - Attempted Logins + {{ trans('admin/settings/general.login') }} @parent @stop diff --git a/resources/views/users/index.blade.php b/resources/views/users/index.blade.php index 91b9a2a31..28cbc30f7 100755 --- a/resources/views/users/index.blade.php +++ b/resources/views/users/index.blade.php @@ -18,7 +18,7 @@ @if ($snipeSettings->ldap_enabled == 1) {{trans('general.ldap_sync')}} @endif - {{ trans('general.create') }} + shortcuts_enabled == 1 ? "n" : ''}} class="btn btn-primary pull-right" style="margin-right: 5px;"> {{ trans('general.create') }} @endcan @if (request('status')=='deleted') diff --git a/resources/views/users/print.blade.php b/resources/views/users/print.blade.php index a9f977a3a..26ed2e812 100644 --- a/resources/views/users/print.blade.php +++ b/resources/views/users/print.blade.php @@ -373,7 +373,7 @@
- +
- - + + @@ -407,8 +407,8 @@ - - + + @@ -419,6 +419,10 @@ + + + +
EULA @@ -395,8 +395,8 @@
NameSignature{{ trans('general.name') }}{{ trans('general.signature') }} {{ trans('general.date') }}
NameSignature{{ trans('general.name') }}{{ trans('general.signature') }} {{ trans('general.date') }}