| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- import { ArrowUpRight, Book, BookOpen } from 'lucide-react'
- import SVG from 'react-inlinesvg'
- import type { ProductMenuGroup } from '@/components/ui/ProductMenu/ProductMenu.types'
- import { BASE_PATH, DOCS_URL } from '@/lib/constants'
- export const getActivePage = (params: {
- page?: string
- resource?: string
- rpc?: string
- }): string => {
- const { page, resource, rpc } = params
- if (!page && !resource && !rpc) return 'introduction'
- return (page || rpc || resource) as string
- }
- export const generateDocsMenu = (
- ref: string,
- tables: Array<string>,
- functions: Array<string>,
- flags?: { authEnabled: boolean },
- basePath?: string
- ): Array<ProductMenuGroup> => {
- const docsBasePath = basePath ?? `/project/${ref}/integrations/data_api/docs`
- return [
- {
- title: 'Getting Started',
- items: [
- { name: 'Introduction', key: 'introduction', url: docsBasePath, items: [] },
- {
- name: 'Authentication',
- key: 'auth',
- url: `${docsBasePath}?page=auth`,
- items: [],
- },
- ...(flags?.authEnabled
- ? [
- {
- name: 'User Management',
- key: 'users-management',
- url: `${docsBasePath}?page=users-management`,
- items: [],
- },
- ]
- : []),
- ],
- },
- {
- title: 'Tables and Views',
- items: [
- {
- name: 'Introduction',
- key: 'tables-intro',
- url: `${docsBasePath}?page=tables-intro`,
- items: [],
- },
- ...tables.sort().map((table) => {
- return {
- name: table,
- key: table,
- url: `${docsBasePath}?resource=${table}`,
- items: [],
- }
- }),
- ],
- },
- {
- title: 'Functions',
- items: [
- {
- name: 'Introduction',
- key: 'rpc-intro',
- url: `${docsBasePath}?page=rpc-intro`,
- items: [],
- },
- ...functions.map((fn) => {
- return { name: fn, key: fn, url: `${docsBasePath}?rpc=${fn}`, items: [] }
- }),
- ],
- },
- {
- title: 'GraphQL',
- items: [
- {
- name: 'GraphiQL',
- key: 'graphiql',
- url: `/project/${ref}/integrations/graphiql`,
- icon: (
- <SVG
- src={`${BASE_PATH}/img/graphql.svg`}
- style={{ width: `${16}px`, height: `${16}px` }}
- className="text-foreground"
- preProcessor={(code) => code.replace(/svg/, 'svg class="m-auto text-color-inherit"')}
- />
- ),
- items: [],
- rightIcon: <ArrowUpRight strokeWidth={1} className="h-4 w-4" />,
- },
- ],
- },
- {
- title: 'More Resources',
- items: [
- {
- name: 'Guides',
- key: 'guides',
- url: DOCS_URL,
- icon: <Book size={14} strokeWidth={2} />,
- items: [],
- isExternal: true,
- },
- {
- name: 'API Reference',
- key: 'api-reference',
- url: `${DOCS_URL}/guides/api`,
- icon: <BookOpen size={14} strokeWidth={2} />,
- items: [],
- isExternal: true,
- },
- ],
- },
- ]
- }
|