From 053d2ac8e119f8b2df1d85eb1c21af1d1f06df6d Mon Sep 17 00:00:00 2001 From: sinta Date: Mon, 26 Jan 2026 09:46:51 +0700 Subject: [PATCH 1/4] Add: Make client logos auto slide --- app/[lang]/(hyperjump)/components/clients.tsx | 41 +++-- app/[lang]/(hyperjump)/page.tsx | 2 +- app/globals.css | 21 +++ data.json | 39 +++- public/images/clients/1engage.svg | 10 ++ public/images/clients/amman.svg | 17 +- public/images/clients/aruna.svg | 14 ++ public/images/clients/ausvet.svg | 47 +++++ public/images/clients/bali-united.svg | 170 ++++++++++++++++++ .../images/clients/bank-tabungan-negara.svg | 16 +- public/images/clients/cashbac.svg | 13 ++ public/images/clients/cohive.svg | 3 + public/images/clients/idn-media.svg | 17 ++ public/images/clients/ismaya.svg | 19 ++ public/images/clients/my-republic.svg | 42 ++--- public/images/clients/sinarmas.svg | 15 ++ public/images/clients/smartfren.svg | 12 +- public/images/clients/smdv.svg | 14 +- public/images/clients/trimegah.svg | 45 +++++ 19 files changed, 486 insertions(+), 71 deletions(-) create mode 100644 public/images/clients/1engage.svg create mode 100644 public/images/clients/aruna.svg create mode 100644 public/images/clients/ausvet.svg create mode 100644 public/images/clients/bali-united.svg create mode 100644 public/images/clients/cashbac.svg create mode 100644 public/images/clients/cohive.svg create mode 100644 public/images/clients/idn-media.svg create mode 100644 public/images/clients/ismaya.svg create mode 100644 public/images/clients/sinarmas.svg create mode 100644 public/images/clients/trimegah.svg diff --git a/app/[lang]/(hyperjump)/components/clients.tsx b/app/[lang]/(hyperjump)/components/clients.tsx index 03f95b627..b0012367c 100644 --- a/app/[lang]/(hyperjump)/components/clients.tsx +++ b/app/[lang]/(hyperjump)/components/clients.tsx @@ -1,33 +1,36 @@ +"use client"; + import Image from "next/image"; type Client = { - imageUrl: string; name: string; + imageUrl: string; }; type ClientsProps = { - isPriorityLoad?: boolean; clients: Client[]; }; -export function Clients({ - clients = [], - isPriorityLoad = false -}: ClientsProps) { +export function Clients({ clients }: ClientsProps) { + if (clients.length === 0) return null; + + const repeatedClients = Array(4).fill(clients).flat(); + return ( -
-
- {clients.map(({ imageUrl, name }) => ( - {name} - ))} +
+
+
+ {repeatedClients.map(({ imageUrl, name }, index) => ( + {name} + ))} +
); diff --git a/app/[lang]/(hyperjump)/page.tsx b/app/[lang]/(hyperjump)/page.tsx index e4265d13d..f5edd5364 100644 --- a/app/[lang]/(hyperjump)/page.tsx +++ b/app/[lang]/(hyperjump)/page.tsx @@ -137,7 +137,7 @@ function Hero({ lang }: HeroProps) {

- +
diff --git a/app/globals.css b/app/globals.css index a78f974d6..af0f7e9be 100644 --- a/app/globals.css +++ b/app/globals.css @@ -183,3 +183,24 @@ rgba(21, 19, 55, 0) 23.58% ); } + +.marquee { + overflow: hidden; + width: 100%; +} + +.marquee__track { + display: flex; + gap: 3rem; + width: max-content; + animation: marquee 35s linear infinite; +} + +@keyframes marquee { + from { + transform: translateX(0); + } + to { + transform: translateX(-25%); + } +} diff --git a/data.json b/data.json index 6187505fa..98a700676 100644 --- a/data.json +++ b/data.json @@ -9,7 +9,7 @@ "imageUrl": "/images/clients/bank-tabungan-negara.svg" }, { - "name": "Eka Mas Republik", + "name": "Eka Mas Republik (MyRepublic)", "imageUrl": "/images/clients/my-republic.svg" }, { @@ -23,6 +23,43 @@ { "name": "Smartfren", "imageUrl": "/images/clients/smartfren.svg" + }, + + { + "name": "IDN Media", + "imageUrl": "/images/clients/idn-media.svg" + }, + { + "name": "Ismaya Group", + "imageUrl": "/images/clients/ismaya.svg" + }, + { + "name": "Aruna", + "imageUrl": "/images/clients/aruna.svg" + }, + { + "name": "Cashbac", + "imageUrl": "/images/clients/cashbac.svg" + }, + { + "name": "Ausvet", + "imageUrl": "/images/clients/ausvet.svg" + }, + { + "name": "CoHive", + "imageUrl": "/images/clients/cohive.svg" + }, + { + "name": "Trimegah Sekuritas", + "imageUrl": "/images/clients/trimegah.svg" + }, + { + "name": "Bali United", + "imageUrl": "/images/clients/bali-united.svg" + }, + { + "name": "1Engage", + "imageUrl": "/images/clients/1engage.svg" } ], "description": "Your partner in building reliable, modern software.", diff --git a/public/images/clients/1engage.svg b/public/images/clients/1engage.svg new file mode 100644 index 000000000..6a57f3637 --- /dev/null +++ b/public/images/clients/1engage.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/public/images/clients/amman.svg b/public/images/clients/amman.svg index f7c14da31..87aeb7eee 100644 --- a/public/images/clients/amman.svg +++ b/public/images/clients/amman.svg @@ -1,9 +1,10 @@ - - - - - - - - + + + + + + + + + diff --git a/public/images/clients/aruna.svg b/public/images/clients/aruna.svg new file mode 100644 index 000000000..8762274bb --- /dev/null +++ b/public/images/clients/aruna.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/public/images/clients/ausvet.svg b/public/images/clients/ausvet.svg new file mode 100644 index 000000000..d7802b76b --- /dev/null +++ b/public/images/clients/ausvet.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/clients/bali-united.svg b/public/images/clients/bali-united.svg new file mode 100644 index 000000000..9ebbc759b --- /dev/null +++ b/public/images/clients/bali-united.svg @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/clients/bank-tabungan-negara.svg b/public/images/clients/bank-tabungan-negara.svg index 3e91d0c53..6cf8cded2 100644 --- a/public/images/clients/bank-tabungan-negara.svg +++ b/public/images/clients/bank-tabungan-negara.svg @@ -1,13 +1,13 @@ - - - - - - + + + + + + - - + + diff --git a/public/images/clients/cashbac.svg b/public/images/clients/cashbac.svg new file mode 100644 index 000000000..860d4cc02 --- /dev/null +++ b/public/images/clients/cashbac.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/public/images/clients/cohive.svg b/public/images/clients/cohive.svg new file mode 100644 index 000000000..7758f3332 --- /dev/null +++ b/public/images/clients/cohive.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/clients/idn-media.svg b/public/images/clients/idn-media.svg new file mode 100644 index 000000000..bc60a2ccb --- /dev/null +++ b/public/images/clients/idn-media.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/public/images/clients/ismaya.svg b/public/images/clients/ismaya.svg new file mode 100644 index 000000000..5decfdd6f --- /dev/null +++ b/public/images/clients/ismaya.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/public/images/clients/my-republic.svg b/public/images/clients/my-republic.svg index c61dc3593..5e9a54b47 100644 --- a/public/images/clients/my-republic.svg +++ b/public/images/clients/my-republic.svg @@ -1,26 +1,26 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + + diff --git a/public/images/clients/sinarmas.svg b/public/images/clients/sinarmas.svg new file mode 100644 index 000000000..bc4a5e835 --- /dev/null +++ b/public/images/clients/sinarmas.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/public/images/clients/smartfren.svg b/public/images/clients/smartfren.svg index f66030a1c..6d562d310 100644 --- a/public/images/clients/smartfren.svg +++ b/public/images/clients/smartfren.svg @@ -1,11 +1,11 @@ - - - - + + + + - - + + diff --git a/public/images/clients/smdv.svg b/public/images/clients/smdv.svg index e998ad467..3d3581dde 100644 --- a/public/images/clients/smdv.svg +++ b/public/images/clients/smdv.svg @@ -1,8 +1,8 @@ - - - - - - - + + + + + + + diff --git a/public/images/clients/trimegah.svg b/public/images/clients/trimegah.svg new file mode 100644 index 000000000..bb3a73d6d --- /dev/null +++ b/public/images/clients/trimegah.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 31f82dd37c365c01d0fba2fd7b4e9c35b933b9b1 Mon Sep 17 00:00:00 2001 From: sinta Date: Wed, 4 Feb 2026 14:30:32 +0700 Subject: [PATCH 2/4] update icon --- e2e/homepage.spec.ts | 30 +++---- public/images/clients/1engage.svg | 16 ++-- public/images/clients/amman.svg | 16 ++-- public/images/clients/aruna.svg | 14 +-- public/images/clients/ausvet.svg | 90 +++++++++---------- public/images/clients/bali-united.svg | 28 +++--- .../images/clients/bank-tabungan-negara.svg | 12 +-- public/images/clients/cashbac.svg | 22 ++--- public/images/clients/cohive.svg | 2 +- public/images/clients/idn-media.svg | 20 ++--- public/images/clients/ismaya.svg | 24 ++--- public/images/clients/my-republic.svg | 38 ++++---- public/images/clients/sinarmas.svg | 15 ---- public/images/clients/smartfren.svg | 8 +- public/images/clients/smdd.svg | 20 ++--- public/images/clients/smdv.svg | 12 +-- public/images/clients/trimegah.svg | 76 ++++++++-------- 17 files changed, 213 insertions(+), 230 deletions(-) delete mode 100644 public/images/clients/sinarmas.svg diff --git a/e2e/homepage.spec.ts b/e2e/homepage.spec.ts index a0da6b97c..ea39ca813 100644 --- a/e2e/homepage.spec.ts +++ b/e2e/homepage.spec.ts @@ -39,31 +39,29 @@ test.describe("Homepage", () => { }); // Test Structure / UI Sections - test("Hero Section: should display hero title, subtitle, and CTA button correctly", async ({ - page - }) => { + test("Hero Section: should display partner logos", async ({ page }) => { await page.goto(URL); - // Hero title and subtitle - const heroHeading = page.getByRole("heading", { - name: "Your partner in building" - }); - await expect(heroHeading).toBeVisible(); - - const heroSubtitle = page.getByText("We help organizations deliver"); - await expect(heroSubtitle).toBeVisible(); - - // Partner logos const partnerLogos = [ "Amman Mineral Internasional", "Bank Tabungan Negara", - "Eka Mas Republik", + "Eka Mas Republik (MyRepublic)", "Sinar Mas Digital Day", - "Smartfren" + "SMDV", + "Smartfren", + "IDN Media", + "Ismaya Group", + "Aruna", + "Cashbac", + "Ausvet", + "CoHive", + "Trimegah Sekuritas", + "Bali United", + "1Engage" ]; for (const name of partnerLogos) { - const logo = page.getByRole("img", { name }); + const logo = page.locator(`img[alt="${name}"]`).first(); await expect(logo).toBeVisible(); } }); diff --git a/public/images/clients/1engage.svg b/public/images/clients/1engage.svg index 6a57f3637..00b4f3550 100644 --- a/public/images/clients/1engage.svg +++ b/public/images/clients/1engage.svg @@ -1,10 +1,10 @@ - - - - - - - - + + + + + + + + diff --git a/public/images/clients/amman.svg b/public/images/clients/amman.svg index 87aeb7eee..0a07ff8ef 100644 --- a/public/images/clients/amman.svg +++ b/public/images/clients/amman.svg @@ -1,10 +1,10 @@ - - - - - - - - + + + + + + + + diff --git a/public/images/clients/aruna.svg b/public/images/clients/aruna.svg index 8762274bb..a1c47a4e7 100644 --- a/public/images/clients/aruna.svg +++ b/public/images/clients/aruna.svg @@ -1,13 +1,13 @@ - - - - - - + + + + + + - + diff --git a/public/images/clients/ausvet.svg b/public/images/clients/ausvet.svg index d7802b76b..95d370ed3 100644 --- a/public/images/clients/ausvet.svg +++ b/public/images/clients/ausvet.svg @@ -1,47 +1,47 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/clients/bali-united.svg b/public/images/clients/bali-united.svg index 9ebbc759b..9a8a69db0 100644 --- a/public/images/clients/bali-united.svg +++ b/public/images/clients/bali-united.svg @@ -1,9 +1,9 @@ - + - - + + @@ -124,13 +124,13 @@ - + - + @@ -153,17 +153,17 @@ - - - - - + + + + + - - - + + + - + diff --git a/public/images/clients/bank-tabungan-negara.svg b/public/images/clients/bank-tabungan-negara.svg index 6cf8cded2..41d36c683 100644 --- a/public/images/clients/bank-tabungan-negara.svg +++ b/public/images/clients/bank-tabungan-negara.svg @@ -1,12 +1,12 @@ - - - - - + + + + + - + diff --git a/public/images/clients/cashbac.svg b/public/images/clients/cashbac.svg index 860d4cc02..03b571fa6 100644 --- a/public/images/clients/cashbac.svg +++ b/public/images/clients/cashbac.svg @@ -1,13 +1,13 @@ - - - - - - - - - - - + + + + + + + + + + + diff --git a/public/images/clients/cohive.svg b/public/images/clients/cohive.svg index 7758f3332..43a66c170 100644 --- a/public/images/clients/cohive.svg +++ b/public/images/clients/cohive.svg @@ -1,3 +1,3 @@ - + diff --git a/public/images/clients/idn-media.svg b/public/images/clients/idn-media.svg index bc60a2ccb..2e0eed123 100644 --- a/public/images/clients/idn-media.svg +++ b/public/images/clients/idn-media.svg @@ -1,16 +1,16 @@ - - - - - - - - - + + + + + + + + + - + diff --git a/public/images/clients/ismaya.svg b/public/images/clients/ismaya.svg index 5decfdd6f..6bf319185 100644 --- a/public/images/clients/ismaya.svg +++ b/public/images/clients/ismaya.svg @@ -1,18 +1,18 @@ - - - - - - - - - - - + + + + + + + + + + + - + diff --git a/public/images/clients/my-republic.svg b/public/images/clients/my-republic.svg index 5e9a54b47..6d7f049bc 100644 --- a/public/images/clients/my-republic.svg +++ b/public/images/clients/my-republic.svg @@ -1,25 +1,25 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + diff --git a/public/images/clients/sinarmas.svg b/public/images/clients/sinarmas.svg deleted file mode 100644 index bc4a5e835..000000000 --- a/public/images/clients/sinarmas.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/public/images/clients/smartfren.svg b/public/images/clients/smartfren.svg index 6d562d310..2d0e3bfec 100644 --- a/public/images/clients/smartfren.svg +++ b/public/images/clients/smartfren.svg @@ -1,10 +1,10 @@ - - - + + + - + diff --git a/public/images/clients/smdd.svg b/public/images/clients/smdd.svg index e43690bf2..d7de74fdd 100644 --- a/public/images/clients/smdd.svg +++ b/public/images/clients/smdd.svg @@ -1,15 +1,15 @@ - - - - - - - - + + + + + + + + - - + + diff --git a/public/images/clients/smdv.svg b/public/images/clients/smdv.svg index 3d3581dde..fbb9fdc7f 100644 --- a/public/images/clients/smdv.svg +++ b/public/images/clients/smdv.svg @@ -1,8 +1,8 @@ - - - - - - + + + + + + diff --git a/public/images/clients/trimegah.svg b/public/images/clients/trimegah.svg index bb3a73d6d..6d27e997a 100644 --- a/public/images/clients/trimegah.svg +++ b/public/images/clients/trimegah.svg @@ -1,44 +1,44 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + From 391d33a54460b7d7c35e1a1b3eacc379d6a5ed4e Mon Sep 17 00:00:00 2001 From: sinta Date: Fri, 6 Feb 2026 12:38:54 +0700 Subject: [PATCH 3/4] fix test in services --- e2e/shared-test.ts | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/e2e/shared-test.ts b/e2e/shared-test.ts index e472c6a10..a5e8ee8f7 100644 --- a/e2e/shared-test.ts +++ b/e2e/shared-test.ts @@ -109,20 +109,27 @@ async function expectAllImagesLoaded(page: Page) { for (let i = 0; i < count; i++) { const el = images.nth(i); - const tag = await el.evaluate((n: any) => n.tagName.toLowerCase()); + const { tag, isAnimated } = await el.evaluate((n: any) => { + const tag = n.tagName.toLowerCase(); + const isAnimated = !!n.closest(".marquee"); + return { tag, isAnimated }; + }); if (tag === "img" || tag === "image") { - await el.scrollIntoViewIfNeeded(); + if (!isAnimated) { + await el.scrollIntoViewIfNeeded(); + } + await expect(el, `Image #${i} not visible`).toBeVisible(); const { isLoaded, src } = await el.evaluate((img: any) => { - const nw = img.naturalWidth ?? 1; - const nh = img.naturalHeight ?? 1; - const isSVG = img.href?.baseVal; - - // Allow lazy images that are replaced with placeholder - const isLoaded = (nw > 0 && nh > 0) || isSVG; const src = img.currentSrc || img.src || img.href?.baseVal || "(none)"; + const isSvgFile = typeof src === "string" && src.endsWith(".svg"); + const rect = img.getBoundingClientRect(); + const hasLayoutSize = rect.width > 0 && rect.height > 0; + const hasRasterSize = + (img.naturalWidth ?? 0) > 0 && (img.naturalHeight ?? 0) > 0; + const isLoaded = hasRasterSize || (isSvgFile && hasLayoutSize); return { isLoaded, src }; }); From 17ec60d2051c9d9ab67e7ecc7ff70a36c7952d57 Mon Sep 17 00:00:00 2001 From: sinta Date: Fri, 6 Feb 2026 15:15:43 +0700 Subject: [PATCH 4/4] fix test in text-content --- e2e/text-content.spec.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/e2e/text-content.spec.ts b/e2e/text-content.spec.ts index fb7c680b5..240de9804 100644 --- a/e2e/text-content.spec.ts +++ b/e2e/text-content.spec.ts @@ -85,13 +85,23 @@ test.describe("Text and Content", () => { const partners = [ "Amman Mineral Internasional", "Bank Tabungan Negara", - "Eka Mas Republik", + "Eka Mas Republik (MyRepublic)", "Sinar Mas Digital Day", - "Smartfren" + "SMDV", + "Smartfren", + "IDN Media", + "Ismaya Group", + "Aruna", + "Cashbac", + "Ausvet", + "CoHive", + "Trimegah Sekuritas", + "Bali United", + "1Engage" ]; for (const partner of partners) { - const logo = page.getByRole("img", { name: partner }); + const logo = page.locator(`img[alt="${partner}"]`).first(); await expect(logo).toBeVisible({ timeout: 10_000 }); }