Se corrige incidencia

fix #30
This commit is contained in:
2026-01-27 14:32:06 -06:00
parent 67f11b94f5
commit 0ab4c41f9e

View File

@@ -7,7 +7,7 @@ import {
CalendarDays, CalendarDays,
Save, Save,
} from 'lucide-react' } from 'lucide-react'
import { useState, useEffect } from 'react' import { useState, useEffect, forwardRef } from 'react'
import { Badge } from '@/components/ui/badge' import { Badge } from '@/components/ui/badge'
import { Button } from '@/components/ui/button' import { Button } from '@/components/ui/button'
@@ -145,7 +145,7 @@ function RouteComponent() {
{/* 3. Cards de Información con Context Menu */} {/* 3. Cards de Información con Context Menu */}
<div className="grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-4"> <div className="grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-4">
<DropdownMenu> <DropdownMenu>
<DropdownMenuTrigger> <DropdownMenuTrigger asChild>
<InfoCard <InfoCard
icon={<GraduationCap className="text-slate-400" />} icon={<GraduationCap className="text-slate-400" />}
label="Nivel" label="Nivel"
@@ -221,31 +221,32 @@ function RouteComponent() {
) )
} }
function InfoCard({ const InfoCard = forwardRef<
icon, HTMLDivElement,
label, {
value, icon: React.ReactNode
isEditable, label: string
}: { value: string | number | undefined
icon: React.ReactNode isEditable?: boolean
label: string } & React.HTMLAttributes<HTMLDivElement>
value: string | number | undefined >(function InfoCard(
isEditable?: boolean { icon, label, value, isEditable, className, ...props },
}) { ref,
) {
return ( return (
<div <div
ref={ref}
{...props}
className={`flex h-[72px] w-full items-center gap-4 rounded-xl border border-slate-200/60 bg-slate-50/50 p-4 shadow-sm transition-all ${ className={`flex h-[72px] w-full items-center gap-4 rounded-xl border border-slate-200/60 bg-slate-50/50 p-4 shadow-sm transition-all ${
isEditable isEditable
? 'cursor-pointer hover:border-teal-200 hover:bg-white focus:outline-none focus-visible:ring-2 focus-visible:ring-teal-500/40' ? 'cursor-pointer hover:border-teal-200 hover:bg-white focus:outline-none focus-visible:ring-2 focus-visible:ring-teal-500/40'
: '' : ''
}`} } ${className ?? ''}`}
> >
<div className="flex h-10 w-10 shrink-0 items-center justify-center rounded-lg border bg-white shadow-sm"> <div className="flex h-10 w-10 shrink-0 items-center justify-center rounded-lg border bg-white shadow-sm">
{icon} {icon}
</div> </div>
<div className="min-w-0 flex-1"> <div className="min-w-0 flex-1">
{' '}
{/* min-w-0 es vital para que el truncate funcione en flex */}
<p className="mb-0.5 truncate text-[10px] font-bold tracking-wider text-slate-400 uppercase"> <p className="mb-0.5 truncate text-[10px] font-bold tracking-wider text-slate-400 uppercase">
{label} {label}
</p> </p>
@@ -255,7 +256,7 @@ function InfoCard({
</div> </div>
</div> </div>
) )
} })
function Tab({ function Tab({
to, to,