Browse Source

UI fixes/refactors (#3162)

* UI fixes/refactors

* Bump jQuery to 3.6.3
Alec Rust 3 years ago
parent
commit
24fca5086b
53 changed files with 382 additions and 384 deletions
  1. 1 1
      docs/docs/contributing/development.md
  2. 3 3
      package.json
  3. 7 1
      web/inc/main.php
  4. 0 1
      web/js/vendor/jquery-3.6.2.min.js
  5. 1 0
      web/js/vendor/jquery-3.6.3.min.js
  6. 1 1
      web/templates/includes/js.php
  7. 1 1
      web/templates/pages/add_access_key.php
  8. 2 2
      web/templates/pages/add_cron.php
  9. 1 1
      web/templates/pages/add_db.php
  10. 1 1
      web/templates/pages/add_dns.php
  11. 4 4
      web/templates/pages/add_dns_rec.php
  12. 1 1
      web/templates/pages/add_firewall.php
  13. 1 1
      web/templates/pages/add_firewall_banlist.php
  14. 1 1
      web/templates/pages/add_firewall_ipset.php
  15. 1 1
      web/templates/pages/add_ip.php
  16. 1 1
      web/templates/pages/add_key.php
  17. 2 2
      web/templates/pages/add_mail.php
  18. 1 1
      web/templates/pages/add_mail_acc.php
  19. 4 4
      web/templates/pages/add_package.php
  20. 2 2
      web/templates/pages/add_user.php
  21. 1 1
      web/templates/pages/add_web.php
  22. 1 1
      web/templates/pages/edit_backup_exclusions.php
  23. 1 1
      web/templates/pages/edit_cron.php
  24. 1 1
      web/templates/pages/edit_db.php
  25. 1 1
      web/templates/pages/edit_dns.php
  26. 1 1
      web/templates/pages/edit_dns_rec.php
  27. 1 1
      web/templates/pages/edit_firewall.php
  28. 1 1
      web/templates/pages/edit_ip.php
  29. 3 3
      web/templates/pages/edit_mail.php
  30. 1 1
      web/templates/pages/edit_mail_acc.php
  31. 2 2
      web/templates/pages/edit_package.php
  32. 1 1
      web/templates/pages/edit_server.php
  33. 1 1
      web/templates/pages/edit_server_bind9.php
  34. 1 1
      web/templates/pages/edit_server_dovecot.php
  35. 1 1
      web/templates/pages/edit_server_httpd.php
  36. 1 1
      web/templates/pages/edit_server_mysql.php
  37. 1 1
      web/templates/pages/edit_server_nginx.php
  38. 1 1
      web/templates/pages/edit_server_pgsql.php
  39. 1 1
      web/templates/pages/edit_server_php.php
  40. 1 1
      web/templates/pages/edit_server_service.php
  41. 1 1
      web/templates/pages/edit_user.php
  42. 17 17
      web/templates/pages/edit_web.php
  43. 4 4
      web/templates/pages/list_server_info.php
  44. 1 1
      web/templates/pages/login/login.php
  45. 1 1
      web/templates/pages/login/login_1.php
  46. 1 1
      web/templates/pages/login/login_2.php
  47. 1 1
      web/templates/pages/login/login_a.php
  48. 2 2
      web/templates/pages/login/reset2fa.php
  49. 1 1
      web/templates/pages/login/reset_1.php
  50. 1 1
      web/templates/pages/login/reset_2.php
  51. 1 1
      web/templates/pages/login/reset_3.php
  52. 2 10
      web/templates/pages/setup_webapp.php
  53. 290 290
      yarn.lock

+ 1 - 1
docs/docs/contributing/development.md

@@ -15,7 +15,7 @@ These are example instructions for creating a virtual machine running Hestia for
 These instructions use [Multipass](https://multipass.run/) to create the VM. Feel free to adapt the commands for any virtualization software you prefer.
 These instructions use [Multipass](https://multipass.run/) to create the VM. Feel free to adapt the commands for any virtualization software you prefer.
 
 
 ::: warning
 ::: warning
-Sometimes during this process, the mapping between the source code directory on your local machine to the directory in the VM can be lost. If this happens simply unmount and remount e.g.
+Sometimes the mapping between the source code directory on your local machine to the directory in the VM can be lost. If this happens simply unmount and remount e.g.
 
 
 ```bash
 ```bash
 multipass unmount hestia-dev
 multipass unmount hestia-dev

+ 3 - 3
package.json

@@ -23,8 +23,8 @@
 	},
 	},
 	"devDependencies": {
 	"devDependencies": {
 		"@prettier/plugin-php": "^0.19.2",
 		"@prettier/plugin-php": "^0.19.2",
-		"@typescript-eslint/eslint-plugin": "^5.46.1",
-		"@typescript-eslint/parser": "^5.46.1",
+		"@typescript-eslint/eslint-plugin": "^5.47.0",
+		"@typescript-eslint/parser": "^5.47.0",
 		"cssnano": "^5.1.14",
 		"cssnano": "^5.1.14",
 		"eslint": "^8.30.0",
 		"eslint": "^8.30.0",
 		"eslint-config-prettier": "^8.5.0",
 		"eslint-config-prettier": "^8.5.0",
@@ -45,7 +45,7 @@
 		"stylelint-config-prettier": "^9.0.4",
 		"stylelint-config-prettier": "^9.0.4",
 		"stylelint-config-standard": "^29.0.0",
 		"stylelint-config-standard": "^29.0.0",
 		"typescript": "^4.9.4",
 		"typescript": "^4.9.4",
-		"vitepress": "1.0.0-alpha.32",
+		"vitepress": "1.0.0-alpha.33",
 		"vue": "^3.2.45"
 		"vue": "^3.2.45"
 	}
 	}
 }
 }

+ 7 - 1
web/inc/main.php

@@ -235,7 +235,7 @@ function show_alert_message($data) {
 
 
 	if (!empty($msgText)) {
 	if (!empty($msgText)) {
 		printf(
 		printf(
-			'<p class="inline-alert %s u-mb20"><i class="fas %s"></i> %s</p>',
+			'<div class="inline-alert %s u-mb20" role="alert"><i class="fas %s"></i><p>%s</p></div>',
 			$msgClass,
 			$msgClass,
 			$msgIcon,
 			$msgIcon,
 			$msgText,
 			$msgText,
@@ -243,6 +243,12 @@ function show_alert_message($data) {
 	}
 	}
 }
 }
 
 
+function show_error_message($error) {
+	if (isset($error)) {
+		echo $error;
+	}
+}
+
 function top_panel($user, $TAB) {
 function top_panel($user, $TAB) {
 	$command = HESTIA_CMD . "v-list-user " . $user . " 'json'";
 	$command = HESTIA_CMD . "v-list-user " . $user . " 'json'";
 	exec($command, $output, $return_var);
 	exec($command, $output, $return_var);

File diff suppressed because it is too large
+ 0 - 1
web/js/vendor/jquery-3.6.2.min.js


File diff suppressed because it is too large
+ 1 - 0
web/js/vendor/jquery-3.6.3.min.js


+ 1 - 1
web/templates/includes/js.php

@@ -1,7 +1,7 @@
 <script defer src="/js/main.js?<?= JS_LATEST_UPDATE ?>"></script>
 <script defer src="/js/main.js?<?= JS_LATEST_UPDATE ?>"></script>
 <script defer src="/js/shortcuts.js?<?= JS_LATEST_UPDATE ?>"></script>
 <script defer src="/js/shortcuts.js?<?= JS_LATEST_UPDATE ?>"></script>
 <script defer src="/js/vendor/alpine-3.10.5.min.js?<?= JS_LATEST_UPDATE ?>"></script>
 <script defer src="/js/vendor/alpine-3.10.5.min.js?<?= JS_LATEST_UPDATE ?>"></script>
-<script defer src="/js/vendor/jquery-3.6.2.min.js?<?= JS_LATEST_UPDATE ?>"></script>
+<script defer src="/js/vendor/jquery-3.6.3.min.js?<?= JS_LATEST_UPDATE ?>"></script>
 <script defer src="/js/vendor/jquery-ui.min.js?<?= JS_LATEST_UPDATE ?>"></script>
 <script defer src="/js/vendor/jquery-ui.min.js?<?= JS_LATEST_UPDATE ?>"></script>
 <script defer src="/js/vendor/chart.min.js?<?= JS_LATEST_UPDATE ?>"></script>
 <script defer src="/js/vendor/chart.min.js?<?= JS_LATEST_UPDATE ?>"></script>
 <script defer src="/js/events.js?<?= JS_LATEST_UPDATE ?>"></script>
 <script defer src="/js/events.js?<?= JS_LATEST_UPDATE ?>"></script>

+ 1 - 1
web/templates/pages/add_access_key.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 2 - 2
web/templates/pages/add_cron.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>
@@ -344,7 +344,7 @@
 		<input type="hidden" name="token" value="<?= $_SESSION["token"] ?>">
 		<input type="hidden" name="token" value="<?= $_SESSION["token"] ?>">
 		<input type="hidden" name="ok" value="Add">
 		<input type="hidden" name="ok" value="Add">
 
 
-		<div class="form-container">
+		<div class="form-container form-container-wide">
 			<h1 class="form-title"><?= _("Adding Cron Job") ?></h1>
 			<h1 class="form-title"><?= _("Adding Cron Job") ?></h1>
 			<?php show_alert_message($_SESSION); ?>
 			<?php show_alert_message($_SESSION); ?>
 			<div class="u-mb20">
 			<div class="u-mb20">

+ 1 - 1
web/templates/pages/add_db.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/add_dns.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 4 - 4
web/templates/pages/add_dns_rec.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>
@@ -66,20 +66,20 @@
 							}
 							}
 						?>
 						?>
 					</select>
 					</select>
-					<input type="text" class="form-control list-editor" name="v_val" id="v_val" value="<?=htmlentities(trim($v_val, "'"))?>">
+					<input type="text" class="form-control list-editor" name="v_val" id="v_val" value="<?= htmlentities(trim($v_val, "'")) ?>">
 				</div>
 				</div>
 			</div>
 			</div>
 			<div class="u-mb10">
 			<div class="u-mb10">
 				<label for="v_priority" class="form-label">
 				<label for="v_priority" class="form-label">
 					<?= _("Priority") ?> <span class="optional">(<?= _("optional") ?>)</span>
 					<?= _("Priority") ?> <span class="optional">(<?= _("optional") ?>)</span>
 				</label>
 				</label>
-				<input type="text" class="form-control" name="v_priority" id="v_priority" value="<?=htmlentities(trim($v_priority, "'"))?>">
+				<input type="text" class="form-control" name="v_priority" id="v_priority" value="<?= htmlentities(trim($v_priority, "'")) ?>">
 			</div>
 			</div>
 			<div class="u-mb10">
 			<div class="u-mb10">
 				<label for="v_ttl" class="form-label">
 				<label for="v_ttl" class="form-label">
 					<?= _("TTL") ?> <span class="optional">(<?= _("optional") ?>)</span>
 					<?= _("TTL") ?> <span class="optional">(<?= _("optional") ?>)</span>
 				</label>
 				</label>
-				<input type="text" class="form-control" name="v_ttl" id="v_ttl" value="<?=htmlentities(trim($v_ttl, "'"))?>">
+				<input type="text" class="form-control" name="v_ttl" id="v_ttl" value="<?= htmlentities(trim($v_ttl, "'")) ?>">
 			</div>
 			</div>
 		</div>
 		</div>
 
 

+ 1 - 1
web/templates/pages/add_firewall.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/add_firewall_banlist.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/add_firewall_ipset.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/add_ip.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/add_key.php

@@ -13,7 +13,7 @@
 			<?php } ?>
 			<?php } ?>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 2 - 2
web/templates/pages/add_mail.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>
@@ -19,7 +19,7 @@
 
 
 	<form
 	<form
 		x-data="{
 		x-data="{
-			hasSmtpRelay: <?= $v_smtp_relay == "true" ? true : false ?>
+			hasSmtpRelay: <?= $v_smtp_relay == "true" ? "true" : "false" ?>
 		}"
 		}"
 		id="vstobjects"
 		id="vstobjects"
 		name="v_add_mail"
 		name="v_add_mail"

+ 1 - 1
web/templates/pages/add_mail_acc.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 4 - 4
web/templates/pages/add_package.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>
@@ -104,7 +104,7 @@
 				<?php if (!empty($_SESSION['WEB_BACKEND'])) { echo ""; ?>
 				<?php if (!empty($_SESSION['WEB_BACKEND'])) { echo ""; ?>
 					<div class="u-mb10">
 					<div class="u-mb10">
 						<label for="v_backend_template" class="form-label">
 						<label for="v_backend_template" class="form-label">
-							<?= _("Backend Template") . "<span class='optional'>" .strtoupper($_SESSION['WEB_BACKEND']) . "</span>";?>
+							<?= _("Backend Template") . "<span class='optional'>" . strtoupper($_SESSION["WEB_BACKEND"]) . "</span>" ?>
 						</label>
 						</label>
 						<select class="form-select" name="v_backend_template" id="v_backend_template">
 						<select class="form-select" name="v_backend_template" id="v_backend_template">
 							<?php
 							<?php
@@ -123,7 +123,7 @@
 				<?php if (!empty($_SESSION['PROXY_SYSTEM'])) { echo ""; ?>
 				<?php if (!empty($_SESSION['PROXY_SYSTEM'])) { echo ""; ?>
 					<div class="u-mb10">
 					<div class="u-mb10">
 						<label for="v_proxy_template" class="form-label">
 						<label for="v_proxy_template" class="form-label">
-							<?= _("Proxy Template") . "<span class='optional'>" .strtoupper($_SESSION['PROXY_SYSTEM']) . "</span>";?>
+							<?= _("Proxy Template") . "<span class='optional'>" . strtoupper($_SESSION["PROXY_SYSTEM"]) . "</span>" ?>
 						</label>
 						</label>
 						<select class="form-select" name="v_proxy_template" id="v_proxy_template">
 						<select class="form-select" name="v_proxy_template" id="v_proxy_template">
 							<?php
 							<?php
@@ -297,7 +297,7 @@
 					<select class="form-select" name="v_shell" id="v_shell">
 					<select class="form-select" name="v_shell" id="v_shell">
 						<?php foreach ($shells as $key => $value): ?>
 						<?php foreach ($shells as $key => $value): ?>
 							<option value="<?= htmlentities($value) ?>"
 							<option value="<?= htmlentities($value) ?>"
-								<?php if ((!empty($v_shell)) && ($value == trim($v_shell,"''"))): ?>
+								<?php if (!empty($v_shell) && $value == trim($v_shell, "''")): ?>
 									selected
 									selected
 								<?php endif; ?>
 								<?php endif; ?>
 							>
 							>

+ 2 - 2
web/templates/pages/add_user.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>
@@ -122,7 +122,7 @@
 				<label for="v_notify" class="form-label">
 				<label for="v_notify" class="form-label">
 					<?= _("Send login credentials to email address") ?>
 					<?= _("Send login credentials to email address") ?>
 				</label>
 				</label>
-				<input type="email" class="form-control" name="v_notify" id="v_notify" value="<?=htmlentities(trim($v_notify, "'"))?>" tabindex="8">
+				<input type="email" class="form-control" name="v_notify" id="v_notify" value="<?= htmlentities(trim($v_notify, "'")) ?>" tabindex="8">
 			</div>
 			</div>
 		</div>
 		</div>
 
 

+ 1 - 1
web/templates/pages/add_web.php

@@ -8,7 +8,7 @@
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
 			<?php if (($user_plain == "admin" && $_GET["accept"] === "true") || $user_plain !== "admin") { ?>
 			<?php if (($user_plain == "admin" && $_GET["accept"] === "true") || $user_plain !== "admin") { ?>
-				<button class="button" type="submit" form="vstobjects">
+				<button type="submit" class="button" form="vstobjects">
 					<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 					<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				</button>
 				</button>
 			<?php } ?>
 			<?php } ?>

+ 1 - 1
web/templates/pages/edit_backup_exclusions.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_cron.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_db.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_dns.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_dns_rec.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_firewall.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_ip.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 3 - 3
web/templates/pages/edit_mail.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>
@@ -65,7 +65,7 @@
 				</label>
 				</label>
 				<input type="text" class="form-control" name="v_rate" id="v_rate" value="<?=htmlentities(trim($v_rate, "'"))?>" <?php if($_SESSION['userContext'] != "admin"){ echo "disabled";}?>>
 				<input type="text" class="form-control" name="v_rate" id="v_rate" value="<?=htmlentities(trim($v_rate, "'"))?>" <?php if($_SESSION['userContext'] != "admin"){ echo "disabled";}?>>
 			</div>
 			</div>
-			<?php if (!empty($_SESSION['ANTISPAM_SYSTEM'])) {?>
+			<?php if (!empty($_SESSION["ANTISPAM_SYSTEM"])) { ?>
 				<div class="form-check u-mb10">
 				<div class="form-check u-mb10">
 					<input class="form-check-input" type="checkbox" name="v_antispam" id="v_antispam" <?php if ($v_antispam == 'yes') echo 'checked'; ?>>
 					<input class="form-check-input" type="checkbox" name="v_antispam" id="v_antispam" <?php if ($v_antispam == 'yes') echo 'checked'; ?>>
 					<label for="v_antispam">
 					<label for="v_antispam">
@@ -79,7 +79,7 @@
 					</label>
 					</label>
 				</div>
 				</div>
 			<?php } ?>
 			<?php } ?>
-			<?php if (!empty($_SESSION['ANTIVIRUS_SYSTEM'])) {?>
+			<?php if (!empty($_SESSION["ANTIVIRUS_SYSTEM"])) { ?>
 				<div class="form-check u-mb10">
 				<div class="form-check u-mb10">
 					<input class="form-check-input" type="checkbox" name="v_antivirus" id="v_antivirus" <?php if ($v_antivirus == 'yes') echo 'checked'; ?>>
 					<input class="form-check-input" type="checkbox" name="v_antivirus" id="v_antivirus" <?php if ($v_antivirus == 'yes') echo 'checked'; ?>>
 					<label for="v_antivirus">
 					<label for="v_antivirus">

+ 1 - 1
web/templates/pages/edit_mail_acc.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 2 - 2
web/templates/pages/edit_package.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>
@@ -301,7 +301,7 @@
 					<select class="form-select" name="v_shell" id="v_shell">
 					<select class="form-select" name="v_shell" id="v_shell">
 						<?php foreach ($shells as $key => $value): ?>
 						<?php foreach ($shells as $key => $value): ?>
 							<option value="<?= htmlentities($value) ?>"
 							<option value="<?= htmlentities($value) ?>"
-								<?php if ((!empty($v_shell)) && ($value == trim($v_shell,"''"))): ?>
+								<?php if (!empty($v_shell) && $value == trim($v_shell, "''")): ?>
 									selected
 									selected
 								<?php endif; ?>
 								<?php endif; ?>
 							>
 							>

+ 1 - 1
web/templates/pages/edit_server.php

@@ -15,7 +15,7 @@
 			<?php } ?>
 			<?php } ?>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_server_bind9.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_server_dovecot.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_server_httpd.php

@@ -10,7 +10,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_server_mysql.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_server_nginx.php

@@ -10,7 +10,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_server_pgsql.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_server_php.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_server_service.php

@@ -7,7 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 1 - 1
web/templates/pages/edit_user.php

@@ -48,7 +48,7 @@
 					</div>
 					</div>
 				</a>
 				</a>
 			<?php } ?>
 			<?php } ?>
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>

+ 17 - 17
web/templates/pages/edit_web.php

@@ -15,7 +15,7 @@
 					<i class="fas fa-magic icon-blue"></i> <?= _("Quick Install App") ?>
 					<i class="fas fa-magic icon-blue"></i> <?= _("Quick Install App") ?>
 				</a>
 				</a>
 			<?php } ?>
 			<?php } ?>
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>
@@ -93,7 +93,7 @@
 					?>
 					?>
 				</select>
 				</select>
 			</div>
 			</div>
-			<div class="stats-auth u-mb10" style="<?php if ($v_stats == 'none') { ?>display:none<?php } ?>">
+			<div class="stats-auth u-mb10" style="<?php if ($v_stats == "none") { ?>display:none<?php } ?>">
 				<div class="form-check">
 				<div class="form-check">
 					<input x-model="statsAuthEnabled" class="form-check-input" type="checkbox" name="v_stats_auth" id="v_stats_auth">
 					<input x-model="statsAuthEnabled" class="form-check-input" type="checkbox" name="v_stats_auth" id="v_stats_auth">
 					<label for="v_stats_auth">
 					<label for="v_stats_auth">
@@ -129,13 +129,13 @@
 				<div class="form-check">
 				<div class="form-check">
 					<input class="form-check-input v-redirect-custom-value" type="radio" name="v-redirect" id="v-redirect-radio-1" value="<?='www.'.htmlentities($v_domain);?>" <?php if ($v_redirect == "www.".$v_domain) echo 'checked'; ?>>
 					<input class="form-check-input v-redirect-custom-value" type="radio" name="v-redirect" id="v-redirect-radio-1" value="<?='www.'.htmlentities($v_domain);?>" <?php if ($v_redirect == "www.".$v_domain) echo 'checked'; ?>>
 					<label for="v-redirect-radio-1">
 					<label for="v-redirect-radio-1">
-						<?=sprintf(_('Redirect visitors to %s'),"www.".htmlentities($v_domain));?>
+						<?= sprintf(_("Redirect visitors to %s"), "www." . htmlentities($v_domain)) ?>
 					</label>
 					</label>
 				</div>
 				</div>
 				<div class="form-check">
 				<div class="form-check">
 					<input class="form-check-input v-redirect-custom-value" type="radio" name="v-redirect" id="v-redirect-radio-2" value="<?=htmlentities($v_domain);?>" <?php if( $v_redirect == $v_domain) echo 'checked';?> >
 					<input class="form-check-input v-redirect-custom-value" type="radio" name="v-redirect" id="v-redirect-radio-2" value="<?=htmlentities($v_domain);?>" <?php if( $v_redirect == $v_domain) echo 'checked';?> >
 					<label for="v-redirect-radio-2">
 					<label for="v-redirect-radio-2">
-						<?=sprintf(_('Redirect visitors to %s'),htmlentities($v_domain));?>
+						<?= sprintf(_("Redirect visitors to %s"), htmlentities($v_domain)) ?>
 					</label>
 					</label>
 				</div>
 				</div>
 				<div class="form-check">
 				<div class="form-check">
@@ -147,15 +147,15 @@
 				<div id="custom_redirect" class="u-pl30" style="display:<?php if (empty($v_redirect_custom)) { echo 'none';} else {echo 'block';}?> ;">
 				<div id="custom_redirect" class="u-pl30" style="display:<?php if (empty($v_redirect_custom)) { echo 'none';} else {echo 'block';}?> ;">
 					<div class="u-mt15 u-mb10">
 					<div class="u-mt15 u-mb10">
 						<label for="v-redirect-custom" class="form-label"><?= _("Target domain or URL") ?></label>
 						<label for="v-redirect-custom" class="form-label"><?= _("Target domain or URL") ?></label>
-						<input type="text" class="form-control" name="v-redirect-custom" id="v-redirect-custom" value="<?=$v_redirect_custom;?>">
+						<input type="text" class="form-control" name="v-redirect-custom" id="v-redirect-custom" value="<?= $v_redirect_custom ?>">
 					</div>
 					</div>
 					<div class="u-mb20">
 					<div class="u-mb20">
 						<label for="v-redirect-code" class="form-label"><?= _("Status code") ?>:</label>
 						<label for="v-redirect-code" class="form-label"><?= _("Status code") ?>:</label>
 						<select class="form-select" name="v-redirect-code" id="v-redirect-code">
 						<select class="form-select" name="v-redirect-code" id="v-redirect-code">
 							<?php foreach ($redirect_code_options as $status_code): ?>
 							<?php foreach ($redirect_code_options as $status_code): ?>
-							<option value="<?=$status_code;?>"
-								<?=($v_redirect_code === $status_code || (empty($v_redirect_code) && $status_code === $v_redirect_code))?' selected="selected" ':''; ?>>
-								<?=$status_code;?>
+							<option value="<?= $status_code ?>"
+								<?= $v_redirect_code === $status_code || (empty($v_redirect_code) && $status_code === $v_redirect_code) ? ' selected="selected" ' : "" ?>>
+								<?= $status_code ?>
 							</option>
 							</option>
 							<?php endforeach; ?>
 							<?php endforeach; ?>
 						</select>
 						</select>
@@ -250,10 +250,10 @@
 				</button>
 				</button>
 			</div>
 			</div>
 			<div x-cloak x-show="showAdvanced">
 			<div x-cloak x-show="showAdvanced">
-				<?php if (($_SESSION['userContext'] === 'admin') || ($_SESSION['userContext'] === 'user') && ($_SESSION['POLICY_USER_EDIT_WEB_TEMPLATES'] === 'yes')) { ?>
+				<?php if ($_SESSION["userContext"] === "admin" || ($_SESSION["userContext"] === "user" && $_SESSION["POLICY_USER_EDIT_WEB_TEMPLATES"] === "yes")) { ?>
 					<div class="u-mb10">
 					<div class="u-mb10">
 						<label for="v_template" class="form-label">
 						<label for="v_template" class="form-label">
-							<?= _("Web Template") . "<span class='optional'>" . strtoupper($_SESSION['WEB_SYSTEM']) . "</span>";?>
+							<?= _("Web Template") . "<span class='optional'>" . strtoupper($_SESSION["WEB_SYSTEM"]) . "</span>" ?>
 						</label>
 						</label>
 						<select class="form-select" name="v_template" id="v_template">
 						<select class="form-select" name="v_template" id="v_template">
 							<?php
 							<?php
@@ -268,7 +268,7 @@
 							?>
 							?>
 						</select>
 						</select>
 					</div>
 					</div>
-					<?php if($_SESSION['WEB_SYSTEM'] == 'nginx'){?>
+					<?php if ($_SESSION["WEB_SYSTEM"] == "nginx") { ?>
 						<div class="form-check u-mb10">
 						<div class="form-check u-mb10">
 							<input x-model="nginxCacheEnabled" class="form-check-input" type="checkbox" name="v_nginx_cache_check" id="v_nginx_cache_check">
 							<input x-model="nginxCacheEnabled" class="form-check-input" type="checkbox" name="v_nginx_cache_check" id="v_nginx_cache_check">
 							<label for="v_nginx_cache_check">
 							<label for="v_nginx_cache_check">
@@ -283,14 +283,14 @@
 								<label for="v_nginx_cache_duration" class="form-label">
 								<label for="v_nginx_cache_duration" class="form-label">
 									<?= _("Cache Duration") ?> <span class="optional"><?= _("For example: 30s, 10m or 1d") ?>
 									<?= _("Cache Duration") ?> <span class="optional"><?= _("For example: 30s, 10m or 1d") ?>
 								</label>
 								</label>
-								<input type="text" class="form-control" name="v_nginx_cache_duration" id="v_nginx_cache_duration" value="<?=htmlentities(trim($v_nginx_cache_duration, "'"))?>">
+								<input type="text" class="form-control" name="v_nginx_cache_duration" id="v_nginx_cache_duration" value="<?= htmlentities(trim($v_nginx_cache_duration, "'")) ?>">
 							</div>
 							</div>
 						</div>
 						</div>
 					<?php } ?>
 					<?php } ?>
-					<?php if (!empty($_SESSION['WEB_BACKEND'])) { ?>
+					<?php if (!empty($_SESSION["WEB_BACKEND"])) { ?>
 						<div class="u-mb10">
 						<div class="u-mb10">
 							<label for="v_backend_template" class="form-label">
 							<label for="v_backend_template" class="form-label">
-								<?= _("Backend Template") . " <span class='optional'>" . strtoupper($_SESSION['WEB_BACKEND']) . "</span>";?>
+								<?= _("Backend Template") . " <span class='optional'>" . strtoupper($_SESSION["WEB_BACKEND"]) . "</span>" ?>
 							</label>
 							</label>
 							<select class="form-select" name="v_backend_template" id="v_backend_template">
 							<select class="form-select" name="v_backend_template" id="v_backend_template">
 								<?php
 								<?php
@@ -308,13 +308,13 @@
 								?>
 								?>
 							</select>
 							</select>
 						</div>
 						</div>
-					<?php }?>
-					<?php if (!empty($_SESSION['PROXY_SYSTEM'])) { ?>
+					<?php } ?>
+					<?php if (!empty($_SESSION["PROXY_SYSTEM"])) { ?>
 						<div style="display: none;">
 						<div style="display: none;">
 							<div class="form-check u-mb10">
 							<div class="form-check u-mb10">
 								<input x-model="proxySupportEnabled" class="form-check-input" type="checkbox" name="v_proxy" id="v_proxy">
 								<input x-model="proxySupportEnabled" class="form-check-input" type="checkbox" name="v_proxy" id="v_proxy">
 								<label for="v_proxy">
 								<label for="v_proxy">
-									<?= _("Proxy Support") . "<span class='optional'>" . strtoupper($_SESSION['PROXY_SYSTEM']) . "</span>";?>
+									<?= _("Proxy Support") . "<span class='optional'>" . strtoupper($_SESSION["PROXY_SYSTEM"]) . "</span>" ?>
 								</label>
 								</label>
 							</div>
 							</div>
 						</div>
 						</div>

+ 4 - 4
web/templates/pages/list_server_info.php

@@ -61,7 +61,7 @@
 										<span class="top-bar-menu-link-label"><?= _("Web") ?></span>
 										<span class="top-bar-menu-link-label"><?= _("Web") ?></span>
 									</a>
 									</a>
 								</li>
 								</li>
-							<?php }?>
+							<?php } ?>
 							<?php if ((isset($_SESSION['DNS_SYSTEM'])) && (!empty($_SESSION['DNS_SYSTEM']))) {?>
 							<?php if ((isset($_SESSION['DNS_SYSTEM'])) && (!empty($_SESSION['DNS_SYSTEM']))) {?>
 								<li class="top-bar-menu-item">
 								<li class="top-bar-menu-item">
 									<a class="top-bar-menu-link <?php if(isset($_GET['dns'])) echo 'active' ?>" href="/list/server/?dns">
 									<a class="top-bar-menu-link <?php if(isset($_GET['dns'])) echo 'active' ?>" href="/list/server/?dns">
@@ -69,7 +69,7 @@
 										<span class="top-bar-menu-link-label"><?= _("DNS") ?></span>
 										<span class="top-bar-menu-link-label"><?= _("DNS") ?></span>
 									</a>
 									</a>
 								</li>
 								</li>
-							<?php }?>
+							<?php } ?>
 							<?php if ((isset($_SESSION['MAIL_SYSTEM'])) && (!empty($_SESSION['MAIL_SYSTEM']))) {?>
 							<?php if ((isset($_SESSION['MAIL_SYSTEM'])) && (!empty($_SESSION['MAIL_SYSTEM']))) {?>
 								<li class="top-bar-menu-item">
 								<li class="top-bar-menu-item">
 									<a class="top-bar-menu-link <?php if(isset($_GET['mail'])) echo 'active' ?>" href="/list/server/?mail">
 									<a class="top-bar-menu-link <?php if(isset($_GET['mail'])) echo 'active' ?>" href="/list/server/?mail">
@@ -77,7 +77,7 @@
 										<span class="top-bar-menu-link-label"><?= _("Mail") ?></span>
 										<span class="top-bar-menu-link-label"><?= _("Mail") ?></span>
 									</a>
 									</a>
 								</li>
 								</li>
-							<?php }?>
+							<?php } ?>
 							<?php if ((isset($_SESSION['DB_SYSTEM'])) && (!empty($_SESSION['DB_SYSTEM']))) {?>
 							<?php if ((isset($_SESSION['DB_SYSTEM'])) && (!empty($_SESSION['DB_SYSTEM']))) {?>
 								<li class="top-bar-menu-item">
 								<li class="top-bar-menu-item">
 									<a class="top-bar-menu-link <?php if(isset($_GET['db'])) echo 'active' ?>" href="/list/server/?db">
 									<a class="top-bar-menu-link <?php if(isset($_GET['db'])) echo 'active' ?>" href="/list/server/?db">
@@ -85,7 +85,7 @@
 										<span class="top-bar-menu-link-label"><?= _("DB") ?></span>
 										<span class="top-bar-menu-link-label"><?= _("DB") ?></span>
 									</a>
 									</a>
 								</li>
 								</li>
-							<?php }?>
+							<?php } ?>
 							<li class="top-bar-menu-item">
 							<li class="top-bar-menu-item">
 								<a class="top-bar-menu-link" href="javascript:location.reload();" title="<?= _("Refresh") ?>">
 								<a class="top-bar-menu-link" href="javascript:location.reload();" title="<?= _("Refresh") ?>">
 									<i class="fas fa-arrow-rotate-right"></i>
 									<i class="fas fa-arrow-rotate-right"></i>

+ 1 - 1
web/templates/pages/login/login.php

@@ -8,7 +8,7 @@
 		<h1 class="login-title">
 		<h1 class="login-title">
 			<?= _("Welcome to Hestia Control Panel") ?>
 			<?= _("Welcome to Hestia Control Panel") ?>
 		</h1>
 		</h1>
-		<?php if (isset($error)) echo $error ?>
+		<?php show_error_message($error); ?>
 		<div class="u-mb20">
 		<div class="u-mb20">
 			<label for="user" class="form-label"><?= _("Username") ?></label>
 			<label for="user" class="form-label"><?= _("Username") ?></label>
 			<input type="text" class="form-control" name="user" id="user" autofocus>
 			<input type="text" class="form-control" name="user" id="user" autofocus>

+ 1 - 1
web/templates/pages/login/login_1.php

@@ -8,7 +8,7 @@
 		<h1 class="login-title">
 		<h1 class="login-title">
 			<?= _("Welcome") ?> <?= htmlspecialchars($_SESSION["login"]["username"]) ?>!
 			<?= _("Welcome") ?> <?= htmlspecialchars($_SESSION["login"]["username"]) ?>!
 		</h1>
 		</h1>
-		<?php if (isset($ERROR)) echo $ERROR ?>
+		<?php show_error_message($ERROR); ?>
 		<div class="u-mb20">
 		<div class="u-mb20">
 			<label for="password" class="form-label u-side-by-side">
 			<label for="password" class="form-label u-side-by-side">
 				<?= _("Password") ?>
 				<?= _("Password") ?>

+ 1 - 1
web/templates/pages/login/login_2.php

@@ -8,7 +8,7 @@
 		<h1 class="login-title">
 		<h1 class="login-title">
 			<?= _("2 Factor Authentication") ?>
 			<?= _("2 Factor Authentication") ?>
 		</h1>
 		</h1>
-		<?php if (isset($ERROR)) echo $ERROR ?>
+		<?php show_error_message($ERROR); ?>
 		<div class="u-mb20">
 		<div class="u-mb20">
 			<label for="twofa" class="form-label u-side-by-side">
 			<label for="twofa" class="form-label u-side-by-side">
 				<?= _("2FA Token") ?>
 				<?= _("2FA Token") ?>

+ 1 - 1
web/templates/pages/login/login_a.php

@@ -8,7 +8,7 @@
 		<h1 class="login-title">
 		<h1 class="login-title">
 			<?= _("Welcome to Hestia Control Panel") ?>
 			<?= _("Welcome to Hestia Control Panel") ?>
 		</h1>
 		</h1>
-		<?php if (isset($error)) echo $error ?>
+		<?php show_error_message($error); ?>
 		<div class="u-mb10">
 		<div class="u-mb10">
 			<label for="user" class="form-label"><?= _("Username") ?></label>
 			<label for="user" class="form-label"><?= _("Username") ?></label>
 			<input type="text" class="form-control" name="user" id="user" autofocus>
 			<input type="text" class="form-control" name="user" id="user" autofocus>

+ 2 - 2
web/templates/pages/login/reset2fa.php

@@ -7,7 +7,7 @@
 			<h1 class="login-title">
 			<h1 class="login-title">
 				<?= _("2FA Reset successfully") ?>
 				<?= _("2FA Reset successfully") ?>
 			</h1>
 			</h1>
-			<?php if (isset($ERROR)) echo $ERROR ?>
+			<?php show_error_message($ERROR); ?>
 			<div class="u-mt20">
 			<div class="u-mt20">
 				<button type="button" class="button button-secondary" onclick="location.href='/login/'">
 				<button type="button" class="button button-secondary" onclick="location.href='/login/'">
 					<?= _("Log in") ?>
 					<?= _("Log in") ?>
@@ -20,7 +20,7 @@
 			<h1 class="login-title">
 			<h1 class="login-title">
 				<?= _("Reset 2FA") ?>
 				<?= _("Reset 2FA") ?>
 			</div>
 			</div>
-			<?php if (isset($ERROR)) echo $ERROR ?>
+			<?php show_error_message($ERROR); ?>
 			<div class="u-mb10">
 			<div class="u-mb10">
 				<label for="user" class="form-label"><?= _("Username") ?></label>
 				<label for="user" class="form-label"><?= _("Username") ?></label>
 				<input type="text" class="form-control" name="user" id="user">
 				<input type="text" class="form-control" name="user" id="user">

+ 1 - 1
web/templates/pages/login/reset_1.php

@@ -7,7 +7,7 @@
 		<h1 class="login-title">
 		<h1 class="login-title">
 			<?= _("Forgot Password") ?>
 			<?= _("Forgot Password") ?>
 		</h1>
 		</h1>
-		<?php if (isset($ERROR)) echo $ERROR ?>
+		<?php show_error_message($ERROR); ?>
 		<div class="u-mb10">
 		<div class="u-mb10">
 			<label for="user" class="form-label"><?= _("Username") ?></label>
 			<label for="user" class="form-label"><?= _("Username") ?></label>
 			<input type="text" class="form-control" name="user" id="user">
 			<input type="text" class="form-control" name="user" id="user">

+ 1 - 1
web/templates/pages/login/reset_2.php

@@ -6,7 +6,7 @@
 		<h1 class="login-title">
 		<h1 class="login-title">
 			<?= _("Forgot Password") ?>
 			<?= _("Forgot Password") ?>
 		</h1>
 		</h1>
-		<?php if (isset($ERROR)) echo $ERROR ?>
+		<?php show_error_message($ERROR); ?>
 		<p class="inline-success u-mb10">
 		<p class="inline-success u-mb10">
 			<?= _("RESET_CODE_SENT") ?>
 			<?= _("RESET_CODE_SENT") ?>
 		</p>
 		</p>

+ 1 - 1
web/templates/pages/login/reset_3.php

@@ -6,7 +6,7 @@
 		<h1 class="login-title">
 		<h1 class="login-title">
 			<?= _("Forgot Password") ?>
 			<?= _("Forgot Password") ?>
 		</h1>
 		</h1>
-		<?php if (isset($ERROR)) echo $ERROR ?>
+		<?php show_error_message($ERROR); ?>
 		<div class="u-mb10">
 		<div class="u-mb10">
 			<input type="hidden" name="action" value="confirm">
 			<input type="hidden" name="action" value="confirm">
 			<input type="hidden" name="token" value="<?= htmlentities($_SESSION["token"]) ?>">
 			<input type="hidden" name="token" value="<?= htmlentities($_SESSION["token"]) ?>">

+ 2 - 10
web/templates/pages/setup_webapp.php

@@ -7,16 +7,7 @@
 			</a>
 			</a>
 		</div>
 		</div>
 		<div class="toolbar-buttons">
 		<div class="toolbar-buttons">
-			<?php
-				if (!empty($_SESSION['error_msg'])) {
-					echo "<p class=\"inline-alert inline-alert-danger\"> → ".htmlentities($_SESSION['error_msg'])."</p>";
-				} else {
-					if (!empty($_SESSION['ok_msg'])) {
-						echo "<p class=\"inline-alert inline-alert-success\"> → ".$_SESSION['ok_msg']."</p>";
-					}
-				}
-			?>
-			<button class="button" type="submit" form="vstobjects">
+			<button type="submit" class="button" form="vstobjects">
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 				<i class="fas fa-floppy-disk icon-purple"></i><?= _("Save") ?>
 			</button>
 			</button>
 		</div>
 		</div>
@@ -33,6 +24,7 @@
 
 
 			<div class="form-container">
 			<div class="form-container">
 				<h1 class="form-title"><?= sprintf(_("Install %s"), $WebappInstaller->info()["name"]) ?></h1>
 				<h1 class="form-title"><?= sprintf(_("Install %s"), $WebappInstaller->info()["name"]) ?></h1>
+				<?php show_alert_message($_SESSION); ?>
 				<?php if (!$WebappInstaller->isDomainRootClean()): ?>
 				<?php if (!$WebappInstaller->isDomainRootClean()): ?>
 					<div class="alert alert-info" role="alert">
 					<div class="alert alert-info" role="alert">
 						<i class="fas fa-info"></i>
 						<i class="fas fa-info"></i>

+ 290 - 290
yarn.lock

@@ -33,135 +33,135 @@ __metadata:
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/cache-browser-local-storage@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/cache-browser-local-storage@npm:4.14.2"
+"@algolia/cache-browser-local-storage@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/cache-browser-local-storage@npm:4.14.3"
   dependencies:
   dependencies:
-    "@algolia/cache-common": 4.14.2
-  checksum: e7d5f43ff01df5f21a2b5304b5d8f8ae25f2c6093e83e79556cb78ae07f342111ba77eba633b837b5b74a17293ea6a208acb1ade71782baafa9c2da7d58ee45c
+    "@algolia/cache-common": 4.14.3
+  checksum: f1aae09f67311691e767a5cb7480a4ab8b45450ee9667543687b4faac4d1c099a794ec090f48a0633f352d054354b0e1066b7e6cfa0d75e5bb9dd22712333068
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/cache-common@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/cache-common@npm:4.14.2"
-  checksum: 4fd04c714aee19f6eaaac4ae7e00e914a44473af9a84cf3c4260e436c6ea20f5590e05e9006d963372d84ce57268776811fcb929d79e0415b59d74779bd31ee7
+"@algolia/cache-common@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/cache-common@npm:4.14.3"
+  checksum: 56af1684870b072bb5e8acd6539c1cca69e826f790064df373bc8b86b9bc6a80c9b53fce8aa1c74f2d2bcd917196e712d5aef39fc566cebbea499e2acacea0fe
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/cache-in-memory@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/cache-in-memory@npm:4.14.2"
+"@algolia/cache-in-memory@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/cache-in-memory@npm:4.14.3"
   dependencies:
   dependencies:
-    "@algolia/cache-common": 4.14.2
-  checksum: d6981f812a368a38db21e52c98ec81a5c0eda5d896377f7bdcc04a0be1673ac9e184836d7973065fab84dc947a63fe959586468fc14b9a87e32f916959df6222
+    "@algolia/cache-common": 4.14.3
+  checksum: 5027b27265e3ac04e318572c2a08df356b2509686ecc1540824b65ffd08047d437b3f8497e7a85951ae73e4a88afc0c68c8acc5ba5da9aab300a598219b0c0fd
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/client-account@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/client-account@npm:4.14.2"
+"@algolia/client-account@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/client-account@npm:4.14.3"
   dependencies:
   dependencies:
-    "@algolia/client-common": 4.14.2
-    "@algolia/client-search": 4.14.2
-    "@algolia/transporter": 4.14.2
-  checksum: 2e9eed5a4b8434775af87899bda8140d51eb2dd0cf08fc49370a4dc9541c220db9b241976dad14ae5d07a25f7ddafd9759a2eb462788f21a20f14e04968f98a4
+    "@algolia/client-common": 4.14.3
+    "@algolia/client-search": 4.14.3
+    "@algolia/transporter": 4.14.3
+  checksum: f3fcf8207a7f0c714ef7c7f35f7b7b00bddbbdeee45483fafa564144a22d5bc991bbe5fda2b38bc3e5926ec338ed9c6c6cb1a178fc8d219de10aa246ab67d3bf
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/client-analytics@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/client-analytics@npm:4.14.2"
+"@algolia/client-analytics@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/client-analytics@npm:4.14.3"
   dependencies:
   dependencies:
-    "@algolia/client-common": 4.14.2
-    "@algolia/client-search": 4.14.2
-    "@algolia/requester-common": 4.14.2
-    "@algolia/transporter": 4.14.2
-  checksum: 61874e026c9d08dd628da443b5b34d1a3bb707a0283e727d94ee6d61057631039c5cf6303e6234cc6fbe84ff71c2758f952b664277715ca5761819aec73e7aad
+    "@algolia/client-common": 4.14.3
+    "@algolia/client-search": 4.14.3
+    "@algolia/requester-common": 4.14.3
+    "@algolia/transporter": 4.14.3
+  checksum: 287a66e4f63e09000c9a3f489ced99bfe0f8c05d6cbf358fe41517046cf2a6cb59bb133ca5f48019211d666d71f2d9c901d37cb1e789b2ea3e171f89545876ab
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/client-common@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/client-common@npm:4.14.2"
+"@algolia/client-common@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/client-common@npm:4.14.3"
   dependencies:
   dependencies:
-    "@algolia/requester-common": 4.14.2
-    "@algolia/transporter": 4.14.2
-  checksum: da2be279ac51e1b43c02c6d2bbf0d9cc8b1cb3250ad10a803fca609bcfb8164a8adc21281b599fd8aa322c04deea77d2f07adcae1a363952559472e781e26c71
+    "@algolia/requester-common": 4.14.3
+    "@algolia/transporter": 4.14.3
+  checksum: 44799afbbb7955e0577cf199799e44aea6890136d277d56af5ea8628cdabb1cd67d3289eca035a6792a771c0a886164108351be438158d6d23a6c762cfe6abf0
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/client-personalization@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/client-personalization@npm:4.14.2"
+"@algolia/client-personalization@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/client-personalization@npm:4.14.3"
   dependencies:
   dependencies:
-    "@algolia/client-common": 4.14.2
-    "@algolia/requester-common": 4.14.2
-    "@algolia/transporter": 4.14.2
-  checksum: 0dd25c84a40fe9853d14fadc3c8893e84bee370b5a3eb6730afe816afe1f92b970096d2dfb68073f606fa074fdeb66c3a73811d9a9a9774af5311f34d939fd72
+    "@algolia/client-common": 4.14.3
+    "@algolia/requester-common": 4.14.3
+    "@algolia/transporter": 4.14.3
+  checksum: 2756087817c9bceed6c4cf9a2bf74c6df3792c3157775a7ca4a12205e3195f3df3774a064a83f0bb04ee88aaace7a7aa2ee576b2ed036b868b876328b3592fce
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/client-search@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/client-search@npm:4.14.2"
+"@algolia/client-search@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/client-search@npm:4.14.3"
   dependencies:
   dependencies:
-    "@algolia/client-common": 4.14.2
-    "@algolia/requester-common": 4.14.2
-    "@algolia/transporter": 4.14.2
-  checksum: 2695bc9e8c98badb601b915dbb075dd92996af350b0e4915a7a3b7825bd45f20815534debcfcb51bb7f682ba5d09f3c41918edb36e0a7f7bb154d3b205825f65
+    "@algolia/client-common": 4.14.3
+    "@algolia/requester-common": 4.14.3
+    "@algolia/transporter": 4.14.3
+  checksum: fb32e68d9bc815afab7199ae59d71d51f785f98fc3eb1d2bdb3065bc11424d797d1b1a2755397785bc715c2085dc1ddcf2b46d677b95dd95a825f597ba04505b
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/logger-common@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/logger-common@npm:4.14.2"
-  checksum: a4000a98831d64c8d826ccece9f5f3a77bc000d93d74a7c6b51f186d3dfd96c0bb00934f70c69da8f3c4dfb9f30ce55ab59aca9ba79c3cc3e924597838a94429
+"@algolia/logger-common@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/logger-common@npm:4.14.3"
+  checksum: c42bb686637ca32ab6636055b0d0ef368bc9e3e2ea71e3e3becece68a88896b34cfa6d657ccdf1b6a01fcabc075f78d10fb813f399e88323a9b17ea80dba33f5
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/logger-console@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/logger-console@npm:4.14.2"
+"@algolia/logger-console@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/logger-console@npm:4.14.3"
   dependencies:
   dependencies:
-    "@algolia/logger-common": 4.14.2
-  checksum: 96c6209c7ef72cbc170b180f5b84c6523a5b6f4dea978c982577d2417eb19eb9c9ea3bc73089ced692a05bec141d66fd6d5401458d0aa162dbcace5017dbd127
+    "@algolia/logger-common": 4.14.3
+  checksum: b703c7ba2e5f7d4dca4aa5de914f51650f2d614646037f99fd3fd343142d629b71c865b19d918ec67727c421ba5fc9aca848f11a7d82745b3a0dfdf36ef0fb26
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/requester-browser-xhr@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/requester-browser-xhr@npm:4.14.2"
+"@algolia/requester-browser-xhr@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/requester-browser-xhr@npm:4.14.3"
   dependencies:
   dependencies:
-    "@algolia/requester-common": 4.14.2
-  checksum: 7d8666e21cd0d15dc2e25f6917464c2f98cf73e0d2fced94cc6a3c4e97a990b8b93d9531bbf6f3b1ff2342b9ce9760d1dcb64dbbf61a5f2c31fe4f42541deef2
+    "@algolia/requester-common": 4.14.3
+  checksum: c6b8860c5ad4c6d394491c080add2a50a7fe0d92dce0b14152dd55c7d210d3f8cec25def1515d532c16ef400e2d21d59e76ea301a4a6fec71db96b7b05853a0c
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/requester-common@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/requester-common@npm:4.14.2"
-  checksum: 7de4148a55db56fe2bf18c1359cccbc2f41031fe2bfbc945d75f143b854638c51e7ec2ef9c6dc69b38d5edb87cd096ce5d7087680da32825562db79026ea39cc
+"@algolia/requester-common@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/requester-common@npm:4.14.3"
+  checksum: 1bc8400b18613c9d65b5ee07dd23e9e324669338d849fae987ed0b518567fb00a61a2ef00279fe65148c8f51603f2df6e4137c6693d2aca30bf453b8b759aa44
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/requester-node-http@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/requester-node-http@npm:4.14.2"
+"@algolia/requester-node-http@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/requester-node-http@npm:4.14.3"
   dependencies:
   dependencies:
-    "@algolia/requester-common": 4.14.2
-  checksum: 5f5fe8b040f73bd95c6bdb5b97396e078b629b2b4cd93fea671d545be375c79501c65296c34824f0ff8368b5b51edc7a6ad9e694b04223c1416dcda869c6f566
+    "@algolia/requester-common": 4.14.3
+  checksum: 3f510375fdf1ada7175e46cea021a44ab35e9e0a56a04a99c18541c11b63aae4604dda0de28caebfc0394d9cf564e5a8ff1040e834816d305c59b1eab3b303b3
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@algolia/transporter@npm:4.14.2":
-  version: 4.14.2
-  resolution: "@algolia/transporter@npm:4.14.2"
+"@algolia/transporter@npm:4.14.3":
+  version: 4.14.3
+  resolution: "@algolia/transporter@npm:4.14.3"
   dependencies:
   dependencies:
-    "@algolia/cache-common": 4.14.2
-    "@algolia/logger-common": 4.14.2
-    "@algolia/requester-common": 4.14.2
-  checksum: 72c72013f3edb4d4484e7a43fb3c2555646ab04f422249514ed0309e20f41f5563f4c4dcf5623ca64c293624ecc74f87acaf2d9820e8c829cb5de067bdfe0257
+    "@algolia/cache-common": 4.14.3
+    "@algolia/logger-common": 4.14.3
+    "@algolia/requester-common": 4.14.3
+  checksum: ad959c648d987726cc1e138cf68fd11673dbf12498ee3e3ccd573c5a2d63f9e20b0f58ab130c2b9807f7c2ff029c8e040923366d75c1e7ad62b02f40fb822ee2
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
@@ -426,156 +426,156 @@ __metadata:
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/android-arm64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/android-arm64@npm:0.16.8"
+"@esbuild/android-arm64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/android-arm64@npm:0.16.10"
   conditions: os=android & cpu=arm64
   conditions: os=android & cpu=arm64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/android-arm@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/android-arm@npm:0.16.8"
+"@esbuild/android-arm@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/android-arm@npm:0.16.10"
   conditions: os=android & cpu=arm
   conditions: os=android & cpu=arm
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/android-x64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/android-x64@npm:0.16.8"
+"@esbuild/android-x64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/android-x64@npm:0.16.10"
   conditions: os=android & cpu=x64
   conditions: os=android & cpu=x64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/darwin-arm64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/darwin-arm64@npm:0.16.8"
+"@esbuild/darwin-arm64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/darwin-arm64@npm:0.16.10"
   conditions: os=darwin & cpu=arm64
   conditions: os=darwin & cpu=arm64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/darwin-x64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/darwin-x64@npm:0.16.8"
+"@esbuild/darwin-x64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/darwin-x64@npm:0.16.10"
   conditions: os=darwin & cpu=x64
   conditions: os=darwin & cpu=x64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/freebsd-arm64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/freebsd-arm64@npm:0.16.8"
+"@esbuild/freebsd-arm64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/freebsd-arm64@npm:0.16.10"
   conditions: os=freebsd & cpu=arm64
   conditions: os=freebsd & cpu=arm64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/freebsd-x64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/freebsd-x64@npm:0.16.8"
+"@esbuild/freebsd-x64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/freebsd-x64@npm:0.16.10"
   conditions: os=freebsd & cpu=x64
   conditions: os=freebsd & cpu=x64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/linux-arm64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/linux-arm64@npm:0.16.8"
+"@esbuild/linux-arm64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/linux-arm64@npm:0.16.10"
   conditions: os=linux & cpu=arm64
   conditions: os=linux & cpu=arm64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/linux-arm@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/linux-arm@npm:0.16.8"
+"@esbuild/linux-arm@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/linux-arm@npm:0.16.10"
   conditions: os=linux & cpu=arm
   conditions: os=linux & cpu=arm
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/linux-ia32@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/linux-ia32@npm:0.16.8"
+"@esbuild/linux-ia32@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/linux-ia32@npm:0.16.10"
   conditions: os=linux & cpu=ia32
   conditions: os=linux & cpu=ia32
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/linux-loong64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/linux-loong64@npm:0.16.8"
+"@esbuild/linux-loong64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/linux-loong64@npm:0.16.10"
   conditions: os=linux & cpu=loong64
   conditions: os=linux & cpu=loong64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/linux-mips64el@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/linux-mips64el@npm:0.16.8"
+"@esbuild/linux-mips64el@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/linux-mips64el@npm:0.16.10"
   conditions: os=linux & cpu=mips64el
   conditions: os=linux & cpu=mips64el
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/linux-ppc64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/linux-ppc64@npm:0.16.8"
+"@esbuild/linux-ppc64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/linux-ppc64@npm:0.16.10"
   conditions: os=linux & cpu=ppc64
   conditions: os=linux & cpu=ppc64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/linux-riscv64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/linux-riscv64@npm:0.16.8"
+"@esbuild/linux-riscv64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/linux-riscv64@npm:0.16.10"
   conditions: os=linux & cpu=riscv64
   conditions: os=linux & cpu=riscv64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/linux-s390x@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/linux-s390x@npm:0.16.8"
+"@esbuild/linux-s390x@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/linux-s390x@npm:0.16.10"
   conditions: os=linux & cpu=s390x
   conditions: os=linux & cpu=s390x
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/linux-x64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/linux-x64@npm:0.16.8"
+"@esbuild/linux-x64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/linux-x64@npm:0.16.10"
   conditions: os=linux & cpu=x64
   conditions: os=linux & cpu=x64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/netbsd-x64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/netbsd-x64@npm:0.16.8"
+"@esbuild/netbsd-x64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/netbsd-x64@npm:0.16.10"
   conditions: os=netbsd & cpu=x64
   conditions: os=netbsd & cpu=x64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/openbsd-x64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/openbsd-x64@npm:0.16.8"
+"@esbuild/openbsd-x64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/openbsd-x64@npm:0.16.10"
   conditions: os=openbsd & cpu=x64
   conditions: os=openbsd & cpu=x64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/sunos-x64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/sunos-x64@npm:0.16.8"
+"@esbuild/sunos-x64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/sunos-x64@npm:0.16.10"
   conditions: os=sunos & cpu=x64
   conditions: os=sunos & cpu=x64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/win32-arm64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/win32-arm64@npm:0.16.8"
+"@esbuild/win32-arm64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/win32-arm64@npm:0.16.10"
   conditions: os=win32 & cpu=arm64
   conditions: os=win32 & cpu=arm64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/win32-ia32@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/win32-ia32@npm:0.16.8"
+"@esbuild/win32-ia32@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/win32-ia32@npm:0.16.10"
   conditions: os=win32 & cpu=ia32
   conditions: os=win32 & cpu=ia32
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@esbuild/win32-x64@npm:0.16.8":
-  version: 0.16.8
-  resolution: "@esbuild/win32-x64@npm:0.16.8"
+"@esbuild/win32-x64@npm:0.16.10":
+  version: 0.16.10
+  resolution: "@esbuild/win32-x64@npm:0.16.10"
   conditions: os=win32 & cpu=x64
   conditions: os=win32 & cpu=x64
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
@@ -766,13 +766,13 @@ __metadata:
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@typescript-eslint/eslint-plugin@npm:^5.46.1":
-  version: 5.46.1
-  resolution: "@typescript-eslint/eslint-plugin@npm:5.46.1"
+"@typescript-eslint/eslint-plugin@npm:^5.47.0":
+  version: 5.47.0
+  resolution: "@typescript-eslint/eslint-plugin@npm:5.47.0"
   dependencies:
   dependencies:
-    "@typescript-eslint/scope-manager": 5.46.1
-    "@typescript-eslint/type-utils": 5.46.1
-    "@typescript-eslint/utils": 5.46.1
+    "@typescript-eslint/scope-manager": 5.47.0
+    "@typescript-eslint/type-utils": 5.47.0
+    "@typescript-eslint/utils": 5.47.0
     debug: ^4.3.4
     debug: ^4.3.4
     ignore: ^5.2.0
     ignore: ^5.2.0
     natural-compare-lite: ^1.4.0
     natural-compare-lite: ^1.4.0
@@ -785,43 +785,43 @@ __metadata:
   peerDependenciesMeta:
   peerDependenciesMeta:
     typescript:
     typescript:
       optional: true
       optional: true
-  checksum: 4ea4af5faa5c509113d575bf6ea1f76989f253b4839bb98bcda28450be7fc8a87788169e822b0f6d739aee67e32e824440ef00cebc294d4212ffb3fed1f0756a
+  checksum: fd867eb2b668d1f476fd28d38c2df2a680bf510a265a6e714b28d8f77e7a37e74e32294b70262a6fd1aec99ddb2fddef0212c862b4465ca4f83bb1172476f6e7
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@typescript-eslint/parser@npm:^5.46.1":
-  version: 5.46.1
-  resolution: "@typescript-eslint/parser@npm:5.46.1"
+"@typescript-eslint/parser@npm:^5.47.0":
+  version: 5.47.0
+  resolution: "@typescript-eslint/parser@npm:5.47.0"
   dependencies:
   dependencies:
-    "@typescript-eslint/scope-manager": 5.46.1
-    "@typescript-eslint/types": 5.46.1
-    "@typescript-eslint/typescript-estree": 5.46.1
+    "@typescript-eslint/scope-manager": 5.47.0
+    "@typescript-eslint/types": 5.47.0
+    "@typescript-eslint/typescript-estree": 5.47.0
     debug: ^4.3.4
     debug: ^4.3.4
   peerDependencies:
   peerDependencies:
     eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
     eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
   peerDependenciesMeta:
   peerDependenciesMeta:
     typescript:
     typescript:
       optional: true
       optional: true
-  checksum: 784fe3ae688da85784b271c10d1e0b807583f4c370e32aa7a09b2584d0f7b92316a93cccbd9458bdf08f169b220097a4b0456bc5f62a210607a13a5fae84c972
+  checksum: 5c864ca74b86ca740c73e5b87d90d43bb832b20ba6be0a39089175435771527722a7bf0a8ef7ddbd64b85235fbb7f6dbe8ae55a8bc73c6242f5559d580a8a80c
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@typescript-eslint/scope-manager@npm:5.46.1":
-  version: 5.46.1
-  resolution: "@typescript-eslint/scope-manager@npm:5.46.1"
+"@typescript-eslint/scope-manager@npm:5.47.0":
+  version: 5.47.0
+  resolution: "@typescript-eslint/scope-manager@npm:5.47.0"
   dependencies:
   dependencies:
-    "@typescript-eslint/types": 5.46.1
-    "@typescript-eslint/visitor-keys": 5.46.1
-  checksum: bf934603dc9c7da71eb26f415d13018f2a96dbba193a773bc440a5c93828365f09bb3db9be55189dfbbace414c6c48d7fad246c0d9717dab4676d0d79d6d8676
+    "@typescript-eslint/types": 5.47.0
+    "@typescript-eslint/visitor-keys": 5.47.0
+  checksum: f637268a4cb065a89bb53d72620cc553f8c0d9f00805d6e6aac558cc4d3c08f3329208b0b4d5566d21eb636b080d453e5890221baef0e4bc4d67251f07cccd0d
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@typescript-eslint/type-utils@npm:5.46.1":
-  version: 5.46.1
-  resolution: "@typescript-eslint/type-utils@npm:5.46.1"
+"@typescript-eslint/type-utils@npm:5.47.0":
+  version: 5.47.0
+  resolution: "@typescript-eslint/type-utils@npm:5.47.0"
   dependencies:
   dependencies:
-    "@typescript-eslint/typescript-estree": 5.46.1
-    "@typescript-eslint/utils": 5.46.1
+    "@typescript-eslint/typescript-estree": 5.47.0
+    "@typescript-eslint/utils": 5.47.0
     debug: ^4.3.4
     debug: ^4.3.4
     tsutils: ^3.21.0
     tsutils: ^3.21.0
   peerDependencies:
   peerDependencies:
@@ -829,23 +829,23 @@ __metadata:
   peerDependenciesMeta:
   peerDependenciesMeta:
     typescript:
     typescript:
       optional: true
       optional: true
-  checksum: a47f1b73ac773a7f33421a8e8f9bc6e047f55236e3257b2c9eaa04d18595ab6505129ffdab86685e9c3bef564091315a2347150cd6e61a511cc2160667458014
+  checksum: 504b3e883ac02cb8e69957b706e76cb79fa2192aa62702c2a658119f28f8f50f1e668efb62318e85aeda6522e1d948b59382cae4ef3300a3f4eea809a87dec26
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@typescript-eslint/types@npm:5.46.1":
-  version: 5.46.1
-  resolution: "@typescript-eslint/types@npm:5.46.1"
-  checksum: 91143d3304b8c70d69d9c8e5b7428cce3a222eacfbeb99e592d278668bcf998760731deae064a76157b9a0fc4911fe3178aa24e4ea6fe2ba68dd37113834c924
+"@typescript-eslint/types@npm:5.47.0":
+  version: 5.47.0
+  resolution: "@typescript-eslint/types@npm:5.47.0"
+  checksum: 5a856e190cc2103427dbe15ccbbf87238261b5ed0859390a9e55f93afc2057f79dcbb4ac0db4d35787466f5e73f271111d19b2e725cf444af41d30e09678bf7a
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@typescript-eslint/typescript-estree@npm:5.46.1":
-  version: 5.46.1
-  resolution: "@typescript-eslint/typescript-estree@npm:5.46.1"
+"@typescript-eslint/typescript-estree@npm:5.47.0":
+  version: 5.47.0
+  resolution: "@typescript-eslint/typescript-estree@npm:5.47.0"
   dependencies:
   dependencies:
-    "@typescript-eslint/types": 5.46.1
-    "@typescript-eslint/visitor-keys": 5.46.1
+    "@typescript-eslint/types": 5.47.0
+    "@typescript-eslint/visitor-keys": 5.47.0
     debug: ^4.3.4
     debug: ^4.3.4
     globby: ^11.1.0
     globby: ^11.1.0
     is-glob: ^4.0.3
     is-glob: ^4.0.3
@@ -854,35 +854,35 @@ __metadata:
   peerDependenciesMeta:
   peerDependenciesMeta:
     typescript:
     typescript:
       optional: true
       optional: true
-  checksum: 21499b927b4118cd51e841b2e1b7e55621135f923f461b75dc8ca8442de38a82da5a0232dce5229e0266b6fc12d70696e0e912fcf1483d4c44f02e4cad39ed98
+  checksum: a9adfe8955b7dc9dfa9f43d450b782b83f506eaadae2a13f4e1bbe6c733be446d3edb26910954aec1bdc60d94ecc55c4e200d5b19bb24e6742f02329a4fb3e8c
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@typescript-eslint/utils@npm:5.46.1":
-  version: 5.46.1
-  resolution: "@typescript-eslint/utils@npm:5.46.1"
+"@typescript-eslint/utils@npm:5.47.0":
+  version: 5.47.0
+  resolution: "@typescript-eslint/utils@npm:5.47.0"
   dependencies:
   dependencies:
     "@types/json-schema": ^7.0.9
     "@types/json-schema": ^7.0.9
     "@types/semver": ^7.3.12
     "@types/semver": ^7.3.12
-    "@typescript-eslint/scope-manager": 5.46.1
-    "@typescript-eslint/types": 5.46.1
-    "@typescript-eslint/typescript-estree": 5.46.1
+    "@typescript-eslint/scope-manager": 5.47.0
+    "@typescript-eslint/types": 5.47.0
+    "@typescript-eslint/typescript-estree": 5.47.0
     eslint-scope: ^5.1.1
     eslint-scope: ^5.1.1
     eslint-utils: ^3.0.0
     eslint-utils: ^3.0.0
     semver: ^7.3.7
     semver: ^7.3.7
   peerDependencies:
   peerDependencies:
     eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
     eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
-  checksum: db9fd1dfb2390e66041f9529d564f38ccf74042de68e0e1e3d319ba4d02d7cd969d75dc056f938b98acab53ad7c1e36c68eabb15c0b2e2296b081652fa8d3820
+  checksum: f168920eec6f77651107f190b4ecadd82951fe4e3c0321ff660ac7380f4315d5ae30a1b63b4d2818f5e6f007a3f34c5df202619c24ec3a7e2ef25b215ec7b813
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@typescript-eslint/visitor-keys@npm:5.46.1":
-  version: 5.46.1
-  resolution: "@typescript-eslint/visitor-keys@npm:5.46.1"
+"@typescript-eslint/visitor-keys@npm:5.47.0":
+  version: 5.47.0
+  resolution: "@typescript-eslint/visitor-keys@npm:5.47.0"
   dependencies:
   dependencies:
-    "@typescript-eslint/types": 5.46.1
+    "@typescript-eslint/types": 5.47.0
     eslint-visitor-keys: ^3.3.0
     eslint-visitor-keys: ^3.3.0
-  checksum: 952cf20e29a040e0820e52d6815097abf042ea8e1fd5d013c0a319284ea0e2e29e0ca9ef244717450a6eb9d32ebf7fa9ed91185675a27adc35c9ad070d561b7c
+  checksum: 2191c079154bdfd1b85b8cd24baa6c0f55c73527c6c8460789483555b4eb5c72e3dc6d1aa4bbac2cf7b86b474588b45682a8deb151e9d903cf72c8f336141f1f
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
@@ -1015,31 +1015,31 @@ __metadata:
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@vueuse/core@npm:^9.6.0":
-  version: 9.7.0
-  resolution: "@vueuse/core@npm:9.7.0"
+"@vueuse/core@npm:^9.8.2":
+  version: 9.8.2
+  resolution: "@vueuse/core@npm:9.8.2"
   dependencies:
   dependencies:
     "@types/web-bluetooth": ^0.0.16
     "@types/web-bluetooth": ^0.0.16
-    "@vueuse/metadata": 9.7.0
-    "@vueuse/shared": 9.7.0
+    "@vueuse/metadata": 9.8.2
+    "@vueuse/shared": 9.8.2
     vue-demi: "*"
     vue-demi: "*"
-  checksum: 20df2c1f46d5310eed3996f9147227bfba754cf0bb9f4ff97b2cb90f65f4bff2eb604422cce20ed68e3005ea043c156b3c546ca9fcae01fd7667e83c1bc668f5
+  checksum: 0817ed4910c195a31e1afe2da39e0bbd78f73b9470c2af1b11a446e007da576a466e4b9115831bfe431a221443d025d6125d5c45fb7e1b5e48ff3db1c8ccbf2f
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@vueuse/metadata@npm:9.7.0":
-  version: 9.7.0
-  resolution: "@vueuse/metadata@npm:9.7.0"
-  checksum: c64ce884b16c629081cbe6baabe7e176230d5ccd8c5da632f9894178669497b380881ca8124384fbcfc09c3fb28382bd17e33116eb02aa3268f9e6eb10a87fbd
+"@vueuse/metadata@npm:9.8.2":
+  version: 9.8.2
+  resolution: "@vueuse/metadata@npm:9.8.2"
+  checksum: f9fe9eb20343af4591afd5a4e9d490927e7db88e6f52ce0e8c000a5baaf905872ff51d8ad8bfe904a5ea12abfdfe0e8ddd535beb27f59ca919e0cf04f53558e6
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"@vueuse/shared@npm:9.7.0":
-  version: 9.7.0
-  resolution: "@vueuse/shared@npm:9.7.0"
+"@vueuse/shared@npm:9.8.2":
+  version: 9.8.2
+  resolution: "@vueuse/shared@npm:9.8.2"
   dependencies:
   dependencies:
     vue-demi: "*"
     vue-demi: "*"
-  checksum: 4b7754e8dbe159d9b44717f5d5fbeb1137bf1676d35f266428e701600b624f802f7d93f6b54febbe4bbdbf67a0da73b83db82c1812c392458cf9445cdb0c9841
+  checksum: 1bfc6d20be49d588897e4e5cd93c164cd69ec6bee2ad16a6a298af47b585256688cb6e04224b377e550050124db688f64d132668e7cf19c9e9a44b4cd13d9ae1
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
@@ -1123,24 +1123,24 @@ __metadata:
   linkType: hard
   linkType: hard
 
 
 "algoliasearch@npm:^4.0.0":
 "algoliasearch@npm:^4.0.0":
-  version: 4.14.2
-  resolution: "algoliasearch@npm:4.14.2"
-  dependencies:
-    "@algolia/cache-browser-local-storage": 4.14.2
-    "@algolia/cache-common": 4.14.2
-    "@algolia/cache-in-memory": 4.14.2
-    "@algolia/client-account": 4.14.2
-    "@algolia/client-analytics": 4.14.2
-    "@algolia/client-common": 4.14.2
-    "@algolia/client-personalization": 4.14.2
-    "@algolia/client-search": 4.14.2
-    "@algolia/logger-common": 4.14.2
-    "@algolia/logger-console": 4.14.2
-    "@algolia/requester-browser-xhr": 4.14.2
-    "@algolia/requester-common": 4.14.2
-    "@algolia/requester-node-http": 4.14.2
-    "@algolia/transporter": 4.14.2
-  checksum: 4365a0d0f066f3ad6798e4dd0d7487cba1cf4546dac27e66cb84865f91955d6537dc5bad4e71d4bf22a68c0b721b1e6f20109203566ca1a252fe2713d713c0fd
+  version: 4.14.3
+  resolution: "algoliasearch@npm:4.14.3"
+  dependencies:
+    "@algolia/cache-browser-local-storage": 4.14.3
+    "@algolia/cache-common": 4.14.3
+    "@algolia/cache-in-memory": 4.14.3
+    "@algolia/client-account": 4.14.3
+    "@algolia/client-analytics": 4.14.3
+    "@algolia/client-common": 4.14.3
+    "@algolia/client-personalization": 4.14.3
+    "@algolia/client-search": 4.14.3
+    "@algolia/logger-common": 4.14.3
+    "@algolia/logger-console": 4.14.3
+    "@algolia/requester-browser-xhr": 4.14.3
+    "@algolia/requester-common": 4.14.3
+    "@algolia/requester-node-http": 4.14.3
+    "@algolia/transporter": 4.14.3
+  checksum: bcb8ccc3e1199d79d67ea96b9fd496be0a31eb3cacb2acee75a8471f27f13c836e17ab45a00875f4a2f0ba8e300c986cdbdbe7aafd363415c7242bc6636f16a9
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
@@ -2019,31 +2019,31 @@ __metadata:
   linkType: hard
   linkType: hard
 
 
 "esbuild@npm:^0.16.3":
 "esbuild@npm:^0.16.3":
-  version: 0.16.8
-  resolution: "esbuild@npm:0.16.8"
-  dependencies:
-    "@esbuild/android-arm": 0.16.8
-    "@esbuild/android-arm64": 0.16.8
-    "@esbuild/android-x64": 0.16.8
-    "@esbuild/darwin-arm64": 0.16.8
-    "@esbuild/darwin-x64": 0.16.8
-    "@esbuild/freebsd-arm64": 0.16.8
-    "@esbuild/freebsd-x64": 0.16.8
-    "@esbuild/linux-arm": 0.16.8
-    "@esbuild/linux-arm64": 0.16.8
-    "@esbuild/linux-ia32": 0.16.8
-    "@esbuild/linux-loong64": 0.16.8
-    "@esbuild/linux-mips64el": 0.16.8
-    "@esbuild/linux-ppc64": 0.16.8
-    "@esbuild/linux-riscv64": 0.16.8
-    "@esbuild/linux-s390x": 0.16.8
-    "@esbuild/linux-x64": 0.16.8
-    "@esbuild/netbsd-x64": 0.16.8
-    "@esbuild/openbsd-x64": 0.16.8
-    "@esbuild/sunos-x64": 0.16.8
-    "@esbuild/win32-arm64": 0.16.8
-    "@esbuild/win32-ia32": 0.16.8
-    "@esbuild/win32-x64": 0.16.8
+  version: 0.16.10
+  resolution: "esbuild@npm:0.16.10"
+  dependencies:
+    "@esbuild/android-arm": 0.16.10
+    "@esbuild/android-arm64": 0.16.10
+    "@esbuild/android-x64": 0.16.10
+    "@esbuild/darwin-arm64": 0.16.10
+    "@esbuild/darwin-x64": 0.16.10
+    "@esbuild/freebsd-arm64": 0.16.10
+    "@esbuild/freebsd-x64": 0.16.10
+    "@esbuild/linux-arm": 0.16.10
+    "@esbuild/linux-arm64": 0.16.10
+    "@esbuild/linux-ia32": 0.16.10
+    "@esbuild/linux-loong64": 0.16.10
+    "@esbuild/linux-mips64el": 0.16.10
+    "@esbuild/linux-ppc64": 0.16.10
+    "@esbuild/linux-riscv64": 0.16.10
+    "@esbuild/linux-s390x": 0.16.10
+    "@esbuild/linux-x64": 0.16.10
+    "@esbuild/netbsd-x64": 0.16.10
+    "@esbuild/openbsd-x64": 0.16.10
+    "@esbuild/sunos-x64": 0.16.10
+    "@esbuild/win32-arm64": 0.16.10
+    "@esbuild/win32-ia32": 0.16.10
+    "@esbuild/win32-x64": 0.16.10
   dependenciesMeta:
   dependenciesMeta:
     "@esbuild/android-arm":
     "@esbuild/android-arm":
       optional: true
       optional: true
@@ -2091,7 +2091,7 @@ __metadata:
       optional: true
       optional: true
   bin:
   bin:
     esbuild: bin/esbuild
     esbuild: bin/esbuild
-  checksum: 17d3c98a14356dfce4c53a7fe778a2fe881e9c108090111eb553fa63c186b08b055dfa550ae7f47f37ebdcdbf897cafa800caab044ae1fe5eaa72b1212596ad5
+  checksum: 0c5671fa4611fe70f3daa3e80e92804ca5908d1fcb0ed7a418d69db72504c4f457ceebeaa2668d55f79aaa63334a9ffd3f30e8f9dee821f6ad1f367f08ff157b
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
@@ -2700,8 +2700,8 @@ __metadata:
   dependencies:
   dependencies:
     "@fortawesome/fontawesome-free": ^6.2.1
     "@fortawesome/fontawesome-free": ^6.2.1
     "@prettier/plugin-php": ^0.19.2
     "@prettier/plugin-php": ^0.19.2
-    "@typescript-eslint/eslint-plugin": ^5.46.1
-    "@typescript-eslint/parser": ^5.46.1
+    "@typescript-eslint/eslint-plugin": ^5.47.0
+    "@typescript-eslint/parser": ^5.47.0
     cssnano: ^5.1.14
     cssnano: ^5.1.14
     eslint: ^8.30.0
     eslint: ^8.30.0
     eslint-config-prettier: ^8.5.0
     eslint-config-prettier: ^8.5.0
@@ -2723,7 +2723,7 @@ __metadata:
     stylelint-config-prettier: ^9.0.4
     stylelint-config-prettier: ^9.0.4
     stylelint-config-standard: ^29.0.0
     stylelint-config-standard: ^29.0.0
     typescript: ^4.9.4
     typescript: ^4.9.4
-    vitepress: 1.0.0-alpha.32
+    vitepress: 1.0.0-alpha.33
     vue: ^3.2.45
     vue: ^3.2.45
   languageName: unknown
   languageName: unknown
   linkType: soft
   linkType: soft
@@ -2814,9 +2814,9 @@ __metadata:
   linkType: hard
   linkType: hard
 
 
 "ignore@npm:^5.2.0, ignore@npm:^5.2.1":
 "ignore@npm:^5.2.0, ignore@npm:^5.2.1":
-  version: 5.2.1
-  resolution: "ignore@npm:5.2.1"
-  checksum: 7251d00cba49fe88c4f3565fadeb4aa726ba38294a9a79ffed542edc47bafd989d4b2ccf65700c5b1b26a1e91dfc7218fb23017937c79216025d5caeec0ee9d5
+  version: 5.2.4
+  resolution: "ignore@npm:5.2.4"
+  checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
@@ -3064,7 +3064,7 @@ __metadata:
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"jsonc-parser@npm:^3.0.0":
+"jsonc-parser@npm:^3.2.0":
   version: 3.2.0
   version: 3.2.0
   resolution: "jsonc-parser@npm:3.2.0"
   resolution: "jsonc-parser@npm:3.2.0"
   checksum: 946dd9a5f326b745aa326d48a7257e3f4a4b62c5e98ec8e49fa2bdd8d96cef7e6febf1399f5c7016114fd1f68a1c62c6138826d5d90bc650448e3cf0951c53c7
   checksum: 946dd9a5f326b745aa326d48a7257e3f4a4b62c5e98ec8e49fa2bdd8d96cef7e6febf1399f5c7016114fd1f68a1c62c6138826d5d90bc650448e3cf0951c53c7
@@ -3493,11 +3493,11 @@ __metadata:
   linkType: hard
   linkType: hard
 
 
 "minimatch@npm:^5.0.1":
 "minimatch@npm:^5.0.1":
-  version: 5.1.1
-  resolution: "minimatch@npm:5.1.1"
+  version: 5.1.2
+  resolution: "minimatch@npm:5.1.2"
   dependencies:
   dependencies:
     brace-expansion: ^2.0.1
     brace-expansion: ^2.0.1
-  checksum: 215edd0978320a3354188f84a537d45841f2449af4df4379f79b9b777e71aa4f5722cc9d1717eabd2a70d38ef76ab7b708d24d83ea6a6c909dfd8833de98b437
+  checksum: 32ffda25b9fb8270a1c1beafdb7489dc0e411af553495136509a945691f63c9b6b000eeeaaf8bffe3efa609c1d6d3bc0f5a106f6c3443b5c05da649100ded964
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
@@ -3676,8 +3676,8 @@ __metadata:
   linkType: hard
   linkType: hard
 
 
 "node-gyp@npm:latest":
 "node-gyp@npm:latest":
-  version: 9.3.0
-  resolution: "node-gyp@npm:9.3.0"
+  version: 9.3.1
+  resolution: "node-gyp@npm:9.3.1"
   dependencies:
   dependencies:
     env-paths: ^2.2.0
     env-paths: ^2.2.0
     glob: ^7.1.4
     glob: ^7.1.4
@@ -3691,7 +3691,7 @@ __metadata:
     which: ^2.0.2
     which: ^2.0.2
   bin:
   bin:
     node-gyp: bin/node-gyp.js
     node-gyp: bin/node-gyp.js
-  checksum: 589ddd3ed967724ef425f9624bfa47cf73022640ab3eba6d556e92cdc4ddef33b63fce3a467c93b995a3f61df92eafd3c3d1e8dbe4a2c00c383334487dea99c3
+  checksum: b860e9976fa645ca0789c69e25387401b4396b93c8375489b5151a6c55cf2640a3b6183c212b38625ef7c508994930b72198338e3d09b9d7ade5acc4aaf51ea7
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
@@ -3703,11 +3703,11 @@ __metadata:
   linkType: hard
   linkType: hard
 
 
 "node-sql-parser@npm:^4.4.0":
 "node-sql-parser@npm:^4.4.0":
-  version: 4.6.2
-  resolution: "node-sql-parser@npm:4.6.2"
+  version: 4.6.3
+  resolution: "node-sql-parser@npm:4.6.3"
   dependencies:
   dependencies:
     big-integer: ^1.6.48
     big-integer: ^1.6.48
-  checksum: 60895ccf7094346fd8a2134744de9c20fcb2d02e5708da750ec26a2d1de7992c048919367f7708e8918306266f1023457c63bcf7f5be016c99b58634e61c2e0a
+  checksum: 02f3ad44f8139775a705bc382e9d2d53fff323d23c3e3bd4e1995b8080ff70d907b9c8bc67b5369ff00d9428c91e0d7fc23a1e04859378275641085e2e4191c4
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
@@ -5203,14 +5203,14 @@ __metadata:
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"shiki@npm:^0.11.1":
-  version: 0.11.1
-  resolution: "shiki@npm:0.11.1"
+"shiki@npm:^0.12.1":
+  version: 0.12.1
+  resolution: "shiki@npm:0.12.1"
   dependencies:
   dependencies:
-    jsonc-parser: ^3.0.0
-    vscode-oniguruma: ^1.6.1
-    vscode-textmate: ^6.0.0
-  checksum: 2a4ebc3b466816263fc244ae4f67a4ff96aa74d863b9c5e7e4affc50f37fd6d1a781405de0dbf763b777bc33e49a0d441de7ff3fededb8b01e3b8dbb37e2927d
+    jsonc-parser: ^3.2.0
+    vscode-oniguruma: ^1.7.0
+    vscode-textmate: ^8.0.0
+  checksum: a5d78a79d282f5c5168786980c66e82f075e91fa015097456486624fc5775688d685ad9b1972b0617d7f1ef50927d21b61dca476247a6f6c6b7042046e89a979
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
@@ -5895,9 +5895,9 @@ __metadata:
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"vite@npm:^4.0.0":
-  version: 4.0.1
-  resolution: "vite@npm:4.0.1"
+"vite@npm:^4.0.2":
+  version: 4.0.2
+  resolution: "vite@npm:4.0.2"
   dependencies:
   dependencies:
     esbuild: ^0.16.3
     esbuild: ^0.16.3
     fsevents: ~2.3.2
     fsevents: ~2.3.2
@@ -5929,40 +5929,40 @@ __metadata:
       optional: true
       optional: true
   bin:
   bin:
     vite: bin/vite.js
     vite: bin/vite.js
-  checksum: c51bd7cb955973cce1c63e6d29ac25ea6f8920db6de2ca97f285c80cf9607649d87254d1fabd9aa5920149572a6220686b9e3bf6fd0851f7c86ec8522bba0098
+  checksum: b259782d83f293289f1cd7802cc525c75691fd45a1ded74e58365b5bff8f93f255daad4480269cda1660bf831f628b7a7224c9f591f039b5c0ccf351a8ee04ee
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"vitepress@npm:1.0.0-alpha.32":
-  version: 1.0.0-alpha.32
-  resolution: "vitepress@npm:1.0.0-alpha.32"
+"vitepress@npm:1.0.0-alpha.33":
+  version: 1.0.0-alpha.33
+  resolution: "vitepress@npm:1.0.0-alpha.33"
   dependencies:
   dependencies:
     "@docsearch/css": ^3.3.0
     "@docsearch/css": ^3.3.0
     "@docsearch/js": ^3.3.0
     "@docsearch/js": ^3.3.0
     "@vitejs/plugin-vue": ^4.0.0
     "@vitejs/plugin-vue": ^4.0.0
     "@vue/devtools-api": ^6.4.5
     "@vue/devtools-api": ^6.4.5
-    "@vueuse/core": ^9.6.0
+    "@vueuse/core": ^9.8.2
     body-scroll-lock: 4.0.0-beta.0
     body-scroll-lock: 4.0.0-beta.0
-    shiki: ^0.11.1
-    vite: ^4.0.0
+    shiki: ^0.12.1
+    vite: ^4.0.2
     vue: ^3.2.45
     vue: ^3.2.45
   bin:
   bin:
     vitepress: bin/vitepress.js
     vitepress: bin/vitepress.js
-  checksum: 68a09c6585416a52700eeaea2fc5fd87fa5c9868846c5f5f1fd0216a8318978508ed3bc2c30517084ff622fcedeaea072113ebbb41d88db6df02c68efda3f061
+  checksum: 0b1c3dffc70701935d96dc42a9815faaa2a9babdb29754b0b266f6b5e75fb6895d5ac7c14bca6da3668cdc76bee6177fbe8a04a2d60c1ac311e56fd6e2ff6216
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"vscode-oniguruma@npm:^1.6.1":
+"vscode-oniguruma@npm:^1.7.0":
   version: 1.7.0
   version: 1.7.0
   resolution: "vscode-oniguruma@npm:1.7.0"
   resolution: "vscode-oniguruma@npm:1.7.0"
   checksum: 53519d91d90593e6fb080260892e87d447e9b200c4964d766772b5053f5699066539d92100f77f1302c91e8fc5d9c772fbe40fe4c90f3d411a96d5a9b1e63f42
   checksum: 53519d91d90593e6fb080260892e87d447e9b200c4964d766772b5053f5699066539d92100f77f1302c91e8fc5d9c772fbe40fe4c90f3d411a96d5a9b1e63f42
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 
-"vscode-textmate@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "vscode-textmate@npm:6.0.0"
-  checksum: ff6f17a406c2906586afc14ef01cb122e33acd35312e815abb5c924347a777c6783ce3fe7db8b83f1760ebf843c669843b9390f905b69c433b3395af28e4b483
+"vscode-textmate@npm:^8.0.0":
+  version: 8.0.0
+  resolution: "vscode-textmate@npm:8.0.0"
+  checksum: 127780dfea89559d70b8326df6ec344cfd701312dd7f3f591a718693812b7852c30b6715e3cfc8b3200a4e2515b4c96f0843c0eacc0a3020969b5de262c2a4bb
   languageName: node
   languageName: node
   linkType: hard
   linkType: hard
 
 

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