/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/session-ui/src/components/tool-count-summary.tsx
52 строки
2 KB
Victor Navarro
refactor(ui): isolate session components (#33670)
24 июн 2026, 17:56
Не верифицирован
24 июн 2026, 17:56
04c1730
Код
Авторство
О чём код?
import { Index, createMemo } from "solid-js" import { AnimatedCountLabel } from "./tool-count-label" export type CountItem = { key: string count: number one: string other: string } export function AnimatedCountList(props: { items: CountItem[]; fallback?: string; class?: string }) { const visible = createMemo(() => props.items.filter((item) => item.count > 0)) const fallback = createMemo(() => props.fallback ?? "") const showEmpty = createMemo(() => visible().length === 0 && fallback().length > 0) return ( <span data-component="tool-count-summary" class={props.class}> <span data-slot="tool-count-summary-empty" data-active={showEmpty() ? "true" : "false"}> <span data-slot="tool-count-summary-empty-inner">{fallback()}</span> </span> <Index each={props.items}> {(item, index) => { const active = createMemo(() => item().count > 0) const hasPrev = createMemo(() => { for (let i = index - 1; i >= 0; i--) { if (props.items[i].count > 0) return true } return false }) return ( <> <span data-slot="tool-count-summary-prefix" data-active={active() && hasPrev() ? "true" : "false"}> , </span> <span data-slot="tool-count-summary-item" data-active={active() ? "true" : "false"}> <span data-slot="tool-count-summary-item-inner"> <AnimatedCountLabel one={item().one} other={item().other} count={Math.max(0, Math.round(item().count))} /> </span> </span> </> ) }} </Index> </span> ) }