fix(dashboard): resolve TS build errors in a11y changes

- Fix duplicate className attr in EmojiDialogs.tsx
- Replace animated.div with animated('div') in expression-reviewer and zoomable-chart to fix React 19 children type error
- Fix malformed i18n JSON (a11y namespace was outside root object)
This commit is contained in:
DrSmoothl
2026-03-05 22:10:32 +08:00
parent e3cfca17a6
commit 8f41e25696
7 changed files with 12 additions and 10 deletions

View File

@@ -9,6 +9,8 @@
*/ */
import { animated, useSpring } from '@react-spring/web' import { animated, useSpring } from '@react-spring/web'
const AnimatedDiv = animated('div')
import { useCallback, useEffect, useRef, useState } from 'react' import { useCallback, useEffect, useRef, useState } from 'react'
import { import {
Dialog, Dialog,
@@ -1443,7 +1445,6 @@ export function ExpressionReviewer({ open, onOpenChange }: ExpressionReviewerPro
aria-label="待审核的表达方式" aria-label="待审核的表达方式"
aria-activedescendant={quickExpressions[quickCurrentIndex] ? `quick-expr-${quickExpressions[quickCurrentIndex].id}` : undefined} aria-activedescendant={quickExpressions[quickCurrentIndex] ? `quick-expr-${quickExpressions[quickCurrentIndex].id}` : undefined}
> >
<div className="relative w-full max-w-md h-[400px] flex items-center justify-center">
{quickExpressions {quickExpressions
.slice(quickCurrentIndex, quickCurrentIndex + 5) .slice(quickCurrentIndex, quickCurrentIndex + 5)
.reverse() .reverse()
@@ -1504,7 +1505,7 @@ if (isCurrent) {
} }
return isCurrent ? ( return isCurrent ? (
<animated.div <AnimatedDiv
key={expr.id} key={expr.id}
ref={cardRef} ref={cardRef}
role="option" role="option"
@@ -1588,7 +1589,7 @@ if (isCurrent) {
</div> </div>
<span className="font-mono">{formatTime(expr.create_date)}</span> <span className="font-mono">{formatTime(expr.create_date)}</span>
</div> </div>
</animated.div> </AnimatedDiv>
) : ( ) : (
<div <div
key={expr.id} key={expr.id}

View File

@@ -18,6 +18,8 @@
import { useRef } from 'react' import { useRef } from 'react'
import { animated, useSpring } from '@react-spring/web' import { animated, useSpring } from '@react-spring/web'
const AnimatedDiv = animated('div')
import { usePinch } from '@use-gesture/react' import { usePinch } from '@use-gesture/react'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
@@ -82,9 +84,9 @@ export function ZoomableChart({
className={cn('overflow-hidden touch-none select-none', className)} className={cn('overflow-hidden touch-none select-none', className)}
style={{ touchAction: 'none' }} style={{ touchAction: 'none' }}
> >
<animated.div style={style} className="w-full h-full origin-center"> <AnimatedDiv style={style} className="w-full h-full origin-center">
{children} {children}
</animated.div> </AnimatedDiv>
</div> </div>
) )
} }

View File

@@ -473,4 +473,5 @@
"sidebarNav": "Main navigation", "sidebarNav": "Main navigation",
"closeMenu": "Close menu", "closeMenu": "Close menu",
"navigatedTo": "Navigated to {{page}}" "navigatedTo": "Navigated to {{page}}"
}
} }

View File

@@ -473,4 +473,5 @@
"sidebarNav": "メインナビゲーション", "sidebarNav": "メインナビゲーション",
"closeMenu": "メニューを閉じる", "closeMenu": "メニューを閉じる",
"navigatedTo": "{{page}} に移動しました" "navigatedTo": "{{page}} に移動しました"
}
} }

View File

@@ -473,4 +473,5 @@
"sidebarNav": "메인 내비게이션", "sidebarNav": "메인 내비게이션",
"closeMenu": "메뉴 닫기", "closeMenu": "메뉴 닫기",
"navigatedTo": "{{page}}으로 이동했습니다" "navigatedTo": "{{page}}으로 이동했습니다"
}
} }

View File

@@ -473,4 +473,5 @@
"sidebarNav": "主导航", "sidebarNav": "主导航",
"closeMenu": "关闭菜单", "closeMenu": "关闭菜单",
"navigatedTo": "已导航至 {{page}}" "navigatedTo": "已导航至 {{page}}"
}
} }

View File

@@ -781,11 +781,6 @@ export function EmojiUploadDialog({
${isSelected ? 'ring-2 ring-primary' : ''} ${isSelected ? 'ring-2 ring-primary' : ''}
${complete ? 'border-green-500 bg-green-50 dark:bg-green-950/20' : 'border-border hover:border-muted-foreground/50'} ${complete ? 'border-green-500 bg-green-50 dark:bg-green-950/20' : 'border-border hover:border-muted-foreground/50'}
`} `}
className={`
flex items-center gap-3 p-3 rounded-lg border-2 cursor-pointer transition-all
${isSelected ? 'ring-2 ring-primary' : ''}
${complete ? 'border-green-500 bg-green-50 dark:bg-green-950/20' : 'border-border hover:border-muted-foreground/50'}
`}
> >
<div className="w-12 h-12 rounded border overflow-hidden bg-muted flex-shrink-0 flex items-center justify-center"> <div className="w-12 h-12 rounded border overflow-hidden bg-muted flex-shrink-0 flex items-center justify-center">
<img <img