Vibe Coding Wallpaper
开始体验
全部场景
编辑器流

午夜重构

northstar-dashboard / feat/presence-stack
PROMPT · 0%
智能体推理
明确约束成员在线状态可以变化,但周围的顶部布局不能移动。
CODEX 重构在线成员指示器,同时避免界面布局抖动 PROMPT
PresenceStack.vueTSusePresenceChannel.tsTPresenceStack.test.ts+Ln 24, Col 18•••
1<script setup lang="ts">
2import { computed, onBeforeUnmount } from 'vue'
3import { usePresenceChannel } from '@/composables/usePresenceChannel'
4import type { WorkspaceMember } from '@/types/workspace'
5
6const props = defineProps<{
7 workspaceId: string
8 members: WorkspaceMember[]
9 maxVisible?: number
10}>()
11
12const emit = defineEmits<{
13 select: [member: WorkspaceMember]
14}>()
15
16const maxVisible = computed(() => props.maxVisible ?? 4)
17const { onlineIds, disconnect } = usePresenceChannel(props.workspaceId)
18
19const onlineMembers = computed(() =>
20 props.members
21 .filter((member) => onlineIds.value.has(member.id))
22 .sort((a, b) => a.name.localeCompare(b.name))
23)
24
25+const visibleMembers = computed(() =>
26+ onlineMembers.value.slice(0, maxVisible.value)
27+)
28
29+const overflowCount = computed(() =>
30+ Math.max(0, onlineMembers.value.length - visibleMembers.value.length)
31+)
32
33onBeforeUnmount(disconnect)
34</script>
35
36<template>
37 <TransitionGroup name="presence" tag="div" class="presence-stack">
38+ <button v-for="member in visibleMembers" :key="member.id"
39+ class="avatar" @click="emit('select', member)">
40+ <img :src="member.avatarUrl" :alt="member.name">
41+ <span class="online-dot" />
42+ </button>
43+ <span v-if="overflowCount" class="overflow">+{{ overflowCount }}</span>
44 </TransitionGroup>
45</template>
TERMINALvitest · northstar×

pnpm vitest PresenceStack.test.ts --run

RUNS  tests/components/PresenceStack.test.ts

TS2322
TypeScript

Type 'undefined' is not assignable to type 'WorkspaceMember'

Quick Fix…
Presence stack refactored with stable keyed transitions3 files changed · +42 −11
Hot update appliedPresenceStack.vue · 34ms
⑂ feat/presence-stack*0 errors✓ component tests: 18 passed✓ typecheck: 0 errors✓ layout shift: 0.00 CLS
关于此场景

午夜重构

带有微光语法、从容输入与测试通过反馈的沉浸式编辑器场景。

适合深度工作、直播背景,也适合静静看着软件逐步成形。

VS Code 灵感TypeScript专注