Skip to content

Commit

Permalink
fix: theme default types
Browse files Browse the repository at this point in the history
  • Loading branch information
Blackman99 committed Jan 2, 2025
1 parent 2176a60 commit 08259ab
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 16 deletions.
1 change: 1 addition & 0 deletions packages/docs-site/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"module": "nodenext",
"moduleResolution": "nodenext",
"resolveJsonModule": true,
"allowImportingTsExtensions": true,
"allowJs": true,
"checkJs": true,
"strict": true,
Expand Down
2 changes: 1 addition & 1 deletion packages/theme-default/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ declare module 'virtual:sveltepress/theme-default' {
}

export interface DefaultThemeOptions {
navbar: Array<LinkItem>
navbar?: Array<LinkItem>
github?: string
logo?: string
sidebar?: Record<string, LinkItem[]>
Expand Down
61 changes: 46 additions & 15 deletions packages/vite/__tests__/real-world.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,53 @@
<ul>
<li>Config <code>highlighter.twoslash</code> to <code>true</code></li>
</ul>
<pre><code class="language-ts">import { defaultTheme } from '@sveltepress/theme-default'
import { sveltepress } from '@sveltepress/vite'
import { defineConfig } from 'vite'

export default defineConfig({
plugins: [
sveltepress({
theme: defaultTheme({
highlighter: { // [svp! ++]
twoslash: true // [svp! ++]
} // [svp! ++]
})
})
]
})
</code></pre>
<div class="svp-code-block-wrapper"><div class="svp-code-block--title">vite.config.(js|ts)</div>

<div class="svp-code-block">
<div class="svp-code-block--command-line svp-code-block--diff-bg-add" style="top: calc(12em + 12px);"><div class="svp-code-block--diff-add">+</div></div>
<div class="svp-code-block--command-line svp-code-block--diff-bg-add" style="top: calc(13.5em + 12px);"><div class="svp-code-block--diff-add">+</div></div>
<div class="svp-code-block--command-line svp-code-block--diff-bg-add" style="top: calc(15em + 12px);"><div class="svp-code-block--diff-add">+</div></div>
<!-- svelte-ignore a11y_no_noninteractive_tabindex -->
<pre class="shiki shiki-themes vitesse-light night-owl twoslash lsp" style="background-color:#ffffff;--shiki-dark-bg:#011627;color:#393a34;--shiki-dark:#d6deeb" tabindex="0"><code><span class="line"><span style="color:#1E754F;font-style:inherit;--shiki-dark:#C792EA;--shiki-dark-font-style:italic">import</span><span style="color:#999999;--shiki-dark:#D6DEEB"> &#123;</span><span style="color:#B07D48;--shiki-dark:#D6DEEB"> </span><span style="color:#B07D48;--shiki-dark:#D6DEEB"><Floating class="twoslash-hover"><span>defaultTheme</span>{#snippet floatingContent()}<span class="twoslash-popup-container"><code class="twoslash-popup-code"><span style="color:#AB5959;--shiki-dark:#C792EA">const</span><span style="color:#B07D48;font-style:inherit;--shiki-dark:#82AAFF;--shiki-dark-font-style:italic"> defaultTheme</span><span style="color:#999999;--shiki-dark:#7FDBCA">:</span><span style="color:#2E8F82;font-style:inherit;--shiki-dark:#FFCB8B;--shiki-dark-font-style:italic"> ThemeDefault</span></code></span>{/snippet}</Floating></span><span style="color:#999999;--shiki-dark:#D6DEEB"> &#125;</span><span style="color:#1E754F;font-style:inherit;--shiki-dark:#C792EA;--shiki-dark-font-style:italic"> from</span><span style="color:#B5695977;--shiki-dark:#D9F5DD"> '</span><span style="color:#B56959;--shiki-dark:#ECC48D">@sveltepress/theme-default</span><span style="color:#B5695977;--shiki-dark:#D9F5DD">'</span></span>
<span class="line"><span style="color:#1E754F;font-style:inherit;--shiki-dark:#C792EA;--shiki-dark-font-style:italic">import</span><span style="color:#999999;--shiki-dark:#D6DEEB"> &#123;</span><span style="color:#B07D48;--shiki-dark:#D6DEEB"> </span><span style="color:#B07D48;--shiki-dark:#D6DEEB"><Floating class="twoslash-hover"><span>sveltepress</span>{#snippet floatingContent()}<span class="twoslash-popup-container"><code class="twoslash-popup-code"><span style="color:#AB5959;--shiki-dark:#C792EA">const</span><span style="color:#59873A;font-style:inherit;--shiki-dark:#82AAFF;--shiki-dark-font-style:italic"> sveltepress</span><span style="color:#999999;--shiki-dark:#7FDBCA">:</span><span style="color:#999999;--shiki-dark:#D9F5DD"> (</span><span style="color:#B07D48;font-style:inherit;--shiki-dark:#D7DBE0;--shiki-dark-font-style:italic">options</span><span style="color:#AB5959;--shiki-dark:#7FDBCA">?</span><span style="color:#999999;--shiki-dark:#7FDBCA">:</span><span style="color:#2E8F82;font-style:inherit;--shiki-dark:#FFCB8B;--shiki-dark-font-style:italic"> SveltepressVitePluginOptions</span><span style="color:#999999;--shiki-dark:#D9F5DD">)</span><span style="color:#999999;--shiki-dark:#C792EA"> =></span><span style="color:#2E8F82;font-style:inherit;--shiki-dark:#FFCB8B;--shiki-dark-font-style:italic"> PluginOption</span></code></span>{/snippet}</Floating></span><span style="color:#999999;--shiki-dark:#D6DEEB"> &#125;</span><span style="color:#1E754F;font-style:inherit;--shiki-dark:#C792EA;--shiki-dark-font-style:italic"> from</span><span style="color:#B5695977;--shiki-dark:#D9F5DD"> '</span><span style="color:#B56959;--shiki-dark:#ECC48D">@sveltepress/vite</span><span style="color:#B5695977;--shiki-dark:#D9F5DD">'</span></span>
<span class="line"><span style="color:#1E754F;font-style:inherit;--shiki-dark:#C792EA;--shiki-dark-font-style:italic">import</span><span style="color:#999999;--shiki-dark:#D6DEEB"> &#123;</span><span style="color:#B07D48;--shiki-dark:#D6DEEB"> </span><span style="color:#B07D48;--shiki-dark:#D6DEEB"><Floating class="twoslash-hover"><span>defineConfig</span>{#snippet floatingContent()}<span class="twoslash-popup-container"><code class="twoslash-popup-code"><span style="color:#AB5959;--shiki-dark:#C792EA">function</span><span style="color:#59873A;font-style:inherit;--shiki-dark:#82AAFF;--shiki-dark-font-style:italic"> defineConfig</span><span style="color:#999999;--shiki-dark:#D9F5DD">(</span><span style="color:#B07D48;--shiki-dark:#D7DBE0">config</span><span style="color:#999999;--shiki-dark:#7FDBCA">:</span><span style="color:#2E8F82;--shiki-dark:#FFCB8B"> UserConfig</span><span style="color:#999999;--shiki-dark:#D9F5DD">)</span><span style="color:#999999;--shiki-dark:#7FDBCA">:</span><span style="color:#2E8F82;--shiki-dark:#FFCB8B"> UserConfig</span><span style="color:#999999;--shiki-dark:#D6DEEB"> (</span><span style="color:#393A34;--shiki-dark:#D6DEEB">+</span><span style="color:#2F798A;--shiki-dark:#F78C6C">3</span><span style="color:#2E8F82;--shiki-dark:#FFCB8B"> overloads</span><span style="color:#999999;--shiki-dark:#D6DEEB">)</span></code><div class="twoslash-popup-docs"><p>Type helper to make it easier to use vite.config.ts
accepts a direct</p>
<p>UserConfig</p>
<p>object, or a function that returns it.
The function receives a</p>
<p>ConfigEnv</p>
<p>object.</p></div></span>{/snippet}</Floating></span><span style="color:#999999;--shiki-dark:#D6DEEB"> &#125;</span><span style="color:#1E754F;font-style:inherit;--shiki-dark:#C792EA;--shiki-dark-font-style:italic"> from</span><span style="color:#B5695977;--shiki-dark:#D9F5DD"> '</span><span style="color:#B56959;--shiki-dark:#ECC48D">vite</span><span style="color:#B5695977;--shiki-dark:#D9F5DD">'</span></span>
<span class="line"></span>
<span class="line"><span style="color:#1E754F;font-style:inherit;--shiki-dark:#C792EA;--shiki-dark-font-style:italic">export</span><span style="color:#1E754F;font-style:inherit;--shiki-dark:#C792EA;--shiki-dark-font-style:italic"> default</span><span style="color:#59873A;font-style:inherit;--shiki-dark:#82AAFF;--shiki-dark-font-style:italic"> </span><span style="color:#59873A;font-style:inherit;--shiki-dark:#82AAFF;--shiki-dark-font-style:italic"><Floating class="twoslash-hover"><span>defineConfig</span>{#snippet floatingContent()}<span class="twoslash-popup-container"><code class="twoslash-popup-code"><span style="color:#AB5959;--shiki-dark:#C792EA">function</span><span style="color:#59873A;font-style:inherit;--shiki-dark:#82AAFF;--shiki-dark-font-style:italic"> defineConfig</span><span style="color:#999999;--shiki-dark:#D9F5DD">(</span><span style="color:#B07D48;--shiki-dark:#D7DBE0">config</span><span style="color:#999999;--shiki-dark:#7FDBCA">:</span><span style="color:#2E8F82;--shiki-dark:#FFCB8B"> UserConfig</span><span style="color:#999999;--shiki-dark:#D9F5DD">)</span><span style="color:#999999;--shiki-dark:#7FDBCA">:</span><span style="color:#2E8F82;--shiki-dark:#FFCB8B"> UserConfig</span><span style="color:#999999;--shiki-dark:#D6DEEB"> (</span><span style="color:#393A34;--shiki-dark:#D6DEEB">+</span><span style="color:#2F798A;--shiki-dark:#F78C6C">3</span><span style="color:#2E8F82;--shiki-dark:#FFCB8B"> overloads</span><span style="color:#999999;--shiki-dark:#D6DEEB">)</span></code><div class="twoslash-popup-docs"><p>Type helper to make it easier to use vite.config.ts
accepts a direct</p>
<p>UserConfig</p>
<p>object, or a function that returns it.
The function receives a</p>
<p>ConfigEnv</p>
<p>object.</p></div></span>{/snippet}</Floating></span><span style="color:#999999;--shiki-dark:#D6DEEB">(&#123;</span></span>
<span class="line"><span style="color:#998418;--shiki-dark:#D6DEEB"> </span><span style="color:#998418;--shiki-dark:#D6DEEB"><Floating class="twoslash-hover"><span>plugins</span>{#snippet floatingContent()}<span class="twoslash-popup-container"><code class="twoslash-popup-code"><span style="color:#B07D48;--shiki-dark:#D6DEEB">UserConfig</span><span style="color:#999999;font-style:inherit;--shiki-dark:#C792EA;--shiki-dark-font-style:italic">.</span><span style="color:#B07D48;--shiki-dark:#BAEBE2">plugins</span><span style="color:#AB5959;--shiki-dark:#C792EA">?:</span><span style="color:#B07D48;--shiki-dark:#D6DEEB"> PluginOption</span><span style="color:#999999;--shiki-dark:#D6DEEB">[]</span><span style="color:#AB5959;--shiki-dark:#C792EA"> |</span><span style="color:#AB5959;--shiki-dark:#82AAFF"> undefined</span></code><div class="twoslash-popup-docs"><p>Array of vite plugins to use.</p></div></span>{/snippet}</Floating></span><span style="color:#999999;--shiki-dark:#D6DEEB">: [</span></span>
<span class="line"><span style="color:#59873A;font-style:inherit;--shiki-dark:#82AAFF;--shiki-dark-font-style:italic"> </span><span style="color:#59873A;font-style:inherit;--shiki-dark:#82AAFF;--shiki-dark-font-style:italic"><Floating class="twoslash-hover"><span>sveltepress</span>{#snippet floatingContent()}<span class="twoslash-popup-container"><code class="twoslash-popup-code"><span style="color:#AB5959;--shiki-dark:#C792EA">function</span><span style="color:#59873A;font-style:inherit;--shiki-dark:#82AAFF;--shiki-dark-font-style:italic"> sveltepress</span><span style="color:#999999;--shiki-dark:#D9F5DD">(</span><span style="color:#B07D48;--shiki-dark:#D7DBE0">options</span><span style="color:#AB5959;--shiki-dark:#7FDBCA">?</span><span style="color:#999999;--shiki-dark:#7FDBCA">:</span><span style="color:#2E8F82;--shiki-dark:#FFCB8B"> SveltepressVitePluginOptions</span><span style="color:#999999;--shiki-dark:#D9F5DD">)</span><span style="color:#999999;--shiki-dark:#7FDBCA">:</span><span style="color:#2E8F82;--shiki-dark:#FFCB8B"> PluginOption</span></code></span>{/snippet}</Floating></span><span style="color:#999999;--shiki-dark:#D6DEEB">(&#123;</span></span>
<span class="line"><span style="color:#998418;--shiki-dark:#D6DEEB"> </span><span style="color:#998418;--shiki-dark:#D6DEEB"><Floating class="twoslash-hover"><span>theme</span>{#snippet floatingContent()}<span class="twoslash-popup-container"><code class="twoslash-popup-code"><span style="color:#B07D48;--shiki-dark:#D6DEEB">SveltepressVitePluginOptions</span><span style="color:#999999;font-style:inherit;--shiki-dark:#C792EA;--shiki-dark-font-style:italic">.</span><span style="color:#B07D48;--shiki-dark:#BAEBE2">theme</span><span style="color:#AB5959;--shiki-dark:#C792EA">?:</span><span style="color:#B07D48;--shiki-dark:#D6DEEB"> ResolvedTheme</span><span style="color:#AB5959;--shiki-dark:#C792EA"> |</span><span style="color:#AB5959;--shiki-dark:#82AAFF"> undefined</span></code></span>{/snippet}</Floating></span><span style="color:#999999;--shiki-dark:#D6DEEB">: </span><span style="color:#59873A;font-style:inherit;--shiki-dark:#82AAFF;--shiki-dark-font-style:italic"><Floating class="twoslash-hover"><span>defaultTheme</span>{#snippet floatingContent()}<span class="twoslash-popup-container"><code class="twoslash-popup-code"><span style="color:#AB5959;--shiki-dark:#C792EA">function</span><span style="color:#59873A;font-style:inherit;--shiki-dark:#82AAFF;--shiki-dark-font-style:italic"> defaultTheme</span><span style="color:#999999;--shiki-dark:#D9F5DD">(</span><span style="color:#B07D48;--shiki-dark:#D7DBE0">themeOptions</span><span style="color:#AB5959;--shiki-dark:#7FDBCA">?</span><span style="color:#999999;--shiki-dark:#7FDBCA">:</span><span style="color:#2E8F82;--shiki-dark:#FFCB8B"> DefaultThemeOptions</span><span style="color:#999999;--shiki-dark:#7FDBCA"> |</span><span style="color:#AB5959;--shiki-dark:#C5E478"> undefined</span><span style="color:#999999;--shiki-dark:#D9F5DD">)</span><span style="color:#999999;--shiki-dark:#7FDBCA">:</span><span style="color:#2E8F82;--shiki-dark:#FFCB8B"> ResolvedTheme</span></code></span>{/snippet}</Floating></span><span style="color:#999999;--shiki-dark:#D6DEEB">(&#123;</span></span>
<span class="line"><span style="color:#998418;--shiki-dark:#D6DEEB"> </span><span style="color:#998418;--shiki-dark:#D6DEEB"><Floating class="twoslash-hover"><span>highlighter</span>{#snippet floatingContent()}<span class="twoslash-popup-container"><code class="twoslash-popup-code"><pre class="shiki shiki-themes vitesse-light night-owl" style="background-color:#ffffff;--shiki-dark-bg:#011627;color:#393a34;--shiki-dark:#d6deeb" tabindex="0"><code><span class="line"><span style="color:#B07D48;--shiki-dark:#D6DEEB">DefaultThemeOptions</span><span style="color:#999999;font-style:inherit;--shiki-dark:#C792EA;--shiki-dark-font-style:italic">.</span><span style="color:#B07D48;--shiki-dark:#BAEBE2">highlighter</span><span style="color:#AB5959;--shiki-dark:#C792EA">?:</span><span style="color:#999999;--shiki-dark:#D6DEEB"> &#123;</span></span>
<span class="line"><span style="color:#999999;--shiki-dark:#D6DEEB"> languages?: </span><span style="color:#B07D48;--shiki-dark:#D6DEEB">BundledLanguage</span><span style="color:#999999;--shiki-dark:#D6DEEB">[];</span></span>
<span class="line"><span style="color:#B07D48;--shiki-dark:#D6DEEB"> themeLight</span><span style="color:#AB5959;--shiki-dark:#C792EA">?:</span><span style="color:#B07D48;--shiki-dark:#D6DEEB"> string</span><span style="color:#999999;--shiki-dark:#D6DEEB">;</span></span>
<span class="line"><span style="color:#B07D48;--shiki-dark:#D6DEEB"> themeDark</span><span style="color:#AB5959;--shiki-dark:#C792EA">?:</span><span style="color:#B07D48;--shiki-dark:#D6DEEB"> string</span><span style="color:#999999;--shiki-dark:#D6DEEB">;</span></span>
<span class="line"><span style="color:#B07D48;--shiki-dark:#D6DEEB"> twoslash</span><span style="color:#AB5959;--shiki-dark:#C792EA">?:</span><span style="color:#B07D48;--shiki-dark:#D6DEEB"> boolean</span><span style="color:#AB5959;--shiki-dark:#C792EA"> |</span><span style="color:#B07D48;--shiki-dark:#D6DEEB"> CreateTwoslashSvelteOptions</span><span style="color:#999999;--shiki-dark:#D6DEEB">;</span></span>
<span class="line"><span style="color:#999999;--shiki-dark:#D6DEEB">&#125;</span><span style="color:#AB5959;--shiki-dark:#C792EA"> |</span><span style="color:#AB5959;--shiki-dark:#82AAFF"> undefined</span></span></code></pre></code></span>{/snippet}</Floating></span><span style="color:#999999;--shiki-dark:#D6DEEB">: &#123; </span></span>
<span class="line"><span style="color:#998418;--shiki-dark:#D6DEEB"> </span><span style="color:#998418;--shiki-dark:#D6DEEB"><Floating class="twoslash-hover"><span>twoslash</span>{#snippet floatingContent()}<span class="twoslash-popup-container"><code class="twoslash-popup-code"><span style="color:#B07D48;--shiki-dark:#D6DEEB">twoslash</span><span style="color:#AB5959;--shiki-dark:#C792EA">?:</span><span style="color:#B07D48;--shiki-dark:#D6DEEB"> boolean</span><span style="color:#AB5959;--shiki-dark:#C792EA"> |</span><span style="color:#B07D48;--shiki-dark:#D6DEEB"> CreateTwoslashSvelteOptions</span><span style="color:#AB5959;--shiki-dark:#C792EA"> |</span><span style="color:#AB5959;--shiki-dark:#82AAFF"> undefined</span></code></span>{/snippet}</Floating></span><span style="color:#999999;--shiki-dark:#D6DEEB">: </span><span style="color:#1E754F;--shiki-dark:#FF5874">true</span><span style="color:#999999;--shiki-dark:#D6DEEB"> </span></span>
<span class="line"><span style="color:#999999;--shiki-dark:#D6DEEB"> &#125; </span></span>
<span class="line"><span style="color:#999999;--shiki-dark:#D6DEEB"> &#125;)</span></span>
<span class="line"><span style="color:#999999;--shiki-dark:#D6DEEB"> &#125;)</span></span>
<span class="line"><span style="color:#999999;--shiki-dark:#D6DEEB"> ]</span></span>
<span class="line"><span style="color:#999999;--shiki-dark:#D6DEEB">&#125;)</span></span></code></pre>
<div class="svp-code-block--lang">
ts
</div>
<CopyCode />

</div>
</div>
<h2>Basic type annotation</h2>

<div class="svp-code-block-wrapper">
Expand Down

0 comments on commit 08259ab

Please sign in to comment.