Files
f650b5ae67 Feat/connection string revamp (#30572)
* 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>
2024-12-05 17:23:14 +08:00

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 }