Skip to content

Commit c4df33e

Browse files
committed
Format code
1 parent a776ed7 commit c4df33e

1 file changed

Lines changed: 96 additions & 41 deletions

File tree

src/pages/index.astro

Lines changed: 96 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import LogoPattern from "../assets/logo-pattern.png";
4040
<div class="mx-auto max-w-7xl">
4141
<div class="flex flex-col items-center justify-between lg:flex-row">
4242
<div class="mb-8 text-center lg:mb-0 lg:w-1/2 lg:text-left">
43-
<h1 class="text-4xl md:text-6xl font-bold mb-6 text-white">
43+
<h1 class="mb-6 text-4xl font-bold text-white md:text-6xl">
4444
Software Development Partner
4545
</h1>
4646
<p class="mb-8 text-xl leading-relaxed text-gray-300 md:text-2xl">
@@ -71,29 +71,61 @@ import LogoPattern from "../assets/logo-pattern.png";
7171
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
7272
<div class="mb-12 text-center">
7373
<h2 class="mb-4 text-3xl font-bold md:text-4xl">What We Do</h2>
74-
<p class="text-lg text-gray-300">Pragmatic engineering to ship, scale, and sustain products</p>
74+
<p class="text-lg text-gray-300">
75+
Pragmatic engineering to ship, scale, and sustain products
76+
</p>
7577
</div>
7678

7779
<div class="grid gap-8 md:grid-cols-4">
7880
<!-- Selector -->
7981
<div class="md:col-span-1">
8082
<div role="tablist" aria-label="Services" class="flex flex-col gap-2">
81-
<button data-service-button="web" role="tab" aria-selected="true" class="cursor-pointer rounded-lg border border-gray-700 px-4 py-3 text-left text-gray-200 hover:border-blue-500 hover:text-white focus:outline-none focus:ring-2 focus:ring-blue-600">
83+
<button
84+
data-service-button="web"
85+
role="tab"
86+
aria-selected="true"
87+
class="cursor-pointer rounded-lg border border-gray-700 px-4 py-3 text-left text-gray-200 hover:border-blue-500 hover:text-white focus:ring-2 focus:ring-blue-600 focus:outline-none"
88+
>
8289
Web Applications
8390
</button>
84-
<button data-service-button="extensions" role="tab" aria-selected="false" class="cursor-pointer rounded-lg border border-gray-700 px-4 py-3 text-left text-gray-200 hover:border-blue-500 hover:text-white focus:outline-none focus:ring-2 focus:ring-blue-600">
91+
<button
92+
data-service-button="extensions"
93+
role="tab"
94+
aria-selected="false"
95+
class="cursor-pointer rounded-lg border border-gray-700 px-4 py-3 text-left text-gray-200 hover:border-blue-500 hover:text-white focus:ring-2 focus:ring-blue-600 focus:outline-none"
96+
>
8597
Niche Extensions
8698
</button>
87-
<button data-service-button="ai" role="tab" aria-selected="false" class="cursor-pointer rounded-lg border border-gray-700 px-4 py-3 text-left text-gray-200 hover:border-blue-500 hover:text-white focus:outline-none focus:ring-2 focus:ring-blue-600">
99+
<button
100+
data-service-button="ai"
101+
role="tab"
102+
aria-selected="false"
103+
class="cursor-pointer rounded-lg border border-gray-700 px-4 py-3 text-left text-gray-200 hover:border-blue-500 hover:text-white focus:ring-2 focus:ring-blue-600 focus:outline-none"
104+
>
88105
AI & LLM Apps
89106
</button>
90-
<button data-service-button="blockchain" role="tab" aria-selected="false" class="cursor-pointer rounded-lg border border-gray-700 px-4 py-3 text-left text-gray-200 hover:border-blue-500 hover:text-white focus:outline-none focus:ring-2 focus:ring-blue-600">
107+
<button
108+
data-service-button="blockchain"
109+
role="tab"
110+
aria-selected="false"
111+
class="cursor-pointer rounded-lg border border-gray-700 px-4 py-3 text-left text-gray-200 hover:border-blue-500 hover:text-white focus:ring-2 focus:ring-blue-600 focus:outline-none"
112+
>
91113
Blockchain & Smart Contracts
92114
</button>
93-
<button data-service-button="legacy" role="tab" aria-selected="false" class="cursor-pointer rounded-lg border border-gray-700 px-4 py-3 text-left text-gray-200 hover:border-blue-500 hover:text-white focus:outline-none focus:ring-2 focus:ring-blue-600">
115+
<button
116+
data-service-button="legacy"
117+
role="tab"
118+
aria-selected="false"
119+
class="cursor-pointer rounded-lg border border-gray-700 px-4 py-3 text-left text-gray-200 hover:border-blue-500 hover:text-white focus:ring-2 focus:ring-blue-600 focus:outline-none"
120+
>
94121
Legacy System Recovery
95122
</button>
96-
<button data-service-button="cost" role="tab" aria-selected="false" class="cursor-pointer rounded-lg border border-gray-700 px-4 py-3 text-left text-gray-200 hover:border-blue-500 hover:text-white focus:outline-none focus:ring-2 focus:ring-blue-600">
123+
<button
124+
data-service-button="cost"
125+
role="tab"
126+
aria-selected="false"
127+
class="cursor-pointer rounded-lg border border-gray-700 px-4 py-3 text-left text-gray-200 hover:border-blue-500 hover:text-white focus:ring-2 focus:ring-blue-600 focus:outline-none"
128+
>
97129
Cost Optimization
98130
</button>
99131
</div>
@@ -103,10 +135,13 @@ import LogoPattern from "../assets/logo-pattern.png";
103135
<div class="md:col-span-3">
104136
<div class="rounded-lg bg-gray-800 p-8 shadow-lg">
105137
<div data-service-panel="web">
106-
<h3 class="mb-3 text-2xl font-bold text-white">Web Applications</h3>
138+
<h3 class="mb-3 text-2xl font-bold text-white">
139+
Web Applications
140+
</h3>
107141
<p class="text-gray-300">
108-
Product discovery, architecture, and implementation of robust web apps using modern frameworks.
109-
We focus on clear domain models, great UX, and maintainable code.
142+
Product discovery, architecture, and implementation of robust
143+
web apps using modern frameworks. We focus on clear domain
144+
models, great UX, and maintainable code.
110145
</p>
111146
<ul class="mt-6 grid list-disc gap-2 pl-5 text-gray-300">
112147
<li>End-to-end feature delivery</li>
@@ -116,9 +151,13 @@ import LogoPattern from "../assets/logo-pattern.png";
116151
</div>
117152

118153
<div data-service-panel="extensions" class="hidden">
119-
<h3 class="mb-3 text-2xl font-bold text-white">Niche Extensions</h3>
154+
<h3 class="mb-3 text-2xl font-bold text-white">
155+
Niche Extensions
156+
</h3>
120157
<p class="text-gray-300">
121-
We have a deep experience developing niche extensions, including Adobe Illustrator and Chrome extensions, we are keen to expand our portfolio to other niche extensions.
158+
We have a deep experience developing niche extensions, including
159+
Adobe Illustrator and Chrome extensions, we are keen to expand
160+
our portfolio to other niche extensions.
122161
</p>
123162
<ul class="mt-6 grid list-disc gap-2 pl-5 text-gray-300">
124163
<li>Manifest V3 ready</li>
@@ -130,7 +169,8 @@ import LogoPattern from "../assets/logo-pattern.png";
130169
<div data-service-panel="ai" class="hidden">
131170
<h3 class="mb-3 text-2xl font-bold text-white">AI & LLM Apps</h3>
132171
<p class="text-gray-300">
133-
Production-ready AI capabilities: retrieval, agents, evals, and observability integrated into your product.
172+
Production-ready AI capabilities: retrieval, agents, evals, and
173+
observability integrated into your product.
134174
</p>
135175
<ul class="mt-6 grid list-disc gap-2 pl-5 text-gray-300">
136176
<li>RAG pipelines and embeddings</li>
@@ -140,10 +180,13 @@ import LogoPattern from "../assets/logo-pattern.png";
140180
</div>
141181

142182
<div data-service-panel="blockchain" class="hidden">
143-
<h3 class="mb-3 text-2xl font-bold text-white">Blockchain & Smart Contracts</h3>
183+
<h3 class="mb-3 text-2xl font-bold text-white">
184+
Blockchain & Smart Contracts
185+
</h3>
144186
<p class="text-gray-300">
145-
Practical on-chain solutions with off-chain services when needed. Security-minded reviews and
146-
testable contracts with clean deployment workflows.
187+
Practical on-chain solutions with off-chain services when
188+
needed. Security-minded reviews and testable contracts with
189+
clean deployment workflows.
147190
</p>
148191
<ul class="mt-6 grid list-disc gap-2 pl-5 text-gray-300">
149192
<li>Contract design and audits</li>
@@ -153,10 +196,13 @@ import LogoPattern from "../assets/logo-pattern.png";
153196
</div>
154197

155198
<div data-service-panel="legacy" class="hidden">
156-
<h3 class="mb-3 text-2xl font-bold text-white">Legacy System Recovery</h3>
199+
<h3 class="mb-3 text-2xl font-bold text-white">
200+
Legacy System Recovery
201+
</h3>
157202
<p class="text-gray-300">
158-
Stabilize, document, and incrementally modernize critical systems without halting business. We
159-
reduce risk with small, measurable steps.
203+
Stabilize, document, and incrementally modernize critical
204+
systems without halting business. We reduce risk with small,
205+
measurable steps.
160206
</p>
161207
<ul class="mt-6 grid list-disc gap-2 pl-5 text-gray-300">
162208
<li>Readability and tests first</li>
@@ -166,10 +212,13 @@ import LogoPattern from "../assets/logo-pattern.png";
166212
</div>
167213

168214
<div data-service-panel="cost" class="hidden">
169-
<h3 class="mb-3 text-2xl font-bold text-white">Cost Optimization</h3>
215+
<h3 class="mb-3 text-2xl font-bold text-white">
216+
Cost Optimization
217+
</h3>
170218
<p class="text-gray-300">
171-
Measure first, then optimize. We tune infrastructure and code paths to cut spend while keeping
172-
reliability and user experience intact.
219+
Measure first, then optimize. We tune infrastructure and code
220+
paths to cut spend while keeping reliability and user experience
221+
intact.
173222
</p>
174223
<ul class="mt-6 grid list-disc gap-2 pl-5 text-gray-300">
175224
<li>Profiling and benchmarks</li>
@@ -182,7 +231,7 @@ import LogoPattern from "../assets/logo-pattern.png";
182231
</div>
183232
</div>
184233
</section>
185-
234+
186235
<!-- Testimonials -->
187236
<section id="testimonials" class="py-16">
188237
<div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
@@ -379,8 +428,6 @@ import LogoPattern from "../assets/logo-pattern.png";
379428
</section>
380429
-->
381430

382-
383-
384431
<!-- Custom scripts -->
385432
<script>
386433
document.addEventListener("DOMContentLoaded", () => {
@@ -404,31 +451,37 @@ import LogoPattern from "../assets/logo-pattern.png";
404451
});
405452

406453
// Tabs for services (no external deps)
407-
const serviceButtons = document.querySelectorAll<HTMLButtonElement>('[data-service-button]');
408-
const servicePanels = document.querySelectorAll<HTMLElement>('[data-service-panel]');
454+
const serviceButtons = document.querySelectorAll<HTMLButtonElement>(
455+
"[data-service-button]",
456+
);
457+
const servicePanels = document.querySelectorAll<HTMLElement>(
458+
"[data-service-panel]",
459+
);
409460
const activateService = (id: string) => {
410461
serviceButtons.forEach((btn) => {
411-
const active = btn.getAttribute('data-service-button') === id;
412-
btn.setAttribute('aria-selected', active ? 'true' : 'false');
413-
btn.classList.toggle('border-blue-500', active);
414-
btn.classList.toggle('text-white', active);
462+
const active = btn.getAttribute("data-service-button") === id;
463+
btn.setAttribute("aria-selected", active ? "true" : "false");
464+
btn.classList.toggle("border-blue-500", active);
465+
btn.classList.toggle("text-white", active);
415466
});
416467
servicePanels.forEach((panel) => {
417-
const show = panel.getAttribute('data-service-panel') === id;
418-
panel.classList.toggle('hidden', !show);
468+
const show = panel.getAttribute("data-service-panel") === id;
469+
panel.classList.toggle("hidden", !show);
419470
});
420471
};
421472
// Default selection
422-
const firstBtn = document.querySelector<HTMLButtonElement>('[data-service-button]');
473+
const firstBtn = document.querySelector<HTMLButtonElement>(
474+
"[data-service-button]",
475+
);
423476
if (firstBtn) {
424-
const id = firstBtn.getAttribute('data-service-button');
477+
const id = firstBtn.getAttribute("data-service-button");
425478
if (id) activateService(id);
426479
}
427480
serviceButtons.forEach((btn) =>
428-
btn.addEventListener('click', () => {
429-
const id = btn.getAttribute('data-service-button');
481+
btn.addEventListener("click", () => {
482+
const id = btn.getAttribute("data-service-button");
430483
if (id) activateService(id);
431-
})
484+
}),
432485
);
433486

434487
// Load Swiper JS and initialize (for testimonials/blog only)
@@ -489,11 +542,13 @@ import LogoPattern from "../assets/logo-pattern.png";
489542

490543
toggles.forEach((toggle) => {
491544
toggle.addEventListener("click", () => {
492-
const textElement = toggle.previousElementSibling as HTMLElement | null;
545+
const textElement =
546+
toggle.previousElementSibling as HTMLElement | null;
493547
if (!textElement) return;
494548
const isExpanded = toggle.getAttribute("data-expanded") === "true";
495549
const fullText = textElement.getAttribute("data-full-text") || "";
496-
const truncatedText = textElement.getAttribute("data-truncated-text") || "";
550+
const truncatedText =
551+
textElement.getAttribute("data-truncated-text") || "";
497552

498553
if (isExpanded) {
499554
textElement.textContent = truncatedText;

0 commit comments

Comments
 (0)