From f319cb4bd83aa21a8777e466f2b17f920826be47 Mon Sep 17 00:00:00 2001 From: RHZHZ <136958965+RHZHZ@users.noreply.github.com> Date: Mon, 9 Feb 2026 22:26:09 +0800 Subject: [PATCH 001/114] Update PrismMac.js --- components/PrismMac.js | 405 ++++++++++++++++------------------------- 1 file changed, 158 insertions(+), 247 deletions(-) diff --git a/components/PrismMac.js b/components/PrismMac.js index a0aff890233..0b72a92166b 100644 --- a/components/PrismMac.js +++ b/components/PrismMac.js @@ -1,273 +1,184 @@ -import { useEffect } from 'react' -import Prism from 'prismjs' -// 所有语言的prismjs 使用autoloader引入 -// import 'prismjs/plugins/autoloader/prism-autoloader' -import 'prismjs/plugins/toolbar/prism-toolbar' -import 'prismjs/plugins/toolbar/prism-toolbar.min.css' -import 'prismjs/plugins/show-language/prism-show-language' -import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard' -import 'prismjs/plugins/line-numbers/prism-line-numbers' -import 'prismjs/plugins/line-numbers/prism-line-numbers.css' - -// mermaid图 -import { loadExternalResource } from '@/lib/utils' -import { useRouter } from 'next/navigation' -import { useGlobal } from '@/lib/global' -import { siteConfig } from '@/lib/config' - /** - * 代码美化相关 - * @author https://github.com/txs/ - * @returns - */ -const PrismMac = () => { - const router = useRouter() - const { isDarkMode } = useGlobal() - const codeMacBar = siteConfig('CODE_MAC_BAR') - const prismjsAutoLoader = siteConfig('PRISM_JS_AUTO_LOADER') - const prismjsPath = siteConfig('PRISM_JS_PATH') - - const prismThemeSwitch = siteConfig('PRISM_THEME_SWITCH') - const prismThemeDarkPath = siteConfig('PRISM_THEME_DARK_PATH') - const prismThemeLightPath = siteConfig('PRISM_THEME_LIGHT_PATH') - const prismThemePrefixPath = siteConfig('PRISM_THEME_PREFIX_PATH') - - const mermaidCDN = siteConfig('MERMAID_CDN') - const codeLineNumbers = siteConfig('CODE_LINE_NUMBERS') - - const codeCollapse = siteConfig('CODE_COLLAPSE') - const codeCollapseExpandDefault = siteConfig('CODE_COLLAPSE_EXPAND_DEFAULT') - - useEffect(() => { - if (codeMacBar) { - loadExternalResource('/css/prism-mac-style.css', 'css') - } - // 加载prism样式 - loadPrismThemeCSS( - isDarkMode, - prismThemeSwitch, - prismThemeDarkPath, - prismThemeLightPath, - prismThemePrefixPath - ) - // 折叠代码 - loadExternalResource(prismjsAutoLoader, 'js').then(url => { - if (window?.Prism?.plugins?.autoloader) { - window.Prism.plugins.autoloader.languages_path = prismjsPath - } - - renderPrismMac(codeLineNumbers) - renderMermaid(mermaidCDN) - renderCollapseCode(codeCollapse, codeCollapseExpandDefault) - }) - }, [router, isDarkMode]) - - return <> + * @author https://github.com/txs + * 通用 Mac 风格代码块样式 (NotionNext Universal) + **/ + +/* 1. Mac 窗口容器样式 */ +.code-toolbar { + position: relative; + width: 100%; + margin: 1rem 0; + border-radius: 14px; + border: 1px solid rgba(0, 0, 0, 0.1); + background: rgba(27, 28, 32, 0.94); /* 浅色模式下默认暗底 */ + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 18px 44px rgba(0, 0, 0, 0.18); + overflow: hidden; + transition: box-shadow 0.3s ease, transform 0.3s ease; } -/** - * 加载Prism主题样式 - */ -const loadPrismThemeCSS = ( - isDarkMode, - prismThemeSwitch, - prismThemeDarkPath, - prismThemeLightPath, - prismThemePrefixPath -) => { - let PRISM_THEME - let PRISM_PREVIOUS - if (prismThemeSwitch) { - if (isDarkMode) { - PRISM_THEME = prismThemeDarkPath - PRISM_PREVIOUS = prismThemeLightPath - } else { - PRISM_THEME = prismThemeLightPath - PRISM_PREVIOUS = prismThemeDarkPath - } - const previousTheme = document.querySelector( - `link[href="${PRISM_PREVIOUS}"]` - ) - if ( - previousTheme && - previousTheme.parentNode && - previousTheme.parentNode.contains(previousTheme) - ) { - previousTheme.parentNode.removeChild(previousTheme) - } - loadExternalResource(PRISM_THEME, 'css') - } else { - loadExternalResource(prismThemePrefixPath, 'css') - } +/* 暗色模式适配 */ +html.dark .code-toolbar { + border-color: rgba(255, 255, 255, 0.12); + background: rgba(27, 28, 32, 0.72); + -webkit-backdrop-filter: saturate(140%) blur(12px); + backdrop-filter: saturate(140%) blur(12px); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.35), 0 18px 44px rgba(0, 0, 0, 0.45); } -/* - * 将代码块转为可折叠对象 - */ -const renderCollapseCode = (codeCollapse, codeCollapseExpandDefault) => { - if (!codeCollapse) { - return - } - const codeBlocks = document.querySelectorAll('.code-toolbar') - for (const codeBlock of codeBlocks) { - // 判断当前元素是否被包裹 - if (codeBlock.closest('.collapse-wrapper')) { - continue // 如果被包裹了,跳过当前循环 - } +/* 2. Mac 三色点 */ +.pre-mac { + position: absolute; + left: 12px; + top: 11px; + z-index: 13; + display: flex; + gap: 7px; +} - const code = codeBlock.querySelector('code') - const language = code.getAttribute('class').match(/language-(\w+)/)[1] +.pre-mac > span { + width: 10px; + height: 10px; + border-radius: 999px; +} - const collapseWrapper = document.createElement('div') - collapseWrapper.className = 'collapse-wrapper w-full py-2' - const panelWrapper = document.createElement('div') - panelWrapper.className = - 'border dark:border-gray-600 rounded-md hover:border-indigo-500 duration-200 transition-colors' +.pre-mac > span:nth-child(1) { background: #ff5f57; } +.pre-mac > span:nth-child(2) { background: #febc2e; } +.pre-mac > span:nth-child(3) { background: #28c840; } + +/* 3. Toolbar 工具栏 (复制按钮、语言标签) */ +.code-toolbar > .toolbar { + position: absolute; + top: 0; + right: 0; + height: 34px; + display: flex; + align-items: center; + gap: 8px; + padding: 0 10px; + z-index: 12; +} - const header = document.createElement('div') - header.className = - 'flex justify-between items-center px-4 py-2 cursor-pointer select-none' - header.innerHTML = `

${language}

` +.code-toolbar .toolbar-item > button { + font-size: 12px !important; + line-height: 1 !important; + padding: 6px 8px !important; + border-radius: 999px !important; + border: 1px solid rgba(255, 255, 255, 0.15) !important; + background: rgba(255, 255, 255, 0.1) !important; + color: rgba(255, 255, 255, 0.82) !important; + cursor: pointer; + transition: all 0.2s ease; +} - const panel = document.createElement('div') - panel.className = - 'invisible h-0 transition-transform duration-200 border-t border-gray-300' +.code-toolbar .toolbar-item > button:hover { + background: rgba(255, 255, 255, 0.2) !important; + color: #fff !important; +} - panelWrapper.appendChild(header) - panelWrapper.appendChild(panel) - collapseWrapper.appendChild(panelWrapper) +/* 4. 代码正文排版 */ +pre.notion-code { + font-size: 0.92em !important; + line-height: 1.6 !important; + margin: 0 !important; + padding: 46px 1.1rem 1rem !important; + border-radius: 0 !important; + border: none !important; + background: transparent !important; + color: rgba(255, 255, 255, 0.9) !important; + overflow: auto; + -webkit-overflow-scrolling: touch; +} - codeBlock.parentNode.insertBefore(collapseWrapper, codeBlock) - panel.appendChild(codeBlock) +/* 5. 智能折叠 S1 极简 UI */ +.collapse-wrapper { + margin: 1rem 0; +} - function collapseCode() { - panel.classList.toggle('invisible') - panel.classList.toggle('h-0') - panel.classList.toggle('h-auto') - header.querySelector('svg').classList.toggle('rotate-180') - panelWrapper.classList.toggle('border-gray-300') - } +.collapse-panel-wrapper { + border-radius: 14px; + border: 1px solid rgba(0, 0, 0, 0.08); + background: rgba(255, 255, 255, 0.55); + -webkit-backdrop-filter: saturate(160%) blur(10px); + backdrop-filter: saturate(160%) blur(10px); + overflow: hidden; + transition: all 0.3s ease; +} - // 点击后折叠展开代码 - header.addEventListener('click', collapseCode) - // 是否自动展开 - if (codeCollapseExpandDefault) { - header.click() - } - } +html.dark .collapse-panel-wrapper { + border-color: rgba(255, 255, 255, 0.12); + background: rgba(27, 28, 32, 0.6); } -/** - * 将mermaid语言 渲染成图片 - */ -const renderMermaid = mermaidCDN => { - const observer = new MutationObserver(mutationsList => { - for (const m of mutationsList) { - if (m.target.className === 'notion-code language-mermaid') { - const chart = m.target.querySelector('code').textContent - if (chart && !m.target.querySelector('.mermaid')) { - const mermaidChart = document.createElement('pre') - mermaidChart.className = 'mermaid' - mermaidChart.innerHTML = chart - m.target.appendChild(mermaidChart) - } +.collapse-header { + width: 100%; + height: 36px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 12px; + cursor: pointer; + user-select: none; + border: none; + background: transparent; + color: rgba(60, 60, 67, 0.6); +} - const mermaidsSvg = document.querySelectorAll('.mermaid') - if (mermaidsSvg) { - let needLoad = false - for (const e of mermaidsSvg) { - if (e?.firstChild?.nodeName !== 'svg') { - needLoad = true - } - } - if (needLoad) { - loadExternalResource(mermaidCDN, 'js').then(url => { - setTimeout(() => { - const mermaid = window.mermaid - mermaid?.contentLoaded() - }, 100) - }) - } - } - } - } - }) - if (document.querySelector('#notion-article')) { - observer.observe(document.querySelector('#notion-article'), { - attributes: true, - subtree: true - }) - } +html.dark .collapse-header { + color: rgba(235, 235, 245, 0.6); } -function renderPrismMac(codeLineNumbers) { - const container = document?.getElementById('notion-article') +.collapse-label { + font-size: 13px; + letter-spacing: 0.02em; +} - // Add line numbers - if (codeLineNumbers) { - const codeBlocks = container?.getElementsByTagName('pre') - if (codeBlocks) { - Array.from(codeBlocks).forEach(item => { - if (!item.classList.contains('line-numbers')) { - item.classList.add('line-numbers') - item.style.whiteSpace = 'pre-wrap' - } - }) - } - } - // 重新渲染之前检查所有的多余text +.collapse-chevron { + width: 18px; + height: 18px; + transition: transform 0.3s ease; + opacity: 0.8; +} - try { - Prism.highlightAll() - } catch (err) { - console.log('代码渲染', err) - } +.collapse-panel-wrapper.is-expanded .collapse-chevron { + transform: rotate(180deg); +} - const codeToolBars = container?.getElementsByClassName('code-toolbar') - // Add pre-mac element for Mac Style UI - if (codeToolBars) { - Array.from(codeToolBars).forEach(item => { - const existPreMac = item.getElementsByClassName('pre-mac') - if (existPreMac.length < codeToolBars.length) { - const preMac = document.createElement('div') - preMac.classList.add('pre-mac') - preMac.innerHTML = '' - item?.appendChild(preMac, item) - } - }) - } +.collapse-panel { + max-height: 0; + overflow: hidden; + border-top: 1px solid rgba(0, 0, 0, 0.06); + transition: max-height 0.32s ease; +} - // 折叠代码行号bug - if (codeLineNumbers) { - fixCodeLineStyle() - } +html.dark .collapse-panel { + border-top-color: rgba(255, 255, 255, 0.08); } -/** - * 行号样式在首次渲染或被detail折叠后行高判断错误 - * 在此手动resize计算 - */ -const fixCodeLineStyle = () => { - const observer = new MutationObserver(mutationsList => { - for (const m of mutationsList) { - if (m.target.nodeName === 'DETAILS') { - const preCodes = m.target.querySelectorAll('pre.notion-code') - for (const preCode of preCodes) { - Prism.plugins.lineNumbers.resize(preCode) - } - } - } - }) - observer.observe(document.querySelector('#notion-article'), { - attributes: true, - subtree: true - }) - setTimeout(() => { - const preCodes = document.querySelectorAll('pre.notion-code') - for (const preCode of preCodes) { - Prism.plugins.lineNumbers.resize(preCode) - } - }, 10) +.collapse-panel.is-expanded { + max-height: 3000px; } -export default PrismMac +/* 6. Prism 代码高亮补丁 (暗底优化) */ +.code-toolbar .token.comment, +.code-toolbar .token.prolog, +.code-toolbar .token.doctype, +.code-toolbar .token.cdata { color: rgba(235, 235, 245, 0.46); } +.code-toolbar .token.punctuation { color: rgba(235, 235, 245, 0.6); } +.code-toolbar .token.property, +.code-toolbar .token.tag, +.code-toolbar .token.boolean, +.code-toolbar .token.number, +.code-toolbar .token.constant, +.code-toolbar .token.symbol, +.code-toolbar .token.deleted { color: #7ee787; } +.code-toolbar .token.selector, +.code-toolbar .token.attr-name, +.code-toolbar .token.string, +.code-toolbar .token.char, +.code-toolbar .token.builtin, +.code-toolbar .token.inserted { color: #a5d6ff; } +.code-toolbar .token.atrule, +.code-toolbar .token.attr-value, +.code-toolbar .token.keyword { color: #ff7ab2; } +.code-toolbar .token.function, +.code-toolbar .token.class-name { color: #ffd479; } From 567f379c94d9f9c2909d124ff9767fe76aa0cbbd Mon Sep 17 00:00:00 2001 From: RHZHZ <136958965+RHZHZ@users.noreply.github.com> Date: Mon, 9 Feb 2026 22:26:39 +0800 Subject: [PATCH 002/114] Update PrismMac.js --- components/PrismMac.js | 423 ++++++++++++++++++++++++++--------------- 1 file changed, 265 insertions(+), 158 deletions(-) diff --git a/components/PrismMac.js b/components/PrismMac.js index 0b72a92166b..2b8d422b33e 100644 --- a/components/PrismMac.js +++ b/components/PrismMac.js @@ -1,184 +1,291 @@ +import { useEffect } from 'react' +import Prism from 'prismjs' +// 所有语言的prismjs 使用autoloader引入 +// import 'prismjs/plugins/autoloader/prism-autoloader' +import 'prismjs/plugins/toolbar/prism-toolbar' +import 'prismjs/plugins/toolbar/prism-toolbar.min.css' +import 'prismjs/plugins/show-language/prism-show-language' +import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard' +import 'prismjs/plugins/line-numbers/prism-line-numbers' +import 'prismjs/plugins/line-numbers/prism-line-numbers.css' + +// mermaid图 +import { loadExternalResource } from '@/lib/utils' +import { useRouter } from 'next/navigation' +import { useGlobal } from '@/lib/global' +import { siteConfig } from '@/lib/config' + /** - * @author https://github.com/txs - * 通用 Mac 风格代码块样式 (NotionNext Universal) - **/ - -/* 1. Mac 窗口容器样式 */ -.code-toolbar { - position: relative; - width: 100%; - margin: 1rem 0; - border-radius: 14px; - border: 1px solid rgba(0, 0, 0, 0.1); - background: rgba(27, 28, 32, 0.94); /* 浅色模式下默认暗底 */ - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 18px 44px rgba(0, 0, 0, 0.18); - overflow: hidden; - transition: box-shadow 0.3s ease, transform 0.3s ease; -} + * 代码美化相关 + * @author https://github.com/txs/ + * @returns + */ +const PrismMac = () => { + const router = useRouter() + const { isDarkMode } = useGlobal() + const codeMacBar = siteConfig('CODE_MAC_BAR') + const prismjsAutoLoader = siteConfig('PRISM_JS_AUTO_LOADER') + const prismjsPath = siteConfig('PRISM_JS_PATH') -/* 暗色模式适配 */ -html.dark .code-toolbar { - border-color: rgba(255, 255, 255, 0.12); - background: rgba(27, 28, 32, 0.72); - -webkit-backdrop-filter: saturate(140%) blur(12px); - backdrop-filter: saturate(140%) blur(12px); - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.35), 0 18px 44px rgba(0, 0, 0, 0.45); -} + const prismThemeSwitch = siteConfig('PRISM_THEME_SWITCH') + const prismThemeDarkPath = siteConfig('PRISM_THEME_DARK_PATH') + const prismThemeLightPath = siteConfig('PRISM_THEME_LIGHT_PATH') + const prismThemePrefixPath = siteConfig('PRISM_THEME_PREFIX_PATH') -/* 2. Mac 三色点 */ -.pre-mac { - position: absolute; - left: 12px; - top: 11px; - z-index: 13; - display: flex; - gap: 7px; -} + const mermaidCDN = siteConfig('MERMAID_CDN') + const codeLineNumbers = siteConfig('CODE_LINE_NUMBERS') -.pre-mac > span { - width: 10px; - height: 10px; - border-radius: 999px; -} + const codeCollapse = siteConfig('CODE_COLLAPSE') + const codeCollapseExpandDefault = siteConfig('CODE_COLLAPSE_EXPAND_DEFAULT') -.pre-mac > span:nth-child(1) { background: #ff5f57; } -.pre-mac > span:nth-child(2) { background: #febc2e; } -.pre-mac > span:nth-child(3) { background: #28c840; } - -/* 3. Toolbar 工具栏 (复制按钮、语言标签) */ -.code-toolbar > .toolbar { - position: absolute; - top: 0; - right: 0; - height: 34px; - display: flex; - align-items: center; - gap: 8px; - padding: 0 10px; - z-index: 12; -} + useEffect(() => { + if (codeMacBar) { + loadExternalResource('/css/prism-mac-style.css', 'css') + } + // 加载prism样式 + loadPrismThemeCSS( + isDarkMode, + prismThemeSwitch, + prismThemeDarkPath, + prismThemeLightPath, + prismThemePrefixPath + ) + // 折叠代码 + loadExternalResource(prismjsAutoLoader, 'js').then(url => { + if (window?.Prism?.plugins?.autoloader) { + window.Prism.plugins.autoloader.languages_path = prismjsPath + } -.code-toolbar .toolbar-item > button { - font-size: 12px !important; - line-height: 1 !important; - padding: 6px 8px !important; - border-radius: 999px !important; - border: 1px solid rgba(255, 255, 255, 0.15) !important; - background: rgba(255, 255, 255, 0.1) !important; - color: rgba(255, 255, 255, 0.82) !important; - cursor: pointer; - transition: all 0.2s ease; -} + renderPrismMac(codeLineNumbers) + renderMermaid(mermaidCDN) + renderCollapseCode(codeCollapse, codeCollapseExpandDefault) + }) + }, [router, isDarkMode]) -.code-toolbar .toolbar-item > button:hover { - background: rgba(255, 255, 255, 0.2) !important; - color: #fff !important; + return <> } -/* 4. 代码正文排版 */ -pre.notion-code { - font-size: 0.92em !important; - line-height: 1.6 !important; - margin: 0 !important; - padding: 46px 1.1rem 1rem !important; - border-radius: 0 !important; - border: none !important; - background: transparent !important; - color: rgba(255, 255, 255, 0.9) !important; - overflow: auto; - -webkit-overflow-scrolling: touch; +/** + * 加载Prism主题样式 + */ +const loadPrismThemeCSS = ( + isDarkMode, + prismThemeSwitch, + prismThemeDarkPath, + prismThemeLightPath, + prismThemePrefixPath +) => { + let PRISM_THEME + let PRISM_PREVIOUS + if (prismThemeSwitch) { + if (isDarkMode) { + PRISM_THEME = prismThemeDarkPath + PRISM_PREVIOUS = prismThemeLightPath + } else { + PRISM_THEME = prismThemeLightPath + PRISM_PREVIOUS = prismThemeDarkPath + } + const previousTheme = document.querySelector( + `link[href="${PRISM_PREVIOUS}"]` + ) + if ( + previousTheme && + previousTheme.parentNode && + previousTheme.parentNode.contains(previousTheme) + ) { + previousTheme.parentNode.removeChild(previousTheme) + } + loadExternalResource(PRISM_THEME, 'css') + } else { + loadExternalResource(prismThemePrefixPath, 'css') + } } -/* 5. 智能折叠 S1 极简 UI */ -.collapse-wrapper { - margin: 1rem 0; -} +/* + * 将代码块转为可折叠对象 + */ +const renderCollapseCode = (codeCollapse, codeCollapseExpandDefault) => { + if (!codeCollapse) { + return + } -.collapse-panel-wrapper { - border-radius: 14px; - border: 1px solid rgba(0, 0, 0, 0.08); - background: rgba(255, 255, 255, 0.55); - -webkit-backdrop-filter: saturate(160%) blur(10px); - backdrop-filter: saturate(160%) blur(10px); - overflow: hidden; - transition: all 0.3s ease; -} + const COLLAPSE_MIN_LINES = Number(siteConfig('CODE_COLLAPSE_MIN_LINES', 18)) + const codeBlocks = document.querySelectorAll('.code-toolbar') -html.dark .collapse-panel-wrapper { - border-color: rgba(255, 255, 255, 0.12); - background: rgba(27, 28, 32, 0.6); -} + for (const codeBlock of codeBlocks) { + if (codeBlock.closest('.collapse-wrapper')) { + continue + } -.collapse-header { - width: 100%; - height: 36px; - display: flex; - align-items: center; - justify-content: space-between; - padding: 0 12px; - cursor: pointer; - user-select: none; - border: none; - background: transparent; - color: rgba(60, 60, 67, 0.6); -} + const code = codeBlock.querySelector('code') + if (!code) { + continue + } -html.dark .collapse-header { - color: rgba(235, 235, 245, 0.6); -} + const className = code.getAttribute('class') || '' + const languageMatch = className.match(/language-([\w-]+)/) + const language = languageMatch ? languageMatch[1] : '' -.collapse-label { - font-size: 13px; - letter-spacing: 0.02em; -} + const text = code.textContent || '' + const lineCount = text ? text.split('\n').length : 0 -.collapse-chevron { - width: 18px; - height: 18px; - transition: transform 0.3s ease; - opacity: 0.8; -} + // 方案 C:仅当代码行数超过阈值时才启用折叠 + if (lineCount && lineCount < COLLAPSE_MIN_LINES) { + continue + } + + const collapseWrapper = document.createElement('div') + collapseWrapper.className = 'collapse-wrapper w-full py-2' -.collapse-panel-wrapper.is-expanded .collapse-chevron { - transform: rotate(180deg); + const panelWrapper = document.createElement('div') + panelWrapper.className = 'collapse-panel-wrapper' + + const header = document.createElement('button') + header.type = 'button' + header.className = 'collapse-header' + + const label = language + ? `${language.toUpperCase()} · ${lineCount} lines` + : `${lineCount} lines` + + header.innerHTML = `${label}` + + const panel = document.createElement('div') + panel.className = 'collapse-panel' + + panelWrapper.appendChild(header) + panelWrapper.appendChild(panel) + collapseWrapper.appendChild(panelWrapper) + + codeBlock.parentNode.insertBefore(collapseWrapper, codeBlock) + panel.appendChild(codeBlock) + + function setExpanded(expanded) { + panelWrapper.classList.toggle('is-expanded', expanded) + panel.classList.toggle('is-expanded', expanded) + header.setAttribute('aria-expanded', expanded ? 'true' : 'false') + } + + header.addEventListener('click', () => { + const expanded = panelWrapper.classList.contains('is-expanded') + setExpanded(!expanded) + }) + + setExpanded(Boolean(codeCollapseExpandDefault)) + } } -.collapse-panel { - max-height: 0; - overflow: hidden; - border-top: 1px solid rgba(0, 0, 0, 0.06); - transition: max-height 0.32s ease; +/** + * 将mermaid语言 渲染成图片 + */ +const renderMermaid = mermaidCDN => { + const observer = new MutationObserver(mutationsList => { + for (const m of mutationsList) { + if (m.target.className === 'notion-code language-mermaid') { + const chart = m.target.querySelector('code').textContent + if (chart && !m.target.querySelector('.mermaid')) { + const mermaidChart = document.createElement('pre') + mermaidChart.className = 'mermaid' + mermaidChart.innerHTML = chart + m.target.appendChild(mermaidChart) + } + + const mermaidsSvg = document.querySelectorAll('.mermaid') + if (mermaidsSvg) { + let needLoad = false + for (const e of mermaidsSvg) { + if (e?.firstChild?.nodeName !== 'svg') { + needLoad = true + } + } + if (needLoad) { + loadExternalResource(mermaidCDN, 'js').then(url => { + setTimeout(() => { + const mermaid = window.mermaid + mermaid?.contentLoaded() + }, 100) + }) + } + } + } + } + }) + if (document.querySelector('#notion-article')) { + observer.observe(document.querySelector('#notion-article'), { + attributes: true, + subtree: true + }) + } } -html.dark .collapse-panel { - border-top-color: rgba(255, 255, 255, 0.08); +function renderPrismMac(codeLineNumbers) { + const container = document?.getElementById('notion-article') + + // Add line numbers + if (codeLineNumbers) { + const codeBlocks = container?.getElementsByTagName('pre') + if (codeBlocks) { + Array.from(codeBlocks).forEach(item => { + if (!item.classList.contains('line-numbers')) { + item.classList.add('line-numbers') + item.style.whiteSpace = 'pre-wrap' + } + }) + } + } + // 重新渲染之前检查所有的多余text + + try { + Prism.highlightAll() + } catch (err) { + console.log('代码渲染', err) + } + + const codeToolBars = container?.getElementsByClassName('code-toolbar') + // Add pre-mac element for Mac Style UI + if (codeToolBars) { + Array.from(codeToolBars).forEach(item => { + const existPreMac = item.getElementsByClassName('pre-mac') + if (existPreMac.length < codeToolBars.length) { + const preMac = document.createElement('div') + preMac.classList.add('pre-mac') + preMac.innerHTML = '' + item?.appendChild(preMac, item) + } + }) + } + + // 折叠代码行号bug + if (codeLineNumbers) { + fixCodeLineStyle() + } } -.collapse-panel.is-expanded { - max-height: 3000px; +/** + * 行号样式在首次渲染或被detail折叠后行高判断错误 + * 在此手动resize计算 + */ +const fixCodeLineStyle = () => { + const observer = new MutationObserver(mutationsList => { + for (const m of mutationsList) { + if (m.target.nodeName === 'DETAILS') { + const preCodes = m.target.querySelectorAll('pre.notion-code') + for (const preCode of preCodes) { + Prism.plugins.lineNumbers.resize(preCode) + } + } + } + }) + observer.observe(document.querySelector('#notion-article'), { + attributes: true, + subtree: true + }) + setTimeout(() => { + const preCodes = document.querySelectorAll('pre.notion-code') + for (const preCode of preCodes) { + Prism.plugins.lineNumbers.resize(preCode) + } + }, 10) } -/* 6. Prism 代码高亮补丁 (暗底优化) */ -.code-toolbar .token.comment, -.code-toolbar .token.prolog, -.code-toolbar .token.doctype, -.code-toolbar .token.cdata { color: rgba(235, 235, 245, 0.46); } -.code-toolbar .token.punctuation { color: rgba(235, 235, 245, 0.6); } -.code-toolbar .token.property, -.code-toolbar .token.tag, -.code-toolbar .token.boolean, -.code-toolbar .token.number, -.code-toolbar .token.constant, -.code-toolbar .token.symbol, -.code-toolbar .token.deleted { color: #7ee787; } -.code-toolbar .token.selector, -.code-toolbar .token.attr-name, -.code-toolbar .token.string, -.code-toolbar .token.char, -.code-toolbar .token.builtin, -.code-toolbar .token.inserted { color: #a5d6ff; } -.code-toolbar .token.atrule, -.code-toolbar .token.attr-value, -.code-toolbar .token.keyword { color: #ff7ab2; } -.code-toolbar .token.function, -.code-toolbar .token.class-name { color: #ffd479; } +export default PrismMac From 2fed028b808e1dbc062ebb4eb640420ec59aa521 Mon Sep 17 00:00:00 2001 From: RHZHZ <136958965+RHZHZ@users.noreply.github.com> Date: Mon, 9 Feb 2026 22:27:20 +0800 Subject: [PATCH 003/114] Update prism-mac-style.css --- public/css/prism-mac-style.css | 190 +++++++++++++++++++++++++++------ 1 file changed, 158 insertions(+), 32 deletions(-) diff --git a/public/css/prism-mac-style.css b/public/css/prism-mac-style.css index 2162f359bce..0b72a92166b 100644 --- a/public/css/prism-mac-style.css +++ b/public/css/prism-mac-style.css @@ -1,58 +1,184 @@ /** * @author https://github.com/txs - * 当配置文件 CODE_MAC_BAR 开启时,此样式会被动态引入,将开启代码组件左上角的mac图标 + * 通用 Mac 风格代码块样式 (NotionNext Universal) **/ + +/* 1. Mac 窗口容器样式 */ .code-toolbar { position: relative; - padding-top: 0 !important; - padding-bottom: 0 !important; width: 100%; - border-radius: 0.5rem; - margin-bottom: 0.5rem; + margin: 1rem 0; + border-radius: 14px; + border: 1px solid rgba(0, 0, 0, 0.1); + background: rgba(27, 28, 32, 0.94); /* 浅色模式下默认暗底 */ + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12), 0 18px 44px rgba(0, 0, 0, 0.18); + overflow: hidden; + transition: box-shadow 0.3s ease, transform 0.3s ease; } -.collapse-wrapper .code-toolbar { - margin-bottom: 0; +/* 暗色模式适配 */ +html.dark .code-toolbar { + border-color: rgba(255, 255, 255, 0.12); + background: rgba(27, 28, 32, 0.72); + -webkit-backdrop-filter: saturate(140%) blur(12px); + backdrop-filter: saturate(140%) blur(12px); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.35), 0 18px 44px rgba(0, 0, 0, 0.45); } -.toolbar-item{ - white-space: nowrap; +/* 2. Mac 三色点 */ +.pre-mac { + position: absolute; + left: 12px; + top: 11px; + z-index: 13; + display: flex; + gap: 7px; } -.toolbar-item > button { - margin-top: -0.1rem; +.pre-mac > span { + width: 10px; + height: 10px; + border-radius: 999px; } -pre[class*='language-'] { - margin-top: 0rem !important; - // margin-bottom: 0rem !important; - padding-top: 1.5rem !important; +.pre-mac > span:nth-child(1) { background: #ff5f57; } +.pre-mac > span:nth-child(2) { background: #febc2e; } +.pre-mac > span:nth-child(3) { background: #28c840; } +/* 3. Toolbar 工具栏 (复制按钮、语言标签) */ +.code-toolbar > .toolbar { + position: absolute; + top: 0; + right: 0; + height: 34px; + display: flex; + align-items: center; + gap: 8px; + padding: 0 10px; + z-index: 12; } -.pre-mac { - position: absolute; - left: 0.9rem; - top: 0.5rem; - z-index: 10; +.code-toolbar .toolbar-item > button { + font-size: 12px !important; + line-height: 1 !important; + padding: 6px 8px !important; + border-radius: 999px !important; + border: 1px solid rgba(255, 255, 255, 0.15) !important; + background: rgba(255, 255, 255, 0.1) !important; + color: rgba(255, 255, 255, 0.82) !important; + cursor: pointer; + transition: all 0.2s ease; } -.pre-mac > span { - width: 10px; - height: 10px; - border-radius: 50%; - margin-right: 5px; - float: left; +.code-toolbar .toolbar-item > button:hover { + background: rgba(255, 255, 255, 0.2) !important; + color: #fff !important; +} + +/* 4. 代码正文排版 */ +pre.notion-code { + font-size: 0.92em !important; + line-height: 1.6 !important; + margin: 0 !important; + padding: 46px 1.1rem 1rem !important; + border-radius: 0 !important; + border: none !important; + background: transparent !important; + color: rgba(255, 255, 255, 0.9) !important; + overflow: auto; + -webkit-overflow-scrolling: touch; +} + +/* 5. 智能折叠 S1 极简 UI */ +.collapse-wrapper { + margin: 1rem 0; } -.pre-mac > span:nth-child(1) { - background: red; +.collapse-panel-wrapper { + border-radius: 14px; + border: 1px solid rgba(0, 0, 0, 0.08); + background: rgba(255, 255, 255, 0.55); + -webkit-backdrop-filter: saturate(160%) blur(10px); + backdrop-filter: saturate(160%) blur(10px); + overflow: hidden; + transition: all 0.3s ease; } -.pre-mac > span:nth-child(2) { - background: sandybrown; +html.dark .collapse-panel-wrapper { + border-color: rgba(255, 255, 255, 0.12); + background: rgba(27, 28, 32, 0.6); } -.pre-mac > span:nth-child(3) { - background: limegreen; +.collapse-header { + width: 100%; + height: 36px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 12px; + cursor: pointer; + user-select: none; + border: none; + background: transparent; + color: rgba(60, 60, 67, 0.6); +} + +html.dark .collapse-header { + color: rgba(235, 235, 245, 0.6); +} + +.collapse-label { + font-size: 13px; + letter-spacing: 0.02em; +} + +.collapse-chevron { + width: 18px; + height: 18px; + transition: transform 0.3s ease; + opacity: 0.8; +} + +.collapse-panel-wrapper.is-expanded .collapse-chevron { + transform: rotate(180deg); +} + +.collapse-panel { + max-height: 0; + overflow: hidden; + border-top: 1px solid rgba(0, 0, 0, 0.06); + transition: max-height 0.32s ease; +} + +html.dark .collapse-panel { + border-top-color: rgba(255, 255, 255, 0.08); +} + +.collapse-panel.is-expanded { + max-height: 3000px; } + +/* 6. Prism 代码高亮补丁 (暗底优化) */ +.code-toolbar .token.comment, +.code-toolbar .token.prolog, +.code-toolbar .token.doctype, +.code-toolbar .token.cdata { color: rgba(235, 235, 245, 0.46); } +.code-toolbar .token.punctuation { color: rgba(235, 235, 245, 0.6); } +.code-toolbar .token.property, +.code-toolbar .token.tag, +.code-toolbar .token.boolean, +.code-toolbar .token.number, +.code-toolbar .token.constant, +.code-toolbar .token.symbol, +.code-toolbar .token.deleted { color: #7ee787; } +.code-toolbar .token.selector, +.code-toolbar .token.attr-name, +.code-toolbar .token.string, +.code-toolbar .token.char, +.code-toolbar .token.builtin, +.code-toolbar .token.inserted { color: #a5d6ff; } +.code-toolbar .token.atrule, +.code-toolbar .token.attr-value, +.code-toolbar .token.keyword { color: #ff7ab2; } +.code-toolbar .token.function, +.code-toolbar .token.class-name { color: #ffd479; } From 001f4172879dfde2f4afbc433e6206afffa1376e Mon Sep 17 00:00:00 2001 From: RHZHZ <136958965+RHZHZ@users.noreply.github.com> Date: Mon, 9 Feb 2026 22:28:03 +0800 Subject: [PATCH 004/114] Update blog.config.js --- blog.config.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/blog.config.js b/blog.config.js index 24c2a049cf2..755b4d6b711 100644 --- a/blog.config.js +++ b/blog.config.js @@ -24,6 +24,8 @@ const BLOG = { BEI_AN_LINK: process.env.NEXT_PUBLIC_BEI_AN_LINK || 'https://beian.miit.gov.cn/', // 备案查询链接,如果用了萌备等备案请在这里填写 BEI_AN_GONGAN: process.env.NEXT_PUBLIC_BEI_AN_GONGAN || '', // 公安备案号,例如 '浙公网安备3xxxxxxxx8号' + CODE_COLLAPSE_MIN_LINES: 30,//“长代码”阈值 + // RSS订阅 ENABLE_RSS: process.env.NEXT_PUBLIC_ENABLE_RSS || true, // 是否开启RSS订阅功能 @@ -71,4 +73,4 @@ const BLOG = { UUID_REDIRECT: process.env.UUID_REDIRECT || false } -module.exports = BLOG \ No newline at end of file +module.exports = BLOG From c7db7c71751b8b3de35644b8acbe0548e224dcbf Mon Sep 17 00:00:00 2001 From: hiderx <3193997905@qq.com> Date: Mon, 16 Feb 2026 13:20:47 +0800 Subject: [PATCH 005/114] feat: claude theme changes without global entrypoint edits --- Claude-Theme-README-en.md | 356 +++ Claude-Theme-README.md | 725 +++++ lib/server/claude/contributionStore.js | 510 ++++ pages/api/claude/contribution-refresh.js | 52 + .../AnthropicSans-Text-Medium-Static.otf | Bin 0 -> 61528 bytes .../AnthropicSans-Text-Regular-Static.otf | Bin 0 -> 61144 bytes ...nthropicSans-Text-RegularItalic-Static.otf | Bin 0 -> 55916 bytes .../AnthropicSans-Text-Semibold-Static.otf | Bin 0 -> 62380 bytes .../AnthropicSerif-Display-Regular-Static.otf | Bin 0 -> 68796 bytes ...AnthropicSerif-Display-Semibold-Static.otf | Bin 0 -> 66856 bytes .../claude/github-markdown-css/.editorconfig | 12 + .../claude/github-markdown-css/.gitattributes | 1 + .../github-markdown-css/.github/security.md | 3 + .../claude/github-markdown-css/.gitignore | 2 + .../themes/claude/github-markdown-css/.npmrc | 1 + .../github-markdown-dark-colorblind.css | 1124 ++++++++ .../github-markdown-dark-dimmed.css | 1124 ++++++++ .../github-markdown-dark-high-contrast.css | 1124 ++++++++ .../github-markdown-dark.css | 1124 ++++++++ .../github-markdown-light-colorblind.css | 1124 ++++++++ .../github-markdown-light.css | 1124 ++++++++ .../github-markdown-css/github-markdown.css | 1248 ++++++++ .../claude/github-markdown-css/index.html | 1889 ++++++++++++ .../themes/claude/github-markdown-css/license | 9 + .../claude/github-markdown-css/package.json | 48 + .../claude/github-markdown-css/readme.md | 76 + styles/claude-readme.css | 1 + themes/claude/components/ArticleAround.js | 32 + themes/claude/components/ArticleInfo.js | 64 + themes/claude/components/ArticleLock.js | 52 + themes/claude/components/BlogArchiveItem.js | 36 + themes/claude/components/BlogItem.js | 76 + themes/claude/components/BlogListPage.js | 74 + themes/claude/components/BlogListScroll.js | 70 + themes/claude/components/BlogPostBar.js | 29 + themes/claude/components/Catalog.js | 266 ++ themes/claude/components/DarkModeButton.js | 96 + .../components/ExampleRecentComments.js | 35 + themes/claude/components/Footer.js | 24 + themes/claude/components/JumpToTopButton.js | 35 + themes/claude/components/MenuItemCollapse.js | 92 + themes/claude/components/MenuItemDrop.js | 78 + themes/claude/components/MenuList.js | 101 + themes/claude/components/NavBar.js | 247 ++ themes/claude/components/ProfileHome.js | 956 +++++++ themes/claude/components/RecommendPosts.js | 32 + themes/claude/components/SocialButton.js | 68 + themes/claude/components/Title.js | 19 + themes/claude/components/TopBar.js | 19 + themes/claude/config.js | 40 + themes/claude/index.js | 384 +++ themes/claude/style.js | 2543 +++++++++++++++++ 52 files changed, 17145 insertions(+) create mode 100644 Claude-Theme-README-en.md create mode 100644 Claude-Theme-README.md create mode 100644 lib/server/claude/contributionStore.js create mode 100644 pages/api/claude/contribution-refresh.js create mode 100644 public/themes/claude/fonts/AnthropicSans-Text-Medium-Static.otf create mode 100644 public/themes/claude/fonts/AnthropicSans-Text-Regular-Static.otf create mode 100644 public/themes/claude/fonts/AnthropicSans-Text-RegularItalic-Static.otf create mode 100644 public/themes/claude/fonts/AnthropicSans-Text-Semibold-Static.otf create mode 100644 public/themes/claude/fonts/AnthropicSerif-Display-Regular-Static.otf create mode 100644 public/themes/claude/fonts/AnthropicSerif-Display-Semibold-Static.otf create mode 100644 public/themes/claude/github-markdown-css/.editorconfig create mode 100644 public/themes/claude/github-markdown-css/.gitattributes create mode 100644 public/themes/claude/github-markdown-css/.github/security.md create mode 100644 public/themes/claude/github-markdown-css/.gitignore create mode 100644 public/themes/claude/github-markdown-css/.npmrc create mode 100644 public/themes/claude/github-markdown-css/github-markdown-dark-colorblind.css create mode 100644 public/themes/claude/github-markdown-css/github-markdown-dark-dimmed.css create mode 100644 public/themes/claude/github-markdown-css/github-markdown-dark-high-contrast.css create mode 100644 public/themes/claude/github-markdown-css/github-markdown-dark.css create mode 100644 public/themes/claude/github-markdown-css/github-markdown-light-colorblind.css create mode 100644 public/themes/claude/github-markdown-css/github-markdown-light.css create mode 100644 public/themes/claude/github-markdown-css/github-markdown.css create mode 100644 public/themes/claude/github-markdown-css/index.html create mode 100644 public/themes/claude/github-markdown-css/license create mode 100644 public/themes/claude/github-markdown-css/package.json create mode 100644 public/themes/claude/github-markdown-css/readme.md create mode 100644 styles/claude-readme.css create mode 100644 themes/claude/components/ArticleAround.js create mode 100644 themes/claude/components/ArticleInfo.js create mode 100644 themes/claude/components/ArticleLock.js create mode 100644 themes/claude/components/BlogArchiveItem.js create mode 100644 themes/claude/components/BlogItem.js create mode 100644 themes/claude/components/BlogListPage.js create mode 100644 themes/claude/components/BlogListScroll.js create mode 100644 themes/claude/components/BlogPostBar.js create mode 100644 themes/claude/components/Catalog.js create mode 100644 themes/claude/components/DarkModeButton.js create mode 100644 themes/claude/components/ExampleRecentComments.js create mode 100644 themes/claude/components/Footer.js create mode 100644 themes/claude/components/JumpToTopButton.js create mode 100644 themes/claude/components/MenuItemCollapse.js create mode 100644 themes/claude/components/MenuItemDrop.js create mode 100644 themes/claude/components/MenuList.js create mode 100644 themes/claude/components/NavBar.js create mode 100644 themes/claude/components/ProfileHome.js create mode 100644 themes/claude/components/RecommendPosts.js create mode 100644 themes/claude/components/SocialButton.js create mode 100644 themes/claude/components/Title.js create mode 100644 themes/claude/components/TopBar.js create mode 100644 themes/claude/config.js create mode 100644 themes/claude/index.js create mode 100644 themes/claude/style.js diff --git a/Claude-Theme-README-en.md b/Claude-Theme-README-en.md new file mode 100644 index 00000000000..40d59af53d6 --- /dev/null +++ b/Claude-Theme-README-en.md @@ -0,0 +1,356 @@ +# Claude 3.5 Theme + +> Applies to: `themes/claude` (with some global changes in `pages/_app.js`, `pages/index.js`, and `components/SEO.js`) + +This theme combines the clean reading experience of **Claude Docs** with the rich personal profile structure of **GitHub**, creating a professional yet personal blog for developers. + +### Core Philosophy + +1. **Reading Experience**: Minimal distractions, clear typography (Anthropic Sans/Serif), and excellent code block readability. +2. **Personal Branding**: A homepage that mirrors your GitHub profile (Bio, Activity, Heatmap). +3. **Data Persistence**: Activity and contributions are tracked via Supabase for historical accuracy. +4. **Performance**: Multi-layer caching ensures fast loads and stable rendering. + +--- + +## Quick Start + +1. **Configure Environment**: + Add to your `.env` or `.env.local` (see below for details): + ```bash + # Activate Theme + NEXT_PUBLIC_THEME=claude # or configure in notion configuration page + NOTION_PAGE_ID= + + # [Optional] Enable Contribution Persistence (Recommended) + SUPABASE_URL= + SUPABASE_SECRET_KEY= + CLAUDE_CONTRIBUTION_TRIGGER_TOKEN= + ``` + +2. **Create Profile README**: + Create a Notion page with the slug `readme.md`. This page will be automatically rendered on your blog homepage. + +3. **Launch**: + ```bash + yarn dev + ``` + Your blog is now running with the Claude theme! + +--- + +## 1. Design Strategy + +### Desktop View +The layout uses a 3-column structure inspired by technical documentation sites: +- **Left Sidebar**: Persistent navigation, profile card, contact info, and a simulated terminal prompt. +- **Center Content**: The main reading area, optimized for long-form content. +- **Right Sidebar**: Table of Contents (TOC) that tracks scrolling position (Article pages only). + +### Mobile Adaptation +Mobile design is a first-class citizen, not an afterthought: +- **Navigation**: Collapses into a clean top bar. +- **Heatmap**: Preserves the square aspect ratio of contribution cells; allows horizontal scrolling instead of shrinking cells. +- **Typography**: Maintains readability with appropriate font scaling. +- **Interactions**: Touch-friendly targets for all clickable elements. + +--- + +## 2. Features Details + +### Contribution Heatmap & Activity +The homepage features a GitHub-style contribution graph and activity feed. + +- **Heatmap**: Displays daily contribution levels (0-4) based on article creation and updates. +- **Activity Feed**: A chronological stream of your "commits" (article updates) and "created repositories" (new articles). +- **Yearly View**: Switch between a rolling 1-year window or specific calendar years. + +### README Rendering +Your `readme.md` Notion page is rendered directly on the homepage, serving as your "Profile README". +- **Rendering Pipeline**: Notion Blocks -> Markdown -> HTML. +- **Engine**: Prioritizes GitHub's `/markdown` API for perfect GFM (GitHub Flavored Markdown) fidelity, falling back to a local parser if the API limit is reached. +- **Caching**: Rendered HTML is cached to prevent redundant API calls and speed up page loads. + +### Terminal Widget +A fun, dynamic element in the sidebar that shows: +- Last login time (simulated). +- Current "user" and "machine" (e.g., `user@Macintosh ~ %`). +- Typing effect for the blog title. + +--- + +## 3. Configuration + +Config file: `themes/claude/config.js` + +| Config Key | Description | Default | +| :--- | :--- | :--- | +| `CLAUDE_BLOG_NAME` | Main blog title | '活字印刷' | +| `CLAUDE_BLOG_NAME_EN` | Subtitle / English title | 'Typography' | +| `CLAUDE_MENU_CATEGORY` | Show sidebar categories | `true` | +| `CLAUDE_MENU_TAG` | Show sidebar tags | `true` | +| `CLAUDE_MENU_ARCHIVE` | Show sidebar archives | `true` | +| `CLAUDE_TOC_ENABLE` | Enable Table of Contents | `true` | +| `CLAUDE_TOC_SHOW_LEVEL3` | Show H3 in TOC | `true` | +| `CLAUDE_TOC_SCROLL_BEHAVIOR` | TOC scroll animation | 'instant' (or 'smooth') | +| `CLAUDE_PROFILE_AVATAR` | Custom avatar URL | `''` (Use global avatar) | +| `CLAUDE_README_CACHE_ENABLED` | Cache README HTML | `true` | +| `CLAUDE_CONTRIBUTION_PERSIST_ENABLED` | Enable Supabase persistence | `true` | +| `CLAUDE_CONTRIBUTION_EVENT_LIMIT` | Max events to fetch | `50000` | + +> Most options can be overridden via `NEXT_PUBLIC_` env vars. + +--- + +## 4. Environment Variables + +To fully enable all features, especially contribution persistence, configure the following in `.env.local` or your deployment platform. + +### Basic Setup +```bash +NEXT_PUBLIC_THEME=claude +NOTION_PAGE_ID= +``` + +### Supabase (Required for Persistent Contributions) +Without this, the heatmap is generated on-the-fly from the current post list, which loses historical accuracy (e.g., deleted posts, precise update times). + +```bash +NEXT_PUBLIC_CLAUDE_CONTRIBUTION_PERSIST_ENABLED=true + +# Supabase Connection +SUPABASE_URL=https://your-project.supabase.co +SUPABASE_SECRET_KEY=your-service-role-key-or-secret +``` + +### Advanced Cache Control +```bash +# Enable internal caching (recommended) +ENABLE_CACHE=true + +# Optional: Use Redis for distributed caching +REDIS_URL=redis://user:pass@host:port +``` + +--- + +## 5. Database Schema (Supabase) + +If using Supabase, create these two tables to store contribution data. + +### 1. Events Table (`claude_contribution_events_v1`) +Stores individual contribution events (create/update). + +```sql +create table if not exists public.claude_contribution_events_v1 ( + event_id text primary key, -- e_md5(type|repoId|ts) + event_type text not null check (event_type in ('create', 'update')), + repository_id text not null, -- Normalized Post ID + timestamp_ms bigint not null, + title text default '', + slug text default '' +); + +-- Indices for performance +create index if not exists idx_claude_contrib_events_ts + on public.claude_contribution_events_v1 (timestamp_ms desc); +create index if not exists idx_claude_contrib_events_repo + on public.claude_contribution_events_v1 (repository_id); +``` + +### 2. Snapshots Table (`claude_contribution_snapshots_v1`) +Tracks the state of posts to detect changes during builds. + +```sql +create table if not exists public.claude_contribution_snapshots_v1 ( + repository_id text primary key, + title text default '', + slug text default '', + created_at_ms bigint not null default 0, + updated_at_ms bigint not null default 0, + synced_at_ms bigint not null default 0 +); + +create index if not exists idx_claude_contrib_snapshots_updated + on public.claude_contribution_snapshots_v1 (updated_at_ms desc); +``` + +### Update Logic +1. **Sync**: On build (`getStaticProps` of index), the system compares current Notion posts against `snapshots`. +2. **Detect**: + * New post? -> Insert `create` event. + * Updated post (`updatedAt > lastSnapshot.updatedAt`)? -> Insert `update` event. +3. **Persist**: Updates are upserted to Supabase. +4. **Display**: The heatmap reads from the `events` table (filtered to exclude today to prevent jitter). + +--- + +## 6. Caching Strategy + +The theme employs a multi-level caching strategy for stability. + +1. **Contribution Daily Cache** (Local Memory): + * Aggregates events for the day. + * Reduces database reads. + * Refreshes on new builds or via API. + +2. **README HTML Cache**: + * Caches the expensive GitHub API markdown rendering. + * Key: `readme_render_snapshot_v2_${pageId}`. + +3. **GitHub Markdown API Cache**: + * Caches the raw response from GitHub to avoid rate limits (60 requests/hr for unauthenticated IPs). + * Fallback: If the API fails or limits, falls back to a local `marked` + `highlight.js` renderer. + +--- + +## 7. Troubleshooting + +**Q: My heatmap is empty.** +* Ensure `NEXT_PUBLIC_CLAUDE_CONTRIBUTION_PERSIST_ENABLED=true`. +* Check if Supabase tables exist and keys are correct. +* Verify `NOTION_PAGE_ID` allows access to the posts. + +**Q: Changes made today aren't showing.** +* By design, the heatmap shows data *up to yesterday* to ensure the grid is stable and "complete". Today's dots appear tomorrow. +* You can force a refresh manually if needed via the refresh API. + +**Q: The README styling looks different.** +* This usually means the GitHub API rate limit was hit, and the theme fell back to the local renderer. It will recover automatically when the cache expires or the limit resets. + +--- + +## 8. Sidebar Persistence Architecture + +### Problem + +In Next.js Pages Router, every client-side navigation (clicking a link) can re-render or even **remount** `LayoutBase`. This causes the left sidebar (avatar, terminal widget, navigation) to reload on every page transition — a poor user experience. + +### Three-Layer Solution + +The theme employs three layers to ensure the sidebar **only refreshes on browser refresh**, not on link-based navigation: + +#### Layer 1: `pages/_app.js` — Stabilize the Layout Component Reference + +> **⚠️ MERGE WARNING: This modification is in the global `pages/_app.js`, NOT inside the claude theme directory. Pay special attention to this file during merges.** + +The original code had two problems: +1. `theme`'s `useMemo` depended on the entire `route` object (`[route]`). Since `useRouter()` returns a new object reference on every route change, `theme` was recalculated unnecessarily. +2. `GLayout` was a wrapper component defined inside `MyApp` via `useCallback`, calling `getBaseLayoutByTheme(theme)` on every render. + +The fix: + +```javascript +// Depend on specific values, not the entire route object +const theme = useMemo(() => { + return ( + getQueryParam(route.asPath, 'theme') || + pageProps?.NOTION_CONFIG?.THEME || + BLOG.THEME + ) +}, [route.asPath, pageProps?.NOTION_CONFIG?.THEME]) + +// Memoize Layout component — stable reference as long as theme doesn't change +const Layout = useMemo(() => getBaseLayoutByTheme(theme), [theme]) + +// Use Layout directly, no GLayout wrapper + + + + +``` + +This ensures React always sees the same component type at the same tree position, so it **reuses** the `LayoutBase` instance (re-render) instead of destroying and recreating it (remount). + +#### Layer 2: `themes/claude/index.js` — Memoized SidebarContent + +The desktop sidebar is wrapped in `React.memo(() => true)`: + +```javascript +const SidebarContent = memo(function SidebarContent(props) { + return ( +
+
+
+
+ ) +}, () => true) // Always returns true → blocks all prop-change re-renders +``` + +- `React.memo`'s comparator `() => true` tells React "props are always equal", preventing any parent re-render from propagating. +- `MenuList` inside `NavBar` uses `useRouter()` (React Context), so active menu state still updates correctly — Context changes bypass `React.memo`. + +#### Layer 3: `themes/claude/components/NavBar.js` — Module-Level Terminal Session Cache + +The terminal login time and tty number are stored in a **JavaScript module-level variable**, outside of React's component lifecycle: + +```javascript +let _cachedTerminalSession = null +function getOrCreateTerminalSession() { + if (!_cachedTerminalSession) { + _cachedTerminalSession = { + loginTime: formatTerminalLoginTime(new Date()), + tty: `ttys00${Math.floor(Math.random() * 10)}` + } + } + return _cachedTerminalSession +} +``` + +- Module-level variables persist across component mount/unmount cycles. +- Only a full browser refresh (which reloads the JS module) resets this value. + +### Files Affected + +| File | Scope | Change | +|---|---|---| +| `pages/_app.js` | **Global** (not inside theme dir) | Removed `GLayout`; memoized `Layout` reference | +| `themes/claude/index.js` | Theme | Added `SidebarContent` memo wrapper | +| `themes/claude/components/NavBar.js` | Theme | Terminal session → module-level cache | + +--- + +## 9. Development + +### Project Structure +* `themes/claude/components/`: UI components (NavBar, Catalog, etc.). +* `themes/claude/style.js`: CSS variables and global styles. +* `lib/server/claude/contributionStore.js`: Subabase logic. +* `pages/api/claude/`: API endpoints for cache revalidation. + +### Commands +* `yarn dev`: Run locally. +* `yarn build`: Production build (triggers contribution sync). + +--- + +## 10. Additional Global Changes (RSS + Homepage Title) + +These changes are outside the `themes/claude` directory but directly affect runtime behavior. + +### 10.1 Stop RSS content fetching when RSS is disabled + +* File: `pages/index.js` +* Change: `generateRss(props)` is no longer unconditional; it now runs only when `ENABLE_RSS=true`. +* Result: + * When RSS is disabled, `getPostBlocks(..., 'rss-content')` is not called. + * Server logs such as `from:rss-content` disappear. + +### 10.2 Remove subtitle from homepage `` + +* File: `components/SEO.js` +* Route: `/` (homepage) +* Change: homepage title changed from `site title | site description` to `site title` only. +* Result: + * No fallback subtitle like `这是一个由NotionNext生成的站点` in browser tabs. + * No separator `|` on homepage title. + +### 10.3 ⚠️ Merge / Upgrade Notes (Consolidated) + +When pulling upstream updates, verify all of the following remain intact: + +1. In `pages/_app.js`, `Layout` is still cached with `useMemo(() => getBaseLayoutByTheme(theme), [theme])` (see Section 8, Layer 1). +2. In `pages/_app.js`, `theme`'s `useMemo` dependencies are still `[route.asPath, pageProps?.NOTION_CONFIG?.THEME]`, **NOT** `[route]`. +3. In `pages/_app.js`, no `useCallback` wrapper component is used to indirectly call `getBaseLayoutByTheme`. +4. RSS generation in `pages/index.js` is still gated by `ENABLE_RSS`. +5. Homepage title in `components/SEO.js` still uses site title only (no appended description). diff --git a/Claude-Theme-README.md b/Claude-Theme-README.md new file mode 100644 index 00000000000..ef8f42d4c7b --- /dev/null +++ b/Claude-Theme-README.md @@ -0,0 +1,725 @@ +# Claude Theme README + +> 适用目录:`themes/claude`(部分修改涉及全局 `pages/_app.js`、`pages/index.js`、`components/SEO.js`) +> +> 本文档描述当前 `claude` 主题的实际实现,重点覆盖: +> 1. 主题特性与视觉设计目标 +> 2. 文章页(Claude Code Docs 风格)与首页(GitHub Profile 风格) +> 3. 移动端复刻与优化策略 +> 4. Contribution 热力图生成逻辑 +> 5. 数据库设计与更新逻辑 +> 6. 缓存设计 +> 7. 配置项与环境变量说明 +> 8. 如何启用并使用该主题 +> 9. **侧边栏持久化架构**(含全局 `_app.js` 修改,合并时需注意) + +--- + +## 1. 主题定位与核心特性 + +`claude` 主题是一个“混合型”主题: + +- 文章阅读体验:参考 Claude Code Docs 的排版与色彩体系。 +- 首页信息架构:1:1 借鉴 GitHub 个人主页(头像、资料、联系方式、贡献热力图、活动流)。 +- 交互策略:内容优先、低干扰、轻动效。 +- 数据策略:首页活动数据支持持久化到 Supabase,避免每次都从前端即时推导。 + +主要能力: + +- 三栏布局(左侧资料栏 / 中间正文 / 右侧 TOC)。 +- 文章页 Notion 原生渲染(`NotionPage`)+ 主题化样式。 +- 首页 README 卡片:Notion blockMap 转 Markdown,再转 HTML 渲染。 +- GitHub 风格 Contribution 热力图 + 活动摘要流。 +- Contribution 事件持久化(`create` / `update`)与去重。 +- 多层缓存(页面缓存、README 缓存、Contrib 日缓存)与失败回退。 + +--- + +## 快速开始 (Quick Start) + +只需要简单三步即可体验: + +1. **配置环境变量**: + 在 `.env` 或 `.env.local` 中添加(完整配置见下文): + ```bash + # 启用主题 + NEXT_PUBLIC_THEME=claude # 或者在notion配置页面中配置 + NOTION_PAGE_ID=<your-notion-page-id> + + # [可选] 启用贡献热力图持久化 (推荐) + SUPABASE_URL=<your-supabase-url> + SUPABASE_SECRET_KEY=<your-supabase-key> + CLAUDE_CONTRIBUTION_TRIGGER_TOKEN=<secure-token-for-api> + ``` + +2. **创建个人资料页**: + 在 Notion 中新建一个页面,并将其 **slug** 设置为 `readme.md`。该内容将显示在首页。 + +3. **启动**: + ```bash + yarn dev + ``` + +--- + +## 2. 目录结构与关键文件 + +主题核心文件: + +- `themes/claude/index.js` + - 主题布局入口(`LayoutBase` / `LayoutIndex` / `LayoutSlug` 等)。 +- `themes/claude/style.js` + - 主题变量与全量样式(含桌面/移动端规则)。 +- `themes/claude/config.js` + - 主题配置项与默认值。 +- `themes/claude/components/ProfileHome.js` + - 首页 README、热力图、Contribution activity 逻辑。 +- `themes/claude/components/NavBar.js` + - 左侧资料栏(头像、联系方式、导航、终端模拟块)。 +- `themes/claude/components/MenuList.js` + - 菜单渲染与 icon 规则(支持 Notion icon 字段写 Font Awesome)。 +- `themes/claude/components/Catalog.js` + - 右侧目录(TOC)与滚动联动。 + +服务端数据链路相关: + +- `pages/index.js` + - 首页 `getStaticProps`:README 渲染、Contrib 同步、缓存回退。 +- `lib/server/claude/contributionStore.js` + - Supabase 读写、事件生成、去重、日缓存。 +- `lib/db/notion/notionBlocksToHtml.js` + - Notion blockMap -> Markdown -> HTML(GitHub API 优先,本地回退)。 +- `pages/api/claude/contribution-refresh.js` + - 手动刷新 Contribution 缓存与 ISR 触发。 + +--- + +## 3. 文章样式(仿 Claude Code Docs) + +### 3.1 布局风格 + +文章页采用 `LayoutSlug` + `NotionPage` 渲染正文,外层由 `LayoutBase` 提供: + +- 左侧固定宽资料/导航区域。 +- 中间内容区(多档 `max-w-*` 宽度控制)。 +- 右侧目录区(文章页 + 桌面端 + TOC 开启时显示)。 + +### 3.2 样式体系 + +`themes/claude/style.js` 中定义了大量 CSS 变量: + +- 配色变量:正文、边框、强调色、暗色模式等。 +- 字体变量: + - 标题:`Anthropic Serif Display` + - 正文:`Anthropic Sans Text` + - 等宽:`JetBrains Mono` fallback 链 +- Notion 内容区域样式覆写:链接、引用、代码、表格、callout、目录高亮等。 + +### 3.3 目录(TOC)行为 + +目录组件:`themes/claude/components/Catalog.js` + +- 支持 L1/L2 必显。 +- L3 由 `CLAUDE_TOC_SHOW_LEVEL3` 控制。 +- 滚动监听并高亮当前 section,同时联动父级。 +- `On this page` 标题可回到顶部。 +- 滚动行为支持 `smooth` 或 `instant`(`CLAUDE_TOC_SCROLL_BEHAVIOR`)。 + +--- + +## 4. 首页(1:1 GitHub Profile 复刻) + +首页组件:`themes/claude/components/ProfileHome.js` + +从上到下主要区块: + +1. README 卡片(`README.md` 标签头 + 内容区) +2. Contribution 热力图区块 +3. Contribution activity 时间流 + +左侧资料栏组件:`themes/claude/components/NavBar.js` + +- 圆形头像(GitHub 风格)。 +- 昵称 + Bio。 +- 联系方式(GitHub / Email)。 +- 导航菜单(支持图标)。 +- 终端模拟区: + - 第一行:`Last login: ... on ttys00x` + - 第二行:`{author}@Macintosh ~ % {blogName}` + 光标 + - 通过 `ResizeObserver` 自动缩放字体,尽量保证同一行展示。 + +--- + +## 5. 移动端复刻与优化 + +移动端保留“与桌面一致的字体风格和信息层级”,但对结构做适配: + +- 左侧栏折叠为顶部简化导航。 +- Contribution 热力图容器允许横向滚动(保持 cell 尺寸,不压缩方块)。 +- 滚动条隐藏但可滑动。 +- Year 选择器改为移动端友好的下拉菜单,放在 `Contribution activity` 标题行。 +- README / 活动卡片边距与圆角在窄屏下重新平衡。 + +实现重点: + +- 桌面端 cell 尺寸随宽度动态计算。 +- 移动端强制固定 `contribCellSize=11`,避免字体/格子被缩放破坏视觉一致性。 + +--- + +## 6. Contribution 热力图生成逻辑 + +核心代码:`themes/claude/components/ProfileHome.js` + +### 6.1 输入数据 + +优先使用持久化事件(`props.contributionEvents`): + +- `type`: `create` 或 `update` +- `repositoryId` +- `timestampMs` +- `title` / `slug` + +如果持久化不可用,则回退到前端从 `posts` 直接推导: + +- 每篇文章产生一个 `create`(createdAt) +- 若更新时间与创建时间不同,再产生一个 `update`(updatedAt) + +### 6.2 统计区间 + +两种模式: + +- 默认模式:最近 1 年(滚动窗口) +- 年份模式:固定某一年(1 月 1 日到 12 月 31 日) + +区间会对齐到整周边界: + +- 起点对齐到周日 +- 终点对齐到周六 + +### 6.3 颜色分级(level) + +`CONTRIBUTION_LEVEL_THRESHOLDS`: + +- `0`: 无贡献 +- `1`: `count === 1` +- `2`: `count >= 2` +- `3`: `count >= 3` +- `4`: `count >= 6` + +说明:`1 contribution/day` 必须稳定映射到同一颜色等级。 + +### 6.4 月标签策略 + +默认滚动年模式: + +- 按周列起始日期所属月份生成 marker(接近 GitHub 视觉规则)。 + +固定年份模式: + +- 每个月从当月第一天所在周列生成 marker。 + +### 6.5 交互 + +- Hover cell 显示 tooltip(延迟触发,避免抖动)。 +- 点击某一天可过滤下方 activity(再次点击取消)。 +- `Less`/`More` legend 与热力图颜色等级一致。 + +--- + +## 7. Contribution Activity 生成逻辑 + +核心代码仍在 `themes/claude/components/ProfileHome.js`。 + +渲染策略: + +- 默认按“月”分组(如 March 2026)。 +- 点选某一天后,切换成“日”分组(如 March 3, 2026)。 +- 组内分别聚合: + - `update` 事件 -> commit summary(按仓库聚合,统计 commitCount) + - `create` 事件 -> created repositories 列表 + +显示逻辑: + +- 无数据时展示 empty state。 +- 有更新和创建则分别渲染摘要行。 +- 链接点击跳转对应文章。 + +--- + +## 8. 数据库设计(Supabase) + +服务端存储实现:`lib/server/claude/contributionStore.js` + +使用两张表: + +- `claude_contribution_events_v1` +- `claude_contribution_snapshots_v1` + +### 8.1 推荐表结构 + +```sql +create table if not exists public.claude_contribution_events_v1 ( + event_id text primary key, + event_type text not null check (event_type in ('create', 'update')), + repository_id text not null, + timestamp_ms bigint not null, + title text default '', + slug text default '' +); + +create index if not exists idx_claude_contrib_events_ts + on public.claude_contribution_events_v1 (timestamp_ms desc); + +create index if not exists idx_claude_contrib_events_repo + on public.claude_contribution_events_v1 (repository_id); + +create table if not exists public.claude_contribution_snapshots_v1 ( + repository_id text primary key, + title text default '', + slug text default '', + created_at_ms bigint not null default 0, + updated_at_ms bigint not null default 0, + synced_at_ms bigint not null default 0 +); + +create index if not exists idx_claude_contrib_snapshots_updated + on public.claude_contribution_snapshots_v1 (updated_at_ms desc); +``` + +### 8.2 字段语义 + +`events` 表: + +- `event_id`:事件主键,规则为 `e_${md5(type|repositoryId|timestampMs)}` +- `event_type`:`create` / `update` +- `repository_id`:文章 ID 归一化(去 `-` + 小写) +- `timestamp_ms`:事件时间戳(毫秒) +- `title` / `slug`:冗余展示信息 + +`snapshots` 表: + +- `repository_id`:文章唯一标识(主键) +- `created_at_ms`:创建时间 +- `updated_at_ms`:最近更新时间 +- `synced_at_ms`:本次同步时间 + +--- + +## 9. 更新逻辑(从 Notion 到数据库) + +入口:`pages/index.js` 的 `getStaticProps`。 + +### 9.1 同步步骤 + +1. 获取已发布文章(排除 `readme.md`)。 +2. 每篇文章构建 snapshot: + - `repositoryId` + - `createdAtMs` + - `updatedAtMs` +3. 调用 `syncContributionSnapshots(snapshots)`: + - upsert snapshot(冲突键 `repository_id`) + - 根据“新旧快照差异”生成事件 +4. 拉取事件 `listContributionEvents(limit)`。 +5. 过滤到“昨天为止”: + - `filterContributionEventsUntilYesterday` + - 当天事件不显示在首页(稳定 UI,避免当天多次刷新抖动) +6. 写入本地日缓存,返回给前端。 + +### 9.2 事件生成规则(关键) + +在 `syncContributionSnapshots` 内: + +- 若快照不存在(新文章): + - 创建 `create` 事件(`created_at_ms`) + - 如果 `updated_at_ms > created_at_ms`,再创建 `update` 事件 +- 若快照已存在: + - 仅当 `updated_at_ms` 大于旧快照时,新增 `update` 事件 +- 事件写入前按 `event_id` 去重,保证同一逻辑事件只存在一份。 + +--- + +## 10. 缓存设计 + +本主题使用多层缓存,目标是减少重复请求并提高稳定性。 + +### 10.1 Contribution 日缓存(进程内) + +位置:`lib/server/claude/contributionStore.js` + +- 缓存键:`globalThis.__claude_contribution_daily_cache_v1` +- 内容:`dayKey` / `events` / `updatedAtMs` / `dirty` +- 刷新条件: + - 手动强制(`CLAUDE_CONTRIBUTION_FORCE_REFRESH=true`) + - build/export 阶段 + - 当日尚未刷新 + - 通过 API 标记 `dirty` + +失败回退: + +- 刷新失败时优先使用 stale 缓存(`allowStale=true`) +- 仍不可用则回退到前端即时计算 + +### 10.2 README 快照缓存 + +位置:`pages/index.js` + +- 键:`readme_render_snapshot_v2_${pageId}_${locale}` +- 缓存内容: + - `bodyFingerprint` + - `excerpt` + - `readmeHtml` + - `readmeHtmlSource` +- 逻辑: + - 若正文指纹未变,直接复用缓存 HTML + - 若变化,重新执行转换与渲染 + +### 10.3 GitHub Markdown API 缓存 + +位置:`lib/db/notion/notionBlocksToHtml.js` + +- 键:`readme_github_md_${md5(markdown)}` +- 策略: + 1. 先查缓存,命中直接返回。 + 2. 调 GitHub `/markdown` API。 + 3. API 失败/超限,再查一次缓存。 + 4. 仍失败则回退到本地 `marked + highlight.js`。 + +说明:GitHub 匿名接口有速率限制,本层缓存用于显著降低超限概率。 + +### 10.4 全站缓存后端 + +统一缓存门面:`lib/cache/cache_manager.js` + +- 优先 Redis(`REDIS_URL`) +- 否则文件缓存(`ENABLE_FILE_CACHE`) +- 否则内存缓存(开发 120 分钟,生产 10 分钟) + +--- + +## 11. README 渲染链路 + +目标:在首页 README 卡片中稳定展示富文本与代码高亮,避免 hydration 相关问题。 + +当前实现: + +1. 从 Notion 拉 `readme.md` 的 `blockMap` +2. `notionBlocksToMarkdown(blockMap, pageId)` 转 Markdown +3. `renderMarkdownToHtml(markdown)` 转 HTML + - 优先 GitHub API + - 失败则本地 fallback +4. 前端 `ProfileHome` 直接渲染: + - `<div className="markdown-body" dangerouslySetInnerHTML={{ __html: readmeHtml }} />` + +样式来源: + +- `styles/claude-readme.css` 导入 GitHub Markdown CSS +- `_app.js` 导入 `highlight.js` 主题(本地 fallback 时生效) + +--- + +## 12. 配置项说明(Claude 主题) + +配置文件:`themes/claude/config.js` + +以下配置可由环境变量覆盖(`NEXT_PUBLIC_*`),并可被 Notion 配置页同名项再覆盖: + +| 配置项 | 默认值 | 说明 | +|---|---|---| +| `CLAUDE_BLOG_NAME` | `活字印刷` | 主题主标题 | +| `CLAUDE_BLOG_NAME_EN` | 同主标题 | 副标题/英文标题 | +| `CLAUDE_POST_AD_ENABLE` | `false` | 列表插广告 | +| `CLAUDE_POST_COVER_ENABLE` | `false` | 列表显示封面 | +| `CLAUDE_ARTICLE_RECOMMEND_POSTS` | `true` | 文章页推荐文章 | +| `CLAUDE_MENU_CATEGORY` | `true` | 显示分类菜单 | +| `CLAUDE_MENU_TAG` | `true` | 显示标签菜单 | +| `CLAUDE_MENU_ARCHIVE` | `true` | 显示归档菜单 | +| `CLAUDE_TOC_ENABLE` | `true` | 启用右侧目录 | +| `CLAUDE_TOC_SHOW_LEVEL3` | `true` | 目录显示三级标题 | +| `CLAUDE_TOC_SCROLL_BEHAVIOR` | `instant` | TOC 点击/联动滚动行为 | +| `CLAUDE_SUBTITLE_DARK_ONLY` | `false` | 副标题仅暗色显示 | +| `CLAUDE_PROFILE_AVATAR` | `''` | 侧栏头像 URL | +| `CLAUDE_FOOTER_COPYRIGHT` | `''` | 自定义页脚版权文案 | +| `CLAUDE_README_CACHE_ENABLED` | `true` | README 快照缓存开关 | +| `CLAUDE_CONTRIBUTION_PERSIST_ENABLED` | `true` | Contribution 持久化开关 | +| `CLAUDE_CONTRIBUTION_EVENT_LIMIT` | `50000` | 拉取事件上限 | + +--- + +## 13. 环境变量说明 + +### 13.1 必需(最小可运行) + +```bash +NEXT_PUBLIC_THEME=claude +NOTION_PAGE_ID=<your notion database/page id> +``` + +### 13.2 Notion 访问(可选,私有库常用) + +```bash +NOTION_TOKEN_V2=<token_v2> +NOTION_ACTIVE_USER=<optional> +``` + +说明: + +- `NOTION_TOKEN_V2`:用于访问非公开 Notion 数据。 +- `NOTION_ACTIVE_USER`:可选,不填时使用 token 仍可工作(取决于 Notion 侧权限)。 + +### 13.3 Contribution 持久化(Supabase) + +```bash +NEXT_PUBLIC_CLAUDE_CONTRIBUTION_PERSIST_ENABLED=true +NEXT_PUBLIC_CLAUDE_CONTRIBUTION_EVENT_LIMIT=50000 + +SUPABASE_URL=<https://xxx.supabase.co> +SUPABASE_SECRET_KEY=<service key> # 或 SUPABASE_SERVICE_ROLE_KEY + +# 可选前端命名回退 +NEXT_PUBLIC_SUPABASE_URL= +NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY= +``` + +补充控制项: + +```bash +CLAUDE_CONTRIBUTION_FORCE_REFRESH=false +CLAUDE_CONTRIBUTION_TRIGGER_TOKEN=<optional token> +``` + +### 13.4 README 缓存与全站缓存 + +```bash +NEXT_PUBLIC_CLAUDE_README_CACHE_ENABLED=true +ENABLE_CACHE=true +REDIS_URL=<optional> +``` + +--- + +## 14. 如何使用该主题 + +### 步骤 1:切换主题 + +在 `.env.local`: + +```bash +NEXT_PUBLIC_THEME=claude +``` + +### 步骤 2:准备首页 README 页面 + +在 Notion 中准备一个页面,slug 必须为: + +```text +readme.md +``` + +首页会自动识别该页面并渲染到 README 卡片。 + +### 步骤 3:可选启用 Contribution 持久化 + +1. 在 Supabase 创建两张表(见第 8 节 SQL)。 +2. 配置 Supabase 环境变量。 +3. 打开 `NEXT_PUBLIC_CLAUDE_CONTRIBUTION_PERSIST_ENABLED=true`。 + +### 步骤 4:启动 + +```bash +yarn dev +``` + +生产构建: + +```bash +yarn build +yarn start +``` + +### 步骤 5:手动触发贡献刷新(可选) + +接口:`/api/claude/contribution-refresh` + +示例: + +```bash +curl "http://localhost:3000/api/claude/contribution-refresh?token=<token>&revalidate=1&path=/" +``` + +--- + +## 15. 运行日志与排障 + +### 15.1 日志前缀 + +- Contribution:`[Contrib] ...` +- README 渲染:`[README] ...` + +注意:这些日志在服务端终端输出,不在浏览器控制台。 + +### 15.2 常见问题 + +1. 热力图无数据 + +- 检查 `NEXT_PUBLIC_CLAUDE_CONTRIBUTION_PERSIST_ENABLED` 是否为 `true` +- 检查 Supabase 连接变量是否正确 +- 检查两张表是否已创建 + +2. 当天更新未显示 + +- 当前逻辑默认过滤“今天”的事件,只显示到昨天(设计行为) + +3. README 代码块高亮不稳定 + +- 若 GitHub `/markdown` 超限会自动回退到本地 `marked + highlight.js` +- 可通过缓存复用此前成功渲染结果 + +--- + +## 16. 侧边栏持久化架构 + +### 16.1 问题背景 + +在 Next.js Pages Router 中,每次客户端导航(点击链接跳转)都会重新渲染甚至重新挂载(remount)`LayoutBase`。这导致左侧栏(头像、终端模拟块、导航菜单)每次跳转都重新加载,用户体验不佳。 + +### 16.2 三层防护方案 + +本主题通过三层机制确保左侧栏**仅在浏览器刷新时**才重新加载: + +#### 第一层:`pages/_app.js` — 从根源消除 Layout 组件 remount + +> **⚠️ 合并注意:此修改位于全局 `pages/_app.js`,非 claude 主题目录内。合并时请特别关注此文件。** + +原始代码存在两个问题: + +1. `theme` 的 `useMemo` 依赖整个 `route` 对象(`[route]`)。`useRouter()` 每次路由变化都返回新的对象引用,导致 `theme` 每次都重新计算。 +2. `GLayout` 是在组件内部通过 `useCallback` 定义的包装组件,每次渲染都在内部调用 `getBaseLayoutByTheme(theme)`。 + +修复后: + +```javascript +// 依赖改为具体值,而非整个 route 对象 +const theme = useMemo(() => { + return ( + getQueryParam(route.asPath, 'theme') || + pageProps?.NOTION_CONFIG?.THEME || + BLOG.THEME + ) +}, [route.asPath, pageProps?.NOTION_CONFIG?.THEME]) + +// 用 useMemo 缓存 Layout 组件引用,相同 theme 下始终返回同一个组件 +const Layout = useMemo(() => getBaseLayoutByTheme(theme), [theme]) + +// 直接使用 Layout,不再通过 GLayout 包装 +<Layout {...pageProps}> + <SEO {...pageProps} /> + <Component {...pageProps} /> +</Layout> +``` + +关键效果:`Layout`(即 `LayoutBase`)在同一主题下始终是同一个组件引用,React 不会因组件类型变化而 remount 整棵子树。 + +#### 第二层:`themes/claude/index.js` — SidebarContent 记忆化 + +桌面端侧边栏用 `React.memo(() => true)` 包裹: + +```javascript +const SidebarContent = memo(function SidebarContent(props) { + return ( + <div className='flex flex-col justify-between h-full py-6 px-5'> + <div><NavBar {...props} /></div> + <div className='mt-auto'><Footer /></div> + </div> + ) +}, () => true) // 始终返回 true → 阻止所有来自父组件的 prop 变化触发重渲染 +``` + +- `React.memo` 的第二个参数 `() => true` 表示"props 始终相等",阻止父组件 re-render 传播。 +- `MenuList` 内部的 `useRouter()` 基于 React Context,路由变化仍会绕过 memo 正常更新菜单激活状态。 + +#### 第三层:`themes/claude/components/NavBar.js` — 模块级终端会话缓存 + +终端区域的登录时间和 tty 编号存储在 **JS 模块级变量**(非 React 状态)中: + +```javascript +let _cachedTerminalSession = null +function getOrCreateTerminalSession() { + if (!_cachedTerminalSession) { + _cachedTerminalSession = { + loginTime: formatTerminalLoginTime(new Date()), + tty: `ttys00${Math.floor(Math.random() * 10)}` + } + } + return _cachedTerminalSession +} +``` + +- 模块级变量在 JS 模块作用域中,不属于任何 React 组件实例。 +- 即使极端情况下组件被 remount,缓存值不会丢失。 +- 只有浏览器刷新(JS 模块重新加载)时才重置。 + +### 16.3 涉及文件清单 + +| 文件 | 所属 | 修改内容 | +|---|---|---| +| `pages/_app.js` | **全局**(非主题目录) | 移除 `GLayout`,用 `useMemo` 缓存 Layout 引用 | +| `themes/claude/index.js` | 主题 | 新增 `SidebarContent` memo 组件 | +| `themes/claude/components/NavBar.js` | 主题 | 终端会话改为模块级缓存 | + +--- + +## 17. 设计约束与已知行为 + +- `claude` 主题只影响自身主题目录,**但侧边栏持久化修改涉及全局 `pages/_app.js`**(见第 16 节)。 +- Contribution 事件是幂等写入,不应重复产生同一 `create` 事件。 +- README 渲染采用“服务端转换 + 前端静态 HTML 注入”,目标是稳定优先。 +- 移动端优先保持桌面视觉语言一致,不随屏宽自动降级字体粗细/大小。 + +--- + +## 18. 维护建议 + +- 如果你修改了热力图规则,请同步更新: + - `themes/claude/components/ProfileHome.js` + - 本 README 的第 6、7 节 +- 如果你修改了表字段,请同步更新: + - `lib/server/claude/contributionStore.js` + - 本 README 的第 8、9 节 SQL 与字段说明 +- 如果你修改了缓存策略,请同步更新: + - `lib/cache/*` + - `pages/index.js` + - `lib/db/notion/notionBlocksToHtml.js` + +--- + +## 19. 全局改动补充(RSS 与首页标题) + +以下变更位于主题目录之外,但会直接影响 `claude` 主题实际运行行为: + +### 19.1 RSS 关闭时不再触发 RSS 内容抓取 + +- 文件:`pages/index.js` +- 变更:`generateRss(props)` 从“无条件执行”改为“仅在 `ENABLE_RSS=true` 时执行”。 +- 结果: + - 当你禁用 RSS 后,不再调用 `getPostBlocks(..., 'rss-content')`。 + - 服务端日志中的 `from:rss-content` 不会再出现。 + +### 19.2 首页标签页标题不再拼接副标题 + +- 文件:`components/SEO.js` +- 路由:`/`(首页) +- 变更:首页 title 从 `site title | site description` 改为仅显示 `site title`。 +- 结果: + - 未配置副标题时,不会再出现默认文案“这是一个由NotionNext生成的站点”。 + - 分隔符 `|` 也不会显示。 + +### 19.3 ⚠️ 合并 / 升级注意(汇总) + +若后续合并上游更新,请统一检查以下项是否仍保留: + +1. `pages/_app.js` 中 `Layout` 仍通过 `useMemo(() => getBaseLayoutByTheme(theme), [theme])` 缓存引用(见第 16.2 节第一层)。 +2. `pages/_app.js` 中 `theme` 的 `useMemo` 依赖仍为 `[route.asPath, pageProps?.NOTION_CONFIG?.THEME]`,**而非** `[route]`。 +3. `pages/_app.js` 中仍不使用 `useCallback` 包装组件来间接调用 `getBaseLayoutByTheme`。 +4. `pages/index.js` 里 RSS 生成仍受 `ENABLE_RSS` 开关控制。 +5. `components/SEO.js` 里首页 title 仍仅使用主标题,不拼接 description。 diff --git a/lib/server/claude/contributionStore.js b/lib/server/claude/contributionStore.js new file mode 100644 index 00000000000..2e724140601 --- /dev/null +++ b/lib/server/claude/contributionStore.js @@ -0,0 +1,510 @@ +import md5 from 'js-md5' +import { createClient } from '@supabase/supabase-js' + +const EVENTS_TABLE = 'claude_contribution_events_v1' +const SNAPSHOTS_TABLE = 'claude_contribution_snapshots_v1' +const LOCAL_CACHE_KEY = '__claude_contribution_daily_cache_v1' + +let supabaseClient = null +let legacyCleanupPromise = null + +const getSupabaseUrl = () => { + return process.env.SUPABASE_URL || process.env.NEXT_PUBLIC_SUPABASE_URL || '' +} + +const getSupabaseKey = () => { + return ( + process.env.SUPABASE_SECRET_KEY || + process.env.SUPABASE_SERVICE_ROLE_KEY || + process.env.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY || + process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || + '' + ) +} + +const toTimestampMs = value => { + if (value === null || value === undefined || value === '') return 0 + if (typeof value === 'number') { + if (!Number.isFinite(value) || value <= 0) return 0 + return Math.trunc(value) + } + const parsed = Date.parse(String(value)) + if (!Number.isFinite(parsed) || parsed <= 0) return 0 + return parsed +} + +const normalizeRepositoryId = value => { + if (!value) return '' + return String(value).replace(/-/g, '').trim().toLowerCase() +} + +const normalizeText = value => { + return typeof value === 'string' ? value : '' +} + +const buildHrefFromSlug = slug => { + const normalizedSlug = normalizeText(slug).trim() + if (!normalizedSlug) return '' + if (/^https?:\/\//i.test(normalizedSlug)) return normalizedSlug + return normalizedSlug.startsWith('/') ? normalizedSlug : `/${normalizedSlug}` +} + +const buildEventId = (type, repositoryId, timestampMs) => { + return `e_${md5(`${type}|${repositoryId}|${timestampMs}`)}` +} + +const chunkArray = (arr, size = 200) => { + const list = Array.isArray(arr) ? arr : [] + const safeSize = Math.max(1, Math.min(1000, Number(size) || 200)) + const chunks = [] + for (let i = 0; i < list.length; i += safeSize) { + chunks.push(list.slice(i, i + safeSize)) + } + return chunks +} + +const formatDayKey = date => { + const year = date.getFullYear() + const month = String(date.getMonth() + 1).padStart(2, '0') + const day = String(date.getDate()).padStart(2, '0') + return `${year}-${month}-${day}` +} + +const getTodayKey = (nowMs = Date.now()) => { + return formatDayKey(new Date(nowMs)) +} + +const getYesterdayEndMs = (nowMs = Date.now()) => { + const date = new Date(nowMs) + date.setHours(0, 0, 0, 0) + date.setMilliseconds(-1) + return date.getTime() +} + +const getLocalDailyCache = () => { + if (typeof globalThis === 'undefined') { + return { dayKey: '', events: [], updatedAtMs: 0, dirty: true } + } + + if (!globalThis[LOCAL_CACHE_KEY]) { + globalThis[LOCAL_CACHE_KEY] = { + dayKey: '', + events: [], + updatedAtMs: 0, + dirty: true + } + } + return globalThis[LOCAL_CACHE_KEY] +} + +export const markContributionCacheDirty = () => { + const cache = getLocalDailyCache() + cache.dirty = true + cache.updatedAtMs = Date.now() +} + +export const shouldRefreshContributionDailyCache = ({ + forceRefresh = false, + isBuild = false, + nowMs = Date.now() +} = {}) => { + if (forceRefresh || isBuild) return true + const cache = getLocalDailyCache() + if (cache.dirty) return true + if (!Array.isArray(cache.events)) return true + return cache.dayKey !== getTodayKey(nowMs) +} + +export const setContributionEventsToLocalCache = (events, nowMs = Date.now()) => { + const cache = getLocalDailyCache() + cache.dayKey = getTodayKey(nowMs) + cache.events = Array.isArray(events) ? events : [] + cache.updatedAtMs = nowMs + cache.dirty = false + return cache +} + +export const getContributionEventsFromLocalCache = ({ + limit = 50000, + allowStale = false, + nowMs = Date.now() +} = {}) => { + const cache = getLocalDailyCache() + if (!Array.isArray(cache.events)) return null + if (!allowStale) { + if (cache.dirty) return null + if (cache.dayKey !== getTodayKey(nowMs)) return null + } + const safeLimit = Math.max(1, Math.min(100000, Number(limit) || 50000)) + const events = cache.events + if (events.length <= safeLimit) return events + return events.slice(events.length - safeLimit) +} + +export const filterContributionEventsUntilYesterday = ( + events, + nowMs = Date.now() +) => { + const cutoffMs = getYesterdayEndMs(nowMs) + return (Array.isArray(events) ? events : []).filter(event => { + const timestampMs = toTimestampMs(event?.timestampMs || event?.timestamp) + return timestampMs > 0 && timestampMs <= cutoffMs + }) +} + +const getSupabaseClient = () => { + const url = getSupabaseUrl() + const key = getSupabaseKey() + if (!url || !key) return null + + if (supabaseClient) return supabaseClient + supabaseClient = createClient(url, key, { + auth: { + persistSession: false, + autoRefreshToken: false + } + }) + return supabaseClient +} + +const ensureLegacyHrefCleanup = async client => { + if (!client) return false + if (legacyCleanupPromise) return legacyCleanupPromise + + legacyCleanupPromise = (async () => { + const ignoreMissingColumn = error => { + if (!error) return false + const code = String(error.code || '') + const message = String(error.message || '').toLowerCase() + return ( + code === '42703' || + code === 'PGRST204' || + (message.includes('column') && message.includes('href')) + ) + } + + const { error: eventCleanupError } = await client + .from(EVENTS_TABLE) + .update({ href: '' }) + .neq('href', '') + if (eventCleanupError && !ignoreMissingColumn(eventCleanupError)) { + console.warn( + `[Contrib] Supabase 清理旧 href 失败(${EVENTS_TABLE}): ${ + eventCleanupError.message || eventCleanupError.code || eventCleanupError + }` + ) + } + + const { error: snapshotCleanupError } = await client + .from(SNAPSHOTS_TABLE) + .update({ href: '' }) + .neq('href', '') + if (snapshotCleanupError && !ignoreMissingColumn(snapshotCleanupError)) { + console.warn( + `[Contrib] Supabase 清理旧 href 失败(${SNAPSHOTS_TABLE}): ${ + snapshotCleanupError.message || snapshotCleanupError.code || snapshotCleanupError + }` + ) + } + + return true + })() + + return legacyCleanupPromise +} + +const getReadyClient = async () => { + const client = getSupabaseClient() + if (!client) return null + await ensureLegacyHrefCleanup(client) + return client +} + +export const isContributionStoreEnabled = () => { + return Boolean(getSupabaseUrl() && getSupabaseKey()) +} + +export const buildContributionPostSnapshot = post => { + const repositoryId = normalizeRepositoryId(post?.id) + if (!repositoryId) return null + + const createdAtMs = toTimestampMs( + post?.createdTime || post?.publishDate || post?.date?.start_date + ) + const updatedAtMs = Math.max(toTimestampMs(post?.lastEditedDate), createdAtMs) + + return { + repositoryId, + title: normalizeText(post?.title), + slug: normalizeText(post?.slug), + createdAtMs, + updatedAtMs + } +} + +const normalizeEventType = value => (value === 'create' ? 'create' : 'update') + +const normalizeRawEvent = raw => { + if (!raw || typeof raw !== 'object') return null + const type = normalizeEventType(raw.type) + const repositoryId = normalizeRepositoryId(raw.repositoryId || raw.identifier || raw.postId) + const timestampMs = toTimestampMs(raw.timestampMs || raw.timestamp || raw.date || raw.time) + if (!repositoryId || !timestampMs) return null + + const candidateEventId = normalizeText(raw.eventId) + const eventId = candidateEventId || buildEventId(type, repositoryId, timestampMs) + + return { + event_id: eventId, + event_type: type, + repository_id: repositoryId, + timestamp_ms: timestampMs, + title: normalizeText(raw.title), + slug: normalizeText(raw.slug) + } +} + +const loadSnapshotMap = async (client, repositoryIds) => { + const map = new Map() + const uniqueIds = Array.from(new Set((repositoryIds || []).filter(Boolean))) + if (!uniqueIds.length) return map + + for (const chunk of chunkArray(uniqueIds, 200)) { + const { data, error } = await client + .from(SNAPSHOTS_TABLE) + .select('repository_id, title, slug, created_at_ms, updated_at_ms, synced_at_ms') + .in('repository_id', chunk) + + if (error) throw error + ;(data || []).forEach(row => { + const repositoryId = normalizeRepositoryId(row.repository_id) + if (!repositoryId) return + map.set(repositoryId, { + repositoryId, + title: normalizeText(row.title), + slug: normalizeText(row.slug), + createdAtMs: toTimestampMs(row.created_at_ms), + updatedAtMs: toTimestampMs(row.updated_at_ms), + syncedAtMs: toTimestampMs(row.synced_at_ms) + }) + }) + } + + return map +} + +const loadExistingEventIds = async (client, eventIds) => { + const set = new Set() + const uniqueIds = Array.from(new Set((eventIds || []).filter(Boolean))) + if (!uniqueIds.length) return set + + for (const chunk of chunkArray(uniqueIds, 300)) { + const { data, error } = await client + .from(EVENTS_TABLE) + .select('event_id') + .in('event_id', chunk) + + if (error) throw error + ;(data || []).forEach(row => { + if (row?.event_id) set.add(normalizeText(row.event_id)) + }) + } + return set +} + +const upsertSnapshots = async (client, snapshots) => { + if (!snapshots.length) return + + for (const chunk of chunkArray(snapshots, 200)) { + const { error } = await client + .from(SNAPSHOTS_TABLE) + .upsert(chunk, { onConflict: 'repository_id' }) + if (error) throw error + } +} + +const upsertEvents = async (client, events) => { + if (!events.length) return + + for (const chunk of chunkArray(events, 200)) { + const { error } = await client + .from(EVENTS_TABLE) + .upsert(chunk, { onConflict: 'event_id', ignoreDuplicates: true }) + if (error) throw error + } +} + +export const upsertContributionEvents = async rawEvents => { + const client = await getReadyClient() + if (!client) { + return { enabled: false, attempted: 0, inserted: 0 } + } + + const events = Array.isArray(rawEvents) + ? rawEvents.map(normalizeRawEvent).filter(Boolean) + : [] + if (!events.length) { + return { enabled: true, attempted: 0, inserted: 0 } + } + + const existingIds = await loadExistingEventIds( + client, + events.map(event => event.event_id) + ) + const pendingEvents = events.filter(event => !existingIds.has(event.event_id)) + await upsertEvents(client, pendingEvents) + + return { + enabled: true, + attempted: events.length, + inserted: pendingEvents.length + } +} + +export const syncContributionSnapshots = async postSnapshots => { + const client = await getReadyClient() + if (!client) { + return { enabled: false, scanned: 0, addedEvents: 0, attemptedEvents: 0 } + } + + const snapshots = Array.isArray(postSnapshots) ? postSnapshots : [] + if (!snapshots.length) { + return { enabled: true, scanned: 0, addedEvents: 0, attemptedEvents: 0 } + } + + const normalizedSnapshots = snapshots + .map(snapshot => { + const repositoryId = normalizeRepositoryId(snapshot?.repositoryId) + if (!repositoryId) return null + + const createdAtMs = toTimestampMs(snapshot.createdAtMs) + const updatedAtMs = Math.max(toTimestampMs(snapshot.updatedAtMs), createdAtMs) + + return { + repositoryId, + title: normalizeText(snapshot.title), + slug: normalizeText(snapshot.slug), + createdAtMs: createdAtMs || updatedAtMs, + updatedAtMs + } + }) + .filter(Boolean) + + if (!normalizedSnapshots.length) { + return { enabled: true, scanned: 0, addedEvents: 0, attemptedEvents: 0 } + } + + const prevMap = await loadSnapshotMap( + client, + normalizedSnapshots.map(snapshot => snapshot.repositoryId) + ) + + const nowMs = Date.now() + const eventsToInsert = [] + const snapshotsToUpsert = normalizedSnapshots.map(snapshot => ({ + repository_id: snapshot.repositoryId, + title: snapshot.title, + slug: snapshot.slug, + created_at_ms: snapshot.createdAtMs, + updated_at_ms: snapshot.updatedAtMs, + synced_at_ms: nowMs + })) + + normalizedSnapshots.forEach(snapshot => { + const prev = prevMap.get(snapshot.repositoryId) + if (!prev) { + const createTimestamp = snapshot.createdAtMs || snapshot.updatedAtMs + if (createTimestamp) { + eventsToInsert.push({ + event_id: buildEventId('create', snapshot.repositoryId, createTimestamp), + event_type: 'create', + repository_id: snapshot.repositoryId, + timestamp_ms: createTimestamp, + title: snapshot.title, + slug: snapshot.slug + }) + } + + const hasHistoricalUpdate = + snapshot.updatedAtMs && + createTimestamp && + snapshot.updatedAtMs > createTimestamp + if (hasHistoricalUpdate) { + eventsToInsert.push({ + event_id: buildEventId('update', snapshot.repositoryId, snapshot.updatedAtMs), + event_type: 'update', + repository_id: snapshot.repositoryId, + timestamp_ms: snapshot.updatedAtMs, + title: snapshot.title, + slug: snapshot.slug + }) + } + return + } + + const previousUpdatedAtMs = toTimestampMs(prev.updatedAtMs) + const shouldAppendUpdate = snapshot.updatedAtMs && snapshot.updatedAtMs > previousUpdatedAtMs + if (shouldAppendUpdate) { + const updateTimestamp = snapshot.updatedAtMs + eventsToInsert.push({ + event_id: buildEventId('update', snapshot.repositoryId, updateTimestamp), + event_type: 'update', + repository_id: snapshot.repositoryId, + timestamp_ms: updateTimestamp, + title: snapshot.title, + slug: snapshot.slug + }) + } + }) + + const existingIds = await loadExistingEventIds( + client, + eventsToInsert.map(event => event.event_id) + ) + const pendingEvents = eventsToInsert.filter(event => !existingIds.has(event.event_id)) + + await upsertSnapshots(client, snapshotsToUpsert) + await upsertEvents(client, pendingEvents) + + return { + enabled: true, + scanned: normalizedSnapshots.length, + attemptedEvents: eventsToInsert.length, + addedEvents: pendingEvents.length + } +} + +export const listContributionEvents = async ({ limit = 50000 } = {}) => { + const client = await getReadyClient() + if (!client) return [] + + const safeLimit = Math.max(1, Math.min(100000, Number(limit) || 50000)) + const { data, error } = await client + .from(EVENTS_TABLE) + .select('event_id, event_type, repository_id, timestamp_ms, title, slug') + .order('timestamp_ms', { ascending: false }) + .limit(safeLimit) + + if (error) throw error + + return (data || []) + .slice() + .sort((a, b) => toTimestampMs(a?.timestamp_ms) - toTimestampMs(b?.timestamp_ms)) + .map(row => { + const repositoryId = normalizeRepositoryId(row.repository_id) + const timestampMs = toTimestampMs(row.timestamp_ms) + const type = row.event_type === 'create' ? 'create' : 'update' + if (!repositoryId || !timestampMs) return null + return { + eventId: normalizeText(row.event_id), + type, + repositoryId, + identifier: repositoryId, + timestampMs, + title: normalizeText(row.title), + slug: normalizeText(row.slug), + href: buildHrefFromSlug(row.slug) + } + }) + .filter(Boolean) +} diff --git a/pages/api/claude/contribution-refresh.js b/pages/api/claude/contribution-refresh.js new file mode 100644 index 00000000000..4888864cf54 --- /dev/null +++ b/pages/api/claude/contribution-refresh.js @@ -0,0 +1,52 @@ +import { markContributionCacheDirty } from '@/lib/server/claude/contributionStore' + +const getTokenFromRequest = req => { + const queryToken = Array.isArray(req.query?.token) + ? req.query.token[0] + : req.query?.token + const headerToken = + req.headers['x-contribution-trigger-token'] || + req.headers['x-contrib-trigger-token'] || + '' + return String(queryToken || headerToken || '') +} + +export default async function handler(req, res) { + if (!['GET', 'POST'].includes(req.method || '')) { + return res.status(405).json({ ok: false, message: 'Method Not Allowed' }) + } + + const expectedToken = process.env.CLAUDE_CONTRIBUTION_TRIGGER_TOKEN || '' + if (expectedToken) { + const receivedToken = getTokenFromRequest(req) + if (!receivedToken || receivedToken !== expectedToken) { + return res.status(401).json({ ok: false, message: 'Unauthorized' }) + } + } + + markContributionCacheDirty() + + const shouldRevalidate = String(req.query?.revalidate || '1') !== '0' + const path = + (Array.isArray(req.query?.path) ? req.query.path[0] : req.query?.path) || '/' + + let revalidated = false + let revalidateError = '' + if (shouldRevalidate && typeof res.revalidate === 'function') { + try { + await res.revalidate(path) + revalidated = true + } catch (error) { + revalidateError = String(error?.message || error) + } + } + + return res.status(200).json({ + ok: true, + revalidated, + path, + revalidateError, + message: + 'Contribution local cache marked dirty. Next index regeneration will refresh from database.' + }) +} diff --git a/public/themes/claude/fonts/AnthropicSans-Text-Medium-Static.otf b/public/themes/claude/fonts/AnthropicSans-Text-Medium-Static.otf new file mode 100644 index 0000000000000000000000000000000000000000..88b70ee9bea816e64ff68b8d7729e3685b81f365 GIT binary patch literal 61528 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�=jH0YTh!wFM6KY=!tJkM zhKcWi%|h1B6)|l+V=Qi~tc~Zj852IcKl|~TJkOsJ&k!EGiVKLY*4ssEj4RehG{fg| Q7Br|irvD@1Ug#xx0nUbcN&o-= literal 0 HcmV?d00001 diff --git a/public/themes/claude/fonts/AnthropicSans-Text-Regular-Static.otf b/public/themes/claude/fonts/AnthropicSans-Text-Regular-Static.otf new file mode 100644 index 0000000000000000000000000000000000000000..70e36860fc137f41e8ed4364117d19777639c04f GIT binary patch literal 61144 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 literal 0 HcmV?d00001 diff --git a/public/themes/claude/fonts/AnthropicSans-Text-RegularItalic-Static.otf b/public/themes/claude/fonts/AnthropicSans-Text-RegularItalic-Static.otf new file mode 100644 index 0000000000000000000000000000000000000000..97e43f947fc88002ef3b95ccd574f268d1b31005 GIT binary patch literal 55916 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 Wh`kZlIp0r3&J}$BL|ZUQ!v6y)0faRG literal 0 HcmV?d00001 diff --git a/public/themes/claude/fonts/AnthropicSans-Text-Semibold-Static.otf b/public/themes/claude/fonts/AnthropicSans-Text-Semibold-Static.otf new file mode 100644 index 0000000000000000000000000000000000000000..2bc037fa28cea43f41d3ac44463a377888e426b3 GIT binary patch literal 62380 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 literal 0 HcmV?d00001 diff --git a/public/themes/claude/fonts/AnthropicSerif-Display-Regular-Static.otf b/public/themes/claude/fonts/AnthropicSerif-Display-Regular-Static.otf new file mode 100644 index 0000000000000000000000000000000000000000..ad23e8c72b91bb695126b4e3315752e526b33080 GIT binary patch literal 68796 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 a$exP7UV#?K@L>m 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 HPbl^OPU%30 literal 0 HcmV?d00001 diff --git a/public/themes/claude/fonts/AnthropicSerif-Display-Semibold-Static.otf b/public/themes/claude/fonts/AnthropicSerif-Display-Semibold-Static.otf new file mode 100644 index 0000000000000000000000000000000000000000..d7f576b94c3bff95edd8e4cf93f1cb7b61467843 GIT binary patch literal 66856 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 VaV$O32@m<ojtB4;>q$A_{txh<(u4p2 literal 0 HcmV?d00001 diff --git a/public/themes/claude/github-markdown-css/.editorconfig b/public/themes/claude/github-markdown-css/.editorconfig new file mode 100644 index 00000000000..1c6314a3183 --- /dev/null +++ b/public/themes/claude/github-markdown-css/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +indent_style = tab +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.yml] +indent_style = space +indent_size = 2 diff --git a/public/themes/claude/github-markdown-css/.gitattributes b/public/themes/claude/github-markdown-css/.gitattributes new file mode 100644 index 00000000000..6313b56c578 --- /dev/null +++ b/public/themes/claude/github-markdown-css/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/public/themes/claude/github-markdown-css/.github/security.md b/public/themes/claude/github-markdown-css/.github/security.md new file mode 100644 index 00000000000..5358dc50b28 --- /dev/null +++ b/public/themes/claude/github-markdown-css/.github/security.md @@ -0,0 +1,3 @@ +# Security Policy + +To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure. diff --git a/public/themes/claude/github-markdown-css/.gitignore b/public/themes/claude/github-markdown-css/.gitignore new file mode 100644 index 00000000000..239ecff1372 --- /dev/null +++ b/public/themes/claude/github-markdown-css/.gitignore @@ -0,0 +1,2 @@ +node_modules +yarn.lock diff --git a/public/themes/claude/github-markdown-css/.npmrc b/public/themes/claude/github-markdown-css/.npmrc new file mode 100644 index 00000000000..43c97e719a5 --- /dev/null +++ b/public/themes/claude/github-markdown-css/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/public/themes/claude/github-markdown-css/github-markdown-dark-colorblind.css b/public/themes/claude/github-markdown-css/github-markdown-dark-colorblind.css new file mode 100644 index 00000000000..1453b35f485 --- /dev/null +++ b/public/themes/claude/github-markdown-css/github-markdown-dark-colorblind.css @@ -0,0 +1,1124 @@ +/*dark_colorblind */ +.markdown-body { + color-scheme: dark; + /** CSS default easing. Use for hover state changes and micro-interactions. */ + /** Accelerating motion. Use for elements exiting the viewport (moving off-screen). */ + /** Smooth acceleration and deceleration. Use for elements moving or morphing within the viewport. */ + /** Decelerating motion. Use for elements entering the viewport or appearing on screen. */ + /** Constant motion with no acceleration. Use for continuous animations like progress bars or loaders. */ + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + margin: 0; + font-weight: 400; + color: #f0f6fc; + background-color: #0d1117; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +.markdown-body a { + text-decoration: underline; + text-underline-offset: .2rem; +} + +.markdown-body .octicon { + display: inline-block; + fill: currentColor; + vertical-align: text-bottom; +} + +.markdown-body h1:hover .anchor .octicon-link:before, +.markdown-body h2:hover .anchor .octicon-link:before, +.markdown-body h3:hover .anchor .octicon-link:before, +.markdown-body h4:hover .anchor .octicon-link:before, +.markdown-body h5:hover .anchor .octicon-link:before, +.markdown-body h6:hover .anchor .octicon-link:before { + width: 16px; + height: 16px; + content: ' '; + display: inline-block; + background-color: currentColor; + -webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); + mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); +} + +.markdown-body details, +.markdown-body figcaption, +.markdown-body figure { + display: block; +} + +.markdown-body summary { + display: list-item; +} + +.markdown-body [hidden] { + display: none !important; +} + +.markdown-body a { + background-color: rgba(0,0,0,0); + color: #4493f8; + text-decoration: none; +} + +.markdown-body abbr[title] { + border-bottom: none; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +.markdown-body b, +.markdown-body strong { + font-weight: 600; +} + +.markdown-body dfn { + font-style: italic; +} + +.markdown-body h1 { + margin: .67em 0; + font-weight: 600; + padding-bottom: .3em; + font-size: 2em; + border-bottom: 1px solid #3d444db3; +} + +.markdown-body mark { + background-color: #bb800926; + color: #f0f6fc; +} + +.markdown-body small { + font-size: 90%; +} + +.markdown-body sub, +.markdown-body sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.markdown-body sub { + bottom: -0.25em; +} + +.markdown-body sup { + top: -0.5em; +} + +.markdown-body img { + border-style: none; + max-width: 100%; + box-sizing: content-box; +} + +.markdown-body code, +.markdown-body kbd, +.markdown-body pre, +.markdown-body samp { + font-family: monospace; + font-size: 1em; +} + +.markdown-body figure { + margin: 1em 2.5rem; +} + +.markdown-body hr { + box-sizing: content-box; + overflow: hidden; + background: rgba(0,0,0,0); + border-bottom: 1px solid #3d444db3; + height: .25em; + padding: 0; + margin: 1.5rem 0; + background-color: #3d444d; + border: 0; +} + +.markdown-body input { + font: inherit; + margin: 0; + overflow: visible; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +.markdown-body [type=button], +.markdown-body [type=reset], +.markdown-body [type=submit] { + -webkit-appearance: button; + appearance: button; +} + +.markdown-body [type=checkbox], +.markdown-body [type=radio] { + box-sizing: border-box; + padding: 0; +} + +.markdown-body [type=number]::-webkit-inner-spin-button, +.markdown-body [type=number]::-webkit-outer-spin-button { + height: auto; +} + +.markdown-body [type=search]::-webkit-search-cancel-button, +.markdown-body [type=search]::-webkit-search-decoration { + -webkit-appearance: none; + appearance: none; +} + +.markdown-body ::-webkit-input-placeholder { + color: inherit; + opacity: .54; +} + +.markdown-body ::-webkit-file-upload-button { + -webkit-appearance: button; + appearance: button; + font: inherit; +} + +.markdown-body a:hover { + text-decoration: underline; +} + +.markdown-body ::placeholder { + color: #9198a1; + opacity: 1; +} + +.markdown-body hr::before { + display: table; + content: ""; +} + +.markdown-body hr::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body table { + border-spacing: 0; + border-collapse: collapse; + display: block; + width: max-content; + max-width: 100%; + overflow: auto; + font-variant: tabular-nums; +} + +.markdown-body td, +.markdown-body th { + padding: 0; +} + +.markdown-body details summary { + cursor: pointer; +} + +.markdown-body a:focus, +.markdown-body [role=button]:focus, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=checkbox]:focus { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:focus:not(:focus-visible), +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body input[type=radio]:focus:not(:focus-visible), +.markdown-body input[type=checkbox]:focus:not(:focus-visible) { + outline: solid 1px rgba(0,0,0,0); +} + +.markdown-body a:focus-visible, +.markdown-body [role=button]:focus-visible, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus-visible { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:not([class]):focus, +.markdown-body a:not([class]):focus-visible, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus, +.markdown-body input[type=checkbox]:focus-visible { + outline-offset: 0; +} + +.markdown-body kbd { + display: inline-block; + padding: 0.25rem; + font: 11px ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + line-height: 10px; + color: #f0f6fc; + vertical-align: middle; + background-color: #151b23; + border: solid 1px var(--borderColor-muted); + border-bottom-color: var(--borderColor-muted); + border-radius: 6px; + box-shadow: inset 0 -1px 0 var(--borderColor-muted); +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 1.5rem; + margin-bottom: 1rem; + font-weight: 600; + line-height: 1.25; +} + +.markdown-body h2 { + font-weight: 600; + padding-bottom: .3em; + font-size: 1.5em; + border-bottom: 1px solid #3d444db3; +} + +.markdown-body h3 { + font-weight: 600; + font-size: 1.25em; +} + +.markdown-body h4 { + font-weight: 600; + font-size: 1em; +} + +.markdown-body h5 { + font-weight: 600; + font-size: .875em; +} + +.markdown-body h6 { + font-weight: 600; + font-size: .85em; + color: #9198a1; +} + +.markdown-body p { + margin-top: 0; + margin-bottom: 10px; +} + +.markdown-body blockquote { + margin: 0; + padding: 0 1em; + color: #9198a1; + border-left: .25em solid #3d444d; +} + +.markdown-body ul, +.markdown-body ol { + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} + +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} + +.markdown-body ul ul ol, +.markdown-body ul ol ol, +.markdown-body ol ul ol, +.markdown-body ol ol ol { + list-style-type: lower-alpha; +} + +.markdown-body dd { + margin-left: 0; +} + +.markdown-body tt, +.markdown-body code, +.markdown-body samp { + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + font-size: 12px; +} + +.markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + font-size: 12px; + word-wrap: normal; +} + +.markdown-body .octicon { + display: inline-block; + overflow: visible !important; + vertical-align: text-bottom; + fill: currentColor; +} + +.markdown-body input::-webkit-outer-spin-button, +.markdown-body input::-webkit-inner-spin-button { + margin: 0; + appearance: none; +} + +.markdown-body .mr-2 { + margin-right: 0.5rem !important; +} + +.markdown-body::before { + display: table; + content: ""; +} + +.markdown-body::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body>*:first-child { + margin-top: 0 !important; +} + +.markdown-body>*:last-child { + margin-bottom: 0 !important; +} + +.markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-body .absent { + color: #f0883e; +} + +.markdown-body .anchor { + float: left; + padding-right: 0.25rem; + margin-left: -20px; + line-height: 1; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body p, +.markdown-body blockquote, +.markdown-body ul, +.markdown-body ol, +.markdown-body dl, +.markdown-body table, +.markdown-body pre, +.markdown-body details { + margin-top: 0; + margin-bottom: 1rem; +} + +.markdown-body blockquote>:first-child { + margin-top: 0; +} + +.markdown-body blockquote>:last-child { + margin-bottom: 0; +} + +.markdown-body h1 .octicon-link, +.markdown-body h2 .octicon-link, +.markdown-body h3 .octicon-link, +.markdown-body h4 .octicon-link, +.markdown-body h5 .octicon-link, +.markdown-body h6 .octicon-link { + color: #f0f6fc; + vertical-align: middle; + visibility: hidden; +} + +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1:hover .anchor .octicon-link, +.markdown-body h2:hover .anchor .octicon-link, +.markdown-body h3:hover .anchor .octicon-link, +.markdown-body h4:hover .anchor .octicon-link, +.markdown-body h5:hover .anchor .octicon-link, +.markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.markdown-body h1 tt, +.markdown-body h1 code, +.markdown-body h2 tt, +.markdown-body h2 code, +.markdown-body h3 tt, +.markdown-body h3 code, +.markdown-body h4 tt, +.markdown-body h4 code, +.markdown-body h5 tt, +.markdown-body h5 code, +.markdown-body h6 tt, +.markdown-body h6 code { + padding: 0 .2em; + font-size: inherit; +} + +.markdown-body summary h1, +.markdown-body summary h2, +.markdown-body summary h3, +.markdown-body summary h4, +.markdown-body summary h5, +.markdown-body summary h6 { + display: inline-block; +} + +.markdown-body summary h1 .anchor, +.markdown-body summary h2 .anchor, +.markdown-body summary h3 .anchor, +.markdown-body summary h4 .anchor, +.markdown-body summary h5 .anchor, +.markdown-body summary h6 .anchor { + margin-left: -40px; +} + +.markdown-body summary h1, +.markdown-body summary h2 { + padding-bottom: 0; + border-bottom: 0; +} + +.markdown-body ul.no-list, +.markdown-body ol.no-list { + padding: 0; + list-style-type: none; +} + +.markdown-body ol[type="a s"] { + list-style-type: lower-alpha; +} + +.markdown-body ol[type="A s"] { + list-style-type: upper-alpha; +} + +.markdown-body ol[type="i s"] { + list-style-type: lower-roman; +} + +.markdown-body ol[type="I s"] { + list-style-type: upper-roman; +} + +.markdown-body ol[type="1"] { + list-style-type: decimal; +} + +.markdown-body div>ol:not([type]) { + list-style-type: decimal; +} + +.markdown-body ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body li>p { + margin-top: 1rem; +} + +.markdown-body li+li { + margin-top: .25em; +} + +.markdown-body dl { + padding: 0; +} + +.markdown-body dl dt { + padding: 0; + margin-top: 1rem; + font-size: 1em; + font-style: italic; + font-weight: 600; +} + +.markdown-body dl dd { + padding: 0 1rem; + margin-bottom: 1rem; +} + +.markdown-body table th { + font-weight: 600; +} + +.markdown-body table th, +.markdown-body table td { + padding: 6px 13px; + border: 1px solid #3d444d; +} + +.markdown-body table td>:last-child { + margin-bottom: 0; +} + +.markdown-body table tr { + background-color: #0d1117; + border-top: 1px solid #3d444db3; +} + +.markdown-body table tr:nth-child(2n) { + background-color: #151b23; +} + +.markdown-body table img { + background-color: rgba(0,0,0,0); +} + +.markdown-body img[align=right] { + padding-left: 20px; +} + +.markdown-body img[align=left] { + padding-right: 20px; +} + +.markdown-body .emoji { + max-width: none; + vertical-align: text-top; + background-color: rgba(0,0,0,0); +} + +.markdown-body span.frame { + display: block; + overflow: hidden; +} + +.markdown-body span.frame>span { + display: block; + float: left; + width: auto; + padding: 7px; + margin: 13px 0 0; + overflow: hidden; + border: 1px solid #3d444d; +} + +.markdown-body span.frame span img { + display: block; + float: left; +} + +.markdown-body span.frame span span { + display: block; + padding: 5px 0 0; + clear: both; + color: #f0f6fc; +} + +.markdown-body span.align-center { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-center>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: center; +} + +.markdown-body span.align-center span img { + margin: 0 auto; + text-align: center; +} + +.markdown-body span.align-right { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-right>span { + display: block; + margin: 13px 0 0; + overflow: hidden; + text-align: right; +} + +.markdown-body span.align-right span img { + margin: 0; + text-align: right; +} + +.markdown-body span.float-left { + display: block; + float: left; + margin-right: 13px; + overflow: hidden; +} + +.markdown-body span.float-left span { + margin: 13px 0 0; +} + +.markdown-body span.float-right { + display: block; + float: right; + margin-left: 13px; + overflow: hidden; +} + +.markdown-body span.float-right>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: right; +} + +.markdown-body code, +.markdown-body tt { + padding: .2em .4em; + margin: 0; + font-size: 85%; + white-space: break-spaces; + background-color: #656c7633; + border-radius: 6px; +} + +.markdown-body code br, +.markdown-body tt br { + display: none; +} + +.markdown-body del code { + text-decoration: inherit; +} + +.markdown-body samp { + font-size: 85%; +} + +.markdown-body pre code { + font-size: 100%; +} + +.markdown-body pre>code { + padding: 0; + margin: 0; + word-break: normal; + white-space: pre; + background: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .highlight { + margin-bottom: 1rem; +} + +.markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.markdown-body .highlight pre, +.markdown-body pre { + padding: 1rem; + overflow: auto; + font-size: 85%; + line-height: 1.45; + color: #f0f6fc; + background-color: #151b23; + border-radius: 6px; +} + +.markdown-body pre code, +.markdown-body pre tt { + display: inline; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .csv-data td, +.markdown-body .csv-data th { + padding: 5px; + overflow: hidden; + font-size: 12px; + line-height: 1; + text-align: left; + white-space: nowrap; +} + +.markdown-body .csv-data .blob-num { + padding: 10px 0.5rem 9px; + text-align: right; + background: #0d1117; + border: 0; +} + +.markdown-body .csv-data tr { + border-top: 0; +} + +.markdown-body .csv-data th { + font-weight: 600; + background: #151b23; + border-top: 0; +} + +.markdown-body [data-footnote-ref]::before { + content: "["; +} + +.markdown-body [data-footnote-ref]::after { + content: "]"; +} + +.markdown-body .footnotes { + font-size: 12px; + color: #9198a1; + border-top: 1px solid #3d444d; +} + +.markdown-body .footnotes ol { + padding-left: 1rem; +} + +.markdown-body .footnotes ol ul { + display: inline-block; + padding-left: 1rem; + margin-top: 1rem; +} + +.markdown-body .footnotes li { + position: relative; +} + +.markdown-body .footnotes li:target::before { + position: absolute; + top: calc(0.5rem*-1); + right: calc(0.5rem*-1); + bottom: calc(0.5rem*-1); + left: calc(1.5rem*-1); + pointer-events: none; + content: ""; + border: 2px solid #1f6feb; + border-radius: 6px; +} + +.markdown-body .footnotes li:target { + color: #f0f6fc; +} + +.markdown-body .footnotes .data-footnote-backref g-emoji { + font-family: monospace; +} + +.markdown-body .pl-c { + color: #9198a1; +} + +.markdown-body .pl-c1, +.markdown-body .pl-s .pl-v { + color: #79c0ff; +} + +.markdown-body .pl-e, +.markdown-body .pl-en { + color: #d2a8ff; +} + +.markdown-body .pl-smi, +.markdown-body .pl-s .pl-s1 { + color: #f0f6fc; +} + +.markdown-body .pl-ent { + color: #a5d6ff; +} + +.markdown-body .pl-k { + color: #f0883e; +} + +.markdown-body .pl-s, +.markdown-body .pl-pds, +.markdown-body .pl-s .pl-pse .pl-s1, +.markdown-body .pl-sr, +.markdown-body .pl-sr .pl-cce, +.markdown-body .pl-sr .pl-sre, +.markdown-body .pl-sr .pl-sra { + color: #a5d6ff; +} + +.markdown-body .pl-v, +.markdown-body .pl-smw { + color: #ffa657; +} + +.markdown-body .pl-bu { + color: #db6d28; +} + +.markdown-body .pl-ii { + color: var(--fgColor-danger); + background-color: var(--bgColor-danger-muted); +} + +.markdown-body .pl-c2 { + color: #f0f6fc; + background-color: #9b4215; +} + +.markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: #a5d6ff; +} + +.markdown-body .pl-ml { + color: #f2cc60; +} + +.markdown-body .pl-mh, +.markdown-body .pl-mh .pl-en, +.markdown-body .pl-ms { + font-weight: bold; + color: #1f6feb; +} + +.markdown-body .pl-mi { + font-style: italic; + color: #f0f6fc; +} + +.markdown-body .pl-mb { + font-weight: bold; + color: #f0f6fc; +} + +.markdown-body .pl-md { + color: #ffdfb6; + background-color: #5a1e02; +} + +.markdown-body .pl-mi1 { + color: #cae8ff; + background-color: #0c2d6b; +} + +.markdown-body .pl-mc { + color: #ffdfb6; + background-color: #5a1e02; +} + +.markdown-body .pl-mi2 { + color: #f0f6fc; + background-color: #1158c7; +} + +.markdown-body .pl-mdr { + font-weight: bold; + color: #d2a8ff; +} + +.markdown-body .pl-ba { + color: #9198a1; +} + +.markdown-body .pl-sg { + color: #3d444d; +} + +.markdown-body .pl-corl { + text-decoration: underline; + color: #a5d6ff; +} + +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body [role=tabpanel][tabindex="0"]:focus:not(:focus-visible), +.markdown-body button:focus:not(:focus-visible), +.markdown-body summary:focus:not(:focus-visible), +.markdown-body a:focus:not(:focus-visible) { + outline: none; + box-shadow: none; +} + +.markdown-body [tabindex="0"]:focus:not(:focus-visible), +.markdown-body details-dialog:focus:not(:focus-visible) { + outline: none; +} + +.markdown-body g-emoji { + display: inline-block; + min-width: 1ch; + font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; + font-size: 1em; + font-style: normal !important; + font-weight: 400; + line-height: 1; + vertical-align: -0.075em; +} + +.markdown-body g-emoji img { + width: 1em; + height: 1em; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote) { + display: block; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):not(:has(.snippet-clipboard-content,>pre)) { + width: fit-content; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):has(.snippet-clipboard-content,>pre):focus-visible { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: 2px; +} + +.markdown-body .task-list-item { + list-style-type: none; +} + +.markdown-body .task-list-item label { + font-weight: 400; +} + +.markdown-body .task-list-item.enabled label { + cursor: pointer; +} + +.markdown-body .task-list-item+.task-list-item { + margin-top: 0.25rem; +} + +.markdown-body .task-list-item .handle { + display: none; +} + +.markdown-body .task-list-item-checkbox { + margin: 0 .2em .25em -1.4em; + vertical-align: middle; +} + +.markdown-body ul:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body ol:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body .contains-task-list:hover .task-list-item-convert-container, +.markdown-body .contains-task-list:focus-within .task-list-item-convert-container { + display: block; + width: auto; + height: 24px; + overflow: visible; + clip-path: none; +} + +.markdown-body ::-webkit-calendar-picker-indicator { + filter: invert(50%); +} + +.markdown-body .markdown-alert { + padding: 0.5rem 1rem; + margin-bottom: 1rem; + color: inherit; + border-left: .25em solid #3d444d; +} + +.markdown-body .markdown-alert>:first-child { + margin-top: 0; +} + +.markdown-body .markdown-alert>:last-child { + margin-bottom: 0; +} + +.markdown-body .markdown-alert .markdown-alert-title { + display: flex; + font-weight: 500; + align-items: center; + line-height: 1; +} + +.markdown-body .markdown-alert.markdown-alert-note { + border-left-color: #1f6feb; +} + +.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title { + color: #4493f8; +} + +.markdown-body .markdown-alert.markdown-alert-important { + border-left-color: #8957e5; +} + +.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title { + color: #ab7df8; +} + +.markdown-body .markdown-alert.markdown-alert-warning { + border-left-color: #9e6a03; +} + +.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title { + color: #d29922; +} + +.markdown-body .markdown-alert.markdown-alert-tip { + border-left-color: #1f6feb; +} + +.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title { + color: #58a6ff; +} + +.markdown-body .markdown-alert.markdown-alert-caution { + border-left-color: #bd561d; +} + +.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title { + color: #f0883e; +} + +.markdown-body>*:first-child>.heading-element:first-child { + margin-top: 0 !important; +} + +.markdown-body .highlight pre:has(+.zeroclipboard-container) { + min-height: 52px; +} + diff --git a/public/themes/claude/github-markdown-css/github-markdown-dark-dimmed.css b/public/themes/claude/github-markdown-css/github-markdown-dark-dimmed.css new file mode 100644 index 00000000000..2f547e877ff --- /dev/null +++ b/public/themes/claude/github-markdown-css/github-markdown-dark-dimmed.css @@ -0,0 +1,1124 @@ +/*dark_dimmed */ +.markdown-body { + color-scheme: dark; + /** CSS default easing. Use for hover state changes and micro-interactions. */ + /** Accelerating motion. Use for elements exiting the viewport (moving off-screen). */ + /** Smooth acceleration and deceleration. Use for elements moving or morphing within the viewport. */ + /** Decelerating motion. Use for elements entering the viewport or appearing on screen. */ + /** Constant motion with no acceleration. Use for continuous animations like progress bars or loaders. */ + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + margin: 0; + font-weight: 400; + color: #f0f6fc; + background-color: #212830; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +.markdown-body a { + text-decoration: underline; + text-underline-offset: .2rem; +} + +.markdown-body .octicon { + display: inline-block; + fill: currentColor; + vertical-align: text-bottom; +} + +.markdown-body h1:hover .anchor .octicon-link:before, +.markdown-body h2:hover .anchor .octicon-link:before, +.markdown-body h3:hover .anchor .octicon-link:before, +.markdown-body h4:hover .anchor .octicon-link:before, +.markdown-body h5:hover .anchor .octicon-link:before, +.markdown-body h6:hover .anchor .octicon-link:before { + width: 16px; + height: 16px; + content: ' '; + display: inline-block; + background-color: currentColor; + -webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); + mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); +} + +.markdown-body details, +.markdown-body figcaption, +.markdown-body figure { + display: block; +} + +.markdown-body summary { + display: list-item; +} + +.markdown-body [hidden] { + display: none !important; +} + +.markdown-body a { + background-color: rgba(0,0,0,0); + color: #478be6; + text-decoration: none; +} + +.markdown-body abbr[title] { + border-bottom: none; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +.markdown-body b, +.markdown-body strong { + font-weight: 600; +} + +.markdown-body dfn { + font-style: italic; +} + +.markdown-body h1 { + margin: .67em 0; + font-weight: 600; + padding-bottom: .3em; + font-size: 2em; + border-bottom: 1px solid #3d444db3; +} + +.markdown-body mark { + background-color: #ae7c1426; + color: #f0f6fc; +} + +.markdown-body small { + font-size: 90%; +} + +.markdown-body sub, +.markdown-body sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.markdown-body sub { + bottom: -0.25em; +} + +.markdown-body sup { + top: -0.5em; +} + +.markdown-body img { + border-style: none; + max-width: 100%; + box-sizing: content-box; +} + +.markdown-body code, +.markdown-body kbd, +.markdown-body pre, +.markdown-body samp { + font-family: monospace; + font-size: 1em; +} + +.markdown-body figure { + margin: 1em 2.5rem; +} + +.markdown-body hr { + box-sizing: content-box; + overflow: hidden; + background: rgba(0,0,0,0); + border-bottom: 1px solid #3d444db3; + height: .25em; + padding: 0; + margin: 1.5rem 0; + background-color: #3d444d; + border: 0; +} + +.markdown-body input { + font: inherit; + margin: 0; + overflow: visible; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +.markdown-body [type=button], +.markdown-body [type=reset], +.markdown-body [type=submit] { + -webkit-appearance: button; + appearance: button; +} + +.markdown-body [type=checkbox], +.markdown-body [type=radio] { + box-sizing: border-box; + padding: 0; +} + +.markdown-body [type=number]::-webkit-inner-spin-button, +.markdown-body [type=number]::-webkit-outer-spin-button { + height: auto; +} + +.markdown-body [type=search]::-webkit-search-cancel-button, +.markdown-body [type=search]::-webkit-search-decoration { + -webkit-appearance: none; + appearance: none; +} + +.markdown-body ::-webkit-input-placeholder { + color: inherit; + opacity: .54; +} + +.markdown-body ::-webkit-file-upload-button { + -webkit-appearance: button; + appearance: button; + font: inherit; +} + +.markdown-body a:hover { + text-decoration: underline; +} + +.markdown-body ::placeholder { + color: #9198a1; + opacity: 1; +} + +.markdown-body hr::before { + display: table; + content: ""; +} + +.markdown-body hr::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body table { + border-spacing: 0; + border-collapse: collapse; + display: block; + width: max-content; + max-width: 100%; + overflow: auto; + font-variant: tabular-nums; +} + +.markdown-body td, +.markdown-body th { + padding: 0; +} + +.markdown-body details summary { + cursor: pointer; +} + +.markdown-body a:focus, +.markdown-body [role=button]:focus, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=checkbox]:focus { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:focus:not(:focus-visible), +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body input[type=radio]:focus:not(:focus-visible), +.markdown-body input[type=checkbox]:focus:not(:focus-visible) { + outline: solid 1px rgba(0,0,0,0); +} + +.markdown-body a:focus-visible, +.markdown-body [role=button]:focus-visible, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus-visible { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:not([class]):focus, +.markdown-body a:not([class]):focus-visible, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus, +.markdown-body input[type=checkbox]:focus-visible { + outline-offset: 0; +} + +.markdown-body kbd { + display: inline-block; + padding: 0.25rem; + font: 11px ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + line-height: 10px; + color: #f0f6fc; + vertical-align: middle; + background-color: #262c36; + border: solid 1px #3d444db3; + border-bottom-color: #3d444db3; + border-radius: 6px; + box-shadow: inset 0 -1px 0 #3d444db3; +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 1.5rem; + margin-bottom: 1rem; + font-weight: 600; + line-height: 1.25; +} + +.markdown-body h2 { + font-weight: 600; + padding-bottom: .3em; + font-size: 1.5em; + border-bottom: 1px solid #3d444db3; +} + +.markdown-body h3 { + font-weight: 600; + font-size: 1.25em; +} + +.markdown-body h4 { + font-weight: 600; + font-size: 1em; +} + +.markdown-body h5 { + font-weight: 600; + font-size: .875em; +} + +.markdown-body h6 { + font-weight: 600; + font-size: .85em; + color: #9198a1; +} + +.markdown-body p { + margin-top: 0; + margin-bottom: 10px; +} + +.markdown-body blockquote { + margin: 0; + padding: 0 1em; + color: #9198a1; + border-left: .25em solid #3d444d; +} + +.markdown-body ul, +.markdown-body ol { + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} + +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} + +.markdown-body ul ul ol, +.markdown-body ul ol ol, +.markdown-body ol ul ol, +.markdown-body ol ol ol { + list-style-type: lower-alpha; +} + +.markdown-body dd { + margin-left: 0; +} + +.markdown-body tt, +.markdown-body code, +.markdown-body samp { + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + font-size: 12px; +} + +.markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + font-size: 12px; + word-wrap: normal; +} + +.markdown-body .octicon { + display: inline-block; + overflow: visible !important; + vertical-align: text-bottom; + fill: currentColor; +} + +.markdown-body input::-webkit-outer-spin-button, +.markdown-body input::-webkit-inner-spin-button { + margin: 0; + appearance: none; +} + +.markdown-body .mr-2 { + margin-right: 0.5rem !important; +} + +.markdown-body::before { + display: table; + content: ""; +} + +.markdown-body::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body>*:first-child { + margin-top: 0 !important; +} + +.markdown-body>*:last-child { + margin-bottom: 0 !important; +} + +.markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-body .absent { + color: #e5534b; +} + +.markdown-body .anchor { + float: left; + padding-right: 0.25rem; + margin-left: -20px; + line-height: 1; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body p, +.markdown-body blockquote, +.markdown-body ul, +.markdown-body ol, +.markdown-body dl, +.markdown-body table, +.markdown-body pre, +.markdown-body details { + margin-top: 0; + margin-bottom: 1rem; +} + +.markdown-body blockquote>:first-child { + margin-top: 0; +} + +.markdown-body blockquote>:last-child { + margin-bottom: 0; +} + +.markdown-body h1 .octicon-link, +.markdown-body h2 .octicon-link, +.markdown-body h3 .octicon-link, +.markdown-body h4 .octicon-link, +.markdown-body h5 .octicon-link, +.markdown-body h6 .octicon-link { + color: #f0f6fc; + vertical-align: middle; + visibility: hidden; +} + +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1:hover .anchor .octicon-link, +.markdown-body h2:hover .anchor .octicon-link, +.markdown-body h3:hover .anchor .octicon-link, +.markdown-body h4:hover .anchor .octicon-link, +.markdown-body h5:hover .anchor .octicon-link, +.markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.markdown-body h1 tt, +.markdown-body h1 code, +.markdown-body h2 tt, +.markdown-body h2 code, +.markdown-body h3 tt, +.markdown-body h3 code, +.markdown-body h4 tt, +.markdown-body h4 code, +.markdown-body h5 tt, +.markdown-body h5 code, +.markdown-body h6 tt, +.markdown-body h6 code { + padding: 0 .2em; + font-size: inherit; +} + +.markdown-body summary h1, +.markdown-body summary h2, +.markdown-body summary h3, +.markdown-body summary h4, +.markdown-body summary h5, +.markdown-body summary h6 { + display: inline-block; +} + +.markdown-body summary h1 .anchor, +.markdown-body summary h2 .anchor, +.markdown-body summary h3 .anchor, +.markdown-body summary h4 .anchor, +.markdown-body summary h5 .anchor, +.markdown-body summary h6 .anchor { + margin-left: -40px; +} + +.markdown-body summary h1, +.markdown-body summary h2 { + padding-bottom: 0; + border-bottom: 0; +} + +.markdown-body ul.no-list, +.markdown-body ol.no-list { + padding: 0; + list-style-type: none; +} + +.markdown-body ol[type="a s"] { + list-style-type: lower-alpha; +} + +.markdown-body ol[type="A s"] { + list-style-type: upper-alpha; +} + +.markdown-body ol[type="i s"] { + list-style-type: lower-roman; +} + +.markdown-body ol[type="I s"] { + list-style-type: upper-roman; +} + +.markdown-body ol[type="1"] { + list-style-type: decimal; +} + +.markdown-body div>ol:not([type]) { + list-style-type: decimal; +} + +.markdown-body ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body li>p { + margin-top: 1rem; +} + +.markdown-body li+li { + margin-top: .25em; +} + +.markdown-body dl { + padding: 0; +} + +.markdown-body dl dt { + padding: 0; + margin-top: 1rem; + font-size: 1em; + font-style: italic; + font-weight: 600; +} + +.markdown-body dl dd { + padding: 0 1rem; + margin-bottom: 1rem; +} + +.markdown-body table th { + font-weight: 600; +} + +.markdown-body table th, +.markdown-body table td { + padding: 6px 13px; + border: 1px solid #3d444d; +} + +.markdown-body table td>:last-child { + margin-bottom: 0; +} + +.markdown-body table tr { + background-color: #212830; + border-top: 1px solid #3d444db3; +} + +.markdown-body table tr:nth-child(2n) { + background-color: #262c36; +} + +.markdown-body table img { + background-color: rgba(0,0,0,0); +} + +.markdown-body img[align=right] { + padding-left: 20px; +} + +.markdown-body img[align=left] { + padding-right: 20px; +} + +.markdown-body .emoji { + max-width: none; + vertical-align: text-top; + background-color: rgba(0,0,0,0); +} + +.markdown-body span.frame { + display: block; + overflow: hidden; +} + +.markdown-body span.frame>span { + display: block; + float: left; + width: auto; + padding: 7px; + margin: 13px 0 0; + overflow: hidden; + border: 1px solid #3d444d; +} + +.markdown-body span.frame span img { + display: block; + float: left; +} + +.markdown-body span.frame span span { + display: block; + padding: 5px 0 0; + clear: both; + color: #f0f6fc; +} + +.markdown-body span.align-center { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-center>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: center; +} + +.markdown-body span.align-center span img { + margin: 0 auto; + text-align: center; +} + +.markdown-body span.align-right { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-right>span { + display: block; + margin: 13px 0 0; + overflow: hidden; + text-align: right; +} + +.markdown-body span.align-right span img { + margin: 0; + text-align: right; +} + +.markdown-body span.float-left { + display: block; + float: left; + margin-right: 13px; + overflow: hidden; +} + +.markdown-body span.float-left span { + margin: 13px 0 0; +} + +.markdown-body span.float-right { + display: block; + float: right; + margin-left: 13px; + overflow: hidden; +} + +.markdown-body span.float-right>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: right; +} + +.markdown-body code, +.markdown-body tt { + padding: .2em .4em; + margin: 0; + font-size: 85%; + white-space: break-spaces; + background-color: #656c7633; + border-radius: 6px; +} + +.markdown-body code br, +.markdown-body tt br { + display: none; +} + +.markdown-body del code { + text-decoration: inherit; +} + +.markdown-body samp { + font-size: 85%; +} + +.markdown-body pre code { + font-size: 100%; +} + +.markdown-body pre>code { + padding: 0; + margin: 0; + word-break: normal; + white-space: pre; + background: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .highlight { + margin-bottom: 1rem; +} + +.markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.markdown-body .highlight pre, +.markdown-body pre { + padding: 1rem; + overflow: auto; + font-size: 85%; + line-height: 1.45; + color: #f0f6fc; + background-color: #262c36; + border-radius: 6px; +} + +.markdown-body pre code, +.markdown-body pre tt { + display: inline; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .csv-data td, +.markdown-body .csv-data th { + padding: 5px; + overflow: hidden; + font-size: 12px; + line-height: 1; + text-align: left; + white-space: nowrap; +} + +.markdown-body .csv-data .blob-num { + padding: 10px 0.5rem 9px; + text-align: right; + background: #212830; + border: 0; +} + +.markdown-body .csv-data tr { + border-top: 0; +} + +.markdown-body .csv-data th { + font-weight: 600; + background: #262c36; + border-top: 0; +} + +.markdown-body [data-footnote-ref]::before { + content: "["; +} + +.markdown-body [data-footnote-ref]::after { + content: "]"; +} + +.markdown-body .footnotes { + font-size: 12px; + color: #9198a1; + border-top: 1px solid #3d444d; +} + +.markdown-body .footnotes ol { + padding-left: 1rem; +} + +.markdown-body .footnotes ol ul { + display: inline-block; + padding-left: 1rem; + margin-top: 1rem; +} + +.markdown-body .footnotes li { + position: relative; +} + +.markdown-body .footnotes li:target::before { + position: absolute; + top: calc(0.5rem*-1); + right: calc(0.5rem*-1); + bottom: calc(0.5rem*-1); + left: calc(1.5rem*-1); + pointer-events: none; + content: ""; + border: 2px solid #316dca; + border-radius: 6px; +} + +.markdown-body .footnotes li:target { + color: #f0f6fc; +} + +.markdown-body .footnotes .data-footnote-backref g-emoji { + font-family: monospace; +} + +.markdown-body .pl-c { + color: #9198a1; +} + +.markdown-body .pl-c1, +.markdown-body .pl-s .pl-v { + color: #6cb6ff; +} + +.markdown-body .pl-e, +.markdown-body .pl-en { + color: #dcbdfb; +} + +.markdown-body .pl-smi, +.markdown-body .pl-s .pl-s1 { + color: #f0f6fc; +} + +.markdown-body .pl-ent { + color: #8ddb8c; +} + +.markdown-body .pl-k { + color: #f47067; +} + +.markdown-body .pl-s, +.markdown-body .pl-pds, +.markdown-body .pl-s .pl-pse .pl-s1, +.markdown-body .pl-sr, +.markdown-body .pl-sr .pl-cce, +.markdown-body .pl-sr .pl-sre, +.markdown-body .pl-sr .pl-sra { + color: #96d0ff; +} + +.markdown-body .pl-v, +.markdown-body .pl-smw { + color: #f69d50; +} + +.markdown-body .pl-bu { + color: #e5534b; +} + +.markdown-body .pl-ii { + color: var(--fgColor-danger); + background-color: var(--bgColor-danger-muted); +} + +.markdown-body .pl-c2 { + color: #f0f6fc; + background-color: #ad2e2c; +} + +.markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: #8ddb8c; +} + +.markdown-body .pl-ml { + color: #eac55f; +} + +.markdown-body .pl-mh, +.markdown-body .pl-mh .pl-en, +.markdown-body .pl-ms { + font-weight: bold; + color: #316dca; +} + +.markdown-body .pl-mi { + font-style: italic; + color: #f0f6fc; +} + +.markdown-body .pl-mb { + font-weight: bold; + color: #f0f6fc; +} + +.markdown-body .pl-md { + color: #ffd8d3; + background-color: #78191b; +} + +.markdown-body .pl-mi1 { + color: #b4f1b4; + background-color: #1b4721; +} + +.markdown-body .pl-mc { + color: #ffddb0; + background-color: #682d0f; +} + +.markdown-body .pl-mi2 { + color: #f0f6fc; + background-color: #255ab2; +} + +.markdown-body .pl-mdr { + font-weight: bold; + color: #dcbdfb; +} + +.markdown-body .pl-ba { + color: #9198a1; +} + +.markdown-body .pl-sg { + color: #3d444d; +} + +.markdown-body .pl-corl { + text-decoration: underline; + color: #96d0ff; +} + +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body [role=tabpanel][tabindex="0"]:focus:not(:focus-visible), +.markdown-body button:focus:not(:focus-visible), +.markdown-body summary:focus:not(:focus-visible), +.markdown-body a:focus:not(:focus-visible) { + outline: none; + box-shadow: none; +} + +.markdown-body [tabindex="0"]:focus:not(:focus-visible), +.markdown-body details-dialog:focus:not(:focus-visible) { + outline: none; +} + +.markdown-body g-emoji { + display: inline-block; + min-width: 1ch; + font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; + font-size: 1em; + font-style: normal !important; + font-weight: 400; + line-height: 1; + vertical-align: -0.075em; +} + +.markdown-body g-emoji img { + width: 1em; + height: 1em; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote) { + display: block; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):not(:has(.snippet-clipboard-content,>pre)) { + width: fit-content; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):has(.snippet-clipboard-content,>pre):focus-visible { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: 2px; +} + +.markdown-body .task-list-item { + list-style-type: none; +} + +.markdown-body .task-list-item label { + font-weight: 400; +} + +.markdown-body .task-list-item.enabled label { + cursor: pointer; +} + +.markdown-body .task-list-item+.task-list-item { + margin-top: 0.25rem; +} + +.markdown-body .task-list-item .handle { + display: none; +} + +.markdown-body .task-list-item-checkbox { + margin: 0 .2em .25em -1.4em; + vertical-align: middle; +} + +.markdown-body ul:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body ol:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body .contains-task-list:hover .task-list-item-convert-container, +.markdown-body .contains-task-list:focus-within .task-list-item-convert-container { + display: block; + width: auto; + height: 24px; + overflow: visible; + clip-path: none; +} + +.markdown-body ::-webkit-calendar-picker-indicator { + filter: invert(50%); +} + +.markdown-body .markdown-alert { + padding: 0.5rem 1rem; + margin-bottom: 1rem; + color: inherit; + border-left: .25em solid #3d444d; +} + +.markdown-body .markdown-alert>:first-child { + margin-top: 0; +} + +.markdown-body .markdown-alert>:last-child { + margin-bottom: 0; +} + +.markdown-body .markdown-alert .markdown-alert-title { + display: flex; + font-weight: 500; + align-items: center; + line-height: 1; +} + +.markdown-body .markdown-alert.markdown-alert-note { + border-left-color: #316dca; +} + +.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title { + color: #478be6; +} + +.markdown-body .markdown-alert.markdown-alert-important { + border-left-color: #8256d0; +} + +.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title { + color: #986ee2; +} + +.markdown-body .markdown-alert.markdown-alert-warning { + border-left-color: #966600; +} + +.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title { + color: #c69026; +} + +.markdown-body .markdown-alert.markdown-alert-tip { + border-left-color: #347d39; +} + +.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title { + color: #57ab5a; +} + +.markdown-body .markdown-alert.markdown-alert-caution { + border-left-color: #c93c37; +} + +.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title { + color: #e5534b; +} + +.markdown-body>*:first-child>.heading-element:first-child { + margin-top: 0 !important; +} + +.markdown-body .highlight pre:has(+.zeroclipboard-container) { + min-height: 52px; +} + diff --git a/public/themes/claude/github-markdown-css/github-markdown-dark-high-contrast.css b/public/themes/claude/github-markdown-css/github-markdown-dark-high-contrast.css new file mode 100644 index 00000000000..43f946aa8ae --- /dev/null +++ b/public/themes/claude/github-markdown-css/github-markdown-dark-high-contrast.css @@ -0,0 +1,1124 @@ +/*dark_high_contrast */ +.markdown-body { + color-scheme: dark; + /** CSS default easing. Use for hover state changes and micro-interactions. */ + /** Accelerating motion. Use for elements exiting the viewport (moving off-screen). */ + /** Smooth acceleration and deceleration. Use for elements moving or morphing within the viewport. */ + /** Decelerating motion. Use for elements entering the viewport or appearing on screen. */ + /** Constant motion with no acceleration. Use for continuous animations like progress bars or loaders. */ + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + margin: 0; + font-weight: 400; + color: #ffffff; + background-color: #010409; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +.markdown-body a { + text-decoration: underline; + text-underline-offset: .2rem; +} + +.markdown-body .octicon { + display: inline-block; + fill: currentColor; + vertical-align: text-bottom; +} + +.markdown-body h1:hover .anchor .octicon-link:before, +.markdown-body h2:hover .anchor .octicon-link:before, +.markdown-body h3:hover .anchor .octicon-link:before, +.markdown-body h4:hover .anchor .octicon-link:before, +.markdown-body h5:hover .anchor .octicon-link:before, +.markdown-body h6:hover .anchor .octicon-link:before { + width: 16px; + height: 16px; + content: ' '; + display: inline-block; + background-color: currentColor; + -webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); + mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); +} + +.markdown-body details, +.markdown-body figcaption, +.markdown-body figure { + display: block; +} + +.markdown-body summary { + display: list-item; +} + +.markdown-body [hidden] { + display: none !important; +} + +.markdown-body a { + background-color: rgba(0,0,0,0); + color: #74b9ff; + text-decoration: none; +} + +.markdown-body abbr[title] { + border-bottom: none; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +.markdown-body b, +.markdown-body strong { + font-weight: 600; +} + +.markdown-body dfn { + font-style: italic; +} + +.markdown-body h1 { + margin: .67em 0; + font-weight: 600; + padding-bottom: .3em; + font-size: 2em; + border-bottom: 1px solid var(--borderColor-default); +} + +.markdown-body mark { + background-color: #edaa2726; + color: #ffffff; +} + +.markdown-body small { + font-size: 90%; +} + +.markdown-body sub, +.markdown-body sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.markdown-body sub { + bottom: -0.25em; +} + +.markdown-body sup { + top: -0.5em; +} + +.markdown-body img { + border-style: none; + max-width: 100%; + box-sizing: content-box; +} + +.markdown-body code, +.markdown-body kbd, +.markdown-body pre, +.markdown-body samp { + font-family: monospace; + font-size: 1em; +} + +.markdown-body figure { + margin: 1em 2.5rem; +} + +.markdown-body hr { + box-sizing: content-box; + overflow: hidden; + background: rgba(0,0,0,0); + border-bottom: 1px solid var(--borderColor-default); + height: .25em; + padding: 0; + margin: 1.5rem 0; + background-color: #b7bdc8; + border: 0; +} + +.markdown-body input { + font: inherit; + margin: 0; + overflow: visible; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +.markdown-body [type=button], +.markdown-body [type=reset], +.markdown-body [type=submit] { + -webkit-appearance: button; + appearance: button; +} + +.markdown-body [type=checkbox], +.markdown-body [type=radio] { + box-sizing: border-box; + padding: 0; +} + +.markdown-body [type=number]::-webkit-inner-spin-button, +.markdown-body [type=number]::-webkit-outer-spin-button { + height: auto; +} + +.markdown-body [type=search]::-webkit-search-cancel-button, +.markdown-body [type=search]::-webkit-search-decoration { + -webkit-appearance: none; + appearance: none; +} + +.markdown-body ::-webkit-input-placeholder { + color: inherit; + opacity: .54; +} + +.markdown-body ::-webkit-file-upload-button { + -webkit-appearance: button; + appearance: button; + font: inherit; +} + +.markdown-body a:hover { + text-decoration: underline; +} + +.markdown-body ::placeholder { + color: #b7bdc8; + opacity: 1; +} + +.markdown-body hr::before { + display: table; + content: ""; +} + +.markdown-body hr::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body table { + border-spacing: 0; + border-collapse: collapse; + display: block; + width: max-content; + max-width: 100%; + overflow: auto; + font-variant: tabular-nums; +} + +.markdown-body td, +.markdown-body th { + padding: 0; +} + +.markdown-body details summary { + cursor: pointer; +} + +.markdown-body a:focus, +.markdown-body [role=button]:focus, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=checkbox]:focus { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:focus:not(:focus-visible), +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body input[type=radio]:focus:not(:focus-visible), +.markdown-body input[type=checkbox]:focus:not(:focus-visible) { + outline: solid 1px rgba(0,0,0,0); +} + +.markdown-body a:focus-visible, +.markdown-body [role=button]:focus-visible, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus-visible { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:not([class]):focus, +.markdown-body a:not([class]):focus-visible, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus, +.markdown-body input[type=checkbox]:focus-visible { + outline-offset: 0; +} + +.markdown-body kbd { + display: inline-block; + padding: 0.25rem; + font: 11px ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + line-height: 10px; + color: #ffffff; + vertical-align: middle; + background-color: #151b23; + border: solid 1px var(--borderColor-muted); + border-bottom-color: var(--borderColor-muted); + border-radius: 6px; + box-shadow: inset 0 -1px 0 var(--borderColor-muted); +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 1.5rem; + margin-bottom: 1rem; + font-weight: 600; + line-height: 1.25; +} + +.markdown-body h2 { + font-weight: 600; + padding-bottom: .3em; + font-size: 1.5em; + border-bottom: 1px solid var(--borderColor-default); +} + +.markdown-body h3 { + font-weight: 600; + font-size: 1.25em; +} + +.markdown-body h4 { + font-weight: 600; + font-size: 1em; +} + +.markdown-body h5 { + font-weight: 600; + font-size: .875em; +} + +.markdown-body h6 { + font-weight: 600; + font-size: .85em; + color: #b7bdc8; +} + +.markdown-body p { + margin-top: 0; + margin-bottom: 10px; +} + +.markdown-body blockquote { + margin: 0; + padding: 0 1em; + color: #b7bdc8; + border-left: .25em solid #b7bdc8; +} + +.markdown-body ul, +.markdown-body ol { + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} + +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} + +.markdown-body ul ul ol, +.markdown-body ul ol ol, +.markdown-body ol ul ol, +.markdown-body ol ol ol { + list-style-type: lower-alpha; +} + +.markdown-body dd { + margin-left: 0; +} + +.markdown-body tt, +.markdown-body code, +.markdown-body samp { + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + font-size: 12px; +} + +.markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + font-size: 12px; + word-wrap: normal; +} + +.markdown-body .octicon { + display: inline-block; + overflow: visible !important; + vertical-align: text-bottom; + fill: currentColor; +} + +.markdown-body input::-webkit-outer-spin-button, +.markdown-body input::-webkit-inner-spin-button { + margin: 0; + appearance: none; +} + +.markdown-body .mr-2 { + margin-right: 0.5rem !important; +} + +.markdown-body::before { + display: table; + content: ""; +} + +.markdown-body::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body>*:first-child { + margin-top: 0 !important; +} + +.markdown-body>*:last-child { + margin-bottom: 0 !important; +} + +.markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-body .absent { + color: #ff9492; +} + +.markdown-body .anchor { + float: left; + padding-right: 0.25rem; + margin-left: -20px; + line-height: 1; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body p, +.markdown-body blockquote, +.markdown-body ul, +.markdown-body ol, +.markdown-body dl, +.markdown-body table, +.markdown-body pre, +.markdown-body details { + margin-top: 0; + margin-bottom: 1rem; +} + +.markdown-body blockquote>:first-child { + margin-top: 0; +} + +.markdown-body blockquote>:last-child { + margin-bottom: 0; +} + +.markdown-body h1 .octicon-link, +.markdown-body h2 .octicon-link, +.markdown-body h3 .octicon-link, +.markdown-body h4 .octicon-link, +.markdown-body h5 .octicon-link, +.markdown-body h6 .octicon-link { + color: #ffffff; + vertical-align: middle; + visibility: hidden; +} + +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1:hover .anchor .octicon-link, +.markdown-body h2:hover .anchor .octicon-link, +.markdown-body h3:hover .anchor .octicon-link, +.markdown-body h4:hover .anchor .octicon-link, +.markdown-body h5:hover .anchor .octicon-link, +.markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.markdown-body h1 tt, +.markdown-body h1 code, +.markdown-body h2 tt, +.markdown-body h2 code, +.markdown-body h3 tt, +.markdown-body h3 code, +.markdown-body h4 tt, +.markdown-body h4 code, +.markdown-body h5 tt, +.markdown-body h5 code, +.markdown-body h6 tt, +.markdown-body h6 code { + padding: 0 .2em; + font-size: inherit; +} + +.markdown-body summary h1, +.markdown-body summary h2, +.markdown-body summary h3, +.markdown-body summary h4, +.markdown-body summary h5, +.markdown-body summary h6 { + display: inline-block; +} + +.markdown-body summary h1 .anchor, +.markdown-body summary h2 .anchor, +.markdown-body summary h3 .anchor, +.markdown-body summary h4 .anchor, +.markdown-body summary h5 .anchor, +.markdown-body summary h6 .anchor { + margin-left: -40px; +} + +.markdown-body summary h1, +.markdown-body summary h2 { + padding-bottom: 0; + border-bottom: 0; +} + +.markdown-body ul.no-list, +.markdown-body ol.no-list { + padding: 0; + list-style-type: none; +} + +.markdown-body ol[type="a s"] { + list-style-type: lower-alpha; +} + +.markdown-body ol[type="A s"] { + list-style-type: upper-alpha; +} + +.markdown-body ol[type="i s"] { + list-style-type: lower-roman; +} + +.markdown-body ol[type="I s"] { + list-style-type: upper-roman; +} + +.markdown-body ol[type="1"] { + list-style-type: decimal; +} + +.markdown-body div>ol:not([type]) { + list-style-type: decimal; +} + +.markdown-body ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body li>p { + margin-top: 1rem; +} + +.markdown-body li+li { + margin-top: .25em; +} + +.markdown-body dl { + padding: 0; +} + +.markdown-body dl dt { + padding: 0; + margin-top: 1rem; + font-size: 1em; + font-style: italic; + font-weight: 600; +} + +.markdown-body dl dd { + padding: 0 1rem; + margin-bottom: 1rem; +} + +.markdown-body table th { + font-weight: 600; +} + +.markdown-body table th, +.markdown-body table td { + padding: 6px 13px; + border: 1px solid #b7bdc8; +} + +.markdown-body table td>:last-child { + margin-bottom: 0; +} + +.markdown-body table tr { + background-color: #010409; + border-top: 1px solid var(--borderColor-default); +} + +.markdown-body table tr:nth-child(2n) { + background-color: #151b23; +} + +.markdown-body table img { + background-color: rgba(0,0,0,0); +} + +.markdown-body img[align=right] { + padding-left: 20px; +} + +.markdown-body img[align=left] { + padding-right: 20px; +} + +.markdown-body .emoji { + max-width: none; + vertical-align: text-top; + background-color: rgba(0,0,0,0); +} + +.markdown-body span.frame { + display: block; + overflow: hidden; +} + +.markdown-body span.frame>span { + display: block; + float: left; + width: auto; + padding: 7px; + margin: 13px 0 0; + overflow: hidden; + border: 1px solid #b7bdc8; +} + +.markdown-body span.frame span img { + display: block; + float: left; +} + +.markdown-body span.frame span span { + display: block; + padding: 5px 0 0; + clear: both; + color: #ffffff; +} + +.markdown-body span.align-center { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-center>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: center; +} + +.markdown-body span.align-center span img { + margin: 0 auto; + text-align: center; +} + +.markdown-body span.align-right { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-right>span { + display: block; + margin: 13px 0 0; + overflow: hidden; + text-align: right; +} + +.markdown-body span.align-right span img { + margin: 0; + text-align: right; +} + +.markdown-body span.float-left { + display: block; + float: left; + margin-right: 13px; + overflow: hidden; +} + +.markdown-body span.float-left span { + margin: 13px 0 0; +} + +.markdown-body span.float-right { + display: block; + float: right; + margin-left: 13px; + overflow: hidden; +} + +.markdown-body span.float-right>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: right; +} + +.markdown-body code, +.markdown-body tt { + padding: .2em .4em; + margin: 0; + font-size: 85%; + white-space: break-spaces; + background-color: #212830; + border-radius: 6px; +} + +.markdown-body code br, +.markdown-body tt br { + display: none; +} + +.markdown-body del code { + text-decoration: inherit; +} + +.markdown-body samp { + font-size: 85%; +} + +.markdown-body pre code { + font-size: 100%; +} + +.markdown-body pre>code { + padding: 0; + margin: 0; + word-break: normal; + white-space: pre; + background: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .highlight { + margin-bottom: 1rem; +} + +.markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.markdown-body .highlight pre, +.markdown-body pre { + padding: 1rem; + overflow: auto; + font-size: 85%; + line-height: 1.45; + color: #ffffff; + background-color: #151b23; + border-radius: 6px; +} + +.markdown-body pre code, +.markdown-body pre tt { + display: inline; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .csv-data td, +.markdown-body .csv-data th { + padding: 5px; + overflow: hidden; + font-size: 12px; + line-height: 1; + text-align: left; + white-space: nowrap; +} + +.markdown-body .csv-data .blob-num { + padding: 10px 0.5rem 9px; + text-align: right; + background: #010409; + border: 0; +} + +.markdown-body .csv-data tr { + border-top: 0; +} + +.markdown-body .csv-data th { + font-weight: 600; + background: #151b23; + border-top: 0; +} + +.markdown-body [data-footnote-ref]::before { + content: "["; +} + +.markdown-body [data-footnote-ref]::after { + content: "]"; +} + +.markdown-body .footnotes { + font-size: 12px; + color: #b7bdc8; + border-top: 1px solid #b7bdc8; +} + +.markdown-body .footnotes ol { + padding-left: 1rem; +} + +.markdown-body .footnotes ol ul { + display: inline-block; + padding-left: 1rem; + margin-top: 1rem; +} + +.markdown-body .footnotes li { + position: relative; +} + +.markdown-body .footnotes li:target::before { + position: absolute; + top: calc(0.5rem*-1); + right: calc(0.5rem*-1); + bottom: calc(0.5rem*-1); + left: calc(1.5rem*-1); + pointer-events: none; + content: ""; + border: 2px solid #409eff; + border-radius: 6px; +} + +.markdown-body .footnotes li:target { + color: #ffffff; +} + +.markdown-body .footnotes .data-footnote-backref g-emoji { + font-family: monospace; +} + +.markdown-body .pl-c { + color: #9198a1; +} + +.markdown-body .pl-c1, +.markdown-body .pl-s .pl-v { + color: #91cbff; +} + +.markdown-body .pl-e, +.markdown-body .pl-en { + color: #dbb7ff; +} + +.markdown-body .pl-smi, +.markdown-body .pl-s .pl-s1 { + color: #f0f6fc; +} + +.markdown-body .pl-ent { + color: #72f088; +} + +.markdown-body .pl-k { + color: #ff9492; +} + +.markdown-body .pl-s, +.markdown-body .pl-pds, +.markdown-body .pl-s .pl-pse .pl-s1, +.markdown-body .pl-sr, +.markdown-body .pl-sr .pl-cce, +.markdown-body .pl-sr .pl-sre, +.markdown-body .pl-sr .pl-sra { + color: #addcff; +} + +.markdown-body .pl-v, +.markdown-body .pl-smw { + color: #ffb757; +} + +.markdown-body .pl-bu { + color: #ff8080; +} + +.markdown-body .pl-ii { + color: var(--fgColor-danger); + background-color: var(--bgColor-danger-muted); +} + +.markdown-body .pl-c2 { + color: #f0f6fc; + background-color: #ff4445; +} + +.markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: #72f088; +} + +.markdown-body .pl-ml { + color: #fbd669; +} + +.markdown-body .pl-mh, +.markdown-body .pl-mh .pl-en, +.markdown-body .pl-ms { + font-weight: bold; + color: #409eff; +} + +.markdown-body .pl-mi { + font-style: italic; + color: #f0f6fc; +} + +.markdown-body .pl-mb { + font-weight: bold; + color: #f0f6fc; +} + +.markdown-body .pl-md { + color: #ffdedb; + background-color: #cc1421; +} + +.markdown-body .pl-mi1 { + color: #acf7b6; + background-color: #007728; +} + +.markdown-body .pl-mc { + color: #ffe1b4; + background-color: #a74c00; +} + +.markdown-body .pl-mi2 { + color: #f0f6fc; + background-color: #318bf8; +} + +.markdown-body .pl-mdr { + font-weight: bold; + color: #dbb7ff; +} + +.markdown-body .pl-ba { + color: #9198a1; +} + +.markdown-body .pl-sg { + color: #3d444d; +} + +.markdown-body .pl-corl { + text-decoration: underline; + color: #addcff; +} + +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body [role=tabpanel][tabindex="0"]:focus:not(:focus-visible), +.markdown-body button:focus:not(:focus-visible), +.markdown-body summary:focus:not(:focus-visible), +.markdown-body a:focus:not(:focus-visible) { + outline: none; + box-shadow: none; +} + +.markdown-body [tabindex="0"]:focus:not(:focus-visible), +.markdown-body details-dialog:focus:not(:focus-visible) { + outline: none; +} + +.markdown-body g-emoji { + display: inline-block; + min-width: 1ch; + font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; + font-size: 1em; + font-style: normal !important; + font-weight: 400; + line-height: 1; + vertical-align: -0.075em; +} + +.markdown-body g-emoji img { + width: 1em; + height: 1em; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote) { + display: block; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):not(:has(.snippet-clipboard-content,>pre)) { + width: fit-content; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):has(.snippet-clipboard-content,>pre):focus-visible { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: 2px; +} + +.markdown-body .task-list-item { + list-style-type: none; +} + +.markdown-body .task-list-item label { + font-weight: 400; +} + +.markdown-body .task-list-item.enabled label { + cursor: pointer; +} + +.markdown-body .task-list-item+.task-list-item { + margin-top: 0.25rem; +} + +.markdown-body .task-list-item .handle { + display: none; +} + +.markdown-body .task-list-item-checkbox { + margin: 0 .2em .25em -1.4em; + vertical-align: middle; +} + +.markdown-body ul:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body ol:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body .contains-task-list:hover .task-list-item-convert-container, +.markdown-body .contains-task-list:focus-within .task-list-item-convert-container { + display: block; + width: auto; + height: 24px; + overflow: visible; + clip-path: none; +} + +.markdown-body ::-webkit-calendar-picker-indicator { + filter: invert(50%); +} + +.markdown-body .markdown-alert { + padding: 0.5rem 1rem; + margin-bottom: 1rem; + color: inherit; + border-left: .25em solid #b7bdc8; +} + +.markdown-body .markdown-alert>:first-child { + margin-top: 0; +} + +.markdown-body .markdown-alert>:last-child { + margin-bottom: 0; +} + +.markdown-body .markdown-alert .markdown-alert-title { + display: flex; + font-weight: 500; + align-items: center; + line-height: 1; +} + +.markdown-body .markdown-alert.markdown-alert-note { + border-left-color: #409eff; +} + +.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title { + color: #74b9ff; +} + +.markdown-body .markdown-alert.markdown-alert-important { + border-left-color: #b87fff; +} + +.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title { + color: #d3abff; +} + +.markdown-body .markdown-alert.markdown-alert-warning { + border-left-color: #e09b13; +} + +.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title { + color: #f0b72f; +} + +.markdown-body .markdown-alert.markdown-alert-tip { + border-left-color: #09b43a; +} + +.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title { + color: #2bd853; +} + +.markdown-body .markdown-alert.markdown-alert-caution { + border-left-color: #ff6a69; +} + +.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title { + color: #ff9492; +} + +.markdown-body>*:first-child>.heading-element:first-child { + margin-top: 0 !important; +} + +.markdown-body .highlight pre:has(+.zeroclipboard-container) { + min-height: 52px; +} + diff --git a/public/themes/claude/github-markdown-css/github-markdown-dark.css b/public/themes/claude/github-markdown-css/github-markdown-dark.css new file mode 100644 index 00000000000..f307e515ab3 --- /dev/null +++ b/public/themes/claude/github-markdown-css/github-markdown-dark.css @@ -0,0 +1,1124 @@ +/*dark */ +.markdown-body { + color-scheme: dark; + /** CSS default easing. Use for hover state changes and micro-interactions. */ + /** Accelerating motion. Use for elements exiting the viewport (moving off-screen). */ + /** Smooth acceleration and deceleration. Use for elements moving or morphing within the viewport. */ + /** Decelerating motion. Use for elements entering the viewport or appearing on screen. */ + /** Constant motion with no acceleration. Use for continuous animations like progress bars or loaders. */ + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + margin: 0; + font-weight: 400; + color: #f0f6fc; + background-color: #0d1117; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +.markdown-body a { + text-decoration: underline; + text-underline-offset: .2rem; +} + +.markdown-body .octicon { + display: inline-block; + fill: currentColor; + vertical-align: text-bottom; +} + +.markdown-body h1:hover .anchor .octicon-link:before, +.markdown-body h2:hover .anchor .octicon-link:before, +.markdown-body h3:hover .anchor .octicon-link:before, +.markdown-body h4:hover .anchor .octicon-link:before, +.markdown-body h5:hover .anchor .octicon-link:before, +.markdown-body h6:hover .anchor .octicon-link:before { + width: 16px; + height: 16px; + content: ' '; + display: inline-block; + background-color: currentColor; + -webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); + mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); +} + +.markdown-body details, +.markdown-body figcaption, +.markdown-body figure { + display: block; +} + +.markdown-body summary { + display: list-item; +} + +.markdown-body [hidden] { + display: none !important; +} + +.markdown-body a { + background-color: rgba(0,0,0,0); + color: #4493f8; + text-decoration: none; +} + +.markdown-body abbr[title] { + border-bottom: none; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +.markdown-body b, +.markdown-body strong { + font-weight: 600; +} + +.markdown-body dfn { + font-style: italic; +} + +.markdown-body h1 { + margin: .67em 0; + font-weight: 600; + padding-bottom: .3em; + font-size: 2em; + border-bottom: 1px solid #3d444db3; +} + +.markdown-body mark { + background-color: #bb800926; + color: #f0f6fc; +} + +.markdown-body small { + font-size: 90%; +} + +.markdown-body sub, +.markdown-body sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.markdown-body sub { + bottom: -0.25em; +} + +.markdown-body sup { + top: -0.5em; +} + +.markdown-body img { + border-style: none; + max-width: 100%; + box-sizing: content-box; +} + +.markdown-body code, +.markdown-body kbd, +.markdown-body pre, +.markdown-body samp { + font-family: monospace; + font-size: 1em; +} + +.markdown-body figure { + margin: 1em 2.5rem; +} + +.markdown-body hr { + box-sizing: content-box; + overflow: hidden; + background: rgba(0,0,0,0); + border-bottom: 1px solid #3d444db3; + height: .25em; + padding: 0; + margin: 1.5rem 0; + background-color: #3d444d; + border: 0; +} + +.markdown-body input { + font: inherit; + margin: 0; + overflow: visible; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +.markdown-body [type=button], +.markdown-body [type=reset], +.markdown-body [type=submit] { + -webkit-appearance: button; + appearance: button; +} + +.markdown-body [type=checkbox], +.markdown-body [type=radio] { + box-sizing: border-box; + padding: 0; +} + +.markdown-body [type=number]::-webkit-inner-spin-button, +.markdown-body [type=number]::-webkit-outer-spin-button { + height: auto; +} + +.markdown-body [type=search]::-webkit-search-cancel-button, +.markdown-body [type=search]::-webkit-search-decoration { + -webkit-appearance: none; + appearance: none; +} + +.markdown-body ::-webkit-input-placeholder { + color: inherit; + opacity: .54; +} + +.markdown-body ::-webkit-file-upload-button { + -webkit-appearance: button; + appearance: button; + font: inherit; +} + +.markdown-body a:hover { + text-decoration: underline; +} + +.markdown-body ::placeholder { + color: #9198a1; + opacity: 1; +} + +.markdown-body hr::before { + display: table; + content: ""; +} + +.markdown-body hr::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body table { + border-spacing: 0; + border-collapse: collapse; + display: block; + width: max-content; + max-width: 100%; + overflow: auto; + font-variant: tabular-nums; +} + +.markdown-body td, +.markdown-body th { + padding: 0; +} + +.markdown-body details summary { + cursor: pointer; +} + +.markdown-body a:focus, +.markdown-body [role=button]:focus, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=checkbox]:focus { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:focus:not(:focus-visible), +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body input[type=radio]:focus:not(:focus-visible), +.markdown-body input[type=checkbox]:focus:not(:focus-visible) { + outline: solid 1px rgba(0,0,0,0); +} + +.markdown-body a:focus-visible, +.markdown-body [role=button]:focus-visible, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus-visible { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:not([class]):focus, +.markdown-body a:not([class]):focus-visible, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus, +.markdown-body input[type=checkbox]:focus-visible { + outline-offset: 0; +} + +.markdown-body kbd { + display: inline-block; + padding: 0.25rem; + font: 11px ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + line-height: 10px; + color: #f0f6fc; + vertical-align: middle; + background-color: #151b23; + border: solid 1px var(--borderColor-muted); + border-bottom-color: var(--borderColor-muted); + border-radius: 6px; + box-shadow: inset 0 -1px 0 var(--borderColor-muted); +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 1.5rem; + margin-bottom: 1rem; + font-weight: 600; + line-height: 1.25; +} + +.markdown-body h2 { + font-weight: 600; + padding-bottom: .3em; + font-size: 1.5em; + border-bottom: 1px solid #3d444db3; +} + +.markdown-body h3 { + font-weight: 600; + font-size: 1.25em; +} + +.markdown-body h4 { + font-weight: 600; + font-size: 1em; +} + +.markdown-body h5 { + font-weight: 600; + font-size: .875em; +} + +.markdown-body h6 { + font-weight: 600; + font-size: .85em; + color: #9198a1; +} + +.markdown-body p { + margin-top: 0; + margin-bottom: 10px; +} + +.markdown-body blockquote { + margin: 0; + padding: 0 1em; + color: #9198a1; + border-left: .25em solid #3d444d; +} + +.markdown-body ul, +.markdown-body ol { + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} + +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} + +.markdown-body ul ul ol, +.markdown-body ul ol ol, +.markdown-body ol ul ol, +.markdown-body ol ol ol { + list-style-type: lower-alpha; +} + +.markdown-body dd { + margin-left: 0; +} + +.markdown-body tt, +.markdown-body code, +.markdown-body samp { + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + font-size: 12px; +} + +.markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + font-size: 12px; + word-wrap: normal; +} + +.markdown-body .octicon { + display: inline-block; + overflow: visible !important; + vertical-align: text-bottom; + fill: currentColor; +} + +.markdown-body input::-webkit-outer-spin-button, +.markdown-body input::-webkit-inner-spin-button { + margin: 0; + appearance: none; +} + +.markdown-body .mr-2 { + margin-right: 0.5rem !important; +} + +.markdown-body::before { + display: table; + content: ""; +} + +.markdown-body::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body>*:first-child { + margin-top: 0 !important; +} + +.markdown-body>*:last-child { + margin-bottom: 0 !important; +} + +.markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-body .absent { + color: #f85149; +} + +.markdown-body .anchor { + float: left; + padding-right: 0.25rem; + margin-left: -20px; + line-height: 1; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body p, +.markdown-body blockquote, +.markdown-body ul, +.markdown-body ol, +.markdown-body dl, +.markdown-body table, +.markdown-body pre, +.markdown-body details { + margin-top: 0; + margin-bottom: 1rem; +} + +.markdown-body blockquote>:first-child { + margin-top: 0; +} + +.markdown-body blockquote>:last-child { + margin-bottom: 0; +} + +.markdown-body h1 .octicon-link, +.markdown-body h2 .octicon-link, +.markdown-body h3 .octicon-link, +.markdown-body h4 .octicon-link, +.markdown-body h5 .octicon-link, +.markdown-body h6 .octicon-link { + color: #f0f6fc; + vertical-align: middle; + visibility: hidden; +} + +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1:hover .anchor .octicon-link, +.markdown-body h2:hover .anchor .octicon-link, +.markdown-body h3:hover .anchor .octicon-link, +.markdown-body h4:hover .anchor .octicon-link, +.markdown-body h5:hover .anchor .octicon-link, +.markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.markdown-body h1 tt, +.markdown-body h1 code, +.markdown-body h2 tt, +.markdown-body h2 code, +.markdown-body h3 tt, +.markdown-body h3 code, +.markdown-body h4 tt, +.markdown-body h4 code, +.markdown-body h5 tt, +.markdown-body h5 code, +.markdown-body h6 tt, +.markdown-body h6 code { + padding: 0 .2em; + font-size: inherit; +} + +.markdown-body summary h1, +.markdown-body summary h2, +.markdown-body summary h3, +.markdown-body summary h4, +.markdown-body summary h5, +.markdown-body summary h6 { + display: inline-block; +} + +.markdown-body summary h1 .anchor, +.markdown-body summary h2 .anchor, +.markdown-body summary h3 .anchor, +.markdown-body summary h4 .anchor, +.markdown-body summary h5 .anchor, +.markdown-body summary h6 .anchor { + margin-left: -40px; +} + +.markdown-body summary h1, +.markdown-body summary h2 { + padding-bottom: 0; + border-bottom: 0; +} + +.markdown-body ul.no-list, +.markdown-body ol.no-list { + padding: 0; + list-style-type: none; +} + +.markdown-body ol[type="a s"] { + list-style-type: lower-alpha; +} + +.markdown-body ol[type="A s"] { + list-style-type: upper-alpha; +} + +.markdown-body ol[type="i s"] { + list-style-type: lower-roman; +} + +.markdown-body ol[type="I s"] { + list-style-type: upper-roman; +} + +.markdown-body ol[type="1"] { + list-style-type: decimal; +} + +.markdown-body div>ol:not([type]) { + list-style-type: decimal; +} + +.markdown-body ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body li>p { + margin-top: 1rem; +} + +.markdown-body li+li { + margin-top: .25em; +} + +.markdown-body dl { + padding: 0; +} + +.markdown-body dl dt { + padding: 0; + margin-top: 1rem; + font-size: 1em; + font-style: italic; + font-weight: 600; +} + +.markdown-body dl dd { + padding: 0 1rem; + margin-bottom: 1rem; +} + +.markdown-body table th { + font-weight: 600; +} + +.markdown-body table th, +.markdown-body table td { + padding: 6px 13px; + border: 1px solid #3d444d; +} + +.markdown-body table td>:last-child { + margin-bottom: 0; +} + +.markdown-body table tr { + background-color: #0d1117; + border-top: 1px solid #3d444db3; +} + +.markdown-body table tr:nth-child(2n) { + background-color: #151b23; +} + +.markdown-body table img { + background-color: rgba(0,0,0,0); +} + +.markdown-body img[align=right] { + padding-left: 20px; +} + +.markdown-body img[align=left] { + padding-right: 20px; +} + +.markdown-body .emoji { + max-width: none; + vertical-align: text-top; + background-color: rgba(0,0,0,0); +} + +.markdown-body span.frame { + display: block; + overflow: hidden; +} + +.markdown-body span.frame>span { + display: block; + float: left; + width: auto; + padding: 7px; + margin: 13px 0 0; + overflow: hidden; + border: 1px solid #3d444d; +} + +.markdown-body span.frame span img { + display: block; + float: left; +} + +.markdown-body span.frame span span { + display: block; + padding: 5px 0 0; + clear: both; + color: #f0f6fc; +} + +.markdown-body span.align-center { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-center>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: center; +} + +.markdown-body span.align-center span img { + margin: 0 auto; + text-align: center; +} + +.markdown-body span.align-right { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-right>span { + display: block; + margin: 13px 0 0; + overflow: hidden; + text-align: right; +} + +.markdown-body span.align-right span img { + margin: 0; + text-align: right; +} + +.markdown-body span.float-left { + display: block; + float: left; + margin-right: 13px; + overflow: hidden; +} + +.markdown-body span.float-left span { + margin: 13px 0 0; +} + +.markdown-body span.float-right { + display: block; + float: right; + margin-left: 13px; + overflow: hidden; +} + +.markdown-body span.float-right>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: right; +} + +.markdown-body code, +.markdown-body tt { + padding: .2em .4em; + margin: 0; + font-size: 85%; + white-space: break-spaces; + background-color: #656c7633; + border-radius: 6px; +} + +.markdown-body code br, +.markdown-body tt br { + display: none; +} + +.markdown-body del code { + text-decoration: inherit; +} + +.markdown-body samp { + font-size: 85%; +} + +.markdown-body pre code { + font-size: 100%; +} + +.markdown-body pre>code { + padding: 0; + margin: 0; + word-break: normal; + white-space: pre; + background: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .highlight { + margin-bottom: 1rem; +} + +.markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.markdown-body .highlight pre, +.markdown-body pre { + padding: 1rem; + overflow: auto; + font-size: 85%; + line-height: 1.45; + color: #f0f6fc; + background-color: #151b23; + border-radius: 6px; +} + +.markdown-body pre code, +.markdown-body pre tt { + display: inline; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .csv-data td, +.markdown-body .csv-data th { + padding: 5px; + overflow: hidden; + font-size: 12px; + line-height: 1; + text-align: left; + white-space: nowrap; +} + +.markdown-body .csv-data .blob-num { + padding: 10px 0.5rem 9px; + text-align: right; + background: #0d1117; + border: 0; +} + +.markdown-body .csv-data tr { + border-top: 0; +} + +.markdown-body .csv-data th { + font-weight: 600; + background: #151b23; + border-top: 0; +} + +.markdown-body [data-footnote-ref]::before { + content: "["; +} + +.markdown-body [data-footnote-ref]::after { + content: "]"; +} + +.markdown-body .footnotes { + font-size: 12px; + color: #9198a1; + border-top: 1px solid #3d444d; +} + +.markdown-body .footnotes ol { + padding-left: 1rem; +} + +.markdown-body .footnotes ol ul { + display: inline-block; + padding-left: 1rem; + margin-top: 1rem; +} + +.markdown-body .footnotes li { + position: relative; +} + +.markdown-body .footnotes li:target::before { + position: absolute; + top: calc(0.5rem*-1); + right: calc(0.5rem*-1); + bottom: calc(0.5rem*-1); + left: calc(1.5rem*-1); + pointer-events: none; + content: ""; + border: 2px solid #1f6feb; + border-radius: 6px; +} + +.markdown-body .footnotes li:target { + color: #f0f6fc; +} + +.markdown-body .footnotes .data-footnote-backref g-emoji { + font-family: monospace; +} + +.markdown-body .pl-c { + color: #9198a1; +} + +.markdown-body .pl-c1, +.markdown-body .pl-s .pl-v { + color: #79c0ff; +} + +.markdown-body .pl-e, +.markdown-body .pl-en { + color: #d2a8ff; +} + +.markdown-body .pl-smi, +.markdown-body .pl-s .pl-s1 { + color: #f0f6fc; +} + +.markdown-body .pl-ent { + color: #7ee787; +} + +.markdown-body .pl-k { + color: #ff7b72; +} + +.markdown-body .pl-s, +.markdown-body .pl-pds, +.markdown-body .pl-s .pl-pse .pl-s1, +.markdown-body .pl-sr, +.markdown-body .pl-sr .pl-cce, +.markdown-body .pl-sr .pl-sre, +.markdown-body .pl-sr .pl-sra { + color: #a5d6ff; +} + +.markdown-body .pl-v, +.markdown-body .pl-smw { + color: #ffa657; +} + +.markdown-body .pl-bu { + color: #f85149; +} + +.markdown-body .pl-ii { + color: var(--fgColor-danger); + background-color: var(--bgColor-danger-muted); +} + +.markdown-body .pl-c2 { + color: #f0f6fc; + background-color: #b62324; +} + +.markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: #7ee787; +} + +.markdown-body .pl-ml { + color: #f2cc60; +} + +.markdown-body .pl-mh, +.markdown-body .pl-mh .pl-en, +.markdown-body .pl-ms { + font-weight: bold; + color: #1f6feb; +} + +.markdown-body .pl-mi { + font-style: italic; + color: #f0f6fc; +} + +.markdown-body .pl-mb { + font-weight: bold; + color: #f0f6fc; +} + +.markdown-body .pl-md { + color: #ffdcd7; + background-color: #67060c; +} + +.markdown-body .pl-mi1 { + color: #aff5b4; + background-color: #033a16; +} + +.markdown-body .pl-mc { + color: #ffdfb6; + background-color: #5a1e02; +} + +.markdown-body .pl-mi2 { + color: #f0f6fc; + background-color: #1158c7; +} + +.markdown-body .pl-mdr { + font-weight: bold; + color: #d2a8ff; +} + +.markdown-body .pl-ba { + color: #9198a1; +} + +.markdown-body .pl-sg { + color: #3d444d; +} + +.markdown-body .pl-corl { + text-decoration: underline; + color: #a5d6ff; +} + +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body [role=tabpanel][tabindex="0"]:focus:not(:focus-visible), +.markdown-body button:focus:not(:focus-visible), +.markdown-body summary:focus:not(:focus-visible), +.markdown-body a:focus:not(:focus-visible) { + outline: none; + box-shadow: none; +} + +.markdown-body [tabindex="0"]:focus:not(:focus-visible), +.markdown-body details-dialog:focus:not(:focus-visible) { + outline: none; +} + +.markdown-body g-emoji { + display: inline-block; + min-width: 1ch; + font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; + font-size: 1em; + font-style: normal !important; + font-weight: 400; + line-height: 1; + vertical-align: -0.075em; +} + +.markdown-body g-emoji img { + width: 1em; + height: 1em; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote) { + display: block; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):not(:has(.snippet-clipboard-content,>pre)) { + width: fit-content; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):has(.snippet-clipboard-content,>pre):focus-visible { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: 2px; +} + +.markdown-body .task-list-item { + list-style-type: none; +} + +.markdown-body .task-list-item label { + font-weight: 400; +} + +.markdown-body .task-list-item.enabled label { + cursor: pointer; +} + +.markdown-body .task-list-item+.task-list-item { + margin-top: 0.25rem; +} + +.markdown-body .task-list-item .handle { + display: none; +} + +.markdown-body .task-list-item-checkbox { + margin: 0 .2em .25em -1.4em; + vertical-align: middle; +} + +.markdown-body ul:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body ol:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body .contains-task-list:hover .task-list-item-convert-container, +.markdown-body .contains-task-list:focus-within .task-list-item-convert-container { + display: block; + width: auto; + height: 24px; + overflow: visible; + clip-path: none; +} + +.markdown-body ::-webkit-calendar-picker-indicator { + filter: invert(50%); +} + +.markdown-body .markdown-alert { + padding: 0.5rem 1rem; + margin-bottom: 1rem; + color: inherit; + border-left: .25em solid #3d444d; +} + +.markdown-body .markdown-alert>:first-child { + margin-top: 0; +} + +.markdown-body .markdown-alert>:last-child { + margin-bottom: 0; +} + +.markdown-body .markdown-alert .markdown-alert-title { + display: flex; + font-weight: 500; + align-items: center; + line-height: 1; +} + +.markdown-body .markdown-alert.markdown-alert-note { + border-left-color: #1f6feb; +} + +.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title { + color: #4493f8; +} + +.markdown-body .markdown-alert.markdown-alert-important { + border-left-color: #8957e5; +} + +.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title { + color: #ab7df8; +} + +.markdown-body .markdown-alert.markdown-alert-warning { + border-left-color: #9e6a03; +} + +.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title { + color: #d29922; +} + +.markdown-body .markdown-alert.markdown-alert-tip { + border-left-color: #238636; +} + +.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title { + color: #3fb950; +} + +.markdown-body .markdown-alert.markdown-alert-caution { + border-left-color: #da3633; +} + +.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title { + color: #f85149; +} + +.markdown-body>*:first-child>.heading-element:first-child { + margin-top: 0 !important; +} + +.markdown-body .highlight pre:has(+.zeroclipboard-container) { + min-height: 52px; +} + diff --git a/public/themes/claude/github-markdown-css/github-markdown-light-colorblind.css b/public/themes/claude/github-markdown-css/github-markdown-light-colorblind.css new file mode 100644 index 00000000000..9f4e6a297a5 --- /dev/null +++ b/public/themes/claude/github-markdown-css/github-markdown-light-colorblind.css @@ -0,0 +1,1124 @@ +/*light_colorblind */ +.markdown-body { + color-scheme: light; + /** CSS default easing. Use for hover state changes and micro-interactions. */ + /** Accelerating motion. Use for elements exiting the viewport (moving off-screen). */ + /** Smooth acceleration and deceleration. Use for elements moving or morphing within the viewport. */ + /** Decelerating motion. Use for elements entering the viewport or appearing on screen. */ + /** Constant motion with no acceleration. Use for continuous animations like progress bars or loaders. */ + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + margin: 0; + font-weight: 400; + color: #1f2328; + background-color: #ffffff; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +.markdown-body a { + text-decoration: underline; + text-underline-offset: .2rem; +} + +.markdown-body .octicon { + display: inline-block; + fill: currentColor; + vertical-align: text-bottom; +} + +.markdown-body h1:hover .anchor .octicon-link:before, +.markdown-body h2:hover .anchor .octicon-link:before, +.markdown-body h3:hover .anchor .octicon-link:before, +.markdown-body h4:hover .anchor .octicon-link:before, +.markdown-body h5:hover .anchor .octicon-link:before, +.markdown-body h6:hover .anchor .octicon-link:before { + width: 16px; + height: 16px; + content: ' '; + display: inline-block; + background-color: currentColor; + -webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); + mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); +} + +.markdown-body details, +.markdown-body figcaption, +.markdown-body figure { + display: block; +} + +.markdown-body summary { + display: list-item; +} + +.markdown-body [hidden] { + display: none !important; +} + +.markdown-body a { + background-color: rgba(0,0,0,0); + color: #0969da; + text-decoration: none; +} + +.markdown-body abbr[title] { + border-bottom: none; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +.markdown-body b, +.markdown-body strong { + font-weight: 600; +} + +.markdown-body dfn { + font-style: italic; +} + +.markdown-body h1 { + margin: .67em 0; + font-weight: 600; + padding-bottom: .3em; + font-size: 2em; + border-bottom: 1px solid #d1d9e0b3; +} + +.markdown-body mark { + background-color: #fff8c5; + color: #1f2328; +} + +.markdown-body small { + font-size: 90%; +} + +.markdown-body sub, +.markdown-body sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.markdown-body sub { + bottom: -0.25em; +} + +.markdown-body sup { + top: -0.5em; +} + +.markdown-body img { + border-style: none; + max-width: 100%; + box-sizing: content-box; +} + +.markdown-body code, +.markdown-body kbd, +.markdown-body pre, +.markdown-body samp { + font-family: monospace; + font-size: 1em; +} + +.markdown-body figure { + margin: 1em 2.5rem; +} + +.markdown-body hr { + box-sizing: content-box; + overflow: hidden; + background: rgba(0,0,0,0); + border-bottom: 1px solid #d1d9e0b3; + height: .25em; + padding: 0; + margin: 1.5rem 0; + background-color: #d1d9e0; + border: 0; +} + +.markdown-body input { + font: inherit; + margin: 0; + overflow: visible; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +.markdown-body [type=button], +.markdown-body [type=reset], +.markdown-body [type=submit] { + -webkit-appearance: button; + appearance: button; +} + +.markdown-body [type=checkbox], +.markdown-body [type=radio] { + box-sizing: border-box; + padding: 0; +} + +.markdown-body [type=number]::-webkit-inner-spin-button, +.markdown-body [type=number]::-webkit-outer-spin-button { + height: auto; +} + +.markdown-body [type=search]::-webkit-search-cancel-button, +.markdown-body [type=search]::-webkit-search-decoration { + -webkit-appearance: none; + appearance: none; +} + +.markdown-body ::-webkit-input-placeholder { + color: inherit; + opacity: .54; +} + +.markdown-body ::-webkit-file-upload-button { + -webkit-appearance: button; + appearance: button; + font: inherit; +} + +.markdown-body a:hover { + text-decoration: underline; +} + +.markdown-body ::placeholder { + color: #59636e; + opacity: 1; +} + +.markdown-body hr::before { + display: table; + content: ""; +} + +.markdown-body hr::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body table { + border-spacing: 0; + border-collapse: collapse; + display: block; + width: max-content; + max-width: 100%; + overflow: auto; + font-variant: tabular-nums; +} + +.markdown-body td, +.markdown-body th { + padding: 0; +} + +.markdown-body details summary { + cursor: pointer; +} + +.markdown-body a:focus, +.markdown-body [role=button]:focus, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=checkbox]:focus { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:focus:not(:focus-visible), +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body input[type=radio]:focus:not(:focus-visible), +.markdown-body input[type=checkbox]:focus:not(:focus-visible) { + outline: solid 1px rgba(0,0,0,0); +} + +.markdown-body a:focus-visible, +.markdown-body [role=button]:focus-visible, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus-visible { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:not([class]):focus, +.markdown-body a:not([class]):focus-visible, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus, +.markdown-body input[type=checkbox]:focus-visible { + outline-offset: 0; +} + +.markdown-body kbd { + display: inline-block; + padding: 0.25rem; + font: 11px ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + line-height: 10px; + color: #1f2328; + vertical-align: middle; + background-color: #f6f8fa; + border: solid 1px var(--borderColor-muted); + border-bottom-color: var(--borderColor-muted); + border-radius: 6px; + box-shadow: inset 0 -1px 0 var(--borderColor-muted); +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 1.5rem; + margin-bottom: 1rem; + font-weight: 600; + line-height: 1.25; +} + +.markdown-body h2 { + font-weight: 600; + padding-bottom: .3em; + font-size: 1.5em; + border-bottom: 1px solid #d1d9e0b3; +} + +.markdown-body h3 { + font-weight: 600; + font-size: 1.25em; +} + +.markdown-body h4 { + font-weight: 600; + font-size: 1em; +} + +.markdown-body h5 { + font-weight: 600; + font-size: .875em; +} + +.markdown-body h6 { + font-weight: 600; + font-size: .85em; + color: #59636e; +} + +.markdown-body p { + margin-top: 0; + margin-bottom: 10px; +} + +.markdown-body blockquote { + margin: 0; + padding: 0 1em; + color: #59636e; + border-left: .25em solid #d1d9e0; +} + +.markdown-body ul, +.markdown-body ol { + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} + +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} + +.markdown-body ul ul ol, +.markdown-body ul ol ol, +.markdown-body ol ul ol, +.markdown-body ol ol ol { + list-style-type: lower-alpha; +} + +.markdown-body dd { + margin-left: 0; +} + +.markdown-body tt, +.markdown-body code, +.markdown-body samp { + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + font-size: 12px; +} + +.markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + font-size: 12px; + word-wrap: normal; +} + +.markdown-body .octicon { + display: inline-block; + overflow: visible !important; + vertical-align: text-bottom; + fill: currentColor; +} + +.markdown-body input::-webkit-outer-spin-button, +.markdown-body input::-webkit-inner-spin-button { + margin: 0; + appearance: none; +} + +.markdown-body .mr-2 { + margin-right: 0.5rem !important; +} + +.markdown-body::before { + display: table; + content: ""; +} + +.markdown-body::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body>*:first-child { + margin-top: 0 !important; +} + +.markdown-body>*:last-child { + margin-bottom: 0 !important; +} + +.markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-body .absent { + color: #bc4c00; +} + +.markdown-body .anchor { + float: left; + padding-right: 0.25rem; + margin-left: -20px; + line-height: 1; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body p, +.markdown-body blockquote, +.markdown-body ul, +.markdown-body ol, +.markdown-body dl, +.markdown-body table, +.markdown-body pre, +.markdown-body details { + margin-top: 0; + margin-bottom: 1rem; +} + +.markdown-body blockquote>:first-child { + margin-top: 0; +} + +.markdown-body blockquote>:last-child { + margin-bottom: 0; +} + +.markdown-body h1 .octicon-link, +.markdown-body h2 .octicon-link, +.markdown-body h3 .octicon-link, +.markdown-body h4 .octicon-link, +.markdown-body h5 .octicon-link, +.markdown-body h6 .octicon-link { + color: #1f2328; + vertical-align: middle; + visibility: hidden; +} + +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1:hover .anchor .octicon-link, +.markdown-body h2:hover .anchor .octicon-link, +.markdown-body h3:hover .anchor .octicon-link, +.markdown-body h4:hover .anchor .octicon-link, +.markdown-body h5:hover .anchor .octicon-link, +.markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.markdown-body h1 tt, +.markdown-body h1 code, +.markdown-body h2 tt, +.markdown-body h2 code, +.markdown-body h3 tt, +.markdown-body h3 code, +.markdown-body h4 tt, +.markdown-body h4 code, +.markdown-body h5 tt, +.markdown-body h5 code, +.markdown-body h6 tt, +.markdown-body h6 code { + padding: 0 .2em; + font-size: inherit; +} + +.markdown-body summary h1, +.markdown-body summary h2, +.markdown-body summary h3, +.markdown-body summary h4, +.markdown-body summary h5, +.markdown-body summary h6 { + display: inline-block; +} + +.markdown-body summary h1 .anchor, +.markdown-body summary h2 .anchor, +.markdown-body summary h3 .anchor, +.markdown-body summary h4 .anchor, +.markdown-body summary h5 .anchor, +.markdown-body summary h6 .anchor { + margin-left: -40px; +} + +.markdown-body summary h1, +.markdown-body summary h2 { + padding-bottom: 0; + border-bottom: 0; +} + +.markdown-body ul.no-list, +.markdown-body ol.no-list { + padding: 0; + list-style-type: none; +} + +.markdown-body ol[type="a s"] { + list-style-type: lower-alpha; +} + +.markdown-body ol[type="A s"] { + list-style-type: upper-alpha; +} + +.markdown-body ol[type="i s"] { + list-style-type: lower-roman; +} + +.markdown-body ol[type="I s"] { + list-style-type: upper-roman; +} + +.markdown-body ol[type="1"] { + list-style-type: decimal; +} + +.markdown-body div>ol:not([type]) { + list-style-type: decimal; +} + +.markdown-body ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body li>p { + margin-top: 1rem; +} + +.markdown-body li+li { + margin-top: .25em; +} + +.markdown-body dl { + padding: 0; +} + +.markdown-body dl dt { + padding: 0; + margin-top: 1rem; + font-size: 1em; + font-style: italic; + font-weight: 600; +} + +.markdown-body dl dd { + padding: 0 1rem; + margin-bottom: 1rem; +} + +.markdown-body table th { + font-weight: 600; +} + +.markdown-body table th, +.markdown-body table td { + padding: 6px 13px; + border: 1px solid #d1d9e0; +} + +.markdown-body table td>:last-child { + margin-bottom: 0; +} + +.markdown-body table tr { + background-color: #ffffff; + border-top: 1px solid #d1d9e0b3; +} + +.markdown-body table tr:nth-child(2n) { + background-color: #f6f8fa; +} + +.markdown-body table img { + background-color: rgba(0,0,0,0); +} + +.markdown-body img[align=right] { + padding-left: 20px; +} + +.markdown-body img[align=left] { + padding-right: 20px; +} + +.markdown-body .emoji { + max-width: none; + vertical-align: text-top; + background-color: rgba(0,0,0,0); +} + +.markdown-body span.frame { + display: block; + overflow: hidden; +} + +.markdown-body span.frame>span { + display: block; + float: left; + width: auto; + padding: 7px; + margin: 13px 0 0; + overflow: hidden; + border: 1px solid #d1d9e0; +} + +.markdown-body span.frame span img { + display: block; + float: left; +} + +.markdown-body span.frame span span { + display: block; + padding: 5px 0 0; + clear: both; + color: #1f2328; +} + +.markdown-body span.align-center { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-center>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: center; +} + +.markdown-body span.align-center span img { + margin: 0 auto; + text-align: center; +} + +.markdown-body span.align-right { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-right>span { + display: block; + margin: 13px 0 0; + overflow: hidden; + text-align: right; +} + +.markdown-body span.align-right span img { + margin: 0; + text-align: right; +} + +.markdown-body span.float-left { + display: block; + float: left; + margin-right: 13px; + overflow: hidden; +} + +.markdown-body span.float-left span { + margin: 13px 0 0; +} + +.markdown-body span.float-right { + display: block; + float: right; + margin-left: 13px; + overflow: hidden; +} + +.markdown-body span.float-right>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: right; +} + +.markdown-body code, +.markdown-body tt { + padding: .2em .4em; + margin: 0; + font-size: 85%; + white-space: break-spaces; + background-color: #818b981f; + border-radius: 6px; +} + +.markdown-body code br, +.markdown-body tt br { + display: none; +} + +.markdown-body del code { + text-decoration: inherit; +} + +.markdown-body samp { + font-size: 85%; +} + +.markdown-body pre code { + font-size: 100%; +} + +.markdown-body pre>code { + padding: 0; + margin: 0; + word-break: normal; + white-space: pre; + background: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .highlight { + margin-bottom: 1rem; +} + +.markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.markdown-body .highlight pre, +.markdown-body pre { + padding: 1rem; + overflow: auto; + font-size: 85%; + line-height: 1.45; + color: #1f2328; + background-color: #f6f8fa; + border-radius: 6px; +} + +.markdown-body pre code, +.markdown-body pre tt { + display: inline; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .csv-data td, +.markdown-body .csv-data th { + padding: 5px; + overflow: hidden; + font-size: 12px; + line-height: 1; + text-align: left; + white-space: nowrap; +} + +.markdown-body .csv-data .blob-num { + padding: 10px 0.5rem 9px; + text-align: right; + background: #ffffff; + border: 0; +} + +.markdown-body .csv-data tr { + border-top: 0; +} + +.markdown-body .csv-data th { + font-weight: 600; + background: #f6f8fa; + border-top: 0; +} + +.markdown-body [data-footnote-ref]::before { + content: "["; +} + +.markdown-body [data-footnote-ref]::after { + content: "]"; +} + +.markdown-body .footnotes { + font-size: 12px; + color: #59636e; + border-top: 1px solid #d1d9e0; +} + +.markdown-body .footnotes ol { + padding-left: 1rem; +} + +.markdown-body .footnotes ol ul { + display: inline-block; + padding-left: 1rem; + margin-top: 1rem; +} + +.markdown-body .footnotes li { + position: relative; +} + +.markdown-body .footnotes li:target::before { + position: absolute; + top: calc(0.5rem*-1); + right: calc(0.5rem*-1); + bottom: calc(0.5rem*-1); + left: calc(1.5rem*-1); + pointer-events: none; + content: ""; + border: 2px solid #0969da; + border-radius: 6px; +} + +.markdown-body .footnotes li:target { + color: #1f2328; +} + +.markdown-body .footnotes .data-footnote-backref g-emoji { + font-family: monospace; +} + +.markdown-body .pl-c { + color: #59636e; +} + +.markdown-body .pl-c1, +.markdown-body .pl-s .pl-v { + color: #0550ae; +} + +.markdown-body .pl-e, +.markdown-body .pl-en { + color: #6639ba; +} + +.markdown-body .pl-smi, +.markdown-body .pl-s .pl-s1 { + color: #1f2328; +} + +.markdown-body .pl-ent { + color: #0550ae; +} + +.markdown-body .pl-k { + color: #bc4c00; +} + +.markdown-body .pl-s, +.markdown-body .pl-pds, +.markdown-body .pl-s .pl-pse .pl-s1, +.markdown-body .pl-sr, +.markdown-body .pl-sr .pl-cce, +.markdown-body .pl-sr .pl-sre, +.markdown-body .pl-sr .pl-sra { + color: #0a3069; +} + +.markdown-body .pl-v, +.markdown-body .pl-smw { + color: #953800; +} + +.markdown-body .pl-bu { + color: #762c00; +} + +.markdown-body .pl-ii { + color: var(--fgColor-danger); + background-color: var(--bgColor-danger-muted); +} + +.markdown-body .pl-c2 { + color: #f6f8fa; + background-color: #bc4c00; +} + +.markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: #0550ae; +} + +.markdown-body .pl-ml { + color: #3b2300; +} + +.markdown-body .pl-mh, +.markdown-body .pl-mh .pl-en, +.markdown-body .pl-ms { + font-weight: bold; + color: #0550ae; +} + +.markdown-body .pl-mi { + font-style: italic; + color: #1f2328; +} + +.markdown-body .pl-mb { + font-weight: bold; + color: #1f2328; +} + +.markdown-body .pl-md { + color: #762c00; + background-color: #fff1e5; +} + +.markdown-body .pl-mi1 { + color: #0550ae; + background-color: #ddf4ff; +} + +.markdown-body .pl-mc { + color: #953800; + background-color: #ffd8b5; +} + +.markdown-body .pl-mi2 { + color: #d1d9e0; + background-color: #0550ae; +} + +.markdown-body .pl-mdr { + font-weight: bold; + color: #8250df; +} + +.markdown-body .pl-ba { + color: #59636e; +} + +.markdown-body .pl-sg { + color: #818b98; +} + +.markdown-body .pl-corl { + text-decoration: underline; + color: #0a3069; +} + +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body [role=tabpanel][tabindex="0"]:focus:not(:focus-visible), +.markdown-body button:focus:not(:focus-visible), +.markdown-body summary:focus:not(:focus-visible), +.markdown-body a:focus:not(:focus-visible) { + outline: none; + box-shadow: none; +} + +.markdown-body [tabindex="0"]:focus:not(:focus-visible), +.markdown-body details-dialog:focus:not(:focus-visible) { + outline: none; +} + +.markdown-body g-emoji { + display: inline-block; + min-width: 1ch; + font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; + font-size: 1em; + font-style: normal !important; + font-weight: 400; + line-height: 1; + vertical-align: -0.075em; +} + +.markdown-body g-emoji img { + width: 1em; + height: 1em; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote) { + display: block; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):not(:has(.snippet-clipboard-content,>pre)) { + width: fit-content; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):has(.snippet-clipboard-content,>pre):focus-visible { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: 2px; +} + +.markdown-body .task-list-item { + list-style-type: none; +} + +.markdown-body .task-list-item label { + font-weight: 400; +} + +.markdown-body .task-list-item.enabled label { + cursor: pointer; +} + +.markdown-body .task-list-item+.task-list-item { + margin-top: 0.25rem; +} + +.markdown-body .task-list-item .handle { + display: none; +} + +.markdown-body .task-list-item-checkbox { + margin: 0 .2em .25em -1.4em; + vertical-align: middle; +} + +.markdown-body ul:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body ol:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body .contains-task-list:hover .task-list-item-convert-container, +.markdown-body .contains-task-list:focus-within .task-list-item-convert-container { + display: block; + width: auto; + height: 24px; + overflow: visible; + clip-path: none; +} + +.markdown-body ::-webkit-calendar-picker-indicator { + filter: invert(50%); +} + +.markdown-body .markdown-alert { + padding: 0.5rem 1rem; + margin-bottom: 1rem; + color: inherit; + border-left: .25em solid #d1d9e0; +} + +.markdown-body .markdown-alert>:first-child { + margin-top: 0; +} + +.markdown-body .markdown-alert>:last-child { + margin-bottom: 0; +} + +.markdown-body .markdown-alert .markdown-alert-title { + display: flex; + font-weight: 500; + align-items: center; + line-height: 1; +} + +.markdown-body .markdown-alert.markdown-alert-note { + border-left-color: #0969da; +} + +.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title { + color: #0969da; +} + +.markdown-body .markdown-alert.markdown-alert-important { + border-left-color: #8250df; +} + +.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title { + color: #8250df; +} + +.markdown-body .markdown-alert.markdown-alert-warning { + border-left-color: #9a6700; +} + +.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title { + color: #9a6700; +} + +.markdown-body .markdown-alert.markdown-alert-tip { + border-left-color: #0969da; +} + +.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title { + color: #0969da; +} + +.markdown-body .markdown-alert.markdown-alert-caution { + border-left-color: #bc4c00; +} + +.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title { + color: #bc4c00; +} + +.markdown-body>*:first-child>.heading-element:first-child { + margin-top: 0 !important; +} + +.markdown-body .highlight pre:has(+.zeroclipboard-container) { + min-height: 52px; +} + diff --git a/public/themes/claude/github-markdown-css/github-markdown-light.css b/public/themes/claude/github-markdown-css/github-markdown-light.css new file mode 100644 index 00000000000..35b318e56cf --- /dev/null +++ b/public/themes/claude/github-markdown-css/github-markdown-light.css @@ -0,0 +1,1124 @@ +/*light */ +.markdown-body { + color-scheme: light; + /** CSS default easing. Use for hover state changes and micro-interactions. */ + /** Accelerating motion. Use for elements exiting the viewport (moving off-screen). */ + /** Smooth acceleration and deceleration. Use for elements moving or morphing within the viewport. */ + /** Decelerating motion. Use for elements entering the viewport or appearing on screen. */ + /** Constant motion with no acceleration. Use for continuous animations like progress bars or loaders. */ + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + margin: 0; + font-weight: 400; + color: #1f2328; + background-color: #ffffff; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +.markdown-body a { + text-decoration: underline; + text-underline-offset: .2rem; +} + +.markdown-body .octicon { + display: inline-block; + fill: currentColor; + vertical-align: text-bottom; +} + +.markdown-body h1:hover .anchor .octicon-link:before, +.markdown-body h2:hover .anchor .octicon-link:before, +.markdown-body h3:hover .anchor .octicon-link:before, +.markdown-body h4:hover .anchor .octicon-link:before, +.markdown-body h5:hover .anchor .octicon-link:before, +.markdown-body h6:hover .anchor .octicon-link:before { + width: 16px; + height: 16px; + content: ' '; + display: inline-block; + background-color: currentColor; + -webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); + mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); +} + +.markdown-body details, +.markdown-body figcaption, +.markdown-body figure { + display: block; +} + +.markdown-body summary { + display: list-item; +} + +.markdown-body [hidden] { + display: none !important; +} + +.markdown-body a { + background-color: rgba(0,0,0,0); + color: #0969da; + text-decoration: none; +} + +.markdown-body abbr[title] { + border-bottom: none; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +.markdown-body b, +.markdown-body strong { + font-weight: 600; +} + +.markdown-body dfn { + font-style: italic; +} + +.markdown-body h1 { + margin: .67em 0; + font-weight: 600; + padding-bottom: .3em; + font-size: 2em; + border-bottom: 1px solid #d1d9e0b3; +} + +.markdown-body mark { + background-color: #fff8c5; + color: #1f2328; +} + +.markdown-body small { + font-size: 90%; +} + +.markdown-body sub, +.markdown-body sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.markdown-body sub { + bottom: -0.25em; +} + +.markdown-body sup { + top: -0.5em; +} + +.markdown-body img { + border-style: none; + max-width: 100%; + box-sizing: content-box; +} + +.markdown-body code, +.markdown-body kbd, +.markdown-body pre, +.markdown-body samp { + font-family: monospace; + font-size: 1em; +} + +.markdown-body figure { + margin: 1em 2.5rem; +} + +.markdown-body hr { + box-sizing: content-box; + overflow: hidden; + background: rgba(0,0,0,0); + border-bottom: 1px solid #d1d9e0b3; + height: .25em; + padding: 0; + margin: 1.5rem 0; + background-color: #d1d9e0; + border: 0; +} + +.markdown-body input { + font: inherit; + margin: 0; + overflow: visible; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +.markdown-body [type=button], +.markdown-body [type=reset], +.markdown-body [type=submit] { + -webkit-appearance: button; + appearance: button; +} + +.markdown-body [type=checkbox], +.markdown-body [type=radio] { + box-sizing: border-box; + padding: 0; +} + +.markdown-body [type=number]::-webkit-inner-spin-button, +.markdown-body [type=number]::-webkit-outer-spin-button { + height: auto; +} + +.markdown-body [type=search]::-webkit-search-cancel-button, +.markdown-body [type=search]::-webkit-search-decoration { + -webkit-appearance: none; + appearance: none; +} + +.markdown-body ::-webkit-input-placeholder { + color: inherit; + opacity: .54; +} + +.markdown-body ::-webkit-file-upload-button { + -webkit-appearance: button; + appearance: button; + font: inherit; +} + +.markdown-body a:hover { + text-decoration: underline; +} + +.markdown-body ::placeholder { + color: #59636e; + opacity: 1; +} + +.markdown-body hr::before { + display: table; + content: ""; +} + +.markdown-body hr::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body table { + border-spacing: 0; + border-collapse: collapse; + display: block; + width: max-content; + max-width: 100%; + overflow: auto; + font-variant: tabular-nums; +} + +.markdown-body td, +.markdown-body th { + padding: 0; +} + +.markdown-body details summary { + cursor: pointer; +} + +.markdown-body a:focus, +.markdown-body [role=button]:focus, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=checkbox]:focus { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:focus:not(:focus-visible), +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body input[type=radio]:focus:not(:focus-visible), +.markdown-body input[type=checkbox]:focus:not(:focus-visible) { + outline: solid 1px rgba(0,0,0,0); +} + +.markdown-body a:focus-visible, +.markdown-body [role=button]:focus-visible, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus-visible { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:not([class]):focus, +.markdown-body a:not([class]):focus-visible, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus, +.markdown-body input[type=checkbox]:focus-visible { + outline-offset: 0; +} + +.markdown-body kbd { + display: inline-block; + padding: 0.25rem; + font: 11px ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + line-height: 10px; + color: #1f2328; + vertical-align: middle; + background-color: #f6f8fa; + border: solid 1px var(--borderColor-muted); + border-bottom-color: var(--borderColor-muted); + border-radius: 6px; + box-shadow: inset 0 -1px 0 var(--borderColor-muted); +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: 1.5rem; + margin-bottom: 1rem; + font-weight: 600; + line-height: 1.25; +} + +.markdown-body h2 { + font-weight: 600; + padding-bottom: .3em; + font-size: 1.5em; + border-bottom: 1px solid #d1d9e0b3; +} + +.markdown-body h3 { + font-weight: 600; + font-size: 1.25em; +} + +.markdown-body h4 { + font-weight: 600; + font-size: 1em; +} + +.markdown-body h5 { + font-weight: 600; + font-size: .875em; +} + +.markdown-body h6 { + font-weight: 600; + font-size: .85em; + color: #59636e; +} + +.markdown-body p { + margin-top: 0; + margin-bottom: 10px; +} + +.markdown-body blockquote { + margin: 0; + padding: 0 1em; + color: #59636e; + border-left: .25em solid #d1d9e0; +} + +.markdown-body ul, +.markdown-body ol { + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} + +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} + +.markdown-body ul ul ol, +.markdown-body ul ol ol, +.markdown-body ol ul ol, +.markdown-body ol ol ol { + list-style-type: lower-alpha; +} + +.markdown-body dd { + margin-left: 0; +} + +.markdown-body tt, +.markdown-body code, +.markdown-body samp { + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + font-size: 12px; +} + +.markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + font-size: 12px; + word-wrap: normal; +} + +.markdown-body .octicon { + display: inline-block; + overflow: visible !important; + vertical-align: text-bottom; + fill: currentColor; +} + +.markdown-body input::-webkit-outer-spin-button, +.markdown-body input::-webkit-inner-spin-button { + margin: 0; + appearance: none; +} + +.markdown-body .mr-2 { + margin-right: 0.5rem !important; +} + +.markdown-body::before { + display: table; + content: ""; +} + +.markdown-body::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body>*:first-child { + margin-top: 0 !important; +} + +.markdown-body>*:last-child { + margin-bottom: 0 !important; +} + +.markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-body .absent { + color: #d1242f; +} + +.markdown-body .anchor { + float: left; + padding-right: 0.25rem; + margin-left: -20px; + line-height: 1; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body p, +.markdown-body blockquote, +.markdown-body ul, +.markdown-body ol, +.markdown-body dl, +.markdown-body table, +.markdown-body pre, +.markdown-body details { + margin-top: 0; + margin-bottom: 1rem; +} + +.markdown-body blockquote>:first-child { + margin-top: 0; +} + +.markdown-body blockquote>:last-child { + margin-bottom: 0; +} + +.markdown-body h1 .octicon-link, +.markdown-body h2 .octicon-link, +.markdown-body h3 .octicon-link, +.markdown-body h4 .octicon-link, +.markdown-body h5 .octicon-link, +.markdown-body h6 .octicon-link { + color: #1f2328; + vertical-align: middle; + visibility: hidden; +} + +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1:hover .anchor .octicon-link, +.markdown-body h2:hover .anchor .octicon-link, +.markdown-body h3:hover .anchor .octicon-link, +.markdown-body h4:hover .anchor .octicon-link, +.markdown-body h5:hover .anchor .octicon-link, +.markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.markdown-body h1 tt, +.markdown-body h1 code, +.markdown-body h2 tt, +.markdown-body h2 code, +.markdown-body h3 tt, +.markdown-body h3 code, +.markdown-body h4 tt, +.markdown-body h4 code, +.markdown-body h5 tt, +.markdown-body h5 code, +.markdown-body h6 tt, +.markdown-body h6 code { + padding: 0 .2em; + font-size: inherit; +} + +.markdown-body summary h1, +.markdown-body summary h2, +.markdown-body summary h3, +.markdown-body summary h4, +.markdown-body summary h5, +.markdown-body summary h6 { + display: inline-block; +} + +.markdown-body summary h1 .anchor, +.markdown-body summary h2 .anchor, +.markdown-body summary h3 .anchor, +.markdown-body summary h4 .anchor, +.markdown-body summary h5 .anchor, +.markdown-body summary h6 .anchor { + margin-left: -40px; +} + +.markdown-body summary h1, +.markdown-body summary h2 { + padding-bottom: 0; + border-bottom: 0; +} + +.markdown-body ul.no-list, +.markdown-body ol.no-list { + padding: 0; + list-style-type: none; +} + +.markdown-body ol[type="a s"] { + list-style-type: lower-alpha; +} + +.markdown-body ol[type="A s"] { + list-style-type: upper-alpha; +} + +.markdown-body ol[type="i s"] { + list-style-type: lower-roman; +} + +.markdown-body ol[type="I s"] { + list-style-type: upper-roman; +} + +.markdown-body ol[type="1"] { + list-style-type: decimal; +} + +.markdown-body div>ol:not([type]) { + list-style-type: decimal; +} + +.markdown-body ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body li>p { + margin-top: 1rem; +} + +.markdown-body li+li { + margin-top: .25em; +} + +.markdown-body dl { + padding: 0; +} + +.markdown-body dl dt { + padding: 0; + margin-top: 1rem; + font-size: 1em; + font-style: italic; + font-weight: 600; +} + +.markdown-body dl dd { + padding: 0 1rem; + margin-bottom: 1rem; +} + +.markdown-body table th { + font-weight: 600; +} + +.markdown-body table th, +.markdown-body table td { + padding: 6px 13px; + border: 1px solid #d1d9e0; +} + +.markdown-body table td>:last-child { + margin-bottom: 0; +} + +.markdown-body table tr { + background-color: #ffffff; + border-top: 1px solid #d1d9e0b3; +} + +.markdown-body table tr:nth-child(2n) { + background-color: #f6f8fa; +} + +.markdown-body table img { + background-color: rgba(0,0,0,0); +} + +.markdown-body img[align=right] { + padding-left: 20px; +} + +.markdown-body img[align=left] { + padding-right: 20px; +} + +.markdown-body .emoji { + max-width: none; + vertical-align: text-top; + background-color: rgba(0,0,0,0); +} + +.markdown-body span.frame { + display: block; + overflow: hidden; +} + +.markdown-body span.frame>span { + display: block; + float: left; + width: auto; + padding: 7px; + margin: 13px 0 0; + overflow: hidden; + border: 1px solid #d1d9e0; +} + +.markdown-body span.frame span img { + display: block; + float: left; +} + +.markdown-body span.frame span span { + display: block; + padding: 5px 0 0; + clear: both; + color: #1f2328; +} + +.markdown-body span.align-center { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-center>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: center; +} + +.markdown-body span.align-center span img { + margin: 0 auto; + text-align: center; +} + +.markdown-body span.align-right { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-right>span { + display: block; + margin: 13px 0 0; + overflow: hidden; + text-align: right; +} + +.markdown-body span.align-right span img { + margin: 0; + text-align: right; +} + +.markdown-body span.float-left { + display: block; + float: left; + margin-right: 13px; + overflow: hidden; +} + +.markdown-body span.float-left span { + margin: 13px 0 0; +} + +.markdown-body span.float-right { + display: block; + float: right; + margin-left: 13px; + overflow: hidden; +} + +.markdown-body span.float-right>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: right; +} + +.markdown-body code, +.markdown-body tt { + padding: .2em .4em; + margin: 0; + font-size: 85%; + white-space: break-spaces; + background-color: #818b981f; + border-radius: 6px; +} + +.markdown-body code br, +.markdown-body tt br { + display: none; +} + +.markdown-body del code { + text-decoration: inherit; +} + +.markdown-body samp { + font-size: 85%; +} + +.markdown-body pre code { + font-size: 100%; +} + +.markdown-body pre>code { + padding: 0; + margin: 0; + word-break: normal; + white-space: pre; + background: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .highlight { + margin-bottom: 1rem; +} + +.markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.markdown-body .highlight pre, +.markdown-body pre { + padding: 1rem; + overflow: auto; + font-size: 85%; + line-height: 1.45; + color: #1f2328; + background-color: #f6f8fa; + border-radius: 6px; +} + +.markdown-body pre code, +.markdown-body pre tt { + display: inline; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .csv-data td, +.markdown-body .csv-data th { + padding: 5px; + overflow: hidden; + font-size: 12px; + line-height: 1; + text-align: left; + white-space: nowrap; +} + +.markdown-body .csv-data .blob-num { + padding: 10px 0.5rem 9px; + text-align: right; + background: #ffffff; + border: 0; +} + +.markdown-body .csv-data tr { + border-top: 0; +} + +.markdown-body .csv-data th { + font-weight: 600; + background: #f6f8fa; + border-top: 0; +} + +.markdown-body [data-footnote-ref]::before { + content: "["; +} + +.markdown-body [data-footnote-ref]::after { + content: "]"; +} + +.markdown-body .footnotes { + font-size: 12px; + color: #59636e; + border-top: 1px solid #d1d9e0; +} + +.markdown-body .footnotes ol { + padding-left: 1rem; +} + +.markdown-body .footnotes ol ul { + display: inline-block; + padding-left: 1rem; + margin-top: 1rem; +} + +.markdown-body .footnotes li { + position: relative; +} + +.markdown-body .footnotes li:target::before { + position: absolute; + top: calc(0.5rem*-1); + right: calc(0.5rem*-1); + bottom: calc(0.5rem*-1); + left: calc(1.5rem*-1); + pointer-events: none; + content: ""; + border: 2px solid #0969da; + border-radius: 6px; +} + +.markdown-body .footnotes li:target { + color: #1f2328; +} + +.markdown-body .footnotes .data-footnote-backref g-emoji { + font-family: monospace; +} + +.markdown-body .pl-c { + color: #59636e; +} + +.markdown-body .pl-c1, +.markdown-body .pl-s .pl-v { + color: #0550ae; +} + +.markdown-body .pl-e, +.markdown-body .pl-en { + color: #6639ba; +} + +.markdown-body .pl-smi, +.markdown-body .pl-s .pl-s1 { + color: #1f2328; +} + +.markdown-body .pl-ent { + color: #0550ae; +} + +.markdown-body .pl-k { + color: #cf222e; +} + +.markdown-body .pl-s, +.markdown-body .pl-pds, +.markdown-body .pl-s .pl-pse .pl-s1, +.markdown-body .pl-sr, +.markdown-body .pl-sr .pl-cce, +.markdown-body .pl-sr .pl-sre, +.markdown-body .pl-sr .pl-sra { + color: #0a3069; +} + +.markdown-body .pl-v, +.markdown-body .pl-smw { + color: #953800; +} + +.markdown-body .pl-bu { + color: #82071e; +} + +.markdown-body .pl-ii { + color: var(--fgColor-danger); + background-color: var(--bgColor-danger-muted); +} + +.markdown-body .pl-c2 { + color: #f6f8fa; + background-color: #cf222e; +} + +.markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: #116329; +} + +.markdown-body .pl-ml { + color: #3b2300; +} + +.markdown-body .pl-mh, +.markdown-body .pl-mh .pl-en, +.markdown-body .pl-ms { + font-weight: bold; + color: #0550ae; +} + +.markdown-body .pl-mi { + font-style: italic; + color: #1f2328; +} + +.markdown-body .pl-mb { + font-weight: bold; + color: #1f2328; +} + +.markdown-body .pl-md { + color: #82071e; + background-color: #ffebe9; +} + +.markdown-body .pl-mi1 { + color: #116329; + background-color: #dafbe1; +} + +.markdown-body .pl-mc { + color: #953800; + background-color: #ffd8b5; +} + +.markdown-body .pl-mi2 { + color: #d1d9e0; + background-color: #0550ae; +} + +.markdown-body .pl-mdr { + font-weight: bold; + color: #8250df; +} + +.markdown-body .pl-ba { + color: #59636e; +} + +.markdown-body .pl-sg { + color: #818b98; +} + +.markdown-body .pl-corl { + text-decoration: underline; + color: #0a3069; +} + +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body [role=tabpanel][tabindex="0"]:focus:not(:focus-visible), +.markdown-body button:focus:not(:focus-visible), +.markdown-body summary:focus:not(:focus-visible), +.markdown-body a:focus:not(:focus-visible) { + outline: none; + box-shadow: none; +} + +.markdown-body [tabindex="0"]:focus:not(:focus-visible), +.markdown-body details-dialog:focus:not(:focus-visible) { + outline: none; +} + +.markdown-body g-emoji { + display: inline-block; + min-width: 1ch; + font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; + font-size: 1em; + font-style: normal !important; + font-weight: 400; + line-height: 1; + vertical-align: -0.075em; +} + +.markdown-body g-emoji img { + width: 1em; + height: 1em; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote) { + display: block; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):not(:has(.snippet-clipboard-content,>pre)) { + width: fit-content; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):has(.snippet-clipboard-content,>pre):focus-visible { + outline: 2px solid var(--borderColor-accent-emphasis); + outline-offset: 2px; +} + +.markdown-body .task-list-item { + list-style-type: none; +} + +.markdown-body .task-list-item label { + font-weight: 400; +} + +.markdown-body .task-list-item.enabled label { + cursor: pointer; +} + +.markdown-body .task-list-item+.task-list-item { + margin-top: 0.25rem; +} + +.markdown-body .task-list-item .handle { + display: none; +} + +.markdown-body .task-list-item-checkbox { + margin: 0 .2em .25em -1.4em; + vertical-align: middle; +} + +.markdown-body ul:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body ol:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body .contains-task-list:hover .task-list-item-convert-container, +.markdown-body .contains-task-list:focus-within .task-list-item-convert-container { + display: block; + width: auto; + height: 24px; + overflow: visible; + clip-path: none; +} + +.markdown-body ::-webkit-calendar-picker-indicator { + filter: invert(50%); +} + +.markdown-body .markdown-alert { + padding: 0.5rem 1rem; + margin-bottom: 1rem; + color: inherit; + border-left: .25em solid #d1d9e0; +} + +.markdown-body .markdown-alert>:first-child { + margin-top: 0; +} + +.markdown-body .markdown-alert>:last-child { + margin-bottom: 0; +} + +.markdown-body .markdown-alert .markdown-alert-title { + display: flex; + font-weight: 500; + align-items: center; + line-height: 1; +} + +.markdown-body .markdown-alert.markdown-alert-note { + border-left-color: #0969da; +} + +.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title { + color: #0969da; +} + +.markdown-body .markdown-alert.markdown-alert-important { + border-left-color: #8250df; +} + +.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title { + color: #8250df; +} + +.markdown-body .markdown-alert.markdown-alert-warning { + border-left-color: #9a6700; +} + +.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title { + color: #9a6700; +} + +.markdown-body .markdown-alert.markdown-alert-tip { + border-left-color: #1a7f37; +} + +.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title { + color: #1a7f37; +} + +.markdown-body .markdown-alert.markdown-alert-caution { + border-left-color: #cf222e; +} + +.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title { + color: #d1242f; +} + +.markdown-body>*:first-child>.heading-element:first-child { + margin-top: 0 !important; +} + +.markdown-body .highlight pre:has(+.zeroclipboard-container) { + min-height: 52px; +} + diff --git a/public/themes/claude/github-markdown-css/github-markdown.css b/public/themes/claude/github-markdown-css/github-markdown.css new file mode 100644 index 00000000000..2d308c762a8 --- /dev/null +++ b/public/themes/claude/github-markdown-css/github-markdown.css @@ -0,0 +1,1248 @@ +.markdown-body { + --base-size-16: 1rem; + --base-size-24: 1.5rem; + --base-size-4: 0.25rem; + --base-size-40: 2.5rem; + --base-size-8: 0.5rem; + --base-text-weight-medium: 500; + --base-text-weight-normal: 400; + --base-text-weight-semibold: 600; + --fontStack-monospace: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; + --fontStack-sansSerif: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + --fgColor-accent: Highlight; +} +@media (prefers-color-scheme: dark) { + .markdown-body, [data-theme="dark"] { + /*dark */ + color-scheme: dark; + --fgColor-accent: #4493f8; + --bgColor-attention-muted: #bb800926; + --bgColor-default: #0d1117; + --bgColor-muted: #151b23; + --bgColor-neutral-muted: #656c7633; + --borderColor-accent-emphasis: #1f6feb; + --borderColor-attention-emphasis: #9e6a03; + --borderColor-danger-emphasis: #da3633; + --borderColor-default: #3d444d; + --borderColor-done-emphasis: #8957e5; + --borderColor-success-emphasis: #238636; + --color-prettylights-syntax-brackethighlighter-angle: #9198a1; + --color-prettylights-syntax-brackethighlighter-unmatched: #f85149; + --color-prettylights-syntax-carriage-return-bg: #b62324; + --color-prettylights-syntax-carriage-return-text: #f0f6fc; + --color-prettylights-syntax-comment: #9198a1; + --color-prettylights-syntax-constant: #79c0ff; + --color-prettylights-syntax-constant-other-reference-link: #a5d6ff; + --color-prettylights-syntax-entity: #d2a8ff; + --color-prettylights-syntax-entity-tag: #7ee787; + --color-prettylights-syntax-keyword: #ff7b72; + --color-prettylights-syntax-markup-bold: #f0f6fc; + --color-prettylights-syntax-markup-changed-bg: #5a1e02; + --color-prettylights-syntax-markup-changed-text: #ffdfb6; + --color-prettylights-syntax-markup-deleted-bg: #67060c; + --color-prettylights-syntax-markup-deleted-text: #ffdcd7; + --color-prettylights-syntax-markup-heading: #1f6feb; + --color-prettylights-syntax-markup-ignored-bg: #1158c7; + --color-prettylights-syntax-markup-ignored-text: #f0f6fc; + --color-prettylights-syntax-markup-inserted-bg: #033a16; + --color-prettylights-syntax-markup-inserted-text: #aff5b4; + --color-prettylights-syntax-markup-italic: #f0f6fc; + --color-prettylights-syntax-markup-list: #f2cc60; + --color-prettylights-syntax-meta-diff-range: #d2a8ff; + --color-prettylights-syntax-storage-modifier-import: #f0f6fc; + --color-prettylights-syntax-string: #a5d6ff; + --color-prettylights-syntax-string-regexp: #7ee787; + --color-prettylights-syntax-sublimelinter-gutter-mark: #3d444d; + --color-prettylights-syntax-variable: #ffa657; + --fgColor-attention: #d29922; + --fgColor-danger: #f85149; + --fgColor-default: #f0f6fc; + --fgColor-done: #ab7df8; + --fgColor-muted: #9198a1; + --fgColor-success: #3fb950; + --borderColor-muted: #3d444db3; + --color-prettylights-syntax-invalid-illegal-bg: var(--bgColor-danger-muted); + --color-prettylights-syntax-invalid-illegal-text: var(--fgColor-danger); + --focus-outlineColor: var(--borderColor-accent-emphasis); + --borderColor-neutral-muted: var(--borderColor-muted); + } +} +@media (prefers-color-scheme: light) { + .markdown-body, [data-theme="light"] { + /*light */ + color-scheme: light; + --fgColor-danger: #d1242f; + --bgColor-attention-muted: #fff8c5; + --bgColor-muted: #f6f8fa; + --bgColor-neutral-muted: #818b981f; + --borderColor-accent-emphasis: #0969da; + --borderColor-attention-emphasis: #9a6700; + --borderColor-danger-emphasis: #cf222e; + --borderColor-default: #d1d9e0; + --borderColor-done-emphasis: #8250df; + --borderColor-success-emphasis: #1a7f37; + --color-prettylights-syntax-brackethighlighter-angle: #59636e; + --color-prettylights-syntax-brackethighlighter-unmatched: #82071e; + --color-prettylights-syntax-carriage-return-bg: #cf222e; + --color-prettylights-syntax-carriage-return-text: #f6f8fa; + --color-prettylights-syntax-comment: #59636e; + --color-prettylights-syntax-constant: #0550ae; + --color-prettylights-syntax-constant-other-reference-link: #0a3069; + --color-prettylights-syntax-entity: #6639ba; + --color-prettylights-syntax-entity-tag: #0550ae; + --color-prettylights-syntax-invalid-illegal-text: var(--fgColor-danger); + --color-prettylights-syntax-keyword: #cf222e; + --color-prettylights-syntax-markup-changed-bg: #ffd8b5; + --color-prettylights-syntax-markup-changed-text: #953800; + --color-prettylights-syntax-markup-deleted-bg: #ffebe9; + --color-prettylights-syntax-markup-deleted-text: #82071e; + --color-prettylights-syntax-markup-heading: #0550ae; + --color-prettylights-syntax-markup-ignored-bg: #0550ae; + --color-prettylights-syntax-markup-ignored-text: #d1d9e0; + --color-prettylights-syntax-markup-inserted-bg: #dafbe1; + --color-prettylights-syntax-markup-inserted-text: #116329; + --color-prettylights-syntax-markup-list: #3b2300; + --color-prettylights-syntax-meta-diff-range: #8250df; + --color-prettylights-syntax-string: #0a3069; + --color-prettylights-syntax-string-regexp: #116329; + --color-prettylights-syntax-sublimelinter-gutter-mark: #818b98; + --color-prettylights-syntax-variable: #953800; + --fgColor-accent: #0969da; + --fgColor-attention: #9a6700; + --fgColor-done: #8250df; + --fgColor-muted: #59636e; + --fgColor-success: #1a7f37; + --bgColor-default: #ffffff; + --borderColor-muted: #d1d9e0b3; + --color-prettylights-syntax-invalid-illegal-bg: var(--bgColor-danger-muted); + --color-prettylights-syntax-markup-bold: #1f2328; + --color-prettylights-syntax-markup-italic: #1f2328; + --color-prettylights-syntax-storage-modifier-import: #1f2328; + --fgColor-default: #1f2328; + --focus-outlineColor: var(--borderColor-accent-emphasis); + --borderColor-neutral-muted: var(--borderColor-muted); + } +} + +.markdown-body { + /** CSS default easing. Use for hover state changes and micro-interactions. */ + /** Accelerating motion. Use for elements exiting the viewport (moving off-screen). */ + /** Smooth acceleration and deceleration. Use for elements moving or morphing within the viewport. */ + /** Decelerating motion. Use for elements entering the viewport or appearing on screen. */ + /** Constant motion with no acceleration. Use for continuous animations like progress bars or loaders. */ + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + margin: 0; + font-weight: var(--base-text-weight-normal, 400); + color: var(--fgColor-default); + background-color: var(--bgColor-default); + font-family: var(--fontStack-sansSerif, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"); + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +.markdown-body a { + text-decoration: underline; + text-underline-offset: .2rem; +} + +.markdown-body .octicon { + display: inline-block; + fill: currentColor; + vertical-align: text-bottom; +} + +.markdown-body h1:hover .anchor .octicon-link:before, +.markdown-body h2:hover .anchor .octicon-link:before, +.markdown-body h3:hover .anchor .octicon-link:before, +.markdown-body h4:hover .anchor .octicon-link:before, +.markdown-body h5:hover .anchor .octicon-link:before, +.markdown-body h6:hover .anchor .octicon-link:before { + width: 16px; + height: 16px; + content: ' '; + display: inline-block; + background-color: currentColor; + -webkit-mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); + mask-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' version='1.1' aria-hidden='true'><path fill-rule='evenodd' d='M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'></path></svg>"); +} + +.markdown-body details, +.markdown-body figcaption, +.markdown-body figure { + display: block; +} + +.markdown-body summary { + display: list-item; +} + +.markdown-body [hidden] { + display: none !important; +} + +.markdown-body a { + background-color: rgba(0,0,0,0); + color: var(--fgColor-accent); + text-decoration: none; +} + +.markdown-body abbr[title] { + border-bottom: none; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +.markdown-body b, +.markdown-body strong { + font-weight: var(--base-text-weight-semibold, 600); +} + +.markdown-body dfn { + font-style: italic; +} + +.markdown-body h1 { + margin: .67em 0; + font-weight: var(--base-text-weight-semibold, 600); + padding-bottom: .3em; + font-size: 2em; + border-bottom: 1px solid var(--borderColor-muted); +} + +.markdown-body mark { + background-color: var(--bgColor-attention-muted); + color: var(--fgColor-default); +} + +.markdown-body small { + font-size: 90%; +} + +.markdown-body sub, +.markdown-body sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.markdown-body sub { + bottom: -0.25em; +} + +.markdown-body sup { + top: -0.5em; +} + +.markdown-body img { + border-style: none; + max-width: 100%; + box-sizing: content-box; +} + +.markdown-body code, +.markdown-body kbd, +.markdown-body pre, +.markdown-body samp { + font-family: monospace; + font-size: 1em; +} + +.markdown-body figure { + margin: 1em var(--base-size-40); +} + +.markdown-body hr { + box-sizing: content-box; + overflow: hidden; + background: rgba(0,0,0,0); + border-bottom: 1px solid var(--borderColor-muted); + height: .25em; + padding: 0; + margin: var(--base-size-24) 0; + background-color: var(--borderColor-default); + border: 0; +} + +.markdown-body input { + font: inherit; + margin: 0; + overflow: visible; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +.markdown-body [type=button], +.markdown-body [type=reset], +.markdown-body [type=submit] { + -webkit-appearance: button; + appearance: button; +} + +.markdown-body [type=checkbox], +.markdown-body [type=radio] { + box-sizing: border-box; + padding: 0; +} + +.markdown-body [type=number]::-webkit-inner-spin-button, +.markdown-body [type=number]::-webkit-outer-spin-button { + height: auto; +} + +.markdown-body [type=search]::-webkit-search-cancel-button, +.markdown-body [type=search]::-webkit-search-decoration { + -webkit-appearance: none; + appearance: none; +} + +.markdown-body ::-webkit-input-placeholder { + color: inherit; + opacity: .54; +} + +.markdown-body ::-webkit-file-upload-button { + -webkit-appearance: button; + appearance: button; + font: inherit; +} + +.markdown-body a:hover { + text-decoration: underline; +} + +.markdown-body ::placeholder { + color: var(--fgColor-muted); + opacity: 1; +} + +.markdown-body hr::before { + display: table; + content: ""; +} + +.markdown-body hr::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body table { + border-spacing: 0; + border-collapse: collapse; + display: block; + width: max-content; + max-width: 100%; + overflow: auto; + font-variant: tabular-nums; +} + +.markdown-body td, +.markdown-body th { + padding: 0; +} + +.markdown-body details summary { + cursor: pointer; +} + +.markdown-body a:focus, +.markdown-body [role=button]:focus, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=checkbox]:focus { + outline: 2px solid var(--focus-outlineColor); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:focus:not(:focus-visible), +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body input[type=radio]:focus:not(:focus-visible), +.markdown-body input[type=checkbox]:focus:not(:focus-visible) { + outline: solid 1px rgba(0,0,0,0); +} + +.markdown-body a:focus-visible, +.markdown-body [role=button]:focus-visible, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus-visible { + outline: 2px solid var(--focus-outlineColor); + outline-offset: -2px; + box-shadow: none; +} + +.markdown-body a:not([class]):focus, +.markdown-body a:not([class]):focus-visible, +.markdown-body input[type=radio]:focus, +.markdown-body input[type=radio]:focus-visible, +.markdown-body input[type=checkbox]:focus, +.markdown-body input[type=checkbox]:focus-visible { + outline-offset: 0; +} + +.markdown-body kbd { + display: inline-block; + padding: var(--base-size-4); + font: 11px var(--fontStack-monospace, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace); + line-height: 10px; + color: var(--fgColor-default); + vertical-align: middle; + background-color: var(--bgColor-muted); + border: solid 1px var(--borderColor-neutral-muted); + border-bottom-color: var(--borderColor-neutral-muted); + border-radius: 6px; + box-shadow: inset 0 -1px 0 var(--borderColor-neutral-muted); +} + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + margin-top: var(--base-size-24); + margin-bottom: var(--base-size-16); + font-weight: var(--base-text-weight-semibold, 600); + line-height: 1.25; +} + +.markdown-body h2 { + font-weight: var(--base-text-weight-semibold, 600); + padding-bottom: .3em; + font-size: 1.5em; + border-bottom: 1px solid var(--borderColor-muted); +} + +.markdown-body h3 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: 1.25em; +} + +.markdown-body h4 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: 1em; +} + +.markdown-body h5 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: .875em; +} + +.markdown-body h6 { + font-weight: var(--base-text-weight-semibold, 600); + font-size: .85em; + color: var(--fgColor-muted); +} + +.markdown-body p { + margin-top: 0; + margin-bottom: 10px; +} + +.markdown-body blockquote { + margin: 0; + padding: 0 1em; + color: var(--fgColor-muted); + border-left: .25em solid var(--borderColor-default); +} + +.markdown-body ul, +.markdown-body ol { + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} + +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} + +.markdown-body ul ul ol, +.markdown-body ul ol ol, +.markdown-body ol ul ol, +.markdown-body ol ol ol { + list-style-type: lower-alpha; +} + +.markdown-body dd { + margin-left: 0; +} + +.markdown-body tt, +.markdown-body code, +.markdown-body samp { + font-family: var(--fontStack-monospace, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace); + font-size: 12px; +} + +.markdown-body pre { + margin-top: 0; + margin-bottom: 0; + font-family: var(--fontStack-monospace, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace); + font-size: 12px; + word-wrap: normal; +} + +.markdown-body .octicon { + display: inline-block; + overflow: visible !important; + vertical-align: text-bottom; + fill: currentColor; +} + +.markdown-body input::-webkit-outer-spin-button, +.markdown-body input::-webkit-inner-spin-button { + margin: 0; + appearance: none; +} + +.markdown-body .mr-2 { + margin-right: var(--base-size-8, 8px) !important; +} + +.markdown-body::before { + display: table; + content: ""; +} + +.markdown-body::after { + display: table; + clear: both; + content: ""; +} + +.markdown-body>*:first-child { + margin-top: 0 !important; +} + +.markdown-body>*:last-child { + margin-bottom: 0 !important; +} + +.markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-body .absent { + color: var(--fgColor-danger); +} + +.markdown-body .anchor { + float: left; + padding-right: var(--base-size-4); + margin-left: -20px; + line-height: 1; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body p, +.markdown-body blockquote, +.markdown-body ul, +.markdown-body ol, +.markdown-body dl, +.markdown-body table, +.markdown-body pre, +.markdown-body details { + margin-top: 0; + margin-bottom: var(--base-size-16); +} + +.markdown-body blockquote>:first-child { + margin-top: 0; +} + +.markdown-body blockquote>:last-child { + margin-bottom: 0; +} + +.markdown-body h1 .octicon-link, +.markdown-body h2 .octicon-link, +.markdown-body h3 .octicon-link, +.markdown-body h4 .octicon-link, +.markdown-body h5 .octicon-link, +.markdown-body h6 .octicon-link { + color: var(--fgColor-default); + vertical-align: middle; + visibility: hidden; +} + +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1:hover .anchor .octicon-link, +.markdown-body h2:hover .anchor .octicon-link, +.markdown-body h3:hover .anchor .octicon-link, +.markdown-body h4:hover .anchor .octicon-link, +.markdown-body h5:hover .anchor .octicon-link, +.markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.markdown-body h1 tt, +.markdown-body h1 code, +.markdown-body h2 tt, +.markdown-body h2 code, +.markdown-body h3 tt, +.markdown-body h3 code, +.markdown-body h4 tt, +.markdown-body h4 code, +.markdown-body h5 tt, +.markdown-body h5 code, +.markdown-body h6 tt, +.markdown-body h6 code { + padding: 0 .2em; + font-size: inherit; +} + +.markdown-body summary h1, +.markdown-body summary h2, +.markdown-body summary h3, +.markdown-body summary h4, +.markdown-body summary h5, +.markdown-body summary h6 { + display: inline-block; +} + +.markdown-body summary h1 .anchor, +.markdown-body summary h2 .anchor, +.markdown-body summary h3 .anchor, +.markdown-body summary h4 .anchor, +.markdown-body summary h5 .anchor, +.markdown-body summary h6 .anchor { + margin-left: -40px; +} + +.markdown-body summary h1, +.markdown-body summary h2 { + padding-bottom: 0; + border-bottom: 0; +} + +.markdown-body ul.no-list, +.markdown-body ol.no-list { + padding: 0; + list-style-type: none; +} + +.markdown-body ol[type="a s"] { + list-style-type: lower-alpha; +} + +.markdown-body ol[type="A s"] { + list-style-type: upper-alpha; +} + +.markdown-body ol[type="i s"] { + list-style-type: lower-roman; +} + +.markdown-body ol[type="I s"] { + list-style-type: upper-roman; +} + +.markdown-body ol[type="1"] { + list-style-type: decimal; +} + +.markdown-body div>ol:not([type]) { + list-style-type: decimal; +} + +.markdown-body ul ul, +.markdown-body ul ol, +.markdown-body ol ol, +.markdown-body ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body li>p { + margin-top: var(--base-size-16); +} + +.markdown-body li+li { + margin-top: .25em; +} + +.markdown-body dl { + padding: 0; +} + +.markdown-body dl dt { + padding: 0; + margin-top: var(--base-size-16); + font-size: 1em; + font-style: italic; + font-weight: var(--base-text-weight-semibold, 600); +} + +.markdown-body dl dd { + padding: 0 var(--base-size-16); + margin-bottom: var(--base-size-16); +} + +.markdown-body table th { + font-weight: var(--base-text-weight-semibold, 600); +} + +.markdown-body table th, +.markdown-body table td { + padding: 6px 13px; + border: 1px solid var(--borderColor-default); +} + +.markdown-body table td>:last-child { + margin-bottom: 0; +} + +.markdown-body table tr { + background-color: var(--bgColor-default); + border-top: 1px solid var(--borderColor-muted); +} + +.markdown-body table tr:nth-child(2n) { + background-color: var(--bgColor-muted); +} + +.markdown-body table img { + background-color: rgba(0,0,0,0); +} + +.markdown-body img[align=right] { + padding-left: 20px; +} + +.markdown-body img[align=left] { + padding-right: 20px; +} + +.markdown-body .emoji { + max-width: none; + vertical-align: text-top; + background-color: rgba(0,0,0,0); +} + +.markdown-body span.frame { + display: block; + overflow: hidden; +} + +.markdown-body span.frame>span { + display: block; + float: left; + width: auto; + padding: 7px; + margin: 13px 0 0; + overflow: hidden; + border: 1px solid var(--borderColor-default); +} + +.markdown-body span.frame span img { + display: block; + float: left; +} + +.markdown-body span.frame span span { + display: block; + padding: 5px 0 0; + clear: both; + color: var(--fgColor-default); +} + +.markdown-body span.align-center { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-center>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: center; +} + +.markdown-body span.align-center span img { + margin: 0 auto; + text-align: center; +} + +.markdown-body span.align-right { + display: block; + overflow: hidden; + clear: both; +} + +.markdown-body span.align-right>span { + display: block; + margin: 13px 0 0; + overflow: hidden; + text-align: right; +} + +.markdown-body span.align-right span img { + margin: 0; + text-align: right; +} + +.markdown-body span.float-left { + display: block; + float: left; + margin-right: 13px; + overflow: hidden; +} + +.markdown-body span.float-left span { + margin: 13px 0 0; +} + +.markdown-body span.float-right { + display: block; + float: right; + margin-left: 13px; + overflow: hidden; +} + +.markdown-body span.float-right>span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: right; +} + +.markdown-body code, +.markdown-body tt { + padding: .2em .4em; + margin: 0; + font-size: 85%; + white-space: break-spaces; + background-color: var(--bgColor-neutral-muted); + border-radius: 6px; +} + +.markdown-body code br, +.markdown-body tt br { + display: none; +} + +.markdown-body del code { + text-decoration: inherit; +} + +.markdown-body samp { + font-size: 85%; +} + +.markdown-body pre code { + font-size: 100%; +} + +.markdown-body pre>code { + padding: 0; + margin: 0; + word-break: normal; + white-space: pre; + background: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .highlight { + margin-bottom: var(--base-size-16); +} + +.markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.markdown-body .highlight pre, +.markdown-body pre { + padding: var(--base-size-16); + overflow: auto; + font-size: 85%; + line-height: 1.45; + color: var(--fgColor-default); + background-color: var(--bgColor-muted); + border-radius: 6px; +} + +.markdown-body pre code, +.markdown-body pre tt { + display: inline; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: rgba(0,0,0,0); + border: 0; +} + +.markdown-body .csv-data td, +.markdown-body .csv-data th { + padding: 5px; + overflow: hidden; + font-size: 12px; + line-height: 1; + text-align: left; + white-space: nowrap; +} + +.markdown-body .csv-data .blob-num { + padding: 10px var(--base-size-8) 9px; + text-align: right; + background: var(--bgColor-default); + border: 0; +} + +.markdown-body .csv-data tr { + border-top: 0; +} + +.markdown-body .csv-data th { + font-weight: var(--base-text-weight-semibold, 600); + background: var(--bgColor-muted); + border-top: 0; +} + +.markdown-body [data-footnote-ref]::before { + content: "["; +} + +.markdown-body [data-footnote-ref]::after { + content: "]"; +} + +.markdown-body .footnotes { + font-size: 12px; + color: var(--fgColor-muted); + border-top: 1px solid var(--borderColor-default); +} + +.markdown-body .footnotes ol { + padding-left: var(--base-size-16); +} + +.markdown-body .footnotes ol ul { + display: inline-block; + padding-left: var(--base-size-16); + margin-top: var(--base-size-16); +} + +.markdown-body .footnotes li { + position: relative; +} + +.markdown-body .footnotes li:target::before { + position: absolute; + top: calc(var(--base-size-8)*-1); + right: calc(var(--base-size-8)*-1); + bottom: calc(var(--base-size-8)*-1); + left: calc(var(--base-size-24)*-1); + pointer-events: none; + content: ""; + border: 2px solid var(--borderColor-accent-emphasis); + border-radius: 6px; +} + +.markdown-body .footnotes li:target { + color: var(--fgColor-default); +} + +.markdown-body .footnotes .data-footnote-backref g-emoji { + font-family: monospace; +} + +.markdown-body .pl-c { + color: var(--color-prettylights-syntax-comment); +} + +.markdown-body .pl-c1, +.markdown-body .pl-s .pl-v { + color: var(--color-prettylights-syntax-constant); +} + +.markdown-body .pl-e, +.markdown-body .pl-en { + color: var(--color-prettylights-syntax-entity); +} + +.markdown-body .pl-smi, +.markdown-body .pl-s .pl-s1 { + color: var(--color-prettylights-syntax-storage-modifier-import); +} + +.markdown-body .pl-ent { + color: var(--color-prettylights-syntax-entity-tag); +} + +.markdown-body .pl-k { + color: var(--color-prettylights-syntax-keyword); +} + +.markdown-body .pl-s, +.markdown-body .pl-pds, +.markdown-body .pl-s .pl-pse .pl-s1, +.markdown-body .pl-sr, +.markdown-body .pl-sr .pl-cce, +.markdown-body .pl-sr .pl-sre, +.markdown-body .pl-sr .pl-sra { + color: var(--color-prettylights-syntax-string); +} + +.markdown-body .pl-v, +.markdown-body .pl-smw { + color: var(--color-prettylights-syntax-variable); +} + +.markdown-body .pl-bu { + color: var(--color-prettylights-syntax-brackethighlighter-unmatched); +} + +.markdown-body .pl-ii { + color: var(--color-prettylights-syntax-invalid-illegal-text); + background-color: var(--color-prettylights-syntax-invalid-illegal-bg); +} + +.markdown-body .pl-c2 { + color: var(--color-prettylights-syntax-carriage-return-text); + background-color: var(--color-prettylights-syntax-carriage-return-bg); +} + +.markdown-body .pl-sr .pl-cce { + font-weight: bold; + color: var(--color-prettylights-syntax-string-regexp); +} + +.markdown-body .pl-ml { + color: var(--color-prettylights-syntax-markup-list); +} + +.markdown-body .pl-mh, +.markdown-body .pl-mh .pl-en, +.markdown-body .pl-ms { + font-weight: bold; + color: var(--color-prettylights-syntax-markup-heading); +} + +.markdown-body .pl-mi { + font-style: italic; + color: var(--color-prettylights-syntax-markup-italic); +} + +.markdown-body .pl-mb { + font-weight: bold; + color: var(--color-prettylights-syntax-markup-bold); +} + +.markdown-body .pl-md { + color: var(--color-prettylights-syntax-markup-deleted-text); + background-color: var(--color-prettylights-syntax-markup-deleted-bg); +} + +.markdown-body .pl-mi1 { + color: var(--color-prettylights-syntax-markup-inserted-text); + background-color: var(--color-prettylights-syntax-markup-inserted-bg); +} + +.markdown-body .pl-mc { + color: var(--color-prettylights-syntax-markup-changed-text); + background-color: var(--color-prettylights-syntax-markup-changed-bg); +} + +.markdown-body .pl-mi2 { + color: var(--color-prettylights-syntax-markup-ignored-text); + background-color: var(--color-prettylights-syntax-markup-ignored-bg); +} + +.markdown-body .pl-mdr { + font-weight: bold; + color: var(--color-prettylights-syntax-meta-diff-range); +} + +.markdown-body .pl-ba { + color: var(--color-prettylights-syntax-brackethighlighter-angle); +} + +.markdown-body .pl-sg { + color: var(--color-prettylights-syntax-sublimelinter-gutter-mark); +} + +.markdown-body .pl-corl { + text-decoration: underline; + color: var(--color-prettylights-syntax-constant-other-reference-link); +} + +.markdown-body [role=button]:focus:not(:focus-visible), +.markdown-body [role=tabpanel][tabindex="0"]:focus:not(:focus-visible), +.markdown-body button:focus:not(:focus-visible), +.markdown-body summary:focus:not(:focus-visible), +.markdown-body a:focus:not(:focus-visible) { + outline: none; + box-shadow: none; +} + +.markdown-body [tabindex="0"]:focus:not(:focus-visible), +.markdown-body details-dialog:focus:not(:focus-visible) { + outline: none; +} + +.markdown-body g-emoji { + display: inline-block; + min-width: 1ch; + font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; + font-size: 1em; + font-style: normal !important; + font-weight: var(--base-text-weight-normal, 400); + line-height: 1; + vertical-align: -0.075em; +} + +.markdown-body g-emoji img { + width: 1em; + height: 1em; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote) { + display: block; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):not(:has(.snippet-clipboard-content,>pre)) { + width: fit-content; +} + +.markdown-body a:has(>p,>div,>pre,>blockquote):has(.snippet-clipboard-content,>pre):focus-visible { + outline: 2px solid var(--focus-outlineColor); + outline-offset: 2px; +} + +.markdown-body .task-list-item { + list-style-type: none; +} + +.markdown-body .task-list-item label { + font-weight: var(--base-text-weight-normal, 400); +} + +.markdown-body .task-list-item.enabled label { + cursor: pointer; +} + +.markdown-body .task-list-item+.task-list-item { + margin-top: var(--base-size-4); +} + +.markdown-body .task-list-item .handle { + display: none; +} + +.markdown-body .task-list-item-checkbox { + margin: 0 .2em .25em -1.4em; + vertical-align: middle; +} + +.markdown-body ul:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body ol:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em .25em .2em; +} + +.markdown-body .contains-task-list:hover .task-list-item-convert-container, +.markdown-body .contains-task-list:focus-within .task-list-item-convert-container { + display: block; + width: auto; + height: 24px; + overflow: visible; + clip-path: none; +} + +.markdown-body ::-webkit-calendar-picker-indicator { + filter: invert(50%); +} + +.markdown-body .markdown-alert { + padding: var(--base-size-8) var(--base-size-16); + margin-bottom: var(--base-size-16); + color: inherit; + border-left: .25em solid var(--borderColor-default); +} + +.markdown-body .markdown-alert>:first-child { + margin-top: 0; +} + +.markdown-body .markdown-alert>:last-child { + margin-bottom: 0; +} + +.markdown-body .markdown-alert .markdown-alert-title { + display: flex; + font-weight: var(--base-text-weight-medium, 500); + align-items: center; + line-height: 1; +} + +.markdown-body .markdown-alert.markdown-alert-note { + border-left-color: var(--borderColor-accent-emphasis); +} + +.markdown-body .markdown-alert.markdown-alert-note .markdown-alert-title { + color: var(--fgColor-accent); +} + +.markdown-body .markdown-alert.markdown-alert-important { + border-left-color: var(--borderColor-done-emphasis); +} + +.markdown-body .markdown-alert.markdown-alert-important .markdown-alert-title { + color: var(--fgColor-done); +} + +.markdown-body .markdown-alert.markdown-alert-warning { + border-left-color: var(--borderColor-attention-emphasis); +} + +.markdown-body .markdown-alert.markdown-alert-warning .markdown-alert-title { + color: var(--fgColor-attention); +} + +.markdown-body .markdown-alert.markdown-alert-tip { + border-left-color: var(--borderColor-success-emphasis); +} + +.markdown-body .markdown-alert.markdown-alert-tip .markdown-alert-title { + color: var(--fgColor-success); +} + +.markdown-body .markdown-alert.markdown-alert-caution { + border-left-color: var(--borderColor-danger-emphasis); +} + +.markdown-body .markdown-alert.markdown-alert-caution .markdown-alert-title { + color: var(--fgColor-danger); +} + +.markdown-body>*:first-child>.heading-element:first-child { + margin-top: 0 !important; +} + +.markdown-body .highlight pre:has(+.zeroclipboard-container) { + min-height: 52px; +} + diff --git a/public/themes/claude/github-markdown-css/index.html b/public/themes/claude/github-markdown-css/index.html new file mode 100644 index 00000000000..9bd368307c0 --- /dev/null +++ b/public/themes/claude/github-markdown-css/index.html @@ -0,0 +1,1889 @@ +<!doctype html> +<html> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1, minimal-ui"> + <title>GitHub Markdown CSS demo + + + + + + + +
+

GitHub Markdown CSS demo

+ +

+ +

Headers

+ +
# H1
+## H2
+### H3
+#### H4
+##### H5
+###### H6
+
+Alternatively, for H1 and H2, an underline-ish style:
+
+Alt-H1
+======
+
+Alt-H2
+------
+
+ +

H1

+ +

H2

+ +

H3

+ +

H4

+ +
H5
+ +
H6
+ +

Alternatively, for H1 and H2, an underline-ish style:

+ +

Alt-H1

+ +

Alt-H2

+ +

+ +

Emphasis

+ +
Emphasis, aka italics, with *asterisks* or _underscores_.
+
+Strong emphasis, aka bold, with **asterisks** or __underscores__.
+
+Combined emphasis with **asterisks and _underscores_**.
+
+Strikethrough uses two tildes. ~~Scratch this.~~
+
+ +

Emphasis, aka italics, with asterisks or underscores.

+ +

Strong emphasis, aka bold, with asterisks or underscores.

+ +

Combined emphasis with asterisks and underscores.

+ +

Strikethrough uses two tildes. Scratch this.

+ +

+ +

Lists

+ +

(In this example, leading and trailing spaces are shown with with dots: ⋅)

+ +
1. First ordered list item
+2. Another item
+⋅⋅* Unordered sub-list.
+1. Actual numbers don't matter, just that it's a number
+⋅⋅1. Ordered sub-list
+4. And another item.
+
+⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown).
+
+⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅
+⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅
+⋅⋅⋅(This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.)
+
+* Unordered list can use asterisks
+- Or minuses
++ Or pluses
+
+ +
    +
  1. First ordered list item
  2. +
  3. Another item + +
      +
    • Unordered sub-list.
    • +
  4. +
  5. Actual numbers don't matter, just that it's a number + +
      +
    1. Ordered sub-list
    2. +
  6. +
  7. And another item.

    + +

    You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we'll use three here to also align the raw Markdown).

    + +

    To have a line break without a paragraph, you will need to use two trailing spaces. + Note that this line is separate, but within the same paragraph. + (This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.)

  8. +
+ +
    +
  • Unordered list can use asterisks
  • +
  • Or minuses
  • +
  • Or pluses

  • +
+ +
    +
  1. foo + +
      +
    1. bar + +
        +
      1. baz + +
          +
        1. faz
        2. +
      2. +
    2. +
  2. +
  3. foo2

  4. +
+ +
    +
  • foo + +
      +
    • bar + +
        +
      • baz + +
          +
        • faz
        • +
      • +
    • +
  • +
  • foo2

  • +
+ +
    +
  1. foo

    + +
      +
    • bar + +
        +
      1. baz + +
          +
        • faz
        • +
      2. +
    • +
  2. +
+ +
    +
  • foo

    + +
      +
    1. bar + +
        +
      • baz + +
          +
        1. faz
        2. +
      • +
    2. +
  • +
+ +
    +
  1. Lists in a list item: + +
      +
    • Indented four spaces. + +
        +
      • indented eight spaces.
      • +
    • +
    • Four spaces again.
    • +
  2. +
  3. Multiple paragraphs in a list items: +It's best to indent the paragraphs four spaces +You can get away with three, but it can get +confusing when you nest other things. +Stick to four.

    + +

    We indented the first line an extra space to align +it with these paragraphs. In real use, we might do +that to the entire list so that all items line up.

    + +

    This paragraph is still part of the list item, but it looks messy to humans. So it's a good idea to wrap your nested paragraphs manually, as we did with the first two.

  4. +
  5. Blockquotes in a list item:

    + +
    +

    Skip a line and +indent the >'s four spaces.

    +
  6. +
  7. Preformatted text in a list item:

    + +
    Skip a line and indent eight spaces.
    +That's four spaces for the list
    +and four to trigger the code block.
    +
  8. +
+ +

Inline HTML

+ +

To reboot your computer, press ctrl+alt+del.

+ +

+ +

Links

+ +

There are two ways to create links.

+ +
[I'm an inline-style link](https://www.google.com)
+
+[I'm an inline-style link with title](https://www.google.com "Google's Homepage")
+
+[I'm a reference-style link][Arbitrary case-insensitive reference text]
+
+[I'm a relative reference to a repository file](../blob/master/LICENSE)
+
+[You can use numbers for reference-style link definitions][1]
+
+Or leave it empty and use the [link text itself]
+
+Some text to show that the reference links can follow later.
+
+[arbitrary case-insensitive reference text]: https://www.mozilla.org
+[1]: http://slashdot.org
+[link text itself]: http://www.reddit.com
+
+ +

I'm an inline-style link

+ +

I'm an inline-style link with title

+ +

I'm a reference-style link

+ +

I'm a relative reference to a repository file

+ +

You can use numbers for reference-style link definitions

+ +

Or leave it empty and use the link text itself

+ +

Some text to show that the reference links can follow later.

+ +

+ +

Images

+ +
Here's our logo (hover to see the title text):
+
+Inline-style:
+![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 1")
+
+Reference-style:
+![alt text][logo]
+
+[logo]: https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png "Logo Title Text 2"
+
+ +

Here's our logo (hover to see the title text):

+ +

Inline-style: +alt text

+ +

Reference-style: +alt text

+ +

+ +

Code and Syntax Highlighting

+ +

Code blocks are part of the Markdown spec, but syntax highlighting isn't. However, many renderers -- like Github's and Markdown Here -- support syntax highlighting. Which languages are supported and how those language names should be written will vary from renderer to renderer. Markdown Here supports highlighting for dozens of languages (and not-really-languages, like diffs and HTTP headers); to see the complete list, and how to write the language names, see the highlight.js demo page.

+ +
Inline `code` has `back-ticks around` it.
+
+ +

Inline code has back-ticks around it.

+ +

Blocks of code are either fenced by lines with three back-ticks ```, or are indented with four spaces. I recommend only using the fenced code blocks -- they're easier and only they support syntax highlighting.

+ +
```javascript
+var s = "JavaScript syntax highlighting";
+alert(s);
+```
+
+```python
+s = "Python syntax highlighting"
+print s
+```
+
+```
+No language indicated, so no syntax highlighting.
+But let's throw in a <b>tag</b>.
+```
+
+ +
var s = "JavaScript syntax highlighting";
+alert(s);
+ +
s = "Python syntax highlighting"
+print s
+ +
No language indicated, so no syntax highlighting in Markdown Here (varies on Github).
+But let's throw in a <b>tag</b>.
+
+ +

+ +

Tables

+ +

Tables aren't part of the core Markdown spec, but they are part of GFM and Markdown Here supports them. They are an easy way of adding tables to your email -- a task that would otherwise require copy-pasting from another application.

+ +
Colons can be used to align columns.
+
+| Tables        | Are           | Cool  |
+| ------------- |:-------------:| -----:|
+| col 3 is      | right-aligned |  |
+| col 2 is      | centered      |    |
+| zebra stripes | are neat      |     |
+
+The outer pipes (|) are optional, and you don't need to make the raw Markdown line up prettily. You can also use inline Markdown.
+
+Markdown | Less | Pretty
+--- | --- | ---
+*Still* | `renders` | **nicely**
+1 | 2 | 3
+
+ +

Colons can be used to align columns.

+ + + + + + + + + + + + + + + + + + + + + + + +
TablesAreCool
col 3 isright-aligned
col 2 iscentered
zebra stripesare neat
+ +

The outer pipes (|) are optional, and you don't need to make the raw Markdown line up prettily. You can also use inline Markdown.

+ + + + + + + + + + + + + + + + + + +
MarkdownLessPretty
Stillrendersnicely
123
+ +

+ +

Blockquotes

+ +
> Blockquotes are very handy in email to emulate reply text.
+> This line is part of the same quote.
+
+Quote break.
+
+> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.
+
+ +
+

Blockquotes are very handy in email to emulate reply text. +This line is part of the same quote.

+
+ +

Quote break.

+ +
+

This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can put Markdown into a blockquote.

+
+ +

+ +

Inline HTML

+ +

You can also use raw HTML in your Markdown1, and it'll mostly work pretty well2.

+ +
<dl>
+    <dt>Definition list</dt>
+    <dd>Is something people use sometimes.</dd>
+
+    <dt>Markdown in HTML</dt>
+    <dd>Does *not* work **very** well. Use HTML <em>tags</em>.</dd>
+</dl>
+
+ +
+
Definition list
+
Is something people use sometimes.
+ +
Markdown in HTML
+
Does *not* work **very** well. Use HTML tags.
+
+ +

+ +

Horizontal Rule

+ +
Three or more...
+
+---
+
+Hyphens
+
+***
+
+Asterisks
+
+___
+
+Underscores
+
+ +

Three or more...

+ +
+ +

Hyphens

+ +
+ +

Asterisks

+ +
+ +

Underscores

+ +

+ +

Line Breaks

+ +

My basic recommendation for learning how line breaks work is to experiment and discover -- hit <Enter> once (i.e., insert one newline), then hit it twice (i.e., insert two newlines), see what happens. You'll soon learn to get what you want. "Markdown Toggle" is your friend.

+ +

Here are some things to try out:

+ +
Here's a line for us to start with.
+
+This line is separated from the one above by two newlines, so it will be a *separate paragraph*.
+
+This line is also a separate paragraph, but...
+This line is only separated by a single newline, so it's a separate line in the *same paragraph*.
+
+ +

Here's a line for us to start with.

+ +

This line is separated from the one above by two newlines, so it will be a separate paragraph.

+ +

This line is also begins a separate paragraph, but... +This line is only separated by a single newline, so it's a separate line in the same paragraph.

+ +

(Technical note: Markdown Here uses GFM line breaks, so there's no need to use MD's two-space line breaks.)

+ +

+ +

Youtube videos

+ +

They can't be added directly but you can add an image with a link to the video like this:

+ +
<a href="http://www.youtube.com/watch?feature=player_embedded&v=YOUTUBE_VIDEO_ID_HERE
+" target="_blank"><img src="http://img.youtube.com/vi/YOUTUBE_VIDEO_ID_HERE/0.jpg"
+alt="IMAGE ALT TEXT HERE" width="240" height="180" border="10" /></a>
+
+ +

Or, in pure Markdown, but losing the image sizing and border:

+ +
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/YOUTUBE_VIDEO_ID_HERE/0.jpg)](http://www.youtube.com/watch?v=YOUTUBE_VIDEO_ID_HERE)
+
+ +

Referencing a bug by #bugID in your git commit links it to the slip. For example #1.

+ +

Task List

+ +
    +
  • foo + +
      +
    • foo
    • +
    • foo
    • +
  • +
  • foo
  • +
+ +

[test]: http://google.com/ "Google"

+ +

A heading

+ +

Just a note, I've found that I can't test my markdown parser vs others. +For example, both markdown.js and showdown code blocks in lists wrong. They're +also completely [inconsistent][test] with regards to paragraphs in list items.

+ +

A link. Not anymore.

+ +

This will make me fail the test because +markdown.js doesnt acknowledge arbitrary html blocks =/

+ +
    +
  • List Item 1

  • +
  • List Item 2

    + +
      +
    • New List Item 1 +Hi, this is a list item.
    • +
    • New List Item 2 +Another item + Code goes here. + Lots of it...
    • +
    • New List Item 3 +The last item
    • +
  • +
  • List Item 3 +The final item.

  • +
  • List Item 4 +The real final item.

  • +
+ +

Paragraph.

+ +
+
    +
  • bq Item 1
  • +
  • bq Item 2 + +
      +
    • New bq Item 1
    • +
    • New bq Item 2 +Text here
    • +
  • +
+
+ +
+ +
+

Another blockquote! +I really need to get +more creative with +mockup text.. +markdown.js breaks here again

+
+ +

Another Heading

+ +

Hello world. Here is a link. +And an image alt.

+ +
Code goes here.
+Lots of it...
+
+ +
+

A list within a blockquote:

+ +
    +
  • asterisk 1
  • +
  • asterisk 2
  • +
  • asterisk 3
  • +
+
+ +

This is strong and em.

+ +

So is this word.

+ +

This is strong and em.

+ +

So is this word.

+ +

Unordered

+ +

Asterisks tight:

+ +
    +
  • asterisk 1
  • +
  • asterisk 2
  • +
  • asterisk 3
  • +
+ +

Asterisks loose:

+ +
    +
  • asterisk 1

  • +
  • asterisk 2

  • +
  • asterisk 3

  • +
+ +
+ +

Pluses tight:

+ +
    +
  • Plus 1
  • +
  • Plus 2
  • +
  • Plus 3
  • +
+ +

Pluses loose:

+ +
    +
  • Plus 1

  • +
  • Plus 2

  • +
  • Plus 3

  • +
+ +
+ +

Minuses tight:

+ +
    +
  • Minus 1
  • +
  • Minus 2
  • +
  • Minus 3
  • +
+ +

Minuses loose:

+ +
    +
  • Minus 1

  • +
  • Minus 2

  • +
  • Minus 3

  • +
+ +

Ordered

+ +

Tight:

+ +
    +
  1. First
  2. +
  3. Second
  4. +
  5. Third
  6. +
+ +

and:

+ +
    +
  1. One
  2. +
  3. Two
  4. +
  5. Three
  6. +
+ +

Loose using tabs:

+ +
    +
  1. First

  2. +
  3. Second

  4. +
  5. Third

  6. +
+ +

and using spaces:

+ +
    +
  1. One

  2. +
  3. Two

  4. +
  5. Three

  6. +
+ +

Multiple paragraphs:

+ +
    +
  1. Item 1, graf one.

    + +

    Item 2. graf two. The quick brown fox jumped over the lazy dog's +back.

  2. +
  3. Item 2.

  4. +
  5. Item 3.

  6. +
+ +

Nested

+ +
    +
  • Tab + +
      +
    • Tab + +
        +
      • Tab
      • +
    • +
  • +
+ +

Here's another:

+ +
    +
  1. First
  2. +
  3. Second: + +
      +
    • Fee
    • +
    • Fie
    • +
    • Foe
    • +
  4. +
  5. Third
  6. +
+ +

Same thing but with paragraphs:

+ +
    +
  1. First

  2. +
  3. Second:

    + +
      +
    • Fee
    • +
    • Fie
    • +
    • Foe
    • +
  4. +
  5. Third

  6. +
+ +

This was an error in Markdown 1.0.1:

+ +
    +
  • this

    + +
      +
    • sub
    • +
    + +

    that

  • +
+ +
+

foo

+ +
+

bar

+
+ +

foo

+
+ +

Markdown: Syntax

+ + + + + +

Note: This document is itself written using Markdown; you +can [see the source for it by adding '.text' to the URL][src].

+ +

[src]: /projects/markdown/syntax.text

+ +
+ +

Overview

+ +

Philosophy

+ +

Markdown is intended to be as easy-to-read and easy-to-write as is feasible.

+ +

Readability, however, is emphasized above all else. A Markdown-formatted +document should be publishable as-is, as plain text, without looking +like it's been marked up with tags or formatting instructions. While +Markdown's syntax has been influenced by several existing text-to-HTML +filters -- including Setext, [atx] [2], [Textile] [3], [reStructuredText] [4], +[Grutatext] [5], and [EtText] [6] -- the single biggest source of +inspiration for Markdown's syntax is the format of plain text email.

+ +

1: http://docutils.sourceforge.net/mirror/setext.html + [2]: http://www.aaronsw.com/2002/atx/ + [3]: http://textism.com/tools/textile/ + [4]: http://docutils.sourceforge.net/rst.html + [5]: http://www.triptico.com/software/grutatxt.html + [6]: http://ettext.taint.org/doc/

+ +

To this end, Markdown's syntax is comprised entirely of punctuation +characters, which punctuation characters have been carefully chosen so +as to look like what they mean. E.g., asterisks around a word actually +look like *emphasis*. Markdown lists look like, well, lists. Even +blockquotes look like quoted passages of text, assuming you've ever +used email.

+ +

Inline HTML

+ +

Markdown's syntax is intended for one purpose: to be used as a +format for writing for the web.

+ +

Markdown is not a replacement for HTML, or even close to it. Its +syntax is very small, corresponding only to a very small subset of +HTML tags. The idea is not to create a syntax that makes it easier +to insert HTML tags. In my opinion, HTML tags are already easy to +insert. The idea for Markdown is to make it easy to read, write, and +edit prose. HTML is a publishing format; Markdown is a writing +format. Thus, Markdown's formatting syntax only addresses issues that +can be conveyed in plain text.

+ +

For any markup that is not covered by Markdown's syntax, you simply +use HTML itself. There's no need to preface it or delimit it to +indicate that you're switching from Markdown to HTML; you just use +the tags.

+ +

The only restrictions are that block-level HTML elements -- e.g. <div>, +<table>, <pre>, <p>, etc. -- must be separated from surrounding +content by blank lines, and the start and end tags of the block should +not be indented with tabs or spaces. Markdown is smart enough not +to add extra (unwanted) <p> tags around HTML block-level tags.

+ +

For example, to add an HTML table to a Markdown article:

+ +
This is a regular paragraph.
+
+<table>
+    <tr>
+        <td>Foo</td>
+    </tr>
+</table>
+
+This is another regular paragraph.
+
+ +

Note that Markdown formatting syntax is not processed within block-level +HTML tags. E.g., you can't use Markdown-style *emphasis* inside an +HTML block.

+ +

Span-level HTML tags -- e.g. <span>, <cite>, or <del> -- can be +used anywhere in a Markdown paragraph, list item, or header. If you +want, you can even use HTML tags instead of Markdown formatting; e.g. if +you'd prefer to use HTML <a> or <img> tags instead of Markdown's +link or image syntax, go right ahead.

+ +

Unlike block-level HTML tags, Markdown syntax is processed within +span-level tags.

+ +

Automatic Escaping for Special Characters

+ +

In HTML, there are two characters that demand special treatment: < +and &. Left angle brackets are used to start tags; ampersands are +used to denote HTML entities. If you want to use them as literal +characters, you must escape them as entities, e.g. &lt;, and +&amp;.

+ +

Ampersands in particular are bedeviling for web writers. If you want to +write about 'AT&T', you need to write 'AT&amp;T'. You even need to +escape ampersands within URLs. Thus, if you want to link to:

+ +
http://images.google.com/images?num=30&q=larry+bird
+
+ +

you need to encode the URL as:

+ +
http://images.google.com/images?num=30&amp;q=larry+bird
+
+ +

in your anchor tag href attribute. Needless to say, this is easy to +forget, and is probably the single most common source of HTML validation +errors in otherwise well-marked-up web sites.

+ +

Markdown allows you to use these characters naturally, taking care of +all the necessary escaping for you. If you use an ampersand as part of +an HTML entity, it remains unchanged; otherwise it will be translated +into &amp;.

+ +

So, if you want to include a copyright symbol in your article, you can write:

+ +
&copy;
+
+ +

and Markdown will leave it alone. But if you write:

+ +
AT&T
+
+ +

Markdown will translate it to:

+ +
AT&amp;T
+
+ +

Similarly, because Markdown supports inline HTML, if you use +angle brackets as delimiters for HTML tags, Markdown will treat them as +such. But if you write:

+ +
4 < 5
+
+ +

Markdown will translate it to:

+ +
4 &lt; 5
+
+ +

However, inside Markdown code spans and blocks, angle brackets and +ampersands are always encoded automatically. This makes it easy to use +Markdown to write about HTML code. (As opposed to raw HTML, which is a +terrible format for writing about HTML syntax, because every single < +and & in your example code needs to be escaped.)

+ +
+ +

Block Elements

+ +

Paragraphs and Line Breaks

+ +

A paragraph is simply one or more consecutive lines of text, separated +by one or more blank lines. (A blank line is any line that looks like a +blank line -- a line containing nothing but spaces or tabs is considered +blank.) Normal paragraphs should not be intended with spaces or tabs.

+ +

The implication of the "one or more consecutive lines of text" rule is +that Markdown supports "hard-wrapped" text paragraphs. This differs +significantly from most other text-to-HTML formatters (including Movable +Type's "Convert Line Breaks" option) which translate every line break +character in a paragraph into a <br /> tag.

+ +

When you do want to insert a <br /> break tag using Markdown, you +end a line with two or more spaces, then type return.

+ +

Yes, this takes a tad more effort to create a <br />, but a simplistic +"every line break is a <br />" rule wouldn't work for Markdown. +Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l] +work best -- and look better -- when you format them with hard breaks.

+ +

[bq]: #blockquote + [l]: #list

+ +

Headers

+ +

Markdown supports two styles of headers, Setext and [atx] [2].

+ +

Setext-style headers are "underlined" using equal signs (for first-level +headers) and dashes (for second-level headers). For example:

+ +
This is an H1
+=============
+
+This is an H2
+-------------
+
+ +

Any number of underlining ='s or -'s will work.

+ +

Atx-style headers use 1-6 hash characters at the start of the line, +corresponding to header levels 1-6. For example:

+ +
# This is an H1
+
+## This is an H2
+
+###### This is an H6
+
+ +

Optionally, you may "close" atx-style headers. This is purely +cosmetic -- you can use this if you think it looks better. The +closing hashes don't even need to match the number of hashes +used to open the header. (The number of opening hashes +determines the header level.) :

+ +
# This is an H1 #
+
+## This is an H2 ##
+
+### This is an H3 ######
+
+ +

Blockquotes

+ +

Markdown uses email-style > characters for blockquoting. If you're +familiar with quoting passages of text in an email message, then you +know how to create a blockquote in Markdown. It looks best if you hard +wrap the text and put a > before every line:

+ +
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+>
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+> id sem consectetuer libero luctus adipiscing.
+
+ +

Markdown allows you to be lazy and only put the > before the first +line of a hard-wrapped paragraph:

+ +
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
+Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
+
+> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
+id sem consectetuer libero luctus adipiscing.
+
+ +

Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by +adding additional levels of >:

+ +
> This is the first level of quoting.
+>
+> > This is nested blockquote.
+>
+> Back to the first level.
+
+ +

Blockquotes can contain other Markdown elements, including headers, lists, +and code blocks:

+ +
> ## This is a header.
+>
+> 1.   This is the first list item.
+> 2.   This is the second list item.
+>
+> Here's some example code:
+>
+>     return shell_exec("echo $input | $markdown_script");
+
+ +

Any decent text editor should make email-style quoting easy. For +example, with BBEdit, you can make a selection and choose Increase +Quote Level from the Text menu.

+ +

Lists

+ +

Markdown supports ordered (numbered) and unordered (bulleted) lists.

+ +

Unordered lists use asterisks, pluses, and hyphens -- interchangably +-- as list markers:

+ +
*   Red
+*   Green
+*   Blue
+
+ +

is equivalent to:

+ +
+   Red
++   Green
++   Blue
+
+ +

and:

+ +
-   Red
+-   Green
+-   Blue
+
+ +

Ordered lists use numbers followed by periods:

+ +
1.  Bird
+2.  McHale
+3.  Parish
+
+ +

It's important to note that the actual numbers you use to mark the +list have no effect on the HTML output Markdown produces. The HTML +Markdown produces from the above list is:

+ +
<ol>
+<li>Bird</li>
+<li>McHale</li>
+<li>Parish</li>
+</ol>
+
+ +

If you instead wrote the list in Markdown like this:

+ +
1.  Bird
+1.  McHale
+1.  Parish
+
+ +

or even:

+ +
3. Bird
+1. McHale
+8. Parish
+
+ +

you'd get the exact same HTML output. The point is, if you want to, +you can use ordinal numbers in your ordered Markdown lists, so that +the numbers in your source match the numbers in your published HTML. +But if you want to be lazy, you don't have to.

+ +

If you do use lazy list numbering, however, you should still start the +list with the number 1. At some point in the future, Markdown may support +starting ordered lists at an arbitrary number.

+ +

List markers typically start at the left margin, but may be indented by +up to three spaces. List markers must be followed by one or more spaces +or a tab.

+ +

To make lists look nice, you can wrap items with hanging indents:

+ +
*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+    Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+    viverra nec, fringilla in, laoreet vitae, risus.
+*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+    Suspendisse id sem consectetuer libero luctus adipiscing.
+
+ +

But if you want to be lazy, you don't have to:

+ +
*   Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
+viverra nec, fringilla in, laoreet vitae, risus.
+*   Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
+Suspendisse id sem consectetuer libero luctus adipiscing.
+
+ +

If list items are separated by blank lines, Markdown will wrap the +items in <p> tags in the HTML output. For example, this input:

+ +
*   Bird
+*   Magic
+
+ +

will turn into:

+ +
<ul>
+<li>Bird</li>
+<li>Magic</li>
+</ul>
+
+ +

But this:

+ +
*   Bird
+
+*   Magic
+
+ +

will turn into:

+ +
<ul>
+<li><p>Bird</p></li>
+<li><p>Magic</p></li>
+</ul>
+
+ +

List items may consist of multiple paragraphs. Each subsequent +paragraph in a list item must be intended by either 4 spaces +or one tab:

+ +
1.  This is a list item with two paragraphs. Lorem ipsum dolor
+    sit amet, consectetuer adipiscing elit. Aliquam hendrerit
+    mi posuere lectus.
+
+    Vestibulum enim wisi, viverra nec, fringilla in, laoreet
+    vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
+    sit amet velit.
+
+2.  Suspendisse id sem consectetuer libero luctus adipiscing.
+
+ +

It looks nice if you indent every line of the subsequent +paragraphs, but here again, Markdown will allow you to be +lazy:

+ +
*   This is a list item with two paragraphs.
+
+    This is the second paragraph in the list item. You're
+only required to indent the first line. Lorem ipsum dolor
+sit amet, consectetuer adipiscing elit.
+
+*   Another item in the same list.
+
+ +

To put a blockquote within a list item, the blockquote's > +delimiters need to be indented:

+ +
*   A list item with a blockquote:
+
+    > This is a blockquote
+    > inside a list item.
+
+ +

To put a code block within a list item, the code block needs +to be indented twice -- 8 spaces or two tabs:

+ +
*   A list item with a code block:
+
+        <code goes here>
+
+ +

It's worth noting that it's possible to trigger an ordered list by +accident, by writing something like this:

+ +
1986. What a great season.
+
+ +

In other words, a number-period-space sequence at the beginning of a +line. To avoid this, you can backslash-escape the period:

+ +
1986\. What a great season.
+
+ +

Code Blocks

+ +

Pre-formatted code blocks are used for writing about programming or +markup source code. Rather than forming normal paragraphs, the lines +of a code block are interpreted literally. Markdown wraps a code block +in both <pre> and <code> tags.

+ +

To produce a code block in Markdown, simply indent every line of the +block by at least 4 spaces or 1 tab. For example, given this input:

+ +
This is a normal paragraph:
+
+    This is a code block.
+
+ +

Markdown will generate:

+ +
<p>This is a normal paragraph:</p>
+
+<pre><code>This is a code block.
+</code></pre>
+
+ +

One level of indentation -- 4 spaces or 1 tab -- is removed from each +line of the code block. For example, this:

+ +
Here is an example of AppleScript:
+
+    tell application "Foo"
+        beep
+    end tell
+
+ +

will turn into:

+ +
<p>Here is an example of AppleScript:</p>
+
+<pre><code>tell application "Foo"
+    beep
+end tell
+</code></pre>
+
+ +

A code block continues until it reaches a line that is not indented +(or the end of the article).

+ +

Within a code block, ampersands (&) and angle brackets (< and >) +are automatically converted into HTML entities. This makes it very +easy to include example HTML source code using Markdown -- just paste +it and indent it, and Markdown will handle the hassle of encoding the +ampersands and angle brackets. For example, this:

+ +
    <div class="footer">
+        &copy; 2004 Foo Corporation
+    </div>
+
+ +

will turn into:

+ +
<pre><code>&lt;div class="footer"&gt;
+    &amp;copy; 2004 Foo Corporation
+&lt;/div&gt;
+</code></pre>
+
+ +

Regular Markdown syntax is not processed within code blocks. E.g., +asterisks are just literal asterisks within a code block. This means +it's also easy to use Markdown to write about Markdown's own syntax.

+ +

Horizontal Rules

+ +

You can produce a horizontal rule tag (<hr />) by placing three or +more hyphens, asterisks, or underscores on a line by themselves. If you +wish, you may use spaces between the hyphens or asterisks. Each of the +following lines will produce a horizontal rule:

+ +
* * *
+
+***
+
+*****
+
+- - -
+
+---------------------------------------
+
+_ _ _
+
+ +
+ +

Span Elements

+ + + +

Markdown supports two style of links: inline and reference.

+ +

In both styles, the link text is delimited by [square brackets].

+ +

To create an inline link, use a set of regular parentheses immediately +after the link text's closing square bracket. Inside the parentheses, +put the URL where you want the link to point, along with an optional +title for the link, surrounded in quotes. For example:

+ +
This is [an example](http://example.com/ "Title") inline link.
+
+[This link](http://example.net/) has no title attribute.
+
+ +

Will produce:

+ +
<p>This is <a href="http://example.com/" title="Title">
+an example</a> inline link.</p>
+
+<p><a href="http://example.net/">This link</a> has no
+title attribute.</p>
+
+ +

If you're referring to a local resource on the same server, you can +use relative paths:

+ +
See my [About](/about/) page for details.
+
+ +

Reference-style links use a second set of square brackets, inside +which you place a label of your choosing to identify the link:

+ +
This is [an example][id] reference-style link.
+
+ +

You can optionally use a space to separate the sets of brackets:

+ +
This is [an example] [id] reference-style link.
+
+ +

Then, anywhere in the document, you define your link label like this, +on a line by itself:

+ +
[id]: http://example.com/  "Optional Title Here"
+
+ +

That is:

+ +
    +
  • Square brackets containing the link identifier (optionally +indented from the left margin using up to three spaces);
  • +
  • followed by a colon;
  • +
  • followed by one or more spaces (or tabs);
  • +
  • followed by the URL for the link;
  • +
  • optionally followed by a title attribute for the link, enclosed +in double or single quotes.
  • +
+ +

The link URL may, optionally, be surrounded by angle brackets:

+ +
[id]: <http://example.com/>  "Optional Title Here"
+
+ +

You can put the title attribute on the next line and use extra spaces +or tabs for padding, which tends to look better with longer URLs:

+ +
[id]: http://example.com/longish/path/to/resource/here
+    "Optional Title Here"
+
+ +

Link definitions are only used for creating links during Markdown +processing, and are stripped from your document in the HTML output.

+ +

Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are not case sensitive. E.g. these two links:

+ +
[link text][a]
+[link text][A]
+
+ +

are equivalent.

+ +

The implicit link name shortcut allows you to omit the name of the +link, in which case the link text itself is used as the name. +Just use an empty set of square brackets -- e.g., to link the word +"Google" to the google.com web site, you could simply write:

+ +
[Google][]
+
+ +

And then define the link:

+ +
[Google]: http://google.com/
+
+ +

Because link names may contain spaces, this shortcut even works for +multiple words in the link text:

+ +
Visit [Daring Fireball][] for more information.
+
+ +

And then define the link:

+ +
[Daring Fireball]: http://daringfireball.net/
+
+ +

Link definitions can be placed anywhere in your Markdown document. I +tend to put them immediately after each paragraph in which they're +used, but if you want, you can put them all at the end of your +document, sort of like footnotes.

+ +

Here's an example of reference links in action:

+ +
I get 10 times more traffic from [Google] [1] than from
+[Yahoo] [2] or [MSN] [3].
+
+  [1]: http://google.com/        "Google"
+  [2]: http://search.yahoo.com/  "Yahoo Search"
+  [3]: http://search.msn.com/    "MSN Search"
+
+ +

Using the implicit link name shortcut, you could instead write:

+ +
I get 10 times more traffic from [Google][] than from
+[Yahoo][] or [MSN][].
+
+  [google]: http://google.com/        "Google"
+  [yahoo]:  http://search.yahoo.com/  "Yahoo Search"
+  [msn]:    http://search.msn.com/    "MSN Search"
+
+ +

Both of the above examples will produce the following HTML output:

+ +
<p>I get 10 times more traffic from <a href="http://google.com/"
+title="Google">Google</a> than from
+<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
+or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
+
+ +

For comparison, here is the same paragraph written using +Markdown's inline link style:

+ +
I get 10 times more traffic from [Google](http://google.com/ "Google")
+than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
+[MSN](http://search.msn.com/ "MSN Search").
+
+ +

The point of reference-style links is not that they're easier to +write. The point is that with reference-style links, your document +source is vastly more readable. Compare the above examples: using +reference-style links, the paragraph itself is only 81 characters +long; with inline-style links, it's 176 characters; and as raw HTML, +it's 234 characters. In the raw HTML, there's more markup than there +is text.

+ +

With Markdown's reference-style links, a source document much more +closely resembles the final output, as rendered in a browser. By +allowing you to move the markup-related metadata out of the paragraph, +you can add links without interrupting the narrative flow of your +prose.

+ +

Emphasis

+ +

Markdown treats asterisks (*) and underscores (_) as indicators of +emphasis. Text wrapped with one * or _ will be wrapped with an +HTML <em> tag; double *'s or _'s will be wrapped with an HTML +<strong> tag. E.g., this input:

+ +
*single asterisks*
+
+_single underscores_
+
+**double asterisks**
+
+__double underscores__
+
+ +

will produce:

+ +
<em>single asterisks</em>
+
+<em>single underscores</em>
+
+<strong>double asterisks</strong>
+
+<strong>double underscores</strong>
+
+ +

You can use whichever style you prefer; the lone restriction is that +the same character must be used to open and close an emphasis span.

+ +

Emphasis can be used in the middle of a word:

+ +
un*fucking*believable
+
+ +

But if you surround an * or _ with spaces, it'll be treated as a +literal asterisk or underscore.

+ +

To produce a literal asterisk or underscore at a position where it +would otherwise be used as an emphasis delimiter, you can backslash +escape it:

+ +
\*this text is surrounded by literal asterisks\*
+
+ +

Code

+ +

To indicate a span of code, wrap it with backtick quotes (`). +Unlike a pre-formatted code block, a code span indicates code within a +normal paragraph. For example:

+ +
Use the `printf()` function.
+
+ +

will produce:

+ +
<p>Use the <code>printf()</code> function.</p>
+
+ +

To include a literal backtick character within a code span, you can use +multiple backticks as the opening and closing delimiters:

+ +
``There is a literal backtick (`) here.``
+
+ +

which will produce this:

+ +
<p><code>There is a literal backtick (`) here.</code></p>
+
+ +

The backtick delimiters surrounding a code span may include spaces -- +one after the opening, one before the closing. This allows you to place +literal backtick characters at the beginning or end of a code span:

+ +
A single backtick in a code span: `` ` ``
+
+A backtick-delimited string in a code span: `` `foo` ``
+
+ +

will produce:

+ +
<p>A single backtick in a code span: <code>`</code></p>
+
+<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
+
+ +

With a code span, ampersands and angle brackets are encoded as HTML +entities automatically, which makes it easy to include example HTML +tags. Markdown will turn this:

+ +
Please don't use any `<blink>` tags.
+
+ +

into:

+ +
<p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
+
+ +

You can write this:

+ +
`&#8212;` is the decimal-encoded equivalent of `&mdash;`.
+
+ +

to produce:

+ +
<p><code>&amp;#8212;</code> is the decimal-encoded
+equivalent of <code>&amp;mdash;</code>.</p>
+
+ +

Images

+ +

Admittedly, it's fairly difficult to devise a "natural" syntax for +placing images into a plain text document format.

+ +

Markdown uses an image syntax that is intended to resemble the syntax +for links, allowing for two styles: inline and reference.

+ +

Inline image syntax looks like this:

+ +
![Alt text](/path/to/img.jpg)
+
+![Alt text](/path/to/img.jpg "Optional title")
+
+ +

That is:

+ +
    +
  • An exclamation mark: !;
  • +
  • followed by a set of square brackets, containing the alt +attribute text for the image;
  • +
  • followed by a set of parentheses, containing the URL or path to +the image, and an optional title attribute enclosed in double +or single quotes.
  • +
+ +

Reference-style image syntax looks like this:

+ +
![Alt text][id]
+
+ +

Where "id" is the name of a defined image reference. Image references +are defined using syntax identical to link references:

+ +
[id]: url/to/image  "Optional title attribute"
+
+ +

As of this writing, Markdown has no syntax for specifying the +dimensions of an image; if this is important to you, you can simply +use regular HTML <img> tags.

+ +
+ +

Miscellaneous

+ + + +

Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:

+ +
<http://example.com/>
+
+ +

Markdown will turn this into:

+ +
<a href="http://example.com/">http://example.com/</a>
+
+ +

Automatic links for email addresses work similarly, except that +Markdown will also perform a bit of randomized decimal and hex +entity-encoding to help obscure your address from address-harvesting +spambots. For example, Markdown will turn this:

+ +
<address@example.com>
+
+ +

into something like this:

+ +
<a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
+&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
+&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
+&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
+
+ +

which will render in a browser as a clickable link to "address@example.com".

+ +

(This sort of entity-encoding trick will indeed fool many, if not +most, address-harvesting bots, but it definitely won't fool all of +them. It's better than nothing, but an address published in this way +will probably eventually start receiving spam.)

+ +

Backslash Escapes

+ +

Markdown allows you to use backslash escapes to generate literal +characters which would otherwise have special meaning in Markdown's +formatting syntax. For example, if you wanted to surround a word with +literal asterisks (instead of an HTML <em> tag), you can backslashes +before the asterisks, like this:

+ +
\*literal asterisks\*
+
+ +

Markdown provides backslash escapes for the following characters:

+ +
\   backslash
+`   backtick
+*   asterisk
+_   underscore
+{}  curly braces
+[]  square brackets
+()  parentheses
+#   hash mark
++   plus sign
+-   minus sign (hyphen)
+.   dot
+!   exclamation mark
+
+ +

Foo [bar][].

+ +

Foo bar.

+ +

[bar]: /url/ "Title with "quotes" inside"

+ +

This is the [simple case].

+ +

[simple case]: /simple

+ +

This one has a [line +break].

+ +

This one has a [line +break] with a line-ending space.

+ +

[line break]: /foo

+ +

[this] [that] and the [other]

+ +

[this]: /this +[that]: /that +[other]: /other

+ +

Here's a simple block:

+ +
+ foo +
+ +

This should be a code block, though:

+ +
<div>
+    foo
+</div>
+
+ +

As should this:

+ +
<div>foo</div>
+
+ +

Now, nested:

+ +
+
+
+ foo +
+
+
+ +

This should just be an HTML comment:

+ + + +

Multiline:

+ + + +

Code block:

+ +
<!-- Comment -->
+
+ +

Just plain comment, with trailing spaces on the line:

+ + + +

Code:

+ +
<hr />
+
+ +

Hr's:

+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
var gulp = require('gulp');
+var myth = require('gulp-myth');
+
+gulp.task('default', function () {
+    return gulp.src('src/app.css')
+        .pipe(myth())
+        .pipe(gulp.dest('dist'));
+});
+ +

Footnotes

+ +

Here's an example of footnotes in action. This paragraph contains multiple footnote references3 to demonstrate how they appear in GitHub-style Markdown4.

+ +

Footnotes

+
    +
  1. +

    HTML elements like <em> and <strong> are supported natively.

    +
  2. +
  3. +

    Though there are some limitations compared to pure Markdown syntax.

    +
  4. +
  5. +

    Footnotes are automatically numbered and linked back to their references.

    +
  6. +
  7. +

    GitHub's Markdown processor generates this exact HTML structure for footnotes.

    +
  8. +
+
+ +
+ Fork me on GitHub + + diff --git a/public/themes/claude/github-markdown-css/license b/public/themes/claude/github-markdown-css/license new file mode 100644 index 00000000000..fa7ceba3eb4 --- /dev/null +++ b/public/themes/claude/github-markdown-css/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/public/themes/claude/github-markdown-css/package.json b/public/themes/claude/github-markdown-css/package.json new file mode 100644 index 00000000000..73fd5686454 --- /dev/null +++ b/public/themes/claude/github-markdown-css/package.json @@ -0,0 +1,48 @@ +{ + "name": "github-markdown-css", + "version": "5.9.0", + "description": "The minimal amount of CSS to replicate the GitHub Markdown style", + "license": "MIT", + "repository": "sindresorhus/github-markdown-css", + "funding": "https://github.com/sponsors/sindresorhus", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "main": "github-markdown.css", + "engines": { + "node": ">=10" + }, + "scripts": { + "make:light": "github-markdown-css --no-use-fixture --theme light > github-markdown-light.css", + "make:dark": "github-markdown-css --no-use-fixture --theme dark > github-markdown-dark.css", + "make:dark-dimmed": "github-markdown-css --no-use-fixture --theme dark_dimmed > github-markdown-dark-dimmed.css", + "make:dark-high-contrast": "github-markdown-css --no-use-fixture --theme dark_high_contrast > github-markdown-dark-high-contrast.css", + "make:dark-colorblind": "github-markdown-css --no-use-fixture --theme dark_colorblind > github-markdown-dark-colorblind.css", + "make:light-colorblind": "github-markdown-css --no-use-fixture --theme light_colorblind > github-markdown-light-colorblind.css", + "make:auto": "github-markdown-css --no-use-fixture --theme auto > github-markdown.css", + "make": "npm run make:light && npm run make:dark && npm run make:dark-dimmed && npm run make:dark-high-contrast && npm run make:dark-colorblind && npm run make:light-colorblind && npm run make:auto" + }, + "files": [ + "github-markdown.css", + "github-markdown-light.css", + "github-markdown-dark.css", + "github-markdown-dark-dimmed.css", + "github-markdown-dark-high-contrast.css", + "github-markdown-dark-colorblind.css", + "github-markdown-light-colorblind.css" + ], + "keywords": [ + "browser", + "github", + "markdown", + "md", + "css", + "style", + "stylesheet" + ], + "devDependencies": { + "generate-github-markdown-css": "^6.6.0" + } +} diff --git a/public/themes/claude/github-markdown-css/readme.md b/public/themes/claude/github-markdown-css/readme.md new file mode 100644 index 00000000000..45c46bac430 --- /dev/null +++ b/public/themes/claude/github-markdown-css/readme.md @@ -0,0 +1,76 @@ +# github-markdown-css + +> The minimal amount of CSS to replicate the GitHub Markdown style + +**The CSS is generated. Contributions should go to [this repo](https://github.com/sindresorhus/generate-github-markdown-css).** + +[](http://sindresorhus.com/github-markdown-css) + +## [Demo](https://sindresorhus.com/github-markdown-css) + +## Install + +Download [manually](https://raw.githubusercontent.com/sindresorhus/github-markdown-css/gh-pages/github-markdown.css), from [CDNJS](https://cdnjs.com/libraries/github-markdown-css), or with npm: + +```sh +npm install github-markdown-css +``` + +## Usage + +Import the `github-markdown.css` file and add a `markdown-body` class to the container of your rendered Markdown and set a width for it. GitHub uses `980px` width and `45px` padding, and `15px` padding for mobile. + +```html + + + +
+

Unicorns

+

All the things

+
+``` + +You can use [GitHub's `/markdown` API](https://docs.github.com/en/free-pro-team@latest/rest/reference/markdown) to turn Markdown into the HTML that GitHub generates, which works well with the CSS in this repo. Other Markdown parsers will mostly work with these styles too. To mimic how GitHub highlights code, you can use [`starry-night`](https://github.com/wooorm/starry-night) with your Markdown parser of choice. + +There are 7 themes provided in this package: + +- **github-markdown.css**: (default) Automatically switches between light and dark through [`@media (prefers-color-scheme)`](https://developer.mozilla.org/docs/Web/CSS/@media/prefers-color-scheme). +- **github-markdown-light.css**: Light-only. +- **github-markdown-dark.css**: Dark-only. +- **github-markdown-dark-dimmed.css**: Dark dimmed. +- **github-markdown-dark-high-contrast.css**: Dark high contrast. +- **github-markdown-dark-colorblind.css**: Dark Protanopia & Deuteranopia. +- **github-markdown-light-colorblind.css**: Light Protanopia & Deuteranopia. + +## How + +See [`generate-github-markdown-css`](https://github.com/sindresorhus/generate-github-markdown-css) for how it's generated and ability to generate your own. + +## Troubleshooting + +If you encounter styling issues, like tables in dark mode rendering their fonts in black, the browser might uses [quirks mode](https://developer.mozilla.org/en-US/docs/Web/HTML/Quirks_Mode_and_Standards_Mode) by accident. + +To avoid quirks mode, always include a doctype at the top of your page. + +```html + + +``` + +## Dev + +Run `npm run make` to update the CSS. diff --git a/styles/claude-readme.css b/styles/claude-readme.css new file mode 100644 index 00000000000..42e6895cb0a --- /dev/null +++ b/styles/claude-readme.css @@ -0,0 +1 @@ +@import url('/themes/claude/github-markdown-css/github-markdown.css'); diff --git a/themes/claude/components/ArticleAround.js b/themes/claude/components/ArticleAround.js new file mode 100644 index 00000000000..a2f9c7d3f94 --- /dev/null +++ b/themes/claude/components/ArticleAround.js @@ -0,0 +1,32 @@ +import SmartLink from '@/components/SmartLink' + +/** + * 上一篇,下一篇文章 + * @param {prev,next} param0 + * @returns + */ +export default function ArticleAround({ prev, next }) { + if (!prev || !next) { + return <> + } + return ( +
+ {prev && + + {prev.title} + + } + {next && + {next.title} + + + } +
+ ) +} diff --git a/themes/claude/components/ArticleInfo.js b/themes/claude/components/ArticleInfo.js new file mode 100644 index 00000000000..817b73e950a --- /dev/null +++ b/themes/claude/components/ArticleInfo.js @@ -0,0 +1,64 @@ +import SmartLink from '@/components/SmartLink' +import { useGlobal } from '@/lib/global' +import { siteConfig } from '@/lib/config' +import { formatDateFmt } from '@/lib/utils/formatDate' +import NotionIcon from '@/components/NotionIcon' + +/** + * 文章描述 + * @param {*} props + * @returns + */ +export default function ArticleInfo(props) { + const { post } = props + + const { locale } = useGlobal() + + return ( +
+

+ {siteConfig('POST_TITLE_ICON') && } + {post?.title} +

+ +
+ {post?.type !== 'Page' && ( +
+
+ + 发布于 + + {post.date?.start_date || post.createdTime} + + +
+ +
+ {/* {post.category && ( + + {' '} + + + {post.category} + + + )} */} + {post?.tags && + post?.tags?.length > 0 && + post?.tags.map(t => ( + + #{t} + + ))} +
+
+ )} +
+
+ ) +} diff --git a/themes/claude/components/ArticleLock.js b/themes/claude/components/ArticleLock.js new file mode 100644 index 00000000000..d9f6e978ffd --- /dev/null +++ b/themes/claude/components/ArticleLock.js @@ -0,0 +1,52 @@ +import { useGlobal } from '@/lib/global' +import { useEffect, useRef } from 'react' + +/** + * 加密文章校验组件 + * @param {password, validPassword} props + * @param password 正确的密码 + * @param validPassword(bool) 回调函数,校验正确回调入参为true + * @returns + */ +export default function ArticleLock (props) { + const { validPassword } = props + const { locale } = useGlobal() + + const submitPassword = () => { + const p = document.getElementById('password') + if (!validPassword(p?.value)) { + const tips = document.getElementById('tips') + if (tips) { + tips.innerHTML = '' + tips.innerHTML = `
${locale.COMMON.PASSWORD_ERROR}
` + } + } + } + const passwordInputRef = useRef(null) + useEffect(() => { + // 选中密码输入框并将其聚焦 + passwordInputRef.current.focus() + }, []) + + return
+
+
{locale.COMMON.ARTICLE_LOCK_TIPS}
+
+ { + if (e.key === 'Enter') { + submitPassword() + } + }} + ref={passwordInputRef} // 绑定ref到passwordInputRef变量 + className='outline-none w-full text-sm pl-5 rounded-l transition focus:shadow-lg font-light leading-10 text-black dark:bg-gray-500 bg-gray-50' + > +
+  {locale.COMMON.SUBMIT} +
+
+
+
+
+
+} diff --git a/themes/claude/components/BlogArchiveItem.js b/themes/claude/components/BlogArchiveItem.js new file mode 100644 index 00000000000..28bab810070 --- /dev/null +++ b/themes/claude/components/BlogArchiveItem.js @@ -0,0 +1,36 @@ +import SmartLink from '@/components/SmartLink' + +/** + * 归档分组文章 + * @param {*} param0 + * @returns + */ +export default function BlogArchiveItem({ archiveTitle, archivePosts }) { + return ( +
+
+ {archiveTitle} +
+ +
    + {archivePosts.map(post => { + return ( +
  • +
    + + {post.title} + + {post.date?.start_date} +
    +
  • + ) + })} +
+
+ ) +} diff --git a/themes/claude/components/BlogItem.js b/themes/claude/components/BlogItem.js new file mode 100644 index 00000000000..c039ed988f2 --- /dev/null +++ b/themes/claude/components/BlogItem.js @@ -0,0 +1,76 @@ +import LazyImage from '@/components/LazyImage' +import NotionIcon from '@/components/NotionIcon' +import NotionPage from '@/components/NotionPage' +import TwikooCommentCount from '@/components/TwikooCommentCount' +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import { formatDateFmt } from '@/lib/utils/formatDate' +import SmartLink from '@/components/SmartLink' +import CONFIG from '../config' + +export const BlogItem = props => { + const { post } = props + const { NOTION_CONFIG } = useGlobal() + const showPageCover = siteConfig('CLAUDE_POST_COVER_ENABLE', false, CONFIG) + const showPreview = + siteConfig('POST_LIST_PREVIEW', false, NOTION_CONFIG) && post.blockMap + return ( +
+
+
+ {showPageCover && ( +
+ + + +
+ )} +
+ +
+

+ + {siteConfig('POST_TITLE_ICON') && ( + + )} + {post.title} + +

+ + {/* 文章信息 */} +
+ + {post.date?.start_date || post.createdTime} + + {post?.tags && post?.tags?.length > 0 && ( +
+ {post.tags.map(t => ( + + #{t} + + ))} +
+ )} +
+ +
+ {!showPreview && post.summary} + {showPreview && post?.blockMap && ( +
+ +
+ )} +
+
+
+
+ ) +} diff --git a/themes/claude/components/BlogListPage.js b/themes/claude/components/BlogListPage.js new file mode 100644 index 00000000000..3c511c519aa --- /dev/null +++ b/themes/claude/components/BlogListPage.js @@ -0,0 +1,74 @@ +import { AdSlot } from '@/components/GoogleAdsense' +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import SmartLink from '@/components/SmartLink' +import { useRouter } from 'next/router' +import CONFIG from '../config' +import { BlogItem } from './BlogItem' + +/** + * 博客列表 + * @param {*} props + * @returns + */ +export default function BlogListPage(props) { + const { page = 1, posts, postCount } = props + const router = useRouter() + const { NOTION_CONFIG } = useGlobal() + const POSTS_PER_PAGE = siteConfig('POSTS_PER_PAGE', null, NOTION_CONFIG) + const totalPage = Math.ceil(postCount / POSTS_PER_PAGE) + const currentPage = +page + + // 博客列表嵌入广告 + const CLAUDE_POST_AD_ENABLE = siteConfig( + 'CLAUDE_POST_AD_ENABLE', + false, + CONFIG + ) + + const showPrev = currentPage > 1 + const showNext = page < totalPage + const pagePrefix = router.asPath + .split('?')[0] + .replace(/\/page\/[1-9]\d*/, '') + .replace(/\/$/, '') + .replace('.html', '') + + return ( +
+
+ {posts?.map((p, index) => ( +
+ {CLAUDE_POST_AD_ENABLE && (index + 1) % 3 === 0 && ( + + )} + {CLAUDE_POST_AD_ENABLE && index + 1 === 4 && } + +
+ ))} +
+ +
+ + NEWER POSTS + + + OLDER POSTS + +
+
+ ) +} diff --git a/themes/claude/components/BlogListScroll.js b/themes/claude/components/BlogListScroll.js new file mode 100644 index 00000000000..2252a995996 --- /dev/null +++ b/themes/claude/components/BlogListScroll.js @@ -0,0 +1,70 @@ +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import throttle from 'lodash.throttle' +import { useCallback, useEffect, useRef, useState } from 'react' +import { BlogItem } from './BlogItem' + +/** + * 滚动博客列表 + * @param {*} props + * @returns + */ +export default function BlogListScroll(props) { + const { posts } = props + const { locale, NOTION_CONFIG } = useGlobal() + const [page, updatePage] = useState(1) + const POSTS_PER_PAGE = siteConfig('POSTS_PER_PAGE', null, NOTION_CONFIG) + let hasMore = false + const postsToShow = posts + ? Object.assign(posts).slice(0, POSTS_PER_PAGE * page) + : [] + + if (posts) { + const totalCount = posts.length + hasMore = page * POSTS_PER_PAGE < totalCount + } + const handleGetMore = () => { + if (!hasMore) return + updatePage(page + 1) + } + + const targetRef = useRef(null) + + // 监听滚动自动分页加载 + const scrollTrigger = useCallback( + throttle(() => { + const scrollS = window.scrollY + window.outerHeight + const clientHeight = targetRef + ? targetRef.current + ? targetRef.current.clientHeight + : 0 + : 0 + if (scrollS > clientHeight + 100) { + handleGetMore() + } + }, 500) + ) + + useEffect(() => { + window.addEventListener('scroll', scrollTrigger) + + return () => { + window.removeEventListener('scroll', scrollTrigger) + } + }) + + return ( +
+ {postsToShow.map(p => ( + + ))} + +
+ {' '} + {hasMore ? locale.COMMON.MORE : `${locale.COMMON.NO_MORE} 😰`}{' '} +
+
+ ) +} diff --git a/themes/claude/components/BlogPostBar.js b/themes/claude/components/BlogPostBar.js new file mode 100644 index 00000000000..9efac11331d --- /dev/null +++ b/themes/claude/components/BlogPostBar.js @@ -0,0 +1,29 @@ +import { useGlobal } from '@/lib/global' + +/** + * 文章列表上方嵌入 + * @param {*} props + * @returns + */ +export default function BlogPostBar(props) { + const { tag, category } = props + const { locale } = useGlobal() + + if (tag) { + return ( +
+ + {locale.COMMON.TAGS}: {tag} +
+ ) + } else if (category) { + return ( +
+ + {locale.COMMON.CATEGORY}: {category} +
+ ) + } else { + return <> + } +} diff --git a/themes/claude/components/Catalog.js b/themes/claude/components/Catalog.js new file mode 100644 index 00000000000..9a7ada79f1e --- /dev/null +++ b/themes/claude/components/Catalog.js @@ -0,0 +1,266 @@ +import { useGlobal } from '@/lib/global' +import { siteConfig } from '@/lib/config' +import throttle from 'lodash.throttle' +import { uuidToId } from 'notion-utils' +import { useEffect, useRef, useState, useMemo, useCallback } from 'react' +import CONFIG from '../config' + +/** + * 目录导航组件 — Claude Code Docs 风格 + * + * 行为: + * 1. 默认显示 L1 + L2 目录项 + * 2. 滚动到某个 L2 时,高亮该 L2 及其父 L1;同时自动展开该 L2 下的 L3 子级 + * 3. 可配置 CLAUDE_TOC_SHOW_LEVEL3 控制是否显示第三级 + * 4. 点击 "On this page" 标题回到页面顶部 + * 5. 高亮颜色:浅色模式 = 加粗黑色,深色模式 = 陶土色 (terracotta) + */ +const Catalog = ({ post }) => { + const { locale } = useGlobal() + const tRef = useRef(null) + const clickLockRef = useRef(false) + const [activeSection, setActiveSection] = useState(null) + + // 配置 + const showLevel3 = siteConfig('CLAUDE_TOC_SHOW_LEVEL3', true, CONFIG) + const scrollBehavior = siteConfig('CLAUDE_TOC_SCROLL_BEHAVIOR', 'instant', CONFIG) + + // 最大深度:如果不显示 L3 则只显示到 L2 (indentLevel < 2),否则到 L3 (indentLevel < 3) + const maxDepth = showLevel3 ? 3 : 2 + + // 过滤 TOC + const filteredToc = useMemo(() => { + if (!post?.toc) return [] + return post.toc.filter(item => item.indentLevel < maxDepth) + }, [post?.toc, maxDepth]) + + // 构建层级关系 + const tocHierarchy = useMemo(() => { + const hierarchy = new Map() + const parentStack = [] + + filteredToc.forEach((item, index) => { + const id = uuidToId(item.id) + + // 回退栈直到找到比当前层级更小的父级 + while (parentStack.length > 0 && parentStack[parentStack.length - 1].level >= item.indentLevel) { + parentStack.pop() + } + + const parentId = parentStack.length > 0 ? parentStack[parentStack.length - 1].id : null + + hierarchy.set(id, { + item, + index, + parentId, + children: [], + indentLevel: item.indentLevel + }) + + // 将当前项添加为父级的子项 + if (parentId) { + hierarchy.get(parentId)?.children.push(id) + } + + parentStack.push({ id, level: item.indentLevel }) + }) + + return hierarchy + }, [filteredToc]) + + // 获取某个 ID 的所有祖先 ID(含自身) + const getAncestorChain = useCallback((targetId) => { + const chain = new Set() + let current = targetId + while (current) { + chain.add(current) + const node = tocHierarchy.get(current) + current = node?.parentId + } + return chain + }, [tocHierarchy]) + + // 获取当前激活的 L2 section 的 ID(用于展开其 L3 子级) + const activeL2Id = useMemo(() => { + if (!activeSection) return null + const node = tocHierarchy.get(activeSection) + if (!node) return null + + // 如果当前是 L2 (indentLevel=1),返回自身 + if (node.indentLevel === 1) return activeSection + // 如果当前是 L3 (indentLevel=2),返回其 L2 父级 + if (node.indentLevel === 2) return node.parentId + // 如果当前是 L1 (indentLevel=0),无 L2 激活 + return null + }, [activeSection, tocHierarchy]) + + // 高亮集合:当前项 + 所有祖先 + const highlightedIds = useMemo(() => { + if (!activeSection) return new Set() + return getAncestorChain(activeSection) + }, [activeSection, getAncestorChain]) + + // 判断某项是否应该显示 + const shouldShowItem = useCallback((id, indentLevel) => { + // L1 总是显示 + if (indentLevel === 0) return true + // L2 总是显示 + if (indentLevel === 1) return true + // L3 仅在其父 L2 激活时显示(或者 showLevel3 关闭时已被过滤) + if (indentLevel === 2) { + if (!showLevel3) return false + const node = tocHierarchy.get(id) + if (!node) return false + // 父级 L2 是否是当前激活的 L2 + return node.parentId === activeL2Id + } + return false + }, [showLevel3, tocHierarchy, activeL2Id]) + + // 监听滚动事件 + useEffect(() => { + if (!post || !filteredToc || filteredToc.length < 1) return + + const throttleMs = 100 + + const actionSectionScrollSpy = throttle(() => { + if (clickLockRef.current) return + + const sections = document.getElementsByClassName('notion-h') + if (!sections || sections.length === 0) return + + const container = document.querySelector('#container-inner') + if (!container) return + const containerTop = container.getBoundingClientRect().top + + let currentSectionId = null + + for (let i = 0; i < sections.length; ++i) { + const section = sections[i] + if (!section || !(section instanceof Element)) continue + + const bbox = section.getBoundingClientRect() + const relativeTop = bbox.top - containerTop + + if (relativeTop <= 30) { + currentSectionId = section.getAttribute('data-id') + } else { + break + } + } + + if (!currentSectionId && sections.length > 0) { + currentSectionId = sections[0].getAttribute('data-id') + } + + if (currentSectionId !== activeSection) { + setActiveSection(currentSectionId) + + // 滚动目录使当前项可见 + const index = filteredToc.findIndex( + obj => uuidToId(obj.id) === currentSectionId + ) + if (index !== -1 && tRef?.current) { + const itemHeight = 28 + const containerHeight = tRef.current.clientHeight + const scrollTop = Math.max(0, itemHeight * index - containerHeight / 2 + itemHeight / 2) + tRef.current.scrollTo({ top: scrollTop, behavior: scrollBehavior }) + } + } + }, throttleMs) + + const content = document.querySelector('#container-inner') + if (!content) return + + content.addEventListener('scroll', actionSectionScrollSpy) + setTimeout(() => actionSectionScrollSpy(), 300) + + return () => { + content?.removeEventListener('scroll', actionSectionScrollSpy) + } + }, [post, filteredToc, tocHierarchy]) + + // 点击 "On this page" 标题回到顶部 + const handleTitleClick = () => { + const container = document.querySelector('#container-inner') + if (container) { + container.scrollTo({ top: 0, behavior: scrollBehavior }) + } + } + + if (!post || !filteredToc || filteredToc.length < 1) { + return <> + } + + return ( +
+ {/* 标题 — 点击回到顶部 */} +
+ + {locale.COMMON.TABLE_OF_CONTENTS} +
+ + {/* 目录列表 */} +
+ +
+
+ ) +} + +export default Catalog diff --git a/themes/claude/components/DarkModeButton.js b/themes/claude/components/DarkModeButton.js new file mode 100644 index 00000000000..c491981bb15 --- /dev/null +++ b/themes/claude/components/DarkModeButton.js @@ -0,0 +1,96 @@ +import { Moon, Sun } from '@/components/HeroIcons' +import { useEffect, useState } from 'react' + +const getLocalStorageDarkMode = () => { + if (typeof window === 'undefined') return null + try { + const value = localStorage.getItem('darkMode') + if (value === 'dark' || value === 'true') return true + if (value === 'light' || value === 'false') return false + return null + } catch { + return null + } +} + +const readDomDarkMode = () => { + if (typeof document === 'undefined') return false + const root = document.documentElement + const dataTheme = root.getAttribute('data-theme') + if (dataTheme === 'dark') return true + if (dataTheme === 'light') return false + return root.classList.contains('dark') +} + +const applyTheme = isDark => { + if (typeof document === 'undefined') return + const root = document.documentElement + const mode = isDark ? 'dark' : 'light' + root.classList.remove(isDark ? 'light' : 'dark') + root.classList.add(mode) + root.setAttribute('data-theme', mode) + root.style.colorScheme = mode + try { + localStorage.setItem('darkMode', String(isDark)) + } catch {} +} + +const withInstantThemeSwitch = callback => { + if (typeof window === 'undefined' || typeof document === 'undefined') { + callback() + return + } + + const root = document.documentElement + root.classList.add('claude-theme-switching') + callback() + + window.requestAnimationFrame(() => { + window.requestAnimationFrame(() => { + root.classList.remove('claude-theme-switching') + }) + }) +} + +export default function DarkModeButton({ className = '' }) { + const [isDarkMode, setIsDarkMode] = useState(false) + + useEffect(() => { + if (typeof window === 'undefined') return undefined + + const fromStorage = getLocalStorageDarkMode() + const initial = + fromStorage !== null ? fromStorage : readDomDarkMode() || window.matchMedia('(prefers-color-scheme: dark)').matches + + withInstantThemeSwitch(() => applyTheme(initial)) + setIsDarkMode(initial) + + const root = document.documentElement + const observer = new MutationObserver(() => { + setIsDarkMode(readDomDarkMode()) + }) + observer.observe(root, { + attributes: true, + attributeFilter: ['class', 'data-theme'] + }) + + return () => observer.disconnect() + }, []) + + const handleToggle = () => { + const next = !readDomDarkMode() + withInstantThemeSwitch(() => applyTheme(next)) + setIsDarkMode(next) + } + + return ( +
+
+ {isDarkMode ? : } +
+
+ ) +} diff --git a/themes/claude/components/ExampleRecentComments.js b/themes/claude/components/ExampleRecentComments.js new file mode 100644 index 00000000000..663151a14f4 --- /dev/null +++ b/themes/claude/components/ExampleRecentComments.js @@ -0,0 +1,35 @@ +import SmartLink from '@/components/SmartLink' +import { RecentComments } from '@waline/client' +import { useEffect, useState } from 'react' +import { siteConfig } from '@/lib/config' + +/** + * @see https://waline.js.org/guide/get-started.html + * @param {*} props + * @returns + */ +const ExampleRecentComments = (props) => { + const [comments, updateComments] = useState([]) + const [onLoading, changeLoading] = useState(true) + useEffect(() => { + RecentComments({ + serverURL: siteConfig('COMMENT_WALINE_SERVER_URL'), + count: 5 + }).then(({ comments }) => { + changeLoading(false) + updateComments(comments) + }) + }, []) + + return <> + {onLoading &&
Loading...
} + {!onLoading && comments && comments.length === 0 &&
No Comments
} + {!onLoading && comments && comments.length > 0 && comments.map((comment) =>
+
+
--{comment.nick}
+
)} + + +} + +export default ExampleRecentComments diff --git a/themes/claude/components/Footer.js b/themes/claude/components/Footer.js new file mode 100644 index 00000000000..abd25a26935 --- /dev/null +++ b/themes/claude/components/Footer.js @@ -0,0 +1,24 @@ +import { siteConfig } from '@/lib/config' +import DarkModeButton from './DarkModeButton' +import CONFIG from '../config' + +/** + * 页脚 — 紧凑风格 + */ +export default function Footer(props) { + const d = new Date() + const currentYear = d.getFullYear() + const since = siteConfig('SINCE') + const customCopyright = siteConfig('CLAUDE_FOOTER_COPYRIGHT', '', CONFIG) + const copyrightDate = + parseInt(since) < currentYear ? since + '-' + currentYear : currentYear + + return ( +
+ +
+ {customCopyright || `© ${copyrightDate} ${siteConfig('AUTHOR')}`} +
+
+ ) +} diff --git a/themes/claude/components/JumpToTopButton.js b/themes/claude/components/JumpToTopButton.js new file mode 100644 index 00000000000..358c9372a55 --- /dev/null +++ b/themes/claude/components/JumpToTopButton.js @@ -0,0 +1,35 @@ +import { useGlobal } from '@/lib/global' +import { useEffect, useState } from 'react' + +/** + * 跳转到网页顶部 + * 当屏幕下滑500像素后会出现该控件 + * @param targetRef 关联高度的目标html标签 + * @param showPercent 是否显示百分比 + * @returns {JSX.Element} + * @constructor + */ +const JumpToTopButton = () => { + const { locale } = useGlobal() + const [show, switchShow] = useState(false) + const scrollListener = () => { + const scrollY = window.pageYOffset + const shouldShow = scrollY > 200 + if (shouldShow !== show) { + switchShow(shouldShow) + } + } + + useEffect(() => { + document.addEventListener('scroll', scrollListener) + return () => document.removeEventListener('scroll', scrollListener) + }, [show]) + + return
window.scrollTo({ top: 0, behavior: 'smooth' })} + > +
+} + +export default JumpToTopButton diff --git a/themes/claude/components/MenuItemCollapse.js b/themes/claude/components/MenuItemCollapse.js new file mode 100644 index 00000000000..9de40a79ea5 --- /dev/null +++ b/themes/claude/components/MenuItemCollapse.js @@ -0,0 +1,92 @@ +import Collapse from '@/components/Collapse' +import SmartLink from '@/components/SmartLink' +import { useState } from 'react' + +/** + * 折叠菜单 + * @param {*} param0 + * @returns + */ +export const MenuItemCollapse = props => { + const { link } = props + const [show, changeShow] = useState(false) + const hasSubMenu = link?.subMenus?.length > 0 + + const [isOpen, changeIsOpen] = useState(false) + + const toggleShow = () => { + changeShow(!show) + } + + const toggleOpenSubMenu = () => { + changeIsOpen(!isOpen) + } + + if (!link || !link.show) { + return null + } + + return ( + <> +
+ {!hasSubMenu && ( + + + {link?.icon && ( + + + + )} + {link?.name} + + + )} + {hasSubMenu && ( +
+ + {link?.icon && ( + + + + )} + {link?.name} + + +
+ )} +
+ + {/* 折叠子菜单 */} + {hasSubMenu && ( + + {link.subMenus.map((sLink, index) => { + return ( +
+ + + {sLink?.icon && ( + + + + )} + {sLink.title} + + +
+ ) + })} +
+ )} + + ) +} diff --git a/themes/claude/components/MenuItemDrop.js b/themes/claude/components/MenuItemDrop.js new file mode 100644 index 00000000000..fa718f13fe6 --- /dev/null +++ b/themes/claude/components/MenuItemDrop.js @@ -0,0 +1,78 @@ +import SmartLink from '@/components/SmartLink' +import { useRouter } from 'next/router' +import { useState } from 'react' + +export const MenuItemDrop = ({ link }) => { + const hasSubMenu = link?.subMenus?.length > 0 + const [show, changeShow] = useState(false) + const router = useRouter() + + + + if (!link || !link.show) { + return null + } + const selected = router.pathname === link.href || router.asPath === link.href + + + return ( +
+ {!hasSubMenu && ( + + {link?.name} + + ) + } + + + {hasSubMenu && ( + <> +
changeShow(true)} + onMouseOut={() => changeShow(false)} + className={ + 'relative ' + + (selected + ? 'bg-green-600 text-white hover:text-white' + : 'hover:text-green-600') + }> +
+ + {link?.icon && } {link?.name} + + {hasSubMenu && ( + + )} +
+ + {/* 子菜單 */} +
    + {link?.subMenus?.map((sLink, index) => { + return ( +
  • + + + {link?.icon &&   } + {sLink.title} + + +
  • + ) + })} +
+
+ + + )} + +
+ + ) +} diff --git a/themes/claude/components/MenuList.js b/themes/claude/components/MenuList.js new file mode 100644 index 00000000000..824e8fb62b2 --- /dev/null +++ b/themes/claude/components/MenuList.js @@ -0,0 +1,101 @@ +import { siteConfig } from '@/lib/config' +import { useGlobal } from '@/lib/global' +import { useRouter } from 'next/router' +import CONFIG from '../config' +import SmartLink from '@/components/SmartLink' + +/** + * 菜单导航 — Claude Docs 风格 + * 简洁文字链接,带左边框活跃指示器 + */ +export const MenuList = ({ customNav, customMenu }) => { + const { locale } = useGlobal() + const router = useRouter() + + const renderMenuIcon = icon => { + if (!icon || typeof icon !== 'string') { + return null + } + const normalizedIcon = icon.trim() + if (!normalizedIcon) { + return null + } + + // Notion icon 字段可直接写 Font Awesome 类名,例如 "fas fa-clock-rotate-left" + const isFontAwesomeIcon = /(^|\s)fa[srldb]?\s/.test(normalizedIcon) || /(^|\s)fa-[\w-]+/.test(normalizedIcon) + if (isFontAwesomeIcon) { + return