tekivex-ui 2.5.1 → 2.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +436 -83
  2. package/dist/TkxForm-DSMDo2Ol.js +388 -0
  3. package/dist/TkxForm-DwV_n-eE.cjs +12 -0
  4. package/dist/headless.cjs +1 -1
  5. package/dist/headless.js +396 -195
  6. package/dist/i18n.cjs +1 -0
  7. package/dist/i18n.js +757 -0
  8. package/dist/index.cjs +27 -22
  9. package/dist/index.d.ts +2 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +4994 -5089
  12. package/dist/quantum.cjs +91 -0
  13. package/dist/quantum.js +2312 -0
  14. package/dist/realtime.cjs +25 -0
  15. package/dist/realtime.js +944 -0
  16. package/dist/security-C369oOWH.cjs +1 -0
  17. package/dist/security-CzAmaMqa.js +97 -0
  18. package/dist/src/components/TkxDataGrid.d.ts +9 -1
  19. package/dist/src/components/TkxDataGrid.d.ts.map +1 -1
  20. package/dist/src/components/TkxDropdown.d.ts +41 -0
  21. package/dist/src/components/TkxDropdown.d.ts.map +1 -0
  22. package/dist/src/components/TkxLiveFeed.d.ts +891 -0
  23. package/dist/src/components/TkxLiveFeed.d.ts.map +1 -0
  24. package/dist/src/components/TkxLiveLog.d.ts +892 -0
  25. package/dist/src/components/TkxLiveLog.d.ts.map +1 -0
  26. package/dist/src/components/TkxLiveMetrics.d.ts +24 -0
  27. package/dist/src/components/TkxLiveMetrics.d.ts.map +1 -0
  28. package/dist/src/components/TkxPlayground.d.ts +15 -0
  29. package/dist/src/components/TkxPlayground.d.ts.map +1 -0
  30. package/dist/src/components/TkxQuantumForm.d.ts +20 -0
  31. package/dist/src/components/TkxQuantumForm.d.ts.map +1 -0
  32. package/dist/src/components/TkxRealTimeChart.d.ts +27 -0
  33. package/dist/src/components/TkxRealTimeChart.d.ts.map +1 -0
  34. package/dist/src/components/TkxTable.d.ts +11 -1
  35. package/dist/src/components/TkxTable.d.ts.map +1 -1
  36. package/dist/src/components/TkxThemeBuilder.d.ts +9 -0
  37. package/dist/src/components/TkxThemeBuilder.d.ts.map +1 -0
  38. package/dist/src/components/index.d.ts +1 -0
  39. package/dist/src/components/index.d.ts.map +1 -1
  40. package/dist/src/engine/index.d.ts +2 -0
  41. package/dist/src/engine/index.d.ts.map +1 -1
  42. package/dist/src/engine/quantum-ai.d.ts +201 -0
  43. package/dist/src/engine/quantum-ai.d.ts.map +1 -0
  44. package/dist/src/engine/tkx.d.ts.map +1 -1
  45. package/dist/src/headless/index.d.ts +6 -0
  46. package/dist/src/headless/index.d.ts.map +1 -1
  47. package/dist/src/headless/useInfiniteQuery.d.ts +35 -0
  48. package/dist/src/headless/useInfiniteQuery.d.ts.map +1 -0
  49. package/dist/src/headless/useSSE.d.ts +36 -0
  50. package/dist/src/headless/useSSE.d.ts.map +1 -0
  51. package/dist/src/headless/useWebSocket.d.ts +33 -0
  52. package/dist/src/headless/useWebSocket.d.ts.map +1 -0
  53. package/dist/src/quantum/index.d.ts +9 -0
  54. package/dist/src/quantum/index.d.ts.map +1 -0
  55. package/dist/src/realtime/index.d.ts +9 -0
  56. package/dist/src/realtime/index.d.ts.map +1 -0
  57. package/dist/{TkxForm-BWK4LqY3.js → tkx-BJ10JtMv.js} +372 -721
  58. package/dist/tkx-BeNyC0w7.cjs +4 -0
  59. package/package.json +16 -1
  60. package/src/components/TkxDataGrid.tsx +72 -0
  61. package/src/components/TkxDropdown.tsx +802 -0
  62. package/src/components/TkxLiveFeed.tsx +329 -0
  63. package/src/components/TkxLiveLog.tsx +470 -0
  64. package/src/components/TkxLiveMetrics.tsx +291 -0
  65. package/src/components/TkxPlayground.tsx +736 -0
  66. package/src/components/TkxQuantumForm.tsx +592 -0
  67. package/src/components/TkxRealTimeChart.tsx +381 -0
  68. package/src/components/TkxTable.tsx +351 -77
  69. package/src/components/TkxThemeBuilder.tsx +685 -0
  70. package/src/components/index.ts +4 -0
  71. package/src/engine/index.ts +2 -0
  72. package/src/engine/quantum-ai.ts +1045 -0
  73. package/src/engine/tkx.ts +95 -4
  74. package/src/headless/index.ts +6 -0
  75. package/src/headless/useInfiniteQuery.ts +153 -0
  76. package/src/headless/useSSE.ts +165 -0
  77. package/src/headless/useWebSocket.ts +229 -0
  78. package/src/quantum/index.ts +39 -0
  79. package/src/realtime/index.ts +21 -0
  80. package/dist/TkxForm-ljQjX7KD.cjs +0 -15
@@ -0,0 +1,25 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),K=require("./index-BINBzXuY.cjs"),z=require("./security-C369oOWH.cjs"),O=64,se=5;let ae=!1;function Ee(){if(ae||typeof document>"u")return;ae=!0;const e=document.createElement("style");e.id="tkx-live-feed-styles",e.textContent=`
2
+ @keyframes tkx-feed-slide-in {
3
+ from { transform: translateY(-20px); opacity: 0; }
4
+ to { transform: translateY(0); opacity: 1; }
5
+ }
6
+ .tkx-feed-item-new {
7
+ animation: tkx-feed-slide-in 0.25s ease-out both;
8
+ }
9
+ `.trim(),document.head.appendChild(e)}function ke(e){const n=Date.now()-e;return n<1e4?"just now":n<6e4?`${Math.floor(n/1e3)}s ago`:n<36e5?`${Math.floor(n/6e4)}m ago`:n<864e5?`${Math.floor(n/36e5)}h ago`:`${Math.floor(n/864e5)}d ago`}function we(e,n){switch(e){case"info":return n.info;case"success":return n.success;case"warning":return n.warning;case"error":return n.danger;default:return n.border}}function Me(e){return e?e.split(" ").map(n=>n[0]??"").slice(0,2).join("").toUpperCase():"?"}function $e({item:e,isNew:n,showTimestamps:r,onItemClick:o,renderItem:c,theme:s,style:f}){const d=we(e.type,s);if(c)return t.createElement("div",{style:f,className:n?"tkx-feed-item-new":void 0},c(e));const x={...f,display:"flex",alignItems:"center",gap:10,padding:"0 12px",borderLeft:`3px solid ${d}`,cursor:o?"pointer":"default",boxSizing:"border-box",height:O,background:s.surface,transition:"background 0.15s"};return t.createElement("div",{style:x,className:n?"tkx-feed-item-new":void 0,onClick:o?()=>o(e):void 0,role:o?"button":void 0,tabIndex:o?0:void 0,onKeyDown:o?a=>{(a.key==="Enter"||a.key===" ")&&o(e)}:void 0},t.createElement("div",{style:{width:36,height:36,borderRadius:"50%",background:d,display:"flex",alignItems:"center",justifyContent:"center",fontSize:13,fontWeight:700,color:s.bg,flexShrink:0,overflow:"hidden"}},e.avatar?t.createElement("img",{src:e.avatar,alt:e.author??"",style:{width:"100%",height:"100%",objectFit:"cover"}}):Me(e.author)),t.createElement("div",{style:{flex:1,minWidth:0}},t.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:2}},e.author&&t.createElement("span",{style:{fontWeight:600,fontSize:13,color:s.text}},z.sanitizeString(e.author)),e.meta&&t.createElement("span",{style:{fontSize:11,color:s.textMuted,background:s.surfaceAlt,borderRadius:4,padding:"1px 5px"}},z.sanitizeString(e.meta))),t.createElement("div",{style:{fontSize:13,color:s.text,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},z.sanitizeString(e.content))),r&&t.createElement("div",{style:{fontSize:11,color:s.textMuted,flexShrink:0}},ke(e.timestamp)))}function Te({items:e,maxItems:n=100,height:r=400,autoScroll:o=!0,showTimestamps:c=!0,onItemClick:s,emptyMessage:f="No activity yet.",pauseOnHover:d=!0,renderItem:x}){const a=K.useTheme();Ee();const y=t.useRef(null),[S,E]=t.useState(0),[v,h]=t.useState(!1),[C,N]=t.useState(new Set),D=t.useRef([]),R=t.useMemo(()=>e.slice(-n),[e,n]),M=typeof r=="number"?r:400,k=R.length*O;t.useEffect(()=>{const T=new Set(D.current.map(I=>I.id)),b=R.filter(I=>!T.has(I.id)).map(I=>I.id);if(b.length>0){N(A=>{const F=new Set(A);return b.forEach(H=>F.add(H)),F});const I=window.setTimeout(()=>{N(A=>{const F=new Set(A);return b.forEach(H=>F.delete(H)),F})},400);return()=>clearTimeout(I)}},[R]),t.useEffect(()=>{D.current=R},[R]);const B=o&&!(d&&v);t.useEffect(()=>{if(!B||!y.current)return;const T=y.current;(T.scrollHeight-T.scrollTop-T.clientHeight<O*3||R.length<=5)&&(T.scrollTop=T.scrollHeight)},[R.length,B]);const V=t.useCallback(()=>{y.current&&E(y.current.scrollTop)},[]),W=Math.max(0,Math.floor(S/O)-se),p=Math.min(R.length-1,Math.ceil((S+M)/O)+se),$={position:"relative",overflow:"auto",height:typeof r=="number"?`${r}px`:r,background:a.bg,border:`1px solid ${a.border}`,borderRadius:8,boxSizing:"border-box"},P={position:"relative",height:k,minHeight:"100%"};if(R.length===0)return t.createElement("div",{style:{...$,display:"flex",alignItems:"center",justifyContent:"center"}},t.createElement("span",{style:{color:a.textMuted,fontSize:14}},z.sanitizeString(f)));const L=[];for(let T=W;T<=p;T++){const b=R[T];b&&L.push(t.createElement($e,{key:b.id,item:b,isNew:C.has(b.id),showTimestamps:c,onItemClick:s,renderItem:x,theme:a,style:{position:"absolute",top:T*O,left:0,right:0}}))}return t.createElement("div",{ref:y,style:$,onScroll:V,onMouseEnter:d?()=>h(!0):void 0,onMouseLeave:d?()=>h(!1):void 0,"aria-label":"Live feed",role:"feed"},t.createElement("div",{style:P},...L))}let le=!1;function ze(){if(le||typeof document>"u")return;le=!0;const e=document.createElement("style");e.id="tkx-live-metrics-styles",e.textContent=`
10
+ @keyframes tkx-metric-pulse {
11
+ 0% { opacity: 1; }
12
+ 40% { opacity: 0.4; }
13
+ 100% { opacity: 1; }
14
+ }
15
+ @keyframes tkx-metric-shimmer {
16
+ 0% { background-position: -200% 0; }
17
+ 100% { background-position: 200% 0; }
18
+ }
19
+ .tkx-metric-shimmer {
20
+ animation: tkx-metric-shimmer 0.6s ease-in-out;
21
+ }
22
+ `.trim(),document.head.appendChild(e)}function ce(e,n){if(typeof e=="string")return e;const r=e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(Number.isInteger(e)?e:e.toFixed(2));return n?`${r}${n}`:r}function Re(e,n){switch(e){case"warning":return n.warning;case"critical":return n.danger;default:return n.primary}}function Le(e,n,r){const[o,c]=t.useState(e),s=t.useRef(e),f=t.useRef(null),d=t.useRef(null);return t.useEffect(()=>{if(!r){c(e);return}const x=s.current;if(x===e)return;f.current=null;const a=y=>{f.current===null&&(f.current=y);const S=y-f.current,E=Math.min(S/n,1),v=1-Math.pow(1-E,3);c(x+(e-x)*v),E<1?d.current=requestAnimationFrame(a):s.current=e};return d.current=requestAnimationFrame(a),()=>{d.current!==null&&cancelAnimationFrame(d.current)}},[e,n,r]),o}function Ie({data:e,color:n}){if(e.length<2)return null;const r=80,o=24,c=Math.min(...e),f=Math.max(...e)-c||1,d=e.map((x,a)=>{const y=a/(e.length-1)*r,S=o-(x-c)/f*(o-2)-1;return`${y.toFixed(1)},${S.toFixed(1)}`});return t.createElement("svg",{width:r,height:o,viewBox:`0 0 ${r} ${o}`,"aria-hidden":"true"},t.createElement("polyline",{points:d.join(" "),fill:"none",stroke:n,strokeWidth:1.5,strokeLinejoin:"round",strokeLinecap:"round"}))}function Ce({trend:e,theme:n}){return e==="up"?t.createElement("span",{style:{color:n.success,fontSize:14,fontWeight:700}},"▲"):e==="down"?t.createElement("span",{style:{color:n.danger,fontSize:14,fontWeight:700}},"▼"):t.createElement("span",{style:{color:n.textMuted,fontSize:14}},"→")}function Ne({metric:e,animate:n,onMetricClick:r,theme:o}){const c=e.color??Re(e.status,o),s=typeof e.value=="number"?e.value:NaN,f=Le(isNaN(s)?0:s,600,n&&!isNaN(s)),[d,x]=t.useState(!1),a=t.useRef(e.value);t.useEffect(()=>{if(a.current!==e.value){a.current=e.value,x(!0);const h=window.setTimeout(()=>x(!1),700);return()=>clearTimeout(h)}},[e.value]);const y=e.previousValue!==void 0&&e.previousValue!==s,S={background:o.surface,border:`1px solid ${o.border}`,borderLeft:`4px solid ${c}`,borderRadius:8,padding:"14px 16px",cursor:r?"pointer":"default",position:"relative",overflow:"hidden",boxSizing:"border-box"},E=d?{position:"absolute",inset:0,background:`linear-gradient(90deg, transparent 0%, ${c}22 50%, transparent 100%)`,backgroundSize:"200% 100%",animation:"tkx-metric-shimmer 0.6s ease-in-out",pointerEvents:"none"}:{},v=isNaN(s)?z.sanitizeString(String(e.value)):ce(f,e.unit);return t.createElement("div",{style:S,className:d?"tkx-metric-shimmer":void 0,onClick:r?()=>r(e):void 0,role:r?"button":void 0,tabIndex:r?0:void 0},d&&t.createElement("div",{style:E}),t.createElement("div",{style:{fontSize:12,color:o.textMuted,marginBottom:6,fontWeight:500,letterSpacing:"0.03em"}},z.sanitizeString(e.label)),t.createElement("div",{style:{display:"flex",alignItems:"flex-end",gap:6,marginBottom:6}},t.createElement("span",{style:{fontSize:28,fontWeight:700,color:o.text,lineHeight:1}},v),e.unit&&isNaN(s)&&t.createElement("span",{style:{fontSize:14,color:o.textMuted,marginBottom:2}},z.sanitizeString(e.unit))),(e.trend||e.trendValue)&&t.createElement("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:e.sparkline?8:0}},e.trend&&t.createElement(Ce,{trend:e.trend,theme:o}),e.trendValue&&t.createElement("span",{style:{fontSize:12,color:o.textMuted}},z.sanitizeString(e.trendValue))),y&&t.createElement("div",{style:{fontSize:11,color:o.textMuted,marginTop:2}},`was ${ce(e.previousValue)}`),e.sparkline&&e.sparkline.length>=2&&t.createElement("div",{style:{marginTop:8}},t.createElement(Ie,{data:e.sparkline,color:c})))}function We({metrics:e,columns:n=3,animate:r=!0,onMetricClick:o}){const c=K.useTheme();ze();const s={display:"grid",gridTemplateColumns:`repeat(${n}, minmax(0, 1fr))`,gap:16};return t.createElement("div",{style:s},...e.map(f=>t.createElement(Ne,{key:f.id,metric:f,animate:r,onMetricClick:o,theme:c})))}function ue(e){const n=new Date(e),r=String(n.getHours()).padStart(2,"0"),o=String(n.getMinutes()).padStart(2,"0"),c=String(n.getSeconds()).padStart(2,"0");return`${r}:${o}:${c}`}function de(e){return Math.abs(e)>=1e6?`${(e/1e6).toFixed(1)}M`:Math.abs(e)>=1e3?`${(e/1e3).toFixed(1)}k`:Number.isInteger(e)?String(e):e.toFixed(2)}function Fe({data:e,maxPoints:n=60,height:r=200,width:o="100%",color:c,fill:s=!0,showGrid:f=!0,showLabels:d=!0,showTooltip:x=!0,label:a,unit:y,animate:S=!0,yMin:E,yMax:v}){const h=K.useTheme(),C=c??h.primary,N=t.useRef(null),[D,R]=t.useState(600),[M,k]=t.useState(null),[B,V]=t.useState(0),W=t.useRef(e.length);t.useEffect(()=>{if(!N.current)return;const i=new ResizeObserver(m=>{const j=m[0];j&&R(j.contentRect.width)});return i.observe(N.current),R(N.current.offsetWidth),()=>i.disconnect()},[]);const p=t.useMemo(()=>e.slice(-n),[e,n]);t.useEffect(()=>{p.length>W.current&&V(i=>i+1),W.current=p.length},[p.length]);const $=d?48:12,P=12,L=a?28:12,T=28,b=Math.max(D-$-P,1),I=Math.max(r-L-T,1),A=p.length?Math.min(...p.map(i=>i.value)):0,F=p.length?Math.max(...p.map(i=>i.value)):1,H=F-A||1,u=E!==void 0?E:A-H*.1,g=(v!==void 0?v:F+H*.1)-u||1;function w(i){return p.length<2?b/2:i/(p.length-1)*b}function _(i){return I-(i-u)/g*I}const G=p.length>=2?p.map((i,m)=>`${m===0?"M":"L"}${w(m).toFixed(2)},${_(i.value).toFixed(2)}`).join(" "):"",ne=G?`${G} L${w(p.length-1).toFixed(2)},${I} L${w(0).toFixed(2)},${I} Z`:"",X=4,J=[];for(let i=0;i<=X;i++)J.push(i);const xe=J.map(i=>{const m=u+i/X*g;return{y:_(m),text:de(m)}}),Z=Math.min(4,p.length),me=Z>0?Array.from({length:Z},(i,m)=>Math.round(m/Math.max(Z-1,1)*(p.length-1))):[],he=t.useCallback(i=>{if(!x||p.length===0)return;const m=i.currentTarget.getBoundingClientRect(),j=i.clientX-m.left-$;let Y=0,re=1/0;p.forEach((_e,oe)=>{const ie=Math.abs(w(oe)-j);ie<re&&(re=ie,Y=oe)});const te=p[Y];if(!te)return;const ve=w(Y)+$,be=_(te.value)+L;k({x:ve,y:be,point:te})},[p,x,$,L]),ye=t.useCallback(()=>k(null),[]),Q=D,U=r,ee=`tkx-chart-clip-${B}`,Se={position:"relative",width:typeof o=="number"?`${o}px`:o,background:h.surface,border:`1px solid ${h.border}`,borderRadius:8,overflow:"hidden",boxSizing:"border-box"};return t.createElement("div",{ref:N,style:Se},t.createElement("svg",{width:Q,height:U,viewBox:`0 0 ${Q} ${U}`,onMouseMove:he,onMouseLeave:ye,style:{display:"block",userSelect:"none"},"aria-label":a?z.sanitizeString(a):"Real-time chart"},S&&p.length>=2&&t.createElement("defs",null,t.createElement("clipPath",{id:ee},t.createElement("rect",{x:0,y:0,width:b,height:U},t.createElement("animate",{attributeName:"width",from:Math.max(0,b-b/Math.max(p.length-1,1)),to:b,dur:"0.3s",fill:"freeze"})))),a&&t.createElement("text",{x:$,y:18,fill:h.textMuted,fontSize:12,fontWeight:500},z.sanitizeString(a)),f&&J.map(i=>{const m=_(u+i/X*g)+L;return t.createElement("line",{key:`grid-${i}`,x1:$,y1:m,x2:$+b,y2:m,stroke:h.border,strokeWidth:1,strokeDasharray:"4 4"})}),d&&xe.map((i,m)=>t.createElement("text",{key:`yl-${m}`,x:$-4,y:i.y+L+4,fill:h.textMuted,fontSize:10,textAnchor:"end"},i.text)),y&&t.createElement("text",{x:4,y:L+10,fill:h.textMuted,fontSize:9},z.sanitizeString(y)),s&&ne&&t.createElement("path",{d:ne,fill:`${C}22`,clipPath:S?`url(#${ee})`:void 0,transform:`translate(${$}, ${L})`}),G&&t.createElement("path",{d:G,fill:"none",stroke:C,strokeWidth:2,strokeLinejoin:"round",strokeLinecap:"round",clipPath:S?`url(#${ee})`:void 0,transform:`translate(${$}, ${L})`}),me.map(i=>{const m=p[i];return m?t.createElement("text",{key:`xl-${i}`,x:$+w(i),y:U-8,fill:h.textMuted,fontSize:9,textAnchor:"middle"},ue(m.timestamp)):null}),M&&t.createElement("line",{x1:M.x,y1:L,x2:M.x,y2:L+I,stroke:C,strokeWidth:1,strokeDasharray:"3 3",opacity:.6}),M&&t.createElement("circle",{cx:M.x,cy:M.y,r:4,fill:C,stroke:h.surface,strokeWidth:2}),M&&(()=>{const i=Math.min(M.x+8,Q-100),m=Math.max(M.y-36,4),j=`${de(M.point.value)}${y||""}`,Y=ue(M.point.timestamp);return t.createElement("g",null,t.createElement("rect",{x:i-4,y:m-2,width:90,height:34,rx:4,fill:h.surfaceAlt,stroke:h.border,strokeWidth:1}),t.createElement("text",{x:i,y:m+11,fill:h.text,fontSize:12,fontWeight:700},j),t.createElement("text",{x:i,y:m+26,fill:h.textMuted,fontSize:10},Y))})()))}const q=28,fe=8,ge={debug:0,info:1,warn:2,error:3,fatal:4};let pe=!1;function He(){if(pe||typeof document>"u")return;pe=!0;const e=document.createElement("style");e.id="tkx-live-log-styles",e.textContent=`
23
+ .tkx-log-row:hover { filter: brightness(1.12); }
24
+ .tkx-log-highlight { background: #ffbe0b55; border-radius: 2px; padding: 0 1px; }
25
+ `.trim(),document.head.appendChild(e)}function Ae(e){const n=new Date(e),r=String(n.getHours()).padStart(2,"0"),o=String(n.getMinutes()).padStart(2,"0"),c=String(n.getSeconds()).padStart(2,"0"),s=String(n.getMilliseconds()).padStart(3,"0");return`${r}:${o}:${c}.${s}`}function De(e,n){switch(e){case"debug":return n.textMuted;case"info":return n.info;case"warn":return n.warning;case"error":return n.danger;case"fatal":return n.danger;default:return n.textMuted}}function je(e,n){return e==="fatal"?`${n.danger}22`:"transparent"}function Be(e){return`[${e.toUpperCase().padEnd(5)}]`}function Ve(e,n){if(!n)return[e];const r=z.sanitizeString(e),o=z.sanitizeString(n);if(!o)return[r];try{const c=new RegExp(`(${o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");return r.split(c).map((f,d)=>c.test(f)?t.createElement("mark",{key:d,className:"tkx-log-highlight"},f):f)}catch{return[r]}}function Oe({entry:e,showLevel:n,showTimestamp:r,showSource:o,searchQuery:c,monospace:s,isExpanded:f,onToggle:d,onEntryClick:x,theme:a,style:y}){const S=De(e.level,a),E=je(e.level,a),v=e.metadata&&Object.keys(e.metadata).length>0,h={...y,display:"flex",alignItems:"center",gap:6,padding:"0 10px",fontSize:12,fontFamily:s?'"JetBrains Mono", "Fira Mono", Consolas, monospace':"inherit",cursor:v||x?"pointer":"default",background:E,boxSizing:"border-box",height:q,overflow:"hidden",whiteSpace:"nowrap",borderBottom:`1px solid ${a.border}22`},C=()=>{v&&d(),x&&x(e)};return t.createElement("div",{style:h,className:"tkx-log-row",onClick:C,role:v?"button":void 0,tabIndex:v?0:void 0,onKeyDown:v?N=>{(N.key==="Enter"||N.key===" ")&&d()}:void 0,"aria-expanded":v?f:void 0},r&&t.createElement("span",{style:{color:a.textMuted,flexShrink:0,minWidth:84}},Ae(e.timestamp)),n&&t.createElement("span",{style:{color:S,flexShrink:0,fontWeight:e.level==="fatal"?700:500,minWidth:56}},Be(e.level)),o&&e.source&&t.createElement("span",{style:{background:a.surfaceAlt,border:`1px solid ${a.border}`,borderRadius:10,padding:"0 5px",fontSize:10,color:a.textMuted,flexShrink:0,maxWidth:80,overflow:"hidden",textOverflow:"ellipsis"}},z.sanitizeString(e.source)),t.createElement("span",{style:{flex:1,color:a.text,overflow:"hidden",textOverflow:"ellipsis"}},...Ve(e.message,c)),v&&t.createElement("span",{style:{color:a.textMuted,fontSize:10,flexShrink:0}},f?"▲":"▼"))}function Pe({metadata:e,theme:n,style:r}){const o={...r,background:n.surfaceAlt,borderBottom:`1px solid ${n.border}`,padding:"6px 10px 6px 56px",display:"flex",flexWrap:"wrap",gap:6,boxSizing:"border-box"};return t.createElement("div",{style:o},...Object.entries(e).map(([c,s])=>t.createElement("span",{key:c,style:{fontSize:11,fontFamily:"monospace",color:n.textMuted,background:n.surface,border:`1px solid ${n.border}`,borderRadius:4,padding:"1px 6px"}},t.createElement("span",{style:{color:n.info}},`${z.sanitizeString(c)}: `),z.sanitizeString(String(s)))))}function Ye({entries:e,maxEntries:n=500,height:r=400,autoScroll:o=!0,showLevel:c=!0,showTimestamp:s=!0,showSource:f=!0,filterLevel:d,searchQuery:x="",monospace:a=!0,onEntryClick:y}){const S=K.useTheme();He();const E=t.useRef(null),[v,h]=t.useState(0),[C,N]=t.useState(new Set),[D,R]=t.useState(!1),M=t.useRef(e.length),k=t.useMemo(()=>{let u=e.slice(-n);if(d!==void 0){const l=ge[d];u=u.filter(g=>ge[g.level]>=l)}if(x){const l=x.toLowerCase();u=u.filter(g=>g.message.toLowerCase().includes(l)||(g.source??"").toLowerCase().includes(l))}return u},[e,n,d,x]),B=typeof r=="number"?r:400,V=40,W=t.useMemo(()=>{const u=[];let l=0;for(const g of k)u.push(l),l+=q+(C.has(g.id)?V:0);return u.push(l),u},[k,C]),p=W[W.length-1]??0;t.useEffect(()=>{!o||D||k.length!==M.current&&(M.current=k.length,E.current&&(E.current.scrollTop=E.current.scrollHeight))},[k.length,o,D]);const $=t.useCallback(()=>{if(!E.current)return;const u=E.current,l=u.scrollHeight-u.scrollTop-u.clientHeight<q*2;R(!l),h(u.scrollTop)},[]),P=t.useCallback(u=>{N(l=>{const g=new Set(l);return g.has(u)?g.delete(u):g.add(u),g})},[]);function L(u){let l=0,g=k.length-1;for(;l<g;){const w=l+g>>1;(W[w+1]??0)<=u?l=w+1:g=w}return Math.max(0,l-fe)}function T(u){let l=0,g=k.length-1;for(;l<g;){const w=l+g+1>>1;(W[w]??0)>=u+B?g=w-1:l=w}return Math.min(k.length-1,l+fe)}const b=k.length>0?L(v):0,I=k.length>0?T(v):-1,A={position:"relative",overflow:"auto",height:typeof r=="number"?`${r}px`:r,background:S.bg,border:`1px solid ${S.border}`,borderRadius:8,boxSizing:"border-box"},F={position:"relative",height:p,minHeight:"100%"};if(k.length===0)return t.createElement("div",{style:{...A,display:"flex",alignItems:"center",justifyContent:"center"}},t.createElement("span",{style:{color:S.textMuted,fontSize:13,fontFamily:"monospace"}},"No log entries."));const H=[];for(let u=b;u<=I;u++){const l=k[u];if(!l)continue;const g=W[u]??0,w=C.has(l.id);H.push(t.createElement(Oe,{key:l.id,entry:l,showLevel:c,showTimestamp:s,showSource:f,searchQuery:x,monospace:a,isExpanded:w,onToggle:()=>P(l.id),onEntryClick:y,theme:S,style:{position:"absolute",top:g,left:0,right:0}})),w&&l.metadata&&Object.keys(l.metadata).length>0&&H.push(t.createElement(Pe,{key:`${l.id}-meta`,metadata:l.metadata,theme:S,style:{position:"absolute",top:g+q,left:0,right:0,height:V}}))}return t.createElement("div",{ref:E,style:A,onScroll:$,role:"log","aria-live":"polite","aria-label":"Log viewer"},t.createElement("div",{style:F},...H))}exports.TkxLiveFeed=Te;exports.TkxLiveLog=Ye;exports.TkxLiveMetrics=We;exports.TkxRealTimeChart=Fe;