PageSourceSearch

https://www.fube.es/_next/static/chunks/442vz0xjg3swa.js

js fube.es collected 2026-10-02 16:08:04 UTC 36,571 bytes, 6 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,717415,e=>{"use strict";let t;var a=e.i(843476),r=e.i(271645),n=e.i(673512),s=e.i(851020),i=e.i(784079),o=e.i(718527),l=e.i(113606),u=e.i(6159),c=e.i(650561),d=e.i(670102),m=e.i(975184),f=e.i(632137),p=e.i(552347),g=e.i(688330);function h(e,t){return{events:e,users:t,hasEnoughForTrend:e>=100&&t>=10}}function b(e){return`${(0,l.formatNumber)(e.events)} eventos de IA y ${(0,l.formatNumber)(e.users)} ${1===e.users?"usuario":"usuarios"} que han pulsado un bot\xf3n de IA en este rango — no da para leer una tendencia. El suelo que se ha puesto son 100 eventos y 10 usuarios distintos: por debajo, la tarde de una sola persona mueve cualquier serie m\xe1s que un cambio real de adopci\xf3n, as\xed que aqu\xed no se dibujan tendencias ni se compara con el periodo anterior. Los recuentos s\xed son firmes: son lo que hay, no una conclusi\xf3n.`}let x=[{button:s.AiButton.OPEN_AGENT,feature:s.Feature.AI_AGENT_OPENED},{button:s.AiButton.SUGGEST_REPLY,feature:s.Feature.AI_REPLY_SUGGESTED},{button:s.AiButton.DIGITIZE_EXPENSE,feature:s.Feature.AI_EXPENSE_DIGITIZED},{button:s.AiButton.SUMMARIZE,feature:s.Feature.AI_SUMMARY_GENERATED},{button:s.AiButton.CHAT_MENTION,feature:null},{button:s.AiButton.CHAT_MODEL_SELECT,feature:null}],v=(t=new Set(x.map(e=>e.feature).filter(e=>null!==e)),Object.values(s.Feature).filter(e=>e.startsWith("ai-")&&!t.has(e))),y=["tp-1","tp-2","tp-3","tp-4","tp-5","tp-6"];function j(e){return e.reduce((e,t)=>e+Number(t.value??0),0)}function N(e){return e.reduce((e,t)=>(t.groupValue??"").startsWith("ai-")?e+Number(t.value??0):e,0)}function D(e){let t=new Map;for(let a of e){let e=a.groupValue??"";""!==e&&t.set(e,(t.get(e)??0)+Number(a.value??0))}return t}function S(e,t){return 0===t?null:(e-t)/t*100}let O=({rows:e,orphanFeatures:t,clicksByButton:r,attemptsByFeature:n,failuresByFeature:s,isLoading:i,isError:o})=>i?(0,a.jsx)("div",{className:"space-y-2",children:y.map(e=>(0,a.jsx)(d.Skeleton,{className:"h-9 w-full"},e))}):o?(0,a.jsx)("p",{className:"text-destructive text-sm",children:"No se pudo cruzar el recorrido de los touchpoints. No es que no haya uso: es que no se sabe."}):(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-sm font-medium",children:"Recorrido por touchpoint"}),(0,a.jsxs)("p",{className:"text-muted-foreground text-sm",children:["Cada botón IA junto a la feature que emite cuando la acción termina. La conversión sólo se calcula a partir de"," ",20," clics: por debajo, un clic mueve el porcentaje"," ",(0,l.formatNumber)(5)," puntos y deja de ser una tasa."]})]}),(0,a.jsx)("div",{className:"overflow-x-auto",children:(0,a.jsxs)(m.Table,{children:[(0,a.jsx)(m.TableHeader,{children:(0,a.jsxs)(m.TableRow,{children:[(0,a.jsx)(m.TableHead,{children:"Botón"}),(0,a.jsx)(m.TableHead,{children:"Acción que termina"}),(0,a.jsx)(m.TableHead,{className:"text-right",children:"Clics"}),(0,a.jsx)(m.TableHead,{className:"text-right",children:"Completadas"}),(0,a.jsx)(m.TableHead,{className:"text-right",children:"Fallidas"}),(0,a.jsx)(m.TableHead,{className:"text-right",children:"Conversión"})]})}),(0,a.jsx)(m.TableBody,{children:e.map(e=>{let t=r.get(e.button)??0,i=e.feature?n.get(e.feature)??0:0,o=e.feature?s.get(e.feature)??0:0,u=Math.max(0,i-o),c=null!==e.feature&&t>=20,d=c?(0,l.formatPercentage)(u/t,{maximumFractionDigits:1}):null,p=c&&u>t;return(0,a.jsxs)(m.TableRow,{children:[(0,a.jsxs)(m.TableCell,{className:"font-medium",title:e.button,children:[(0,g.labelForSlug)(e.button),!e.declared&&(0,a.jsx)("span",{className:"text-muted-foreground/70 ml-2 text-xs font-normal",children:"fuera del catálogo declarado"})]}),(0,a.jsx)(m.TableCell,{className:"text-muted-foreground text-sm",title:e.feature??void 0,children:e.feature?(0,g.labelForSlug)(e.feature):(0,a.jsx)("span",{className:"text-muted-foreground/70",children:"no emite ninguna"})}),(0,a.jsx)(m.TableCell,{className:"text-right slashed-zero tabular-nums",children:(0,l.formatNumber)(t)}),(0,a.jsx)(m.TableCell,{className:"text-right slashed-zero tabular-nums",children:e.feature?(0,l.formatNumber)(u):(0,a.jsx)("span",{className:"text-muted-foreground
1/70",title:"Este botón no emite ninguna feature al completarse: no hay nada que cruzar.",children:"n/d"})}),(0,a.jsx)(m.TableCell,{className:"text-right slashed-zero tabular-nums",children:e.feature?o>0?(0,a.jsx)("span",{className:"text-destructive",children:(0,l.formatNumber)(o)}):(0,l.formatNumber)(0):(0,a.jsx)("span",{className:"text-muted-foreground/70",children:"n/d"})}),(0,a.jsx)(m.TableCell,{className:"text-right slashed-zero tabular-nums",children:null!==d?(0,a.jsx)("span",{className:(0,f.cn)(p&&"text-warning"),title:p?"Hay más acciones completadas que clics: la feature se dispara también por otra vía (atajo, enlace directo, otra superficie).":void 0,children:d}):(0,a.jsx)("span",{className:"text-muted-foreground/70",title:e.feature?`Hacen falta 20 clics para que la conversi\xf3n signifique algo; aqu\xed hay ${t}.`:"Sin feature emparejada no hay conversión que calcular.",children:"—"})})]},e.button)})})]})}),t.length>0&&(0,a.jsxs)("p",{className:"text-muted-foreground/80 text-xs",children:["Fuera de la tabla porque ningún botón las origina:"," ",t.map(e=>`${(0,g.labelForSlug)(e.slug)} (${(0,l.formatNumber)(Math.max(0,e.attempts-e.failures))})`).join(", "),". Se cuentan en «Acciones IA completadas» de arriba."]}),(0,a.jsx)("p",{className:"text-muted-foreground/80 text-xs",children:"Una acción cuenta como completada salvo que su evento traiga `success:false`. Es a propósito: `logFeatureUsage()` no escribe `success` por defecto, así que filtrar por `success:true` —lo que hacía esta pantalla— dejaba fuera todas las aperturas del agente, que nunca lo escriben."})]});e.s(["AiUsageKpis",0,({dashboard:e})=>{let{from:t,to:s,previousFrom:d,previousTo:m,includeInternal:g,queryParams:y,previousQueryParams:C}=e,A=(0,i.useCustomQuery)({queryKey:["ai-usage","clicks","current",t,s,g],queryFn:()=>(0,o.getUserActionTimeseries)({params:{...y,category:"ai",action:"ai_button_click",metric:"events",bucket:"day"}}),placeholderData:e=>e}),w=(0,i.useCustomQuery)({queryKey:["ai-usage","features","current",t,s,g],queryFn:()=>(0,o.getUserActionTimeseries)({params:{...y,category:"feature",action:"feature_used",metric:"events",groupBy:"feature"}}),placeholderData:e=>e}),T=(0,i.useCustomQuery)({queryKey:["ai-usage","features-failed","current",t,s,g],queryFn:()=>(0,o.getUserActionTimeseries)({params:{...y,category:"feature",action:"feature_used",metric:"events",groupBy:"feature",metaFilter:"success:false"}}),placeholderData:e=>e}),I=(0,i.useCustomQuery)({queryKey:["ai-usage","totals","current",t,s,g],queryFn:()=>(0,o.getUserActionTotals)({params:y}),placeholderData:e=>e}),F=(0,i.useCustomQuery)({queryKey:["ai-usage","buttons","current",t,s,g],queryFn:()=>(0,o.getUserActionTop)({params:{...y,category:"ai",action:"ai_button_click",metadataKey:"button_type",limit:String(100)}}),placeholderData:e=>e}),E=A.isLoading||w.isLoading||T.isLoading||I.isLoading||F.isLoading,k=A.isError||w.isError||T.isError||I.isError||F.isError,M=A.isPlaceholderData||w.isPlaceholderData||T.isPlaceholderData||I.isPlaceholderData||F.isPlaceholderData,q=A.data?.rows??[],P=w.data?.rows??[],U=T.data?.rows??[],_=F.data?.rows??[],$=j(q),z=N(P),R=N(U),L=Math.max(0,z-R),B=I.data?.rows?.[0]??{},V=Number(B.aiUsers??0),H=Number(B.uniqueUsers??0),Q=r.useMemo(()=>h($+z,V),[$,z,V]),G=!E&&!k&&Q.hasEnoughForTrend,K=(0,i.useCustomQuery)({queryKey:["ai-usage","clicks","previous",d,m,g],queryFn:()=>(0,o.getUserActionTimeseries)({params:{...C,category:"ai",action:"ai_button_click",metric:"events",bucket:"day"}}),enabled:G,placeholderData:e=>e}),J=(0,i.useCustomQuery)({queryKey:["ai-usage","features","previous",d,m,g],queryFn:()=>(0,o.getUserActionTimeseries)({params:{...C,category:"feature",action:"feature_used",metric:"events",groupBy:"feature"}}),enabled:G,placeholderData:e=>e}),W=(0,i.useCustomQuery)({queryKey:["ai-usage","features-failed","previous",d,m,g],queryFn:()=>(0,o.getUserActionTimeseries)({params:{...C,category:"feature",action:"feature_used",metric:"events",groupBy:"feature",metaFilter:"success:false"}}),enabled:G,placeholderData:e=>e}),Y=(0,i.useCustomQuery)({queryKey:["ai-usage","totals","previous",d,m,g],queryFn:()=>(0,o.getUserActionTotals)({params:C}),enabled:G,placeholderData:e=>e}),Z=j(K.data?.rows??[]),X=Math.max(0,N(J.data?.rows??[])-N(W.data?.rows??[])),ee=Number((Y.data?.rows?.[0]??{}).aiUsers??0),et=r.useMemo(()=>(function(e){let t=new Map;for(let a of e){let e=a.value??"";""!==e&&t.set(e,(t.get(e)??0)+Number(a.count??0))}return t})(_),[_]),ea=r.useMemo(()=>D(P),[P]),er=r.useMemo(()=>D(U),[U]),en=r.useMemo(()=>[...et.keys()].filter(e=>!x.some(t=>t.button===e)),[et]),es=r.useMemo(()=>[...x.map(e=>({button:e.button,feature:e.feature,declared:!0})),...en.map(e=>({button:e,feature:null,declared:!1}))],[en]),ei=r.useMemo(()=>v.map(e=>({slug:e,attempts:ea.get(e)??0,failures:er.get(e)??0}
1)),[ea,er]),eo=es.filter(e=>(et.get(e.button)??0)>0).length,el=_.length>=100,eu=e=>E?(0,a.jsx)("span",{className:"bg-muted inline-block h-7 w-20 animate-pulse rounded-md align-middle"}):e;return(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[k&&(0,a.jsx)(u.Callout,{variant:"error",icon:n.TriangleAlertIcon,title:"No se pudo leer la actividad de IA",children:"Alguna de las consultas de esta pantalla ha fallado. Los números de abajo están incompletos: no es que no haya uso de IA, es que no se sabe cuánto."}),!E&&!k&&!Q.hasEnoughForTrend&&(0,a.jsx)(u.Callout,{variant:"warning",icon:n.TriangleAlertIcon,title:"No hay volumen para concluir nada",children:b(Q)}),(0,a.jsxs)(c.Card,{className:(0,f.cn)(M&&"opacity-60"),children:[(0,a.jsxs)(c.CardHeader,{children:[(0,a.jsx)(c.CardTitle,{children:"Uso de IA en el rango"}),(0,a.jsx)(c.CardDescription,{children:"El clic en un botón y la acción que termina son eventos distintos y de categorías distintas (`ai` y `feature`), así que se cuentan por separado y sólo se cruzan touchpoint a touchpoint, en la tabla de abajo."})]}),(0,a.jsxs)(c.CardContent,{className:"flex flex-col gap-6",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4",children:[(0,a.jsx)(p.DashboardStat,{label:"Clics en botones IA",accent:"primary",isError:A.isError,isPlaceholderData:A.isPlaceholderData,value:eu((0,l.formatNumber)($)),sub:el?`${(0,l.formatNumber)(eo)} botones con uso (lista cortada)`:`${(0,l.formatNumber)(eo)} de ${(0,l.formatNumber)(es.length)} botones con uso`,spark:G?[...q].sort((e,t)=>String(e.bucket).localeCompare(String(t.bucket))).map(e=>Number(e.value??0)):void 0,delta:G?{pct:S($,Z),hint:"vs. el periodo anterior de la misma longitud"}:void 0}),(0,a.jsx)(p.DashboardStat,{label:"Acciones IA completadas",accent:"success",isError:w.isError||T.isError,value:eu((0,l.formatNumber)(L)),sub:R>0?`${(0,l.formatNumber)(R)} intentos fallidos descontados`:"sin intentos fallidos registrados",delta:G?{pct:S(L,X),hint:"vs. el periodo anterior de la misma longitud"}:void 0}),(0,a.jsx)(p.DashboardStat,{label:"Usuarios que han pulsado IA",accent:"info",isError:I.isError,isPlaceholderData:I.isPlaceholderData,value:eu((0,l.formatNumber)(V)),sub:`de ${(0,l.formatNumber)(H)} activos en el rango`,delta:G?{pct:S(V,ee),hint:"vs. el periodo anterior de la misma longitud"}:void 0}),(0,a.jsx)(p.DashboardStat,{label:"Adopción",accent:"warning",isError:I.isError,isPlaceholderData:I.isPlaceholderData,value:eu(H>0?(0,l.formatPercentage)(V/H,{maximumFractionDigits:1}):"—"),sub:H>0?"usuarios IA sobre usuarios activos":"sin usuarios activos en el rango"})]}),(0,a.jsx)(O,{rows:es,orphanFeatures:ei,clicksByButton:et,attemptsByFeature:ea,failuresByFeature:er,isLoading:E,isError:k})]})]})]})},"describeAiVolumeShortfall",0,b,"readAiVolume",0,h])},192896,358075,688330,e=>{"use strict";var t=e.i(843476),a=e.i(714359),r=e.i(182162),n=e.i(181241),s=e.i(632137);e.s(["InternalTrafficToggle",0,({dashboard:e,className:i,...o})=>(0,t.jsxs)("div",{className:(0,s.cn)("flex flex-none items-center gap-2",i),...o,children:[(0,t.jsx)(r.Switch,{id:"observability-include-internal",checked:e.includeInternal,onCheckedChange:e.setIncludeInternal}),(0,t.jsxs)(n.Tooltip,{children:[(0,t.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(a.Label,{htmlFor:"observability-include-internal",className:"text-muted-foreground cursor-help text-xs font-normal",children:"Incluir tráfico interno"})}),(0,t.jsx)(n.TooltipContent,{className:"max-w-xs",children:"Apagado, las cifras dejan fuera lo que generamos nosotros: los correos del equipo y las conexiones desde la oficina. Encendido, cuenta todo. La lista concreta se configura en el servidor."})]})]})],192896);var i=e.i(271645),o=e.i(595727),l=e.i(401851),u=e.i(826514),c=e.i(585890),d=e.i(751371),m=e.i(438847);e.s(["formatDeltaPercentage",0,function(e,t){if(0===t&&0===e)return"—";if(0===t)return"Nuevo";let a=(e-t)/t*100,r=a>0?"+":"";return`${r}${a.toFixed(1)}%`},"formatDeltaPoints",0,function(e,t){let a=e-t;if(.05>Math.abs(a))return"—";let r=a>0?"+":"";return`${r}${a.toFixed(1)} pp`},"resolveDeltaType",0,function(e,t){if(0===t&&0===e)return"unchanged";if(0===t)return"increase";let a=(e-t)/t*100;return a>=25?"increase":a>=5?"moderateIncrease":a<=-25?"decrease":a<=-5?"moderateDecrease":"unchanged"},"useUserActionDashboard",0,function(){let[e,t]=(0,m.useQueryState)("from",m.parseAsString),[a,r]=(0,m.useQueryState)("to",m.parseAsString),[n,s]=(0,m.useQueryState)("includeInternal",m.parseAsBoolean.withDefault(!1)),f=i.useMemo(()=>{let t,r=(t=new Date,{from:(0,d.subDays)(t,7),to:t}),n=(e,t)=>{if(!e)return t;let a=(0,u.parseISO)(e);return Number.isNaN(a.getTime())?t:a};return{from:n(e,r.from),to:n(a,r.to)}},[e,a]),p=i.useCallback(e=>{e?.from&&e?.to&&(t((0,l.format)(e.from,"yyyy-MM-dd")),r((0,l.format)(e.to,"yyyy-MM-dd")))},[t,r]),g=i.useCallback(e=>{s(!!e||null)},[s]),{from:h,to:b,previousFrom:x,previousTo:v,durationMs:y}=i.useMemo(()=>{let e=f.from??(0,d.subDays)(new Date,7),t=f.to??new Date,a=(0,c.startOfDay)(e),r=(0,o.addD
1ays)((0,c.startOfDay)(t),1),n=r.getTime()-a.getTime(),s=new Date(a.getTime()-n);return{from:a.toISOString(),to:r.toISOString(),previousFrom:s.toISOString(),previousTo:a.toISOString(),durationMs:n}},[f.from,f.to]),j=i.useMemo(()=>({from:h,to:b,...n?{includeInternal:"true"}:{}}),[h,b,n]),N=i.useMemo(()=>({from:x,to:v,...n?{includeInternal:"true"}:{}}),[x,v,n]);return{range:f,setRange:p,from:h,to:b,previousFrom:x,previousTo:v,durationMs:y,includeInternal:n,setIncludeInternal:g,queryParams:j,previousQueryParams:N}}],358075);var f=e.i(851020);let p={"ai-open-agent":"Abrir agente IA","ai-suggest-reply":"Sugerir respuesta IA","ai-digitize-expense":"Digitalizar gasto","ai-chat-mention":"Mención @ en chat","ai-chat-model-select":"Cambiar modelo IA","ai-summarize":"Resumir con IA","ai-agent-opened":"Agente IA abierto","ai-reply-suggested":"Sugerencia generada","ai-expense-digitized":"Gasto digitalizado","ai-selection-action-used":"Acción de selección usada","ai-summary-generated":"Resumen generado","billing-invoice-sent-by-email":"Factura enviada por email","billing-invoice-shared-link":"Enlace de factura compartido","billing-invoice-marked-paid":"Factura marcada como pagada","billing-invoice-duplicated":"Factura duplicada","billing-invoice-converted-from-quotation":"Factura desde presupuesto","catalog-product-imported":"Productos importados","catalog-service-created":"Servicio creado","crm-client-imported":"Clientes importados","hr-clock-in":"Fichar entrada","hr-clock-out":"Fichar salida","hr-leave-requested":"Ausencia solicitada","hr-leave-approved":"Ausencia aprobada","hr-leave-rejected":"Ausencia rechazada","pm-project-task-completed":"Tarea completada","subscription-upgrade-initiated":"Upgrade de plan iniciado","subscription-downgrade-initiated":"Downgrade de plan iniciado","subscription-addon-purchased":"Add-on contratado","subscription-addon-cancelled":"Add-on cancelado","auth-logged-in":"Inicio de sesión","auth-account-activated":"Cuenta activada","auth-2fa-enabled":"2FA activado","auth-2fa-disabled":"2FA desactivado","onboarding-step-completed":"Paso de onboarding completado","onboarding-tour-finished":"Tour finalizado","integration-connected":"Integración conectada","integration-disconnected":"Integración desconectada","notification-clicked":"Notificación abierta","notification-marked-read":"Notificación marcada como leída",invoice:"Factura",order_invoice:"Factura de pedido",simplified_invoice:"Factura simplificada",invoice_rectification:"Factura rectificativa",simplified_invoice_rectification:"Rectificativa simplificada",quotation:"Presupuesto",proforma:"Proforma",delivery_note:"Albarán",expense:"Gasto",payment:"Cobro / Pago",sepa_batch:"Remesa SEPA",client:"Cliente",contact:"Contacto",lead:"Lead",sales_contact:"Contacto comercial",product:"Producto",service:"Servicio",discount:"Descuento",tag:"Etiqueta",series:"Serie",supplier:"Proveedor",employee:"Empleado",work_center:"Centro de trabajo",department:"Departamento",time_entry:"Fichaje",leave_request:"Solicitud de ausencia",shift_template:"Plantilla de turno",project:"Proyecto",project_task:"Tarea de proyecto",support_ticket:"Ticket de soporte",support_note:"Nota de soporte",support_macro:"Macro de soporte",support_agent:"Agente de soporte",pdf:"PDF",excel:"Excel",csv:"CSV",xml:"XML",facturae:"Facturae",json:"JSON","auth-sign-in":"Inicio de sesión","auth-register":"Registro","auth-verify-email":"Verificación de email","auth-reset-password":"Recuperar contraseña","auth-password-update":"Cambio de contraseña","auth-2fa-setup":"Configuración 2FA","checkout-begin":"Checkout iniciado","checkout-payment-info":"Datos de pago","checkout-confirmation":"Confirmación de compra","enterprise-setup":"Configuración de empresa","payment-gateway-connect":"Conexión de pasarela de pago","verifactu-setup":"Configuración Veri*factu","sales-contact":"Contacto comercial","feedback-submit":"Envío de feedback","date-range":"Rango de fechas",status:"Estado",category:"Categoría","payment-method":"Método de pago","paid-state":"Estado de pago","amount-range":"Rango de importe","work-center":"Centro de trabajo"},g=["billing-","crm-","catalog-","hr-","pm-","subscription-","ai-","auth-","onboarding-","integration-","
1notification-","checkout-","verifactu-","enterprise-"],h=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function b(e){var t;let a;if(p[e])return p[e];let r=e;for(let e of g)if(r.startsWith(e)&&r.length>e.length){r=r.slice(e.length);break}return(a=(t=r).replace(/[-_]+/g," ").trim())?a.charAt(0).toUpperCase()+a.slice(1):t}let x=(()=>{let e={};for(let t of[...Object.values(f.AiButton),...Object.values(f.Feature),...Object.values(f.DocumentType),...Object.values(f.ExportFormat),...Object.values(f.FormName),...Object.values(f.FilterName)])e[t]=b(t);for(let[t,a]of Object.entries(p))e[t]=a;return e})();e.s(["labelForSlug",0,function(e){if(!e)return"(sin valor)";try{if(e.startsWith("/")){let t;return t=(e.split(/[?#]/,1)[0]??e).split("/").map(e=>e.trim()).filter(Boolean).filter((e,t)=>0!==t||"app"!==e).filter(e=>!(h.test(e)||/^\d+$/.test(e)||e.length>=12&&/^[0-9a-z]+$/i.test(e)&&!/-/.test(e))),0===t.length?"Inicio":t.slice(-2).map(e=>b(e)).join(" · ")}let t=x[e]??p[e];if(t)return t;return b(e)}catch{return e}}],688330)},552347,e=>{"use strict";var t=e.i(843476),a=e.i(650561),r=e.i(632137),n=e.i(271645);let s=({data:e,className:a,...s})=>{let i=n.useId();if(e.length<2)return null;let o=Math.max(...e),l=Math.min(...e),u=o-l||1,c=o===l?0===o?31:17:null,d=e.map((t,a)=>({x:3+194*a/(e.length-1),y:c??31-(t-l)/u*28})),m=d[0]??{x:3,y:31},f=d[d.length-1]??m,p=d.map(e=>`${e.x.toFixed(1)},${e.y.toFixed(1)}`).join(" "),g=`M${m.x.toFixed(1)},31 L${p.split(" ").join(" L")} L${f.x.toFixed(1)},31 Z`;return(0,t.jsxs)("svg",{viewBox:"0 0 200 34",preserveAspectRatio:"none","aria-hidden":"true",className:(0,r.cn)("h-8 w-full",a),...s,children:[(0,t.jsx)("defs",{children:(0,t.jsxs)("linearGradient",{id:i,x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,t.jsx)("stop",{offset:"0",stopColor:"currentColor",stopOpacity:"0.18"}),(0,t.jsx)("stop",{offset:"1",stopColor:"currentColor",stopOpacity:"0"})]})}),(0,t.jsx)("path",{d:g,fill:`url(#${i})`}),(0,t.jsx)("polyline",{points:p,fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",vectorEffect:"non-scaling-stroke"}),(0,t.jsx)("path",{d:`M${f.x.toFixed(1)},${f.y.toFixed(1)} l0,0`,stroke:"currentColor",strokeWidth:"5.5",strokeLinecap:"round",vectorEffect:"non-scaling-stroke"})]})},i={primary:"bg-primary",success:"bg-success",warning:"bg-warning",danger:"bg-destructive",info:"bg-info"},o={primary:"text-primary",success:"text-success",warning:"text-warning",danger:"text-destructive",info:"text-info"},l=new Intl.NumberFormat("es-ES",{maximumFractionDigits:1}),u=({pct:e,goodWhenDown:a,hint:n})=>{if(null==e||!Number.isFinite(e))return null;let s=e>=0;return(0,t.jsxs)("span",{title:n,className:(0,r.cn)("inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 font-mono text-[0.72rem] font-semibold tabular-nums",(a?!s:s)?"bg-success-subtle text-success":"bg-destructive-subtle text-destructive"),children:[(0,t.jsx)("span",{"aria-hidden":"true",className:"text-[0.8em]",children:s?"▲":"▼"}),l.format(Math.abs(e)),"%"]})};e.s(["DashboardStat",0,({label:e,value:n,accent:l="primary",delta:c,spark:d,sub:m,footer:f,isError:p,isPlaceholderData:g,className:h,...b})=>(0,t.jsx)(a.Card,{className:(0,r.cn)("relative gap-0 py-5",g&&"opacity-60",h),...b,children:(0,t.jsxs)("div",{className:"flex flex-1 flex-col px-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:(0,r.cn)("size-2 shrink-0 rounded-[3px]",i[l])}),(0,t.jsx)("span",{className:"text-muted-foreground truncate font-mono text-[0.68rem] font-medium tracking-[0.08em] uppercase",children:e})]}),p?(0,t.jsx)("p",{className:"text-muted-foreground mt-3 text-sm",children:"No se pudieron cargar los datos."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{className:"mt-2.5 font-mono text-3xl font-semibold tracking-tight slashed-zero tabular-nums",children:n}),(0,t.jsxs)("div",{className:"mt-2 flex min-h-[1.4rem] items-center justify-between gap-2",children:[c&&null!=c.pct&&Number.isFinite(c.pct)?(0,t.jsx)(u,{...c}):(0,t.jsx)("span",{}
1),m&&(0,t.jsx)("span",{className:"text-muted-foreground/80 text-xs",children:m})]}),d&&d.length>0&&(0,t.jsx)(s,{data:d,className:(0,r.cn)("mt-3",o[l])}),f&&(0,t.jsx)("div",{className:"mt-3",children:f})]})]})}),"DeltaChip",0,u],552347)},826514,e=>{"use strict";var t=e.i(234662),a=e.i(677241),r=e.i(281092);let n=/[T ]/,s=/[Z ]/i,i=/([Z+-].*)$/,o=/^-?(?:(\d{3})|(\d{2})(?:-?(\d{2}))?|W(\d{2})(?:-?(\d{1}))?|)$/,l=/^(\d{2}(?:[.,]\d*)?)(?::?(\d{2}(?:[.,]\d*)?))?(?::?(\d{2}(?:[.,]\d*)?))?$/,u=/^([+-])(\d{2})(?::?(\d{2}))?$/;function c(e){return e?parseInt(e):1}function d(e){return e&&parseFloat(e.replace(",","."))||0}let m=[31,null,31,30,31,30,31,31,30,31,30,31];function f(e){return e%400==0||e%4==0&&e%100!=0}e.s(["parseISO",0,function(e,p){let g,h,b=()=>(0,a.constructFrom)(p?.in,NaN),x=p?.additionalDigits??2,v=function(e){let t,a={},r=e.split(n);if(r.length>2)return a;if(/:/.test(r[0])?t=r[0]:(a.date=r[0],t=r[1],s.test(a.date)&&(a.date=e.split(s)[0],t=e.substr(a.date.length,e.length))),t){let e=i.exec(t);e?(a.time=t.replace(e[1],""),a.timezone=e[1]):a.time=t}return a}(e);if(v.date){let e=function(e,t){let a=RegExp("^(?:(\\d{4}|[+-]\\d{"+(4+t)+"})|(\\d{2}|[+-]\\d{"+(2+t)+"})$)"),r=e.match(a);if(!r)return{year:NaN,restDateString:""};let n=r[1]?parseInt(r[1]):null,s=r[2]?parseInt(r[2]):null;return{year:null===s?n:100*s,restDateString:e.slice((r[1]||r[2]).length)}}(v.date,x);g=function(e,t){var a,r,n,s,i,l,u,d,p,g;if(null===t)return new Date(NaN);let h=e.match(o);if(!h)return new Date(NaN);let b=!!h[4],x=c(h[1]),v=c(h[2])-1,y=c(h[3]),j=c(h[4]),N=c(h[5])-1;if(b){let e,o;return(a=j,r=N,a>=1&&a<=53&&r>=0&&r<=6)?(n=t,s=j,i=N,(e=new Date(0)).setUTCFullYear(n,0,4),o=e.getUTCDay()||7,e.setUTCDate(e.getUTCDate()+((s-1)*7+i+1-o)),e):new Date(NaN)}{let e=new Date(0);return(l=t,u=v,d=y,u>=0&&u<=11&&d>=1&&d<=(m[u]||(f(l)?29:28))&&(p=t,(g=x)>=1&&g<=(f(p)?366:365)))?(e.setUTCFullYear(t,v,Math.max(x,y)),e):new Date(NaN)}}(e.restDateString,e.year)}if(!g||isNaN(+g))return b();let y=+g,j=0;if(v.time&&isNaN(j=function(e){var a,r,n;let s=e.match(l);if(!s)return NaN;let i=d(s[1]),o=d(s[2]),u=d(s[3]);return(a=i,r=o,n=u,24===a?0===r&&0===n:n>=0&&n<60&&r>=0&&r<60&&a>=0&&a<25)?i*t.millisecondsInHour+o*t.millisecondsInMinute+1e3*u:NaN}(v.time)))return b();if(v.timezone){if(isNaN(h=function(e){var a;if("Z"===e)return 0;let r=e.match(u);if(!r)return 0;let n="+"===r[1]?-1:1,s=parseInt(r[2]),i=r[3]&&parseInt(r[3])||0;return(a=i)>=0&&a<=59?n*(s*t.millisecondsInHour+i*t.millisecondsInMinute):NaN}(v.timezone)))return b()}else{let e=new Date(y+j),t=(0,r.toDate)(0,p?.in);return t.setFullYear(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()),t.setHours(e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()),t}return(0,r.toDate)(y+j+h,p?.in)}])},751371,e=>{"use strict";var t=e.i(595727);e.s(["subDays",0,function(e,a,r){return(0,t.addDays)(e,-a,r)}])},619578,e=>{"use strict";var t=e.i(688594);e.s(["subMonths",0,function(e,a,r){return(0,t.addMonths)(e,-a,r)}])},254378,e=>{"use strict";var t=e.i(367118);e.s(["LineChartIcon",()=>t.default])},438847,e=>{"use strict";var t=e.i(59019),a=e.i(594693),r=e.i(795327),n=e.i(271645);function s(e,t){return Object.hasOwn(e,t)?e[t]:void 0}function i(e,t,r){try{return e(t)}catch(e){return r?(0,a.i)(25,t,e,r):(0,a.i)(24,t,e),null}}function o(e){function t(t){if(void 0===t)return null;let a="";if(Array.isArray(t)){if(void 0===t[0])return null;a=t[0]}return"string"==typeof t&&(a=t),i(e.parse,a)}return{type:"single",eq:(e,t)=>e===t,...e,parseServerSide:t,withDefault(e){return{...this,defaultValue:e,parseServerSide:a=>t(a)??e}},withOptions(e){return{...this,...e}}}}let l=o({parse:e=>e,serialize:String});o({parse:e=>{let t=parseInt(e);return t==t?t:null},serialize:e=>""+Math.round(e)}),o({parse:e=>{let t=parseInt(e);return t==t?t-1:null},serialize:e=>""+Math.round(e+1)}),o({parse:e=>{let t=parseInt(e,16);return t==t?t:null},serialize:e=>{let t=Math.round(e).toString(16);return t<"0"||!(1&t.length)?t:"0"+t}}),o({parse:e=>{let t=parseFloat(e);return t==t?t:null},serialize:String});let u=o({parse:e=>"true"===e.toLowerCase(),serialize:String});function c(e,t){return e.valueOf()===t.valueOf()}o({parse:e=>{let t=new Date(parseInt(e));return t.valueOf()==t.valueOf()?t:null}
1,serialize:e=>""+e.valueOf(),eq:c}),o({parse:e=>{let t=new Date(e);return t.valueOf()==t.valueOf()?t:null},serialize:e=>e.toISOString(),eq:c}),o({parse:e=>{let t=new Date(e.slice(0,10));return t.valueOf()==t.valueOf()?t:null},serialize:e=>e.toISOString().slice(0,10),eq:c});let d=(0,r.o)("sync-emitter",()=>(0,t.i)()),m={},f=(e,t)=>"defaultValue"===e?void 0:t;function p(e,i={}){let o=(0,n.useId)(),l=(0,r.i)(),u=(0,r.a)(),{history:c=l?.history??"replace",scroll:b=l?.scroll??!1,shallow:x=l?.shallow??!0,throttleMs:v=t.l.timeMs,limitUrlUpdates:y=l?.limitUrlUpdates,clearOnDefault:j=l?.clearOnDefault??!0,startTransition:N,urlKeys:D=m}=i,S=Object.keys(e).join(","),O=(0,n.useRef)(e),C=O.current,A=JSON.stringify(Object.entries(C),f)===JSON.stringify(Object.entries(e),f)&&Object.entries(e).every(([e,t])=>{if(C[e]?.startTransition!==t.startTransition)return!1;let a=C[e]?.defaultValue,r=t.defaultValue;return!!Object.is(a,r)||void 0!==a&&void 0!==r&&t.eq?.(a,r)===!0})?C:e;O.current=A;let w=(0,n.useMemo)(()=>Object.fromEntries(Object.keys(e).map(e=>[e,s(D,e)??e])),[S,JSON.stringify(D)]),T=(0,r.r)(Object.values(w)),I=T.searchParams,F=(0,n.useRef)({}),E=(0,n.useRef)(null),k=(0,n.useRef)(null),M=(0,t.n)(Object.values(w)),[q,P]=(0,n.useState)(()=>g(e,w,I,M).state),U=(0,n.useRef)(q),_=JSON.stringify([Object.values(w).map(e=>[e,I.getAll(e)]),M]),$=()=>{let{state:t,hasChanged:r}=g(e,w,I,M,F.current,U.current);return r&&((0,a.t)(1,o,S,t),U.current=t,P(t)),r},z=Object.keys(F.current).join("&")!==Object.values(w).join("&"),R=null===k.current||k.current===(T.pathname??location.pathname),L=!1;(z||R&&E.current!==_)&&(E.current=_,L=$(),z&&(F.current=Object.fromEntries(Object.entries(w).map(([t,a])=>[a,e[t]?.type==="multi"?I.getAll(a):I.get(a)??null])))),z||L||!R||q===U.current||P(U.current),(0,n.useEffect)(()=>{k.current=T.pathname??location.pathname,$()},[_,T.pathname]),(0,n.useEffect)(()=>{let t=Object.keys(e).reduce((t,r)=>(t[r]=({state:t,query:n})=>{P(s=>{let i=w[r];return Object.is(s[r]??null,t)?((0,a.t)(2,o,S,i,t,e[r]?.defaultValue,U.current),s):(U.current={...U.current,[r]:t},F.current[i]=n,(0,a.t)(3,o,S,i,t,e[r]?.defaultValue,U.current),U.current)})},t),{});for(let r of Object.keys(e)){let e=w[r];(0,a.t)(4,o,e,S),d.on(e,t[r])}return()=>{for(let r of Object.keys(e)){let e=w[r];(0,a.t)(5,o,e,S),d.off(e,t[r])}}},[S,w]);let B=(0,n.useCallback)((e,r={})=>{let n,i=Object.fromEntries(Object.keys(A).map(e=>[e,null])),l="function"==typeof e?e(h(U.current,A))??i:e??i;(0,a.t)(6,o,S,l);let m=0,f=!1,p=[];for(let[e,a]of Object.entries(l)){let i=s(A,e),o=w[e];if(!i||void 0===o||void 0===a)continue;(r.clearOnDefault??i.clearOnDefault??j)&&null!==a&&void 0!==i.defaultValue&&(i.eq??((e,t)=>e===t))(a,i.defaultValue)&&(a=null);let l=null===a?null:(i.serialize??String)(a);d.emit(o,{state:a,query:l});let g={key:o,query:l,options:{history:r.history??i.history??c,shallow:r.shallow??i.shallow??x,scroll:r.scroll??i.scroll??b,startTransition:r.startTransition??i.startTransition??N}},h=r.limitUrlUpdates??i.limitUrlUpdates??y;if(h?.method==="debounce"){let e=h.timeMs??t.l.timeMs,a=t.t.push(g,e,T,u);m<e&&(n=a,m=e)}else{let e=h?.timeMs??r.throttleMs??i.throttleMs??v;p.push(t.t.abort(o)),t.r.push(g,e),f=!0}}let g=p.reduce((e,t)=>t(e),f?t.r.flush(T,u):t.r.getPendingPromise(T));return n??g},[S,c,x,b,v,y?.method,y?.timeMs,N,j,A,w,T.updateUrl,T.getSearchParamsSnapshot,T.rateLimitFactor,u]);return[(0,n.useMemo)(()=>h(q,A),[q,A]),B]}function g(e,a,r,n,o,l){let u=!1,c=Object.entries(e).reduce((e,[c,d])=>{var m;let f=a[c],p=s(n,f),g="multi"===d.type?[]:null,h=void 0===p?("multi"===d.type?r.getAll(f):r.get(f))??g:p,b=l&&s(l,c);return o&&void 0!==b&&((m=s(o,f)??g)===h||null!==m&&null!==h&&"string"!=typeof m&&"string"!=typeof h&&m.length===h.length&&m.every((e,t)=>e===h[t]))?e[c]=b:(u=!0,e[c]=((0,t.o)(h)?null:i(d.parse,h,f))??null,o&&(o[f]=h)),e},{});if(!u){let t=Object.keys(e),a=Object.keys(l??{});u=t.length!==a.length||t.some(e=>!a.includes(e))}return{state:c,hasChanged:u}}function h(e,t){return Object.fromEntries(Object.keys(e).map(a=>[a,e[a]??t[a]?.defaultValue??null]))}e.s(["parseAsBoolean",0,u,"parseAsJson",0,function(e){return o({parse:t=>{try{let a=JSON.parse(t);if("~standard"in e){let t=e["~standard"].validate(a);if(t instanceof Promise)throw Error("[nuqs] Only synchronous Standard Schemas are supported in parseAsJson.");return t.issues?null:t.value}return e(a)}catch{return null}},serialize:e=>JSON.stringify(e),eq:(e,t)=>
1e===t||JSON.stringify(e)===JSON.stringify(t)})},"parseAsString",0,l,"parseAsStringEnum",0,function(e){var t;return t=e,o({parse:e=>t.includes(e)?e:null,serialize:String})},"useQueryState",0,function(e,t={}){let{parse:a,type:r,serialize:s,eq:i,defaultValue:o,...l}=t,[{[e]:u},c]=p({[e]:{parse:a??(e=>e),type:r,serialize:s,eq:i,defaultValue:o}},l);return[u,(0,n.useCallback)((t,a={})=>c(a=>({[e]:"function"==typeof t?t(a[e]):t}),a),[e,c])]},"useQueryStates",0,p],438847)},844777,e=>{"use strict";var t=e.i(843476),a=e.i(271645),r=e.i(549200),n=e.i(328549),s=e.i(145963),i=e.i(550516),o=e.i(585890),l=e.i(608199),u=e.i(614522),c=e.i(668113),d=e.i(751371),m=e.i(619578),f=e.i(564211),p=e.i(632137),g=e.i(981831),h=e.i(585081),b=e.i(340904),x=e.i(995378);let v=[{id:"today",label:"Hoy",build:()=>({from:(0,o.startOfDay)(new Date),to:(0,s.endOfDay)(new Date)})},{id:"yesterday",label:"Ayer",build:()=>{let e=(0,d.subDays)(new Date,1);return{from:(0,o.startOfDay)(e),to:(0,s.endOfDay)(e)}}},{id:"this-week",label:"Esta semana",build:()=>({from:(0,u.startOfWeek)(new Date,{weekStartsOn:1}),to:(0,s.endOfDay)(new Date)})},{id:"this-month",label:"Este mes",build:()=>({from:(0,l.startOfMonth)(new Date),to:(0,s.endOfDay)(new Date)})},{id:"last-3-months",label:"Últimos 3 meses",build:()=>({from:(0,o.startOfDay)((0,m.subMonths)(new Date,3)),to:(0,s.endOfDay)(new Date)})},{id:"this-year",label:"Año actual",build:()=>({from:(0,c.startOfYear)(new Date),to:(0,s.endOfDay)(new Date)})}],y=a.forwardRef(({className:e,onValueChange:a,date:s,...o},l)=>{let{Popover:u,PopoverContent:c,PopoverTrigger:d}=(0,x.usePopover)(),m=function(e){if(e?.from&&e?.to)return v.find(t=>{let a=t.build();return!!a.from&&!!a.to&&(0,i.isSameDay)(a.from,e.from)&&(0,i.isSameDay)(a.to,e.to)})}(s);return(0,t.jsxs)(u,{children:[(0,t.jsx)(d,{asChild:!0,children:(0,t.jsxs)(g.Button,{ref:l,id:"date",variant:"outline",className:(0,p.cn)("text-left font-normal",!s&&"text-muted-foreground",e),...o,children:[(0,t.jsx)("span",{className:"truncate",children:s?.from?s.to?m?.label??(0,t.jsxs)(t.Fragment,{children:[(0,n.formatDate)(s.from)," -"," ",(0,n.formatDate)(s.to)]}):(0,n.formatDate)(s.from):"Seleccionar rango"}),(0,t.jsx)(r.ChevronsUpDownIcon,{className:"ml-auto size-3!"})]})}),(0,t.jsxs)(c,{className:"w-auto max-w-xl p-0",align:"start",children:[(0,t.jsx)("div",{className:"pt-3 px-3",children:(0,t.jsxs)(b.Select,{value:m?.id,onValueChange:e=>{let t=v.find(t=>t.id===e);t&&a(t.build())},children:[(0,t.jsx)(b.SelectTrigger,{className:"w-full",children:(0,t.jsx)(b.SelectValue,{placeholder:"Seleccionar rango"})}),(0,t.jsx)(b.SelectContent,{position:"popper",children:v.map(e=>(0,t.jsx)(b.SelectItem,{value:e.id,children:e.label},e.id))})]})}),(0,t.jsx)(h.Calendar,{initialFocus:!0,mode:"range",defaultMonth:s?.from,selected:s,onSelect:e=>a(e),locale:f.es,numberOfMonths:2})]})]})});y.displayName="DatePickerWithRange",e.s(["DatePickerWithRange",0,y])},222669,e=>{"use strict";var t=e.i(843476),a=e.i(632137),r=e.i(271645),n=e.i(30030),s=e.i(248425),i=Object.defineProperty,o=(e,t)=>i(e,"name",{value:t,configurable:!0}),l="Progress",[u,c]=(0,n.createContextScope)(l),[d,m]=u(l),f=r.forwardRef(o(function(e,a){let{__scopeProgress:r,value:n=null,max:i,getValueLabel:o=g,...l}=e;(i||0===i)&&!x(i)&&console.error(y(`${i}`,"Progress"));let u=x(i)?i:100;null===n||v(n,u)||console.error(j(`${n}`,"Progress"));let c=v(n,u)?n:null,m=b(c)?o(c,u):void 0;return(0,t.jsx)(d,{scope:r,value:c,max:u,children:(0,t.jsx)(s.Primitive.div,{"aria-valuemax":u,"aria-valuemin":0,"aria-valuenow":b(c)?c:void 0,"aria-valuetext":m,role:"progressbar","data-state":h(c,u),"data-value":c??void 0,"data-max":u,...l,ref:a})})},"Progress")),p=r.forwardRef(o(function(e,a){let{__scopeProgress:r,...n}=e,i=m("ProgressIndicator",r);return(0,t.jsx)(s.Primitive.div,{"data-state":h(i.value,i.max),"data-value":i.value??void 0,"data-max":i.max,...n,ref:a})},"ProgressIndicator"));function g(e,t){return`${Math.round(e/t*100)}%`}function h(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function b(e){return"number"==typeof e}function x(e){return b(e)&&!isNaN(e)&&e>0}function v(e,t){return b(e)&&!isNaN(e)&&e<=t&&e>=0}function y(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`}function j(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be:
2  - a positive number
3  - less than the value passed to \`max\` (or 100 if no \`max\` prop is set)
4  - \`null\` or \`undefined\` if the progress is indeterminate.
5
6Defaulting to \`null\`.`}o(g,"defaultGetValueLabel"),o(h,"getProgressState"),o(b,"isNumber"),o(x,"isValidMaxNumber"),o(v,"isValidValueNumber"),o(y,"getInvalidMaxError"),o(j,"getInvalidValueError"),e.s(["Indicator",0,p,"Progress",0,f,"ProgressIndicator",0,p,"Root",0,f,"createProgressScope",0,c],676027);var N=e.i(676027),N=N;e.s(["Progress",0,function({className:e,value:r,indicatorClassName:n,...s}){let i=Math.min(100,Math.max(0,r||0));return(0,t.jsx)(N.Root,{"data-slot":"progress",className:(0,a.cn)("relative flex h-3 w-full items-center overflow-x-hidden rounded-full bg-muted",e),value:i,...s,children:(0,t.jsx)(N.Indicator,{"data-slot":"progress-indicator",className:(0,a.cn)("size-full flex-1 bg-primary transition-all",n),style:{transform:`translateX(-${100-i}%)`}})})}],222669)}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.