Files
supabase/apps/studio/components/interfaces/Integrations/DataApi/DocsMobileNav.tsx
Charis f7bf7d7ce4 feat(studio): move data api docs to integrations section (#42749)
Feature / Refactor

## What is the current behavior?

Data API docs live at the `/api` route as a standalone page. Old links
point to the previous location.

## What is the new behavior?

Data API docs are moved to the integrations section with a dedicated
docs tab and settings tab. Old links are cleaned up, a mobile menu is
added for data API docs navigation, and minor code review fixes are
applied.

## Additional context

Resolves FE-2517

## Summary by CodeRabbit

* **New Features**
* Revamped API docs UI with reusable section layout, language toggle
(JS/Bash), API key selection, and improved code snippets
* Added Data API docs tab, mobile navigation, and dedicated
loading/error/disabled states

* **Navigation Updates**
* Moved API docs and related links into the Integrations/Data API area
and added redirects to new routes
* Updated various internal links to the new Data API settings and
overview locations

* **Tests**
  * Added comprehensive unit tests for Data API utilities
2026-02-12 15:57:44 -05:00

61 lines
1.9 KiB
TypeScript

import { Menu } from 'lucide-react'
import { useEffect, useState } from 'react'
import { Button, Sheet, SheetContent, SheetHeader, SheetTitle } from 'ui'
import type { ShowApiKey } from '../../Docs/Docs.types'
import { LangSelector } from '../../Docs/LangSelector'
import { DocsMenu } from '@/components/interfaces/Integrations/DataApi/DocsMenu'
import { ProductMenuGroup } from '@/components/ui/ProductMenu/ProductMenu.types'
interface DocsMobileNavProps {
activePage: string
menu: Array<ProductMenuGroup>
selectedLang: 'js' | 'bash'
selectedApiKey: ShowApiKey
setSelectedLang: (lang: 'js' | 'bash') => void
setSelectedApiKey: (key: ShowApiKey) => void
}
export const DocsMobileNav = ({
activePage,
menu,
selectedLang,
selectedApiKey,
setSelectedLang,
setSelectedApiKey,
}: DocsMobileNavProps) => {
const [open, setOpen] = useState(false)
// Close mobile nav when the active page changes
useEffect(() => {
setOpen(false)
}, [activePage])
return (
<>
<div className="sticky top-0 z-10 flex lg:hidden items-center border-b bg-surface-100 px-4 py-3">
<Button type="default" icon={<Menu size={16} />} onClick={() => setOpen(true)}>
Menu
</Button>
</div>
<Sheet open={open} onOpenChange={setOpen}>
<SheetContent side="left" size="content" className="w-72 overflow-y-auto">
<SheetHeader className="border-b-0">
<SheetTitle>Data API Docs</SheetTitle>
</SheetHeader>
<div className="flex flex-col gap-y-6 px-5 pb-6">
<LangSelector
selectedLang={selectedLang}
selectedApiKey={selectedApiKey}
setSelectedLang={setSelectedLang}
setSelectedApiKey={setSelectedApiKey}
/>
<DocsMenu activePage={activePage} menu={menu} />
</div>
</SheetContent>
</Sheet>
</>
)
}