add all
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								static/images/aibox6.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								static/images/aibox6.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 242 KiB  | 
@@ -1,7 +1,8 @@
 | 
			
		||||
{% extends "_default/base.html" %}
 | 
			
		||||
{% block content %}
 | 
			
		||||
 | 
			
		||||
{% include "partials/hero/myhero.html" %}
 | 
			
		||||
{% include "partials/hero/aihero1.html" %}
 | 
			
		||||
{% include "partials/hero/aihero2.html" %}
 | 
			
		||||
{% include "partials/hero/aihero3.html" %}
 | 
			
		||||
{% include "partials/hero/myhero1.html" %}
 | 
			
		||||
{% include "partials/hero/myhero3.html" %}
 | 
			
		||||
{% include "partials/hero/myhero5.html" %}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										73
									
								
								templates/partials/hero/aihero1.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								templates/partials/hero/aihero1.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,73 @@
 | 
			
		||||
<div class="fade-in relative isolate overflow-hidden">
 | 
			
		||||
    <div class="mx-auto max-w-7xl lg:col-span-2 px-6 py-18 lg:flex lg:gap-x-2 lg:px-8 lg:py-24">
 | 
			
		||||
      <div class="mx-auto max-w-2xl shrink-0 lg:mx-0 lg:pt-8">
 | 
			
		||||
        <h1 class="mt-10 font-medium tracking-tight text-pretty text-black leading-tight lg:text-[7.37rem] text-[3.5rem]">
 | 
			
		||||
          Your 
 | 
			
		||||
          <span id="slides" class="slides"></span>
 | 
			
		||||
        </h1>
 | 
			
		||||
        <div id="learn-more" class="mt-10 flex items-center gap-x-6 hidden"> 
 | 
			
		||||
          <a href="#" class="text-xl font-semibold text-black hover:text-gray-200">
 | 
			
		||||
            Learn more <span aria-hidden="true">→</span>
 | 
			
		||||
          </a>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="mx-auto flex max-w-5xl lg:mt-12 mt-0 lg:mr-0 lg:ml-5 lg:max-w-none lg:flex-none">
 | 
			
		||||
        <div class="max-w-3xl flex-none lg:max-w-5xl">
 | 
			
		||||
          <img src="/images/aibox6.jpg" alt="App screenshot" width="2432" height="1442" class="lg:w-[66rem] w-[25rem]">
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
  
 | 
			
		||||
  <script>
 | 
			
		||||
  document.addEventListener("DOMContentLoaded", function () {
 | 
			
		||||
      const phrases = [
 | 
			
		||||
          "Personal AI Powerhouse.",
 | 
			
		||||
          "Smart GPU, Your Rules.",
 | 
			
		||||
          "True Digital Playground.",
 | 
			
		||||
          "Gateway to AI freedom.",
 | 
			
		||||
          "Personal AIBox." // Final phrase
 | 
			
		||||
      ];
 | 
			
		||||
  
 | 
			
		||||
      let index = 0;
 | 
			
		||||
      const slideElement = document.getElementById("slides");
 | 
			
		||||
      const learnMoreElement = document.getElementById("learn-more");
 | 
			
		||||
  
 | 
			
		||||
      function typeText(text, i, callback) {
 | 
			
		||||
          if (i < text.length) {
 | 
			
		||||
              slideElement.textContent += text.charAt(i);
 | 
			
		||||
              setTimeout(() => typeText(text, i + 1, callback), 100);
 | 
			
		||||
          } else {
 | 
			
		||||
              setTimeout(callback, 500);
 | 
			
		||||
          }
 | 
			
		||||
      }
 | 
			
		||||
  
 | 
			
		||||
      function deleteText(callback) {
 | 
			
		||||
          let text = slideElement.textContent;
 | 
			
		||||
          if (text.length > 0) {
 | 
			
		||||
              slideElement.textContent = text.substring(0, text.length - 1);
 | 
			
		||||
              setTimeout(() => deleteText(callback), 50);
 | 
			
		||||
          } else {
 | 
			
		||||
              setTimeout(callback, 500);
 | 
			
		||||
          }
 | 
			
		||||
      }
 | 
			
		||||
  
 | 
			
		||||
      function cyclePhrases() {
 | 
			
		||||
          if (index < phrases.length - 1) {
 | 
			
		||||
              typeText(phrases[index], 0, () => {
 | 
			
		||||
                  deleteText(() => {
 | 
			
		||||
                      index++;
 | 
			
		||||
                      cyclePhrases();
 | 
			
		||||
                  });
 | 
			
		||||
              });
 | 
			
		||||
          } else {
 | 
			
		||||
              typeText(phrases[index], 0, () => {
 | 
			
		||||
                  learnMoreElement.classList.remove("hidden"); // Show "Learn more"
 | 
			
		||||
              });
 | 
			
		||||
          }
 | 
			
		||||
      }
 | 
			
		||||
  
 | 
			
		||||
      cyclePhrases(); // Start the loop
 | 
			
		||||
  });
 | 
			
		||||
  </script>
 | 
			
		||||
  
 | 
			
		||||
							
								
								
									
										118
									
								
								templates/partials/hero/aihero2.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								templates/partials/hero/aihero2.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										113
									
								
								templates/partials/hero/aihero3.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								templates/partials/hero/aihero3.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,113 @@
 | 
			
		||||
<div class="fade-in bg-transparent relative isolate overflow-hidden pt-12 lg:pt-24 pb-0">
 | 
			
		||||
    <div class="mx-auto max-w-7xl px-6 lg:px-8 pb-10">
 | 
			
		||||
        <div class="mx-auto max-w-2xl lg:max-w-4xl">
 | 
			
		||||
            <div class="text-center">
 | 
			
		||||
                <h2 class="fade-in text-balance font-normal tracking-tight text-black lg:text-[6rem] text-[2.5rem]">What Can You Do with an <span class="font-medium">AIBox</span></h2>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<div class="space-y-8 pt-12 pb-24 mx-auto max-w-7xl relative before:absolute before:inset-0 before:ml-5 before:-translate-x-px md:before:mx-auto md:before:translate-x-0 before:h-full before:w-0.5 before:bg-gradient-to-b before:from-transparent before:via-slate-300 before:to-transparent">
 | 
			
		||||
 | 
			
		||||
    <!-- Item #1 -->
 | 
			
		||||
    <div class="fade-in relative flex items-center justify-between md:justify-normal md:odd:flex-row-reverse group is-active py-4">
 | 
			
		||||
        <div class="flex items-center justify-center w-10 h-10 rounded-full border border-white bg-black group-[.is-active]:bg-emerald-500 text-white group-[.is-active]:text-emerald-50 shadow shrink-0 md:order-1 md:group-odd:-translate-x-1/2 md:group-even:translate-x-1/2">
 | 
			
		||||
            <svg class="fill-current" xmlns="http://www.w3.org/2000/svg" width="12" height="10">
 | 
			
		||||
                <path fill-rule="nonzero" d="M10.422 1.257 4.655 7.025 2.553 4.923A.916.916 0 0 0 1.257 6.22l2.75 2.75a.916.916 0 0 0 1.296 0l6.415-6.416a.916.916 0 0 0-1.296-1.296Z" />
 | 
			
		||||
            </svg>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="fade-in w-[calc(100%-4rem)] md:w-[calc(50%-2.5rem)] bg-white/5 p-4 rounded-2xl shadow">
 | 
			
		||||
            <div class="font-semibold text-lg text-black mb-2">Run AI Models with Full Control   </div>
 | 
			
		||||
            <div class="text-gray-900 font-light">
 | 
			
		||||
                Creation of Core Technology
 | 
			
		||||
                <br>Execute AI models directly on your dedicated GPU
 | 
			
		||||
 | 
			
		||||
                <br>Decide which models are allowed to run on your AI BOX
 | 
			
		||||
 | 
			
		||||
                <br>Reserve 100% of your GPU resources anytime for your own experimentation
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- Item #2 -->
 | 
			
		||||
    <div class="fade-in relative flex items-center justify-between md:justify-normal md:odd:flex-row-reverse group is-active  py-4">
 | 
			
		||||
        <div class="flex items-center justify-center w-10 h-10 rounded-full border border-white bg-black group-[.is-active]:bg-emerald-500 text-white group-[.is-active]:text-emerald-50 shadow shrink-0 md:order-1 md:group-odd:-translate-x-1/2 md:group-even:translate-x-1/2">
 | 
			
		||||
            <svg class="fill-current" xmlns="http://www.w3.org/2000/svg" width="12" height="10">
 | 
			
		||||
                <path fill-rule="nonzero" d="M10.422 1.257 4.655 7.025 2.553 4.923A.916.916 0 0 0 1.257 6.22l2.75 2.75a.916.916 0 0 0 1.296 0l6.415-6.416a.916.916 0 0 0-1.296-1.296Z" />
 | 
			
		||||
            </svg>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="fade-in w-[calc(100%-4rem)] md:w-[calc(50%-2.5rem)] bg-white/5 p-4 rounded-2xl shadow">
 | 
			
		||||
            <div class="font-semibold text-lg text-black mb-2">Rent Out Virtual Machines (CloudSlices)
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="text-gray-900 font-light">
 | 
			
		||||
                Slice your hardware into a maximum of 8 Virtual Machines
 | 
			
		||||
                <br>Control GPU allocation: 0, 1, or 2 GPUs per VM (no oversubscription)
 | 
			
		||||
                <br>Users can connect or disconnect GPUs as needed, with owner permissions
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <!-- Item #3 -->
 | 
			
		||||
    <div class="fade-in relative flex items-center justify-between md:justify-normal md:odd:flex-row-reverse group is-active  py-4">
 | 
			
		||||
        <div class="flex items-center justify-center w-10 h-10 rounded-full border border-white bg-black group-[.is-active]:bg-emerald-500 text-white group-[.is-active]:text-emerald-50 shadow shrink-0 md:order-1 md:group-odd:-translate-x-1/2 md:group-even:translate-x-1/2">
 | 
			
		||||
            <svg class="fill-current" xmlns="http://www.w3.org/2000/svg" width="12" height="10">
 | 
			
		||||
                <path fill-rule="nonzero" d="M10.422 1.257 4.655 7.025 2.553 4.923A.916.916 0 0 0 1.257 6.22l2.75 2.75a.916.916 0 0 0 1.296 0l6.415-6.416a.916.916 0 0 0-1.296-1.296Z" />
 | 
			
		||||
            </svg>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="fade-in w-[calc(100%-4rem)] md:w-[calc(50%-2.5rem)] bg-white/5 p-4 rounded-2xl shadow">
 | 
			
		||||
            <div class="font-semibold text-lg text-black mb-2">Lightweight, Secure, and Flexible VM</div>
 | 
			
		||||
            <div class="text-gray-900 font-light">
 | 
			
		||||
                VMs come with a minimal OS and Docker (Podman) support
 | 
			
		||||
                <br>Each VM is securely connected to Mycelium (P2P overlay network), ensuring efficient communication       
 | 
			
		||||
                <br>Pre-built Docker images available for quick setup and deployment
 | 
			
		||||
                <br>Supports native Docker images and flights
 | 
			
		||||
                <br>Web gateways allow external connections to VM containers
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<style>
 | 
			
		||||
    /* Initial state: elements are invisible */
 | 
			
		||||
.fade-in {
 | 
			
		||||
  opacity: 0;
 | 
			
		||||
  transition: opacity 1s ease-out;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* State when element is in view */
 | 
			
		||||
.fade-in.visible {
 | 
			
		||||
  opacity: 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
    // Get all the elements that need to be faded in
 | 
			
		||||
    document.addEventListener('DOMContentLoaded', function() {
 | 
			
		||||
  // Target all elements with the 'fade-in' class
 | 
			
		||||
  const fadeInElements = document.querySelectorAll('.fade-in');
 | 
			
		||||
 | 
			
		||||
  const observer = new IntersectionObserver((entries, observer) => {
 | 
			
		||||
    entries.forEach(entry => {
 | 
			
		||||
      if (entry.isIntersecting) {
 | 
			
		||||
        // Add 'visible' class to the element when it's in view
 | 
			
		||||
        entry.target.classList.add('visible');
 | 
			
		||||
        observer.unobserve(entry.target); // Stop observing after it fades in
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
  }, {
 | 
			
		||||
    threshold: 0.1 // Trigger when 10% of the element is in view
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  fadeInElements.forEach(element => {
 | 
			
		||||
    observer.observe(element);
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
@@ -1,19 +1,73 @@
 | 
			
		||||
<div class="relative isolate overflow-hidden">
 | 
			
		||||
    <div class="mx-auto max-w-7xl lg:col-span-2 px-6 pt-10 pb-24 sm:pb-32 lg:flex lg:gap-x-20 lg:px-8 lg:py-40">
 | 
			
		||||
      <div class="mx-auto max-w-2xl shrink-0 lg:mx-0 lg:pt-8">
 | 
			
		||||
        <p class="text-base/7 font-light text-black tracking-wide">SUBHEADER</p>
 | 
			
		||||
        <h1 class="mt-10 font-semibold tracking-tight text-pretty text-black lg:text-6xl text-4xl">This is Hero2.html</h1>
 | 
			
		||||
        <h2 class="fade-in text-pretty lg:text-5xl text-4xl font-normal tracking-tight text-black">This is smaller title h2</h2>
 | 
			
		||||
        <p class="mt-8 text-lg font-light text-gray-50 lg:text-xl">Anim aute id magna aliqua ad ad non deserunt sunt. Qui irure qui lorem cupidatat commodo. Elit sunt amet fugiat veniam occaecat.</p>
 | 
			
		||||
        <div class="mt-10 flex items-center gap-x-6">
 | 
			
		||||
          <a href="#" class="rounded-2xl bg-white px-3.5 py-2.5 text-sm font-semibold text-white shadow-xs hover:bg-gray-200 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-200">Get started</a>
 | 
			
		||||
          <a href="#" class="text-sm/6 font-semibold text-black hover:text-gray-200">Learn more <span aria-hidden="true">→</span></a>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="mx-auto mt-16 flex max-w-2xl sm:mt-24 lg:mt-0 lg:mr-0 lg:ml-10 lg:max-w-none lg:flex-none xl:ml-32">
 | 
			
		||||
        <div class="max-w-3xl flex-none lg:max-w-5xl">
 | 
			
		||||
          <img src="https://tailwindui.com/plus/img/component-images/dark-project-app-screenshot.png" alt="App screenshot" width="2432" height="1442" class="w-[76rem] rounded-md bg-white/5  shadow-2xl ">
 | 
			
		||||
        </div>
 | 
			
		||||
<div class="fade-in relative isolate overflow-hidden">
 | 
			
		||||
  <div class="mx-auto max-w-7xl lg:col-span-2 px-6 py-18 lg:flex lg:gap-x-2 lg:px-8 lg:py-24">
 | 
			
		||||
    <div class="mx-auto max-w-2xl shrink-0 lg:mx-0 lg:pt-8">
 | 
			
		||||
      <h1 class="mt-10 font-medium tracking-tight text-pretty text-black leading-tight lg:text-[7.37rem] text-[3.5rem]">
 | 
			
		||||
        Your 
 | 
			
		||||
        <span id="slides" class="slides"></span>
 | 
			
		||||
      </h1>
 | 
			
		||||
      <div id="learn-more" class="mt-10 flex items-center gap-x-6 hidden"> 
 | 
			
		||||
        <a href="#" class="text-xl font-semibold text-black hover:text-gray-200">
 | 
			
		||||
          Learn more <span aria-hidden="true">→</span>
 | 
			
		||||
        </a>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="mx-auto flex max-w-5xl lg:mt-12 mt-0 lg:mr-0 lg:ml-5 lg:max-w-none lg:flex-none">
 | 
			
		||||
      <div class="max-w-3xl flex-none lg:max-w-5xl">
 | 
			
		||||
        <img src="/images/aibox6.jpg" alt="App screenshot" width="2432" height="1442" class="lg:w-[66rem] w-[25rem]">
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
document.addEventListener("DOMContentLoaded", function () {
 | 
			
		||||
    const phrases = [
 | 
			
		||||
        "Personal AI Powerhouse.",
 | 
			
		||||
        "Smart Digital Companion.",
 | 
			
		||||
        "Always-On Genius.",
 | 
			
		||||
        "Supercharged Peer.",
 | 
			
		||||
        "Ultimate AI Sidekick.",
 | 
			
		||||
        "Personal AIBox." // Final phrase
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    let index = 0;
 | 
			
		||||
    const slideElement = document.getElementById("slides");
 | 
			
		||||
    const learnMoreElement = document.getElementById("learn-more");
 | 
			
		||||
 | 
			
		||||
    function typeText(text, i, callback) {
 | 
			
		||||
        if (i < text.length) {
 | 
			
		||||
            slideElement.textContent += text.charAt(i);
 | 
			
		||||
            setTimeout(() => typeText(text, i + 1, callback), 100);
 | 
			
		||||
        } else {
 | 
			
		||||
            setTimeout(callback, 500);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function deleteText(callback) {
 | 
			
		||||
        let text = slideElement.textContent;
 | 
			
		||||
        if (text.length > 0) {
 | 
			
		||||
            slideElement.textContent = text.substring(0, text.length - 1);
 | 
			
		||||
            setTimeout(() => deleteText(callback), 50);
 | 
			
		||||
        } else {
 | 
			
		||||
            setTimeout(callback, 500);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function cyclePhrases() {
 | 
			
		||||
        if (index < phrases.length - 1) {
 | 
			
		||||
            typeText(phrases[index], 0, () => {
 | 
			
		||||
                deleteText(() => {
 | 
			
		||||
                    index++;
 | 
			
		||||
                    cyclePhrases();
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        } else {
 | 
			
		||||
            typeText(phrases[index], 0, () => {
 | 
			
		||||
                learnMoreElement.classList.remove("hidden"); // Show "Learn more"
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    cyclePhrases(); // Start the loop
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user