From 659f6a0de9e8ba1dfeb562cf3ac5cb3dda98807a Mon Sep 17 00:00:00 2001 From: abdulluda3 Date: Sat, 6 Jun 2026 14:28:50 +0500 Subject: [PATCH] ci(web): add lint job and fix web lint Web CI only checked types, so lint regressions were not visible on pull requests. Adding a dedicated lint job required clearing the existing React and accessibility lint failures first. Co-Authored-By: Claude Opus 4.8 --- .github/workflows/ci.yml | 20 ++++ .../booking/booking-map-explorer.tsx | 18 ++-- .../web/components/landing/metrix-landing.tsx | 93 +++++++++++++------ .../landing/sections/technology-section.tsx | 4 +- apps/web/components/media/fade-image.tsx | 3 +- .../web/components/providers/theme-toggle.tsx | 13 +-- apps/web/components/ui/hooks/use-mobile 2.tsx | 32 ++++--- .../ui/layout/sidebar/menu-extras.tsx | 2 +- apps/web/eslint.config.mjs | 4 +- 9 files changed, 128 insertions(+), 61 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7f65e01..de02833 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,6 +75,26 @@ jobs: - name: Typecheck web run: npm --prefix apps/web run typecheck + web-lint: + name: Web lint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + cache-dependency-path: apps/web/package-lock.json + + - name: Install web dependencies + run: npm --prefix apps/web ci + + - name: Lint web + run: npm --prefix apps/web run lint + docker: name: Docker builds runs-on: ubuntu-latest diff --git a/apps/web/components/booking/booking-map-explorer.tsx b/apps/web/components/booking/booking-map-explorer.tsx index 32063a8..77eebe3 100644 --- a/apps/web/components/booking/booking-map-explorer.tsx +++ b/apps/web/components/booking/booking-map-explorer.tsx @@ -2,6 +2,7 @@ import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react"; import { HugeiconsIcon } from "@hugeicons/react"; +import Image from "next/image"; import { ArrowLeft01Icon, Dollar01Icon, @@ -574,15 +575,20 @@ const MapCanvas = memo(function MapCanvas({ style={{ transform: `scale(${mapData.zoomScale})`, willChange: "transform" }} > {mapData.tiles.map((tile) => ( - + > + + ))}
{mapData.points.map((p) => ( diff --git a/apps/web/components/landing/metrix-landing.tsx b/apps/web/components/landing/metrix-landing.tsx index 6cd5b1c..88ecd71 100644 --- a/apps/web/components/landing/metrix-landing.tsx +++ b/apps/web/components/landing/metrix-landing.tsx @@ -33,6 +33,12 @@ type VenueOption = { unit: string; seats: string; }; +type ChatMessageProps = { + accent?: boolean; + children: React.ReactNode; + from?: "bot" | "me"; + visible: boolean; +}; const Pict = ({ icon, size = 56, label, className }: PictProps & { icon: IconSvgElement; className?: string }) => (