diff --git a/.eslintignore b/.eslintignore index f3ce7687..fd8d5b5f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,5 +1,4 @@ -.git/ -node_modules/ -!.vitepress -!.shared-components +.git +node_modules +!/.vitepress **/dist diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..bddd1e66 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,15 @@ +{ + "extends": ["@hannoeru", "plugin:markdown/recommended"], + "overrides": [ + { + "files": ["**/*.md/**"], + "rules": { + "no-undef": "off", + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-var-requires": "off", + "jsonc/no-dupe-keys": "off" + } + } + ] +} diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 44322413..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = { - root: true, - env: { - browser: true, - node: true, - }, - extends: ['@antfu/eslint-config', 'plugin:jsonc/recommended-with-json5'], - plugins: ['markdown'], - rules: { - 'no-tabs': ['error'], - 'no-unused-vars': 'off', - 'no-use-before-define': 'off', - '@typescript-eslint/no-unused-vars': 'off', - '@typescript-eslint/no-var-requires': 'off', - }, - overrides: [ - { - files: ['**/*.md'], - processor: 'markdown/markdown', - }, - { - files: ['**/*.md/*.{js,ts,json,json5}'], - rules: { - 'no-undef': 'off', - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': 'off', - '@typescript-eslint/no-var-requires': 'off', - 'jsonc/no-dupe-keys': 'off', - }, - }, - ], -} diff --git a/.gitignore b/.gitignore index 484445df..936f121d 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,6 @@ wiki/ # Algolia .algolia.env + +# vite-plugin-components +components.d.ts diff --git a/.npmrc b/.npmrc index 1f59b8f4..bf2e7648 100644 --- a/.npmrc +++ b/.npmrc @@ -1,2 +1 @@ -shared-workspace-lockfile=false shamefully-hoist=true diff --git a/.vitepress/config.js b/.vitepress/config.js index 76de7641..08b4f7e7 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -1,4 +1,5 @@ require('esbuild-register') +// eslint-disable-next-line @typescript-eslint/no-var-requires const config = require('./config/index.ts') module.exports = config.default diff --git a/.vitepress/config/index.ts b/.vitepress/config/index.ts index 7bbf94cd..a141c97b 100644 --- a/.vitepress/config/index.ts +++ b/.vitepress/config/index.ts @@ -1,14 +1,28 @@ import { UserConfig } from 'vitepress' -import { DefaultTheme } from '@windicss/vitepress-theme/config' import { metaData } from './constants' +import { mdRenderFilename } from './markdown' import head from './head' import themeConfig from './theme' +import { DefaultTheme } from '@/config' const config: UserConfig = { title: 'Windi CSS', description: metaData.description, head, themeConfig, + srcExclude: ['README.md'], + markdown: { + config(md) { + md.use(mdRenderFilename) + }, + }, + vue: { + template: { + compilerOptions: { + isCustomElement: tag => tag === 'preview-box', + }, + }, + }, } export default config diff --git a/.vitepress/config/markdown.ts b/.vitepress/config/markdown.ts new file mode 100644 index 00000000..49ee600a --- /dev/null +++ b/.vitepress/config/markdown.ts @@ -0,0 +1,23 @@ +import MarkdownIt from 'markdown-it' + +export const mdRenderFilename = (md: MarkdownIt) => { + const fence = md.renderer.rules.fence! + md.renderer.rules.fence = (...args) => { + const [tokens, idx] = args + const token = tokens[idx] + const langInfo = token.info.split(' ') + const langName = langInfo?.length ? langInfo[0] : '' + const filename = langName.length && langInfo[1] ? langInfo[1] : null + + // remove filename + token.info = langName + + const rawCode = fence(...args) + + const finalCode = filename + ? rawCode.replace(/
/, `
${filename}
`) + : rawCode + + return finalCode + } +} diff --git a/.vitepress/config/nav.ts b/.vitepress/config/nav.ts index 33e2ca35..2c89e605 100644 --- a/.vitepress/config/nav.ts +++ b/.vitepress/config/nav.ts @@ -1,4 +1,4 @@ -import type { DefaultTheme } from '@windicss/vitepress-theme/config' +import type { DefaultTheme } from '@/config' export const nav: DefaultTheme.Config['nav'] = [ { diff --git a/.vitepress/config/sidebar.ts b/.vitepress/config/sidebar.ts index 80f4cf97..a4924715 100644 --- a/.vitepress/config/sidebar.ts +++ b/.vitepress/config/sidebar.ts @@ -1,4 +1,4 @@ -import type { DefaultTheme } from '@windicss/vitepress-theme/config' +import type { DefaultTheme } from '@/config' export const sidebar: DefaultTheme.Config['sidebar'] = { '/utilities': [ diff --git a/.vitepress/config/theme.ts b/.vitepress/config/theme.ts index 073e2ae2..d1bd7206 100644 --- a/.vitepress/config/theme.ts +++ b/.vitepress/config/theme.ts @@ -1,6 +1,6 @@ -import type { DefaultTheme } from '@windicss/vitepress-theme/config' import { sidebar } from './sidebar' import { nav } from './nav' +import type { DefaultTheme } from '@/config' const themeConfig: DefaultTheme.Config = { algolia: { diff --git a/.vitepress/theme/Layout.vue b/.vitepress/theme/Layout.vue new file mode 100644 index 00000000..31c0b921 --- /dev/null +++ b/.vitepress/theme/Layout.vue @@ -0,0 +1,4 @@ + diff --git a/.vitepress/theme/NotFound.vue b/.vitepress/theme/NotFound.vue new file mode 100644 index 00000000..8b86a854 --- /dev/null +++ b/.vitepress/theme/NotFound.vue @@ -0,0 +1,10 @@ + diff --git a/.vitepress/theme/components/atoms/AppButton.vue b/.vitepress/theme/components/atoms/AppButton.vue new file mode 100644 index 00000000..36eeee62 --- /dev/null +++ b/.vitepress/theme/components/atoms/AppButton.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/.vitepress/theme/components/atoms/AppLayout.vue b/.vitepress/theme/components/atoms/AppLayout.vue new file mode 100644 index 00000000..2a9ccf2d --- /dev/null +++ b/.vitepress/theme/components/atoms/AppLayout.vue @@ -0,0 +1,5 @@ + diff --git a/.vitepress/theme/components/atoms/AppLogo.vue b/.vitepress/theme/components/atoms/AppLogo.vue new file mode 100644 index 00000000..36248c0f --- /dev/null +++ b/.vitepress/theme/components/atoms/AppLogo.vue @@ -0,0 +1,29 @@ + + + diff --git a/.vitepress/theme/components/atoms/ContentLayout.vue b/.vitepress/theme/components/atoms/ContentLayout.vue new file mode 100644 index 00000000..77ba0ee8 --- /dev/null +++ b/.vitepress/theme/components/atoms/ContentLayout.vue @@ -0,0 +1,5 @@ + diff --git a/.vitepress/theme/components/atoms/IconButton.vue b/.vitepress/theme/components/atoms/IconButton.vue new file mode 100644 index 00000000..005a7d08 --- /dev/null +++ b/.vitepress/theme/components/atoms/IconButton.vue @@ -0,0 +1,23 @@ + + + diff --git a/.vitepress/theme/components/atoms/PlayDivide.vue b/.vitepress/theme/components/atoms/PlayDivide.vue new file mode 100644 index 00000000..1816692b --- /dev/null +++ b/.vitepress/theme/components/atoms/PlayDivide.vue @@ -0,0 +1,5 @@ + diff --git a/.vitepress/theme/components/atoms/logos/Logo.vue b/.vitepress/theme/components/atoms/logos/Logo.vue new file mode 100644 index 00000000..bd86ef27 --- /dev/null +++ b/.vitepress/theme/components/atoms/logos/Logo.vue @@ -0,0 +1,59 @@ + + + diff --git a/.vitepress/theme/components/atoms/logos/NuxtJs.vue b/.vitepress/theme/components/atoms/logos/NuxtJs.vue new file mode 100644 index 00000000..4b242a41 --- /dev/null +++ b/.vitepress/theme/components/atoms/logos/NuxtJs.vue @@ -0,0 +1,7 @@ + + + diff --git a/.vitepress/theme/components/atoms/logos/ViteLogo.vue b/.vitepress/theme/components/atoms/logos/ViteLogo.vue new file mode 100644 index 00000000..0cb82479 --- /dev/null +++ b/.vitepress/theme/components/atoms/logos/ViteLogo.vue @@ -0,0 +1,31 @@ + diff --git a/.vitepress/theme/components/atoms/logos/WindiLogo.vue b/.vitepress/theme/components/atoms/logos/WindiLogo.vue new file mode 100644 index 00000000..95c1aae2 --- /dev/null +++ b/.vitepress/theme/components/atoms/logos/WindiLogo.vue @@ -0,0 +1,3 @@ + diff --git a/.vitepress/theme/components/global/ColorsPalette.vue b/.vitepress/theme/components/global/ColorsPalette.vue new file mode 100644 index 00000000..c89e74cc --- /dev/null +++ b/.vitepress/theme/components/global/ColorsPalette.vue @@ -0,0 +1,44 @@ + + + diff --git a/.vitepress/theme/components/global/Customizing.vue b/.vitepress/theme/components/global/Customizing.vue new file mode 100644 index 00000000..65c464c7 --- /dev/null +++ b/.vitepress/theme/components/global/Customizing.vue @@ -0,0 +1,10 @@ + diff --git a/.vitepress/theme/components/global/Integrations.vue b/.vitepress/theme/components/global/Integrations.vue new file mode 100644 index 00000000..3cf70cdd --- /dev/null +++ b/.vitepress/theme/components/global/Integrations.vue @@ -0,0 +1,30 @@ + + + diff --git a/.vitepress/theme/components/global/LearnMore.vue b/.vitepress/theme/components/global/LearnMore.vue new file mode 100644 index 00000000..f25ffdcf --- /dev/null +++ b/.vitepress/theme/components/global/LearnMore.vue @@ -0,0 +1,13 @@ + + + diff --git a/.vitepress/theme/components/global/PackageInfo.vue b/.vitepress/theme/components/global/PackageInfo.vue new file mode 100644 index 00000000..9f635fe4 --- /dev/null +++ b/.vitepress/theme/components/global/PackageInfo.vue @@ -0,0 +1,37 @@ + + + diff --git a/.vitepress/theme/components/global/Playground.vue b/.vitepress/theme/components/global/Playground.vue new file mode 100644 index 00000000..fb02e340 --- /dev/null +++ b/.vitepress/theme/components/global/Playground.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/.vitepress/theme/components/global/Sponsors.vue b/.vitepress/theme/components/global/Sponsors.vue new file mode 100644 index 00000000..6a15eafb --- /dev/null +++ b/.vitepress/theme/components/global/Sponsors.vue @@ -0,0 +1,72 @@ + + + diff --git a/.vitepress/theme/components/global/playground/DirectivesPlayground.vue b/.vitepress/theme/components/global/playground/DirectivesPlayground.vue new file mode 100644 index 00000000..66e17350 --- /dev/null +++ b/.vitepress/theme/components/global/playground/DirectivesPlayground.vue @@ -0,0 +1,73 @@ + + +