@kb-labs/commit-cli 0.5.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/README.md +120 -0
- package/dist/cli/commands/apply.d.ts +22 -0
- package/dist/cli/commands/apply.js +132 -0
- package/dist/cli/commands/apply.js.map +1 -0
- package/dist/cli/commands/flags.d.ts +99 -0
- package/dist/cli/commands/flags.js +73 -0
- package/dist/cli/commands/flags.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +45 -0
- package/dist/cli/commands/generate.js +149 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.js +73 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/open.d.ts +50 -0
- package/dist/cli/commands/open.js +80 -0
- package/dist/cli/commands/open.js.map +1 -0
- package/dist/cli/commands/push.d.ts +18 -0
- package/dist/cli/commands/push.js +71 -0
- package/dist/cli/commands/push.js.map +1 -0
- package/dist/cli/commands/reset.d.ts +15 -0
- package/dist/cli/commands/reset.js +52 -0
- package/dist/cli/commands/reset.js.map +1 -0
- package/dist/cli/commands/run.d.ts +51 -0
- package/dist/cli/commands/run.js +190 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +916 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle/setup.d.ts +53 -0
- package/dist/lifecycle/setup.js +96 -0
- package/dist/lifecycle/setup.js.map +1 -0
- package/dist/manifest.d.ts +207 -0
- package/dist/manifest.js +833 -0
- package/dist/manifest.js.map +1 -0
- package/dist/rest/handlers/actions-handler.d.ts +16 -0
- package/dist/rest/handlers/actions-handler.js +15 -0
- package/dist/rest/handlers/actions-handler.js.map +1 -0
- package/dist/rest/handlers/apply-handler.d.ts +26 -0
- package/dist/rest/handlers/apply-handler.js +115 -0
- package/dist/rest/handlers/apply-handler.js.map +1 -0
- package/dist/rest/handlers/diff-handler.d.ts +20 -0
- package/dist/rest/handlers/diff-handler.js +64 -0
- package/dist/rest/handlers/diff-handler.js.map +1 -0
- package/dist/rest/handlers/files-handler.d.ts +16 -0
- package/dist/rest/handlers/files-handler.js +143 -0
- package/dist/rest/handlers/files-handler.js.map +1 -0
- package/dist/rest/handlers/generate-handler.d.ts +66 -0
- package/dist/rest/handlers/generate-handler.js +97 -0
- package/dist/rest/handlers/generate-handler.js.map +1 -0
- package/dist/rest/handlers/git-status-handler.d.ts +13 -0
- package/dist/rest/handlers/git-status-handler.js +58 -0
- package/dist/rest/handlers/git-status-handler.js.map +1 -0
- package/dist/rest/handlers/patch-plan-handler.d.ts +23 -0
- package/dist/rest/handlers/patch-plan-handler.js +50 -0
- package/dist/rest/handlers/patch-plan-handler.js.map +1 -0
- package/dist/rest/handlers/plan-handler.d.ts +50 -0
- package/dist/rest/handlers/plan-handler.js +32 -0
- package/dist/rest/handlers/plan-handler.js.map +1 -0
- package/dist/rest/handlers/push-handler.d.ts +25 -0
- package/dist/rest/handlers/push-handler.js +75 -0
- package/dist/rest/handlers/push-handler.js.map +1 -0
- package/dist/rest/handlers/regenerate-handler.d.ts +37 -0
- package/dist/rest/handlers/regenerate-handler.js +124 -0
- package/dist/rest/handlers/regenerate-handler.js.map +1 -0
- package/dist/rest/handlers/reset-handler.d.ts +17 -0
- package/dist/rest/handlers/reset-handler.js +30 -0
- package/dist/rest/handlers/reset-handler.js.map +1 -0
- package/dist/rest/handlers/scope-resolver.d.ts +15 -0
- package/dist/rest/handlers/scope-resolver.js +12 -0
- package/dist/rest/handlers/scope-resolver.js.map +1 -0
- package/dist/rest/handlers/scopes-handler.d.ts +12 -0
- package/dist/rest/handlers/scopes-handler.js +24 -0
- package/dist/rest/handlers/scopes-handler.js.map +1 -0
- package/dist/rest/handlers/status-handler.d.ts +27 -0
- package/dist/rest/handlers/status-handler.js +91 -0
- package/dist/rest/handlers/status-handler.js.map +1 -0
- package/dist/rest/handlers/summarize-handler.d.ts +21 -0
- package/dist/rest/handlers/summarize-handler.js +106 -0
- package/dist/rest/handlers/summarize-handler.js.map +1 -0
- package/dist/widgets/220.js +446 -0
- package/dist/widgets/220.js.map +1 -0
- package/dist/widgets/331.js +2 -0
- package/dist/widgets/331.js.map +1 -0
- package/dist/widgets/403.js +2 -0
- package/dist/widgets/403.js.map +1 -0
- package/dist/widgets/406.js +35 -0
- package/dist/widgets/406.js.map +1 -0
- package/dist/widgets/455.js +2 -0
- package/dist/widgets/455.js.map +1 -0
- package/dist/widgets/482.js +2 -0
- package/dist/widgets/482.js.map +1 -0
- package/dist/widgets/485.js +2 -0
- package/dist/widgets/485.js.map +1 -0
- package/dist/widgets/527.js +2 -0
- package/dist/widgets/527.js.map +1 -0
- package/dist/widgets/628.js +2 -0
- package/dist/widgets/628.js.map +1 -0
- package/dist/widgets/694.js +2 -0
- package/dist/widgets/694.js.map +1 -0
- package/dist/widgets/712.js +2 -0
- package/dist/widgets/712.js.map +1 -0
- package/dist/widgets/866.js +2 -0
- package/dist/widgets/866.js.map +1 -0
- package/dist/widgets/915.js +39 -0
- package/dist/widgets/915.js.map +1 -0
- package/dist/widgets/957.js +10 -0
- package/dist/widgets/957.js.map +1 -0
- package/dist/widgets/983.js +2 -0
- package/dist/widgets/983.js.map +1 -0
- package/dist/widgets/@mf-types.d.ts +3 -0
- package/dist/widgets/@mf-types.zip +0 -0
- package/dist/widgets/__federation_expose_CommitOverview.js +2 -0
- package/dist/widgets/__federation_expose_CommitOverview.js.map +1 -0
- package/dist/widgets/mf-manifest.json +260 -0
- package/dist/widgets/mf-stats.json +302 -0
- package/dist/widgets/remoteEntry.js +7 -0
- package/dist/widgets/remoteEntry.js.map +1 -0
- package/package.json +95 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_kb_labs_commit_cli=self.webpackChunk_kb_labs_commit_cli||[]).push([["331"],{9347(s,e,t){t.r(e),t.d(e,{EventBusProvider:()=>l,StudioEventBus:()=>o,eventBus:()=>n,useEventBusContext:()=>h});var r=t(5259),i=t(9793),o=class{subscriptions=new Map;history=[];devToolsObserver;subscribe(s,e,t,r){let i={event:s,handler:e,pluginId:t,pageId:r};return this.subscriptions.has(s)||this.subscriptions.set(s,new Set),this.subscriptions.get(s).add(i),()=>{this.subscriptions.get(s)?.delete(i)}}publish(s,e,t,r){let i={sourcePluginId:t,sourcePageId:r,timestamp:Date.now()},o={event:s,payload:e,meta:i};this.history.push(o),this.history.length>100&&this.history.shift(),this.devToolsObserver?.(o);let n=this.subscriptions.get(s);if(n)for(let t of n)try{t.handler(e,i)}catch(e){console.error(`[StudioEventBus] Handler error for "${s}" in ${t.pluginId}:${t.pageId}:`,e)}}unsubscribeAll(s,e){for(let[,t]of this.subscriptions)for(let r of t)r.pluginId===s&&r.pageId===e&&t.delete(r)}getHistory(){return this.history}setDevToolsObserver(s){this.devToolsObserver=s}clearDevToolsObserver(){this.devToolsObserver=void 0}reset(){this.subscriptions.clear(),this.history=[]}},n=new o,u=(0,r.createContext)(n);function l({children:s,bus:e}){return(0,i.jsx)(u.Provider,{value:e??n,children:s})}function h(){return(0,r.useContext)(u)}}}]);
|
|
2
|
+
//# sourceMappingURL=331.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"331.js","sources":["webpack://@kb-labs/commit-cli/../../../../platform/kb-labs-studio/packages/studio-event-bus/dist/index.js"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport { jsx } from 'react/jsx-runtime';\n\n// src/event-bus.ts\nvar MAX_HISTORY = 100;\nvar StudioEventBus = class {\n subscriptions = /* @__PURE__ */ new Map();\n history = [];\n devToolsObserver;\n /**\n * Subscribe to an event.\n * Returns an unsubscribe function.\n */\n subscribe(event, handler, pluginId, pageId) {\n const sub = {\n event,\n handler,\n pluginId,\n pageId\n };\n if (!this.subscriptions.has(event)) {\n this.subscriptions.set(event, /* @__PURE__ */ new Set());\n }\n this.subscriptions.get(event).add(sub);\n return () => {\n this.subscriptions.get(event)?.delete(sub);\n };\n }\n /**\n * Publish an event to all subscribers.\n */\n publish(event, payload, sourcePluginId, sourcePageId) {\n const meta = {\n sourcePluginId,\n sourcePageId,\n timestamp: Date.now()\n };\n const record = { event, payload, meta };\n this.history.push(record);\n if (this.history.length > MAX_HISTORY) {\n this.history.shift();\n }\n this.devToolsObserver?.(record);\n const subs = this.subscriptions.get(event);\n if (!subs) {\n return;\n }\n for (const sub of subs) {\n try {\n sub.handler(payload, meta);\n } catch (err) {\n console.error(\n `[StudioEventBus] Handler error for \"${event}\" in ${sub.pluginId}:${sub.pageId}:`,\n err\n );\n }\n }\n }\n /**\n * Unsubscribe all handlers for a specific page instance.\n * Called automatically on page unmount.\n */\n unsubscribeAll(pluginId, pageId) {\n for (const [, subs] of this.subscriptions) {\n for (const sub of subs) {\n if (sub.pluginId === pluginId && sub.pageId === pageId) {\n subs.delete(sub);\n }\n }\n }\n }\n /**\n * Get event history for devtools.\n */\n getHistory() {\n return this.history;\n }\n /**\n * Register a devtools observer that is called on every published event.\n * Only one observer at a time — intended for @kb-labs/studio-devtools only.\n */\n setDevToolsObserver(cb) {\n this.devToolsObserver = cb;\n }\n clearDevToolsObserver() {\n this.devToolsObserver = void 0;\n }\n /**\n * Clear all subscriptions and history. For testing.\n */\n reset() {\n this.subscriptions.clear();\n this.history = [];\n }\n};\nvar eventBus = new StudioEventBus();\nvar EventBusContext = createContext(eventBus);\nfunction EventBusProvider({ children, bus }) {\n return /* @__PURE__ */ jsx(EventBusContext.Provider, { value: bus ?? eventBus, children });\n}\nfunction useEventBusContext() {\n return useContext(EventBusContext);\n}\n\nexport { EventBusProvider, StudioEventBus, eventBus, useEventBusContext };\n//# sourceMappingURL=index.js.map\n//# sourceMappingURL=index.js.map"],"names":["Map","Set","Date","e","console"],"mappings":"oPAKI,EAAiB,MACnB,cAAgC,IAAIA,GAAM,AAC1C,SAAU,EAAE,AAAC,AACb,iBAAiB,AAKjB,WAAU,CAAK,CAAE,CAAO,CAAE,CAAQ,CAAE,CAAM,CAAE,CAC1C,IAAM,EAAM,CACV,QACA,UACA,WACA,QACF,EAKA,OAJI,AAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAuB,IAAIC,KAEpD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAO,GAAG,CAAC,GAC3B,KACL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAQ,OAAO,EACxC,CACF,CAIA,QAAQ,CAAK,CAAE,CAAO,CAAE,CAAc,CAAE,CAAY,CAAE,CACpD,IAAM,EAAO,CACX,iBACA,eACA,UAAWC,KAAK,GAAG,EACrB,EACM,EAAS,CAAE,QAAO,UAAS,MAAK,EACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GACd,IAAI,CAAC,OAAO,CAAC,MAAM,CAnCT,KAoCZ,IAAI,CAAC,OAAO,CAAC,KAAK,GAEpB,IAAI,CAAC,gBAAgB,GAAG,GACxB,IAAM,EAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GACpC,GAAK,EAGL,IAAK,IAAM,KAAO,EAChB,GAAI,CACF,EAAI,OAAO,CAAC,EAAS,EACvB,CAAE,MAAOC,EAAK,CACZC,QAAQ,KAAK,CACX,CAAC,oCAAoC,EAAE,EAAM,KAAK,EAAE,EAAI,QAAQ,CAAC,CAAC,EAAE,EAAI,MAAM,CAAC,CAAC,CAAC,CACjFD,EAEJ,CAEJ,CAKA,eAAe,CAAQ,CAAE,CAAM,CAAE,CAC/B,IAAK,GAAM,EAAG,EAAK,GAAI,IAAI,CAAC,aAAa,CACvC,IAAK,IAAM,KAAO,EACZ,EAAI,QAAQ,GAAK,GAAY,EAAI,MAAM,GAAK,GAC9C,EAAK,MAAM,CAAC,EAIpB,CAIA,YAAa,CACX,OAAO,IAAI,CAAC,OAAO,AACrB,CAKA,oBAAoB,CAAE,CAAE,CACtB,IAAI,CAAC,gBAAgB,CAAG,CAC1B,CACA,uBAAwB,CACtB,IAAI,CAAC,gBAAgB,CAAG,KAAK,CAC/B,CAIA,OAAQ,CACN,IAAI,CAAC,aAAa,CAAC,KAAK,GACxB,IAAI,CAAC,OAAO,CAAG,EAAE,AACnB,CACF,EACI,EAAW,IAAI,EACf,EAAkB,oBAAc,GACpC,SAAS,EAAiB,CAAE,UAAQ,CAAE,KAAG,CAAE,EACzC,MAAuB,UAAI,EAAgB,QAAQ,CAAE,CAAE,MAAO,GAAO,EAAU,UAAS,EAC1F,CACA,SAAS,IACP,MAAO,iBAAW,EACpB,C"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_kb_labs_commit_cli=self.webpackChunk_kb_labs_commit_cli||[]).push([["403"],{9206(r,e,o){o.r(e),o.d(e,{PageContextProvider:()=>d,getAntDesignComponents:()=>w,getAntDesignTokens:()=>P,useData:()=>b,useEventBus:()=>y,useInfiniteData:()=>S,useMutateData:()=>m,useNavigation:()=>F,useNotification:()=>E,usePage:()=>u,usePageContext:()=>g,usePermissions:()=>T,useSSE:()=>p,useTheme:()=>A,useWebSocket:()=>h});var t=o(5259),a=o(9793),c=o(9109),n=o(5444),i=o(231),l=o(2078),v=o(7973),s=(0,t.createContext)(null);function d({children:r,value:e}){return(0,a.jsx)(s.Provider,{value:e,children:r})}function g(){let r=(0,t.useContext)(s);if(!r)throw Error("usePage() must be used inside a PageContextProvider (are you inside a Studio page?)");return r}function u(){return g()}function y(){let r=(0,c.useEventBusContext)(),{pluginId:e,pageId:o}=g(),a=(0,t.useRef)([]);return(0,t.useEffect)(()=>()=>{for(let r of a.current)r();a.current=[]},[]),{publish:(0,t.useCallback)((t,a)=>{r.publish(t,a,e,o)},[r,e,o]),subscribe:(0,t.useCallback)((t,c)=>{let n=r.subscribe(t,c,e,o);return a.current.push(n),n},[r,e,o])}}function b(r,e){let o=function(r,e){if(!e||0===Object.keys(e).length)return r;let o=new URLSearchParams;for(let[r,t]of Object.entries(e))null!=t&&o.set(r,String(t));let t=r.includes("?")?"&":"?";return`${r}${t}${o.toString()}`}(r,e?.params),t=(0,n.useQuery)({queryKey:["studio-data",o],queryFn:()=>x(o),enabled:e?.enabled,staleTime:e?.staleTime,refetchInterval:e?.pollingMs||void 0,select:e?.select});return{data:t.data,isLoading:t.isLoading,isError:t.isError,error:t.error,refetch:t.refetch,isFetching:t.isFetching}}function m(r,e="POST"){let o=(0,n.useMutation)({mutationFn:async o=>{let t=null!=o,a=await fetch(`/api${r}`,{method:e,headers:t?{"Content-Type":"application/json"}:{},body:t?JSON.stringify(o):void 0});if(!a.ok)throw Error(`${e} ${r} failed: ${a.status} ${a.statusText}`);return a.json()}});return{mutate:o.mutate,mutateAsync:o.mutateAsync,isLoading:o.isPending,isError:o.isError,error:o.error,data:o.data}}async function x(r){let e=await fetch(`/api${r}`);if(!e.ok)throw Error(`GET ${r} failed: ${e.status} ${e.statusText}`);let o=await e.json();return o&&"object"==typeof o&&"ok"in o&&"data"in o?o.data:o}function p(r,e={}){let{events:o="message",doneEvent:a,enabled:c=!0,reconnect:n=!1,maxReconnects:i=5,reconnectIntervalMs:l=2e3,maxEvents:v=0,parse:s=B,params:d,onEvent:g,onOpen:u,onError:y,onDone:b}=e,[m,x]=(0,t.useState)([]),[S,f]=(0,t.useState)(void 0),[h,k]=(0,t.useState)(null),[C,T]=(0,t.useState)(!1),[F,E]=(0,t.useState)(0),H=(0,t.useRef)(null),A=(0,t.useRef)(null),P=(0,t.useRef)(!1),w=(0,t.useRef)(g),I=(0,t.useRef)(u),D=(0,t.useRef)(y),L=(0,t.useRef)(b),W=(0,t.useRef)(s);w.current=g,I.current=u,D.current=y,L.current=b,W.current=s;let R=JSON.stringify(o),$=JSON.stringify(d),M=(0,t.useCallback)(()=>{P.current=!0,A.current&&(clearTimeout(A.current),A.current=null),H.current&&(H.current.close(),H.current=null),T(!1)},[]),O=(0,t.useCallback)(()=>{x([]),f(void 0)},[]);return(0,t.useEffect)(()=>{if(!r||!c){H.current&&(H.current.close(),H.current=null),T(!1);return}P.current=!1,x([]),f(void 0),k(null),E(0);let e=0;return!function t(){let c=new EventSource(function(r,e){let o=r.startsWith("http")?r:`/api${r}`;if(!e||0===Object.keys(e).length)return o;let t=new URLSearchParams;for(let[r,o]of Object.entries(e))null!=o&&t.set(r,String(o));let a=o.includes("?")?"&":"?";return`${o}${a}${t.toString()}`}(r,d));H.current=c;let s=Array.isArray(o)?o:[o],g=r=>{try{let e=W.current(r.data);f(e),x(r=>{let o=[...r,e];return v>0&&o.length>v?o.slice(-v):o}),w.current?.(e)}catch(e){let r=e instanceof Error?e:Error("Failed to parse SSE event data");k(r),D.current?.(r)}};for(let r of s)c.addEventListener(r,g);a&&c.addEventListener(a,()=>{c.close(),H.current=null,T(!1),L.current?.()}),c.onopen=()=>{e=0,E(0),T(!0),k(null),I.current?.()},c.onerror=()=>{if(c.close(),H.current=null,T(!1),P.current)return;let r=Error("SSE connection lost");k(r),D.current?.(r),n&&e<i&&(E(++e),A.current=setTimeout(t,l*Math.pow(2,e-1)))}}(),()=>{P.current=!0,A.current&&(clearTimeout(A.current),A.current=null),H.current&&(H.current.close(),H.current=null)}},[r,c,a,n,i,l,v,R,$]),{events:m,latest:S,isConnected:C,error:h,close:M,clear:O,reconnectCount:F}}function B(r){return JSON.parse(r)}function S(r,e){let{getNextCursor:o,params:t,enabled:a,staleTime:c,cursorParam:i="cursor",initialCursor:l}=e,v=(0,n.useInfiniteQuery)({queryKey:["studio-infinite",r,t],queryFn:async({pageParam:e})=>f(function(r,e,o,t){let a=new URLSearchParams;if(e)for(let[r,o]of Object.entries(e))null!=o&&a.set(r,String(o));null!=t&&a.set(o,String(t));let c=a.toString(),n=r.startsWith("http")?r:`/api${r}`;return c?`${n}?${c}`:n}(r,t,i,e)),initialPageParam:l,getNextPageParam:o,enabled:a,staleTime:c}),s=v.data?.pages??[],d=s.flatMap(r=>Array.isArray(r)?r:[r]);return{pages:s,data:d,isLoading:v.isLoading,isFetching:v.isFetching,isFetchingNextPage:v.isFetchingNextPage,hasNextPage:v.hasNextPage,fetchNextPage:v.fetchNextPage,error:v.error,isError:v.isError,refetch:v.refetch}}async function f(r){let e=await fetch(r);if(!e.ok)throw Error(`GET ${r} failed: ${e.status} ${e.statusText}`);let o=await e.json();return o&&"object"==typeof o&&"ok"in o&&"data"in o?o.data:o}function h(r,e={}){let{enabled:o=!0,reconnect:a=!1,maxReconnects:c=5,reconnectIntervalMs:n=2e3,protocols:i,parse:l=k,serialize:v=C,maxMessages:s=100,onMessage:d,onOpen:g,onClose:u,onError:y}=e,[b,m]=(0,t.useState)([]),[x,p]=(0,t.useState)(void 0),[B,S]=(0,t.useState)("disconnected"),[f,T]=(0,t.useState)(null),[F,E]=(0,t.useState)(0),H=(0,t.useRef)(null),A=(0,t.useRef)(null),P=(0,t.useRef)(!1),w=(0,t.useRef)(d),I=(0,t.useRef)(g),D=(0,t.useRef)(u),L=(0,t.useRef)(y),W=(0,t.useRef)(l),R=(0,t.useRef)(v);w.current=d,I.current=g,D.current=u,L.current=y,W.current=l,R.current=v;let $=(0,t.useCallback)(()=>{A.current&&(clearTimeout(A.current),A.current=null),H.current&&(H.current.close(),H.current=null)},[]),M=(0,t.useCallback)(()=>{if(!r)return;$(),P.current=!1,S("connecting"),T(null);let e=0;!function o(){let t=function(r){if(r.startsWith("ws://")||r.startsWith("wss://"))return r;let e="https:"===window.location.protocol?"wss:":"ws:",o=r.startsWith("/")?r:`/${r}`;return`${e}//${window.location.host}${o}`}(r),l=i?new WebSocket(t,i):new WebSocket(t);H.current=l,l.onopen=r=>{e=0,E(0),S("connected"),T(null),I.current?.(r)},l.onmessage=r=>{try{let e=W.current(r.data);p(e),m(r=>{let o=[...r,e];return s>0&&o.length>s?o.slice(-s):o}),w.current?.(e)}catch{}},l.onclose=r=>{H.current=null,S("disconnected"),D.current?.(r),!P.current&&a&&e<c&&1e3!==r.code&&(E(++e),A.current=setTimeout(o,n*Math.pow(2,e-1)))},l.onerror=r=>{S("error"),T(r),L.current?.(r)}}()},[r,i,a,c,n,s,$]),O=(0,t.useCallback)((r,e)=>{P.current=!0,A.current&&(clearTimeout(A.current),A.current=null),H.current&&(H.current.close(r,e),H.current=null),S("disconnected")},[]),N=(0,t.useCallback)(r=>{H.current?.readyState===WebSocket.OPEN&&H.current.send(R.current(r))},[]),z=(0,t.useCallback)(r=>{H.current?.readyState===WebSocket.OPEN&&H.current.send(r)},[]),X=(0,t.useCallback)(()=>{m([]),p(void 0)},[]);return(0,t.useEffect)(()=>{if(!r||!o){$(),S("disconnected");return}return m([]),p(void 0),M(),()=>{P.current=!0,$()}},[r,o]),{send:N,sendRaw:z,messages:b,latest:x,status:B,isConnected:"connected"===B,error:f,connect:M,disconnect:O,clear:X,reconnectCount:F}}function k(r){return JSON.parse(r)}function C(r){return JSON.stringify(r)}function T(){let{permissions:r}=g();return{hasPermission:(0,t.useCallback)(e=>r.includes(e),[r]),permissions:r}}function F(){let r=(0,i.useNavigate)(),e=(0,i.useLocation)(),o=(0,t.useCallback)(e=>r(e),[r]),a=(0,t.useCallback)(()=>r(-1),[r]),c=(0,t.useCallback)(r=>window.open(r,"_blank","noopener"),[]);return{navigate:o,currentPath:e.pathname,goBack:a,openExternal:c}}function E(){let r=(0,t.useCallback)(r=>{l.notification[r.type]({message:r.message,description:r.description,duration:r.duration??4.5})},[]),e=(0,t.useCallback)((e,o)=>r({type:"success",message:e,description:o}),[r]),o=(0,t.useCallback)((e,o)=>r({type:"error",message:e,description:o}),[r]),a=(0,t.useCallback)((e,o)=>r({type:"warning",message:e,description:o}),[r]),c=(0,t.useCallback)((e,o)=>r({type:"info",message:e,description:o}),[r]);return{notify:r,success:e,error:o,warning:a,info:c}}var H={bgPrimary:v.lightSemanticColors["bg-primary"],bgSecondary:v.lightSemanticColors["bg-secondary"],bgTertiary:v.lightSemanticColors["bg-tertiary"],textPrimary:v.lightSemanticColors["text-primary"],textSecondary:v.lightSemanticColors["text-secondary"],textTertiary:v.lightSemanticColors["text-tertiary"],textInverse:v.lightSemanticColors["text-inverse"],borderPrimary:v.lightSemanticColors["border-primary"],borderSecondary:v.lightSemanticColors["border-secondary"],link:v.lightSemanticColors.link,linkHover:v.lightSemanticColors["link-hover"],accentSubtle:v.lightSemanticColors["accent-subtle"],success:v.lightSemanticColors.success,warning:v.lightSemanticColors.warning,error:v.lightSemanticColors.error,info:v.lightSemanticColors.info,disabled:v.lightSemanticColors.disabled,shadow:v.lightSemanticColors.shadow};function A(){let{token:r}=l.theme.useToken();return{mode:"light",antdToken:r,semantic:H,tokens:{colors:v.colors,spacing:v.spacing,typography:v.typography,radius:v.radius,shadows:v.shadows}}}function P(){return{colorPrimary:"var(--link, #0c66ff)",colorPrimaryHover:"var(--link-hover, #0050cc)",colorPrimaryActive:"var(--link-hover, #0050cc)",colorPrimaryBg:"var(--accent-subtle, #dbeafe)",colorPrimaryBgHover:"var(--accent-subtle, #dbeafe)",colorPrimaryBorder:"var(--link, #0c66ff)",colorPrimaryBorderHover:"var(--link-hover, #0050cc)",colorPrimaryText:"var(--link, #0c66ff)",colorPrimaryTextHover:"var(--link-hover, #0050cc)",colorPrimaryTextActive:"var(--link-hover, #0050cc)",colorSuccess:"var(--success, #16A34A)",colorSuccessHover:"var(--success, #16A34A)",colorSuccessActive:"var(--success, #16A34A)",colorSuccessBg:"var(--bg-tertiary, #F3F4F6)",colorSuccessBgHover:"var(--bg-tertiary, #F3F4F6)",colorSuccessBorder:"var(--success, #16A34A)",colorSuccessBorderHover:"var(--success, #16A34A)",colorSuccessText:"var(--success, #16A34A)",colorSuccessTextHover:"var(--success, #16A34A)",colorSuccessTextActive:"var(--success, #16A34A)",colorWarning:"var(--warning, #F59E0B)",colorWarningHover:"var(--warning, #F59E0B)",colorWarningActive:"var(--warning, #F59E0B)",colorWarningBg:"var(--bg-tertiary, #F3F4F6)",colorWarningBgHover:"var(--bg-tertiary, #F3F4F6)",colorWarningBorder:"var(--warning, #F59E0B)",colorWarningBorderHover:"var(--warning, #F59E0B)",colorWarningText:"var(--warning, #F59E0B)",colorWarningTextHover:"var(--warning, #F59E0B)",colorWarningTextActive:"var(--warning, #F59E0B)",colorWarningOutline:"rgba(245, 158, 11, 0.2)",colorError:"var(--error, #DC2626)",colorErrorHover:"var(--error, #DC2626)",colorErrorActive:"var(--error, #DC2626)",colorErrorBg:"var(--bg-tertiary, #F3F4F6)",colorErrorBgHover:"var(--bg-tertiary, #F3F4F6)",colorErrorBorder:"var(--error, #DC2626)",colorErrorBorderHover:"var(--error, #DC2626)",colorErrorText:"var(--error, #DC2626)",colorErrorTextHover:"var(--error, #DC2626)",colorErrorTextActive:"var(--error, #DC2626)",colorErrorOutline:"rgba(220, 38, 38, 0.2)",colorInfo:"var(--info, #0EA5E9)",colorInfoHover:"var(--info, #0EA5E9)",colorInfoActive:"var(--info, #0EA5E9)",colorInfoBg:"var(--bg-tertiary, #F3F4F6)",colorInfoBgHover:"var(--bg-tertiary, #F3F4F6)",colorInfoBorder:"var(--info, #0EA5E9)",colorInfoBorderHover:"var(--info, #0EA5E9)",colorInfoText:"var(--info, #0EA5E9)",colorInfoTextHover:"var(--info, #0EA5E9)",colorInfoTextActive:"var(--info, #0EA5E9)",colorBgContainer:"var(--bg-secondary, #FFFFFF)",colorBgBase:"var(--bg-primary, #F9FAFB)",colorBgElevated:"var(--bg-secondary, #FFFFFF)",colorBgLayout:"var(--bg-primary, #F9FAFB)",colorBgSpotlight:"var(--bg-tertiary, #F3F4F6)",colorBgMask:"rgba(0, 0, 0, 0.45)",colorBgTextHover:"var(--bg-hover, #F3F4F6)",colorBgTextActive:"var(--bg-hover, #F3F4F6)",colorBgContainerDisabled:"var(--bg-tertiary, #F3F4F6)",colorText:"var(--text-primary, #111827)",colorTextBase:"var(--text-primary, #111827)",colorTextSecondary:"var(--text-secondary, #6B7280)",colorTextTertiary:"var(--text-tertiary, #6B7280)",colorTextQuaternary:"var(--text-tertiary, #6B7280)",colorTextDisabled:"var(--disabled, #9CA3AF)",colorTextHeading:"var(--text-primary, #111827)",colorTextLabel:"var(--text-secondary, #6B7280)",colorTextDescription:"var(--text-secondary, #6B7280)",colorTextPlaceholder:"var(--text-tertiary, #6B7280)",colorTextLightSolid:"var(--text-inverse, #FFFFFF)",colorBorder:"var(--border-primary, #E5E7EB)",colorBorderSecondary:"var(--border-secondary, #D4D4D4)",colorBorderBg:"var(--bg-secondary, #FFFFFF)",colorSplit:"var(--border-primary, #E5E7EB)",colorFill:"var(--bg-tertiary, #F3F4F6)",colorFillSecondary:"var(--bg-tertiary, #F3F4F6)",colorFillTertiary:"var(--bg-primary, #F9FAFB)",colorFillQuaternary:"var(--bg-primary, #F9FAFB)",colorFillContent:"var(--bg-hover, #F3F4F6)",colorFillContentHover:"var(--bg-hover, #F3F4F6)",colorFillAlter:"var(--bg-tertiary, #F3F4F6)",colorWhite:"#FFFFFF",boxShadow:"0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.04)",boxShadowSecondary:"0 4px 12px rgba(0,0,0,0.08)",boxShadowTertiary:"0 8px 24px rgba(0,0,0,0.08)",borderRadius:8,borderRadiusLG:12,borderRadiusSM:6,borderRadiusXS:4,borderRadiusOuter:6,controlHeight:36,controlHeightLG:40,controlHeightSM:28,controlHeightXS:22,fontFamily:"var(--font-body, 'Inter', 'Segoe UI', sans-serif)",fontSize:14,fontSizeLG:16,fontSizeSM:12,fontSizeXL:20,fontSizeHeading1:38,fontSizeHeading2:30,fontSizeHeading3:24,fontSizeHeading4:20,fontSizeHeading5:16,fontSizeIcon:12,fontWeightStrong:600,lineHeight:1.5714285714285714,lineHeightLG:1.5,lineHeightSM:1.6666666666666667,padding:16,paddingLG:24,paddingSM:12,paddingXS:8,paddingXXS:4,margin:16,marginLG:24,marginSM:12,marginXS:8,marginXXS:4,motionDurationFast:"0.1s",motionDurationMid:"0.2s",motionDurationSlow:"0.3s",motionEaseInOut:"cubic-bezier(0.645, 0.045, 0.355, 1)",motionEaseOut:"cubic-bezier(0.215, 0.61, 0.355, 1)",colorLink:"var(--link, #0c66ff)",colorLinkHover:"var(--link-hover, #0050cc)",colorLinkActive:"var(--link-hover, #0050cc)",colorIcon:"var(--text-secondary, #6B7280)",colorIconHover:"var(--text-primary, #111827)",colorHighlight:"var(--link, #0c66ff)",controlOutline:"rgba(12, 102, 255, 0.15)",controlOutlineWidth:2,controlInteractiveSize:16,controlItemBgHover:"var(--bg-hover, #F3F4F6)",controlItemBgActive:"var(--accent-subtle, #dbeafe)",controlItemBgActiveHover:"var(--accent-subtle, #dbeafe)",controlItemBgActiveDisabled:"var(--bg-tertiary, #F3F4F6)",controlTmpOutline:"rgba(12, 102, 255, 0.08)",screenXS:480,screenSM:576,screenMD:768,screenLG:992,screenXL:1200,screenXXL:1600}}function w(){return{Table:{headerBg:"var(--bg-tertiary)",headerColor:"var(--text-primary)",borderColor:"var(--border-primary)",colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",rowHoverBg:"var(--bg-hover)",rowSelectedBg:"var(--accent-subtle)",rowSelectedHoverBg:"var(--accent-subtle)",rowExpandedBg:"var(--bg-secondary)",bodySortBg:"var(--bg-tertiary)",headerSortActiveBg:"var(--bg-tertiary)",headerSortHoverBg:"var(--bg-tertiary)",headerFilterHoverBg:"var(--bg-tertiary)",fixedHeaderSortActiveBg:"var(--bg-tertiary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",expandIconBg:"var(--bg-secondary)",footerBg:"var(--bg-tertiary)",footerColor:"var(--text-primary)",selectionColumnWidth:60,stickyScrollBarBg:"var(--bg-tertiary)",stickyScrollBarBorderRadius:4},Tag:{defaultBg:"var(--bg-tertiary)",defaultColor:"var(--text-primary)",colorBorder:"var(--border-primary)",colorSuccess:"var(--success)",colorError:"var(--error)",colorWarning:"var(--warning)",colorInfo:"var(--info)"},Badge:{colorError:"var(--error)",colorSuccess:"var(--success)",colorWarning:"var(--warning)",colorInfo:"var(--info)",colorText:"var(--text-primary)"},Alert:{colorSuccess:"var(--success)",colorError:"var(--error)",colorWarning:"var(--warning)",colorInfo:"var(--info)",colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",colorSuccessBg:"var(--bg-tertiary)",colorErrorBg:"var(--bg-tertiary)",colorWarningBg:"var(--bg-tertiary)",colorInfoBg:"var(--bg-tertiary)",colorSuccessBorder:"var(--success)",colorErrorBorder:"var(--error)",colorWarningBorder:"var(--warning)",colorInfoBorder:"var(--info)"},Card:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBorderSecondary:"var(--border-primary)",headerBg:"var(--bg-secondary)",actionsBg:"var(--bg-tertiary)",extraColor:"var(--text-secondary)"},Descriptions:{colorText:"var(--text-primary)",colorTextLabel:"var(--text-secondary)",colorBorder:"var(--border-primary)"},Button:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)",colorPrimaryActive:"var(--link-hover)",primaryColor:"var(--text-inverse)",primaryShadow:"0 2px 0 rgba(12, 102, 255, 0.15)",defaultBg:"var(--bg-secondary)",defaultColor:"var(--text-primary)",defaultBorderColor:"var(--border-primary)",defaultShadow:"0 2px 0 rgba(0, 0, 0, 0.015)",defaultHoverBg:"var(--bg-hover)",defaultHoverColor:"var(--text-primary)",defaultHoverBorderColor:"var(--border-secondary)",defaultActiveBg:"var(--bg-hover)",defaultActiveColor:"var(--text-primary)",defaultActiveBorderColor:"var(--border-secondary)",ghostBg:"transparent",defaultGhostColor:"var(--text-primary)",defaultGhostBorderColor:"var(--border-primary)",borderColorDisabled:"var(--border-primary)",colorBgContainerDisabled:"var(--bg-tertiary)",textTextColor:"var(--text-secondary)",textTextHoverColor:"var(--text-primary)",textTextActiveColor:"var(--text-primary)",textHoverBg:"var(--accent-subtle)",linkHoverBg:"transparent",colorLink:"var(--link)",colorLinkHover:"var(--link-hover)",colorLinkActive:"var(--link-hover)",solidTextColor:"var(--text-primary)",dangerColor:"var(--error)",dangerShadow:"0 2px 0 rgba(220, 38, 38, 0.1)",colorErrorBg:"transparent",colorErrorBgHover:"var(--bg-hover)",colorErrorBorder:"var(--error)",colorErrorBorderHover:"var(--error)",colorErrorHover:"var(--error)",colorErrorActive:"var(--error)"},Input:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorTextPlaceholder:"var(--text-tertiary)",hoverBorderColor:"var(--border-secondary)",activeBorderColor:"var(--link)",activeShadow:"0 0 0 3px rgba(12, 102, 255, 0.12)",errorActiveShadow:"0 0 0 2px rgba(220, 38, 38, 0.1)",warningActiveShadow:"0 0 0 2px rgba(245, 158, 11, 0.1)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)"},Select:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBgElevated:"var(--bg-secondary)",colorTextPlaceholder:"var(--text-tertiary)",colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)",optionSelectedBg:"var(--accent-subtle)",optionSelectedColor:"var(--link)",optionActiveBg:"var(--bg-hover)",optionSelectedFontWeight:600,multipleItemBg:"var(--bg-tertiary)",multipleItemBorderColor:"var(--border-primary)",multipleItemColorDisabled:"var(--disabled)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",selectorBg:"var(--bg-secondary)"},Dropdown:{colorText:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorTextDisabled:"var(--disabled)",controlItemBgHover:"var(--bg-hover)",controlItemBgActive:"var(--accent-subtle)",controlItemBgActiveHover:"var(--accent-subtle)",colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)",colorBgContainer:"var(--bg-secondary)",colorSplit:"var(--border-primary)",paddingBlock:8,controlPaddingHorizontal:12},Menu:{colorText:"var(--text-primary)",colorTextSecondary:"var(--text-secondary)",colorBgContainer:"var(--bg-sidebar)",colorBorder:"var(--border-primary)",colorSplit:"var(--border-primary)",itemColor:"var(--text-primary)",itemBg:"var(--bg-secondary)",itemHoverBg:"var(--bg-hover)",itemHoverColor:"var(--link)",itemSelectedBg:"var(--accent-subtle)",itemSelectedColor:"var(--link)",itemActiveBg:"var(--accent-subtle)",colorActiveBarBorderSize:0,darkItemBg:"var(--bg-secondary)",darkItemColor:"var(--text-primary)",darkItemHoverBg:"var(--bg-hover)",darkItemSelectedBg:"var(--accent-subtle)",darkItemSelectedColor:"var(--link)",darkSubMenuItemBg:"var(--bg-secondary)",subMenuItemBg:"var(--bg-secondary)",popupBg:"var(--bg-secondary)",colorPrimary:"var(--link)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",groupTitleColor:"var(--text-tertiary)",groupTitleFontSize:11,itemBorderRadius:8,subMenuItemBorderRadius:6,itemPaddingInline:12},Tabs:{colorText:"var(--text-secondary)",colorTextHeading:"var(--text-primary)",colorBorder:"var(--border-primary)",colorBorderSecondary:"var(--border-primary)",colorPrimary:"var(--link)",itemHoverColor:"var(--link)",itemSelectedColor:"var(--link)",itemActiveColor:"var(--link)",inkBarColor:"var(--link)"},Modal:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)",headerBg:"var(--bg-secondary)",footerBg:"var(--bg-tertiary)",contentBg:"var(--bg-secondary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)"},Drawer:{colorText:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)"},Popover:{colorText:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)"},Tooltip:{colorText:"var(--text-primary)",colorBgSpotlight:"var(--bg-secondary)",colorTextLightSolid:"var(--text-primary)"},List:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBorder:"var(--border-primary)",colorSplit:"var(--border-primary)",metaMarginBottom:8,avatarMarginRight:16},Switch:{colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)"},Radio:{colorPrimary:"var(--link)",colorText:"var(--text-primary)",buttonCheckedBg:"var(--link)",buttonCheckedBgDisabled:"var(--disabled)",buttonColor:"var(--text-primary)",buttonSolidCheckedColor:"var(--text-inverse)",buttonSolidCheckedBg:"var(--link)",buttonSolidCheckedHoverBg:"var(--link-hover)",buttonSolidCheckedActiveBg:"var(--link-hover)"},Checkbox:{colorPrimary:"var(--link)",colorText:"var(--text-primary)"},DatePicker:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBgElevated:"var(--bg-secondary)",colorTextPlaceholder:"var(--text-tertiary)",colorTextDisabled:"var(--disabled)",colorLink:"var(--link)",colorLinkHover:"var(--link-hover)",cellHoverBg:"var(--bg-hover)",cellActiveWithRangeBg:"var(--accent-subtle)",cellBgDisabled:"var(--bg-tertiary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)"},Form:{colorText:"var(--text-primary)",colorTextLabel:"var(--text-secondary)",colorError:"var(--error)",colorWarning:"var(--warning)"},Pagination:{colorText:"var(--text-primary)",colorTextDisabled:"var(--disabled)",colorBgContainer:"var(--bg-secondary)",colorPrimary:"var(--link)",colorPrimaryHover:"var(--link-hover)",itemBg:"var(--bg-secondary)",itemActiveBg:"var(--link)",itemActiveBgDisabled:"var(--bg-tertiary)",itemInputBg:"var(--bg-secondary)",itemLinkBg:"var(--bg-secondary)",colorBgTextHover:"var(--bg-hover)"},Steps:{colorText:"var(--text-primary)",colorTextDescription:"var(--text-secondary)",colorPrimary:"var(--link)",colorBorder:"var(--border-primary)"},Breadcrumb:{colorText:"var(--text-secondary)",colorTextDescription:"var(--text-tertiary)",linkColor:"var(--link)",linkHoverColor:"var(--link-hover)",separatorColor:"var(--text-tertiary)"},Progress:{colorText:"var(--text-primary)",colorSuccess:"var(--success)",colorError:"var(--error)",remainingColor:"var(--bg-tertiary)"},Skeleton:{colorFill:"var(--bg-tertiary)",colorFillContent:"var(--bg-hover)"},Spin:{colorPrimary:"var(--link)",colorBgContainer:"var(--bg-secondary)"},Divider:{colorSplit:"var(--border-primary)",colorText:"var(--text-secondary)"},Layout:{headerBg:"var(--bg-secondary)",bodyBg:"var(--bg-primary)",triggerBg:"var(--bg-tertiary)",colorText:"var(--text-primary)"},Collapse:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBorder:"var(--border-primary)",colorBgContainer:"var(--bg-secondary)",headerBg:"var(--bg-tertiary)"},Carousel:{colorBgContainer:"var(--bg-secondary)",dotActiveWidth:24},Anchor:{colorPrimary:"var(--link)",colorText:"var(--text-secondary)",linkPaddingBlock:4},Timeline:{colorText:"var(--text-primary)",colorTextDescription:"var(--text-secondary)",tailColor:"var(--border-primary)",dotBg:"var(--bg-secondary)"},Transfer:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",controlItemBgActive:"var(--bg-hover)"},Tree:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorPrimary:"var(--link)",nodeHoverBg:"var(--bg-hover)",nodeSelectedBg:"var(--accent-subtle)"},TreeSelect:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBgElevated:"var(--bg-secondary)",nodeHoverBg:"var(--bg-hover)",nodeSelectedBg:"var(--accent-subtle)"},Cascader:{colorText:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorBgElevated:"var(--bg-secondary)",optionSelectedBg:"var(--bg-hover)"},Segmented:{colorText:"var(--text-primary)",colorTextLabel:"var(--text-secondary)",colorBgLayout:"var(--bg-tertiary)",itemSelectedBg:"var(--bg-secondary)",itemSelectedColor:"var(--link)",itemHoverBg:"var(--bg-hover)"},Rate:{colorText:"var(--warning)"},Slider:{colorPrimary:"var(--link)",colorPrimaryBorder:"var(--link)",trackBg:"var(--bg-tertiary)",trackHoverBg:"var(--bg-hover)"},Upload:{colorText:"var(--text-primary)",colorTextDescription:"var(--text-secondary)",colorBorder:"var(--border-primary)",colorFillAlter:"var(--bg-tertiary)",colorPrimary:"var(--link)"},Calendar:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgContainer:"var(--bg-secondary)",colorBorder:"var(--border-primary)",itemActiveBg:"var(--accent-subtle)"},Image:{colorTextLightSolid:"var(--text-primary)",colorBgMask:"rgba(0, 0, 0, 0.45)"},Statistic:{colorText:"var(--text-primary)",colorTextDescription:"var(--text-secondary)"},Result:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorTextDescription:"var(--text-secondary)"},Empty:{colorText:"var(--text-secondary)",colorTextDescription:"var(--text-tertiary)"},Message:{colorText:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",contentBg:"var(--bg-secondary)",contentPadding:"10px 16px",colorSuccess:"var(--success)",colorError:"var(--error)",colorWarning:"var(--warning)",colorInfo:"var(--info)"},Notification:{colorText:"var(--text-primary)",colorTextHeading:"var(--text-primary)",colorBgElevated:"var(--bg-secondary)",colorBorder:"var(--border-primary)",colorIcon:"var(--text-secondary)",colorIconHover:"var(--text-primary)",colorSuccess:"var(--success)",colorError:"var(--error)",colorWarning:"var(--warning)",colorInfo:"var(--info)"}}}v.darkSemanticColors["bg-primary"],v.darkSemanticColors["bg-secondary"],v.darkSemanticColors["bg-tertiary"],v.darkSemanticColors["text-primary"],v.darkSemanticColors["text-secondary"],v.darkSemanticColors["text-tertiary"],v.darkSemanticColors["text-inverse"],v.darkSemanticColors["border-primary"],v.darkSemanticColors["border-secondary"],v.darkSemanticColors.link,v.darkSemanticColors["link-hover"],v.darkSemanticColors["accent-subtle"],v.darkSemanticColors.success,v.darkSemanticColors.warning,v.darkSemanticColors.error,v.darkSemanticColors.info,v.darkSemanticColors.disabled,v.darkSemanticColors.shadow}}]);
|
|
2
|
+
//# sourceMappingURL=403.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"403.js","sources":["webpack://@kb-labs/commit-cli/../../../../platform/kb-labs-studio/packages/studio-hooks/dist/index.js"],"sourcesContent":["import { createContext, useContext, useRef, useEffect, useCallback, useState } from 'react';\nimport { jsx } from 'react/jsx-runtime';\nimport { useEventBusContext } from '@kb-labs/studio-event-bus';\nimport { useQuery, useMutation, useInfiniteQuery } from '@tanstack/react-query';\nimport { useNavigate, useLocation } from 'react-router-dom';\nimport { notification, theme } from 'antd';\nimport { lightSemanticColors, darkSemanticColors, shadows, radius, typography, spacing, colors } from '@kb-labs/studio-ui-core';\n\n// src/page-context.tsx\nvar PageCtx = createContext(null);\nfunction PageContextProvider({ children, value }) {\n return /* @__PURE__ */ jsx(PageCtx.Provider, { value, children });\n}\nfunction usePageContext() {\n const ctx = useContext(PageCtx);\n if (!ctx) {\n throw new Error(\"usePage() must be used inside a PageContextProvider (are you inside a Studio page?)\");\n }\n return ctx;\n}\n\n// src/use-page.ts\nfunction usePage() {\n return usePageContext();\n}\nfunction useEventBus() {\n const bus = useEventBusContext();\n const { pluginId, pageId } = usePageContext();\n const unsubs = useRef([]);\n useEffect(() => {\n return () => {\n for (const unsub of unsubs.current) {\n unsub();\n }\n unsubs.current = [];\n };\n }, []);\n const publish = useCallback(\n (event, payload) => {\n bus.publish(event, payload, pluginId, pageId);\n },\n [bus, pluginId, pageId]\n );\n const subscribe = useCallback(\n (event, handler) => {\n const unsub = bus.subscribe(event, handler, pluginId, pageId);\n unsubs.current.push(unsub);\n return unsub;\n },\n [bus, pluginId, pageId]\n );\n return { publish, subscribe };\n}\nfunction useData(endpoint, options) {\n const url = buildUrl(endpoint, options?.params);\n const query = useQuery({\n queryKey: [\"studio-data\", url],\n queryFn: () => fetchJson(url),\n enabled: options?.enabled,\n staleTime: options?.staleTime,\n refetchInterval: options?.pollingMs || void 0,\n select: options?.select\n });\n return {\n data: query.data,\n isLoading: query.isLoading,\n isError: query.isError,\n error: query.error,\n refetch: query.refetch,\n isFetching: query.isFetching\n };\n}\nfunction useMutateData(endpoint, method = \"POST\") {\n const mutation = useMutation({\n mutationFn: async (input) => {\n const hasBody = input !== void 0 && input !== null;\n const res = await fetch(`/api${endpoint}`, {\n method,\n headers: hasBody ? { \"Content-Type\": \"application/json\" } : {},\n body: hasBody ? JSON.stringify(input) : void 0\n });\n if (!res.ok) {\n throw new Error(`${method} ${endpoint} failed: ${res.status} ${res.statusText}`);\n }\n return res.json();\n }\n });\n return {\n mutate: mutation.mutate,\n mutateAsync: mutation.mutateAsync,\n isLoading: mutation.isPending,\n isError: mutation.isError,\n error: mutation.error,\n data: mutation.data\n };\n}\nfunction buildUrl(endpoint, params) {\n if (!params || Object.keys(params).length === 0) {\n return endpoint;\n }\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value !== void 0 && value !== null) {\n searchParams.set(key, String(value));\n }\n }\n const sep = endpoint.includes(\"?\") ? \"&\" : \"?\";\n return `${endpoint}${sep}${searchParams.toString()}`;\n}\nasync function fetchJson(endpoint) {\n const res = await fetch(`/api${endpoint}`);\n if (!res.ok) {\n throw new Error(`GET ${endpoint} failed: ${res.status} ${res.statusText}`);\n }\n const json = await res.json();\n if (json && typeof json === \"object\" && \"ok\" in json && \"data\" in json) {\n return json.data;\n }\n return json;\n}\nfunction useSSE(endpoint, options = {}) {\n const {\n events: eventNames = \"message\",\n doneEvent,\n enabled = true,\n reconnect = false,\n maxReconnects = 5,\n reconnectIntervalMs = 2e3,\n maxEvents = 0,\n parse = defaultParse,\n params,\n onEvent,\n onOpen,\n onError,\n onDone\n } = options;\n const [items, setItems] = useState([]);\n const [latest, setLatest] = useState(void 0);\n const [error, setError] = useState(null);\n const [isConnected, setIsConnected] = useState(false);\n const [reconnectCount, setReconnectCount] = useState(0);\n const esRef = useRef(null);\n const reconnectTimer = useRef(null);\n const closedByUser = useRef(false);\n const onEventRef = useRef(onEvent);\n const onOpenRef = useRef(onOpen);\n const onErrorRef = useRef(onError);\n const onDoneRef = useRef(onDone);\n const parseRef = useRef(parse);\n onEventRef.current = onEvent;\n onOpenRef.current = onOpen;\n onErrorRef.current = onError;\n onDoneRef.current = onDone;\n parseRef.current = parse;\n const eventNamesKey = JSON.stringify(eventNames);\n const paramsKey = JSON.stringify(params);\n const close = useCallback(() => {\n closedByUser.current = true;\n if (reconnectTimer.current) {\n clearTimeout(reconnectTimer.current);\n reconnectTimer.current = null;\n }\n if (esRef.current) {\n esRef.current.close();\n esRef.current = null;\n }\n setIsConnected(false);\n }, []);\n const clear = useCallback(() => {\n setItems([]);\n setLatest(void 0);\n }, []);\n useEffect(() => {\n if (!endpoint || !enabled) {\n if (esRef.current) {\n esRef.current.close();\n esRef.current = null;\n }\n setIsConnected(false);\n return;\n }\n closedByUser.current = false;\n setItems([]);\n setLatest(void 0);\n setError(null);\n setReconnectCount(0);\n let attempt = 0;\n function connect() {\n const url = buildSSEUrl(endpoint, params);\n const es = new EventSource(url);\n esRef.current = es;\n const names = Array.isArray(eventNames) ? eventNames : [eventNames];\n const handleMessage = (e) => {\n try {\n const parsed = parseRef.current(e.data);\n setLatest(parsed);\n setItems((prev) => {\n const next = [...prev, parsed];\n return maxEvents > 0 && next.length > maxEvents ? next.slice(-maxEvents) : next;\n });\n onEventRef.current?.(parsed);\n } catch (err) {\n const parseError = err instanceof Error ? err : new Error(\"Failed to parse SSE event data\");\n setError(parseError);\n onErrorRef.current?.(parseError);\n }\n };\n for (const name of names) {\n es.addEventListener(name, handleMessage);\n }\n if (doneEvent) {\n es.addEventListener(doneEvent, () => {\n es.close();\n esRef.current = null;\n setIsConnected(false);\n onDoneRef.current?.();\n });\n }\n es.onopen = () => {\n attempt = 0;\n setReconnectCount(0);\n setIsConnected(true);\n setError(null);\n onOpenRef.current?.();\n };\n es.onerror = () => {\n es.close();\n esRef.current = null;\n setIsConnected(false);\n if (closedByUser.current) {\n return;\n }\n const connError = new Error(\"SSE connection lost\");\n setError(connError);\n onErrorRef.current?.(connError);\n if (reconnect && attempt < maxReconnects) {\n attempt++;\n setReconnectCount(attempt);\n const delay = reconnectIntervalMs * Math.pow(2, attempt - 1);\n reconnectTimer.current = setTimeout(connect, delay);\n }\n };\n }\n connect();\n return () => {\n closedByUser.current = true;\n if (reconnectTimer.current) {\n clearTimeout(reconnectTimer.current);\n reconnectTimer.current = null;\n }\n if (esRef.current) {\n esRef.current.close();\n esRef.current = null;\n }\n };\n }, [endpoint, enabled, doneEvent, reconnect, maxReconnects, reconnectIntervalMs, maxEvents, eventNamesKey, paramsKey]);\n return { events: items, latest, isConnected, error, close, clear, reconnectCount };\n}\nfunction defaultParse(raw) {\n return JSON.parse(raw);\n}\nfunction buildSSEUrl(endpoint, params) {\n const base = endpoint.startsWith(\"http\") ? endpoint : `/api${endpoint}`;\n if (!params || Object.keys(params).length === 0) {\n return base;\n }\n const sp = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value !== void 0 && value !== null) {\n sp.set(key, String(value));\n }\n }\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}${sp.toString()}`;\n}\nfunction useInfiniteData(endpoint, options) {\n const {\n getNextCursor,\n params,\n enabled,\n staleTime,\n cursorParam = \"cursor\",\n initialCursor\n } = options;\n const query = useInfiniteQuery({\n queryKey: [\"studio-infinite\", endpoint, params],\n queryFn: async ({ pageParam }) => {\n const url = buildInfiniteUrl(endpoint, params, cursorParam, pageParam);\n return fetchPage(url);\n },\n initialPageParam: initialCursor,\n getNextPageParam: getNextCursor,\n enabled,\n staleTime\n });\n const pages = query.data?.pages ?? [];\n const flatData = pages.flatMap((page) => Array.isArray(page) ? page : [page]);\n return {\n pages,\n data: flatData,\n isLoading: query.isLoading,\n isFetching: query.isFetching,\n isFetchingNextPage: query.isFetchingNextPage,\n hasNextPage: query.hasNextPage,\n fetchNextPage: query.fetchNextPage,\n error: query.error,\n isError: query.isError,\n refetch: query.refetch\n };\n}\nfunction buildInfiniteUrl(endpoint, params, cursorParam, cursor) {\n const sp = new URLSearchParams();\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== void 0 && value !== null) {\n sp.set(key, String(value));\n }\n }\n }\n if (cursor !== void 0 && cursor !== null) {\n sp.set(cursorParam, String(cursor));\n }\n const qs = sp.toString();\n const base = endpoint.startsWith(\"http\") ? endpoint : `/api${endpoint}`;\n return qs ? `${base}?${qs}` : base;\n}\nasync function fetchPage(url) {\n const res = await fetch(url);\n if (!res.ok) {\n throw new Error(`GET ${url} failed: ${res.status} ${res.statusText}`);\n }\n const json = await res.json();\n if (json && typeof json === \"object\" && \"ok\" in json && \"data\" in json) {\n return json.data;\n }\n return json;\n}\nfunction useWebSocket(url, options = {}) {\n const {\n enabled = true,\n reconnect = false,\n maxReconnects = 5,\n reconnectIntervalMs = 2e3,\n protocols,\n parse = defaultParse2,\n serialize = defaultSerialize,\n maxMessages = 100,\n onMessage,\n onOpen,\n onClose,\n onError\n } = options;\n const [messages, setMessages] = useState([]);\n const [latest, setLatest] = useState(void 0);\n const [status, setStatus] = useState(\"disconnected\");\n const [error, setError] = useState(null);\n const [reconnectCount, setReconnectCount] = useState(0);\n const wsRef = useRef(null);\n const reconnectTimer = useRef(null);\n const closedByUser = useRef(false);\n const onMessageRef = useRef(onMessage);\n const onOpenRef = useRef(onOpen);\n const onCloseRef = useRef(onClose);\n const onErrorRef = useRef(onError);\n const parseRef = useRef(parse);\n const serializeRef = useRef(serialize);\n onMessageRef.current = onMessage;\n onOpenRef.current = onOpen;\n onCloseRef.current = onClose;\n onErrorRef.current = onError;\n parseRef.current = parse;\n serializeRef.current = serialize;\n const cleanup = useCallback(() => {\n if (reconnectTimer.current) {\n clearTimeout(reconnectTimer.current);\n reconnectTimer.current = null;\n }\n if (wsRef.current) {\n wsRef.current.close();\n wsRef.current = null;\n }\n }, []);\n const doConnect = useCallback(() => {\n if (!url) {\n return;\n }\n cleanup();\n closedByUser.current = false;\n setStatus(\"connecting\");\n setError(null);\n let attempt = 0;\n function open() {\n const resolvedUrl = resolveWsUrl(url);\n const ws = protocols ? new WebSocket(resolvedUrl, protocols) : new WebSocket(resolvedUrl);\n wsRef.current = ws;\n ws.onopen = (e) => {\n attempt = 0;\n setReconnectCount(0);\n setStatus(\"connected\");\n setError(null);\n onOpenRef.current?.(e);\n };\n ws.onmessage = (e) => {\n try {\n const data = parseRef.current(e.data);\n setLatest(data);\n setMessages((prev) => {\n const next = [...prev, data];\n return maxMessages > 0 && next.length > maxMessages ? next.slice(-maxMessages) : next;\n });\n onMessageRef.current?.(data);\n } catch {\n }\n };\n ws.onclose = (e) => {\n wsRef.current = null;\n setStatus(\"disconnected\");\n onCloseRef.current?.(e);\n if (closedByUser.current) {\n return;\n }\n if (reconnect && attempt < maxReconnects && e.code !== 1e3) {\n attempt++;\n setReconnectCount(attempt);\n const delay = reconnectIntervalMs * Math.pow(2, attempt - 1);\n reconnectTimer.current = setTimeout(open, delay);\n }\n };\n ws.onerror = (e) => {\n setStatus(\"error\");\n setError(e);\n onErrorRef.current?.(e);\n };\n }\n open();\n }, [url, protocols, reconnect, maxReconnects, reconnectIntervalMs, maxMessages, cleanup]);\n const disconnect = useCallback((code, reason) => {\n closedByUser.current = true;\n if (reconnectTimer.current) {\n clearTimeout(reconnectTimer.current);\n reconnectTimer.current = null;\n }\n if (wsRef.current) {\n wsRef.current.close(code, reason);\n wsRef.current = null;\n }\n setStatus(\"disconnected\");\n }, []);\n const send = useCallback((data) => {\n if (wsRef.current?.readyState === WebSocket.OPEN) {\n wsRef.current.send(serializeRef.current(data));\n }\n }, []);\n const sendRaw = useCallback((data) => {\n if (wsRef.current?.readyState === WebSocket.OPEN) {\n wsRef.current.send(data);\n }\n }, []);\n const clear = useCallback(() => {\n setMessages([]);\n setLatest(void 0);\n }, []);\n useEffect(() => {\n if (!url || !enabled) {\n cleanup();\n setStatus(\"disconnected\");\n return;\n }\n setMessages([]);\n setLatest(void 0);\n doConnect();\n return () => {\n closedByUser.current = true;\n cleanup();\n };\n }, [url, enabled]);\n return {\n send,\n sendRaw,\n messages,\n latest,\n status,\n isConnected: status === \"connected\",\n error,\n connect: doConnect,\n disconnect,\n clear,\n reconnectCount\n };\n}\nfunction defaultParse2(raw) {\n return JSON.parse(raw);\n}\nfunction defaultSerialize(data) {\n return JSON.stringify(data);\n}\nfunction resolveWsUrl(url) {\n if (url.startsWith(\"ws://\") || url.startsWith(\"wss://\")) {\n return url;\n }\n const proto = window.location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n const path = url.startsWith(\"/\") ? url : `/${url}`;\n return `${proto}//${window.location.host}${path}`;\n}\nfunction usePermissions() {\n const { permissions } = usePageContext();\n const hasPermission = useCallback(\n (permission) => permissions.includes(permission),\n [permissions]\n );\n return { hasPermission, permissions };\n}\nfunction useNavigation() {\n const nav = useNavigate();\n const location = useLocation();\n const navigate = useCallback((path) => nav(path), [nav]);\n const goBack = useCallback(() => nav(-1), [nav]);\n const openExternal = useCallback((url) => window.open(url, \"_blank\", \"noopener\"), []);\n return {\n navigate,\n currentPath: location.pathname,\n goBack,\n openExternal\n };\n}\nfunction useNotification() {\n const notify = useCallback(\n (opts) => {\n notification[opts.type]({\n message: opts.message,\n description: opts.description,\n duration: opts.duration ?? 4.5\n });\n },\n []\n );\n const success = useCallback(\n (message, description) => notify({ type: \"success\", message, description }),\n [notify]\n );\n const error = useCallback(\n (message, description) => notify({ type: \"error\", message, description }),\n [notify]\n );\n const warning = useCallback(\n (message, description) => notify({ type: \"warning\", message, description }),\n [notify]\n );\n const info = useCallback(\n (message, description) => notify({ type: \"info\", message, description }),\n [notify]\n );\n return { notify, success, error, warning, info };\n}\nvar LIGHT_SEMANTIC = {\n bgPrimary: lightSemanticColors[\"bg-primary\"],\n bgSecondary: lightSemanticColors[\"bg-secondary\"],\n bgTertiary: lightSemanticColors[\"bg-tertiary\"],\n textPrimary: lightSemanticColors[\"text-primary\"],\n textSecondary: lightSemanticColors[\"text-secondary\"],\n textTertiary: lightSemanticColors[\"text-tertiary\"],\n textInverse: lightSemanticColors[\"text-inverse\"],\n borderPrimary: lightSemanticColors[\"border-primary\"],\n borderSecondary: lightSemanticColors[\"border-secondary\"],\n link: lightSemanticColors[\"link\"],\n linkHover: lightSemanticColors[\"link-hover\"],\n accentSubtle: lightSemanticColors[\"accent-subtle\"],\n success: lightSemanticColors[\"success\"],\n warning: lightSemanticColors[\"warning\"],\n error: lightSemanticColors[\"error\"],\n info: lightSemanticColors[\"info\"],\n disabled: lightSemanticColors[\"disabled\"],\n shadow: lightSemanticColors[\"shadow\"]\n};\nvar DARK_SEMANTIC = {\n bgPrimary: darkSemanticColors[\"bg-primary\"],\n bgSecondary: darkSemanticColors[\"bg-secondary\"],\n bgTertiary: darkSemanticColors[\"bg-tertiary\"],\n textPrimary: darkSemanticColors[\"text-primary\"],\n textSecondary: darkSemanticColors[\"text-secondary\"],\n textTertiary: darkSemanticColors[\"text-tertiary\"],\n textInverse: darkSemanticColors[\"text-inverse\"],\n borderPrimary: darkSemanticColors[\"border-primary\"],\n borderSecondary: darkSemanticColors[\"border-secondary\"],\n link: darkSemanticColors[\"link\"],\n linkHover: darkSemanticColors[\"link-hover\"],\n accentSubtle: darkSemanticColors[\"accent-subtle\"],\n success: darkSemanticColors[\"success\"],\n warning: darkSemanticColors[\"warning\"],\n error: darkSemanticColors[\"error\"],\n info: darkSemanticColors[\"info\"],\n disabled: darkSemanticColors[\"disabled\"],\n shadow: darkSemanticColors[\"shadow\"]\n};\nfunction useTheme() {\n const { token: antdToken } = theme.useToken();\n const mode = \"light\";\n return {\n mode,\n antdToken,\n semantic: mode === \"dark\" ? DARK_SEMANTIC : LIGHT_SEMANTIC,\n tokens: { colors, spacing, typography, radius, shadows }\n };\n}\nfunction getAntDesignTokens() {\n return {\n // ============ Primary Colors ============\n colorPrimary: \"var(--link, #0c66ff)\",\n colorPrimaryHover: \"var(--link-hover, #0050cc)\",\n colorPrimaryActive: \"var(--link-hover, #0050cc)\",\n colorPrimaryBg: \"var(--accent-subtle, #dbeafe)\",\n // Light primary background\n colorPrimaryBgHover: \"var(--accent-subtle, #dbeafe)\",\n colorPrimaryBorder: \"var(--link, #0c66ff)\",\n colorPrimaryBorderHover: \"var(--link-hover, #0050cc)\",\n colorPrimaryText: \"var(--link, #0c66ff)\",\n colorPrimaryTextHover: \"var(--link-hover, #0050cc)\",\n colorPrimaryTextActive: \"var(--link-hover, #0050cc)\",\n // ============ Success Colors ============\n colorSuccess: \"var(--success, #16A34A)\",\n colorSuccessHover: \"var(--success, #16A34A)\",\n // Use same color\n colorSuccessActive: \"var(--success, #16A34A)\",\n colorSuccessBg: \"var(--bg-tertiary, #F3F4F6)\",\n // Light background, could be success-specific\n colorSuccessBgHover: \"var(--bg-tertiary, #F3F4F6)\",\n colorSuccessBorder: \"var(--success, #16A34A)\",\n colorSuccessBorderHover: \"var(--success, #16A34A)\",\n colorSuccessText: \"var(--success, #16A34A)\",\n colorSuccessTextHover: \"var(--success, #16A34A)\",\n colorSuccessTextActive: \"var(--success, #16A34A)\",\n // ============ Warning Colors ============\n colorWarning: \"var(--warning, #F59E0B)\",\n colorWarningHover: \"var(--warning, #F59E0B)\",\n colorWarningActive: \"var(--warning, #F59E0B)\",\n colorWarningBg: \"var(--bg-tertiary, #F3F4F6)\",\n colorWarningBgHover: \"var(--bg-tertiary, #F3F4F6)\",\n colorWarningBorder: \"var(--warning, #F59E0B)\",\n colorWarningBorderHover: \"var(--warning, #F59E0B)\",\n colorWarningText: \"var(--warning, #F59E0B)\",\n colorWarningTextHover: \"var(--warning, #F59E0B)\",\n colorWarningTextActive: \"var(--warning, #F59E0B)\",\n colorWarningOutline: \"rgba(245, 158, 11, 0.2)\",\n // NEW: Warning outline\n // ============ Error Colors ============\n colorError: \"var(--error, #DC2626)\",\n colorErrorHover: \"var(--error, #DC2626)\",\n colorErrorActive: \"var(--error, #DC2626)\",\n colorErrorBg: \"var(--bg-tertiary, #F3F4F6)\",\n colorErrorBgHover: \"var(--bg-tertiary, #F3F4F6)\",\n colorErrorBorder: \"var(--error, #DC2626)\",\n colorErrorBorderHover: \"var(--error, #DC2626)\",\n colorErrorText: \"var(--error, #DC2626)\",\n colorErrorTextHover: \"var(--error, #DC2626)\",\n colorErrorTextActive: \"var(--error, #DC2626)\",\n colorErrorOutline: \"rgba(220, 38, 38, 0.2)\",\n // NEW: Error outline\n // ============ Info Colors ============\n colorInfo: \"var(--info, #0EA5E9)\",\n colorInfoHover: \"var(--info, #0EA5E9)\",\n colorInfoActive: \"var(--info, #0EA5E9)\",\n colorInfoBg: \"var(--bg-tertiary, #F3F4F6)\",\n colorInfoBgHover: \"var(--bg-tertiary, #F3F4F6)\",\n colorInfoBorder: \"var(--info, #0EA5E9)\",\n colorInfoBorderHover: \"var(--info, #0EA5E9)\",\n colorInfoText: \"var(--info, #0EA5E9)\",\n colorInfoTextHover: \"var(--info, #0EA5E9)\",\n colorInfoTextActive: \"var(--info, #0EA5E9)\",\n // ============ Background Colors ============\n colorBgContainer: \"var(--bg-secondary, #FFFFFF)\",\n colorBgBase: \"var(--bg-primary, #F9FAFB)\",\n colorBgElevated: \"var(--bg-secondary, #FFFFFF)\",\n colorBgLayout: \"var(--bg-primary, #F9FAFB)\",\n colorBgSpotlight: \"var(--bg-tertiary, #F3F4F6)\",\n colorBgMask: \"rgba(0, 0, 0, 0.45)\",\n // Overlay/modal backdrop - use standard dark overlay\n colorBgTextHover: \"var(--bg-hover, #F3F4F6)\",\n // NEW: Text hover background\n colorBgTextActive: \"var(--bg-hover, #F3F4F6)\",\n // NEW: Text active background\n colorBgContainerDisabled: \"var(--bg-tertiary, #F3F4F6)\",\n // NEW: Disabled container bg\n // ============ Text Colors ============\n colorText: \"var(--text-primary, #111827)\",\n colorTextBase: \"var(--text-primary, #111827)\",\n // NEW: Base text color\n colorTextSecondary: \"var(--text-secondary, #6B7280)\",\n colorTextTertiary: \"var(--text-tertiary, #6B7280)\",\n colorTextQuaternary: \"var(--text-tertiary, #6B7280)\",\n // Use tertiary as fallback\n colorTextDisabled: \"var(--disabled, #9CA3AF)\",\n colorTextHeading: \"var(--text-primary, #111827)\",\n // Headings use primary text\n colorTextLabel: \"var(--text-secondary, #6B7280)\",\n // Labels use secondary\n colorTextDescription: \"var(--text-secondary, #6B7280)\",\n // Descriptions use secondary\n colorTextPlaceholder: \"var(--text-tertiary, #6B7280)\",\n // Placeholders use tertiary\n colorTextLightSolid: \"var(--text-inverse, #FFFFFF)\",\n // NEW: Text on colored backgrounds\n // ============ Border Colors ============\n colorBorder: \"var(--border-primary, #E5E7EB)\",\n colorBorderSecondary: \"var(--border-secondary, #D4D4D4)\",\n colorBorderBg: \"var(--bg-secondary, #FFFFFF)\",\n // NEW: Background border color\n colorSplit: \"var(--border-primary, #E5E7EB)\",\n // Splitter/divider uses primary border\n // ============ Fill Colors (for input backgrounds, etc.) ============\n colorFill: \"var(--bg-tertiary, #F3F4F6)\",\n // Fill uses tertiary background\n colorFillSecondary: \"var(--bg-tertiary, #F3F4F6)\",\n // Used for table row hover\n colorFillTertiary: \"var(--bg-primary, #F9FAFB)\",\n // Used for table header backgrounds\n colorFillQuaternary: \"var(--bg-primary, #F9FAFB)\",\n colorFillContent: \"var(--bg-hover, #F3F4F6)\",\n // NEW: Content area fill\n colorFillContentHover: \"var(--bg-hover, #F3F4F6)\",\n // NEW: Content hover fill\n colorFillAlter: \"var(--bg-tertiary, #F3F4F6)\",\n // NEW: Alternative fill\n // ============ Neutral Colors ============\n colorWhite: \"#FFFFFF\",\n // Always white\n // ============ Shadow ============\n boxShadow: \"0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.04)\",\n boxShadowSecondary: \"0 4px 12px rgba(0,0,0,0.08)\",\n boxShadowTertiary: \"0 8px 24px rgba(0,0,0,0.08)\",\n // ============ Border Radius ============\n borderRadius: 8,\n borderRadiusLG: 12,\n borderRadiusSM: 6,\n borderRadiusXS: 4,\n borderRadiusOuter: 6,\n // ============ Control Heights ============\n controlHeight: 36,\n controlHeightLG: 40,\n controlHeightSM: 28,\n controlHeightXS: 22,\n // ============ Font Family ============\n fontFamily: \"var(--font-body, 'Inter', 'Segoe UI', sans-serif)\",\n // ============ Font Sizes ============\n fontSize: 14,\n fontSizeLG: 16,\n fontSizeSM: 12,\n fontSizeXL: 20,\n fontSizeHeading1: 38,\n fontSizeHeading2: 30,\n fontSizeHeading3: 24,\n fontSizeHeading4: 20,\n fontSizeHeading5: 16,\n fontSizeIcon: 12,\n // ============ Font Weights ============\n fontWeightStrong: 600,\n lineHeight: 1.5714285714285714,\n lineHeightLG: 1.5,\n lineHeightSM: 1.6666666666666667,\n // ============ Padding ============\n padding: 16,\n paddingLG: 24,\n paddingSM: 12,\n paddingXS: 8,\n paddingXXS: 4,\n // ============ Margin ============\n margin: 16,\n marginLG: 24,\n marginSM: 12,\n marginXS: 8,\n marginXXS: 4,\n // ============ Motion ============\n motionDurationFast: \"0.1s\",\n motionDurationMid: \"0.2s\",\n motionDurationSlow: \"0.3s\",\n motionEaseInOut: \"cubic-bezier(0.645, 0.045, 0.355, 1)\",\n motionEaseOut: \"cubic-bezier(0.215, 0.61, 0.355, 1)\",\n // ============ Link ============\n colorLink: \"var(--link, #0c66ff)\",\n colorLinkHover: \"var(--link-hover, #0050cc)\",\n colorLinkActive: \"var(--link-hover, #0050cc)\",\n // ============ Icons & Highlights ============\n colorIcon: \"var(--text-secondary, #6B7280)\",\n // NEW: Icon color\n colorIconHover: \"var(--text-primary, #111827)\",\n // NEW: Icon hover\n colorHighlight: \"var(--link, #0c66ff)\",\n // NEW: Highlight color\n // ============ Control States (Inputs, Buttons, etc.) ============\n controlOutline: \"rgba(12, 102, 255, 0.15)\",\n // NEW: Input outline on focus\n controlOutlineWidth: 2,\n // NEW: Outline width\n controlInteractiveSize: 16,\n // NEW: Interactive hit area size\n controlItemBgHover: \"var(--bg-hover, #F3F4F6)\",\n // NEW: Item hover bg\n controlItemBgActive: \"var(--accent-subtle, #dbeafe)\",\n // NEW: Item active bg\n controlItemBgActiveHover: \"var(--accent-subtle, #dbeafe)\",\n // NEW: Item active hover\n controlItemBgActiveDisabled: \"var(--bg-tertiary, #F3F4F6)\",\n // NEW: Disabled active bg\n controlTmpOutline: \"rgba(12, 102, 255, 0.08)\",\n // NEW: Temporary outline\n // ============ Screen Sizes (for responsive) ============\n screenXS: 480,\n screenSM: 576,\n screenMD: 768,\n screenLG: 992,\n screenXL: 1200,\n screenXXL: 1600\n };\n}\nfunction getAntDesignComponents() {\n return {\n Table: {\n // Colors\n headerBg: \"var(--bg-tertiary)\",\n headerColor: \"var(--text-primary)\",\n borderColor: \"var(--border-primary)\",\n colorText: \"var(--text-primary)\",\n colorTextHeading: \"var(--text-primary)\",\n // Row states (IMPORTANT for UX)\n rowHoverBg: \"var(--bg-hover)\",\n rowSelectedBg: \"var(--accent-subtle)\",\n // NEW: Selected row background\n rowSelectedHoverBg: \"var(--accent-subtle)\",\n // NEW: Selected row hover\n rowExpandedBg: \"var(--bg-secondary)\",\n // NEW: Expanded row background\n bodySortBg: \"var(--bg-tertiary)\",\n // NEW: Sorted column background\n // Header states\n headerSortActiveBg: \"var(--bg-tertiary)\",\n headerSortHoverBg: \"var(--bg-tertiary)\",\n headerFilterHoverBg: \"var(--bg-tertiary)\",\n fixedHeaderSortActiveBg: \"var(--bg-tertiary)\",\n // Icons (IMPORTANT for visibility)\n colorIcon: \"var(--text-secondary)\",\n colorIconHover: \"var(--text-primary)\",\n expandIconBg: \"var(--bg-secondary)\",\n // Footer\n footerBg: \"var(--bg-tertiary)\",\n // NEW: Table footer background\n footerColor: \"var(--text-primary)\",\n // NEW: Footer text color\n // Sizing\n selectionColumnWidth: 60,\n stickyScrollBarBg: \"var(--bg-tertiary)\",\n stickyScrollBarBorderRadius: 4\n },\n Tag: {\n defaultBg: \"var(--bg-tertiary)\",\n defaultColor: \"var(--text-primary)\",\n colorBorder: \"var(--border-primary)\",\n colorSuccess: \"var(--success)\",\n colorError: \"var(--error)\",\n colorWarning: \"var(--warning)\",\n colorInfo: \"var(--info)\"\n },\n Badge: {\n colorError: \"var(--error)\",\n colorSuccess: \"var(--success)\",\n colorWarning: \"var(--warning)\",\n colorInfo: \"var(--info)\",\n colorText: \"var(--text-primary)\"\n },\n Alert: {\n // ============ Status colors ============\n colorSuccess: \"var(--success)\",\n colorError: \"var(--error)\",\n colorWarning: \"var(--warning)\",\n colorInfo: \"var(--info)\",\n // ============ Text & background ============\n colorText: \"var(--text-primary)\",\n colorTextHeading: \"var(--text-primary)\",\n colorBgContainer: \"var(--bg-secondary)\",\n colorBorder: \"var(--border-primary)\",\n // ============ Icons (IMPORTANT for close button visibility) ============\n colorIcon: \"var(--text-secondary)\",\n // NEW: Icon color (close button)\n colorIconHover: \"var(--text-primary)\",\n // NEW: Icon hover (close button hover)\n // ============ Status-specific backgrounds ============\n colorSuccessBg: \"var(--bg-tertiary)\",\n // NEW: Success alert background\n colorErrorBg: \"var(--bg-tertiary)\",\n // NEW: Error alert background\n colorWarningBg: \"var(--bg-tertiary)\",\n // NEW: Warning alert background\n colorInfoBg: \"var(--bg-tertiary)\",\n // NEW: Info alert background\n // ============ Status-specific borders ============\n colorSuccessBorder: \"var(--success)\",\n // NEW: Success alert border\n colorErrorBorder: \"var(--error)\",\n // NEW: Error alert border\n colorWarningBorder: \"var(--warning)\",\n // NEW: Warning alert border\n colorInfoBorder: \"var(--info)\"\n // NEW: Info alert border\n },\n Card: {\n // Colors\n colorText: \"var(--text-primary)\",\n colorTextHeading: \"var(--text-primary)\",\n colorBgContainer: \"var(--bg-secondary)\",\n colorBorder: \"var(--border-primary)\",\n colorBorderSecondary: \"var(--border-primary)\",\n // Header & Actions (IMPORTANT for visual hierarchy)\n headerBg: \"var(--bg-secondary)\",\n // NEW: Card header background\n actionsBg: \"var(--bg-tertiary)\",\n // NEW: Card actions background\n extraColor: \"var(--text-secondary)\"\n // NEW: Extra area text color\n },\n Descriptions: {\n colorText: \"var(--text-primary)\",\n colorTextLabel: \"var(--text-secondary)\",\n colorBorder: \"var(--border-primary)\"\n },\n Button: {\n // ============ Base colors ============\n colorText: \"var(--text-primary)\",\n colorBgContainer: \"var(--bg-secondary)\",\n colorBorder: \"var(--border-primary)\",\n // ============ Primary button ============\n colorPrimary: \"var(--link)\",\n colorPrimaryHover: \"var(--link-hover)\",\n colorPrimaryActive: \"var(--link-hover)\",\n primaryColor: \"var(--text-inverse)\",\n primaryShadow: \"0 2px 0 rgba(12, 102, 255, 0.15)\",\n // ============ Default button (filled style) ============\n defaultBg: \"var(--bg-secondary)\",\n defaultColor: \"var(--text-primary)\",\n defaultBorderColor: \"var(--border-primary)\",\n defaultShadow: \"0 2px 0 rgba(0, 0, 0, 0.015)\",\n // Default button - hover states (IMPORTANT for dark theme)\n defaultHoverBg: \"var(--bg-hover)\",\n defaultHoverColor: \"var(--text-primary)\",\n defaultHoverBorderColor: \"var(--border-secondary)\",\n // Default button - active states\n defaultActiveBg: \"var(--bg-hover)\",\n defaultActiveColor: \"var(--text-primary)\",\n defaultActiveBorderColor: \"var(--border-secondary)\",\n // ============ Ghost button (transparent with border) ============\n ghostBg: \"transparent\",\n defaultGhostColor: \"var(--text-primary)\",\n // Text color\n defaultGhostBorderColor: \"var(--border-primary)\",\n // Border color\n // Ghost button - active states\n // ============ Dashed button (dashed border) ============\n borderColorDisabled: \"var(--border-primary)\",\n // Dashed border uses this\n colorBgContainerDisabled: \"var(--bg-tertiary)\",\n // Disabled background\n // ============ Text button (no background, no border) ============\n // CRITICAL: These control icon-only buttons like notification close button!\n textTextColor: \"var(--text-secondary)\",\n // Base text color for text buttons (icons!)\n textTextHoverColor: \"var(--text-primary)\",\n // Text button hover (icon hover!)\n textTextActiveColor: \"var(--text-primary)\",\n // Text button active (icon active!)\n textHoverBg: \"var(--accent-subtle)\",\n // Text button hover background\n // ============ Link button (looks like a link) ============\n linkHoverBg: \"transparent\",\n colorLink: \"var(--link)\",\n colorLinkHover: \"var(--link-hover)\",\n colorLinkActive: \"var(--link-hover)\",\n // ============ Solid button (filled buttons) ============\n solidTextColor: \"var(--text-primary)\",\n // Text color for solid buttons\n // ============ Danger button ============\n dangerColor: \"var(--error)\",\n // Danger button text & border color\n dangerShadow: \"0 2px 0 rgba(220, 38, 38, 0.1)\",\n // Danger ghost button\n colorErrorBg: \"transparent\",\n // Ghost danger background\n colorErrorBgHover: \"var(--bg-hover)\",\n // Ghost danger hover\n colorErrorBorder: \"var(--error)\",\n // Ghost danger border\n colorErrorBorderHover: \"var(--error)\",\n // Ghost danger border hover\n colorErrorHover: \"var(--error)\",\n // Ghost danger text hover\n colorErrorActive: \"var(--error)\"\n // Ghost danger text active\n },\n Input: {\n // Base colors\n colorText: \"var(--text-primary)\",\n colorBgContainer: \"var(--bg-secondary)\",\n colorBorder: \"var(--border-primary)\",\n colorTextPlaceholder: \"var(--text-tertiary)\",\n // Interactive states (IMPORTANT for focus feedback)\n hoverBorderColor: \"var(--border-secondary)\",\n activeBorderColor: \"var(--link)\",\n activeShadow: \"0 0 0 3px rgba(12, 102, 255, 0.12)\",\n // NEW: Focus shadow\n errorActiveShadow: \"0 0 0 2px rgba(220, 38, 38, 0.1)\",\n // NEW: Error focus shadow\n warningActiveShadow: \"0 0 0 2px rgba(245, 158, 11, 0.1)\",\n // NEW: Warning focus shadow\n // Clear icon (IMPORTANT for visibility)\n colorIcon: \"var(--text-secondary)\",\n // NEW: Clear icon color\n colorIconHover: \"var(--text-primary)\"\n // NEW: Clear icon hover\n },\n Select: {\n // ============ Base colors ============\n colorText: \"var(--text-primary)\",\n colorBgContainer: \"var(--bg-secondary)\",\n // Input background\n colorBorder: \"var(--border-primary)\",\n // Input border\n colorBgElevated: \"var(--bg-secondary)\",\n // Dropdown panel background\n colorTextPlaceholder: \"var(--text-tertiary)\",\n // Placeholder text\n // ============ Primary & status colors ============\n colorPrimary: \"var(--link)\",\n // Selected item marker color\n colorPrimaryHover: \"var(--link-hover)\",\n // Selected item hover\n // ============ Options/items (IMPORTANT for selection feedback) ============\n optionSelectedBg: \"var(--accent-subtle)\",\n // Selected option background\n optionSelectedColor: \"var(--link)\",\n // Selected option text color\n optionActiveBg: \"var(--bg-hover)\",\n // Option hover background\n optionSelectedFontWeight: 600,\n // Bold for selected items\n // ============ Multiple select (tags mode) ============\n multipleItemBg: \"var(--bg-tertiary)\",\n // Tag background\n multipleItemBorderColor: \"var(--border-primary)\",\n // Tag border\n multipleItemColorDisabled: \"var(--disabled)\",\n // Disabled tag color\n // ============ Icons (IMPORTANT for visibility) ============\n colorIcon: \"var(--text-secondary)\",\n // Dropdown arrow, clear icon\n colorIconHover: \"var(--text-primary)\",\n // Icon hover\n // ============ Selector (input area) ============\n selectorBg: \"var(--bg-secondary)\"\n // Selector background\n },\n Dropdown: {\n // ============ Base colors ============\n colorText: \"var(--text-primary)\",\n colorBgElevated: \"var(--bg-secondary)\",\n // Dropdown panel background\n colorBorder: \"var(--border-primary)\",\n colorTextDisabled: \"var(--disabled)\",\n // ============ Item states (IMPORTANT for visual feedback) ============\n controlItemBgHover: \"var(--bg-hover)\",\n // Item hover background\n controlItemBgActive: \"var(--accent-subtle)\",\n // Selected item background\n controlItemBgActiveHover: \"var(--accent-subtle)\",\n // Selected item hover\n // ============ Colors for items ============\n colorPrimary: \"var(--link)\",\n // Primary color for selected items\n colorPrimaryHover: \"var(--link-hover)\",\n // Primary hover\n // ============ Dropdown.Button specific ============\n colorBgContainer: \"var(--bg-secondary)\",\n // Button background\n colorSplit: \"var(--border-primary)\",\n // Split line between button parts\n // ============ Padding & sizing ============\n paddingBlock: 8,\n // Vertical padding for items\n controlPaddingHorizontal: 12\n // Horizontal padding for items\n },\n Menu: {\n // ============ Base colors ============\n colorText: \"var(--text-primary)\",\n colorTextSecondary: \"var(--text-secondary)\",\n // NEW: Secondary text in menu items\n colorBgContainer: \"var(--bg-sidebar)\",\n // Menu background\n colorBorder: \"var(--border-primary)\",\n // NEW: Border color\n colorSplit: \"var(--border-primary)\",\n // NEW: Divider color\n // ============ Item colors (IMPORTANT for visibility) ============\n itemColor: \"var(--text-primary)\",\n // NEW: Default item text color\n itemBg: \"var(--bg-secondary)\",\n // NEW: Item background\n // ============ Hover states (IMPORTANT for feedback) ============\n itemHoverBg: \"var(--bg-hover)\",\n // Item hover background\n itemHoverColor: \"var(--link)\",\n // Item hover text color\n // ============ Selected states ============\n itemSelectedBg: \"var(--accent-subtle)\",\n // Selected item background\n itemSelectedColor: \"var(--link)\",\n // Selected item text color\n // ============ Active states ============\n itemActiveBg: \"var(--accent-subtle)\",\n // Active item background\n colorActiveBarBorderSize: 0,\n // No active bar (using background instead)\n // ============ Dark theme specific ============\n darkItemBg: \"var(--bg-secondary)\",\n // NEW: Dark mode item background\n darkItemColor: \"var(--text-primary)\",\n // NEW: Dark mode item text\n darkItemHoverBg: \"var(--bg-hover)\",\n // NEW: Dark mode hover\n darkItemSelectedBg: \"var(--accent-subtle)\",\n // Dark mode selected\n darkItemSelectedColor: \"var(--link)\",\n // Dark mode selected text\n darkSubMenuItemBg: \"var(--bg-secondary)\",\n // NEW: Dark mode submenu background\n // ============ SubMenu (dropdown menus) ============\n subMenuItemBg: \"var(--bg-secondary)\",\n // Submenu background\n popupBg: \"var(--bg-secondary)\",\n // NEW: Popup menu background\n // ============ Primary color ============\n colorPrimary: \"var(--link)\",\n // Primary color for active elements\n // ============ Icons (IMPORTANT for visibility) ============\n colorIcon: \"var(--text-secondary)\",\n // NEW: Icon color\n colorIconHover: \"var(--text-primary)\",\n // NEW: Icon hover\n // ============ Group title ============\n groupTitleColor: \"var(--text-tertiary)\",\n groupTitleFontSize: 11,\n // ============ Item border radius ============\n itemBorderRadius: 8,\n subMenuItemBorderRadius: 6,\n // ============ Padding ============\n itemPaddingInline: 12\n },\n Tabs: {\n // Base colors\n colorText: \"var(--text-secondary)\",\n colorTextHeading: \"var(--text-primary)\",\n colorBorder: \"var(--border-primary)\",\n colorBorderSecondary: \"var(--border-primary)\",\n // Interactive states (IMPORTANT for tab navigation feedback)\n colorPrimary: \"var(--link)\",\n itemHoverColor: \"var(--link)\",\n // Tab hover color\n itemSelectedColor: \"var(--link)\",\n // Selected tab color\n itemActiveColor: \"var(--link)\",\n // Active tab color\n inkBarColor: \"var(--link)\"\n // Active tab underline\n },\n Modal: {\n // Content colors\n colorText: \"var(--text-primary)\",\n colorTextHeading: \"var(--text-primary)\",\n colorBgElevated: \"var(--bg-secondary)\",\n colorBorder: \"var(--border-primary)\",\n // Header & Footer\n headerBg: \"var(--bg-secondary)\",\n // NEW: Modal header background\n footerBg: \"var(--bg-tertiary)\",\n // NEW: Modal footer background\n contentBg: \"var(--bg-secondary)\",\n // NEW: Modal content background\n // Close icon (IMPORTANT for visibility)\n colorIcon: \"var(--text-secondary)\",\n // NEW: Close icon color\n colorIconHover: \"var(--text-primary)\"\n // NEW: Close icon hover\n },\n Drawer: {\n // Content colors\n colorText: \"var(--text-primary)\",\n colorBgElevated: \"var(--bg-secondary)\",\n colorBorder: \"var(--border-primary)\",\n // Close icon (IMPORTANT for visibility)\n colorIcon: \"var(--text-secondary)\",\n // NEW: Close icon color\n colorIconHover: \"var(--text-primary)\"\n // NEW: Close icon hover\n },\n Popover: {\n colorText: \"var(--text-primary)\",\n colorBgElevated: \"var(--bg-secondary)\",\n colorBorder: \"var(--border-primary)\"\n },\n Tooltip: {\n colorText: \"var(--text-primary)\",\n colorBgSpotlight: \"var(--bg-secondary)\",\n colorTextLightSolid: \"var(--text-primary)\"\n },\n List: {\n // Base colors\n colorText: \"var(--text-primary)\",\n colorTextHeading: \"var(--text-primary)\",\n colorBorder: \"var(--border-primary)\",\n colorSplit: \"var(--border-primary)\",\n metaMarginBottom: 8,\n // Meta info spacing\n avatarMarginRight: 16\n // NEW: Avatar spacing\n },\n Switch: {\n colorPrimary: \"var(--link)\",\n colorPrimaryHover: \"var(--link-hover)\"\n },\n Radio: {\n colorPrimary: \"var(--link)\",\n colorText: \"var(--text-primary)\",\n buttonCheckedBg: \"var(--link)\",\n buttonCheckedBgDisabled: \"var(--disabled)\",\n buttonColor: \"var(--text-primary)\",\n buttonSolidCheckedColor: \"var(--text-inverse)\",\n buttonSolidCheckedBg: \"var(--link)\",\n buttonSolidCheckedHoverBg: \"var(--link-hover)\",\n buttonSolidCheckedActiveBg: \"var(--link-hover)\"\n },\n Checkbox: {\n colorPrimary: \"var(--link)\",\n colorText: \"var(--text-primary)\"\n },\n DatePicker: {\n // Base colors\n colorText: \"var(--text-primary)\",\n colorBgContainer: \"var(--bg-secondary)\",\n colorBorder: \"var(--border-primary)\",\n colorBgElevated: \"var(--bg-secondary)\",\n colorTextPlaceholder: \"var(--text-tertiary)\",\n colorTextDisabled: \"var(--disabled)\",\n // Interactive states (IMPORTANT for date selection feedback)\n colorLink: \"var(--link)\",\n // Selected date color\n colorLinkHover: \"var(--link-hover)\",\n // Date hover color\n cellHoverBg: \"var(--bg-hover)\",\n // NEW: Date cell hover background\n cellActiveWithRangeBg: \"var(--accent-subtle)\",\n // NEW: Range selection background\n cellBgDisabled: \"var(--bg-tertiary)\",\n // NEW: Disabled date background\n // Icons (IMPORTANT for visibility)\n colorIcon: \"var(--text-secondary)\",\n // NEW: Calendar icon color\n colorIconHover: \"var(--text-primary)\"\n // NEW: Calendar icon hover\n },\n Form: {\n colorText: \"var(--text-primary)\",\n colorTextLabel: \"var(--text-secondary)\",\n colorError: \"var(--error)\",\n colorWarning: \"var(--warning)\"\n },\n Pagination: {\n // Base colors\n colorText: \"var(--text-primary)\",\n colorTextDisabled: \"var(--disabled)\",\n colorBgContainer: \"var(--bg-secondary)\",\n // Interactive states (IMPORTANT for navigation feedback)\n colorPrimary: \"var(--link)\",\n // Active page background\n colorPrimaryHover: \"var(--link-hover)\",\n // Active page hover\n itemBg: \"var(--bg-secondary)\",\n // NEW: Page item background\n itemActiveBg: \"var(--link)\",\n // NEW: Active page background\n itemActiveBgDisabled: \"var(--bg-tertiary)\",\n // NEW: Disabled active page\n itemInputBg: \"var(--bg-secondary)\",\n // NEW: Quick jumper input background\n itemLinkBg: \"var(--bg-secondary)\",\n // NEW: Page link background\n // Hover states (IMPORTANT for visual feedback)\n colorBgTextHover: \"var(--bg-hover)\"\n // NEW: Page item hover background\n },\n Steps: {\n colorText: \"var(--text-primary)\",\n colorTextDescription: \"var(--text-secondary)\",\n colorPrimary: \"var(--link)\",\n colorBorder: \"var(--border-primary)\"\n },\n Breadcrumb: {\n colorText: \"var(--text-secondary)\",\n colorTextDescription: \"var(--text-tertiary)\",\n linkColor: \"var(--link)\",\n linkHoverColor: \"var(--link-hover)\",\n separatorColor: \"var(--text-tertiary)\"\n },\n Progress: {\n colorText: \"var(--text-primary)\",\n colorSuccess: \"var(--success)\",\n colorError: \"var(--error)\",\n remainingColor: \"var(--bg-tertiary)\"\n },\n Skeleton: {\n colorFill: \"var(--bg-tertiary)\",\n colorFillContent: \"var(--bg-hover)\"\n },\n Spin: {\n colorPrimary: \"var(--link)\",\n colorBgContainer: \"var(--bg-secondary)\"\n },\n Divider: {\n colorSplit: \"var(--border-primary)\",\n colorText: \"var(--text-secondary)\"\n },\n Layout: {\n headerBg: \"var(--bg-secondary)\",\n bodyBg: \"var(--bg-primary)\",\n triggerBg: \"var(--bg-tertiary)\",\n colorText: \"var(--text-primary)\"\n },\n Collapse: {\n colorText: \"var(--text-primary)\",\n colorTextHeading: \"var(--text-primary)\",\n colorBorder: \"var(--border-primary)\",\n colorBgContainer: \"var(--bg-secondary)\",\n headerBg: \"var(--bg-tertiary)\"\n },\n Carousel: {\n colorBgContainer: \"var(--bg-secondary)\",\n dotActiveWidth: 24\n },\n Anchor: {\n colorPrimary: \"var(--link)\",\n colorText: \"var(--text-secondary)\",\n linkPaddingBlock: 4\n },\n Timeline: {\n colorText: \"var(--text-primary)\",\n colorTextDescription: \"var(--text-secondary)\",\n tailColor: \"var(--border-primary)\",\n dotBg: \"var(--bg-secondary)\"\n },\n Transfer: {\n colorText: \"var(--text-primary)\",\n colorBgContainer: \"var(--bg-secondary)\",\n colorBorder: \"var(--border-primary)\",\n controlItemBgActive: \"var(--bg-hover)\"\n },\n Tree: {\n colorText: \"var(--text-primary)\",\n colorBgContainer: \"var(--bg-secondary)\",\n colorPrimary: \"var(--link)\",\n nodeHoverBg: \"var(--bg-hover)\",\n nodeSelectedBg: \"var(--accent-subtle)\"\n },\n TreeSelect: {\n colorText: \"var(--text-primary)\",\n colorBgContainer: \"var(--bg-secondary)\",\n colorBorder: \"var(--border-primary)\",\n colorBgElevated: \"var(--bg-secondary)\",\n nodeHoverBg: \"var(--bg-hover)\",\n nodeSelectedBg: \"var(--accent-subtle)\"\n },\n Cascader: {\n colorText: \"var(--text-primary)\",\n colorBgContainer: \"var(--bg-secondary)\",\n colorBorder: \"var(--border-primary)\",\n colorBgElevated: \"var(--bg-secondary)\",\n optionSelectedBg: \"var(--bg-hover)\"\n },\n Segmented: {\n colorText: \"var(--text-primary)\",\n colorTextLabel: \"var(--text-secondary)\",\n colorBgLayout: \"var(--bg-tertiary)\",\n itemSelectedBg: \"var(--bg-secondary)\",\n itemSelectedColor: \"var(--link)\",\n itemHoverBg: \"var(--bg-hover)\"\n },\n Rate: {\n colorText: \"var(--warning)\"\n },\n Slider: {\n colorPrimary: \"var(--link)\",\n colorPrimaryBorder: \"var(--link)\",\n trackBg: \"var(--bg-tertiary)\",\n trackHoverBg: \"var(--bg-hover)\"\n },\n Upload: {\n colorText: \"var(--text-primary)\",\n colorTextDescription: \"var(--text-secondary)\",\n colorBorder: \"var(--border-primary)\",\n colorFillAlter: \"var(--bg-tertiary)\",\n colorPrimary: \"var(--link)\"\n },\n Calendar: {\n colorText: \"var(--text-primary)\",\n colorTextHeading: \"var(--text-primary)\",\n colorBgContainer: \"var(--bg-secondary)\",\n colorBorder: \"var(--border-primary)\",\n itemActiveBg: \"var(--accent-subtle)\"\n },\n Image: {\n colorTextLightSolid: \"var(--text-primary)\",\n colorBgMask: \"rgba(0, 0, 0, 0.45)\"\n },\n Statistic: {\n colorText: \"var(--text-primary)\",\n colorTextDescription: \"var(--text-secondary)\"\n },\n Result: {\n colorText: \"var(--text-primary)\",\n colorTextHeading: \"var(--text-primary)\",\n colorTextDescription: \"var(--text-secondary)\"\n },\n Empty: {\n colorText: \"var(--text-secondary)\",\n colorTextDescription: \"var(--text-tertiary)\"\n },\n Message: {\n // ============ Base colors ============\n colorText: \"var(--text-primary)\",\n colorBgElevated: \"var(--bg-secondary)\",\n // Message background\n contentBg: \"var(--bg-secondary)\",\n // NEW: Content background\n contentPadding: \"10px 16px\",\n // NEW: Message padding\n // ============ Status colors ============\n colorSuccess: \"var(--success)\",\n colorError: \"var(--error)\",\n colorWarning: \"var(--warning)\",\n colorInfo: \"var(--info)\"\n },\n Notification: {\n // ============ Base colors ============\n colorText: \"var(--text-primary)\",\n colorTextHeading: \"var(--text-primary)\",\n colorBgElevated: \"var(--bg-secondary)\",\n // Notification background\n colorBorder: \"var(--border-primary)\",\n // ============ Close icon (IMPORTANT for visibility in dark theme!) ============\n colorIcon: \"var(--text-secondary)\",\n // NEW: Close button icon color\n colorIconHover: \"var(--text-primary)\",\n // NEW: Close button hover color\n // ============ Status colors ============\n colorSuccess: \"var(--success)\",\n colorError: \"var(--error)\",\n colorWarning: \"var(--warning)\",\n colorInfo: \"var(--info)\"\n }\n };\n}\n\nexport { PageContextProvider, getAntDesignComponents, getAntDesignTokens, useData, useEventBus, useInfiniteData, useMutateData, useNavigation, useNotification, usePage, usePageContext, usePermissions, useSSE, useTheme, useWebSocket };\n//# sourceMappingURL=index.js.map\n//# sourceMappingURL=index.js.map"],"names":["Error","u","Object","URLSearchParams","String","fetch","JSON","clearTimeout","EventSource","Array","e","setTimeout","Math","r","f","o","window","WebSocket"],"mappings":"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"}
|