Просмотр исходного кода

Remove typescript from the project for simplicity (#3821)

Kristan Kenney 2 лет назад
Родитель
Сommit
ed4fd8367f

+ 2 - 4
.eslintrc.cjs

@@ -1,18 +1,16 @@
 module.exports = {
 module.exports = {
 	root: true,
 	root: true,
-	parser: '@typescript-eslint/parser',
 	parserOptions: {
 	parserOptions: {
 		sourceType: 'module',
 		sourceType: 'module',
 		ecmaVersion: 'latest',
 		ecmaVersion: 'latest',
 	},
 	},
 	extends: [
 	extends: [
 		'eslint:recommended',
 		'eslint:recommended',
-		'plugin:@typescript-eslint/recommended',
 		'plugin:editorconfig/noconflict',
 		'plugin:editorconfig/noconflict',
 		'plugin:import/recommended',
 		'plugin:import/recommended',
 		'prettier',
 		'prettier',
 	],
 	],
-	plugins: ['editorconfig', '@typescript-eslint', 'import'],
+	plugins: ['editorconfig', 'import'],
 	ignorePatterns: ['*.cjs'],
 	ignorePatterns: ['*.cjs'],
 	env: {
 	env: {
 		browser: true,
 		browser: true,
@@ -22,7 +20,7 @@ module.exports = {
 		Alpine: 'readonly',
 		Alpine: 'readonly',
 	},
 	},
 	rules: {
 	rules: {
-		'@typescript-eslint/no-unused-vars': [
+		'no-unused-vars': [
 			'error',
 			'error',
 			{
 			{
 				argsIgnorePattern: '^_',
 				argsIgnorePattern: '^_',

+ 7 - 0
.vscode/settings.json

@@ -2,5 +2,12 @@
 	"editor.defaultFormatter": "esbenp.prettier-vscode",
 	"editor.defaultFormatter": "esbenp.prettier-vscode",
 	"[php]": {
 	"[php]": {
 		"editor.defaultFormatter": "esbenp.prettier-vscode"
 		"editor.defaultFormatter": "esbenp.prettier-vscode"
+	},
+	// Optional nesting patterns, set explorer.fileNesting.enabled to true to enable
+	"explorer.fileNesting.patterns": {
+		"*.css": "${capture}.css.map",
+		"*.js": "${capture}.js.map",
+		"package.json": ".editorconfig, .eslint*, .lintstaged*, .markdownlint-cli2*, .prettier*, .stylelint*, jsconfig.json, package-lock.json",
+		"readme*": "changelog*, contributing*, license*, security*"
 	}
 	}
 }
 }

+ 163 - 0
docs/.vitepress/config.js

@@ -0,0 +1,163 @@
+import { defineConfig } from 'vitepress';
+import { version } from '../../package.json';
+
+export default defineConfig({
+	lang: 'en-US',
+	title: 'Hestia Control Panel',
+	description: 'Open-source web server control panel.',
+
+	lastUpdated: true,
+	cleanUrls: false,
+
+	head: [
+		['link', { rel: 'icon', sizes: 'any', href: '/favicon.ico' }],
+		['link', { rel: 'icon', type: 'image/svg+xml', sizes: '16x16', href: '/logo.svg' }],
+		['link', { rel: 'apple-touch-icon', sizes: '180x180', href: '/apple-touch-icon.png' }],
+		['link', { rel: 'manifest', href: '/site.webmanifest' }],
+		['meta', { name: 'theme-color', content: '#b7236a' }],
+	],
+
+	themeConfig: {
+		logo: '/logo.svg',
+
+		nav: nav(),
+
+		socialLinks: [
+			{ icon: 'github', link: 'https://github.com/hestiacp/hestiacp' },
+			{ icon: 'twitter', link: 'https://twitter.com/HestiaPanel' },
+			{ icon: 'facebook', link: 'https://www.facebook.com/hestiacp' },
+		],
+
+		sidebar: { '/docs/': sidebarDocs() },
+
+		outline: [2, 3],
+
+		editLink: {
+			pattern: 'https://github.com/hestiacp/hestiacp/edit/main/docs/:path',
+			text: 'Edit this page on GitHub',
+		},
+
+		footer: {
+			message: 'Released under the GPLv3 License.',
+			copyright: 'Copyright © 2019-present Hestia Control Panel',
+		},
+
+		algolia: {
+			appId: 'V04P0P5D2R',
+			apiKey: '7a90a3ac7f9313f174c50b0f301f7ec6',
+			indexName: 'hestia_cp',
+		},
+	},
+});
+
+/** @returns {import("vitepress").DefaultTheme.NavItem[]} */
+function nav() {
+	return [
+		{ text: 'Features', link: '/features.md' },
+		{ text: 'Install', link: '/install.md' },
+		{ text: 'Documentation', link: '/docs/introduction/getting-started.md', activeMatch: '/docs/' },
+		{ text: 'Team', link: '/team.md' },
+		{ text: 'Demo', link: 'https://demo.hestiacp.com:8083/' },
+		{ text: 'Forum', link: 'https://forum.hestiacp.com/' },
+		{ text: 'Donate', link: '/donate.md' },
+		{
+			text: `v${version}`,
+			items: [
+				{
+					text: 'Changelog',
+					link: 'https://github.com/hestiacp/hestiacp/blob/main/CHANGELOG.md',
+				},
+				{
+					text: 'Contributing',
+					link: 'https://github.com/hestiacp/hestiacp/blob/main/CONTRIBUTING.md',
+				},
+				{
+					text: 'Security policy',
+					link: 'https://github.com/hestiacp/hestiacp/blob/main/SECURITY.md',
+				},
+			],
+		},
+	];
+}
+/** @returns {import("vitepress").DefaultTheme.SidebarItem[]} */
+function sidebarDocs() {
+	return [
+		{
+			text: 'Introduction',
+			collapsed: false,
+			items: [
+				{ text: 'Getting started', link: '/docs/introduction/getting-started.md' },
+				{ text: 'Best practices', link: '/docs/introduction/best-practices.md' },
+			],
+		},
+		{
+			text: 'User guide',
+			collapsed: false,
+			items: [
+				{ text: 'Account', link: '/docs/user-guide/account.md' },
+				{ text: 'Backups', link: '/docs/user-guide/backups.md' },
+				{ text: 'Cron jobs', link: '/docs/user-guide/cron-jobs.md' },
+				{ text: 'Databases', link: '/docs/user-guide/databases.md' },
+				{ text: 'DNS', link: '/docs/user-guide/dns.md' },
+				{ text: 'File manager', link: '/docs/user-guide/file-manager.md' },
+				{ text: 'Mail domains', link: '/docs/user-guide/mail-domains.md' },
+				{ text: 'Notifications', link: '/docs/user-guide/notifications.md' },
+				{ text: 'Packages', link: '/docs/user-guide/packages.md' },
+				{ text: 'Statistics', link: '/docs/user-guide/statistics.md' },
+				{ text: 'Users', link: '/docs/user-guide/users.md' },
+				{ text: 'Web domains', link: '/docs/user-guide/web-domains.md' },
+			],
+		},
+		{
+			text: 'Server administration',
+			collapsed: false,
+			items: [
+				{ text: 'Backup & restore', link: '/docs/server-administration/backup-restore.md' },
+				{ text: 'Configuration', link: '/docs/server-administration/configuration.md' },
+				{ text: 'Customisation', link: '/docs/server-administration/customisation.md' },
+				{ text: 'Databases & phpMyAdmin', link: '/docs/server-administration/databases.md' },
+				{ text: 'DNS clusters & DNSSEC', link: '/docs/server-administration/dns.md' },
+				{ text: 'Email', link: '/docs/server-administration/email.md' },
+				{ text: 'File manager', link: '/docs/server-administration/file-manager.md' },
+				{ text: 'Firewall', link: '/docs/server-administration/firewall.md' },
+				{ text: 'OS upgrades', link: '/docs/server-administration/os-upgrades.md' },
+				{ text: 'Rest API', link: '/docs/server-administration/rest-api.md' },
+				{ text: 'SSL certificates', link: '/docs/server-administration/ssl-certificates.md' },
+				{ text: 'Web templates & caching', link: '/docs/server-administration/web-templates.md' },
+				{ text: 'Troubleshooting', link: '/docs/server-administration/troubleshooting.md' },
+			],
+		},
+		{
+			text: 'Contributing',
+			collapsed: false,
+			items: [
+				{ text: 'Building Packages', link: '/docs/contributing/building.md' },
+				{ text: 'Development', link: '/docs/contributing/development.md' },
+				{ text: 'Documentation', link: '/docs/contributing/documentation.md' },
+				{ text: 'Quick install app', link: '/docs/contributing/quick-install-app.md' },
+				{ text: 'Testing', link: '/docs/contributing/testing.md' },
+				{ text: 'Translations', link: '/docs/contributing/translations.md' },
+			],
+		},
+		{
+			text: 'Community',
+			collapsed: false,
+			items: [
+				{ text: 'Hestia Nginx Cache', link: '/docs/community/hestia-nginx-cache.md' },
+				{
+					text: 'Ioncube installer for Hestia',
+					link: '/docs/community/ioncube-hestia-installer.md',
+				},
+				{ text: 'Install script generator', link: '/docs/community/install-script-generator.md' },
+			],
+		},
+		{
+			text: 'Reference',
+			collapsed: false,
+			items: [
+				{ text: 'API', link: '/docs/reference/api.md' },
+				{ text: 'CLI', link: '/docs/reference/cli.md' },
+			],
+		},
+	];
+}

+ 0 - 162
docs/.vitepress/config.ts

@@ -1,162 +0,0 @@
-import { defineConfig, type DefaultTheme } from "vitepress";
-import { version } from "../../package.json";
-
-export default defineConfig({
-	lang: "en-US",
-	title: "Hestia Control Panel",
-	description: "Open-source web server control panel.",
-
-	lastUpdated: true,
-	cleanUrls: false,
-
-	head: [
-		["link", { rel: "icon", sizes: "any", href: "/favicon.ico" }],
-		["link", { rel: "icon", type: "image/svg+xml", sizes: "16x16", href: "/logo.svg" }],
-		["link", { rel: "apple-touch-icon", sizes: "180x180", href: "/apple-touch-icon.png" }],
-		["link", { rel: "manifest", href: "/site.webmanifest" }],
-		["meta", { name: "theme-color", content: "#b7236a" }],
-	],
-
-	themeConfig: {
-		logo: "/logo.svg",
-
-		nav: nav(),
-
-		socialLinks: [
-			{ icon: "github", link: "https://github.com/hestiacp/hestiacp" },
-			{ icon: "twitter", link: "https://twitter.com/HestiaPanel" },
-			{ icon: "facebook", link: "https://www.facebook.com/hestiacp" },
-		],
-
-		sidebar: { "/docs/": sidebarDocs() },
-
-		outline: [2, 3],
-
-		editLink: {
-			pattern: "https://github.com/hestiacp/hestiacp/edit/main/docs/:path",
-			text: "Edit this page on GitHub",
-		},
-
-		footer: {
-			message: "Released under the GPLv3 License.",
-			copyright: "Copyright © 2019-present Hestia Control Panel",
-		},
-
-		algolia: {
-			appId: "V04P0P5D2R",
-			apiKey: "7a90a3ac7f9313f174c50b0f301f7ec6",
-			indexName: "hestia_cp",
-		},
-	},
-});
-
-function nav(): DefaultTheme.NavItem[] {
-	return [
-		{ text: "Features", link: "/features.md" },
-		{ text: "Install", link: "/install.md" },
-		{ text: "Documentation", link: "/docs/introduction/getting-started.md", activeMatch: "/docs/" },
-		{ text: "Team", link: "/team.md" },
-		{ text: "Demo", link: "https://demo.hestiacp.com:8083/" },
-		{ text: "Forum", link: "https://forum.hestiacp.com/" },
-		{ text: "Donate", link: "/donate.md" },
-		{
-			text: `v${version}`,
-			items: [
-				{
-					text: "Changelog",
-					link: "https://github.com/hestiacp/hestiacp/blob/main/CHANGELOG.md",
-				},
-				{
-					text: "Contributing",
-					link: "https://github.com/hestiacp/hestiacp/blob/main/CONTRIBUTING.md",
-				},
-				{
-					text: "Security policy",
-					link: "https://github.com/hestiacp/hestiacp/blob/main/SECURITY.md",
-				},
-			],
-		},
-	];
-}
-
-function sidebarDocs(): DefaultTheme.SidebarItem[] {
-	return [
-		{
-			text: "Introduction",
-			collapsed: false,
-			items: [
-				{ text: "Getting started", link: "/docs/introduction/getting-started.md" },
-				{ text: "Best practices", link: "/docs/introduction/best-practices.md" },
-			],
-		},
-		{
-			text: "User guide",
-			collapsed: false,
-			items: [
-				{ text: "Account", link: "/docs/user-guide/account.md" },
-				{ text: "Backups", link: "/docs/user-guide/backups.md" },
-				{ text: "Cron jobs", link: "/docs/user-guide/cron-jobs.md" },
-				{ text: "Databases", link: "/docs/user-guide/databases.md" },
-				{ text: "DNS", link: "/docs/user-guide/dns.md" },
-				{ text: "File manager", link: "/docs/user-guide/file-manager.md" },
-				{ text: "Mail domains", link: "/docs/user-guide/mail-domains.md" },
-				{ text: "Notifications", link: "/docs/user-guide/notifications.md" },
-				{ text: "Packages", link: "/docs/user-guide/packages.md" },
-				{ text: "Statistics", link: "/docs/user-guide/statistics.md" },
-				{ text: "Users", link: "/docs/user-guide/users.md" },
-				{ text: "Web domains", link: "/docs/user-guide/web-domains.md" },
-			],
-		},
-		{
-			text: "Server administration",
-			collapsed: false,
-			items: [
-				{ text: "Backup & restore", link: "/docs/server-administration/backup-restore.md" },
-				{ text: "Configuration", link: "/docs/server-administration/configuration.md" },
-				{ text: "Customisation", link: "/docs/server-administration/customisation.md" },
-				{ text: "Databases & phpMyAdmin", link: "/docs/server-administration/databases.md" },
-				{ text: "DNS clusters & DNSSEC", link: "/docs/server-administration/dns.md" },
-				{ text: "Email", link: "/docs/server-administration/email.md" },
-				{ text: "File manager", link: "/docs/server-administration/file-manager.md" },
-				{ text: "Firewall", link: "/docs/server-administration/firewall.md" },
-				{ text: "OS upgrades", link: "/docs/server-administration/os-upgrades.md" },
-				{ text: "Rest API", link: "/docs/server-administration/rest-api.md" },
-				{ text: "SSL certificates", link: "/docs/server-administration/ssl-certificates.md" },
-				{ text: "Web templates & caching", link: "/docs/server-administration/web-templates.md" },
-				{ text: "Troubleshooting", link: "/docs/server-administration/troubleshooting.md" },
-			],
-		},
-		{
-			text: "Contributing",
-			collapsed: false,
-			items: [
-				{ text: "Building Packages", link: "/docs/contributing/building.md" },
-				{ text: "Development", link: "/docs/contributing/development.md" },
-				{ text: "Documentation", link: "/docs/contributing/documentation.md" },
-				{ text: "Quick install app", link: "/docs/contributing/quick-install-app.md" },
-				{ text: "Testing", link: "/docs/contributing/testing.md" },
-				{ text: "Translations", link: "/docs/contributing/translations.md" },
-			],
-		},
-		{
-			text: "Community",
-			collapsed: false,
-			items: [
-				{ text: "Hestia Nginx Cache", link: "/docs/community/hestia-nginx-cache.md" },
-				{
-					text: "Ioncube installer for Hestia",
-					link: "/docs/community/ioncube-hestia-installer.md",
-				},
-				{ text: "Install script generator", link: "/docs/community/install-script-generator.md" },
-			],
-		},
-		{
-			text: "Reference",
-			collapsed: false,
-			items: [
-				{ text: "API", link: "/docs/reference/api.md" },
-				{ text: "CLI", link: "/docs/reference/cli.md" },
-			],
-		},
-	];
-}

+ 1 - 4
docs/.vitepress/theme/components/FeatureList.vue

@@ -1,10 +1,7 @@
-<script lang="ts">
-import { FeatureListItem } from "../../../_data/features";
-
+<script>
 export default {
 export default {
 	props: {
 	props: {
 		items: {
 		items: {
-			type: Array<FeatureListItem>,
 			required: true,
 			required: true,
 		},
 		},
 	},
 	},

+ 2 - 4
docs/.vitepress/theme/components/FeaturePageSection.vue

@@ -1,8 +1,6 @@
-<script lang="ts">
+<script>
 export default {
 export default {
-	props: {
-		image: String,
-	},
+	props: ["image"],
 };
 };
 </script>
 </script>
 
 

+ 5 - 12
docs/.vitepress/theme/components/InstallOptions.vue

@@ -1,18 +1,11 @@
-<script lang="ts">
-import { InstallOptions } from "../../../_data/options";
-import { LanguagesOptions } from "../../../_data/languages";
-import { ref } from "vue";
-const slot = ref(null);
-
+<script>
 export default {
 export default {
 	props: {
 	props: {
 		languages: {
 		languages: {
-			type: Array<LanguagesOptions>,
 			required: true,
 			required: true,
 			selected: "en",
 			selected: "en",
 		},
 		},
 		items: {
 		items: {
-			type: Array<InstallOptions>,
 			required: true,
 			required: true,
 		},
 		},
 	},
 	},
@@ -26,7 +19,7 @@ export default {
 		};
 		};
 	},
 	},
 	methods: {
 	methods: {
-		getOptionString(item: InstallOptions): string {
+		getOptionString(item) {
 			if (item.textField) {
 			if (item.textField) {
 				return item.selected ? `${item.param} '${item.text}'` : "";
 				return item.selected ? `${item.param} '${item.text}'` : "";
 			}
 			}
@@ -43,11 +36,11 @@ export default {
 			const installStr = this.items.map(this.getOptionString).filter(Boolean);
 			const installStr = this.items.map(this.getOptionString).filter(Boolean);
 
 
 			this.installStr = `${this.hestia_install} ${installStr.join(" ")}`;
 			this.installStr = `${this.hestia_install} ${installStr.join(" ")}`;
-			(this.$refs.dialog as HTMLDialogElement).showModal();
+			this.$refs.dialog.showModal();
 		},
 		},
 		closeDialog(e) {
 		closeDialog(e) {
 			if (e.target === this.$refs.dialogClose || e.target === this.$refs.dialog) {
 			if (e.target === this.$refs.dialogClose || e.target === this.$refs.dialog) {
-				(this.$refs.dialog as HTMLDialogElement).close();
+				this.$refs.dialog.close();
 			}
 			}
 		},
 		},
 		checkNeedEnabled(e) {
 		checkNeedEnabled(e) {
@@ -74,7 +67,7 @@ export default {
 				}
 				}
 			}
 			}
 		},
 		},
-		copyToClipboard(text: string, button: HTMLButtonElement) {
+		copyToClipboard(text, button) {
 			navigator.clipboard.writeText(text).then(
 			navigator.clipboard.writeText(text).then(
 				() => {
 				() => {
 					button.textContent = "Copied!";
 					button.textContent = "Copied!";

+ 0 - 2
docs/.vitepress/theme/components/InstallOptionsSection.vue

@@ -1,5 +1,3 @@
-<script lang="ts"></script>
-
 <template>
 <template>
 	<form class="InstallForm" id="form">
 	<form class="InstallForm" id="form">
 		<div class="InstallOptionsSection">
 		<div class="InstallOptionsSection">

+ 16 - 0
docs/.vitepress/theme/index.js

@@ -0,0 +1,16 @@
+import Theme from 'vitepress/theme';
+import '@fortawesome/fontawesome-free/css/fontawesome.css';
+import '@fortawesome/fontawesome-free/css/brands.css';
+import '@fortawesome/fontawesome-free/css/solid.css';
+import './styles/base.css';
+import './styles/vars.css';
+import FeaturePage from './components/FeaturePage.vue';
+import InstallPage from './components/InstallPage.vue';
+
+export default {
+	...Theme,
+	enhanceApp({ app }) {
+		app.component('FeaturePage', FeaturePage);
+		app.component('InstallPage', InstallPage);
+	},
+};

+ 0 - 16
docs/.vitepress/theme/index.ts

@@ -1,16 +0,0 @@
-import Theme from "vitepress/theme";
-import "@fortawesome/fontawesome-free/css/fontawesome.css";
-import "@fortawesome/fontawesome-free/css/brands.css";
-import "@fortawesome/fontawesome-free/css/solid.css";
-import "./styles/base.css";
-import "./styles/vars.css";
-import FeaturePage from "./components/FeaturePage.vue";
-import InstallPage from "./components/InstallPage.vue";
-
-export default {
-	...Theme,
-	enhanceApp({ app }) {
-		app.component("FeaturePage", FeaturePage);
-		app.component("InstallPage", InstallPage);
-	},
-};

+ 79 - 0
docs/_data/features.js

@@ -0,0 +1,79 @@
+/** @typedef {{ text: string, items?: { text: string }[] }} FeatureListItem */
+
+/** @type {FeatureListItem[]} */
+export const users = [
+	{ text: 'Support for SFTP chroot jails' },
+	{ text: 'Two-Factor Authentication support for the Admin Panel' },
+	{ text: 'SSH keys for login via SFTP and SSH' },
+];
+
+/** @type {FeatureListItem[]} */
+export const webDomains = [
+	{ text: 'Nginx FastCGI cache support for Nginx + PHP-FPM' },
+	{ text: 'Nginx Proxy cache support for Nginx + Apache2' },
+	{ text: 'Per-domain TLS certificates for web domains' },
+	{ text: 'MultiIP support for Web/Mail/DNS' },
+	{
+		text: 'MultiPHP support for',
+		items: [
+			{ text: "PHP 5.6 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
+			{ text: "PHP 7.0 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
+			{ text: "PHP 7.1 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
+			{ text: "PHP 7.2 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
+			{ text: "PHP 7.3 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
+			{ text: "PHP 7.4 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
+			{ text: 'PHP 8.0' },
+			{ text: 'PHP 8.1' },
+			{ text: 'PHP 8.2' },
+		],
+	},
+	{
+		text: 'One-Click Install Apps',
+		items: [
+			{ text: 'WordPress' },
+			{ text: 'Dokuwiki' },
+			{ text: 'Drupal' },
+			{ text: 'Grav' },
+			{ text: 'Laravel' },
+			{ text: 'MediaWiki' },
+			{ text: 'NextCloud' },
+			{ text: 'OpenCart' },
+			{ text: 'Prestashop' },
+			{ text: 'Symphony' },
+		],
+	},
+];
+
+/** @type {FeatureListItem[]} */
+export const mail = [
+	{
+		text: 'Per-domain TLS certificates for inbound and outbound mail services (Exim 4, Dovecot, Webmail)',
+	},
+	{ text: 'SMTP relay setup for Exim in case port 25 is blocked by the provider' },
+	{ text: 'Rate limit adjustable per user or email account' },
+	{ text: 'Let’s Encrypt support for mail domains' },
+	{ text: 'Latest version of Roundcube' },
+	{ text: 'Optional SnappyMail installation' },
+];
+
+/** @type {FeatureListItem[]} */
+export const dns = [
+	{ text: 'Create your own nameservers' },
+	{ text: 'Easy DNS cluster setup' },
+	{ text: 'Support for DNSSEC on domains' },
+];
+
+/** @type {FeatureListItem[]} */
+export const databases = [
+	{ text: 'Support for MariaDB 10.2 -> 10.11 with 10.11 as default' },
+	{ text: 'Support for MySQL 8' },
+	{ text: 'Support for PostgreSQL' },
+	{ text: 'Latest version of phpMyAdmin and phpPgAdmin' },
+];
+
+/** @type {FeatureListItem[]} */
+export const serverAdmin = [
+	{
+		text: "Automated backups to SFTP, FTP and via Rclone with 50+ <a href='https://rclone.org/overview/'>Cloud storage providers</a>",
+	},
+];

+ 0 - 76
docs/_data/features.ts

@@ -1,76 +0,0 @@
-export interface FeatureListItem {
-	text: string;
-	items?: { text: string }[];
-}
-
-export const users: FeatureListItem[] = [
-	{ text: "Support for SFTP chroot jails" },
-	{ text: "Two-Factor Authentication support for the Admin Panel" },
-	{ text: "SSH keys for login via SFTP and SSH" },
-];
-
-export const webDomains: FeatureListItem[] = [
-	{ text: "Nginx FastCGI cache support for Nginx + PHP-FPM" },
-	{ text: "Nginx Proxy cache support for Nginx + Apache2" },
-	{ text: "Per-domain TLS certificates for web domains" },
-	{ text: "MultiIP support for Web/Mail/DNS" },
-	{
-		text: "MultiPHP support for",
-		items: [
-			{ text: "PHP 5.6 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
-			{ text: "PHP 7.0 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
-			{ text: "PHP 7.1 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
-			{ text: "PHP 7.2 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
-			{ text: "PHP 7.3 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
-			{ text: "PHP 7.4 (<a href='https://www.php.net/supported-versions.php'>EOL</a>)" },
-			{ text: "PHP 8.0" },
-			{ text: "PHP 8.1" },
-			{ text: "PHP 8.2" },
-		],
-	},
-	{
-		text: "One-Click Install Apps",
-		items: [
-			{ text: "WordPress" },
-			{ text: "Dokuwiki" },
-			{ text: "Drupal" },
-			{ text: "Grav" },
-			{ text: "Laravel" },
-			{ text: "MediaWiki" },
-			{ text: "NextCloud" },
-			{ text: "OpenCart" },
-			{ text: "Prestashop" },
-			{ text: "Symphony" },
-		],
-	},
-];
-
-export const mail: FeatureListItem[] = [
-	{
-		text: "Per-domain TLS certificates for inbound and outbound mail services (Exim 4, Dovecot, Webmail)",
-	},
-	{ text: "SMTP relay setup for Exim in case port 25 is blocked by the provider" },
-	{ text: "Rate limit adjustable per user or email account" },
-	{ text: "Let’s Encrypt support for mail domains" },
-	{ text: "Latest version of Roundcube" },
-	{ text: "Optional SnappyMail installation" },
-];
-
-export const dns: FeatureListItem[] = [
-	{ text: "Create your own nameservers" },
-	{ text: "Easy DNS cluster setup" },
-	{ text: "Support for DNSSEC on domains" },
-];
-
-export const databases: FeatureListItem[] = [
-	{ text: "Support for MariaDB 10.2 -> 10.11 with 10.11 as default" },
-	{ text: "Support for MySQL 8" },
-	{ text: "Support for PostgreSQL" },
-	{ text: "Latest version of phpMyAdmin and phpPgAdmin" },
-];
-
-export const serverAdmin: FeatureListItem[] = [
-	{
-		text: "Automated backups to SFTP, FTP and via Rclone with 50+ <a href='https://rclone.org/overview/'>Cloud storage providers</a>",
-	},
-];

+ 43 - 0
docs/_data/languages.js

@@ -0,0 +1,43 @@
+export const languages = [
+	{ text: 'Arabic', value: 'ar' },
+	{ text: 'Armenian', value: 'hy' },
+	{ text: 'Azerbaijani', value: 'az' },
+	{ text: 'Bengali', value: 'bn' },
+	{ text: 'Bosnian', value: 'bs' },
+	{ text: 'Bulgarian', value: 'bg' },
+	{ text: 'Catalan', value: 'ca' },
+	{ text: 'Croatian', value: 'hr' },
+	{ text: 'Czech', value: 'cs' },
+	{ text: 'Danish', value: 'da' },
+	{ text: 'Dutch', value: 'nl' },
+	{ text: 'English', value: 'en' },
+	{ text: 'Finnish', value: 'fi' },
+	{ text: 'French', value: 'fr' },
+	{ text: 'Georgian', value: 'ka' },
+	{ text: 'German', value: 'de' },
+	{ text: 'Greek', value: 'el' },
+	{ text: 'Hungarian', value: 'hu' },
+	{ text: 'Indonesian', value: 'id' },
+	{ text: 'Italian', value: 'it' },
+	{ text: 'Japanese', value: 'ja' },
+	{ text: 'Korean', value: 'ko' },
+	{ text: 'Kurdish Sorani', value: 'ku' },
+	{ text: 'Norwegain', value: 'no' },
+	{ text: 'Persian', value: 'fa' },
+	{ text: 'Polish', value: 'pl' },
+	{ text: 'Portuguese', value: 'pt' },
+	{ text: 'Portuguese (Brasil)', value: 'pt-br' },
+	{ text: 'Romanian', value: 'ro' },
+	{ text: 'Russian', value: 'ru' },
+	{ text: 'Serbian', value: 'sr' },
+	{ text: 'Simplified Chinese (China)', value: 'zh-cn' },
+	{ text: 'Slovak', value: 'sk' },
+	{ text: 'Spanish', value: 'es' },
+	{ text: 'Swedish', value: 'sv' },
+	{ text: 'Thai', value: 'th' },
+	{ text: 'Traditional Chinese (Taiwan)', value: 'zh-tw' },
+	{ text: 'Turkish', value: 'tr' },
+	{ text: 'Ukrainian', value: 'uk' },
+	{ text: 'Urdu', value: 'ur' },
+	{ text: 'Vietnamese', value: 'vi' },
+];

+ 0 - 43
docs/_data/languages.ts

@@ -1,43 +0,0 @@
-export const languages: LanguagesListItem[] = [
-	{ text: "Arabic", value: "ar" },
-	{ text: "Armenian", value: "hy" },
-	{ text: "Azerbaijani", value: "az" },
-	{ text: "Bengali", value: "bn" },
-	{ text: "Bosnian", value: "bs" },
-	{ text: "Bulgarian", value: "bg" },
-	{ text: "Catalan", value: "ca" },
-	{ text: "Croatian", value: "hr" },
-	{ text: "Czech", value: "cs" },
-	{ text: "Danish", value: "da" },
-	{ text: "Dutch", value: "nl" },
-	{ text: "English", value: "en" },
-	{ text: "Finnish", value: "fi" },
-	{ text: "French", value: "fr" },
-	{ text: "Georgian", value: "ka" },
-	{ text: "German", value: "de" },
-	{ text: "Greek", value: "el" },
-	{ text: "Hungarian", value: "hu" },
-	{ text: "Indonesian", value: "id" },
-	{ text: "Italian", value: "it" },
-	{ text: "Japanese", value: "ja" },
-	{ text: "Korean", value: "ko" },
-	{ text: "Kurdish Sorani", value: "ku" },
-	{ text: "Norwegain", value: "no" },
-	{ text: "Persian", value: "fa" },
-	{ text: "Polish", value: "pl" },
-	{ text: "Portuguese", value: "pt" },
-	{ text: "Portuguese (Brasil)", value: "pt-br" },
-	{ text: "Romanian", value: "ro" },
-	{ text: "Russian", value: "ru" },
-	{ text: "Serbian", value: "sr" },
-	{ text: "Simplified Chinese (China)", value: "zh-cn" },
-	{ text: "Slovak", value: "sk" },
-	{ text: "Spanish", value: "es" },
-	{ text: "Swedish", value: "sv" },
-	{ text: "Thai", value: "th" },
-	{ text: "Traditional Chinese (Taiwan)", value: "zh-tw" },
-	{ text: "Turkish", value: "tr" },
-	{ text: "Ukrainian", value: "uk" },
-	{ text: "Urdu", value: "ur" },
-	{ text: "Vietnamese", value: "vi" },
-];

+ 178 - 0
docs/_data/options.js

@@ -0,0 +1,178 @@
+export const options = [
+	{
+		name: ' --port',
+		id: 'port',
+		param: '--port',
+		desc: 'Change Hestia Port',
+		selected: true,
+		text: '8083',
+		textField: true,
+	},
+	{
+		name: ' --lang',
+		id: 'language',
+		param: '--lang',
+		desc: 'ISO 639-1 codes',
+		selected: true,
+		default: 'en',
+		selectField: true,
+		text: 'en',
+	},
+	{
+		name: ' --hostname',
+		id: 'hostname',
+		param: '--hostname',
+		desc: 'Set hostname',
+		selected: false,
+		text: '',
+		textField: true,
+	},
+	{
+		name: ' --email',
+		id: 'email',
+		param: '--email',
+		desc: 'Set admin email',
+		selected: false,
+		text: '',
+		textField: true,
+	},
+	{
+		name: ' --password',
+		id: 'password',
+		param: '--password',
+		desc: 'Set admin password',
+		selected: false,
+		text: '',
+		textField: true,
+	},
+	{
+		name: ' --apache',
+		id: 'apache',
+		param: '--apache',
+		desc: 'Web server with htaccess support.',
+		selected: true,
+	},
+	{ name: ' --phpfpm', id: 'phpfpm', param: '--phpfpm', desc: 'Install PHP-FPM.', selected: true },
+	{
+		name: ' --multiphp',
+		id: 'multiphp',
+		param: '--multiphp',
+		desc: 'Allows installing multiple PHP versions.',
+		selected: true,
+	},
+	{
+		name: ' --vsftpd',
+		id: 'vsftpd',
+		param: '--vsftpd',
+		desc: 'Lightweight, minimalist and secure FTP server.',
+		selected: true,
+		conflicts: 'proftpd',
+	},
+	{
+		name: ' --proftpd',
+		id: 'proftpd',
+		param: '--proftpd',
+		desc: 'Advanced, modular FTP server that supports LDAP.',
+		selected: false,
+		conflicts: 'vsftpd',
+	},
+	{
+		name: ' --named',
+		id: 'named',
+		param: '--named',
+		desc: 'Custom DNS name server.',
+		selected: true,
+	},
+	{
+		name: ' --mariadb',
+		id: 'mariadb',
+		param: '--mariadb',
+		desc: 'Fork of MySQL with additional features and improvements.',
+		selected: true,
+		conflicts: 'mysql8',
+	},
+	{
+		name: ' --mysql8',
+		id: 'mysql8',
+		param: '--mysql8',
+		desc: 'Open-source database system.',
+		selected: false,
+		conflicts: 'mariadb',
+	},
+	{
+		name: ' --postgresql',
+		id: 'postgresql',
+		param: '--postgresql',
+		desc: 'Open-source database system.',
+		selected: false,
+	},
+	{
+		name: ' --exim',
+		id: 'exim',
+		param: '--exim',
+		desc: 'Allows sending emails from webmail or via SMTP.',
+		selected: true,
+	},
+	{
+		name: ' --dovecot',
+		id: 'dovecot',
+		param: '--dovecot',
+		desc: 'Receive emails and connect with email clients via IMAP/POP3.',
+		selected: true,
+		depends: 'exim',
+	},
+	{
+		name: ' --sieve',
+		id: 'sieve',
+		param: '--sieve',
+		desc: 'Manage your own custom email filters.',
+		selected: false,
+		depends: 'dovecot',
+	},
+	{
+		name: ' --clamav',
+		id: 'clamav',
+		param: '--clamav',
+		desc: 'Scans your email inbox for viruses.',
+		selected: true,
+		depends: 'exim',
+	},
+	{
+		name: ' --spamassassin',
+		id: 'spamassassin',
+		param: '--spamassassin',
+		desc: 'Filter out spam emails from your inbox.',
+		selected: true,
+		depends: 'exim',
+	},
+	{
+		name: ' --iptables',
+		id: 'iptables',
+		param: '--iptables',
+		desc: 'Manage your firewall within Hestia.',
+		selected: true,
+	},
+	{
+		name: ' --fail2ban',
+		id: 'fail2ban',
+		param: '--fail2ban',
+		desc: 'Provides Bruteforce protection for SSH, Email, FTP, database.',
+		selected: true,
+	},
+	{
+		name: ' --quota',
+		id: 'quota',
+		param: '--quota',
+		desc: 'Use hard disk space limits on user packages.',
+		selected: false,
+	},
+	{ name: ' --api', id: 'api', param: '--api', desc: 'Activate API.', selected: true },
+	{
+		name: ' --interactive',
+		id: 'interactive',
+		param: '--interactive',
+		desc: 'Interactive install.',
+		selected: true,
+	},
+	{ name: ' --force', id: 'force', param: '--force', desc: 'Force installation.', selected: false },
+];

+ 0 - 178
docs/_data/options.ts

@@ -1,178 +0,0 @@
-export const options: OptionsListItem[] = [
-	{
-		name: " --port",
-		id: "port",
-		param: "--port",
-		desc: "Change Hestia Port",
-		selected: true,
-		text: "8083",
-		textField: true,
-	},
-	{
-		name: " --lang",
-		id: "language",
-		param: "--lang",
-		desc: "ISO 639-1 codes",
-		selected: true,
-		default: "en",
-		selectField: true,
-		text: "en",
-	},
-	{
-		name: " --hostname",
-		id: "hostname",
-		param: "--hostname",
-		desc: "Set hostname",
-		selected: false,
-		text: "",
-		textField: true,
-	},
-	{
-		name: " --email",
-		id: "email",
-		param: "--email",
-		desc: "Set admin email",
-		selected: false,
-		text: "",
-		textField: true,
-	},
-	{
-		name: " --password",
-		id: "password",
-		param: "--password",
-		desc: "Set admin password",
-		selected: false,
-		text: "",
-		textField: true,
-	},
-	{
-		name: " --apache",
-		id: "apache",
-		param: "--apache",
-		desc: "Web server with htaccess support.",
-		selected: true,
-	},
-	{ name: " --phpfpm", id: "phpfpm", param: "--phpfpm", desc: "Install PHP-FPM.", selected: true },
-	{
-		name: " --multiphp",
-		id: "multiphp",
-		param: "--multiphp",
-		desc: "Allows installing multiple PHP versions.",
-		selected: true,
-	},
-	{
-		name: " --vsftpd",
-		id: "vsftpd",
-		param: "--vsftpd",
-		desc: "Lightweight, minimalist and secure FTP server.",
-		selected: true,
-		conflicts: "proftpd",
-	},
-	{
-		name: " --proftpd",
-		id: "proftpd",
-		param: "--proftpd",
-		desc: "Advanced, modular FTP server that supports LDAP.",
-		selected: false,
-		conflicts: "vsftpd",
-	},
-	{
-		name: " --named",
-		id: "named",
-		param: "--named",
-		desc: "Custom DNS name server.",
-		selected: true,
-	},
-	{
-		name: " --mariadb",
-		id: "mariadb",
-		param: "--mariadb",
-		desc: "Fork of MySQL with additional features and improvements.",
-		selected: true,
-		conflicts: "mysql8",
-	},
-	{
-		name: " --mysql8",
-		id: "mysql8",
-		param: "--mysql8",
-		desc: "Open-source database system.",
-		selected: false,
-		conflicts: "mariadb",
-	},
-	{
-		name: " --postgresql",
-		id: "postgresql",
-		param: "--postgresql",
-		desc: "Open-source database system.",
-		selected: false,
-	},
-	{
-		name: " --exim",
-		id: "exim",
-		param: "--exim",
-		desc: "Allows sending emails from webmail or via SMTP.",
-		selected: true,
-	},
-	{
-		name: " --dovecot",
-		id: "dovecot",
-		param: "--dovecot",
-		desc: "Receive emails and connect with email clients via IMAP/POP3.",
-		selected: true,
-		depends: "exim",
-	},
-	{
-		name: " --sieve",
-		id: "sieve",
-		param: "--sieve",
-		desc: "Manage your own custom email filters.",
-		selected: false,
-		depends: "dovecot",
-	},
-	{
-		name: " --clamav",
-		id: "clamav",
-		param: "--clamav",
-		desc: "Scans your email inbox for viruses.",
-		selected: true,
-		depends: "exim",
-	},
-	{
-		name: " --spamassassin",
-		id: "spamassassin",
-		param: "--spamassassin",
-		desc: "Filter out spam emails from your inbox.",
-		selected: true,
-		depends: "exim",
-	},
-	{
-		name: " --iptables",
-		id: "iptables",
-		param: "--iptables",
-		desc: "Manage your firewall within Hestia.",
-		selected: true,
-	},
-	{
-		name: " --fail2ban",
-		id: "fail2ban",
-		param: "--fail2ban",
-		desc: "Provides Bruteforce protection for SSH, Email, FTP, database.",
-		selected: true,
-	},
-	{
-		name: " --quota",
-		id: "quota",
-		param: "--quota",
-		desc: "Use hard disk space limits on user packages.",
-		selected: false,
-	},
-	{ name: " --api", id: "api", param: "--api", desc: "Activate API.", selected: true },
-	{
-		name: " --interactive",
-		id: "interactive",
-		param: "--interactive",
-		desc: "Interactive install.",
-		selected: true,
-	},
-	{ name: " --force", id: "force", param: "--force", desc: "Force installation.", selected: false },
-];

+ 74 - 0
docs/_data/team.js

@@ -0,0 +1,74 @@
+/** @type {import("vitepress").DefaultTheme.TeamMember[]} */
+export const projectManagers = [
+	{
+		avatar: 'https://www.github.com/ScIT-Raphael.png',
+		name: 'Raphael Schneeberger 🇨🇭',
+		title: 'Project Founder',
+		links: [{ icon: 'github', link: 'https://github.com/ScIT-Raphael' }],
+	},
+	{
+		avatar: 'https://www.github.com/jaapmarcus.png',
+		name: 'Jaap Marcus 🇳🇱',
+		links: [
+			{ icon: 'github', link: 'https://github.com/jaapmarcus' },
+			{ icon: 'twitter', link: 'https://twitter.com/jaapmarcus' },
+		],
+	},
+	{
+		avatar: 'https://www.github.com/Lupul.png',
+		name: 'Robert Zollner 🇷🇴',
+		links: [{ icon: 'github', link: 'https://github.com/Lupul' }],
+	},
+	{
+		avatar:
+			'https://cdn.discordapp.com/avatars/737720562482151485/bac8f56f0a909032efaf60c1aa4047e5.webp',
+		name: 'Kristan Kenney 🇨🇦',
+	},
+];
+
+/** @type {import("vitepress").DefaultTheme.TeamMember[]} */
+export const teamMembers = [
+	{
+		avatar: 'https://www.github.com/jakobbouchard.png',
+		name: 'Jakob Bouchard 🇨🇦',
+		title: 'Developer',
+		org: 'Prosomo',
+		orgLink: 'https://prosomo.com',
+		links: [
+			{ icon: 'github', link: 'https://github.com/jakobbouchard' },
+			{ icon: 'linkedin', link: 'https://linkedin.com/in/jakobbouchard' },
+			{
+				icon: {
+					svg: '<svg role="img" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><title>Website</title><path stroke-linecap="round" stroke-linejoin="round" d="M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9" /></svg>',
+				},
+				link: 'https://jakobbouchard.dev',
+			},
+		],
+	},
+	{
+		avatar:
+			'https://cdn.discordapp.com/avatars/737905427097845780/32452f630dd8684ed7c580806ccbee09.webp',
+		name: 'Falzo 🇩🇪',
+		links: [{ icon: 'github', link: 'https://github.com/falzoMAD' }],
+	},
+	{
+		avatar: 'https://www.github.com/divinity76.png',
+		name: 'divinity76 🇳🇴',
+		links: [{ icon: 'github', link: 'https://github.com/divinity76' }],
+	},
+	{
+		avatar: 'https://www.github.com/istiak101.png',
+		name: 'istiak101 🇧🇩',
+		links: [{ icon: 'github', link: 'https://github.com/istiak101' }],
+	},
+	{
+		avatar: 'https://www.github.com/Pleskan.png',
+		name: 'Anton Pleskanovskyy 🇺🇦',
+		links: [{ icon: 'github', link: 'https://github.com/Pleskan' }],
+	},
+	{
+		avatar: 'https://www.github.com/AlecRust.png',
+		name: 'Alec Rust 🇬🇧',
+		links: [{ icon: 'github', link: 'https://github.com/AlecRust' }],
+	},
+];

+ 0 - 74
docs/_data/team.ts

@@ -1,74 +0,0 @@
-import type { DefaultTheme } from "vitepress";
-
-export const projectManagers: DefaultTheme.TeamMember[] = [
-	{
-		avatar: "https://www.github.com/ScIT-Raphael.png",
-		name: "Raphael Schneeberger 🇨🇭",
-		title: "Project Founder",
-		links: [{ icon: "github", link: "https://github.com/ScIT-Raphael" }],
-	},
-	{
-		avatar: "https://www.github.com/jaapmarcus.png",
-		name: "Jaap Marcus 🇳🇱",
-		links: [
-			{ icon: "github", link: "https://github.com/jaapmarcus" },
-			{ icon: "twitter", link: "https://twitter.com/jaapmarcus" },
-		],
-	},
-	{
-		avatar: "https://www.github.com/Lupul.png",
-		name: "Robert Zollner 🇷🇴",
-		links: [{ icon: "github", link: "https://github.com/Lupul" }],
-	},
-	{
-		avatar:
-			"https://cdn.discordapp.com/avatars/737720562482151485/bac8f56f0a909032efaf60c1aa4047e5.webp",
-		name: "Kristan Kenney 🇨🇦",
-	},
-];
-
-export const teamMembers: DefaultTheme.TeamMember[] = [
-	{
-		avatar: "https://www.github.com/jakobbouchard.png",
-		name: "Jakob Bouchard 🇨🇦",
-		title: "Developer",
-		org: "Prosomo",
-		orgLink: "https://prosomo.com",
-		links: [
-			{ icon: "github", link: "https://github.com/jakobbouchard" },
-			{ icon: "linkedin", link: "https://linkedin.com/in/jakobbouchard" },
-			{
-				icon: {
-					svg: '<svg role="img" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><title>Website</title><path stroke-linecap="round" stroke-linejoin="round" d="M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9" /></svg>',
-				},
-				link: "https://jakobbouchard.dev",
-			},
-		],
-	},
-	{
-		avatar:
-			"https://cdn.discordapp.com/avatars/737905427097845780/32452f630dd8684ed7c580806ccbee09.webp",
-		name: "Falzo 🇩🇪",
-		links: [{ icon: "github", link: "https://github.com/falzoMAD" }],
-	},
-	{
-		avatar: "https://www.github.com/divinity76.png",
-		name: "divinity76 🇳🇴",
-		links: [{ icon: "github", link: "https://github.com/divinity76" }],
-	},
-	{
-		avatar: "https://www.github.com/istiak101.png",
-		name: "istiak101 🇧🇩",
-		links: [{ icon: "github", link: "https://github.com/istiak101" }],
-	},
-	{
-		avatar: "https://www.github.com/Pleskan.png",
-		name: "Anton Pleskanovskyy 🇺🇦",
-		links: [{ icon: "github", link: "https://github.com/Pleskan" }],
-	},
-	{
-		avatar: "https://www.github.com/AlecRust.png",
-		name: "Alec Rust 🇬🇧",
-		links: [{ icon: "github", link: "https://github.com/AlecRust" }],
-	},
-];

+ 1 - 1
docs/features.md

@@ -3,7 +3,7 @@ layout: page
 title: Features
 title: Features
 ---
 ---
 
 
-<script setup lang="ts">
+<script setup>
   import FeaturePageTitle from "./.vitepress/theme/components/FeaturePageTitle.vue";
   import FeaturePageTitle from "./.vitepress/theme/components/FeaturePageTitle.vue";
   import FeaturePageSection from "./.vitepress/theme/components/FeaturePageSection.vue";
   import FeaturePageSection from "./.vitepress/theme/components/FeaturePageSection.vue";
   import FeatureList from "./.vitepress/theme/components/FeatureList.vue";
   import FeatureList from "./.vitepress/theme/components/FeatureList.vue";

+ 1 - 1
docs/install.md

@@ -3,7 +3,7 @@ layout: page
 title: Install
 title: Install
 ---
 ---
 
 
-<script setup lang="ts">
+<script setup>
   import InstallPageTitle from "./.vitepress/theme/components/InstallPageTitle.vue";
   import InstallPageTitle from "./.vitepress/theme/components/InstallPageTitle.vue";
   import InstallOptions from "./.vitepress/theme/components/InstallOptions.vue";
   import InstallOptions from "./.vitepress/theme/components/InstallOptions.vue";
   import InstallOptionsSection from "./.vitepress/theme/components/InstallOptionsSection.vue";
   import InstallOptionsSection from "./.vitepress/theme/components/InstallOptionsSection.vue";

+ 1 - 1
docs/team.md

@@ -4,7 +4,7 @@ layout: page
 title: The Team
 title: The Team
 ---
 ---
 
 
-<script setup lang="ts">
+<script setup>
   import { VPTeamPage, VPTeamPageTitle, VPTeamPageSection, VPTeamMembers } from "vitepress/theme";
   import { VPTeamPage, VPTeamPageTitle, VPTeamPageSection, VPTeamMembers } from "vitepress/theme";
   import { projectManagers, teamMembers } from "./_data/team";
   import { projectManagers, teamMembers } from "./_data/team";
 </script>
 </script>

+ 0 - 264
package-lock.json

@@ -39,7 +39,6 @@
 				"prettier-plugin-sql": "^0.14.0",
 				"prettier-plugin-sql": "^0.14.0",
 				"stylelint": "^15.10.2",
 				"stylelint": "^15.10.2",
 				"stylelint-config-standard": "^34.0.0",
 				"stylelint-config-standard": "^34.0.0",
-				"typescript": "^5.1.6",
 				"vitepress": "1.0.0-beta.5",
 				"vitepress": "1.0.0-beta.5",
 				"vue": "^3.3.4"
 				"vue": "^3.3.4"
 			}
 			}
@@ -1755,12 +1754,6 @@
 				"node": ">=10.13.0"
 				"node": ">=10.13.0"
 			}
 			}
 		},
 		},
-		"node_modules/@types/json-schema": {
-			"version": "7.0.12",
-			"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
-			"integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
-			"dev": true
-		},
 		"node_modules/@types/json5": {
 		"node_modules/@types/json5": {
 			"version": "0.0.29",
 			"version": "0.0.29",
 			"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
 			"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@@ -1779,210 +1772,12 @@
 			"integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
 			"integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
 			"dev": true
 			"dev": true
 		},
 		},
-		"node_modules/@types/semver": {
-			"version": "7.5.0",
-			"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz",
-			"integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==",
-			"dev": true
-		},
 		"node_modules/@types/web-bluetooth": {
 		"node_modules/@types/web-bluetooth": {
 			"version": "0.0.17",
 			"version": "0.0.17",
 			"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz",
 			"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz",
 			"integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==",
 			"integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==",
 			"dev": true
 			"dev": true
 		},
 		},
-		"node_modules/@typescript-eslint/eslint-plugin": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.0.0.tgz",
-			"integrity": "sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==",
-			"dev": true,
-			"dependencies": {
-				"@eslint-community/regexpp": "^4.5.0",
-				"@typescript-eslint/scope-manager": "6.0.0",
-				"@typescript-eslint/type-utils": "6.0.0",
-				"@typescript-eslint/utils": "6.0.0",
-				"@typescript-eslint/visitor-keys": "6.0.0",
-				"debug": "^4.3.4",
-				"grapheme-splitter": "^1.0.4",
-				"graphemer": "^1.4.0",
-				"ignore": "^5.2.4",
-				"natural-compare": "^1.4.0",
-				"natural-compare-lite": "^1.4.0",
-				"semver": "^7.5.0",
-				"ts-api-utils": "^1.0.1"
-			},
-			"engines": {
-				"node": "^16.0.0 || >=18.0.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			},
-			"peerDependencies": {
-				"@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
-				"eslint": "^7.0.0 || ^8.0.0"
-			},
-			"peerDependenciesMeta": {
-				"typescript": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/@typescript-eslint/parser": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.0.0.tgz",
-			"integrity": "sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==",
-			"dev": true,
-			"dependencies": {
-				"@typescript-eslint/scope-manager": "6.0.0",
-				"@typescript-eslint/types": "6.0.0",
-				"@typescript-eslint/typescript-estree": "6.0.0",
-				"@typescript-eslint/visitor-keys": "6.0.0",
-				"debug": "^4.3.4"
-			},
-			"engines": {
-				"node": "^16.0.0 || >=18.0.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			},
-			"peerDependencies": {
-				"eslint": "^7.0.0 || ^8.0.0"
-			},
-			"peerDependenciesMeta": {
-				"typescript": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/@typescript-eslint/scope-manager": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.0.0.tgz",
-			"integrity": "sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==",
-			"dev": true,
-			"dependencies": {
-				"@typescript-eslint/types": "6.0.0",
-				"@typescript-eslint/visitor-keys": "6.0.0"
-			},
-			"engines": {
-				"node": "^16.0.0 || >=18.0.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			}
-		},
-		"node_modules/@typescript-eslint/type-utils": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.0.0.tgz",
-			"integrity": "sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==",
-			"dev": true,
-			"dependencies": {
-				"@typescript-eslint/typescript-estree": "6.0.0",
-				"@typescript-eslint/utils": "6.0.0",
-				"debug": "^4.3.4",
-				"ts-api-utils": "^1.0.1"
-			},
-			"engines": {
-				"node": "^16.0.0 || >=18.0.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			},
-			"peerDependencies": {
-				"eslint": "^7.0.0 || ^8.0.0"
-			},
-			"peerDependenciesMeta": {
-				"typescript": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/@typescript-eslint/types": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.0.0.tgz",
-			"integrity": "sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==",
-			"dev": true,
-			"engines": {
-				"node": "^16.0.0 || >=18.0.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			}
-		},
-		"node_modules/@typescript-eslint/typescript-estree": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.0.0.tgz",
-			"integrity": "sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==",
-			"dev": true,
-			"dependencies": {
-				"@typescript-eslint/types": "6.0.0",
-				"@typescript-eslint/visitor-keys": "6.0.0",
-				"debug": "^4.3.4",
-				"globby": "^11.1.0",
-				"is-glob": "^4.0.3",
-				"semver": "^7.5.0",
-				"ts-api-utils": "^1.0.1"
-			},
-			"engines": {
-				"node": "^16.0.0 || >=18.0.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			},
-			"peerDependenciesMeta": {
-				"typescript": {
-					"optional": true
-				}
-			}
-		},
-		"node_modules/@typescript-eslint/utils": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.0.0.tgz",
-			"integrity": "sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==",
-			"dev": true,
-			"dependencies": {
-				"@eslint-community/eslint-utils": "^4.3.0",
-				"@types/json-schema": "^7.0.11",
-				"@types/semver": "^7.3.12",
-				"@typescript-eslint/scope-manager": "6.0.0",
-				"@typescript-eslint/types": "6.0.0",
-				"@typescript-eslint/typescript-estree": "6.0.0",
-				"eslint-scope": "^5.1.1",
-				"semver": "^7.5.0"
-			},
-			"engines": {
-				"node": "^16.0.0 || >=18.0.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			},
-			"peerDependencies": {
-				"eslint": "^7.0.0 || ^8.0.0"
-			}
-		},
-		"node_modules/@typescript-eslint/visitor-keys": {
-			"version": "6.0.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.0.0.tgz",
-			"integrity": "sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==",
-			"dev": true,
-			"dependencies": {
-				"@typescript-eslint/types": "6.0.0",
-				"eslint-visitor-keys": "^3.4.1"
-			},
-			"engines": {
-				"node": "^16.0.0 || >=18.0.0"
-			},
-			"funding": {
-				"type": "opencollective",
-				"url": "https://opencollective.com/typescript-eslint"
-			}
-		},
 		"node_modules/@vitejs/plugin-vue": {
 		"node_modules/@vitejs/plugin-vue": {
 			"version": "4.2.3",
 			"version": "4.2.3",
 			"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz",
 			"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz",
@@ -3901,19 +3696,6 @@
 				"semver": "bin/semver.js"
 				"semver": "bin/semver.js"
 			}
 			}
 		},
 		},
-		"node_modules/eslint-scope": {
-			"version": "5.1.1",
-			"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
-			"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
-			"dev": true,
-			"dependencies": {
-				"esrecurse": "^4.3.0",
-				"estraverse": "^4.1.1"
-			},
-			"engines": {
-				"node": ">=8.0.0"
-			}
-		},
 		"node_modules/eslint-visitor-keys": {
 		"node_modules/eslint-visitor-keys": {
 			"version": "3.4.1",
 			"version": "3.4.1",
 			"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
 			"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
@@ -4010,15 +3792,6 @@
 				"node": ">=4.0"
 				"node": ">=4.0"
 			}
 			}
 		},
 		},
-		"node_modules/estraverse": {
-			"version": "4.3.0",
-			"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-			"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-			"dev": true,
-			"engines": {
-				"node": ">=4.0"
-			}
-		},
 		"node_modules/estree-walker": {
 		"node_modules/estree-walker": {
 			"version": "2.0.2",
 			"version": "2.0.2",
 			"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
 			"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
@@ -4445,12 +4218,6 @@
 				"url": "https://github.com/sponsors/ljharb"
 				"url": "https://github.com/sponsors/ljharb"
 			}
 			}
 		},
 		},
-		"node_modules/grapheme-splitter": {
-			"version": "1.0.4",
-			"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
-			"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
-			"dev": true
-		},
 		"node_modules/graphemer": {
 		"node_modules/graphemer": {
 			"version": "1.4.0",
 			"version": "1.4.0",
 			"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
 			"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
@@ -5778,12 +5545,6 @@
 			"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
 			"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
 			"dev": true
 			"dev": true
 		},
 		},
-		"node_modules/natural-compare-lite": {
-			"version": "1.4.0",
-			"resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
-			"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
-			"dev": true
-		},
 		"node_modules/nearley": {
 		"node_modules/nearley": {
 			"version": "2.20.1",
 			"version": "2.20.1",
 			"resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz",
 			"resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz",
@@ -8736,18 +8497,6 @@
 				"url": "https://github.com/sponsors/sindresorhus"
 				"url": "https://github.com/sponsors/sindresorhus"
 			}
 			}
 		},
 		},
-		"node_modules/ts-api-utils": {
-			"version": "1.0.1",
-			"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz",
-			"integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==",
-			"dev": true,
-			"engines": {
-				"node": ">=16.13.0"
-			},
-			"peerDependencies": {
-				"typescript": ">=4.2.0"
-			}
-		},
 		"node_modules/tsconfig-paths": {
 		"node_modules/tsconfig-paths": {
 			"version": "3.14.2",
 			"version": "3.14.2",
 			"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
 			"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
@@ -8804,19 +8553,6 @@
 				"url": "https://github.com/sponsors/ljharb"
 				"url": "https://github.com/sponsors/ljharb"
 			}
 			}
 		},
 		},
-		"node_modules/typescript": {
-			"version": "5.1.6",
-			"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
-			"integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
-			"dev": true,
-			"bin": {
-				"tsc": "bin/tsc",
-				"tsserver": "bin/tsserver"
-			},
-			"engines": {
-				"node": ">=14.17"
-			}
-		},
 		"node_modules/uc.micro": {
 		"node_modules/uc.micro": {
 			"version": "1.0.6",
 			"version": "1.0.6",
 			"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
 			"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",

+ 0 - 3
package.json

@@ -27,8 +27,6 @@
 	},
 	},
 	"devDependencies": {
 	"devDependencies": {
 		"@prettier/plugin-php": "^0.19.6",
 		"@prettier/plugin-php": "^0.19.6",
-		"@typescript-eslint/eslint-plugin": "^6.0.0",
-		"@typescript-eslint/parser": "^6.0.0",
 		"cssnano": "^6.0.1",
 		"cssnano": "^6.0.1",
 		"esbuild": "^0.18.13",
 		"esbuild": "^0.18.13",
 		"eslint": "^8.45.0",
 		"eslint": "^8.45.0",
@@ -49,7 +47,6 @@
 		"prettier-plugin-sql": "^0.14.0",
 		"prettier-plugin-sql": "^0.14.0",
 		"stylelint": "^15.10.1",
 		"stylelint": "^15.10.1",
 		"stylelint-config-standard": "^34.0.0",
 		"stylelint-config-standard": "^34.0.0",
-		"typescript": "^5.1.6",
 		"vitepress": "1.0.0-beta.5",
 		"vitepress": "1.0.0-beta.5",
 		"vue": "^3.3.4"
 		"vue": "^3.3.4"
 	},
 	},