diff --git a/.github/workflows/deno.yml b/.github/workflows/deno.yml
new file mode 100644
index 0000000..782af35
--- /dev/null
+++ b/.github/workflows/deno.yml
@@ -0,0 +1,42 @@
+# This workflow uses actions that are not certified by GitHub.
+# They are provided by a third-party and are governed by
+# separate terms of service, privacy policy, and support
+# documentation.
+
+# This workflow will install Deno then run `deno lint` and `deno test`.
+# For more information see: https://github.com/denoland/setup-deno
+
+name: Deno
+
+on:
+ push:
+ branches: ["main"]
+ pull_request:
+ branches: ["main"]
+
+permissions:
+ contents: read
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Setup repo
+ uses: actions/checkout@v4
+
+ - name: Setup Deno
+ # uses: denoland/setup-deno@v1
+ uses: denoland/setup-deno@61fe2df320078202e33d7d5ad347e7dcfa0e8f31 # v1.1.2
+ with:
+ deno-version: v1.x
+
+ # Uncomment this step to verify the use of 'deno fmt' on each commit.
+ # - name: Verify formatting
+ # run: deno fmt --check
+
+ - name: Run linter
+ run: deno lint
+
+ - name: Run tests
+ run: deno test -A
diff --git a/.github/workflows/npm-publish-github-packages.yml b/.github/workflows/npm-publish-github-packages.yml
new file mode 100644
index 0000000..ea2d329
--- /dev/null
+++ b/.github/workflows/npm-publish-github-packages.yml
@@ -0,0 +1,36 @@
+# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
+# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
+
+name: Node.js Package
+
+on:
+ release:
+ types: [created]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ - run: npm ci
+ - run: npm test
+
+ publish-gpr:
+ needs: build
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ packages: write
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ registry-url: https://npm.pkg.github.com/
+ - run: npm ci
+ - run: npm publish
+ env:
+ NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
diff --git a/public/Contact Us/contact.html b/public/Contact Us/contact.html
new file mode 100644
index 0000000..e05c883
--- /dev/null
+++ b/public/Contact Us/contact.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+ Contact Us
+
+
+
+
+
+
+
+
+
+
diff --git a/public/Contact Us/script.js b/public/Contact Us/script.js
new file mode 100644
index 0000000..bb458ff
--- /dev/null
+++ b/public/Contact Us/script.js
@@ -0,0 +1,20 @@
+document.getElementById('contact-form').addEventListener('submit', function(event) {
+ event.preventDefault();
+
+ // Basic form validation
+ const name = document.getElementById('name').value;
+ const email = document.getElementById('email').value;
+ const subject = document.getElementById('subject').value;
+ const message = document.getElementById('message').value;
+
+ if (name && email && subject && message) {
+ // Show the popup
+ document.getElementById('popup').style.display = 'flex';
+ } else {
+ alert("Please fill out all fields.");
+ }
+});
+
+document.getElementById('close-popup').addEventListener('click', function() {
+ document.getElementById('popup').style.display = 'none';
+});
\ No newline at end of file
diff --git a/public/Contact Us/styles.css b/public/Contact Us/styles.css
new file mode 100644
index 0000000..be0e988
--- /dev/null
+++ b/public/Contact Us/styles.css
@@ -0,0 +1,134 @@
+* {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+body {
+ font-family: Arial, sans-serif;
+ background-color: #f4f4f4;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 100vh;
+}
+
+.contact-container {
+ background-color: white;
+ padding: 20px;
+ max-width: 500px;
+ width: 100%;
+ border-radius: 8px;
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+}
+
+h2 {
+ text-align: center;
+ margin-bottom: 20px;
+ color: #333;
+}
+
+.form-group {
+ margin-bottom: 15px;
+}
+
+.form-group label {
+ display: block;
+ margin-bottom: 5px;
+ font-weight: bold;
+ color: #555;
+}
+
+.form-group input,
+.form-group textarea {
+ width: 100%;
+ padding: 10px;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ font-size: 16px;
+}
+
+.form-group input:focus,
+.form-group textarea:focus {
+ outline: none;
+ border-color: #007bff;
+}
+
+button {
+ width: 100%;
+ padding: 10px;
+ background-color: #007bff;
+ color: white;
+ border: none;
+ border-radius: 4px;
+ font-size: 16px;
+ cursor: pointer;
+}
+
+button:hover {
+ background-color: #0056b3;
+}
+
+/* Responsive */
+@media (max-width: 768px) {
+ .contact-container {
+ padding: 15px;
+ }
+
+ h2 {
+ font-size: 1.5em;
+ }
+
+ .form-group input,
+ .form-group textarea {
+ font-size: 14px;
+ }
+
+ button {
+ font-size: 14px;
+ }
+}
+
+/* Custom Popup Styles */
+.popup-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: rgba(0, 0, 0, 0.5);
+ display: none;
+ justify-content: center;
+ align-items: center;
+}
+
+.popup-content {
+ background-color: white;
+ padding: 20px;
+ border-radius: 8px;
+ text-align: center;
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+}
+
+.popup-content h2 {
+ margin-bottom: 15px;
+ color: #333;
+}
+
+.popup-content p {
+ margin-bottom: 20px;
+ color: #555;
+}
+
+#close-popup {
+ background-color: #007bff;
+ color: white;
+ padding: 10px 20px;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+}
+
+#close-popup:hover {
+ background-color: #0056b3;
+}