build: regenerate dist with interactive features

Ultraworked with Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-02-11 20:34:08 -05:00
parent 31eb93e01b
commit 04310972da
3 changed files with 75 additions and 38 deletions

1
dist/assets/index-CgWb7O_-.js vendored Normal file
View File

@@ -0,0 +1 @@
(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();function d(){const t=document.querySelector(".typewriter");if(!t)return;const e=t.getAttribute("data-text");let n=0;t.textContent="",t.style.opacity="1";function r(){n<e.length&&(t.textContent+=e.charAt(n),n++,setTimeout(r,80))}setTimeout(r,500)}function u(){const t=document.querySelector(".scroll-progress");if(!t)return;function e(){const n=document.documentElement.scrollHeight-window.innerHeight,i=window.scrollY/n*100;t.style.setProperty("--scroll-progress",`${i}%`),t.setAttribute("aria-valuenow",Math.round(i))}window.addEventListener("scroll",e,{passive:!0}),e()}function h(){const t=document.querySelectorAll(".skill-item");if(!t.length)return;const e=new IntersectionObserver(n=>{n.forEach(r=>{r.isIntersecting&&(r.target.classList.add("animate"),e.unobserve(r.target))})},{threshold:.3});t.forEach(n=>e.observe(n))}function f(){const t=document.getElementById("particles");if(!t)return;const e=t.getContext("2d");let n=[],r;function i(){t.width=window.innerWidth,t.height=window.innerHeight}class o{constructor(){this.x=Math.random()*t.width,this.y=Math.random()*t.height,this.vx=(Math.random()-.5)*.3,this.vy=(Math.random()-.5)*.3,this.radius=Math.random()*1.5+.5,this.opacity=Math.random()*.3+.1}update(){this.x+=this.vx,this.y+=this.vy,(this.x<0||this.x>t.width)&&(this.vx*=-1),(this.y<0||this.y>t.height)&&(this.vy*=-1)}draw(){e.beginPath(),e.arc(this.x,this.y,this.radius,0,Math.PI*2),e.fillStyle=`rgba(111, 78, 55, ${this.opacity})`,e.fill()}}function s(){i(),n=[];const c=Math.floor(t.width*t.height/15e3);for(let a=0;a<c;a++)n.push(new o)}function l(){e.clearRect(0,0,t.width,t.height),n.forEach(c=>{c.update(),c.draw()}),r=requestAnimationFrame(l)}window.addEventListener("resize",()=>{cancelAnimationFrame(r),s(),l()}),s(),l()}function m(){document.querySelectorAll(".testimonial-card").forEach(e=>{const n=e.querySelector(".testimonial-toggle"),r=e.querySelector(".testimonial-excerpt"),i=e.querySelector(".testimonial-full");!n||!r||!i||n.addEventListener("click",()=>{const o=e.classList.contains("expanded");e.classList.toggle("expanded"),n.textContent=o?"Read More":"Read Less",n.setAttribute("aria-expanded",!o),o?(r.style.display="block",i.style.display="none"):(r.style.display="none",i.style.display="block")})})}document.addEventListener("DOMContentLoaded",()=>{d(),u(),h(),f(),m()});

File diff suppressed because one or more lines are too long

64
dist/index.html vendored
View File

@@ -41,12 +41,19 @@
scroll-behavior: smooth; scroll-behavior: smooth;
} }
</style> </style>
<link rel="stylesheet" crossorigin href="/assets/index-BDKv4rRo.css"> <script type="module" crossorigin src="/assets/index-CgWb7O_-.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DMIaFUaQ.css">
</head> </head>
<body> <body>
<!-- Scroll Progress Bar -->
<div class="scroll-progress" role="progressbar" aria-label="Page scroll progress" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
<!-- Particle Canvas -->
<canvas id="particles" aria-hidden="true"></canvas>
<header class="text-center py-1"> <header class="text-center py-1">
<h1>d@n tech</h1> <h1>d@n tech</h1>
<p>Your partner in web development</p> <p class="typewriter" data-text="Your partner in web development" aria-label="Your partner in web development"></p>
<p><a href="https://dustin.coffee" target="_blank" class="text-white">Visit my main site</a></p> <p><a href="https://dustin.coffee" target="_blank" class="text-white">Visit my main site</a></p>
</header> </header>
<div class="d-flex flex-column min-vh-100" style="position: relative;"> <div class="d-flex flex-column min-vh-100" style="position: relative;">
@@ -55,12 +62,37 @@
<p>Welcome to d@n tech! We specialize in creating stunning and efficient websites for businesses of all sizes. Our team of experienced developers is dedicated to delivering high-quality web solutions that meet your unique needs.</p> <p>Welcome to d@n tech! We specialize in creating stunning and efficient websites for businesses of all sizes. Our team of experienced developers is dedicated to delivering high-quality web solutions that meet your unique needs.</p>
<h2>Services</h2> <h2>Services</h2>
<ul class="list-group"> <ul class="list-group skill-bars">
<li class="list-group-item">Custom Website Development</li> <li class="list-group-item skill-item" data-skill="95">
<li class="list-group-item">Responsive Design</li> <span class="skill-name">Custom Website Development</span>
<li class="list-group-item">E-commerce Solutions</li> <div class="skill-bar-track">
<li class="list-group-item">SEO Optimization</li> <div class="skill-bar-fill" style="--skill-level: 95%;"></div>
<li class="list-group-item">Website Maintenance</li> </div>
</li>
<li class="list-group-item skill-item" data-skill="90">
<span class="skill-name">Responsive Design</span>
<div class="skill-bar-track">
<div class="skill-bar-fill" style="--skill-level: 90%;"></div>
</div>
</li>
<li class="list-group-item skill-item" data-skill="85">
<span class="skill-name">E-commerce Solutions</span>
<div class="skill-bar-track">
<div class="skill-bar-fill" style="--skill-level: 85%;"></div>
</div>
</li>
<li class="list-group-item skill-item" data-skill="92">
<span class="skill-name">SEO Optimization</span>
<div class="skill-bar-track">
<div class="skill-bar-fill" style="--skill-level: 92%;"></div>
</div>
</li>
<li class="list-group-item skill-item" data-skill="98">
<span class="skill-name">Website Maintenance</span>
<div class="skill-bar-track">
<div class="skill-bar-fill" style="--skill-level: 98%;"></div>
</div>
</li>
</ul> </ul>
</div> </div>
@@ -125,20 +157,24 @@
<h2>Testimonials</h2> <h2>Testimonials</h2>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
<div class="card"> <div class="card testimonial-card">
<div class="card-body"> <div class="card-body">
<p class="card-text">"It was a pleasure working with Dustin on my counseling practice website. Throughout the process, he was thoughtful, responsive, and truly understood my vision. In addition to bringing my ideas to life with a clean, professional design, he made the entire process enjoyable and easy. His attention to detail, creativity, and technical skills are excellent. As a result of Dustin's work, I now have a website that truly represents my practice. There is no better person to recommend than him!"</p> <p class="card-text testimonial-excerpt">"It was a pleasure working with Dustin on my counseling practice website. Throughout the process, he was thoughtful, responsive, and truly understood my vision..."</p>
<p class="card-text">- Margaret Pemu, Pemu Counseling and Wellness</p> <p class="card-text testimonial-full">"It was a pleasure working with Dustin on my counseling practice website. Throughout the process, he was thoughtful, responsive, and truly understood my vision. In addition to bringing my ideas to life with a clean, professional design, he made the entire process enjoyable and easy. His attention to detail, creativity, and technical skills are excellent. As a result of Dustin's work, I now have a website that truly represents my practice. There is no better person to recommend than him!"</p>
<p class="card-text testimonial-author">- Margaret Pemu, Pemu Counseling and Wellness</p>
<button class="testimonial-toggle" aria-label="Read full testimonial">Read More</button>
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<div class="card"> <div class="card testimonial-card">
<div class="card-body"> <div class="card-body">
<p class="card-text">"Working with Dustin at d@n tech was an absolute pleasure from start to finish. He is funny, engaging, and listens well. He offered grace for my lack of technical skill and worked from simple examples provided, which translated into a functional and funky-professional website that represents my brand. <p class="card-text testimonial-excerpt">"Working with Dustin at d@n tech was an absolute pleasure from start to finish. He is funny, engaging, and listens well. He offered grace for my lack of technical skill..."</p>
<p class="card-text testimonial-full">"Working with Dustin at d@n tech was an absolute pleasure from start to finish. He is funny, engaging, and listens well. He offered grace for my lack of technical skill and worked from simple examples provided, which translated into a functional and funky-professional website that represents my brand.
His patience and technical skills are truly impressive. Furthermore, he was responsive throughout the entire process, always open to feedback, and quick to implement changes. What I appreciated most was how he spent time working toward what I wanted and was supportive in my goals."</p> His patience and technical skills are truly impressive. Furthermore, he was responsive throughout the entire process, always open to feedback, and quick to implement changes. What I appreciated most was how he spent time working toward what I wanted and was supportive in my goals."</p>
<p class="card-text"> -Laura, Woman-Owned Small Business</p> <p class="card-text testimonial-author"> -Laura, Woman-Owned Small Business</p>
<button class="testimonial-toggle" aria-label="Read full testimonial">Read More</button>
</div> </div>
</div> </div>
</div> </div>