PageSourceSearch

https://antfu.me/projects

html antfu.me collected 2026-10-02 15:07:30 UTC 104,438 bytes, 3 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="author" content="Anthony Fu"><meta http-equiv="X-UA-Compatible" content="chrome=1"><meta name="revisit-after" content="7 days"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.svg" type="image/svg+xml"><link rel="alternate" type="application/rss+xml" title="Anthony Fu's Blog" href="/feed.xml"><meta name="msapplication-TileColor" content="#ffffff"><title>Anthony Fu</title>
1<script>!function(){const e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches,t=localStorage.getItem("vueuse-color-scheme")||"auto";("dark"===t||e&&"light"!==t)&&document.documentElement.classList.toggle("dark",!0)}()</script>
1<script type="module" crossorigin="" src="/assets/app-i8bZJj9W.js"></script>
1<link rel="modulepreload" crossorigin="" href="/assets/rolldown-runtime-hePW80VL.js"><link rel="stylesheet" crossorigin="" href="/assets/app-CcwtqiuP.css"><link rel="modulepreload" crossorigin="" href="/assets/projects-CGdyTIB1.js"><link rel="stylesheet" href="/assets/projects-Ry6RuP3w.css"><link rel="modulepreload" crossorigin="" href="/assets/vue.BHyNcdic-D2KugMlH.js"><link rel="modulepreload" crossorigin="" href="/assets/Slidev-Dzr2UuGQ.js"><link rel="modulepreload" crossorigin="" href="/assets/SponsorButtons-BS_4bhNf.js"><link rel="modulepreload" crossorigin="" href="/assets/SponsorButtonCollective-kvK_HKB6.js"></head><body class="font-sans text-gray-700 dark:text-gray-200 relative"><div id="app" data-server-rendered="true"><!--[--><header class="header z-40" data-v-f7964d7e=""><a href="/" class="w-12 h-12 absolute xl:fixed m-5 select-none outline-none" focusable="false" data-v-f7964d7e=""><svg viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg" data-v-f7964d7e="" data-v-69a3f4dd=""><title data-v-69a3f4dd="">Anthony Fu @ antfu.me</title><mask id="mask0_634_3" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="24" y="7" width="50" height="87" data-v-69a3f4dd=""><path d="M73.7892 9.12595C69.3501 1.20478 61.8262 17.7197 60.2461 21.1572C56.9356 28.6299 55.2305 35.5788 53.5 43.5C51.5438 41.4076 48.5048 36.8913 47 34.5C46 32.5 44.178 33.3348 45.2582 35.5C44.2048 33.7065 44 31 40.4582 28.8541C31.3543 28.0321 23.7209 43.6536 25 51.5C28.5029 62.7044 40 53 42.8659 47.9845C42.5649 50.8241 42.5649 54.7847 45.424 56.1298C48.5 57 49.8631 54.9342 51.8194 52.9913C50.6908 64.7236 49.2612 76.9042 53.1737 88.4123C54.9794 94.9884 61.3747 96.6324 62.0519 88.5618C62.9547 78.5482 60.4719 68.7589 57.4623 59.3431C56.6347 56.6529 55.5 54.5 54.6886 51.7956C54.6886 48 55.6585 50.6972 57.0861 52.244C58.7413 54.0375 64.309 59.3431 66.5 59.5C65 57.5 64.5348 56.8771 64.309 56.6529C61.9014 53.6638 59.0423 50.8989 56.4842 47.9845C61.6757 40.5117 66.7167 32.3663 70.1777 23.7726C71.6825 19.3637 74.8425 13.7591 73.7892 9.12595ZM43.3926 40.8853C41.7373 45.4437 39.7811 48.956 35.9439 52.0945C26.1502 60.1051 25.1428 47.741 28.6457 41.8568C33.16 32.4411 42.7154 24.0715 43.3926 40.8853ZM52.5 49C51.2962 50.7187 49.5314 53.3274 47.5 54C45.8447 54.4484 45.3488 53.2902 45.0478 51.7956C44.145 46.8636 45.725 42.0063 46.4021 37.2237C48.0574 40.3622 50.119 42.8614 52 46C52.3762 46.822 53.0267 48.1033 52.5 49ZM55.1299 56.1298C58.3652 65.9192 60.5471 76.1569 59.6442 86.3947C58.7413 95.362 55.8823 88.8607 54.7537 84.3023C52.4213 74.2887 53 63.5 54.227 53.8133C54.528 54.5606 54.9042 55.6067 55.1299 56.1298ZM71.4568 11.1436C69.8767 21.755 62.0519 36.7006 55.4308 45.0701C56.7851 38.0457 58.7413 31.2454 61.45 24.5946C61.6757 23.2495 71.6072 3.52135 71.4568 11.1436Z" fill="white" data-v-69a3f4dd=""></path></mask><g mask="url(#mask0_634_3)" data-v-69a3f4dd=""><path class="path1" d="M43.8252 39.3048C43.5 29 38 27 31 35.5C16.9959 58.4158 35 61 42.5 46C44.4559 42.5 45.5001 37 45.5001 37C44.8789 42.2731 43.8252 45.9801 43.8252 50C43.8252 56.6285 48 57.9 54.5 48.4C60.5 40.9 68.5 27.5 72 15.5C74.4792 7 70.5 4.5 64 16.5C55 31.5 50.7595 59 52.3 78C53.8038 96.5469 63 97.5 61 79.5C59.5082 66.0734 52 42.5 45.5001 33C48 38.5 57 52 65.5 58.5" stroke="black" stroke-width="2.5" stroke-linecap="round" data-v-69a3f4dd=""></path></g></svg></a><button title="Scroll to top" fixed="" right-3="" bottom-3="" w-10="" h-10="" hover:op100="" rounded-full="" hover-bg-hex-8883="" transition="" duration-300="" z-100="" print:hidden="" class="op0! pointer-events-none" data-v-f7964d7e=""><div i-ri-arrow-up-line="" data-v-f7964d7e=""></div></button><nav class="nav" data-v-f7964d7e=""><div class="spacer" data-v-f7964d7e=""></div><div class="right" print:op0="" data-v-f7964d7e=""><a href="/posts" class="" title="Blog" data-v-f7964d7e=""><span class="lt-md:hidden" data-v-f7964d7e="">Blog</span><div i-ri-article-line="" md:hidden="" data-v-f7964d7e=""></div></a><a aria-current="page" href="/projects" class="router-link-active router-link-exact-active" title="Projects" data-v-f7964d7e=""><span class="lt-md:hidden" data-v-f7964d7e="">Projects</span><div i-ri-lightbulb-line="" class="md:hidden" data-v-f7964d7e=""></div></a><a href="/talks" class="lt-md:hidden" title="Talks" data-v-f7964d7e="">Talks </a><a href="/sponsors-list" class="" title="Sponsors" data-v-f7964d7e=""><span class="lt-md:hidden" data-v-f7964d7e="">Sponsors</span><div i-ri-heart-line="" class="md:hidden" data-v-f7964d7e=""></div></a><a href="/podcasts" class="lt-md:hidden" title="Podcasts" data-v-f7964d7e=""><div i-ri-mic-line="" data-v-f7964d7e=""></div></a><a href="/photos" class="" title="Photos" data-v-f7964d7e=""><div i-ri-camera-3-line="" data-v-f7964d7e=""></div></a><a href="/demos" class="" title="Demos" data-v-f7964d7e=""><div i-ri-screenshot-line="" data-v-f7964d7e=""></div></a><a href="https://bsky.app/profile/antfu.me" target="_blank" title="Bluesky" class="lt-md:hidden" data-v-f7964d7e=""><div i-ri-bluesky-line="" data-v-f7964d7e=""></div></a><a href="https://github.com/antfu" target="_blank" title="GitHub" class="lt-md:hidden" data-v-f7964d7e=""><div i-uil-github-alt="" data-v-f7964d7e=""></div></a><a href="/feed.xml" target="_blank" title="RSS" class="lt-md:hidden" data-v-f7964d7e=""><div i-la-rss-square="" style="font-size:1.25rem;margin:0 -.125rem" data-v-f7964d7e=""></div></a><a class="select-none" title="Toggle Color Scheme" data-v-f7964d7e=""><div i-ri-sun-line="" dark:i-ri-moon-line=""></div></a></div></nav></header><main class="px-7 py-10 of-x-hidden"><!--[--><!----><div class="text-center prose m-auto mb-8"><h1 class="mb-0 slide-enter-50">Projects</h1><!----><!----><!----><!----></div><article class=""><!--[--><div><!--[--><div class="max-w-300 mx-auto" data-v-56a9b67f=""><p text-center="" mt--6="" mb5="" op50="" text-lg="" italic="" data-v-56a9b67f="">Projects that I created or maintaining.</p><div class="prose pb5 mx-auto mt10 text-center" data-v-56a9b67f=""><div flex="~ gap-2 justify-center" data-v-56a9b67f=""><a href="https://github.com/antfu" target="_blank" class="group btn-blue inline-block" data-v-56a9b67f=""><div i-ph-github-logo-duotone="" group-hover="i-ph-github-logo-fill text-blue" data-v-56a9b67f=""></div>GitHub </a><a href="https://releases.antfu.me" target="_blank" class="group btn-amber inline-block" data-v-56a9b67f=""><div i-ph-rocket-launch-duotone="" group-hover="i-ph-rocket-launch-fill text-amber" data-v-56a9b67f=""></div>Recent Releases </a><a href="https://yak.antfu.me" target="_blank" class="group btn-lime inline-block" data-v-56a9b67f=""><div i-ph-cow-duotone="" group-hover="i-ph-cow-duotone-fill text-lime" data-v-56a9b67f=""></div>Yak Map</a></div><hr data-v-56a9b67f=""></div><!--[--><div slide-enter="" style="--enter-stage:1" data-v-56a9b67f=""><div id="current-focus" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:-2;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Current Focus</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/devframes/devframe" target="_blank" title="Devframe" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><svg width="1em" height="1em" viewBox="0 0 500 500" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-4xl opacity-50" data-v-56a9b67f=""><path d="M238.464 40H66V236.007H104.577C220.688 236.007 232.79 158.437 232.79 121.733C232.79 108.867 243.38 108.867 243.38 121.733C251.318 236.701 356.35 245.457 365.527 246.223L365.542 246.224C374.619 246.981 382.561 251.521 365.542 254.548C253.592 264.765 243.758 364.282 243.38 375.634C243.002 386.986 235.438 399.851 232.79 375.634C222.957 274.603 144.289 257.954 104.577 257.954H66V460.772H238.464C358.356 460.772 452.152 371.472 452.152 251.521C452.152 131.571 356.465 40 238.464 40Z" fill="currentColor"></path></svg></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Devframe</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Framework-neutral foundation for building generic DevTools</div></div></a><a class="item relative flex items-center" href="https://github.com/vitejs/devtools" target="_blank" title="Vite DevTools" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-simple-icons-vite text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vite DevTools</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Inspect the intermediate state of Vite bundle and pipeline</div></div></a><a class="item relative flex items-center" href="https://github.com/nuxt/devtools" target="_blank" title="Nuxt DevTools" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-logos-nuxt-icon saturate-0 text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Nuxt DevTools</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Unleash Nuxt Developer Experience</div></div></a>
1<!--]--></div></div><div slide-enter="" style="--enter-stage:2" data-v-56a9b67f=""><div id="nuxt-ecosystem" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:-1;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Nuxt Ecosystem</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/nuxt/nuxt" target="_blank" title="Nuxt" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-logos-nuxt-icon saturate-0 text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Nuxt</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">The intuitive Vue Framework. (Team member)</div></div></a><a class="item relative flex items-center" href="https://github.com/nuxt/learn.nuxt.com" target="_blank" title="Nuxt Playground" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-logos-nuxt-icon saturate-0 text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Nuxt Playground</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Interactive Playground for learning Nuxt</div></div></a><a class="item relative flex items-center" href="https://github.com/nuxt/devtools" target="_blank" title="Nuxt DevTools" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-logos-nuxt-icon saturate-0 text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Nuxt DevTools</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Unleash Nuxt Developer Experience</div></div></a><a class="item relative flex items-center" href="https://github.com/nuxt/eslint" target="_blank" title="Nuxt ESLint" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-simple-icons-eslint text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Nuxt ESLint</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">All-in-one ESLint module for Nuxt</div></div></a><a class="item relative flex items-center" href="https://github.com/nuxt/icon" target="_blank" title="Nuxt Icon" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-logos-nuxt-icon saturate-0 text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Nuxt Icon</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Use thousands of icons in Nuxt</div></div></a><a class="item relative flex items-center" href="https://github.com/nuxt/test-utils" target="_blank" title="Nuxt Test Utils" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-test-tool text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Nuxt Test Utils</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Testing utilities for Nuxt powered by Vitest. (In collabration with @danielroe)</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/nuxt-server-fn" target="_blank" title="Nuxt Server Functions" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-function saturate-0 text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Nuxt Server Functions</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Server functions in client for Nuxt 3</div></div></a>
1<!--]--></div></div><div slide-enter="" style="--enter-stage:3" data-v-56a9b67f=""><div id="devtools" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:0;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">DevTools</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/devframes/devframe" target="_blank" title="Devframe" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><svg width="1em" height="1em" viewBox="0 0 500 500" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-4xl opacity-50" data-v-56a9b67f=""><path d="M238.464 40H66V236.007H104.577C220.688 236.007 232.79 158.437 232.79 121.733C232.79 108.867 243.38 108.867 243.38 121.733C251.318 236.701 356.35 245.457 365.527 246.223L365.542 246.224C374.619 246.981 382.561 251.521 365.542 254.548C253.592 264.765 243.758 364.282 243.38 375.634C243.002 386.986 235.438 399.851 232.79 375.634C222.957 274.603 144.289 257.954 104.577 257.954H66V460.772H238.464C358.356 460.772 452.152 371.472 452.152 251.521C452.152 131.571 356.465 40 238.464 40Z" fill="currentColor"></path></svg></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Devframe</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Framework-neutral foundation for building generic DevTools</div></div></a><a class="item relative flex items-center" href="https://github.com/nuxt/devtools" target="_blank" title="Nuxt DevTools" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-logos-nuxt-icon saturate-0 text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Nuxt DevTools</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Unleash Nuxt Developer Experience</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/node-modules-inspector" target="_blank" title="Node Modules Inspector" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-solar-black-hole-line-duotone text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Node Modules Inspector</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Visualize and inspect your node_modules</div></div></a><a class="item relative flex items-center" href="https://github.com/eslint/config-inspector" target="_blank" title="ESLint Config Inspector" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-simple-icons:eslint text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">ESLint Config Inspector</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A visual tool for inspecting and understanding your ESLint flat configs.</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vite-plugin-inspect" target="_blank" title="vite-plugin-inspect" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-search-locate text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vite-plugin-inspect</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Inspect the intermediate state of Vite plugins</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:4" data-v-56a9b67f=""><div id="vite-ecosystem" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:1;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Vite Ecosystem</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/vitejs/vite" target="_blank" title="Vite" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-simple-icons-vite text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vite</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Native-ESM powered web dev build tool</div></div></a><a class="item relative flex items-center" href="https://vitest.dev" target="_blank" title="Vitest" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><svg width="1em" height="1em" viewBox="0 0 152 142" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-4xl opacity-50" data-v-56a9b67f=""><path d="M113.831 45.2543L77.6931 97.5051C77.3099 98.0593 76.7558 98.4742 76.1148 98.6869C75.4738 98.8996 74.7809 98.8985 74.1412 98.6837C73.5016 98.4689 72.95 98.0522 72.5702 97.4967C72.1905 96.9413 72.0033 96.2774 72.037 95.6059L73.4834 66.7582L50.1344 61.8064C49.6353 61.7007 49.1704 61.474 48.7807 61.1465C48.391 60.8191 48.0885 60.4009 47.9002 59.929C47.7118 59.4571 47.6432 58.9461 47.7006 58.4412C47.758 57.9364 47.9395 57.4532 48.2292 57.0345L84.3675 4.7837C84.7507 4.22944 85.3048 3.81448 85.9459 3.60177C86.5869 3.38906 87.2799 3.39022 87.9196 3.60507C88.5593 3.81991 89.1109 4.23673 89.4906 4.79225C89.8704 5.34778 90.0575 6.0117 90.0237 6.68327L88.5773 35.5314L111.926 40.4827C112.425 40.5885 112.89 40.8152 113.28 41.1426C113.67 41.4701 113.972 41.8883 114.161 42.3602C114.349 42.8321 114.417 43.3431 114.36 43.8479C114.303 44.3528 114.121 44.836 113.831 45.2547L113.831 45.2543Z" fill="currentColor"></path><path d="M75.9866 141.343C75.0254 141.344 74.0735 141.156 73.1855 140.788C72.2975 140.42 71.4909 139.88 70.8122 139.2L36.6658 105.056C35.2998 103.683 34.5341 101.824 34.5366 99.8867C34.5392 97.9496 35.3098 96.0925 36.6796 94.7227C38.0493 93.3528 39.9064 92.5821 41.8435 92.5794C43.7807 92.5767 45.6399 93.3423 47.0134 94.7083L75.9866 123.678L139.105 60.5626C140.481 59.2088 142.336 58.4536 144.266 58.4615C146.197 58.4693 148.046 59.2396 149.41 60.6045C150.775 61.9695 151.546 63.8184 151.554 65.7487C151.561 67.679 150.806 69.5342 149.452 70.9101L81.1597 139.2C80.4811 139.881 79.6747 140.42 78.7869 140.788C77.8992 141.156 76.9475 141.344 75.9866 141.343Z" fill="currentColor"></path><path d="M75.9572 141.343C76.9184 141.344 77.8703 141.156 78.7583 140.788C79.6463 140.42 80.4528 139.88 81.1316 139.2L115.278 105.056C116.644 103.683 117.41 101.824 117.407 99.8867C117.405 97.9496 116.634 96.0925 115.264 94.7227C113.894 93.3528 112.037 92.5821 110.1 92.5794C108.163 92.5767 106.304 93.3423 104.93 94.7083L75.9572 123.678L12.8389 60.5626C11.4629 59.2088 9.60774 58.4536 7.67747 58.4615C5.7472 58.4693 3.89823 59.2396 2.53331 60.6045C1.16839 61.9695 0.398111 63.8184 0.390251 65.7487C0.382391 67.679 1.13759 69.5342 2.49135 70.9101L70.784 139.2C71.4627 139.881 72.2691 140.42 73.1568 140.788C74.0446 141.156 74.9963 141.344 75.9572 141.343Z" fill="currentColor" fill-opacity="0.5"></path></svg></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vitest</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">
1A blazing fast unit-test framework powered by Vite</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vite-plugin-inspect" target="_blank" title="vite-plugin-inspect" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-search-locate text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vite-plugin-inspect</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Inspect the intermediate state of Vite plugins</div></div></a><a class="item relative flex items-center" href="https://github.com/vite-pwa/vite-plugin-pwa" target="_blank" title="vite-plugin-pwa" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-ion-logo-pwa text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vite-plugin-pwa</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Zero-config PWA for Vite</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vite-plugin-vue-tracer" target="_blank" title="vite-plugin-vue-tracer" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-select-window text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vite-plugin-vue-tracer</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Trace elements and vdoms back to the source code in Vue SFC</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vite-ssg" target="_blank" title="vite-ssg" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-printer text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vite-ssg</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Server-side generation for Vite</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vite-plugin-optimize-persist" target="_blank" title="vite-plugin-optimize-persist" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-accumulation-precipitation text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vite-plugin-optimize-persist</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Persist dynamically analyzed dependencies optimization</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vite-plugin-package-config" target="_blank" title="vite-plugin-
1package-config" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-delivery-parcel text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vite-plugin-package-config</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Extend Vite config from your package.json `vite` field</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vite-plugin-vue-server-ref" target="_blank" title="vite-plugin-vue-server-ref" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-registration text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vite-plugin-vue-server-ref</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Share state between clients and Vite server</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vite-plugin-remote-assets" target="_blank" title="vite-plugin-remote-assets" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-satellite-weather text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vite-plugin-remote-assets</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Bundles your assets from remote urls with your app</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vite-plugin-psvg" target="_blank" title="vite-plugin-
1psvg" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-svg text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vite-plugin-psvg</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Programmable SVG for Vite</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vscode-vite" target="_blank" title="Vite for VS Code" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-flash text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vite for VS Code</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Take one step faster for Vite in VS Code</div></div></a><a class="item relative flex items-center" href="https://github.com/vitejs/awesome-vite" target="_blank" title="Awesome Vite" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-la-glasses-solid text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Awesome Vite</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A curated list of awesome things related to Vite.js</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:5" data-v-56a9b67f=""><div id="vue-ecosystem" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:2;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Vue Ecosystem</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/vueuse/vueuse" target="_blank" title="VueUse" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><svg width="1em" height="1em" viewBox="0 0 1000 1000" class="text-4xl opacity-50" data-v-56a9b67f=""><path fill="currentColor" d="M735.07,67.05V531.58c0,129.83-105.24,235.07-235.07,235.07S264.93,661.41,264.93,531.58V67.05h166.3V531.58a68.77,68.77,0,1,0,137.54,0V67.05Z"></path><path fill="currentColor" style="opacity:.5" d="M901.36,67.05V531.58C901.36,753.25,721.67,933,500,933S98.64,753.25,98.64,531.58V67.05H264.93V531.58c0,129.83,105.25,235.07,235.07,235.07S735.07,661.41,735.07,531.58V67.05Z"></path></svg></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">VueUse</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Collection of Composition API utils for Vue 2 and 3</div></div></a><a class="item relative flex items-center" href="https://github.com/vueuse/vue-demi" target="_blank" title="Vue Demi" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><svg width="1em" height="1em" viewBox="0 0 1000 1000" class="text-4xl opacity-50" data-v-56a9b67f=""><path d="M114.65,326.49H17.36v-3.41q0-101.85,70.55-173.54T280.23,77.85q116.07,0,187.2,65.15t71.12,164.72q0,37.54-9.39,70.27t-33,69.41q-23.62,36.71-42.67,59.75t-58.32,68L160.74,846v7.4H699.05V941H20.2V878.41l319.2-371q31.29-35.26,48.37-57.75t33.57-60.31q16.5-37.85,16.5-74.83,0-68.84-44.95-109.52T278,164.33q-74.53,0-118.91,46.09T114.65,323.08Z" fill="currentColor" style="opacity:.5"></path><path d="M605.91,538.55V450.93H692.4q69.4,0,115.22-43.24c30.53-28.82,45.8-73.65,45.8-117.66q-1.14-64.29-45.52-104.41c-29.59-26.74-68.09-38-115.5-38-30,0-57,9.9-81.08,21.28s-40.57,28.27-53.66,46.48-20.77,37.94-23,59.18h-95c2.27-55.38,23.68-112,68.45-152.94S613.88,59.78,691.26,59q114.38-1.14,186.63,60.31T954.13,273c1.51,55.39-14.7,110.26-48.65,147.81s-69.89,59.56-107.82,66v5.69q28.46,2.28,58,15.93t58.6,36.7q29,23,47.8,62.87c12.51,26.56,19.34,47.54,20.48,79.78q2.26,108.69-80.8,180.94T688.41,941q-118.35,0-192.88-59.75T416.44,730.42h93.32q6.25,51.78,56.32,87.34t125.18,35.56q87.62,1.15,139.69-45t50.92-119.48c0-47.41-17.17-77.31-51.49-106.52S752,538.55,698.09,538.55Z" fill="currentColor"></path><path d="M339.4,507.43q31.29-35.26,48.37-57.75t33.57-60.31q16.5-37.85,16.5-74.83,0-68.84-44.95-109.52T278,164.33q-74.53,0-118.91,46.09T114.65,323.08v3.41H17.36v-3.41q0-101.85,70.55-173.54T280.23,77.85q116.07,0,187.2,65.15t71.12,164.72q0,37.54-9.39,70.27t-33,69.41q-23.62,36.71-42.67,59.75" fill="currentColor" style="opacity:.5"></path></svg></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vue Demi</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Creates Universal Library for Vue 2 &amp; 3</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vue-template-promise" target="_blank" title="vue-template-promise" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-cics-region-routing text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vue-template-promise</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Template as Promise in Vue</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vue-starport" target="_blank" title="Vue Starport" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-plane-sea text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vue Starport</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Shared component across routes with animations.</div></div></a><a class="item relative flex items-center" href="https://github.com/vuejs/composition-api" target="_blank" title="@vue/composition-api" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-uim-vuejs text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">@vue/composition-api</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Vue 2 Composition API plugin</div></div></a><a class="item relative flex items-center" href="https://github.com/vue-reactivity" target="_blank" title="Vue Reactivity" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><svg width="1em" height="1em" viewBox="0 0 283.46 283.46" class="text-4xl opacity-50" data-v-56a9b67f=""><path d="M205.67,137.51a91.5,91.5,0,0,0-3.9-18.31,90.15,90.15,0,0,0-3.68-9.45A78.68,78.68,0,0,0,174.67,80q-15.16-11.8-35.81-15a89.48,89.48,0,0,0-9.73-1.29c-2.9-.2-5.74-.29-8.52-.29H15.45V234.84H141.24l3.17-2.78a82.73,82.73,0,0,0,11.17-3.29,72.16,72.16,0,0,0,19.16-10.59,74.69,74.69,0,0,0,14.91-15.48q16.66-23,16.66-53.57A102.85,102.85,0,0,0,205.67,137.51Zm-23,41.88a63.53,63.53,0,0,1-17,24.1q-11.2,9.91-27.68,13.1c-3.17.53-6.31.92-9.42,1.19s-5.78.39-8,.39H32.12V80.08h88.49c2.25,0,4.92.11,8,.3a65.94,65.94,0,0,1,9.42,1.29q16.47,3.18,27.68,13.1A63.15,63.15,0,0,1,181.93,117c.27.
16.52,1.21.77,1.83A77.14,77.14,0,0,1,187.1,134a82.7,82.7,0,0,1,1.36,15.14A79.69,79.69,0,0,1,182.7,179.39Z" fill="currentColor"></path><path d="M264.73,171.15q-11.61-26.37-33.44-40.28a86.21,86.21,0,0,0-29.52-11.67A110.89,110.89,0,0,0,181.93,117c-1.06,0-2.13-.05-3.22-.05q-30.54,0-52.47,13.59t-33.73,39q-9.76,21-11.43,48.6c-.26,3.88-.37,7.84-.37,11.91,0,1.6,0,3.19.06,4.76H276.34Q276.34,197.55,264.73,171.15ZM99,218.18h0q2.43-37.32,20.64-59.21,21-25.31,59.12-25.31c2.88,0,5.67.11,8.39.34a82.18,82.18,0,0,1,18.57,3.52,65.07,65.07,0,0,1,31.08,20.85q18,21.63,21.14,59.82Z" fill="currentColor" style="opacity:.5"></path></svg></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vue Reactivity</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Reactivity utils set for @vue/reactivity</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/reactivue" target="_blank" title="ReactiVue" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-ri-reactjs-fill text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">ReactiVue</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Use Vue Composition API in React components</div></div></a><a class="item relative flex items-center" href="https://github.com/vueuse/vue-chemistry" target="_blank" title="Vue Chemistry" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-chemistry text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vue Chemistry</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Reactified JavaScript functions for Vue</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/v-dollar" target="_blank" title="v-dollar" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-tabler-currency-dollar text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">v-dollar</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">jQuery-like Vue Reactivity API</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:6" data-v-56a9b67f=""><div id="unjs-ecosystem" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:3;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">UnJS Ecosystem</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/unjs/unplugin" target="_blank" title="unplugin" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-plug text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">unplugin</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Unified plugin system for Vite, Rollup, and Webpack</div></div></a><a class="item relative flex items-center" href="https://github.com/unjs/unimport" target="_blank" title="unimport" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-ibm-cloud-event-notification text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">unimport</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Unified utils for auto importing APIs in modules.</div></div></a><a class="item relative flex items-center" href="https://github.com/unjs/magicast" target="_blank" title="magicast" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-ibm-watsonx-code-assistant text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">
1magicast</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Programmatically modify JavaScript and TypeScript source codes like JSON.</div></div></a><a class="item relative flex items-center" href="https://github.com/unjs/uqr" target="_blank" title="uqr" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon:qr-code text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">uqr</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Generate QR Code universally</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:7" data-v-56a9b67f=""><div id="unplugins" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:4;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Unplugins</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/unjs/unplugin" target="_blank" title="unplugin" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-plug text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">unplugin</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Unified plugin system for Vite, Rollup, and Webpack</div></div></a><a class="item relative flex items-center" href="https://github.com/unplugin/unplugin-icons" target="_blank" title="unplugin-icons" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-thumbnail-2 text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">unplugin-icons</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Access thousands of icons as components on-demand</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/unplugin-vue-components" target="_blank" title="unplugin-vue-components" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-workspace-import text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">unplugin-vue-components</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">On-demand components auto importing for Vue</div></div></a><a class="item relative flex items-center" href="https://github.com/unplugin/unplugin-auto-import" target="_blank" title="unplugin-auto-import" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-row-insert text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">unplugin-auto-import</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Auto import APIs on-demand for Vite, Webpack and Rollup</div></div></a><a class="item relative flex items-center" href="https://github.com/unplugin/unplugin-vue2-script-setup" target="_blank" title="unplugin-vue2-script-setup" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-text-line-spacing text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">unplugin-vue2-script-setup</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Bring <code>&lt;script setup&gt;</code> to Vue 2.</div></div></a><a class="item relative flex items-center" href="https://github.com/unplugin/unplugin-vue-markdown" target="_blank" title="unplugin-plugin-vue-markdown" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-teenyicons-markdown-outline text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">
1unplugin-plugin-vue-markdown</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Compile Markdown to Vue component</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:8" data-v-56a9b67f=""><div id="eslint-ecosystem" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:5;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">ESLint Ecosystem</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/antfu/eslint-config" target="_blank" title="eslint-config" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><svg viewBox="0 0 121.9 121.9" height="1em" width="1em" class="text-4xl opacity-50" data-v-56a9b67f=""><g><path d="M94.2,5.6C88.3-5,78.3,17.1,76.2,21.7c-4.4,10-7.3,20.1-9.6,30.7c-2.6-2.8-4.4-6.1-6.4-9.3c-1.1-2-1.6-7.8-4.9-4.8 c-1.4-2.4-2.1-5.7-5.4-6.3c-12.1-1.1-23.9,21.8-22.2,32.3c2.7,15.1,21.1,0.2,25.4-6.7c-0.4,3.8-0.4,9.1,3.4,10.9 c4.4,2,5.9-1.6,8.5-4.2c-1.5,15.7-3.4,32,1.8,47.4c2.4,8.8,10.9,11,11.8,0.2c1.2-13.4-2.1-26.5-6.1-39.1c-1.1-3.6-2.9-6.7-4-10.3 c-0.6-5.2,2.2-0.6,3.5,0.8c2.2,2.4,7.1,8.1,10.8,7.8c0.5-0.3-0.9-1.6-1.2-1.9c-3.2-4-7-7.7-10.4-11.6c6.9-10,13.6-20.9,18.2-32.4 C91.4,19.3,95.6,11.8,94.2,5.6z M53.8,48.1c-2.2,6.1-4.8,10.8-9.9,15c-14.3,12.5-16.4-2.3-9.7-13.7C40.2,36.8,52.9,25.6,53.8,48.1z M55.8,40.2c0.4,0.6,0.8,1.1,1.1,1.7C56.1,42,55.3,41,55.8,40.2z M65.3,59.5c-1.6,2.3-2.5,5.4-5.2,6.3c-2.2,0.6-3.7-1.1-4.1-3.1 c-1.2-6.6,0.9-13.1,1.8-19.5c2.2,4.2,4,8.4,6.5,12.6C64.8,56.9,66,58.3,65.3,59.5z M65.8,56.9c-0.3-0.2-0.3-0.6-0.4-0.9 C65.8,56.2,66.2,56.5,65.8,56.9z M69.4,68.5c4.3,13.1,7.2,26.8,6,40.5c-1.2,12-5,3.3-6.5-2.8c-3.1-13.4-1.7-27.2-0.7-40.8 C68.6,66.4,69.1,67.8,69.4,68.5z M91.1,8.3c-2.1,14.2-12.5,34.2-21.3,45.4c1.8-9.4,4.4-18.5,8-27.4C78.1,24.5,91.3-1.9,91.1,8.3z" fill="currentColor"></path></g></svg></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">eslint-config</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">My ESLint config presets</div></div></a><a class="item relative flex items-center" href="https://github.com/eslint-stylistic/eslint-stylistic" target="_blank" title="ESLint Stylistic" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-simple-icons:eslint text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">ESLint Stylistic</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Collection of stylistic/formatting ESLint rules for JavaScript and TypeScript</div></div></a><a class="item relative flex items-center" href="https://github.com/eslint/config-inspector" target="_blank" title="ESLint Config Inspector" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-search-locate-mirror text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">ESLint Config Inspector</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A visual tool for inspecting and understanding your ESLint flat configs.</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/eslint-typegen" target="_blank" title="eslint-typegen" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-settings-check text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">eslint-typegen</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Generate types for ESLint rules, auto-completion and type-checking for rule options</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/eslint-flat-config-utils" target="_blank" title="eslint-flat-config-utils" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-tools-alt text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">eslint-flat-config-utils</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Utilities for ESLint Flat Config</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/eslint-config-flat-gitignore" target="_blank" title="eslint-config-flat-gitignore" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-mdi-git text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">eslint-config-flat-gitignore</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">.gitignore support for ESLint Flat Config</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/eslint-plugin-format" target="_blank" title="eslint-plugin-format" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-ibm-watsonx-code-assistant-for-z-refactor text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">eslint-plugin-format</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Format various languages with formatters in ESLint</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/eslint-processor-vue-blocks" target="_blank" title="eslint-processor-vue-blocks" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-uim-vuejs text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">eslint-processor-vue-blocks</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Create virtual files for each Vue SFC block to lint them individually.</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/eslint-merge-processors" target="_blank" title="eslint-merge-processors" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-direction-merge text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">eslint-merge-processors</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Merge multiple ESLint processors to behave like one</div></div></a>
1<!--]--></div></div><div slide-enter="" style="--enter-stage:9" data-v-56a9b67f=""><div id="css" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:6;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">CSS</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/unocss/unocss" target="_blank" title="UnoCSS" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><svg width="1em" height="1em" viewBox="0 0 220 220" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-4xl opacity-50" data-v-56a9b67f=""><path d="M117.722 167.444C117.722 139.83 140.108 117.444 167.722 117.444V117.444C195.336 117.444 217.722 139.83 217.722 167.444V167.444C217.722 195.058 195.336 217.444 167.722 217.444V217.444C140.108 217.444 117.722 195.058 117.722 167.444V167.444Z" fill="currentColor" fill-opacity="0.6"></path><path d="M117.722 52.5561C117.722 24.9419 140.108 2.55614 167.722 2.55614V2.55614C195.336 2.55614 217.722 24.9419 217.722 52.5561V97.5561C217.722 100.318 215.483 102.556 212.722 102.556H122.722C119.961 102.556 117.722 100.318 117.722 97.5561V52.5561Z" fill="currentColor" fill-opacity="0.3"></path>
1<path d="M102.278 167.444C102.278 195.058 79.8922 217.444 52.278 217.444V217.444C24.6637 217.444 2.27796 195.058 2.27796 167.444L2.27796 122.444C2.27796 119.682 4.51654 117.444 7.27796 117.444L97.278 117.444C100.039 117.444 102.278 119.682 102.278 122.444L102.278 167.444Z" fill="currentColor"></path></svg></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">UnoCSS</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">The instant on-demand atomic CSS engine</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:10" data-v-56a9b67f=""><div id="productivity" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:7;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Productivity</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/slidevjs/slidev" target="_blank" title="Slidev" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><svg width="1em" height="1em" viewBox="0 0 115 115" fill="none" xmlns="http://www.w3.org/2000/svg" class="text-4xl opacity-50" data-v-56a9b67f=""><path fill-rule="evenodd" clip-rule="evenodd" d="M49 0C22.4903 0 1 21.4903 1 48C1 74.5097 22.4903 96 49 96C55.3727 96 61.4553 94.7581 67.0191 92.5032C66.7064 91.4797 66.3753 90.244 65.9767 88.7564L65.9767 88.7563L65.4177 86.67C60.3744 88.8139 54.8257 90 49 90C25.804 90 7 71.196 7 48C7 24.804 25.804 6 49 6C72.196 6 91 24.804 91 48C91 52.9545 90.1421 57.7087 88.5668 62.1221L91.7563 62.9767C92.7352 63.239 93.605 63.4721 94.3771 63.6899C96.0768 58.7733 97 53.4945 97 48C97 21.4903 75.5097 0 49 0Z" fill="currentColor"></path><path d="M60.127 66.925C58.9501 62.5327 58.3617 60.3366 58.9439 58.8199C59.4517 57.497 60.497 56.4517 61.8199 55.9439C63.3366 55.3617 65.5327 55.9501 69.925 57.127L91.7563 62.9767C96.1485 64.1536 98.3446 64.742 99.367 66.0046C100.259 67.1058 100.641 68.5338 100.42 69.9334C100.166 71.5379 98.5579 73.1456 95.3426 76.3609L79.3609 92.3426C76.1456 95.5579 74.5379 97.1656 72.9333 97.4197C71.5337 97.6414 70.1058 97.2588 69.0046 96.367C67.742 95.3446 67.1536 93.1485 65.9767 88.7563L60.127 66.925Z" stroke="currentColor" stroke-width="6" stroke-linejoin="round"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M15 77.4799C15 84.2406 15.007 89.6274 15.5759 93.8588C16.1698 98.2762 17.4251 101.881 20.2721 104.728C23.1191 107.575 26.7238 108.83 31.1412 109.424C35.4258 110 40.895 110 47.7756 110H48H78H78.2244C85.105 110 90.5742 110 94.8588 109.424C99.2762 108.83 102.881 107.575 105.728 104.728C108.575 101.881 109.83 98.2762 110.424 93.8588C111 89.5742 111 84.105 111 77.2244V77V47V46.7756C111 39.895 111 34.4258 110.424 30.1412C109.83 25.7238 108.575 22.1191 105.728 19.2721C102.881 16.4251 99.2762 15.1698 94.8588 14.5759C90.6274 14.007 85.2406 14 78.4799 14C80.5813 15.8236 82.5119 17.8388 84.2446 20.0183C88.2661 20.0561 91.4469 20.1712 94.0593 20.5224C97.8114 21.0269 99.9389 21.9683 101.485 23.5147C103.032 25.0611 103.973 27.1886 104.478 30.9407C104.994 34.779 105 39.8441 105 47V77C105 84.1559 104.994 89.221 104.478 93.0593C103.973 96.8114 103.032 98.9389 101.485 100.485C99.9389 102.032 97.8114 102.973 94.0593 103.478C90.221 103.994 85.1559 104 78 104H48C40.8441 104 35.779 103.994 31.9407 103.478C28.1886 102.973 26.0611 102.032 24.5147 100.485C22.9683 98.9389 22.0269 96.8114 21.5224 93.0593C21.1712 90.4469 21.0561 87.2661 21.0183 83.2446C18.8388 81.5119 16.8236 79.5813 15 77.4799Z" fill="currentColor"></path></svg></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Slidev</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Presentation slides for developers</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/raycast-multi-translate" target="_blank" title="MultiTranslate for Raycast" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-ibm-watson-language-translator text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">MultiTranslate for Raycast</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A Raycast extension that translates text to multiple languages at once</div></div></a>
1<!--]--></div></div><div slide-enter="" style="--enter-stage:11" data-v-56a9b67f=""><div id="games" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:8;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Games</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://handle.antfu.me" target="_blank" title="Handle 汉兜" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-scatter-matrix text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Handle 汉兜</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A Chinese Hanzi variation of Wordle</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:12" data-v-56a9b67f=""><div id="starter-templates" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:9;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Starter Templates</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/antfu/vitesse" target="_blank" title="Vitesse" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-campsite text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vitesse</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Opinionated Vite Starter Template</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vitesse-webext" target="_blank" title="Vitesse WebExtension" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-pixelarticons-power text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vitesse WebExtension</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">WebExtension Vite Starter Template</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vitesse-lite" target="_blank" title="Vitesse Lite" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-cloud-lightning text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vitesse Lite</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Lightweight version of Vitesse</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vitesse-nuxt3" target="_blank" title="Vitesse Nuxt 3" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-logos-nuxt-icon saturate-0 text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vitesse Nuxt 3</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Vitesse for Nuxt 3</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/starter-ts" target="_blank" title="Starter TypeScript" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-code text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Starter TypeScript</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">My TypeScript Library Starter</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/starter-vscode" target="_blank" title="Starter VS Code" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-code text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Starter VS Code</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">My VS Code Extension Starter</div></div></a>
1<!--]--></div></div><div slide-enter="" style="--enter-stage:13" data-v-56a9b67f=""><div id="design-generative-arts" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:10;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Design / Generative-Arts</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://100.antfu.me/" target="_blank" title="100 Day" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-app-switcher text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">100 Day</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">My 100 day challenge of exploring design, compform, and new things.</div></div></a><a class="item relative flex items-center" href="https://github.com/codecember-ink/codecember" target="_blank" title="Codecember" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-checkbox text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Codecember</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Learn and create computation form, one sketch a day. (In collabration with @octref)</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/p5i" target="_blank" title="p5i" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-paint-brush text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">p5i</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">p5.js, but with more friendly instance mode APIs</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:14" data-v-56a9b67f=""><div id="typescript" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:11;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">TypeScript</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/type-challenges/type-challenges" target="_blank" title="Type Challenges" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-ai-results-high text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Type Challenges</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Collection of TypeScript type challenges with online judge</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/esno" target="_blank" title="esno" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-mdi-hexagon-slice-4 text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">esno</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">TypeScript / ESNext node runtime powered by ESBuild</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/tsnapi" target="_blank" title="tsnapi" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-camera text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">tsnapi</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Public API snapshot testing for runtime exports and type declarations</div></div></a>
1<!--]--></div></div><div slide-enter="" style="--enter-stage:15" data-v-56a9b67f=""><div id="vs-code" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:12;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">VS Code</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/antfu/vscode-iconify" target="_blank" title="Iconify IntelliSense" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-face-wink text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Iconify IntelliSense</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Iconify IntelliSense for VS Code</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vscode-theme-vitesse" target="_blank" title="Vitesse Theme" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-campsite text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vitesse Theme</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Vitesse Theme for VS Code</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vscode-icons-carbon" target="_blank" title="Carbon Product Icons" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-carbon text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Carbon Product Icons</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Carbon product icon theme for VS Code</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/retypewriter" target="_blank" title="reTypewriter" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-keyboard text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">reTypewriter</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Smartly replay the steps of your changes at ease.</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vscode-smart-clicks" target="_blank" title="Smart Clicks" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-heroicons-solid-cursor-click text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Smart Clicks</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Smart selection with double clicks for VS Code.</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/i18n-ally" target="_blank" title="i18n Ally" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-earth text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">i18n Ally</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">All in one i18n extension for VS Code</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vscode-vite" target="_blank" title="Vite for VS Code" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-flash text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Vite for VS Code</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Take one step faster for Vite in VS Code</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vscode-browse-lite" target="_blank" title="Browse Lite" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-uim-web-grid text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">
1Browse Lite</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Embedded browser in VS Code</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/wenyan-lang-vscode" target="_blank" title="文言 VS Code" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-terminal text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">文言 VS Code</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">文言 Wenyan Lang for VS Code</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vscode-where-am-i" target="_blank" title="Where am I ?" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-map text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Where am I ?</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Don't get lost even you have multiple VS Code opened</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:16" data-v-56a9b67f=""><div id="utilities" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:13;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Utilities</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/shikijs/shiki" target="_blank" title="Shiki" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon:code text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Shiki</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A beautiful syntax highlighter<br>(In collabration with @octref and @orta)</div></div></a><a class="item relative flex items-center" href="https://github.com/twoslashes/twoslash" target="_blank" title="Twoslash" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-simple-icons:typescript text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Twoslash</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Markup for generating rich type information ahead of time<br>(In collabration with @orta)</div></div></a><a class="item relative flex items-center" href="https://github.com/Rich-Harris/magic-string" target="_blank" title="magic-string" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-ph-magic-wand-duotone text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">magic-string</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Manipulate strings like a wizard. (Maintainer)</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/nanovis" target="_blank" title="nanovis" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-chart-treemap text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">nanovis</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Tiny visualization library for tree structures in Treemap, Sunburst, Flame</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/whenexpr" target="_blank" title="whenexpr" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-decision-tree text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">whenexpr</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Tiny when-clause expression evaluator with full type-safety</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/fast-npm-meta" target="_blank" title="fast-npm-meta" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-simple-icons-npm text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">fast-npm-meta</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A lightweight API server to get npm package metadata</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu-collective/tsdown-stale-guard" target="_blank" title="tsdown-stale-guard" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-rule-locked text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">tsdown-stale-guard</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Build freshness validation for tsdown</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/qr-scanner-wechat" target="_blank" title="qr-scanner-wechat" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-scan-alt text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">qr-scanner-wechat</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">QR Code scanner in JS with OpenCV and WeChat Algorithm</div></div></a>
1<!--]--></div></div><div slide-enter="" style="--enter-stage:17" data-v-56a9b67f=""><div id="cli" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:14;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">CLI</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/antfu/ni" target="_blank" title="ni" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-codicon-package text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">ni</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Use the right package manager</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/sponsorkit" target="_blank" title="sponsorkit" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-favorite text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">sponsorkit</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Toolkit for generating sponsors images</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu-collective/changelogithub" target="_blank" title="changelogithub" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-catalog text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">changelogithub</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Generate changelog for GitHub releases</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/ghfs" target="_blank" title="ghfs" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-folder-details text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">ghfs</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">GitHub issues/PRs as filesystem, for human and agents</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/pnpm-workspace-utils" target="_blank" title="pnpm-workspace-utils" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-simple-icons-pnpm text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">pnpm-workspace-utils</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Utilities for managing pnpm catalogs</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/broz" target="_blank" title="broz" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-checkbox text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">broz</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A simple, frameless browser for screenshots</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/fsxx" target="_blank" title="fsxx" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-table text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">fsxx</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">File system in zx style</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/iroiro" target="_blank" title="iroiro" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-color-palette text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">iroiro</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Beautiful colors lookup in CLI 色々な色</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/kaomo" target="_blank" title="kaomo" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-theater text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">kaomo</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Random kaomoji 顔文字 in CLI<br>( ´ ▽ ` )/</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/export-size" target="_blank" title="export-size" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-data-vis-1 text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">export-size</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Analysis bundle cost for each export of a package</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/taze" target="_blank" title="taze" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-spine-label text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">taze</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A modern CLI tool that keeps your deps fresh</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/svg-packer" target="_blank" title="svg-packer" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-package text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">svg-packer</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Pack SVGs to Icon Fonts</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/git-ensure" target="_blank" title="git-ensure" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-teenyicons-git-outline text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">git-ensure</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Ensure git status before continuing</div></div></a>
1<!--]--></div></div><div slide-enter="" style="--enter-stage:18" data-v-56a9b67f=""><div id="configurations" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:15;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Configurations</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/antfu/eslint-config" target="_blank" title="eslint-config" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><svg viewBox="0 0 121.9 121.9" height="1em" width="1em" class="text-4xl opacity-50" data-v-56a9b67f=""><g><path d="M94.2,5.6C88.3-5,78.3,17.1,76.2,21.7c-4.4,10-7.3,20.1-9.6,30.7c-2.6-2.8-4.4-6.1-6.4-9.3c-1.1-2-1.6-7.8-4.9-4.8 c-1.4-2.4-2.1-5.7-5.4-6.3c-12.1-1.1-23.9,21.8-22.2,32.3c2.7,15.1,21.1,0.2,25.4-6.7c-0.4,3.8-0.4,9.1,3.4,10.9 c4.4,2,5.9-1.6,8.5-4.2c-1.5,15.7-3.4,32,1.8,47.4c2.4,8.8,10.9,11,11.8,0.2c1.2-13.4-2.1-26.5-6.1-39.1c-1.1-3.6-2.9-6.7-4-10.3 c-0.6-5.2,2.2-0.6,3.5,0.8c2.2,2.4,7.1,8.1,10.8,7.8c0.5-0.3-0.9-1.6-1.2-1.9c-3.2-4-7-7.7-10.4-11.6c6.9-10,13.6-20.9,18.2-32.4 C91.4,19.3,95.6,11.8,94.2,5.6z M53.8,48.1c-2.2,6.1-4.8,10.8-9.9,15c-14.3,12.5-16.4-2.3-9.7-13.7C40.2,36.8,52.9,25.6,53.8,48.1z M55.8,40.2c0.4,0.6,0.8,1.1,1.1,1.7C56.1,42,55.3,41,55.8,40.2z M65.3,59.5c-1.6,2.3-2.5,5.4-5.2,6.3c-2.2,0.6-3.7-1.1-4.1-3.1 c-1.2-6.6,0.9-13.1,1.8-19.5c2.2,4.2,4,8.4,6.5,12.6C64.8,56.9,66,58.3,65.3,59.5z M65.8,56.9c-0.3-0.2-0.3-0.6-0.4-0.9 C65.8,56.2,66.2,56.5,65.8,56.9z M69.4,68.5c4.3,13.1,7.2,26.8,6,40.5c-1.2,12-5,3.3-6.5-2.8c-3.1-13.4-1.7-27.2-0.7-40.8 C68.6,66.4,69.1,67.8,69.4,68.5z M91.1,8.3c-2.1,14.2-12.5,34.2-21.3,45.4c1.8-9.4,4.4-18.5,8-27.4C78.1,24.5,91.3-1.9,91.1,8.3z" fill="currentColor"></path></g></svg></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">eslint-config</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">My ESLint config presets</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vscode-settings" target="_blank" title="vscode-settings" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-simple-icons:visualstudiocode text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vscode-settings</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">My VS Code settings</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/vscode-file-nesting-config" target="_blank" title="vscode-file-nesting-config" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon:tree-view-alt text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">vscode-file-nesting-config</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Config of File Nesting for VS Code</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:19" data-v-56a9b67f=""><div id="websites-online-tools" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:16;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Websites / Online Tools</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/elk-zone/elk" target="_blank" title="Elk" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 250 250" height="1em" width="1em" class="text-4xl opacity-50" data-v-56a9b67f=""><mask id="a" width="240" height="234" x="4" y="1" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#D9D9D9" d="M244 123c0 64.617-38.383 112-103 112-64.617 0-103-30.883-103-95.5C38 111.194-8.729 36.236 8 16 29.46-9.959 88.689 6 125 6c64.617 0 119 52.383 119 117Z"></path></mask><g mask="url(#a)">
1<path fill="currentColor" d="M116.94 88.1c-13.344 1.552-20.436-2.019-24.706 10.71 0 0 14.336 21.655 52.54 21.112-2.135 8.848-1.144 15.368-1.144 23.207 0 26.079-20.589 48.821-65.961 48.821-23.03 0-51.015 4.191-72.367 15.911-15.175 8.305-27.048 20.336-32.302 37.023l5.956 8.461 11.4.155v47.889l-13.91 21.966L-19.556 387h13.192l1.144-51.227c6.558-3.881 21.58-13.971 34.391-29.494 17.386-20.879 30.731-51.227 15.022-88.793l11.744-5.045c12.887 30.814 8.388 57.514-2.898 79.013 21.58-.698 40.11-2.095 55.819-4.734l-3.584-43.698 12.659-1.087L129.98 387h13.116l2.212-94.459c10.447-4.502 34.239-21.034 45.372-78.47 1.372-6.986 2.135-12.885 2.516-17.93 1.754-12.806 2.745-27.243 3.051-43.698l-18.683-5.976h57.42l5.567-12.807c-5.414.233-11.896-2.639-11.896-2.639l1.297-6.209H242l-65.199-34.384c-7.244 2.794-14.87 6.442-20.208 10.866-4.27-3.105-19.063-12.807-39.653-13.195Z"></path><path fill="currentColor" d="M6.217 24.493 18.494 21c5.948 21.577 13.345 33.375 22.648 39.352 8.388 5.099 19.75 5.239 31.799 4.579-3.508-1.164-6.787-2.794-9.837-5.045-6.787-5.045-12.582-13.428-16.929-28.64l12.201-3.649c3.279 11.488 7.092 18.085 12.201 21.888 5.11 3.726 11.286 4.657 18.606 5.433 13.726 1.553 30.884 2.174 52.312 12.264 2.898 1.086 5.872 2.483 8.769 4.036-.381-.776-.762-1.553
1-1.296-2.406-3.66-5.822-10.828-11.953-24.097-16.92l4.27-12.109c21.581 7.917 30.121 19.171 33.553 28.097 3.965 10.168 1.525 18.124 1.525 18.124-3.05 1.009-6.1 2.406-9.608 3.492-6.634-4.579-12.887-8.033-18.835-10.75-21.962-8.304-43.466-2.638-62.53-.853-14.336 1.32-27.452.698-38.814-6.598-11.21-7.14-21.047-20.8-28.215-46.802Z"></path><path fill="currentColor" d="M90.098 45.294c-2.516-5.744-4.041-12.807-3.355-21.5l12.659.932c-.763 10.555 2.897 17.696 7.015 22.353-5.338-.931-10.447-1.04-16.319-1.785Zm80.069-1.32 8.312-9.702c21.58 19.094 8.159 46.415 8.159 46.415l-11.819-1.32c-.382-6.24-1.144-17.836-6.635-24.371 3.584 1.84 6.635 3.865 9.99 6.908 0-5.666-1.754-12.341-8.007-17.93Z"></path></g></svg></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Elk</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A nimble Mastodon web client</div></div></a><a class="item relative flex items-center" href="https://icones.js.org/" target="_blank" title="Icônes" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-type-pattern text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Icônes</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Iconify Explorer with Instant searching</div></div></a><a class="item relative flex items-center" href="https://qrcode.antfu.me/" target="_blank" title="QR Toolkit" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-qr-code text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">QR Toolkit</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Toolkit for QR code generation on stable diffusion</div></div></a><a class="item relative flex items-center" href="https://rhein.netlify.app/" target="_blank" title="rhein." data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-data-vis-4 text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">rhein.</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Text editor with freedom of layouting</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/prism-theme-vars" target="_blank" title="Prism --theme-vars" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-angle text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Prism --theme-vars</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A customizable Prism.js theme using CSS variables</div></div></a><a class="item relative flex items-center" href="https://rex.antfu.me/" target="_blank" title="ReX" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-text-align-mixed text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">ReX</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Transform texts with RegExp like a Pro</div></div></a><a class="item relative flex items-center" href="https://cafe-cn.netlify.app/" target="_blank" title="Café" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-cafe text-3xl opacity-50" data-v-56a9b67f=""></div></div></a><div class="flex-auto" data-v-56a9b67f=""><a class="item relative flex items-center" href="https://cafe-cn.netlify.app/" target="_blank" title="Café" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Café</div></a><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f=""><a class="item relative flex items-center" href="https://cafe-cn.netlify.app/" target="_blank" title="Café" data-v-56a9b67f="">Web App for </a><a href="https://github.com/ElaWorkshop/awesome-cn-cafe" target="_blank">Awesome CN Café</a></div></div><a class="item relative flex items-center" href="https://ide.wy-lang.org" target="_blank" title="文言齋" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-template text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">文言齋</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">
1Online IDE for wenyan-lang</div></div></a><a class="item relative flex items-center" href="https://app.breadsplit.com/" target="_blank" title="BreadSplit" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-share-knowledge text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">BreadSplit</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Group bills split made easy, fast and customizable</div></div></a><a class="item relative flex items-center" href="https://bcp47.antfu.me/" target="_blank" title="BCP-47 tester" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-earth-southeast-asia text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">BCP-47 tester</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Online BCP-47 Tester &amp; Normalizer</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:20" data-v-56a9b67f=""><div id="windi-css-ecosystem" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:17;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Windi CSS Ecosystem</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/windicss/windicss" target="_blank" title="Windi CSS" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-windy-strong text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Windi CSS</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Next generation utility-first CSS framework (Maintainer)</div></div></a><a class="item relative flex items-center" href="https://github.com/windicss/vite-plugin-windicss" target="_blank" title="Windi Vite Plugin" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-flash text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Windi Vite Plugin</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Vite plugin for Windi CSS</div></div></a><a class="item relative flex items-center" href="https://github.com/windicss/postcss-windicss" target="_blank" title="Windi PostCSS Plugin" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-simple-icons-postcss text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Windi PostCSS Plugin</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">PostCSS plugin for Windi CSS</div></div></a><a class="item relative flex items-center" href="https://github.com/windicss/windicss-analysis" target="_blank" title="Windi Analyzer" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-chart-multitype text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Windi Analyzer</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A visual analyzer for Windi CSS</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/windicss-runtime-dom" target="_blank" title="Windi Runtime DOM" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-run text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Windi Runtime DOM</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Windi CSS for any site with one-line of code</div></div></a>
1<!--]--></div></div><div slide-enter="" style="--enter-stage:21" data-v-56a9b67f=""><div id="programming-languages" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:18;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Programming Languages</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/wenyan-lang/wenyan" target="_blank" title="文言 wenyan-lang" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-translate text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">文言 wenyan-lang</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">A programming language for the ancient Chinese</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:22" data-v-56a9b67f=""><div id="user-scripts" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:19;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">User Scripts</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/antfu/refined-github-notifications" target="_blank" title="Refined GitHub Notification" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon:box text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Refined GitHub Notification</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Enhances the GitHub Notifications, more productive and less noisy.</div></div></a><a class="item relative flex items-center" href="https://github.com/antfu/userscript-clean-twitter" target="_blank" title="Clean Twitter" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-ion-logo-twitter text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">Clean Twitter</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Bring back the peace on Twitter</div></div></a><!--]--></div></div><div slide-enter="" style="--enter-stage:23" data-v-56a9b67f=""><div id="toys" select-none="" relative="" h18="" mt5="" pointer-events-none="" slide-enter="" style="--enter-stage:20;--enter-step:60ms" data-v-56a9b67f=""><span text-5em="" color-transparent="" absolute="" left--1rem="" top-0rem="" font-bold="" leading-1em="" text-stroke-1.5="" text-stroke-hex-aaa="" op35="" dark:op20="" data-v-56a9b67f="">Toys</span></div><div class="project-grid py-2 max-w-500 w-max mx-auto" grid="~ cols-1 md:cols-2 gap-4 lg:cols-3" data-v-56a9b67f=""><!--[--><a class="item relative flex items-center" href="https://github.com/antfu/1990-script" target="_blank" title="1990 Script" data-v-56a9b67f=""><div class="pt-2 pr-5" data-v-56a9b67f=""><div class="i-carbon-time text-3xl opacity-50" data-v-56a9b67f=""></div></div><div class="flex-auto" data-v-56a9b67f=""><div class="text-normal" data-v-56a9b67f="">1990 Script</div><div class="desc text-sm opacity-50 font-normal" data-v-56a9b67f="">Make your GitHub history back to 1990</div></div></a><!--]--></div></div><!--]--><div class="prose pb5 mx-auto mt10 text-center" data-v-56a9b67f=""><div block="" mt-5="" data-v-56a9b67f=""><a href="https://antfu.me/stars-rank" target="_blank" op50="" data-v-56a9b67f="">All projects sort by Stars</a></div><hr data-v-56a9b67f=""><!--[--><p>If you enjoy my work and find them useful, consider sponsor me and the ecosystem to help Open Source sustainable. Thank y
1ou!</p><p flex="~ gap-2 wrap items-center"><a href="https://opencollective.com/antfu" target="_blank" class="group btn-rose text-base p2 px3 pr2"></a></p><div i-ph-hand-heart-duotone="" group-hover="i-ph-hand-heart-fill text-rose" transition-all="" duration-200="" ease-out=""></div><a href="https://opencollective.com/antfu" target="_blank" class="group btn-rose text-base p2 px3 pr2">Sponsor the Ecosystem </a><span op50="" text-sm=""><a href="/posts/sponsorship-forwarding" target="_blank">How does this work?</a></span><p></p><p flex="~ gap-2 wrap"><a href="https://github.com/sponsors/antfu" target="_blank" class="group btn-rose inline-block"></a></p><div i-ph-heart-duotone="" group-hover="i-ph-heart-fill text-rose" transition-all="" duration-200="" ease-out=""></div><a href="https://github.com/sponsors/antfu" target="_blank" class="group btn-rose inline-block">Sponsor to support Anthony </a><a href="https://afdian.com/a/antfu" target="_blank" class="group btn-yellow inline-block"><div i-ph-lightning-duotone="" group-hover="i-ph-lightning-fill text-yellow" transition-all="" duration-200="" ease-out=""></div>
1在爱发电上支持我</a><p></p><!--]--></div></div><div data-v-56a9b67f=""><div class="table-of-contents" data-v-56a9b67f=""><div class="table-of-contents-anchor" data-v-56a9b67f=""><div class="i-ri-menu-2-fill" data-v-56a9b67f=""></div></div><ul data-v-56a9b67f=""><!--[--><li data-v-56a9b67f=""><a href="#current-focus" data-v-56a9b67f="">Current Focus</a></li><li data-v-56a9b67f=""><a href="#nuxt-ecosystem" data-v-56a9b67f="">Nuxt Ecosystem</a></li><li data-v-56a9b67f=""><a href="#devtools" data-v-56a9b67f="">DevTools</a></li><li data-v-56a9b67f=""><a href="#vite-ecosystem" data-v-56a9b67f="">Vite Ecosystem</a></li><li data-v-56a9b67f=""><a href="#vue-ecosystem" data-v-56a9b67f="">Vue Ecosystem</a></li><li data-v-56a9b67f=""><a href="#unjs-ecosystem" data-v-56a9b67f="">UnJS Ecosystem</a></li><li data-v-56a9b67f=""><a href="#unplugins" data-v-56a9b67f="">Unplugins</a></li><li data-v-56a9b67f=""><a href="#eslint-ecosystem" data-v-56a9b67f="">ESLint Ecosystem</a></li><li data-v-56a9b67f=""><a href="#css" data-v-56a9b67f="">CSS</a></li><li data-v-56a9b67f=""><a href="#productivity" data-v-56a9b67f="">Productivity</a></li><li data-v-56a9b67f=""><a href="#games" data-v-56a9b67f="">Games</a></li><li data-v-56a9b67f=""><a href="#starter-templates" data-v-56a9b67f="">Starter Templates</a></li><li data-v-56a9b67f=""><a href="#design-generative-arts" data-v-56a9b67f="">Design / Generative-Arts</a></li><li data-v-56a9b67f=""><a href="#typescript" data-v-56a9b67f="">TypeScript</a></li><li data-v-56a9b67f=""><a href="#vs-code" data-v-56a9b67f="">VS Code</a></li><li data-v-56a9b67f=""><a href="#utilities" data-v-56a9b67f="">Utilities</a></li><li data-v-56a9b67f=""><a href="#cli" data-v-56a9b67f="">CLI</a></li><li data-v-56a9b67f=""><a href="#configurations" data-v-56a9b67f="">Configurations</a></li><li data-v-56a9b67f=""><a href="#websites-online-tools" data-v-56a9b67f="">Websites / Online Tools</a></li><li data-v-56a9b67f=""><a href="#windi-css-ecosystem" data-v-56a9b67f="">Windi CSS Ecosystem</a></li><li data-v-56a9b67f=""><a href="#programming-languages" data-v-56a9b67f="">Programming Languages</a></li><li data-v-56a9b67f=""><a href="#user-scripts" data-v-56a9b67f="">User Scripts</a></li><li data-v-56a9b67f=""><a href="#toys" data-v-56a9b67f="">Toys</a></li><!--]--></ul></div></div><!--]--></div><!--]--></article><div class="prose m-auto mt-8 mb-8 slide-enter animate-delay-500 print:hidden"><!----><br><span font-mono="" op50="">&gt; </span><a href="/" class="font-mono op50 hover:op75"></a></div><!--]--><div class="mt-10 mb-6 prose m-auto flex slide-enter animate-delay-1200! copyright"><span class="text-sm op50"><a target="_blank" href="https://creativecommons.org/licenses/by-nc-sa/4.0/" style="color:inherit">CC BY-NC-SA 4.0</a> 2021-PRESENT © Anthony Fu</span><div class="flex-auto"></div></div></main><!----><!--]--></div>
1<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
vendor: 1 bytes, line 1
1
2<script async id="netlify-rum-container" src="/.netlify/scripts/rum" data-netlify-rum-site-id="c371ba89-d187-498f-9bd9-e6bc5afd1fbb" data-netlify-deploy-branch="main" data-netlify-deploy-context="production" data-netlify-cwv-token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzaXRlX2lkIjoiYzM3MWJhODktZDE4Ny00OThmLTliZDktZTZiYzVhZmQxZmJiIiwiYWNjb3VudF9pZCI6IjVjMTQ1YTVjMGVhZGE4Zjc0NTIzM2FlNyIsImRlcGxveV9pZCI6IjZhYWEyMmRiYjFkZmY2MDAwNzU0NTY5ZCIsImlzc3VlciI6Im5mc2VydmVyIn0.9qSVMoCXD6pNQ4Wt32n-3OemV7VZb1evIZiRSJMbDsw"></script>
2
3</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.