This commit is contained in:
sasha-astiadi 2025-02-20 22:06:30 +08:00
parent 26fcafced8
commit 632cdcfb64
6 changed files with 377 additions and 18 deletions

BIN
static/images/aibox6.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

View File

@ -1,7 +1,8 @@
{% extends "_default/base.html" %} {% extends "_default/base.html" %}
{% block content %} {% block content %}
{% include "partials/hero/aihero1.html" %}
{% include "partials/hero/myhero.html" %} {% include "partials/hero/aihero2.html" %}
{% include "partials/hero/aihero3.html" %}
{% include "partials/hero/myhero1.html" %} {% include "partials/hero/myhero1.html" %}
{% include "partials/hero/myhero3.html" %} {% include "partials/hero/myhero3.html" %}
{% include "partials/hero/myhero5.html" %} {% include "partials/hero/myhero5.html" %}

View 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>

File diff suppressed because one or more lines are too long

View 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>

View File

@ -1,19 +1,73 @@
<div class="relative isolate overflow-hidden"> <div class="fade-in 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-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"> <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-medium tracking-tight text-pretty text-black leading-tight lg:text-[7.37rem] text-[3.5rem]">
<h1 class="mt-10 font-semibold tracking-tight text-pretty text-black lg:text-6xl text-4xl">This is Hero2.html</h1> Your
<h2 class="fade-in text-pretty lg:text-5xl text-4xl font-normal tracking-tight text-black">This is smaller title h2</h2> <span id="slides" class="slides"></span>
<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> </h1>
<div class="mt-10 flex items-center gap-x-6"> <div id="learn-more" class="mt-10 flex items-center gap-x-6 hidden">
<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-xl font-semibold text-black hover:text-gray-200">
<a href="#" class="text-sm/6 font-semibold text-black hover:text-gray-200">Learn more <span aria-hidden="true"></span></a> Learn more <span aria-hidden="true"></span>
</div> </a>
</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> </div>
</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> </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>