diff --git a/apps/docs/content/guides/getting-started/mcp.mdx b/apps/docs/content/guides/getting-started/mcp.mdx index 181d012da19c1..c1a4e0ba38c45 100644 --- a/apps/docs/content/guides/getting-started/mcp.mdx +++ b/apps/docs/content/guides/getting-started/mcp.mdx @@ -241,7 +241,7 @@ We recommend the following best practices to mitigate security risks when using ## MCP for local Supabase instances -The Supabase MCP server connects directly to the cloud platform to access your database. If you are running a local instance of Supabase, you can instead use the [Postgres MCP server](https://github.com/modelcontextprotocol/servers/tree/main/src/postgres) to connect to your local database. This MCP server runs all queries as read-only transactions. +The Supabase MCP server connects directly to the cloud platform to access your database. If you are running a local instance of Supabase, you can instead use the [Postgres MCP server](https://github.com/modelcontextprotocol/servers-archived/tree/main/src/postgres) to connect to your local database. This MCP server runs all queries as read-only transactions. ### Step 1: Find your database connection string diff --git a/apps/studio/components/grid/components/header/filter/FilterPopoverPrimitive.tsx b/apps/studio/components/grid/components/header/filter/FilterPopoverPrimitive.tsx index 8891ff8dcef66..a36027b46108d 100644 --- a/apps/studio/components/grid/components/header/filter/FilterPopoverPrimitive.tsx +++ b/apps/studio/components/grid/components/header/filter/FilterPopoverPrimitive.tsx @@ -109,7 +109,7 @@ export const FilterPopoverPrimitive = ({ ))} {localFilters.length == 0 && (
-
No filters applied to this view
+
No filters applied to this view

Add a column below to filter the view

diff --git a/apps/studio/components/grid/components/header/sort/SortPopoverPrimitive.tsx b/apps/studio/components/grid/components/header/sort/SortPopoverPrimitive.tsx index 7cba3696a9675..943f60aaf2584 100644 --- a/apps/studio/components/grid/components/header/sort/SortPopoverPrimitive.tsx +++ b/apps/studio/components/grid/components/header/sort/SortPopoverPrimitive.tsx @@ -185,7 +185,7 @@ export const SortPopoverPrimitive = ({ ))} {localSorts.length === 0 && (
-
No sorts applied to this view
+
No sorts applied to this view

Add a column below to sort the view

)} diff --git a/apps/studio/components/interfaces/Auth/EmailTemplates/SpamValidation.tsx b/apps/studio/components/interfaces/Auth/EmailTemplates/SpamValidation.tsx index 3cd49de2d3ca6..06d3619bc9f70 100644 --- a/apps/studio/components/interfaces/Auth/EmailTemplates/SpamValidation.tsx +++ b/apps/studio/components/interfaces/Auth/EmailTemplates/SpamValidation.tsx @@ -25,7 +25,7 @@ export const SpamValidation = ({ validationResult }: SpamValidationProps) => { )}
-
+
{hasSpamWarning ? 'Email has a high probability of being marked as spam - review issues below to improve deliverability.' : 'Email content is unlikely to be marked as spam'} diff --git a/apps/studio/components/interfaces/Auth/Policies/PolicyTemplates/TemplatePreview.tsx b/apps/studio/components/interfaces/Auth/Policies/PolicyTemplates/TemplatePreview.tsx index 4e41b304bb7d5..795fc57111473 100644 --- a/apps/studio/components/interfaces/Auth/Policies/PolicyTemplates/TemplatePreview.tsx +++ b/apps/studio/components/interfaces/Auth/Policies/PolicyTemplates/TemplatePreview.tsx @@ -15,7 +15,7 @@ const TemplatePreview = ({ selectedTemplate }: TemplatePreviewProps) => {
-

{templateName}

+

{templateName}

{description}

diff --git a/apps/studio/components/interfaces/Database/Extensions/EnableExtensionModal.tsx b/apps/studio/components/interfaces/Database/Extensions/EnableExtensionModal.tsx index f8b19680cc0e7..180631cb85bb2 100644 --- a/apps/studio/components/interfaces/Database/Extensions/EnableExtensionModal.tsx +++ b/apps/studio/components/interfaces/Database/Extensions/EnableExtensionModal.tsx @@ -122,7 +122,7 @@ const EnableExtensionModal = ({ visible, extension, onCancel }: EnableExtensionM size="small" header={
-
Confirm to enable
+
Confirm to enable
{extension.name}
} diff --git a/apps/studio/components/interfaces/Home/AdvisorWidget.tsx b/apps/studio/components/interfaces/Home/AdvisorWidget.tsx index 50d259eb4e50c..23a45c29043ae 100644 --- a/apps/studio/components/interfaces/Home/AdvisorWidget.tsx +++ b/apps/studio/components/interfaces/Home/AdvisorWidget.tsx @@ -81,7 +81,7 @@ export const AdvisorWidget = () => { let titleContent: React.ReactNode if (totalIssues === 0) { - titleContent =

No issues available

+ titleContent =

No issues available

} else { const issuesText = totalIssues === 1 ? 'issue' : 'issues' const numberDisplay = totalIssues.toString() @@ -94,7 +94,7 @@ export const AdvisorWidget = () => { } titleContent = ( -

+

{numberDisplay} {issuesText} need {totalIssues === 1 ? 's' : ''} attention

diff --git a/apps/studio/components/interfaces/Home/NewProjectPanel/NewProjectPanel.tsx b/apps/studio/components/interfaces/Home/NewProjectPanel/NewProjectPanel.tsx index 96bf3c8dc3b26..f500af6880994 100644 --- a/apps/studio/components/interfaces/Home/NewProjectPanel/NewProjectPanel.tsx +++ b/apps/studio/components/interfaces/Home/NewProjectPanel/NewProjectPanel.tsx @@ -25,7 +25,7 @@ const NewProjectPanel = () => {
-

Welcome to your new project

+

Welcome to your new project

Your project has been deployed on its own instance, with its own API all set up and ready to use. @@ -36,9 +36,7 @@ const NewProjectPanel = () => {

-

- Get started by building out your database -

+

Get started by building out your database

Start building your app by creating tables and inserting data. Our Table Editor makes Postgres as easy to use as a spreadsheet, but there's also our SQL Editor if @@ -71,7 +69,7 @@ const NewProjectPanel = () => { {authEnabled && edgeFunctionsEnabled && storageEnabled && (

-

Explore our other products

+

Explore our other products

Supabase provides all the backend features you need to build a product. You can use it completely, or just the features you need. @@ -228,7 +226,7 @@ const NewProjectPanel = () => {

-

Connecting to your new project

+

Connecting to your new project

Interact with your database through the{' '} diff --git a/apps/studio/components/interfaces/Integrations/GraphQL/GraphiQLTab.tsx b/apps/studio/components/interfaces/Integrations/GraphQL/GraphiQLTab.tsx index 790babb0bc911..a7d1b024d3f79 100644 --- a/apps/studio/components/interfaces/Integrations/GraphQL/GraphiQLTab.tsx +++ b/apps/studio/components/interfaces/Integrations/GraphQL/GraphiQLTab.tsx @@ -91,11 +91,11 @@ export const GraphiQLTab = () => {

-

Enable the GraphQL Extension

-

+

Enable the GraphQL Extension

+

Toggle the switch below to enable the GraphQL extension. You can then use the GraphQL API with your Supabase Database. -

+

diff --git a/apps/studio/components/interfaces/JwtSecrets/jwt-secret-keys-table/index.tsx b/apps/studio/components/interfaces/JwtSecrets/jwt-secret-keys-table/index.tsx index 52227d9be6a5d..368b1d68388f7 100644 --- a/apps/studio/components/interfaces/JwtSecrets/jwt-secret-keys-table/index.tsx +++ b/apps/studio/components/interfaces/JwtSecrets/jwt-secret-keys-table/index.tsx @@ -258,7 +258,7 @@ export default function JWTSecretKeysTable() {
-

Previously used keys

+

Previously used keys

These JWT signing keys are still used to{' '} verify tokens that are yet to expire. @@ -326,7 +326,7 @@ export default function JWTSecretKeysTable() { {revokedKeys.length > 0 && (

-

Revoked keys

+

Revoked keys

These keys are no longer used to verify or sign JWTs.

diff --git a/apps/studio/components/interfaces/LogDrains/LogDrainDestinationSheetForm.tsx b/apps/studio/components/interfaces/LogDrains/LogDrainDestinationSheetForm.tsx index 1b5b6d36e9c18..5bffac5f3cd38 100644 --- a/apps/studio/components/interfaces/LogDrains/LogDrainDestinationSheetForm.tsx +++ b/apps/studio/components/interfaces/LogDrains/LogDrainDestinationSheetForm.tsx @@ -8,6 +8,7 @@ import { z } from 'zod' import { useParams } from 'common' import { LogDrainData, useLogDrainsQuery } from 'data/log-drains/log-drains-query' +import { DocsButton } from 'components/ui/DocsButton' import { Button, Form_Shadcn_, @@ -38,7 +39,6 @@ import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { InfoTooltip } from 'ui-patterns/info-tooltip' import { urlRegex } from '../Auth/Auth.constants' import { DATADOG_REGIONS, LOG_DRAIN_TYPES, LogDrainType } from './LogDrains.constants' -import { DocsButton } from 'components/ui/DocsButton' const FORM_ID = 'log-drain-destination-form' @@ -456,7 +456,7 @@ export function LogDrainDestinationSheetForm({ <>
-

Custom Headers

+

Custom Headers

{getHeadersSectionDescription()}

diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/CreditBalance.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/CreditBalance.tsx index bb5344693d4e7..cfb8a013dfff7 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/CreditBalance.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/CreditBalance.tsx @@ -69,7 +69,7 @@ const CreditBalance = () => {
{isDebt &&

-

}

$

-

{balance}

+

{balance}

{isCredit &&

/credits

}
diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/SubscriptionPlanUpdateDialog.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/SubscriptionPlanUpdateDialog.tsx index 88892c72e4ba7..cc82d7fc1bfd0 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/SubscriptionPlanUpdateDialog.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/SubscriptionPlanUpdateDialog.tsx @@ -3,6 +3,10 @@ import Link from 'next/link' import { useMemo, useRef, useState } from 'react' import { toast } from 'sonner' +import { Elements } from '@stripe/react-stripe-js' +import { loadStripe, PaymentIntentResult, StripeElementsOptions } from '@stripe/stripe-js' +import { getStripeElementsAppearanceOptions } from 'components/interfaces/Billing/Payment/Payment.utils' +import { PaymentConfirmation } from 'components/interfaces/Billing/Payment/PaymentConfirmation' import { billingPartnerLabel, getPlanChangeType, @@ -11,25 +15,19 @@ import AlertError from 'components/ui/AlertError' import ShimmeringLoader from 'components/ui/ShimmeringLoader' import { OrganizationBillingSubscriptionPreviewResponse } from 'data/organizations/organization-billing-subscription-preview' import { ProjectInfo } from 'data/projects/projects-query' +import { useConfirmPendingSubscriptionChangeMutation } from 'data/subscriptions/org-subscription-confirm-pending-change' import { useOrgSubscriptionUpdateMutation } from 'data/subscriptions/org-subscription-update-mutation' import { SubscriptionTier } from 'data/subscriptions/types' +import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization' import { PRICING_TIER_PRODUCT_IDS, PROJECT_STATUS, STRIPE_PUBLIC_KEY } from 'lib/constants' import { formatCurrency } from 'lib/helpers' +import { useTheme } from 'next-themes' +import { plans as subscriptionsPlans } from 'shared-data/plans' import { Button, Dialog, DialogContent, Table, TableBody, TableCell, TableRow } from 'ui' import { Admonition } from 'ui-patterns' import { InfoTooltip } from 'ui-patterns/info-tooltip' -import PaymentMethodSelection from './PaymentMethodSelection' -import { useConfirmPendingSubscriptionChangeMutation } from 'data/subscriptions/org-subscription-confirm-pending-change' -import { PaymentConfirmation } from 'components/interfaces/Billing/Payment/PaymentConfirmation' -import { Elements } from '@stripe/react-stripe-js' -import { loadStripe, StripeElementsOptions } from '@stripe/stripe-js' -import { useTheme } from 'next-themes' -import { PaymentIntentResult } from '@stripe/stripe-js' -import { getStripeElementsAppearanceOptions } from 'components/interfaces/Billing/Payment/Payment.utils' -import { plans as subscriptionsPlans } from 'shared-data/plans' import type { PaymentMethodElementRef } from '../PaymentMethods/NewPaymentMethodElement' -import { useParams } from 'common' -import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization' +import PaymentMethodSelection from './PaymentMethodSelection' const stripePromise = loadStripe(STRIPE_PUBLIC_KEY) @@ -347,7 +345,7 @@ export const SubscriptionPlanUpdateDialog = ({ Monthly invoice estimate
-

Your new monthly invoice

+

Your new monthly invoice

Paid projects run 24/7 without pausing. First project uses Compute Credits; additional projects start at $10 @@ -616,7 +614,7 @@ export const SubscriptionPlanUpdateDialog = ({ {/* Right Column */}

-

+

{changeType === 'downgrade' ? 'Downgrade' : 'Upgrade'}{' '} {selectedOrganization?.name} to{' '} {changeType === 'downgrade' diff --git a/apps/studio/components/interfaces/ProjectAPIDocs/Content/Bucket.tsx b/apps/studio/components/interfaces/ProjectAPIDocs/Content/Bucket.tsx index 6b7e6e8e804e7..d2d17faa3b828 100644 --- a/apps/studio/components/interfaces/ProjectAPIDocs/Content/Bucket.tsx +++ b/apps/studio/components/interfaces/ProjectAPIDocs/Content/Bucket.tsx @@ -25,7 +25,7 @@ const Bucket = ({ language, apikey, endpoint }: ContentProps) => {
-

{bucket.name}

+

{bucket.name}

{bucket.public ? 'Public' : 'Private'} diff --git a/apps/studio/components/interfaces/ProjectAPIDocs/Content/EdgeFunction.tsx b/apps/studio/components/interfaces/ProjectAPIDocs/Content/EdgeFunction.tsx index dca7cce0c5218..9ff1d705b4517 100644 --- a/apps/studio/components/interfaces/ProjectAPIDocs/Content/EdgeFunction.tsx +++ b/apps/studio/components/interfaces/ProjectAPIDocs/Content/EdgeFunction.tsx @@ -21,7 +21,7 @@ const Bucket = ({ language, apikey = 'API_KEY', endpoint }: ContentProps) => {
-

{edgeFunction.name}

+

{edgeFunction.name}

diff --git a/apps/studio/components/interfaces/ProjectAPIDocs/Content/Entity.tsx b/apps/studio/components/interfaces/ProjectAPIDocs/Content/Entity.tsx index fda909b7295c0..1cd6064f7fb7b 100644 --- a/apps/studio/components/interfaces/ProjectAPIDocs/Content/Entity.tsx +++ b/apps/studio/components/interfaces/ProjectAPIDocs/Content/Entity.tsx @@ -4,11 +4,11 @@ import { useEffect } from 'react' import Table from 'components/to-be-cleaned/Table' import { useProjectJsonSchemaQuery } from 'data/docs/project-json-schema-query' import { useAppStateSnapshot } from 'state/app-state' +import LanguageSelector from '../LanguageSelector' import { DOCS_RESOURCE_CONTENT } from '../ProjectAPIDocs.constants' import ResourceContent from '../ResourceContent' import type { ContentProps } from './Content.types' import { tempRemovePostgrestText } from './Content.utils' -import LanguageSelector from '../LanguageSelector' function getColumnType(type: string, format: string) { // json and jsonb both have type=undefined, so check format instead @@ -57,7 +57,7 @@ const Entity = ({ language, apikey = '', endpoint = '' }: ContentProps) => {
-

{resource}

+

{resource}

{definition?.description ?? 'No description available'}

diff --git a/apps/studio/components/interfaces/ProjectAPIDocs/Content/RPC.tsx b/apps/studio/components/interfaces/ProjectAPIDocs/Content/RPC.tsx index 24553a7c1ae2e..8f13ca96ea44e 100644 --- a/apps/studio/components/interfaces/ProjectAPIDocs/Content/RPC.tsx +++ b/apps/studio/components/interfaces/ProjectAPIDocs/Content/RPC.tsx @@ -57,7 +57,7 @@ export const RPC = ({ language }: ContentProps) => { return (
-

{rpc.name}

+

{rpc.name}

{summary ?? 'No description available'}

diff --git a/apps/studio/components/interfaces/Reports/ReportChart.tsx b/apps/studio/components/interfaces/Reports/ReportChart.tsx index c24edbc1ef6b9..9d5726fb88983 100644 --- a/apps/studio/components/interfaces/Reports/ReportChart.tsx +++ b/apps/studio/components/interfaces/Reports/ReportChart.tsx @@ -110,11 +110,11 @@ const ReportChart = ({ if (!isAvailable && !isLoading) { return ( {chart.label}

} + title={

{chart.label}

} className={cn('h-[260px] relative', className)} >
-

{chart.label}

+

{chart.label}

This chart is available from{' '} diff --git a/apps/studio/components/interfaces/Reports/ReportHeader.tsx b/apps/studio/components/interfaces/Reports/ReportHeader.tsx index 0f4ff52c5c577..394f37762ed61 100644 --- a/apps/studio/components/interfaces/Reports/ReportHeader.tsx +++ b/apps/studio/components/interfaces/Reports/ReportHeader.tsx @@ -15,7 +15,7 @@ const ReportHeader = ({ title, showDatabaseSelector }: ReportHeaderProps) => { return (

-

{title}

+

{title}

{showDatabaseSelector && ( { diff --git a/apps/studio/components/interfaces/Reports/Reports.tsx b/apps/studio/components/interfaces/Reports/Reports.tsx index 53685bfdb1df5..ddc85aca62149 100644 --- a/apps/studio/components/interfaces/Reports/Reports.tsx +++ b/apps/studio/components/interfaces/Reports/Reports.tsx @@ -364,7 +364,7 @@ const Reports = () => {
-

{currentReport?.name || 'Reports'}

+

{currentReport?.name || 'Reports'}

{currentReport?.description}

{hasEdits && ( diff --git a/apps/studio/components/interfaces/RoleImpersonationSelector/RoleImpersonationSelector.tsx b/apps/studio/components/interfaces/RoleImpersonationSelector/RoleImpersonationSelector.tsx index 80a35929e3654..98aff096501e1 100644 --- a/apps/studio/components/interfaces/RoleImpersonationSelector/RoleImpersonationSelector.tsx +++ b/apps/studio/components/interfaces/RoleImpersonationSelector/RoleImpersonationSelector.tsx @@ -59,7 +59,7 @@ const RoleImpersonationSelector = ({ return ( <>
-

Database role settings

+

Database role settings

{ diff --git a/apps/studio/components/interfaces/RoleImpersonationSelector/UserImpersonationSelector.tsx b/apps/studio/components/interfaces/RoleImpersonationSelector/UserImpersonationSelector.tsx index edc0e0c753c89..d22edb156ce69 100644 --- a/apps/studio/components/interfaces/RoleImpersonationSelector/UserImpersonationSelector.tsx +++ b/apps/studio/components/interfaces/RoleImpersonationSelector/UserImpersonationSelector.tsx @@ -175,9 +175,9 @@ const UserImpersonationSelector = () => { return ( <>
-

+

{displayName ? `Impersonating ${displayName}` : 'Impersonate a User'} -

+

{!impersonatingUser && !isExternalAuthImpersonating ? "Select a user to respect your database's Row-Level Security policies for that particular user." diff --git a/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts.tsx b/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts.tsx index 4aec1576724a7..49d4428342f4f 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts.tsx +++ b/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLQuickstarts.tsx @@ -63,7 +63,7 @@ const SQLQuickstarts = () => {

-

Quickstarts

+

Quickstarts

Click on any script to fill the query box, modify the script, then click Run. diff --git a/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx b/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx index f5f8d1fd6f2b9..6ac7e907f4985 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx +++ b/apps/studio/components/interfaces/SQLEditor/SQLTemplates/SQLTemplates.tsx @@ -63,7 +63,7 @@ const SQLTemplates = () => {

-

Scripts

+

Scripts

Quick scripts to run on your database.

Click on any script to fill the query box, modify the script, then click diff --git a/apps/studio/components/interfaces/Settings/Database/DatabaseSettings/ResetDbPassword.tsx b/apps/studio/components/interfaces/Settings/Database/DatabaseSettings/ResetDbPassword.tsx index 29493fe9edccb..939ab6486cb60 100644 --- a/apps/studio/components/interfaces/Settings/Database/DatabaseSettings/ResetDbPassword.tsx +++ b/apps/studio/components/interfaces/Settings/Database/DatabaseSettings/ResetDbPassword.tsx @@ -124,7 +124,7 @@ const ResetDbPassword = ({ disabled = false }) => { Reset database password} + header={

Reset database password
} confirmText="Reset password" size="medium" visible={showResetDbPass} diff --git a/apps/studio/components/interfaces/Settings/Database/DiskSizeConfiguration.tsx b/apps/studio/components/interfaces/Settings/Database/DiskSizeConfiguration.tsx index 28d6fa67cd453..09da373613b7c 100644 --- a/apps/studio/components/interfaces/Settings/Database/DiskSizeConfiguration.tsx +++ b/apps/studio/components/interfaces/Settings/Database/DiskSizeConfiguration.tsx @@ -98,13 +98,13 @@ const DiskSizeConfiguration = ({ disabled = false }: DiskSizeConfigurationProps)
-
Space used
+
Space used
{formatBytes(databaseSizeBytesUsed, 2, 'GB')}
-
Total size
+
Total size
{currentDiskSize} GB
diff --git a/apps/studio/components/interfaces/Settings/Integrations/VercelIntegration/VercelIntegrationConnectionForm.tsx b/apps/studio/components/interfaces/Settings/Integrations/VercelIntegration/VercelIntegrationConnectionForm.tsx index 68c21d2ed21ff..63fb03aa3f31f 100644 --- a/apps/studio/components/interfaces/Settings/Integrations/VercelIntegration/VercelIntegrationConnectionForm.tsx +++ b/apps/studio/components/interfaces/Settings/Integrations/VercelIntegration/VercelIntegrationConnectionForm.tsx @@ -10,6 +10,8 @@ import type { IntegrationProjectConnection, } from 'data/integrations/integrations.types' import { useVercelConnectionUpdateMutation } from 'data/integrations/vercel-connection-update-mutate' +import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' +import Link from 'next/link' import { AlertDescription_Shadcn_, AlertTitle_Shadcn_, @@ -24,8 +26,6 @@ import { Input_Shadcn_, Switch, } from 'ui' -import { useSelectedOrganization } from 'hooks/misc/useSelectedOrganization' -import Link from 'next/link' const VercelIntegrationConnectionForm = ({ disabled, @@ -120,7 +120,7 @@ const VercelIntegrationConnectionForm = ({ ) : (
-
+
Sync environment variables for selected target environments
@@ -193,9 +193,7 @@ const VercelIntegrationConnectionForm = ({
)}
-
- Customize public environment variable prefix -
+
Customize public environment variable prefix
-

No data

+

No data

It may take up to 24 hours for data to refresh

diff --git a/apps/studio/components/interfaces/Support/SupportFormV2.tsx b/apps/studio/components/interfaces/Support/SupportFormV2.tsx index 7571151668ce2..9ee139f7cd92d 100644 --- a/apps/studio/components/interfaces/Support/SupportFormV2.tsx +++ b/apps/studio/components/interfaces/Support/SupportFormV2.tsx @@ -532,7 +532,7 @@ export const SupportFormV2 = ({ {docsResults.length > 0 && hasResults && ( <>
-
AI Suggested resources
+
AI Suggested resources
{searchState.status === 'loading' && (
diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/Column.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/Column.tsx index 2730d3e11acf6..4ab7e464521ba 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/Column.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/Column.tsx @@ -295,7 +295,7 @@ const Column = ({
-
Extra options
+
Extra options
diff --git a/apps/studio/components/layouts/ProjectLayout/BuildingState.tsx b/apps/studio/components/layouts/ProjectLayout/BuildingState.tsx index c8f9726cc15e6..76b8f85771c42 100644 --- a/apps/studio/components/layouts/ProjectLayout/BuildingState.tsx +++ b/apps/studio/components/layouts/ProjectLayout/BuildingState.tsx @@ -42,7 +42,7 @@ const BuildingState = () => {
-

{project?.name}

+

{project?.name}

diff --git a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/HelpPopover.tsx b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/HelpPopover.tsx index 0860e5ee1d275..8a658f4baf810 100644 --- a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/HelpPopover.tsx +++ b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/HelpPopover.tsx @@ -124,7 +124,7 @@ export const HelpPopover = () => {
-
Reach out to the community
+
Reach out to the community

For other support, including questions on our client libraries, advice, or best diff --git a/apps/studio/components/layouts/ProjectLayout/PausingState.tsx b/apps/studio/components/layouts/ProjectLayout/PausingState.tsx index 1c4c55c0720c9..aff41b06ba188 100644 --- a/apps/studio/components/layouts/ProjectLayout/PausingState.tsx +++ b/apps/studio/components/layouts/ProjectLayout/PausingState.tsx @@ -6,8 +6,8 @@ import { Project, invalidateProjectDetailsQuery } from 'data/projects/project-de import { useProjectStatusQuery } from 'data/projects/project-status-query' import { invalidateProjectsQuery } from 'data/projects/projects-query' import { PROJECT_STATUS } from 'lib/constants' +import { Circle, Loader } from 'lucide-react' import { useEffect, useState } from 'react' -import { Loader, Circle } from 'lucide-react' export interface PausingStateProps { project: Project diff --git a/apps/studio/components/layouts/Scaffold.tsx b/apps/studio/components/layouts/Scaffold.tsx index 457073a9cb5ce..f98d986389a1b 100644 --- a/apps/studio/components/layouts/Scaffold.tsx +++ b/apps/studio/components/layouts/Scaffold.tsx @@ -66,7 +66,7 @@ export const ScaffoldHeader = forwardRef>( ({ className, ...props }, ref) => { - return

+ return

} ) diff --git a/apps/studio/components/layouts/SignInLayout/ForgotPasswordLayout.tsx b/apps/studio/components/layouts/SignInLayout/ForgotPasswordLayout.tsx index 8723843fd13a8..59a008b68b4aa 100644 --- a/apps/studio/components/layouts/SignInLayout/ForgotPasswordLayout.tsx +++ b/apps/studio/components/layouts/SignInLayout/ForgotPasswordLayout.tsx @@ -47,7 +47,7 @@ const ForgotPasswordLayout = ({
{showHeadings && (
-

{heading}

+

{heading}

{subheading}

)} diff --git a/apps/studio/components/layouts/SignInLayout/SignInLayout.tsx b/apps/studio/components/layouts/SignInLayout/SignInLayout.tsx index f58f952f15d2e..6243f55675b4d 100644 --- a/apps/studio/components/layouts/SignInLayout/SignInLayout.tsx +++ b/apps/studio/components/layouts/SignInLayout/SignInLayout.tsx @@ -116,7 +116,7 @@ const SignInLayout = ({
-

{heading}

+

{heading}

{subheading}

diff --git a/apps/studio/components/ui/Forms/FormsContainer.tsx b/apps/studio/components/ui/Forms/FormsContainer.tsx deleted file mode 100644 index 8ba379ca248a3..0000000000000 --- a/apps/studio/components/ui/Forms/FormsContainer.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { cn } from 'ui' - -function FormsContainer(props: { children: React.ReactNode; header?: string; className?: string }) { - return ( -
- {props.header &&

{props.header}

} -
{props.children}
-
- ) -} - -export { FormsContainer } diff --git a/apps/studio/components/ui/InfoPill.tsx b/apps/studio/components/ui/InfoPill.tsx index d88beae7ebfd3..d1ff71ae968c8 100644 --- a/apps/studio/components/ui/InfoPill.tsx +++ b/apps/studio/components/ui/InfoPill.tsx @@ -39,7 +39,7 @@ export const InfoPill = ({ label, icon, title, description, links }: InfoPillPro })}
-

{title}

+

{title}

{description}

{links && links.length > 0 && (
diff --git a/apps/studio/components/ui/InformationBox.tsx b/apps/studio/components/ui/InformationBox.tsx index 702d832fecb16..c79f3d5231929 100644 --- a/apps/studio/components/ui/InformationBox.tsx +++ b/apps/studio/components/ui/InformationBox.tsx @@ -1,6 +1,6 @@ import { ExternalLink, Maximize2, Minimize2 } from 'lucide-react' import Link from 'next/link' -import { ReactNode, useState, forwardRef } from 'react' +import { forwardRef, ReactNode, useState } from 'react' import { Button } from 'ui' @@ -47,7 +47,7 @@ const InformationBox = forwardRef(
{icon && {icon}}
-
{title}
+
{title}
{description && !hideCollapse ? ( diff --git a/apps/studio/components/ui/Logs/LogsExplorerHeader.tsx b/apps/studio/components/ui/Logs/LogsExplorerHeader.tsx index ae32da4ba6257..6dc87be2204fa 100644 --- a/apps/studio/components/ui/Logs/LogsExplorerHeader.tsx +++ b/apps/studio/components/ui/Logs/LogsExplorerHeader.tsx @@ -27,15 +27,11 @@ const LogsExplorerHeader = ({ subtitle }: LogsExplorerHeaderProps) => {
-
+
-

Logs Explorer

+

Logs Explorer

{subtitle && {subtitle}}
diff --git a/apps/studio/pages/_app.tsx b/apps/studio/pages/_app.tsx index 671af91dc794e..b062e6840535c 100644 --- a/apps/studio/pages/_app.tsx +++ b/apps/studio/pages/_app.tsx @@ -13,6 +13,7 @@ import 'styles/reactflow.scss' import 'styles/storage.scss' import 'styles/stripe.scss' import 'styles/toast.scss' +import 'styles/typography.scss' import 'styles/ui.scss' import 'ui/build/css/themes/dark.css' import 'ui/build/css/themes/light.css' diff --git a/apps/studio/pages/cli/login.tsx b/apps/studio/pages/cli/login.tsx index a41d77b70bdbf..b31eb20c54f13 100644 --- a/apps/studio/pages/cli/login.tsx +++ b/apps/studio/pages/cli/login.tsx @@ -50,9 +50,7 @@ const CliLoginPage: NextPageWithLayout = () => {
{device_code ? ( <> -

- Your Supabase Account is being used to login on Supabase CLI. -

+

Your Supabase Account is being used to login on Supabase CLI.

Enter this verification code on Supabase CLI to authorize login.

diff --git a/apps/studio/pages/integrations/github/authorize.tsx b/apps/studio/pages/integrations/github/authorize.tsx index ff50e56a5c375..6e5ebe28246e1 100644 --- a/apps/studio/pages/integrations/github/authorize.tsx +++ b/apps/studio/pages/integrations/github/authorize.tsx @@ -22,7 +22,7 @@ const GitHubIntegrationAuthorize = () => { return (
-

Completing GitHub Authorization...

+

Completing GitHub Authorization...

{isSuccess &&

You can now close this window.

} {isLoading &&

Authorizing...

} diff --git a/apps/studio/pages/integrations/vercel/[slug]/deploy-button/new-project.tsx b/apps/studio/pages/integrations/vercel/[slug]/deploy-button/new-project.tsx index f656892e94e70..01b7f9e074ead 100644 --- a/apps/studio/pages/integrations/vercel/[slug]/deploy-button/new-project.tsx +++ b/apps/studio/pages/integrations/vercel/[slug]/deploy-button/new-project.tsx @@ -31,7 +31,7 @@ const VercelIntegration: NextPageWithLayout = () => {
-

New project

+

New project

{
-

Create your first Project Connection

+

Create your first Project Connection

{ <> -

Choose organization

+

Choose organization

<> { const organization = useSelectedOrganization() diff --git a/apps/studio/pages/project/[ref]/reports/database.tsx b/apps/studio/pages/project/[ref]/reports/database.tsx index 7193534022eef..2352e82a66df0 100644 --- a/apps/studio/pages/project/[ref]/reports/database.tsx +++ b/apps/studio/pages/project/[ref]/reports/database.tsx @@ -321,11 +321,11 @@ const DatabaseUsage = () => {
-
Space used
+
Space used
{formatBytes(databaseSizeBytes, 2, 'GB')}
-
Provisioned disk size
+
Provisioned disk size
{currentDiskSize} GB
diff --git a/apps/studio/pages/project/_/[[...routeSlug]].tsx b/apps/studio/pages/project/_/[[...routeSlug]].tsx index e65fbb6469bb4..d48253f497142 100644 --- a/apps/studio/pages/project/_/[[...routeSlug]].tsx +++ b/apps/studio/pages/project/_/[[...routeSlug]].tsx @@ -85,7 +85,7 @@ const GenericProjectPage: NextPage = () => { <>
-

Select a project to continue

+

Select a project to continue

{
-

Supabase support

+

Supabase support

diff --git a/apps/studio/styles/typography.scss b/apps/studio/styles/typography.scss new file mode 100644 index 0000000000000..8a050348bec5b --- /dev/null +++ b/apps/studio/styles/typography.scss @@ -0,0 +1,78 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + body { + @apply text-default; + } + h1 { + @apply heading-title; + } + h2 { + @apply heading-section; + } + h3 { + @apply heading-subSection; + } + h4 { + @apply heading-default; + } + h5 { + @apply heading-default; + } + h6 { + @apply heading-compact; + } + small { + @apply text-compact; + } + strong { + @apply font-medium; + } +} + +@layer utilities { + /* Heading */ + .heading-title { + @apply scroll-m-20 text-2xl tracking-tight text-foreground; + } + + .heading-section { + @apply scroll-m-20 text-xl text-foreground; + } + + .heading-subSection { + @apply scroll-m-20 text-base text-foreground; + } + + .heading-default { + @apply scroll-m-20 text-sm font-medium text-foreground; + } + + .heading-compact { + @apply scroll-m-20 text-xs font-medium text-foreground; + } + + .heading-meta { + @apply text-xs font-mono uppercase tracking-wider font-medium text-foreground; + } + + /* Text */ + .text-default { + @apply text-base text-foreground-light; + } + + .text-subTitle { + @apply text-lg; + } + + .text-compact { + @apply text-xs; + } + + /* Link */ + .text-link { + @apply text-foreground-light underline underline-offset-4 decoration-border hover:decoration-foreground transition-colors hover:text-foreground; + } +}