mirror of
https://github.com/supabase/supabase.git
synced 2026-10-19 08:09:11 +03:00
* chore: cleanup packages - Avoid circular imports - Export API-types as types - pg-format without depending on Node internal Buffer (not browser-compatible) - Avoid importing from barrel files in ui dir * chore: avoid barrel file imports in studio (#27771) * chore: avoid barrel file imports - Removes some unused imports - Avoids barrel file import for faster builds + less memory * add eslint rule * type fixes * delete layouts barrel * delete components/grid barrel file * delete components/grid/utils barrel file * delete components/grid/components/common barrel file * delete components/grid/components/editor barrel file * delete components/grid/components/formatter barrel file * delete components/grid/components/grid barrel file * delete components/grid/components/header/filter barrel file * remote components/grid/store barrel file * remove components/interfaces/Auth/Policies barrel file * delete components/interfaces/Settings/Logs barrel file * delete components/ui/CodeEditor barrel file * delete components/ui/Forms barrel file * delete components/ui/Shimmers barrel file * delete data/analytics barrel file * delete hooks barrel file * cleanup lib/common/fetch barrel file * final * barral files cleanup * global react-data-grid styles * remove console.log --------- Co-authored-by: Kevin Grüneberg <k.grueneberg1994@gmail.com> * fix build --------- Co-authored-by: Kevin Grüneberg <k.grueneberg1994@gmail.com>
115 lines
3.6 KiB
TypeScript
115 lines
3.6 KiB
TypeScript
import { PermissionAction } from '@supabase/shared-types/out/constants'
|
|
|
|
import type { showApiKey } from 'components/interfaces/Docs/Docs.types'
|
|
import { useCheckPermissions } from 'hooks/misc/useCheckPermissions'
|
|
import {
|
|
Button,
|
|
DropdownMenu,
|
|
DropdownMenuContent,
|
|
DropdownMenuItem,
|
|
DropdownMenuTrigger,
|
|
IconKey,
|
|
} from 'ui'
|
|
|
|
const DEFAULT_KEY = { name: 'hide', key: 'SUPABASE_KEY' }
|
|
|
|
interface LangSelectorProps {
|
|
selectedLang: string
|
|
setSelectedLang: (selectedLang: string) => void
|
|
showApiKey: showApiKey
|
|
setShowApiKey: (showApiKey: showApiKey) => void
|
|
apiKey: string | undefined
|
|
autoApiService: any
|
|
}
|
|
|
|
const LangSelector = ({
|
|
selectedLang,
|
|
setSelectedLang,
|
|
showApiKey,
|
|
setShowApiKey,
|
|
apiKey,
|
|
autoApiService,
|
|
}: LangSelectorProps) => {
|
|
const canReadServiceKey = useCheckPermissions(
|
|
PermissionAction.READ,
|
|
'service_api_keys.service_role_key'
|
|
)
|
|
|
|
return (
|
|
<div className="p-1 w-1/2 ml-auto">
|
|
<div className="z-0 flex justify-end">
|
|
<button
|
|
type="button"
|
|
onClick={() => setSelectedLang('js')}
|
|
className={`${
|
|
selectedLang == 'js'
|
|
? 'bg-surface-100 font-medium text-foreground'
|
|
: 'bg-alternative text-foreground-lighter'
|
|
} relative inline-flex items-center border-r border-background p-1 px-2 text-sm transition hover:text-foreground focus:outline-none`}
|
|
>
|
|
JavaScript
|
|
</button>
|
|
<button
|
|
type="button"
|
|
onClick={() => setSelectedLang('bash')}
|
|
className={`${
|
|
selectedLang == 'bash'
|
|
? 'bg-surface-100 font-medium text-foreground'
|
|
: 'bg-alternative text-foreground-lighter'
|
|
} relative inline-flex items-center border-r border-background p-1 px-2 text-sm transition hover:text-foreground focus:outline-none`}
|
|
>
|
|
Bash
|
|
</button>
|
|
{selectedLang == 'bash' && (
|
|
<div className="flex">
|
|
<div className="flex items-center gap-2 p-1 pl-2 text-xs text-foreground-lighter">
|
|
<IconKey size={12} strokeWidth={1.5} />
|
|
<span>Project API key :</span>
|
|
</div>
|
|
<DropdownMenu>
|
|
<DropdownMenuTrigger asChild>
|
|
<Button type="default">{showApiKey.name}</Button>
|
|
</DropdownMenuTrigger>
|
|
<DropdownMenuContent align="end" side="bottom">
|
|
<>
|
|
<DropdownMenuItem key="hide" onClick={() => setShowApiKey(DEFAULT_KEY)}>
|
|
hide
|
|
</DropdownMenuItem>
|
|
{apiKey && (
|
|
<DropdownMenuItem
|
|
key="anon"
|
|
onClick={() =>
|
|
setShowApiKey({
|
|
key: apiKey,
|
|
name: 'anon (public)',
|
|
})
|
|
}
|
|
>
|
|
<p>anon (public)</p>
|
|
</DropdownMenuItem>
|
|
)}
|
|
{canReadServiceKey && (
|
|
<DropdownMenuItem
|
|
key="service"
|
|
onClick={() =>
|
|
setShowApiKey({
|
|
key: autoApiService.serviceApiKey,
|
|
name: 'service_role (secret)',
|
|
})
|
|
}
|
|
>
|
|
<p>service_role (secret)</p>
|
|
</DropdownMenuItem>
|
|
)}
|
|
</>
|
|
</DropdownMenuContent>
|
|
</DropdownMenu>
|
|
</div>
|
|
)}
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default LangSelector
|