From e25c0e83dff62713147fa5fe7118d53bf69bb5ad Mon Sep 17 00:00:00 2001
From: Anthony Lio
Date: Fri, 4 Sep 2026 07:57:32 +0300
Subject: [PATCH 1/7] fix(docs): table bottom border color missing (#49955)
## What kind of change does this PR introduce?
bug fix on table ui in docs
## What is the current behavior?
currently a recent change in
[#47288](https://github.com/supabase/supabase/pull/47288/changes#diff-57e15cf799459c10344c86d8ec797a16f0d3e824386e85552cb653594f7e616aR118)
made table bottom border color dimmed down vs others.
## What is the new behavior?
- fixes bottom border by targeting only border within the table (if that
was the initial intent?)
| state | preview |
| -------|------|
| before | |
| after | |
## Summary by CodeRabbit
* **Style**
* Refined table styling so bottom borders appear only between body rows,
removing the border from the final row.
---
packages/config/typography.config.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/config/typography.config.js b/packages/config/typography.config.js
index 8607488bbfdbc..fb506975f0cab 100644
--- a/packages/config/typography.config.js
+++ b/packages/config/typography.config.js
@@ -114,7 +114,7 @@ module.exports = {
border: '1px solid var(--border-default)',
borderRadius: 'var(--radius-lg)',
},
- td: {
+ 'tbody tr:not(:last-child) td': {
borderBottom: '1px solid var(--background-surface-200)',
},
code: {
From 887279ec2a6d7863ef8a6e2cad73c19e54f11877 Mon Sep 17 00:00:00 2001
From: Danny White <3104761+dnywh@users.noreply.github.com>
Date: Fri, 4 Sep 2026 16:52:28 +1000
Subject: [PATCH 2/7] fix(studio): align remaining platform auth labels
(#49879)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## What kind of change does this PR introduce?
Copy fix in Studio platform UI.
## What is the current behavior?
Studio still uses mixed auth wording outside nav dropdowns: in-app API
docs use "Log in", account email change uses "Log out of",
forgot-password uses title-case "Sign In", and org invites use "Create
an account".
## What is the new behavior?
Aligns remaining Studio surfaces with **Sign in / Sign out / Sign up**.
Related to [#49874](https://github.com/supabase/supabase/pull/49874) and
[#49877](https://github.com/supabase/supabase/pull/49877).
CLI copy in `GeneratingTypes.tsx` is unchanged (`supabase login`).
## To test
- Account → change email (GitHub identity): instructions say **Sign out
of**
- `/forgot-password`: footer link says **Sign in**
- Org invite (signed out): secondary button says **Sign up**
- Project → API docs → User Management: section titles use **Sign in** /
**Sign out**
## Summary by CodeRabbit
* **Documentation**
* Updated authentication terminology across user management guidance and
GitHub email-change instructions for consistency.
* **Improvements**
* Changed the organization invitation link label to “Sign up.”
* Standardized the forgot-password page link capitalization to “Sign
in.”
* **Tests**
* Updated invitation view coverage to reflect the revised “Sign up”
label.
---
.../Preferences/ChangeEmailAddress.tsx | 8 ++---
.../interfaces/Docs/Pages/UserManagement.tsx | 34 +++++++++----------
.../OrganizationInvite.test.tsx | 2 +-
.../OrganizationInvite/OrganizationInvite.tsx | 2 +-
apps/studio/pages/forgot-password.tsx | 2 +-
5 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/apps/studio/components/interfaces/Account/Preferences/ChangeEmailAddress.tsx b/apps/studio/components/interfaces/Account/Preferences/ChangeEmailAddress.tsx
index 6a9fe4cfd1a21..fed4b6bdcd983 100644
--- a/apps/studio/components/interfaces/Account/Preferences/ChangeEmailAddress.tsx
+++ b/apps/studio/components/interfaces/Account/Preferences/ChangeEmailAddress.tsx
@@ -17,7 +17,7 @@ export const GitHubChangeEmailAddress = () => {
Email addresses for GitHub identities should be updated through GitHub
Log back into GitHub (with the new, desired email set as primary)
-
Log back into Supabase
+
Sign out of GitHub
+
Sign back into GitHub (with the new, desired email set as primary)
+
Sign back into Supabase
)
diff --git a/apps/studio/components/interfaces/Docs/Pages/UserManagement.tsx b/apps/studio/components/interfaces/Docs/Pages/UserManagement.tsx
index 7963ee78f4110..850b6348707b8 100644
--- a/apps/studio/components/interfaces/Docs/Pages/UserManagement.tsx
+++ b/apps/studio/components/interfaces/Docs/Pages/UserManagement.tsx
@@ -42,8 +42,8 @@ export const UserManagement = ({ selectedLang, showApiKey }: UserManagementProps
the user using a user_id field.
- Supabase already has built in the routes to sign up, login, and log out for managing
- users in your apps and websites.
+ Supabase already has built in the routes to sign up, sign in, and sign out for
+ managing users in your apps and websites.
If an account is created, users can login to your app.
+
If an account is created, users can sign in to your app.
- After they have logged in, all interactions using the Supabase JS client will be
+ After they have signed in, all interactions using the Supabase JS client will be
performed as "that user".
- Users can log in with Third Party OAuth like Google, Facebook, GitHub, and more. You
- must first enable each of these in the Auth Providers settings{' '}
+ Users can sign in with third-party OAuth like Google, Facebook, GitHub, and more.
+ You must first enable each of these in the Auth Providers settings{' '}
here
@@ -198,7 +198,7 @@ export const UserManagement = ({ selectedLang, showApiKey }: UserManagementProps
- After they have logged in, all interactions using the Supabase JS client will be
+ After they have signed in, all interactions using the Supabase JS client will be
performed as "that user".
@@ -229,7 +229,7 @@ export const UserManagement = ({ selectedLang, showApiKey }: UserManagementProps
Get the JSON object for the logged in user.
}
+ content={
Get the JSON object for the signed-in user.
}
snippets={
- Sends the user a log in link via email. Once logged in you should direct the user to a
+ Sends the user a sign-in link via email. Once signed in you should direct the user to a
new password form. And use "Update User" below to save the new password.
}
@@ -271,10 +271,10 @@ export const UserManagement = ({ selectedLang, showApiKey }: UserManagementProps
/>
- After calling log out, all interactions using the Supabase JS client will be
+ After calling sign out, all interactions using the Supabase JS client will be
"anonymous".
}
@@ -290,7 +290,7 @@ export const UserManagement = ({ selectedLang, showApiKey }: UserManagementProps
title="Send a User an Invite over Email"
content={
<>
-
Send a user a passwordless link which they can use to sign up and log in.
+
Send a user a passwordless link which they can use to sign up and sign in.
After they have clicked the link, all interactions using the Supabase JS client will
be performed as "that user".
diff --git a/apps/studio/components/interfaces/OrganizationInvite/OrganizationInvite.test.tsx b/apps/studio/components/interfaces/OrganizationInvite/OrganizationInvite.test.tsx
index f6f4201b7ccb7..a76d7420e1f22 100644
--- a/apps/studio/components/interfaces/OrganizationInvite/OrganizationInvite.test.tsx
+++ b/apps/studio/components/interfaces/OrganizationInvite/OrganizationInvite.test.tsx
@@ -140,7 +140,7 @@ describe('OrganizationInvite', () => {
'href',
'/sign-in?returnTo=%2Fjoin%3Ftoken%3Dinvite-token%26slug%3Dacme-corp'
)
- expect(screen.getByRole('link', { name: 'Create an account' })).toHaveAttribute(
+ expect(screen.getByRole('link', { name: 'Sign up' })).toHaveAttribute(
'href',
'/sign-up?returnTo=%2Fjoin%3Ftoken%3Dinvite-token%26slug%3Dacme-corp'
)
diff --git a/apps/studio/components/interfaces/OrganizationInvite/OrganizationInvite.tsx b/apps/studio/components/interfaces/OrganizationInvite/OrganizationInvite.tsx
index a5a92456a5582..e6913c0582077 100644
--- a/apps/studio/components/interfaces/OrganizationInvite/OrganizationInvite.tsx
+++ b/apps/studio/components/interfaces/OrganizationInvite/OrganizationInvite.tsx
@@ -117,7 +117,7 @@ export const OrganizationInvite = () => {
{isSignUpEnabled && (
)}
diff --git a/apps/studio/pages/forgot-password.tsx b/apps/studio/pages/forgot-password.tsx
index 69e4ad4728d86..118d79d4e0c2b 100644
--- a/apps/studio/pages/forgot-password.tsx
+++ b/apps/studio/pages/forgot-password.tsx
@@ -14,7 +14,7 @@ const ForgotPasswordPage: NextPageWithLayout = () => {
Already have an account?{' '}
- Sign In
+ Sign in
>
From c1df3711a6a57a7d497841e1734afc3adfaa92ef Mon Sep 17 00:00:00 2001
From: Danny White <3104761+dnywh@users.noreply.github.com>
Date: Fri, 4 Sep 2026 16:55:39 +1000
Subject: [PATCH 3/7] fix(ui-library): standardise auth labels in starter
blocks (#49880)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## What kind of change does this PR introduce?
Copy fix in ui-library and vue starter blocks.
## What is the current behavior?
Auth starter templates use **Login**, **Logout**, and **Logging in...**
in button labels and form copy.
## What is the new behavior?
User-facing labels use **Sign in**, **Sign out**, and **Signing in...**,
matching the platform standard
([#49874](https://github.com/supabase/supabase/pull/49874),
[#49877](https://github.com/supabase/supabase/pull/49877)).
File names, component names, and routes (`/login`, `/logout`) are
unchanged.
## To test
Open ui-library auth block previews and confirm sign-in and sign-out
button labels.
## Summary by CodeRabbit
- **Style**
- Updated authentication interface wording from “Login” to “Sign in” and
“Logout” to “Sign out” across password-based and social authentication
flows.
- Updated loading-state text from “Logging in...” to “Signing in...” for
sign-in buttons.
- Refreshed related descriptions, form titles, and account links while
preserving destinations, styling, and authentication behavior.
- Applied consistent wording across supported authentication pages and
frameworks.
---------
Co-authored-by: Ivan Vasilov
---
apps/ui-library/public/r/password-based-auth-nextjs.json | 8 ++++----
apps/ui-library/public/r/password-based-auth-nuxtjs.json | 8 ++++----
.../public/r/password-based-auth-react-router.json | 8 ++++----
apps/ui-library/public/r/password-based-auth-react.json | 6 +++---
.../ui-library/public/r/password-based-auth-tanstack.json | 6 +++---
apps/ui-library/public/r/password-based-auth-vue.json | 6 +++---
apps/ui-library/public/r/social-auth-nextjs.json | 4 ++--
apps/ui-library/public/r/social-auth-nuxtjs.json | 4 ++--
apps/ui-library/public/r/social-auth-react-router.json | 4 ++--
apps/ui-library/public/r/social-auth-react.json | 2 +-
apps/ui-library/public/r/social-auth-tanstack.json | 2 +-
apps/ui-library/public/r/social-auth-vue.json | 2 +-
.../components/forgot-password-form.tsx | 2 +-
.../password-based-auth-nextjs/components/login-form.tsx | 6 +++---
.../components/logout-button.tsx | 2 +-
.../components/sign-up-form.tsx | 2 +-
.../app/routes/forgot-password.tsx | 2 +-
.../password-based-auth-react-router/app/routes/login.tsx | 6 +++---
.../app/routes/protected.tsx | 2 +-
.../app/routes/sign-up.tsx | 2 +-
.../components/forgot-password-form.tsx | 2 +-
.../password-based-auth-react/components/login-form.tsx | 6 +++---
.../password-based-auth-react/components/sign-up-form.tsx | 2 +-
.../components/forgot-password-form.tsx | 2 +-
.../components/login-form.tsx | 6 +++---
.../components/sign-up-form.tsx | 2 +-
.../blocks/social-auth-nextjs/components/login-form.tsx | 2 +-
.../social-auth-nextjs/components/logout-button.tsx | 2 +-
.../blocks/social-auth-react-router/app/routes/login.tsx | 2 +-
.../social-auth-react-router/app/routes/protected.tsx | 2 +-
.../blocks/social-auth-react/components/login-form.tsx | 2 +-
.../blocks/social-auth-tanstack/components/login-form.tsx | 2 +-
.../nuxtjs/app/components/forgot-password-form.vue | 2 +-
.../nuxtjs/app/components/login-form.vue | 2 +-
.../nuxtjs/app/components/sign-up-form.vue | 2 +-
.../nuxtjs/app/pages/protected/index.vue | 2 +-
.../vue/components/forgot-password-form.vue | 2 +-
.../password-based-auth/vue/components/login-form.vue | 2 +-
.../password-based-auth/vue/components/sign-up-form.vue | 2 +-
.../social-auth/nuxtjs/app/components/login-form.vue | 2 +-
.../social-auth/nuxtjs/app/components/logout-button.vue | 2 +-
.../default/social-auth/vue/components/login-form.vue | 2 +-
42 files changed, 68 insertions(+), 68 deletions(-)
diff --git a/apps/ui-library/public/r/password-based-auth-nextjs.json b/apps/ui-library/public/r/password-based-auth-nextjs.json
index e4cfaeb897f77..8f66491d9a192 100644
--- a/apps/ui-library/public/r/password-based-auth-nextjs.json
+++ b/apps/ui-library/public/r/password-based-auth-nextjs.json
@@ -42,7 +42,7 @@
},
{
"path": "registry/default/blocks/password-based-auth-nextjs/components/login-form.tsx",
- "content": "'use client'\n\nimport { useRouter } from 'next/navigation'\nimport { useState } from 'react'\n\nimport { cn } from '@/lib/utils'\nimport { safeNextPath } from '@/registry/default/blocks/safe-next-path/lib/safe-next-path'\nimport { createClient } from '@/registry/default/clients/nextjs/lib/supabase/client'\nimport { Button } from '@/registry/default/components/ui/button'\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@/registry/default/components/ui/card'\nimport { Input } from '@/registry/default/components/ui/input'\nimport { Label } from '@/registry/default/components/ui/label'\nimport Link from 'next/link'\n\nexport function LoginForm({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) {\n const [email, setEmail] = useState('')\n const [password, setPassword] = useState('')\n const [error, setError] = useState(null)\n const [isLoading, setIsLoading] = useState(false)\n const router = useRouter()\n\n const handleLogin = async (e: React.FormEvent) => {\n e.preventDefault()\n const supabase = createClient()\n setIsLoading(true)\n setError(null)\n\n try {\n const { error } = await supabase.auth.signInWithPassword({\n email,\n password,\n })\n if (error) throw error\n // Update this route to redirect to an authenticated route. The user already has an active session.\n const next = new URLSearchParams(window.location.search).get('next')\n router.push(safeNextPath(next, '/protected'))\n } catch (error: unknown) {\n setError(error instanceof Error ? error.message : 'An error occurred')\n } finally {\n setIsLoading(false)\n }\n }\n\n return (\n
\n \n \n Login\n Enter your email below to login to your account\n \n \n \n \n \n
\n )\n}\n",
+ "content": "'use client'\n\nimport { useRouter } from 'next/navigation'\nimport { useState } from 'react'\n\nimport { cn } from '@/lib/utils'\nimport { safeNextPath } from '@/registry/default/blocks/safe-next-path/lib/safe-next-path'\nimport { createClient } from '@/registry/default/clients/nextjs/lib/supabase/client'\nimport { Button } from '@/registry/default/components/ui/button'\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@/registry/default/components/ui/card'\nimport { Input } from '@/registry/default/components/ui/input'\nimport { Label } from '@/registry/default/components/ui/label'\nimport Link from 'next/link'\n\nexport function LoginForm({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) {\n const [email, setEmail] = useState('')\n const [password, setPassword] = useState('')\n const [error, setError] = useState(null)\n const [isLoading, setIsLoading] = useState(false)\n const router = useRouter()\n\n const handleLogin = async (e: React.FormEvent) => {\n e.preventDefault()\n const supabase = createClient()\n setIsLoading(true)\n setError(null)\n\n try {\n const { error } = await supabase.auth.signInWithPassword({\n email,\n password,\n })\n if (error) throw error\n // Update this route to redirect to an authenticated route. The user already has an active session.\n const next = new URLSearchParams(window.location.search).get('next')\n router.push(safeNextPath(next, '/protected'))\n } catch (error: unknown) {\n setError(error instanceof Error ? error.message : 'An error occurred')\n } finally {\n setIsLoading(false)\n }\n }\n\n return (\n
\n \n \n Sign in\n Enter your email below to sign in to your account\n \n \n \n \n \n
diff --git a/apps/ui-library/registry/default/blocks/password-based-auth-react-router/app/routes/forgot-password.tsx b/apps/ui-library/registry/default/blocks/password-based-auth-react-router/app/routes/forgot-password.tsx
index 783dbeda707e5..64fd339b7f7e5 100644
--- a/apps/ui-library/registry/default/blocks/password-based-auth-react-router/app/routes/forgot-password.tsx
+++ b/apps/ui-library/registry/default/blocks/password-based-auth-react-router/app/routes/forgot-password.tsx
@@ -98,7 +98,7 @@ export default function ForgotPassword() {
Already have an account?{' '}
- Login
+ Sign in
diff --git a/apps/ui-library/registry/default/blocks/password-based-auth-react-router/app/routes/login.tsx b/apps/ui-library/registry/default/blocks/password-based-auth-react-router/app/routes/login.tsx
index 15d9defc3429f..732171942d14d 100644
--- a/apps/ui-library/registry/default/blocks/password-based-auth-react-router/app/routes/login.tsx
+++ b/apps/ui-library/registry/default/blocks/password-based-auth-react-router/app/routes/login.tsx
@@ -50,8 +50,8 @@ export default function Login() {
- Login
- Enter your email below to login to your account
+ Sign in
+ Enter your email below to sign in to your account
@@ -81,7 +81,7 @@ export default function Login() {
From 085d218bffd86c8329879fd73bfc6b77e90d2af5 Mon Sep 17 00:00:00 2001
From: Anthony Lio
Date: Fri, 4 Sep 2026 10:32:57 +0300
Subject: [PATCH 4/7] fix(docs): button a11y enhancements (#49952)
## What kind of change does this PR introduce?
bug fix for accessibility, fixes
[docs-1265](https://linear.app/supabase/issue/DOCS-1365/add-aria-label-to-icon-only-buttons-button-name)
## What is the current behavior?
some controles in the docs app have no accessible name, so screen
readers announce them as an unlabelled "button"
## What is the new behavior?
- adds each control a name the way its neighbours already do
- adds menu toggle a state-dependent `aria-label` and `aria-expanded`
- adds `button-name` to `enforced_rules`
## Summary by CodeRabbit
- **Accessibility**
- Added descriptive labels to configuration selectors and mobile menu
controls.
- Mobile menu controls now announce whether the menu is open or closed.
- Expanded accessibility validation to check button names across
documentation pages.
- **UI Improvements**
- Updated the raw throughput table control with a clearer button
appearance and expandable chevron indicator.
- Replaced a schema-migration tooltip with a direct in-page link.
- **Documentation**
- Removed the Info Tooltip component guidance from the contributing
documentation.
---
apps/docs/app/contributing/content.mdx | 8 --
.../ProjectConfigVariables.ComboBox.tsx | 1 +
.../RealtimeLimitsEstimator.tsx | 29 ++--
.../declarative-database-schemas.mdx | 2 +-
apps/docs/features/docs/MdxBase.shared.tsx | 2 -
apps/docs/features/ui/InfoTooltip.tsx | 127 ------------------
apps/docs/layouts/MainSkeleton.tsx | 2 +
e2e/docs/utils/axe-helpers.ts | 4 +-
8 files changed, 18 insertions(+), 157 deletions(-)
delete mode 100644 apps/docs/features/ui/InfoTooltip.tsx
diff --git a/apps/docs/app/contributing/content.mdx b/apps/docs/app/contributing/content.mdx
index a310714f4a360..9dc50751a977f 100644
--- a/apps/docs/app/contributing/content.mdx
+++ b/apps/docs/app/contributing/content.mdx
@@ -472,14 +472,6 @@ void main() async {
-### Info Tooltip
-
-The InfoTooltip component is used to add more context to a word or phrase via tooltip.
-
-```mdx
-Supabase
-```
-
## Partials
We incorporate content reuse in the docs to avoid duplication. If you find yourself writing the same content over and over, you can put it in a partial instead. Here are some examples of commonly used partials:
diff --git a/apps/docs/components/ProjectConfigVariables/ProjectConfigVariables.ComboBox.tsx b/apps/docs/components/ProjectConfigVariables/ProjectConfigVariables.ComboBox.tsx
index 6b88f8ae343f8..a88c010ebd394 100644
--- a/apps/docs/components/ProjectConfigVariables/ProjectConfigVariables.ComboBox.tsx
+++ b/apps/docs/components/ProjectConfigVariables/ProjectConfigVariables.ComboBox.tsx
@@ -86,6 +86,7 @@ export function ComboBox({
role="combobox"
disabled={disabled}
aria-expanded={open}
+ aria-label={`Select your ${name}`}
className={cn(
'overflow-hidden',
'h-auto min-h-10',
diff --git a/apps/docs/components/RealtimeLimitsEstimator/RealtimeLimitsEstimator.tsx b/apps/docs/components/RealtimeLimitsEstimator/RealtimeLimitsEstimator.tsx
index 660566d03f5aa..a1e5e965e526d 100644
--- a/apps/docs/components/RealtimeLimitsEstimator/RealtimeLimitsEstimator.tsx
+++ b/apps/docs/components/RealtimeLimitsEstimator/RealtimeLimitsEstimator.tsx
@@ -2,7 +2,7 @@ import throughputTable from '~/data/realtime/throughput.json'
import { ChevronDown } from 'lucide-react'
import { useState } from 'react'
import {
- Button,
+ cn,
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
@@ -138,22 +138,17 @@ export default function RealtimeLimitsEstimater({}) {
)}
-
-
diff --git a/apps/docs/content/guides/local-development/declarative-database-schemas.mdx b/apps/docs/content/guides/local-development/declarative-database-schemas.mdx
index 1611efb5a2432..fe8e6a4a866ea 100644
--- a/apps/docs/content/guides/local-development/declarative-database-schemas.mdx
+++ b/apps/docs/content/guides/local-development/declarative-database-schemas.mdx
@@ -7,7 +7,7 @@ subtitle: 'Manage your database schemas in one place and generate versioned migr
## Overview
-Declarative schemas provide a developer-friendly way to maintain
Files of SQL statements that track the evolution of your database schema over time. They allow you to version control your database schema alongside your application code.
See the database migrations guide to learn more.
>}>schema migrations.
+Declarative schemas provide a developer-friendly way to maintain [schema migrations](#schema-migrations).
[Migrations](/docs/guides/deployment/database-migrations) are traditionally managed imperatively (you provide the instructions on how exactly to change the database). This can lead to related information being scattered over multiple migration files. With declarative schemas, you instead declare the state you want your database to be in, and the instructions are generated for you.
diff --git a/apps/docs/features/docs/MdxBase.shared.tsx b/apps/docs/features/docs/MdxBase.shared.tsx
index 355c3f129ab3b..5e18f0134f842 100644
--- a/apps/docs/features/docs/MdxBase.shared.tsx
+++ b/apps/docs/features/docs/MdxBase.shared.tsx
@@ -27,7 +27,6 @@ import { NamedCodeBlock } from '~/features/directives/CodeTabs.components'
import { MdxAnchor } from '~/features/docs/MdxAnchor'
import { Accordion, AccordionItem } from '~/features/ui/Accordion'
import { CodeBlock } from '~/features/ui/CodeBlock/CodeBlock'
-import InfoTooltip from '~/features/ui/InfoTooltip'
import { ShowUntil } from '~/features/ui/ShowUntil'
import { TabPanel, Tabs } from '~/features/ui/Tabs'
import { ArrowDown, Check, X } from 'lucide-react'
@@ -114,7 +113,6 @@ const components = {
TabPanel,
TerraformProviderSchema,
WrapperDashboardIntegration,
- InfoTooltip,
a: MdxAnchor,
h2: (props: ComponentPropsWithoutRef<'h2'>) => (
diff --git a/apps/docs/features/ui/InfoTooltip.tsx b/apps/docs/features/ui/InfoTooltip.tsx
deleted file mode 100644
index 84cd2767d05fe..0000000000000
--- a/apps/docs/features/ui/InfoTooltip.tsx
+++ /dev/null
@@ -1,127 +0,0 @@
-'use client'
-
-import { useBreakpoint } from 'common'
-import { InfoIcon, XIcon } from 'lucide-react'
-import React, {
- useCallback,
- useEffect,
- useId,
- useRef,
- useState,
- type PropsWithChildren,
-} from 'react'
-import { ErrorBoundary } from 'react-error-boundary'
-import {
- Button,
- cn,
- CommandEmpty,
- Sheet,
- SheetContent,
- SheetHeader,
- Tooltip,
- TooltipContent,
- TooltipTrigger,
-} from 'ui'
-
-interface PopUpProps extends PropsWithChildren {
- tooltipContent: React.ReactNode
- className?: string
- contentContainerClassName?: string
-}
-
-const buttonClassName = cn(
- 'relative px-1 py-0 -my-px',
- 'rounded-sm bg-surface-200 border border-dashed',
- 'transition-colors hover:border-strong group/inline-popup'
-)
-
-const InfoTooltip = ({
- children,
- className,
- tooltipContent,
- contentContainerClassName,
-}: PopUpProps) => {
- const id = useId().replaceAll(':', '')
- const timeout = useRef | null>(null)
-
- const [mobileSheetOpen, setMobileSheetOpen] = useState(false)
- const [tooltipOpen, _setTooltipOpen] = useState(false)
- const isMobile = useBreakpoint('md')
-
- const setTooltipOpen = useCallback(
- (open: boolean) => {
- _setTooltipOpen(open)
- setMobileSheetOpen(true)
-
- timeout.current = setTimeout(() => {
- if (isMobile) return
- const targetElem: HTMLElement | null = document.querySelector(`#tooltip-content-${id}`)
- targetElem?.focus()
- })
- },
- [_setTooltipOpen, id, isMobile]
- )
-
- useEffect(() => {
- return () => {
- if (timeout.current) {
- clearTimeout(timeout.current)
- }
- }
- }, [])
-
- return (
- <>
- !isMobile && setTooltipOpen(open)}>
-
- setMobileSheetOpen(true)}
- className={cn(buttonClassName, className)}
- >
- {children}
-
-
-
-
- {tooltipContent}
-
-
- {isMobile && (
-
-
- }>
-
-