From f8a190df60d8a1464cc7c613e0366bdd589b833d Mon Sep 17 00:00:00 2001 From: Arthur Bassi Date: Tue, 21 Jul 2026 09:10:06 -0300 Subject: [PATCH] fix(work-orders): polish slide-over and advanced search visuals --- .../_components/detail/slide-over-footer.tsx | 12 +++++++++- .../_components/detail/slide-over-header.tsx | 9 +++++-- .../work-orders-advanced-search-sheet.tsx | 24 ++++++++++++------- src/components/ui/dot-toggle-pill.tsx | 19 ++++++++------- 4 files changed, 45 insertions(+), 19 deletions(-) diff --git a/src/app/(protected)/workorders/_components/detail/slide-over-footer.tsx b/src/app/(protected)/workorders/_components/detail/slide-over-footer.tsx index 30ce7084..61c5c555 100644 --- a/src/app/(protected)/workorders/_components/detail/slide-over-footer.tsx +++ b/src/app/(protected)/workorders/_components/detail/slide-over-footer.tsx @@ -131,7 +131,17 @@ export function SlideOverFooter({ Save ) : ( - diff --git a/src/app/(protected)/workorders/_components/detail/slide-over-header.tsx b/src/app/(protected)/workorders/_components/detail/slide-over-header.tsx index 02f8fdf0..147535fe 100644 --- a/src/app/(protected)/workorders/_components/detail/slide-over-header.tsx +++ b/src/app/(protected)/workorders/_components/detail/slide-over-header.tsx @@ -27,8 +27,13 @@ export function SlideOverHeader({ >

#{row.woNumber || "—"}

diff --git a/src/app/(protected)/workorders/_components/list/advanced-search/work-orders-advanced-search-sheet.tsx b/src/app/(protected)/workorders/_components/list/advanced-search/work-orders-advanced-search-sheet.tsx index d0ca251f..d2a32105 100644 --- a/src/app/(protected)/workorders/_components/list/advanced-search/work-orders-advanced-search-sheet.tsx +++ b/src/app/(protected)/workorders/_components/list/advanced-search/work-orders-advanced-search-sheet.tsx @@ -15,6 +15,7 @@ import { AdvDocPill, AdvFilterPill, AdvStatusPill } from "./adv-filter-pill"; import { AdvMultiSelect } from "./adv-multi-select"; import { AdvSection } from "./adv-section"; import { AdvTypeGrid } from "./adv-type-grid"; +import { getPmTypeIcon } from "@/app/(protected)/workorders/_components/list/table/pm-type-icons"; import { Button } from "@/components/ui/button"; import { DateField } from "@/components/ui/date-input"; import { IconCloseButton } from "@/components/ui/icon-close-button"; @@ -37,6 +38,7 @@ import { countAdvancedFilters, isDefaultDateRange, } from "@/domain/work-orders/utils/advanced-filters-utils"; +import { getDispatcherAvatarColor } from "@/domain/work-orders/utils/dispatcher-avatar-color"; type WorkOrdersAdvancedSearchSheetProps = { open: boolean; @@ -221,13 +223,16 @@ export function WorkOrdersAdvancedSearchSheet({ onToggle={(value) => toggleIn("dispatchers", value)} onBulkToggle={(values, select) => setMany("dispatchers", values, select)} placeholder="Search assigned to…" - renderLeft={(id) => - id === ASSIGNEE_FILTER_UNASSIGNED ? ( - - ) : ( - - ) - } + renderLeft={(id) => { + if (id === ASSIGNEE_FILTER_UNASSIGNED) { + return ; + } + const user = users.find((u) => String(u.id) === id); + const color = getDispatcherAvatarColor(user ?? { id, name: id }); + return ( + + ); + }} /> @@ -240,7 +245,6 @@ export function WorkOrdersAdvancedSearchSheet({ label={status} dotColor={WIZARD_STATUS_DOTS[status]} selected={draft.statuses.has(status)} - selectedBg="var(--color-primary-tint)" onClick={() => toggleIn("statuses", status)} /> ))} @@ -254,6 +258,10 @@ export function WorkOrdersAdvancedSearchSheet({ onToggle={(value) => toggleIn("pmTypes", value)} onBulkToggle={(values, select) => setMany("pmTypes", values, select)} placeholder="Search pm type…" + renderLeft={(pmType) => { + const Icon = getPmTypeIcon(pmType); + return ; + }} /> diff --git a/src/components/ui/dot-toggle-pill.tsx b/src/components/ui/dot-toggle-pill.tsx index cd68e7c0..d0f5bea9 100644 --- a/src/components/ui/dot-toggle-pill.tsx +++ b/src/components/ui/dot-toggle-pill.tsx @@ -22,8 +22,14 @@ export function DotTogglePill({ style, ...props }: DotTogglePillProps) { - const selectedStyle: CSSProperties | undefined = - selected && selectedBg ? { background: selectedBg } : undefined; + const softBg = selected + ? (selectedBg ?? `color-mix(in srgb, ${dotColor} 18%, transparent)`) + : `color-mix(in srgb, ${dotColor} 10%, transparent)`; + + const pillStyle: CSSProperties = { + background: softBg, + ...style, + }; return (