+
+
+
+
+
+
+ FreeFTF
+
+
+
+
+
+
+
+
+
diff --git a/downloadList.js b/downloadList.js
new file mode 100644
index 0000000..f1e0992
--- /dev/null
+++ b/downloadList.js
@@ -0,0 +1,50 @@
+// Define the download options for different platforms
+const downloadData = {
+ "Linux": {
+ "arm32": "link-to-linux-arm32-download",
+ "arm64": "link-to-linux-arm64-download",
+ "x86_32": "link-to-linux-x86-32-download",
+ "x86_64": "link-to-linux-x86-64-download"
+ },
+ "Windows": {
+ "x86_64": "link-to-windows-x86-64-download",
+ "arm64": "link-to-windows-arm64-download"
+ },
+ "macOS": {
+ "Universal Binary": "link-to-macos-universal-binary-download"
+ }
+};
+
+// Function to create download links
+function generateDownloadList(downloadData) {
+ const articleElement = document.querySelector('article');
+
+ for (let platform in downloadData) {
+ // Create platform heading
+ const platformHeading = document.createElement('h2');
+ platformHeading.textContent = platform;
+ articleElement.appendChild(platformHeading);
+
+ // Create list for the platform downloads
+ const ulElement = document.createElement('ul');
+ const downloads = downloadData[platform];
+
+ for (let version in downloads) {
+ const liElement = document.createElement('li');
+ const linkElement = document.createElement('a');
+ linkElement.href = downloads[version];
+ linkElement.textContent = version;
+ linkElement.setAttribute('download', version); // Optional: prompts the download
+
+ liElement.appendChild(linkElement);
+ ulElement.appendChild(liElement);
+ }
+
+ articleElement.appendChild(ulElement);
+ }
+}
+
+// Run the function to populate the download list on page load
+window.addEventListener('DOMContentLoaded', () => {
+ generateDownloadList(downloadData);
+});
diff --git a/footer.js b/footer.js
new file mode 100644
index 0000000..bf48894
--- /dev/null
+++ b/footer.js
@@ -0,0 +1,19 @@
+class Footer extends HTMLElement {
+ constructor() {
+ super();
+ }
+
+ connectedCallback() {
+ this.innerHTML = `
+
+
+
+ `;
+ }
+}
+
+customElements.define('footer-component', Footer);
\ No newline at end of file
diff --git a/game.js b/game.js
new file mode 100644
index 0000000..a2d5bf8
--- /dev/null
+++ b/game.js
@@ -0,0 +1,16 @@
+class Game extends HTMLElement {
+ constructor() {
+ super();
+ }
+
+ connectedCallback() {
+ this.innerHTML = `
+
The Game
+
+ Lorem, ipsum dolor sit amet consectetur adipisicing elit. Cumque velit repellat incidunt similique! Error officiis, animi distinctio dolorem at sint. Et assumenda quidem cupiditate aperiam rem dolor autem neque accusantium. Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum voluptatum amet pariatur. Dolore laborum autem obcaecati laboriosam ipsum illum aperiam quibusdam aliquam veniam iure ducimus reprehenderit, quidem exercitationem corrupti iusto. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Incidunt architecto voluptatem ut rerum. Perferendis, neque doloremque. Et placeat animi suscipit reiciendis impedit, sit dignissimos numquam distinctio temporibus consectetur minus soluta.
+
+ `;
+ }
+}
+
+customElements.define('game-component', Game);
\ No newline at end of file
diff --git a/header.js b/header.js
new file mode 100644
index 0000000..ae5bc49
--- /dev/null
+++ b/header.js
@@ -0,0 +1,21 @@
+class Header extends HTMLElement {
+ constructor() {
+ super();
+ }
+
+ connectedCallback() {
+ this.innerHTML = `
+
+
+
+ `;
+ }
+}
+
+customElements.define('header-component', Header);
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..5d8b52a
--- /dev/null
+++ b/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+ FreeFTF
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/license.html b/license.html
new file mode 100644
index 0000000..812e078
--- /dev/null
+++ b/license.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+ FreeFTF
+
+
+
+
+
The License
+
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Cumque velit repellat incidunt similique! Error officiis, animi distinctio dolorem at sint. Et assumenda quidem cupiditate aperiam rem dolor autem neque accusantium. Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum voluptatum amet pariatur. Dolore laborum autem obcaecati laboriosam ipsum illum aperiam quibusdam aliquam veniam iure ducimus reprehenderit, quidem exercitationem corrupti iusto. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Incidunt architecto voluptatem ut rerum. Perferendis, neque doloremque. Et placeat animi suscipit reiciendis impedit, sit dignissimos numquam distinctio temporibus consectetur minus soluta.