mirror of
https://github.com/supabase/supabase.git
synced 2026-10-15 14:19:11 +03:00
* add new page * moar * moar * added icons * improve icons * moved connect dialog to main header * update text * smaller screen support * moar * add python and sqlalchemyString * moar * add IPv4 warning * moar * Delete pooler-icons-v2.tsx * tidy * Delete DatabaseSettings.tsx * tidy * tidy * moar. Session pooler is de-prioritized * Update DatabaseConnectionString.tsx * type issue * moar * Update DatabaseConnectionString.tsx * Spelling * Clean up LayoutHeader * Clean up ConnectionPanel * Clean up ConnectionParameters * Last batch of clean up * Fix loading state padding * Shift old Connect files to new Connect folder outside of Home * Final clean up * Smol fix * FIX * Fix button link * Fixes * Lint --------- Co-authored-by: Terry Sutton <saltcod@gmail.com> Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import { FileJson2 } from 'lucide-react'
|
|
import { isValidElement, ReactNode } from 'react'
|
|
|
|
import { Tabs_Shadcn_, TabsContent_Shadcn_, TabsList_Shadcn_, TabsTrigger_Shadcn_ } from 'ui'
|
|
|
|
interface ConnectTabTriggerProps {
|
|
value: string
|
|
}
|
|
interface ConnectTabTriggersProps {
|
|
children: ReactNode[]
|
|
}
|
|
|
|
interface ConnectFileTabProps {
|
|
children: ReactNode[]
|
|
}
|
|
|
|
interface ConnectTabContentProps {
|
|
children: ReactNode
|
|
value: string
|
|
}
|
|
const ConnectTabs = ({ children }: ConnectFileTabProps) => {
|
|
const firstChild = children[0]
|
|
|
|
const defaultValue = isValidElement(firstChild)
|
|
? (firstChild.props as any)?.children[0]?.props?.value || ''
|
|
: null
|
|
|
|
return <Tabs_Shadcn_ defaultValue={defaultValue}>{children}</Tabs_Shadcn_>
|
|
}
|
|
|
|
const ConnectTabTrigger = ({ value }: ConnectTabTriggerProps) => {
|
|
return (
|
|
<TabsTrigger_Shadcn_
|
|
value={value}
|
|
className="flex items-center gap-1 text-xs px-0 data-[state=active]:bg-transparent py-2.5"
|
|
>
|
|
<FileJson2 size={15} className="text-foreground-muted" />
|
|
{value}
|
|
</TabsTrigger_Shadcn_>
|
|
)
|
|
}
|
|
|
|
const ConnectTabTriggers = ({ children }: ConnectTabTriggersProps) => {
|
|
return (
|
|
<TabsList_Shadcn_ className="bg-surface-100 px-5 rounded-lg rounded-b-none gap-5">
|
|
{children}
|
|
</TabsList_Shadcn_>
|
|
)
|
|
}
|
|
|
|
export const ConnectTabContent = ({ value, children }: ConnectTabContentProps) => {
|
|
return (
|
|
<TabsContent_Shadcn_ value={value} className="p-3 mt-1 max-h-72 overflow-scroll">
|
|
{children}
|
|
</TabsContent_Shadcn_>
|
|
)
|
|
}
|
|
|
|
export { ConnectTabs, ConnectTabTrigger, ConnectTabTriggers }
|