mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 09:25:06 +03:00
Our UI Library registry is expanding to include blocks that go beyond UI and in some cases focus purely on back-end. This PR is a precursor to adding more back-end related blocks. This PR includes the `ui-library -> library` rename plus redirects and small UI copy updates. Since this is a rename we'll need to update Vercel configuration. ## Vercel rollout Keep the Library project Root Directory as `apps/ui-library` 1. In the **Library** Vercel project, set: `NEXT_PUBLIC_BASE_PATH=/library` Apply it to Preview and Production, then redeploy the Library project. 2. In the **www** Vercel project, add: `NEXT_PUBLIC_LIBRARY_URL=<current value of NEXT_PUBLIC_UI_LIBRARY_URL>` Apply it to Preview and Production. Keep `NEXT_PUBLIC_UI_LIBRARY_URL` during the migration, then redeploy the www project. 3. Deploy in this order: 1. Library project 2. www project 4. Validate: - `/library` - `/library/docs/nextjs/password-based-auth` - `/ui` redirects to `/library` - `/ui/docs/nextjs/password-based-auth` redirects to `/library/docs/nextjs/password-based-auth` - `/ui/docs/ai-editors-rules/*` still uses its existing Docs redirects No Vercel dashboard redirect rules are needed. Environment-variable changes require a new deployment. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Supabase UI Library has been renamed to **Supabase Library** across navigation, pages, documentation, and resource links. * The Library is now available at `/library`, with updated descriptions covering components, blocks, and developer tools. * **Bug Fixes** * Added permanent redirects from legacy `/ui` URLs to corresponding `/library` paths. * Updated links throughout the site and documentation to prevent broken navigation and references. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
104 lines
3.7 KiB
TypeScript
104 lines
3.7 KiB
TypeScript
import Link from 'next/link'
|
|
|
|
import { CommandMenu } from './command-menu'
|
|
import { ThemeSwitcherDropdown } from './theme-switcher-dropdown'
|
|
import NavigationItem from '@/components/side-navigation-item'
|
|
import { componentPages, gettingStarted, platformBlocks } from '@/config/docs'
|
|
|
|
function SideNavigation() {
|
|
return (
|
|
<nav className="flex flex-col h-full min-w-[220px]">
|
|
<div className="p-6">
|
|
<div className="flex items-start justify-between mb-4">
|
|
<Link href="/">
|
|
<svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
width="109"
|
|
height="113"
|
|
viewBox="0 0 109 113"
|
|
fill="none"
|
|
className="w-6 h-6"
|
|
>
|
|
<path
|
|
d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0625L99.1935 40.0625C107.384 40.0625 111.952 49.5226 106.859 55.9372L63.7076 110.284Z"
|
|
fill="url(#paint0_linear)"
|
|
/>
|
|
<path
|
|
d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0625L99.1935 40.0625C107.384 40.0625 111.952 49.5226 106.859 55.9372L63.7076 110.284Z"
|
|
fill="url(#paint1_linear)"
|
|
fillOpacity="0.2"
|
|
/>
|
|
<path
|
|
d="M45.317 2.07103C48.1765 -1.53037 53.9745 0.442937 54.0434 5.041L54.4849 72.2922H9.83113C1.64038 72.2922 -2.92775 62.8321 2.1655 56.4175L45.317 2.07103Z"
|
|
fill="#3ECF8E"
|
|
/>
|
|
<defs>
|
|
<linearGradient
|
|
id="paint0_linear"
|
|
x1="53.9738"
|
|
y1="54.9738"
|
|
x2="94.1635"
|
|
y2="71.8293"
|
|
gradientUnits="userSpaceOnUse"
|
|
>
|
|
<stop stopColor="#249361" />
|
|
<stop offset="1" stopColor="#3ECF8E" />
|
|
</linearGradient>
|
|
<linearGradient
|
|
id="paint1_linear"
|
|
x1="36.1558"
|
|
y1="30.5779"
|
|
x2="54.4844"
|
|
y2="65.0804"
|
|
gradientUnits="userSpaceOnUse"
|
|
>
|
|
<stop />
|
|
<stop offset="1" stopOpacity="0" />
|
|
</linearGradient>
|
|
</defs>
|
|
</svg>
|
|
</Link>
|
|
<ThemeSwitcherDropdown />
|
|
</div>
|
|
<Link href="/" className="mb-4 block">
|
|
<h1>Supabase Library</h1>
|
|
</Link>
|
|
{/* <TopNavigationSearch /> */}
|
|
<CommandMenu />
|
|
</div>
|
|
<div className="pb-6 space-y-0.5">
|
|
<div className="font-mono uppercase text-xs text-foreground-lighter/75 mb-2 px-6 tracking-widest">
|
|
{gettingStarted.title}
|
|
</div>
|
|
{gettingStarted.items.map((item, i) => (
|
|
<NavigationItem item={item} key={`${item.href}-${i}`} />
|
|
))}
|
|
</div>
|
|
<div className="pb-6">
|
|
<div className="font-mono uppercase text-xs text-foreground-lighter/75 mb-2 px-6 tracking-widest">
|
|
UI Blocks
|
|
</div>
|
|
<div className="space-y-0.5">
|
|
{/* Render items based on component definitions */}
|
|
{componentPages.items.map((component, i) => (
|
|
<NavigationItem
|
|
item={component}
|
|
key={`${component.href?.toString() || component.title}-${i}`}
|
|
/>
|
|
))}
|
|
</div>
|
|
</div>
|
|
<div className="pb-6">
|
|
<div className="font-mono uppercase text-xs text-foreground-lighter/75 mb-2 px-6 tracking-widest">
|
|
{platformBlocks.title}
|
|
</div>
|
|
{platformBlocks.items.map((item, i) => (
|
|
<NavigationItem item={item} key={`${item.href}-${i}`} />
|
|
))}
|
|
</div>
|
|
</nav>
|
|
)
|
|
}
|
|
|
|
export default SideNavigation
|