turbo-themes 0.14.0 → 0.15.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"theme-selector.js","sources":["../../packages/theme-selector/dist/index.js"],"sourcesContent":["const STORAGE_KEY = \"turbo-theme\";\nconst LEGACY_STORAGE_KEYS = [\"bulma-theme-flavor\"];\nconst DEFAULT_THEME = \"catppuccin-mocha\";\nconst DOM_IDS = {\n THEME_FLAVOR_TRIGGER: \"theme-flavor-trigger\",\n THEME_FLAVOR_TRIGGER_ICON: \"theme-flavor-trigger-icon\",\n THEME_FLAVOR_TRIGGER_LABEL: \"theme-flavor-trigger-label\",\n THEME_FLAVOR_MENU: \"theme-flavor-menu\",\n THEME_FLAVOR_SELECT: \"theme-flavor-select\"\n};\nconst DOM_SELECTORS = {\n DROPDOWN_ITEMS: `#${DOM_IDS.THEME_FLAVOR_MENU} .dropdown-item.theme-item`,\n NAVBAR_DROPDOWN: \".navbar-item.has-dropdown\",\n NAV_REPORTS: '[data-testid=\"nav-reports\"]',\n NAVBAR_ITEM: \".navbar-item\",\n HIGHLIGHT_PRE: \".highlight > pre\",\n THEME_CSS_LINKS: 'link[id^=\"theme-\"][id$=\"-css\"]'\n};\nconst THEME_FAMILIES = {\n bulma: { name: \"Bulma\", description: \"Classic Bulma themes\" },\n catppuccin: { name: \"Catppuccin\", description: \"Soothing pastel themes\" },\n github: { name: \"GitHub\", description: \"GitHub-inspired themes\" },\n dracula: { name: \"Dracula\", description: \"Dark vampire aesthetic\" },\n \"rose-pine\": { name: \"Rosé Pine\", description: \"All natural pine, faux fur and a bit of soho vibes\" }\n};\nconst LOG_PREFIX = \"[turbo-themes]\";\nconst ThemeErrors = {\n /** Invalid theme ID provided */\n INVALID_THEME_ID: (themeId) => ({\n code: \"INVALID_THEME_ID\",\n message: `Invalid theme ID \"${themeId}\" not saved to storage`,\n level: \"warn\",\n context: { themeId }\n }),\n /** No themes available in registry */\n NO_THEMES_AVAILABLE: () => ({\n code: \"NO_THEMES_AVAILABLE\",\n message: \"No themes available\",\n level: \"error\"\n /* ERROR */\n }),\n /** Invalid theme icon path */\n INVALID_ICON_PATH: (themeId) => ({\n code: \"INVALID_ICON_PATH\",\n message: `Invalid theme icon path for ${themeId}`,\n level: \"warn\",\n context: { themeId }\n }),\n /** Theme initialization failed */\n INIT_FAILED: (error) => ({\n code: \"INIT_FAILED\",\n message: \"Theme switcher initialization failed\",\n level: \"error\",\n context: { error: error instanceof Error ? error.message : String(error) }\n }),\n /** Protocol-relative URL rejected for security */\n PROTOCOL_REJECTED: () => ({\n code: \"PROTOCOL_REJECTED\",\n message: \"Protocol-relative base URL rejected for security\",\n level: \"warn\"\n /* WARN */\n }),\n /** Insecure HTTP URL rejected */\n INSECURE_HTTP_REJECTED: () => ({\n code: \"INSECURE_HTTP_REJECTED\",\n message: \"Insecure HTTP base URL rejected\",\n level: \"warn\"\n /* WARN */\n }),\n /** Cross-origin URL rejected */\n CROSS_ORIGIN_REJECTED: (origin) => ({\n code: \"CROSS_ORIGIN_REJECTED\",\n message: `Cross-origin base URL rejected: ${origin}`,\n level: \"warn\",\n context: { origin }\n }),\n /** Invalid CSS path for theme */\n INVALID_CSS_PATH: (themeId) => ({\n code: \"INVALID_CSS_PATH\",\n message: `Invalid theme CSS path for ${themeId}`,\n level: \"warn\",\n context: { themeId }\n }),\n /** CSS failed to load */\n CSS_LOAD_FAILED: (themeId, error) => ({\n code: \"CSS_LOAD_FAILED\",\n message: `Theme CSS failed to load for ${themeId}`,\n level: \"warn\",\n context: {\n themeId,\n error: error instanceof Error ? error.message : String(error)\n }\n }),\n /** Storage unavailable (private browsing or disabled) */\n STORAGE_UNAVAILABLE: (operation, error) => ({\n code: \"STORAGE_UNAVAILABLE\",\n message: `localStorage ${operation} failed - storage may be unavailable`,\n level: \"warn\",\n context: {\n operation,\n error: error instanceof Error ? error.message : String(error)\n }\n })\n};\nfunction logThemeError(themeError) {\n const prefixedMessage = `${LOG_PREFIX} ${themeError.message}`;\n if (themeError.level === \"error\") {\n if (themeError.context) {\n console.error(prefixedMessage, themeError.context);\n } else {\n console.error(prefixedMessage);\n }\n } else {\n if (themeError.context) {\n console.warn(prefixedMessage, themeError.context);\n } else {\n console.warn(prefixedMessage);\n }\n }\n}\nfunction safeGetItem(windowObj, key) {\n try {\n return windowObj.localStorage.getItem(key);\n } catch (error) {\n logThemeError(ThemeErrors.STORAGE_UNAVAILABLE(\"getItem\", error));\n return null;\n }\n}\nfunction safeSetItem(windowObj, key, value) {\n try {\n windowObj.localStorage.setItem(key, value);\n return true;\n } catch (error) {\n logThemeError(ThemeErrors.STORAGE_UNAVAILABLE(\"setItem\", error));\n return false;\n }\n}\nfunction safeRemoveItem(windowObj, key) {\n try {\n windowObj.localStorage.removeItem(key);\n } catch (error) {\n logThemeError(ThemeErrors.STORAGE_UNAVAILABLE(\"removeItem\", error));\n }\n}\nfunction validateThemeId(themeId, validIds) {\n if (themeId && validIds.has(themeId)) {\n return themeId;\n }\n return DEFAULT_THEME;\n}\nfunction migrateLegacyStorage(windowObj) {\n for (const legacyKey of LEGACY_STORAGE_KEYS) {\n const legacy = safeGetItem(windowObj, legacyKey);\n if (legacy && !safeGetItem(windowObj, STORAGE_KEY)) {\n safeSetItem(windowObj, STORAGE_KEY, legacy);\n safeRemoveItem(windowObj, legacyKey);\n }\n }\n}\nfunction getSavedTheme(windowObj, validIds) {\n const stored = safeGetItem(windowObj, STORAGE_KEY);\n if (validIds) {\n return validateThemeId(stored, validIds);\n }\n return stored || DEFAULT_THEME;\n}\nfunction saveTheme(windowObj, themeId, validIds) {\n if (validIds && !validIds.has(themeId)) {\n logThemeError(ThemeErrors.INVALID_THEME_ID(themeId));\n return false;\n }\n return safeSetItem(windowObj, STORAGE_KEY, themeId);\n}\nfunction resolveAssetPath(assetPath, baseUrl) {\n const normalizedBase = baseUrl.replace(/\\/$/, \"\");\n const base = normalizedBase ? `${window.location.origin}${normalizedBase}/` : `${window.location.origin}/`;\n return new URL(assetPath, base).pathname;\n}\nfunction getBaseUrl(doc) {\n const baseElement = doc.documentElement;\n const raw = baseElement?.getAttribute(\"data-baseurl\") || \"\";\n if (!raw) return \"\";\n if (raw.startsWith(\"//\")) {\n logThemeError(ThemeErrors.PROTOCOL_REJECTED());\n return \"\";\n }\n if (raw.startsWith(\"http://\") && !raw.startsWith(\"http://localhost\")) {\n logThemeError(ThemeErrors.INSECURE_HTTP_REJECTED());\n return \"\";\n }\n try {\n const currentOrigin = typeof window !== \"undefined\" ? window.location.origin : \"http://localhost\";\n const u = new URL(raw, currentOrigin);\n if (u.origin !== currentOrigin) {\n logThemeError(ThemeErrors.CROSS_ORIGIN_REJECTED(u.origin));\n return \"\";\n }\n return u.pathname.replace(/\\/$/, \"\");\n } catch {\n return \"\";\n }\n}\nfunction clearLinkHandlers(link) {\n link.onload = null;\n link.onerror = null;\n}\nfunction loadCSSWithTimeout(link, themeId, timeoutMs = 1e4) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n clearLinkHandlers(link);\n reject(new Error(`Theme ${themeId} load timeout`));\n }, timeoutMs);\n link.onload = () => {\n clearTimeout(timeoutId);\n clearLinkHandlers(link);\n resolve();\n };\n link.onerror = () => {\n clearTimeout(timeoutId);\n clearLinkHandlers(link);\n reject(new Error(`Failed to load theme ${themeId}`));\n };\n });\n}\nfunction getCurrentThemeFromClasses(element) {\n const classList = Array.from(element.classList);\n for (const className of classList) {\n if (className.startsWith(\"theme-\")) {\n return className.substring(6);\n }\n }\n return null;\n}\nfunction applyThemeClass(doc, themeId) {\n const themeClasses = Array.from(doc.documentElement.classList).filter(\n (className) => className.startsWith(\"theme-\")\n );\n if (themeClasses.length > 0) {\n doc.documentElement.classList.remove(...themeClasses);\n }\n doc.documentElement.classList.add(`theme-${themeId}`);\n}\nasync function loadThemeCSS(doc, theme, baseUrl) {\n const themeLinkId = `theme-${theme.id}-css`;\n let themeLink = doc.getElementById(themeLinkId);\n if (!themeLink) {\n themeLink = doc.createElement(\"link\");\n themeLink.id = themeLinkId;\n themeLink.rel = \"stylesheet\";\n themeLink.type = \"text/css\";\n themeLink.setAttribute(\"data-theme-id\", theme.id);\n try {\n themeLink.href = resolveAssetPath(theme.cssFile, baseUrl);\n } catch {\n logThemeError(ThemeErrors.INVALID_CSS_PATH(theme.id));\n return;\n }\n doc.head.appendChild(themeLink);\n try {\n await loadCSSWithTimeout(themeLink, theme.id);\n } catch (error) {\n logThemeError(ThemeErrors.CSS_LOAD_FAILED(theme.id, error));\n }\n }\n doc.querySelectorAll(DOM_SELECTORS.THEME_CSS_LINKS).forEach((link) => {\n const linkThemeId = link.id.replace(\"theme-\", \"\").replace(\"-css\", \"\");\n if (linkThemeId !== theme.id && linkThemeId !== \"base\") {\n link.remove();\n }\n });\n}\nfunction setItemActiveState(item, isActive) {\n if (isActive) {\n item.classList.add(\"is-active\");\n } else {\n item.classList.remove(\"is-active\");\n }\n item.setAttribute(\"aria-checked\", String(isActive));\n}\nfunction setTabindexBatch(items, value) {\n for (const item of items) {\n item.setAttribute(\"tabindex\", value);\n }\n}\nconst themes = /* @__PURE__ */ JSON.parse('{\"bulma-dark\":{\"id\":\"bulma-dark\",\"label\":\"Bulma Dark\",\"vendor\":\"bulma\",\"appearance\":\"dark\",\"tokens\":{\"background\":{\"base\":\"#141414\",\"surface\":\"#1f1f1f\",\"overlay\":\"#2b2b2b\"},\"text\":{\"primary\":\"#f5f5f5\",\"secondary\":\"#dbdbdb\",\"inverse\":\"#141414\"},\"brand\":{\"primary\":\"#00d1b2\"},\"state\":{\"info\":\"#3e8ed0\",\"success\":\"#48c78e\",\"warning\":\"#ffe08a\",\"danger\":\"#f14668\"},\"border\":{\"default\":\"#363636\"},\"accent\":{\"link\":\"#485fc7\"},\"typography\":{\"fonts\":{\"sans\":\"\\\\\"Nunito Sans\\\\\", BlinkMacSystemFont, -apple-system, \\\\\"Segoe UI\\\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\\\"Fira Sans\\\\\", \\\\\"Droid Sans\\\\\", \\\\\"Helvetica Neue\\\\\", Helvetica, Arial, sans-serif\",\"mono\":\"\\\\\"JetBrains Mono\\\\\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,opsz,wght@0,6..12,400;0,6..12,600;0,6..12,700;1,6..12,400&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#00d1b2\",\"h2\":\"#7289da\",\"h3\":\"#5dade2\",\"h4\":\"#58d68d\",\"h5\":\"#f7dc6f\",\"h6\":\"#f1948a\"},\"body\":{\"primary\":\"#dbdbdb\",\"secondary\":\"#b5b5b5\"},\"link\":{\"default\":\"#485fc7\"},\"selection\":{\"fg\":\"#f5f5f5\",\"bg\":\"#3273dc\"},\"blockquote\":{\"border\":\"#363636\",\"fg\":\"#dbdbdb\",\"bg\":\"#1f1f1f\"},\"codeInline\":{\"fg\":\"#f14668\",\"bg\":\"#2b2b2b\"},\"codeBlock\":{\"fg\":\"#f5f5f5\",\"bg\":\"#2b2b2b\"},\"table\":{\"border\":\"#404040\",\"stripe\":\"#1c1c1c\",\"theadBg\":\"#2d2d2d\",\"cellBg\":\"#1a1a1a\",\"headerFg\":\"#f5f5f5\"}},\"spacing\":{\"xs\":\"0.25rem\",\"sm\":\"0.5rem\",\"md\":\"1rem\",\"lg\":\"1.5rem\",\"xl\":\"2rem\"},\"elevation\":{\"none\":\"none\",\"sm\":\"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\"md\":\"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\"lg\":\"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\"xl\":\"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\"},\"animation\":{\"durationFast\":\"150ms\",\"durationNormal\":\"300ms\",\"durationSlow\":\"500ms\",\"easingDefault\":\"cubic-bezier(0.4, 0, 0.2, 1)\",\"easingEmphasized\":\"cubic-bezier(0.05, 0.7, 0.1, 1)\"},\"opacity\":{\"disabled\":0.5,\"hover\":0.8,\"pressed\":0.6},\"components\":{\"card\":{\"bg\":\"#1c1c1c\",\"border\":\"#3a3a3a\",\"headerBg\":\"#252525\",\"footerBg\":\"#1f1f1f\"},\"message\":{\"bg\":\"#1f1f1f\",\"headerBg\":\"#2a2a2a\",\"border\":\"#404040\",\"bodyFg\":\"#e0e0e0\"},\"panel\":{\"bg\":\"#1c1c1c\",\"headerBg\":\"#2a2a2a\",\"headerFg\":\"#f5f5f5\",\"border\":\"#3a3a3a\",\"blockBg\":\"#1f1f1f\",\"blockHoverBg\":\"#262626\",\"blockActiveBg\":\"#2d3748\"},\"box\":{\"bg\":\"#1c1c1c\",\"border\":\"#3a3a3a\"},\"notification\":{\"bg\":\"#252525\",\"border\":\"#404040\"},\"modal\":{\"bg\":\"rgba(0, 0, 0, 0.86)\",\"cardBg\":\"#1c1c1c\",\"headerBg\":\"#252525\",\"footerBg\":\"#1f1f1f\"},\"dropdown\":{\"bg\":\"#1c1c1c\",\"itemHoverBg\":\"#2a2a2a\",\"border\":\"#404040\"},\"tabs\":{\"border\":\"#404040\",\"linkBg\":\"#252525\",\"linkActiveBg\":\"#1c1c1c\",\"linkHoverBg\":\"#2a2a2a\"}}}},\"bulma-light\":{\"id\":\"bulma-light\",\"label\":\"Bulma Light\",\"vendor\":\"bulma\",\"appearance\":\"light\",\"tokens\":{\"background\":{\"base\":\"#ffffff\",\"surface\":\"#f5f5f5\",\"overlay\":\"#eeeeee\"},\"text\":{\"primary\":\"#363636\",\"secondary\":\"#4a4a4a\",\"inverse\":\"#ffffff\"},\"brand\":{\"primary\":\"#00d1b2\"},\"state\":{\"info\":\"#3e8ed0\",\"success\":\"#48c78e\",\"warning\":\"#ffe08a\",\"danger\":\"#f14668\"},\"border\":{\"default\":\"#dbdbdb\"},\"accent\":{\"link\":\"#485fc7\"},\"typography\":{\"fonts\":{\"sans\":\"\\\\\"Nunito Sans\\\\\", BlinkMacSystemFont, -apple-system, \\\\\"Segoe UI\\\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\\\"Fira Sans\\\\\", \\\\\"Droid Sans\\\\\", \\\\\"Helvetica Neue\\\\\", Helvetica, Arial, sans-serif\",\"mono\":\"\\\\\"JetBrains Mono\\\\\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,opsz,wght@0,6..12,400;0,6..12,600;0,6..12,700;1,6..12,400&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#00d1b2\",\"h2\":\"#485fc7\",\"h3\":\"#3e8ed0\",\"h4\":\"#48c78e\",\"h5\":\"#ffe08a\",\"h6\":\"#f14668\"},\"body\":{\"primary\":\"#4a4a4a\",\"secondary\":\"#6b6b6b\"},\"link\":{\"default\":\"#485fc7\"},\"selection\":{\"fg\":\"#363636\",\"bg\":\"#b5d5ff\"},\"blockquote\":{\"border\":\"#dbdbdb\",\"fg\":\"#4a4a4a\",\"bg\":\"#f5f5f5\"},\"codeInline\":{\"fg\":\"#f14668\",\"bg\":\"#f5f5f5\"},\"codeBlock\":{\"fg\":\"#363636\",\"bg\":\"#f5f5f5\"},\"table\":{\"border\":\"#dbdbdb\",\"stripe\":\"#fafafa\",\"theadBg\":\"#f0f0f0\",\"cellBg\":\"#ffffff\",\"headerFg\":\"#363636\"}},\"spacing\":{\"xs\":\"0.25rem\",\"sm\":\"0.5rem\",\"md\":\"1rem\",\"lg\":\"1.5rem\",\"xl\":\"2rem\"},\"elevation\":{\"none\":\"none\",\"sm\":\"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\"md\":\"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\"lg\":\"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\"xl\":\"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\"},\"animation\":{\"durationFast\":\"150ms\",\"durationNormal\":\"300ms\",\"durationSlow\":\"500ms\",\"easingDefault\":\"cubic-bezier(0.4, 0, 0.2, 1)\",\"easingEmphasized\":\"cubic-bezier(0.05, 0.7, 0.1, 1)\"},\"opacity\":{\"disabled\":0.5,\"hover\":0.8,\"pressed\":0.6},\"components\":{\"card\":{\"bg\":\"#ffffff\",\"border\":\"#d5d5d5\",\"headerBg\":\"#f5f5f5\",\"footerBg\":\"#fafafa\"},\"message\":{\"bg\":\"#f8f9fa\",\"headerBg\":\"#eef1f4\",\"border\":\"#d5dbe1\",\"bodyFg\":\"#4a4a4a\"},\"panel\":{\"bg\":\"#ffffff\",\"headerBg\":\"#f0f0f0\",\"headerFg\":\"#363636\",\"border\":\"#d5d5d5\",\"blockBg\":\"#fafafa\",\"blockHoverBg\":\"#f5f5f5\",\"blockActiveBg\":\"#eef6fc\"},\"box\":{\"bg\":\"#ffffff\",\"border\":\"#e0e0e0\"},\"notification\":{\"bg\":\"#f5f5f5\",\"border\":\"#e0e0e0\"},\"modal\":{\"bg\":\"rgba(10, 10, 10, 0.86)\",\"cardBg\":\"#ffffff\",\"headerBg\":\"#f5f5f5\",\"footerBg\":\"#fafafa\"},\"dropdown\":{\"bg\":\"#ffffff\",\"itemHoverBg\":\"#f5f5f5\",\"border\":\"#dbdbdb\"},\"tabs\":{\"border\":\"#dbdbdb\",\"linkBg\":\"#f5f5f5\",\"linkActiveBg\":\"#ffffff\",\"linkHoverBg\":\"#eeeeee\"}}}},\"catppuccin-frappe\":{\"id\":\"catppuccin-frappe\",\"label\":\"Catppuccin Frappé\",\"vendor\":\"catppuccin\",\"appearance\":\"dark\",\"tokens\":{\"background\":{\"base\":\"#303446\",\"surface\":\"#292c3c\",\"overlay\":\"#232634\"},\"text\":{\"primary\":\"#c6d0f5\",\"secondary\":\"#a5adce\",\"inverse\":\"#303446\"},\"brand\":{\"primary\":\"#8caaee\"},\"state\":{\"info\":\"#99d1db\",\"success\":\"#a6d189\",\"warning\":\"#e5c890\",\"danger\":\"#e78284\"},\"border\":{\"default\":\"#737994\"},\"accent\":{\"link\":\"#8caaee\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#a6d189\",\"h2\":\"#8caaee\",\"h3\":\"#85c1dc\",\"h4\":\"#e5c890\",\"h5\":\"#ca9ee6\",\"h6\":\"#e78284\"},\"body\":{\"primary\":\"#c6d0f5\",\"secondary\":\"#a5adce\"},\"link\":{\"default\":\"#8caaee\"},\"selection\":{\"fg\":\"#c6d0f5\",\"bg\":\"#838ba7\"},\"blockquote\":{\"border\":\"#838ba7\",\"fg\":\"#c6d0f5\",\"bg\":\"#292c3c\"},\"codeInline\":{\"fg\":\"#c6d0f5\",\"bg\":\"#414559\"},\"codeBlock\":{\"fg\":\"#c6d0f5\",\"bg\":\"#414559\"},\"table\":{\"border\":\"#838ba7\",\"stripe\":\"#414559\",\"theadBg\":\"#51576d\"}}}},\"catppuccin-latte\":{\"id\":\"catppuccin-latte\",\"label\":\"Catppuccin Latte\",\"vendor\":\"catppuccin\",\"appearance\":\"light\",\"tokens\":{\"background\":{\"base\":\"#eff1f5\",\"surface\":\"#e6e9ef\",\"overlay\":\"#dce0e8\"},\"text\":{\"primary\":\"#4c4f69\",\"secondary\":\"#6c6f85\",\"inverse\":\"#eff1f5\"},\"brand\":{\"primary\":\"#1e66f5\"},\"state\":{\"info\":\"#04a5e5\",\"success\":\"#40a02b\",\"warning\":\"#df8e1d\",\"danger\":\"#d20f39\"},\"border\":{\"default\":\"#9ca0b0\"},\"accent\":{\"link\":\"#1e66f5\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#40a02b\",\"h2\":\"#1e66f5\",\"h3\":\"#209fb5\",\"h4\":\"#df8e1d\",\"h5\":\"#8839ef\",\"h6\":\"#d20f39\"},\"body\":{\"primary\":\"#4c4f69\",\"secondary\":\"#6c6f85\"},\"link\":{\"default\":\"#1e66f5\"},\"selection\":{\"fg\":\"#4c4f69\",\"bg\":\"#8c8fa1\"},\"blockquote\":{\"border\":\"#8c8fa1\",\"fg\":\"#4c4f69\",\"bg\":\"#e6e9ef\"},\"codeInline\":{\"fg\":\"#4c4f69\",\"bg\":\"#ccd0da\"},\"codeBlock\":{\"fg\":\"#4c4f69\",\"bg\":\"#ccd0da\"},\"table\":{\"border\":\"#8c8fa1\",\"stripe\":\"#ccd0da\",\"theadBg\":\"#bcc0cc\"}}}},\"catppuccin-macchiato\":{\"id\":\"catppuccin-macchiato\",\"label\":\"Catppuccin Macchiato\",\"vendor\":\"catppuccin\",\"appearance\":\"dark\",\"tokens\":{\"background\":{\"base\":\"#24273a\",\"surface\":\"#1e2030\",\"overlay\":\"#181926\"},\"text\":{\"primary\":\"#cad3f5\",\"secondary\":\"#a5adcb\",\"inverse\":\"#24273a\"},\"brand\":{\"primary\":\"#8aadf4\"},\"state\":{\"info\":\"#91d7e3\",\"success\":\"#a6da95\",\"warning\":\"#eed49f\",\"danger\":\"#ed8796\"},\"border\":{\"default\":\"#6e738d\"},\"accent\":{\"link\":\"#8aadf4\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#a6da95\",\"h2\":\"#8aadf4\",\"h3\":\"#7dc4e4\",\"h4\":\"#eed49f\",\"h5\":\"#c6a0f6\",\"h6\":\"#ed8796\"},\"body\":{\"primary\":\"#cad3f5\",\"secondary\":\"#a5adcb\"},\"link\":{\"default\":\"#8aadf4\"},\"selection\":{\"fg\":\"#cad3f5\",\"bg\":\"#8087a2\"},\"blockquote\":{\"border\":\"#8087a2\",\"fg\":\"#cad3f5\",\"bg\":\"#1e2030\"},\"codeInline\":{\"fg\":\"#cad3f5\",\"bg\":\"#363a4f\"},\"codeBlock\":{\"fg\":\"#cad3f5\",\"bg\":\"#363a4f\"},\"table\":{\"border\":\"#8087a2\",\"stripe\":\"#363a4f\",\"theadBg\":\"#494d64\"}}}},\"catppuccin-mocha\":{\"id\":\"catppuccin-mocha\",\"label\":\"Catppuccin Mocha\",\"vendor\":\"catppuccin\",\"appearance\":\"dark\",\"tokens\":{\"background\":{\"base\":\"#1e1e2e\",\"surface\":\"#181825\",\"overlay\":\"#11111b\"},\"text\":{\"primary\":\"#cdd6f4\",\"secondary\":\"#a6adc8\",\"inverse\":\"#1e1e2e\"},\"brand\":{\"primary\":\"#89b4fa\"},\"state\":{\"info\":\"#89dceb\",\"success\":\"#a6e3a1\",\"warning\":\"#f9e2af\",\"danger\":\"#f38ba8\"},\"border\":{\"default\":\"#6c7086\"},\"accent\":{\"link\":\"#89b4fa\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#a6e3a1\",\"h2\":\"#89b4fa\",\"h3\":\"#74c7ec\",\"h4\":\"#f9e2af\",\"h5\":\"#cba6f7\",\"h6\":\"#f38ba8\"},\"body\":{\"primary\":\"#cdd6f4\",\"secondary\":\"#a6adc8\"},\"link\":{\"default\":\"#89b4fa\"},\"selection\":{\"fg\":\"#cdd6f4\",\"bg\":\"#7f849c\"},\"blockquote\":{\"border\":\"#7f849c\",\"fg\":\"#cdd6f4\",\"bg\":\"#181825\"},\"codeInline\":{\"fg\":\"#cdd6f4\",\"bg\":\"#313244\"},\"codeBlock\":{\"fg\":\"#cdd6f4\",\"bg\":\"#313244\"},\"table\":{\"border\":\"#7f849c\",\"stripe\":\"#313244\",\"theadBg\":\"#45475a\"}}}},\"dracula\":{\"id\":\"dracula\",\"label\":\"Dracula\",\"vendor\":\"dracula\",\"appearance\":\"dark\",\"tokens\":{\"background\":{\"base\":\"#282a36\",\"surface\":\"#21222c\",\"overlay\":\"#44475a\"},\"text\":{\"primary\":\"#f8f8f2\",\"secondary\":\"#6272a4\",\"inverse\":\"#282a36\"},\"brand\":{\"primary\":\"#bd93f9\"},\"state\":{\"info\":\"#8be9fd\",\"success\":\"#50fa7b\",\"warning\":\"#f1fa8c\",\"danger\":\"#ff5555\"},\"border\":{\"default\":\"#44475a\"},\"accent\":{\"link\":\"#8be9fd\"},\"typography\":{\"fonts\":{\"sans\":\"ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \\\\\"Segoe UI\\\\\", Roboto, \\\\\"Helvetica Neue\\\\\", Arial, sans-serif\",\"mono\":\"\\\\\"Fira Code\\\\\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;600&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#ff79c6\",\"h2\":\"#bd93f9\",\"h3\":\"#8be9fd\",\"h4\":\"#50fa7b\",\"h5\":\"#ffb86c\",\"h6\":\"#f1fa8c\"},\"body\":{\"primary\":\"#f8f8f2\",\"secondary\":\"#6272a4\"},\"link\":{\"default\":\"#8be9fd\"},\"selection\":{\"fg\":\"#f8f8f2\",\"bg\":\"#44475a\"},\"blockquote\":{\"border\":\"#bd93f9\",\"fg\":\"#6272a4\",\"bg\":\"#21222c\"},\"codeInline\":{\"fg\":\"#50fa7b\",\"bg\":\"#21222c\"},\"codeBlock\":{\"fg\":\"#f8f8f2\",\"bg\":\"#21222c\"},\"table\":{\"border\":\"#44475a\",\"stripe\":\"#21222c\",\"theadBg\":\"#44475a\",\"cellBg\":\"#282a36\",\"headerFg\":\"#f8f8f2\"}},\"spacing\":{\"xs\":\"0.25rem\",\"sm\":\"0.5rem\",\"md\":\"1rem\",\"lg\":\"1.5rem\",\"xl\":\"2rem\"},\"elevation\":{\"none\":\"none\",\"sm\":\"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\"md\":\"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\"lg\":\"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\"xl\":\"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\"},\"animation\":{\"durationFast\":\"150ms\",\"durationNormal\":\"300ms\",\"durationSlow\":\"500ms\",\"easingDefault\":\"cubic-bezier(0.4, 0, 0.2, 1)\",\"easingEmphasized\":\"cubic-bezier(0.05, 0.7, 0.1, 1)\"},\"opacity\":{\"disabled\":0.5,\"hover\":0.8,\"pressed\":0.6},\"components\":{\"card\":{\"bg\":\"#21222c\",\"border\":\"#6272a4\",\"headerBg\":\"#282a36\",\"footerBg\":\"#21222c\"},\"message\":{\"bg\":\"#282a36\",\"headerBg\":\"#44475a\",\"border\":\"#6272a4\",\"bodyFg\":\"#f8f8f2\"},\"panel\":{\"bg\":\"#21222c\",\"headerBg\":\"#44475a\",\"headerFg\":\"#f8f8f2\",\"border\":\"#6272a4\",\"blockBg\":\"#282a36\",\"blockHoverBg\":\"#2e303e\",\"blockActiveBg\":\"#44475a\"},\"box\":{\"bg\":\"#21222c\",\"border\":\"#6272a4\"},\"notification\":{\"bg\":\"#282a36\",\"border\":\"#6272a4\"},\"modal\":{\"bg\":\"rgba(40, 42, 54, 0.9)\",\"cardBg\":\"#21222c\",\"headerBg\":\"#282a36\",\"footerBg\":\"#21222c\"},\"dropdown\":{\"bg\":\"#21222c\",\"itemHoverBg\":\"#2e303e\",\"border\":\"#6272a4\"},\"tabs\":{\"border\":\"#6272a4\",\"linkBg\":\"#2e303e\",\"linkActiveBg\":\"#21222c\",\"linkHoverBg\":\"#44475a\"}}}},\"github-dark\":{\"id\":\"github-dark\",\"label\":\"GitHub Dark\",\"vendor\":\"github\",\"appearance\":\"dark\",\"tokens\":{\"background\":{\"base\":\"#0d1117\",\"surface\":\"#151b23\",\"overlay\":\"#010409\"},\"text\":{\"primary\":\"#f0f6fc\",\"secondary\":\"#9198a1\",\"inverse\":\"#ffffff\"},\"brand\":{\"primary\":\"#1f6feb\"},\"state\":{\"info\":\"#4493f8\",\"success\":\"#3fb950\",\"warning\":\"#d29922\",\"danger\":\"#f85149\"},\"border\":{\"default\":\"#3d444d\"},\"accent\":{\"link\":\"#4493f8\"},\"typography\":{\"fonts\":{\"sans\":\"\\\\\"Mona Sans\\\\\", -apple-system, BlinkMacSystemFont, \\\\\"Segoe UI\\\\\", \\\\\"Noto Sans\\\\\", Helvetica, Arial, sans-serif, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"\\\\\"Hubot Sans\\\\\", ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, \\\\\"Liberation Mono\\\\\", monospace\"},\"webFonts\":[\"https://github.githubassets.com/assets/mona-sans-webfont.woff2\",\"https://github.githubassets.com/assets/hubot-sans-webfont.woff2\"]},\"content\":{\"heading\":{\"h1\":\"#3fb950\",\"h2\":\"#4493f8\",\"h3\":\"#1f6feb\",\"h4\":\"#d29922\",\"h5\":\"#3fb950\",\"h6\":\"#f85149\"},\"body\":{\"primary\":\"#f0f6fc\",\"secondary\":\"#9198a1\"},\"link\":{\"default\":\"#4493f8\"},\"selection\":{\"fg\":\"#f0f6fc\",\"bg\":\"#264f78\"},\"blockquote\":{\"border\":\"#3d444d\",\"fg\":\"#9198a1\",\"bg\":\"#151b23\"},\"codeInline\":{\"fg\":\"#f0f6fc\",\"bg\":\"#151b23\"},\"codeBlock\":{\"fg\":\"#f0f6fc\",\"bg\":\"#151b23\"},\"table\":{\"border\":\"#3d444d\",\"stripe\":\"#151b23\",\"theadBg\":\"#151b23\"}}}},\"github-light\":{\"id\":\"github-light\",\"label\":\"GitHub Light\",\"vendor\":\"github\",\"appearance\":\"light\",\"tokens\":{\"background\":{\"base\":\"#ffffff\",\"surface\":\"#f6f8fa\",\"overlay\":\"#f6f8fa\"},\"text\":{\"primary\":\"#1f2328\",\"secondary\":\"#59636e\",\"inverse\":\"#ffffff\"},\"brand\":{\"primary\":\"#0969da\"},\"state\":{\"info\":\"#0969da\",\"success\":\"#1a7f37\",\"warning\":\"#9a6700\",\"danger\":\"#d1242f\"},\"border\":{\"default\":\"#d1d9e0\"},\"accent\":{\"link\":\"#0969da\"},\"typography\":{\"fonts\":{\"sans\":\"\\\\\"Mona Sans\\\\\", -apple-system, BlinkMacSystemFont, \\\\\"Segoe UI\\\\\", \\\\\"Noto Sans\\\\\", Helvetica, Arial, sans-serif, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"\\\\\"Hubot Sans\\\\\", ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, \\\\\"Liberation Mono\\\\\", monospace\"},\"webFonts\":[\"https://github.githubassets.com/assets/mona-sans-webfont.woff2\",\"https://github.githubassets.com/assets/hubot-sans-webfont.woff2\"]},\"content\":{\"heading\":{\"h1\":\"#1a7f37\",\"h2\":\"#0969da\",\"h3\":\"#0969da\",\"h4\":\"#9a6700\",\"h5\":\"#1a7f37\",\"h6\":\"#d1242f\"},\"body\":{\"primary\":\"#1f2328\",\"secondary\":\"#59636e\"},\"link\":{\"default\":\"#0969da\"},\"selection\":{\"fg\":\"#1f2328\",\"bg\":\"#b6e3ff\"},\"blockquote\":{\"border\":\"#d1d9e0\",\"fg\":\"#59636e\",\"bg\":\"#f6f8fa\"},\"codeInline\":{\"fg\":\"#1f2328\",\"bg\":\"#f6f8fa\"},\"codeBlock\":{\"fg\":\"#1f2328\",\"bg\":\"#f6f8fa\"},\"table\":{\"border\":\"#d1d9e0\",\"stripe\":\"#f6f8fa\",\"theadBg\":\"#f6f8fa\"}}}},\"rose-pine-dawn\":{\"id\":\"rose-pine-dawn\",\"label\":\"Rosé Pine Dawn\",\"vendor\":\"rose-pine\",\"appearance\":\"light\",\"iconUrl\":\"/assets/img/rose-pine-dawn.png\",\"tokens\":{\"background\":{\"base\":\"#faf4ed\",\"surface\":\"#fffaf3\",\"overlay\":\"#f2e9e1\"},\"text\":{\"primary\":\"#575279\",\"secondary\":\"#797593\",\"inverse\":\"#faf4ed\"},\"brand\":{\"primary\":\"#907aa9\"},\"state\":{\"info\":\"#56949f\",\"success\":\"#286983\",\"warning\":\"#ea9d34\",\"danger\":\"#b4637a\"},\"border\":{\"default\":\"#dfdad9\"},\"accent\":{\"link\":\"#907aa9\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#286983\",\"h2\":\"#907aa9\",\"h3\":\"#56949f\",\"h4\":\"#ea9d34\",\"h5\":\"#d7827e\",\"h6\":\"#b4637a\"},\"body\":{\"primary\":\"#575279\",\"secondary\":\"#797593\"},\"link\":{\"default\":\"#907aa9\"},\"selection\":{\"fg\":\"#575279\",\"bg\":\"#cecacd\"},\"blockquote\":{\"border\":\"#cecacd\",\"fg\":\"#575279\",\"bg\":\"#fffaf3\"},\"codeInline\":{\"fg\":\"#575279\",\"bg\":\"#f2e9e1\"},\"codeBlock\":{\"fg\":\"#575279\",\"bg\":\"#f2e9e1\"},\"table\":{\"border\":\"#cecacd\",\"stripe\":\"#f2e9e1\",\"theadBg\":\"#dfdad9\"}}}},\"rose-pine-moon\":{\"id\":\"rose-pine-moon\",\"label\":\"Rosé Pine Moon\",\"vendor\":\"rose-pine\",\"appearance\":\"dark\",\"iconUrl\":\"/assets/img/rose-pine-moon.png\",\"tokens\":{\"background\":{\"base\":\"#232136\",\"surface\":\"#2a273f\",\"overlay\":\"#393552\"},\"text\":{\"primary\":\"#e0def4\",\"secondary\":\"#908caa\",\"inverse\":\"#232136\"},\"brand\":{\"primary\":\"#c4a7e7\"},\"state\":{\"info\":\"#9ccfd8\",\"success\":\"#3e8fb0\",\"warning\":\"#f6c177\",\"danger\":\"#eb6f92\"},\"border\":{\"default\":\"#44415a\"},\"accent\":{\"link\":\"#c4a7e7\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#3e8fb0\",\"h2\":\"#c4a7e7\",\"h3\":\"#9ccfd8\",\"h4\":\"#f6c177\",\"h5\":\"#ea9a97\",\"h6\":\"#eb6f92\"},\"body\":{\"primary\":\"#e0def4\",\"secondary\":\"#908caa\"},\"link\":{\"default\":\"#c4a7e7\"},\"selection\":{\"fg\":\"#e0def4\",\"bg\":\"#56526e\"},\"blockquote\":{\"border\":\"#56526e\",\"fg\":\"#e0def4\",\"bg\":\"#2a273f\"},\"codeInline\":{\"fg\":\"#e0def4\",\"bg\":\"#393552\"},\"codeBlock\":{\"fg\":\"#e0def4\",\"bg\":\"#393552\"},\"table\":{\"border\":\"#56526e\",\"stripe\":\"#393552\",\"theadBg\":\"#44415a\"}}}},\"rose-pine\":{\"id\":\"rose-pine\",\"label\":\"Rosé Pine\",\"vendor\":\"rose-pine\",\"appearance\":\"dark\",\"iconUrl\":\"/assets/img/rose-pine.png\",\"tokens\":{\"background\":{\"base\":\"#191724\",\"surface\":\"#1f1d2e\",\"overlay\":\"#26233a\"},\"text\":{\"primary\":\"#e0def4\",\"secondary\":\"#908caa\",\"inverse\":\"#191724\"},\"brand\":{\"primary\":\"#c4a7e7\"},\"state\":{\"info\":\"#9ccfd8\",\"success\":\"#31748f\",\"warning\":\"#f6c177\",\"danger\":\"#eb6f92\"},\"border\":{\"default\":\"#403d52\"},\"accent\":{\"link\":\"#c4a7e7\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#31748f\",\"h2\":\"#c4a7e7\",\"h3\":\"#9ccfd8\",\"h4\":\"#f6c177\",\"h5\":\"#ebbcba\",\"h6\":\"#eb6f92\"},\"body\":{\"primary\":\"#e0def4\",\"secondary\":\"#908caa\"},\"link\":{\"default\":\"#c4a7e7\"},\"selection\":{\"fg\":\"#e0def4\",\"bg\":\"#524f67\"},\"blockquote\":{\"border\":\"#524f67\",\"fg\":\"#e0def4\",\"bg\":\"#1f1d2e\"},\"codeInline\":{\"fg\":\"#e0def4\",\"bg\":\"#26233a\"},\"codeBlock\":{\"fg\":\"#e0def4\",\"bg\":\"#26233a\"},\"table\":{\"border\":\"#524f67\",\"stripe\":\"#26233a\",\"theadBg\":\"#403d52\"}}}}}');\nconst byVendor = { \"bulma\": { \"name\": \"Bulma\", \"homepage\": \"https://bulma.io/\", \"themes\": [\"bulma-dark\", \"bulma-light\"] }, \"catppuccin\": { \"name\": \"Catppuccin (synced)\", \"homepage\": \"https://catppuccin.com/palette/\", \"themes\": [\"catppuccin-frappe\", \"catppuccin-latte\", \"catppuccin-macchiato\", \"catppuccin-mocha\"] }, \"dracula\": { \"name\": \"Dracula\", \"homepage\": \"https://draculatheme.com/\", \"themes\": [\"dracula\"] }, \"github\": { \"name\": \"GitHub (synced)\", \"homepage\": \"https://primer.style/\", \"themes\": [\"github-dark\", \"github-light\"] }, \"rose-pine\": { \"name\": \"Rosé Pine (synced)\", \"homepage\": \"https://rosepinetheme.com/\", \"themes\": [\"rose-pine-dawn\", \"rose-pine-moon\", \"rose-pine\"] } };\nconst tokensData = {\n themes,\n byVendor\n};\nconst tokens = tokensData;\nconst flavors = Object.values(tokens.themes).map((theme) => ({\n id: theme.id,\n label: theme.label,\n vendor: theme.vendor,\n appearance: theme.appearance,\n ...theme.iconUrl !== void 0 && { iconUrl: theme.iconUrl },\n tokens: theme.tokens\n}));\nconst themesById = /* @__PURE__ */ Object.fromEntries(flavors.map((flavor) => [flavor.id, flavor]));\n/* @__PURE__ */ Object.fromEntries(Object.entries(tokens.byVendor).map(([vendorId, vendor]) => [\n vendorId,\n {\n id: vendorId,\n name: vendor.name,\n homepage: vendor.homepage,\n flavors: vendor.themes.map((themeId) => themesById[themeId]).filter(Boolean)\n }\n]));\n[...new Set(flavors.map((f) => f.vendor))];\nconst VENDOR_FAMILY_MAP = {\n bulma: \"bulma\",\n catppuccin: \"catppuccin\",\n github: \"github\",\n dracula: \"dracula\",\n \"rose-pine\": \"rose-pine\"\n};\nconst DEFAULT_FAMILY = \"bulma\";\nconst VENDOR_ICON_MAP = {\n bulma: \"assets/img/turbo-themes-logo.png\",\n catppuccin: {\n light: \"assets/img/catppuccin-logo-latte.png\",\n dark: \"assets/img/catppuccin-logo-macchiato.png\"\n },\n github: {\n light: \"assets/img/github-logo-light.png\",\n dark: \"assets/img/github-logo-dark.png\"\n },\n dracula: \"assets/img/dracula-logo.png\",\n \"rose-pine\": {\n light: \"assets/img/rose-pine-dawn.png\",\n dark: \"assets/img/rose-pine.png\"\n }\n};\nconst FLAVOR_DESCRIPTIONS = {\n \"bulma-light\": \"Classic Bulma look with a bright, neutral palette.\",\n \"bulma-dark\": \"Dark Bulma theme tuned for low-light reading.\",\n \"catppuccin-latte\": \"Light, soft Catppuccin palette for daytime use.\",\n \"catppuccin-frappe\": \"Balanced dark Catppuccin theme for focused work.\",\n \"catppuccin-macchiato\": \"Deep, atmospheric Catppuccin variant with rich contrast.\",\n \"catppuccin-mocha\": \"Cozy, high-contrast Catppuccin theme for late-night sessions.\",\n dracula: \"Iconic Dracula dark theme with vibrant accents.\",\n \"github-light\": \"GitHub-inspired light theme suited for documentation and UI heavy pages.\",\n \"github-dark\": \"GitHub dark theme optimized for code-heavy views.\",\n \"rose-pine\": \"Elegant dark theme with natural pine and soho vibes.\",\n \"rose-pine-moon\": \"Deeper variant of Rosé Pine with enhanced contrast.\",\n \"rose-pine-dawn\": \"Light Rosé Pine variant for daytime use.\"\n};\nfunction getFamily(vendor) {\n return VENDOR_FAMILY_MAP[vendor] ?? DEFAULT_FAMILY;\n}\nfunction getIconForVendor(vendor, appearance) {\n const iconConfig = VENDOR_ICON_MAP[vendor];\n if (!iconConfig) {\n return void 0;\n }\n if (typeof iconConfig === \"string\") {\n return iconConfig;\n }\n return iconConfig[appearance];\n}\nfunction getDescriptionForFlavor(id, label) {\n return FLAVOR_DESCRIPTIONS[id] ?? `${label} theme`;\n}\nfunction extractPreviewColors(tokens2) {\n return {\n bg: tokens2.background.base,\n surface: tokens2.background.surface,\n accent: tokens2.brand.primary,\n text: tokens2.text.primary\n };\n}\nfunction mapFlavorToUI(flavor) {\n const family = getFamily(flavor.vendor);\n return {\n id: flavor.id,\n name: flavor.label,\n description: getDescriptionForFlavor(flavor.id, flavor.label),\n cssFile: `packages/css/dist/themes/${flavor.id}.css`,\n icon: getIconForVendor(flavor.vendor, flavor.appearance),\n family,\n vendor: flavor.vendor,\n appearance: flavor.appearance,\n colors: extractPreviewColors(flavor.tokens)\n };\n}\nlet mappedThemes = null;\nlet validThemeIds = null;\nfunction getThemes() {\n if (!mappedThemes) {\n mappedThemes = flavors.map(mapFlavorToUI);\n }\n return mappedThemes || [];\n}\nfunction getValidThemeIds() {\n if (!validThemeIds) {\n validThemeIds = new Set(flavors.map((f) => f.id));\n }\n return validThemeIds;\n}\nfunction resolveTheme(themeId) {\n const themes2 = getThemes();\n return themes2.find((t) => t.id === themeId) || themes2.find((t) => t.id === DEFAULT_THEME) || themes2[0];\n}\nasync function applyTheme(doc, themeId) {\n const theme = resolveTheme(themeId);\n if (!theme) {\n logThemeError(ThemeErrors.NO_THEMES_AVAILABLE());\n return;\n }\n const baseUrl = getBaseUrl(doc);\n const trigger = doc.getElementById(DOM_IDS.THEME_FLAVOR_TRIGGER);\n if (trigger) {\n trigger.classList.add(\"is-loading\");\n }\n try {\n applyThemeClass(doc, theme.id);\n await loadThemeCSS(doc, theme, baseUrl);\n const triggerIcon = doc.getElementById(\n DOM_IDS.THEME_FLAVOR_TRIGGER_ICON\n );\n if (triggerIcon && theme.icon) {\n try {\n triggerIcon.src = resolveAssetPath(theme.icon, baseUrl);\n const familyMeta = THEME_FAMILIES[theme.family];\n const familyName = familyMeta?.name ?? theme.family;\n triggerIcon.alt = `${familyName} ${theme.name}`;\n triggerIcon.title = `${familyName} ${theme.name}`;\n } catch {\n logThemeError(ThemeErrors.INVALID_ICON_PATH(theme.id));\n }\n }\n const triggerLabel = doc.getElementById(\n DOM_IDS.THEME_FLAVOR_TRIGGER_LABEL\n );\n if (triggerLabel) {\n triggerLabel.textContent = theme.name;\n }\n doc.querySelectorAll(DOM_SELECTORS.DROPDOWN_ITEMS).forEach((item) => {\n setItemActiveState(item, item.getAttribute(\"data-theme-id\") === theme.id);\n });\n } finally {\n if (trigger) {\n trigger.classList.remove(\"is-loading\");\n }\n }\n}\nfunction getCurrentTheme(doc, defaultTheme) {\n return getCurrentThemeFromClasses(doc.documentElement) || defaultTheme;\n}\nfunction createDropdownStateManager(elements, state) {\n const { trigger, dropdown } = elements;\n const updateAriaExpanded = (expanded) => {\n trigger.setAttribute(\"aria-expanded\", String(expanded));\n };\n const focusMenuItem = (index) => {\n if (index < 0 || index >= state.menuItems.length) return;\n const item = state.menuItems[index];\n setTabindexBatch(state.menuItems, \"-1\");\n item.setAttribute(\"tabindex\", \"0\");\n item.focus();\n state.currentIndex = index;\n };\n const closeDropdown = (options = {}) => {\n const { restoreFocus = true } = options;\n dropdown.classList.remove(\"is-active\");\n updateAriaExpanded(false);\n setTabindexBatch(state.menuItems, \"-1\");\n state.currentIndex = -1;\n if (restoreFocus) {\n trigger.focus();\n }\n };\n const toggleDropdown = (focusFirst = false) => {\n const isActive = dropdown.classList.toggle(\"is-active\");\n updateAriaExpanded(isActive);\n if (!isActive) {\n state.currentIndex = -1;\n setTabindexBatch(state.menuItems, \"-1\");\n for (const menuItem of state.menuItems) {\n const isActiveItem = menuItem.classList.contains(\"is-active\");\n setItemActiveState(menuItem, isActiveItem);\n }\n } else if (focusFirst && state.menuItems.length > 0) {\n focusMenuItem(0);\n }\n };\n return { updateAriaExpanded, focusMenuItem, closeDropdown, toggleDropdown };\n}\nfunction getNextIndex(currentIndex, totalItems) {\n return currentIndex < totalItems - 1 ? currentIndex + 1 : 0;\n}\nfunction getPrevIndex(currentIndex, totalItems) {\n return currentIndex > 0 ? currentIndex - 1 : totalItems - 1;\n}\nfunction handleTriggerKeydown(e, dropdown, state, stateManager) {\n const { focusMenuItem, toggleDropdown, updateAriaExpanded } = stateManager;\n const totalItems = state.menuItems.length;\n switch (e.key) {\n case \"Enter\":\n case \" \":\n e.preventDefault();\n toggleDropdown(!dropdown.classList.contains(\"is-active\"));\n break;\n case \"ArrowDown\":\n e.preventDefault();\n if (!dropdown.classList.contains(\"is-active\")) {\n dropdown.classList.add(\"is-active\");\n updateAriaExpanded(true);\n focusMenuItem(0);\n } else {\n const nextIndex = state.currentIndex < 0 ? 0 : getNextIndex(state.currentIndex, totalItems);\n focusMenuItem(nextIndex);\n }\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (!dropdown.classList.contains(\"is-active\")) {\n dropdown.classList.add(\"is-active\");\n updateAriaExpanded(true);\n focusMenuItem(totalItems - 1);\n } else {\n const startIndex = state.currentIndex < 0 ? totalItems - 1 : state.currentIndex;\n focusMenuItem(getPrevIndex(startIndex, totalItems));\n }\n break;\n }\n}\nfunction handleMenuItemKeydown(e, index, item, state, stateManager) {\n const { focusMenuItem, closeDropdown } = stateManager;\n const totalItems = state.menuItems.length;\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n focusMenuItem(getNextIndex(index, totalItems));\n break;\n case \"ArrowUp\":\n e.preventDefault();\n focusMenuItem(getPrevIndex(index, totalItems));\n break;\n case \"Escape\":\n e.preventDefault();\n closeDropdown();\n break;\n case \"Enter\":\n case \" \":\n e.preventDefault();\n item.click();\n break;\n case \"Home\":\n e.preventDefault();\n focusMenuItem(0);\n break;\n case \"End\":\n e.preventDefault();\n focusMenuItem(totalItems - 1);\n break;\n }\n}\nfunction wireDropdownEventHandlers(documentObj, elements, state, stateManager, abortController) {\n const { trigger, dropdown } = elements;\n const { closeDropdown, toggleDropdown } = stateManager;\n const signal = abortController.signal;\n trigger.addEventListener(\n \"click\",\n (e) => {\n e.preventDefault();\n toggleDropdown();\n },\n { signal }\n );\n documentObj.addEventListener(\n \"click\",\n (e) => {\n if (!dropdown.contains(e.target)) {\n closeDropdown({ restoreFocus: false });\n }\n },\n { signal }\n );\n documentObj.addEventListener(\n \"keydown\",\n (e) => {\n if (e.key === \"Escape\" && dropdown.classList.contains(\"is-active\")) {\n closeDropdown({ restoreFocus: true });\n }\n },\n { signal }\n );\n trigger.addEventListener(\n \"keydown\",\n (e) => handleTriggerKeydown(e, dropdown, state, stateManager),\n { signal }\n );\n for (const [index, item] of state.menuItems.entries()) {\n item.addEventListener(\n \"keydown\",\n (e) => handleMenuItemKeydown(e, index, item, state, stateManager),\n { signal }\n );\n }\n}\nfunction createCheckmarkIcon(doc) {\n const svg = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"width\", \"16\");\n svg.setAttribute(\"height\", \"16\");\n svg.setAttribute(\"viewBox\", \"0 0 24 24\");\n svg.setAttribute(\"fill\", \"none\");\n svg.setAttribute(\"stroke\", \"currentColor\");\n svg.setAttribute(\"stroke-width\", \"3\");\n svg.setAttribute(\"stroke-linecap\", \"round\");\n svg.setAttribute(\"stroke-linejoin\", \"round\");\n const polyline = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"polyline\");\n polyline.setAttribute(\"points\", \"20 6 9 17 4 12\");\n svg.appendChild(polyline);\n return svg;\n}\nfunction createThemeItemElement(ctx, theme, familyMeta) {\n const { documentObj, baseUrl, currentThemeId, selectEl, closeDropdown, onThemeSelect } = ctx;\n const item = documentObj.createElement(\"button\");\n item.type = \"button\";\n item.className = \"dropdown-item theme-item\";\n item.setAttribute(\"data-theme-id\", theme.id);\n item.setAttribute(\"data-appearance\", theme.appearance);\n item.setAttribute(\"role\", \"menuitemradio\");\n item.setAttribute(\n \"aria-label\",\n `${familyMeta.name} ${theme.name} (${theme.appearance}). ${theme.description}`\n );\n item.setAttribute(\"tabindex\", \"-1\");\n const isActive = theme.id === currentThemeId;\n setItemActiveState(item, isActive);\n if (theme.icon) {\n const icon = documentObj.createElement(\"img\");\n icon.className = \"theme-icon\";\n icon.src = baseUrl ? `${baseUrl}/${theme.icon}` : theme.icon;\n icon.alt = `${familyMeta.name} ${theme.name}`;\n icon.width = 24;\n icon.height = 24;\n item.appendChild(icon);\n } else {\n const placeholder = documentObj.createElement(\"span\");\n placeholder.className = \"theme-icon theme-icon-placeholder\";\n placeholder.setAttribute(\"aria-hidden\", \"true\");\n item.appendChild(placeholder);\n }\n const copy = documentObj.createElement(\"div\");\n copy.className = \"theme-copy\";\n const titleEl = documentObj.createElement(\"span\");\n titleEl.className = \"theme-title\";\n titleEl.textContent = `${familyMeta.name} · ${theme.name}`;\n copy.appendChild(titleEl);\n const descriptionEl = documentObj.createElement(\"span\");\n descriptionEl.className = \"theme-description\";\n descriptionEl.textContent = theme.description;\n copy.appendChild(descriptionEl);\n item.appendChild(copy);\n const check = documentObj.createElement(\"span\");\n check.className = \"theme-check\";\n check.appendChild(createCheckmarkIcon(documentObj));\n item.appendChild(check);\n item.addEventListener(\"click\", (e) => {\n e.preventDefault();\n onThemeSelect(theme.id);\n if (selectEl) {\n selectEl.value = theme.id;\n selectEl.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n closeDropdown({ restoreFocus: true });\n });\n return item;\n}\nfunction createFamilyGroup(ctx, familyKey, themes2, familyMeta, animationDelay) {\n const { documentObj } = ctx;\n if (themes2.length === 0) return null;\n const items = [];\n const group = documentObj.createElement(\"div\");\n group.className = \"theme-family-group\";\n group.setAttribute(\"role\", \"group\");\n group.setAttribute(\"aria-labelledby\", `theme-family-${familyKey}`);\n if (group.style && typeof group.style.setProperty === \"function\") {\n group.style.setProperty(\"--animation-delay\", `${animationDelay}ms`);\n }\n const header = documentObj.createElement(\"div\");\n header.className = \"theme-family-header\";\n header.id = `theme-family-${familyKey}`;\n const headerTitle = documentObj.createElement(\"span\");\n headerTitle.className = \"theme-family-name\";\n headerTitle.textContent = familyMeta.name;\n header.appendChild(headerTitle);\n group.appendChild(header);\n const themesContainer = documentObj.createElement(\"div\");\n themesContainer.className = \"theme-family-items\";\n themes2.forEach((theme) => {\n const item = createThemeItemElement(ctx, theme, familyMeta);\n items.push(item);\n themesContainer.appendChild(item);\n });\n group.appendChild(themesContainer);\n return { group, items };\n}\nfunction populateDropdownMenu(ctx, dropdownMenu, themes2, themeFamilies) {\n const families = Object.keys(themeFamilies);\n let animationDelay = 0;\n families.forEach((familyKey) => {\n const familyThemes = themes2.filter((t) => t.family === familyKey);\n const familyMeta = themeFamilies[familyKey];\n if (!familyMeta) return;\n const result = createFamilyGroup(ctx, familyKey, familyThemes, familyMeta, animationDelay);\n if (result) {\n ctx.menuItems.push(...result.items);\n dropdownMenu.appendChild(result.group);\n animationDelay += 30;\n }\n });\n}\nfunction wireNativeSelect(ctx, selectEl, themes2, defaultTheme) {\n const { documentObj, onThemeSelect } = ctx;\n while (selectEl.firstChild) {\n selectEl.removeChild(selectEl.firstChild);\n }\n themes2.forEach((theme) => {\n const option = documentObj.createElement(\"option\");\n option.value = theme.id;\n option.textContent = theme.name;\n option.selected = theme.id === ctx.currentThemeId;\n selectEl.appendChild(option);\n });\n selectEl.disabled = false;\n selectEl.addEventListener(\"change\", (event) => {\n const target = event.target;\n const selectedThemeId = target?.value || defaultTheme;\n onThemeSelect(selectedThemeId);\n });\n}\nfunction getDropdownElements(documentObj) {\n const dropdownMenu = documentObj.getElementById(DOM_IDS.THEME_FLAVOR_MENU);\n const trigger = documentObj.getElementById(\n DOM_IDS.THEME_FLAVOR_TRIGGER\n );\n const dropdown = trigger?.closest(DOM_SELECTORS.NAVBAR_DROPDOWN);\n const selectEl = documentObj.getElementById(\n DOM_IDS.THEME_FLAVOR_SELECT\n );\n if (!dropdownMenu || !trigger || !dropdown) {\n return null;\n }\n return { dropdownMenu, trigger, dropdown, selectEl };\n}\nfunction normalizePath(path) {\n return path.replace(/\\/$/, \"\") || \"/\";\n}\nfunction initNavbar(documentObj) {\n const currentPath = documentObj.location.pathname;\n const normalizedCurrentPath = normalizePath(currentPath);\n const navbarItems = documentObj.querySelectorAll(DOM_SELECTORS.NAVBAR_ITEM);\n let matchingItem = null;\n const itemsToDeactivate = [];\n navbarItems.forEach((item) => {\n const link = item;\n if (!link.href) return;\n try {\n const normalizedLinkPath = normalizePath(new URL(link.href).pathname);\n if (normalizedCurrentPath === normalizedLinkPath) {\n matchingItem = item;\n } else {\n itemsToDeactivate.push(item);\n }\n } catch {\n }\n });\n for (const item of itemsToDeactivate) {\n item.classList.remove(\"is-active\");\n item.removeAttribute(\"aria-current\");\n }\n if (matchingItem) {\n matchingItem.classList.add(\"is-active\");\n matchingItem.setAttribute(\"aria-current\", \"page\");\n }\n const reportsLink = documentObj.querySelector(DOM_SELECTORS.NAV_REPORTS);\n if (reportsLink) {\n const reportPaths = [\n \"/coverage\",\n \"/coverage-python\",\n \"/coverage-swift\",\n \"/coverage-ruby\",\n \"/playwright\",\n \"/playwright-examples\",\n \"/lighthouse\"\n ];\n const isOnReportsPage = reportPaths.some(\n (path) => normalizedCurrentPath === path || normalizedCurrentPath.startsWith(path + \"/\")\n );\n if (isOnReportsPage) {\n reportsLink.classList.add(\"is-active\");\n } else {\n reportsLink.classList.remove(\"is-active\");\n }\n }\n}\nif (typeof window !== \"undefined\") {\n window.initNavbar = initNavbar;\n}\nfunction enhanceAccessibility(documentObj) {\n documentObj.querySelectorAll(DOM_SELECTORS.HIGHLIGHT_PRE).forEach((pre) => {\n if (!pre.hasAttribute(\"tabindex\")) pre.setAttribute(\"tabindex\", \"0\");\n if (!pre.hasAttribute(\"role\")) pre.setAttribute(\"role\", \"region\");\n if (!pre.hasAttribute(\"aria-label\")) pre.setAttribute(\"aria-label\", \"Code block\");\n });\n}\nasync function initTheme(documentObj, windowObj) {\n migrateLegacyStorage(windowObj);\n const initialTheme = windowObj.__INITIAL_THEME__;\n const savedTheme = getSavedTheme(windowObj, getValidThemeIds());\n if (initialTheme && initialTheme === savedTheme) {\n const currentTheme = getCurrentThemeFromClasses(documentObj.documentElement);\n if (currentTheme === savedTheme) {\n const themeLinkId = `theme-${savedTheme}-css`;\n const themeLink = documentObj.getElementById(themeLinkId);\n if (!themeLink) {\n await applyTheme(documentObj, savedTheme);\n }\n return;\n }\n }\n await applyTheme(documentObj, savedTheme);\n}\nasync function wireFlavorSelector(documentObj, windowObj) {\n const abortController = new AbortController();\n const elements = getDropdownElements(documentObj);\n if (!elements) {\n return { cleanup: () => abortController.abort() };\n }\n const { dropdownMenu, selectEl } = elements;\n const baseUrl = getBaseUrl(documentObj);\n const themes2 = getThemes();\n const state = {\n currentIndex: -1,\n menuItems: []\n };\n const currentThemeId = getSavedTheme(windowObj, getValidThemeIds()) || getCurrentTheme(documentObj, DEFAULT_THEME);\n const stateManager = createDropdownStateManager(elements, state);\n const ctx = {\n documentObj,\n baseUrl,\n currentThemeId,\n selectEl,\n menuItems: state.menuItems,\n closeDropdown: stateManager.closeDropdown,\n onThemeSelect: async (themeId) => {\n saveTheme(windowObj, themeId, getValidThemeIds());\n await applyTheme(documentObj, themeId);\n }\n };\n if (selectEl) {\n wireNativeSelect(ctx, selectEl, themes2, DEFAULT_THEME);\n }\n populateDropdownMenu(ctx, dropdownMenu, themes2, THEME_FAMILIES);\n wireDropdownEventHandlers(documentObj, elements, state, stateManager, abortController);\n stateManager.updateAriaExpanded(false);\n elements.dropdown.classList.remove(\"is-active\");\n return { cleanup: () => abortController.abort() };\n}\nif (typeof document !== \"undefined\" && typeof window !== \"undefined\") {\n document.addEventListener(\"DOMContentLoaded\", async () => {\n try {\n await initTheme(document, window);\n const { cleanup } = await wireFlavorSelector(document, window);\n enhanceAccessibility(document);\n const pagehideHandler = () => {\n cleanup();\n window.removeEventListener(\"pagehide\", pagehideHandler);\n };\n window.addEventListener(\"pagehide\", pagehideHandler);\n } catch (error) {\n logThemeError(ThemeErrors.INIT_FAILED(error));\n }\n });\n}\nexport {\n enhanceAccessibility,\n initNavbar,\n initTheme,\n wireFlavorSelector\n};\n//# sourceMappingURL=index.js.map\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme-selector.js","sources":["../../packages/theme-selector/dist/index.js"],"sourcesContent":["const STORAGE_KEY = \"turbo-theme\";\nconst LEGACY_STORAGE_KEYS = [\"bulma-theme-flavor\"];\nconst DEFAULT_THEME = \"catppuccin-mocha\";\nconst DOM_IDS = {\n THEME_FLAVOR_TRIGGER: \"theme-flavor-trigger\",\n THEME_FLAVOR_TRIGGER_ICON: \"theme-flavor-trigger-icon\",\n THEME_FLAVOR_TRIGGER_LABEL: \"theme-flavor-trigger-label\",\n THEME_FLAVOR_MENU: \"theme-flavor-menu\",\n THEME_FLAVOR_SELECT: \"theme-flavor-select\"\n};\nconst DOM_SELECTORS = {\n DROPDOWN_ITEMS: `#${DOM_IDS.THEME_FLAVOR_MENU} .dropdown-item.theme-item`,\n NAVBAR_DROPDOWN: \".navbar-item.has-dropdown\",\n NAV_REPORTS: '[data-testid=\"nav-reports\"]',\n NAVBAR_ITEM: \".navbar-item\",\n HIGHLIGHT_PRE: \".highlight > pre\",\n THEME_CSS_LINKS: 'link[id^=\"theme-\"][id$=\"-css\"]'\n};\nconst THEME_FAMILIES = {\n bulma: { name: \"Bulma\", description: \"Classic Bulma themes\" },\n catppuccin: { name: \"Catppuccin\", description: \"Soothing pastel themes\" },\n github: { name: \"GitHub\", description: \"GitHub-inspired themes\" },\n dracula: { name: \"Dracula\", description: \"Dark vampire aesthetic\" },\n nord: { name: \"Nord\", description: \"Arctic, north-bluish color palette\" },\n \"rose-pine\": { name: \"Rosé Pine\", description: \"All natural pine, faux fur and a bit of soho vibes\" },\n solarized: { name: \"Solarized\", description: \"Precision-balanced light and dark modes\" }\n};\nconst LOG_PREFIX = \"[turbo-themes]\";\nconst ThemeErrors = {\n /** Invalid theme ID provided */\n INVALID_THEME_ID: (themeId) => ({\n code: \"INVALID_THEME_ID\",\n message: `Invalid theme ID \"${themeId}\" not saved to storage`,\n level: \"warn\",\n context: { themeId }\n }),\n /** No themes available in registry */\n NO_THEMES_AVAILABLE: () => ({\n code: \"NO_THEMES_AVAILABLE\",\n message: \"No themes available\",\n level: \"error\"\n /* ERROR */\n }),\n /** Invalid theme icon path */\n INVALID_ICON_PATH: (themeId) => ({\n code: \"INVALID_ICON_PATH\",\n message: `Invalid theme icon path for ${themeId}`,\n level: \"warn\",\n context: { themeId }\n }),\n /** Theme initialization failed */\n INIT_FAILED: (error) => ({\n code: \"INIT_FAILED\",\n message: \"Theme switcher initialization failed\",\n level: \"error\",\n context: { error: error instanceof Error ? error.message : String(error) }\n }),\n /** Protocol-relative URL rejected for security */\n PROTOCOL_REJECTED: () => ({\n code: \"PROTOCOL_REJECTED\",\n message: \"Protocol-relative base URL rejected for security\",\n level: \"warn\"\n /* WARN */\n }),\n /** Insecure HTTP URL rejected */\n INSECURE_HTTP_REJECTED: () => ({\n code: \"INSECURE_HTTP_REJECTED\",\n message: \"Insecure HTTP base URL rejected\",\n level: \"warn\"\n /* WARN */\n }),\n /** Cross-origin URL rejected */\n CROSS_ORIGIN_REJECTED: (origin) => ({\n code: \"CROSS_ORIGIN_REJECTED\",\n message: `Cross-origin base URL rejected: ${origin}`,\n level: \"warn\",\n context: { origin }\n }),\n /** Invalid CSS path for theme */\n INVALID_CSS_PATH: (themeId) => ({\n code: \"INVALID_CSS_PATH\",\n message: `Invalid theme CSS path for ${themeId}`,\n level: \"warn\",\n context: { themeId }\n }),\n /** CSS failed to load */\n CSS_LOAD_FAILED: (themeId, error) => ({\n code: \"CSS_LOAD_FAILED\",\n message: `Theme CSS failed to load for ${themeId}`,\n level: \"warn\",\n context: {\n themeId,\n error: error instanceof Error ? error.message : String(error)\n }\n }),\n /** Storage unavailable (private browsing or disabled) */\n STORAGE_UNAVAILABLE: (operation, error) => ({\n code: \"STORAGE_UNAVAILABLE\",\n message: `localStorage ${operation} failed - storage may be unavailable`,\n level: \"warn\",\n context: {\n operation,\n error: error instanceof Error ? error.message : String(error)\n }\n })\n};\nfunction logThemeError(themeError) {\n const prefixedMessage = `${LOG_PREFIX} ${themeError.message}`;\n if (themeError.level === \"error\") {\n if (themeError.context) {\n console.error(prefixedMessage, themeError.context);\n } else {\n console.error(prefixedMessage);\n }\n } else {\n if (themeError.context) {\n console.warn(prefixedMessage, themeError.context);\n } else {\n console.warn(prefixedMessage);\n }\n }\n}\nfunction safeGetItem(windowObj, key) {\n try {\n return windowObj.localStorage.getItem(key);\n } catch (error) {\n logThemeError(ThemeErrors.STORAGE_UNAVAILABLE(\"getItem\", error));\n return null;\n }\n}\nfunction safeSetItem(windowObj, key, value) {\n try {\n windowObj.localStorage.setItem(key, value);\n return true;\n } catch (error) {\n logThemeError(ThemeErrors.STORAGE_UNAVAILABLE(\"setItem\", error));\n return false;\n }\n}\nfunction safeRemoveItem(windowObj, key) {\n try {\n windowObj.localStorage.removeItem(key);\n } catch (error) {\n logThemeError(ThemeErrors.STORAGE_UNAVAILABLE(\"removeItem\", error));\n }\n}\nfunction validateThemeId(themeId, validIds) {\n if (themeId && validIds.has(themeId)) {\n return themeId;\n }\n return DEFAULT_THEME;\n}\nfunction migrateLegacyStorage(windowObj) {\n for (const legacyKey of LEGACY_STORAGE_KEYS) {\n const legacy = safeGetItem(windowObj, legacyKey);\n if (legacy && !safeGetItem(windowObj, STORAGE_KEY)) {\n safeSetItem(windowObj, STORAGE_KEY, legacy);\n safeRemoveItem(windowObj, legacyKey);\n }\n }\n}\nfunction getSavedTheme(windowObj, validIds) {\n const stored = safeGetItem(windowObj, STORAGE_KEY);\n if (validIds) {\n return validateThemeId(stored, validIds);\n }\n return stored || DEFAULT_THEME;\n}\nfunction saveTheme(windowObj, themeId, validIds) {\n if (validIds && !validIds.has(themeId)) {\n logThemeError(ThemeErrors.INVALID_THEME_ID(themeId));\n return false;\n }\n return safeSetItem(windowObj, STORAGE_KEY, themeId);\n}\nfunction resolveAssetPath(assetPath, baseUrl) {\n const normalizedBase = baseUrl.replace(/\\/$/, \"\");\n const base = normalizedBase ? `${window.location.origin}${normalizedBase}/` : `${window.location.origin}/`;\n return new URL(assetPath, base).pathname;\n}\nfunction getBaseUrl(doc) {\n const baseElement = doc.documentElement;\n const raw = baseElement?.getAttribute(\"data-baseurl\") || \"\";\n if (!raw) return \"\";\n if (raw.startsWith(\"//\")) {\n logThemeError(ThemeErrors.PROTOCOL_REJECTED());\n return \"\";\n }\n if (raw.startsWith(\"http://\") && !raw.startsWith(\"http://localhost\")) {\n logThemeError(ThemeErrors.INSECURE_HTTP_REJECTED());\n return \"\";\n }\n try {\n const currentOrigin = typeof window !== \"undefined\" ? window.location.origin : \"http://localhost\";\n const u = new URL(raw, currentOrigin);\n if (u.origin !== currentOrigin) {\n logThemeError(ThemeErrors.CROSS_ORIGIN_REJECTED(u.origin));\n return \"\";\n }\n return u.pathname.replace(/\\/$/, \"\");\n } catch {\n return \"\";\n }\n}\nfunction clearLinkHandlers(link) {\n link.onload = null;\n link.onerror = null;\n}\nfunction loadCSSWithTimeout(link, themeId, timeoutMs = 1e4) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n clearLinkHandlers(link);\n reject(new Error(`Theme ${themeId} load timeout`));\n }, timeoutMs);\n link.onload = () => {\n clearTimeout(timeoutId);\n clearLinkHandlers(link);\n resolve();\n };\n link.onerror = () => {\n clearTimeout(timeoutId);\n clearLinkHandlers(link);\n reject(new Error(`Failed to load theme ${themeId}`));\n };\n });\n}\nfunction getCurrentThemeFromClasses(element) {\n const classList = Array.from(element.classList);\n for (const className of classList) {\n if (className.startsWith(\"theme-\")) {\n return className.substring(6);\n }\n }\n return null;\n}\nfunction applyThemeClass(doc, themeId) {\n const themeClasses = Array.from(doc.documentElement.classList).filter(\n (className) => className.startsWith(\"theme-\")\n );\n if (themeClasses.length > 0) {\n doc.documentElement.classList.remove(...themeClasses);\n }\n doc.documentElement.classList.add(`theme-${themeId}`);\n}\nasync function loadThemeCSS(doc, theme, baseUrl) {\n const themeLinkId = `theme-${theme.id}-css`;\n let themeLink = doc.getElementById(themeLinkId);\n if (!themeLink) {\n themeLink = doc.createElement(\"link\");\n themeLink.id = themeLinkId;\n themeLink.rel = \"stylesheet\";\n themeLink.type = \"text/css\";\n themeLink.setAttribute(\"data-theme-id\", theme.id);\n try {\n themeLink.href = resolveAssetPath(theme.cssFile, baseUrl);\n } catch {\n logThemeError(ThemeErrors.INVALID_CSS_PATH(theme.id));\n return;\n }\n doc.head.appendChild(themeLink);\n try {\n await loadCSSWithTimeout(themeLink, theme.id);\n } catch (error) {\n logThemeError(ThemeErrors.CSS_LOAD_FAILED(theme.id, error));\n }\n }\n doc.querySelectorAll(DOM_SELECTORS.THEME_CSS_LINKS).forEach((link) => {\n const linkThemeId = link.id.replace(\"theme-\", \"\").replace(\"-css\", \"\");\n if (linkThemeId !== theme.id && linkThemeId !== \"base\") {\n link.remove();\n }\n });\n}\nfunction setItemActiveState(item, isActive) {\n if (isActive) {\n item.classList.add(\"is-active\");\n } else {\n item.classList.remove(\"is-active\");\n }\n item.setAttribute(\"aria-checked\", String(isActive));\n}\nfunction setTabindexBatch(items, value) {\n for (const item of items) {\n item.setAttribute(\"tabindex\", value);\n }\n}\nconst themes = /* @__PURE__ */ JSON.parse('{\"bulma-dark\":{\"id\":\"bulma-dark\",\"label\":\"Bulma Dark\",\"vendor\":\"bulma\",\"appearance\":\"dark\",\"tokens\":{\"background\":{\"base\":\"#141414\",\"surface\":\"#1f1f1f\",\"overlay\":\"#2b2b2b\"},\"text\":{\"primary\":\"#f5f5f5\",\"secondary\":\"#dbdbdb\",\"inverse\":\"#141414\"},\"brand\":{\"primary\":\"#00d1b2\"},\"state\":{\"info\":\"#3e8ed0\",\"success\":\"#48c78e\",\"warning\":\"#ffe08a\",\"danger\":\"#f14668\"},\"border\":{\"default\":\"#363636\"},\"accent\":{\"link\":\"#485fc7\"},\"typography\":{\"fonts\":{\"sans\":\"\\\\\"Nunito Sans\\\\\", BlinkMacSystemFont, -apple-system, \\\\\"Segoe UI\\\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\\\"Fira Sans\\\\\", \\\\\"Droid Sans\\\\\", \\\\\"Helvetica Neue\\\\\", Helvetica, Arial, sans-serif\",\"mono\":\"\\\\\"JetBrains Mono\\\\\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,opsz,wght@0,6..12,400;0,6..12,600;0,6..12,700;1,6..12,400&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#00d1b2\",\"h2\":\"#7289da\",\"h3\":\"#5dade2\",\"h4\":\"#58d68d\",\"h5\":\"#f7dc6f\",\"h6\":\"#f1948a\"},\"body\":{\"primary\":\"#dbdbdb\",\"secondary\":\"#b5b5b5\"},\"link\":{\"default\":\"#485fc7\"},\"selection\":{\"fg\":\"#f5f5f5\",\"bg\":\"#3273dc\"},\"blockquote\":{\"border\":\"#363636\",\"fg\":\"#dbdbdb\",\"bg\":\"#1f1f1f\"},\"codeInline\":{\"fg\":\"#f14668\",\"bg\":\"#2b2b2b\"},\"codeBlock\":{\"fg\":\"#f5f5f5\",\"bg\":\"#2b2b2b\"},\"table\":{\"border\":\"#404040\",\"stripe\":\"#1c1c1c\",\"theadBg\":\"#2d2d2d\",\"cellBg\":\"#1a1a1a\",\"headerFg\":\"#f5f5f5\"}},\"spacing\":{\"xs\":\"0.25rem\",\"sm\":\"0.5rem\",\"md\":\"1rem\",\"lg\":\"1.5rem\",\"xl\":\"2rem\"},\"elevation\":{\"none\":\"none\",\"sm\":\"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\"md\":\"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\"lg\":\"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\"xl\":\"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\"},\"animation\":{\"durationFast\":\"150ms\",\"durationNormal\":\"300ms\",\"durationSlow\":\"500ms\",\"easingDefault\":\"cubic-bezier(0.4, 0, 0.2, 1)\",\"easingEmphasized\":\"cubic-bezier(0.05, 0.7, 0.1, 1)\"},\"opacity\":{\"disabled\":0.5,\"hover\":0.8,\"pressed\":0.6},\"components\":{\"card\":{\"bg\":\"#1c1c1c\",\"border\":\"#3a3a3a\",\"headerBg\":\"#252525\",\"footerBg\":\"#1f1f1f\"},\"message\":{\"bg\":\"#1f1f1f\",\"headerBg\":\"#2a2a2a\",\"border\":\"#404040\",\"bodyFg\":\"#e0e0e0\"},\"panel\":{\"bg\":\"#1c1c1c\",\"headerBg\":\"#2a2a2a\",\"headerFg\":\"#f5f5f5\",\"border\":\"#3a3a3a\",\"blockBg\":\"#1f1f1f\",\"blockHoverBg\":\"#262626\",\"blockActiveBg\":\"#2d3748\"},\"box\":{\"bg\":\"#1c1c1c\",\"border\":\"#3a3a3a\"},\"notification\":{\"bg\":\"#252525\",\"border\":\"#404040\"},\"modal\":{\"bg\":\"rgba(0, 0, 0, 0.86)\",\"cardBg\":\"#1c1c1c\",\"headerBg\":\"#252525\",\"footerBg\":\"#1f1f1f\"},\"dropdown\":{\"bg\":\"#1c1c1c\",\"itemHoverBg\":\"#2a2a2a\",\"border\":\"#404040\"},\"tabs\":{\"border\":\"#404040\",\"linkBg\":\"#252525\",\"linkActiveBg\":\"#1c1c1c\",\"linkHoverBg\":\"#2a2a2a\"}}}},\"bulma-light\":{\"id\":\"bulma-light\",\"label\":\"Bulma Light\",\"vendor\":\"bulma\",\"appearance\":\"light\",\"tokens\":{\"background\":{\"base\":\"#ffffff\",\"surface\":\"#f5f5f5\",\"overlay\":\"#eeeeee\"},\"text\":{\"primary\":\"#363636\",\"secondary\":\"#4a4a4a\",\"inverse\":\"#ffffff\"},\"brand\":{\"primary\":\"#00d1b2\"},\"state\":{\"info\":\"#3e8ed0\",\"success\":\"#48c78e\",\"warning\":\"#ffe08a\",\"danger\":\"#f14668\"},\"border\":{\"default\":\"#dbdbdb\"},\"accent\":{\"link\":\"#485fc7\"},\"typography\":{\"fonts\":{\"sans\":\"\\\\\"Nunito Sans\\\\\", BlinkMacSystemFont, -apple-system, \\\\\"Segoe UI\\\\\", Roboto, Oxygen, Ubuntu, Cantarell, \\\\\"Fira Sans\\\\\", \\\\\"Droid Sans\\\\\", \\\\\"Helvetica Neue\\\\\", Helvetica, Arial, sans-serif\",\"mono\":\"\\\\\"JetBrains Mono\\\\\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,opsz,wght@0,6..12,400;0,6..12,600;0,6..12,700;1,6..12,400&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#00d1b2\",\"h2\":\"#485fc7\",\"h3\":\"#3e8ed0\",\"h4\":\"#48c78e\",\"h5\":\"#ffe08a\",\"h6\":\"#f14668\"},\"body\":{\"primary\":\"#4a4a4a\",\"secondary\":\"#6b6b6b\"},\"link\":{\"default\":\"#485fc7\"},\"selection\":{\"fg\":\"#363636\",\"bg\":\"#b5d5ff\"},\"blockquote\":{\"border\":\"#dbdbdb\",\"fg\":\"#4a4a4a\",\"bg\":\"#f5f5f5\"},\"codeInline\":{\"fg\":\"#f14668\",\"bg\":\"#f5f5f5\"},\"codeBlock\":{\"fg\":\"#363636\",\"bg\":\"#f5f5f5\"},\"table\":{\"border\":\"#dbdbdb\",\"stripe\":\"#fafafa\",\"theadBg\":\"#f0f0f0\",\"cellBg\":\"#ffffff\",\"headerFg\":\"#363636\"}},\"spacing\":{\"xs\":\"0.25rem\",\"sm\":\"0.5rem\",\"md\":\"1rem\",\"lg\":\"1.5rem\",\"xl\":\"2rem\"},\"elevation\":{\"none\":\"none\",\"sm\":\"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\"md\":\"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\"lg\":\"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\"xl\":\"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\"},\"animation\":{\"durationFast\":\"150ms\",\"durationNormal\":\"300ms\",\"durationSlow\":\"500ms\",\"easingDefault\":\"cubic-bezier(0.4, 0, 0.2, 1)\",\"easingEmphasized\":\"cubic-bezier(0.05, 0.7, 0.1, 1)\"},\"opacity\":{\"disabled\":0.5,\"hover\":0.8,\"pressed\":0.6},\"components\":{\"card\":{\"bg\":\"#ffffff\",\"border\":\"#d5d5d5\",\"headerBg\":\"#f5f5f5\",\"footerBg\":\"#fafafa\"},\"message\":{\"bg\":\"#f8f9fa\",\"headerBg\":\"#eef1f4\",\"border\":\"#d5dbe1\",\"bodyFg\":\"#4a4a4a\"},\"panel\":{\"bg\":\"#ffffff\",\"headerBg\":\"#f0f0f0\",\"headerFg\":\"#363636\",\"border\":\"#d5d5d5\",\"blockBg\":\"#fafafa\",\"blockHoverBg\":\"#f5f5f5\",\"blockActiveBg\":\"#eef6fc\"},\"box\":{\"bg\":\"#ffffff\",\"border\":\"#e0e0e0\"},\"notification\":{\"bg\":\"#f5f5f5\",\"border\":\"#e0e0e0\"},\"modal\":{\"bg\":\"rgba(10, 10, 10, 0.86)\",\"cardBg\":\"#ffffff\",\"headerBg\":\"#f5f5f5\",\"footerBg\":\"#fafafa\"},\"dropdown\":{\"bg\":\"#ffffff\",\"itemHoverBg\":\"#f5f5f5\",\"border\":\"#dbdbdb\"},\"tabs\":{\"border\":\"#dbdbdb\",\"linkBg\":\"#f5f5f5\",\"linkActiveBg\":\"#ffffff\",\"linkHoverBg\":\"#eeeeee\"}}}},\"catppuccin-frappe\":{\"id\":\"catppuccin-frappe\",\"label\":\"Catppuccin Frappé\",\"vendor\":\"catppuccin\",\"appearance\":\"dark\",\"tokens\":{\"background\":{\"base\":\"#303446\",\"surface\":\"#292c3c\",\"overlay\":\"#232634\"},\"text\":{\"primary\":\"#c6d0f5\",\"secondary\":\"#a5adce\",\"inverse\":\"#303446\"},\"brand\":{\"primary\":\"#8caaee\"},\"state\":{\"info\":\"#99d1db\",\"success\":\"#a6d189\",\"warning\":\"#e5c890\",\"danger\":\"#e78284\"},\"border\":{\"default\":\"#737994\"},\"accent\":{\"link\":\"#8caaee\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#a6d189\",\"h2\":\"#8caaee\",\"h3\":\"#85c1dc\",\"h4\":\"#e5c890\",\"h5\":\"#ca9ee6\",\"h6\":\"#e78284\"},\"body\":{\"primary\":\"#c6d0f5\",\"secondary\":\"#a5adce\"},\"link\":{\"default\":\"#8caaee\"},\"selection\":{\"fg\":\"#c6d0f5\",\"bg\":\"#838ba7\"},\"blockquote\":{\"border\":\"#838ba7\",\"fg\":\"#c6d0f5\",\"bg\":\"#292c3c\"},\"codeInline\":{\"fg\":\"#c6d0f5\",\"bg\":\"#414559\"},\"codeBlock\":{\"fg\":\"#c6d0f5\",\"bg\":\"#414559\"},\"table\":{\"border\":\"#838ba7\",\"stripe\":\"#414559\",\"theadBg\":\"#51576d\"}}}},\"catppuccin-latte\":{\"id\":\"catppuccin-latte\",\"label\":\"Catppuccin Latte\",\"vendor\":\"catppuccin\",\"appearance\":\"light\",\"tokens\":{\"background\":{\"base\":\"#eff1f5\",\"surface\":\"#e6e9ef\",\"overlay\":\"#dce0e8\"},\"text\":{\"primary\":\"#4c4f69\",\"secondary\":\"#6c6f85\",\"inverse\":\"#eff1f5\"},\"brand\":{\"primary\":\"#1e66f5\"},\"state\":{\"info\":\"#04a5e5\",\"success\":\"#40a02b\",\"warning\":\"#df8e1d\",\"danger\":\"#d20f39\"},\"border\":{\"default\":\"#9ca0b0\"},\"accent\":{\"link\":\"#1e66f5\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#40a02b\",\"h2\":\"#1e66f5\",\"h3\":\"#209fb5\",\"h4\":\"#df8e1d\",\"h5\":\"#8839ef\",\"h6\":\"#d20f39\"},\"body\":{\"primary\":\"#4c4f69\",\"secondary\":\"#6c6f85\"},\"link\":{\"default\":\"#1e66f5\"},\"selection\":{\"fg\":\"#4c4f69\",\"bg\":\"#8c8fa1\"},\"blockquote\":{\"border\":\"#8c8fa1\",\"fg\":\"#4c4f69\",\"bg\":\"#e6e9ef\"},\"codeInline\":{\"fg\":\"#4c4f69\",\"bg\":\"#ccd0da\"},\"codeBlock\":{\"fg\":\"#4c4f69\",\"bg\":\"#ccd0da\"},\"table\":{\"border\":\"#8c8fa1\",\"stripe\":\"#ccd0da\",\"theadBg\":\"#bcc0cc\"}}}},\"catppuccin-macchiato\":{\"id\":\"catppuccin-macchiato\",\"label\":\"Catppuccin Macchiato\",\"vendor\":\"catppuccin\",\"appearance\":\"dark\",\"tokens\":{\"background\":{\"base\":\"#24273a\",\"surface\":\"#1e2030\",\"overlay\":\"#181926\"},\"text\":{\"primary\":\"#cad3f5\",\"secondary\":\"#a5adcb\",\"inverse\":\"#24273a\"},\"brand\":{\"primary\":\"#8aadf4\"},\"state\":{\"info\":\"#91d7e3\",\"success\":\"#a6da95\",\"warning\":\"#eed49f\",\"danger\":\"#ed8796\"},\"border\":{\"default\":\"#6e738d\"},\"accent\":{\"link\":\"#8aadf4\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#a6da95\",\"h2\":\"#8aadf4\",\"h3\":\"#7dc4e4\",\"h4\":\"#eed49f\",\"h5\":\"#c6a0f6\",\"h6\":\"#ed8796\"},\"body\":{\"primary\":\"#cad3f5\",\"secondary\":\"#a5adcb\"},\"link\":{\"default\":\"#8aadf4\"},\"selection\":{\"fg\":\"#cad3f5\",\"bg\":\"#8087a2\"},\"blockquote\":{\"border\":\"#8087a2\",\"fg\":\"#cad3f5\",\"bg\":\"#1e2030\"},\"codeInline\":{\"fg\":\"#cad3f5\",\"bg\":\"#363a4f\"},\"codeBlock\":{\"fg\":\"#cad3f5\",\"bg\":\"#363a4f\"},\"table\":{\"border\":\"#8087a2\",\"stripe\":\"#363a4f\",\"theadBg\":\"#494d64\"}}}},\"catppuccin-mocha\":{\"id\":\"catppuccin-mocha\",\"label\":\"Catppuccin Mocha\",\"vendor\":\"catppuccin\",\"appearance\":\"dark\",\"tokens\":{\"background\":{\"base\":\"#1e1e2e\",\"surface\":\"#181825\",\"overlay\":\"#11111b\"},\"text\":{\"primary\":\"#cdd6f4\",\"secondary\":\"#a6adc8\",\"inverse\":\"#1e1e2e\"},\"brand\":{\"primary\":\"#89b4fa\"},\"state\":{\"info\":\"#89dceb\",\"success\":\"#a6e3a1\",\"warning\":\"#f9e2af\",\"danger\":\"#f38ba8\"},\"border\":{\"default\":\"#6c7086\"},\"accent\":{\"link\":\"#89b4fa\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#a6e3a1\",\"h2\":\"#89b4fa\",\"h3\":\"#74c7ec\",\"h4\":\"#f9e2af\",\"h5\":\"#cba6f7\",\"h6\":\"#f38ba8\"},\"body\":{\"primary\":\"#cdd6f4\",\"secondary\":\"#a6adc8\"},\"link\":{\"default\":\"#89b4fa\"},\"selection\":{\"fg\":\"#cdd6f4\",\"bg\":\"#7f849c\"},\"blockquote\":{\"border\":\"#7f849c\",\"fg\":\"#cdd6f4\",\"bg\":\"#181825\"},\"codeInline\":{\"fg\":\"#cdd6f4\",\"bg\":\"#313244\"},\"codeBlock\":{\"fg\":\"#cdd6f4\",\"bg\":\"#313244\"},\"table\":{\"border\":\"#7f849c\",\"stripe\":\"#313244\",\"theadBg\":\"#45475a\"}}}},\"dracula\":{\"id\":\"dracula\",\"label\":\"Dracula\",\"vendor\":\"dracula\",\"appearance\":\"dark\",\"tokens\":{\"background\":{\"base\":\"#282a36\",\"surface\":\"#21222c\",\"overlay\":\"#44475a\"},\"text\":{\"primary\":\"#f8f8f2\",\"secondary\":\"#6272a4\",\"inverse\":\"#282a36\"},\"brand\":{\"primary\":\"#bd93f9\"},\"state\":{\"info\":\"#8be9fd\",\"success\":\"#50fa7b\",\"warning\":\"#f1fa8c\",\"danger\":\"#ff5555\"},\"border\":{\"default\":\"#44475a\"},\"accent\":{\"link\":\"#8be9fd\"},\"typography\":{\"fonts\":{\"sans\":\"ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \\\\\"Segoe UI\\\\\", Roboto, \\\\\"Helvetica Neue\\\\\", Arial, sans-serif\",\"mono\":\"\\\\\"Fira Code\\\\\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;600&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#ff79c6\",\"h2\":\"#bd93f9\",\"h3\":\"#8be9fd\",\"h4\":\"#50fa7b\",\"h5\":\"#ffb86c\",\"h6\":\"#f1fa8c\"},\"body\":{\"primary\":\"#f8f8f2\",\"secondary\":\"#6272a4\"},\"link\":{\"default\":\"#8be9fd\"},\"selection\":{\"fg\":\"#f8f8f2\",\"bg\":\"#44475a\"},\"blockquote\":{\"border\":\"#bd93f9\",\"fg\":\"#6272a4\",\"bg\":\"#21222c\"},\"codeInline\":{\"fg\":\"#50fa7b\",\"bg\":\"#21222c\"},\"codeBlock\":{\"fg\":\"#f8f8f2\",\"bg\":\"#21222c\"},\"table\":{\"border\":\"#44475a\",\"stripe\":\"#21222c\",\"theadBg\":\"#44475a\",\"cellBg\":\"#282a36\",\"headerFg\":\"#f8f8f2\"}},\"spacing\":{\"xs\":\"0.25rem\",\"sm\":\"0.5rem\",\"md\":\"1rem\",\"lg\":\"1.5rem\",\"xl\":\"2rem\"},\"elevation\":{\"none\":\"none\",\"sm\":\"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\"md\":\"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\"lg\":\"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\"xl\":\"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\"},\"animation\":{\"durationFast\":\"150ms\",\"durationNormal\":\"300ms\",\"durationSlow\":\"500ms\",\"easingDefault\":\"cubic-bezier(0.4, 0, 0.2, 1)\",\"easingEmphasized\":\"cubic-bezier(0.05, 0.7, 0.1, 1)\"},\"opacity\":{\"disabled\":0.5,\"hover\":0.8,\"pressed\":0.6},\"components\":{\"card\":{\"bg\":\"#21222c\",\"border\":\"#6272a4\",\"headerBg\":\"#282a36\",\"footerBg\":\"#21222c\"},\"message\":{\"bg\":\"#282a36\",\"headerBg\":\"#44475a\",\"border\":\"#6272a4\",\"bodyFg\":\"#f8f8f2\"},\"panel\":{\"bg\":\"#21222c\",\"headerBg\":\"#44475a\",\"headerFg\":\"#f8f8f2\",\"border\":\"#6272a4\",\"blockBg\":\"#282a36\",\"blockHoverBg\":\"#2e303e\",\"blockActiveBg\":\"#44475a\"},\"box\":{\"bg\":\"#21222c\",\"border\":\"#6272a4\"},\"notification\":{\"bg\":\"#282a36\",\"border\":\"#6272a4\"},\"modal\":{\"bg\":\"rgba(40, 42, 54, 0.9)\",\"cardBg\":\"#21222c\",\"headerBg\":\"#282a36\",\"footerBg\":\"#21222c\"},\"dropdown\":{\"bg\":\"#21222c\",\"itemHoverBg\":\"#2e303e\",\"border\":\"#6272a4\"},\"tabs\":{\"border\":\"#6272a4\",\"linkBg\":\"#2e303e\",\"linkActiveBg\":\"#21222c\",\"linkHoverBg\":\"#44475a\"}}}},\"github-dark\":{\"id\":\"github-dark\",\"label\":\"GitHub Dark\",\"vendor\":\"github\",\"appearance\":\"dark\",\"tokens\":{\"background\":{\"base\":\"#0d1117\",\"surface\":\"#151b23\",\"overlay\":\"#010409\"},\"text\":{\"primary\":\"#f0f6fc\",\"secondary\":\"#9198a1\",\"inverse\":\"#ffffff\"},\"brand\":{\"primary\":\"#1f6feb\"},\"state\":{\"info\":\"#4493f8\",\"success\":\"#3fb950\",\"warning\":\"#d29922\",\"danger\":\"#f85149\"},\"border\":{\"default\":\"#3d444d\"},\"accent\":{\"link\":\"#4493f8\"},\"typography\":{\"fonts\":{\"sans\":\"\\\\\"Mona Sans\\\\\", -apple-system, BlinkMacSystemFont, \\\\\"Segoe UI\\\\\", \\\\\"Noto Sans\\\\\", Helvetica, Arial, sans-serif, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"\\\\\"Hubot Sans\\\\\", ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, \\\\\"Liberation Mono\\\\\", monospace\"},\"webFonts\":[\"https://github.githubassets.com/assets/mona-sans-webfont.woff2\",\"https://github.githubassets.com/assets/hubot-sans-webfont.woff2\"]},\"content\":{\"heading\":{\"h1\":\"#3fb950\",\"h2\":\"#4493f8\",\"h3\":\"#1f6feb\",\"h4\":\"#d29922\",\"h5\":\"#3fb950\",\"h6\":\"#f85149\"},\"body\":{\"primary\":\"#f0f6fc\",\"secondary\":\"#9198a1\"},\"link\":{\"default\":\"#4493f8\"},\"selection\":{\"fg\":\"#f0f6fc\",\"bg\":\"#264f78\"},\"blockquote\":{\"border\":\"#3d444d\",\"fg\":\"#9198a1\",\"bg\":\"#151b23\"},\"codeInline\":{\"fg\":\"#f0f6fc\",\"bg\":\"#151b23\"},\"codeBlock\":{\"fg\":\"#f0f6fc\",\"bg\":\"#151b23\"},\"table\":{\"border\":\"#3d444d\",\"stripe\":\"#151b23\",\"theadBg\":\"#151b23\"}}}},\"github-light\":{\"id\":\"github-light\",\"label\":\"GitHub Light\",\"vendor\":\"github\",\"appearance\":\"light\",\"tokens\":{\"background\":{\"base\":\"#ffffff\",\"surface\":\"#f6f8fa\",\"overlay\":\"#f6f8fa\"},\"text\":{\"primary\":\"#1f2328\",\"secondary\":\"#59636e\",\"inverse\":\"#ffffff\"},\"brand\":{\"primary\":\"#0969da\"},\"state\":{\"info\":\"#0969da\",\"success\":\"#1a7f37\",\"warning\":\"#9a6700\",\"danger\":\"#d1242f\"},\"border\":{\"default\":\"#d1d9e0\"},\"accent\":{\"link\":\"#0969da\"},\"typography\":{\"fonts\":{\"sans\":\"\\\\\"Mona Sans\\\\\", -apple-system, BlinkMacSystemFont, \\\\\"Segoe UI\\\\\", \\\\\"Noto Sans\\\\\", Helvetica, Arial, sans-serif, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"\\\\\"Hubot Sans\\\\\", ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, \\\\\"Liberation Mono\\\\\", monospace\"},\"webFonts\":[\"https://github.githubassets.com/assets/mona-sans-webfont.woff2\",\"https://github.githubassets.com/assets/hubot-sans-webfont.woff2\"]},\"content\":{\"heading\":{\"h1\":\"#1a7f37\",\"h2\":\"#0969da\",\"h3\":\"#0969da\",\"h4\":\"#9a6700\",\"h5\":\"#1a7f37\",\"h6\":\"#d1242f\"},\"body\":{\"primary\":\"#1f2328\",\"secondary\":\"#59636e\"},\"link\":{\"default\":\"#0969da\"},\"selection\":{\"fg\":\"#1f2328\",\"bg\":\"#b6e3ff\"},\"blockquote\":{\"border\":\"#d1d9e0\",\"fg\":\"#59636e\",\"bg\":\"#f6f8fa\"},\"codeInline\":{\"fg\":\"#1f2328\",\"bg\":\"#f6f8fa\"},\"codeBlock\":{\"fg\":\"#1f2328\",\"bg\":\"#f6f8fa\"},\"table\":{\"border\":\"#d1d9e0\",\"stripe\":\"#f6f8fa\",\"theadBg\":\"#f6f8fa\"}}}},\"nord\":{\"id\":\"nord\",\"label\":\"Nord\",\"vendor\":\"nord\",\"appearance\":\"dark\",\"iconUrl\":\"/assets/img/nord.png\",\"tokens\":{\"background\":{\"base\":\"#2e3440\",\"surface\":\"#3b4252\",\"overlay\":\"#434c5e\"},\"text\":{\"primary\":\"#eceff4\",\"secondary\":\"#d8dee9\",\"inverse\":\"#2e3440\"},\"brand\":{\"primary\":\"#88c0d0\"},\"state\":{\"info\":\"#5e81ac\",\"success\":\"#a3be8c\",\"warning\":\"#ebcb8b\",\"danger\":\"#bf616a\"},\"border\":{\"default\":\"#4c566a\"},\"accent\":{\"link\":\"#88c0d0\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#8fbcbb\",\"h2\":\"#88c0d0\",\"h3\":\"#81a1c1\",\"h4\":\"#ebcb8b\",\"h5\":\"#d08770\",\"h6\":\"#b48ead\"},\"body\":{\"primary\":\"#eceff4\",\"secondary\":\"#d8dee9\"},\"link\":{\"default\":\"#88c0d0\"},\"selection\":{\"fg\":\"#eceff4\",\"bg\":\"#4c566a\"},\"blockquote\":{\"border\":\"#4c566a\",\"fg\":\"#d8dee9\",\"bg\":\"#3b4252\"},\"codeInline\":{\"fg\":\"#eceff4\",\"bg\":\"#434c5e\"},\"codeBlock\":{\"fg\":\"#eceff4\",\"bg\":\"#434c5e\"},\"table\":{\"border\":\"#4c566a\",\"stripe\":\"#434c5e\",\"theadBg\":\"#3b4252\"}}}},\"rose-pine-dawn\":{\"id\":\"rose-pine-dawn\",\"label\":\"Rosé Pine Dawn\",\"vendor\":\"rose-pine\",\"appearance\":\"light\",\"iconUrl\":\"/assets/img/rose-pine-dawn.png\",\"tokens\":{\"background\":{\"base\":\"#faf4ed\",\"surface\":\"#fffaf3\",\"overlay\":\"#f2e9e1\"},\"text\":{\"primary\":\"#575279\",\"secondary\":\"#797593\",\"inverse\":\"#faf4ed\"},\"brand\":{\"primary\":\"#907aa9\"},\"state\":{\"info\":\"#56949f\",\"success\":\"#286983\",\"warning\":\"#ea9d34\",\"danger\":\"#b4637a\"},\"border\":{\"default\":\"#dfdad9\"},\"accent\":{\"link\":\"#907aa9\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#286983\",\"h2\":\"#907aa9\",\"h3\":\"#56949f\",\"h4\":\"#ea9d34\",\"h5\":\"#d7827e\",\"h6\":\"#b4637a\"},\"body\":{\"primary\":\"#575279\",\"secondary\":\"#797593\"},\"link\":{\"default\":\"#907aa9\"},\"selection\":{\"fg\":\"#575279\",\"bg\":\"#cecacd\"},\"blockquote\":{\"border\":\"#cecacd\",\"fg\":\"#575279\",\"bg\":\"#fffaf3\"},\"codeInline\":{\"fg\":\"#575279\",\"bg\":\"#f2e9e1\"},\"codeBlock\":{\"fg\":\"#575279\",\"bg\":\"#f2e9e1\"},\"table\":{\"border\":\"#cecacd\",\"stripe\":\"#f2e9e1\",\"theadBg\":\"#dfdad9\"}}}},\"rose-pine-moon\":{\"id\":\"rose-pine-moon\",\"label\":\"Rosé Pine Moon\",\"vendor\":\"rose-pine\",\"appearance\":\"dark\",\"iconUrl\":\"/assets/img/rose-pine-moon.png\",\"tokens\":{\"background\":{\"base\":\"#232136\",\"surface\":\"#2a273f\",\"overlay\":\"#393552\"},\"text\":{\"primary\":\"#e0def4\",\"secondary\":\"#908caa\",\"inverse\":\"#232136\"},\"brand\":{\"primary\":\"#c4a7e7\"},\"state\":{\"info\":\"#9ccfd8\",\"success\":\"#3e8fb0\",\"warning\":\"#f6c177\",\"danger\":\"#eb6f92\"},\"border\":{\"default\":\"#44415a\"},\"accent\":{\"link\":\"#c4a7e7\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#3e8fb0\",\"h2\":\"#c4a7e7\",\"h3\":\"#9ccfd8\",\"h4\":\"#f6c177\",\"h5\":\"#ea9a97\",\"h6\":\"#eb6f92\"},\"body\":{\"primary\":\"#e0def4\",\"secondary\":\"#908caa\"},\"link\":{\"default\":\"#c4a7e7\"},\"selection\":{\"fg\":\"#e0def4\",\"bg\":\"#56526e\"},\"blockquote\":{\"border\":\"#56526e\",\"fg\":\"#e0def4\",\"bg\":\"#2a273f\"},\"codeInline\":{\"fg\":\"#e0def4\",\"bg\":\"#393552\"},\"codeBlock\":{\"fg\":\"#e0def4\",\"bg\":\"#393552\"},\"table\":{\"border\":\"#56526e\",\"stripe\":\"#393552\",\"theadBg\":\"#44415a\"}}}},\"rose-pine\":{\"id\":\"rose-pine\",\"label\":\"Rosé Pine\",\"vendor\":\"rose-pine\",\"appearance\":\"dark\",\"iconUrl\":\"/assets/img/rose-pine.png\",\"tokens\":{\"background\":{\"base\":\"#191724\",\"surface\":\"#1f1d2e\",\"overlay\":\"#26233a\"},\"text\":{\"primary\":\"#e0def4\",\"secondary\":\"#908caa\",\"inverse\":\"#191724\"},\"brand\":{\"primary\":\"#c4a7e7\"},\"state\":{\"info\":\"#9ccfd8\",\"success\":\"#31748f\",\"warning\":\"#f6c177\",\"danger\":\"#eb6f92\"},\"border\":{\"default\":\"#403d52\"},\"accent\":{\"link\":\"#c4a7e7\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#31748f\",\"h2\":\"#c4a7e7\",\"h3\":\"#9ccfd8\",\"h4\":\"#f6c177\",\"h5\":\"#ebbcba\",\"h6\":\"#eb6f92\"},\"body\":{\"primary\":\"#e0def4\",\"secondary\":\"#908caa\"},\"link\":{\"default\":\"#c4a7e7\"},\"selection\":{\"fg\":\"#e0def4\",\"bg\":\"#524f67\"},\"blockquote\":{\"border\":\"#524f67\",\"fg\":\"#e0def4\",\"bg\":\"#1f1d2e\"},\"codeInline\":{\"fg\":\"#e0def4\",\"bg\":\"#26233a\"},\"codeBlock\":{\"fg\":\"#e0def4\",\"bg\":\"#26233a\"},\"table\":{\"border\":\"#524f67\",\"stripe\":\"#26233a\",\"theadBg\":\"#403d52\"}}}},\"solarized-dark\":{\"id\":\"solarized-dark\",\"label\":\"Solarized Dark\",\"vendor\":\"solarized\",\"appearance\":\"dark\",\"iconUrl\":\"/assets/img/solarized-dark.png\",\"tokens\":{\"background\":{\"base\":\"#002b36\",\"surface\":\"#073642\",\"overlay\":\"#586e75\"},\"text\":{\"primary\":\"#839496\",\"secondary\":\"#657b83\",\"inverse\":\"#002b36\"},\"brand\":{\"primary\":\"#268bd2\"},\"state\":{\"info\":\"#2aa198\",\"success\":\"#859900\",\"warning\":\"#b58900\",\"danger\":\"#dc322f\"},\"border\":{\"default\":\"#586e75\"},\"accent\":{\"link\":\"#268bd2\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#268bd2\",\"h2\":\"#2aa198\",\"h3\":\"#859900\",\"h4\":\"#b58900\",\"h5\":\"#cb4b16\",\"h6\":\"#d33682\"},\"body\":{\"primary\":\"#839496\",\"secondary\":\"#657b83\"},\"link\":{\"default\":\"#268bd2\"},\"selection\":{\"fg\":\"#fdf6e3\",\"bg\":\"#586e75\"},\"blockquote\":{\"border\":\"#657b83\",\"fg\":\"#839496\",\"bg\":\"#073642\"},\"codeInline\":{\"fg\":\"#2aa198\",\"bg\":\"#073642\"},\"codeBlock\":{\"fg\":\"#93a1a1\",\"bg\":\"#073642\"},\"table\":{\"border\":\"#586e75\",\"stripe\":\"#073642\",\"theadBg\":\"#586e75\"}}}},\"solarized-light\":{\"id\":\"solarized-light\",\"label\":\"Solarized Light\",\"vendor\":\"solarized\",\"appearance\":\"light\",\"iconUrl\":\"/assets/img/solarized-light.png\",\"tokens\":{\"background\":{\"base\":\"#fdf6e3\",\"surface\":\"#eee8d5\",\"overlay\":\"#93a1a1\"},\"text\":{\"primary\":\"#586e75\",\"secondary\":\"#657b83\",\"inverse\":\"#fdf6e3\"},\"brand\":{\"primary\":\"#268bd2\"},\"state\":{\"info\":\"#2aa198\",\"success\":\"#859900\",\"warning\":\"#b58900\",\"danger\":\"#dc322f\"},\"border\":{\"default\":\"#93a1a1\"},\"accent\":{\"link\":\"#268bd2\"},\"typography\":{\"fonts\":{\"sans\":\"Inter, ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, \\\\\"Apple Color Emoji\\\\\", \\\\\"Segoe UI Emoji\\\\\"\",\"mono\":\"JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \\\\\"Liberation Mono\\\\\", \\\\\"Courier New\\\\\", monospace\"},\"webFonts\":[\"https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap\",\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap\"]},\"content\":{\"heading\":{\"h1\":\"#268bd2\",\"h2\":\"#2aa198\",\"h3\":\"#859900\",\"h4\":\"#b58900\",\"h5\":\"#cb4b16\",\"h6\":\"#d33682\"},\"body\":{\"primary\":\"#586e75\",\"secondary\":\"#657b83\"},\"link\":{\"default\":\"#268bd2\"},\"selection\":{\"fg\":\"#002b36\",\"bg\":\"#93a1a1\"},\"blockquote\":{\"border\":\"#93a1a1\",\"fg\":\"#657b83\",\"bg\":\"#eee8d5\"},\"codeInline\":{\"fg\":\"#6c71c4\",\"bg\":\"#eee8d5\"},\"codeBlock\":{\"fg\":\"#073642\",\"bg\":\"#eee8d5\"},\"table\":{\"border\":\"#93a1a1\",\"stripe\":\"#eee8d5\",\"theadBg\":\"#eee8d5\"}}}}}');\nconst byVendor = { \"bulma\": { \"name\": \"Bulma\", \"homepage\": \"https://bulma.io/\", \"themes\": [\"bulma-dark\", \"bulma-light\"] }, \"catppuccin\": { \"name\": \"Catppuccin (synced)\", \"homepage\": \"https://catppuccin.com/palette/\", \"themes\": [\"catppuccin-frappe\", \"catppuccin-latte\", \"catppuccin-macchiato\", \"catppuccin-mocha\"] }, \"dracula\": { \"name\": \"Dracula\", \"homepage\": \"https://draculatheme.com/\", \"themes\": [\"dracula\"] }, \"github\": { \"name\": \"GitHub (synced)\", \"homepage\": \"https://primer.style/\", \"themes\": [\"github-dark\", \"github-light\"] }, \"nord\": { \"name\": \"Nord\", \"homepage\": \"https://www.nordtheme.com/\", \"themes\": [\"nord\"] }, \"rose-pine\": { \"name\": \"Rosé Pine (synced)\", \"homepage\": \"https://rosepinetheme.com/\", \"themes\": [\"rose-pine-dawn\", \"rose-pine-moon\", \"rose-pine\"] }, \"solarized\": { \"name\": \"Solarized\", \"homepage\": \"https://ethanschoonover.com/solarized/\", \"themes\": [\"solarized-dark\", \"solarized-light\"] } };\nconst tokensData = {\n themes,\n byVendor\n};\nconst tokens = tokensData;\nconst flavors = Object.values(tokens.themes).map((theme) => ({\n id: theme.id,\n label: theme.label,\n vendor: theme.vendor,\n appearance: theme.appearance,\n ...theme.iconUrl !== void 0 && { iconUrl: theme.iconUrl },\n tokens: theme.tokens\n}));\nconst themesById = /* @__PURE__ */ Object.fromEntries(flavors.map((flavor) => [flavor.id, flavor]));\n/* @__PURE__ */ Object.fromEntries(Object.entries(tokens.byVendor).map(([vendorId, vendor]) => [\n vendorId,\n {\n id: vendorId,\n name: vendor.name,\n homepage: vendor.homepage,\n flavors: vendor.themes.map((themeId) => themesById[themeId]).filter(Boolean)\n }\n]));\n[...new Set(flavors.map((f) => f.vendor))];\nconst VENDOR_FAMILY_MAP = {\n bulma: \"bulma\",\n catppuccin: \"catppuccin\",\n github: \"github\",\n dracula: \"dracula\",\n nord: \"nord\",\n \"rose-pine\": \"rose-pine\",\n solarized: \"solarized\"\n};\nconst DEFAULT_FAMILY = \"bulma\";\nconst VENDOR_ICON_MAP = {\n bulma: \"assets/img/turbo-themes-logo.png\",\n catppuccin: {\n light: \"assets/img/catppuccin-logo-latte.png\",\n dark: \"assets/img/catppuccin-logo-macchiato.png\"\n },\n github: {\n light: \"assets/img/github-logo-light.png\",\n dark: \"assets/img/github-logo-dark.png\"\n },\n dracula: \"assets/img/dracula-logo.png\",\n nord: \"assets/img/nord.png\",\n \"rose-pine\": {\n light: \"assets/img/rose-pine-dawn.png\",\n dark: \"assets/img/rose-pine.png\"\n },\n solarized: {\n light: \"assets/img/solarized-light.png\",\n dark: \"assets/img/solarized-dark.png\"\n }\n};\nconst FLAVOR_DESCRIPTIONS = {\n \"bulma-light\": \"Classic Bulma look with a bright, neutral palette.\",\n \"bulma-dark\": \"Dark Bulma theme tuned for low-light reading.\",\n \"catppuccin-latte\": \"Light, soft Catppuccin palette for daytime use.\",\n \"catppuccin-frappe\": \"Balanced dark Catppuccin theme for focused work.\",\n \"catppuccin-macchiato\": \"Deep, atmospheric Catppuccin variant with rich contrast.\",\n \"catppuccin-mocha\": \"Cozy, high-contrast Catppuccin theme for late-night sessions.\",\n dracula: \"Iconic Dracula dark theme with vibrant accents.\",\n \"github-light\": \"GitHub-inspired light theme suited for documentation and UI heavy pages.\",\n \"github-dark\": \"GitHub dark theme optimized for code-heavy views.\",\n nord: \"Arctic, north-bluish color palette inspired by the polar night.\",\n \"rose-pine\": \"Elegant dark theme with natural pine and soho vibes.\",\n \"rose-pine-moon\": \"Deeper variant of Rosé Pine with enhanced contrast.\",\n \"rose-pine-dawn\": \"Light Rosé Pine variant for daytime use.\",\n \"solarized-dark\": \"Solarized Dark with a balanced, low-contrast palette.\",\n \"solarized-light\": \"Solarized Light tuned for bright, daylight-friendly UIs.\"\n};\nfunction getFamily(vendor) {\n return VENDOR_FAMILY_MAP[vendor] ?? DEFAULT_FAMILY;\n}\nfunction getIconForVendor(vendor, appearance) {\n const iconConfig = VENDOR_ICON_MAP[vendor];\n if (!iconConfig) {\n return void 0;\n }\n if (typeof iconConfig === \"string\") {\n return iconConfig;\n }\n return iconConfig[appearance];\n}\nfunction getDescriptionForFlavor(id, label) {\n return FLAVOR_DESCRIPTIONS[id] ?? `${label} theme`;\n}\nfunction extractPreviewColors(tokens2) {\n return {\n bg: tokens2.background.base,\n surface: tokens2.background.surface,\n accent: tokens2.brand.primary,\n text: tokens2.text.primary\n };\n}\nfunction mapFlavorToUI(flavor) {\n const family = getFamily(flavor.vendor);\n return {\n id: flavor.id,\n name: flavor.label,\n description: getDescriptionForFlavor(flavor.id, flavor.label),\n cssFile: `packages/css/dist/themes/${flavor.id}.css`,\n icon: getIconForVendor(flavor.vendor, flavor.appearance),\n family,\n vendor: flavor.vendor,\n appearance: flavor.appearance,\n colors: extractPreviewColors(flavor.tokens)\n };\n}\nlet mappedThemes = null;\nlet validThemeIds = null;\nfunction getThemes() {\n if (!mappedThemes) {\n mappedThemes = flavors.map(mapFlavorToUI);\n }\n return mappedThemes || [];\n}\nfunction getValidThemeIds() {\n if (!validThemeIds) {\n validThemeIds = new Set(flavors.map((f) => f.id));\n }\n return validThemeIds;\n}\nfunction resolveTheme(themeId) {\n const themes2 = getThemes();\n return themes2.find((t) => t.id === themeId) || themes2.find((t) => t.id === DEFAULT_THEME) || themes2[0];\n}\nasync function applyTheme(doc, themeId) {\n const theme = resolveTheme(themeId);\n if (!theme) {\n logThemeError(ThemeErrors.NO_THEMES_AVAILABLE());\n return;\n }\n const baseUrl = getBaseUrl(doc);\n const trigger = doc.getElementById(DOM_IDS.THEME_FLAVOR_TRIGGER);\n if (trigger) {\n trigger.classList.add(\"is-loading\");\n }\n try {\n applyThemeClass(doc, theme.id);\n await loadThemeCSS(doc, theme, baseUrl);\n const triggerIcon = doc.getElementById(\n DOM_IDS.THEME_FLAVOR_TRIGGER_ICON\n );\n if (triggerIcon && theme.icon) {\n try {\n triggerIcon.src = resolveAssetPath(theme.icon, baseUrl);\n const familyMeta = THEME_FAMILIES[theme.family];\n const familyName = familyMeta?.name ?? theme.family;\n triggerIcon.alt = `${familyName} ${theme.name}`;\n triggerIcon.title = `${familyName} ${theme.name}`;\n } catch {\n logThemeError(ThemeErrors.INVALID_ICON_PATH(theme.id));\n }\n }\n const triggerLabel = doc.getElementById(\n DOM_IDS.THEME_FLAVOR_TRIGGER_LABEL\n );\n if (triggerLabel) {\n triggerLabel.textContent = theme.name;\n }\n doc.querySelectorAll(DOM_SELECTORS.DROPDOWN_ITEMS).forEach((item) => {\n setItemActiveState(item, item.getAttribute(\"data-theme-id\") === theme.id);\n });\n } finally {\n if (trigger) {\n trigger.classList.remove(\"is-loading\");\n }\n }\n}\nfunction getCurrentTheme(doc, defaultTheme) {\n return getCurrentThemeFromClasses(doc.documentElement) || defaultTheme;\n}\nfunction createDropdownStateManager(elements, state) {\n const { trigger, dropdown } = elements;\n const updateAriaExpanded = (expanded) => {\n trigger.setAttribute(\"aria-expanded\", String(expanded));\n };\n const focusMenuItem = (index) => {\n if (index < 0 || index >= state.menuItems.length) return;\n const item = state.menuItems[index];\n setTabindexBatch(state.menuItems, \"-1\");\n item.setAttribute(\"tabindex\", \"0\");\n item.focus();\n state.currentIndex = index;\n };\n const closeDropdown = (options = {}) => {\n const { restoreFocus = true } = options;\n dropdown.classList.remove(\"is-active\");\n updateAriaExpanded(false);\n setTabindexBatch(state.menuItems, \"-1\");\n state.currentIndex = -1;\n if (restoreFocus) {\n trigger.focus();\n }\n };\n const toggleDropdown = (focusFirst = false) => {\n const isActive = dropdown.classList.toggle(\"is-active\");\n updateAriaExpanded(isActive);\n if (!isActive) {\n state.currentIndex = -1;\n setTabindexBatch(state.menuItems, \"-1\");\n for (const menuItem of state.menuItems) {\n const isActiveItem = menuItem.classList.contains(\"is-active\");\n setItemActiveState(menuItem, isActiveItem);\n }\n } else if (focusFirst && state.menuItems.length > 0) {\n focusMenuItem(0);\n }\n };\n return { updateAriaExpanded, focusMenuItem, closeDropdown, toggleDropdown };\n}\nfunction getNextIndex(currentIndex, totalItems) {\n return currentIndex < totalItems - 1 ? currentIndex + 1 : 0;\n}\nfunction getPrevIndex(currentIndex, totalItems) {\n return currentIndex > 0 ? currentIndex - 1 : totalItems - 1;\n}\nfunction handleTriggerKeydown(e, dropdown, state, stateManager) {\n const { focusMenuItem, toggleDropdown, updateAriaExpanded } = stateManager;\n const totalItems = state.menuItems.length;\n switch (e.key) {\n case \"Enter\":\n case \" \":\n e.preventDefault();\n toggleDropdown(!dropdown.classList.contains(\"is-active\"));\n break;\n case \"ArrowDown\":\n e.preventDefault();\n if (!dropdown.classList.contains(\"is-active\")) {\n dropdown.classList.add(\"is-active\");\n updateAriaExpanded(true);\n focusMenuItem(0);\n } else {\n const nextIndex = state.currentIndex < 0 ? 0 : getNextIndex(state.currentIndex, totalItems);\n focusMenuItem(nextIndex);\n }\n break;\n case \"ArrowUp\":\n e.preventDefault();\n if (!dropdown.classList.contains(\"is-active\")) {\n dropdown.classList.add(\"is-active\");\n updateAriaExpanded(true);\n focusMenuItem(totalItems - 1);\n } else {\n const startIndex = state.currentIndex < 0 ? totalItems - 1 : state.currentIndex;\n focusMenuItem(getPrevIndex(startIndex, totalItems));\n }\n break;\n }\n}\nfunction handleMenuItemKeydown(e, index, item, state, stateManager) {\n const { focusMenuItem, closeDropdown } = stateManager;\n const totalItems = state.menuItems.length;\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n focusMenuItem(getNextIndex(index, totalItems));\n break;\n case \"ArrowUp\":\n e.preventDefault();\n focusMenuItem(getPrevIndex(index, totalItems));\n break;\n case \"Escape\":\n e.preventDefault();\n closeDropdown();\n break;\n case \"Enter\":\n case \" \":\n e.preventDefault();\n item.click();\n break;\n case \"Home\":\n e.preventDefault();\n focusMenuItem(0);\n break;\n case \"End\":\n e.preventDefault();\n focusMenuItem(totalItems - 1);\n break;\n }\n}\nfunction wireDropdownEventHandlers(documentObj, elements, state, stateManager, abortController) {\n const { trigger, dropdown } = elements;\n const { closeDropdown, toggleDropdown } = stateManager;\n const signal = abortController.signal;\n trigger.addEventListener(\n \"click\",\n (e) => {\n e.preventDefault();\n toggleDropdown();\n },\n { signal }\n );\n documentObj.addEventListener(\n \"click\",\n (e) => {\n if (!dropdown.contains(e.target)) {\n closeDropdown({ restoreFocus: false });\n }\n },\n { signal }\n );\n documentObj.addEventListener(\n \"keydown\",\n (e) => {\n if (e.key === \"Escape\" && dropdown.classList.contains(\"is-active\")) {\n closeDropdown({ restoreFocus: true });\n }\n },\n { signal }\n );\n trigger.addEventListener(\n \"keydown\",\n (e) => handleTriggerKeydown(e, dropdown, state, stateManager),\n { signal }\n );\n for (const [index, item] of state.menuItems.entries()) {\n item.addEventListener(\n \"keydown\",\n (e) => handleMenuItemKeydown(e, index, item, state, stateManager),\n { signal }\n );\n }\n}\nfunction createCheckmarkIcon(doc) {\n const svg = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.setAttribute(\"width\", \"16\");\n svg.setAttribute(\"height\", \"16\");\n svg.setAttribute(\"viewBox\", \"0 0 24 24\");\n svg.setAttribute(\"fill\", \"none\");\n svg.setAttribute(\"stroke\", \"currentColor\");\n svg.setAttribute(\"stroke-width\", \"3\");\n svg.setAttribute(\"stroke-linecap\", \"round\");\n svg.setAttribute(\"stroke-linejoin\", \"round\");\n const polyline = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"polyline\");\n polyline.setAttribute(\"points\", \"20 6 9 17 4 12\");\n svg.appendChild(polyline);\n return svg;\n}\nfunction createThemeItemElement(ctx, theme, familyMeta) {\n const { documentObj, baseUrl, currentThemeId, selectEl, closeDropdown, onThemeSelect } = ctx;\n const item = documentObj.createElement(\"button\");\n item.type = \"button\";\n item.className = \"dropdown-item theme-item\";\n item.setAttribute(\"data-theme-id\", theme.id);\n item.setAttribute(\"data-appearance\", theme.appearance);\n item.setAttribute(\"role\", \"menuitemradio\");\n item.setAttribute(\n \"aria-label\",\n `${familyMeta.name} ${theme.name} (${theme.appearance}). ${theme.description}`\n );\n item.setAttribute(\"tabindex\", \"-1\");\n const isActive = theme.id === currentThemeId;\n setItemActiveState(item, isActive);\n if (theme.icon) {\n const icon = documentObj.createElement(\"img\");\n icon.className = \"theme-icon\";\n icon.src = baseUrl ? `${baseUrl}/${theme.icon}` : theme.icon;\n icon.alt = `${familyMeta.name} ${theme.name}`;\n icon.width = 24;\n icon.height = 24;\n item.appendChild(icon);\n } else {\n const placeholder = documentObj.createElement(\"span\");\n placeholder.className = \"theme-icon theme-icon-placeholder\";\n placeholder.setAttribute(\"aria-hidden\", \"true\");\n item.appendChild(placeholder);\n }\n const copy = documentObj.createElement(\"div\");\n copy.className = \"theme-copy\";\n const titleEl = documentObj.createElement(\"span\");\n titleEl.className = \"theme-title\";\n titleEl.textContent = `${familyMeta.name} · ${theme.name}`;\n copy.appendChild(titleEl);\n const descriptionEl = documentObj.createElement(\"span\");\n descriptionEl.className = \"theme-description\";\n descriptionEl.textContent = theme.description;\n copy.appendChild(descriptionEl);\n item.appendChild(copy);\n const check = documentObj.createElement(\"span\");\n check.className = \"theme-check\";\n check.appendChild(createCheckmarkIcon(documentObj));\n item.appendChild(check);\n item.addEventListener(\"click\", (e) => {\n e.preventDefault();\n onThemeSelect(theme.id);\n if (selectEl) {\n selectEl.value = theme.id;\n selectEl.dispatchEvent(new Event(\"change\", { bubbles: true }));\n }\n closeDropdown({ restoreFocus: true });\n });\n return item;\n}\nfunction createFamilyGroup(ctx, familyKey, themes2, familyMeta, animationDelay) {\n const { documentObj } = ctx;\n if (themes2.length === 0) return null;\n const items = [];\n const group = documentObj.createElement(\"div\");\n group.className = \"theme-family-group\";\n group.setAttribute(\"role\", \"group\");\n group.setAttribute(\"aria-labelledby\", `theme-family-${familyKey}`);\n if (group.style && typeof group.style.setProperty === \"function\") {\n group.style.setProperty(\"--animation-delay\", `${animationDelay}ms`);\n }\n const header = documentObj.createElement(\"div\");\n header.className = \"theme-family-header\";\n header.id = `theme-family-${familyKey}`;\n const headerTitle = documentObj.createElement(\"span\");\n headerTitle.className = \"theme-family-name\";\n headerTitle.textContent = familyMeta.name;\n header.appendChild(headerTitle);\n group.appendChild(header);\n const themesContainer = documentObj.createElement(\"div\");\n themesContainer.className = \"theme-family-items\";\n themes2.forEach((theme) => {\n const item = createThemeItemElement(ctx, theme, familyMeta);\n items.push(item);\n themesContainer.appendChild(item);\n });\n group.appendChild(themesContainer);\n return { group, items };\n}\nfunction populateDropdownMenu(ctx, dropdownMenu, themes2, themeFamilies) {\n const families = Object.keys(themeFamilies);\n let animationDelay = 0;\n families.forEach((familyKey) => {\n const familyThemes = themes2.filter((t) => t.family === familyKey);\n const familyMeta = themeFamilies[familyKey];\n if (!familyMeta) return;\n const result = createFamilyGroup(ctx, familyKey, familyThemes, familyMeta, animationDelay);\n if (result) {\n ctx.menuItems.push(...result.items);\n dropdownMenu.appendChild(result.group);\n animationDelay += 30;\n }\n });\n}\nfunction wireNativeSelect(ctx, selectEl, themes2, defaultTheme) {\n const { documentObj, onThemeSelect } = ctx;\n while (selectEl.firstChild) {\n selectEl.removeChild(selectEl.firstChild);\n }\n themes2.forEach((theme) => {\n const option = documentObj.createElement(\"option\");\n option.value = theme.id;\n option.textContent = theme.name;\n option.selected = theme.id === ctx.currentThemeId;\n selectEl.appendChild(option);\n });\n selectEl.disabled = false;\n selectEl.addEventListener(\"change\", (event) => {\n const target = event.target;\n const selectedThemeId = target?.value || defaultTheme;\n onThemeSelect(selectedThemeId);\n });\n}\nfunction getDropdownElements(documentObj) {\n const dropdownMenu = documentObj.getElementById(DOM_IDS.THEME_FLAVOR_MENU);\n const trigger = documentObj.getElementById(\n DOM_IDS.THEME_FLAVOR_TRIGGER\n );\n const dropdown = trigger?.closest(DOM_SELECTORS.NAVBAR_DROPDOWN);\n const selectEl = documentObj.getElementById(\n DOM_IDS.THEME_FLAVOR_SELECT\n );\n if (!dropdownMenu || !trigger || !dropdown) {\n return null;\n }\n return { dropdownMenu, trigger, dropdown, selectEl };\n}\nfunction normalizePath(path) {\n return path.replace(/\\/$/, \"\") || \"/\";\n}\nfunction initNavbar(documentObj) {\n const currentPath = documentObj.location.pathname;\n const normalizedCurrentPath = normalizePath(currentPath);\n const navbarItems = documentObj.querySelectorAll(DOM_SELECTORS.NAVBAR_ITEM);\n let matchingItem = null;\n const itemsToDeactivate = [];\n navbarItems.forEach((item) => {\n const link = item;\n if (!link.href) return;\n try {\n const normalizedLinkPath = normalizePath(new URL(link.href).pathname);\n if (normalizedCurrentPath === normalizedLinkPath) {\n matchingItem = item;\n } else {\n itemsToDeactivate.push(item);\n }\n } catch {\n }\n });\n for (const item of itemsToDeactivate) {\n item.classList.remove(\"is-active\");\n item.removeAttribute(\"aria-current\");\n }\n if (matchingItem) {\n matchingItem.classList.add(\"is-active\");\n matchingItem.setAttribute(\"aria-current\", \"page\");\n }\n const reportsLink = documentObj.querySelector(DOM_SELECTORS.NAV_REPORTS);\n if (reportsLink) {\n const reportPaths = [\n \"/coverage\",\n \"/coverage-python\",\n \"/coverage-swift\",\n \"/coverage-ruby\",\n \"/playwright\",\n \"/playwright-examples\",\n \"/lighthouse\"\n ];\n const isOnReportsPage = reportPaths.some(\n (path) => normalizedCurrentPath === path || normalizedCurrentPath.startsWith(path + \"/\")\n );\n if (isOnReportsPage) {\n reportsLink.classList.add(\"is-active\");\n } else {\n reportsLink.classList.remove(\"is-active\");\n }\n }\n}\nif (typeof window !== \"undefined\") {\n window.initNavbar = initNavbar;\n}\nfunction enhanceAccessibility(documentObj) {\n documentObj.querySelectorAll(DOM_SELECTORS.HIGHLIGHT_PRE).forEach((pre) => {\n if (!pre.hasAttribute(\"tabindex\")) pre.setAttribute(\"tabindex\", \"0\");\n if (!pre.hasAttribute(\"role\")) pre.setAttribute(\"role\", \"region\");\n if (!pre.hasAttribute(\"aria-label\")) pre.setAttribute(\"aria-label\", \"Code block\");\n });\n}\nasync function initTheme(documentObj, windowObj) {\n migrateLegacyStorage(windowObj);\n const initialTheme = windowObj.__INITIAL_THEME__;\n const savedTheme = getSavedTheme(windowObj, getValidThemeIds());\n if (initialTheme && initialTheme === savedTheme) {\n const currentTheme = getCurrentThemeFromClasses(documentObj.documentElement);\n if (currentTheme === savedTheme) {\n const themeLinkId = `theme-${savedTheme}-css`;\n const themeLink = documentObj.getElementById(themeLinkId);\n if (!themeLink) {\n await applyTheme(documentObj, savedTheme);\n }\n return;\n }\n }\n await applyTheme(documentObj, savedTheme);\n}\nasync function wireFlavorSelector(documentObj, windowObj) {\n const abortController = new AbortController();\n const elements = getDropdownElements(documentObj);\n if (!elements) {\n return { cleanup: () => abortController.abort() };\n }\n const { dropdownMenu, selectEl } = elements;\n const baseUrl = getBaseUrl(documentObj);\n const themes2 = getThemes();\n const state = {\n currentIndex: -1,\n menuItems: []\n };\n const currentThemeId = getSavedTheme(windowObj, getValidThemeIds()) || getCurrentTheme(documentObj, DEFAULT_THEME);\n const stateManager = createDropdownStateManager(elements, state);\n const ctx = {\n documentObj,\n baseUrl,\n currentThemeId,\n selectEl,\n menuItems: state.menuItems,\n closeDropdown: stateManager.closeDropdown,\n onThemeSelect: async (themeId) => {\n saveTheme(windowObj, themeId, getValidThemeIds());\n await applyTheme(documentObj, themeId);\n }\n };\n if (selectEl) {\n wireNativeSelect(ctx, selectEl, themes2, DEFAULT_THEME);\n }\n populateDropdownMenu(ctx, dropdownMenu, themes2, THEME_FAMILIES);\n wireDropdownEventHandlers(documentObj, elements, state, stateManager, abortController);\n stateManager.updateAriaExpanded(false);\n elements.dropdown.classList.remove(\"is-active\");\n return { cleanup: () => abortController.abort() };\n}\nif (typeof document !== \"undefined\" && typeof window !== \"undefined\") {\n document.addEventListener(\"DOMContentLoaded\", async () => {\n try {\n await initTheme(document, window);\n const { cleanup } = await wireFlavorSelector(document, window);\n enhanceAccessibility(document);\n const pagehideHandler = () => {\n cleanup();\n window.removeEventListener(\"pagehide\", pagehideHandler);\n };\n window.addEventListener(\"pagehide\", pagehideHandler);\n } catch (error) {\n logThemeError(ThemeErrors.INIT_FAILED(error));\n }\n });\n}\nexport {\n enhanceAccessibility,\n initNavbar,\n initTheme,\n wireFlavorSelector\n};\n//# sourceMappingURL=index.js.map\n"],"names":[],"mappings":"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"}