+ )}
+
+
+
+ )
+ }}
+
+ ) : (
+
+
+
+ Your extension version is outdated for this wrapper.
+
+
+
+ The {wrapperMeta.label} wrapper requires a minimum extension version of{' '}
+ {wrapperMeta.minimumExtensionVersion}. You have version{' '}
+ {wrappersExtension?.installed_version} installed. Please{' '}
+ {databaseNeedsUpgrading && 'upgrade your database then '}update the extension by
+ disabling and enabling the wrappers extension to
+ create this wrapper.
+
+
+ Warning: Before reinstalling the wrapper extension, you must first remove all existing
+ wrappers. Afterward, you can recreate the wrappers.
+
- )}
-
-
-
- )
- }}
-
- ) : (
-
-
-
- Your extension version is outdated for this wrapper.
-
-
-
- The {wrapperMeta.label} wrapper requires a minimum extension version of{' '}
- {wrapperMeta.minimumExtensionVersion}. You have version{' '}
- {wrappersExtension?.installed_version} installed. Please{' '}
- {databaseNeedsUpgrading && 'upgrade your database then '}update the extension by
- disabling and enabling the wrappers extension to
- create this wrapper.
-
-
- Warning: Before reinstalling the wrapper extension, you must first remove all
- existing wrappers. Afterward, you can recreate the wrappers.
-
+
)}
>
diff --git a/apps/studio/components/interfaces/Docs/GeneratingTypes.tsx b/apps/studio/components/interfaces/Docs/GeneratingTypes.tsx
index 88c552c1f02..3854b9ac829 100644
--- a/apps/studio/components/interfaces/Docs/GeneratingTypes.tsx
+++ b/apps/studio/components/interfaces/Docs/GeneratingTypes.tsx
@@ -1,12 +1,14 @@
+import { Download } from 'lucide-react'
import Link from 'next/link'
import { useState } from 'react'
import { toast } from 'sonner'
-import { useProjectPostgrestConfigQuery } from 'data/config/project-postgrest-config-query'
+
import { useParams } from 'common'
import CodeSnippet from 'components/interfaces/Docs/CodeSnippet'
+import { DocsButton } from 'components/ui/DocsButton'
+import { useProjectPostgrestConfigQuery } from 'data/config/project-postgrest-config-query'
import { generateTypes } from 'data/projects/project-type-generation-query'
import { Button } from 'ui'
-import { ExternalLink, Download } from 'lucide-react'
interface Props {
selectedLang: 'bash' | 'js'
@@ -41,15 +43,7 @@ export default function GeneratingTypes({ selectedLang }: Props) {
<>
Generating types
- }>
-
- Documentation
-
-
+
diff --git a/apps/studio/components/interfaces/Functions/EdgeFunctionSecrets/EdgeFunctionSecrets.tsx b/apps/studio/components/interfaces/Functions/EdgeFunctionSecrets/EdgeFunctionSecrets.tsx
index 903970244ed..8b7f43e33e8 100644
--- a/apps/studio/components/interfaces/Functions/EdgeFunctionSecrets/EdgeFunctionSecrets.tsx
+++ b/apps/studio/components/interfaces/Functions/EdgeFunctionSecrets/EdgeFunctionSecrets.tsx
@@ -1,22 +1,23 @@
import { PermissionAction } from '@supabase/shared-types/out/constants'
import { useParams } from 'common'
-import { ExternalLink, Search } from 'lucide-react'
+import { Search } from 'lucide-react'
import { useState } from 'react'
import { toast } from 'sonner'
import Table from 'components/to-be-cleaned/Table'
import AlertError from 'components/ui/AlertError'
import { ButtonTooltip } from 'components/ui/ButtonTooltip'
+import { DocsButton } from 'components/ui/DocsButton'
import NoPermission from 'components/ui/NoPermission'
import { GenericSkeletonLoader } from 'components/ui/ShimmeringLoader'
import { useSecretsDeleteMutation } from 'data/secrets/secrets-delete-mutation'
import { ProjectSecret, useSecretsQuery } from 'data/secrets/secrets-query'
import { useCheckPermissions } from 'hooks/misc/useCheckPermissions'
-import { Badge, Button } from 'ui'
+import { Badge } from 'ui'
+import { Input } from 'ui-patterns/DataInputs/Input'
import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal'
import AddNewSecretModal from './AddNewSecretModal'
import EdgeFunctionSecret from './EdgeFunctionSecret'
-import { Input } from 'ui-patterns/DataInputs/Input'
const EdgeFunctionSecrets = () => {
const { ref: projectRef } = useParams()
@@ -66,15 +67,7 @@ const EdgeFunctionSecrets = () => {
icon={}
/>
- }>
-
- Documentation
-
-
+ setShowCreateSecret(true)}
diff --git a/apps/studio/components/interfaces/Functions/FunctionsEmptyState.tsx b/apps/studio/components/interfaces/Functions/FunctionsEmptyState.tsx
index 0e0a17e5463..4165486a8d8 100644
--- a/apps/studio/components/interfaces/Functions/FunctionsEmptyState.tsx
+++ b/apps/studio/components/interfaces/Functions/FunctionsEmptyState.tsx
@@ -1,6 +1,6 @@
-import { Code, ExternalLink } from 'lucide-react'
-import Link from 'next/link'
+import { ExternalLink } from 'lucide-react'
+import { DocsButton } from 'components/ui/DocsButton'
import { Button } from 'ui'
import TerminalInstructions from './TerminalInstructions'
@@ -17,24 +17,16 @@ const FunctionsEmptyState = () => {
close to your users. They can be used for listening to webhooks or integrating your
Supabase project with third-parties.
-
+
+ }>
-
- Documentation
-
-
- }>
-
Examples
-
+
diff --git a/apps/studio/components/interfaces/Functions/TerminalInstructions.tsx b/apps/studio/components/interfaces/Functions/TerminalInstructions.tsx
index 1c100782e7f..be42fca37be 100644
--- a/apps/studio/components/interfaces/Functions/TerminalInstructions.tsx
+++ b/apps/studio/components/interfaces/Functions/TerminalInstructions.tsx
@@ -1,9 +1,10 @@
-import { Code, ExternalLink, Maximize2, Minimize2, Terminal } from 'lucide-react'
+import { ExternalLink, Maximize2, Minimize2, Terminal } from 'lucide-react'
import { useRouter } from 'next/router'
import { ComponentPropsWithoutRef, ElementRef, forwardRef, useState } from 'react'
import { useParams } from 'common'
import CommandRender from 'components/interfaces/Functions/CommandRender'
+import { DocsButton } from 'components/ui/DocsButton'
import { useAccessTokensQuery } from 'data/access-tokens/access-tokens-query'
import { getAPIKeys, useProjectSettingsV2Query } from 'data/config/project-settings-v2-query'
import { useCustomDomainsQuery } from 'data/custom-domains/custom-domains-query'
@@ -136,20 +137,12 @@ const TerminalInstructions = forwardRef<
+ }>
- Documentation
-
-
- }>
-
Examples
diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsDisabledState.tsx b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsDisabledState.tsx
index 4668f703848..591e072f817 100644
--- a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsDisabledState.tsx
+++ b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsDisabledState.tsx
@@ -1,16 +1,13 @@
-import * as Tooltip from '@radix-ui/react-tooltip'
-import { ExternalLink } from 'lucide-react'
-import Link from 'next/link'
+import { PermissionAction } from '@supabase/shared-types/out/constants'
import { useState } from 'react'
-import { PermissionAction } from '@supabase/shared-types/out/constants'
+import EnableExtensionModal from 'components/interfaces/Database/Extensions/EnableExtensionModal'
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
+import ProductEmptyState from 'components/to-be-cleaned/ProductEmptyState'
+import { ButtonTooltip } from 'components/ui/ButtonTooltip'
+import { DocsButton } from 'components/ui/DocsButton'
import { useDatabaseExtensionsQuery } from 'data/database-extensions/database-extensions-query'
import { useCheckPermissions } from 'hooks/misc/useCheckPermissions'
-import { Button } from 'ui'
-
-import ProductEmptyState from 'components/to-be-cleaned/ProductEmptyState'
-import EnableExtensionModal from 'components/interfaces/Database/Extensions/EnableExtensionModal'
export const CronJobsDisabledState = () => {
const [showEnableExtensionModal, setShowEnableExtensionModal] = useState(false)
@@ -42,39 +39,22 @@ export const CronJobsDisabledState = () => {
- Manage access for {member.username} to each project under {organization?.name}
-
-
- {(hasOverlappingProjects || hasMoreThanOneRoleForAllProjects) && (
-
-
-
- Members cannot be assigned multiple roles on a project
-
-
- Ensure that the member has at most one role assigned for each project
-
-
- )}
-
- {roleConfiguration.length === 0 && (
-
-
-
- Team members need to be assigned at least one role
-
-
- You may not remove all roles from a team member
-
-
- )}
-
- {roleConfiguration.map((role) => {
- const selectedProjects =
- roleConfiguration.find((r) => r.id === role.id)?.projects ?? []
-
- return (
-
-
-
{role.name}
-
- {role.projects.length > 0 && (
- onUpdateRole(role, [])}>
- Apply to all projects
-
- )}
- onRemoveRole(role)}>
- Remove role
-
-
-
-
- )
-}
diff --git a/apps/studio/components/interfaces/Organization/Usage/Usage.tsx b/apps/studio/components/interfaces/Organization/Usage/Usage.tsx
index f8b780933a0..9892366170e 100644
--- a/apps/studio/components/interfaces/Organization/Usage/Usage.tsx
+++ b/apps/studio/components/interfaces/Organization/Usage/Usage.tsx
@@ -1,15 +1,13 @@
import { PermissionAction } from '@supabase/shared-types/out/constants'
import clsx from 'clsx'
import dayjs from 'dayjs'
-import { ExternalLink, Info } from 'lucide-react'
-import Link from 'next/link'
import { useEffect, useMemo, useState } from 'react'
import { useParams } from 'common'
import { ScaffoldContainer, ScaffoldContainerLegacy } from 'components/layouts/Scaffold'
import DateRangePicker from 'components/to-be-cleaned/DateRangePicker'
import AlertError from 'components/ui/AlertError'
-import InformationBox from 'components/ui/InformationBox'
+import { DocsButton } from 'components/ui/DocsButton'
import NoPermission from 'components/ui/NoPermission'
import ShimmeringLoader from 'components/ui/ShimmeringLoader'
import { useProjectsQuery } from 'data/projects/projects-query'
@@ -17,7 +15,8 @@ import { useOrgSubscriptionQuery } from 'data/subscriptions/org-subscription-que
import { useCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization'
import { TIME_PERIODS_BILLING, TIME_PERIODS_REPORTS } from 'lib/constants/metrics'
-import { Button, Listbox } from 'ui'
+import { Listbox } from 'ui'
+import { Admonition } from 'ui-patterns'
import { Restriction } from '../BillingSettings/Restriction'
import Activity from './Activity'
import Bandwidth from './Bandwidth'
@@ -183,35 +182,21 @@ const Usage = () => {
{selectedProjectRef ? (
-
-
- You are currently viewing usage for the "
- {selectedProject?.name || selectedProjectRef}" project. Since your organization is
+ description={`You are currently viewing usage for the "
+ ${selectedProject?.name || selectedProjectRef}" project. Since your organization is
using the new organization-based billing, the included quota is for your whole
organization and not just this project. For billing purposes, we sum up usage from
all your projects. To view your usage quota, set the project filter above back to
- "All Projects".
-
-
- }>
-
- Documentation
-
-
-
-
- }
- defaultVisibility
- hideCollapse
- icon={}
- />
+ "All Projects".`}
+ >
+
+
) : (
diff --git a/apps/studio/components/interfaces/ProjectAPIDocs/Content/Entities.tsx b/apps/studio/components/interfaces/ProjectAPIDocs/Content/Entities.tsx
index cb39f18d376..d5456a73d51 100644
--- a/apps/studio/components/interfaces/ProjectAPIDocs/Content/Entities.tsx
+++ b/apps/studio/components/interfaces/ProjectAPIDocs/Content/Entities.tsx
@@ -1,15 +1,15 @@
-import Link from 'next/link'
import { useState } from 'react'
import { toast } from 'sonner'
import { useParams } from 'common'
+import { DocsButton } from 'components/ui/DocsButton'
+import { useProjectPostgrestConfigQuery } from 'data/config/project-postgrest-config-query'
import { generateTypes } from 'data/projects/project-type-generation-query'
+import { Download } from 'lucide-react'
import { Button } from 'ui'
import ContentSnippet from '../ContentSnippet'
import { DOCS_CONTENT } from '../ProjectAPIDocs.constants'
import type { ContentProps } from './Content.types'
-import { ExternalLink, Download } from 'lucide-react'
-import { useProjectPostgrestConfigQuery } from 'data/config/project-postgrest-config-query'
const Entities = ({ language }: ContentProps) => {
const { ref } = useParams()
@@ -41,16 +41,8 @@ const Entities = ({ language }: ContentProps) => {
diff --git a/apps/studio/components/interfaces/Settings/Database/SSLConfiguration.tsx b/apps/studio/components/interfaces/Settings/Database/SSLConfiguration.tsx
index 88a0ac96998..6c333b39ce7 100644
--- a/apps/studio/components/interfaces/Settings/Database/SSLConfiguration.tsx
+++ b/apps/studio/components/interfaces/Settings/Database/SSLConfiguration.tsx
@@ -1,5 +1,5 @@
import { PermissionAction } from '@supabase/shared-types/out/constants'
-import { Download, ExternalLink, Loader2 } from 'lucide-react'
+import { Download, Loader2 } from 'lucide-react'
import Link from 'next/link'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
@@ -7,6 +7,7 @@ import { toast } from 'sonner'
import { useParams } from 'common'
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
import { ButtonTooltip } from 'components/ui/ButtonTooltip'
+import { DocsButton } from 'components/ui/DocsButton'
import { FormHeader } from 'components/ui/Forms/FormHeader'
import { FormPanel } from 'components/ui/Forms/FormPanel'
import { FormSection, FormSectionContent, FormSectionLabel } from 'components/ui/Forms/FormSection'
@@ -81,15 +82,9 @@ const SSLConfiguration = () => {
return (
-
-
-
- }>
-
- Documentation
-
-
-
+
+
+
- }>
-
- Documentation
-
-
+
- }>
-
- Documentation
-
-
+ }
diff --git a/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainVerify.tsx b/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainVerify.tsx
index c3daa0950be..34a786b7a85 100644
--- a/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainVerify.tsx
+++ b/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainVerify.tsx
@@ -1,8 +1,9 @@
-import { AlertCircle, ExternalLink, HelpCircle, RefreshCw } from 'lucide-react'
+import { AlertCircle, HelpCircle, RefreshCw } from 'lucide-react'
import Link from 'next/link'
import { useState } from 'react'
import { useParams } from 'common'
+import { DocsButton } from 'components/ui/DocsButton'
import Panel from 'components/ui/Panel'
import { useProjectSettingsV2Query } from 'data/config/project-settings-v2-query'
import { useCustomDomainDeleteMutation } from 'data/custom-domains/custom-domains-delete-mutation'
@@ -182,15 +183,7 @@ const CustomDomainVerify = ({ customDomain }: CustomDomainVerifyProps) => {
- }>
-
- Documentation
-
-
+
{
!canConfigureCustomDomain ? (
"You need additional permissions to update your project's custom domain settings"
) : (
- }>
-
- Documentation
-
-
+
)
}
/>
diff --git a/apps/studio/components/interfaces/Settings/General/TransferProjectPanel/TransferProjectButton.tsx b/apps/studio/components/interfaces/Settings/General/TransferProjectPanel/TransferProjectButton.tsx
index 9777aca6547..2e2d539eaa6 100644
--- a/apps/studio/components/interfaces/Settings/General/TransferProjectPanel/TransferProjectButton.tsx
+++ b/apps/studio/components/interfaces/Settings/General/TransferProjectPanel/TransferProjectButton.tsx
@@ -1,16 +1,16 @@
import { PermissionAction } from '@supabase/shared-types/out/constants'
-import Link from 'next/link'
+import { Loader, Shield, Users, Wrench } from 'lucide-react'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
import { ButtonTooltip } from 'components/ui/ButtonTooltip'
+import { DocsButton } from 'components/ui/DocsButton'
import { useOrganizationsQuery } from 'data/organizations/organizations-query'
import { useProjectTransferMutation } from 'data/projects/project-transfer-mutation'
import { useProjectTransferPreviewQuery } from 'data/projects/project-transfer-preview-query'
import { useCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { useSelectedProject } from 'hooks/misc/useSelectedProject'
import { useFlag } from 'hooks/ui/useFlag'
-import { Loader, Shield, Users, Wrench } from 'lucide-react'
import { Alert, Button, InfoIcon, Listbox, Loading, Modal } from 'ui'
const TransferProjectButton = () => {
@@ -113,20 +113,9 @@ const TransferProjectButton = () => {
To transfer projects, the owner must be a member of both the source and target
- organizations. For further information see our{' '}
-
- Documentation
-
- .
+ organizations. Consider the following before transferring your project:
- These members have reached their maximum limits for the number of active
- Free plan projects within organizations where they are an administrator or
- owner:
-
+ These members have reached their maximum limits for the number of active
+ Free plan projects within organizations where they are an administrator or
+ owner:
+
+
+
+ )}
>
)
diff --git a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureActivity.tsx b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureActivity.tsx
index e573716ba1c..a50cbc18c1e 100644
--- a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureActivity.tsx
+++ b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureActivity.tsx
@@ -21,6 +21,7 @@ import {
} from 'components/layouts/Scaffold'
import DateRangePicker from 'components/to-be-cleaned/DateRangePicker'
import DatabaseSelector from 'components/ui/DatabaseSelector'
+import { DocsButton } from 'components/ui/DocsButton'
import Panel from 'components/ui/Panel'
import ShimmeringLoader from 'components/ui/ShimmeringLoader'
import { DataPoint } from 'data/analytics/constants'
@@ -33,7 +34,6 @@ import { useSelectedProject } from 'hooks/misc/useSelectedProject'
import { INSTANCE_MICRO_SPECS, INSTANCE_NANO_SPECS } from 'lib/constants'
import { TIME_PERIODS_BILLING, TIME_PERIODS_REPORTS } from 'lib/constants/metrics'
import { useDatabaseSelectorStateSnapshot } from 'state/database-selector'
-import { Button } from 'ui'
import { Admonition } from 'ui-patterns/admonition'
import { INFRA_ACTIVITY_METRICS } from './Infrastructure.constants'
@@ -397,11 +397,10 @@ const InfrastructureActivity = () => {
add-ons are designed for sustained, high performance with specific IOPS and
throughput limits without needing to burst."
>
- }>
-
- Documentation
-
-
+
>
) : chartMeta[attribute.key].isLoading ? (
diff --git a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureConfiguration/DeployNewReplicaPanel.tsx b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureConfiguration/DeployNewReplicaPanel.tsx
index 7a6bcf26f45..51e11bb8b8b 100644
--- a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureConfiguration/DeployNewReplicaPanel.tsx
+++ b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureConfiguration/DeployNewReplicaPanel.tsx
@@ -1,4 +1,4 @@
-import { ChevronDown, ExternalLink } from 'lucide-react'
+import { ChevronDown } from 'lucide-react'
import Link from 'next/link'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
@@ -12,6 +12,7 @@ import {
calculateIOPSPrice,
calculateThroughputPrice,
} from 'components/interfaces/DiskManagement/DiskManagement.utils'
+import { DocsButton } from 'components/ui/DocsButton'
import { useDiskAttributesQuery } from 'data/config/disk-attributes-query'
import { useEnablePhysicalBackupsMutation } from 'data/database/enable-physical-backups-mutation'
import { useOverdueInvoicesQuery } from 'data/invoices/invoices-overdue-query'
@@ -51,7 +52,6 @@ import {
cn,
} from 'ui'
import { AVAILABLE_REPLICA_REGIONS } from './InstanceConfiguration.constants'
-import { Admonition } from 'ui-patterns'
// [Joshen] FYI this is purely for AWS only, need to update to support Fly eventually
@@ -242,7 +242,7 @@ const DeployNewReplicaPanel = ({
- ) : !isAWSProvider ? (
+ ) : isAWSProvider ? (
@@ -253,17 +253,11 @@ const DeployNewReplicaPanel = ({
Projects provisioned by other cloud providers currently will not be able to use read
replicas
-
diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/ForeignKeySelector/ForeignKeySelector.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/ForeignKeySelector/ForeignKeySelector.tsx
index a037edacd9b..7a82772b5fa 100644
--- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/ForeignKeySelector/ForeignKeySelector.tsx
+++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/ForeignKeySelector/ForeignKeySelector.tsx
@@ -1,6 +1,6 @@
import type { PostgresTable } from '@supabase/postgres-meta'
import { sortBy } from 'lodash'
-import { ArrowRight, Database, ExternalLink, HelpCircle, Table, X } from 'lucide-react'
+import { ArrowRight, Database, HelpCircle, Table, X } from 'lucide-react'
import { Fragment, useEffect, useState } from 'react'
import {
AlertDescription_Shadcn_,
@@ -12,6 +12,7 @@ import {
} from 'ui'
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
+import { DocsButton } from 'components/ui/DocsButton'
import InformationBox from 'components/ui/InformationBox'
import { FOREIGN_KEY_CASCADE_ACTION } from 'data/database/database-query-constants'
import { useSchemasQuery } from 'data/database/schemas-query'
@@ -498,15 +499,7 @@ export const ForeignKeySelector = ({
label="Action if referenced row is removed"
// @ts-ignore
labelOptional={
- }>
-
- Documentation
-
-
+
}
descriptionText={
<>
diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/RLSDisableModal.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/RLSDisableModal.tsx
index 582a559788f..ca590e3d15e 100644
--- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/RLSDisableModal.tsx
+++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/RLSDisableModal.tsx
@@ -1,62 +1,53 @@
-import { AlertOctagon, BookOpen, Lock, ShieldOff } from 'lucide-react'
-import Link from 'next/link'
-import { Alert, Button } from 'ui'
+import { AlertOctagon, Lock, ShieldOff } from 'lucide-react'
+
+import { DocsButton } from 'components/ui/DocsButton'
+import { Alert } from 'ui'
export default function RLSDisableModalContent() {
return (
-
-
-
-
-
Anyone can edit or delete data in this table.
-
-
-
-
- All requests to this table will be accepted.
-
+
+
+
+
Anyone can edit or delete data in this table.
+
+
+
+
+ All requests to this table will be accepted.
+
-
-
- Auth policies will not be enforced.
-
+
+
+ Auth policies will not be enforced.
+
-
-
-
- Before you turn off Row Level Security, consider:
-
-
- Any personal information in this table will be publicly accessible.
-
-
- Anyone will be able to modify, add or delete any row in this table.
-
-
-
-
-
-
-
-
-
- }>
-
- RLS Documentation
-
-
-
-
+
+
+
+ Before you turn off Row Level Security, consider:
+
+
+ Any personal information in this table will be publicly accessible.
+
+
+ Anyone will be able to modify, add or delete any row in this table.
+
+
+
+
+
+
+
)
}
diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx
index 9eca50d7fc2..637f4497429 100644
--- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx
+++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx
@@ -2,10 +2,11 @@ import type { PostgresTable } from '@supabase/postgres-meta'
import { isEmpty, isUndefined, noop } from 'lodash'
import { useEffect, useState } from 'react'
import { toast } from 'sonner'
-import { Alert, Badge, Button, Checkbox, Input, SidePanel } from 'ui'
+import { Badge, Checkbox, Input, SidePanel } from 'ui'
import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal'
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
+import { DocsButton } from 'components/ui/DocsButton'
import { useDatabasePublicationsQuery } from 'data/database-publications/database-publications-query'
import {
CONSTRAINT_TYPE,
@@ -21,7 +22,8 @@ import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
import { useQuerySchemaState } from 'hooks/misc/useSchemaQueryState'
import { useUrlState } from 'hooks/ui/useUrlState'
import { EXCLUDED_SCHEMAS_WITHOUT_EXTENSIONS } from 'lib/constants/schemas'
-import { ExternalLink } from 'lucide-react'
+import { useTableEditorStateSnapshot } from 'state/table-editor'
+import { Admonition } from 'ui-patterns'
import ActionBar from '../ActionBar'
import type { ForeignKey } from '../ForeignKeySelector/ForeignKeySelector.types'
import { formatForeignKeys } from '../ForeignKeySelector/ForeignKeySelector.utils'
@@ -39,7 +41,6 @@ import {
generateTableFieldFromPostgresTable,
validateFields,
} from './TableEditor.utils'
-import { useTableEditorStateSnapshot } from 'state/table-editor'
export interface TableEditorProps {
table?: PostgresTable
@@ -304,49 +305,41 @@ const TableEditor = ({
size="medium"
/>
{tableFields.isRLSEnabled ? (
-
+ You need to create an access policy before you can query data from this table.
+ Without a policy, querying this table will return an{' '}
+ empty array of results.{' '}
+ {isNewRecord ? 'You can create policies after saving this table.' : ''}
+ >
+ }
>
-
- You need to create an access policy before you can query data from this table. Without
- a policy, querying this table will return an{' '}
- empty array of results.{' '}
- {isNewRecord ? 'You can create policies after saving this table.' : ''}
-