@kb-labs/qa-entry 2.41.0 → 2.43.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/widgets/370.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"370.js","sources":["webpack://@kb-labs/qa-entry/../../../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, methodOrOptions = \"POST\") {\n const opts = typeof methodOrOptions === \"string\" ? { method: methodOrOptions } : methodOrOptions;\n const method = opts.method ?? \"POST\";\n const mapBody = opts.mapBody;\n const mutation = useMutation({\n mutationFn: async (input) => {\n const url = typeof endpoint === \"function\" ? endpoint(input) : endpoint;\n const payload = mapBody ? mapBody(input) : input;\n const hasBody = payload !== void 0 && payload !== null;\n const res = await fetch(`${getApiOrigin()}/api${url}`, {\n method,\n headers: hasBody ? { \"Content-Type\": \"application/json\" } : {},\n body: hasBody ? JSON.stringify(payload) : void 0\n });\n if (!res.ok) {\n throw new Error(`${method} ${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 }\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 getApiOrigin() {\n if (typeof window !== \"undefined\") {\n const cfg = window.__KB_STUDIO_CONFIG__;\n const base = cfg?.KB_API_BASE_URL;\n if (base) {\n try {\n return new URL(base).origin;\n } catch {\n }\n }\n }\n return \"\";\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(`${getApiOrigin()}/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 path = url.startsWith(\"/\") ? url : `/${url}`;\n if (typeof window !== \"undefined\") {\n const cfg = window.__KB_STUDIO_CONFIG__;\n const base = cfg?.KB_API_BASE_URL;\n if (base) {\n try {\n const origin = new URL(base).origin;\n const proto2 = origin.startsWith(\"https\") ? \"wss:\" : \"ws:\";\n return `${proto2}//${new URL(origin).host}${path}`;\n } catch {\n }\n }\n }\n const proto = window.location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\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","o","fetch","JSON","window","URL","clearTimeout","EventSource","Array","e","setTimeout","Math","r","WebSocket"],"mappings":"yfASI,EAAU,oBAAc,MAC5B,SAAS,EAAoB,CAAE,UAAQ,CAAE,OAAK,CAAE,EAC9C,MAAuB,UAAI,EAAQ,QAAQ,CAAE,CAAE,QAAO,UAAS,EACjE,CACA,SAAS,IACP,IAAM,EAAM,iBAAW,GACvB,GAAI,CAAC,EACH,MAAM,AAAIA,MAAM,uFAElB,OAAO,CACT,CAGA,SAASC,IACP,OAAO,GACT,CACA,SAAS,IACP,IAAM,EAAM,2BACN,CAAE,UAAQ,CAAE,QAAM,CAAE,CAAG,IACvB,EAAS,aAAO,EAAE,EAuBxB,MAtBA,gBAAU,IACD,KACL,IAAK,IAAM,KAAS,EAAO,OAAO,CAChC,GAEF,GAAO,OAAO,CAAG,EAAE,AACrB,EACC,EAAE,EAeE,CAAE,QAdO,kBACd,CAAC,EAAO,KACN,EAAI,OAAO,CAAC,EAAO,EAAS,EAAU,EACxC,EACA,CAAC,EAAK,EAAU,EAAO,EAUP,UARA,kBAChB,CAAC,EAAO,KACN,IAAM,EAAQ,EAAI,SAAS,CAAC,EAAO,EAAS,EAAU,GAEtD,OADA,EAAO,OAAO,CAAC,IAAI,CAAC,GACb,CACT,EACA,CAAC,EAAK,EAAU,EAAO,CAEG,CAC9B,CACA,SAAS,EAAQ,CAAQ,CAAE,CAAO,EAChC,IAAM,EAAM,AAgEd,SAAkB,CAAQ,CAAE,CAAM,EAChC,GAAI,CAAC,GAAUC,AAA+B,IAA/BA,OAAO,IAAI,CAAC,GAAQ,MAAM,CACvC,OAAO,EAET,IAAM,EAAe,IAAIC,gBACzB,IAAK,GAAM,CAAC,EAAK,EAAM,GAAID,OAAO,OAAO,CAAC,GACpC,SACF,EAAa,GAAG,CAAC,EAAKE,OAAO,IAGjC,IAAM,EAAM,EAAS,QAAQ,CAAC,KAAO,IAAM,IAC3C,MAAO,CAAC,EAAE,EAAS,EAAE,EAAI,EAAE,EAAa,QAAQ,GAAG,CAAC,AACtD,EA5EuB,EAAU,GAAS,QAClC,EAAQ,eAAS,CACrB,SAAU,CAAC,cAAe,EAAI,CAC9B,QAAS,IAAM,EAAU,GACzB,QAAS,GAAS,QAClB,UAAW,GAAS,UACpB,gBAAiB,GAAS,WAAa,KAAK,EAC5C,OAAQ,GAAS,MACnB,GACA,MAAO,CACL,KAAM,EAAM,IAAI,CAChB,UAAW,EAAM,SAAS,CAC1B,QAAS,EAAM,OAAO,CACtB,MAAO,EAAM,KAAK,CAClB,QAAS,EAAM,OAAO,CACtB,WAAY,EAAM,UAAU,AAC9B,CACF,CACA,SAAS,EAAc,CAAQ,CAAE,EAAkB,MAAM,EACvD,IAAMC,EAAO,AAA2B,UAA3B,OAAO,EAA+B,CAAE,OAAQ,CAAgB,EAAI,EAC3E,EAASA,EAAK,MAAM,EAAI,OACxB,EAAUA,EAAK,OAAO,CACtB,EAAW,kBAAY,CAC3B,WAAY,MAAO,IACjB,IAAM,EAAM,AAAoB,YAApB,OAAO,EAA0B,EAAS,GAAS,EACzD,EAAU,EAAU,EAAQ,GAAS,EACrC,EAAU,QACV,EAAM,MAAMC,MAAM,CAAC,EAAE,IAAe,IAAI,EAAE,EAAI,CAAC,CAAE,CACrD,SACA,QAAS,EAAU,CAAE,eAAgB,kBAAmB,EAAI,CAAC,EAC7D,KAAM,EAAUC,KAAK,SAAS,CAAC,GAAW,KAAK,CACjD,GACA,GAAI,CAAC,EAAI,EAAE,CACT,MAAM,AAAIP,MAAM,CAAC,EAAE,EAAO,CAAC,EAAE,EAAI,SAAS,EAAE,EAAI,MAAM,CAAC,CAAC,EAAE,EAAI,UAAU,CAAC,CAAC,EAE5E,IAAM,EAAO,MAAM,EAAI,IAAI,UAC3B,AAAI,GAAQ,AAAgB,UAAhB,OAAO,GAAqB,OAAQ,GAAQ,SAAU,EACzD,EAAK,IAAI,CAEX,CACT,CACF,GACA,MAAO,CACL,OAAQ,EAAS,MAAM,CACvB,YAAa,EAAS,WAAW,CACjC,UAAW,EAAS,SAAS,CAC7B,QAAS,EAAS,OAAO,CACzB,MAAO,EAAS,KAAK,CACrB,KAAM,EAAS,IAAI,AACrB,CACF,CACA,SAAS,IACP,GAAI,AAAkB,IAAlB,OAAOQ,OAAwB,CACjC,IAAM,EAAMA,OAAO,oBAAoB,CACjC,EAAO,GAAK,gBAClB,GAAI,EACF,GAAI,CACF,OAAO,IAAIC,IAAI,GAAM,MAAM,AAC7B,CAAE,KAAM,CACR,CAEJ,CACA,MAAO,EACT,CAcA,eAAe,EAAU,CAAQ,EAC/B,IAAM,EAAM,MAAMH,MAAM,CAAC,EAAE,IAAe,IAAI,EAAE,EAAS,CAAC,EAC1D,GAAI,CAAC,EAAI,EAAE,CACT,MAAM,AAAIN,MAAM,CAAC,IAAI,EAAE,EAAS,SAAS,EAAE,EAAI,MAAM,CAAC,CAAC,EAAE,EAAI,UAAU,CAAC,CAAC,EAE3E,IAAM,EAAO,MAAM,EAAI,IAAI,UAC3B,AAAI,GAAQ,AAAgB,UAAhB,OAAO,GAAqB,OAAQ,GAAQ,SAAU,EACzD,EAAK,IAAI,CAEX,CACT,CACA,SAAS,EAAO,CAAQ,CAAE,EAAU,CAAC,CAAC,EACpC,GAAM,CACJ,OAAQ,EAAa,SAAS,CAC9B,WAAS,CACT,UAAU,EAAI,CACd,YAAY,EAAK,CACjB,gBAAgB,CAAC,CACjB,sBAAsB,GAAG,CACzB,YAAY,CAAC,CACb,QAAQ,CAAY,CACpB,QAAM,CACN,SAAO,CACP,QAAM,CACN,SAAO,CACP,QAAM,CACP,CAAG,EACE,CAAC,EAAO,EAAS,CAAG,eAAS,EAAE,EAC/B,CAAC,EAAQ,EAAU,CAAG,eAAS,KAAK,GACpC,CAAC,EAAO,EAAS,CAAG,eAAS,MAC7B,CAAC,EAAa,EAAe,CAAG,eAAS,IACzC,CAAC,EAAgB,EAAkB,CAAG,eAAS,GAC/C,EAAQ,aAAO,MACf,EAAiB,aAAO,MACxB,EAAe,aAAO,IACtB,EAAa,aAAO,GACpB,EAAY,aAAO,GACnB,EAAa,aAAO,GACpB,EAAY,aAAO,GACnB,EAAW,aAAO,EACxB,GAAW,OAAO,CAAG,EACrB,EAAU,OAAO,CAAG,EACpB,EAAW,OAAO,CAAG,EACrB,EAAU,OAAO,CAAG,EACpB,EAAS,OAAO,CAAG,EACnB,IAAM,EAAgBO,KAAK,SAAS,CAAC,GAC/B,EAAYA,KAAK,SAAS,CAAC,GAC3B,EAAQ,kBAAY,KACxB,EAAa,OAAO,CAAG,GACnB,EAAe,OAAO,GACxBG,aAAa,EAAe,OAAO,EACnC,EAAe,OAAO,CAAG,MAEvB,EAAM,OAAO,GACf,EAAM,OAAO,CAAC,KAAK,GACnB,EAAM,OAAO,CAAG,MAElB,EAAe,GACjB,EAAG,EAAE,EACC,EAAQ,kBAAY,KACxB,EAAS,EAAE,EACX,EAAU,KAAK,EACjB,EAAG,EAAE,EAqFL,MApFA,gBAAU,KACR,GAAI,CAAC,GAAY,CAAC,EAAS,CACrB,EAAM,OAAO,GACf,EAAM,OAAO,CAAC,KAAK,GACnB,EAAM,OAAO,CAAG,MAElB,EAAe,IACf,MACF,CACA,EAAa,OAAO,CAAG,GACvB,EAAS,EAAE,EACX,EAAU,KAAK,GACf,EAAS,MACT,EAAkB,GAClB,IAAI,EAAU,EA0Dd,OADA,AAxDA,SAAS,IAEP,IAAM,EAAK,IAAIC,YADH,AAyElB,SAAqB,CAAQ,CAAE,CAAM,EACnC,IAAM,EAAO,EAAS,UAAU,CAAC,QAAU,EAAW,CAAC,IAAI,EAAE,EAAS,CAAC,CACvE,GAAI,CAAC,GAAUT,AAA+B,IAA/BA,OAAO,IAAI,CAAC,GAAQ,MAAM,CACvC,OAAO,EAET,IAAM,EAAK,IAAIC,gBACf,IAAK,GAAM,CAAC,EAAK,EAAM,GAAID,OAAO,OAAO,CAAC,GACpC,SACF,EAAG,GAAG,CAAC,EAAKE,OAAO,IAGvB,IAAM,EAAM,EAAK,QAAQ,CAAC,KAAO,IAAM,IACvC,MAAO,CAAC,EAAE,EAAK,EAAE,EAAI,EAAE,EAAG,QAAQ,GAAG,CAAC,AACxC,EAtF8B,EAAU,GAElC,GAAM,OAAO,CAAG,EAChB,IAAM,EAAQQ,MAAM,OAAO,CAAC,GAAc,EAAa,CAAC,EAAW,CAC7D,EAAgB,AAAC,IACrB,GAAI,CACF,IAAM,EAAS,EAAS,OAAO,CAAC,EAAE,IAAI,EACtC,EAAU,GACV,EAAS,AAAC,IACR,IAAM,EAAO,IAAI,EAAM,EAAO,CAC9B,OAAO,EAAY,GAAK,EAAK,MAAM,CAAG,EAAY,EAAK,KAAK,CAAC,CAAC,GAAa,CAC7E,GACA,EAAW,OAAO,GAAG,EACvB,CAAE,MAAOC,EAAK,CACZ,IAAM,EAAaA,aAAeb,MAAQa,EAAM,AAAIb,MAAM,kCAC1D,EAAS,GACT,EAAW,OAAO,GAAG,EACvB,CACF,EACA,IAAK,IAAM,KAAQ,EACjB,EAAG,gBAAgB,CAAC,EAAM,EAExB,IACF,EAAG,gBAAgB,CAAC,EAAW,KAC7B,EAAG,KAAK,GACR,EAAM,OAAO,CAAG,KAChB,EAAe,IACf,EAAU,OAAO,IACnB,GAEF,EAAG,MAAM,CAAG,KACV,EAAU,EACV,EAAkB,GAClB,EAAe,IACf,EAAS,MACT,EAAU,OAAO,IACnB,EACA,EAAG,OAAO,CAAG,KAIX,GAHA,EAAG,KAAK,GACR,EAAM,OAAO,CAAG,KAChB,EAAe,IACX,EAAa,OAAO,CACtB,OAEF,IAAM,EAAY,AAAIA,MAAM,uBAC5B,EAAS,GACT,EAAW,OAAO,GAAG,GACjB,GAAa,EAAU,IAEzB,IAAkB,GAElB,EAAe,OAAO,CAAGc,WAAW,EADtB,EAAsBC,KAAK,GAAG,CAAC,EAAG,EAAU,IAG9D,CACF,IAEO,KACL,EAAa,OAAO,CAAG,GACnB,EAAe,OAAO,GACxBL,aAAa,EAAe,OAAO,EACnC,EAAe,OAAO,CAAG,MAEvB,EAAM,OAAO,GACf,EAAM,OAAO,CAAC,KAAK,GACnB,EAAM,OAAO,CAAG,KAEpB,CACF,EAAG,CAAC,EAAU,EAAS,EAAW,EAAW,EAAe,EAAqB,EAAW,EAAe,EAAU,EAC9G,CAAE,OAAQ,EAAO,SAAQ,cAAa,QAAO,QAAO,QAAO,gBAAe,CACnF,CACA,SAAS,EAAaM,CAAG,EACvB,OAAOT,KAAK,KAAK,CAACS,EACpB,CAeA,SAAS,EAAgB,CAAQ,CAAE,CAAO,EACxC,GAAM,CACJ,eAAa,CACb,QAAM,CACN,SAAO,CACP,WAAS,CACT,cAAc,QAAQ,CACtB,eAAa,CACd,CAAG,EACE,EAAQ,uBAAiB,CAC7B,SAAU,CAAC,kBAAmB,EAAU,EAAO,CAC/C,QAAS,MAAO,CAAE,WAAS,CAAE,GAEpB,EADK,AAuBlB,SAA0B,CAAQ,CAAE,CAAM,CAAE,CAAW,CAAE,CAAM,EAC7D,IAAM,EAAK,IAAIb,gBACf,GAAI,EACF,IAAK,GAAM,CAAC,EAAK,EAAM,GAAID,OAAO,OAAO,CAAC,GACpC,SACF,EAAG,GAAG,CAAC,EAAKE,OAAO,GAIrB,UACF,EAAG,GAAG,CAAC,EAAaA,OAAO,IAE7B,IAAM,EAAK,EAAG,QAAQ,GAChB,EAAO,EAAS,UAAU,CAAC,QAAU,EAAW,CAAC,IAAI,EAAE,EAAS,CAAC,CACvE,OAAO,EAAK,CAAC,EAAE,EAAK,CAAC,EAAE,EAAG,CAAC,CAAG,CAChC,EAtCmC,EAAU,EAAQ,EAAa,IAG9D,iBAAkB,EAClB,iBAAkB,EAClB,UACA,WACF,GACM,EAAQ,EAAM,IAAI,EAAE,OAAS,EAAE,CAC/B,EAAW,EAAM,OAAO,CAAC,AAAC,GAASQ,MAAM,OAAO,CAAC,GAAQ,EAAO,CAAC,EAAK,EAC5E,MAAO,CACL,QACA,KAAM,EACN,UAAW,EAAM,SAAS,CAC1B,WAAY,EAAM,UAAU,CAC5B,mBAAoB,EAAM,kBAAkB,CAC5C,YAAa,EAAM,WAAW,CAC9B,cAAe,EAAM,aAAa,CAClC,MAAO,EAAM,KAAK,CAClB,QAAS,EAAM,OAAO,CACtB,QAAS,EAAM,OAAO,AACxB,CACF,CAiBA,eAAe,EAAU,CAAG,EAC1B,IAAM,EAAM,MAAMN,MAAM,GACxB,GAAI,CAAC,EAAI,EAAE,CACT,MAAM,AAAIN,MAAM,CAAC,IAAI,EAAE,EAAI,SAAS,EAAE,EAAI,MAAM,CAAC,CAAC,EAAE,EAAI,UAAU,CAAC,CAAC,EAEtE,IAAM,EAAO,MAAM,EAAI,IAAI,UAC3B,AAAI,GAAQ,AAAgB,UAAhB,OAAO,GAAqB,OAAQ,GAAQ,SAAU,EACzD,EAAK,IAAI,CAEX,CACT,CACA,SAAS,EAAa,CAAG,CAAE,EAAU,CAAC,CAAC,EACrC,GAAM,CACJ,UAAU,EAAI,CACd,YAAY,EAAK,CACjB,gBAAgB,CAAC,CACjB,sBAAsB,GAAG,CACzB,WAAS,CACT,QAAQ,CAAa,CACrB,YAAY,CAAgB,CAC5B,cAAc,GAAG,CACjB,WAAS,CACT,QAAM,CACN,SAAO,CACP,SAAO,CACR,CAAG,EACE,CAAC,EAAU,EAAY,CAAG,eAAS,EAAE,EACrC,CAAC,EAAQ,EAAU,CAAG,eAAS,KAAK,GACpC,CAAC,EAAQ,EAAU,CAAG,eAAS,gBAC/B,CAAC,EAAO,EAAS,CAAG,eAAS,MAC7B,CAAC,EAAgB,EAAkB,CAAG,eAAS,GAC/C,EAAQ,aAAO,MACf,EAAiB,aAAO,MACxB,EAAe,aAAO,IACtB,EAAe,aAAO,GACtB,EAAY,aAAO,GACnB,EAAa,aAAO,GACpB,EAAa,aAAO,GACpB,EAAW,aAAO,GAClB,EAAe,aAAO,EAC5B,GAAa,OAAO,CAAG,EACvB,EAAU,OAAO,CAAG,EACpB,EAAW,OAAO,CAAG,EACrB,EAAW,OAAO,CAAG,EACrB,EAAS,OAAO,CAAG,EACnB,EAAa,OAAO,CAAG,EACvB,IAAM,EAAU,kBAAY,KACtB,EAAe,OAAO,GACxBU,aAAa,EAAe,OAAO,EACnC,EAAe,OAAO,CAAG,MAEvB,EAAM,OAAO,GACf,EAAM,OAAO,CAAC,KAAK,GACnB,EAAM,OAAO,CAAG,KAEpB,EAAG,EAAE,EACC,EAAY,kBAAY,KAC5B,GAAI,CAAC,EACH,OAEF,IACA,EAAa,OAAO,CAAG,GACvB,EAAU,cACV,EAAS,MACT,IAAI,EAAU,GA4Cd,AA3CA,SAASL,IACP,IAAM,EAAc,AAwG1B,SAAsB,CAAG,EACvB,GAAI,EAAI,UAAU,CAAC,UAAY,EAAI,UAAU,CAAC,UAC5C,OAAO,EAET,IAAM,EAAO,EAAI,UAAU,CAAC,KAAO,EAAM,CAAC,CAAC,EAAE,EAAI,CAAC,CAClD,GAAI,AAAkB,IAAlB,OAAOG,OAAwB,CACjC,IAAM,EAAMA,OAAO,oBAAoB,CACjC,EAAO,GAAK,gBAClB,GAAI,EACF,GAAI,CACF,IAAM,EAAS,IAAIC,IAAI,GAAM,MAAM,CAC7B,EAAS,EAAO,UAAU,CAAC,SAAW,OAAS,MACrD,MAAO,CAAC,EAAE,EAAO,EAAE,EAAE,IAAIA,IAAI,GAAQ,IAAI,CAAC,EAAE,EAAK,CAAC,AACpD,CAAE,KAAM,CACR,CAEJ,CACA,IAAM,EAAQD,AAA6B,WAA7BA,OAAO,QAAQ,CAAC,QAAQ,CAAgB,OAAS,MAC/D,MAAO,CAAC,EAAE,EAAM,EAAE,EAAEA,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAK,CAAC,AACnD,EA3HuC,GAC3B,EAAK,EAAY,IAAIS,UAAU,EAAa,GAAa,IAAIA,UAAU,EAC7E,GAAM,OAAO,CAAG,EAChB,EAAG,MAAM,CAAG,AAAC,IACX,EAAU,EACV,EAAkB,GAClB,EAAU,aACV,EAAS,MACT,EAAU,OAAO,GAAG,EACtB,EACA,EAAG,SAAS,CAAG,AAAC,IACd,GAAI,CACF,IAAM,EAAO,EAAS,OAAO,CAAC,EAAE,IAAI,EACpC,EAAU,GACV,EAAY,AAAC,IACX,IAAM,EAAO,IAAI,EAAM,EAAK,CAC5B,OAAO,EAAc,GAAK,EAAK,MAAM,CAAG,EAAc,EAAK,KAAK,CAAC,CAAC,GAAe,CACnF,GACA,EAAa,OAAO,GAAG,EACzB,CAAE,KAAM,CACR,CACF,EACA,EAAG,OAAO,CAAG,AAAC,IACZ,EAAM,OAAO,CAAG,KAChB,EAAU,gBACV,EAAW,OAAO,GAAG,IACjB,EAAa,OAAO,EAGpB,GAAa,EAAU,GAAiB,AAAW,MAAX,EAAE,IAAI,GAEhD,IAAkB,GAElB,EAAe,OAAO,CAAGH,WAAWT,EADtB,EAAsBU,KAAK,GAAG,CAAC,EAAG,EAAU,IAG9D,EACA,EAAG,OAAO,CAAG,AAAC,IACZ,EAAU,SACV,EAAS,GACT,EAAW,OAAO,GAAG,EACvB,CACF,GAEF,EAAG,CAAC,EAAK,EAAW,EAAW,EAAe,EAAqB,EAAa,EAAQ,EAClF,EAAa,kBAAY,CAAC,EAAM,KACpC,EAAa,OAAO,CAAG,GACnB,EAAe,OAAO,GACxBL,aAAa,EAAe,OAAO,EACnC,EAAe,OAAO,CAAG,MAEvB,EAAM,OAAO,GACf,EAAM,OAAO,CAAC,KAAK,CAAC,EAAM,GAC1B,EAAM,OAAO,CAAG,MAElB,EAAU,eACZ,EAAG,EAAE,EACC,EAAO,kBAAY,AAAC,IACpB,EAAM,OAAO,EAAE,aAAeO,UAAU,IAAI,EAC9C,EAAM,OAAO,CAAC,IAAI,CAAC,EAAa,OAAO,CAAC,GAE5C,EAAG,EAAE,EACC,EAAU,kBAAY,AAAC,IACvB,EAAM,OAAO,EAAE,aAAeA,UAAU,IAAI,EAC9C,EAAM,OAAO,CAAC,IAAI,CAAC,EAEvB,EAAG,EAAE,EACC,EAAQ,kBAAY,KACxB,EAAY,EAAE,EACd,EAAU,KAAK,EACjB,EAAG,EAAE,EAeL,MAdA,gBAAU,KACR,GAAI,CAAC,GAAO,CAAC,EAAS,CACpB,IACA,EAAU,gBACV,MACF,CAIA,OAHA,EAAY,EAAE,EACd,EAAU,KAAK,GACf,IACO,KACL,EAAa,OAAO,CAAG,GACvB,GACF,CACF,EAAG,CAAC,EAAK,EAAQ,EACV,CACL,OACA,UACA,WACA,SACA,SACA,YAAa,AAAW,cAAX,EACb,QACA,QAAS,EACT,aACA,QACA,gBACF,CACF,CACA,SAAS,EAAcD,CAAG,EACxB,OAAOT,KAAK,KAAK,CAACS,EACpB,CACA,SAAS,EAAiB,CAAI,EAC5B,OAAOT,KAAK,SAAS,CAAC,EACxB,CAqBA,SAAS,IACP,GAAM,CAAE,aAAW,CAAE,CAAG,IAKxB,MAAO,CAAE,cAJa,kBACpB,AAAC,GAAe,EAAY,QAAQ,CAAC,GACrC,CAAC,EAAY,EAES,aAAY,CACtC,CACA,SAAS,IACP,IAAM,EAAM,oBACN,EAAW,oBACX,EAAW,kBAAY,AAAC,GAAS,EAAI,GAAO,CAAC,EAAI,EACjD,EAAS,kBAAY,IAAM,EAAI,IAAK,CAAC,EAAI,EACzC,EAAe,kBAAY,AAAC,GAAQC,OAAO,IAAI,CAAC,EAAK,SAAU,YAAa,EAAE,EACpF,MAAO,CACL,WACA,YAAa,EAAS,QAAQ,CAC9B,SACA,cACF,CACF,CACA,SAAS,IACP,IAAM,EAAS,kBACb,AAAC,IACC,cAAY,CAAC,EAAK,IAAI,CAAC,CAAC,CACtB,QAAS,EAAK,OAAO,CACrB,YAAa,EAAK,WAAW,CAC7B,SAAU,EAAK,QAAQ,EAAI,GAC7B,EACF,EACA,EAAE,EAEE,EAAU,kBACd,CAAC,EAAS,IAAgB,EAAO,CAAE,KAAM,UAAW,UAAS,aAAY,GACzE,CAAC,EAAO,EAEJ,EAAQ,kBACZ,CAAC,EAAS,IAAgB,EAAO,CAAE,KAAM,QAAS,UAAS,aAAY,GACvE,CAAC,EAAO,EAEJ,EAAU,kBACd,CAAC,EAAS,IAAgB,EAAO,CAAE,KAAM,UAAW,UAAS,aAAY,GACzE,CAAC,EAAO,EAEJ,EAAO,kBACX,CAAC,EAAS,IAAgB,EAAO,CAAE,KAAM,OAAQ,UAAS,aAAY,GACtE,CAAC,EAAO,EAEV,MAAO,CAAE,SAAQ,UAAS,QAAO,UAAS,MAAK,CACjD,CACA,IAAI,EAAiB,CACnB,UAAW,mCAAiC,CAC5C,YAAa,qCAAmC,CAChD,WAAY,oCAAkC,CAC9C,YAAa,qCAAmC,CAChD,cAAe,uCAAqC,CACpD,aAAc,sCAAoC,CAClD,YAAa,qCAAmC,CAChD,cAAe,uCAAqC,CACpD,gBAAiB,yCAAuC,CACxD,KAAM,0BAA2B,CACjC,UAAW,mCAAiC,CAC5C,aAAc,sCAAoC,CAClD,QAAS,6BAA8B,CACvC,QAAS,6BAA8B,CACvC,MAAO,2BAA4B,CACnC,KAAM,0BAA2B,CACjC,SAAU,8BAA+B,CACzC,OAAQ,4BAA6B,AACvC,EAqBA,SAAS,IACP,GAAM,CAAE,MAAO,CAAS,CAAE,CAAG,gBAAc,GAE3C,MAAO,CACL,KAFW,QAGX,YACA,SAA4C,EAC5C,OAAQ,CAAE,OAAM,iBAAS,qBAAY,oBAAQ,iBAAS,UACxD,CACF,CACA,SAAS,IACP,MAAO,CAEL,aAAc,uBACd,kBAAmB,6BACnB,mBAAoB,6BACpB,eAAgB,gCAEhB,oBAAqB,gCACrB,mBAAoB,uBACpB,wBAAyB,6BACzB,iBAAkB,uBAClB,sBAAuB,6BACvB,uBAAwB,6BAExB,aAAc,0BACd,kBAAmB,0BAEnB,mBAAoB,0BACpB,eAAgB,8BAEhB,oBAAqB,8BACrB,mBAAoB,0BACpB,wBAAyB,0BACzB,iBAAkB,0BAClB,sBAAuB,0BACvB,uBAAwB,0BAExB,aAAc,0BACd,kBAAmB,0BACnB,mBAAoB,0BACpB,eAAgB,8BAChB,oBAAqB,8BACrB,mBAAoB,0BACpB,wBAAyB,0BACzB,iBAAkB,0BAClB,sBAAuB,0BACvB,uBAAwB,0BACxB,oBAAqB,0BAGrB,WAAY,wBACZ,gBAAiB,wBACjB,iBAAkB,wBAClB,aAAc,8BACd,kBAAmB,8BACnB,iBAAkB,wBAClB,sBAAuB,wBACvB,eAAgB,wBAChB,oBAAqB,wBACrB,qBAAsB,wBACtB,kBAAmB,yBAGnB,UAAW,uBACX,eAAgB,uBAChB,gBAAiB,uBACjB,YAAa,8BACb,iBAAkB,8BAClB,gBAAiB,uBACjB,qBAAsB,uBACtB,cAAe,uBACf,mBAAoB,uBACpB,oBAAqB,uBAErB,iBAAkB,+BAClB,YAAa,6BACb,gBAAiB,+BACjB,cAAe,6BACf,iBAAkB,8BAClB,YAAa,sBAEb,iBAAkB,2BAElB,kBAAmB,2BAEnB,yBAA0B,8BAG1B,UAAW,+BACX,cAAe,+BAEf,mBAAoB,iCACpB,kBAAmB,gCACnB,oBAAqB,gCAErB,kBAAmB,2BACnB,iBAAkB,+BAElB,eAAgB,iCAEhB,qBAAsB,iCAEtB,qBAAsB,gCAEtB,oBAAqB,+BAGrB,YAAa,iCACb,qBAAsB,mCACtB,cAAe,+BAEf,WAAY,iCAGZ,UAAW,8BAEX,mBAAoB,8BAEpB,kBAAmB,6BAEnB,oBAAqB,6BACrB,iBAAkB,2BAElB,sBAAuB,2BAEvB,eAAgB,8BAGhB,WAAY,UAGZ,UAAW,yDACX,mBAAoB,8BACpB,kBAAmB,8BAEnB,aAAc,EACd,eAAgB,GAChB,eAAgB,EAChB,eAAgB,EAChB,kBAAmB,EAEnB,cAAe,GACf,gBAAiB,GACjB,gBAAiB,GACjB,gBAAiB,GAEjB,WAAY,oDAEZ,SAAU,GACV,WAAY,GACZ,WAAY,GACZ,WAAY,GACZ,iBAAkB,GAClB,iBAAkB,GAClB,iBAAkB,GAClB,iBAAkB,GAClB,iBAAkB,GAClB,aAAc,GAEd,iBAAkB,IAClB,WAAY,mBACZ,aAAc,IACd,aAAc,mBAEd,QAAS,GACT,UAAW,GACX,UAAW,GACX,UAAW,EACX,WAAY,EAEZ,OAAQ,GACR,SAAU,GACV,SAAU,GACV,SAAU,EACV,UAAW,EAEX,mBAAoB,OACpB,kBAAmB,OACnB,mBAAoB,OACpB,gBAAiB,uCACjB,cAAe,sCAEf,UAAW,uBACX,eAAgB,6BAChB,gBAAiB,6BAEjB,UAAW,iCAEX,eAAgB,+BAEhB,eAAgB,uBAGhB,eAAgB,2BAEhB,oBAAqB,EAErB,uBAAwB,GAExB,mBAAoB,2BAEpB,oBAAqB,gCAErB,yBAA0B,gCAE1B,4BAA6B,8BAE7B,kBAAmB,2BAGnB,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,UAAW,IACb,CACF,CACA,SAAS,IACP,MAAO,CACL,MAAO,CAEL,SAAU,qBACV,YAAa,sBACb,YAAa,wBACb,UAAW,sBACX,iBAAkB,sBAElB,WAAY,kBACZ,cAAe,uBAEf,mBAAoB,uBAEpB,cAAe,sBAEf,WAAY,qBAGZ,mBAAoB,qBACpB,kBAAmB,qBACnB,oBAAqB,qBACrB,wBAAyB,qBAEzB,UAAW,wBACX,eAAgB,sBAChB,aAAc,sBAEd,SAAU,qBAEV,YAAa,sBAGb,qBAAsB,GACtB,kBAAmB,qBACnB,4BAA6B,CAC/B,EACA,IAAK,CACH,UAAW,qBACX,aAAc,sBACd,YAAa,wBACb,aAAc,iBACd,WAAY,eACZ,aAAc,iBACd,UAAW,aACb,EACA,MAAO,CACL,WAAY,eACZ,aAAc,iBACd,aAAc,iBACd,UAAW,cACX,UAAW,qBACb,EACA,MAAO,CAEL,aAAc,iBACd,WAAY,eACZ,aAAc,iBACd,UAAW,cAEX,UAAW,sBACX,iBAAkB,sBAClB,iBAAkB,sBAClB,YAAa,wBAEb,UAAW,wBAEX,eAAgB,sBAGhB,eAAgB,qBAEhB,aAAc,qBAEd,eAAgB,qBAEhB,YAAa,qBAGb,mBAAoB,iBAEpB,iBAAkB,eAElB,mBAAoB,iBAEpB,gBAAiB,aAEnB,EACA,KAAM,CAEJ,UAAW,sBACX,iBAAkB,sBAClB,iBAAkB,sBAClB,YAAa,wBACb,qBAAsB,wBAEtB,SAAU,sBAEV,UAAW,qBAEX,WAAY,uBAEd,EACA,aAAc,CACZ,UAAW,sBACX,eAAgB,wBAChB,YAAa,uBACf,EACA,OAAQ,CAEN,UAAW,sBACX,iBAAkB,sBAClB,YAAa,wBAEb,aAAc,cACd,kBAAmB,oBACnB,mBAAoB,oBACpB,aAAc,sBACd,cAAe,mCAEf,UAAW,sBACX,aAAc,sBACd,mBAAoB,wBACpB,cAAe,+BAEf,eAAgB,kBAChB,kBAAmB,sBACnB,wBAAyB,0BAEzB,gBAAiB,kBACjB,mBAAoB,sBACpB,yBAA0B,0BAE1B,QAAS,cACT,kBAAmB,sBAEnB,wBAAyB,wBAIzB,oBAAqB,wBAErB,yBAA0B,qBAI1B,cAAe,wBAEf,mBAAoB,sBAEpB,oBAAqB,sBAErB,YAAa,uBAGb,YAAa,cACb,UAAW,cACX,eAAgB,oBAChB,gBAAiB,oBAEjB,eAAgB,sBAGhB,YAAa,eAEb,aAAc,iCAEd,aAAc,cAEd,kBAAmB,kBAEnB,iBAAkB,eAElB,sBAAuB,eAEvB,gBAAiB,eAEjB,iBAAkB,cAEpB,EACA,MAAO,CAEL,UAAW,sBACX,iBAAkB,sBAClB,YAAa,wBACb,qBAAsB,uBAEtB,iBAAkB,0BAClB,kBAAmB,cACnB,aAAc,qCAEd,kBAAmB,mCAEnB,oBAAqB,oCAGrB,UAAW,wBAEX,eAAgB,qBAElB,EACA,OAAQ,CAEN,UAAW,sBACX,iBAAkB,sBAElB,YAAa,wBAEb,gBAAiB,sBAEjB,qBAAsB,uBAGtB,aAAc,cAEd,kBAAmB,oBAGnB,iBAAkB,uBAElB,oBAAqB,cAErB,eAAgB,kBAEhB,yBAA0B,IAG1B,eAAgB,qBAEhB,wBAAyB,wBAEzB,0BAA2B,kBAG3B,UAAW,wBAEX,eAAgB,sBAGhB,WAAY,qBAEd,EACA,SAAU,CAER,UAAW,sBACX,gBAAiB,sBAEjB,YAAa,wBACb,kBAAmB,kBAEnB,mBAAoB,kBAEpB,oBAAqB,uBAErB,yBAA0B,uBAG1B,aAAc,cAEd,kBAAmB,oBAGnB,iBAAkB,sBAElB,WAAY,wBAGZ,aAAc,EAEd,yBAA0B,EAE5B,EACA,KAAM,CAEJ,UAAW,sBACX,mBAAoB,wBAEpB,iBAAkB,oBAElB,YAAa,wBAEb,WAAY,wBAGZ,UAAW,sBAEX,OAAQ,sBAGR,YAAa,kBAEb,eAAgB,cAGhB,eAAgB,uBAEhB,kBAAmB,cAGnB,aAAc,uBAEd,yBAA0B,EAG1B,WAAY,sBAEZ,cAAe,sBAEf,gBAAiB,kBAEjB,mBAAoB,uBAEpB,sBAAuB,cAEvB,kBAAmB,sBAGnB,cAAe,sBAEf,QAAS,sBAGT,aAAc,cAGd,UAAW,wBAEX,eAAgB,sBAGhB,gBAAiB,uBACjB,mBAAoB,GAEpB,iBAAkB,EAClB,wBAAyB,EAEzB,kBAAmB,EACrB,EACA,KAAM,CAEJ,UAAW,wBACX,iBAAkB,sBAClB,YAAa,wBACb,qBAAsB,wBAEtB,aAAc,cACd,eAAgB,cAEhB,kBAAmB,cAEnB,gBAAiB,cAEjB,YAAa,aAEf,EACA,MAAO,CAEL,UAAW,sBACX,iBAAkB,sBAClB,gBAAiB,sBACjB,YAAa,wBAEb,SAAU,sBAEV,SAAU,qBAEV,UAAW,sBAGX,UAAW,wBAEX,eAAgB,qBAElB,EACA,OAAQ,CAEN,UAAW,sBACX,gBAAiB,sBACjB,YAAa,wBAEb,UAAW,wBAEX,eAAgB,qBAElB,EACA,QAAS,CACP,UAAW,sBACX,gBAAiB,sBACjB,YAAa,uBACf,EACA,QAAS,CACP,UAAW,sBACX,iBAAkB,sBAClB,oBAAqB,qBACvB,EACA,KAAM,CAEJ,UAAW,sBACX,iBAAkB,sBAClB,YAAa,wBACb,WAAY,wBACZ,iBAAkB,EAElB,kBAAmB,EAErB,EACA,OAAQ,CACN,aAAc,cACd,kBAAmB,mBACrB,EACA,MAAO,CACL,aAAc,cACd,UAAW,sBACX,gBAAiB,cACjB,wBAAyB,kBACzB,YAAa,sBACb,wBAAyB,sBACzB,qBAAsB,cACtB,0BAA2B,oBAC3B,2BAA4B,mBAC9B,EACA,SAAU,CACR,aAAc,cACd,UAAW,qBACb,EACA,WAAY,CAEV,UAAW,sBACX,iBAAkB,sBAClB,YAAa,wBACb,gBAAiB,sBACjB,qBAAsB,uBACtB,kBAAmB,kBAEnB,UAAW,cAEX,eAAgB,oBAEhB,YAAa,kBAEb,sBAAuB,uBAEvB,eAAgB,qBAGhB,UAAW,wBAEX,eAAgB,qBAElB,EACA,KAAM,CACJ,UAAW,sBACX,eAAgB,wBAChB,WAAY,eACZ,aAAc,gBAChB,EACA,WAAY,CAEV,UAAW,sBACX,kBAAmB,kBACnB,iBAAkB,sBAElB,aAAc,cAEd,kBAAmB,oBAEnB,OAAQ,sBAER,aAAc,cAEd,qBAAsB,qBAEtB,YAAa,sBAEb,WAAY,sBAGZ,iBAAkB,iBAEpB,EACA,MAAO,CACL,UAAW,sBACX,qBAAsB,wBACtB,aAAc,cACd,YAAa,uBACf,EACA,WAAY,CACV,UAAW,wBACX,qBAAsB,uBACtB,UAAW,cACX,eAAgB,oBAChB,eAAgB,sBAClB,EACA,SAAU,CACR,UAAW,sBACX,aAAc,iBACd,WAAY,eACZ,eAAgB,oBAClB,EACA,SAAU,CACR,UAAW,qBACX,iBAAkB,iBACpB,EACA,KAAM,CACJ,aAAc,cACd,iBAAkB,qBACpB,EACA,QAAS,CACP,WAAY,wBACZ,UAAW,uBACb,EACA,OAAQ,CACN,SAAU,sBACV,OAAQ,oBACR,UAAW,qBACX,UAAW,qBACb,EACA,SAAU,CACR,UAAW,sBACX,iBAAkB,sBAClB,YAAa,wBACb,iBAAkB,sBAClB,SAAU,oBACZ,EACA,SAAU,CACR,iBAAkB,sBAClB,eAAgB,EAClB,EACA,OAAQ,CACN,aAAc,cACd,UAAW,wBACX,iBAAkB,CACpB,EACA,SAAU,CACR,UAAW,sBACX,qBAAsB,wBACtB,UAAW,wBACX,MAAO,qBACT,EACA,SAAU,CACR,UAAW,sBACX,iBAAkB,sBAClB,YAAa,wBACb,oBAAqB,iBACvB,EACA,KAAM,CACJ,UAAW,sBACX,iBAAkB,sBAClB,aAAc,cACd,YAAa,kBACb,eAAgB,sBAClB,EACA,WAAY,CACV,UAAW,sBACX,iBAAkB,sBAClB,YAAa,wBACb,gBAAiB,sBACjB,YAAa,kBACb,eAAgB,sBAClB,EACA,SAAU,CACR,UAAW,sBACX,iBAAkB,sBAClB,YAAa,wBACb,gBAAiB,sBACjB,iBAAkB,iBACpB,EACA,UAAW,CACT,UAAW,sBACX,eAAgB,wBAChB,cAAe,qBACf,eAAgB,sBAChB,kBAAmB,cACnB,YAAa,iBACf,EACA,KAAM,CACJ,UAAW,gBACb,EACA,OAAQ,CACN,aAAc,cACd,mBAAoB,cACpB,QAAS,qBACT,aAAc,iBAChB,EACA,OAAQ,CACN,UAAW,sBACX,qBAAsB,wBACtB,YAAa,wBACb,eAAgB,qBAChB,aAAc,aAChB,EACA,SAAU,CACR,UAAW,sBACX,iBAAkB,sBAClB,iBAAkB,sBAClB,YAAa,wBACb,aAAc,sBAChB,EACA,MAAO,CACL,oBAAqB,sBACrB,YAAa,qBACf,EACA,UAAW,CACT,UAAW,sBACX,qBAAsB,uBACxB,EACA,OAAQ,CACN,UAAW,sBACX,iBAAkB,sBAClB,qBAAsB,uBACxB,EACA,MAAO,CACL,UAAW,wBACX,qBAAsB,sBACxB,EACA,QAAS,CAEP,UAAW,sBACX,gBAAiB,sBAEjB,UAAW,sBAEX,eAAgB,YAGhB,aAAc,iBACd,WAAY,eACZ,aAAc,iBACd,UAAW,aACb,EACA,aAAc,CAEZ,UAAW,sBACX,iBAAkB,sBAClB,gBAAiB,sBAEjB,YAAa,wBAEb,UAAW,wBAEX,eAAgB,sBAGhB,aAAc,iBACd,WAAY,eACZ,aAAc,iBACd,UAAW,aACb,CACF,CACF,CAz3BoB,AACP,kCAAgC,CAC9B,oCAAkC,CACnC,mCAAiC,CAChC,oCAAkC,CAChC,sCAAoC,CACrC,qCAAmC,CACpC,oCAAkC,CAChC,sCAAoC,CAClC,wCAAsC,CACjD,yBAA0B,CACrB,kCAAgC,CAC7B,qCAAmC,CACxC,4BAA6B,CAC7B,4BAA6B,CAC/B,0BAA2B,CAC5B,yBAA0B,CACtB,6BAA8B,CAChC,2BAA4B,A"}
|
|
1
|
+
{"version":3,"file":"370.js","sources":["webpack://@kb-labs/qa-entry/../../../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, methodOrOptions = \"POST\") {\n const opts = typeof methodOrOptions === \"string\" ? { method: methodOrOptions } : methodOrOptions;\n const method = opts.method ?? \"POST\";\n const mapBody = opts.mapBody;\n const mutation = useMutation({\n mutationFn: async (input) => {\n const url = typeof endpoint === \"function\" ? endpoint(input) : endpoint;\n const payload = mapBody ? mapBody(input) : input;\n const hasBody = payload !== void 0 && payload !== null;\n const res = await fetch(`${getApiOrigin()}/api${url}`, {\n method,\n headers: hasBody ? { \"Content-Type\": \"application/json\" } : {},\n body: hasBody ? JSON.stringify(payload) : void 0\n });\n if (!res.ok) {\n throw new Error(`${method} ${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 }\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 getApiOrigin() {\n if (typeof window !== \"undefined\") {\n const cfg = window[\"__KB_STUDIO_CONFIG__\"];\n const base = cfg?.KB_API_BASE_URL;\n if (base) {\n try {\n return new URL(base).origin;\n } catch {\n }\n }\n }\n return \"\";\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(`${getApiOrigin()}/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 path = url.startsWith(\"/\") ? url : `/${url}`;\n if (typeof window !== \"undefined\") {\n const cfg = window[\"__KB_STUDIO_CONFIG__\"];\n const base = cfg?.KB_API_BASE_URL;\n if (base) {\n try {\n const origin = new URL(base).origin;\n const proto2 = origin.startsWith(\"https\") ? \"wss:\" : \"ws:\";\n return `${proto2}//${new URL(origin).host}${path}`;\n } catch {\n }\n }\n }\n const proto = window.location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\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","o","fetch","JSON","window","URL","clearTimeout","EventSource","Array","e","setTimeout","Math","r","WebSocket"],"mappings":"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"}
|
|
Binary file
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"name": "qaPlugin",
|
|
6
6
|
"type": "app",
|
|
7
7
|
"buildInfo": {
|
|
8
|
-
"buildVersion": "2.
|
|
8
|
+
"buildVersion": "2.42.0",
|
|
9
9
|
"buildName": "@kb-labs/qa-entry"
|
|
10
10
|
},
|
|
11
11
|
"remoteEntry": {
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
{
|
|
29
29
|
"id": "qaPlugin:@kb-labs/studio-event-bus",
|
|
30
30
|
"name": "@kb-labs/studio-event-bus",
|
|
31
|
-
"version": "2.
|
|
31
|
+
"version": "2.42.0",
|
|
32
32
|
"singleton": true,
|
|
33
33
|
"requiredVersion": "^0.1.0",
|
|
34
34
|
"assets": {
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
{
|
|
51
51
|
"id": "qaPlugin:@kb-labs/studio-hooks",
|
|
52
52
|
"name": "@kb-labs/studio-hooks",
|
|
53
|
-
"version": "2.
|
|
53
|
+
"version": "2.42.0",
|
|
54
54
|
"singleton": true,
|
|
55
55
|
"requiredVersion": "^0.1.0",
|
|
56
56
|
"assets": {
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
{
|
|
79
79
|
"id": "qaPlugin:@kb-labs/studio-ui-core",
|
|
80
80
|
"name": "@kb-labs/studio-ui-core",
|
|
81
|
-
"version": "2.
|
|
81
|
+
"version": "2.42.0",
|
|
82
82
|
"singleton": true,
|
|
83
83
|
"requiredVersion": "^0.1.0",
|
|
84
84
|
"assets": {
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
{
|
|
98
98
|
"id": "qaPlugin:@kb-labs/studio-ui-kit",
|
|
99
99
|
"name": "@kb-labs/studio-ui-kit",
|
|
100
|
-
"version": "2.
|
|
100
|
+
"version": "2.42.0",
|
|
101
101
|
"singleton": true,
|
|
102
102
|
"requiredVersion": "^0.1.0",
|
|
103
103
|
"assets": {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"name": "qaPlugin",
|
|
6
6
|
"type": "app",
|
|
7
7
|
"buildInfo": {
|
|
8
|
-
"buildVersion": "2.
|
|
8
|
+
"buildVersion": "2.42.0",
|
|
9
9
|
"buildName": "@kb-labs/qa-entry"
|
|
10
10
|
},
|
|
11
11
|
"remoteEntry": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"requiredVersion": "^0.1.0",
|
|
31
31
|
"shareScope": "default",
|
|
32
32
|
"name": "@kb-labs/studio-event-bus",
|
|
33
|
-
"version": "2.
|
|
33
|
+
"version": "2.42.0",
|
|
34
34
|
"eager": false,
|
|
35
35
|
"id": "qaPlugin:@kb-labs/studio-event-bus",
|
|
36
36
|
"assets": {
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"requiredVersion": "^0.1.0",
|
|
56
56
|
"shareScope": "default",
|
|
57
57
|
"name": "@kb-labs/studio-hooks",
|
|
58
|
-
"version": "2.
|
|
58
|
+
"version": "2.42.0",
|
|
59
59
|
"eager": false,
|
|
60
60
|
"id": "qaPlugin:@kb-labs/studio-hooks",
|
|
61
61
|
"assets": {
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"requiredVersion": "^0.1.0",
|
|
89
89
|
"shareScope": "default",
|
|
90
90
|
"name": "@kb-labs/studio-ui-core",
|
|
91
|
-
"version": "2.
|
|
91
|
+
"version": "2.42.0",
|
|
92
92
|
"eager": false,
|
|
93
93
|
"id": "qaPlugin:@kb-labs/studio-ui-core",
|
|
94
94
|
"assets": {
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"requiredVersion": "^0.1.0",
|
|
111
111
|
"shareScope": "default",
|
|
112
112
|
"name": "@kb-labs/studio-ui-kit",
|
|
113
|
-
"version": "2.
|
|
113
|
+
"version": "2.42.0",
|
|
114
114
|
"eager": false,
|
|
115
115
|
"id": "qaPlugin:@kb-labs/studio-ui-kit",
|
|
116
116
|
"assets": {
|