PageSourceSearch

https://shadcn-kanban-board.vercel.app/

html shadcn-kanban-board.vercel.app collected 2026-10-03 07:41:12 UTC 71,460 bytes, 79 lines download raw bytes

1<!DOCTYPE html><html class="system h-full" lang="en" dir="ltr"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/images/app-light.png"/><link rel="preload" as="image" href="/images/app-dark.png"/><link rel="modulepreload" href="/assets/entry.client-B2qFSQdV.js"/><link rel="modulepreload" href="/assets/chunk-D4RADZKF-BBQm-Qzb.js"/><link rel="modulepreload" href="/assets/index-C98qoV4I.js"/><link rel="modulepreload" href="/assets/root-4thNS1Xc.js"/><link rel="modulepreload" href="/assets/use-color-scheme-6JFW8wV6.js"/><link rel="modulepreload" href="/assets/_index-DUnU9q59.js"/><link rel="modulepreload" href="/assets/header-BQrMaWLQ.js"/><title>Shadcn Kanban Board</title><meta name="title" content="Shadcn Kanban Board"/><meta name="description" content="A modern, production-ready Kanban board for building full-stack B2B &amp; B2C SaaS applications using Shadcn/UI."/><meta name="image" content="https://shadcn-kanban-board.com/public/og-image.png"/><meta name="keywords" content="shadcn, kanban, board, react, reactjs, shadcn/ui, typescript, scrum, agile, task management, flow, trello, jira, asana, notion"/><meta property="og:title" content="Shadcn Kanban Board"/><meta property="og:description" content="A modern, production-ready Kanban board for building full-stack B2B &amp; B2C SaaS applications using Shadcn/UI."/><meta property="og:image" content="https://shadcn-kanban-board.com/public/og-image.png"/><meta property="og:url" content="https://shadcn-kanban-board.com"/><meta property="og:type" content="website"/><meta property="og:site_name" content="Shadcn Kanban Board"/><meta property="og:locale" content="en_US"/><meta name="twitter:title" content="Shadcn Kanban Board"/><meta name="twitter:description" content="A modern, production-ready Kanban board for building full-stack B2B &amp; B2C SaaS applications using Shadcn/UI."/><meta name="twitter:image" content="https://shadcn-kanban-board.com/public/og-image.png"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:image:alt" content="Shadcn Kanban Board"/><meta name="twitter:site" content="@janhesters"/><meta name="twitter:creator" content="@janhesters"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/>
1<script>const colorScheme = "system";
2if (colorScheme === 'system') {
3  const media = globalThis.matchMedia('(prefers-color-scheme: dark)');
4  if (media.matches) {
5    document.documentElement.classList.add('dark');
6  }
7}</script>
7<link rel="stylesheet" href="/assets/root-BVe_nNoj.css"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&amp;display=swap"/></head><body class="h-full min-h-svh"><div class="overflow-hidden"><header class="fixed top-0 left-0 z-50 w-full border-b backdrop-blur-md"><div class="container mx-auto flex h-(--header-height) items-center justify-between gap-2 px-4"><a class="flex items-center gap-2 self-center font-medium" href="/" data-discover="true"><div class="bg-primary text-primary-foreground flex size-8 items-center justify-center rounded-md sm:size-6"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-kanban size-6 sm:size-4" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M8 7v7"></path><path d="M12 7v4"></path><path d="M16 7v9"></path></svg></div><span class="hidden font-mono sm:block">Shadcn Kanban Board</span></a><nav class="flex gap-2 sm:absolute sm:top-1/2 sm:left-1/2 sm:-translate-x-1/2 sm:-translate-y-1/2"><a class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 h-8 rounded-md gap-1.5 px-3 has-[&gt;svg]:px-2.5" href="/example" data-discover="true">Example</a></nav><div class="flex gap-2"><a href="https://github.com/janhesters/shadcn-kanban-board" data-slot="button" class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-md gap-1.5 px-3 has-[&gt;svg]:px-2.5"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg>Github</a></div></div></header><main class="container mx-auto"><section class="relative z-0 py-24 text-center sm:pt-32"><div class="absolute inset-x-0 -top-40 -z-10 transform-gpu overflow-hidden blur-3xl sm:-top-80" aria-hidden="true"><div class="from-primary to-secondary relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 rotate-[30deg] bg-gradient-to-tr op
7acity-30 sm:left-[calc(50%-30rem)] sm:w-[72.1875rem]" style="clip-path:polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)"></div></div><div class="mx-auto max-w-2xl px-4"><span data-slot="badge" class="inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&amp;&gt;svg]:size-3 gap-1 [&amp;&gt;svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden border-transparent bg-secondary text-secondary-foreground [a&amp;]:hover:bg-secondary/90 mb-8"><span class="underline">Free</span> &amp; Open Source</span><h1 class="flex flex-col items-center justify-center font-mono text-4xl font-semibold sm:text-7xl"><span class="flex items-center text-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-kanban mr-2 size-14 sm:size-26" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M8 7v7"></path><path d="M12 7v4"></path><path d="M16 7v9"></path></svg> Shadcn</span>Kanban Board</h1><p class="text-muted-foreground mt-8 text-lg sm:text-xl/8"><span class="relative">Kickstart your B2B &amp; B2C SaaS apps with this<!-- --> <span class="text-primary decoration-primary underline decoration-wavy underline-offset-4">open-source</span> <!-- -->Shadcn Kanban Board built with React and Tailwind CSS.</span></p><div class="mt-10 flex items-center justify-center gap-2"><a data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 h-9 px-4 py-2 has-[&gt;svg]:px-3" href="/example" data-discover="true">Try it out</a><a href="https://github.com/janhesters/shadcn-kanban-board/blob/main/README.md" data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive underline-offset-4 hover:underline h-9 px-4 py-2 has-[&gt;svg]:px-3 text-foreground">Documentation<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-text" aria-hidden="true"><path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20"></path><path d="M8 11h8"></path><path d="M8 7h6"></path></svg></a></div></div><div class="mt-16 px-4"><img alt="App screenshot (light)" class="border-border rounded-xl border object-contain shadow-sm dark:hidden" src="/images/app-light.png" style="-webkit-mask-image:linear-gradient(to bottom, black 75%, transparent);mask-image:linear-gradient(to bottom, black 75%, transparent)"/><img alt="App screenshot (dark)" class="border-border rounded-xl border object-contain hidden dark:block" src="/images/app-dark.png" style="-webkit-mask-image:linear-gradient(to bottom, black 75%, transparent);mask-image:linear-gradient(to bottom, black 75%, transparent)"/></div><div class="absolute inset-x-0 top-[calc(100%-13rem)] -z-10 transform-gpu overflow-hidden blur-3xl sm:top-[calc(100%-80rem)]" aria-hidden="true"><div class="from-primary to-secondary relative left-[calc(50%+3rem)] aspect-[1155/678] w-[36.125rem] -translate-x-1/2 bg-gradient-to-tr op
7acity-30 sm:left-[calc(50%+36rem)] sm:w-[72.1875rem]" style="clip-path:polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)"></div></div></section><section class="mx-auto flex max-w-xl flex-col"><h2 class="text-primary mb-10 text-center text-3xl font-semibold">Installation</h2><h3 class="text-muted-foreground mb-6 text-xl font-semibold">Install the Kanban Board:</h3><div class="bg-card dark:bg-card border-border relative max-h-[650px] overflow-x-auto rounded-xl border"><div dir="ltr" data-orientation="horizontal" data-slot="tabs" class="flex flex-col gap-2"><div class="border-border bg-muted flex items-center justify-between border-b px-3 pt-2.5"><div role="tablist" aria-orientation="horizontal" data-slot="tabs-list" class="text-muted-foreground inline-flex w-fit items-center justify-center rounded-lg h-7 translate-y-[2px] gap-3 bg-transparent p-0 pl-1" tabindex="-1" data-orientation="horizontal" style="outline:none"><button type="button" role="tab" aria-selected="false" aria-controls="radix-«R2qj5»-content-pnpm" data-state="inactive" id="radix-«R2qj5»-trigger-pnpm" data-slot="tabs-trigger" class="dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 border text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 text-muted-foreground data-[state=active]:border-b-foreground data-[state=active]:text-foreground dark:data-[state=active]:!bg-muted dark:data-[state=active]:!border-muted dark:data-[state=active]:!border-b-foreground rounded-none border-b border-transparent bg-transparent p-0 pb-1.5 font-mono data-[state=active]:bg-transparent data-[state=active]:shadow-none" tabindex="-1" data-orientation="horizontal" data-radix-collection-item="">pnpm</button><button type="button" role="tab" aria-selected="true" aria-controls="radix-«R2qj5»-content-npm" data-state="active" id="radix-«R2qj5»-trigger-npm" data-slot="tabs-trigger" class="dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 border text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 text-muted-foreground data-[state=active]:border-b-foreground data-[state=active]:text-foreground dark:data-[state=active]:!bg-muted dark:data-[state=active]:!border-muted dark:data-[state=active]:!border-b-foreground rounded-none border-b border-transparent bg-transparent p-0 pb-1.5 font-mono data-[state=active]:bg-transparent data-[state=active]:shadow-none" tabindex="-1" data-orientation="horizontal" data-radix-collection-item="">npm</button><button type="button" role="tab" aria-selected="false" aria-controls="radix-«R2qj5»-content-yarn" data-state="inactive" id="radix-«R2qj5»-trigger-yarn" data-slot="tabs-trigger" class="dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 border text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;
7size-&#x27;])]:size-4 text-muted-foreground data-[state=active]:border-b-foreground data-[state=active]:text-foreground dark:data-[state=active]:!bg-muted dark:data-[state=active]:!border-muted dark:data-[state=active]:!border-b-foreground rounded-none border-b border-transparent bg-transparent p-0 pb-1.5 font-mono data-[state=active]:bg-transparent data-[state=active]:shadow-none" tabindex="-1" data-orientation="horizontal" data-radix-collection-item="">yarn</button><button type="button" role="tab" aria-selected="false" aria-controls="radix-«R2qj5»-content-bun" data-state="inactive" id="radix-«R2qj5»-trigger-bun" data-slot="tabs-trigger" class="dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 border text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 text-muted-foreground data-[state=active]:border-b-foreground data-[state=active]:text-foreground dark:data-[state=active]:!bg-muted dark:data-[state=active]:!border-muted dark:data-[state=active]:!border-b-foreground rounded-none border-b border-transparent bg-transparent p-0 pb-1.5 font-mono data-[state=active]:bg-transparent data-[state=active]:shadow-none" tabindex="-1" data-orientation="horizontal" data-radix-collection-item="">bun</button></div></div><div class="overflow-x-auto"><div data-state="inactive" data-orientation="horizontal" role="tabpanel" aria-labelledby="radix-«R2qj5»-trigger-pnpm" hidden="" id="radix-«R2qj5»-content-pnpm" tabindex="0" data-slot="tabs-content" class="flex-1 outline-none mt-0"></div><div data-state="active" data-orientation="horizontal" role="tabpanel" aria-labelledby="radix-«R2qj5»-trigger-npm" id="radix-«R2qj5»-content-npm" tabindex="0" data-slot="tabs-content" class="flex-1 outline-none mt-0" style="animation-duration:0s"><pre class="px-4 py-5"><code class="relative font-mono text-sm leading-none" data-language="bash">npx shadcn@latest add https://shadcn-kanban-board.com/r/kanban.json</code></pre></div><div data-state="inactive" data-orientation="horizontal" role="tabpanel" aria-labelledby="radix-«R2qj5»-trigger-yarn" hidden="" id="radix-«R2qj5»-content-yarn" tabindex="0" data-slot="tabs-content" class="flex-1 outline-none mt-0"></div><div data-state="inactive" data-orientation="horizontal" role="tabpanel" aria-labelledby="radix-«R2qj5»-trigger-bun" hidden="" id="radix-«R2qj5»-content-bun" tabindex="0" data-slot="tabs-content" class="flex-1 outline-none mt-0"></div></div></div><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:hover:bg-accent/50 size-9 text-foreground hover:bg-accent hover:text-accent-foreground absolute top-2 right-2.5 z-10 h-6 w-6 [&amp;_svg]:h-3 [&amp;_svg]:w-3"><span class="sr-only">Copy</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clipboard" aria-hidden="true"><rect width="8" height="4" x="8" y="2" rx="1" ry="1"></rect><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path></svg></button></div><h3 class="text-muted-foreground mt-8 mb-6 text-xl font-semibold">Install the use-js-loaded hook:</h3><div class="bg-card dark:bg-card border-border relative max-h-[650px] overflow-x-auto rounded-xl border"><div dir="ltr" data-orientation="horizontal" data-slot="tabs" class="flex flex-col gap-2"><div class="border-border bg-muted flex items-center justify-between border-b px-3 pt-2.5"><div role="tablist" aria-orientation="horizontal" data-slot="tabs-list" class="text-muted-foreground inline-flex w-fit items-center justify-center rounded-lg h-7 translate-y-[2px] gap-3 bg-transparent p-0 pl-1" tabindex="-1" data-orientation="horizontal" style="outline:none"><button type="button" role="tab" aria-selected="false" aria-controls="radix-«R3aj5»-content-pnpm" data-state="inactive" id="radix-«R3aj5»-trigger-pnpm" data-slot="tabs-trigger" class="dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 border text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focu
7s-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 text-muted-foreground data-[state=active]:border-b-foreground data-[state=active]:text-foreground dark:data-[state=active]:!bg-muted dark:data-[state=active]:!border-muted dark:data-[state=active]:!border-b-foreground rounded-none border-b border-transparent bg-transparent p-0 pb-1.5 font-mono data-[state=active]:bg-transparent data-[state=active]:shadow-none" tabindex="-1" data-orientation="horizontal" data-radix-collection-item="">pnpm</button><button type="button" role="tab" aria-selected="true" aria-controls="radix-«R3aj5»-content-npm" data-state="active" id="radix-«R3aj5»-trigger-npm" data-slot="tabs-trigger" class="dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 border text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 text-muted-foreground data-[state=active]:border-b-foreground data-[state=active]:text-foreground dark:data-[state=active]:!bg-muted dark:data-[state=active]:!border-muted dark:data-[state=active]:!border-b-foreground rounded-none border-b border-transparent bg-transparent p-0 pb-1.5 font-mono data-[state=active]:bg-transparent data-[state=active]:shadow-none" tabindex="-1" data-orientation="horizontal" data-radix-collection-item="">npm</button><button type="button" role="tab" aria-selected="false" aria-controls="radix-«R3aj5»-content-yarn" data-state="inactive" id="radix-«R3aj5»-trigger-yarn" data-slot="tabs-trigger" class="dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 border text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 text-muted-foreground data-[state=active]:border-b-foreground data-[state=active]:text-foreground dark:data-[state=active]:!bg-muted dark:data-[state=active]:!border-muted dark:data-[state=active]:!border-b-foreground rounded-none border-b border-transparent bg-transparent p-0 pb-1.5 font-mono data-[state=active]:bg-transparent data-[state=active]:shadow-none" tabindex="-1" data-orientation="horizontal" data-radix-collection-item="">yarn</button><button type="button" role="tab" aria-selected="false" aria-controls="radix-«R3aj5»-content-bun" data-state="inactive" id="radix-«R3aj5»-trigger-bun" data-slot="tabs-trigger" class="dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 border text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 text-muted-foreground data-[state=active]:border-b-foreground data-[state=active]:text-foreground dark:data-[state=active]:!bg-muted dark:data-[state=active]:!border-muted dark:data-[state=active]:!border-b-foreground rounded-none border-b border-transparent bg-transparent p-0 pb-1.5 font-mono data-[state=active]:bg-transparent data-[state=active]:shadow-none" tabindex="-1" data-orientation="horizontal" data-radix-collection-item="">bun</button></div></div><div class="overflow-x-auto"><div data-state="inactive" data-orientation="horizontal" role="tabpanel" aria-labelledby="radix-«R3aj5»-trigger-pnpm" hidden="" id="radix-«R3aj5»-content-pnpm" tabindex="0" data-slot="tabs-content" 
7class="flex-1 outline-none mt-0"></div><div data-state="active" data-orientation="horizontal" role="tabpanel" aria-labelledby="radix-«R3aj5»-trigger-npm" id="radix-«R3aj5»-content-npm" tabindex="0" data-slot="tabs-content" class="flex-1 outline-none mt-0" style="animation-duration:0s"><pre class="px-4 py-5"><code class="relative font-mono text-sm leading-none" data-language="bash">npx shadcn@latest add https://shadcn-kanban-board.com/r/use-js-loaded.json</code></pre></div><div data-state="inactive" data-orientation="horizontal" role="tabpanel" aria-labelledby="radix-«R3aj5»-trigger-yarn" hidden="" id="radix-«R3aj5»-content-yarn" tabindex="0" data-slot="tabs-content" class="flex-1 outline-none mt-0"></div><div data-state="inactive" data-orientation="horizontal" role="tabpanel" aria-labelledby="radix-«R3aj5»-trigger-bun" hidden="" id="radix-«R3aj5»-content-bun" tabindex="0" data-slot="tabs-content" class="flex-1 outline-none mt-0"></div></div></div><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:hover:bg-accent/50 size-9 text-foreground hover:bg-accent hover:text-accent-foreground absolute top-2 right-2.5 z-10 h-6 w-6 [&amp;_svg]:h-3 [&amp;_svg]:w-3"><span class="sr-only">Copy</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clipboard" aria-hidden="true"><rect width="8" height="4" x="8" y="2" rx="1" ry="1"></rect><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"></path></svg></button></div></section><div class="py-24 sm:py-32"><div class="px-4"><div class="mx-auto grid max-w-2xl grid-cols-1 items-center gap-x-8 gap-y-16 sm:gap-y-20 lg:mx-0 lg:max-w-none lg:grid-cols-2"><div class="lg:pr-8"><div class="lg:max-w-xl"><h2 class="text-primary text-base font-semibold">Why choose this Kanban Board?</h2><p class="text-foreground mt-2 text-4xl font-semibold tracking-tight text-pretty sm:text-5xl">Easily customize this Kanban board</p><p class="text-muted-foreground mt-6 text-lg/8">Get up and running in minutes with a production-ready, accessible, and themeable Kanban board built on Shadcn/UI.</p><dl class="text-muted-foreground mt-10 max-w-xl space-y-8 text-base/7 lg:max-w-none"><div class="relative pl-9"><dt class="text-foreground inline font-semibold"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-package text-primary absolute top-1 left-1 size-5" aria-hidden="true"><path d="M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"></path><path d="M12 22V12"></path><polyline points="3.29 7 12 12 20.71 7"></polyline><path d="m7.5 4.27 9 5.15"></path></svg>Zero-Dependencies</dt> <dd class="inline">No extra libraries. Just plain React. Drop it into your project and start dragging and dropping.</dd></div><div class="relative pl-9"><dt class="text-foreground inline font-semibold"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-palette text-primary absolute top-1 left-1 size-5" aria-hidden="true"><path d="M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z"></path><circle cx="13.5" cy="6.5" r=".5" fill="currentColor"></circle><circle cx="17.5" cy="10.5" r=".5" fill="currentColor"></circle><circle cx="6.5" cy="12.5" r=".5" fill="currentColor"></circle><circle cx="8.5" cy="7.5" r=".5" fill="currentColor"></circle></svg>CSS &amp; Performance Assurance</dt> <dd class="inline">Comes with a hook to toggle between a skeleton loader and the board, ensuring styles and scripts are loaded before interaction for a snappy, flicker-free experience.</dd></div><div class="relative pl-9"><dt class="text-foreground inline font-semibold"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-accessibility text-primary absolute top-1 left-1 size-5" aria-hidden="true"><circle cx="16" cy="4" r="1"></circle><path d="m18 19 1-7-6 1"></path><path d="m5 8 3-3 5.5 3-2.36 3.5"></path><path d="M4.24 14.5a5 5 0 0 0 6.88 6"></path><path d="M13.76 17.5a5 5 0 0 0-6.88-6"></path></svg>Accessibility-First</dt> <dd class="inline">Built-in keyboard controls and screen-reader announcements ensure everyone can manage tasks.</dd></div><div class="relative pl-9"><dt class="text-foreground inline font-semibold"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-paintbrush text-primary absolute top-1 left-1 size-5" aria-hidden="true"><path d="m14.622 17.897-10.68-2.913"></path><path d="M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0z"></path><path d="M9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15"></path></svg>Seamless Theming</dt> <dd class="inline">Automatically adapts to your Shadcn color scheme for perfect visual integration with light an dark mode.</dd></div><div class="relative pl-9"><dt class="text-foreground inline font-semibold"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plug text-primary absolute top-1 left-1 size-5" aria-hidden="true"><path d="M12 22v-5"></path><path d="M9 8V2"></path><path d="M15 8V2"></path><path d="M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"></path></svg>
7Framework-Agnostic</dt> <dd class="inline">Works equally well with local state, React Router v7 actions, or Next.js server actions, and so on ... No lock-in!</dd></div></dl></div></div><img alt="Kanban Board screenshot (light)" class="border-border w-3xl max-w-none rounded-xl border sm:w-228 md:-ml-4 lg:-ml-0 dark:hidden" height="1442" src="/images/app-light.png" width="2432"/><img alt="Kanban Board screenshot (dark)" class="border-border w-3xl max-w-none rounded-xl border sm:w-228 md:-ml-4 lg:-ml-0 hidden dark:block" height="1442" src="/images/app-dark.png" width="2432"/></div></div></div><section class="px-4 py-24"><div class="mx-auto max-w-4xl"><h2 class="text-primary mb-10 text-3xl font-semibold">Frequently asked questions</h2><div data-slot="accordion" data-orientation="vertical"><div data-state="closed" data-orientation="vertical" data-slot="accordion-item" class="border-b last:border-b-0"><h3 data-orientation="vertical" data-state="closed" class="flex"><button type="button" aria-controls="radix-«R9kj5»" aria-expanded="false" data-state="closed" data-orientation="vertical" id="radix-«R1kj5»" data-slot="accordion-trigger" class="focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&amp;[data-state=open]&gt;svg]:rotate-180" data-radix-collection-item="">Is this free?<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></h3><div data-state="closed" id="radix-«R9kj5»" hidden="" role="region" aria-labelledby="radix-«R1kj5»" data-orientation="vertical" data-slot="accordion-content" class="data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm" style="--radix-accordion-content-height:var(--radix-collapsible-content-height);--radix-accordion-content-width:var(--radix-collapsible-content-width)"></div></div><div data-state="closed" data-orientation="vertical" data-slot="accordion-item" class="border-b last:border-b-0"><h3 data-orientation="vertical" data-state="closed" class="flex"><button type="button" aria-controls="radix-«Rakj5»" aria-expanded="false" data-state="closed" data-orientation="vertical" id="radix-«R2kj5»" data-slot="accordion-trigger" class="focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&amp;[data-state=open]&gt;svg]:rotate-180" data-radix-collection-item="">How do I contribute?<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></h3><div data-state="closed" id="radix-«Rakj5»" hidden="" role="region" aria-labelledby="radix-«R2kj5»" data-orientation="vertical" data-slot="accordion-content" class="data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm" style="--radix-accordion-content-height:var(--radix-collapsible-content-height);--radix-accordion-content-width:var(--radix-collapsible-content-width)"></div></div><div data-state="closed" data-orientation="vertical" data-slot="accordion-item" class="border-b last:border-b-0"><h3 data-orientation="vertical" data-state="closed" class="flex"><button type="button" aria-controls="radix-«Rbkj5»" aria-expanded="false" data-state="closed" data-orientation="vertical" id="radix-«R3kj5»" data-slot="accordion-trigger" class="focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 roun
7ded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&amp;[data-state=open]&gt;svg]:rotate-180" data-radix-collection-item="">I&#x27;m stuck! Where can I get help?<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></h3><div data-state="closed" id="radix-«Rbkj5»" hidden="" role="region" aria-labelledby="radix-«R3kj5»" data-orientation="vertical" data-slot="accordion-content" class="data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm" style="--radix-accordion-content-height:var(--radix-collapsible-content-height);--radix-accordion-content-width:var(--radix-collapsible-content-width)"></div></div><div data-state="closed" data-orientation="vertical" data-slot="accordion-item" class="border-b last:border-b-0"><h3 data-orientation="vertical" data-state="closed" class="flex"><button type="button" aria-controls="radix-«Rckj5»" aria-expanded="false" data-state="closed" data-orientation="vertical" id="radix-«R4kj5»" data-slot="accordion-trigger" class="focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&amp;[data-state=open]&gt;svg]:rotate-180" data-radix-collection-item="">This is awesome! How can I support you?<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></h3><div data-state="closed" id="radix-«Rckj5»" hidden="" role="region" aria-labelledby="radix-«R4kj5»" data-orientation="vertical" data-slot="accordion-content" class="data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm" style="--radix-accordion-content-height:var(--radix-collapsible-content-height);--radix-accordion-content-width:var(--radix-collapsible-content-width)"></div></div></div></div></section></main><footer class="border-t sm:h-[var(--header-height)]"><div class="container mx-auto flex h-full flex-col items-center justify-between gap-4 px-4 py-4 sm:flex-row md:py-0"><div class="flex items-center gap-2"><a href="https://www.youtube.com/@janhesters" data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 size-8" aria-label="YouTube"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 576 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg></a><a href="https://www.linkedin.com/in/jan-hesters/" data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;
7size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 size-8" aria-label="LinkedIn"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 448 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg></a><a href="https://x.com/janhesters" data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 size-8" aria-label="X (formerly known as Twitter)"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"></path></svg></a><a href="https://github.com/janhesters" data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 size-8" aria-label="Github"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 496 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a><div class="h-6"><div data-orientation="vertical" role="none" data-slot="separator-root" class="bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px"></div></div><button data-slot="dropdown-menu-trigger" class="inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;
7size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 size-8" aria-label="Open theme menu" type="button" id="radix-«Rpr5»" aria-haspopup="menu" aria-expanded="false" data-state="closed"><svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"></path><path d="M12 3l0 18"></path><path d="M12 9l4.65 -4.65"></path><path d="M12 14.3l7.37 -7.37"></path><path d="M12 19.6l8.85 -8.85"></path></svg></button></div><div class="flex items-center gap-2"><span class="flex items-center gap-2">Made with ❤️ by<a aria-label="ReactSquad" class="text-foreground h-6 w-auto" href="https://reactsquad.io"><svg width="153" height="25" viewBox="0 0 153 25" fill="none" xmlns="http://www.w3.org/2000/svg" class=""><g clip-path="url(#clip0_12_23_your_icon)"> <path d="M23.6669 7.70503C23.4458 7.5855 23.2147 7.46952 22.9742 7.35763C22.8212 7.28641 22.6652 7.21709 22.5065 7.14996C22.5275 6.97831 22.5457 6.80802 22.5607 6.63964C22.8264 3.64732 22.0562 1.46877 20.3921 0.505988C18.8754 -0.371924 16.8574 -0.100118 14.6545 1.26273C14.4408 1.39509 14.2254 1.53754 14.0084 1.69036C13.8701 1.78779 13.7321 1.88849 13.5946 1.99274C13.4568 1.88822 13.319 1.78752 13.181 1.69036C10.7285 -0.0365331 8.46136 -0.457069 6.7973 0.505988C5.28053 1.38363 4.50622 3.27154 4.58273 5.86488C4.58981 6.1165 4.60533 6.37493 4.62874 6.63964C4.64372 6.80802 4.66196 6.97831 4.68319 7.14996C4.52419 7.21709 4.36819 7.28641 4.21518 7.35763C3.97477 7.46952 3.74362 7.5855 3.52254 7.70503C1.24372 8.9358 -0.000244141 10.5514 -0.000244141 12.3069C-0.000244141 14.0625 1.24372 15.6783 3.52254 16.9088C3.74362 17.0283 3.97477 17.1443 4.21518 17.2562C4.36819 17.3274 4.52419 17.3967 4.68319 17.4641C4.66196 17.6358 4.64372 17.8061 4.62874 17.9745C4.36301 20.9668 5.13324 23.1451 6.7973 24.1081C7.38212 24.4465 8.04126 24.6141 8.75704 24.6141C9.89754 24.6141 11.1813 24.1886 12.5347 23.3511C12.7487 23.2187 12.964 23.0763 13.181 22.9235C13.319 22.826 13.4571 22.7253 13.5948 22.6211C13.7326 22.7256 13.8704 22.8263 14.0084 22.9235C15.599 24.0434 17.1116 24.6141 18.4324 24.6141C19.1482 24.6141 19.8073 24.4465 20.3921 24.1081C21.9089 23.2302 22.6832 21.3426 22.6067 18.7492C22.5996 18.4976 22.5841 18.2392 22.5607 17.9745C22.5457 17.8058 22.5275 17.6355 22.5062 17.4639C22.6652 17.3967 22.8212 17.3274 22.9742 17.2562C23.2147 17.1443 23.4455 17.0286 23.6666 16.9088C25.9457 15.6783 27.1897 14.0627 27.1897 12.3069C27.1897 10.5511 25.9457 8.9358 23.6669 7.70503ZM23.3334 15.2138C23.0151 15.4081 22.6655 15.5945 22.2862 15.7711C22.2623 15.7823 22.2381 15.7935 22.2138 15.8044C21.7322 16.0251 21.2168 16.2252 20.6734 16.4034C20.5813 16.4337 20.4882 16.4634 20.3943 16.4923C20.155 16.9009 19.9078 17.3012 19.6532 17.6917C19.4708 17.9717 19.2848 18.2471 19.0953 18.517C19.3077 18.4717 19.5176 18.4236 19.7248 18.3729C20.1362 18.2722 20.5372 18.1611 20.9263 18.04C20.9287 18.0664 20.9312 18.0929 20.9336 18.1194C20.9707 18.5369 20.9846 18.9334 20.9758 19.307C20.9369 20.9802 20.4471 22.1855 19.5753 22.6901C18.5092 23.3069 16.8225 22.9038 14.9474 21.5838C14.9257 21.5685 14.9042 21.5532 14.8824 21.5377C14.4506 21.2299 14.0201 20.8825 13.5946 20.4999C13.5224 20.4349 13.4503 20.3689 13.3784 20.302C12.5665 20.2963 11.7644 20.2572 10.9792 20.1866C11.4132 20.6693 11.857 21.121 12.3071 21.5377C12.2855 21.5532 12.2638 21.5685 12.2423 21.5838C11.9 21.8248 11.5643 22.0349 11.2371 22.2142C10.3225 22.7152 9.47771 22.9729 8.75976 22.9729C8.32768 22.9729 7.94162 22.8795 7.61409 22.6901C6.54791 22.0731 6.05294 20.4071 6.25605 18.1194C6.2585 18.0929 6.26095 18.0664 6.2634 18.04C6.31349 17.5113 6.39844 16.9642 6.51633 16.4034C6.5362 16.3084 6.55717 16.2129 6.57922 16.1171C6.17818 15.4095 5.81063 14.6937 5.47874 13.9762C5.27917 14.5943 5.
711064 15.2054 4.9756 15.8044C4.95137 15.7935 4.92741 15.7823 4.90345 15.7711C4.52419 15.5945 4.17461 15.4081 3.85634 15.2138C2.42996 14.3438 1.63332 13.3158 1.63332 12.3069C1.63332 11.298 2.42996 10.27 3.85634 9.4C4.17461 9.2057 4.52419 9.01931 4.90345 8.84275C4.92741 8.83156 4.95137 8.82064 4.9756 8.80972C5.4575 8.58895 5.97289 8.38892 6.51633 8.21071C6.60835 8.18042 6.70119 8.15095 6.79485 8.12202C7.03417 7.71322 7.28165 7.31315 7.53595 6.92236C7.71836 6.6421 7.90459 6.36674 8.09408 6.09685C7.88172 6.14215 7.6718 6.19018 7.46461 6.24121C7.05323 6.34164 6.65219 6.45271 6.2634 6.57387C6.26095 6.5474 6.2585 6.52093 6.25605 6.49446C6.21902 6.0772 6.20513 5.6804 6.21385 5.30708C6.25251 3.63394 6.74231 2.42855 7.61409 1.92397C7.94162 1.7343 8.32768 1.64124 8.75976 1.64124C9.73418 1.64124 10.943 2.11581 12.2423 3.03029C12.2638 3.04558 12.2855 3.06086 12.3071 3.07641C12.7389 3.38424 13.1693 3.73164 13.5948 4.11397C13.667 4.17892 13.7391 4.24496 13.811 4.31182C14.6229 4.31755 15.425 4.35658 16.2102 4.42726C15.7762 3.94477 15.3327 3.49313 14.8826 3.07641C14.9042 3.06086 14.9259 3.04558 14.9474 3.03029C15.2894 2.78932 15.6254 2.57892 15.9524 2.3999C16.8669 1.89859 17.712 1.64124 18.4297 1.64124C18.8617 1.64124 19.2481 1.7343 19.5753 1.92397C20.6418 2.54099 21.1368 4.20676 20.9336 6.49446C20.9312 6.52093 20.9287 6.5474 20.9263 6.57387C20.8762 7.10275 20.7913 7.64991 20.6734 8.21071C20.6535 8.30568 20.6325 8.4012 20.6105 8.49726C21.0115 9.20488 21.3791 9.92042 21.7107 10.6376C21.9105 10.0195 22.0788 9.40846 22.2138 8.80945C22.2381 8.82037 22.2623 8.83156 22.2862 8.84275C22.6652 9.01931 23.0148 9.20543 23.3331 9.39973C24.7595 10.27 25.5561 11.298 25.5561 12.3069C25.5561 13.3158 24.7595 14.3438 23.3334 15.2138Z" fill="currentColor"></path><path d="M20.136 10.2012C19.9588 9.85325 19.7723 9.50612 19.5774 9.16063C19.533 9.08122 19.4878 9.00208 19.4423 8.92294C19.1984 8.4994 18.9457 8.08514 18.6852 7.6818C18.9593 7.73938 19.2291 7.80188 19.4935 7.86901C19.5588 7.54781 19.6122 7.23179 19.6533 6.92233C19.6775 6.74112 19.6974 6.5621 19.7132 6.38554C19.7176 6.33696 19.7214 6.28893 19.7249 6.2409C19.5177 6.19041 19.3078 6.14211 19.0955 6.09708C18.5294 5.97564 17.9457 5.87358 17.3481 5.79117C16.5999 5.68801 15.8302 5.61569 15.0458 5.57585C14.6565 5.55593 14.2634 5.54392 13.8678 5.54037C13.7771 5.53955 13.6862 5.53901 13.595 5.53901C13.5038 5.53901 13.4128 5.53955 13.3219 5.54037C12.9263 5.54392 12.5334 5.55593 12.1438 5.57585C12.3309 5.36654 12.5195 5.16377 12.7098 4.96756C12.3216 4.62316 11.9301 4.31097 11.538 4.03507C11.498 4.00696 11.4583 3.9794 11.4191 3.95265C10.8781 4.51946 10.3502 5.13457 9.84157 5.79117C9.37845 6.38908 8.93113 7.02112 8.50422 7.68207C8.29268 8.0101 8.08603 8.34522 7.8851 8.68661C7.83882 8.76493 7.7928 8.8438 7.74734 8.92294C7.50339 9.34648 7.27197 9.77302 7.05362 10.2006C6.96622 9.93375 6.88536 9.66877 6.8113 9.4057C6.31933 9.57025 5.85403 9.75419 5.4195 9.9564C5.3754 9.97687 5.33184 9.99761 5.28882 10.0184C5.50772 10.771 5.77535 11.5368 6.08845 12.3066C6.37351 13.0077 6.69586 13.712 7.05362 14.4128C7.23113 14.7608 7.41736 15.1076 7.61202 15.4531C7.65667 15.5325 7.70187 15.6117 7.74734 15.6908C7.99128 16.1146 8.24421 16.5286 8.50477 16.9322C8.23033 16.8746 7.96079 16.8121 7.69615 16.745C7.68308 16.8086 7.67083 16.8722 7.65885 16.9352C7.65313 16.9644 7.64769 16.9936 7.64252 17.0228C7.63734 17.0498 7.63244 17.0771 7.62781 17.1041C7.62183 17.1372 7.61611 17.1702 7.61039 17.2032C7.58235 17.3675 7.55784 17.5304 7.53633 17.6914C7.53171 17.7264 7.52708 17.7613 7.52272 17.7962C7.51973 17.8197 7.517 17.8429 7.51428 17.8663C7.50639 17.9324 7.49904 17.9982 7.49223 18.0634C7.48978 18.0871 7.48733 18.1109 7.48515 18.1346C7.48215 18.166 7.47916 18.1971 7.47644 18.2282C7.47208 18.2768 7.46827 18.3248 7.46473 18.3728C7.67192 18.4233 7.88183 18.4716 8.0942 18.5167C8.6605 18.6381 9.24396 18.7402 9.84157 18.8226C10.5895 18.9257 11.3592 18.9981 12.1435 19.0379C12.5329 19.0578 12.926 19.0698 13.3219 19.0734C13.4128 19.0742 13.5038 19.0747 13.595 19.0747C13.6862 19.0747 13.7771 19.0742 13.8678 19.0734C14.2636 19.0698 14.6565 19.0578 15.0461 19.0379C14.8591 19.2472 14.6704 19.45 14.4798 19.6462C14.8681 19.9906 15.2596 20.3025 15.6516 20.5787C15.6916 20.6068 15.7314 20.6344 15.7706 20.6611C16.3116 20.0943 16.8395 19.4792 17.348
71 18.8226C17.8112 18.2249 18.2585 17.5929 18.6852 16.9319C18.897 16.6039 19.1036 16.2685 19.3046 15.9269C19.3508 15.8485 19.3968 15.7699 19.4423 15.6908C19.6863 15.2673 19.9177 14.8407 20.136 14.4131C20.2234 14.68 20.3043 14.9452 20.3786 15.2083C20.8703 15.0438 21.3356 14.8596 21.7701 14.6573C21.8143 14.6369 21.8578 14.6161 21.9008 14.5954C21.6819 13.8427 21.4143 13.077 21.1012 12.3071C20.8164 11.6063 20.4938 10.902 20.136 10.2012ZM18.6168 13.7942C18.4303 14.1547 18.2337 14.5143 18.0276 14.8721C17.5381 15.7219 17.0127 16.5297 16.4616 17.2837C15.925 17.3424 15.3772 17.3847 14.821 17.4098C14.4164 17.4281 14.0072 17.4374 13.595 17.4374C13.1828 17.4374 12.7736 17.4281 12.369 17.4098C11.8127 17.3847 11.265 17.3424 10.7283 17.2837C10.409 16.8473 10.0986 16.3927 9.79855 15.9225C9.58074 15.5806 9.36811 15.2302 9.16201 14.8721C8.67248 14.0223 8.23741 13.1624 7.86169 12.3069C8.07895 11.8116 8.31664 11.3149 8.57311 10.8193C8.75933 10.4591 8.9559 10.0994 9.16201 9.74163C9.65153 8.89183 10.177 8.08405 10.7283 7.33004C11.265 7.27136 11.8127 7.22906 12.369 7.20396C12.7736 7.18567 13.1828 7.17639 13.595 7.17639C14.0072 7.17639 14.4161 7.18567 14.8207 7.20396C15.3769 7.22906 15.9247 7.27136 16.4611 7.33004C16.7804 7.7664 17.0908 8.22105 17.3908 8.69125C17.6089 9.03319 17.8215 9.38359 18.0276 9.74163C18.5172 10.5917 18.9522 11.4516 19.3282 12.3071C19.1104 12.8022 18.873 13.2989 18.6168 13.7942Z" fill="currentColor"></path></g><path d="M35.635 20.307V6.22745H41.6288C42.4334 6.22745 43.1709 6.42859 43.8413 6.83086C44.5252 7.21973 45.0683 7.75609 45.4705 8.43995C45.8728 9.11041 46.0739 9.86802 46.0739 10.7128C46.0739 11.4771 45.8728 12.1878 45.4705 12.8448C45.0683 13.5019 44.5319 14.0316 43.8614 14.4338C43.191 14.8227 42.4468 15.0171 41.6288 15.0171H37.8072V20.307H35.635ZM44.0022 20.307L40.422 13.9511L42.6546 13.4483L46.6371 20.3271L44.0022 20.307ZM37.8072 12.9253H41.83C42.2188 12.9253 42.5675 12.8314 42.8759 12.6437C43.1843 12.4426 43.4256 12.1744 43.6 11.8392C43.7743 11.4905 43.8614 11.1084 43.8614 10.6927C43.8614 10.2234 43.7475 9.81439 43.5195 9.46575C43.305 9.1037 42.9966 8.82211 42.5943 8.62098C42.2054 8.41984 41.7629 8.31927 41.2668 8.31927H37.8072V12.9253ZM53.5382 20.5082C52.452 20.5082 51.4866 20.2802 50.6418 19.8243C49.8104 19.355 49.1534 18.718 48.6707 17.9135C48.2013 17.1089 47.9667 16.1837 47.9667 15.1378C47.9667 14.3064 48.1008 13.5488 48.369 12.865C48.6371 12.1811 49.0059 11.5911 49.4752 11.095C49.9579 10.5854 50.5278 10.1965 51.1849 9.92836C51.8553 9.64677 52.5794 9.50598 53.3571 9.50598C54.041 9.50598 54.6779 9.64007 55.2679 9.90825C55.8579 10.163 56.3675 10.5184 56.7966 10.9743C57.2391 11.4302 57.5743 11.9733 57.8023 12.6035C58.0436 13.2203 58.1576 13.8975 58.1442 14.635L58.1241 15.52H49.4953L49.0327 13.8706H56.334L56.0323 14.2126V13.7298C55.992 13.2873 55.8445 12.8918 55.5898 12.5431C55.335 12.1945 55.0132 11.9196 54.6243 11.7185C54.2354 11.5173 53.813 11.4168 53.3571 11.4168C52.633 11.4168 52.0229 11.5576 51.5268 11.8392C51.0307 12.1073 50.6552 12.5096 50.4004 13.046C50.1457 13.5689 50.0183 14.2193 50.0183 14.997C50.0183 15.7345 50.1725 16.3781 50.4809 16.9279C50.7893 17.4643 51.2251 17.88 51.7883 18.175C52.3515 18.47 53.0018 18.6175 53.7393 18.6175C54.2623 18.6175 54.745 18.5303 55.1875 18.356C55.6434 18.1817 56.1328 17.8666 56.6558 17.4106L57.7017 18.8789C57.3799 19.2008 56.9843 19.4824 56.515 19.7237C56.0591 19.9651 55.5696 20.1595 55.0467 20.307C54.5371 20.4411 54.0343 20.5082 53.5382 20.5082ZM64.3645 20.5082C63.4929 20.5082 62.6951 20.2668 61.971 19.7841C61.2603 19.3013 60.6904 18.6443 60.2613 17.8129C59.8322 16.9816 59.6177 16.0429 59.6177 14.997C59.6177 13.9377 59.8322 12.9991 60.2613 12.1811C60.7038 11.3497 61.2938 10.6994 62.0313 10.2301C62.7822 9.76075 63.6203 9.52609 64.5455 9.52609C65.0953 9.52609 65.5981 9.60655 66.054 9.76746C66.51 9.92836 66.9055 10.1563 67.2408 10.4513C67.5894 10.7329 67.871 11.0614 68.0855 11.4369C68.3135 11.8123 68.4543 12.2146 68.5079 12.6437L68.0453 12.4828V9.74734H70.1371V20.307H68.0453V17.7928L68.528 17.652C68.4476 18.0141 68.28 18.3694 68.0252 18.718C67.7838 19.0533 67.4687 19.355 67.0798 19.6231C66.7044 19.8913 66.282 20.1059 65.8127 20.2668C65.3568 20.4277 64.874 20.5082 64.3645 20.5082ZM64.9076 18.5974C65.5378 18.5974 66.0943 18.4431 66.577 18.1347C67.0597 17.8263 67.4352 17.4039 67.7034 16.8676C67.985 16.3178 68.1258 15.6943 68.1258 14.997C68.1258 14.3131 67.985 13.703 67.7034 13.1667C67.4352 12.6303 67.0597 12.2079 66.5
777 11.8995C66.0943 11.5911 65.5378 11.4369 64.9076 11.4369C64.2908 11.4369 63.741 11.5911 63.2582 11.8995C62.7889 12.2079 62.4135 12.6303 62.1319 13.1667C61.8637 13.703 61.7296 14.3131 61.7296 14.997C61.7296 15.6943 61.8637 16.3178 62.1319 16.8676C62.4135 17.4039 62.7889 17.8263 63.2582 18.1347C63.741 18.4431 64.2908 18.5974 64.9076 18.5974ZM77.4209 20.5082C76.4421 20.5082 75.5638 20.2668 74.7861 19.7841C74.0217 19.3013 73.4116 18.6443 72.9557 17.8129C72.5132 16.9816 72.292 16.0496 72.292 15.0171C72.292 13.9846 72.5132 13.0527 72.9557 12.2213C73.4116 11.39 74.0217 10.7329 74.7861 10.2502C75.5638 9.76746 76.4421 9.52609 77.4209 9.52609C78.3596 9.52609 79.2111 9.72052 79.9754 10.1094C80.7531 10.4848 81.3431 11.0011 81.7454 11.6581L80.5989 13.0661C80.3844 12.7577 80.1095 12.4761 79.7742 12.2213C79.439 11.9665 79.0837 11.7654 78.7082 11.6179C78.3328 11.4704 77.9707 11.3967 77.6221 11.3967C76.9784 11.3967 76.4018 11.5576 75.8923 11.8794C75.3962 12.1878 75.0006 12.6169 74.7056 13.1667C74.4106 13.7164 74.2631 14.3333 74.2631 15.0171C74.2631 15.701 74.4173 16.3178 74.7257 16.8676C75.0341 17.4039 75.4431 17.833 75.9526 18.1549C76.4622 18.4767 77.0254 18.6376 77.6422 18.6376C78.0042 18.6376 78.3529 18.5772 78.6881 18.4566C79.0367 18.3359 79.372 18.1549 79.6938 17.9135C80.0156 17.6721 80.3173 17.3771 80.5989 17.0285L81.7454 18.4364C81.3163 19.0399 80.6995 19.536 79.8949 19.9249C79.1038 20.3137 78.2791 20.5082 77.4209 20.5082ZM84.9128 20.307V7.05211H86.9845V20.307H84.9128ZM82.7204 11.7587V9.74734H89.4384V11.7587H82.7204ZM96.0982 20.5082C95.3339 20.5082 94.6232 20.4076 93.9662 20.2064C93.3225 20.0053 92.7325 19.7036 92.1962 19.3013C91.6732 18.8856 91.2039 18.3761 90.7882 17.7727L92.2766 16.063C92.9337 17.0017 93.5639 17.652 94.1673 18.0141C94.7707 18.3761 95.4881 18.5571 96.3195 18.5571C96.829 18.5571 97.2916 18.4767 97.7073 18.3158C98.123 18.1549 98.4515 17.9336 98.6929 17.652C98.9342 17.3704 99.0549 17.0486 99.0549 16.6866C99.0549 16.4452 99.0147 16.2172 98.9342 16.0027C98.8538 15.7881 98.7264 15.5937 98.5521 15.4194C98.3912 15.2451 98.1766 15.0842 97.9084 14.9367C97.6537 14.7892 97.352 14.6618 97.0033 14.5545C96.6547 14.4338 96.2524 14.3333 95.7965 14.2528C95.0724 14.1053 94.4422 13.9109 93.9058 13.6695C93.3695 13.4281 92.9203 13.1264 92.5582 12.7644C92.1962 12.4023 91.928 11.9934 91.7537 11.5375C91.5793 11.0681 91.4922 10.5452 91.4922 9.96859C91.4922 9.40541 91.6129 8.88245 91.8542 8.39973C92.109 7.917 92.4509 7.50132 92.88 7.15268C93.3225 6.79063 93.8388 6.51575 94.4288 6.32802C95.0188 6.12688 95.6557 6.02631 96.3396 6.02631C97.0637 6.02631 97.7274 6.12018 98.3308 6.30791C98.9342 6.49563 99.4706 6.77722 99.9399 7.15268C100.409 7.51473 100.798 7.96393 101.107 8.5003L99.5779 10.0088C99.3097 9.56632 99.008 9.19757 98.6728 8.90257C98.3375 8.59416 97.9688 8.3662 97.5665 8.2187C97.1642 8.05779 96.7351 7.97734 96.2792 7.97734C95.7563 7.97734 95.3004 8.05779 94.9115 8.2187C94.5226 8.37961 94.2142 8.60757 93.9863 8.90257C93.7717 9.18416 93.6645 9.51939 93.6645 9.90825C93.6645 10.1898 93.7181 10.4513 93.8254 10.6927C93.9326 10.9206 94.0936 11.1285 94.3081 11.3162C94.5361 11.4905 94.8378 11.6514 95.2132 11.7989C95.5887 11.933 96.0379 12.0537 96.5608 12.161C97.2983 12.3219 97.9554 12.5297 98.532 12.7845C99.1086 13.0259 99.598 13.3142 100 13.6494C100.403 13.9846 100.704 14.3601 100.905 14.7758C101.12 15.1914 101.227 15.6406 101.227 16.1234C101.227 17.0218 101.019 17.7995 100.604 18.4566C100.188 19.1136 99.598 19.6231 98.8337 19.9852C98.0694 20.3338 97.1575 20.5082 96.0982 20.5082ZM111.392 24.732V17.7928H111.794C111.794 18.1146 111.687 18.4364 111.472 18.7583C111.257 19.0667 110.969 19.355 110.607 19.6231C110.245 19.8913 109.843 20.1059 109.4 20.2668C108.958 20.4277 108.502 20.5082 108.033 20.5082C107.08 20.5082 106.229 20.2735 105.478 19.8042C104.727 19.3214 104.13 18.6711 103.688 17.8531C103.259 17.0218 103.044 16.0764 103.044 15.0171C103.044 13.9578 103.259 13.0192 103.688 12.2012C104.117 11.3698 104.7 10.7195 105.438 10.2502C106.189 9.76746 107.034 9.52609 107.972 9.52609C108.495 9.52609 108.991 9.61325 109.461 9.78757C109.943 9.96189 110.372 10.1898 110.748 10.4714C111.137 10.753 111.438 11.0681 111.653 11.4168C111.881 11.752 111.995 12.0939 111.995 12.4426L111.392 12.4828V9.72723H113.463V24.732H111.392ZM108.254 18.5974C108.884 18.5974 109.44 18.4431 109.923 18.1347C110.406 17.8263 110.781 17.4039 111.05 16.8676C111.331 16.3312 111.472 15.7144 111.472 15.0171C111.472 14.3198 111.331 13.703 111.05 13.1667C110.781 12.6169 110.406 12.1878 109.923 11.8794C109.44 11.571 108.884 11.4168 108.254 11.4168C107.624 11.4168 107.067 11.5777 106.584 11.8995C106.102 12.2079 105.719 12.637 105.438 13.1868C105.17 13.7231 105.036 14.3333 105.036 15.0171C105.036 15.701 105.17 16.3178 105.438 16.8676C105.719 17.4039 106.102 17.8263 106.584 18.1347C107.067 18.4431 107.624 18.5974 108.254 18.5974ZM119.964 20.5082C119.213 20.5082 118.556 20.3338 117.993 19.9852C117.443 19.6366 117.014 19.1471 116.706 18.5169C116.411 17.8867 116.263 17.1358 116.263 16.2642V9.74734H118.335V15.701C118.335 16.3178 118.429 16.8542 118.616 17.3101C118.818 17.7526 119.099 18.0945 119.461 18.3359C119.837 18.5772 120.286 18.6979 120.809 18.6979C121.198 18.6979 121.553 18.6376 121.875 18.5169C122.197 18.3828 122.472 18.2018 122.699 17.9738C122.941 17.7459 123.129 17.471 123.263 17.1492C123.397 16.8274 123.464 16.4787 123.464 16.1033V9.74734H125.536V20.307H123.464V18.0945L123.826 17.8531C123.665 18.3493 123.39 18.7985 123.001 19.2008C122.626 19.603 122.177 19.9249 121.654 20.1662C121.131 20.3942 120.567 20.5082 119.964 20.5082ZM132.41 20.5082C131.539 20.5082 130.741 20.2668 130.017 19.7841C129.306 19.3013 128.736 18.6443 128.307 17.8129C127.878 16.9816 127.663 16.0429 127.663 14.997C127.663 13.937
77 127.878 12.9991 128.307 12.1811C128.749 11.3497 129.339 10.6994 130.077 10.2301C130.828 9.76075 131.666 9.52609 132.591 9.52609C133.141 9.52609 133.644 9.60655 134.1 9.76746C134.556 9.92836 134.951 10.1563 135.286 10.4513C135.635 10.7329 135.917 11.0614 136.131 11.4369C136.359 11.8123 136.5 12.2146 136.554 12.6437L136.091 12.4828V9.74734H138.183V20.307H136.091V17.7928L136.574 17.652C136.493 18.0141 136.326 18.3694 136.071 18.718C135.829 19.0533 135.514 19.355 135.125 19.6231C134.75 19.8913 134.328 20.1059 133.858 20.2668C133.402 20.4277 132.92 20.5082 132.41 20.5082ZM132.953 18.5974C133.583 18.5974 134.14 18.4431 134.623 18.1347C135.105 17.8263 135.481 17.4039 135.749 16.8676C136.031 16.3178 136.171 15.6943 136.171 14.997C136.171 14.3131 136.031 13.703 135.749 13.1667C135.481 12.6303 135.105 12.2079 134.623 11.8995C134.14 11.5911 133.583 11.4369 132.953 11.4369C132.336 11.4369 131.787 11.5911 131.304 11.8995C130.835 12.2079 130.459 12.6303 130.178 13.1667C129.909 13.703 129.775 14.3131 129.775 14.997C129.775 15.6943 129.909 16.3178 130.178 16.8676C130.459 17.4039 130.835 17.8263 131.304 18.1347C131.787 18.4431 132.336 18.5974 132.953 18.5974ZM145.386 20.5082C144.421 20.5082 143.556 20.2735 142.791 19.8042C142.041 19.3214 141.444 18.6711 141.001 17.8531C140.559 17.0218 140.338 16.0764 140.338 15.0171C140.338 13.9578 140.552 13.0192 140.981 12.2012C141.424 11.3698 142.02 10.7195 142.771 10.2502C143.522 9.76746 144.374 9.52609 145.326 9.52609C145.849 9.52609 146.352 9.61325 146.834 9.78757C147.33 9.94848 147.773 10.1764 148.162 10.4714C148.551 10.753 148.852 11.0681 149.067 11.4168C149.295 11.752 149.409 12.0939 149.409 12.4426L148.805 12.4828V5.42291H150.877V20.307H148.805V17.7928H149.208C149.208 18.1146 149.1 18.4364 148.886 18.7583C148.671 19.0667 148.383 19.355 148.021 19.6231C147.672 19.8913 147.263 20.1059 146.794 20.2668C146.338 20.4277 145.869 20.5082 145.386 20.5082ZM145.668 18.718C146.298 18.718 146.854 18.5571 147.337 18.2353C147.82 17.9135 148.195 17.4777 148.464 16.9279C148.745 16.3647 148.886 15.7278 148.886 15.0171C148.886 14.3064 148.745 13.6762 148.464 13.1264C148.195 12.5633 147.82 12.1208 147.337 11.7989C146.854 11.4771 146.298 11.3162 145.668 11.3162C145.037 11.3162 144.481 11.4771 143.998 11.7989C143.516 12.1208 143.133 12.5633 142.852 13.1264C142.584 13.6762 142.45 14.3064 142.45 15.0171C142.45 15.7278 142.584 16.3647 142.852 16.9279C143.133 17.4777 143.516 17.9135 143.998 18.2353C144.481 18.5571 145.037 18.718 145.668 18.718Z" fill="currentColor"></path><defs><clipPath id="clip0_12_23_your_icon"> <rect width="27.1899" height="24.614" fill="white"></rect></clipPath></defs></svg></a></span></div></div></footer></div>
7<script>((storageKey2, restoreKey) => {
8    if (!window.history.state || !window.history.state.key) {
9      let key = Math.random().toString(32).slice(2);
10      window.history.replaceState({ key }, "");
11    }
12    try {
13      let positions = JSON.parse(sessionStorage.getItem(storageKey2) || "{}");
14      let storedY = positions[restoreKey || window.history.state.key];
15      if (typeof storedY === "number") {
16        window.scrollTo(0, storedY);
17      }
18    } catch (error) {
19      console.error(error);
20      sessionStorage.removeItem(storageKey2);
21    }
22  })("react-router-scroll-positions", null)</script>
22<script>window.__reactRouterContext = {"basename":"/","future":{"unstable_middleware":false,"unstable_optimizeDeps":false,"unstable_splitRouteModules":"enforce","unstable_subResourceIntegrity":false,"unstable_viteEnvironmentApi":false},"routeDiscovery":{"mode":"lazy","manifestPath":"/__manifest"},"ssr":true,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());</script>
22<script type="module" async="">;
23import * as route0 from "/assets/root-4thNS1Xc.js";
24import * as route1 from "/assets/_index-DUnU9q59.js";
25  window.__reactRouterManifest = {
26  "entry": {
27    "module": "/assets/entry.client-B2qFSQdV.js",
28    "imports": [
29      "/assets/chunk-D4RADZKF-BBQm-Qzb.js",
30      "/assets/index-C98qoV4I.js"
31    ],
32    "css": []
33  },
34  "routes": {
35    "root": {
36      "id": "root",
37      "path": "",
38      "hasAction": false,
39      "hasLoader": true,
40      "hasClientAction": false,
41      "hasClientLoader": false,
42      "hasClientMiddleware": false,
43      "hasErrorBoundary": true,
44      "module": "/assets/root-4thNS1Xc.js",
45      "imports": [
46        "/assets/chunk-D4RADZKF-BBQm-Qzb.js",
47        "/assets/index-C98qoV4I.js",
48        "/assets/use-color-scheme-6JFW8wV6.js"
49      ],
50      "css": [
51        "/assets/root-BVe_nNoj.css"
52      ]
53    },
54    "routes/_index": {
55      "id": "routes/_index",
56      "parentId": "root",
57      "index": true,
58      "hasAction": false,
59      "hasLoader": false,
60      "hasClientAction": false,
61      "hasClientLoader": false,
62      "hasClientMiddleware": false,
63      "hasErrorBoundary": false,
64      "module": "/assets/_index-DUnU9q59.js",
65      "imports": [
66        "/assets/use-color-scheme-6JFW8wV6.js",
67        "/assets/chunk-D4RADZKF-BBQm-Qzb.js",
68        "/assets/header-BQrMaWLQ.js",
69        "/assets/index-C98qoV4I.js"
70      ],
71      "css": []
72    }
73  },
74  "url": "/assets/manifest-6233b77f.js",
75  "version": "6233b77f"
76};
77  window.__reactRouterRouteModules = {"root":route0,"routes/_index":route1};
78
79import("/assets/entry.client-B2qFSQdV.js");</script>
79<!--$-->
79<script>window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_58\":-5,\"_59\":-5},\"loaderData\",{\"_3\":4},\"root\",{\"_5\":6,\"_7\":8,\"_9\":10},\"colorScheme\",\"system\",\"title\",\"Shadcn Kanban Board\",\"meta\",[11,12,15,18,21,24,27,29,31,34,37,39,42,44,46,48,51,53,56],{\"_7\":8},{\"_13\":7,\"_14\":8},\"name\",\"content\",{\"_13\":16,\"_14\":17},\"description\",\"A modern, production-ready Kanban board for building full-stack B2B \u0026 B2C SaaS applications using Shadcn/UI.\",{\"_13\":19,\"_14\":20},\"image\",\"https://shadcn-kanban-board.com/public/og-image.png\",{\"_13\":22,\"_14\":23},\"keywords\",\"shadcn, kanban, board, react, reactjs, shadcn/ui, typescript, scrum, agile, task management, flow, trello, jira, asana, notion\",{\"_25\":26,\"_14\":8},\"property\",\"og:title\",{\"_25\":28,\"_14\":17},\"og:description\",{\"_25\":30,\"_14\":20},\"og:image\",{\"_25\":32,\"_14\":33},\"og:url\",\"https://shadcn-kanban-board.com\",{\"_25\":35,\"_14\":36},\"og:type\",\"website\",{\"_25\":38,\"_14\":8},\"og:site_name\",{\"_25\":40,\"_14\":41},\"og:locale\",\"en_US\",{\"_13\":43,\"_14\":8},\"twitter:title\",{\"_13\":45,\"_14\":17},\"twitter:description\",{\"_13\":47,\"_14\":20},\"twitter:image\",{\"_13\":49,\"_14\":50},\"twitter:card\",\"summary_large_image\",{\"_13\":52,\"_14\":8},\"twitter:image:alt\",{\"_13\":54,\"_14\":55},\"twitter:site\",\"@janhesters\",{\"_13\":57,\"_14\":55},\"twitter:creator\",\"actionData\",\"errors\"]\n");</script>
79<!--$-->
79<script>window.__reactRouterContext.streamController.close();</script>
79<!--/$--><!--/$--></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.