diff --git a/frontend/src/components/ActiveFilterChips.tsx b/frontend/src/components/ActiveFilterChips.tsx index e335dabf..47253798 100644 --- a/frontend/src/components/ActiveFilterChips.tsx +++ b/frontend/src/components/ActiveFilterChips.tsx @@ -3,7 +3,7 @@ import { useTranslation } from "react-i18next"; import { Filter, X } from "lucide-react"; import type { ActiveFilter } from "../lib/useActiveFilters"; import { decideChipLayout } from "../lib/chipOverflow"; -import { useChipOverflowFit } from "../lib/useChipOverflowFit"; +import { chipLaneClass, useChipOverflowFit } from "../lib/useChipOverflowFit"; import { PopoverItem, PopoverSurface, useAnchoredPopover } from "./ui/AnchoredPopover"; // The applied-filter row above the feed: every narrowing currently in force, each removable on its @@ -172,7 +172,7 @@ export default function ActiveFilterChips({
{/* Hidden mirror of the full set, used only to measure natural widths. Kept out of the a11y tree diff --git a/frontend/src/components/ChannelTags.tsx b/frontend/src/components/ChannelTags.tsx index 1a6e497d..01050987 100644 --- a/frontend/src/components/ChannelTags.tsx +++ b/frontend/src/components/ChannelTags.tsx @@ -5,7 +5,7 @@ import { type Tag } from "../lib/api"; import { useAnchoredPopover, PopoverSurface, PopoverItem } from "./ui/AnchoredPopover"; import { useScrollFade } from "../lib/useScrollFade"; import { fitChipsWithPill } from "../lib/chipOverflow"; -import { useChipOverflowFit } from "../lib/useChipOverflowFit"; +import { chipLaneClass, useChipOverflowFit } from "../lib/useChipOverflowFit"; // The channel tag surface, shared by the channel manager (table + cards) and the channel detail // page. Built on the R8 popover platform. Two design goals it fixes over the old inline TagsCell: @@ -129,7 +129,7 @@ function SuggestedChipsLane({ }, [hidden, overflowOpen]); return ( -
+
{/* Hidden measurer — real ghost chips at natural width so the fit hook reads their right edges. */}
{/* The add trigger LEADS the row — a stable left anchor that never moves as chips are added (they grow to its right), so its editor popover can't drift. Compact icon in the width- diff --git a/frontend/src/components/TagFilterChips.tsx b/frontend/src/components/TagFilterChips.tsx index fb5590ed..550c4df9 100644 --- a/frontend/src/components/TagFilterChips.tsx +++ b/frontend/src/components/TagFilterChips.tsx @@ -1,7 +1,7 @@ import { useEffect, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; import { fitChipsWithPill } from "../lib/chipOverflow"; -import { useChipOverflowFit } from "../lib/useChipOverflowFit"; +import { chipLaneClass, useChipOverflowFit } from "../lib/useChipOverflowFit"; import { filterChipClass } from "./ui/FilterChipGroup"; import { useAnchoredPopover, PopoverSurface } from "./ui/AnchoredPopover"; @@ -74,7 +74,7 @@ export default function TagFilterChips({ const moreLabel = t("channels.tags.moreCount", { count: hidden }); return ( -
+
{/* Hidden measurer: all chips + a sample "+N" pill at natural widths, so the shared fit core can read each chip's right edge, the rem gap and the pill width off real boxes. */}