Fill up side bar nav data for other pages and refactor

This commit is contained in:
Joshen Lim committed 2022-10-27 11:11:38 +07:00
1 parent 4e9017ff33
commit 4f90176fb1
14 files changed
+499 -191

No files matched your search

@@ -0,0 +1,199 @@
import Link from 'next/link'
import Image from 'next/image'
import { useRouter } from 'next/router'
import { IconChevronRight, IconArrowLeft } from '~/../../packages/ui'
import { NavMenuGroup, NavMenuSection } from './Nav.constants'
import * as Accordion from '@radix-ui/react-accordion'
const SideBar = ({ menuItems = [] }: { menuItems: any }) => {
const { asPath } = useRouter()
const pathSegments = asPath.split('/')
const isInReferencePages = pathSegments.includes('reference') && pathSegments.length >= 3
const references = {
javascript: { name: 'supabase-js', icon: '/docs/img/libraries/javascript-icon.svg' },
dart: { name: 'Flutter', icon: '/docs/img/libraries/dart-icon.svg' },
cli: { name: 'CLI', icon: '/docs/img/libraries/cli-icon.svg' },
api: { name: 'API', icon: '/docs/img/libraries/api-icon.svg' },
}
const referenceMeta = pathSegments.length >= 3 ? references[pathSegments[2]] : undefined
const currentSection: NavMenuGroup = menuItems.find((group) => {
const foundItem = group.items.find((section) => {
if (section.items.length > 0) {
const foundSubItem = section.items.find((item) => {
if (item.url === asPath) return item
})
if (foundSubItem) return section
} else {
if (section.url === asPath) return section
}
})
if (foundItem) return group
})
const currentSubSection: NavMenuSection =
currentSection !== undefined
? currentSection.items.find((section) => {
if (section.items.length === 0) {
return undefined
} else {
return section.items.find((item) => {
if (item.url === asPath) return item
})
}
})
: undefined
console.log({ currentSection, currentSubSection })
return (
<div
className="dark:bg-scale-200 dark:border-scale-400 sidebar-width sticky top-0
h-screen overflow-y-scroll border-r py-8 px-6 sidebar-menu-container"
>
{isInReferencePages && (
<>
<Link href="/reference">
<a>
<div className="flex items-center space-x-4 opacity-75 hover:opacity-100 transition">
<IconArrowLeft size={16} strokeWidth={2} className="text-scale-1200" />
<span className="text-sm text-scale-1200">All Reference Docs</span>
</div>
</a>
</Link>
{referenceMeta !== undefined && (
<div className="my-5 flex items-center space-x-4">
<div className="h-10 w-10 rounded bg-scale-500 flex items-center justify-center">
<Image
className="rounded"
width={24}
height={24}
alt={referenceMeta.name}
src={referenceMeta.icon}
/>
</div>
<p className="text-scale-1200 font-bold">{referenceMeta.name}</p>
</div>
)}
</>
)}
{menuItems.length === 1 ? (
<div className="my-2">
{menuItems[0].items.map((item) => (
<Link href={item.url}>
<a>
<div
key={item.name}
className={[
'py-1.5 px-5 rounded text-sm transition',
`${
item.url === asPath
? 'bg-scale-400 text-brand-900'
: 'text-scale-1100 hover:text-scale-1200'
}`,
].join(' ')}
>
{item.name}
</div>
</a>
</Link>
))}
</div>
) : (
<Accordion.Root
collapsible
type="single"
defaultValue={currentSection?.label}
className="w-full space-y-0.5"
>
{menuItems.map((group: NavMenuGroup) => (
<Accordion.Item key={group.label} value={group.label}>
<Accordion.Trigger className="w-full flex items-center space-x-2 py-1.5">
<IconChevronRight
className="transition text-scale-1000 data-open-parent:rotate-90"
size={14}
strokeWidth={2}
/>
<span className="text-scale-1200 text-sm group-hover:text-brand-900 transition">
{group.label}
</span>
</Accordion.Trigger>
<Accordion.Content className="transition my-2 data-open:animate-slide-down data-closed:animate-slide-up">
{group.items.map((section: NavMenuSection) => {
if (section.items.length === 0) {
return (
<Link href={section.url}>
<a>
<div
key={section.name}
className={[
'py-1.5 px-5 rounded text-sm transition',
`${
section.url === asPath
? 'bg-scale-400 text-brand-900'
: 'text-scale-1100 hover:text-scale-1200'
}`,
].join(' ')}
>
{section.name}
</div>
</a>
</Link>
)
} else {
return (
<Accordion.Root
collapsible
key={section.name}
type="single"
className="space-y-0.5"
defaultValue={currentSubSection?.name}
>
<Accordion.Item value={section.name}>
<Accordion.Trigger className="flex items-center space-x-2 px-4 py-1.5">
<IconChevronRight
className="transition text-scale-1000 data-open-parent:rotate-90"
size={14}
strokeWidth={2}
/>
<span className="text-scale-1200 text-sm group-hover:text-brand-900 transition">
{section.name}
</span>
</Accordion.Trigger>
<Accordion.Content className="my-2 data-open:animate-slide-down data-closed:animate-slide-up">
{section.items.map((item: NavMenuSection) => (
<Link href={item.url}>
<a>
<div
key={item.name}
className={[
'py-1.5 ml-4 px-5 rounded text-sm transition',
`${
item.url === asPath
? 'bg-scale-400 text-brand-900'
: 'text-scale-1100 hover:text-scale-1200'
}`,
].join(' ')}
>
{item.name}
</div>
</a>
</Link>
))}
</Accordion.Content>
</Accordion.Item>
</Accordion.Root>
)
}
})}
</Accordion.Content>
</Accordion.Item>
))}
</Accordion.Root>
)}
</div>
)
}
export default SideBar
-136
View File
@@ -1,136 +0,0 @@
import Link from 'next/link'
import { useRouter } from 'next/router'
import { IconChevronRight } from '~/../../packages/ui'
import { NavMenuGroup, NavMenuSection } from './Nav.constants'
import * as Accordion from '@radix-ui/react-accordion'
const SideBar = ({ menuItems = [] }: { menuItems: any }) => {
const { asPath } = useRouter()
const currentSection: NavMenuGroup = menuItems.find((group) => {
const foundItem = group.items.find((section) => {
if (section.items.length > 0) {
const foundSubItem = section.items.find((item) => {
if (item.url === asPath) return item
})
if (foundSubItem) return section
} else {
if (section.url === asPath) return section
}
})
if (foundItem) return group
})
const currentSubSection: NavMenuSection =
currentSection !== undefined
? currentSection.items.find((section) => {
if (section.items.length === 0) {
return undefined
} else {
return section.items.find((item) => {
if (item.url === asPath) return item
})
}
})
: undefined
return (
<div
className="dark:bg-scale-200 dark:border-scale-400 sidebar-width sticky top-0 flex
h-screen overflow-y-scroll border-r py-8 px-6 sidebar-menu-container"
>
<Accordion.Root
collapsible
type="single"
defaultValue={currentSection?.label}
className="w-full space-y-0.5"
>
{menuItems.map((group: NavMenuGroup) => (
<Accordion.Item key={group.label} value={group.label}>
<Accordion.Trigger className="w-full flex items-center space-x-2 py-1.5">
<IconChevronRight
className="transition text-scale-1000 data-open-parent:rotate-90"
size={14}
strokeWidth={2}
/>
<span className="text-scale-1200 text-sm group-hover:text-brand-900 transition">
{group.label}
</span>
</Accordion.Trigger>
<Accordion.Content className="transition my-2 data-open:animate-slide-down data-closed:animate-slide-up">
{group.items.map((section: NavMenuSection) => {
if (section.items.length === 0) {
return (
<Link href={section.url}>
<a>
<div
key={section.name}
className={[
'py-1.5 px-5 rounded text-sm transition',
`${
section.url === asPath
? 'bg-scale-400 text-brand-900'
: 'text-scale-1100 hover:text-scale-1200'
}`,
].join(' ')}
>
{section.name}
</div>
</a>
</Link>
)
} else {
return (
<Accordion.Root
collapsible
key={section.name}
type="single"
className="space-y-0.5"
defaultValue={currentSubSection?.name}
>
<Accordion.Item value={section.name}>
<Accordion.Trigger className="flex items-center space-x-2 px-4 py-1.5">
<IconChevronRight
className="transition text-scale-1000 data-open-parent:rotate-90"
size={14}
strokeWidth={2}
/>
<span className="text-scale-1200 text-sm group-hover:text-brand-900 transition">
{section.name}
</span>
</Accordion.Trigger>
<Accordion.Content className="my-2 data-open:animate-slide-down data-closed:animate-slide-up">
{section.items.map((item: NavMenuSection) => (
<Link href={item.url}>
<a>
<div
key={item.name}
className={[
'py-1.5 ml-4 px-5 rounded text-sm transition',
`${
item.url === asPath
? 'bg-scale-400 text-brand-900'
: 'text-scale-1100 hover:text-scale-1200'
}`,
].join(' ')}
>
{item.name}
</div>
</a>
</Link>
))}
</Accordion.Content>
</Accordion.Item>
</Accordion.Root>
)
}
})}
</Accordion.Content>
</Accordion.Item>
))}
</Accordion.Root>
</div>
)
}
export default SideBar
+130 -1
View File
@@ -1,3 +1,132 @@
const Nav = []
const Nav = [
{
label: 'Getting Started',
items: [
{ name: 'Supabase Dart Library', url: '/reference/dart/v0', items: [] },
{ name: 'Installing', url: '/reference/dart/v0/installing', items: [] },
{ name: 'Initializing', url: '/reference/dart/v0/initializing', items: [] },
],
},
{
label: 'Auth',
items: [
{ name: 'signUp()', url: '/reference/dart/v0/auth-signup', items: [] },
{ name: 'signIn()', url: '/reference/dart/v0/auth-signin', items: [] },
{
name: 'signInWithProvider()',
url: '/reference/dart/v0/auth-signinwithprovider',
items: [],
},
{ name: 'signOut()', url: '/reference/dart/v0/auth-signout', items: [] },
{ name: 'session()', url: '/reference/dart/v0/auth-session', items: [] },
{ name: 'user()', url: '/reference/dart/v0/auth-user', items: [] },
{ name: 'update()', url: '/reference/dart/v0/auth-update', items: [] },
{
name: 'onAuthStateChange()',
url: '/reference/dart/v0/auth-onauthstatechanged',
items: [],
},
{
name: 'Reset Password (Email)',
url: '/reference/dart/v0/reset-password-email',
items: [],
},
],
},
{
label: 'Functions',
items: [{ name: 'invoke()', url: '/reference/dart/v0/invoke', items: [] }],
},
{
label: 'Database',
items: [
{ name: 'Fetch data: select()', url: '/reference/dart/v0/select', items: [] },
{ name: 'Create data: insert()', url: '/reference/dart/v0/insert', items: [] },
{ name: 'Modify data: update()', url: '/reference/dart/v0/update', items: [] },
{ name: 'Upsert data: upsert()', url: '/reference/dart/v0/upsert', items: [] },
{ name: 'Delete data: delete()', url: '/reference/dart/v0/delete', items: [] },
{ name: 'Stored Procedures: rpc()', url: '/reference/dart/v0/rpc', items: [] },
],
},
{
label: 'Realtime',
items: [
{ name: 'stream', url: '/reference/dart/v0/stream', items: [] },
{ name: 'on().subscribe()', url: '/reference/dart/v0/subscribe', items: [] },
{
name: 'removeSubscription()',
url: '/reference/dart/v0/removesubscription',
items: [],
},
{ name: 'getSubscriptions()', url: '/reference/dart/v0/getsubscriptions', items: [] },
],
},
{
label: 'Storage',
items: [
{ name: 'createBucket()', url: '/reference/dart/v0/storage-createbucket', items: [] },
{ name: 'getBucket()', url: '/reference/dart/v0/storage-getbucket', items: [] },
{ name: 'listBuckets()', url: '/reference/dart/v0/storage-listbuckets', items: [] },
{ name: 'updateBucket()', url: '/reference/dart/v0/storage-updatebucket', items: [] },
{ name: 'deleteBucket()', url: '/reference/dart/v0/storage-deletebucket', items: [] },
{ name: 'emptyBucket()', url: '/reference/dart/v0/storage-emptybucket', items: [] },
{ name: 'from.upload()', url: '/reference/dart/v0/storage-from-upload', items: [] },
{ name: 'from.download()', url: '/reference/dart/v0/storage-from-download', items: [] },
{ name: 'from.list()', url: '/reference/dart/v0/storage-from-list', items: [] },
{ name: 'from.update()', url: '/reference/dart/v0/storage-from-update', items: [] },
{ name: 'from.move()', url: '/reference/dart/v0/storage-from-move', items: [] },
{ name: 'from.remove()', url: '/reference/dart/v0/storage-from-remove', items: [] },
{
name: 'from.createSignedUrl()',
url: '/reference/dart/v0/storage-from-createsignedurl',
items: [],
},
{
name: 'from.getPublicUrl()',
url: '/reference/dart/v0/storage-from-getpublicurl',
items: [],
},
],
},
{
label: 'Filters',
items: [
{ name: 'Using Filters', url: '/reference/dart/v0/using-filters', items: [] },
{ name: 'eq()', url: '/reference/dart/v0/eq', items: [] },
{ name: 'neq()', url: '/reference/dart/v0/neq', items: [] },
{ name: 'gt()', url: '/reference/dart/v0/gt', items: [] },
{ name: 'gte()', url: '/reference/dart/v0/gte', items: [] },
{ name: 'lt()', url: '/reference/dart/v0/lt', items: [] },
{ name: 'lte()', url: '/reference/dart/v0/lte', items: [] },
{ name: 'like()', url: '/reference/dart/v0/like', items: [] },
{ name: 'ilike()', url: '/reference/dart/v0/ilike', items: [] },
{ name: 'is_()', url: '/reference/dart/v0/is_', items: [] },
{ name: 'in_()', url: '/reference/dart/v0/in_', items: [] },
{ name: 'contains()', url: '/reference/dart/v0/contains', items: [] },
{ name: 'containedBy()', url: '/reference/dart/v0/containedby', items: [] },
{ name: 'rangeGt()', url: '/reference/dart/v0/rangegt', items: [] },
{ name: 'rangeGte()', url: '/reference/dart/v0/rangegte', items: [] },
{ name: 'rangeLt()', url: '/reference/dart/v0/rangelt', items: [] },
{ name: 'rangeLte()', url: '/reference/dart/v0/rangelte', items: [] },
{ name: 'rangeAdjacent()', url: '/reference/dart/v0/rangeadjacent', items: [] },
{ name: 'overlaps()', url: '/reference/dart/v0/overlaps', items: [] },
{ name: 'textSearch()', url: '/reference/dart/v0/textsearch', items: [] },
{ name: 'match()', url: '/reference/dart/v0/match', items: [] },
{ name: 'not()', url: '/reference/dart/v0/not', items: [] },
{ name: 'or()', url: '/reference/dart/v0/or', items: [] },
{ name: 'filter()', url: '/reference/dart/v0/filter', items: [] },
],
},
{
label: 'Modifiers',
items: [
{ name: 'Using Modifiers', url: '/reference/dart/v0/using-modifiers', items: [] },
{ name: 'order()', url: '/reference/dart/v0/order', items: [] },
{ name: 'limit()', url: '/reference/dart/v0/limit', items: [] },
{ name: 'range()', url: '/reference/dart/v0/range', items: [] },
{ name: 'single()', url: '/reference/dart/v0/single', items: [] },
],
},
]
export default Nav
+128 -1
View File
@@ -1,3 +1,130 @@
const Nav = []
const Nav = [
{
label: 'Getting Started',
items: [
{ name: 'Supabase Flutter Library', url: '/reference/dart', items: [] },
{ name: 'Installing', url: '/reference/dart/installing', items: [] },
{ name: 'Initializing', url: '/reference/dart/initializing', items: [] },
{ name: 'Upgrading to supabase-flutter v1', url: '/reference/dart/upgrade-guide', items: [] },
],
},
{
label: 'Auth',
items: [
{ name: 'signUp()', url: '/reference/dart/auth-signup', items: [] },
{
name: 'signInWithPassword()',
url: '/reference/dart/auth-signinwithpassword',
items: [],
},
{ name: 'signInWithOtp()', url: '/reference/dart/auth-signinwithotp', items: [] },
{ name: 'signInWithOAuth()', url: '/reference/dart/auth-signinwithoauth', items: [] },
{ name: 'signOut()', url: '/reference/dart/auth-signout', items: [] },
{ name: 'verifyOtp()', url: '/reference/dart/auth-verifyotp', items: [] },
{ name: 'currentSession', url: '/reference/dart/auth-currentsession', items: [] },
{ name: 'currentUser', url: '/reference/dart/auth-currentuser', items: [] },
{ name: 'updateUser()', url: '/reference/dart/auth-updateuser', items: [] },
{ name: 'setSession()', url: '/reference/dart/auth-setSession', items: [] },
{
name: 'resetPasswordForEmail()',
url: '/reference/dart/auth-resetpasswordforemail',
items: [],
},
],
},
{
label: 'Functions',
items: [{ name: 'invoke()', url: '/reference/dart/invoke', items: [] }],
},
{
label: 'Database',
items: [
{ name: 'Fetch data: select()', url: '/reference/dart/select', items: [] },
{ name: 'Create data: insert()', url: '/reference/dart/insert', items: [] },
{ name: 'Modify data: update()', url: '/reference/dart/update', items: [] },
{ name: 'Upsert data: upsert()', url: '/reference/dart/upsert', items: [] },
{ name: 'Delete data: delete()', url: '/reference/dart/delete', items: [] },
{ name: 'Stored Procedures: rpc()', url: '/reference/dart/rpc', items: [] },
{
name: 'Filters',
url: undefined,
items: [
{ name: 'Using Filters', url: '/reference/dart/using-filters', items: [] },
{ name: 'eq()', url: '/reference/dart/eq', items: [] },
{ name: 'neq()', url: '/reference/dart/neq', items: [] },
{ name: 'gt()', url: '/reference/dart/gt', items: [] },
{ name: 'gte()', url: '/reference/dart/gte', items: [] },
{ name: 'lt()', url: '/reference/dart/lt', items: [] },
{ name: 'lte()', url: '/reference/dart/lte', items: [] },
{ name: 'like()', url: '/reference/dart/like', items: [] },
{ name: 'ilike()', url: '/reference/dart/ilike', items: [] },
{ name: 'is_()', url: '/reference/dart/is_', items: [] },
{ name: 'in_()', url: '/reference/dart/in_', items: [] },
{ name: 'contains()', url: '/reference/dart/contains', items: [] },
{ name: 'containedBy()', url: '/reference/dart/containedby', items: [] },
{ name: 'rangeGt()', url: '/reference/dart/rangegt', items: [] },
{ name: 'rangeGte()', url: '/reference/dart/rangegte', items: [] },
{ name: 'rangeLt()', url: '/reference/dart/rangelt', items: [] },
{ name: 'rangeLte()', url: '/reference/dart/rangelte', items: [] },
{ name: 'rangeAdjacent()', url: '/reference/dart/rangeadjacent', items: [] },
{ name: 'overlaps()', url: '/reference/dart/overlaps', items: [] },
{ name: 'textSearch()', url: '/reference/dart/textsearch', items: [] },
{ name: 'match()', url: '/reference/dart/match', items: [] },
{ name: 'not()', url: '/reference/dart/not', items: [] },
{ name: 'or()', url: '/reference/dart/or', items: [] },
{ name: 'filter()', url: '/reference/dart/filter', items: [] },
],
},
{
name: 'Modifiers',
url: undefined,
items: [
{ name: 'Using Modifiers', url: '/reference/dart/using-modifiers', items: [] },
{ name: 'order()', url: '/reference/dart/order', items: [] },
{ name: 'limit()', url: '/reference/dart/limit', items: [] },
{ name: 'range()', url: '/reference/dart/range', items: [] },
{ name: 'single()', url: '/reference/dart/single', items: [] },
],
},
],
},
{
label: 'Realtime',
items: [
{ name: 'stream()', url: '/reference/dart/stream', items: [] },
{ name: 'on().subscribe()', url: '/reference/dart/subscribe', items: [] },
{ name: 'removeChannel()', url: '/reference/dart/removechannel', items: [] },
{ name: 'removeAllChannels()', url: '/reference/dart/removeallchannels', items: [] },
{ name: 'getChannels()', url: '/reference/dart/getchannels', items: [] },
],
},
{
label: 'Storage',
items: [
{ name: 'createBucket()', url: '/reference/dart/storage-createbucket', items: [] },
{ name: 'getBucket()', url: '/reference/dart/storage-getbucket', items: [] },
{ name: 'listBuckets()', url: '/reference/dart/storage-listbuckets', items: [] },
{ name: 'updateBucket()', url: '/reference/dart/storage-updatebucket', items: [] },
{ name: 'deleteBucket()', url: '/reference/dart/storage-deletebucket', items: [] },
{ name: 'emptyBucket()', url: '/reference/dart/storage-emptybucket', items: [] },
{ name: 'from.upload()', url: '/reference/dart/storage-from-upload', items: [] },
{ name: 'from.download()', url: '/reference/dart/storage-from-download', items: [] },
{ name: 'from.list()', url: '/reference/dart/storage-from-list', items: [] },
{ name: 'from.update()', url: '/reference/dart/storage-from-update', items: [] },
{ name: 'from.move()', url: '/reference/dart/storage-from-move', items: [] },
{ name: 'from.remove()', url: '/reference/dart/storage-from-remove', items: [] },
{
name: 'from.createSignedUrl()',
url: '/reference/dart/storage-from-createsignedurl',
items: [],
},
{
name: 'from.getPublicUrl()',
url: '/reference/dart/storage-from-getpublicurl',
items: [],
},
],
},
]
export default Nav
+30 -33
View File
@@ -127,44 +127,41 @@ const Nav = [
{
label: 'Filters',
items: [
{ name: 'Using Filters', url: '/reference/javascript/using-filters', items: [] },
{ name: 'eq()', url: '/reference/javascript/eq', items: [] },
{ name: 'neq()', url: '/reference/javascript/neq', items: [] },
{ name: 'gt()', url: '/reference/javascript/gt', items: [] },
{ name: 'gte()', url: '/reference/javascript/gte', items: [] },
{ name: 'lt()', url: '/reference/javascript/lt', items: [] },
{ name: 'lte()', url: '/reference/javascript/lte', items: [] },
{ name: 'like()', url: '/reference/javascript/like', items: [] },
{ name: 'ilike()', url: '/reference/javascript/ilike', items: [] },
{ name: 'is()', url: '/reference/javascript/is', items: [] },
{ name: 'in()', url: '/reference/javascript/in', items: [] },
{ name: 'contains()', url: '/reference/javascript/contains', items: [] },
{ name: 'containedBy()', url: '/reference/javascript/containedby', items: [] },
{ name: 'rangeGt()', url: '/reference/javascript/rangegt', items: [] },
{ name: 'rangeGte()', url: '/reference/javascript/rangegte', items: [] },
{ name: 'rangeLt()', url: '/reference/javascript/rangelt', items: [] },
{ name: 'rangeLte()', url: '/reference/javascript/rangelte', items: [] },
{ name: 'rangeAdjacent()', url: '/reference/javascript/rangeadjacent', items: [] },
{ name: 'overlaps()', url: '/reference/javascript/overlaps', items: [] },
{ name: 'textSearch()', url: '/reference/javascript/overlaps', items: [] },
{ name: 'match()', url: '/reference/javascript/match', items: [] },
{ name: 'not()', url: '/reference/javascript/not', items: [] },
{ name: 'or()', url: '/reference/javascript/or', items: [] },
{ name: 'filter()', url: '/reference/javascript/filter', items: [] },
{ name: 'Using Filters', url: '/reference/javascript/v1/using-filters', items: [] },
{ name: 'eq()', url: '/reference/javascript/v1/eq', items: [] },
{ name: 'neq()', url: '/reference/javascript/v1/neq', items: [] },
{ name: 'gt()', url: '/reference/javascript/v1/gt', items: [] },
{ name: 'gte()', url: '/reference/javascript/v1/gte', items: [] },
{ name: 'lt()', url: '/reference/javascript/v1/lt', items: [] },
{ name: 'lte()', url: '/reference/javascript/v1/lte', items: [] },
{ name: 'like()', url: '/reference/javascript/v1/like', items: [] },
{ name: 'ilike()', url: '/reference/javascript/v1/ilike', items: [] },
{ name: 'is()', url: '/reference/javascript/v1/is', items: [] },
{ name: 'in()', url: '/reference/javascript/v1/in', items: [] },
{ name: 'contains()', url: '/reference/javascript/v1/contains', items: [] },
{ name: 'containedBy()', url: '/reference/javascript/v1/containedby', items: [] },
{ name: 'rangeGt()', url: '/reference/javascript/v1/rangegt', items: [] },
{ name: 'rangeGte()', url: '/reference/javascript/v1/rangegte', items: [] },
{ name: 'rangeLt()', url: '/reference/javascript/v1/rangelt', items: [] },
{ name: 'rangeLte()', url: '/reference/javascript/v1/rangelte', items: [] },
{ name: 'rangeAdjacent()', url: '/reference/javascript/v1/rangeadjacent', items: [] },
{ name: 'overlaps()', url: '/reference/javascript/v1/overlaps', items: [] },
{ name: 'textSearch()', url: '/reference/javascript/v1/textsearch', items: [] },
{ name: 'match()', url: '/reference/javascript/v1/match', items: [] },
{ name: 'not()', url: '/reference/javascript/v1/not', items: [] },
{ name: 'or()', url: '/reference/javascript/v1/or', items: [] },
{ name: 'filter()', url: '/reference/javascript/v1/filter', items: [] },
],
},
{
label: 'Modifiers',
items: [
{ name: 'Using Modifiers', url: '/reference/javascript/using-modifiers', items: [] },
{ name: 'select()', url: '/reference/javascript/db-modifiers-select', items: [] },
{ name: 'order()', url: '/reference/javascript/order', items: [] },
{ name: 'limit()', url: '/reference/javascript/limit', items: [] },
{ name: 'range()', url: '/reference/javascript/range', items: [] },
{ name: 'abortSignal()', url: '/reference/javascript/db-abortsignal', items: [] },
{ name: 'single()', url: '/reference/javascript/single', items: [] },
{ name: 'maybeSingle()', url: '/reference/javascript/maybesingle', items: [] },
{ name: 'csv()', url: '/reference/javascript/db-csv', items: [] },
{ name: 'Using Modifiers', url: '/reference/javascript/v1/using-modifiers', items: [] },
{ name: 'order()', url: '/reference/javascript/v1/order', items: [] },
{ name: 'limit()', url: '/reference/javascript/v1/limit', items: [] },
{ name: 'range()', url: '/reference/javascript/v1/range', items: [] },
{ name: 'single()', url: '/reference/javascript/v1/single', items: [] },
{ name: 'maybeSingle()', url: '/reference/javascript/v1/maybesingle', items: [] },
],
},
]
+1 -1
View File
@@ -91,7 +91,7 @@ const Nav = [
{ name: 'rangeLte()', url: '/reference/javascript/rangelte', items: [] },
{ name: 'rangeAdjacent()', url: '/reference/javascript/rangeadjacent', items: [] },
{ name: 'overlaps()', url: '/reference/javascript/overlaps', items: [] },
{ name: 'textSearch()', url: '/reference/javascript/overlaps', items: [] },
{ name: 'textSearch()', url: '/reference/javascript/textsearch', items: [] },
{ name: 'match()', url: '/reference/javascript/match', items: [] },
{ name: 'not()', url: '/reference/javascript/not', items: [] },
{ name: 'or()', url: '/reference/javascript/or', items: [] },
+2 -2
View File
@@ -1,7 +1,7 @@
import { useEffect } from 'react'
import Head from 'next/head'
import NavBar from '../components/nav/NavBar'
import SideBar from '../components/nav/SideBar'
import NavBar from '../components/Navigation/NavBar'
import SideBar from '../components/Navigation/SideBar'
import Footer from '../components/Footer'
const Layout = ({
+1 -1
View File
@@ -1,7 +1,7 @@
import { MDXProvider } from '@mdx-js/react'
import { NextSeo } from 'next-seo'
import { useRouter } from 'next/router'
import { menuItems } from '~/components/nav/Nav.constants'
import { menuItems } from '~/components/Navigation/Nav.constants'
import Layout from '~/layouts/Default'
import { getPageType } from '~/lib/helpers'
import getComponents from '~/lib/mdx/getComponents'
+6
View File
@@ -1,3 +1,5 @@
// [Joshen] I think this can be done better, as its mostly used to choose what
// menus to render in the SideBar.js (Ref Nav.constants.ts)
export function getPageType(asPath: string) {
let page
if (!asPath) return ''
@@ -12,6 +14,10 @@ export function getPageType(asPath: string) {
page = 'reference/dart'
} else if (asPath.includes('/reference/dart/v0')) {
page = 'reference/dart/v0'
} else if (asPath.includes('/reference/api')) {
page = 'reference/api'
} else if (asPath.includes('/reference/cli')) {
page = 'reference/cli'
} else if (asPath.includes('/reference')) {
page = 'reference'
} else {
+1 -1
View File
@@ -3,7 +3,7 @@ import { useRouter } from 'next/router'
import { MDXRemote } from 'next-mdx-remote'
import { serialize } from 'next-mdx-remote/serialize'
import components from '../components/index'
import { menuItems } from '../components/nav/Nav.constants'
import { menuItems } from '../components/Navigation/Nav.constants'
import { getPageType } from '../lib/helpers'
import { getAllDocs, getDocsBySlug } from '../lib/docs'
import Layout from '~/layouts/Default'
-14
View File
@@ -1,14 +0,0 @@
import Layout from '~/layouts/Guide'
export const meta = {
title: 'My Awesome Post',
description: 'This is my awesome post',
date: '2019-01-01',
tags: ['awesome', 'post'],
}
### SOC 2
Supabase is SOC2 Type 1 compliant. Enterprise customers can request a copy of our SOC2 through our [Security Portal](https://security.supabase.com).
export default (context) => <Layout meta={meta} children={context.children} context={context} />
+1 -1
View File
@@ -2,7 +2,7 @@ import { MDXProvider } from '@mdx-js/react'
import { MDXRemote } from 'next-mdx-remote'
import { serialize } from 'next-mdx-remote/serialize'
import components from '~/components'
import { menuItems } from '~/components/nav/Nav.constants'
import { menuItems } from '~/components/Navigation/Nav.constants'
import Layout from '~/layouts/Default'
import { getDocsBySlug } from '../lib/docs'