tekivex-ui 3.20.1 → 3.22.0
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.
- package/dist/experimental.cjs +1 -1
- package/dist/experimental.js +23 -23
- package/dist/headless.cjs +1 -1
- package/dist/headless.js +46 -46
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.js +633 -607
- package/dist/realtime.cjs +1 -1
- package/dist/realtime.js +1 -1
- package/dist/src/components/TkxAffix.d.ts +2 -1
- package/dist/src/components/TkxAppBar.d.ts +4 -2
- package/dist/src/components/TkxAutoForm.d.ts +15 -0
- package/dist/src/components/TkxBottomNav.d.ts +4 -2
- package/dist/src/components/TkxCascader.d.ts +1 -2
- package/dist/src/components/TkxClock.d.ts +0 -1
- package/dist/src/components/TkxList.d.ts +4 -2
- package/dist/src/components/TkxLiveFeed.d.ts +867 -5
- package/dist/src/components/TkxLiveMetrics.d.ts +0 -1
- package/dist/src/components/TkxQRCode.d.ts +22 -2
- package/dist/src/components/TkxRealTimeChart.d.ts +863 -2
- package/dist/src/components/TkxResult.d.ts +4 -2
- package/dist/src/components/TkxSecurityDashboard.d.ts +23 -0
- package/dist/src/components/TkxSegmented.d.ts +3 -1
- package/dist/src/components/TkxSpin.d.ts +3 -1
- package/dist/src/components/TkxTimeline.d.ts +4 -2
- package/dist/src/components/TkxWatermark.d.ts +1 -1
- package/dist/src/components/index.d.ts +2 -0
- package/dist/src/engine/security.d.ts +15 -0
- package/dist/src/themes/index.d.ts +1 -0
- package/dist/themes.cjs +1 -1
- package/dist/themes.js +1 -1
- package/package.json +1 -1
package/dist/realtime.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let e=require("react");var t=(0,e.createContext)({bg:"#0a0a0f",surface:"#12121a",surfaceAlt:"#1a1a2e",border:"#2a2a3e",text:"#e8e8f4",textMuted:"#8888aa",primary:"#00f5d4",secondary:"#7b2ff7",danger:"#f72585",warning:"#ffbe0b",success:"#06d6a0",info:"#3a86ff"});function n(){return(0,e.useContext)(t)}new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);var r={"<":"<",">":">","&":"&","'":"'",'"':""","`":"`"};function o(e){if(null==e)return"";let t=String(e);return t=t.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g,""),t.replace(/[<>&'"`]/g,e=>r[e]??e)}function i(e){if("string"!=typeof e)return null;const t=e.trim();if(!t)return null;const n=t.replace(/[\u0000-\u001F\u007F]/g,"");return/^javascript:/i.test(n)||/^vbscript:/i.test(n)||/^data:/i.test(n)&&!/^data:image\//i.test(n)||/^file:/i.test(n)?null:n}var s=new Set(["a","abbr","b","blockquote","br","code","del","div","em","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","li","mark","ol","p","pre","q","s","samp","small","span","strong","sub","sup","table","tbody","td","tfoot","th","thead","tr","u","ul"]),a={a:new Set(["href","title","target","rel"]),img:new Set(["src","alt","title","width","height","loading","decoding"]),th:new Set(["scope","colspan","rowspan","align"]),td:new Set(["colspan","rowspan","align"]),"*":new Set(["id","class","lang","dir","title"])},l=new Set(["constructor","prototype","__proto__","submit","reset","action","method","enctype","target","elements","children","firstChild","nextSibling","parentNode","ownerDocument","cookie","domain","location","documentElement","body","head","title","contentWindow","contentDocument"]);function c(e){if("string"!=typeof e)return"";if("undefined"==typeof DOMParser)return o(e);const t=(new DOMParser).parseFromString(`<div>${e}</div>`,"text/html").body.firstElementChild;return t?(d(t),t.innerHTML):""}function d(e){const t=Array.from(e.children);for(const n of t){const e=n.tagName.toLowerCase();if(s.has(e)){for(const t of Array.from(n.attributes)){const r=t.name.toLowerCase();if(r.startsWith("on"))n.removeAttribute(t.name);else if(l.has(r))n.removeAttribute(t.name);else if("style"!==r)if((a[e]??new Set).has(r)||a["*"].has(r)){if(("href"===r||"src"===r)&&"string"==typeof t.value){const e=i(t.value);null===e?n.removeAttribute(t.name):n.setAttribute(t.name,e)}"name"!==r&&"id"!==r||!l.has(t.value.toLowerCase())||n.removeAttribute(t.name)}else n.removeAttribute(t.name);else n.setAttribute("style",u(t.value))}d(n)}else n.remove()}}function u(e){if("string"!=typeof e)return"";let t=e;return t=t.replace(/expression\s*\([^)]*\)/gi,""),t=t.replace(/url\s*\(\s*['"]?\s*(javascript|vbscript|data)\s*:[^)]*\)/gi,"url(#)"),t=t.replace(/@import[^;]*;?/gi,""),t=t.replace(/behavior\s*:[^;]*;?/gi,""),t=t.replace(/-moz-binding[^;]*;?/gi,""),t=t.replace(/[<>]/g,""),t=t.replace(/[\u0000-\u001F\u007F]/g,""),t.trim()}var f=new Set(["__proto__","constructor","prototype"]);function p(e){if(Array.isArray(e))return e.map(p);if(e&&"object"==typeof e){const t={};for(const[n,r]of Object.entries(e))f.has(n)||(t[n]=p(r));return t}return e}function m(){if("undefined"==typeof window)return!1;try{return window.top!==window.self}catch{return!0}}var h=[{name:"ssn",re:/\b\d{3}-\d{2}-\d{4}\b/g,repl:"[redacted-ssn]"},{name:"credit",re:/\b(?:\d[ -]?){13,19}\b/g,repl:e=>{const t=e.replace(/[ -]/g,"");return t.length<13||t.length>19?e:function(e){let t=0,n=!1;for(let r=e.length-1;r>=0;r--){let o=e.charCodeAt(r)-48;if(o<0||o>9)return!1;n&&(o*=2,o>9&&(o-=9)),t+=o,n=!n}return t>0&&t%10==0}(t)?"[redacted-card]":e}},{name:"email",re:/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/gi,repl:"[redacted-email]"},{name:"phone",re:/\b(\+?\d{1,3}[ -])?\(?\d{3}\)?[ -]?\d{3}[ -]?\d{4}\b/g,repl:"[redacted-phone]"},{name:"apikey",re:/\b(sk|pk|rk)-[A-Za-z0-9]{20,}\b/g,repl:"[redacted-key]"}];Object.freeze({sanitizeString:o,sanitizeHref:i,sanitizeHTML:c,sanitizeCSS:u,sanitizeJSON:function(e){try{return p(JSON.parse(e,(e,t)=>{if(!f.has(e))return t}))}catch{return null}},sanitizeUnicode:function(e){return"string"!=typeof e?"":e.replace(/[\u200B-\u200F\u202A-\u202E\u2060-\u206F\uFEFF\u00AD]/g,"")},isSafeAttrName:function(e){return!("string"!=typeof e||!e||/[\u0000-\u001F\u007F<>"]/.test(e)||l.has(e.toLowerCase()))},buildTkxCSP:function(e={}){const{allowInlineStyles:t=!0,imgHosts:n=[],connectHosts:r=[],fontHosts:o=[],scriptNonce:i,reportUri:s}=e,a=["default-src 'self'","script-src "+(i?`'self' 'nonce-${i}'`:"'self'"),"style-src "+(t?"'self' 'unsafe-inline'":"'self'"),`img-src ${["'self'","data:","https:",...n].join(" ")}`,`font-src ${["'self'","https:","data:",...o].join(" ")}`,`connect-src ${["'self'",...r].join(" ")}`,"frame-ancestors 'none'","form-action 'self'","base-uri 'self'","object-src 'none'","upgrade-insecure-requests"];return s&&a.push(`report-uri ${s}`),a.join("; ")},installTrustedTypes:function(){if("undefined"==typeof window)return;const e=window.trustedTypes;if(e)try{e.createPolicy("tkx",{createHTML:c,createScriptURL:e=>i(e)??"",createScript:()=>{throw new Error("TekiVex: inline script creation forbidden")}})}catch{}},isFramed:m,installFrameBuster:function(e){if("undefined"!=typeof window&&m())if(e)e();else try{window.top.location.href=window.self.location.href}catch{}},createRateLimiter:function(e,t){let n=e,r=Date.now();return{check(){const o=Date.now(),i=o-r,s=Math.floor(i/t);return s>0&&(n=Math.min(e,n+s),r=o),!(n<=0||(n-=1,0))},reset(){n=e,r=Date.now()}}},sniffMimeType:async function(e){const t=new Uint8Array(await e.slice(0,12).arrayBuffer()),n=(...e)=>e.every((e,n)=>t[n]===e);return n(137,80,78,71)?"image/png":n(255,216,255)?"image/jpeg":n(71,73,70,56)?"image/gif":n(66,77)?"image/bmp":n(82,73,70,70)&&87===t[8]&&69===t[9]&&66===t[10]&&80===t[11]?"image/webp":n(37,80,68,70)?"application/pdf":n(80,75,3,4)?"application/zip":123===t[0]||91===t[0]?"application/json":[...t].includes(0)?null:"text/plain"},scrubPII:function(e){if("string"!=typeof e)return"";let t=e;for(const{re:n,repl:r}of h)t=t.replace(n,r);return t},deepFreeze:function e(t){if(t&&"object"==typeof t&&!Object.isFrozen(t)){for(const n of Object.keys(t))e(t[n]);Object.freeze(t)}return t},__brand:"TekiVex SecurityCore v2.6.0 © 007krcs"});var g=!1;function y({item:t,isNew:n,showTimestamps:r,onItemClick:i,renderItem:s,theme:a,style:l}){const c=function(e,t){switch(e){case"info":return t.info;case"success":return t.success;case"warning":return t.warning;case"error":return t.danger;default:return t.border}}(t.type,a);return s?(0,e.createElement)("div",{style:l,className:n?"tkx-feed-item-new":void 0},s(t)):(0,e.createElement)("div",{style:{...l,display:"flex",alignItems:"center",gap:10,padding:"0 12px",borderLeft:`3px solid ${c}`,cursor:i?"pointer":"default",boxSizing:"border-box",height:64,background:a.surface,transition:"background 0.15s"},className:n?"tkx-feed-item-new":void 0,onClick:i?()=>i(t):void 0,role:i?"button":void 0,tabIndex:i?0:void 0,onKeyDown:i?e=>{"Enter"!==e.key&&" "!==e.key||i(t)}:void 0},(0,e.createElement)("div",{style:{width:36,height:36,borderRadius:"50%",background:c,display:"flex",alignItems:"center",justifyContent:"center",fontSize:13,fontWeight:700,color:a.bg,flexShrink:0,overflow:"hidden"}},t.avatar?(0,e.createElement)("img",{src:t.avatar,alt:t.author??"",style:{width:"100%",height:"100%",objectFit:"cover"}}):(d=t.author)?d.split(" ").map(e=>e[0]??"").slice(0,2).join("").toUpperCase():"?"),(0,e.createElement)("div",{style:{flex:1,minWidth:0}},(0,e.createElement)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:2}},t.author&&(0,e.createElement)("span",{style:{fontWeight:600,fontSize:13,color:a.text}},o(t.author)),t.meta&&(0,e.createElement)("span",{style:{fontSize:11,color:a.textMuted,background:a.surfaceAlt,borderRadius:4,padding:"1px 5px"}},o(t.meta))),(0,e.createElement)("div",{style:{fontSize:13,color:a.text,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},o(t.content))),r&&(0,e.createElement)("div",{style:{fontSize:11,color:a.textMuted,flexShrink:0}},function(e){const t=Date.now()-e;return t<1e4?"just now":t<6e4?`${Math.floor(t/1e3)}s ago`:t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:`${Math.floor(t/864e5)}d ago`}(t.timestamp)));var d}var b=!1;function x(e,t){if("string"==typeof e)return e;const n=e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(Number.isInteger(e)?e:e.toFixed(2));return t?`${n}${t}`:n}function w({data:t,color:n}){if(t.length<2)return null;const r=Math.min(...t),o=Math.max(...t)-r||1,i=t.map((e,n)=>{const i=n/(t.length-1)*80,s=24-(e-r)/o*22-1;return`${i.toFixed(1)},${s.toFixed(1)}`});return(0,e.createElement)("svg",{width:80,height:24,viewBox:"0 0 80 24","aria-hidden":"true"},(0,e.createElement)("polyline",{points:i.join(" "),fill:"none",stroke:n,strokeWidth:1.5,strokeLinejoin:"round",strokeLinecap:"round"}))}function v({trend:t,theme:n}){return"up"===t?(0,e.createElement)("span",{style:{color:n.success,fontSize:14,fontWeight:700}},"▲"):"down"===t?(0,e.createElement)("span",{style:{color:n.danger,fontSize:14,fontWeight:700}},"▼"):(0,e.createElement)("span",{style:{color:n.textMuted,fontSize:14}},"→")}function k({metric:t,animate:n,onMetricClick:r,theme:i}){const s=t.color??function(e,t){switch(e){case"warning":return t.warning;case"critical":return t.danger;default:return t.primary}}(t.status,i),a="number"==typeof t.value?t.value:NaN,l=function(t,n,r){const[o,i]=(0,e.useState)(t),s=(0,e.useRef)(t),a=(0,e.useRef)(null),l=(0,e.useRef)(null),c=function(){const[t,n]=(0,e.useState)(()=>"undefined"!=typeof window&&window.matchMedia("(prefers-reduced-motion: reduce)").matches);return(0,e.useEffect)(()=>{if("undefined"==typeof window)return;const e=window.matchMedia("(prefers-reduced-motion: reduce)"),t=e=>n(e.matches);return e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),t}();return(0,e.useEffect)(()=>{if(!r||c)return i(t),void(s.current=t);const e=s.current;if(e===t)return;a.current=null;const n=r=>{null===a.current&&(a.current=r);const o=r-a.current,c=Math.min(o/600,1),d=1-Math.pow(1-c,3);i(e+(t-e)*d),c<1?l.current=requestAnimationFrame(n):s.current=t};return l.current=requestAnimationFrame(n),()=>{null!==l.current&&cancelAnimationFrame(l.current)}},[t,600,r,c]),o}(isNaN(a)?0:a,0,n&&!isNaN(a)),[c,d]=(0,e.useState)(!1),u=(0,e.useRef)(t.value);(0,e.useEffect)(()=>{if(u.current!==t.value){u.current=t.value,d(!0);const e=window.setTimeout(()=>d(!1),700);return()=>clearTimeout(e)}},[t.value]);const f=void 0!==t.previousValue&&t.previousValue!==a,p={background:i.surface,border:`1px solid ${i.border}`,borderLeft:`4px solid ${s}`,borderRadius:8,padding:"14px 16px",cursor:r?"pointer":"default",position:"relative",overflow:"hidden",boxSizing:"border-box"},m=c?{position:"absolute",inset:0,background:`linear-gradient(90deg, transparent 0%, ${s}22 50%, transparent 100%)`,backgroundSize:"200% 100%",animation:"tkx-metric-shimmer 0.6s ease-in-out",pointerEvents:"none"}:{},h=isNaN(a)?o(String(t.value)):x(l,t.unit);return(0,e.createElement)("div",{style:p,className:c?"tkx-metric-shimmer":void 0,onClick:r?()=>r(t):void 0,role:r?"button":void 0,tabIndex:r?0:void 0},c&&(0,e.createElement)("div",{style:m}),(0,e.createElement)("div",{style:{fontSize:12,color:i.textMuted,marginBottom:6,fontWeight:500,letterSpacing:"0.03em"}},o(t.label)),(0,e.createElement)("div",{style:{display:"flex",alignItems:"flex-end",gap:6,marginBottom:6}},(0,e.createElement)("span",{style:{fontSize:28,fontWeight:700,color:i.text,lineHeight:1}},h),t.unit&&isNaN(a)&&(0,e.createElement)("span",{style:{fontSize:14,color:i.textMuted,marginBottom:2}},o(t.unit))),(t.trend||t.trendValue)&&(0,e.createElement)("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:t.sparkline?8:0}},t.trend&&(0,e.createElement)(v,{trend:t.trend,theme:i}),t.trendValue&&(0,e.createElement)("span",{style:{fontSize:12,color:i.textMuted}},o(t.trendValue))),f&&(0,e.createElement)("div",{style:{fontSize:11,color:i.textMuted,marginTop:2}},`was ${x(t.previousValue)}`),t.sparkline&&t.sparkline.length>=2&&(0,e.createElement)("div",{style:{marginTop:8}},(0,e.createElement)(w,{data:t.sparkline,color:s})))}function S(e){const t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`}function $(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)}var M={debug:0,info:1,warn:2,error:3,fatal:4},z=!1;function N({entry:t,showLevel:n,showTimestamp:r,showSource:i,searchQuery:s,monospace:a,isExpanded:l,onToggle:c,onEntryClick:d,theme:u,style:f}){const p=function(e,t){switch(e){case"debug":default:return t.textMuted;case"info":return t.info;case"warn":return t.warning;case"error":case"fatal":return t.danger}}(t.level,u),m=function(e,t){return"fatal"===e?`${t.danger}22`:"transparent"}(t.level,u),h=t.metadata&&Object.keys(t.metadata).length>0,g={...f,display:"flex",alignItems:"center",gap:6,padding:"0 10px",fontSize:12,fontFamily:a?'"JetBrains Mono", "Fira Mono", Consolas, monospace':"inherit",cursor:h||d?"pointer":"default",background:m,boxSizing:"border-box",height:28,overflow:"hidden",whiteSpace:"nowrap",borderBottom:`1px solid ${u.border}22`};return(0,e.createElement)("div",{style:g,className:"tkx-log-row",onClick:()=>{h&&c(),d&&d(t)},role:h?"button":void 0,tabIndex:h?0:void 0,onKeyDown:h?e=>{"Enter"!==e.key&&" "!==e.key||c()}:void 0,"aria-expanded":h?l:void 0},r&&(0,e.createElement)("span",{style:{color:u.textMuted,flexShrink:0,minWidth:84}},function(e){const t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}.${String(t.getMilliseconds()).padStart(3,"0")}`}(t.timestamp)),n&&(0,e.createElement)("span",{style:{color:p,flexShrink:0,fontWeight:"fatal"===t.level?700:500,minWidth:56}},`[${t.level.toUpperCase().padEnd(5)}]`),i&&t.source&&(0,e.createElement)("span",{style:{background:u.surfaceAlt,border:`1px solid ${u.border}`,borderRadius:10,padding:"0 5px",fontSize:10,color:u.textMuted,flexShrink:0,maxWidth:80,overflow:"hidden",textOverflow:"ellipsis"}},o(t.source)),(0,e.createElement)("span",{style:{flex:1,color:u.text,overflow:"hidden",textOverflow:"ellipsis"}},...function(t,n){if(!n)return[t];const r=o(t),i=o(n);if(!i)return[r];try{const t=new RegExp(`(${i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");return r.split(t).map((n,r)=>t.test(n)?(0,e.createElement)("mark",{key:r,className:"tkx-log-highlight"},n):n)}catch{return[r]}}(t.message,s)),h&&(0,e.createElement)("span",{style:{color:u.textMuted,fontSize:10,flexShrink:0}},l?"▲":"▼"))}function F({metadata:t,theme:n,style:r}){return(0,e.createElement)("div",{style:{...r,background:n.surfaceAlt,borderBottom:`1px solid ${n.border}`,padding:"6px 10px 6px 56px",display:"flex",flexWrap:"wrap",gap:6,boxSizing:"border-box"}},...Object.entries(t).map(([t,r])=>(0,e.createElement)("span",{key:t,style:{fontSize:11,fontFamily:"monospace",color:n.textMuted,background:n.surface,border:`1px solid ${n.border}`,borderRadius:4,padding:"1px 6px"}},(0,e.createElement)("span",{style:{color:n.info}},`${o(t)}: `),o(String(r)))))}exports.TkxLiveFeed=function({items:t,maxItems:r=100,height:i=400,autoScroll:s=!0,showTimestamps:a=!0,onItemClick:l,emptyMessage:c="No activity yet.",pauseOnHover:d=!0,renderItem:u}){const f=n();!function(){if(g||"undefined"==typeof document)return;g=!0;const e=document.createElement("style");e.id="tkx-live-feed-styles",e.textContent="\n@keyframes tkx-feed-slide-in {\n from { transform: translateY(-20px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n.tkx-feed-item-new {\n animation: tkx-feed-slide-in 0.25s ease-out both;\n}\n ".trim(),document.head.appendChild(e)}();const p=(0,e.useRef)(null),[m,h]=(0,e.useState)(0),[b,x]=(0,e.useState)(!1),[w,v]=(0,e.useState)(new Set),k=(0,e.useRef)([]),S=(0,e.useMemo)(()=>t.slice(-r),[t,r]),$="number"==typeof i?i:400,M=64*S.length;(0,e.useEffect)(()=>{const e=new Set(k.current.map(e=>e.id)),t=S.filter(t=>!e.has(t.id)).map(e=>e.id);if(t.length>0){v(e=>{const n=new Set(e);return t.forEach(e=>n.add(e)),n});const e=window.setTimeout(()=>{v(e=>{const n=new Set(e);return t.forEach(e=>n.delete(e)),n})},400);return()=>clearTimeout(e)}},[S]),(0,e.useEffect)(()=>{k.current=S},[S]);const z=s&&!(d&&b);(0,e.useEffect)(()=>{if(!z||!p.current)return;const e=p.current;(e.scrollHeight-e.scrollTop-e.clientHeight<192||S.length<=5)&&(e.scrollTop=e.scrollHeight)},[S.length,z]);const N=(0,e.useCallback)(()=>{p.current&&h(p.current.scrollTop)},[]),F=Math.max(0,Math.floor(m/64)-5),j=Math.min(S.length-1,Math.ceil((m+$)/64)+5),C={position:"relative",overflow:"auto",height:"number"==typeof i?`${i}px`:i,background:f.bg,border:`1px solid ${f.border}`,borderRadius:8,boxSizing:"border-box"},L={position:"relative",height:M,minHeight:"100%"};if(0===S.length)return(0,e.createElement)("div",{style:{...C,display:"flex",alignItems:"center",justifyContent:"center"}},(0,e.createElement)("span",{style:{color:f.textMuted,fontSize:14}},o(c)));const T=[];for(let n=F;n<=j;n++){const t=S[n];t&&T.push((0,e.createElement)(y,{key:t.id,item:t,isNew:w.has(t.id),showTimestamps:a,onItemClick:l,renderItem:u,theme:f,style:{position:"absolute",top:64*n,left:0,right:0}}))}return(0,e.createElement)("div",{ref:p,style:C,onScroll:N,onMouseEnter:d?()=>x(!0):void 0,onMouseLeave:d?()=>x(!1):void 0,"aria-label":"Live feed",role:"feed"},(0,e.createElement)("div",{style:L},...T))},exports.TkxLiveLog=function({entries:t,maxEntries:r=500,height:o=400,autoScroll:i=!0,showLevel:s=!0,showTimestamp:a=!0,showSource:l=!0,filterLevel:c,searchQuery:d="",monospace:u=!0,onEntryClick:f}){const p=n();!function(){if(z||"undefined"==typeof document)return;z=!0;const e=document.createElement("style");e.id="tkx-live-log-styles",e.textContent="\n.tkx-log-row:hover { filter: brightness(1.12); }\n.tkx-log-highlight { background: #ffbe0b55; border-radius: 2px; padding: 0 1px; }\n ".trim(),document.head.appendChild(e)}();const m=(0,e.useRef)(null),[h,g]=(0,e.useState)(0),[y,b]=(0,e.useState)(new Set),[x,w]=(0,e.useState)(!1),v=(0,e.useRef)(t.length),k=(0,e.useMemo)(()=>{let e=t.slice(-r);if(void 0!==c){const t=M[c];e=e.filter(e=>M[e.level]>=t)}if(d){const t=d.toLowerCase();e=e.filter(e=>e.message.toLowerCase().includes(t)||(e.source??"").toLowerCase().includes(t))}return e},[t,r,c,d]),S="number"==typeof o?o:400,$=(0,e.useMemo)(()=>{const e=[];let t=0;for(const n of k)e.push(t),t+=28+(y.has(n.id)?40:0);return e.push(t),e},[k,y]),j=$[$.length-1]??0;(0,e.useEffect)(()=>{i&&!x&&k.length!==v.current&&(v.current=k.length,m.current&&(m.current.scrollTop=m.current.scrollHeight))},[k.length,i,x]);const C=(0,e.useCallback)(()=>{if(!m.current)return;const e=m.current;w(!(e.scrollHeight-e.scrollTop-e.clientHeight<56)),g(e.scrollTop)},[]),L=(0,e.useCallback)(e=>{b(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),T=k.length>0?function(e){let t=0,n=k.length-1;for(;t<n;){const r=t+n>>1;($[r+1]??0)<=e?t=r+1:n=r}return Math.max(0,t-8)}(h):0,I=k.length>0?function(e){let t=0,n=k.length-1;for(;t<n;){const r=t+n+1>>1;($[r]??0)>=e+S?n=r-1:t=r}return Math.min(k.length-1,t+8)}(h):-1,W={position:"relative",overflow:"auto",height:"number"==typeof o?`${o}px`:o,background:p.bg,border:`1px solid ${p.border}`,borderRadius:8,boxSizing:"border-box"},A={position:"relative",height:j,minHeight:"100%"};if(0===k.length)return(0,e.createElement)("div",{style:{...W,display:"flex",alignItems:"center",justifyContent:"center"}},(0,e.createElement)("span",{style:{color:p.textMuted,fontSize:13,fontFamily:"monospace"}},"No log entries."));const O=[];for(let n=T;n<=I;n++){const t=k[n];if(!t)continue;const r=$[n]??0,o=y.has(t.id);O.push((0,e.createElement)(N,{key:t.id,entry:t,showLevel:s,showTimestamp:a,showSource:l,searchQuery:d,monospace:u,isExpanded:o,onToggle:()=>L(t.id),onEntryClick:f,theme:p,style:{position:"absolute",top:r,left:0,right:0}})),o&&t.metadata&&Object.keys(t.metadata).length>0&&O.push((0,e.createElement)(F,{key:`${t.id}-meta`,metadata:t.metadata,theme:p,style:{position:"absolute",top:r+28,left:0,right:0,height:40}}))}return(0,e.createElement)("div",{ref:m,style:W,onScroll:C,role:"log","aria-live":"polite","aria-label":"Log viewer"},(0,e.createElement)("div",{style:A},...O))},exports.TkxLiveMetrics=function({metrics:t,columns:r=3,animate:o=!0,onMetricClick:i}){const s=n();return function(){if(b||"undefined"==typeof document)return;b=!0;const e=document.createElement("style");e.id="tkx-live-metrics-styles",e.textContent="\n@keyframes tkx-metric-pulse {\n 0% { opacity: 1; }\n 40% { opacity: 0.4; }\n 100% { opacity: 1; }\n}\n@keyframes tkx-metric-shimmer {\n 0% { background-position: -200% 0; }\n 100% { background-position: 200% 0; }\n}\n.tkx-metric-shimmer {\n animation: tkx-metric-shimmer 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .tkx-metric-shimmer { animation: none; }\n .tkx-metric-pulse { animation: none; }\n}\n ".trim(),document.head.appendChild(e)}(),(0,e.createElement)("div",{style:{display:"grid",gridTemplateColumns:`repeat(${r}, minmax(0, 1fr))`,gap:16}},...t.map(t=>(0,e.createElement)(k,{key:t.id,metric:t,animate:o,onMetricClick:i,theme:s})))},exports.TkxRealTimeChart=function({data:t,maxPoints:r=60,height:i=200,width:s="100%",color:a,fill:l=!0,showGrid:c=!0,showLabels:d=!0,showTooltip:u=!0,label:f,unit:p,animate:m=!0,yMin:h,yMax:g}){const y=n(),b=a??y.primary,x=(0,e.useRef)(null),[w,v]=(0,e.useState)(600),[k,M]=(0,e.useState)(null),[z,N]=(0,e.useState)(0),F=(0,e.useRef)(t.length);(0,e.useEffect)(()=>{if(!x.current)return;const e=new ResizeObserver(e=>{const t=e[0];t&&v(t.contentRect.width)});return e.observe(x.current),v(x.current.offsetWidth),()=>e.disconnect()},[]);const j=(0,e.useMemo)(()=>t.slice(-r),[t,r]);(0,e.useEffect)(()=>{j.length>F.current&&N(e=>e+1),F.current=j.length},[j.length]);const C=d?48:12,L=f?28:12,T=Math.max(w-C-12,1),I=Math.max(i-L-28,1),W=j.length?Math.min(...j.map(e=>e.value)):0,A=j.length?Math.max(...j.map(e=>e.value)):1,O=A-W||1,E=void 0!==h?h:W-.1*O,D=(void 0!==g?g:A+.1*O)-E||1;function B(e){return j.length<2?T/2:e/(j.length-1)*T}function R(e){return I-(e-E)/D*I}const _=j.length>=2?j.map((e,t)=>`${0===t?"M":"L"}${B(t).toFixed(2)},${R(e.value).toFixed(2)}`).join(" "):"",H=_?`${_} L${B(j.length-1).toFixed(2)},${I} L${B(0).toFixed(2)},${I} Z`:"",P=[];for(let e=0;e<=4;e++)P.push(e);const q=P.map(e=>{const t=E+e/4*D;return{y:R(t),text:$(t)}}),U=Math.min(4,j.length),Z=U>0?Array.from({length:U},(e,t)=>Math.round(t/Math.max(U-1,1)*(j.length-1))):[],J=(0,e.useCallback)(e=>{if(!u||0===j.length)return;const t=e.currentTarget.getBoundingClientRect(),n=e.clientX-t.left-C;let r=0,o=1/0;j.forEach((e,t)=>{const i=Math.abs(B(t)-n);i<o&&(o=i,r=t)});const i=j[r];i&&M({x:B(r)+C,y:R(i.value)+L,point:i})},[j,u,C,L]),Q=(0,e.useCallback)(()=>M(null),[]),K=w,V=i,Y=`tkx-chart-clip-${z}`;return(0,e.createElement)("div",{ref:x,style:{position:"relative",width:"number"==typeof s?`${s}px`:s,background:y.surface,border:`1px solid ${y.border}`,borderRadius:8,overflow:"hidden",boxSizing:"border-box"}},(0,e.createElement)("svg",{width:K,height:V,viewBox:`0 0 ${K} ${V}`,onMouseMove:J,onMouseLeave:Q,style:{display:"block",userSelect:"none"},"aria-label":f?o(f):"Real-time chart"},m&&j.length>=2&&(0,e.createElement)("defs",null,(0,e.createElement)("clipPath",{id:Y},(0,e.createElement)("rect",{x:0,y:0,width:T,height:V},(0,e.createElement)("animate",{attributeName:"width",from:Math.max(0,T-T/Math.max(j.length-1,1)),to:T,dur:"0.3s",fill:"freeze"})))),f&&(0,e.createElement)("text",{x:C,y:18,fill:y.textMuted,fontSize:12,fontWeight:500},o(f)),c&&P.map(t=>{const n=R(E+t/4*D)+L;return(0,e.createElement)("line",{key:`grid-${t}`,x1:C,y1:n,x2:C+T,y2:n,stroke:y.border,strokeWidth:1,strokeDasharray:"4 4"})}),d&&q.map((t,n)=>(0,e.createElement)("text",{key:`yl-${n}`,x:C-4,y:t.y+L+4,fill:y.textMuted,fontSize:10,textAnchor:"end"},t.text)),p&&(0,e.createElement)("text",{x:4,y:L+10,fill:y.textMuted,fontSize:9},o(p)),l&&H&&(0,e.createElement)("path",{d:H,fill:`${b}22`,clipPath:m?`url(#${Y})`:void 0,transform:`translate(${C}, ${L})`}),_&&(0,e.createElement)("path",{d:_,fill:"none",stroke:b,strokeWidth:2,strokeLinejoin:"round",strokeLinecap:"round",clipPath:m?`url(#${Y})`:void 0,transform:`translate(${C}, ${L})`}),Z.map(t=>{const n=j[t];return n?(0,e.createElement)("text",{key:`xl-${t}`,x:C+B(t),y:V-8,fill:y.textMuted,fontSize:9,textAnchor:"middle"},S(n.timestamp)):null}),k&&(0,e.createElement)("line",{x1:k.x,y1:L,x2:k.x,y2:L+I,stroke:b,strokeWidth:1,strokeDasharray:"3 3",opacity:.6}),k&&(0,e.createElement)("circle",{cx:k.x,cy:k.y,r:4,fill:b,stroke:y.surface,strokeWidth:2}),k&&(()=>{const t=Math.min(k.x+8,K-100),n=Math.max(k.y-36,4),r=`${$(k.point.value)}${p||""}`,o=S(k.point.timestamp);return(0,e.createElement)("g",null,(0,e.createElement)("rect",{x:t-4,y:n-2,width:90,height:34,rx:4,fill:y.surfaceAlt,stroke:y.border,strokeWidth:1}),(0,e.createElement)("text",{x:t,y:n+11,fill:y.text,fontSize:12,fontWeight:700},r),(0,e.createElement)("text",{x:t,y:n+26,fill:y.textMuted,fontSize:10},o))})()))};
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let e=require("react");var t=(0,e.createContext)({bg:"#0a0a0f",surface:"#12121a",surfaceAlt:"#1a1a2e",border:"#2a2a3e",text:"#e8e8f4",textMuted:"#8888aa",primary:"#00f5d4",secondary:"#7b2ff7",danger:"#f72585",warning:"#ffbe0b",success:"#06d6a0",info:"#3a86ff"});function n(){return(0,e.useContext)(t)}new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);var r={"<":"<",">":">","&":"&","'":"'",'"':""","`":"`"},o=new Set,i=[],s=0;function a(e,t,n="info",r){const a=Object.freeze({id:"se_"+ ++s,type:e,timestamp:Date.now(),severity:n,message:t,detail:r?Object.freeze({...r}):void 0});i.push(a),i.length>500&&i.shift();for(const i of o)try{i(a)}catch{}return a}function l(e){if(null==e)return"";let t=String(e);t=t.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g,"");let n=0;const o=t.replace(/[<>&'"`]/g,e=>(n++,r[e]??e));return n>0&&a("xss-sanitized",`Escaped ${n} HTML-sensitive character${1===n?"":"s"} before render`,"warning",{escapes:n}),o}function c(e){if("string"!=typeof e)return null;const t=e.trim();if(!t)return null;const n=t.replace(/[\u0000-\u001F\u007F]/g,"");return/^javascript:/i.test(n)||/^vbscript:/i.test(n)||/^data:/i.test(n)&&!/^data:image\//i.test(n)||/^file:/i.test(n)?null:n}var d=new Set(["a","abbr","b","blockquote","br","code","del","div","em","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","li","mark","ol","p","pre","q","s","samp","small","span","strong","sub","sup","table","tbody","td","tfoot","th","thead","tr","u","ul"]),u={a:new Set(["href","title","target","rel"]),img:new Set(["src","alt","title","width","height","loading","decoding"]),th:new Set(["scope","colspan","rowspan","align"]),td:new Set(["colspan","rowspan","align"]),"*":new Set(["id","class","lang","dir","title"])},f=new Set(["constructor","prototype","__proto__","submit","reset","action","method","enctype","target","elements","children","firstChild","nextSibling","parentNode","ownerDocument","cookie","domain","location","documentElement","body","head","title","contentWindow","contentDocument"]);function p(e){if("string"!=typeof e)return"";if("undefined"==typeof DOMParser)return l(e);const t=(new DOMParser).parseFromString(`<div>${e}</div>`,"text/html").body.firstElementChild;return t?(m(t),t.innerHTML):""}function m(e){const t=Array.from(e.children);for(const n of t){const e=n.tagName.toLowerCase();if(d.has(e)){for(const t of Array.from(n.attributes)){const r=t.name.toLowerCase();if(r.startsWith("on"))n.removeAttribute(t.name);else if(f.has(r))n.removeAttribute(t.name);else if("style"!==r)if((u[e]??new Set).has(r)||u["*"].has(r)){if(("href"===r||"src"===r)&&"string"==typeof t.value){const e=c(t.value);null===e?n.removeAttribute(t.name):n.setAttribute(t.name,e)}"name"!==r&&"id"!==r||!f.has(t.value.toLowerCase())||n.removeAttribute(t.name)}else n.removeAttribute(t.name);else n.setAttribute("style",h(t.value))}m(n)}else n.remove()}}function h(e){if("string"!=typeof e)return"";let t=e;return t=t.replace(/expression\s*\([^)]*\)/gi,""),t=t.replace(/url\s*\(\s*['"]?\s*(javascript|vbscript|data)\s*:[^)]*\)/gi,"url(#)"),t=t.replace(/@import[^;]*;?/gi,""),t=t.replace(/behavior\s*:[^;]*;?/gi,""),t=t.replace(/-moz-binding[^;]*;?/gi,""),t=t.replace(/[<>]/g,""),t=t.replace(/[\u0000-\u001F\u007F]/g,""),t.trim()}var g=new Set(["__proto__","constructor","prototype"]);function y(e){if(Array.isArray(e))return e.map(y);if(e&&"object"==typeof e){const t={};for(const[n,r]of Object.entries(e))g.has(n)||(t[n]=y(r));return t}return e}function b(){if("undefined"==typeof window)return!1;try{return window.top!==window.self}catch{return!0}}var x=[{name:"ssn",re:/\b\d{3}-\d{2}-\d{4}\b/g,repl:"[redacted-ssn]"},{name:"credit",re:/\b(?:\d[ -]?){13,19}\b/g,repl:e=>{const t=e.replace(/[ -]/g,"");return t.length<13||t.length>19?e:function(e){let t=0,n=!1;for(let r=e.length-1;r>=0;r--){let o=e.charCodeAt(r)-48;if(o<0||o>9)return!1;n&&(o*=2,o>9&&(o-=9)),t+=o,n=!n}return t>0&&t%10==0}(t)?"[redacted-card]":e}},{name:"email",re:/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/gi,repl:"[redacted-email]"},{name:"phone",re:/\b(\+?\d{1,3}[ -])?\(?\d{3}\)?[ -]?\d{3}[ -]?\d{4}\b/g,repl:"[redacted-phone]"},{name:"apikey",re:/\b(sk|pk|rk)-[A-Za-z0-9]{20,}\b/g,repl:"[redacted-key]"}];Object.freeze({sanitizeString:l,sanitizeHref:c,sanitizeHTML:p,sanitizeCSS:h,sanitizeJSON:function(e){try{return y(JSON.parse(e,(e,t)=>{if(!g.has(e))return t}))}catch{return null}},sanitizeUnicode:function(e){if("string"!=typeof e)return"";const t=e.replace(/[\u200B-\u200F\u202A-\u202E\u2060-\u206F\uFEFF\u00AD]/g,"");return t.length!==e.length&&a("unicode-stripped","Removed bidirectional / zero-width control characters (Trojan-Source vector)","critical",{charsRemoved:e.length-t.length}),t},isSafeAttrName:function(e){return!("string"!=typeof e||!e||/[\u0000-\u001F\u007F<>"]/.test(e)||f.has(e.toLowerCase()))},buildTkxCSP:function(e={}){const{allowInlineStyles:t=!0,imgHosts:n=[],connectHosts:r=[],fontHosts:o=[],scriptNonce:i,reportUri:s}=e,a=["default-src 'self'","script-src "+(i?`'self' 'nonce-${i}'`:"'self'"),"style-src "+(t?"'self' 'unsafe-inline'":"'self'"),`img-src ${["'self'","data:","https:",...n].join(" ")}`,`font-src ${["'self'","https:","data:",...o].join(" ")}`,`connect-src ${["'self'",...r].join(" ")}`,"frame-ancestors 'none'","form-action 'self'","base-uri 'self'","object-src 'none'","upgrade-insecure-requests"];return s&&a.push(`report-uri ${s}`),a.join("; ")},installTrustedTypes:function(){if("undefined"==typeof window)return;const e=window.trustedTypes;if(e)try{e.createPolicy("tkx",{createHTML:p,createScriptURL:e=>c(e)??"",createScript:()=>{throw new Error("TekiVex: inline script creation forbidden")}})}catch{}},isFramed:b,installFrameBuster:function(e){if("undefined"!=typeof window&&b())if(a("clickjacking-detected","Page is embedded in a cross-origin frame — clickjacking precondition","critical"),e)e();else try{window.top.location.href=window.self.location.href}catch{}},createRateLimiter:function(e,t){let n=e,r=Date.now();return{check(){const o=Date.now(),i=o-r,s=Math.floor(i/t);return s>0&&(n=Math.min(e,n+s),r=o),n<=0?(a("rate-limited","Action throttled — token bucket exhausted","warning",{capacity:e,intervalMs:t}),!1):(n-=1,!0)},reset(){n=e,r=Date.now()}}},sniffMimeType:async function(e){const t=new Uint8Array(await e.slice(0,12).arrayBuffer()),n=(...e)=>e.every((e,n)=>t[n]===e);return n(137,80,78,71)?"image/png":n(255,216,255)?"image/jpeg":n(71,73,70,56)?"image/gif":n(66,77)?"image/bmp":n(82,73,70,70)&&87===t[8]&&69===t[9]&&66===t[10]&&80===t[11]?"image/webp":n(37,80,68,70)?"application/pdf":n(80,75,3,4)?"application/zip":123===t[0]||91===t[0]?"application/json":[...t].includes(0)?(a("mime-rejected",`File "${e.name}" rejected — magic bytes match no allow-listed type (claimed: ${e.type||"unknown"})`,"critical",{name:e.name,claimedType:e.type}),null):"text/plain"},scrubPII:function(e){if("string"!=typeof e)return"";let t=e,n=0;for(const{re:r,repl:o}of x)t="function"==typeof o?t.replace(r,e=>(n++,o(e))):t.replace(r,e=>(n++,o));return n>0&&a("pii-redacted",`Redacted ${n} PII token${1===n?"":"s"} before the text left the trust boundary`,"warning",{redactions:n}),t},deepFreeze:function e(t){if(t&&"object"==typeof t&&!Object.isFrozen(t)){for(const n of Object.keys(t))e(t[n]);Object.freeze(t)}return t},__brand:"TekiVex SecurityCore v2.6.0 © 007krcs"});var w=!1;function v({item:t,isNew:n,showTimestamps:r,onItemClick:o,renderItem:i,theme:s,style:a}){const c=function(e,t){switch(e){case"info":return t.info;case"success":return t.success;case"warning":return t.warning;case"error":return t.danger;default:return t.border}}(t.type,s);return i?(0,e.createElement)("div",{style:a,className:n?"tkx-feed-item-new":void 0},i(t)):(0,e.createElement)("div",{style:{...a,display:"flex",alignItems:"center",gap:10,padding:"0 12px",borderLeft:`3px solid ${c}`,cursor:o?"pointer":"default",boxSizing:"border-box",height:64,background:s.surface,transition:"background 0.15s"},className:n?"tkx-feed-item-new":void 0,onClick:o?()=>o(t):void 0,role:o?"button":void 0,tabIndex:o?0:void 0,onKeyDown:o?e=>{"Enter"!==e.key&&" "!==e.key||o(t)}:void 0},(0,e.createElement)("div",{style:{width:36,height:36,borderRadius:"50%",background:c,display:"flex",alignItems:"center",justifyContent:"center",fontSize:13,fontWeight:700,color:s.bg,flexShrink:0,overflow:"hidden"}},t.avatar?(0,e.createElement)("img",{src:t.avatar,alt:t.author??"",style:{width:"100%",height:"100%",objectFit:"cover"}}):(d=t.author)?d.split(" ").map(e=>e[0]??"").slice(0,2).join("").toUpperCase():"?"),(0,e.createElement)("div",{style:{flex:1,minWidth:0}},(0,e.createElement)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:2}},t.author&&(0,e.createElement)("span",{style:{fontWeight:600,fontSize:13,color:s.text}},l(t.author)),t.meta&&(0,e.createElement)("span",{style:{fontSize:11,color:s.textMuted,background:s.surfaceAlt,borderRadius:4,padding:"1px 5px"}},l(t.meta))),(0,e.createElement)("div",{style:{fontSize:13,color:s.text,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},l(t.content))),r&&(0,e.createElement)("div",{style:{fontSize:11,color:s.textMuted,flexShrink:0}},function(e){const t=Date.now()-e;return t<1e4?"just now":t<6e4?`${Math.floor(t/1e3)}s ago`:t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:`${Math.floor(t/864e5)}d ago`}(t.timestamp)));var d}var k=!1;function S(e,t){if("string"==typeof e)return e;const n=e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(Number.isInteger(e)?e:e.toFixed(2));return t?`${n}${t}`:n}function $({data:t,color:n}){if(t.length<2)return null;const r=Math.min(...t),o=Math.max(...t)-r||1,i=t.map((e,n)=>{const i=n/(t.length-1)*80,s=24-(e-r)/o*22-1;return`${i.toFixed(1)},${s.toFixed(1)}`});return(0,e.createElement)("svg",{width:80,height:24,viewBox:"0 0 80 24","aria-hidden":"true"},(0,e.createElement)("polyline",{points:i.join(" "),fill:"none",stroke:n,strokeWidth:1.5,strokeLinejoin:"round",strokeLinecap:"round"}))}function M({trend:t,theme:n}){return"up"===t?(0,e.createElement)("span",{style:{color:n.success,fontSize:14,fontWeight:700}},"▲"):"down"===t?(0,e.createElement)("span",{style:{color:n.danger,fontSize:14,fontWeight:700}},"▼"):(0,e.createElement)("span",{style:{color:n.textMuted,fontSize:14}},"→")}function z({metric:t,animate:n,onMetricClick:r,theme:o}){const i=t.color??function(e,t){switch(e){case"warning":return t.warning;case"critical":return t.danger;default:return t.primary}}(t.status,o),s="number"==typeof t.value?t.value:NaN,a=function(t,n,r){const[o,i]=(0,e.useState)(t),s=(0,e.useRef)(t),a=(0,e.useRef)(null),l=(0,e.useRef)(null),c=function(){const[t,n]=(0,e.useState)(()=>"undefined"!=typeof window&&window.matchMedia("(prefers-reduced-motion: reduce)").matches);return(0,e.useEffect)(()=>{if("undefined"==typeof window)return;const e=window.matchMedia("(prefers-reduced-motion: reduce)"),t=e=>n(e.matches);return e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),t}();return(0,e.useEffect)(()=>{if(!r||c)return i(t),void(s.current=t);const e=s.current;if(e===t)return;a.current=null;const n=r=>{null===a.current&&(a.current=r);const o=r-a.current,c=Math.min(o/600,1),d=1-Math.pow(1-c,3);i(e+(t-e)*d),c<1?l.current=requestAnimationFrame(n):s.current=t};return l.current=requestAnimationFrame(n),()=>{null!==l.current&&cancelAnimationFrame(l.current)}},[t,600,r,c]),o}(isNaN(s)?0:s,0,n&&!isNaN(s)),[c,d]=(0,e.useState)(!1),u=(0,e.useRef)(t.value);(0,e.useEffect)(()=>{if(u.current!==t.value){u.current=t.value,d(!0);const e=window.setTimeout(()=>d(!1),700);return()=>clearTimeout(e)}},[t.value]);const f=void 0!==t.previousValue&&t.previousValue!==s,p={background:o.surface,border:`1px solid ${o.border}`,borderLeft:`4px solid ${i}`,borderRadius:8,padding:"14px 16px",cursor:r?"pointer":"default",position:"relative",overflow:"hidden",boxSizing:"border-box"},m=c?{position:"absolute",inset:0,background:`linear-gradient(90deg, transparent 0%, ${i}22 50%, transparent 100%)`,backgroundSize:"200% 100%",animation:"tkx-metric-shimmer 0.6s ease-in-out",pointerEvents:"none"}:{},h=isNaN(s)?l(String(t.value)):S(a,t.unit);return(0,e.createElement)("div",{style:p,className:c?"tkx-metric-shimmer":void 0,onClick:r?()=>r(t):void 0,role:r?"button":void 0,tabIndex:r?0:void 0},c&&(0,e.createElement)("div",{style:m}),(0,e.createElement)("div",{style:{fontSize:12,color:o.textMuted,marginBottom:6,fontWeight:500,letterSpacing:"0.03em"}},l(t.label)),(0,e.createElement)("div",{style:{display:"flex",alignItems:"flex-end",gap:6,marginBottom:6}},(0,e.createElement)("span",{style:{fontSize:28,fontWeight:700,color:o.text,lineHeight:1}},h),t.unit&&isNaN(s)&&(0,e.createElement)("span",{style:{fontSize:14,color:o.textMuted,marginBottom:2}},l(t.unit))),(t.trend||t.trendValue)&&(0,e.createElement)("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:t.sparkline?8:0}},t.trend&&(0,e.createElement)(M,{trend:t.trend,theme:o}),t.trendValue&&(0,e.createElement)("span",{style:{fontSize:12,color:o.textMuted}},l(t.trendValue))),f&&(0,e.createElement)("div",{style:{fontSize:11,color:o.textMuted,marginTop:2}},`was ${S(t.previousValue)}`),t.sparkline&&t.sparkline.length>=2&&(0,e.createElement)("div",{style:{marginTop:8}},(0,e.createElement)($,{data:t.sparkline,color:i})))}function N(e){const t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`}function j(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)}var F={debug:0,info:1,warn:2,error:3,fatal:4},T=!1;function I({entry:t,showLevel:n,showTimestamp:r,showSource:o,searchQuery:i,monospace:s,isExpanded:a,onToggle:c,onEntryClick:d,theme:u,style:f}){const p=function(e,t){switch(e){case"debug":default:return t.textMuted;case"info":return t.info;case"warn":return t.warning;case"error":case"fatal":return t.danger}}(t.level,u),m=function(e,t){return"fatal"===e?`${t.danger}22`:"transparent"}(t.level,u),h=t.metadata&&Object.keys(t.metadata).length>0,g={...f,display:"flex",alignItems:"center",gap:6,padding:"0 10px",fontSize:12,fontFamily:s?'"JetBrains Mono", "Fira Mono", Consolas, monospace':"inherit",cursor:h||d?"pointer":"default",background:m,boxSizing:"border-box",height:28,overflow:"hidden",whiteSpace:"nowrap",borderBottom:`1px solid ${u.border}22`};return(0,e.createElement)("div",{style:g,className:"tkx-log-row",onClick:()=>{h&&c(),d&&d(t)},role:h?"button":void 0,tabIndex:h?0:void 0,onKeyDown:h?e=>{"Enter"!==e.key&&" "!==e.key||c()}:void 0,"aria-expanded":h?a:void 0},r&&(0,e.createElement)("span",{style:{color:u.textMuted,flexShrink:0,minWidth:84}},function(e){const t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}.${String(t.getMilliseconds()).padStart(3,"0")}`}(t.timestamp)),n&&(0,e.createElement)("span",{style:{color:p,flexShrink:0,fontWeight:"fatal"===t.level?700:500,minWidth:56}},`[${t.level.toUpperCase().padEnd(5)}]`),o&&t.source&&(0,e.createElement)("span",{style:{background:u.surfaceAlt,border:`1px solid ${u.border}`,borderRadius:10,padding:"0 5px",fontSize:10,color:u.textMuted,flexShrink:0,maxWidth:80,overflow:"hidden",textOverflow:"ellipsis"}},l(t.source)),(0,e.createElement)("span",{style:{flex:1,color:u.text,overflow:"hidden",textOverflow:"ellipsis"}},...function(t,n){if(!n)return[t];const r=l(t),o=l(n);if(!o)return[r];try{const t=new RegExp(`(${o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");return r.split(t).map((n,r)=>t.test(n)?(0,e.createElement)("mark",{key:r,className:"tkx-log-highlight"},n):n)}catch{return[r]}}(t.message,i)),h&&(0,e.createElement)("span",{style:{color:u.textMuted,fontSize:10,flexShrink:0}},a?"▲":"▼"))}function L({metadata:t,theme:n,style:r}){return(0,e.createElement)("div",{style:{...r,background:n.surfaceAlt,borderBottom:`1px solid ${n.border}`,padding:"6px 10px 6px 56px",display:"flex",flexWrap:"wrap",gap:6,boxSizing:"border-box"}},...Object.entries(t).map(([t,r])=>(0,e.createElement)("span",{key:t,style:{fontSize:11,fontFamily:"monospace",color:n.textMuted,background:n.surface,border:`1px solid ${n.border}`,borderRadius:4,padding:"1px 6px"}},(0,e.createElement)("span",{style:{color:n.info}},`${l(t)}: `),l(String(r)))))}exports.TkxLiveFeed=function({items:t,maxItems:r=100,height:o=400,autoScroll:i=!0,showTimestamps:s=!0,onItemClick:a,emptyMessage:c="No activity yet.",pauseOnHover:d=!0,renderItem:u,className:f,style:p}){const m=n();!function(){if(w||"undefined"==typeof document)return;w=!0;const e=document.createElement("style");e.id="tkx-live-feed-styles",e.textContent="\n@keyframes tkx-feed-slide-in {\n from { transform: translateY(-20px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n.tkx-feed-item-new {\n animation: tkx-feed-slide-in 0.25s ease-out both;\n}\n ".trim(),document.head.appendChild(e)}();const h=(0,e.useRef)(null),[g,y]=(0,e.useState)(0),[b,x]=(0,e.useState)(!1),[k,S]=(0,e.useState)(new Set),$=(0,e.useRef)([]),M=(0,e.useMemo)(()=>t.slice(-r),[t,r]),z="number"==typeof o?o:400,N=64*M.length;(0,e.useEffect)(()=>{const e=new Set($.current.map(e=>e.id)),t=M.filter(t=>!e.has(t.id)).map(e=>e.id);if(t.length>0){S(e=>{const n=new Set(e);return t.forEach(e=>n.add(e)),n});const e=window.setTimeout(()=>{S(e=>{const n=new Set(e);return t.forEach(e=>n.delete(e)),n})},400);return()=>clearTimeout(e)}},[M]),(0,e.useEffect)(()=>{$.current=M},[M]);const j=i&&!(d&&b);(0,e.useEffect)(()=>{if(!j||!h.current)return;const e=h.current;(e.scrollHeight-e.scrollTop-e.clientHeight<192||M.length<=5)&&(e.scrollTop=e.scrollHeight)},[M.length,j]);const F=(0,e.useCallback)(()=>{h.current&&y(h.current.scrollTop)},[]),T=Math.max(0,Math.floor(g/64)-5),I=Math.min(M.length-1,Math.ceil((g+z)/64)+5),L={position:"relative",overflow:"auto",height:"number"==typeof o?`${o}px`:o,background:m.bg,border:`1px solid ${m.border}`,borderRadius:8,boxSizing:"border-box"},C={position:"relative",height:N,minHeight:"100%"};if(0===M.length)return(0,e.createElement)("div",{className:f,style:{...L,display:"flex",alignItems:"center",justifyContent:"center",...p}},(0,e.createElement)("span",{style:{color:m.textMuted,fontSize:14}},l(c)));const W=[];for(let n=T;n<=I;n++){const t=M[n];t&&W.push((0,e.createElement)(v,{key:t.id,item:t,isNew:k.has(t.id),showTimestamps:s,onItemClick:a,renderItem:u,theme:m,style:{position:"absolute",top:64*n,left:0,right:0}}))}return(0,e.createElement)("div",{ref:h,className:f,style:{...L,...p},onScroll:F,onMouseEnter:d?()=>x(!0):void 0,onMouseLeave:d?()=>x(!1):void 0,"aria-label":"Live feed",role:"feed"},(0,e.createElement)("div",{style:C},...W))},exports.TkxLiveLog=function({entries:t,maxEntries:r=500,height:o=400,autoScroll:i=!0,showLevel:s=!0,showTimestamp:a=!0,showSource:l=!0,filterLevel:c,searchQuery:d="",monospace:u=!0,onEntryClick:f}){const p=n();!function(){if(T||"undefined"==typeof document)return;T=!0;const e=document.createElement("style");e.id="tkx-live-log-styles",e.textContent="\n.tkx-log-row:hover { filter: brightness(1.12); }\n.tkx-log-highlight { background: #ffbe0b55; border-radius: 2px; padding: 0 1px; }\n ".trim(),document.head.appendChild(e)}();const m=(0,e.useRef)(null),[h,g]=(0,e.useState)(0),[y,b]=(0,e.useState)(new Set),[x,w]=(0,e.useState)(!1),v=(0,e.useRef)(t.length),k=(0,e.useMemo)(()=>{let e=t.slice(-r);if(void 0!==c){const t=F[c];e=e.filter(e=>F[e.level]>=t)}if(d){const t=d.toLowerCase();e=e.filter(e=>e.message.toLowerCase().includes(t)||(e.source??"").toLowerCase().includes(t))}return e},[t,r,c,d]),S="number"==typeof o?o:400,$=(0,e.useMemo)(()=>{const e=[];let t=0;for(const n of k)e.push(t),t+=28+(y.has(n.id)?40:0);return e.push(t),e},[k,y]),M=$[$.length-1]??0;(0,e.useEffect)(()=>{i&&!x&&k.length!==v.current&&(v.current=k.length,m.current&&(m.current.scrollTop=m.current.scrollHeight))},[k.length,i,x]);const z=(0,e.useCallback)(()=>{if(!m.current)return;const e=m.current;w(!(e.scrollHeight-e.scrollTop-e.clientHeight<56)),g(e.scrollTop)},[]),N=(0,e.useCallback)(e=>{b(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),j=k.length>0?function(e){let t=0,n=k.length-1;for(;t<n;){const r=t+n>>1;($[r+1]??0)<=e?t=r+1:n=r}return Math.max(0,t-8)}(h):0,C=k.length>0?function(e){let t=0,n=k.length-1;for(;t<n;){const r=t+n+1>>1;($[r]??0)>=e+S?n=r-1:t=r}return Math.min(k.length-1,t+8)}(h):-1,W={position:"relative",overflow:"auto",height:"number"==typeof o?`${o}px`:o,background:p.bg,border:`1px solid ${p.border}`,borderRadius:8,boxSizing:"border-box"},A={position:"relative",height:M,minHeight:"100%"};if(0===k.length)return(0,e.createElement)("div",{style:{...W,display:"flex",alignItems:"center",justifyContent:"center"}},(0,e.createElement)("span",{style:{color:p.textMuted,fontSize:13,fontFamily:"monospace"}},"No log entries."));const O=[];for(let n=j;n<=C;n++){const t=k[n];if(!t)continue;const r=$[n]??0,o=y.has(t.id);O.push((0,e.createElement)(I,{key:t.id,entry:t,showLevel:s,showTimestamp:a,showSource:l,searchQuery:d,monospace:u,isExpanded:o,onToggle:()=>N(t.id),onEntryClick:f,theme:p,style:{position:"absolute",top:r,left:0,right:0}})),o&&t.metadata&&Object.keys(t.metadata).length>0&&O.push((0,e.createElement)(L,{key:`${t.id}-meta`,metadata:t.metadata,theme:p,style:{position:"absolute",top:r+28,left:0,right:0,height:40}}))}return(0,e.createElement)("div",{ref:m,style:W,onScroll:z,role:"log","aria-live":"polite","aria-label":"Log viewer"},(0,e.createElement)("div",{style:A},...O))},exports.TkxLiveMetrics=function({metrics:t,columns:r=3,animate:o=!0,onMetricClick:i}){const s=n();return function(){if(k||"undefined"==typeof document)return;k=!0;const e=document.createElement("style");e.id="tkx-live-metrics-styles",e.textContent="\n@keyframes tkx-metric-pulse {\n 0% { opacity: 1; }\n 40% { opacity: 0.4; }\n 100% { opacity: 1; }\n}\n@keyframes tkx-metric-shimmer {\n 0% { background-position: -200% 0; }\n 100% { background-position: 200% 0; }\n}\n.tkx-metric-shimmer {\n animation: tkx-metric-shimmer 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .tkx-metric-shimmer { animation: none; }\n .tkx-metric-pulse { animation: none; }\n}\n ".trim(),document.head.appendChild(e)}(),(0,e.createElement)("div",{style:{display:"grid",gridTemplateColumns:`repeat(${r}, minmax(0, 1fr))`,gap:16}},...t.map(t=>(0,e.createElement)(z,{key:t.id,metric:t,animate:o,onMetricClick:i,theme:s})))},exports.TkxRealTimeChart=function({data:t,maxPoints:r=60,height:o=200,width:i="100%",color:s,fill:a=!0,showGrid:c=!0,showLabels:d=!0,showTooltip:u=!0,label:f,unit:p,animate:m=!0,yMin:h,yMax:g,className:y,style:b}){const x=n(),w=s??x.primary,v=(0,e.useRef)(null),[k,S]=(0,e.useState)(600),[$,M]=(0,e.useState)(null),[z,F]=(0,e.useState)(0),T=(0,e.useRef)(t.length);(0,e.useEffect)(()=>{if(!v.current)return;const e=new ResizeObserver(e=>{const t=e[0];t&&S(t.contentRect.width)});return e.observe(v.current),S(v.current.offsetWidth),()=>e.disconnect()},[]);const I=(0,e.useMemo)(()=>t.slice(-r),[t,r]);(0,e.useEffect)(()=>{I.length>T.current&&F(e=>e+1),T.current=I.length},[I.length]);const L=d?48:12,C=f?28:12,W=Math.max(k-L-12,1),A=Math.max(o-C-28,1),O=I.length?Math.min(...I.map(e=>e.value)):0,E=I.length?Math.max(...I.map(e=>e.value)):1,D=E-O||1,R=void 0!==h?h:O-.1*D,B=(void 0!==g?g:E+.1*D)-R||1;function _(e){return I.length<2?W/2:e/(I.length-1)*W}function H(e){return A-(e-R)/B*A}const P=I.length>=2?I.map((e,t)=>`${0===t?"M":"L"}${_(t).toFixed(2)},${H(e.value).toFixed(2)}`).join(" "):"",q=P?`${P} L${_(I.length-1).toFixed(2)},${A} L${_(0).toFixed(2)},${A} Z`:"",U=[];for(let e=0;e<=4;e++)U.push(e);const Z=U.map(e=>{const t=R+e/4*B;return{y:H(t),text:j(t)}}),J=Math.min(4,I.length),Q=J>0?Array.from({length:J},(e,t)=>Math.round(t/Math.max(J-1,1)*(I.length-1))):[],K=(0,e.useCallback)(e=>{if(!u||0===I.length)return;const t=e.currentTarget.getBoundingClientRect(),n=e.clientX-t.left-L;let r=0,o=1/0;I.forEach((e,t)=>{const i=Math.abs(_(t)-n);i<o&&(o=i,r=t)});const i=I[r];i&&M({x:_(r)+L,y:H(i.value)+C,point:i})},[I,u,L,C]),V=(0,e.useCallback)(()=>M(null),[]),Y=k,G=o,X=`tkx-chart-clip-${z}`;return(0,e.createElement)("div",{ref:v,className:y,style:{position:"relative",width:"number"==typeof i?`${i}px`:i,background:x.surface,border:`1px solid ${x.border}`,borderRadius:8,overflow:"hidden",boxSizing:"border-box",...b}},(0,e.createElement)("svg",{width:Y,height:G,viewBox:`0 0 ${Y} ${G}`,onMouseMove:K,onMouseLeave:V,style:{display:"block",userSelect:"none"},"aria-label":f?l(f):"Real-time chart"},m&&I.length>=2&&(0,e.createElement)("defs",null,(0,e.createElement)("clipPath",{id:X},(0,e.createElement)("rect",{x:0,y:0,width:W,height:G},(0,e.createElement)("animate",{attributeName:"width",from:Math.max(0,W-W/Math.max(I.length-1,1)),to:W,dur:"0.3s",fill:"freeze"})))),f&&(0,e.createElement)("text",{x:L,y:18,fill:x.textMuted,fontSize:12,fontWeight:500},l(f)),c&&U.map(t=>{const n=H(R+t/4*B)+C;return(0,e.createElement)("line",{key:`grid-${t}`,x1:L,y1:n,x2:L+W,y2:n,stroke:x.border,strokeWidth:1,strokeDasharray:"4 4"})}),d&&Z.map((t,n)=>(0,e.createElement)("text",{key:`yl-${n}`,x:L-4,y:t.y+C+4,fill:x.textMuted,fontSize:10,textAnchor:"end"},t.text)),p&&(0,e.createElement)("text",{x:4,y:C+10,fill:x.textMuted,fontSize:9},l(p)),a&&q&&(0,e.createElement)("path",{d:q,fill:`${w}22`,clipPath:m?`url(#${X})`:void 0,transform:`translate(${L}, ${C})`}),P&&(0,e.createElement)("path",{d:P,fill:"none",stroke:w,strokeWidth:2,strokeLinejoin:"round",strokeLinecap:"round",clipPath:m?`url(#${X})`:void 0,transform:`translate(${L}, ${C})`}),Q.map(t=>{const n=I[t];return n?(0,e.createElement)("text",{key:`xl-${t}`,x:L+_(t),y:G-8,fill:x.textMuted,fontSize:9,textAnchor:"middle"},N(n.timestamp)):null}),$&&(0,e.createElement)("line",{x1:$.x,y1:C,x2:$.x,y2:C+A,stroke:w,strokeWidth:1,strokeDasharray:"3 3",opacity:.6}),$&&(0,e.createElement)("circle",{cx:$.x,cy:$.y,r:4,fill:w,stroke:x.surface,strokeWidth:2}),$&&(()=>{const t=Math.min($.x+8,Y-100),n=Math.max($.y-36,4),r=`${j($.point.value)}${p||""}`,o=N($.point.timestamp);return(0,e.createElement)("g",null,(0,e.createElement)("rect",{x:t-4,y:n-2,width:90,height:34,rx:4,fill:x.surfaceAlt,stroke:x.border,strokeWidth:1}),(0,e.createElement)("text",{x:t,y:n+11,fill:x.text,fontSize:12,fontWeight:700},r),(0,e.createElement)("text",{x:t,y:n+26,fill:x.textMuted,fontSize:10},o))})()))};
|
package/dist/realtime.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createContext as e,createElement as t,useCallback as n,useContext as r,useEffect as o,useMemo as i,useRef as s,useState as a}from"react";var l=e({bg:"#0a0a0f",surface:"#12121a",surfaceAlt:"#1a1a2e",border:"#2a2a3e",text:"#e8e8f4",textMuted:"#8888aa",primary:"#00f5d4",secondary:"#7b2ff7",danger:"#f72585",warning:"#ffbe0b",success:"#06d6a0",info:"#3a86ff"});function c(){return r(l)}new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);var d={"<":"<",">":">","&":"&","'":"'",'"':""","`":"`"};function u(e){if(null==e)return"";let t=String(e);return t=t.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g,""),t.replace(/[<>&'"`]/g,e=>d[e]??e)}function f(e){if("string"!=typeof e)return null;const t=e.trim();if(!t)return null;const n=t.replace(/[\u0000-\u001F\u007F]/g,"");return/^javascript:/i.test(n)||/^vbscript:/i.test(n)||/^data:/i.test(n)&&!/^data:image\//i.test(n)||/^file:/i.test(n)?null:n}var p=new Set(["a","abbr","b","blockquote","br","code","del","div","em","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","li","mark","ol","p","pre","q","s","samp","small","span","strong","sub","sup","table","tbody","td","tfoot","th","thead","tr","u","ul"]),m={a:new Set(["href","title","target","rel"]),img:new Set(["src","alt","title","width","height","loading","decoding"]),th:new Set(["scope","colspan","rowspan","align"]),td:new Set(["colspan","rowspan","align"]),"*":new Set(["id","class","lang","dir","title"])},h=new Set(["constructor","prototype","__proto__","submit","reset","action","method","enctype","target","elements","children","firstChild","nextSibling","parentNode","ownerDocument","cookie","domain","location","documentElement","body","head","title","contentWindow","contentDocument"]);function g(e){if("string"!=typeof e)return"";if("undefined"==typeof DOMParser)return u(e);const t=(new DOMParser).parseFromString(`<div>${e}</div>`,"text/html").body.firstElementChild;return t?(y(t),t.innerHTML):""}function y(e){const t=Array.from(e.children);for(const n of t){const e=n.tagName.toLowerCase();if(p.has(e)){for(const t of Array.from(n.attributes)){const r=t.name.toLowerCase();if(r.startsWith("on"))n.removeAttribute(t.name);else if(h.has(r))n.removeAttribute(t.name);else if("style"!==r)if((m[e]??/* @__PURE__ */new Set).has(r)||m["*"].has(r)){if(("href"===r||"src"===r)&&"string"==typeof t.value){const e=f(t.value);null===e?n.removeAttribute(t.name):n.setAttribute(t.name,e)}"name"!==r&&"id"!==r||!h.has(t.value.toLowerCase())||n.removeAttribute(t.name)}else n.removeAttribute(t.name);else n.setAttribute("style",b(t.value))}y(n)}else n.remove()}}function b(e){if("string"!=typeof e)return"";let t=e;return t=t.replace(/expression\s*\([^)]*\)/gi,""),t=t.replace(/url\s*\(\s*['"]?\s*(javascript|vbscript|data)\s*:[^)]*\)/gi,"url(#)"),t=t.replace(/@import[^;]*;?/gi,""),t=t.replace(/behavior\s*:[^;]*;?/gi,""),t=t.replace(/-moz-binding[^;]*;?/gi,""),t=t.replace(/[<>]/g,""),t=t.replace(/[\u0000-\u001F\u007F]/g,""),t.trim()}var x=new Set(["__proto__","constructor","prototype"]);function w(e){if(Array.isArray(e))return e.map(w);if(e&&"object"==typeof e){const t={};for(const[n,r]of Object.entries(e))x.has(n)||(t[n]=w(r));return t}return e}function v(){if("undefined"==typeof window)return!1;try{return window.top!==window.self}catch{return!0}}var k=[{name:"ssn",re:/\b\d{3}-\d{2}-\d{4}\b/g,repl:"[redacted-ssn]"},{name:"credit",re:/\b(?:\d[ -]?){13,19}\b/g,repl:e=>{const t=e.replace(/[ -]/g,"");return t.length<13||t.length>19?e:function(e){let t=0,n=!1;for(let r=e.length-1;r>=0;r--){let o=e.charCodeAt(r)-48;if(o<0||o>9)return!1;n&&(o*=2,o>9&&(o-=9)),t+=o,n=!n}return t>0&&t%10==0}(t)?"[redacted-card]":e}},{name:"email",re:/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/gi,repl:"[redacted-email]"},{name:"phone",re:/\b(\+?\d{1,3}[ -])?\(?\d{3}\)?[ -]?\d{3}[ -]?\d{4}\b/g,repl:"[redacted-phone]"},{name:"apikey",re:/\b(sk|pk|rk)-[A-Za-z0-9]{20,}\b/g,repl:"[redacted-key]"}];Object.freeze({sanitizeString:u,sanitizeHref:f,sanitizeHTML:g,sanitizeCSS:b,sanitizeJSON:function(e){try{return w(JSON.parse(e,(e,t)=>{if(!x.has(e))return t}))}catch{return null}},sanitizeUnicode:function(e){return"string"!=typeof e?"":e.replace(/[\u200B-\u200F\u202A-\u202E\u2060-\u206F\uFEFF\u00AD]/g,"")},isSafeAttrName:function(e){return!("string"!=typeof e||!e||/[\u0000-\u001F\u007F<>"]/.test(e)||h.has(e.toLowerCase()))},buildTkxCSP:function(e={}){const{allowInlineStyles:t=!0,imgHosts:n=[],connectHosts:r=[],fontHosts:o=[],scriptNonce:i,reportUri:s}=e,a=["default-src 'self'","script-src "+(i?`'self' 'nonce-${i}'`:"'self'"),"style-src "+(t?"'self' 'unsafe-inline'":"'self'"),`img-src ${["'self'","data:","https:",...n].join(" ")}`,`font-src ${["'self'","https:","data:",...o].join(" ")}`,`connect-src ${["'self'",...r].join(" ")}`,"frame-ancestors 'none'","form-action 'self'","base-uri 'self'","object-src 'none'","upgrade-insecure-requests"];return s&&a.push(`report-uri ${s}`),a.join("; ")},installTrustedTypes:function(){if("undefined"==typeof window)return;const e=window.trustedTypes;if(e)try{e.createPolicy("tkx",{createHTML:g,createScriptURL:e=>f(e)??"",createScript:()=>{throw new Error("TekiVex: inline script creation forbidden")}})}catch{}},isFramed:v,installFrameBuster:function(e){if("undefined"!=typeof window&&v())if(e)e();else try{window.top.location.href=window.self.location.href}catch{}},createRateLimiter:function(e,t){let n=e,r=Date.now();return{check(){const o=Date.now(),i=o-r,s=Math.floor(i/t);return s>0&&(n=Math.min(e,n+s),r=o),!(n<=0||(n-=1,0))},reset(){n=e,r=Date.now()}}},sniffMimeType:async function(e){const t=new Uint8Array(await e.slice(0,12).arrayBuffer()),n=(...e)=>e.every((e,n)=>t[n]===e);return n(137,80,78,71)?"image/png":n(255,216,255)?"image/jpeg":n(71,73,70,56)?"image/gif":n(66,77)?"image/bmp":n(82,73,70,70)&&87===t[8]&&69===t[9]&&66===t[10]&&80===t[11]?"image/webp":n(37,80,68,70)?"application/pdf":n(80,75,3,4)?"application/zip":123===t[0]||91===t[0]?"application/json":[...t].includes(0)?null:"text/plain"},scrubPII:function(e){if("string"!=typeof e)return"";let t=e;for(const{re:n,repl:r}of k)t=t.replace(n,r);return t},deepFreeze:function e(t){if(t&&"object"==typeof t&&!Object.isFrozen(t)){for(const n of Object.keys(t))e(t[n]);Object.freeze(t)}return t},__brand:"TekiVex SecurityCore v2.6.0 © 007krcs"});var S=!1;function $({item:e,isNew:n,showTimestamps:r,onItemClick:o,renderItem:i,theme:s,style:a}){const l=function(e,t){switch(e){case"info":return t.info;case"success":return t.success;case"warning":return t.warning;case"error":return t.danger;default:return t.border}}(e.type,s);return i?t("div",{style:a,className:n?"tkx-feed-item-new":void 0},i(e)):t("div",{style:{...a,display:"flex",alignItems:"center",gap:10,padding:"0 12px",borderLeft:`3px solid ${l}`,cursor:o?"pointer":"default",boxSizing:"border-box",height:64,background:s.surface,transition:"background 0.15s"},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?t=>{"Enter"!==t.key&&" "!==t.key||o(e)}:void 0},t("div",{style:{width:36,height:36,borderRadius:"50%",background:l,display:"flex",alignItems:"center",justifyContent:"center",fontSize:13,fontWeight:700,color:s.bg,flexShrink:0,overflow:"hidden"}},e.avatar?t("img",{src:e.avatar,alt:e.author??"",style:{width:"100%",height:"100%",objectFit:"cover"}}):(c=e.author)?c.split(" ").map(e=>e[0]??"").slice(0,2).join("").toUpperCase():"?"),t("div",{style:{flex:1,minWidth:0}},t("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:2}},e.author&&t("span",{style:{fontWeight:600,fontSize:13,color:s.text}},u(e.author)),e.meta&&t("span",{style:{fontSize:11,color:s.textMuted,background:s.surfaceAlt,borderRadius:4,padding:"1px 5px"}},u(e.meta))),t("div",{style:{fontSize:13,color:s.text,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},u(e.content))),r&&t("div",{style:{fontSize:11,color:s.textMuted,flexShrink:0}},function(e){const t=Date.now()-e;return t<1e4?"just now":t<6e4?`${Math.floor(t/1e3)}s ago`:t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:`${Math.floor(t/864e5)}d ago`}(e.timestamp)));var c}function M({items:e,maxItems:r=100,height:l=400,autoScroll:d=!0,showTimestamps:f=!0,onItemClick:p,emptyMessage:m="No activity yet.",pauseOnHover:h=!0,renderItem:g}){const y=c();!function(){if(S||"undefined"==typeof document)return;S=!0;const e=document.createElement("style");e.id="tkx-live-feed-styles",e.textContent="\n@keyframes tkx-feed-slide-in {\n from { transform: translateY(-20px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n.tkx-feed-item-new {\n animation: tkx-feed-slide-in 0.25s ease-out both;\n}\n ".trim(),document.head.appendChild(e)}();const b=s(null),[x,w]=a(0),[v,k]=a(!1),[M,z]=a(/* @__PURE__ */new Set),N=s([]),F=i(()=>e.slice(-r),[e,r]),j="number"==typeof l?l:400,C=64*F.length;o(()=>{const e=new Set(N.current.map(e=>e.id)),t=F.filter(t=>!e.has(t.id)).map(e=>e.id);if(t.length>0){z(e=>{const n=new Set(e);return t.forEach(e=>n.add(e)),n});const e=window.setTimeout(()=>{z(e=>{const n=new Set(e);return t.forEach(e=>n.delete(e)),n})},400);return()=>clearTimeout(e)}},[F]),o(()=>{N.current=F},[F]);const L=d&&!(h&&v);o(()=>{if(!L||!b.current)return;const e=b.current;(e.scrollHeight-e.scrollTop-e.clientHeight<192||F.length<=5)&&(e.scrollTop=e.scrollHeight)},[F.length,L]);const T=n(()=>{b.current&&w(b.current.scrollTop)},[]),I=Math.max(0,Math.floor(x/64)-5),W=Math.min(F.length-1,Math.ceil((x+j)/64)+5),A={position:"relative",overflow:"auto",height:"number"==typeof l?`${l}px`:l,background:y.bg,border:`1px solid ${y.border}`,borderRadius:8,boxSizing:"border-box"},O={position:"relative",height:C,minHeight:"100%"};if(0===F.length)return t("div",{style:{...A,display:"flex",alignItems:"center",justifyContent:"center"}},t("span",{style:{color:y.textMuted,fontSize:14}},u(m)));const E=[];for(let n=I;n<=W;n++){const e=F[n];e&&E.push(t($,{key:e.id,item:e,isNew:M.has(e.id),showTimestamps:f,onItemClick:p,renderItem:g,theme:y,style:{position:"absolute",top:64*n,left:0,right:0}}))}return t("div",{ref:b,style:A,onScroll:T,onMouseEnter:h?()=>k(!0):void 0,onMouseLeave:h?()=>k(!1):void 0,"aria-label":"Live feed",role:"feed"},t("div",{style:O},...E))}var z=!1;function N(e,t){if("string"==typeof e)return e;const n=e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(Number.isInteger(e)?e:e.toFixed(2));return t?`${n}${t}`:n}function F({data:e,color:n}){if(e.length<2)return null;const r=Math.min(...e),o=Math.max(...e)-r||1,i=e.map((t,n)=>{const i=n/(e.length-1)*80,s=24-(t-r)/o*22-1;return`${i.toFixed(1)},${s.toFixed(1)}`});return t("svg",{width:80,height:24,viewBox:"0 0 80 24","aria-hidden":"true"},t("polyline",{points:i.join(" "),fill:"none",stroke:n,strokeWidth:1.5,strokeLinejoin:"round",strokeLinecap:"round"}))}function j({trend:e,theme:n}){return"up"===e?t("span",{style:{color:n.success,fontSize:14,fontWeight:700}},"▲"):"down"===e?t("span",{style:{color:n.danger,fontSize:14,fontWeight:700}},"▼"):t("span",{style:{color:n.textMuted,fontSize:14}},"→")}function C({metric:e,animate:n,onMetricClick:r,theme:i}){const l=e.color??function(e,t){switch(e){case"warning":return t.warning;case"critical":return t.danger;default:return t.primary}}(e.status,i),c="number"==typeof e.value?e.value:NaN,d=function(e,t,n){const[r,i]=a(e),l=s(e),c=s(null),d=s(null),u=function(){const[e,t]=a(()=>"undefined"!=typeof window&&window.matchMedia("(prefers-reduced-motion: reduce)").matches);return o(()=>{if("undefined"==typeof window)return;const e=window.matchMedia("(prefers-reduced-motion: reduce)"),n=e=>t(e.matches);return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}();return o(()=>{if(!n||u)return i(e),void(l.current=e);const t=l.current;if(t===e)return;c.current=null;const r=n=>{null===c.current&&(c.current=n);const o=n-c.current,s=Math.min(o/600,1),a=1-Math.pow(1-s,3);i(t+(e-t)*a),s<1?d.current=requestAnimationFrame(r):l.current=e};return d.current=requestAnimationFrame(r),()=>{null!==d.current&&cancelAnimationFrame(d.current)}},[e,600,n,u]),r}(isNaN(c)?0:c,0,n&&!isNaN(c)),[f,p]=a(!1),m=s(e.value);o(()=>{if(m.current!==e.value){m.current=e.value,p(!0);const t=window.setTimeout(()=>p(!1),700);return()=>clearTimeout(t)}},[e.value]);const h=void 0!==e.previousValue&&e.previousValue!==c,g={background:i.surface,border:`1px solid ${i.border}`,borderLeft:`4px solid ${l}`,borderRadius:8,padding:"14px 16px",cursor:r?"pointer":"default",position:"relative",overflow:"hidden",boxSizing:"border-box"},y=f?{position:"absolute",inset:0,background:`linear-gradient(90deg, transparent 0%, ${l}22 50%, transparent 100%)`,backgroundSize:"200% 100%",animation:"tkx-metric-shimmer 0.6s ease-in-out",pointerEvents:"none"}:{},b=isNaN(c)?u(String(e.value)):N(d,e.unit);return t("div",{style:g,className:f?"tkx-metric-shimmer":void 0,onClick:r?()=>r(e):void 0,role:r?"button":void 0,tabIndex:r?0:void 0},f&&t("div",{style:y}),t("div",{style:{fontSize:12,color:i.textMuted,marginBottom:6,fontWeight:500,letterSpacing:"0.03em"}},u(e.label)),t("div",{style:{display:"flex",alignItems:"flex-end",gap:6,marginBottom:6}},t("span",{style:{fontSize:28,fontWeight:700,color:i.text,lineHeight:1}},b),e.unit&&isNaN(c)&&t("span",{style:{fontSize:14,color:i.textMuted,marginBottom:2}},u(e.unit))),(e.trend||e.trendValue)&&t("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:e.sparkline?8:0}},e.trend&&t(j,{trend:e.trend,theme:i}),e.trendValue&&t("span",{style:{fontSize:12,color:i.textMuted}},u(e.trendValue))),h&&t("div",{style:{fontSize:11,color:i.textMuted,marginTop:2}},`was ${N(e.previousValue)}`),e.sparkline&&e.sparkline.length>=2&&t("div",{style:{marginTop:8}},t(F,{data:e.sparkline,color:l})))}function L({metrics:e,columns:n=3,animate:r=!0,onMetricClick:o}){const i=c();return function(){if(z||"undefined"==typeof document)return;z=!0;const e=document.createElement("style");e.id="tkx-live-metrics-styles",e.textContent="\n@keyframes tkx-metric-pulse {\n 0% { opacity: 1; }\n 40% { opacity: 0.4; }\n 100% { opacity: 1; }\n}\n@keyframes tkx-metric-shimmer {\n 0% { background-position: -200% 0; }\n 100% { background-position: 200% 0; }\n}\n.tkx-metric-shimmer {\n animation: tkx-metric-shimmer 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .tkx-metric-shimmer { animation: none; }\n .tkx-metric-pulse { animation: none; }\n}\n ".trim(),document.head.appendChild(e)}(),t("div",{style:{display:"grid",gridTemplateColumns:`repeat(${n}, minmax(0, 1fr))`,gap:16}},...e.map(e=>t(C,{key:e.id,metric:e,animate:r,onMetricClick:o,theme:i})))}function T(e){const t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`}function I(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 W({data:e,maxPoints:r=60,height:l=200,width:d="100%",color:f,fill:p=!0,showGrid:m=!0,showLabels:h=!0,showTooltip:g=!0,label:y,unit:b,animate:x=!0,yMin:w,yMax:v}){const k=c(),S=f??k.primary,$=s(null),[M,z]=a(600),[N,F]=a(null),[j,C]=a(0),L=s(e.length);o(()=>{if(!$.current)return;const e=new ResizeObserver(e=>{const t=e[0];t&&z(t.contentRect.width)});return e.observe($.current),z($.current.offsetWidth),()=>e.disconnect()},[]);const W=i(()=>e.slice(-r),[e,r]);o(()=>{W.length>L.current&&C(e=>e+1),L.current=W.length},[W.length]);const A=h?48:12,O=y?28:12,E=Math.max(M-A-12,1),D=Math.max(l-O-28,1),B=W.length?Math.min(...W.map(e=>e.value)):0,R=W.length?Math.max(...W.map(e=>e.value)):1,_=R-B||1,H=void 0!==w?w:B-.1*_,P=(void 0!==v?v:R+.1*_)-H||1;function q(e){return W.length<2?E/2:e/(W.length-1)*E}function U(e){return D-(e-H)/P*D}const Z=W.length>=2?W.map((e,t)=>`${0===t?"M":"L"}${q(t).toFixed(2)},${U(e.value).toFixed(2)}`).join(" "):"",J=Z?`${Z} L${q(W.length-1).toFixed(2)},${D} L${q(0).toFixed(2)},${D} Z`:"",Q=[];for(let t=0;t<=4;t++)Q.push(t);const K=Q.map(e=>{const t=H+e/4*P;return{y:U(t),text:I(t)}}),V=Math.min(4,W.length),Y=V>0?Array.from({length:V},(e,t)=>Math.round(t/Math.max(V-1,1)*(W.length-1))):[],G=n(e=>{if(!g||0===W.length)return;const t=e.currentTarget.getBoundingClientRect(),n=e.clientX-t.left-A;let r=0,o=1/0;W.forEach((e,t)=>{const i=Math.abs(q(t)-n);i<o&&(o=i,r=t)});const i=W[r];i&&F({x:q(r)+A,y:U(i.value)+O,point:i})},[W,g,A,O]),X=n(()=>F(null),[]),ee=M,te=l,ne=`tkx-chart-clip-${j}`;return t("div",{ref:$,style:{position:"relative",width:"number"==typeof d?`${d}px`:d,background:k.surface,border:`1px solid ${k.border}`,borderRadius:8,overflow:"hidden",boxSizing:"border-box"}},t("svg",{width:ee,height:te,viewBox:`0 0 ${ee} ${te}`,onMouseMove:G,onMouseLeave:X,style:{display:"block",userSelect:"none"},"aria-label":y?u(y):"Real-time chart"},x&&W.length>=2&&t("defs",null,t("clipPath",{id:ne},t("rect",{x:0,y:0,width:E,height:te},t("animate",{attributeName:"width",from:Math.max(0,E-E/Math.max(W.length-1,1)),to:E,dur:"0.3s",fill:"freeze"})))),y&&t("text",{x:A,y:18,fill:k.textMuted,fontSize:12,fontWeight:500},u(y)),m&&Q.map(e=>{const n=U(H+e/4*P)+O;return t("line",{key:`grid-${e}`,x1:A,y1:n,x2:A+E,y2:n,stroke:k.border,strokeWidth:1,strokeDasharray:"4 4"})}),h&&K.map((e,n)=>t("text",{key:`yl-${n}`,x:A-4,y:e.y+O+4,fill:k.textMuted,fontSize:10,textAnchor:"end"},e.text)),b&&t("text",{x:4,y:O+10,fill:k.textMuted,fontSize:9},u(b)),p&&J&&t("path",{d:J,fill:`${S}22`,clipPath:x?`url(#${ne})`:void 0,transform:`translate(${A}, ${O})`}),Z&&t("path",{d:Z,fill:"none",stroke:S,strokeWidth:2,strokeLinejoin:"round",strokeLinecap:"round",clipPath:x?`url(#${ne})`:void 0,transform:`translate(${A}, ${O})`}),Y.map(e=>{const n=W[e];return n?t("text",{key:`xl-${e}`,x:A+q(e),y:te-8,fill:k.textMuted,fontSize:9,textAnchor:"middle"},T(n.timestamp)):null}),N&&t("line",{x1:N.x,y1:O,x2:N.x,y2:O+D,stroke:S,strokeWidth:1,strokeDasharray:"3 3",opacity:.6}),N&&t("circle",{cx:N.x,cy:N.y,r:4,fill:S,stroke:k.surface,strokeWidth:2}),N&&(()=>{const e=Math.min(N.x+8,ee-100),n=Math.max(N.y-36,4),r=`${I(N.point.value)}${b||""}`,o=T(N.point.timestamp);return t("g",null,t("rect",{x:e-4,y:n-2,width:90,height:34,rx:4,fill:k.surfaceAlt,stroke:k.border,strokeWidth:1}),t("text",{x:e,y:n+11,fill:k.text,fontSize:12,fontWeight:700},r),t("text",{x:e,y:n+26,fill:k.textMuted,fontSize:10},o))})()))}var A={debug:0,info:1,warn:2,error:3,fatal:4},O=!1;function E({entry:e,showLevel:n,showTimestamp:r,showSource:o,searchQuery:i,monospace:s,isExpanded:a,onToggle:l,onEntryClick:c,theme:d,style:f}){const p=function(e,t){switch(e){case"debug":default:return t.textMuted;case"info":return t.info;case"warn":return t.warning;case"error":case"fatal":return t.danger}}(e.level,d),m=function(e,t){return"fatal"===e?`${t.danger}22`:"transparent"}(e.level,d),h=e.metadata&&Object.keys(e.metadata).length>0,g={...f,display:"flex",alignItems:"center",gap:6,padding:"0 10px",fontSize:12,fontFamily:s?'"JetBrains Mono", "Fira Mono", Consolas, monospace':"inherit",cursor:h||c?"pointer":"default",background:m,boxSizing:"border-box",height:28,overflow:"hidden",whiteSpace:"nowrap",borderBottom:`1px solid ${d.border}22`};return t("div",{style:g,className:"tkx-log-row",onClick:()=>{h&&l(),c&&c(e)},role:h?"button":void 0,tabIndex:h?0:void 0,onKeyDown:h?e=>{"Enter"!==e.key&&" "!==e.key||l()}:void 0,"aria-expanded":h?a:void 0},r&&t("span",{style:{color:d.textMuted,flexShrink:0,minWidth:84}},function(e){const t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}.${String(t.getMilliseconds()).padStart(3,"0")}`}(e.timestamp)),n&&t("span",{style:{color:p,flexShrink:0,fontWeight:"fatal"===e.level?700:500,minWidth:56}},`[${e.level.toUpperCase().padEnd(5)}]`),o&&e.source&&t("span",{style:{background:d.surfaceAlt,border:`1px solid ${d.border}`,borderRadius:10,padding:"0 5px",fontSize:10,color:d.textMuted,flexShrink:0,maxWidth:80,overflow:"hidden",textOverflow:"ellipsis"}},u(e.source)),t("span",{style:{flex:1,color:d.text,overflow:"hidden",textOverflow:"ellipsis"}},...function(e,n){if(!n)return[e];const r=u(e),o=u(n);if(!o)return[r];try{const e=new RegExp(`(${o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");return r.split(e).map((n,r)=>e.test(n)?t("mark",{key:r,className:"tkx-log-highlight"},n):n)}catch{return[r]}}(e.message,i)),h&&t("span",{style:{color:d.textMuted,fontSize:10,flexShrink:0}},a?"▲":"▼"))}function D({metadata:e,theme:n,style:r}){return t("div",{style:{...r,background:n.surfaceAlt,borderBottom:`1px solid ${n.border}`,padding:"6px 10px 6px 56px",display:"flex",flexWrap:"wrap",gap:6,boxSizing:"border-box"}},...Object.entries(e).map(([e,r])=>t("span",{key:e,style:{fontSize:11,fontFamily:"monospace",color:n.textMuted,background:n.surface,border:`1px solid ${n.border}`,borderRadius:4,padding:"1px 6px"}},t("span",{style:{color:n.info}},`${u(e)}: `),u(String(r)))))}function B({entries:e,maxEntries:r=500,height:l=400,autoScroll:d=!0,showLevel:u=!0,showTimestamp:f=!0,showSource:p=!0,filterLevel:m,searchQuery:h="",monospace:g=!0,onEntryClick:y}){const b=c();!function(){if(O||"undefined"==typeof document)return;O=!0;const e=document.createElement("style");e.id="tkx-live-log-styles",e.textContent="\n.tkx-log-row:hover { filter: brightness(1.12); }\n.tkx-log-highlight { background: #ffbe0b55; border-radius: 2px; padding: 0 1px; }\n ".trim(),document.head.appendChild(e)}();const x=s(null),[w,v]=a(0),[k,S]=a(/* @__PURE__ */new Set),[$,M]=a(!1),z=s(e.length),N=i(()=>{let t=e.slice(-r);if(void 0!==m){const e=A[m];t=t.filter(t=>A[t.level]>=e)}if(h){const e=h.toLowerCase();t=t.filter(t=>t.message.toLowerCase().includes(e)||(t.source??"").toLowerCase().includes(e))}return t},[e,r,m,h]),F="number"==typeof l?l:400,j=i(()=>{const e=[];let t=0;for(const n of N)e.push(t),t+=28+(k.has(n.id)?40:0);return e.push(t),e},[N,k]),C=j[j.length-1]??0;o(()=>{d&&!$&&N.length!==z.current&&(z.current=N.length,x.current&&(x.current.scrollTop=x.current.scrollHeight))},[N.length,d,$]);const L=n(()=>{if(!x.current)return;const e=x.current;M(!(e.scrollHeight-e.scrollTop-e.clientHeight<56)),v(e.scrollTop)},[]),T=n(e=>{S(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),I=N.length>0?function(e){let t=0,n=N.length-1;for(;t<n;){const r=t+n>>1;(j[r+1]??0)<=e?t=r+1:n=r}return Math.max(0,t-8)}(w):0,W=N.length>0?function(e){let t=0,n=N.length-1;for(;t<n;){const r=t+n+1>>1;(j[r]??0)>=e+F?n=r-1:t=r}return Math.min(N.length-1,t+8)}(w):-1,B={position:"relative",overflow:"auto",height:"number"==typeof l?`${l}px`:l,background:b.bg,border:`1px solid ${b.border}`,borderRadius:8,boxSizing:"border-box"},R={position:"relative",height:C,minHeight:"100%"};if(0===N.length)return t("div",{style:{...B,display:"flex",alignItems:"center",justifyContent:"center"}},t("span",{style:{color:b.textMuted,fontSize:13,fontFamily:"monospace"}},"No log entries."));const _=[];for(let n=I;n<=W;n++){const e=N[n];if(!e)continue;const r=j[n]??0,o=k.has(e.id);_.push(t(E,{key:e.id,entry:e,showLevel:u,showTimestamp:f,showSource:p,searchQuery:h,monospace:g,isExpanded:o,onToggle:()=>T(e.id),onEntryClick:y,theme:b,style:{position:"absolute",top:r,left:0,right:0}})),o&&e.metadata&&Object.keys(e.metadata).length>0&&_.push(t(D,{key:`${e.id}-meta`,metadata:e.metadata,theme:b,style:{position:"absolute",top:r+28,left:0,right:0,height:40}}))}return t("div",{ref:x,style:B,onScroll:L,role:"log","aria-live":"polite","aria-label":"Log viewer"},t("div",{style:R},..._))}export{M as TkxLiveFeed,B as TkxLiveLog,L as TkxLiveMetrics,W as TkxRealTimeChart};
|
|
1
|
+
import{createContext as e,createElement as t,useCallback as n,useContext as r,useEffect as o,useMemo as i,useRef as s,useState as a}from"react";var l=e({bg:"#0a0a0f",surface:"#12121a",surfaceAlt:"#1a1a2e",border:"#2a2a3e",text:"#e8e8f4",textMuted:"#8888aa",primary:"#00f5d4",secondary:"#7b2ff7",danger:"#f72585",warning:"#ffbe0b",success:"#06d6a0",info:"#3a86ff"});function c(){return r(l)}new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);var d={"<":"<",">":">","&":"&","'":"'",'"':""","`":"`"},u=/* @__PURE__ */new Set,f=[],p=0;function m(e,t,n="info",r){const o=Object.freeze({id:"se_"+ ++p,type:e,timestamp:Date.now(),severity:n,message:t,detail:r?Object.freeze({...r}):void 0});f.push(o),f.length>500&&f.shift();for(const i of u)try{i(o)}catch{}return o}function h(e){if(null==e)return"";let t=String(e);t=t.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g,"");let n=0;const r=t.replace(/[<>&'"`]/g,e=>(n++,d[e]??e));return n>0&&m("xss-sanitized",`Escaped ${n} HTML-sensitive character${1===n?"":"s"} before render`,"warning",{escapes:n}),r}function g(e){if("string"!=typeof e)return null;const t=e.trim();if(!t)return null;const n=t.replace(/[\u0000-\u001F\u007F]/g,"");return/^javascript:/i.test(n)||/^vbscript:/i.test(n)||/^data:/i.test(n)&&!/^data:image\//i.test(n)||/^file:/i.test(n)?null:n}var y=new Set(["a","abbr","b","blockquote","br","code","del","div","em","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","li","mark","ol","p","pre","q","s","samp","small","span","strong","sub","sup","table","tbody","td","tfoot","th","thead","tr","u","ul"]),b={a:new Set(["href","title","target","rel"]),img:new Set(["src","alt","title","width","height","loading","decoding"]),th:new Set(["scope","colspan","rowspan","align"]),td:new Set(["colspan","rowspan","align"]),"*":new Set(["id","class","lang","dir","title"])},x=new Set(["constructor","prototype","__proto__","submit","reset","action","method","enctype","target","elements","children","firstChild","nextSibling","parentNode","ownerDocument","cookie","domain","location","documentElement","body","head","title","contentWindow","contentDocument"]);function w(e){if("string"!=typeof e)return"";if("undefined"==typeof DOMParser)return h(e);const t=(new DOMParser).parseFromString(`<div>${e}</div>`,"text/html").body.firstElementChild;return t?(k(t),t.innerHTML):""}function k(e){const t=Array.from(e.children);for(const n of t){const e=n.tagName.toLowerCase();if(y.has(e)){for(const t of Array.from(n.attributes)){const r=t.name.toLowerCase();if(r.startsWith("on"))n.removeAttribute(t.name);else if(x.has(r))n.removeAttribute(t.name);else if("style"!==r)if((b[e]??/* @__PURE__ */new Set).has(r)||b["*"].has(r)){if(("href"===r||"src"===r)&&"string"==typeof t.value){const e=g(t.value);null===e?n.removeAttribute(t.name):n.setAttribute(t.name,e)}"name"!==r&&"id"!==r||!x.has(t.value.toLowerCase())||n.removeAttribute(t.name)}else n.removeAttribute(t.name);else n.setAttribute("style",v(t.value))}k(n)}else n.remove()}}function v(e){if("string"!=typeof e)return"";let t=e;return t=t.replace(/expression\s*\([^)]*\)/gi,""),t=t.replace(/url\s*\(\s*['"]?\s*(javascript|vbscript|data)\s*:[^)]*\)/gi,"url(#)"),t=t.replace(/@import[^;]*;?/gi,""),t=t.replace(/behavior\s*:[^;]*;?/gi,""),t=t.replace(/-moz-binding[^;]*;?/gi,""),t=t.replace(/[<>]/g,""),t=t.replace(/[\u0000-\u001F\u007F]/g,""),t.trim()}var S=new Set(["__proto__","constructor","prototype"]);function $(e){if(Array.isArray(e))return e.map($);if(e&&"object"==typeof e){const t={};for(const[n,r]of Object.entries(e))S.has(n)||(t[n]=$(r));return t}return e}function M(){if("undefined"==typeof window)return!1;try{return window.top!==window.self}catch{return!0}}var z=[{name:"ssn",re:/\b\d{3}-\d{2}-\d{4}\b/g,repl:"[redacted-ssn]"},{name:"credit",re:/\b(?:\d[ -]?){13,19}\b/g,repl:e=>{const t=e.replace(/[ -]/g,"");return t.length<13||t.length>19?e:function(e){let t=0,n=!1;for(let r=e.length-1;r>=0;r--){let o=e.charCodeAt(r)-48;if(o<0||o>9)return!1;n&&(o*=2,o>9&&(o-=9)),t+=o,n=!n}return t>0&&t%10==0}(t)?"[redacted-card]":e}},{name:"email",re:/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/gi,repl:"[redacted-email]"},{name:"phone",re:/\b(\+?\d{1,3}[ -])?\(?\d{3}\)?[ -]?\d{3}[ -]?\d{4}\b/g,repl:"[redacted-phone]"},{name:"apikey",re:/\b(sk|pk|rk)-[A-Za-z0-9]{20,}\b/g,repl:"[redacted-key]"}];Object.freeze({sanitizeString:h,sanitizeHref:g,sanitizeHTML:w,sanitizeCSS:v,sanitizeJSON:function(e){try{return $(JSON.parse(e,(e,t)=>{if(!S.has(e))return t}))}catch{return null}},sanitizeUnicode:function(e){if("string"!=typeof e)return"";const t=e.replace(/[\u200B-\u200F\u202A-\u202E\u2060-\u206F\uFEFF\u00AD]/g,"");return t.length!==e.length&&m("unicode-stripped","Removed bidirectional / zero-width control characters (Trojan-Source vector)","critical",{charsRemoved:e.length-t.length}),t},isSafeAttrName:function(e){return!("string"!=typeof e||!e||/[\u0000-\u001F\u007F<>"]/.test(e)||x.has(e.toLowerCase()))},buildTkxCSP:function(e={}){const{allowInlineStyles:t=!0,imgHosts:n=[],connectHosts:r=[],fontHosts:o=[],scriptNonce:i,reportUri:s}=e,a=["default-src 'self'","script-src "+(i?`'self' 'nonce-${i}'`:"'self'"),"style-src "+(t?"'self' 'unsafe-inline'":"'self'"),`img-src ${["'self'","data:","https:",...n].join(" ")}`,`font-src ${["'self'","https:","data:",...o].join(" ")}`,`connect-src ${["'self'",...r].join(" ")}`,"frame-ancestors 'none'","form-action 'self'","base-uri 'self'","object-src 'none'","upgrade-insecure-requests"];return s&&a.push(`report-uri ${s}`),a.join("; ")},installTrustedTypes:function(){if("undefined"==typeof window)return;const e=window.trustedTypes;if(e)try{e.createPolicy("tkx",{createHTML:w,createScriptURL:e=>g(e)??"",createScript:()=>{throw new Error("TekiVex: inline script creation forbidden")}})}catch{}},isFramed:M,installFrameBuster:function(e){if("undefined"!=typeof window&&M())if(m("clickjacking-detected","Page is embedded in a cross-origin frame — clickjacking precondition","critical"),e)e();else try{window.top.location.href=window.self.location.href}catch{}},createRateLimiter:function(e,t){let n=e,r=Date.now();return{check(){const o=Date.now(),i=o-r,s=Math.floor(i/t);return s>0&&(n=Math.min(e,n+s),r=o),n<=0?(m("rate-limited","Action throttled — token bucket exhausted","warning",{capacity:e,intervalMs:t}),!1):(n-=1,!0)},reset(){n=e,r=Date.now()}}},sniffMimeType:async function(e){const t=new Uint8Array(await e.slice(0,12).arrayBuffer()),n=(...e)=>e.every((e,n)=>t[n]===e);return n(137,80,78,71)?"image/png":n(255,216,255)?"image/jpeg":n(71,73,70,56)?"image/gif":n(66,77)?"image/bmp":n(82,73,70,70)&&87===t[8]&&69===t[9]&&66===t[10]&&80===t[11]?"image/webp":n(37,80,68,70)?"application/pdf":n(80,75,3,4)?"application/zip":123===t[0]||91===t[0]?"application/json":[...t].includes(0)?(m("mime-rejected",`File "${e.name}" rejected — magic bytes match no allow-listed type (claimed: ${e.type||"unknown"})`,"critical",{name:e.name,claimedType:e.type}),null):"text/plain"},scrubPII:function(e){if("string"!=typeof e)return"";let t=e,n=0;for(const{re:r,repl:o}of z)t="function"==typeof o?t.replace(r,e=>(n++,o(e))):t.replace(r,e=>(n++,o));return n>0&&m("pii-redacted",`Redacted ${n} PII token${1===n?"":"s"} before the text left the trust boundary`,"warning",{redactions:n}),t},deepFreeze:function e(t){if(t&&"object"==typeof t&&!Object.isFrozen(t)){for(const n of Object.keys(t))e(t[n]);Object.freeze(t)}return t},__brand:"TekiVex SecurityCore v2.6.0 © 007krcs"});var N=!1;function j({item:e,isNew:n,showTimestamps:r,onItemClick:o,renderItem:i,theme:s,style:a}){const l=function(e,t){switch(e){case"info":return t.info;case"success":return t.success;case"warning":return t.warning;case"error":return t.danger;default:return t.border}}(e.type,s);return i?t("div",{style:a,className:n?"tkx-feed-item-new":void 0},i(e)):t("div",{style:{...a,display:"flex",alignItems:"center",gap:10,padding:"0 12px",borderLeft:`3px solid ${l}`,cursor:o?"pointer":"default",boxSizing:"border-box",height:64,background:s.surface,transition:"background 0.15s"},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?t=>{"Enter"!==t.key&&" "!==t.key||o(e)}:void 0},t("div",{style:{width:36,height:36,borderRadius:"50%",background:l,display:"flex",alignItems:"center",justifyContent:"center",fontSize:13,fontWeight:700,color:s.bg,flexShrink:0,overflow:"hidden"}},e.avatar?t("img",{src:e.avatar,alt:e.author??"",style:{width:"100%",height:"100%",objectFit:"cover"}}):(c=e.author)?c.split(" ").map(e=>e[0]??"").slice(0,2).join("").toUpperCase():"?"),t("div",{style:{flex:1,minWidth:0}},t("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:2}},e.author&&t("span",{style:{fontWeight:600,fontSize:13,color:s.text}},h(e.author)),e.meta&&t("span",{style:{fontSize:11,color:s.textMuted,background:s.surfaceAlt,borderRadius:4,padding:"1px 5px"}},h(e.meta))),t("div",{style:{fontSize:13,color:s.text,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},h(e.content))),r&&t("div",{style:{fontSize:11,color:s.textMuted,flexShrink:0}},function(e){const t=Date.now()-e;return t<1e4?"just now":t<6e4?`${Math.floor(t/1e3)}s ago`:t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:`${Math.floor(t/864e5)}d ago`}(e.timestamp)));var c}function F({items:e,maxItems:r=100,height:l=400,autoScroll:d=!0,showTimestamps:u=!0,onItemClick:f,emptyMessage:p="No activity yet.",pauseOnHover:m=!0,renderItem:g,className:y,style:b}){const x=c();!function(){if(N||"undefined"==typeof document)return;N=!0;const e=document.createElement("style");e.id="tkx-live-feed-styles",e.textContent="\n@keyframes tkx-feed-slide-in {\n from { transform: translateY(-20px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n}\n.tkx-feed-item-new {\n animation: tkx-feed-slide-in 0.25s ease-out both;\n}\n ".trim(),document.head.appendChild(e)}();const w=s(null),[k,v]=a(0),[S,$]=a(!1),[M,z]=a(/* @__PURE__ */new Set),F=s([]),T=i(()=>e.slice(-r),[e,r]),I="number"==typeof l?l:400,L=64*T.length;o(()=>{const e=new Set(F.current.map(e=>e.id)),t=T.filter(t=>!e.has(t.id)).map(e=>e.id);if(t.length>0){z(e=>{const n=new Set(e);return t.forEach(e=>n.add(e)),n});const e=window.setTimeout(()=>{z(e=>{const n=new Set(e);return t.forEach(e=>n.delete(e)),n})},400);return()=>clearTimeout(e)}},[T]),o(()=>{F.current=T},[T]);const C=d&&!(m&&S);o(()=>{if(!C||!w.current)return;const e=w.current;(e.scrollHeight-e.scrollTop-e.clientHeight<192||T.length<=5)&&(e.scrollTop=e.scrollHeight)},[T.length,C]);const W=n(()=>{w.current&&v(w.current.scrollTop)},[]),A=Math.max(0,Math.floor(k/64)-5),O=Math.min(T.length-1,Math.ceil((k+I)/64)+5),E={position:"relative",overflow:"auto",height:"number"==typeof l?`${l}px`:l,background:x.bg,border:`1px solid ${x.border}`,borderRadius:8,boxSizing:"border-box"},D={position:"relative",height:L,minHeight:"100%"};if(0===T.length)return t("div",{className:y,style:{...E,display:"flex",alignItems:"center",justifyContent:"center",...b}},t("span",{style:{color:x.textMuted,fontSize:14}},h(p)));const R=[];for(let n=A;n<=O;n++){const e=T[n];e&&R.push(t(j,{key:e.id,item:e,isNew:M.has(e.id),showTimestamps:u,onItemClick:f,renderItem:g,theme:x,style:{position:"absolute",top:64*n,left:0,right:0}}))}return t("div",{ref:w,className:y,style:{...E,...b},onScroll:W,onMouseEnter:m?()=>$(!0):void 0,onMouseLeave:m?()=>$(!1):void 0,"aria-label":"Live feed",role:"feed"},t("div",{style:D},...R))}var T=!1;function I(e,t){if("string"==typeof e)return e;const n=e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(Number.isInteger(e)?e:e.toFixed(2));return t?`${n}${t}`:n}function L({data:e,color:n}){if(e.length<2)return null;const r=Math.min(...e),o=Math.max(...e)-r||1,i=e.map((t,n)=>{const i=n/(e.length-1)*80,s=24-(t-r)/o*22-1;return`${i.toFixed(1)},${s.toFixed(1)}`});return t("svg",{width:80,height:24,viewBox:"0 0 80 24","aria-hidden":"true"},t("polyline",{points:i.join(" "),fill:"none",stroke:n,strokeWidth:1.5,strokeLinejoin:"round",strokeLinecap:"round"}))}function C({trend:e,theme:n}){return"up"===e?t("span",{style:{color:n.success,fontSize:14,fontWeight:700}},"▲"):"down"===e?t("span",{style:{color:n.danger,fontSize:14,fontWeight:700}},"▼"):t("span",{style:{color:n.textMuted,fontSize:14}},"→")}function W({metric:e,animate:n,onMetricClick:r,theme:i}){const l=e.color??function(e,t){switch(e){case"warning":return t.warning;case"critical":return t.danger;default:return t.primary}}(e.status,i),c="number"==typeof e.value?e.value:NaN,d=function(e,t,n){const[r,i]=a(e),l=s(e),c=s(null),d=s(null),u=function(){const[e,t]=a(()=>"undefined"!=typeof window&&window.matchMedia("(prefers-reduced-motion: reduce)").matches);return o(()=>{if("undefined"==typeof window)return;const e=window.matchMedia("(prefers-reduced-motion: reduce)"),n=e=>t(e.matches);return e.addEventListener("change",n),()=>e.removeEventListener("change",n)},[]),e}();return o(()=>{if(!n||u)return i(e),void(l.current=e);const t=l.current;if(t===e)return;c.current=null;const r=n=>{null===c.current&&(c.current=n);const o=n-c.current,s=Math.min(o/600,1),a=1-Math.pow(1-s,3);i(t+(e-t)*a),s<1?d.current=requestAnimationFrame(r):l.current=e};return d.current=requestAnimationFrame(r),()=>{null!==d.current&&cancelAnimationFrame(d.current)}},[e,600,n,u]),r}(isNaN(c)?0:c,0,n&&!isNaN(c)),[u,f]=a(!1),p=s(e.value);o(()=>{if(p.current!==e.value){p.current=e.value,f(!0);const t=window.setTimeout(()=>f(!1),700);return()=>clearTimeout(t)}},[e.value]);const m=void 0!==e.previousValue&&e.previousValue!==c,g={background:i.surface,border:`1px solid ${i.border}`,borderLeft:`4px solid ${l}`,borderRadius:8,padding:"14px 16px",cursor:r?"pointer":"default",position:"relative",overflow:"hidden",boxSizing:"border-box"},y=u?{position:"absolute",inset:0,background:`linear-gradient(90deg, transparent 0%, ${l}22 50%, transparent 100%)`,backgroundSize:"200% 100%",animation:"tkx-metric-shimmer 0.6s ease-in-out",pointerEvents:"none"}:{},b=isNaN(c)?h(String(e.value)):I(d,e.unit);return t("div",{style:g,className:u?"tkx-metric-shimmer":void 0,onClick:r?()=>r(e):void 0,role:r?"button":void 0,tabIndex:r?0:void 0},u&&t("div",{style:y}),t("div",{style:{fontSize:12,color:i.textMuted,marginBottom:6,fontWeight:500,letterSpacing:"0.03em"}},h(e.label)),t("div",{style:{display:"flex",alignItems:"flex-end",gap:6,marginBottom:6}},t("span",{style:{fontSize:28,fontWeight:700,color:i.text,lineHeight:1}},b),e.unit&&isNaN(c)&&t("span",{style:{fontSize:14,color:i.textMuted,marginBottom:2}},h(e.unit))),(e.trend||e.trendValue)&&t("div",{style:{display:"flex",alignItems:"center",gap:4,marginBottom:e.sparkline?8:0}},e.trend&&t(C,{trend:e.trend,theme:i}),e.trendValue&&t("span",{style:{fontSize:12,color:i.textMuted}},h(e.trendValue))),m&&t("div",{style:{fontSize:11,color:i.textMuted,marginTop:2}},`was ${I(e.previousValue)}`),e.sparkline&&e.sparkline.length>=2&&t("div",{style:{marginTop:8}},t(L,{data:e.sparkline,color:l})))}function A({metrics:e,columns:n=3,animate:r=!0,onMetricClick:o}){const i=c();return function(){if(T||"undefined"==typeof document)return;T=!0;const e=document.createElement("style");e.id="tkx-live-metrics-styles",e.textContent="\n@keyframes tkx-metric-pulse {\n 0% { opacity: 1; }\n 40% { opacity: 0.4; }\n 100% { opacity: 1; }\n}\n@keyframes tkx-metric-shimmer {\n 0% { background-position: -200% 0; }\n 100% { background-position: 200% 0; }\n}\n.tkx-metric-shimmer {\n animation: tkx-metric-shimmer 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n .tkx-metric-shimmer { animation: none; }\n .tkx-metric-pulse { animation: none; }\n}\n ".trim(),document.head.appendChild(e)}(),t("div",{style:{display:"grid",gridTemplateColumns:`repeat(${n}, minmax(0, 1fr))`,gap:16}},...e.map(e=>t(W,{key:e.id,metric:e,animate:r,onMetricClick:o,theme:i})))}function O(e){const t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`}function E(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 D({data:e,maxPoints:r=60,height:l=200,width:d="100%",color:u,fill:f=!0,showGrid:p=!0,showLabels:m=!0,showTooltip:g=!0,label:y,unit:b,animate:x=!0,yMin:w,yMax:k,className:v,style:S}){const $=c(),M=u??$.primary,z=s(null),[N,j]=a(600),[F,T]=a(null),[I,L]=a(0),C=s(e.length);o(()=>{if(!z.current)return;const e=new ResizeObserver(e=>{const t=e[0];t&&j(t.contentRect.width)});return e.observe(z.current),j(z.current.offsetWidth),()=>e.disconnect()},[]);const W=i(()=>e.slice(-r),[e,r]);o(()=>{W.length>C.current&&L(e=>e+1),C.current=W.length},[W.length]);const A=m?48:12,D=y?28:12,R=Math.max(N-A-12,1),B=Math.max(l-D-28,1),_=W.length?Math.min(...W.map(e=>e.value)):0,H=W.length?Math.max(...W.map(e=>e.value)):1,P=H-_||1,q=void 0!==w?w:_-.1*P,U=(void 0!==k?k:H+.1*P)-q||1;function Z(e){return W.length<2?R/2:e/(W.length-1)*R}function J(e){return B-(e-q)/U*B}const Q=W.length>=2?W.map((e,t)=>`${0===t?"M":"L"}${Z(t).toFixed(2)},${J(e.value).toFixed(2)}`).join(" "):"",K=Q?`${Q} L${Z(W.length-1).toFixed(2)},${B} L${Z(0).toFixed(2)},${B} Z`:"",V=[];for(let t=0;t<=4;t++)V.push(t);const Y=V.map(e=>{const t=q+e/4*U;return{y:J(t),text:E(t)}}),G=Math.min(4,W.length),X=G>0?Array.from({length:G},(e,t)=>Math.round(t/Math.max(G-1,1)*(W.length-1))):[],ee=n(e=>{if(!g||0===W.length)return;const t=e.currentTarget.getBoundingClientRect(),n=e.clientX-t.left-A;let r=0,o=1/0;W.forEach((e,t)=>{const i=Math.abs(Z(t)-n);i<o&&(o=i,r=t)});const i=W[r];i&&T({x:Z(r)+A,y:J(i.value)+D,point:i})},[W,g,A,D]),te=n(()=>T(null),[]),ne=N,re=l,oe=`tkx-chart-clip-${I}`;return t("div",{ref:z,className:v,style:{position:"relative",width:"number"==typeof d?`${d}px`:d,background:$.surface,border:`1px solid ${$.border}`,borderRadius:8,overflow:"hidden",boxSizing:"border-box",...S}},t("svg",{width:ne,height:re,viewBox:`0 0 ${ne} ${re}`,onMouseMove:ee,onMouseLeave:te,style:{display:"block",userSelect:"none"},"aria-label":y?h(y):"Real-time chart"},x&&W.length>=2&&t("defs",null,t("clipPath",{id:oe},t("rect",{x:0,y:0,width:R,height:re},t("animate",{attributeName:"width",from:Math.max(0,R-R/Math.max(W.length-1,1)),to:R,dur:"0.3s",fill:"freeze"})))),y&&t("text",{x:A,y:18,fill:$.textMuted,fontSize:12,fontWeight:500},h(y)),p&&V.map(e=>{const n=J(q+e/4*U)+D;return t("line",{key:`grid-${e}`,x1:A,y1:n,x2:A+R,y2:n,stroke:$.border,strokeWidth:1,strokeDasharray:"4 4"})}),m&&Y.map((e,n)=>t("text",{key:`yl-${n}`,x:A-4,y:e.y+D+4,fill:$.textMuted,fontSize:10,textAnchor:"end"},e.text)),b&&t("text",{x:4,y:D+10,fill:$.textMuted,fontSize:9},h(b)),f&&K&&t("path",{d:K,fill:`${M}22`,clipPath:x?`url(#${oe})`:void 0,transform:`translate(${A}, ${D})`}),Q&&t("path",{d:Q,fill:"none",stroke:M,strokeWidth:2,strokeLinejoin:"round",strokeLinecap:"round",clipPath:x?`url(#${oe})`:void 0,transform:`translate(${A}, ${D})`}),X.map(e=>{const n=W[e];return n?t("text",{key:`xl-${e}`,x:A+Z(e),y:re-8,fill:$.textMuted,fontSize:9,textAnchor:"middle"},O(n.timestamp)):null}),F&&t("line",{x1:F.x,y1:D,x2:F.x,y2:D+B,stroke:M,strokeWidth:1,strokeDasharray:"3 3",opacity:.6}),F&&t("circle",{cx:F.x,cy:F.y,r:4,fill:M,stroke:$.surface,strokeWidth:2}),F&&(()=>{const e=Math.min(F.x+8,ne-100),n=Math.max(F.y-36,4),r=`${E(F.point.value)}${b||""}`,o=O(F.point.timestamp);return t("g",null,t("rect",{x:e-4,y:n-2,width:90,height:34,rx:4,fill:$.surfaceAlt,stroke:$.border,strokeWidth:1}),t("text",{x:e,y:n+11,fill:$.text,fontSize:12,fontWeight:700},r),t("text",{x:e,y:n+26,fill:$.textMuted,fontSize:10},o))})()))}var R={debug:0,info:1,warn:2,error:3,fatal:4},B=!1;function _({entry:e,showLevel:n,showTimestamp:r,showSource:o,searchQuery:i,monospace:s,isExpanded:a,onToggle:l,onEntryClick:c,theme:d,style:u}){const f=function(e,t){switch(e){case"debug":default:return t.textMuted;case"info":return t.info;case"warn":return t.warning;case"error":case"fatal":return t.danger}}(e.level,d),p=function(e,t){return"fatal"===e?`${t.danger}22`:"transparent"}(e.level,d),m=e.metadata&&Object.keys(e.metadata).length>0,g={...u,display:"flex",alignItems:"center",gap:6,padding:"0 10px",fontSize:12,fontFamily:s?'"JetBrains Mono", "Fira Mono", Consolas, monospace':"inherit",cursor:m||c?"pointer":"default",background:p,boxSizing:"border-box",height:28,overflow:"hidden",whiteSpace:"nowrap",borderBottom:`1px solid ${d.border}22`};return t("div",{style:g,className:"tkx-log-row",onClick:()=>{m&&l(),c&&c(e)},role:m?"button":void 0,tabIndex:m?0:void 0,onKeyDown:m?e=>{"Enter"!==e.key&&" "!==e.key||l()}:void 0,"aria-expanded":m?a:void 0},r&&t("span",{style:{color:d.textMuted,flexShrink:0,minWidth:84}},function(e){const t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}.${String(t.getMilliseconds()).padStart(3,"0")}`}(e.timestamp)),n&&t("span",{style:{color:f,flexShrink:0,fontWeight:"fatal"===e.level?700:500,minWidth:56}},`[${e.level.toUpperCase().padEnd(5)}]`),o&&e.source&&t("span",{style:{background:d.surfaceAlt,border:`1px solid ${d.border}`,borderRadius:10,padding:"0 5px",fontSize:10,color:d.textMuted,flexShrink:0,maxWidth:80,overflow:"hidden",textOverflow:"ellipsis"}},h(e.source)),t("span",{style:{flex:1,color:d.text,overflow:"hidden",textOverflow:"ellipsis"}},...function(e,n){if(!n)return[e];const r=h(e),o=h(n);if(!o)return[r];try{const e=new RegExp(`(${o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");return r.split(e).map((n,r)=>e.test(n)?t("mark",{key:r,className:"tkx-log-highlight"},n):n)}catch{return[r]}}(e.message,i)),m&&t("span",{style:{color:d.textMuted,fontSize:10,flexShrink:0}},a?"▲":"▼"))}function H({metadata:e,theme:n,style:r}){return t("div",{style:{...r,background:n.surfaceAlt,borderBottom:`1px solid ${n.border}`,padding:"6px 10px 6px 56px",display:"flex",flexWrap:"wrap",gap:6,boxSizing:"border-box"}},...Object.entries(e).map(([e,r])=>t("span",{key:e,style:{fontSize:11,fontFamily:"monospace",color:n.textMuted,background:n.surface,border:`1px solid ${n.border}`,borderRadius:4,padding:"1px 6px"}},t("span",{style:{color:n.info}},`${h(e)}: `),h(String(r)))))}function P({entries:e,maxEntries:r=500,height:l=400,autoScroll:d=!0,showLevel:u=!0,showTimestamp:f=!0,showSource:p=!0,filterLevel:m,searchQuery:h="",monospace:g=!0,onEntryClick:y}){const b=c();!function(){if(B||"undefined"==typeof document)return;B=!0;const e=document.createElement("style");e.id="tkx-live-log-styles",e.textContent="\n.tkx-log-row:hover { filter: brightness(1.12); }\n.tkx-log-highlight { background: #ffbe0b55; border-radius: 2px; padding: 0 1px; }\n ".trim(),document.head.appendChild(e)}();const x=s(null),[w,k]=a(0),[v,S]=a(/* @__PURE__ */new Set),[$,M]=a(!1),z=s(e.length),N=i(()=>{let t=e.slice(-r);if(void 0!==m){const e=R[m];t=t.filter(t=>R[t.level]>=e)}if(h){const e=h.toLowerCase();t=t.filter(t=>t.message.toLowerCase().includes(e)||(t.source??"").toLowerCase().includes(e))}return t},[e,r,m,h]),j="number"==typeof l?l:400,F=i(()=>{const e=[];let t=0;for(const n of N)e.push(t),t+=28+(v.has(n.id)?40:0);return e.push(t),e},[N,v]),T=F[F.length-1]??0;o(()=>{d&&!$&&N.length!==z.current&&(z.current=N.length,x.current&&(x.current.scrollTop=x.current.scrollHeight))},[N.length,d,$]);const I=n(()=>{if(!x.current)return;const e=x.current;M(!(e.scrollHeight-e.scrollTop-e.clientHeight<56)),k(e.scrollTop)},[]),L=n(e=>{S(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),C=N.length>0?function(e){let t=0,n=N.length-1;for(;t<n;){const r=t+n>>1;(F[r+1]??0)<=e?t=r+1:n=r}return Math.max(0,t-8)}(w):0,W=N.length>0?function(e){let t=0,n=N.length-1;for(;t<n;){const r=t+n+1>>1;(F[r]??0)>=e+j?n=r-1:t=r}return Math.min(N.length-1,t+8)}(w):-1,A={position:"relative",overflow:"auto",height:"number"==typeof l?`${l}px`:l,background:b.bg,border:`1px solid ${b.border}`,borderRadius:8,boxSizing:"border-box"},O={position:"relative",height:T,minHeight:"100%"};if(0===N.length)return t("div",{style:{...A,display:"flex",alignItems:"center",justifyContent:"center"}},t("span",{style:{color:b.textMuted,fontSize:13,fontFamily:"monospace"}},"No log entries."));const E=[];for(let n=C;n<=W;n++){const e=N[n];if(!e)continue;const r=F[n]??0,o=v.has(e.id);E.push(t(_,{key:e.id,entry:e,showLevel:u,showTimestamp:f,showSource:p,searchQuery:h,monospace:g,isExpanded:o,onToggle:()=>L(e.id),onEntryClick:y,theme:b,style:{position:"absolute",top:r,left:0,right:0}})),o&&e.metadata&&Object.keys(e.metadata).length>0&&E.push(t(H,{key:`${e.id}-meta`,metadata:e.metadata,theme:b,style:{position:"absolute",top:r+28,left:0,right:0,height:40}}))}return t("div",{ref:x,style:A,onScroll:I,role:"log","aria-live":"polite","aria-label":"Log viewer"},t("div",{style:O},...E))}export{F as TkxLiveFeed,P as TkxLiveLog,A as TkxLiveMetrics,D as TkxRealTimeChart};
|
|
@@ -5,5 +5,6 @@ export interface TkxAffixProps {
|
|
|
5
5
|
offsetBottom?: number;
|
|
6
6
|
onChange?: (affixed: boolean) => void;
|
|
7
7
|
target?: () => HTMLElement | Window;
|
|
8
|
+
ariaLabel?: string;
|
|
8
9
|
}
|
|
9
|
-
export declare function TkxAffix({ children, offsetTop, offsetBottom, onChange, target, }: TkxAffixProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare function TkxAffix({ children, offsetTop, offsetBottom, onChange, target, ariaLabel, }: TkxAffixProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
1
|
+
import { type ReactNode, type CSSProperties } from 'react';
|
|
2
2
|
export interface TkxAppBarProps {
|
|
3
3
|
title?: ReactNode;
|
|
4
4
|
leading?: ReactNode;
|
|
@@ -8,5 +8,7 @@ export interface TkxAppBarProps {
|
|
|
8
8
|
position?: 'fixed' | 'sticky' | 'static';
|
|
9
9
|
variant?: 'default' | 'transparent' | 'elevated';
|
|
10
10
|
color?: 'primary' | 'surface';
|
|
11
|
+
className?: string;
|
|
12
|
+
style?: CSSProperties;
|
|
11
13
|
}
|
|
12
|
-
export declare function TkxAppBar({ title, leading, logo, actions, navigation, position, variant, color, }: TkxAppBarProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare function TkxAppBar({ title, leading, logo, actions, navigation, position, variant, color, className, style, }: TkxAppBarProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type CSSProperties } from 'react';
|
|
2
|
+
import { type FormSchema } from './TkxFormBuilder';
|
|
3
|
+
export interface TkxAutoFormProps {
|
|
4
|
+
schema: FormSchema;
|
|
5
|
+
defaultValues?: Record<string, unknown>;
|
|
6
|
+
onSubmit?: (data: Record<string, unknown>) => void;
|
|
7
|
+
onChange?: (values: Record<string, unknown>) => void;
|
|
8
|
+
submitLabel?: string;
|
|
9
|
+
sanitize?: boolean;
|
|
10
|
+
redactPII?: boolean;
|
|
11
|
+
validateOnBlur?: boolean;
|
|
12
|
+
className?: string;
|
|
13
|
+
style?: CSSProperties;
|
|
14
|
+
}
|
|
15
|
+
export declare function TkxAutoForm({ schema, defaultValues, onSubmit, onChange, submitLabel, sanitize, redactPII, validateOnBlur, className, style, }: TkxAutoFormProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
1
|
+
import { type ReactNode, type CSSProperties } from 'react';
|
|
2
2
|
export interface BottomNavItem {
|
|
3
3
|
id: string;
|
|
4
4
|
label: string;
|
|
@@ -10,5 +10,7 @@ export interface TkxBottomNavProps {
|
|
|
10
10
|
activeId?: string;
|
|
11
11
|
onChange?: (id: string) => void;
|
|
12
12
|
showLabels?: boolean;
|
|
13
|
+
className?: string;
|
|
14
|
+
style?: CSSProperties;
|
|
13
15
|
}
|
|
14
|
-
export declare function TkxBottomNav({ items, activeId, onChange, showLabels, }: TkxBottomNavProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare function TkxBottomNav({ items, activeId, onChange, showLabels, className, style, }: TkxBottomNavProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -10,6 +10,5 @@ export interface TkxCascaderProps {
|
|
|
10
10
|
onChange?: (value: string[], selectedOptions: CascaderOption[]) => void;
|
|
11
11
|
placeholder?: string;
|
|
12
12
|
label?: string;
|
|
13
|
-
multiple?: boolean;
|
|
14
13
|
}
|
|
15
|
-
export declare function TkxCascader({ options, value, onChange, placeholder, label,
|
|
14
|
+
export declare function TkxCascader({ options, value, onChange, placeholder, label, }: TkxCascaderProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ReactNode } from 'react';
|
|
1
|
+
import { type ReactNode, type CSSProperties } from 'react';
|
|
2
2
|
export interface ListItem {
|
|
3
3
|
key: string;
|
|
4
4
|
title: string;
|
|
@@ -19,5 +19,7 @@ export interface TkxListProps {
|
|
|
19
19
|
column?: number;
|
|
20
20
|
gutter?: number;
|
|
21
21
|
};
|
|
22
|
+
className?: string;
|
|
23
|
+
style?: CSSProperties;
|
|
22
24
|
}
|
|
23
|
-
export declare function TkxList({ items, header, footer, bordered, size, loading, emptyText, grid, }: TkxListProps): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
export declare function TkxList({ items, header, footer, bordered, size, loading, emptyText, grid, className, style, }: TkxListProps): import("react/jsx-runtime").JSX.Element;
|