{"version":3,"file":"BaseTanStackRouterDevtoolsPanel-CDq3ZkLG.cjs","names":["goober","createSignal","useContext","tokens","ShadowDomTargetContext","Accessor","stylesFactory","shadowDOMTarget","ShadowRoot","colors","font","size","alpha","shadow","border","fontFamily","lineHeight","fontSize","css","bind","target","devtoolsPanelContainer","gray","devtoolsPanelContainerVisibility","isOpen","devtoolsPanelContainerResizing","isResizing","devtoolsPanelContainerAnimation","height","logo","sans","radius","xs","blue","tanstackLogo","md","weight","bold","routerLogo","semibold","devtoolsPanel","sm","darkGray","dragHandle","purple","firstContainer","routerExplorerContainer","routerExplorer","row","detailsHeader","medium","maskedBadge","yellow","full","normal","maskedLocation","detailsContent","routeMatchesToggle","routeMatchesToggleBtn","active","showBorder","base","classes","activeStyles","push","inactiveStyles","detailsHeaderInfo","matchRow","matchIndicator","color","grayStyles","matchID","ageTicker","showWarning","warningStyles","secondContainer","thirdContainer","fourthContainer","routesContainer","routesRowContainer","isMatch","routesRow","matchStyles","routesRowInner","routeParamInfo","nestedRouteRow","isRoot","code","matchesContainer","cachedMatchesContainer","historyContainer","historyOverflowContainer","maskedBadgeContainer","matchDetails","matchStatus","status","isFetching","colorMap","pending","success","error","notFound","const","matchDetailsInfo","matchDetailsInfoLabel","mainCloseBtn","mainCloseBtnPosition","position","mainCloseBtnAnimation","routerLogoCloseButton","mainCloseBtnDivider","mainCloseBtnIconContainer","mainCloseBtnIconOuter","mainCloseBtnIconInner","panelCloseBtn","panelCloseBtnIcon","navigateButton","useStyles","shadowDomTarget","_styles","Dynamic","createEffect","createRenderEffect","createSignal","useTheme","useMediaQuery","AnyRoute","AnyRouteMatch","Theme","JSX","isServer","window","StyledComponent","T","ButtonHTMLAttributes","HTMLButtonElement","InputHTMLAttributes","HTMLInputElement","SelectHTMLAttributes","HTMLSelectElement","HTMLElementTagNameMap","HTMLAttributes","getStatusColor","match","colorMap","pending","success","error","notFound","const","isFetching","status","getRouteStatusColor","matches","Array","route","found","find","d","routeId","id","Styles","CSSProperties","props","Record","theme","styled","type","newStyles","queries","ref","style","rest","mediaStyles","Object","entries","reduce","current","key","value","baseStyles","combinedStyles","cssText","_$createComponent","_$mergeProps","component","r$","_ref$","useIsMounted","isMounted","setIsMounted","effect","SERVER_COMPONENT_STREAM","Symbol","for","RENDERABLE_RSC","RSC_SLOT_USAGES","RscSlotUsageEvent","slot","args","trimTrailingUndefined","arr","end","length","undefined","slice","ServerComponentType","isServerComponent","getServerComponentType","v","getServerComponentSlots","out","usages","isArray","evt","name","includes","push","getServerComponentSlotUsages","filter","getServerComponentSlotUsageSummary","count","invocations","prev","displayValue","componentType","slots","getOwnPropertyNames","newValue","toString","JSON","stringify","useSafeState","initialState","state","setState","safeSetState","scheduleMicrotask","callback","Promise","resolve","then","catch","setTimeout","multiSortBy","accessors","item","map","i","sort","a","ai","b","bi","accessor","ao","bo","clsx","cx","goober","createMemo","createSignal","useContext","tokens","displayValue","getServerComponentSlotUsageSummary","getServerComponentSlots","getServerComponentType","ShadowDomTargetContext","Accessor","JSX","ExpanderProps","expanded","style","CSSProperties","Expander","_style","styles","useStyles","_el$","_tmpl$","_el$2","firstChild","_$effect","_p$","_v$","expander","_v$2","expanderIcon","e","_$className","t","_$setAttribute","undefined","Entry","label","RendererProps","handleEntry","HandleEntryFn","Element","value","subEntries","Array","subEntryPages","type","toggleExpanded","pageSize","filterSubEntries","Property","chunkArray","array","T","size","i","result","length","push","slice","entry","ExplorerProps","Partial","defaultExpanded","Record","isIterable","x","Iterable","Symbol","iterator","isPlainObject","proto","Object","getPrototypeOf","prototype","Explorer","rest","setExpanded","Boolean","old","entries","makeProperty","sub","subDefaultExpanded","isArray","v","map","key","val","d","toString","from","expandedPages","setExpandedPages","valueSnapshot","setValueSnapshot","refreshValueSnapshot","_$createComponent","_$mergeProps","serverComponentType","serverComponentSlots","serverComponentSlotUsageSummary","isCompositeWithSlots","_el$3","_tmpl$2","_$insert","_c$","_$memo","_el$4","_tmpl$3","_el$5","_el$6","_el$7","nextSibling","$$click","_v$3","expandButton","_v$4","compositeComponent","_el$8","_tmpl$4","_el$9","_el$0","name","usage","invocations","args","_v$5","rscMetaRow","_v$6","rscMetaLabel","_v$7","a","_el$1","_tmpl$5","_el$10","_el$11","_tmpl$6","renderableComponent","_el$12","_tmpl$7","_el$13","_el$14","String","toLowerCase","_v$8","_v$9","info","_el$15","index","_el$16","_el$17","_tmpl$8","_el$18","_el$19","_el$20","_el$25","_el$22","_el$26","_el$24","includes","filter","_c$2","_el$27","_v$0","_v$1","labelButton","_el$28","_tmpl$9","_el$29","refreshValueBtn","_el$30","_el$31","_el$32","stylesFactory","shadowDOMTarget","ShadowRoot","colors","font","border","fontFamily","lineHeight","fontSize","css","bind","target","mono","xs","sm","purple","radius","full","darkGray","cyan","weight","medium","teal","gray","rscChipRow","rscChip","rscChipName","rscChipMeta","shadowDomTarget","_styles","_$delegateEvents","clsx","cx","useStyles","AnyRoute","AnyRouteMatch","AnyRouter","Accessor","formatTime","ms","units","values","chosenUnitIndex","i","length","formatter","Intl","NumberFormat","navigator","language","compactDisplay","notation","maximumFractionDigits","format","AgeTicker","match","router","styles","route","routesById","Record","routeId","options","loader","age","Date","now","updatedAt","staleTime","defaultStaleTime","gcTime","defaultGcTime","_el$","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_el$5","_el$6","_$insert","_$effect","_$className","ageTicker","useStyles","AnyRouter","NavigateOptions","Accessor","Props","router","NavigateButton","to","params","search","styles","_el$","_tmpl$","$$click","e","stopPropagation","navigate","_$setAttribute","_$effect","_$className","navigateButton","_$delegateEvents","clsx","cx","hasKeys","interpolatePath","rootRouteId","trimPath","For","Match","Show","Switch","createEffect","createMemo","createSignal","onCleanup","untrack","useDevtoolsOnClose","useStyles","useLocalStorage","Explorer","getRouteStatusColor","getStatusColor","multiSortBy","AgeTicker","NavigateButton","AnyContext","AnyRoute","AnyRouteMatch","AnyRouter","FileRouteTypes","MakeRouteMatchUnion","Route","RouterState","Accessor","JSX","BaseDevtoolsPanelOptions","style","CSSProperties","className","isOpen","setIsOpen","handleDragStart","e","router","routerState","shadowDOMTarget","ShadowRoot","HISTORY_LIMIT","Logo","props","rest","styles","_el$","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_$spread","_$mergeProps","class","logo","_$effect","_p$","_v$","tanstackLogo","_v$2","routerLogo","_$className","t","undefined","NavigateLink","left","Element","children","right","_el$4","_tmpl$2","_el$5","_$insert","RouteComp","pendingMatches","route","isRoot","activeId","setActiveId","Array","id","matches","length","match","find","d","routeId","param","params","p","r","path","startsWith","trimmed","slice","error","navigationTarget","allParams","Object","assign","map","m","interpolated","fullPath","decoder","pathParamsDecoder","isMissingParams","interpolatedPath","_el$6","_tmpl$5","_el$7","_el$8","$$click","_$createComponent","routesRow","when","navigate","to","_el$9","_tmpl$3","_el$0","code","_el$1","_tmpl$4","routeParamInfo","_c$","_$memo","_el$10","_tmpl$6","sort","a","b","rank","nestedRouteRow","_v$3","_v$4","routesRowContainer","_v$5","matchIndicator","_$setAttribute","BaseTanStackRouterDevtoolsPanel","panelProps","onCloseClick","otherPanelProps","currentTab","setCurrentTab","history","setHistory","hasHistoryOverflowed","setHasHistoryOverflowed","some","status","cache","_cache","cacheMatches","values","cachedMatches","setCachedMatches","refreshCache","next","valuesChanged","size","index","interval","setInterval","clearInterval","currentMatch","historyUntracked","lastMatch","sameLocation","pathname","JSON","stringify","search","prev","newHistory","splice","activeMatch","hasSearch","location","explorerState","state","routerExplorerValue","fromEntries","keys","const","dd","key","filter","includes","activeMatchLoaderData","loaderData","activeMatchValue","locationSearchValue","_el$11","_tmpl$8","_el$12","_el$13","_el$14","_el$15","_el$16","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_el$23","_el$24","_el$25","_el$26","_el$27","_el$28","_el$29","_el$30","devtoolsPanel","_el$34","_$addEventListener","dragHandle","onClick","label","value","defaultExpanded","context","options","filterSubEntries","subEntries","_c$2","maskedLocation","_el$35","_tmpl$9","_el$36","_v$24","maskedBadgeContainer","_v$25","maskedBadge","_c$3","_el$37","routeTree","_el$31","_i","_el$38","_tmpl$0","_el$39","_el$40","matchID","_v$26","_v$27","matchRow","_v$28","_el$32","_tmpl$7","_el$33","each","_el$41","_tmpl$1","_el$42","_el$43","_v$29","_v$30","_c$4","_el$44","_tmpl$10","historyOverflowContainer","_c$5","_el$45","_tmpl$11","_el$46","_el$47","_el$48","_el$49","_el$50","_el$51","_el$52","_v$34","_v$35","_v$36","_v$31","cachedMatchesContainer","_v$32","detailsHeader","_v$33","detailsHeaderInfo","_c$6","_el$53","_tmpl$12","_el$54","_el$55","_el$56","_el$57","_el$58","_el$59","_el$60","_el$61","_el$62","_el$63","_el$64","_el$65","_el$66","_el$67","_el$68","_el$69","_el$70","_c$8","isFetching","_c$9","_c$0","updatedAt","Date","toLocaleTimeString","_c$1","_el$71","_tmpl$13","_el$72","detailsContent","_v$37","thirdContainer","_v$38","_v$39","matchDetails","_v$40","matchStatus","_v$41","matchDetailsInfoLabel","_v$42","matchDetailsInfo","_v$43","_v$44","_v$45","_v$46","_v$47","_v$48","o","i","n","s","h","l","u","_c$7","_el$73","_tmpl$14","_el$74","_el$75","_el$76","navigator","_el$77","_tmpl$15","CopyButton","getValue","reduce","obj","_v$49","fourthContainer","_v$50","_v$51","_v$6","panelCloseBtn","_v$7","panelCloseBtnIcon","_v$8","firstContainer","_v$9","row","_v$0","routerExplorerContainer","_v$1","routerExplorer","_v$10","secondContainer","_v$11","matchesContainer","_v$12","_v$13","_v$14","_v$15","routeMatchesToggle","_v$16","_v$17","routeMatchesToggleBtn","_v$18","_v$19","_v$20","_v$21","_v$22","_v$23","routesContainer","c","disabled","w","f","y","g","copied","setCopied","timeoutId","ReturnType","setTimeout","handleCopy","clipboard","writeText","console","warn","clearTimeout","_el$78","_tmpl$16","_$delegateEvents"],"sources":["../src/tokens.ts","../src/useStyles.tsx","../src/useLocalStorage.ts","../src/utils.tsx","../src/Explorer.tsx","../src/AgeTicker.tsx","../src/NavigateButton.tsx","../src/BaseTanStackRouterDevtoolsPanel.tsx"],"sourcesContent":["export const tokens = {\n  colors: {\n    inherit: 'inherit',\n    current: 'currentColor',\n    transparent: 'transparent',\n    black: '#000000',\n    white: '#ffffff',\n    neutral: {\n      50: '#f9fafb',\n      100: '#f2f4f7',\n      200: '#eaecf0',\n      300: '#d0d5dd',\n      400: '#98a2b3',\n      500: '#667085',\n      600: '#475467',\n      700: '#344054',\n      800: '#1d2939',\n      900: '#101828',\n    },\n    darkGray: {\n      50: '#525c7a',\n      100: '#49536e',\n      200: '#414962',\n      300: '#394056',\n      400: '#313749',\n      500: '#292e3d',\n      600: '#212530',\n      700: '#191c24',\n      800: '#111318',\n      900: '#0b0d10',\n    },\n    gray: {\n      50: '#f9fafb',\n      100: '#f2f4f7',\n      200: '#eaecf0',\n      300: '#d0d5dd',\n      400: '#98a2b3',\n      500: '#667085',\n      600: '#475467',\n      700: '#344054',\n      800: '#1d2939',\n      900: '#101828',\n    },\n    blue: {\n      25: '#F5FAFF',\n      50: '#EFF8FF',\n      100: '#D1E9FF',\n      200: '#B2DDFF',\n      300: '#84CAFF',\n      400: '#53B1FD',\n      500: '#2E90FA',\n      600: '#1570EF',\n      700: '#175CD3',\n      800: '#1849A9',\n      900: '#194185',\n    },\n    green: {\n      25: '#F6FEF9',\n      50: '#ECFDF3',\n      100: '#D1FADF',\n      200: '#A6F4C5',\n      300: '#6CE9A6',\n      400: '#32D583',\n      500: '#12B76A',\n      600: '#039855',\n      700: '#027A48',\n      800: '#05603A',\n      900: '#054F31',\n    },\n    red: {\n      50: '#fef2f2',\n      100: '#fee2e2',\n      200: '#fecaca',\n      300: '#fca5a5',\n      400: '#f87171',\n      500: '#ef4444',\n      600: '#dc2626',\n      700: '#b91c1c',\n      800: '#991b1b',\n      900: '#7f1d1d',\n      950: '#450a0a',\n    },\n    yellow: {\n      25: '#FFFCF5',\n      50: '#FFFAEB',\n      100: '#FEF0C7',\n      200: '#FEDF89',\n      300: '#FEC84B',\n      400: '#FDB022',\n      500: '#F79009',\n      600: '#DC6803',\n      700: '#B54708',\n      800: '#93370D',\n      900: '#7A2E0E',\n    },\n    purple: {\n      25: '#FAFAFF',\n      50: '#F4F3FF',\n      100: '#EBE9FE',\n      200: '#D9D6FE',\n      300: '#BDB4FE',\n      400: '#9B8AFB',\n      500: '#7A5AF8',\n      600: '#6938EF',\n      700: '#5925DC',\n      800: '#4A1FB8',\n      900: '#3E1C96',\n    },\n    teal: {\n      25: '#F6FEFC',\n      50: '#F0FDF9',\n      100: '#CCFBEF',\n      200: '#99F6E0',\n      300: '#5FE9D0',\n      400: '#2ED3B7',\n      500: '#15B79E',\n      600: '#0E9384',\n      700: '#107569',\n      800: '#125D56',\n      900: '#134E48',\n    },\n    pink: {\n      25: '#fdf2f8',\n      50: '#fce7f3',\n      100: '#fbcfe8',\n      200: '#f9a8d4',\n      300: '#f472b6',\n      400: '#ec4899',\n      500: '#db2777',\n      600: '#be185d',\n      700: '#9d174d',\n      800: '#831843',\n      900: '#500724',\n    },\n    cyan: {\n      25: '#ecfeff',\n      50: '#cffafe',\n      100: '#a5f3fc',\n      200: '#67e8f9',\n      300: '#22d3ee',\n      400: '#06b6d4',\n      500: '#0891b2',\n      600: '#0e7490',\n      700: '#155e75',\n      800: '#164e63',\n      900: '#083344',\n    },\n  },\n  alpha: {\n    100: 'ff',\n    90: 'e5',\n    80: 'cc',\n    70: 'b3',\n    60: '99',\n    50: '80',\n    40: '66',\n    30: '4d',\n    20: '33',\n    10: '1a',\n    0: '00',\n  },\n  font: {\n    size: {\n      '2xs': 'calc(var(--tsrd-font-size) * 0.625)',\n      xs: 'calc(var(--tsrd-font-size) * 0.75)',\n      sm: 'calc(var(--tsrd-font-size) * 0.875)',\n      md: 'var(--tsrd-font-size)',\n      lg: 'calc(var(--tsrd-font-size) * 1.125)',\n      xl: 'calc(var(--tsrd-font-size) * 1.25)',\n      '2xl': 'calc(var(--tsrd-font-size) * 1.5)',\n      '3xl': 'calc(var(--tsrd-font-size) * 1.875)',\n      '4xl': 'calc(var(--tsrd-font-size) * 2.25)',\n      '5xl': 'calc(var(--tsrd-font-size) * 3)',\n      '6xl': 'calc(var(--tsrd-font-size) * 3.75)',\n      '7xl': 'calc(var(--tsrd-font-size) * 4.5)',\n      '8xl': 'calc(var(--tsrd-font-size) * 6)',\n      '9xl': 'calc(var(--tsrd-font-size) * 8)',\n    },\n    lineHeight: {\n      '3xs': 'calc(var(--tsrd-font-size) * 0.75)',\n      '2xs': 'calc(var(--tsrd-font-size) * 0.875)',\n      xs: 'calc(var(--tsrd-font-size) * 1)',\n      sm: 'calc(var(--tsrd-font-size) * 1.25)',\n      md: 'calc(var(--tsrd-font-size) * 1.5)',\n      lg: 'calc(var(--tsrd-font-size) * 1.75)',\n      xl: 'calc(var(--tsrd-font-size) * 2)',\n      '2xl': 'calc(var(--tsrd-font-size) * 2.25)',\n      '3xl': 'calc(var(--tsrd-font-size) * 2.5)',\n      '4xl': 'calc(var(--tsrd-font-size) * 2.75)',\n      '5xl': 'calc(var(--tsrd-font-size) * 3)',\n      '6xl': 'calc(var(--tsrd-font-size) * 3.25)',\n      '7xl': 'calc(var(--tsrd-font-size) * 3.5)',\n      '8xl': 'calc(var(--tsrd-font-size) * 3.75)',\n      '9xl': 'calc(var(--tsrd-font-size) * 4)',\n    },\n    weight: {\n      thin: '100',\n      extralight: '200',\n      light: '300',\n      normal: '400',\n      medium: '500',\n      semibold: '600',\n      bold: '700',\n      extrabold: '800',\n      black: '900',\n    },\n    fontFamily: {\n      sans: 'ui-sans-serif, Inter, system-ui, sans-serif, sans-serif',\n      mono: `ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace`,\n    },\n  },\n  breakpoints: {\n    xs: '320px',\n    sm: '640px',\n    md: '768px',\n    lg: '1024px',\n    xl: '1280px',\n    '2xl': '1536px',\n  },\n  border: {\n    radius: {\n      none: '0px',\n      xs: 'calc(var(--tsrd-font-size) * 0.125)',\n      sm: 'calc(var(--tsrd-font-size) * 0.25)',\n      md: 'calc(var(--tsrd-font-size) * 0.375)',\n      lg: 'calc(var(--tsrd-font-size) * 0.5)',\n      xl: 'calc(var(--tsrd-font-size) * 0.75)',\n      '2xl': 'calc(var(--tsrd-font-size) * 1)',\n      '3xl': 'calc(var(--tsrd-font-size) * 1.5)',\n      full: '9999px',\n    },\n  },\n  size: {\n    0: '0px',\n    0.25: 'calc(var(--tsrd-font-size) * 0.0625)',\n    0.5: 'calc(var(--tsrd-font-size) * 0.125)',\n    1: 'calc(var(--tsrd-font-size) * 0.25)',\n    1.5: 'calc(var(--tsrd-font-size) * 0.375)',\n    2: 'calc(var(--tsrd-font-size) * 0.5)',\n    2.5: 'calc(var(--tsrd-font-size) * 0.625)',\n    3: 'calc(var(--tsrd-font-size) * 0.75)',\n    3.5: 'calc(var(--tsrd-font-size) * 0.875)',\n    4: 'calc(var(--tsrd-font-size) * 1)',\n    4.5: 'calc(var(--tsrd-font-size) * 1.125)',\n    5: 'calc(var(--tsrd-font-size) * 1.25)',\n    5.5: 'calc(var(--tsrd-font-size) * 1.375)',\n    6: 'calc(var(--tsrd-font-size) * 1.5)',\n    6.5: 'calc(var(--tsrd-font-size) * 1.625)',\n    7: 'calc(var(--tsrd-font-size) * 1.75)',\n    8: 'calc(var(--tsrd-font-size) * 2)',\n    9: 'calc(var(--tsrd-font-size) * 2.25)',\n    10: 'calc(var(--tsrd-font-size) * 2.5)',\n    11: 'calc(var(--tsrd-font-size) * 2.75)',\n    12: 'calc(var(--tsrd-font-size) * 3)',\n    14: 'calc(var(--tsrd-font-size) * 3.5)',\n    16: 'calc(var(--tsrd-font-size) * 4)',\n    20: 'calc(var(--tsrd-font-size) * 5)',\n    24: 'calc(var(--tsrd-font-size) * 6)',\n    28: 'calc(var(--tsrd-font-size) * 7)',\n    32: 'calc(var(--tsrd-font-size) * 8)',\n    36: 'calc(var(--tsrd-font-size) * 9)',\n    40: 'calc(var(--tsrd-font-size) * 10)',\n    44: 'calc(var(--tsrd-font-size) * 11)',\n    48: 'calc(var(--tsrd-font-size) * 12)',\n    52: 'calc(var(--tsrd-font-size) * 13)',\n    56: 'calc(var(--tsrd-font-size) * 14)',\n    60: 'calc(var(--tsrd-font-size) * 15)',\n    64: 'calc(var(--tsrd-font-size) * 16)',\n    72: 'calc(var(--tsrd-font-size) * 18)',\n    80: 'calc(var(--tsrd-font-size) * 20)',\n    96: 'calc(var(--tsrd-font-size) * 24)',\n  },\n  shadow: {\n    xs: (_: string = 'rgb(0 0 0 / 0.1)') =>\n      `0 1px 2px 0 rgb(0 0 0 / 0.05)` as const,\n    sm: (color: string = 'rgb(0 0 0 / 0.1)') =>\n      `0 1px 3px 0 ${color}, 0 1px 2px -1px ${color}` as const,\n    md: (color: string = 'rgb(0 0 0 / 0.1)') =>\n      `0 4px 6px -1px ${color}, 0 2px 4px -2px ${color}` as const,\n    lg: (color: string = 'rgb(0 0 0 / 0.1)') =>\n      `0 10px 15px -3px ${color}, 0 4px 6px -4px ${color}` as const,\n    xl: (color: string = 'rgb(0 0 0 / 0.1)') =>\n      `0 20px 25px -5px ${color}, 0 8px 10px -6px ${color}` as const,\n    '2xl': (color: string = 'rgb(0 0 0 / 0.25)') =>\n      `0 25px 50px -12px ${color}` as const,\n    inner: (color: string = 'rgb(0 0 0 / 0.05)') =>\n      `inset 0 2px 4px 0 ${color}` as const,\n    none: () => `none` as const,\n  },\n  zIndices: {\n    hide: -1,\n    auto: 'auto',\n    base: 0,\n    docked: 10,\n    dropdown: 1000,\n    sticky: 1100,\n    banner: 1200,\n    overlay: 1300,\n    modal: 1400,\n    popover: 1500,\n    skipLink: 1600,\n    toast: 1700,\n    tooltip: 1800,\n  },\n} as const\n","import * as goober from 'goober'\nimport { createSignal, useContext } from 'solid-js'\nimport { tokens } from './tokens'\nimport { ShadowDomTargetContext } from './context'\nimport type { Accessor } from 'solid-js'\n\nconst stylesFactory = (shadowDOMTarget?: ShadowRoot) => {\n  const { colors, font, size, alpha, shadow, border } = tokens\n  const { fontFamily, lineHeight, size: fontSize } = font\n  const css = shadowDOMTarget\n    ? goober.css.bind({ target: shadowDOMTarget })\n    : goober.css\n\n  return {\n    devtoolsPanelContainer: css`\n      direction: ltr;\n      position: fixed;\n      bottom: 0;\n      right: 0;\n      z-index: 99999;\n      width: 100%;\n      max-height: 90%;\n      border-top: 1px solid ${colors.gray[700]};\n      transform-origin: top;\n    `,\n    devtoolsPanelContainerVisibility: (isOpen: boolean) => {\n      return css`\n        visibility: ${isOpen ? 'visible' : 'hidden'};\n      `\n    },\n    devtoolsPanelContainerResizing: (isResizing: Accessor<boolean>) => {\n      if (isResizing()) {\n        return css`\n          transition: none;\n        `\n      }\n\n      return css`\n        transition: all 0.4s ease;\n      `\n    },\n    devtoolsPanelContainerAnimation: (isOpen: boolean, height: number) => {\n      if (isOpen) {\n        return css`\n          pointer-events: auto;\n          transform: translateY(0);\n        `\n      }\n      return css`\n        pointer-events: none;\n        transform: translateY(${height}px);\n      `\n    },\n    logo: css`\n      cursor: pointer;\n      display: flex;\n      flex-direction: column;\n      background-color: transparent;\n      border: none;\n      font-family: ${fontFamily.sans};\n      gap: ${tokens.size[0.5]};\n      padding: 0px;\n      &:hover {\n        opacity: 0.7;\n      }\n      &:focus-visible {\n        outline-offset: 4px;\n        border-radius: ${border.radius.xs};\n        outline: 2px solid ${colors.blue[800]};\n      }\n    `,\n    tanstackLogo: css`\n      font-size: ${font.size.md};\n      font-weight: ${font.weight.bold};\n      line-height: ${font.lineHeight.xs};\n      white-space: nowrap;\n      color: ${colors.gray[300]};\n    `,\n    routerLogo: css`\n      font-weight: ${font.weight.semibold};\n      font-size: ${font.size.xs};\n      background: linear-gradient(to right, #84cc16, #10b981);\n      background-clip: text;\n      -webkit-background-clip: text;\n      line-height: 1;\n      -webkit-text-fill-color: transparent;\n      white-space: nowrap;\n    `,\n    devtoolsPanel: css`\n      display: flex;\n      font-size: ${fontSize.sm};\n      font-family: ${fontFamily.sans};\n      background-color: ${colors.darkGray[700]};\n      color: ${colors.gray[300]};\n\n      @media (max-width: 700px) {\n        flex-direction: column;\n      }\n      @media (max-width: 600px) {\n        font-size: ${fontSize.xs};\n      }\n    `,\n    dragHandle: css`\n      position: absolute;\n      left: 0;\n      top: 0;\n      width: 100%;\n      height: 4px;\n      cursor: row-resize;\n      z-index: 100000;\n      &:hover {\n        background-color: ${colors.purple[400]}${alpha[90]};\n      }\n    `,\n    firstContainer: css`\n      flex: 1 1 500px;\n      min-height: 40%;\n      max-height: 100%;\n      overflow: auto;\n      border-right: 1px solid ${colors.gray[700]};\n      display: flex;\n      flex-direction: column;\n    `,\n    routerExplorerContainer: css`\n      overflow-y: auto;\n      flex: 1;\n    `,\n    routerExplorer: css`\n      padding: ${tokens.size[2]};\n    `,\n    row: css`\n      display: flex;\n      align-items: center;\n      padding: ${tokens.size[2]} ${tokens.size[2.5]};\n      gap: ${tokens.size[2.5]};\n      border-bottom: ${colors.darkGray[500]} 1px solid;\n      align-items: center;\n    `,\n    detailsHeader: css`\n      font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;\n      position: sticky;\n      top: 0;\n      z-index: 2;\n      background-color: ${colors.darkGray[600]};\n      padding: 0px ${tokens.size[2]};\n      font-weight: ${font.weight.medium};\n      font-size: ${font.size.xs};\n      min-height: ${tokens.size[8]};\n      line-height: ${font.lineHeight.xs};\n      text-align: left;\n      display: flex;\n      align-items: center;\n    `,\n    maskedBadge: css`\n      background: ${colors.yellow[900]}${alpha[70]};\n      color: ${colors.yellow[300]};\n      display: inline-block;\n      padding: ${tokens.size[0]} ${tokens.size[2.5]};\n      border-radius: ${border.radius.full};\n      font-size: ${font.size.xs};\n      font-weight: ${font.weight.normal};\n      border: 1px solid ${colors.yellow[300]};\n    `,\n    maskedLocation: css`\n      color: ${colors.yellow[300]};\n    `,\n    detailsContent: css`\n      padding: ${tokens.size[1.5]} ${tokens.size[2]};\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      font-size: ${font.size.xs};\n    `,\n    routeMatchesToggle: css`\n      display: flex;\n      align-items: center;\n      border: 1px solid ${colors.gray[500]};\n      border-radius: ${border.radius.sm};\n      overflow: hidden;\n    `,\n    routeMatchesToggleBtn: (active: boolean, showBorder: boolean) => {\n      const base = css`\n        appearance: none;\n        border: none;\n        font-size: 12px;\n        padding: 4px 8px;\n        background: transparent;\n        cursor: pointer;\n        font-family: ${fontFamily.sans};\n        font-weight: ${font.weight.medium};\n      `\n      const classes = [base]\n\n      if (active) {\n        const activeStyles = css`\n          background: ${colors.darkGray[400]};\n          color: ${colors.gray[300]};\n        `\n        classes.push(activeStyles)\n      } else {\n        const inactiveStyles = css`\n          color: ${colors.gray[500]};\n          background: ${colors.darkGray[800]}${alpha[20]};\n        `\n        classes.push(inactiveStyles)\n      }\n\n      if (showBorder) {\n        classes.push(css`\n          border-right: 1px solid ${tokens.colors.gray[500]};\n        `)\n      }\n\n      return classes\n    },\n    detailsHeaderInfo: css`\n      flex: 1;\n      justify-content: flex-end;\n      display: flex;\n      align-items: center;\n      font-weight: ${font.weight.normal};\n      color: ${colors.gray[400]};\n    `,\n    matchRow: (active: boolean) => {\n      const base = css`\n        display: flex;\n        border-bottom: 1px solid ${colors.darkGray[400]};\n        cursor: pointer;\n        align-items: center;\n        padding: ${size[1]} ${size[2]};\n        gap: ${size[2]};\n        font-size: ${fontSize.xs};\n        color: ${colors.gray[300]};\n      `\n      const classes = [base]\n\n      if (active) {\n        const activeStyles = css`\n          background: ${colors.darkGray[500]};\n        `\n        classes.push(activeStyles)\n      }\n\n      return classes\n    },\n    matchIndicator: (\n      color: 'green' | 'red' | 'yellow' | 'gray' | 'blue' | 'purple',\n    ) => {\n      const base = css`\n        flex: 0 0 auto;\n        width: ${size[3]};\n        height: ${size[3]};\n        background: ${colors[color][900]};\n        border: 1px solid ${colors[color][500]};\n        border-radius: ${border.radius.full};\n        transition: all 0.25s ease-out;\n        box-sizing: border-box;\n      `\n      const classes = [base]\n\n      if (color === 'gray') {\n        const grayStyles = css`\n          background: ${colors.gray[700]};\n          border-color: ${colors.gray[400]};\n        `\n        classes.push(grayStyles)\n      }\n\n      return classes\n    },\n    matchID: css`\n      flex: 1;\n      line-height: ${lineHeight['xs']};\n    `,\n    ageTicker: (showWarning: boolean) => {\n      const base = css`\n        display: flex;\n        gap: ${size[1]};\n        font-size: ${fontSize.xs};\n        color: ${colors.gray[400]};\n        font-variant-numeric: tabular-nums;\n        line-height: ${lineHeight['xs']};\n      `\n\n      const classes = [base]\n\n      if (showWarning) {\n        const warningStyles = css`\n          color: ${colors.yellow[400]};\n        `\n        classes.push(warningStyles)\n      }\n\n      return classes\n    },\n    secondContainer: css`\n      flex: 1 1 500px;\n      min-height: 40%;\n      max-height: 100%;\n      overflow: auto;\n      border-right: 1px solid ${colors.gray[700]};\n      display: flex;\n      flex-direction: column;\n    `,\n    thirdContainer: css`\n      flex: 1 1 500px;\n      overflow: auto;\n      display: flex;\n      flex-direction: column;\n      height: 100%;\n      border-right: 1px solid ${colors.gray[700]};\n\n      @media (max-width: 700px) {\n        border-top: 2px solid ${colors.gray[700]};\n      }\n    `,\n    fourthContainer: css`\n      flex: 1 1 500px;\n      min-height: 40%;\n      max-height: 100%;\n      overflow: auto;\n      display: flex;\n      flex-direction: column;\n    `,\n    routesContainer: css`\n      overflow-x: auto;\n      overflow-y: visible;\n    `,\n    routesRowContainer: (active: boolean, isMatch: boolean) => {\n      const base = css`\n        display: flex;\n        border-bottom: 1px solid ${colors.darkGray[400]};\n        align-items: center;\n        padding: ${size[1]} ${size[2]};\n        gap: ${size[2]};\n        font-size: ${fontSize.xs};\n        color: ${colors.gray[300]};\n        cursor: ${isMatch ? 'pointer' : 'default'};\n        line-height: ${lineHeight['xs']};\n      `\n      const classes = [base]\n\n      if (active) {\n        const activeStyles = css`\n          background: ${colors.darkGray[500]};\n        `\n        classes.push(activeStyles)\n      }\n\n      return classes\n    },\n    routesRow: (isMatch: boolean) => {\n      const base = css`\n        flex: 1 0 auto;\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n        font-size: ${fontSize.xs};\n        line-height: ${lineHeight['xs']};\n      `\n\n      const classes = [base]\n\n      if (!isMatch) {\n        const matchStyles = css`\n          color: ${colors.gray[400]};\n        `\n        classes.push(matchStyles)\n      }\n\n      return classes\n    },\n    routesRowInner: css`\n      display: 'flex';\n      align-items: 'center';\n      flex-grow: 1;\n      min-width: 0;\n    `,\n    routeParamInfo: css`\n      color: ${colors.gray[400]};\n      font-size: ${fontSize.xs};\n      line-height: ${lineHeight['xs']};\n    `,\n    nestedRouteRow: (isRoot: boolean) => {\n      const base = css`\n        margin-left: ${isRoot ? 0 : size[3.5]};\n        border-left: ${isRoot ? '' : `solid 1px ${colors.gray[700]}`};\n      `\n      return base\n    },\n    code: css`\n      font-size: ${fontSize.xs};\n      line-height: ${lineHeight['xs']};\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    `,\n    matchesContainer: css`\n      flex: 1 1 auto;\n      overflow-y: auto;\n    `,\n    cachedMatchesContainer: css`\n      flex: 1 1 auto;\n      overflow-y: auto;\n      max-height: 50%;\n    `,\n    historyContainer: css`\n      display: flex;\n      flex: 1 1 auto;\n      overflow-y: auto;\n      max-height: 50%;\n    `,\n    historyOverflowContainer: css`\n      padding: ${size[1]} ${size[2]};\n      font-size: ${tokens.font.size.xs};\n    `,\n    maskedBadgeContainer: css`\n      flex: 1;\n      justify-content: flex-end;\n      display: flex;\n    `,\n    matchDetails: css`\n      display: flex;\n      flex-direction: column;\n      padding: ${tokens.size[2]};\n      font-size: ${tokens.font.size.xs};\n      color: ${tokens.colors.gray[300]};\n      line-height: ${tokens.font.lineHeight.sm};\n    `,\n    matchStatus: (\n      status: 'pending' | 'success' | 'error' | 'notFound',\n      isFetching: false | 'beforeLoad' | 'loader',\n    ) => {\n      const colorMap = {\n        pending: 'yellow',\n        success: 'green',\n        error: 'red',\n        notFound: 'purple',\n      } as const\n\n      const color =\n        isFetching && status === 'success'\n          ? isFetching === 'beforeLoad'\n            ? 'purple'\n            : 'blue'\n          : colorMap[status]\n\n      return css`\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        height: 40px;\n        border-radius: ${tokens.border.radius.sm};\n        font-weight: ${tokens.font.weight.normal};\n        background-color: ${tokens.colors[color][900]}${tokens.alpha[90]};\n        color: ${tokens.colors[color][300]};\n        border: 1px solid ${tokens.colors[color][600]};\n        margin-bottom: ${tokens.size[2]};\n        transition: all 0.25s ease-out;\n      `\n    },\n    matchDetailsInfo: css`\n      display: flex;\n      justify-content: flex-end;\n      flex: 1;\n    `,\n    matchDetailsInfoLabel: css`\n      display: flex;\n    `,\n    mainCloseBtn: css`\n      background: ${colors.darkGray[700]};\n      padding: ${size[1]} ${size[2]} ${size[1]} ${size[1.5]};\n      border-radius: ${border.radius.md};\n      position: fixed;\n      z-index: 99999;\n      display: inline-flex;\n      width: fit-content;\n      cursor: pointer;\n      appearance: none;\n      border: 0;\n      gap: 8px;\n      align-items: center;\n      border: 1px solid ${colors.gray[500]};\n      font-size: ${font.size.xs};\n      cursor: pointer;\n      transition: all 0.25s ease-out;\n\n      &:hover {\n        background: ${colors.darkGray[500]};\n      }\n    `,\n    mainCloseBtnPosition: (\n      position: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right',\n    ) => {\n      const base = css`\n        ${position === 'top-left' ? `top: ${size[2]}; left: ${size[2]};` : ''}\n        ${position === 'top-right' ? `top: ${size[2]}; right: ${size[2]};` : ''}\n        ${position === 'bottom-left'\n          ? `bottom: ${size[2]}; left: ${size[2]};`\n          : ''}\n        ${position === 'bottom-right'\n          ? `bottom: ${size[2]}; right: ${size[2]};`\n          : ''}\n      `\n      return base\n    },\n    mainCloseBtnAnimation: (isOpen: boolean) => {\n      if (!isOpen) {\n        return css`\n          opacity: 1;\n          pointer-events: auto;\n          visibility: visible;\n        `\n      }\n      return css`\n        opacity: 0;\n        pointer-events: none;\n        visibility: hidden;\n      `\n    },\n    routerLogoCloseButton: css`\n      font-weight: ${font.weight.semibold};\n      font-size: ${font.size.xs};\n      background: linear-gradient(to right, #98f30c, #00f4a3);\n      background-clip: text;\n      -webkit-background-clip: text;\n      line-height: 1;\n      -webkit-text-fill-color: transparent;\n      white-space: nowrap;\n    `,\n    mainCloseBtnDivider: css`\n      width: 1px;\n      background: ${tokens.colors.gray[600]};\n      height: 100%;\n      border-radius: 999999px;\n      color: transparent;\n    `,\n    mainCloseBtnIconContainer: css`\n      position: relative;\n      width: ${size[5]};\n      height: ${size[5]};\n      background: pink;\n      border-radius: 999999px;\n      overflow: hidden;\n    `,\n    mainCloseBtnIconOuter: css`\n      width: ${size[5]};\n      height: ${size[5]};\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      transform: translate(-50%, -50%);\n      filter: blur(3px) saturate(1.8) contrast(2);\n    `,\n    mainCloseBtnIconInner: css`\n      width: ${size[4]};\n      height: ${size[4]};\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      transform: translate(-50%, -50%);\n    `,\n    panelCloseBtn: css`\n      position: absolute;\n      cursor: pointer;\n      z-index: 100001;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      outline: none;\n      background-color: ${colors.darkGray[700]};\n      &:hover {\n        background-color: ${colors.darkGray[500]};\n      }\n\n      top: 0;\n      right: ${size[2]};\n      transform: translate(0, -100%);\n      border-right: ${colors.darkGray[300]} 1px solid;\n      border-left: ${colors.darkGray[300]} 1px solid;\n      border-top: ${colors.darkGray[300]} 1px solid;\n      border-bottom: none;\n      border-radius: ${border.radius.sm} ${border.radius.sm} 0px 0px;\n      padding: ${size[1]} ${size[1.5]} ${size[0.5]} ${size[1.5]};\n\n      &::after {\n        content: ' ';\n        position: absolute;\n        top: 100%;\n        left: -${size[2.5]};\n        height: ${size[1.5]};\n        width: calc(100% + ${size[5]});\n      }\n    `,\n    panelCloseBtnIcon: css`\n      color: ${colors.gray[400]};\n      width: ${size[2]};\n      height: ${size[2]};\n    `,\n    navigateButton: css`\n      background: none;\n      border: none;\n      padding: 0 0 0 4px;\n      margin: 0;\n      color: ${colors.gray[400]};\n      font-size: ${fontSize.md};\n      cursor: pointer;\n      line-height: 1;\n      vertical-align: middle;\n      margin-right: 0.5ch;\n      flex-shrink: 0;\n      &:hover {\n        color: ${colors.blue[300]};\n      }\n    `,\n  }\n}\n\nexport function useStyles() {\n  const shadowDomTarget = useContext(ShadowDomTargetContext)\n  const [_styles] = createSignal(stylesFactory(shadowDomTarget))\n  return _styles\n}\n","import { createEffect, createSignal } from 'solid-js'\nimport type { Accessor } from 'solid-js'\n\nconst getItem = (key: string): unknown => {\n  try {\n    const itemValue = localStorage.getItem(key)\n    if (typeof itemValue === 'string') {\n      return JSON.parse(itemValue)\n    }\n    return undefined\n  } catch {\n    return undefined\n  }\n}\n\nexport default function useLocalStorage<T>(\n  key: string,\n  defaultValue: T | undefined,\n): [Accessor<T | undefined>, (newVal: T | ((prevVal: T) => T)) => void] {\n  const [value, setValue] = createSignal<T>()\n\n  createEffect(() => {\n    const initialValue = getItem(key) as T | undefined\n\n    if (typeof initialValue === 'undefined' || initialValue === null) {\n      setValue(\n        typeof defaultValue === 'function' ? defaultValue() : defaultValue,\n      )\n    } else {\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      setValue(initialValue)\n    }\n  })\n\n  const setter = (updater: any) => {\n    setValue((old) => {\n      let newVal = updater\n\n      if (typeof updater == 'function') {\n        newVal = updater(old)\n      }\n      try {\n        localStorage.setItem(key, JSON.stringify(newVal))\n      } catch {}\n\n      return newVal\n    })\n  }\n\n  return [value, setter]\n}\n","import { Dynamic } from 'solid-js/web'\nimport { createEffect, createRenderEffect, createSignal } from 'solid-js'\nimport { useTheme } from './theme'\nimport useMediaQuery from './useMediaQuery'\nimport type { AnyRoute, AnyRouteMatch } from '@tanstack/router-core'\n\nimport type { Theme } from './theme'\nimport type { JSX } from 'solid-js'\n\nexport const isServer = typeof window === 'undefined'\n\ntype StyledComponent<T> = T extends 'button'\n  ? JSX.ButtonHTMLAttributes<HTMLButtonElement>\n  : T extends 'input'\n    ? JSX.InputHTMLAttributes<HTMLInputElement>\n    : T extends 'select'\n      ? JSX.SelectHTMLAttributes<HTMLSelectElement>\n      : T extends keyof HTMLElementTagNameMap\n        ? JSX.HTMLAttributes<HTMLElementTagNameMap[T]>\n        : never\n\nexport function getStatusColor(match: AnyRouteMatch) {\n  const colorMap = {\n    pending: 'yellow',\n    success: 'green',\n    error: 'red',\n    notFound: 'purple',\n  } as const\n\n  return match.isFetching && match.status === 'success'\n    ? match.isFetching === 'beforeLoad'\n      ? 'purple'\n      : 'blue'\n    : colorMap[match.status]\n}\n\nexport function getRouteStatusColor(\n  matches: Array<AnyRouteMatch>,\n  route: AnyRoute,\n) {\n  const found = matches.find((d) => d.routeId === route.id)\n  if (!found) return 'gray'\n  return getStatusColor(found)\n}\n\ntype Styles =\n  | JSX.CSSProperties\n  | ((props: Record<string, any>, theme: Theme) => JSX.CSSProperties)\n\nexport function styled<T extends keyof HTMLElementTagNameMap>(\n  type: T,\n  newStyles: Styles,\n  queries: Record<string, Styles> = {},\n) {\n  return ({\n    ref,\n    style,\n    ...rest\n  }: StyledComponent<T> & {\n    ref?: HTMLElementTagNameMap[T] | undefined\n  }) => {\n    const theme = useTheme()\n\n    const mediaStyles = Object.entries(queries).reduce(\n      (current, [key, value]) => {\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n        return useMediaQuery(key)\n          ? {\n              ...current,\n              ...(typeof value === 'function' ? value(rest, theme) : value),\n            }\n          : current\n      },\n      {},\n    )\n\n    const baseStyles =\n      typeof newStyles === 'function' ? newStyles(rest, theme) : newStyles\n\n    // Handle style being either a string or an object\n    const combinedStyles =\n      typeof style === 'string'\n        ? { ...baseStyles, ...mediaStyles, cssText: style }\n        : { ...baseStyles, ...style, ...mediaStyles }\n\n    return (\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore\n      <Dynamic component={type} {...rest} style={combinedStyles} ref={ref} />\n    )\n  }\n}\n\nexport function useIsMounted() {\n  const [isMounted, setIsMounted] = createSignal(false)\n\n  const effect = isServer ? createEffect : createRenderEffect\n\n  effect(() => {\n    setIsMounted(true)\n  })\n\n  return isMounted\n}\n\n// Symbols for RSC detection\nconst SERVER_COMPONENT_STREAM = Symbol.for('tanstack.rsc.stream')\nconst RENDERABLE_RSC = Symbol.for('tanstack.rsc.renderable')\nconst RSC_SLOT_USAGES = Symbol.for('tanstack.rsc.slotUsages')\n\nexport type RscSlotUsageEvent = {\n  slot: string\n  args?: Array<any>\n}\n\nfunction trimTrailingUndefined<T>(arr: Array<T>): Array<T> {\n  let end = arr.length\n  while (end > 0 && arr[end - 1] === undefined) end--\n  if (end === 0) return arr\n  return end === arr.length ? arr : arr.slice(0, end)\n}\n\nexport type ServerComponentType =\n  | 'compositeSource' // createCompositeComponent result (render via <CompositeComponent src={...} />)\n  | 'renderableValue' // renderServerComponent result (inline renderable value)\n  | null // not a server component\n\n/**\n * Checks if a value is any kind of server component\n */\nexport const isServerComponent = (value: unknown): boolean => {\n  return (\n    (typeof value === 'object' || typeof value === 'function') &&\n    value !== null &&\n    SERVER_COMPONENT_STREAM in value\n  )\n}\n\n/**\n * Gets the type of server component.\n * - RENDERABLE_RSC === true → renderable (from renderServerComponent)\n * - RENDERABLE_RSC === false or not present → composite (from createCompositeComponent)\n */\nexport const getServerComponentType = (value: unknown): ServerComponentType => {\n  if (!isServerComponent(value)) {\n    return null\n  }\n  const v = value as Record<symbol, unknown>\n  if (RENDERABLE_RSC in v && v[RENDERABLE_RSC] === true) {\n    return 'renderableValue'\n  }\n  // RENDERABLE_RSC is false or not present → composite\n  return 'compositeSource'\n}\n\n/**\n * Gets the slot names from a composite server component (dev only)\n */\nexport const getServerComponentSlots = (value: unknown): Array<string> => {\n  if (!isServerComponent(value)) {\n    return []\n  }\n\n  const v = value as Record<symbol, unknown>\n  const out: Array<string> = []\n  // Include any slot names observed via dev-only slot usage events\n  if (RSC_SLOT_USAGES in v) {\n    const usages = v[RSC_SLOT_USAGES]\n    if (Array.isArray(usages)) {\n      for (const evt of usages) {\n        const name = evt?.slot\n        if (typeof name === 'string' && !out.includes(name)) {\n          out.push(name)\n        }\n      }\n    }\n  }\n\n  return out\n}\n\nexport const getServerComponentSlotUsages = (\n  value: unknown,\n): Array<RscSlotUsageEvent> => {\n  if (!isServerComponent(value)) {\n    return []\n  }\n\n  const v = value as Record<symbol, unknown>\n  if (!(RSC_SLOT_USAGES in v)) return []\n  const usages = v[RSC_SLOT_USAGES]\n  if (!Array.isArray(usages)) return []\n\n  return usages.filter((d): d is RscSlotUsageEvent => {\n    return (\n      d &&\n      typeof d === 'object' &&\n      typeof d.slot === 'string' &&\n      (d.args === undefined || Array.isArray(d.args))\n    )\n  })\n}\n\nexport const getServerComponentSlotUsageSummary = (\n  value: unknown,\n): Record<string, { count: number; invocations: Array<Array<any>> }> => {\n  const usages = getServerComponentSlotUsages(value)\n  const out: Record<string, { count: number; invocations: Array<Array<any>> }> =\n    {}\n  for (const evt of usages) {\n    const args = trimTrailingUndefined(evt.args ?? [])\n    const prev =\n      out[evt.slot] ?? (out[evt.slot] = { count: 0, invocations: [] })\n    prev.count++\n    prev.invocations.push(args)\n  }\n  return out\n}\n\n/**\n * Displays a string regardless the type of the data\n * @param {unknown} value Value to be stringified\n */\nexport const displayValue = (value: unknown) => {\n  if (value === 'React element') return 'React element'\n  const componentType = getServerComponentType(value)\n  if (componentType === 'compositeSource') {\n    const slots = getServerComponentSlots(value)\n    if (slots.length > 0) {\n      return `RSC composite source (${slots.length} ${\n        slots.length === 1 ? 'slot' : 'slots'\n      })`\n    }\n    return 'RSC composite source'\n  }\n  if (componentType === 'renderableValue') {\n    return 'RSC renderable value'\n  }\n  const name = Object.getOwnPropertyNames(Object(value))\n  const newValue = typeof value === 'bigint' ? `${value.toString()}n` : value\n  try {\n    return JSON.stringify(newValue, name)\n  } catch {\n    return `unable to stringify`\n  }\n}\n\n/**\n * This hook is a safe useState version which schedules state updates in microtasks\n * to prevent updating a component state while React is rendering different components\n * or when the component is not mounted anymore.\n */\nexport function useSafeState<T>(initialState: T): [T, (value: T) => void] {\n  const isMounted = useIsMounted()\n  const [state, setState] = createSignal(initialState)\n\n  const safeSetState = (value: T) => {\n    scheduleMicrotask(() => {\n      if (isMounted()) {\n        // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n        // @ts-ignore\n        setState(value)\n      }\n    })\n  }\n\n  return [state(), safeSetState]\n}\n\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\nfunction scheduleMicrotask(callback: () => void) {\n  Promise.resolve()\n    .then(callback)\n    .catch((error) =>\n      setTimeout(() => {\n        throw error\n      }),\n    )\n}\n\nexport function multiSortBy<T>(\n  arr: Array<T>,\n  accessors: Array<(item: T) => any> = [(d) => d],\n): Array<T> {\n  return arr\n    .map((d, i) => [d, i] as const)\n    .sort(([a, ai], [b, bi]) => {\n      for (const accessor of accessors) {\n        const ao = accessor(a)\n        const bo = accessor(b)\n\n        if (typeof ao === 'undefined') {\n          if (typeof bo === 'undefined') {\n            continue\n          }\n          return 1\n        }\n\n        if (ao === bo) {\n          continue\n        }\n\n        return ao > bo ? 1 : -1\n      }\n\n      return ai - bi\n    })\n    .map(([d]) => d)\n}\n","/* eslint-disable @typescript-eslint/no-unnecessary-condition */\nimport { clsx as cx } from 'clsx'\nimport * as goober from 'goober'\nimport { createMemo, createSignal, useContext } from 'solid-js'\nimport { tokens } from './tokens'\nimport {\n  displayValue,\n  getServerComponentSlotUsageSummary,\n  getServerComponentSlots,\n  getServerComponentType,\n} from './utils'\nimport { ShadowDomTargetContext } from './context'\nimport type { Accessor, JSX } from 'solid-js'\n\ntype ExpanderProps = {\n  expanded: boolean\n  style?: JSX.CSSProperties\n}\n\nexport const Expander = ({ expanded, style: _style = {} }: ExpanderProps) => {\n  const styles = useStyles()\n  return (\n    <span class={styles().expander}>\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"12\"\n        height=\"12\"\n        fill=\"none\"\n        viewBox=\"0 0 24 24\"\n        class={cx(styles().expanderIcon(expanded))}\n      >\n        <path\n          stroke=\"currentColor\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\"\n          stroke-width=\"2\"\n          d=\"M9 18l6-6-6-6\"\n        ></path>\n      </svg>\n    </span>\n  )\n}\n\ntype Entry = {\n  label: string\n}\n\ntype RendererProps = {\n  handleEntry: HandleEntryFn\n  label?: JSX.Element\n  value: Accessor<unknown>\n  subEntries: Array<Entry>\n  subEntryPages: Array<Array<Entry>>\n  type: string\n  expanded: Accessor<boolean>\n  toggleExpanded: () => void\n  pageSize: number\n  filterSubEntries?: (subEntries: Array<Property>) => Array<Property>\n}\n\n/**\n * Chunk elements in the array by size\n *\n * when the array cannot be chunked evenly by size, the last chunk will be\n * filled with the remaining elements\n *\n * @example\n * chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']]\n */\nexport function chunkArray<T>(array: Array<T>, size: number): Array<Array<T>> {\n  if (size < 1) return []\n  let i = 0\n  const result: Array<Array<T>> = []\n  while (i < array.length) {\n    result.push(array.slice(i, i + size))\n    i = i + size\n  }\n  return result\n}\n\ntype HandleEntryFn = (entry: Entry) => JSX.Element\n\ntype ExplorerProps = Partial<RendererProps> & {\n  defaultExpanded?: true | Record<string, boolean>\n  value: Accessor<unknown>\n}\n\ntype Property = {\n  defaultExpanded?: boolean | Record<string, boolean>\n  label: string\n  value: unknown\n}\n\nfunction isIterable(x: any): x is Iterable<unknown> {\n  return Symbol.iterator in x\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n  if (!value || typeof value !== 'object') return false\n  const proto = Object.getPrototypeOf(value)\n  return proto === Object.prototype || proto === null\n}\n\nexport function Explorer({\n  value,\n  defaultExpanded,\n  pageSize = 100,\n  filterSubEntries,\n  ...rest\n}: ExplorerProps) {\n  const [expanded, setExpanded] = createSignal(Boolean(defaultExpanded))\n  const toggleExpanded = () => setExpanded((old) => !old)\n\n  const type = createMemo(() => typeof value())\n  const subEntries = createMemo(() => {\n    let entries: Array<Property> = []\n\n    const makeProperty = (sub: { label: string; value: unknown }): Property => {\n      const subDefaultExpanded =\n        defaultExpanded === true\n          ? { [sub.label]: true }\n          : defaultExpanded?.[sub.label]\n      return {\n        ...sub,\n        value: () => sub.value,\n        defaultExpanded: subDefaultExpanded,\n      }\n    }\n\n    if (\n      Array.isArray(value()) &&\n      (value() as Array<any>).length === 2 &&\n      (value() as Array<any>)[0] === 'React element' &&\n      isPlainObject((value() as Array<any>)[1])\n    ) {\n      // Special case: treat `[\"React element\", { ...meta }]` as sibling entries\n      // to avoid the meta object being rendered as a deeper nested tree.\n      const v = value() as ['React element', Record<string, unknown>]\n      entries = [\n        makeProperty({ label: '0', value: v[0] }),\n        ...Object.entries(v[1]).map(([key, val]) =>\n          makeProperty({ label: key, value: val }),\n        ),\n      ]\n    } else if (Array.isArray(value())) {\n      // any[]\n      entries = (value() as Array<any>).map((d, i) =>\n        makeProperty({\n          label: i.toString(),\n          value: d,\n        }),\n      )\n    } else if (\n      value() !== null &&\n      typeof value() === 'object' &&\n      isIterable(value()) &&\n      typeof (value() as Iterable<unknown>)[Symbol.iterator] === 'function'\n    ) {\n      // Iterable<unknown>\n      entries = Array.from(value() as Iterable<unknown>, (val, i) =>\n        makeProperty({\n          label: i.toString(),\n          value: val,\n        }),\n      )\n    } else if (typeof value() === 'object' && value() !== null) {\n      // object\n      entries = Object.entries(value() as object).map(([key, val]) =>\n        makeProperty({\n          label: key,\n          value: val,\n        }),\n      )\n    }\n\n    return filterSubEntries ? filterSubEntries(entries) : entries\n  })\n\n  const subEntryPages = createMemo(() => chunkArray(subEntries(), pageSize))\n\n  const [expandedPages, setExpandedPages] = createSignal<Array<number>>([])\n  const [valueSnapshot, setValueSnapshot] = createSignal(undefined)\n  const styles = useStyles()\n\n  const refreshValueSnapshot = () => {\n    setValueSnapshot((value() as () => any)())\n  }\n\n  const handleEntry = (entry: Entry) => (\n    <Explorer\n      value={value}\n      filterSubEntries={filterSubEntries}\n      {...rest}\n      {...entry}\n    />\n  )\n\n  const serverComponentType = createMemo(() => getServerComponentType(value()))\n  const serverComponentSlots = createMemo(() =>\n    getServerComponentSlots(value()),\n  )\n  const serverComponentSlotUsageSummary = createMemo(() =>\n    getServerComponentSlotUsageSummary(value()),\n  )\n\n  const isCompositeWithSlots = createMemo(\n    () =>\n      serverComponentType() === 'compositeSource' &&\n      serverComponentSlots().length > 0,\n  )\n\n  return (\n    <div class={styles().entry}>\n      {serverComponentType() !== null ? (\n        isCompositeWithSlots() ? (\n          <>\n            <button\n              class={styles().expandButton}\n              onClick={() => toggleExpanded()}\n            >\n              <Expander expanded={expanded() ?? false} />\n              <span>{rest.label}:</span>\n              <span class={styles().compositeComponent}>\n                {displayValue(value())}\n              </span>\n            </button>\n            {(expanded() ?? false) ? (\n              <div class={styles().rscMetaRow}>\n                <span class={styles().rscMetaLabel}>slots</span>\n                <div class={styles().subEntries}>\n                  {serverComponentSlots().map((name) => {\n                    const usage = serverComponentSlotUsageSummary()[name]\n                    if (!usage) return null\n                    return (\n                      <Explorer\n                        label={`${name}:`}\n                        value={() =>\n                          usage.invocations.map((args) =>\n                            args.length === 1 ? args[0] : args,\n                          )\n                        }\n                      />\n                    )\n                  })}\n                </div>\n              </div>\n            ) : null}\n          </>\n        ) : (\n          <>\n            <span>{rest.label}:</span>{' '}\n            <span\n              class={\n                serverComponentType() === 'compositeSource'\n                  ? styles().compositeComponent\n                  : styles().renderableComponent\n              }\n            >\n              {displayValue(value())}\n            </span>\n          </>\n        )\n      ) : subEntryPages().length ? (\n        <>\n          <button\n            class={styles().expandButton}\n            onClick={() => toggleExpanded()}\n          >\n            <Expander expanded={expanded() ?? false} />\n            {rest.label}\n            <span class={styles().info}>\n              {String(type).toLowerCase() === 'iterable' ? '(Iterable) ' : ''}\n              {subEntries().length} {subEntries().length > 1 ? `items` : `item`}\n            </span>\n          </button>\n          {(expanded() ?? false) ? (\n            subEntryPages().length === 1 ? (\n              <div class={styles().subEntries}>\n                {subEntries().map((entry, index) => handleEntry(entry))}\n              </div>\n            ) : (\n              <div class={styles().subEntries}>\n                {subEntryPages().map((entries, index) => {\n                  return (\n                    <div>\n                      <div class={styles().entry}>\n                        <button\n                          class={cx(styles().labelButton, 'labelButton')}\n                          onClick={() =>\n                            setExpandedPages((old) =>\n                              old.includes(index)\n                                ? old.filter((d) => d !== index)\n                                : [...old, index],\n                            )\n                          }\n                        >\n                          <Expander\n                            expanded={expandedPages().includes(index)}\n                          />{' '}\n                          [{index * pageSize} ...{' '}\n                          {index * pageSize + pageSize - 1}]\n                        </button>\n                        {expandedPages().includes(index) ? (\n                          <div class={styles().subEntries}>\n                            {entries.map((entry) => handleEntry(entry))}\n                          </div>\n                        ) : null}\n                      </div>\n                    </div>\n                  )\n                })}\n              </div>\n            )\n          ) : null}\n        </>\n      ) : type() === 'function' ? (\n        <>\n          <Explorer\n            label={\n              <button\n                onClick={refreshValueSnapshot}\n                class={styles().refreshValueBtn}\n              >\n                <span>{rest.label}</span> 🔄{' '}\n              </button>\n            }\n            value={valueSnapshot}\n            defaultExpanded={{}}\n          />\n        </>\n      ) : (\n        <>\n          <span>{rest.label}:</span>{' '}\n          <span class={styles().value}>{displayValue(value())}</span>\n        </>\n      )}\n    </div>\n  )\n}\n\nconst stylesFactory = (shadowDOMTarget?: ShadowRoot) => {\n  const { colors, font, size, border } = tokens\n  const { fontFamily, lineHeight, size: fontSize } = font\n  const css = shadowDOMTarget\n    ? goober.css.bind({ target: shadowDOMTarget })\n    : goober.css\n\n  return {\n    entry: css`\n      font-family: ${fontFamily.mono};\n      font-size: ${fontSize.xs};\n      line-height: ${lineHeight.sm};\n      outline: none;\n      word-break: break-word;\n    `,\n    labelButton: css`\n      cursor: pointer;\n      color: inherit;\n      font: inherit;\n      outline: inherit;\n      background: transparent;\n      border: none;\n      padding: 0;\n    `,\n    expander: css`\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      width: ${size[3]};\n      height: ${size[3]};\n      padding-left: 3px;\n      box-sizing: content-box;\n    `,\n    expanderIcon: (expanded: boolean) => {\n      if (expanded) {\n        return css`\n          transform: rotate(90deg);\n          transition: transform 0.1s ease;\n        `\n      }\n      return css`\n        transform: rotate(0deg);\n        transition: transform 0.1s ease;\n      `\n    },\n    expandButton: css`\n      display: flex;\n      gap: ${size[1]};\n      align-items: center;\n      cursor: pointer;\n      color: inherit;\n      font: inherit;\n      outline: inherit;\n      background: transparent;\n      border: none;\n      padding: 0;\n    `,\n    value: css`\n      color: ${colors.purple[400]};\n    `,\n    compositeComponent: css`\n      display: inline-flex;\n      align-items: center;\n      padding: 1px ${size[1]};\n      border-radius: ${border.radius.full};\n      border: 1px solid ${colors.darkGray[500]};\n      background: ${colors.darkGray[700]};\n      color: ${colors.cyan[300]};\n      font-style: normal;\n      font-weight: ${font.weight.medium};\n    `,\n    renderableComponent: css`\n      display: inline-flex;\n      align-items: center;\n      padding: 1px ${size[1]};\n      border-radius: ${border.radius.full};\n      border: 1px solid ${colors.darkGray[500]};\n      background: ${colors.darkGray[700]};\n      color: ${colors.teal[300]};\n      font-style: normal;\n      font-weight: ${font.weight.medium};\n    `,\n    rscMetaRow: css`\n      display: flex;\n      gap: ${size[1]};\n      align-items: flex-start;\n      margin-left: calc(${size[3]} + ${size[1]});\n      margin-top: ${size[0.5]};\n      flex-wrap: wrap;\n    `,\n    rscMetaLabel: css`\n      color: ${colors.gray[500]};\n      font-size: ${fontSize['2xs']};\n      text-transform: uppercase;\n      letter-spacing: 0.06em;\n      padding-top: 2px;\n    `,\n    rscChipRow: css`\n      display: flex;\n      gap: ${size[1]};\n      flex-wrap: wrap;\n    `,\n    rscChip: css`\n      display: inline-flex;\n      align-items: center;\n      gap: ${size[0.5]};\n      padding: 1px ${size[1]};\n      border-radius: ${border.radius.full};\n      border: 1px solid ${colors.darkGray[500]};\n      background: ${colors.darkGray[800]};\n      color: ${colors.gray[200]};\n      font-size: ${fontSize['2xs']};\n      line-height: ${lineHeight.xs};\n    `,\n    rscChipName: css`\n      color: ${colors.gray[100]};\n    `,\n    rscChipMeta: css`\n      color: ${colors.gray[400]};\n      font-size: ${fontSize['2xs']};\n    `,\n    subEntries: css`\n      margin-left: ${size[2]};\n      padding-left: ${size[2]};\n      border-left: 2px solid ${colors.darkGray[400]};\n    `,\n    info: css`\n      color: ${colors.gray[500]};\n      font-size: ${fontSize['2xs']};\n      padding-left: ${size[1]};\n    `,\n    refreshValueBtn: css`\n      appearance: none;\n      border: 0;\n      cursor: pointer;\n      background: transparent;\n      color: inherit;\n      padding: 0;\n      font-family: ${fontFamily.mono};\n      font-size: ${fontSize.xs};\n    `,\n  }\n}\n\nfunction useStyles() {\n  const shadowDomTarget = useContext(ShadowDomTargetContext)\n  const [_styles] = createSignal(stylesFactory(shadowDomTarget))\n  return _styles\n}\n","import { clsx as cx } from 'clsx'\nimport { useStyles } from './useStyles'\nimport type { AnyRoute, AnyRouteMatch, AnyRouter } from '@tanstack/router-core'\nimport type { Accessor } from 'solid-js'\n\nfunction formatTime(ms: number) {\n  const units = ['s', 'min', 'h', 'd']\n  const values = [ms / 1000, ms / 60000, ms / 3600000, ms / 86400000]\n\n  let chosenUnitIndex = 0\n  for (let i = 1; i < values.length; i++) {\n    if (values[i]! < 1) break\n    chosenUnitIndex = i\n  }\n\n  const formatter = new Intl.NumberFormat(navigator.language, {\n    compactDisplay: 'short',\n    notation: 'compact',\n    maximumFractionDigits: 0,\n  })\n\n  return formatter.format(values[chosenUnitIndex]!) + units[chosenUnitIndex]\n}\n\nexport function AgeTicker({\n  match,\n  router,\n}: {\n  match?: AnyRouteMatch\n  router: Accessor<AnyRouter>\n}) {\n  const styles = useStyles()\n\n  if (!match) {\n    return null\n  }\n\n  const route = (router().routesById as Record<string, AnyRoute>)[\n    match.routeId\n  ]!\n\n  if (!route.options.loader) {\n    return null\n  }\n\n  const age = Date.now() - match.updatedAt\n  const staleTime =\n    route.options.staleTime ?? router().options.defaultStaleTime ?? 0\n  const gcTime =\n    route.options.gcTime ?? router().options.defaultGcTime ?? 300_000\n\n  return (\n    <div class={cx(styles().ageTicker(age > staleTime))}>\n      <div>{formatTime(age)}</div>\n      <div>/</div>\n      <div>{formatTime(staleTime)}</div>\n      <div>/</div>\n      <div>{formatTime(gcTime)}</div>\n    </div>\n  )\n}\n","import { useStyles } from './useStyles'\nimport type { AnyRouter, NavigateOptions } from '@tanstack/router-core'\nimport type { Accessor } from 'solid-js'\n\ninterface Props extends NavigateOptions {\n  router: Accessor<AnyRouter>\n}\n\nexport function NavigateButton({ to, params, search, router }: Props) {\n  const styles = useStyles()\n\n  return (\n    <button\n      type=\"button\"\n      title={`Navigate to ${to}`}\n      class={styles().navigateButton}\n      onClick={(e) => {\n        e.stopPropagation()\n        router().navigate({ to, params, search })\n      }}\n    >\n      ➔\n    </button>\n  )\n}\n","import { clsx as cx } from 'clsx'\nimport {\n  hasKeys,\n  interpolatePath,\n  rootRouteId,\n  trimPath,\n} from '@tanstack/router-core'\nimport {\n  For,\n  Match,\n  Show,\n  Switch,\n  createEffect,\n  createMemo,\n  createSignal,\n  onCleanup,\n  untrack,\n} from 'solid-js'\nimport { useDevtoolsOnClose } from './context'\nimport { useStyles } from './useStyles'\nimport useLocalStorage from './useLocalStorage'\nimport { Explorer } from './Explorer'\nimport { getRouteStatusColor, getStatusColor, multiSortBy } from './utils'\nimport { AgeTicker } from './AgeTicker'\n// import type { DevtoolsPanelOptions } from './TanStackRouterDevtoolsPanel'\n\nimport { NavigateButton } from './NavigateButton'\nimport type {\n  AnyContext,\n  AnyRoute,\n  AnyRouteMatch,\n  AnyRouter,\n  FileRouteTypes,\n  MakeRouteMatchUnion,\n  Route,\n  RouterState,\n} from '@tanstack/router-core'\nimport type { Accessor, JSX } from 'solid-js'\n\nexport interface BaseDevtoolsPanelOptions {\n  /**\n   * The standard React style object used to style a component with inline styles\n   */\n  style?: Accessor<JSX.CSSProperties>\n  /**\n   * The standard React class property used to style a component with classes\n   */\n  className?: Accessor<string>\n  /**\n   * A boolean variable indicating whether the panel is open or closed\n   */\n  isOpen?: boolean\n  /**\n   * A function that toggles the open and close state of the panel\n   */\n  setIsOpen?: (isOpen: boolean) => void\n  /**\n   * Handles the opening and closing the devtools panel\n   */\n  handleDragStart?: (e: any) => void\n  /**\n   * A boolean variable indicating if the \"lite\" version of the library is being used\n   */\n  router: Accessor<AnyRouter>\n  routerState: Accessor<any>\n  /**\n   * Use this to attach the devtool's styles to specific element in the DOM.\n   */\n  shadowDOMTarget?: ShadowRoot\n}\n\nconst HISTORY_LIMIT = 15\n\nfunction Logo(props: any) {\n  const { className, ...rest } = props\n  const styles = useStyles()\n  return (\n    <button {...rest} class={cx(styles().logo, className ? className() : '')}>\n      <div class={styles().tanstackLogo}>TANSTACK</div>\n      <div class={styles().routerLogo}>TanStack Router v1</div>\n    </button>\n  )\n}\n\nfunction NavigateLink(props: {\n  class?: string\n  left?: JSX.Element\n  children?: JSX.Element\n  right?: JSX.Element\n}) {\n  return (\n    <div\n      class={props.class}\n      style={{\n        display: 'flex',\n        'align-items': 'center',\n        width: '100%',\n      }}\n    >\n      {props.left}\n      <div style={{ 'flex-grow': 1, 'min-width': 0 }}>{props.children}</div>\n      {props.right}\n    </div>\n  )\n}\n\nfunction RouteComp({\n  routerState,\n  pendingMatches,\n  router,\n  route,\n  isRoot,\n  activeId,\n  setActiveId,\n}: {\n  routerState: Accessor<\n    RouterState<\n      Route<\n        any,\n        any,\n        any,\n        '/',\n        '/',\n        string,\n        '__root__',\n        undefined,\n        {},\n        {},\n        AnyContext,\n        AnyContext,\n        {},\n        undefined,\n        any,\n        FileRouteTypes,\n        unknown,\n        undefined\n      >,\n      MakeRouteMatchUnion\n    >\n  >\n  pendingMatches: Accessor<Array<AnyRouteMatch>>\n  router: Accessor<AnyRouter>\n  route: AnyRoute\n  isRoot?: boolean\n  activeId: Accessor<string | undefined>\n  setActiveId: (id: string) => void\n}) {\n  const styles = useStyles()\n  const matches = createMemo(() =>\n    pendingMatches().length ? pendingMatches() : routerState().matches,\n  )\n  const match = createMemo(() =>\n    routerState().matches.find((d) => d.routeId === route.id),\n  )\n\n  const param = createMemo(() => {\n    try {\n      if (match()?.params) {\n        const p = match()?.params\n        const r: string = route.path || trimPath(route.id)\n        if (r.startsWith('$')) {\n          const trimmed = r.slice(1)\n\n          if (p[trimmed]) {\n            return `(${p[trimmed]})`\n          }\n        }\n      }\n      return ''\n    } catch (error) {\n      return ''\n    }\n  })\n\n  const navigationTarget = createMemo<string | undefined>(() => {\n    if (isRoot) return undefined // rootRouteId has no path\n    if (!route.path) return undefined // no path to navigate to\n\n    // flatten all params in the router state, into a single object\n    const allParams = Object.assign({}, ...matches().map((m) => m.params))\n\n    // interpolatePath is used by router-core to generate the `to`\n    // path for the navigate function in the router\n    const interpolated = interpolatePath({\n      path: route.fullPath,\n      params: allParams,\n      decoder: router().pathParamsDecoder,\n    })\n\n    // only if `interpolated` is not missing params, return the path since this\n    // means that all the params are present for a successful navigation\n    return !interpolated.isMissingParams\n      ? interpolated.interpolatedPath\n      : undefined\n  })\n\n  return (\n    <div>\n      <div\n        role=\"button\"\n        aria-label={`Open match details for ${route.id}`}\n        onClick={() => {\n          if (match()) {\n            setActiveId(activeId() === route.id ? '' : route.id)\n          }\n        }}\n        class={cx(\n          styles().routesRowContainer(route.id === activeId(), !!match()),\n        )}\n      >\n        <div\n          class={cx(\n            styles().matchIndicator(getRouteStatusColor(matches(), route)),\n          )}\n        />\n        <NavigateLink\n          class={cx(styles().routesRow(!!match()))}\n          left={\n            <Show when={navigationTarget()}>\n              {(navigate) => <NavigateButton to={navigate()} router={router} />}\n            </Show>\n          }\n          right={<AgeTicker match={match()} router={router} />}\n        >\n          <code class={styles().code}>\n            {isRoot ? rootRouteId : route.path || trimPath(route.id)}{' '}\n          </code>\n          <code class={styles().routeParamInfo}>{param()}</code>\n        </NavigateLink>\n      </div>\n      {route.children?.length ? (\n        <div class={styles().nestedRouteRow(!!isRoot)}>\n          {[...(route.children as Array<AnyRoute>)]\n            .sort((a, b) => {\n              return a.rank - b.rank\n            })\n            .map((r) => (\n              <RouteComp\n                routerState={routerState}\n                pendingMatches={pendingMatches}\n                router={router}\n                route={r}\n                activeId={activeId}\n                setActiveId={setActiveId}\n              />\n            ))}\n        </div>\n      ) : null}\n    </div>\n  )\n}\n\nexport const BaseTanStackRouterDevtoolsPanel =\n  function BaseTanStackRouterDevtoolsPanel({\n    ...props\n  }: BaseDevtoolsPanelOptions): JSX.Element {\n    const {\n      isOpen = true,\n      setIsOpen,\n      handleDragStart,\n      router,\n      routerState,\n      shadowDOMTarget,\n      ...panelProps\n    } = props\n\n    const { onCloseClick } = useDevtoolsOnClose()\n    const styles = useStyles()\n    const { className, style, ...otherPanelProps } = panelProps\n\n    // useStore(router.stores.__store)\n\n    const [currentTab, setCurrentTab] = useLocalStorage<\n      'routes' | 'matches' | 'history'\n    >('tanstackRouterDevtoolsActiveTab', 'routes')\n\n    const [activeId, setActiveId] = useLocalStorage(\n      'tanstackRouterDevtoolsActiveRouteId',\n      '',\n    )\n\n    const [history, setHistory] = createSignal<Array<AnyRouteMatch>>([])\n    const [hasHistoryOverflowed, setHasHistoryOverflowed] = createSignal(false)\n\n    const pendingMatches = () => {\n      const matches = routerState().matches\n      return matches.some((match: AnyRouteMatch) => match.status === 'pending')\n        ? matches\n        : []\n    }\n    let cache = router()._cache\n    let cacheMatches = [...cache.values()]\n    const [cachedMatches, setCachedMatches] = createSignal(cacheMatches)\n\n    createEffect(() => {\n      const refreshCache = () => {\n        const next = router()._cache\n        let valuesChanged = next.size !== cacheMatches.length\n        if (!valuesChanged) {\n          let index = 0\n          for (const match of next.values()) {\n            if (match !== cacheMatches[index++]) {\n              valuesChanged = true\n              break\n            }\n          }\n        }\n\n        if (next !== cache || valuesChanged) {\n          cache = next\n          cacheMatches = [...next.values()]\n          setCachedMatches(cacheMatches)\n        }\n      }\n      refreshCache()\n      const interval = setInterval(refreshCache, 500)\n      onCleanup(() => clearInterval(interval))\n    })\n\n    createEffect(() => {\n      const matches = routerState().matches\n      const currentMatch = matches[matches.length - 1]\n      if (!currentMatch) {\n        return\n      }\n      // Read history WITHOUT tracking it to avoid infinite loops\n      const historyUntracked = untrack(() => history())\n      const lastMatch = historyUntracked[0]\n      const sameLocation =\n        lastMatch &&\n        lastMatch.pathname === currentMatch.pathname &&\n        JSON.stringify(lastMatch.search ?? {}) ===\n          JSON.stringify(currentMatch.search ?? {})\n      if (!lastMatch || !sameLocation) {\n        if (historyUntracked.length >= HISTORY_LIMIT) {\n          setHasHistoryOverflowed(true)\n        }\n        setHistory((prev) => {\n          const newHistory = [currentMatch, ...prev]\n          // truncate to ensure we don't overflow too much the ui\n          newHistory.splice(HISTORY_LIMIT)\n          return newHistory\n        })\n      }\n    })\n\n    const activeMatch = createMemo(() => {\n      const matches = [\n        ...pendingMatches(),\n        ...routerState().matches,\n        ...cachedMatches(),\n      ]\n      return matches.find(\n        (d) => d.routeId === activeId() || d.id === activeId(),\n      )\n    })\n\n    const hasSearch = createMemo(() => hasKeys(routerState().location.search))\n\n    const explorerState = createMemo(() => {\n      return {\n        ...router(),\n        state: routerState(),\n      }\n    })\n\n    const routerExplorerValue = createMemo(() =>\n      Object.fromEntries(\n        multiSortBy(\n          Object.keys(explorerState()),\n          (\n            [\n              'state',\n              'routesById',\n              'routesByPath',\n              'options',\n              'manifest',\n            ] as const\n          ).map((d) => (dd) => dd !== d),\n        )\n          .map((key) => [key, (explorerState() as any)[key]])\n          .filter(\n            (d) =>\n              typeof d[1] !== 'function' &&\n              ![\n                'stores',\n                'basepath',\n                'subscribers',\n                '_scroll',\n                'tempLocationKey',\n                'latestLocation',\n                'routeTree',\n                'history',\n              ].includes(d[0]),\n          ),\n      ),\n    )\n    const activeMatchLoaderData = createMemo(() => activeMatch()?.loaderData)\n    const activeMatchValue = createMemo(() => activeMatch())\n    const locationSearchValue = createMemo(() => routerState().location.search)\n\n    return (\n      <div\n        class={cx(\n          styles().devtoolsPanel,\n          'TanStackRouterDevtoolsPanel',\n          className ? className() : '',\n        )}\n        style={style ? style() : ''}\n        {...otherPanelProps}\n      >\n        {handleDragStart ? (\n          <div class={styles().dragHandle} onMouseDown={handleDragStart}></div>\n        ) : null}\n        <button\n          class={styles().panelCloseBtn}\n          onClick={(e: any) => {\n            if (setIsOpen) {\n              setIsOpen(false)\n            }\n            onCloseClick(e)\n          }}\n        >\n          <svg\n            xmlns=\"http://www.w3.org/2000/svg\"\n            width=\"10\"\n            height=\"6\"\n            fill=\"none\"\n            viewBox=\"0 0 10 6\"\n            class={styles().panelCloseBtnIcon}\n          >\n            <path\n              stroke=\"currentColor\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n              stroke-width=\"1.667\"\n              d=\"M1 1l4 4 4-4\"\n            ></path>\n          </svg>\n        </button>\n        <div class={styles().firstContainer}>\n          <div class={styles().row}>\n            <Logo\n              aria-hidden\n              onClick={(e: any) => {\n                if (setIsOpen) {\n                  setIsOpen(false)\n                }\n                onCloseClick(e)\n              }}\n            />\n          </div>\n          <div class={styles().routerExplorerContainer}>\n            <div class={styles().routerExplorer}>\n              <Explorer\n                label=\"Router\"\n                value={routerExplorerValue}\n                defaultExpanded={{\n                  state: {} as any,\n                  context: {} as any,\n                  options: {} as any,\n                }}\n                filterSubEntries={(subEntries) => {\n                  return subEntries.filter(\n                    (d: any) => typeof d.value() !== 'function',\n                  )\n                }}\n              />\n            </div>\n          </div>\n        </div>\n        <div class={styles().secondContainer}>\n          <div class={styles().matchesContainer}>\n            <div class={styles().detailsHeader}>\n              <span>Pathname</span>\n              {routerState().location.maskedLocation ? (\n                <div class={styles().maskedBadgeContainer}>\n                  <span class={styles().maskedBadge}>masked</span>\n                </div>\n              ) : null}\n            </div>\n            <div class={styles().detailsContent}>\n              <code>{routerState().location.pathname}</code>\n              {routerState().location.maskedLocation ? (\n                <code class={styles().maskedLocation}>\n                  {routerState().location.maskedLocation?.pathname}\n                </code>\n              ) : null}\n            </div>\n            <div class={styles().detailsHeader}>\n              <div class={styles().routeMatchesToggle}>\n                <button\n                  type=\"button\"\n                  onClick={() => {\n                    setCurrentTab('routes')\n                  }}\n                  disabled={currentTab() === 'routes'}\n                  class={cx(\n                    styles().routeMatchesToggleBtn(\n                      currentTab() === 'routes',\n                      true,\n                    ),\n                  )}\n                >\n                  Routes\n                </button>\n                <button\n                  type=\"button\"\n                  onClick={() => {\n                    setCurrentTab('matches')\n                  }}\n                  disabled={currentTab() === 'matches'}\n                  class={cx(\n                    styles().routeMatchesToggleBtn(\n                      currentTab() === 'matches',\n                      true,\n                    ),\n                  )}\n                >\n                  Matches\n                </button>\n                <button\n                  type=\"button\"\n                  onClick={() => {\n                    setCurrentTab('history')\n                  }}\n                  disabled={currentTab() === 'history'}\n                  class={cx(\n                    styles().routeMatchesToggleBtn(\n                      currentTab() === 'history',\n                      false,\n                    ),\n                  )}\n                >\n                  History\n                </button>\n              </div>\n              <div class={styles().detailsHeaderInfo}>\n                <div>age / staleTime / gcTime</div>\n              </div>\n            </div>\n            <div class={cx(styles().routesContainer)}>\n              <Switch>\n                <Match when={currentTab() === 'routes'}>\n                  <RouteComp\n                    routerState={routerState}\n                    pendingMatches={pendingMatches}\n                    router={router}\n                    route={router().routeTree}\n                    isRoot\n                    activeId={activeId}\n                    setActiveId={setActiveId}\n                  />\n                </Match>\n                <Match when={currentTab() === 'matches'}>\n                  <div>\n                    {(pendingMatches().length\n                      ? pendingMatches()\n                      : routerState().matches\n                    ).map((match: any, _i: any) => {\n                      return (\n                        <div\n                          role=\"button\"\n                          aria-label={`Open match details for ${match.id}`}\n                          onClick={() =>\n                            setActiveId(activeId() === match.id ? '' : match.id)\n                          }\n                          class={cx(styles().matchRow(match === activeMatch()))}\n                        >\n                          <div\n                            class={cx(\n                              styles().matchIndicator(getStatusColor(match)),\n                            )}\n                          />\n                          <NavigateLink\n                            left={\n                              <NavigateButton\n                                to={match.pathname}\n                                params={match.params}\n                                search={match.search}\n                                router={router}\n                              />\n                            }\n                            right={<AgeTicker match={match} router={router} />}\n                          >\n                            <code class={styles().matchID}>\n                              {`${match.routeId === rootRouteId ? rootRouteId : match.pathname}`}\n                            </code>\n                          </NavigateLink>\n                        </div>\n                      )\n                    })}\n                  </div>\n                </Match>\n                <Match when={currentTab() === 'history'}>\n                  <div>\n                    <ul>\n                      <For each={history()}>\n                        {(match, index) => (\n                          <li\n                            class={cx(\n                              styles().matchRow(match === activeMatch()),\n                            )}\n                          >\n                            <div\n                              class={cx(\n                                styles().matchIndicator(\n                                  index() === 0 ? 'green' : 'gray',\n                                ),\n                              )}\n                            />\n                            <NavigateLink\n                              left={\n                                <NavigateButton\n                                  to={match.pathname}\n                                  params={match.params}\n                                  search={match.search}\n                                  router={router}\n                                />\n                              }\n                              right={\n                                <AgeTicker match={match} router={router} />\n                              }\n                            >\n                              <code class={styles().matchID}>\n                                {`${match.routeId === rootRouteId ? rootRouteId : match.pathname}`}\n                              </code>\n                            </NavigateLink>\n                          </li>\n                        )}\n                      </For>\n                      {hasHistoryOverflowed() ? (\n                        <li class={styles().historyOverflowContainer}>\n                          This panel displays the most recent {HISTORY_LIMIT}{' '}\n                          navigations.\n                        </li>\n                      ) : null}\n                    </ul>\n                  </div>\n                </Match>\n              </Switch>\n            </div>\n          </div>\n          {cachedMatches().length ? (\n            <div class={styles().cachedMatchesContainer}>\n              <div class={styles().detailsHeader}>\n                <div>Cached Matches</div>\n                <div class={styles().detailsHeaderInfo}>\n                  age / staleTime / gcTime\n                </div>\n              </div>\n              <div>\n                {cachedMatches().map((match: any) => {\n                  return (\n                    <div\n                      role=\"button\"\n                      aria-label={`Open match details for ${match.id}`}\n                      onClick={() =>\n                        setActiveId(activeId() === match.id ? '' : match.id)\n                      }\n                      class={cx(styles().matchRow(match === activeMatch()))}\n                    >\n                      <div\n                        class={cx(\n                          styles().matchIndicator(getStatusColor(match)),\n                        )}\n                      />\n                      <NavigateLink\n                        left={\n                          <NavigateButton\n                            to={match.pathname}\n                            params={match.params}\n                            search={match.search}\n                            router={router}\n                          />\n                        }\n                        right={<AgeTicker match={match} router={router} />}\n                      >\n                        <code class={styles().matchID}>{`${match.id}`}</code>\n                      </NavigateLink>\n                    </div>\n                  )\n                })}\n              </div>\n            </div>\n          ) : null}\n        </div>\n        {activeMatch() && activeMatch()?.status ? (\n          <div class={styles().thirdContainer}>\n            <div class={styles().detailsHeader}>Match Details</div>\n            <div>\n              <div class={styles().matchDetails}>\n                <div\n                  class={styles().matchStatus(\n                    activeMatch()?.status,\n                    activeMatch()?.isFetching,\n                  )}\n                >\n                  <div>\n                    {activeMatch()?.status === 'success' &&\n                    activeMatch()?.isFetching\n                      ? 'fetching'\n                      : activeMatch()?.status}\n                  </div>\n                </div>\n                <div class={styles().matchDetailsInfoLabel}>\n                  <div>ID:</div>\n                  <div class={styles().matchDetailsInfo}>\n                    <code>{activeMatch()?.id}</code>\n                  </div>\n                </div>\n                <div class={styles().matchDetailsInfoLabel}>\n                  <div>State:</div>\n                  <div class={styles().matchDetailsInfo}>\n                    {pendingMatches().find(\n                      (d: AnyRouteMatch) => d.id === activeMatch()?.id,\n                    )\n                      ? 'Pending'\n                      : routerState().matches.find(\n                            (d: any) => d.id === activeMatch()?.id,\n                          )\n                        ? 'Active'\n                        : 'Cached'}\n                  </div>\n                </div>\n                <div class={styles().matchDetailsInfoLabel}>\n                  <div>Last Updated:</div>\n                  <div class={styles().matchDetailsInfo}>\n                    {activeMatch()?.updatedAt\n                      ? new Date(activeMatch()?.updatedAt).toLocaleTimeString()\n                      : 'N/A'}\n                  </div>\n                </div>\n              </div>\n            </div>\n            {activeMatchLoaderData() ? (\n              <>\n                <div class={styles().detailsHeader}>Loader Data</div>\n                <div class={styles().detailsContent}>\n                  <Explorer\n                    label=\"loaderData\"\n                    value={activeMatchLoaderData}\n                    defaultExpanded={{}}\n                  />\n                </div>\n              </>\n            ) : null}\n            <div class={styles().detailsHeader}>Explorer</div>\n            <div class={styles().detailsContent}>\n              <Explorer\n                label=\"Match\"\n                value={activeMatchValue}\n                defaultExpanded={{}}\n              />\n            </div>\n          </div>\n        ) : null}\n        {hasSearch() ? (\n          <div class={styles().fourthContainer}>\n            <div class={styles().detailsHeader}>\n              <span>Search Params</span>\n              {typeof navigator !== 'undefined' ? (\n                <span style=\"margin-left: 0.5rem;\">\n                  <CopyButton\n                    getValue={() => {\n                      const search = routerState().location.search\n                      return JSON.stringify(search)\n                    }}\n                  />\n                </span>\n              ) : null}\n            </div>\n            <div class={styles().detailsContent}>\n              <Explorer\n                value={locationSearchValue}\n                defaultExpanded={Object.keys(\n                  routerState().location.search,\n                ).reduce((obj: any, next) => {\n                  obj[next] = {}\n                  return obj\n                }, {})}\n              />\n            </div>\n          </div>\n        ) : null}\n      </div>\n    )\n  }\n\nfunction CopyButton({ getValue }: { getValue: () => string }) {\n  const [copied, setCopied] = createSignal(false)\n\n  let timeoutId: ReturnType<typeof setTimeout> | null = null\n\n  const handleCopy = async () => {\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    if (typeof navigator === 'undefined' || !navigator.clipboard?.writeText) {\n      console.warn('TanStack Router Devtools: Clipboard API unavailable')\n      return\n    }\n    try {\n      const value = getValue()\n      await navigator.clipboard.writeText(value)\n      setCopied(true)\n      if (timeoutId) clearTimeout(timeoutId)\n      timeoutId = setTimeout(() => setCopied(false), 2500)\n    } catch (e) {\n      console.error('TanStack Router Devtools: Failed to copy', e)\n    }\n  }\n\n  onCleanup(() => {\n    if (timeoutId) clearTimeout(timeoutId)\n  })\n\n  return (\n    <button\n      type=\"button\"\n      style=\"cursor: pointer;\"\n      onClick={handleCopy}\n      aria-label=\"Copy value to clipboard\"\n      title={copied() ? 'Copied!' : 'Copy'}\n    >\n      {copied() ? '✅' : '📋'}\n    </button>\n  )\n}\n\nexport default BaseTanStackRouterDevtoolsPanel\n"],"mappings":"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"}