mirror of
https://github.com/supabase/supabase.git
synced 2026-10-14 13:49:09 +03:00
* set up multiple themes in studio * set up multiple themes in studio * set up multiple themes in docs and www * update all resolvedTheme to also include deep-dark * update all resolvedTheme checks to also include deep-dark * update tailwind.config.js tokens * update tailwind.config.js tokens * update leftover scale12 token * update if resolvedTheme _doesn't_ include 'dark' * update more styling tokens * add dynamic themes to CmdK * fix nav and footer for multi theme * add data-theme selector output to transformTokens.js * update code-hike.css to target data-theme css * update tailwindcss to ^3.3.5 * ThemeImage with light and dark src for www and docs * add brand-button styling token * update old dark theme boolean * update old dark theme boolean * make homepage product visuals themeable * update product page themed images * update badge green with brand * fix roles list appearance * fix auth widget in auth page * update more dark logic * update more dark logic * add button default bg and border * update pricing page theme styling * clean up Themeimage * remove forceDark in homepage * update dark:border-dark occurrences * update dark:border-dark occurrences * fix dark mode base colors * remove foreground-strong * fix notification badge bg * remove some dark: selectors * update dark: selectors * update code-hike deep dark bg color * fix comment typo * update border-button-hover token * fix customer story logo * remove some more dark: selectors * restore forceDark in www homepage * fix auth react icon * fix homepage product visuals * remove theme * add brand-link token * fix checkbox bg * npm install * more visible EntityListItem active bg * fix --background-alternative-default css vars --------- Co-authored-by: Jonathan Summers-Muir <MildTomato@users.noreply.github.com>
110 lines
3.8 KiB
TypeScript
110 lines
3.8 KiB
TypeScript
import { JwtSecretUpdateStatus } from '@supabase/shared-types/out/events'
|
|
import { useParams } from 'common'
|
|
import { PropsWithChildren } from 'react'
|
|
import { IconAlertCircle, IconLoader, Input } from 'ui'
|
|
|
|
import Panel from 'components/ui/Panel'
|
|
import { useJwtSecretUpdatingStatusQuery } from 'data/config/jwt-secret-updating-status-query'
|
|
import { useProjectSettingsQuery } from 'data/config/project-settings-query'
|
|
import { DEFAULT_PROJECT_API_SERVICE_ID } from 'lib/constants'
|
|
|
|
const DisplayConfigSettings = () => {
|
|
const { ref: projectRef } = useParams()
|
|
const {
|
|
data: settings,
|
|
isLoading: isProjectSettingsLoading,
|
|
isError: isProjectSettingsError,
|
|
} = useProjectSettingsQuery({
|
|
projectRef,
|
|
})
|
|
|
|
const {
|
|
data,
|
|
isError: isJwtSecretUpdateStatusError,
|
|
isLoading: isJwtSecretUpdateStatusLoading,
|
|
} = useJwtSecretUpdatingStatusQuery({ projectRef })
|
|
const jwtSecretUpdateStatus = data?.jwtSecretUpdateStatus
|
|
|
|
const isNotUpdatingJwtSecret =
|
|
jwtSecretUpdateStatus === undefined || jwtSecretUpdateStatus === JwtSecretUpdateStatus.Updated
|
|
// Get the API service
|
|
const jwtSecret = settings?.project?.jwt_secret ?? ''
|
|
const apiService = (settings?.services ?? []).find(
|
|
(x: any) => x.app.id == DEFAULT_PROJECT_API_SERVICE_ID
|
|
)
|
|
const apiConfig = apiService?.app_config
|
|
const apiUrl = `${apiConfig?.protocol ?? 'https'}://${apiConfig?.endpoint ?? '-'}`
|
|
|
|
return (
|
|
<ConfigContentWrapper>
|
|
{isProjectSettingsError || isJwtSecretUpdateStatusError ? (
|
|
<div className="flex items-center justify-center py-8 space-x-2">
|
|
<IconAlertCircle size={16} strokeWidth={1.5} />
|
|
<p className="text-sm text-foreground-light">
|
|
{isProjectSettingsError
|
|
? 'Failed to retrieve configuration'
|
|
: 'Failed to update JWT secret'}
|
|
</p>
|
|
</div>
|
|
) : isProjectSettingsLoading || isJwtSecretUpdateStatusLoading ? (
|
|
<div className="flex items-center justify-center py-8 space-x-2">
|
|
<IconLoader className="animate-spin" size={16} strokeWidth={1.5} />
|
|
<p className="text-sm text-foreground-light">
|
|
{isProjectSettingsLoading ? 'Retrieving API keys' : 'JWT secret is being updated'}
|
|
</p>
|
|
</div>
|
|
) : (
|
|
<>
|
|
<Panel.Content>
|
|
<Input
|
|
label="URL"
|
|
readOnly
|
|
copy
|
|
disabled
|
|
className="input-mono"
|
|
value={apiUrl}
|
|
descriptionText="A RESTful endpoint for querying and managing your database."
|
|
layout="horizontal"
|
|
/>
|
|
</Panel.Content>
|
|
<Panel.Content className="border-t border-panel-border-interior-light [[data-theme*=dark]_&]:border-panel-border-interior-dark">
|
|
<Input
|
|
label="JWT Secret"
|
|
readOnly
|
|
copy={isNotUpdatingJwtSecret}
|
|
reveal={isNotUpdatingJwtSecret}
|
|
disabled
|
|
value={
|
|
jwtSecretUpdateStatus === JwtSecretUpdateStatus.Failed
|
|
? 'JWT secret update failed'
|
|
: jwtSecretUpdateStatus === JwtSecretUpdateStatus.Updating
|
|
? 'Updating JWT secret...'
|
|
: jwtSecret
|
|
}
|
|
className="input-mono"
|
|
descriptionText="Used to decode your JWTs. You can also use this to mint your own JWTs."
|
|
layout="horizontal"
|
|
/>
|
|
</Panel.Content>
|
|
</>
|
|
)}
|
|
</ConfigContentWrapper>
|
|
)
|
|
}
|
|
|
|
export default DisplayConfigSettings
|
|
|
|
const ConfigContentWrapper = ({ children }: PropsWithChildren<{}>) => {
|
|
return (
|
|
<Panel
|
|
title={
|
|
<div className="space-y-3">
|
|
<h5 className="text-base">Project Configuration</h5>
|
|
</div>
|
|
}
|
|
>
|
|
{children}
|
|
</Panel>
|
|
)
|
|
}
|