From 6263fb0f219ba0d5aa724fd7cde4847116901060 Mon Sep 17 00:00:00 2001 From: Chris Opland Date: Tue, 28 Jul 2026 11:26:34 -0500 Subject: [PATCH 01/10] chore(docs): add Chris Opland to humans.txt (#48399) ## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? Add "Chris Opland" to humans.txt ## What is the current behavior? My name is not in the humans.txt ## What is the new behavior? My name IS in humans.txt ## Additional context Add any other context or screenshots. ## Summary by CodeRabbit * **Documentation** * Added Chris Opland to the project contributors list. --- apps/docs/public/humans.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/docs/public/humans.txt b/apps/docs/public/humans.txt index 47fd7062104b8..a4c88f0d8c8cc 100644 --- a/apps/docs/public/humans.txt +++ b/apps/docs/public/humans.txt @@ -59,6 +59,7 @@ Chris Chapman (Chappie) Chris Copplestone Chris Gwilliams Chris Martin +Chris Opland Chris Stockton Chris Ward Christian Funkhouser From fa5eb172778f52ce3d1c8745eb850dd0688b6907 Mon Sep 17 00:00:00 2001 From: Charis <26616127+charislam@users.noreply.github.com> Date: Tue, 28 Jul 2026 12:28:36 -0400 Subject: [PATCH 02/10] feat(studio): discriminated snippet union + source-aware writes (#48313) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stacked on #48305. ## What PR 3 of the stacked SQL-editor query-source series (Database vs Logs). Stacked on the PR 2 branch `charislam/log-sql-content-shape`. Turns `SnippetWithContent` into a discriminated union on `type` and makes all snippet writes source-aware: - `data/content/sql-folders-query.ts`: `SnippetWithContent` is now `{ type: 'sql'; content?: SqlSnippets.Content } | { type: 'log_sql'; content?: LogSqlSnippets.Content } | { type: 'report'; content?: never }`. `report` is kept (the content endpoints' wire type carries it) but has no SQL content — its body is `Dashboards.Content`, loaded through the separate `Content` union. - `setSql` brands per type (`untrustedLogSql` vs `untrustedSql`). - `buildUpsertPayload` persists `snippet.type` (no longer hardcoded `'sql'`). - `createSqlSnippetSkeletonV2({ source })` emits the matching type + content shape with the `as any` cast removed. - New `components/interfaces/SQLEditor/querySource.ts`: `SqlSnippetSource` + `getSnippetSource`. - `seedSnippet` test helper gains a `source` arg. - New `remapWireSnippet` boundary helper in `content-remap.ts` concentrates the single wire->domain assertion, so `content-id-query` / `content-upsert-mutation` call sites are cast-free (no `as unknown as`). - Collateral: query result types aligned to the union; `updateSnippet` no longer accepts `type` (source is immutable); db-only editor read paths narrow away `log_sql`. ## Why Impossible-states-impossible typing: a snippet's brand follows its content type, so logs SQL and database SQL can never cross execution paths. No behavior change for existing database snippets. ## Testing - \`pnpm typecheck\` — clean - \`pnpm --filter studio run lint:ratchet\` — no new warnings - \`pnpm test:studio\` (data/content, SQLEditor, state/sql-editor) — passing, including new tests for \`getSnippetSource\`, source-aware \`setSql\`, type-aware \`buildUpsertPayload\`, and both skeleton shapes. ## Summary by CodeRabbit * **New Features** * Added source-aware creation for SQL editor snippets, including log-based SQL snippets. * Introduced backend source mapping so log snippets are treated as log_sql. * **Bug Fixes** * Improved SQL retrieval/prettification so log snippets no longer use the wrong fallback content. * Ensured log snippets are sanitized and preserve correct type, content, identifiers, and statuses during save/upsert flows. * **Tests** * Expanded unit and integration coverage for log snippet creation, source mapping, editing, prettification, and upsert payloads. --- .../SQLEditor/SQLEditor.utils.test.ts | 30 ++++++++++ .../interfaces/SQLEditor/SQLEditor.utils.ts | 36 ++++++++++-- .../SQLEditor/SQLEditorControllers.tsx | 5 +- .../interfaces/SQLEditor/querySource.test.ts | 17 ++++++ .../interfaces/SQLEditor/querySource.ts | 20 +++++++ .../interfaces/SQLEditor/usePrettifyQuery.ts | 4 +- apps/studio/data/content/content-id-query.ts | 5 +- apps/studio/data/content/content-remap.ts | 13 +++++ .../data/content/content-upsert-mutation.ts | 8 +-- apps/studio/data/content/sql-folders-query.ts | 30 ++++++++-- .../studio/data/content/sql-snippets-query.ts | 8 +-- .../state/sql-editor/sql-editor-rules.test.ts | 40 ++++++++++++- .../state/sql-editor/sql-editor-rules.ts | 2 +- .../sql-editor-save-scheduler.test.ts | 7 ++- .../state/sql-editor/sql-editor-save.test.ts | 7 ++- .../state/sql-editor/sql-editor-state.test.ts | 56 ++++++++++++++++++- .../state/sql-editor/sql-editor-state.ts | 9 ++- .../tests/lib/sql-editor-test-utils.tsx | 4 ++ 18 files changed, 268 insertions(+), 33 deletions(-) create mode 100644 apps/studio/components/interfaces/SQLEditor/querySource.test.ts create mode 100644 apps/studio/components/interfaces/SQLEditor/querySource.ts diff --git a/apps/studio/components/interfaces/SQLEditor/SQLEditor.utils.test.ts b/apps/studio/components/interfaces/SQLEditor/SQLEditor.utils.test.ts index 9c6865b0c790c..982ef10bb1606 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLEditor.utils.test.ts +++ b/apps/studio/components/interfaces/SQLEditor/SQLEditor.utils.test.ts @@ -16,6 +16,7 @@ import { checkAlterDatabaseConnection, checkDestructiveQuery, computeErrorHighlightLine, + createSqlSnippetSkeletonV2, deriveSnippetIdentity, extractDebugContext, filterTablesCoveredByEnsureRLSTrigger, @@ -433,6 +434,35 @@ describe('SQLEditor.utils.ts:buildCompletionRequestBody', () => { }) }) +describe('SQLEditor.utils.ts:createSqlSnippetSkeletonV2', () => { + const baseArgs = { name: 'Untitled', sql: 'select 1', owner_id: 1, project_id: 1 } + + test('defaults to a database (sql) snippet', () => { + const snippet = createSqlSnippetSkeletonV2(baseArgs) + expect(snippet.type).toBe('sql') + expect(snippet.content?.unchecked_sql).toBe('select 1') + expect(snippet.status).toBe('new') + }) + + test('builds a database snippet when source is explicitly "database"', () => { + const snippet = createSqlSnippetSkeletonV2({ ...baseArgs, source: 'database' }) + expect(snippet.type).toBe('sql') + }) + + test('builds a logs (log_sql) snippet when source is "logs"', () => { + const snippet = createSqlSnippetSkeletonV2({ ...baseArgs, source: 'logs' }) + expect(snippet.type).toBe('log_sql') + expect(snippet.content?.unchecked_sql).toBe('select 1') + }) + + test('sets content_id to the snippet id for both sources', () => { + const db = createSqlSnippetSkeletonV2({ ...baseArgs, idOverride: 'db-id' }) + const logs = createSqlSnippetSkeletonV2({ ...baseArgs, idOverride: 'logs-id', source: 'logs' }) + expect(db.content?.content_id).toBe('db-id') + expect(logs.content?.content_id).toBe('logs-id') + }) +}) + describe('SQLEditor.utils.ts:planDiffRequestApplication', () => { test('replaces the editor content when it is empty', () => { const plan = planDiffRequestApplication({ diff --git a/apps/studio/components/interfaces/SQLEditor/SQLEditor.utils.ts b/apps/studio/components/interfaces/SQLEditor/SQLEditor.utils.ts index 2c47067791b0e..de83b8a48e585 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLEditor.utils.ts +++ b/apps/studio/components/interfaces/SQLEditor/SQLEditor.utils.ts @@ -7,6 +7,7 @@ import { } from '@supabase/pg-meta' import { TABLE_EVENT_ACTIONS } from 'common/telemetry-constants' +import type { SqlSnippetSource } from './querySource' import { alterDatabasePreventConnectionStatements, destructiveSqlRegex, @@ -23,6 +24,7 @@ import { } from './SQLEditor.types' import type { SnippetWithContent } from '@/data/content/sql-folders-query' import type { DatabaseEventTrigger } from '@/data/database-event-triggers/database-event-triggers-query' +import { untrustedLogSql, type UntrustedLogSqlFragment } from '@/data/logs/safe-analytics-sql' import type { Database } from '@/data/read-replicas/replicas-query' import { generateUuid } from '@/lib/api/snippets.browser' import { removeCommentsFromSql } from '@/lib/helpers' @@ -72,6 +74,7 @@ export const createSqlSnippetSkeletonV2 = ({ project_id, folder_id, idOverride, + source = 'database', }: { name: string sql: string @@ -83,10 +86,14 @@ export const createSqlSnippetSkeletonV2 = ({ * with a known id, such as to prevent flicker in the SQL editor when adding new unsaved snippets. */ idOverride?: string + /** + * Which backend the new snippet targets. + */ + source?: SqlSnippetSource }): SnippetWithContent => { const id = idOverride ?? generateUuid([folder_id, `${name}.sql`]) - return { + const base = { ...NEW_SQL_SNIPPET_SKELETON, id, owner_id, @@ -96,12 +103,29 @@ export const createSqlSnippetSkeletonV2 = ({ favorite: false, inserted_at: new Date().toISOString(), updated_at: new Date().toISOString(), + status: 'new' as const, + } + + if (source === 'logs') { + return { + ...base, + type: 'log_sql', + content: { + schema_version: NEW_SQL_SNIPPET_SKELETON.content.schema_version, + content_id: id ?? '', + unchecked_sql: untrustedLogSql(sql ?? ''), + }, + } + } + + return { + ...base, + type: 'sql', content: { ...NEW_SQL_SNIPPET_SKELETON.content, content_id: id ?? '', unchecked_sql: untrustedSql(sql ?? ''), - } as any, - status: 'new', + }, } } @@ -511,7 +535,11 @@ export function buildDebugPromptText(sql: string, errorMessage: string): string return `${prompt}\n\nSQL Query:\n\`\`\`sql\n${sql}\n\`\`\`` } -type DebugSnippet = { snippet: { content?: { unchecked_sql?: UntrustedSqlFragment } } } | undefined +// Accepts either brand: the debug flow only reads the SQL as text (it's stripped +// and interpolated into a prompt), so a logs-branded fragment is fine here. +type DebugSnippet = + | { snippet: { content?: { unchecked_sql?: UntrustedSqlFragment | UntrustedLogSqlFragment } } } + | undefined type DebugResult = { error?: { message?: string } } | undefined /** diff --git a/apps/studio/components/interfaces/SQLEditor/SQLEditorControllers.tsx b/apps/studio/components/interfaces/SQLEditor/SQLEditorControllers.tsx index 03aeffa3f24b3..26fdb9232069b 100644 --- a/apps/studio/components/interfaces/SQLEditor/SQLEditorControllers.tsx +++ b/apps/studio/components/interfaces/SQLEditor/SQLEditorControllers.tsx @@ -147,8 +147,9 @@ export const SQLEditorControllersProvider = ({ children }: PropsWithChildren) => // Reads the SQL to run from the editor as an UntrustedSqlFragment. Promotion // to safety (acceptUntrustedSql) happens at each user-action site, never here. const readEditorSql = useCallback((): UntrustedSqlFragment | undefined => { - const snippet = getSqlEditorV2StateSnapshot().snippets[id] - return editor.getSql(snippet?.snippet.content?.unchecked_sql) + const snippet = getSqlEditorV2StateSnapshot().snippets[id]?.snippet + const fallback = snippet?.type === 'log_sql' ? undefined : snippet?.content?.unchecked_sql + return editor.getSql(fallback) }, [editor, id]) const { executeQuery, isExecuting, potentialIssues, resetPotentialIssues } = diff --git a/apps/studio/components/interfaces/SQLEditor/querySource.test.ts b/apps/studio/components/interfaces/SQLEditor/querySource.test.ts new file mode 100644 index 0000000000000..16f1e6ae16d5d --- /dev/null +++ b/apps/studio/components/interfaces/SQLEditor/querySource.test.ts @@ -0,0 +1,17 @@ +import { describe, expect, it } from 'vitest' + +import { getSnippetSource } from './querySource' + +describe('querySource.ts:getSnippetSource', () => { + it('maps log_sql to the logs source', () => { + expect(getSnippetSource({ type: 'log_sql' })).toBe('logs') + }) + + it('maps sql to the database source', () => { + expect(getSnippetSource({ type: 'sql' })).toBe('database') + }) + + it('maps report to the database source', () => { + expect(getSnippetSource({ type: 'report' })).toBe('database') + }) +}) diff --git a/apps/studio/components/interfaces/SQLEditor/querySource.ts b/apps/studio/components/interfaces/SQLEditor/querySource.ts new file mode 100644 index 0000000000000..ed6bf4e6412b5 --- /dev/null +++ b/apps/studio/components/interfaces/SQLEditor/querySource.ts @@ -0,0 +1,20 @@ +import type { Snippet } from '@/data/content/sql-folders-query' + +/** + * Domain view of where a snippet's query runs. Derived from the content TYPE: + * a `log_sql` snippet always targets the logs backend and a `sql` (or `report`) + * snippet always targets the user's Postgres database. A snippet's source is + * immutable — switching backends means creating a new snippet, not toggling this + * value. + */ +export type SqlSnippetSource = 'database' | 'logs' + +/** + * The single reader every surface (AI, reports, tabs, nav, execution) uses to + * decide where a snippet runs. `'log_sql'` → `'logs'`; everything else (`'sql'`, + * `'report'`) → `'database'`. Accepts the raw `Snippet['type']` so a snippet of + * any content type maps to a source without narrowing first. + */ +export function getSnippetSource(snippet: Pick): SqlSnippetSource { + return snippet.type === 'log_sql' ? 'logs' : 'database' +} diff --git a/apps/studio/components/interfaces/SQLEditor/usePrettifyQuery.ts b/apps/studio/components/interfaces/SQLEditor/usePrettifyQuery.ts index 60c415e79d3bb..9a70c33303425 100644 --- a/apps/studio/components/interfaces/SQLEditor/usePrettifyQuery.ts +++ b/apps/studio/components/interfaces/SQLEditor/usePrettifyQuery.ts @@ -25,7 +25,9 @@ export function usePrettifyQuery({ id, isDiffOpen }: { id: string; isDiffOpen: b const snippet = state.snippets[id] if (editor.isReady() && project) { - const sql = editor.getSql(snippet?.snippet.content?.unchecked_sql) + const fallback = + snippet?.snippet.type === 'log_sql' ? undefined : snippet?.snippet.content?.unchecked_sql + const sql = editor.getSql(fallback) if (sql === undefined) return const formattedSql = formatSql(sql) diff --git a/apps/studio/data/content/content-id-query.ts b/apps/studio/data/content/content-id-query.ts index 681e7c645ca14..37547ab58fe51 100644 --- a/apps/studio/data/content/content-id-query.ts +++ b/apps/studio/data/content/content-id-query.ts @@ -2,7 +2,7 @@ import { useQuery } from '@tanstack/react-query' import { components } from 'api-types' import type { Content } from './content-query' -import { remapSqlContentField } from './content-remap' +import { remapSqlContentField, remapWireSnippet } from './content-remap' import { contentKeys } from './keys' import type { SnippetWithContent } from './sql-folders-query' import { get, handleError } from '@/data/fetchers' @@ -51,8 +51,7 @@ export async function getSqlSnippetById( }) if (error) throw handleError(error) - const snippet = remapSqlContentField(data as unknown as Omit) - return { ...snippet, status: 'saved' } + return remapWireSnippet(data, 'saved') } export type SqlSnippetByIdData = Awaited> diff --git a/apps/studio/data/content/content-remap.ts b/apps/studio/data/content/content-remap.ts index 63141b9bf2ba0..e3f4b397ef18f 100644 --- a/apps/studio/data/content/content-remap.ts +++ b/apps/studio/data/content/content-remap.ts @@ -7,6 +7,8 @@ // and logs SQL can never cross execution paths. Branding is per-type and never mixed. import { untrustedSql } from '@supabase/pg-meta' +import type { SnippetStatus } from './snippet-status' +import type { SnippetWithContent } from './sql-folders-query' import { untrustedLogSql } from '@/data/logs/safe-analytics-sql' function isSqlContentType(type: string): type is 'sql' | 'log_sql' { @@ -28,6 +30,17 @@ export function remapSqlContentFields(items: Array(item: T): T { if (!isSqlContentType(item.type)) return item diff --git a/apps/studio/data/content/content-upsert-mutation.ts b/apps/studio/data/content/content-upsert-mutation.ts index 26640dbb06679..8ce336b7684ba 100644 --- a/apps/studio/data/content/content-upsert-mutation.ts +++ b/apps/studio/data/content/content-upsert-mutation.ts @@ -2,9 +2,9 @@ import { useMutation, useQueryClient } from '@tanstack/react-query' import { toast } from 'sonner' import type { Content } from './content-query' -import { remapSqlContentField, unmapSqlContentField } from './content-remap' +import { remapWireSnippet, unmapSqlContentField } from './content-remap' import { contentKeys } from './keys' -import type { Snippet, SnippetWithContent } from './sql-folders-query' +import type { SnippetWithContent } from './sql-folders-query' import type { components } from '@/data/api' import { handleError, put } from '@/data/fetchers' import type { ResponseError, UseCustomMutationOptions } from '@/types' @@ -31,9 +31,9 @@ export async function upsertContent( signal, }) if (error) handleError(error) + if (!data) return null - const snippet = data as Snippet | null - return snippet === null ? null : { ...remapSqlContentField(snippet), status: 'saved' } + return remapWireSnippet(data, 'saved') } export type UpsertContentData = Awaited> diff --git a/apps/studio/data/content/sql-folders-query.ts b/apps/studio/data/content/sql-folders-query.ts index 36d31c6a505fc..85d2ec4b5b11a 100644 --- a/apps/studio/data/content/sql-folders-query.ts +++ b/apps/studio/data/content/sql-folders-query.ts @@ -4,7 +4,12 @@ import { components } from 'api-types' import { contentKeys } from './keys' import type { SnippetStatus } from './snippet-status' import { get, handleError } from '@/data/fetchers' -import type { ResponseError, SqlSnippets, UseCustomInfiniteQueryOptions } from '@/types' +import type { + LogSqlSnippets, + ResponseError, + SqlSnippets, + UseCustomInfiniteQueryOptions, +} from '@/types' export type SnippetFolderResponse = components['schemas']['GetUserContentFolderResponse']['data'] export type SnippetFolder = @@ -12,10 +17,25 @@ export type SnippetFolder = export type Snippet = components['schemas']['GetUserContentFolderResponse']['data']['contents'][number] -export interface SnippetWithContent extends Snippet { - content?: SqlSnippets.Content - status: SnippetStatus -} +// The SQL editor's loaded-snippet type. Discriminated on `type` so database SQL +// (`SqlSnippets.Content`, Postgres brand) and logs SQL (`LogSqlSnippets.Content`, +// logs brand) can never cross execution paths: reading `snippet.content.unchecked_sql` +// on the union yields the widened brand, forcing callers that need one specific +// brand to narrow on `type` first. The shared field names (`content_id`, +// `unchecked_sql`, `schema_version`) keep the many read sites that only need the +// SQL text compiling unchanged. +// +// `report` is included because the content endpoints' wire type carries it, but +// it deliberately has NO SQL content (`content?: never`): report bodies are +// `Dashboards.Content` and are loaded through the separate `Content` union +// (data/content/content-query.ts), never with SQL here. Modelling it as `never` +// (rather than reusing `SqlSnippets.Content`) keeps that honest while letting the +// broadly-typed rows the content/folder queries return assign without a cast. +export type SnippetWithContent = Omit & { status: SnippetStatus } & ( + | { type: 'sql'; content?: SqlSnippets.Content } + | { type: 'log_sql'; content?: LogSqlSnippets.Content } + | { type: 'report'; content?: never } + ) // Attaches the 'saved' lifecycle status to a snippet as it crosses from the // database into the app. Generic so it preserves any loaded content on the diff --git a/apps/studio/data/content/sql-snippets-query.ts b/apps/studio/data/content/sql-snippets-query.ts index afd112f9535c8..ef4aac6673c34 100644 --- a/apps/studio/data/content/sql-snippets-query.ts +++ b/apps/studio/data/content/sql-snippets-query.ts @@ -3,9 +3,9 @@ import { InfiniteData, useInfiniteQuery } from '@tanstack/react-query' import { Content } from './content-query' import { remapSqlContentFields } from './content-remap' import { contentKeys } from './keys' -import { SNIPPET_PAGE_LIMIT, withSavedStatus, type Snippet } from './sql-folders-query' +import { SNIPPET_PAGE_LIMIT, withSavedStatus, type SnippetWithContent } from './sql-folders-query' import { get } from '@/data/fetchers' -import type { SqlSnippets, UseCustomInfiniteQueryOptions } from '@/types' +import type { UseCustomInfiniteQueryOptions } from '@/types' export type SqlSnippet = Extract @@ -49,9 +49,7 @@ export async function getSqlSnippets( throw error } - const snippets = remapSqlContentFields( - data.data as unknown as Array - ) + const snippets = remapSqlContentFields(data.data as unknown as SnippetWithContent[]) return { cursor: data.cursor, contents: snippets.map(withSavedStatus), diff --git a/apps/studio/state/sql-editor/sql-editor-rules.test.ts b/apps/studio/state/sql-editor/sql-editor-rules.test.ts index 0f8ec256e6a5e..a46f443f61d44 100644 --- a/apps/studio/state/sql-editor/sql-editor-rules.test.ts +++ b/apps/studio/state/sql-editor/sql-editor-rules.test.ts @@ -10,11 +10,35 @@ import { type LoadedSnippet, } from './sql-editor-rules' import type { SnippetWithContent } from '@/data/content/sql-folders-query' +import { untrustedLogSql } from '@/data/logs/safe-analytics-sql' -function makeSnippet(overrides: Omit, 'content'> = {}): LoadedSnippet { +function makeLogSnippet(): LoadedSnippet { + return { + id: 'log-snippet-1', + name: 'My Logs Query', + description: '', + visibility: 'user', + project_id: 42, + owner_id: 7, + folder_id: null, + favorite: false, + status: 'saved', + inserted_at: '2024-01-01T00:00:00.000Z', + updated_at: '2024-01-01T00:00:00.000Z', + type: 'log_sql', + content: { + content_id: 'log-snippet-1', + schema_version: '1', + unchecked_sql: untrustedLogSql('select * from logs'), + }, + } +} + +function makeSnippet( + overrides: Omit, 'content' | 'type'> = {} +): LoadedSnippet { return { id: 'snippet-1', - type: 'sql', name: 'My Query', description: 'A description', visibility: 'user', @@ -26,6 +50,7 @@ function makeSnippet(overrides: Omit, 'content'> = { inserted_at: '2024-01-01T00:00:00.000Z', updated_at: '2024-01-01T00:00:00.000Z', ...overrides, + type: 'sql', content: { content_id: 'snippet-1', schema_version: '1', @@ -96,6 +121,17 @@ describe('validateMoveToFolder', () => { }) describe('buildUpsertPayload', () => { + it('emits the snippet type — sql for a database snippet', () => { + const payload = buildUpsertPayload(makeSnippet(), 'snippet-1') + expect(payload.type).toBe('sql') + }) + + it('emits the snippet type — log_sql for a logs snippet (not silently rewritten to sql)', () => { + const payload = buildUpsertPayload(makeLogSnippet(), 'log-snippet-1') + expect(payload.type).toBe('log_sql') + expect((payload.content as { content_id: string }).content_id).toBe('log-snippet-1') + }) + it('passes through provided values', () => { const snippet = makeSnippet() const payload = buildUpsertPayload(snippet, 'snippet-1') diff --git a/apps/studio/state/sql-editor/sql-editor-rules.ts b/apps/studio/state/sql-editor/sql-editor-rules.ts index b1c52682d28ed..2702e251b5d31 100644 --- a/apps/studio/state/sql-editor/sql-editor-rules.ts +++ b/apps/studio/state/sql-editor/sql-editor-rules.ts @@ -51,7 +51,7 @@ export function buildUpsertPayload(snippet: LoadedSnippet, id: string): UpsertCo snippet return { id, - type: 'sql', + type: snippet.type, name: name ?? 'Untitled', description: description ?? '', visibility: visibility ?? 'user', diff --git a/apps/studio/state/sql-editor/sql-editor-save-scheduler.test.ts b/apps/studio/state/sql-editor/sql-editor-save-scheduler.test.ts index 00dc272a8043f..ba39dbda6d4ff 100644 --- a/apps/studio/state/sql-editor/sql-editor-save-scheduler.test.ts +++ b/apps/studio/state/sql-editor/sql-editor-save-scheduler.test.ts @@ -5,11 +5,16 @@ import { afterEach, describe, expect, it, vi } from 'vitest' import { createSaveScheduler, type SaveMode } from './sql-editor-save-scheduler' import type { StateSnippet, StateSnippetFolder } from './types' +import type { SqlSnippets } from '@/types' // Valtio notifies subscribers on a microtask; flush past it before asserting. const flush = () => new Promise((resolve) => setTimeout(resolve, 0)) -function makeStateSnippet(overrides: Partial = {}): StateSnippet { +function makeStateSnippet( + overrides: Omit, 'type' | 'content'> & { + content?: SqlSnippets.Content + } = {} +): StateSnippet { return { projectRef: 'ref', splitSizes: [50, 50], diff --git a/apps/studio/state/sql-editor/sql-editor-save.test.ts b/apps/studio/state/sql-editor/sql-editor-save.test.ts index 506dbfcc7edff..30f5a6da77f11 100644 --- a/apps/studio/state/sql-editor/sql-editor-save.test.ts +++ b/apps/studio/state/sql-editor/sql-editor-save.test.ts @@ -4,8 +4,13 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { createSaveMechanism, type SaveMechanismStore } from './sql-editor-save' import type { StateSnippet } from './types' import type { SnippetFolder } from '@/data/content/sql-folders-query' +import type { SqlSnippets } from '@/types' -function makeStateSnippet(overrides: Partial = {}): StateSnippet { +function makeStateSnippet( + overrides: Omit, 'type' | 'content'> & { + content?: SqlSnippets.Content + } = {} +): StateSnippet { return { projectRef: 'ref', splitSizes: [50, 50], diff --git a/apps/studio/state/sql-editor/sql-editor-state.test.ts b/apps/studio/state/sql-editor/sql-editor-state.test.ts index ba59013f006cc..3bceae2105a24 100644 --- a/apps/studio/state/sql-editor/sql-editor-state.test.ts +++ b/apps/studio/state/sql-editor/sql-editor-state.test.ts @@ -3,14 +3,36 @@ import { beforeEach, describe, expect, it } from 'vitest' import { sqlEditorState } from './sql-editor-state' import type { SnippetWithContent } from '@/data/content/sql-folders-query' +import { untrustedLogSql } from '@/data/logs/safe-analytics-sql' + +function makeLogSnippet(id: string): SnippetWithContent { + return { + id, + name: 'My Logs Query', + description: '', + visibility: 'user', + project_id: 42, + owner_id: 7, + folder_id: null, + favorite: false, + status: 'saved', + inserted_at: '2024-01-01T00:00:00.000Z', + updated_at: '2024-01-01T00:00:00.000Z', + type: 'log_sql', + content: { + content_id: id, + schema_version: '1', + unchecked_sql: untrustedLogSql('select * from logs'), + }, + } +} function makeSnippet( id: string, - overrides: Omit, 'content'> = {} + overrides: Omit, 'content' | 'type'> = {} ): SnippetWithContent { return { id, - type: 'sql', name: 'My Query', description: 'A description', visibility: 'user', @@ -22,6 +44,7 @@ function makeSnippet( inserted_at: '2024-01-01T00:00:00.000Z', updated_at: '2024-01-01T00:00:00.000Z', ...overrides, + type: 'sql', content: { content_id: id, schema_version: '1', @@ -70,3 +93,32 @@ describe('addFavorite / removeFavorite', () => { expect(sqlEditorState.needsSaving.has('missing')).toBe(false) }) }) + +describe('setSql — source-aware branding', () => { + beforeEach(() => { + for (const id of Object.keys(sqlEditorState.snippets)) { + delete sqlEditorState.snippets[id] + } + sqlEditorState.needsSaving.clear() + }) + + it('updates the SQL of a database snippet and marks it for saving', () => { + sqlEditorState.addSnippet({ projectRef: 'ref', snippet: makeSnippet('db-1') }) + + sqlEditorState.setSql({ id: 'db-1', sql: 'select 2' }) + + expect(sqlEditorState.snippets['db-1'].snippet.content?.unchecked_sql).toBe('select 2') + expect(sqlEditorState.needsSaving.has('db-1')).toBe(true) + }) + + it('updates the SQL of a logs snippet and marks it for saving', () => { + sqlEditorState.addSnippet({ projectRef: 'ref', snippet: makeLogSnippet('logs-1') }) + + sqlEditorState.setSql({ id: 'logs-1', sql: 'select count(*) from logs' }) + + expect(sqlEditorState.snippets['logs-1'].snippet.content?.unchecked_sql).toBe( + 'select count(*) from logs' + ) + expect(sqlEditorState.needsSaving.has('logs-1')).toBe(true) + }) +}) diff --git a/apps/studio/state/sql-editor/sql-editor-state.ts b/apps/studio/state/sql-editor/sql-editor-state.ts index c0073c6df9f74..c3519a75ea84a 100644 --- a/apps/studio/state/sql-editor/sql-editor-state.ts +++ b/apps/studio/state/sql-editor/sql-editor-state.ts @@ -14,6 +14,7 @@ import { sqlEditorSessionState } from './sql-editor-session-state' import type { StateSnippet, StateSnippetFolder } from './types' import type { SnippetWithContent } from '@/data/content/sql-folders-query' import { Snippet, SnippetFolder } from '@/data/content/sql-folders-query' +import { untrustedLogSql } from '@/data/logs/safe-analytics-sql' export const sqlEditorState = proxy({ // ======================================================================== @@ -84,7 +85,7 @@ export const sqlEditorState = proxy({ skipSave = false, }: { id: string - snippet: Partial + snippet: Omit, 'type'> skipSave?: boolean }) => { if (sqlEditorState.snippets[id]) { @@ -127,7 +128,11 @@ export const sqlEditorState = proxy({ }) => { let snippet = sqlEditorState.snippets[id]?.snippet if (snippet?.content) { - snippet.content.unchecked_sql = untrustedSql(sql) + if (snippet.type === 'log_sql') { + snippet.content.unchecked_sql = untrustedLogSql(sql) + } else { + snippet.content.unchecked_sql = untrustedSql(sql) + } // Mark dirty immediately so `status` (not the transient needsSaving queue) // is the durable source of truth for unsaved changes, even before the // debounced save begins. diff --git a/apps/studio/tests/lib/sql-editor-test-utils.tsx b/apps/studio/tests/lib/sql-editor-test-utils.tsx index 3be4957d80b96..0f4a6cf855e24 100644 --- a/apps/studio/tests/lib/sql-editor-test-utils.tsx +++ b/apps/studio/tests/lib/sql-editor-test-utils.tsx @@ -5,6 +5,7 @@ import { http, HttpResponse } from 'msw' import { NuqsTestingAdapter } from 'nuqs/adapters/testing' import type { ReactNode } from 'react' +import type { SqlSnippetSource } from '@/components/interfaces/SQLEditor/querySource' import type { ContentDiff, DiffController, @@ -147,6 +148,7 @@ export function seedSnippet({ sql = '', ownerId = 1, projectId = 1, + source = 'database', }: { id: string projectRef?: string @@ -154,6 +156,7 @@ export function seedSnippet({ sql?: string ownerId?: number projectId?: number + source?: SqlSnippetSource }) { const snippet = createSqlSnippetSkeletonV2({ name, @@ -161,6 +164,7 @@ export function seedSnippet({ owner_id: ownerId, project_id: projectId, idOverride: id, + source, }) sqlEditorState.addSnippet({ projectRef, snippet }) return snippet From e6623a49ab81ee72ce6e7dd8fd06db9ec63254fc Mon Sep 17 00:00:00 2001 From: TheOtherBrian1 <91111415+TheOtherBrian1@users.noreply.github.com> Date: Tue, 28 Jul 2026 12:44:14 -0400 Subject: [PATCH 03/10] updated pg config docs with new settings (#47939) ## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? docs update ## What is the current behavior? 1. Certain [supautils](https://github.com/supabase/postgres/blob/47d3ff319a0ead8a5a9a2e7dad5950a487834c58/ansible/files/postgresql_config/supautils.conf.j2#L14) and [CLI settings](https://github.com/supabase/platform/blob/master/api/apps/mgmt-api/src/routes/v1/projects/ref/config/postgresql.dto.ts) have not yet been added to the customizing config page. 2. We also list that pg_net settings can be changed at the role level. That is not the case. 3. We state that certain settings are only configurable via the MGMT API. They've now been exposed through the CLI ## What is the new behavior? 1. Updated list of exposed settings to include everything referenced in our supautils and MGMT API config files 2. Removed pg_net references 3. Removed the warning that some settings can only be changed with the MGMT API ## Additional context [Linear](https://linear.app/supabase/issue/CE-50/outline-all-grafana-metrics) ## Summary by CodeRabbit * **Documentation** * Updated the custom Postgres configuration guide to clarify which settings require superuser privileges. * Added additional CLI-supported logging and cron configuration options. * Removed outdated guidance about Management API-only parameters and restart requirements. --- .../database/custom-postgres-config.mdx | 60 ++++++++++--------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/apps/docs/content/guides/database/custom-postgres-config.mdx b/apps/docs/content/guides/database/custom-postgres-config.mdx index b6a02132e20c9..bf233cb012837 100644 --- a/apps/docs/content/guides/database/custom-postgres-config.mdx +++ b/apps/docs/content/guides/database/custom-postgres-config.mdx @@ -48,28 +48,28 @@ show "statement_timeout"; Some settings can only be modified by a superuser. Supabase pre-enables the [`supautils` extension](/blog/roles-postgres-hooks#setting-up-the-supautils-extension), which allows the `postgres` role to retain certain superuser privileges. It enables modification of the below reserved configurations at the `role` level: -| Setting | Description | -| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `auto_explain.*` | Configures the [auto_explain module](https://www.postgresql.org/docs/current/auto-explain.html). Can be configured to log execution plans for queries expected to exceed x seconds, including function queries. | -| `deadlock_timeout` | Sets the time to wait on a lock before checking for deadlock. | -| `log_lock_waits` | Controls whether a log message is produced when a session waits longer than [deadlock_timeout](https://www.postgresql.org/docs/current/runtime-config-locks.html#GUC-DEADLOCK-TIMEOUT) to acquire a lock. | -| `log_min_duration_statement` | Causes the duration of each completed statement to be logged if the statement ran for at least the specified amount of time. | -| `log_min_messages` | Minimum severity level of messages to log. | -| `log_parameter_max_length` | Sets the maximum length in bytes of data logged for bind parameter values when logging statements. | -| `log_replication_commands` | Logs all replication commands | -| `log_statement` | Controls which SQL statements are logged. Valid values are `none` (off), `ddl`, `mod`, and `all` (all statements). | -| `log_temp_files` | Controls logging of temporary file names and sizes. | -| `pg_net.batch_size` | Sets how many requests the [pg_net extension](/docs/guides/database/extensions/pg_net) can make per second | -| `pg_net.ttl` | Sets how long the [pg_net extension](/docs/guides/database/extensions/pg_net) saves responses | -| `pg_stat_statements.*` | Configures the [pg_stat_statements extension](https://www.postgresql.org/docs/current/pgstatstatements.html). | -| `pgaudit.*` | Configures the [PGAudit extension](/docs/guides/database/extensions/pgaudit). The `log_parameter` is still restricted to protect secrets | -| `pgrst.*` | [`PostgREST` settings](https://docs.postgrest.org/en/stable/references/configuration.html#db-aggregates-enabled) | -| `plan_filter.*` | Configures the [pg_plan_filter extension](/docs/guides/database/extensions/pg_plan_filter) | -| `safeupdate.enabled` | Enables the [safeupdate extension](https://github.com/eradman/pg-safeupdate), which requires a `WHERE` clause on `UPDATE` and `DELETE` statements. | -| `session_replication_role` | Sets the session's behavior for triggers and rewrite rules. | -| `track_functions` | Controls whether function call counts and timing are tracked. Valid values are `none`, `pl` (only procedural-language functions), and `all`. | -| `track_io_timing` | Collects timing statistics for database I/O activity. | -| `wal_compression` | This parameter enables compression of WAL using the specified compression method. | +| Setting | Description | +| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `auto_explain.*` | Configures the [auto_explain module](https://www.postgresql.org/docs/current/auto-explain.html). Can be configured to log execution plans for queries expected to exceed x seconds, including function queries. | +| `deadlock_timeout` | Sets the time to wait on a lock before checking for deadlock. | +| `log_duration` | Logs how long a query ran for, but not the entire query itself. | +| `log_lock_waits` | Controls whether a log message is produced when a session waits longer than [deadlock_timeout](https://www.postgresql.org/docs/current/runtime-config-locks.html#GUC-DEADLOCK-TIMEOUT) to acquire a lock. | +| `log_min_duration_statement` | Logs the duration and text of completed statements whose execution time meets or exceeds the specified threshold | +| `log_min_error_statement` | Determines if the query that induced a log should be recorded as a subfield based on the event's [severity level](https://www.postgresql.org/docs/current/runtime-config-logging.html#RUNTIME-CONFIG-SEVERITY-LEVELS) | +| `log_min_messages` | Minimum severity level of messages to log. | +| `log_parameter_max_length` | Sets the maximum length in bytes of data logged for bind parameter values when logging statements. | +| `log_replication_commands` | Logs all replication commands | +| `log_statement` | Controls which SQL statements are logged. Valid values are `none` (off), `ddl`, `mod`, and `all` (all statements). | +| `log_temp_files` | Controls logging of temporary file names and sizes. | +| `pg_stat_statements.*` | Configures the [pg_stat_statements extension](https://www.postgresql.org/docs/current/pgstatstatements.html). | +| `pgaudit.*` | Configures the [PGAudit extension](/docs/guides/database/extensions/pgaudit). The `log_parameter` is still restricted to protect secrets | +| `pgrst.*` | [`PostgREST` settings](https://docs.postgrest.org/en/stable/references/configuration.html#db-aggregates-enabled) | +| `plan_filter.*` | Configures the [pg_plan_filter extension](/docs/guides/database/extensions/pg_plan_filter) | +| `safeupdate.enabled` | Enables the [safeupdate extension](https://github.com/eradman/pg-safeupdate), which requires a `WHERE` clause on `UPDATE` and `DELETE` statements. | +| `session_replication_role` | Sets the session's behavior for triggers and rewrite rules. | +| `track_functions` | Controls whether function call counts and timing are tracked. Valid values are `none`, `pl` (only procedural-language functions), and `all`. | +| `track_io_timing` | Collects timing statistics for database I/O activity. | +| `wal_compression` | This parameter enables compression of WAL using the specified compression method. | For example, to enable `log_nested_statements` for the `postgres` role, execute: @@ -123,10 +123,20 @@ Use the examples below with `supabase postgres-config update --project-ref Date: Tue, 28 Jul 2026 09:47:44 -0700 Subject: [PATCH 04/10] Update humans.txt (#48407) ## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? Cleans up a name that was missed. --- apps/docs/public/humans.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/docs/public/humans.txt b/apps/docs/public/humans.txt index a4c88f0d8c8cc..28baf1d0b78ca 100644 --- a/apps/docs/public/humans.txt +++ b/apps/docs/public/humans.txt @@ -61,7 +61,6 @@ Chris Gwilliams Chris Martin Chris Opland Chris Stockton -Chris Ward Christian Funkhouser Claudiu Dragalina-Paraipan Clayton Kast From ca2b50a0a7d0885f7157357e857855be0e7fdba7 Mon Sep 17 00:00:00 2001 From: Alaister Young Date: Wed, 29 Jul 2026 00:48:56 +0800 Subject: [PATCH 05/10] chore(ui-patterns): collapse the admonition shim into ui-patterns/Admonition (#48377) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to #48344: collapses the two resolution paths for the Admonition module into one. `src/admonition.tsx` was a back-compat shim re-exporting `src/Admonition/`. Two ways to resolve one module is exactly what produced the macOS self-import bug fixed in #48344, and the local typecheck errors that #48374 worked around. This removes the shim and standardizes on the PascalCase subpath, matching every other export in the package. **Changed:** - Codemodded all 246 `ui-patterns/admonition` imports to `ui-patterns/Admonition` (240 `.tsx`, 5 `.mdx`, 1 `.ts` across studio, docs, www, design-system, and lite-studio) - Pointed the 5 internal `'../admonition'` imports back at the `'../Admonition'` directory **Removed:** - `packages/ui-patterns/src/admonition.tsx`, and its `./admonition` entry in the exports map (regenerated with `pnpm gen:exports`) ## To test - `grep -r "ui-patterns/admonition" --include='*.ts*'` → no hits - `pnpm test:case-hazards` → passes - `pnpm typecheck` → all 15 tasks green - `pnpm --filter studio run lint:ratchet` → passes - `pnpm --filter ui-patterns vitest run src/Admonition` → 11 tests pass ## Summary by CodeRabbit * **Bug Fixes** * Standardized Admonition component imports across the application and documentation. * Improved compatibility with case-sensitive environments by using the canonical component path. * Removed the legacy Admonition import entry point. --------- Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com> --- apps/design-system/components/mdx-components.tsx | 2 +- apps/design-system/content/docs/fragments/admonition.mdx | 2 +- .../registry/default/example/admonition-button-split.tsx | 2 +- .../registry/default/example/admonition-button.tsx | 2 +- .../registry/default/example/admonition-demo.tsx | 2 +- .../registry/default/example/admonition-description-only.tsx | 2 +- .../registry/default/example/admonition-destructive.tsx | 2 +- .../registry/default/example/admonition-responsive.tsx | 2 +- .../registry/default/example/admonition-sandwiched.tsx | 2 +- .../registry/default/example/admonition-success.tsx | 2 +- .../registry/default/example/admonition-warning.tsx | 2 +- .../registry/default/example/alert-dialog-async-error.tsx | 2 +- .../default/example/connect-interstitial-logo-single.tsx | 2 +- .../registry/default/example/empty-state-missing-route.tsx | 2 +- .../registry/default/example/page-layout-auth-emails.tsx | 2 +- .../components/AppleSecretGenerator/AppleSecretGenerator.tsx | 2 +- .../components/AuthSmsProviderConfig/MessageBirdConfig.mdx | 2 +- .../docs/components/AuthSmsProviderConfig/TextLocalConfig.mdx | 2 +- apps/docs/components/AuthSmsProviderConfig/TwilioConfig.mdx | 2 +- apps/docs/components/AuthSmsProviderConfig/VonageConfig.mdx | 2 +- apps/docs/components/WrapperDashboardIntegration.tsx | 2 +- apps/docs/features/directives/CodeSample.client.tsx | 2 +- apps/docs/features/docs/MdxBase.shared.tsx | 2 +- apps/docs/features/ui/McpConfigPanel.tsx | 2 +- apps/docs/lib/mdx/plugins/remarkAdmonition.ts | 2 +- apps/lite-studio/app/routes/projects.$ref.tsx | 2 +- apps/studio/components/grid/MsSqlValidation.tsx | 2 +- apps/studio/components/grid/components/grid/GridError.tsx | 2 +- .../studio/components/grid/components/header/ExportDialog.tsx | 2 +- .../components/interfaces/APIKeys/CreateNewAPIKeysButton.tsx | 2 +- .../components/interfaces/APIKeys/PublishableAPIKeys.tsx | 2 +- .../AccessTokenNewBanner/AccessTokenNewBanner.tsx | 2 +- .../Account/AccessTokens/Classic/NewTokenDialog.tsx | 2 +- .../Account/AccessTokens/Scoped/NewScopedTokenSheet.tsx | 2 +- .../studio/components/interfaces/Advisors/CreateRuleSheet.tsx | 2 +- .../interfaces/ApiAuthorization/ApiAuthorization.Approved.tsx | 2 +- .../interfaces/ApiAuthorization/ApiAuthorization.Error.tsx | 2 +- .../interfaces/ApiAuthorization/ApiAuthorization.Form.tsx | 2 +- .../interfaces/ApiAuthorization/ApiAuthorization.Invalid.tsx | 2 +- apps/studio/components/interfaces/Auth/AuditLogsForm.tsx | 2 +- .../interfaces/Auth/AuthProvidersForm/ProviderForm.tsx | 2 +- .../Auth/CustomAuthProviders/CustomAuthProvidersList.tsx | 2 +- .../CustomEmailTemplateRestrictionAdmonition.tsx | 2 +- .../interfaces/Auth/EmailTemplates/EmailTemplates.tsx | 2 +- .../interfaces/Auth/EmailTemplates/ResetTemplateDialog.tsx | 2 +- .../Auth/EmailTemplates/SendEmailHookActiveAdmonition.tsx | 2 +- .../interfaces/Auth/EmailTemplates/SpamValidation.tsx | 2 +- .../interfaces/Auth/EmailTemplates/TemplateEditor.tsx | 2 +- .../components/interfaces/Auth/Hooks/CreateHookSheet.tsx | 2 +- .../interfaces/Auth/OAuthApps/NewOAuthAppBanner.tsx | 2 +- .../components/interfaces/Auth/OAuthApps/OAuthAppsList.tsx | 2 +- .../interfaces/Auth/OAuthApps/OAuthServerSettingsForm.tsx | 2 +- apps/studio/components/interfaces/Auth/SmtpForm/SmtpForm.tsx | 2 +- apps/studio/components/interfaces/Auth/Users/UserLogs.tsx | 2 +- apps/studio/components/interfaces/Auth/Users/UserOverview.tsx | 2 +- .../components/interfaces/Billing/NoProjectsOnPaidOrgInfo.tsx | 2 +- .../Payment/PaymentMethods/DeletePaymentMethodModal.tsx | 2 +- .../Billing/Payment/PaymentMethods/PaymentMethods.tsx | 2 +- .../Payment/PaymentMethods/StripePaymentConnection.tsx | 2 +- .../Usage/UsageWarningAlerts/DiskIOBandwidthWarnings.tsx | 2 +- .../interfaces/BranchManagement/OutOfDateNotice.tsx | 2 +- .../interfaces/ConnectSheet/ConnectStepsSection.tsx | 2 +- .../components/interfaces/Database/Backups/BackupsList.tsx | 2 +- .../interfaces/Database/Backups/BackupsStorageAlert.tsx | 2 +- .../interfaces/Database/Extensions/EnableExtensionModal.tsx | 2 +- .../interfaces/Database/Extensions/ExtensionRow.tsx | 2 +- .../interfaces/Database/Indexes/CreateIndexSidePanel.tsx | 2 +- .../components/interfaces/Database/Migrations/Migrations.tsx | 2 +- .../components/interfaces/Database/Policies/Policies.tsx | 2 +- .../interfaces/Database/Policies/PolicyTableRow/index.tsx | 2 +- .../components/interfaces/Database/ProtectedSchemaWarning.tsx | 2 +- .../interfaces/Database/Publications/PublicationsTables.tsx | 2 +- .../DestinationForm/AnalyticsBucket/Fields.tsx | 2 +- .../DestinationPanel/DestinationForm/DuckLake/Fields.tsx | 2 +- .../DestinationPanel/DestinationForm/PublicationSelection.tsx | 2 +- .../DestinationPanel/DestinationForm/TableCopySelection.tsx | 2 +- .../DestinationForm/ValidationFailuresSection.tsx | 2 +- .../DestinationPanel/DestinationForm/index.test.tsx | 2 +- .../Replication/DestinationPanel/DestinationForm/index.tsx | 2 +- .../ReadReplicaForm/ReadReplicaEligibilityWarnings.tsx | 2 +- .../interfaces/Database/Replication/Destinations.tsx | 2 +- .../Database/Replication/DisablePipelinesDialog.tsx | 2 +- .../Database/Replication/EnablePipelinesCallout.tsx | 2 +- .../Database/RestoreToNewProject/RestoreToNewProject.tsx | 2 +- .../components/interfaces/Database/Schemas/SchemaGraph.tsx | 2 +- .../interfaces/DiskManagement/DiskManagementForm.tsx | 2 +- .../interfaces/DiskManagement/DiskManagementPanelForm.tsx | 2 +- .../interfaces/DiskManagement/fields/AutoScaleFields.tsx | 2 +- .../interfaces/DiskManagement/fields/ComputeSizeField.tsx | 2 +- .../DiskManagement/ui/ComputeSizeRecommendationSection.tsx | 2 +- .../DiskManagement/ui/DiskTypeRecommendationSection.tsx | 2 +- .../components/interfaces/DiskManagement/ui/FormMessage.tsx | 2 +- .../interfaces/DiskManagement/ui/SpendCapDisabledSection.tsx | 2 +- .../interfaces/Docs/PublicSchemaNotEnabledAlert.tsx | 2 +- .../interfaces/Functions/EdgeFunctionRecentInvocations.tsx | 2 +- .../CronJobs/CreateCronJobSheet/CreateCronJobSheet.tsx | 2 +- .../Integrations/CronJobs/CronJobsTab.CleanupNotice.tsx | 2 +- .../interfaces/Integrations/DataApi/DataApiURLSettings.tsx | 2 +- .../Integrations/GraphQL/IntrospectionDisabledNotice.tsx | 2 +- .../Integration/ConnectedResourceGroupSection.tsx | 2 +- .../Integrations/Integration/LegacyIntegrationPage.tsx | 2 +- .../Integration/MarketplaceIntegrationSettingsTab.tsx | 2 +- .../interfaces/Integrations/Marketplace/MarketplaceDetail.tsx | 2 +- .../Integrations/Queues/CreateQueueSheet/PgPartmanCallout.tsx | 2 +- .../Integrations/Queues/CreateQueueSheet/RlsSection.tsx | 2 +- .../components/interfaces/Integrations/Queues/OverviewTab.tsx | 2 +- .../interfaces/Integrations/Queues/QueuesSettings.tsx | 2 +- .../Integrations/Queues/SingleQueue/QueueSettings.tsx | 2 +- .../interfaces/Integrations/Queues/UpgradeDatabaseAlert.tsx | 2 +- .../Integrations/Vercel/VercelIntegrationInterstitial.tsx | 2 +- .../interfaces/Integrations/Webhooks/OverviewTab.tsx | 2 +- .../interfaces/Integrations/Wrappers/CreateWrapperSheet.tsx | 2 +- .../interfaces/Integrations/Wrappers/OverviewTab.tsx | 2 +- .../Integrations/templates/StripeSyncEngine/OverviewTab.tsx | 2 +- .../templates/StripeSyncEngine/StripeSyncSettingsPage.tsx | 2 +- apps/studio/components/interfaces/JwtSecrets/jwt-settings.tsx | 2 +- .../components/interfaces/Linter/GraphqlExposureLintCTA.tsx | 2 +- .../Organization/BillingSettings/CostControl/CostControl.tsx | 2 +- .../BillingSettings/CostControl/SpendCapSidePanel.tsx | 2 +- .../Organization/BillingSettings/CreditCodeRedemption.tsx | 2 +- .../BillingSettings/Subscription/DowngradeModal.tsx | 2 +- .../BillingSettings/Subscription/ExitSurveyModal.tsx | 2 +- .../BillingSettings/Subscription/Subscription.tsx | 2 +- .../Subscription/SubscriptionPlanUpdateDialog.tsx | 2 +- .../CloudMarketplace/AwsMarketplaceOnboarding.components.tsx | 2 +- .../CloudMarketplace/AwsMarketplaceOnboarding.tsx | 2 +- .../Organization/GeneralSettings/OrganizationDeletePanel.tsx | 2 +- .../NewOrg/UpgradeExistingOrganizationCallout.tsx | 2 +- .../interfaces/Organization/OAuthApps/DeleteAppModal.tsx | 2 +- .../interfaces/Organization/OAuthApps/RevokeAppModal.tsx | 2 +- .../studio/components/interfaces/Organization/OrgNotFound.tsx | 2 +- .../interfaces/Organization/ProjectClaim/confirm.tsx | 2 +- .../components/interfaces/Organization/SSO/SSOConfig.tsx | 2 +- .../components/interfaces/Organization/SecuritySettings.tsx | 2 +- .../Organization/TeamSettings/InviteMemberButton.tsx | 2 +- .../interfaces/Organization/TeamSettings/MembersView.tsx | 2 +- .../interfaces/Organization/TeamSettings/TeamSettings.tsx | 2 +- .../interfaces/Organization/Usage/Usage.constants.tsx | 2 +- .../studio/components/interfaces/Organization/Usage/Usage.tsx | 2 +- .../interfaces/OrganizationInvite/OrganizationInvite.tsx | 2 +- .../interfaces/OrganizationInvite/OrganizationInviteError.tsx | 2 +- .../interfaces/Platform/Webhooks/PlatformWebhooksPage.tsx | 2 +- apps/studio/components/interfaces/Project/APIKeys.tsx | 2 +- .../interfaces/ProjectCreation/AdvancedConfiguration.tsx | 2 +- .../interfaces/ProjectCreation/FreeProjectLimitWarning.tsx | 2 +- .../interfaces/ProjectCreation/ProjectCreationForm.tsx | 2 +- .../components/interfaces/ProjectCreation/RegionSelector.tsx | 2 +- .../components/interfaces/ProjectCreation/SecurityOptions.tsx | 2 +- .../components/interfaces/QueryPerformance/QueryIndexes.tsx | 2 +- .../interfaces/QueryPerformance/QueryPerformanceGrid.tsx | 2 +- .../QueryPerformance/WithStatements/WithStatements.tsx | 2 +- .../components/interfaces/Realtime/RealtimeSettings.tsx | 2 +- .../components/interfaces/RedeemCredits/RedeemCredits.tsx | 2 +- apps/studio/components/interfaces/SQLEditor/MonacoEditor.tsx | 2 +- .../interfaces/SQLEditor/UtilityPanel/ChartConfig.tsx | 2 +- .../components/interfaces/Settings/API/PostgrestConfig.tsx | 2 +- apps/studio/components/interfaces/Settings/Addons/Addons.tsx | 2 +- .../components/interfaces/Settings/Addons/IPv4SidePanel.tsx | 2 +- .../Settings/Database/ConnectionPooling/ConnectionPooling.tsx | 2 +- .../Database/JitDatabaseAccess/JitDbAccessConfiguration.tsx | 2 +- .../Database/JitDatabaseAccess/JitDbAccessDeleteDialog.tsx | 2 +- .../Database/JitDatabaseAccess/JitDbAccessRoleGrantFields.tsx | 2 +- .../Database/JitDatabaseAccess/JitDbAccessRuleSheet.tsx | 2 +- .../Database/NetworkRestrictions/RemoveRestrictionModal.tsx | 2 +- .../interfaces/Settings/Database/SSLConfiguration.tsx | 2 +- .../General/CustomDomainConfig/CustomDomainActivate.tsx | 2 +- .../General/CustomDomainConfig/CustomDomainVerify.tsx | 2 +- .../interfaces/Settings/General/DashboardPreferences.tsx | 2 +- .../studio/components/interfaces/Settings/General/General.tsx | 2 +- .../Settings/General/Infrastructure/ProjectUpgradeAlert.tsx | 2 +- .../General/TransferProjectPanel/TransferProjectButton.tsx | 2 +- .../Settings/Infrastructure/InfrastructureActivity.tsx | 2 +- .../interfaces/Settings/Infrastructure/InfrastructureInfo.tsx | 2 +- .../interfaces/Settings/Infrastructure/UpgradeWarnings.tsx | 2 +- .../Integrations/AWSPrivateLink/AWSPrivateLinkForm.tsx | 2 +- .../GithubIntegration/GitHubIntegrationConnectionForm.tsx | 2 +- .../interfaces/Settings/Integrations/IntegrationsSettings.tsx | 2 +- .../VercelIntegration/VercelIntegrationConnectionForm.tsx | 2 +- .../interfaces/Settings/Logs/LogsExplorerOtelBanner.tsx | 2 +- .../components/interfaces/SignIn/ForgotPasswordWizard.tsx | 2 +- .../AnalyticsBucketDetails/BucketCallouts.tsx | 2 +- .../AnalyticsBucketDetails/SimpleConfigurationDetails.tsx | 2 +- .../AnalyticsBucketDetails/UpdateCatalogTokenDialog.tsx | 2 +- .../Storage/AnalyticsBuckets/CreateAnalyticsBucketForm.tsx | 2 +- .../interfaces/Storage/BucketsPickerDialog/BucketsPicker.tsx | 2 +- .../components/interfaces/Storage/CreateBucketModal.tsx | 2 +- apps/studio/components/interfaces/Storage/EditBucketModal.tsx | 2 +- .../studio/components/interfaces/Storage/EmptyBucketModal.tsx | 2 +- .../components/interfaces/Storage/FilesBuckets/index.tsx | 2 +- .../components/interfaces/Storage/PublicBucketWarning.tsx | 2 +- .../components/interfaces/Storage/StorageBucketsError.tsx | 2 +- .../interfaces/Storage/StorageSettings/StorageSettings.tsx | 2 +- .../Storage/VectorBuckets/CreateVectorBucketDialog.tsx | 2 +- .../Storage/VectorBuckets/CreateVectorTableSheet.tsx | 2 +- .../VectorBucketDetails/VectorBucketCallouts.tsx | 2 +- .../VectorBucketDetails/VectorBucketTableExamplesSheet.tsx | 2 +- .../Storage/VectorBuckets/VectorBucketsLocalDisabledState.tsx | 2 +- .../components/interfaces/Support/CategoryAndSeverityInfo.tsx | 2 +- .../components/interfaces/Support/IncidentAdmonition.tsx | 2 +- .../components/interfaces/Support/LinkSupportTicketPage.tsx | 2 +- apps/studio/components/interfaces/Support/MessageField.tsx | 2 +- .../components/interfaces/Support/ProjectAndPlanInfo.tsx | 2 +- apps/studio/components/interfaces/Support/SupportFormPage.tsx | 2 +- .../SupportEmailVerification/SupportEmailVerification.tsx | 2 +- .../SidePanelEditor/TableEditor/ApiAccessToggle.tsx | 2 +- .../SidePanelEditor/TableEditor/TableEditor.tsx | 2 +- .../components/interfaces/TableGridEditor/TableGridEditor.tsx | 2 +- .../LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx | 2 +- .../layouts/Navigation/LayoutHeader/LocalVersionPopover.tsx | 2 +- .../layouts/ProjectLayout/PausedState/PauseDisabledState.tsx | 2 +- .../components/layouts/ProjectLayout/RestoringState.tsx | 2 +- apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx | 2 +- .../components/ui/AIAssistantPanel/AIAssistantHeader.tsx | 2 +- apps/studio/components/ui/AlertError.tsx | 2 +- apps/studio/components/ui/AlphaNotice.tsx | 2 +- apps/studio/components/ui/AutoEnableRLSNotice.tsx | 2 +- .../components/ui/EdgeFunctionBlock/EdgeFunctionBlock.tsx | 2 +- apps/studio/components/ui/EditorPanel/EditorPanel.tsx | 2 +- .../ui/ErrorBoundary/ClientSideExceptionHandler.tsx | 2 +- .../HighAvailabilityDisabledSectionNotice.tsx | 2 +- apps/studio/components/ui/HighQueryCost.tsx | 2 +- apps/studio/components/ui/NoPermission.tsx | 2 +- apps/studio/components/ui/ProjectUpgradeFailedBanner.tsx | 2 +- apps/studio/components/ui/SqlWarningAdmonition.tsx | 2 +- apps/studio/components/ui/UnknownInterface.tsx | 2 +- apps/studio/components/ui/UpgradeToPro.tsx | 2 +- apps/studio/pages/account/security.tsx | 2 +- apps/studio/pages/claim-project.tsx | 2 +- apps/studio/pages/cli/login.tsx | 2 +- apps/studio/pages/integrations/vercel/install.tsx | 2 +- apps/studio/pages/org/[slug]/index.tsx | 2 +- apps/studio/pages/partners/stripe/projects/login.tsx | 2 +- .../pages/project/[ref]/auth/templates/[templateId].tsx | 2 +- apps/studio/pages/project/[ref]/database/backups/pitr.tsx | 2 +- .../studio/pages/project/[ref]/database/backups/scheduled.tsx | 2 +- apps/studio/pages/project/[ref]/functions/index.tsx | 2 +- apps/studio/pages/project/[ref]/functions/secrets.tsx | 2 +- .../[ref]/integrations/[id]/[pageId]/[childId]/index.tsx | 2 +- apps/studio/pages/project/[ref]/merge.tsx | 2 +- .../pages/project/[ref]/observability/query-performance.tsx | 2 +- apps/studio/pages/project/[ref]/settings/api-keys/index.tsx | 2 +- apps/studio/pages/project/[ref]/sql/[id].tsx | 2 +- apps/www/app/partners/catalog/[slug]/PartnerCatalogDetail.tsx | 2 +- apps/www/components/Contribute/UnansweredThreads.tsx | 3 ++- apps/www/lib/mdx/mdxComponents.tsx | 2 +- apps/www/pages/opt-out/[ref].tsx | 2 +- packages/ui-patterns/package.json | 4 ---- packages/ui-patterns/src/Dialogs/ConfirmationModal.tsx | 2 +- packages/ui-patterns/src/Dialogs/TextConfirmModal.tsx | 2 +- packages/ui-patterns/src/ErrorDisplay/ErrorDisplay.tsx | 2 +- packages/ui-patterns/src/PrivacySettings/index.tsx | 2 +- packages/ui-patterns/src/SqlToRest/index.tsx | 2 +- packages/ui-patterns/src/admonition.tsx | 4 ---- 253 files changed, 252 insertions(+), 259 deletions(-) delete mode 100644 packages/ui-patterns/src/admonition.tsx diff --git a/apps/design-system/components/mdx-components.tsx b/apps/design-system/components/mdx-components.tsx index c7b5f7cfae1be..840ed1b101603 100644 --- a/apps/design-system/components/mdx-components.tsx +++ b/apps/design-system/components/mdx-components.tsx @@ -21,7 +21,7 @@ import { TabsList, TabsTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ComponentProps } from './component-props' import { SonnerExpandConfig } from './sonner-expand-config' diff --git a/apps/design-system/content/docs/fragments/admonition.mdx b/apps/design-system/content/docs/fragments/admonition.mdx index 3b4221424d04e..8e5752ca4b2c3 100644 --- a/apps/design-system/content/docs/fragments/admonition.mdx +++ b/apps/design-system/content/docs/fragments/admonition.mdx @@ -24,7 +24,7 @@ Avoid title-only Admonitions in new code. A callout with `title` should also inc ## Usage ```tsx -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' ``` ```tsx diff --git a/apps/design-system/registry/default/example/admonition-button-split.tsx b/apps/design-system/registry/default/example/admonition-button-split.tsx index 3432c96f5c515..edd0ef32a74bf 100644 --- a/apps/design-system/registry/default/example/admonition-button-split.tsx +++ b/apps/design-system/registry/default/example/admonition-button-split.tsx @@ -6,7 +6,7 @@ import { DropdownMenuItem, DropdownMenuTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export default function AdmonitionButtonSplitDemo() { return ( diff --git a/apps/design-system/registry/default/example/admonition-button.tsx b/apps/design-system/registry/default/example/admonition-button.tsx index 2296942ff605c..0eab627e767d9 100644 --- a/apps/design-system/registry/default/example/admonition-button.tsx +++ b/apps/design-system/registry/default/example/admonition-button.tsx @@ -1,5 +1,5 @@ import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export default function AdmonitionDemo() { return ( diff --git a/apps/design-system/registry/default/example/admonition-demo.tsx b/apps/design-system/registry/default/example/admonition-demo.tsx index 78e8a2300ff92..3b40709ad6cd9 100644 --- a/apps/design-system/registry/default/example/admonition-demo.tsx +++ b/apps/design-system/registry/default/example/admonition-demo.tsx @@ -1,5 +1,5 @@ import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export default function AdmonitionDemo() { return ( diff --git a/apps/design-system/registry/default/example/admonition-description-only.tsx b/apps/design-system/registry/default/example/admonition-description-only.tsx index 319432ad8f977..d19981890da32 100644 --- a/apps/design-system/registry/default/example/admonition-description-only.tsx +++ b/apps/design-system/registry/default/example/admonition-description-only.tsx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export default function AdmonitionDescriptionOnly() { return ( diff --git a/apps/design-system/registry/default/example/admonition-destructive.tsx b/apps/design-system/registry/default/example/admonition-destructive.tsx index 261ac5e9b3202..f2a0674b1fba3 100644 --- a/apps/design-system/registry/default/example/admonition-destructive.tsx +++ b/apps/design-system/registry/default/example/admonition-destructive.tsx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export default function AdmonitionDestructive() { return ( diff --git a/apps/design-system/registry/default/example/admonition-responsive.tsx b/apps/design-system/registry/default/example/admonition-responsive.tsx index 30b2d481ff82f..32d796acdb9c9 100644 --- a/apps/design-system/registry/default/example/admonition-responsive.tsx +++ b/apps/design-system/registry/default/example/admonition-responsive.tsx @@ -1,5 +1,5 @@ import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export default function AdmonitionDemo() { return ( diff --git a/apps/design-system/registry/default/example/admonition-sandwiched.tsx b/apps/design-system/registry/default/example/admonition-sandwiched.tsx index 34dec85eeb877..2b61a58ff5d34 100644 --- a/apps/design-system/registry/default/example/admonition-sandwiched.tsx +++ b/apps/design-system/registry/default/example/admonition-sandwiched.tsx @@ -1,5 +1,5 @@ import { Button, Card, CardContent, CardHeader, CardTitle } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export default function AdmonitionDemo() { return ( diff --git a/apps/design-system/registry/default/example/admonition-success.tsx b/apps/design-system/registry/default/example/admonition-success.tsx index 70c8d25a2d5b3..befbeb27276b8 100644 --- a/apps/design-system/registry/default/example/admonition-success.tsx +++ b/apps/design-system/registry/default/example/admonition-success.tsx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export default function AdmonitionSuccess() { return ( diff --git a/apps/design-system/registry/default/example/admonition-warning.tsx b/apps/design-system/registry/default/example/admonition-warning.tsx index 0c50b1c174c2e..d2be2965d1c49 100644 --- a/apps/design-system/registry/default/example/admonition-warning.tsx +++ b/apps/design-system/registry/default/example/admonition-warning.tsx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export default function AdmonitionWarning() { return ( diff --git a/apps/design-system/registry/default/example/alert-dialog-async-error.tsx b/apps/design-system/registry/default/example/alert-dialog-async-error.tsx index 188a256861a51..f325cfaa194d3 100644 --- a/apps/design-system/registry/default/example/alert-dialog-async-error.tsx +++ b/apps/design-system/registry/default/example/alert-dialog-async-error.tsx @@ -12,7 +12,7 @@ import { AlertDialogTrigger, Button, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' const resetTemplate = async () => { await new Promise((resolve) => setTimeout(resolve, 1200)) diff --git a/apps/design-system/registry/default/example/connect-interstitial-logo-single.tsx b/apps/design-system/registry/default/example/connect-interstitial-logo-single.tsx index 7e8fb7b0c5af6..b9d05ce7f5b94 100644 --- a/apps/design-system/registry/default/example/connect-interstitial-logo-single.tsx +++ b/apps/design-system/registry/default/example/connect-interstitial-logo-single.tsx @@ -1,5 +1,5 @@ import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { AccountRow, InterstitialShell, SupabaseLogo } from './connect-interstitial-shared' diff --git a/apps/design-system/registry/default/example/empty-state-missing-route.tsx b/apps/design-system/registry/default/example/empty-state-missing-route.tsx index 5f5c716b9a619..179294876f9db 100644 --- a/apps/design-system/registry/default/example/empty-state-missing-route.tsx +++ b/apps/design-system/registry/default/example/empty-state-missing-route.tsx @@ -1,6 +1,6 @@ import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' const bucketId = 'user_avatars' diff --git a/apps/design-system/registry/default/example/page-layout-auth-emails.tsx b/apps/design-system/registry/default/example/page-layout-auth-emails.tsx index a22d08ae78ac4..85109da874dd5 100644 --- a/apps/design-system/registry/default/example/page-layout-auth-emails.tsx +++ b/apps/design-system/registry/default/example/page-layout-auth-emails.tsx @@ -27,7 +27,7 @@ import { NavMenuItem, Switch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { PageBreadcrumbs } from 'ui-patterns/PageBreadcrumbs' import { PageContainer } from 'ui-patterns/PageContainer' diff --git a/apps/docs/components/AppleSecretGenerator/AppleSecretGenerator.tsx b/apps/docs/components/AppleSecretGenerator/AppleSecretGenerator.tsx index 4f6e3145131b6..e6e942bd9b452 100644 --- a/apps/docs/components/AppleSecretGenerator/AppleSecretGenerator.tsx +++ b/apps/docs/components/AppleSecretGenerator/AppleSecretGenerator.tsx @@ -1,6 +1,6 @@ import { useState } from 'react' import { Button, Input } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input as DataInput } from 'ui-patterns/DataInputs/Input' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' diff --git a/apps/docs/components/AuthSmsProviderConfig/MessageBirdConfig.mdx b/apps/docs/components/AuthSmsProviderConfig/MessageBirdConfig.mdx index 248e71f417d72..d76442a7d7894 100644 --- a/apps/docs/components/AuthSmsProviderConfig/MessageBirdConfig.mdx +++ b/apps/docs/components/AuthSmsProviderConfig/MessageBirdConfig.mdx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' diff --git a/apps/docs/components/AuthSmsProviderConfig/TextLocalConfig.mdx b/apps/docs/components/AuthSmsProviderConfig/TextLocalConfig.mdx index e37f7396a8262..afb89001d4e5a 100644 --- a/apps/docs/components/AuthSmsProviderConfig/TextLocalConfig.mdx +++ b/apps/docs/components/AuthSmsProviderConfig/TextLocalConfig.mdx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' ## Prerequisites diff --git a/apps/docs/components/AuthSmsProviderConfig/TwilioConfig.mdx b/apps/docs/components/AuthSmsProviderConfig/TwilioConfig.mdx index 371b9fd047521..cc91bacfaf97f 100644 --- a/apps/docs/components/AuthSmsProviderConfig/TwilioConfig.mdx +++ b/apps/docs/components/AuthSmsProviderConfig/TwilioConfig.mdx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' ## Prerequisites diff --git a/apps/docs/components/AuthSmsProviderConfig/VonageConfig.mdx b/apps/docs/components/AuthSmsProviderConfig/VonageConfig.mdx index 78f1dfdd534a3..db35b7d1c240d 100644 --- a/apps/docs/components/AuthSmsProviderConfig/VonageConfig.mdx +++ b/apps/docs/components/AuthSmsProviderConfig/VonageConfig.mdx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' ## Prerequisites diff --git a/apps/docs/components/WrapperDashboardIntegration.tsx b/apps/docs/components/WrapperDashboardIntegration.tsx index 8ec6fcd727dc5..4e423f93b2aa8 100644 --- a/apps/docs/components/WrapperDashboardIntegration.tsx +++ b/apps/docs/components/WrapperDashboardIntegration.tsx @@ -1,6 +1,6 @@ import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export function WrapperDashboardIntegration({ title, path }: { title: string; path: string }) { return ( diff --git a/apps/docs/features/directives/CodeSample.client.tsx b/apps/docs/features/directives/CodeSample.client.tsx index 61542c0ff6a3a..9e39a2c1701dd 100644 --- a/apps/docs/features/directives/CodeSample.client.tsx +++ b/apps/docs/features/directives/CodeSample.client.tsx @@ -3,7 +3,7 @@ import Link from 'next/link' import { useState, type PropsWithChildren } from 'react' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export function CodeSampleDummy() { return ( diff --git a/apps/docs/features/docs/MdxBase.shared.tsx b/apps/docs/features/docs/MdxBase.shared.tsx index 8d47edbeb131d..7c9dc4372c71e 100644 --- a/apps/docs/features/docs/MdxBase.shared.tsx +++ b/apps/docs/features/docs/MdxBase.shared.tsx @@ -34,7 +34,7 @@ import { ArrowDown, Check, X } from 'lucide-react' import Link from 'next/link' import { type ComponentPropsWithoutRef } from 'react' import { Badge, Button } from 'ui' -import { Admonition, type AdmonitionProps } from 'ui-patterns/admonition' +import { Admonition, type AdmonitionProps } from 'ui-patterns/Admonition' import { GlassPanel } from 'ui-patterns/GlassPanel' import { IconPanel } from 'ui-patterns/IconPanel' import SqlToRest from 'ui-patterns/SqlToRest' diff --git a/apps/docs/features/ui/McpConfigPanel.tsx b/apps/docs/features/ui/McpConfigPanel.tsx index b4de568600e32..f7bece0a60d4d 100644 --- a/apps/docs/features/ui/McpConfigPanel.tsx +++ b/apps/docs/features/ui/McpConfigPanel.tsx @@ -23,7 +23,7 @@ import { PopoverTrigger, ScrollArea, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { createMcpCopyHandler, McpConfigPanel as McpConfigPanelBase, diff --git a/apps/docs/lib/mdx/plugins/remarkAdmonition.ts b/apps/docs/lib/mdx/plugins/remarkAdmonition.ts index 74fbcf4bb518b..fcdd3db06ec21 100644 --- a/apps/docs/lib/mdx/plugins/remarkAdmonition.ts +++ b/apps/docs/lib/mdx/plugins/remarkAdmonition.ts @@ -1,6 +1,6 @@ import type { BlockContent, Content, Paragraph, Root } from 'mdast' import type { MdxJsxFlowElement } from 'mdast-util-mdx' -import type { AdmonitionProps } from 'ui-patterns/admonition' +import type { AdmonitionProps } from 'ui-patterns/Admonition' import type { Node } from 'unist' import { visit } from 'unist-util-visit' diff --git a/apps/lite-studio/app/routes/projects.$ref.tsx b/apps/lite-studio/app/routes/projects.$ref.tsx index 3605a8f0224b3..5a6ace7ad705d 100644 --- a/apps/lite-studio/app/routes/projects.$ref.tsx +++ b/apps/lite-studio/app/routes/projects.$ref.tsx @@ -14,7 +14,7 @@ import { TabsList, TabsTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { PageHeader, PageHeaderDescription, diff --git a/apps/studio/components/grid/MsSqlValidation.tsx b/apps/studio/components/grid/MsSqlValidation.tsx index 8a5a92fff5735..befb1a9100a78 100644 --- a/apps/studio/components/grid/MsSqlValidation.tsx +++ b/apps/studio/components/grid/MsSqlValidation.tsx @@ -1,5 +1,5 @@ import type { ComponentType, ReactNode } from 'react' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import type { Filter, Sort } from './types' import { isMsSqlForeignTable, type Entity } from '@/data/table-editor/table-editor-types' diff --git a/apps/studio/components/grid/components/grid/GridError.tsx b/apps/studio/components/grid/components/grid/GridError.tsx index 955dd170d9b41..3af62b209bb2d 100644 --- a/apps/studio/components/grid/components/grid/GridError.tsx +++ b/apps/studio/components/grid/components/grid/GridError.tsx @@ -3,7 +3,7 @@ import { useParams } from 'common' import { ChevronDown } from 'lucide-react' import { useCallback } from 'react' import { Button, Collapsible, CollapsibleContent, CollapsibleTrigger } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { isFilterRelatedError } from './GridError.utils' import { useTableFilter } from '@/components/grid/hooks/useTableFilter' diff --git a/apps/studio/components/grid/components/header/ExportDialog.tsx b/apps/studio/components/grid/components/header/ExportDialog.tsx index 2553eefde3214..3f881e5fa2dfd 100644 --- a/apps/studio/components/grid/components/header/ExportDialog.tsx +++ b/apps/studio/components/grid/components/header/ExportDialog.tsx @@ -15,7 +15,7 @@ import { TabsList, TabsTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { CodeBlock } from 'ui-patterns/CodeBlock' import { Filter, Sort, SupaTable } from '@/components/grid/types' diff --git a/apps/studio/components/interfaces/APIKeys/CreateNewAPIKeysButton.tsx b/apps/studio/components/interfaces/APIKeys/CreateNewAPIKeysButton.tsx index bb22c34e8280f..bc7d2d67e6fcc 100644 --- a/apps/studio/components/interfaces/APIKeys/CreateNewAPIKeysButton.tsx +++ b/apps/studio/components/interfaces/APIKeys/CreateNewAPIKeysButton.tsx @@ -13,7 +13,7 @@ import { AlertDialogTitle, Button, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useAPIKeyCreateMutation } from '@/data/api-keys/api-key-create-mutation' diff --git a/apps/studio/components/interfaces/APIKeys/PublishableAPIKeys.tsx b/apps/studio/components/interfaces/APIKeys/PublishableAPIKeys.tsx index b594ae89e54be..0c4b3ecfb5280 100644 --- a/apps/studio/components/interfaces/APIKeys/PublishableAPIKeys.tsx +++ b/apps/studio/components/interfaces/APIKeys/PublishableAPIKeys.tsx @@ -13,7 +13,7 @@ import { TableHeader, TableRow, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { APIKeyRow } from './APIKeyRow' diff --git a/apps/studio/components/interfaces/Account/AccessTokens/AccessTokenNewBanner/AccessTokenNewBanner.tsx b/apps/studio/components/interfaces/Account/AccessTokens/AccessTokenNewBanner/AccessTokenNewBanner.tsx index 2046c267ba3ae..d88ea7f2698dc 100644 --- a/apps/studio/components/interfaces/Account/AccessTokens/AccessTokenNewBanner/AccessTokenNewBanner.tsx +++ b/apps/studio/components/interfaces/Account/AccessTokens/AccessTokenNewBanner/AccessTokenNewBanner.tsx @@ -1,7 +1,7 @@ import { X } from 'lucide-react' import { toast } from 'sonner' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { useGroupedPermissions } from '../hooks/useGroupedPermissions' diff --git a/apps/studio/components/interfaces/Account/AccessTokens/Classic/NewTokenDialog.tsx b/apps/studio/components/interfaces/Account/AccessTokens/Classic/NewTokenDialog.tsx index fb289f932edbc..b66bc48a412d0 100644 --- a/apps/studio/components/interfaces/Account/AccessTokens/Classic/NewTokenDialog.tsx +++ b/apps/studio/components/interfaces/Account/AccessTokens/Classic/NewTokenDialog.tsx @@ -24,7 +24,7 @@ import { SelectValue, WarningIcon, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { z } from 'zod' diff --git a/apps/studio/components/interfaces/Account/AccessTokens/Scoped/NewScopedTokenSheet.tsx b/apps/studio/components/interfaces/Account/AccessTokens/Scoped/NewScopedTokenSheet.tsx index 31efd63cd9b55..0288f218f3342 100644 --- a/apps/studio/components/interfaces/Account/AccessTokens/Scoped/NewScopedTokenSheet.tsx +++ b/apps/studio/components/interfaces/Account/AccessTokens/Scoped/NewScopedTokenSheet.tsx @@ -17,7 +17,7 @@ import { SheetHeader, SheetTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { CUSTOM_EXPIRY_VALUE, diff --git a/apps/studio/components/interfaces/Advisors/CreateRuleSheet.tsx b/apps/studio/components/interfaces/Advisors/CreateRuleSheet.tsx index ceef2a9f4729f..f188769bf9fa1 100644 --- a/apps/studio/components/interfaces/Advisors/CreateRuleSheet.tsx +++ b/apps/studio/components/interfaces/Advisors/CreateRuleSheet.tsx @@ -27,7 +27,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import * as z from 'zod' diff --git a/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Approved.tsx b/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Approved.tsx index 5ca755035e2b5..d44e05044ef5b 100644 --- a/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Approved.tsx +++ b/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Approved.tsx @@ -1,6 +1,6 @@ import dayjs from 'dayjs' import type { ReactNode } from 'react' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { AuthorizeConnectLogo, diff --git a/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Error.tsx b/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Error.tsx index 1789962add40d..7aa0935ad0c29 100644 --- a/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Error.tsx +++ b/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Error.tsx @@ -1,7 +1,7 @@ import Link from 'next/link' import type { ReactNode } from 'react' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { InterstitialLayout, SupabaseLogo } from '@/components/layouts/InterstitialLayout' import type { ResourceError } from '@/data/api-authorization/api-authorization-query' diff --git a/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Form.tsx b/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Form.tsx index 17b9c1cb8e301..334ffc539a7ac 100644 --- a/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Form.tsx +++ b/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Form.tsx @@ -15,7 +15,7 @@ import { SelectTrigger, SelectValue, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import type { ApprovalState, IApprovalFormSchema } from './ApiAuthorization.Schema' diff --git a/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Invalid.tsx b/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Invalid.tsx index 66c2f0c7c519c..5759641e5592c 100644 --- a/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Invalid.tsx +++ b/apps/studio/components/interfaces/ApiAuthorization/ApiAuthorization.Invalid.tsx @@ -1,7 +1,7 @@ import Link from 'next/link' import type { ReactNode } from 'react' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { InterstitialLayout, SupabaseLogo } from '@/components/layouts/InterstitialLayout' diff --git a/apps/studio/components/interfaces/Auth/AuditLogsForm.tsx b/apps/studio/components/interfaces/Auth/AuditLogsForm.tsx index 7715bf6ca478a..94c27c95537d2 100644 --- a/apps/studio/components/interfaces/Auth/AuditLogsForm.tsx +++ b/apps/studio/components/interfaces/Auth/AuditLogsForm.tsx @@ -5,7 +5,7 @@ import { useEffect } from 'react' import { useForm } from 'react-hook-form' import { toast } from 'sonner' import { Button, Card, CardContent, CardFooter, Form, FormControl, FormField, Switch } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { PageSection, diff --git a/apps/studio/components/interfaces/Auth/AuthProvidersForm/ProviderForm.tsx b/apps/studio/components/interfaces/Auth/AuthProvidersForm/ProviderForm.tsx index 673a94855ad0b..06e8cd5edd5b6 100644 --- a/apps/studio/components/interfaces/Auth/AuthProvidersForm/ProviderForm.tsx +++ b/apps/studio/components/interfaces/Auth/AuthProvidersForm/ProviderForm.tsx @@ -18,7 +18,7 @@ import { SheetSection, SheetTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' diff --git a/apps/studio/components/interfaces/Auth/CustomAuthProviders/CustomAuthProvidersList.tsx b/apps/studio/components/interfaces/Auth/CustomAuthProviders/CustomAuthProvidersList.tsx index a2a71318107b2..ade0cd694ace0 100644 --- a/apps/studio/components/interfaces/Auth/CustomAuthProviders/CustomAuthProvidersList.tsx +++ b/apps/studio/components/interfaces/Auth/CustomAuthProviders/CustomAuthProvidersList.tsx @@ -26,7 +26,7 @@ import { TableHeadSort, TableRow, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { CreateOrUpdateCustomProviderSheet } from './CreateOrUpdateCustomProviderSheet' diff --git a/apps/studio/components/interfaces/Auth/EmailTemplates/CustomEmailTemplateRestrictionAdmonition.tsx b/apps/studio/components/interfaces/Auth/EmailTemplates/CustomEmailTemplateRestrictionAdmonition.tsx index d7cd05b278149..63a04b6ced915 100644 --- a/apps/studio/components/interfaces/Auth/EmailTemplates/CustomEmailTemplateRestrictionAdmonition.tsx +++ b/apps/studio/components/interfaces/Auth/EmailTemplates/CustomEmailTemplateRestrictionAdmonition.tsx @@ -8,7 +8,7 @@ import { DropdownMenuItem, DropdownMenuTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization' diff --git a/apps/studio/components/interfaces/Auth/EmailTemplates/EmailTemplates.tsx b/apps/studio/components/interfaces/Auth/EmailTemplates/EmailTemplates.tsx index 5f503ec80ad56..ca2ce5edff4a1 100644 --- a/apps/studio/components/interfaces/Auth/EmailTemplates/EmailTemplates.tsx +++ b/apps/studio/components/interfaces/Auth/EmailTemplates/EmailTemplates.tsx @@ -7,7 +7,7 @@ import { useEffect } from 'react' import { useForm } from 'react-hook-form' import { toast } from 'sonner' import { Button, Card, CardContent, CardFooter, Form, FormControl, FormField, Switch } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { PageSection, PageSectionContent, diff --git a/apps/studio/components/interfaces/Auth/EmailTemplates/ResetTemplateDialog.tsx b/apps/studio/components/interfaces/Auth/EmailTemplates/ResetTemplateDialog.tsx index 233e993f0421a..e613873104b79 100644 --- a/apps/studio/components/interfaces/Auth/EmailTemplates/ResetTemplateDialog.tsx +++ b/apps/studio/components/interfaces/Auth/EmailTemplates/ResetTemplateDialog.tsx @@ -15,7 +15,7 @@ import { AlertDialogTrigger, Button, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { type AuthTemplate } from './EmailTemplates.types' import { getAuthTemplateType } from './EmailTemplates.utils' diff --git a/apps/studio/components/interfaces/Auth/EmailTemplates/SendEmailHookActiveAdmonition.tsx b/apps/studio/components/interfaces/Auth/EmailTemplates/SendEmailHookActiveAdmonition.tsx index 85aeb69b711bc..4f733d0fe59f5 100644 --- a/apps/studio/components/interfaces/Auth/EmailTemplates/SendEmailHookActiveAdmonition.tsx +++ b/apps/studio/components/interfaces/Auth/EmailTemplates/SendEmailHookActiveAdmonition.tsx @@ -1,7 +1,7 @@ import { useParams } from 'common' import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { InlineLink } from '@/components/ui/InlineLink' import { DOCS_URL } from '@/lib/constants' diff --git a/apps/studio/components/interfaces/Auth/EmailTemplates/SpamValidation.tsx b/apps/studio/components/interfaces/Auth/EmailTemplates/SpamValidation.tsx index 0538087f09975..6ba73ea496273 100644 --- a/apps/studio/components/interfaces/Auth/EmailTemplates/SpamValidation.tsx +++ b/apps/studio/components/interfaces/Auth/EmailTemplates/SpamValidation.tsx @@ -1,6 +1,6 @@ import { AnimatePresence, motion } from 'framer-motion' import { CardContent, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Markdown } from '@/components/interfaces/Markdown' import { ValidateSpamResponse } from '@/data/auth/validate-spam-mutation' diff --git a/apps/studio/components/interfaces/Auth/EmailTemplates/TemplateEditor.tsx b/apps/studio/components/interfaces/Auth/EmailTemplates/TemplateEditor.tsx index dadfc4561dea3..e3eeeb8abb2b0 100644 --- a/apps/studio/components/interfaces/Auth/EmailTemplates/TemplateEditor.tsx +++ b/apps/studio/components/interfaces/Auth/EmailTemplates/TemplateEditor.tsx @@ -19,7 +19,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import z from 'zod' diff --git a/apps/studio/components/interfaces/Auth/Hooks/CreateHookSheet.tsx b/apps/studio/components/interfaces/Auth/Hooks/CreateHookSheet.tsx index 8b2561a7c6530..4495b281c8c91 100644 --- a/apps/studio/components/interfaces/Auth/Hooks/CreateHookSheet.tsx +++ b/apps/studio/components/interfaces/Auth/Hooks/CreateHookSheet.tsx @@ -27,7 +27,7 @@ import { SheetTitle, Switch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { InfoTooltip } from 'ui-patterns/info-tooltip' import * as z from 'zod' diff --git a/apps/studio/components/interfaces/Auth/OAuthApps/NewOAuthAppBanner.tsx b/apps/studio/components/interfaces/Auth/OAuthApps/NewOAuthAppBanner.tsx index 96554d1f4e319..61fa445a04302 100644 --- a/apps/studio/components/interfaces/Auth/OAuthApps/NewOAuthAppBanner.tsx +++ b/apps/studio/components/interfaces/Auth/OAuthApps/NewOAuthAppBanner.tsx @@ -2,7 +2,7 @@ import type { OAuthClient } from '@supabase/supabase-js' import { X } from 'lucide-react' import { toast } from 'sonner' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' interface NewOAuthAppBannerProps { diff --git a/apps/studio/components/interfaces/Auth/OAuthApps/OAuthAppsList.tsx b/apps/studio/components/interfaces/Auth/OAuthApps/OAuthAppsList.tsx index 5a85a8a018301..66d689a2ca4ef 100644 --- a/apps/studio/components/interfaces/Auth/OAuthApps/OAuthAppsList.tsx +++ b/apps/studio/components/interfaces/Auth/OAuthApps/OAuthAppsList.tsx @@ -24,7 +24,7 @@ import { TableHeadSort, TableRow, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { TimestampInfo } from 'ui-patterns/TimestampInfo' diff --git a/apps/studio/components/interfaces/Auth/OAuthApps/OAuthServerSettingsForm.tsx b/apps/studio/components/interfaces/Auth/OAuthApps/OAuthServerSettingsForm.tsx index 9c77405434d7b..0ecd8ea5d033b 100644 --- a/apps/studio/components/interfaces/Auth/OAuthApps/OAuthServerSettingsForm.tsx +++ b/apps/studio/components/interfaces/Auth/OAuthApps/OAuthServerSettingsForm.tsx @@ -16,7 +16,7 @@ import { Input, Switch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { PageSection, PageSectionContent } from 'ui-patterns/PageSection' diff --git a/apps/studio/components/interfaces/Auth/SmtpForm/SmtpForm.tsx b/apps/studio/components/interfaces/Auth/SmtpForm/SmtpForm.tsx index b2570e7036791..997cec88e847d 100644 --- a/apps/studio/components/interfaces/Auth/SmtpForm/SmtpForm.tsx +++ b/apps/studio/components/interfaces/Auth/SmtpForm/SmtpForm.tsx @@ -19,7 +19,7 @@ import { InputGroupText, Switch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input as PasswordInput } from 'ui-patterns/DataInputs/Input' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { PageSection, PageSectionContent } from 'ui-patterns/PageSection' diff --git a/apps/studio/components/interfaces/Auth/Users/UserLogs.tsx b/apps/studio/components/interfaces/Auth/Users/UserLogs.tsx index beaa3fcd4fbb6..574f355de8e3d 100644 --- a/apps/studio/components/interfaces/Auth/Users/UserLogs.tsx +++ b/apps/studio/components/interfaces/Auth/Users/UserLogs.tsx @@ -4,7 +4,7 @@ import Link from 'next/link' import { useQueryState } from 'nuqs' import { useEffect } from 'react' import { Button, cn, CriticalIcon, Separator } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { TimestampInfo } from 'ui-patterns/TimestampInfo' diff --git a/apps/studio/components/interfaces/Auth/Users/UserOverview.tsx b/apps/studio/components/interfaces/Auth/Users/UserOverview.tsx index 2b7808c3da2a2..1a4da14e9e042 100644 --- a/apps/studio/components/interfaces/Auth/Users/UserOverview.tsx +++ b/apps/studio/components/interfaces/Auth/Users/UserOverview.tsx @@ -6,7 +6,7 @@ import Link from 'next/link' import { ComponentProps, ReactNode, useEffect, useState } from 'react' import { toast } from 'sonner' import { Button, cn, Separator } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { PROVIDERS_SCHEMAS } from '../AuthProvidersFormValidation' diff --git a/apps/studio/components/interfaces/Billing/NoProjectsOnPaidOrgInfo.tsx b/apps/studio/components/interfaces/Billing/NoProjectsOnPaidOrgInfo.tsx index 1686bdf5b0f33..471917a2ca22f 100644 --- a/apps/studio/components/interfaces/Billing/NoProjectsOnPaidOrgInfo.tsx +++ b/apps/studio/components/interfaces/Billing/NoProjectsOnPaidOrgInfo.tsx @@ -1,5 +1,5 @@ import Link from 'next/link' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useOrgProjectsInfiniteQuery } from '@/data/projects/org-projects-infinite-query' import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization' diff --git a/apps/studio/components/interfaces/Billing/Payment/PaymentMethods/DeletePaymentMethodModal.tsx b/apps/studio/components/interfaces/Billing/Payment/PaymentMethods/DeletePaymentMethodModal.tsx index 5d70043695bd7..d8d83b3a8ec3c 100644 --- a/apps/studio/components/interfaces/Billing/Payment/PaymentMethods/DeletePaymentMethodModal.tsx +++ b/apps/studio/components/interfaces/Billing/Payment/PaymentMethods/DeletePaymentMethodModal.tsx @@ -10,7 +10,7 @@ import { AlertDialogHeader, AlertDialogTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useOrganizationPaymentMethodDeleteMutation } from '@/data/organizations/organization-payment-method-delete-mutation' import type { OrganizationPaymentMethod } from '@/data/organizations/organization-payment-methods-query' diff --git a/apps/studio/components/interfaces/Billing/Payment/PaymentMethods/PaymentMethods.tsx b/apps/studio/components/interfaces/Billing/Payment/PaymentMethods/PaymentMethods.tsx index 85b92a6c18adc..fda065cad1117 100644 --- a/apps/studio/components/interfaces/Billing/Payment/PaymentMethods/PaymentMethods.tsx +++ b/apps/studio/components/interfaces/Billing/Payment/PaymentMethods/PaymentMethods.tsx @@ -4,7 +4,7 @@ import { CreditCardIcon, ExternalLink, Plus } from 'lucide-react' import { useState } from 'react' import { toast } from 'sonner' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import ChangePaymentMethodModal from './ChangePaymentMethodModal' diff --git a/apps/studio/components/interfaces/Billing/Payment/PaymentMethods/StripePaymentConnection.tsx b/apps/studio/components/interfaces/Billing/Payment/PaymentMethods/StripePaymentConnection.tsx index a980ff2eb6003..e4eb1b951f5a5 100644 --- a/apps/studio/components/interfaces/Billing/Payment/PaymentMethods/StripePaymentConnection.tsx +++ b/apps/studio/components/interfaces/Billing/Payment/PaymentMethods/StripePaymentConnection.tsx @@ -1,6 +1,6 @@ import { ExternalLink } from 'lucide-react' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import PartnerIcon from '@/components/ui/PartnerIcon' import { MANAGED_BY } from '@/lib/constants/infrastructure' diff --git a/apps/studio/components/interfaces/Billing/Usage/UsageWarningAlerts/DiskIOBandwidthWarnings.tsx b/apps/studio/components/interfaces/Billing/Usage/UsageWarningAlerts/DiskIOBandwidthWarnings.tsx index 76fd9d3bbdb8d..21a1d5428c3c9 100644 --- a/apps/studio/components/interfaces/Billing/Usage/UsageWarningAlerts/DiskIOBandwidthWarnings.tsx +++ b/apps/studio/components/interfaces/Billing/Usage/UsageWarningAlerts/DiskIOBandwidthWarnings.tsx @@ -1,6 +1,6 @@ import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' // [Joshen] In the future, conditionals should be from resource exhaustion endpoint as single source of truth interface DiskIOBandwidthWarningsProps { diff --git a/apps/studio/components/interfaces/BranchManagement/OutOfDateNotice.tsx b/apps/studio/components/interfaces/BranchManagement/OutOfDateNotice.tsx index 7186cf000786d..493ae385d397a 100644 --- a/apps/studio/components/interfaces/BranchManagement/OutOfDateNotice.tsx +++ b/apps/studio/components/interfaces/BranchManagement/OutOfDateNotice.tsx @@ -12,7 +12,7 @@ import { AlertDialogTrigger, Button, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' import { useTrack } from '@/lib/telemetry/track' diff --git a/apps/studio/components/interfaces/ConnectSheet/ConnectStepsSection.tsx b/apps/studio/components/interfaces/ConnectSheet/ConnectStepsSection.tsx index dd9d6c301fd54..808e91f795042 100644 --- a/apps/studio/components/interfaces/ConnectSheet/ConnectStepsSection.tsx +++ b/apps/studio/components/interfaces/ConnectSheet/ConnectStepsSection.tsx @@ -3,7 +3,7 @@ import dynamic from 'next/dynamic' import Link from 'next/link' import { useMemo, useRef, type ComponentType } from 'react' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import type { diff --git a/apps/studio/components/interfaces/Database/Backups/BackupsList.tsx b/apps/studio/components/interfaces/Database/Backups/BackupsList.tsx index edac39d4c1196..dadc2ee082014 100644 --- a/apps/studio/components/interfaces/Database/Backups/BackupsList.tsx +++ b/apps/studio/components/interfaces/Database/Backups/BackupsList.tsx @@ -4,7 +4,7 @@ import { Clock } from 'lucide-react' import { useRouter } from 'next/router' import { useState } from 'react' import { toast } from 'sonner' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { TimestampInfo } from 'ui-patterns/TimestampInfo' diff --git a/apps/studio/components/interfaces/Database/Backups/BackupsStorageAlert.tsx b/apps/studio/components/interfaces/Database/Backups/BackupsStorageAlert.tsx index c2edcd30ddd22..b6ec9b1e88147 100644 --- a/apps/studio/components/interfaces/Database/Backups/BackupsStorageAlert.tsx +++ b/apps/studio/components/interfaces/Database/Backups/BackupsStorageAlert.tsx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export const BackupsStorageAlert = () => { return ( diff --git a/apps/studio/components/interfaces/Database/Extensions/EnableExtensionModal.tsx b/apps/studio/components/interfaces/Database/Extensions/EnableExtensionModal.tsx index 5e63927a2eb75..3a142bfdb1760 100644 --- a/apps/studio/components/interfaces/Database/Extensions/EnableExtensionModal.tsx +++ b/apps/studio/components/interfaces/Database/Extensions/EnableExtensionModal.tsx @@ -23,7 +23,7 @@ import { SelectTrigger, SelectValue, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import * as z from 'zod' diff --git a/apps/studio/components/interfaces/Database/Extensions/ExtensionRow.tsx b/apps/studio/components/interfaces/Database/Extensions/ExtensionRow.tsx index 55123bf7d7b95..f8df8b3956116 100644 --- a/apps/studio/components/interfaces/Database/Extensions/ExtensionRow.tsx +++ b/apps/studio/components/interfaces/Database/Extensions/ExtensionRow.tsx @@ -5,7 +5,7 @@ import { useState } from 'react' import { extensions } from 'shared-data' import { toast } from 'sonner' import { Button, Switch, TableCell, TableRow, Tooltip, TooltipContent, TooltipTrigger } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ConfirmationModal } from 'ui-patterns/Dialogs/ConfirmationModal' import { EnableExtensionModal } from './EnableExtensionModal' diff --git a/apps/studio/components/interfaces/Database/Indexes/CreateIndexSidePanel.tsx b/apps/studio/components/interfaces/Database/Indexes/CreateIndexSidePanel.tsx index f563566b069fb..934d7e178a72c 100644 --- a/apps/studio/components/interfaces/Database/Indexes/CreateIndexSidePanel.tsx +++ b/apps/studio/components/interfaces/Database/Indexes/CreateIndexSidePanel.tsx @@ -33,7 +33,7 @@ import { SheetSection, SheetTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { MultiSelector, diff --git a/apps/studio/components/interfaces/Database/Migrations/Migrations.tsx b/apps/studio/components/interfaces/Database/Migrations/Migrations.tsx index b893c62e324be..7c29d537f9d20 100644 --- a/apps/studio/components/interfaces/Database/Migrations/Migrations.tsx +++ b/apps/studio/components/interfaces/Database/Migrations/Migrations.tsx @@ -16,7 +16,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { TimestampInfo } from 'ui-patterns/TimestampInfo' diff --git a/apps/studio/components/interfaces/Database/Policies/Policies.tsx b/apps/studio/components/interfaces/Database/Policies/Policies.tsx index a12159fdfe1ee..e260bd4382e88 100644 --- a/apps/studio/components/interfaces/Database/Policies/Policies.tsx +++ b/apps/studio/components/interfaces/Database/Policies/Policies.tsx @@ -4,7 +4,7 @@ import Link from 'next/link' import { useCallback, useState } from 'react' import { toast } from 'sonner' import { Button, Card, CardContent } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { usePoliciesData } from './PoliciesDataContext' diff --git a/apps/studio/components/interfaces/Database/Policies/PolicyTableRow/index.tsx b/apps/studio/components/interfaces/Database/Policies/PolicyTableRow/index.tsx index 9b04640fe635f..6f3a774677850 100644 --- a/apps/studio/components/interfaces/Database/Policies/PolicyTableRow/index.tsx +++ b/apps/studio/components/interfaces/Database/Policies/PolicyTableRow/index.tsx @@ -12,7 +12,7 @@ import { TableHeader, TableRow, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { usePoliciesData } from '../PoliciesDataContext' diff --git a/apps/studio/components/interfaces/Database/ProtectedSchemaWarning.tsx b/apps/studio/components/interfaces/Database/ProtectedSchemaWarning.tsx index 556c808c992b0..1f8b0b7bfc6a1 100644 --- a/apps/studio/components/interfaces/Database/ProtectedSchemaWarning.tsx +++ b/apps/studio/components/interfaces/Database/ProtectedSchemaWarning.tsx @@ -10,7 +10,7 @@ import { DialogTitle, DialogTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { INTERNAL_SCHEMAS, useIsProtectedSchema } from '@/hooks/useProtectedSchemas' diff --git a/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx b/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx index 05646721e50cc..349c810127249 100644 --- a/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx +++ b/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx @@ -3,7 +3,7 @@ import { useParams } from 'common' import { Search } from 'lucide-react' import { useMemo, useRef, useState } from 'react' import { Card, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { PublicationTablesSkeleton } from './PublicationSkeleton' diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/AnalyticsBucket/Fields.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/AnalyticsBucket/Fields.tsx index 51c0746c7acfb..dff62c342a4b4 100644 --- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/AnalyticsBucket/Fields.tsx +++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/AnalyticsBucket/Fields.tsx @@ -15,7 +15,7 @@ import { SelectTrigger, WarningIcon, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input as PasswordInput } from 'ui-patterns/DataInputs/Input' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/DuckLake/Fields.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/DuckLake/Fields.tsx index 2e02ce5bc4d4b..e124836790115 100644 --- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/DuckLake/Fields.tsx +++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/DuckLake/Fields.tsx @@ -22,7 +22,7 @@ import { SelectTrigger, WarningIcon, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input as PasswordInput } from 'ui-patterns/DataInputs/Input' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/PublicationSelection.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/PublicationSelection.tsx index 2d3f65b37f5cd..912156d765b7a 100644 --- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/PublicationSelection.tsx +++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/PublicationSelection.tsx @@ -2,7 +2,7 @@ import { useParams } from 'common' import { useMemo } from 'react' import type { UseFormReturn } from 'react-hook-form' import { FormControl, FormField } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import type { DestinationPanelSchemaType } from './DestinationForm.schema' diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/TableCopySelection.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/TableCopySelection.tsx index ecdd1e339d749..2db3fed60bafc 100644 --- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/TableCopySelection.tsx +++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/TableCopySelection.tsx @@ -2,7 +2,7 @@ import { useParams } from 'common' import { useMemo } from 'react' import type { UseFormReturn } from 'react-hook-form' import { FormControl, FormField, Select, SelectContent, SelectItem, SelectTrigger } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { MultiSelector } from 'ui-patterns/multi-select' diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/ValidationFailuresSection.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/ValidationFailuresSection.tsx index 6ff0e0a4d75cc..1cdf154134957 100644 --- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/ValidationFailuresSection.tsx +++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/ValidationFailuresSection.tsx @@ -1,6 +1,6 @@ import { useParams } from 'common' import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Badge, Card } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Markdown } from '@/components/interfaces/Markdown' import { InlineLink } from '@/components/ui/InlineLink' diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/index.test.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/index.test.tsx index 8a2c7caf74ece..675c129e84b45 100644 --- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/index.test.tsx +++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/index.test.tsx @@ -85,7 +85,7 @@ vi.mock('ui', () => ({ TooltipTrigger: ({ children }: PropsWithChildren) => {children}, })) -vi.mock('ui-patterns/admonition', () => ({ +vi.mock('ui-patterns/Admonition', () => ({ Admonition: ({ children }: PropsWithChildren) =>
{children}
, })) diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/index.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/index.tsx index 03780cc60767f..079ac93f64d7c 100644 --- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/index.tsx +++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationForm/index.tsx @@ -22,7 +22,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import * as z from 'zod' diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/ReadReplicaForm/ReadReplicaEligibilityWarnings.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/ReadReplicaForm/ReadReplicaEligibilityWarnings.tsx index cfd10104d3d32..f029406a6027a 100644 --- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/ReadReplicaForm/ReadReplicaEligibilityWarnings.tsx +++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/ReadReplicaForm/ReadReplicaEligibilityWarnings.tsx @@ -4,7 +4,7 @@ import Link from 'next/link' import { useEffect, useState } from 'react' import { toast } from 'sonner' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useCheckEligibilityDeployReplica } from './useCheckEligibilityDeployReplica' import { SupportLink } from '@/components/interfaces/Support/SupportLink' diff --git a/apps/studio/components/interfaces/Database/Replication/Destinations.tsx b/apps/studio/components/interfaces/Database/Replication/Destinations.tsx index 6e0ab94fd3ab2..fec2cc142af38 100644 --- a/apps/studio/components/interfaces/Database/Replication/Destinations.tsx +++ b/apps/studio/components/interfaces/Database/Replication/Destinations.tsx @@ -20,7 +20,7 @@ import { TableHeader, TableRow, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' diff --git a/apps/studio/components/interfaces/Database/Replication/DisablePipelinesDialog.tsx b/apps/studio/components/interfaces/Database/Replication/DisablePipelinesDialog.tsx index 9b666d6bf01f8..db2d4a997382a 100644 --- a/apps/studio/components/interfaces/Database/Replication/DisablePipelinesDialog.tsx +++ b/apps/studio/components/interfaces/Database/Replication/DisablePipelinesDialog.tsx @@ -12,7 +12,7 @@ import { AlertDialogHeader, AlertDialogTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useDeleteReplicationTenantMutation } from '@/data/replication/delete-tenant-mutation' diff --git a/apps/studio/components/interfaces/Database/Replication/EnablePipelinesCallout.tsx b/apps/studio/components/interfaces/Database/Replication/EnablePipelinesCallout.tsx index 5adf07d8d66b0..6d3637ac4b93b 100644 --- a/apps/studio/components/interfaces/Database/Replication/EnablePipelinesCallout.tsx +++ b/apps/studio/components/interfaces/Database/Replication/EnablePipelinesCallout.tsx @@ -13,7 +13,7 @@ import { DialogTitle, DialogTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { DestinationType } from './DestinationPanel/DestinationPanel.types' import { DocsButton } from '@/components/ui/DocsButton' diff --git a/apps/studio/components/interfaces/Database/RestoreToNewProject/RestoreToNewProject.tsx b/apps/studio/components/interfaces/Database/RestoreToNewProject/RestoreToNewProject.tsx index 40da5f66a2a48..81f29c2018494 100644 --- a/apps/studio/components/interfaces/Database/RestoreToNewProject/RestoreToNewProject.tsx +++ b/apps/studio/components/interfaces/Database/RestoreToNewProject/RestoreToNewProject.tsx @@ -3,7 +3,7 @@ import { Loader2 } from 'lucide-react' import Link from 'next/link' import { useEffect, useState } from 'react' import { Alert, AlertDescription, AlertTitle, Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { PreviousRestoreItem } from './PreviousRestoreItem' diff --git a/apps/studio/components/interfaces/Database/Schemas/SchemaGraph.tsx b/apps/studio/components/interfaces/Database/Schemas/SchemaGraph.tsx index 2dcbf39311bbd..9598732384d59 100644 --- a/apps/studio/components/interfaces/Database/Schemas/SchemaGraph.tsx +++ b/apps/studio/components/interfaces/Database/Schemas/SchemaGraph.tsx @@ -38,7 +38,7 @@ import { DropdownMenuItem, DropdownMenuTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { SidePanelEditor } from '../../TableGridEditor/SidePanelEditor/SidePanelEditor' import { DefaultEdge } from './DefaultEdge' diff --git a/apps/studio/components/interfaces/DiskManagement/DiskManagementForm.tsx b/apps/studio/components/interfaces/DiskManagement/DiskManagementForm.tsx index 778a790c3253c..c78aab5d4e119 100644 --- a/apps/studio/components/interfaces/DiskManagement/DiskManagementForm.tsx +++ b/apps/studio/components/interfaces/DiskManagement/DiskManagementForm.tsx @@ -17,7 +17,7 @@ import { Form, Separator, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormFooterChangeBadge } from '../DataWarehouse/FormFooterChangeBadge' import { CreateDiskStorageSchema, DiskStorageSchemaType } from './DiskManagement.schema' diff --git a/apps/studio/components/interfaces/DiskManagement/DiskManagementPanelForm.tsx b/apps/studio/components/interfaces/DiskManagement/DiskManagementPanelForm.tsx index 8257d48faedaf..03a04ecb40de8 100644 --- a/apps/studio/components/interfaces/DiskManagement/DiskManagementPanelForm.tsx +++ b/apps/studio/components/interfaces/DiskManagement/DiskManagementPanelForm.tsx @@ -1,7 +1,7 @@ import { useParams } from 'common' import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { PageSection, PageSectionContent, diff --git a/apps/studio/components/interfaces/DiskManagement/fields/AutoScaleFields.tsx b/apps/studio/components/interfaces/DiskManagement/fields/AutoScaleFields.tsx index 08aecb8389d1b..e6a675e6ddace 100644 --- a/apps/studio/components/interfaces/DiskManagement/fields/AutoScaleFields.tsx +++ b/apps/studio/components/interfaces/DiskManagement/fields/AutoScaleFields.tsx @@ -8,7 +8,7 @@ import { InputGroupAddon, InputGroupText, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { DiskStorageSchemaType } from '../DiskManagement.schema' diff --git a/apps/studio/components/interfaces/DiskManagement/fields/ComputeSizeField.tsx b/apps/studio/components/interfaces/DiskManagement/fields/ComputeSizeField.tsx index e6639c9831abe..acd1cf8a1ae37 100644 --- a/apps/studio/components/interfaces/DiskManagement/fields/ComputeSizeField.tsx +++ b/apps/studio/components/interfaces/DiskManagement/fields/ComputeSizeField.tsx @@ -14,7 +14,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ComputeBadge } from 'ui-patterns/ComputeBadge' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' diff --git a/apps/studio/components/interfaces/DiskManagement/ui/ComputeSizeRecommendationSection.tsx b/apps/studio/components/interfaces/DiskManagement/ui/ComputeSizeRecommendationSection.tsx index bf6c05bb26f97..2bd6436943dc1 100644 --- a/apps/studio/components/interfaces/DiskManagement/ui/ComputeSizeRecommendationSection.tsx +++ b/apps/studio/components/interfaces/DiskManagement/ui/ComputeSizeRecommendationSection.tsx @@ -2,7 +2,7 @@ import { AnimatePresence, motion } from 'framer-motion' import { ReactNode } from 'react' import { UseFormReturn } from 'react-hook-form' import { COMPUTE_BASELINE_IOPS, COMPUTE_MAX_IOPS } from 'shared-data' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { DiskStorageSchemaType } from '../DiskManagement.schema' import { diff --git a/apps/studio/components/interfaces/DiskManagement/ui/DiskTypeRecommendationSection.tsx b/apps/studio/components/interfaces/DiskManagement/ui/DiskTypeRecommendationSection.tsx index f5f9ba7df38e3..3b8da212df0ae 100644 --- a/apps/studio/components/interfaces/DiskManagement/ui/DiskTypeRecommendationSection.tsx +++ b/apps/studio/components/interfaces/DiskManagement/ui/DiskTypeRecommendationSection.tsx @@ -1,7 +1,7 @@ import { AnimatePresence, motion } from 'framer-motion' import { ReactNode } from 'react' import { UseFormReturn } from 'react-hook-form' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { DiskStorageSchemaType } from '../DiskManagement.schema' import { DISK_LIMITS, DISK_TYPE_OPTIONS, DiskType } from './DiskManagement.constants' diff --git a/apps/studio/components/interfaces/DiskManagement/ui/FormMessage.tsx b/apps/studio/components/interfaces/DiskManagement/ui/FormMessage.tsx index 4352448e33cff..81cb935bfbd5a 100644 --- a/apps/studio/components/interfaces/DiskManagement/ui/FormMessage.tsx +++ b/apps/studio/components/interfaces/DiskManagement/ui/FormMessage.tsx @@ -1,5 +1,5 @@ import { AnimatePresence, motion } from 'framer-motion' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' interface FormMessageProps { message: string diff --git a/apps/studio/components/interfaces/DiskManagement/ui/SpendCapDisabledSection.tsx b/apps/studio/components/interfaces/DiskManagement/ui/SpendCapDisabledSection.tsx index fde0d5b5e8c42..284c0cbc53f1a 100644 --- a/apps/studio/components/interfaces/DiskManagement/ui/SpendCapDisabledSection.tsx +++ b/apps/studio/components/interfaces/DiskManagement/ui/SpendCapDisabledSection.tsx @@ -1,7 +1,7 @@ import { AnimatePresence, motion } from 'framer-motion' import Link from 'next/link' import { AlertDescription, AlertTitle, buttonVariants, cn } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useSelectedOrganizationQuery } from '@/hooks/misc/useSelectedOrganization' import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' diff --git a/apps/studio/components/interfaces/Docs/PublicSchemaNotEnabledAlert.tsx b/apps/studio/components/interfaces/Docs/PublicSchemaNotEnabledAlert.tsx index 0059b22d52e25..562d4e9c87b74 100644 --- a/apps/studio/components/interfaces/Docs/PublicSchemaNotEnabledAlert.tsx +++ b/apps/studio/components/interfaces/Docs/PublicSchemaNotEnabledAlert.tsx @@ -1,7 +1,7 @@ import { useParams } from 'common' import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' const PublicSchemaNotEnabledAlert = () => { const { ref: projectRef } = useParams() diff --git a/apps/studio/components/interfaces/Functions/EdgeFunctionRecentInvocations.tsx b/apps/studio/components/interfaces/Functions/EdgeFunctionRecentInvocations.tsx index e88ccfffdacb5..df0ea659a7eaa 100644 --- a/apps/studio/components/interfaces/Functions/EdgeFunctionRecentInvocations.tsx +++ b/apps/studio/components/interfaces/Functions/EdgeFunctionRecentInvocations.tsx @@ -3,7 +3,7 @@ import { Clock, ExternalLink, RefreshCw } from 'lucide-react' import Link from 'next/link' import { useRouter } from 'next/router' import { Button, cn } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { TimestampInfo } from 'ui-patterns/TimestampInfo' diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/CreateCronJobSheet/CreateCronJobSheet.tsx b/apps/studio/components/interfaces/Integrations/CronJobs/CreateCronJobSheet/CreateCronJobSheet.tsx index 8bcc3fc00c1ad..1e98e0e3d25aa 100644 --- a/apps/studio/components/interfaces/Integrations/CronJobs/CreateCronJobSheet/CreateCronJobSheet.tsx +++ b/apps/studio/components/interfaces/Integrations/CronJobs/CreateCronJobSheet/CreateCronJobSheet.tsx @@ -23,7 +23,7 @@ import { SheetTitle, WarningIcon, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { CRONJOB_DEFINITIONS } from '../CronJobs.constants' diff --git a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.CleanupNotice.tsx b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.CleanupNotice.tsx index 1280039dd02f3..b32c636fbade9 100644 --- a/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.CleanupNotice.tsx +++ b/apps/studio/components/interfaces/Integrations/CronJobs/CronJobsTab.CleanupNotice.tsx @@ -19,7 +19,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { CodeBlock } from 'ui-patterns/CodeBlock' import { CLEANUP_INTERVALS } from './CronJobsTab.constants' diff --git a/apps/studio/components/interfaces/Integrations/DataApi/DataApiURLSettings.tsx b/apps/studio/components/interfaces/Integrations/DataApi/DataApiURLSettings.tsx index db601d2f0c5e1..685d90f948a6f 100644 --- a/apps/studio/components/interfaces/Integrations/DataApi/DataApiURLSettings.tsx +++ b/apps/studio/components/interfaces/Integrations/DataApi/DataApiURLSettings.tsx @@ -1,7 +1,7 @@ import { useParams } from 'common' import { AlertCircle } from 'lucide-react' import { Alert, AlertTitle, cn } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { DataApiEnableSwitch } from '@/components/interfaces/Settings/API/DataApiEnableSwitch' import { DataApiProjectUrlCard } from '@/components/interfaces/Settings/API/DataApiProjectUrlCard' diff --git a/apps/studio/components/interfaces/Integrations/GraphQL/IntrospectionDisabledNotice.tsx b/apps/studio/components/interfaces/Integrations/GraphQL/IntrospectionDisabledNotice.tsx index 93a6b91e333a3..224f4cdb7116d 100644 --- a/apps/studio/components/interfaces/Integrations/GraphQL/IntrospectionDisabledNotice.tsx +++ b/apps/studio/components/interfaces/Integrations/GraphQL/IntrospectionDisabledNotice.tsx @@ -2,7 +2,7 @@ import { LOCAL_STORAGE_KEYS, useParams } from 'common' import { ChevronDown, ChevronUp } from 'lucide-react' import { useState } from 'react' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { PG_GRAPHQL_CONFIG_DOCS_URL } from './constants' import { IntrospectionConfirmModal } from './IntrospectionConfirmModal' diff --git a/apps/studio/components/interfaces/Integrations/Integration/ConnectedResourceGroupSection.tsx b/apps/studio/components/interfaces/Integrations/Integration/ConnectedResourceGroupSection.tsx index 39e3e2aab3fdf..48047caf06903 100644 --- a/apps/studio/components/interfaces/Integrations/Integration/ConnectedResourceGroupSection.tsx +++ b/apps/studio/components/interfaces/Integrations/Integration/ConnectedResourceGroupSection.tsx @@ -1,7 +1,7 @@ import { Settings, Trash2, TriangleAlert } from 'lucide-react' import Link from 'next/link' import { Badge, Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { type ResourceGroup } from './MarketplaceIntegrationSettingsTab.types' import { type ConnectedResource } from '@/components/interfaces/Integrations/Landing/Landing.utils' diff --git a/apps/studio/components/interfaces/Integrations/Integration/LegacyIntegrationPage.tsx b/apps/studio/components/interfaces/Integrations/Integration/LegacyIntegrationPage.tsx index 5f201f69ebe25..42f3529de9125 100644 --- a/apps/studio/components/interfaces/Integrations/Integration/LegacyIntegrationPage.tsx +++ b/apps/studio/components/interfaces/Integrations/Integration/LegacyIntegrationPage.tsx @@ -9,7 +9,7 @@ import { NavMenu, NavMenuItem, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { PageContainer } from 'ui-patterns/PageContainer' import { PageHeader, diff --git a/apps/studio/components/interfaces/Integrations/Integration/MarketplaceIntegrationSettingsTab.tsx b/apps/studio/components/interfaces/Integrations/Integration/MarketplaceIntegrationSettingsTab.tsx index 414eb7eb4404b..eaef1bf5bc524 100644 --- a/apps/studio/components/interfaces/Integrations/Integration/MarketplaceIntegrationSettingsTab.tsx +++ b/apps/studio/components/interfaces/Integrations/Integration/MarketplaceIntegrationSettingsTab.tsx @@ -1,6 +1,6 @@ import { useState } from 'react' import { toast } from 'sonner' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' diff --git a/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceDetail.tsx b/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceDetail.tsx index 15b18ce88717d..9e03a5d9f5cd2 100644 --- a/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceDetail.tsx +++ b/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceDetail.tsx @@ -1,7 +1,7 @@ import { ArrowUpRight, BookOpen, Gauge, Settings } from 'lucide-react' import { useRouter } from 'next/router' import { Button, cn } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { GenericSkeletonLoader, ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { MarketplaceDetailBreadrumbs } from './MarketplaceDetailBreadcrumbs' diff --git a/apps/studio/components/interfaces/Integrations/Queues/CreateQueueSheet/PgPartmanCallout.tsx b/apps/studio/components/interfaces/Integrations/Queues/CreateQueueSheet/PgPartmanCallout.tsx index eeeb99a4ad470..e032bbbfaa185 100644 --- a/apps/studio/components/interfaces/Integrations/Queues/CreateQueueSheet/PgPartmanCallout.tsx +++ b/apps/studio/components/interfaces/Integrations/Queues/CreateQueueSheet/PgPartmanCallout.tsx @@ -1,6 +1,6 @@ import { useState } from 'react' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { usePgPartmanStatus } from '../usePgPartmanStatus' import { EnableExtensionModal } from '@/components/interfaces/Database/Extensions/EnableExtensionModal' diff --git a/apps/studio/components/interfaces/Integrations/Queues/CreateQueueSheet/RlsSection.tsx b/apps/studio/components/interfaces/Integrations/Queues/CreateQueueSheet/RlsSection.tsx index 8524e773ffcfa..8b0c04209db32 100644 --- a/apps/studio/components/interfaces/Integrations/Queues/CreateQueueSheet/RlsSection.tsx +++ b/apps/studio/components/interfaces/Integrations/Queues/CreateQueueSheet/RlsSection.tsx @@ -1,6 +1,6 @@ import { UseFormReturn } from 'react-hook-form' import { Badge, FormControl, FormField, SheetSection, Switch } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { CreateQueueForm } from './CreateQueueSheet.schema' diff --git a/apps/studio/components/interfaces/Integrations/Queues/OverviewTab.tsx b/apps/studio/components/interfaces/Integrations/Queues/OverviewTab.tsx index 26fc8374fc808..27aa2fef5b254 100644 --- a/apps/studio/components/interfaces/Integrations/Queues/OverviewTab.tsx +++ b/apps/studio/components/interfaces/Integrations/Queues/OverviewTab.tsx @@ -1,7 +1,7 @@ import { useParams } from 'common' import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { IntegrationOverviewTab } from '../Integration/IntegrationOverviewTab' import { RequiredExtensionsSection } from '../Integration/RequiredExtensionsSection' diff --git a/apps/studio/components/interfaces/Integrations/Queues/QueuesSettings.tsx b/apps/studio/components/interfaces/Integrations/Queues/QueuesSettings.tsx index 3f99d8f060ee0..d6f2349c6d094 100644 --- a/apps/studio/components/interfaces/Integrations/Queues/QueuesSettings.tsx +++ b/apps/studio/components/interfaces/Integrations/Queues/QueuesSettings.tsx @@ -5,7 +5,7 @@ import { useEffect, useState } from 'react' import { useForm } from 'react-hook-form' import { toast } from 'sonner' import { Button, Form, FormControl, FormField, FormItem, Switch } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { z } from 'zod' diff --git a/apps/studio/components/interfaces/Integrations/Queues/SingleQueue/QueueSettings.tsx b/apps/studio/components/interfaces/Integrations/Queues/SingleQueue/QueueSettings.tsx index 2b16556511db2..b1496a1dc3c0b 100644 --- a/apps/studio/components/interfaces/Integrations/Queues/SingleQueue/QueueSettings.tsx +++ b/apps/studio/components/interfaces/Integrations/Queues/SingleQueue/QueueSettings.tsx @@ -25,7 +25,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { pgmqArchiveTable, pgmqQueueTable } from '../Queues.utils' diff --git a/apps/studio/components/interfaces/Integrations/Queues/UpgradeDatabaseAlert.tsx b/apps/studio/components/interfaces/Integrations/Queues/UpgradeDatabaseAlert.tsx index 7c6ffc398cb10..b953b74630ce0 100644 --- a/apps/studio/components/interfaces/Integrations/Queues/UpgradeDatabaseAlert.tsx +++ b/apps/studio/components/interfaces/Integrations/Queues/UpgradeDatabaseAlert.tsx @@ -1,6 +1,6 @@ import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useSelectedProjectQuery } from '@/hooks/misc/useSelectedProject' diff --git a/apps/studio/components/interfaces/Integrations/Vercel/VercelIntegrationInterstitial.tsx b/apps/studio/components/interfaces/Integrations/Vercel/VercelIntegrationInterstitial.tsx index f6c8960261f64..6b57a41255b91 100644 --- a/apps/studio/components/interfaces/Integrations/Vercel/VercelIntegrationInterstitial.tsx +++ b/apps/studio/components/interfaces/Integrations/Vercel/VercelIntegrationInterstitial.tsx @@ -1,6 +1,6 @@ import Link from 'next/link' import { Button, HoverCard, HoverCardContent, HoverCardTrigger } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ENV_VAR_RAW_KEYS } from './Integrations-Vercel.constants' import { LogoPair, PartnerLogo, SupabaseLogo } from '@/components/layouts/InterstitialLayout' diff --git a/apps/studio/components/interfaces/Integrations/Webhooks/OverviewTab.tsx b/apps/studio/components/interfaces/Integrations/Webhooks/OverviewTab.tsx index 454acf34276fc..ad20f391e684d 100644 --- a/apps/studio/components/interfaces/Integrations/Webhooks/OverviewTab.tsx +++ b/apps/studio/components/interfaces/Integrations/Webhooks/OverviewTab.tsx @@ -1,7 +1,7 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' import { useParams } from 'common' import { toast } from 'sonner' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { IntegrationOverviewTab } from '../Integration/IntegrationOverviewTab' diff --git a/apps/studio/components/interfaces/Integrations/Wrappers/CreateWrapperSheet.tsx b/apps/studio/components/interfaces/Integrations/Wrappers/CreateWrapperSheet.tsx index d231545c0092f..c4a38b2e5ed4c 100644 --- a/apps/studio/components/interfaces/Integrations/Wrappers/CreateWrapperSheet.tsx +++ b/apps/studio/components/interfaces/Integrations/Wrappers/CreateWrapperSheet.tsx @@ -18,7 +18,7 @@ import { SheetTitle, WarningIcon, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import * as z from 'zod' diff --git a/apps/studio/components/interfaces/Integrations/Wrappers/OverviewTab.tsx b/apps/studio/components/interfaces/Integrations/Wrappers/OverviewTab.tsx index 464467d0de7a0..ea61852ace7f1 100644 --- a/apps/studio/components/interfaces/Integrations/Wrappers/OverviewTab.tsx +++ b/apps/studio/components/interfaces/Integrations/Wrappers/OverviewTab.tsx @@ -4,7 +4,7 @@ import Link from 'next/link' import { parseAsBoolean, useQueryState } from 'nuqs' import { useState } from 'react' import { Button, Sheet, SheetContent } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { IntegrationOverviewTab } from '../Integration/IntegrationOverviewTab' import { RequiredExtensionsSection } from '../Integration/RequiredExtensionsSection' diff --git a/apps/studio/components/interfaces/Integrations/templates/StripeSyncEngine/OverviewTab.tsx b/apps/studio/components/interfaces/Integrations/templates/StripeSyncEngine/OverviewTab.tsx index e05b84a39ea28..c2b4962f9c064 100644 --- a/apps/studio/components/interfaces/Integrations/templates/StripeSyncEngine/OverviewTab.tsx +++ b/apps/studio/components/interfaces/Integrations/templates/StripeSyncEngine/OverviewTab.tsx @@ -17,7 +17,7 @@ import { SheetSection, SheetTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' diff --git a/apps/studio/components/interfaces/Integrations/templates/StripeSyncEngine/StripeSyncSettingsPage.tsx b/apps/studio/components/interfaces/Integrations/templates/StripeSyncEngine/StripeSyncSettingsPage.tsx index 69d538bec1489..d6f70d14cd650 100644 --- a/apps/studio/components/interfaces/Integrations/templates/StripeSyncEngine/StripeSyncSettingsPage.tsx +++ b/apps/studio/components/interfaces/Integrations/templates/StripeSyncEngine/StripeSyncSettingsPage.tsx @@ -3,7 +3,7 @@ import { formatRelative } from 'date-fns' import { BadgeCheck, RefreshCwIcon } from 'lucide-react' import Link from 'next/link' import { Button, Card, CardContent, CardHeader, CardTitle } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { PageSection, PageSectionContent, diff --git a/apps/studio/components/interfaces/JwtSecrets/jwt-settings.tsx b/apps/studio/components/interfaces/JwtSecrets/jwt-settings.tsx index 24d12cb3adf12..6184fcaffcde2 100644 --- a/apps/studio/components/interfaces/JwtSecrets/jwt-settings.tsx +++ b/apps/studio/components/interfaces/JwtSecrets/jwt-settings.tsx @@ -46,7 +46,7 @@ import { FormControl, FormField, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { FormLayout } from 'ui-patterns/form/Layout/FormLayout' diff --git a/apps/studio/components/interfaces/Linter/GraphqlExposureLintCTA.tsx b/apps/studio/components/interfaces/Linter/GraphqlExposureLintCTA.tsx index 5d9ccfb4690ca..f3373c1ae4c2f 100644 --- a/apps/studio/components/interfaces/Linter/GraphqlExposureLintCTA.tsx +++ b/apps/studio/components/interfaces/Linter/GraphqlExposureLintCTA.tsx @@ -4,7 +4,7 @@ import { EyeOff, Lock } from 'lucide-react' import { useState } from 'react' import { toast } from 'sonner' import { Badge, Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { InlineLink } from '@/components/ui/InlineLink' diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/CostControl/CostControl.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/CostControl/CostControl.tsx index 0c095da853106..9cb79b0c33e7e 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/CostControl/CostControl.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/CostControl/CostControl.tsx @@ -5,7 +5,7 @@ import { useTheme } from 'next-themes' import Image from 'next/image' import Link from 'next/link' import { Alert, AlertTitle, Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { ProjectUpdateDisabledTooltip } from '../ProjectUpdateDisabledTooltip' diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/CostControl/SpendCapSidePanel.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/CostControl/SpendCapSidePanel.tsx index 082f5728550ee..0cf99a92b9038 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/CostControl/SpendCapSidePanel.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/CostControl/SpendCapSidePanel.tsx @@ -8,7 +8,7 @@ import { useEffect, useState } from 'react' import { pricing } from 'shared-data/pricing' import { toast } from 'sonner' import { Button, cn, Collapsible, CollapsibleContent, CollapsibleTrigger, SidePanel } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import Table from '@/components/to-be-cleaned/Table' import { useOrgSubscriptionQuery } from '@/data/subscriptions/org-subscription-query' diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/CreditCodeRedemption.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/CreditCodeRedemption.tsx index 95c44733543ca..cb95d666deca6 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/CreditCodeRedemption.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/CreditCodeRedemption.tsx @@ -22,7 +22,7 @@ import { Input, Separator, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { TimestampInfo } from 'ui-patterns/TimestampInfo' diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/DowngradeModal.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/DowngradeModal.tsx index 76a9ccbfbd310..5b4dd4f5ed970 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/DowngradeModal.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/DowngradeModal.tsx @@ -10,7 +10,7 @@ import { DialogSectionSeparator, DialogTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { isBeforeFreeTierTemplateBlockCutoff } from '@/components/interfaces/Auth/EmailTemplates/EmailTemplates.utils' import { getComputeSize, OrgProject } from '@/data/projects/org-projects-infinite-query' diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/ExitSurveyModal.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/ExitSurveyModal.tsx index f34dc2f63adf9..093a5f52f79ba 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/ExitSurveyModal.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/ExitSurveyModal.tsx @@ -13,7 +13,7 @@ import { DialogTitle, TextArea, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ProjectUpdateDisabledTooltip } from '../ProjectUpdateDisabledTooltip' import { CANCELLATION_REASONS } from '@/components/interfaces/Billing/Billing.constants' diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/Subscription.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/Subscription.tsx index 811ea8e7061a8..f620c0f3be807 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/Subscription.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/Subscription.tsx @@ -2,7 +2,7 @@ import { PermissionAction, SupportCategories } from '@supabase/shared-types/out/ import { useFlag, useParams } from 'common' import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { Restriction } from '../Restriction' diff --git a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/SubscriptionPlanUpdateDialog.tsx b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/SubscriptionPlanUpdateDialog.tsx index d0ce8da62a681..f67b5a04540aa 100644 --- a/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/SubscriptionPlanUpdateDialog.tsx +++ b/apps/studio/components/interfaces/Organization/BillingSettings/Subscription/SubscriptionPlanUpdateDialog.tsx @@ -8,7 +8,7 @@ import { useMemo, useRef, useState } from 'react' import { plans as subscriptionsPlans } from 'shared-data/plans' import { toast } from 'sonner' import { Button, cn, Dialog, DialogContent } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { InfoTooltip } from 'ui-patterns/info-tooltip' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' diff --git a/apps/studio/components/interfaces/Organization/CloudMarketplace/AwsMarketplaceOnboarding.components.tsx b/apps/studio/components/interfaces/Organization/CloudMarketplace/AwsMarketplaceOnboarding.components.tsx index 97d226169d9e6..6c679a14c1f4e 100644 --- a/apps/studio/components/interfaces/Organization/CloudMarketplace/AwsMarketplaceOnboarding.components.tsx +++ b/apps/studio/components/interfaces/Organization/CloudMarketplace/AwsMarketplaceOnboarding.components.tsx @@ -1,6 +1,6 @@ import { type ReactNode } from 'react' import { Card, CardContent } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import type { diff --git a/apps/studio/components/interfaces/Organization/CloudMarketplace/AwsMarketplaceOnboarding.tsx b/apps/studio/components/interfaces/Organization/CloudMarketplace/AwsMarketplaceOnboarding.tsx index ff6449a20c644..1dd3511cd3d6f 100644 --- a/apps/studio/components/interfaces/Organization/CloudMarketplace/AwsMarketplaceOnboarding.tsx +++ b/apps/studio/components/interfaces/Organization/CloudMarketplace/AwsMarketplaceOnboarding.tsx @@ -2,7 +2,7 @@ import Link from 'next/link' import { useEffect, useMemo, useState } from 'react' import { toast } from 'sonner' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { diff --git a/apps/studio/components/interfaces/Organization/GeneralSettings/OrganizationDeletePanel.tsx b/apps/studio/components/interfaces/Organization/GeneralSettings/OrganizationDeletePanel.tsx index fb4379b66acb0..9eadf9704f44a 100644 --- a/apps/studio/components/interfaces/Organization/GeneralSettings/OrganizationDeletePanel.tsx +++ b/apps/studio/components/interfaces/Organization/GeneralSettings/OrganizationDeletePanel.tsx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { DeleteOrganizationButton } from './DeleteOrganizationButton' import PartnerManagedResource from '@/components/ui/PartnerManagedResource' diff --git a/apps/studio/components/interfaces/Organization/NewOrg/UpgradeExistingOrganizationCallout.tsx b/apps/studio/components/interfaces/Organization/NewOrg/UpgradeExistingOrganizationCallout.tsx index baf14b36a668d..49bc82bc8b78e 100644 --- a/apps/studio/components/interfaces/Organization/NewOrg/UpgradeExistingOrganizationCallout.tsx +++ b/apps/studio/components/interfaces/Organization/NewOrg/UpgradeExistingOrganizationCallout.tsx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { InlineLink } from '@/components/ui/InlineLink' import Panel from '@/components/ui/Panel' diff --git a/apps/studio/components/interfaces/Organization/OAuthApps/DeleteAppModal.tsx b/apps/studio/components/interfaces/Organization/OAuthApps/DeleteAppModal.tsx index 1005c82abb46b..b79b9fdc10806 100644 --- a/apps/studio/components/interfaces/Organization/OAuthApps/DeleteAppModal.tsx +++ b/apps/studio/components/interfaces/Organization/OAuthApps/DeleteAppModal.tsx @@ -10,7 +10,7 @@ import { AlertDialogFooter, AlertDialogTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useOAuthAppDeleteMutation } from '@/data/oauth/oauth-app-delete-mutation' import type { OAuthApp } from '@/data/oauth/oauth-apps-query' diff --git a/apps/studio/components/interfaces/Organization/OAuthApps/RevokeAppModal.tsx b/apps/studio/components/interfaces/Organization/OAuthApps/RevokeAppModal.tsx index b39ac78d0718f..47784797f7da5 100644 --- a/apps/studio/components/interfaces/Organization/OAuthApps/RevokeAppModal.tsx +++ b/apps/studio/components/interfaces/Organization/OAuthApps/RevokeAppModal.tsx @@ -11,7 +11,7 @@ import { AlertDialogHeader, AlertDialogTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { InlineLink } from '@/components/ui/InlineLink' import { useAuthorizedAppRevokeMutation } from '@/data/oauth/authorized-app-revoke-mutation' diff --git a/apps/studio/components/interfaces/Organization/OrgNotFound.tsx b/apps/studio/components/interfaces/Organization/OrgNotFound.tsx index ae68260ed6796..8413d552af75c 100644 --- a/apps/studio/components/interfaces/Organization/OrgNotFound.tsx +++ b/apps/studio/components/interfaces/Organization/OrgNotFound.tsx @@ -1,5 +1,5 @@ import { Skeleton } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { OrganizationCard } from './OrganizationCard' import { useOrganizationsQuery } from '@/data/organizations/organizations-query' diff --git a/apps/studio/components/interfaces/Organization/ProjectClaim/confirm.tsx b/apps/studio/components/interfaces/Organization/ProjectClaim/confirm.tsx index d85feaf490aad..7d129542db962 100644 --- a/apps/studio/components/interfaces/Organization/ProjectClaim/confirm.tsx +++ b/apps/studio/components/interfaces/Organization/ProjectClaim/confirm.tsx @@ -5,7 +5,7 @@ import Image from 'next/image' import { useRouter } from 'next/router' import { toast } from 'sonner' import { Button, cn, Collapsible, CollapsibleContent, CollapsibleTrigger } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ScopeSection } from '../OAuthApps/AuthorizeRequesterDetails' import { PERMISSIONS_DESCRIPTIONS } from '../OAuthApps/OAuthApps.constants' diff --git a/apps/studio/components/interfaces/Organization/SSO/SSOConfig.tsx b/apps/studio/components/interfaces/Organization/SSO/SSOConfig.tsx index 8df56451a7dc9..614282dc5a178 100644 --- a/apps/studio/components/interfaces/Organization/SSO/SSOConfig.tsx +++ b/apps/studio/components/interfaces/Organization/SSO/SSOConfig.tsx @@ -5,7 +5,7 @@ import { useEffect, useEffectEvent, useState } from 'react' import { SubmitHandler, useForm } from 'react-hook-form' import { toast } from 'sonner' import { Button, Card, CardContent, CardFooter, Form, FormControl, FormField, Switch } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import z from 'zod' diff --git a/apps/studio/components/interfaces/Organization/SecuritySettings.tsx b/apps/studio/components/interfaces/Organization/SecuritySettings.tsx index a6f01b4adeebf..61a52e643d29d 100644 --- a/apps/studio/components/interfaces/Organization/SecuritySettings.tsx +++ b/apps/studio/components/interfaces/Organization/SecuritySettings.tsx @@ -6,7 +6,7 @@ import { useEffect } from 'react' import { useForm } from 'react-hook-form' import { toast } from 'sonner' import { Button, Card, CardContent, CardFooter, Form, FormControl, FormField, Switch } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { z } from 'zod' diff --git a/apps/studio/components/interfaces/Organization/TeamSettings/InviteMemberButton.tsx b/apps/studio/components/interfaces/Organization/TeamSettings/InviteMemberButton.tsx index c5d1fab5de4fd..aae070a349596 100644 --- a/apps/studio/components/interfaces/Organization/TeamSettings/InviteMemberButton.tsx +++ b/apps/studio/components/interfaces/Organization/TeamSettings/InviteMemberButton.tsx @@ -30,7 +30,7 @@ import { SheetTrigger, Switch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import * as z from 'zod' diff --git a/apps/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx b/apps/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx index d5ee5abab4ca4..867e13c2e2790 100644 --- a/apps/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx +++ b/apps/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx @@ -13,7 +13,7 @@ import { TableHeader, TableRow, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import { MemberRow } from './MemberRow' diff --git a/apps/studio/components/interfaces/Organization/TeamSettings/TeamSettings.tsx b/apps/studio/components/interfaces/Organization/TeamSettings/TeamSettings.tsx index 7acaeaaf2847a..afa81dc142669 100644 --- a/apps/studio/components/interfaces/Organization/TeamSettings/TeamSettings.tsx +++ b/apps/studio/components/interfaces/Organization/TeamSettings/TeamSettings.tsx @@ -1,7 +1,7 @@ import { useParams } from 'common' import { Search } from 'lucide-react' import { useState } from 'react' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { InviteMemberButton } from './InviteMemberButton' diff --git a/apps/studio/components/interfaces/Organization/Usage/Usage.constants.tsx b/apps/studio/components/interfaces/Organization/Usage/Usage.constants.tsx index 2468418d307b0..6fccdd780451e 100644 --- a/apps/studio/components/interfaces/Organization/Usage/Usage.constants.tsx +++ b/apps/studio/components/interfaces/Organization/Usage/Usage.constants.tsx @@ -1,5 +1,5 @@ import { ReactNode } from 'react' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { USAGE_APPROACHING_THRESHOLD } from '@/components/interfaces/Billing/Billing.constants' import { EgressType, PricingMetric } from '@/data/analytics/org-daily-stats-query' diff --git a/apps/studio/components/interfaces/Organization/Usage/Usage.tsx b/apps/studio/components/interfaces/Organization/Usage/Usage.tsx index bad4f5d35ccb4..436a2894f77f2 100644 --- a/apps/studio/components/interfaces/Organization/Usage/Usage.tsx +++ b/apps/studio/components/interfaces/Organization/Usage/Usage.tsx @@ -6,7 +6,7 @@ import Link from 'next/link' import { useQueryState } from 'nuqs' import { useMemo, useState } from 'react' import { Button, cn, CommandGroup, CommandItem } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { Restriction } from '../BillingSettings/Restriction' diff --git a/apps/studio/components/interfaces/OrganizationInvite/OrganizationInvite.tsx b/apps/studio/components/interfaces/OrganizationInvite/OrganizationInvite.tsx index 28de171f71597..ebffc046a6c04 100644 --- a/apps/studio/components/interfaces/OrganizationInvite/OrganizationInvite.tsx +++ b/apps/studio/components/interfaces/OrganizationInvite/OrganizationInvite.tsx @@ -4,7 +4,7 @@ import { useRouter } from 'next/router' import type { ReactNode } from 'react' import { toast } from 'sonner' import { Button, Card, CardContent } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { diff --git a/apps/studio/components/interfaces/OrganizationInvite/OrganizationInviteError.tsx b/apps/studio/components/interfaces/OrganizationInvite/OrganizationInviteError.tsx index c4b9407749961..f4d747fb56e74 100644 --- a/apps/studio/components/interfaces/OrganizationInvite/OrganizationInviteError.tsx +++ b/apps/studio/components/interfaces/OrganizationInvite/OrganizationInviteError.tsx @@ -1,6 +1,6 @@ import { useRouter } from 'next/router' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { OrganizationInviteByToken } from '@/data/organization-members/organization-invitation-token-query' import { useSignOut } from '@/lib/auth' diff --git a/apps/studio/components/interfaces/Platform/Webhooks/PlatformWebhooksPage.tsx b/apps/studio/components/interfaces/Platform/Webhooks/PlatformWebhooksPage.tsx index 815751dc7b4ee..fc9a0c6f7e96b 100644 --- a/apps/studio/components/interfaces/Platform/Webhooks/PlatformWebhooksPage.tsx +++ b/apps/studio/components/interfaces/Platform/Webhooks/PlatformWebhooksPage.tsx @@ -21,7 +21,7 @@ import { DropdownMenuTrigger, Label, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { PageContainer } from 'ui-patterns/PageContainer' import { PageSection, PageSectionContent } from 'ui-patterns/PageSection' diff --git a/apps/studio/components/interfaces/Project/APIKeys.tsx b/apps/studio/components/interfaces/Project/APIKeys.tsx index 2a652fed5b32d..da544374048b0 100644 --- a/apps/studio/components/interfaces/Project/APIKeys.tsx +++ b/apps/studio/components/interfaces/Project/APIKeys.tsx @@ -3,7 +3,7 @@ import { JwtSecretUpdateStatus } from '@supabase/shared-types/out/events' import { useParams } from 'common' import { Loader } from 'lucide-react' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' diff --git a/apps/studio/components/interfaces/ProjectCreation/AdvancedConfiguration.tsx b/apps/studio/components/interfaces/ProjectCreation/AdvancedConfiguration.tsx index c9a621a4d72c1..ef41eea090df5 100644 --- a/apps/studio/components/interfaces/ProjectCreation/AdvancedConfiguration.tsx +++ b/apps/studio/components/interfaces/ProjectCreation/AdvancedConfiguration.tsx @@ -12,7 +12,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { CollapsibleCardSection } from 'ui-patterns/CollapsibleCardSection' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' diff --git a/apps/studio/components/interfaces/ProjectCreation/FreeProjectLimitWarning.tsx b/apps/studio/components/interfaces/ProjectCreation/FreeProjectLimitWarning.tsx index e3b8389232c73..1531bdae9caac 100644 --- a/apps/studio/components/interfaces/ProjectCreation/FreeProjectLimitWarning.tsx +++ b/apps/studio/components/interfaces/ProjectCreation/FreeProjectLimitWarning.tsx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import Panel from '@/components/ui/Panel' import { UpgradePlanButton } from '@/components/ui/UpgradePlanButton' diff --git a/apps/studio/components/interfaces/ProjectCreation/ProjectCreationForm.tsx b/apps/studio/components/interfaces/ProjectCreation/ProjectCreationForm.tsx index 671882df1961c..897ba9b4c8e67 100644 --- a/apps/studio/components/interfaces/ProjectCreation/ProjectCreationForm.tsx +++ b/apps/studio/components/interfaces/ProjectCreation/ProjectCreationForm.tsx @@ -9,7 +9,7 @@ import { useForm, useFormState } from 'react-hook-form' import { type CloudProvider } from 'shared-data' import { toast } from 'sonner' import { Button, cn, Form, useWatch } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { z } from 'zod' diff --git a/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx b/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx index 25cd97d922e5a..9352468a9285c 100644 --- a/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx +++ b/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx @@ -18,7 +18,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { CreateProjectForm } from './ProjectCreation.schema' diff --git a/apps/studio/components/interfaces/ProjectCreation/SecurityOptions.tsx b/apps/studio/components/interfaces/ProjectCreation/SecurityOptions.tsx index 0751b10900780..077aef30f78de 100644 --- a/apps/studio/components/interfaces/ProjectCreation/SecurityOptions.tsx +++ b/apps/studio/components/interfaces/ProjectCreation/SecurityOptions.tsx @@ -13,7 +13,7 @@ import { TooltipTrigger, useWatch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { CreateProjectForm } from './ProjectCreation.schema' diff --git a/apps/studio/components/interfaces/QueryPerformance/QueryIndexes.tsx b/apps/studio/components/interfaces/QueryPerformance/QueryIndexes.tsx index c6c64a67590b6..5902c8753f1df 100644 --- a/apps/studio/components/interfaces/QueryPerformance/QueryIndexes.tsx +++ b/apps/studio/components/interfaces/QueryPerformance/QueryIndexes.tsx @@ -14,7 +14,7 @@ import { CollapsibleContent, CollapsibleTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { CodeBlock } from 'ui-patterns/CodeBlock' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' diff --git a/apps/studio/components/interfaces/QueryPerformance/QueryPerformanceGrid.tsx b/apps/studio/components/interfaces/QueryPerformance/QueryPerformanceGrid.tsx index 487d5d85a918d..d75953f56b5b5 100644 --- a/apps/studio/components/interfaces/QueryPerformance/QueryPerformanceGrid.tsx +++ b/apps/studio/components/interfaces/QueryPerformance/QueryPerformanceGrid.tsx @@ -19,7 +19,7 @@ import { TabsList, TabsTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { CodeBlock } from 'ui-patterns/CodeBlock' import { InfoTooltip } from 'ui-patterns/info-tooltip' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' diff --git a/apps/studio/components/interfaces/QueryPerformance/WithStatements/WithStatements.tsx b/apps/studio/components/interfaces/QueryPerformance/WithStatements/WithStatements.tsx index 3c04b93c5536d..49dc2e9cf9b2e 100644 --- a/apps/studio/components/interfaces/QueryPerformance/WithStatements/WithStatements.tsx +++ b/apps/studio/components/interfaces/QueryPerformance/WithStatements/WithStatements.tsx @@ -5,7 +5,7 @@ import { parseAsString, useQueryStates } from 'nuqs' import { useEffect, useMemo, useState } from 'react' import { toast } from 'sonner' import { Button, cn, LoadingLine } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { Markdown } from '../../Markdown' diff --git a/apps/studio/components/interfaces/Realtime/RealtimeSettings.tsx b/apps/studio/components/interfaces/Realtime/RealtimeSettings.tsx index c806b61489f7b..0833ed8fda39e 100644 --- a/apps/studio/components/interfaces/Realtime/RealtimeSettings.tsx +++ b/apps/studio/components/interfaces/Realtime/RealtimeSettings.tsx @@ -20,7 +20,7 @@ import { InputGroupText, Switch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import * as z from 'zod' diff --git a/apps/studio/components/interfaces/RedeemCredits/RedeemCredits.tsx b/apps/studio/components/interfaces/RedeemCredits/RedeemCredits.tsx index f11b028ad1ff7..3a13806a49135 100644 --- a/apps/studio/components/interfaces/RedeemCredits/RedeemCredits.tsx +++ b/apps/studio/components/interfaces/RedeemCredits/RedeemCredits.tsx @@ -2,7 +2,7 @@ import { FeatureFlagContext } from 'common' import { useRouter } from 'next/router' import { ReactNode, useContext, useEffect, useRef, useState } from 'react' import { Button, Card, CardContent } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { OrganizationSelector } from '../Connect/OrganizationSelector' diff --git a/apps/studio/components/interfaces/SQLEditor/MonacoEditor.tsx b/apps/studio/components/interfaces/SQLEditor/MonacoEditor.tsx index a8639b27d3341..5054f2bf66f70 100644 --- a/apps/studio/components/interfaces/SQLEditor/MonacoEditor.tsx +++ b/apps/studio/components/interfaces/SQLEditor/MonacoEditor.tsx @@ -2,7 +2,7 @@ import { Monaco, OnMount } from '@monaco-editor/react' import { LOCAL_STORAGE_KEYS } from 'common' import { noop } from 'lodash' import { RefObject, useRef } from 'react' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import type { IStandaloneCodeEditor } from './SQLEditor.types' import { useSnippetEditor } from './useSnippetEditor' diff --git a/apps/studio/components/interfaces/SQLEditor/UtilityPanel/ChartConfig.tsx b/apps/studio/components/interfaces/SQLEditor/UtilityPanel/ChartConfig.tsx index 74f7d6e743751..58c50b5fb89e9 100644 --- a/apps/studio/components/interfaces/SQLEditor/UtilityPanel/ChartConfig.tsx +++ b/apps/studio/components/interfaces/SQLEditor/UtilityPanel/ChartConfig.tsx @@ -20,7 +20,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ButtonTooltip } from '@/components/ui/ButtonTooltip' import BarChart from '@/components/ui/Charts/BarChart' diff --git a/apps/studio/components/interfaces/Settings/API/PostgrestConfig.tsx b/apps/studio/components/interfaces/Settings/API/PostgrestConfig.tsx index c1a1c146c322c..a6801719455bc 100644 --- a/apps/studio/components/interfaces/Settings/API/PostgrestConfig.tsx +++ b/apps/studio/components/interfaces/Settings/API/PostgrestConfig.tsx @@ -23,7 +23,7 @@ import { Switch, useWatch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { MultiSelector, diff --git a/apps/studio/components/interfaces/Settings/Addons/Addons.tsx b/apps/studio/components/interfaces/Settings/Addons/Addons.tsx index 22b304adde18b..3f2090f4edcb0 100644 --- a/apps/studio/components/interfaces/Settings/Addons/Addons.tsx +++ b/apps/studio/components/interfaces/Settings/Addons/Addons.tsx @@ -13,7 +13,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { PageContainer } from 'ui-patterns/PageContainer' import { PageSection } from 'ui-patterns/PageSection' diff --git a/apps/studio/components/interfaces/Settings/Addons/IPv4SidePanel.tsx b/apps/studio/components/interfaces/Settings/Addons/IPv4SidePanel.tsx index b27ec4e139d89..e2800d7d2fd38 100644 --- a/apps/studio/components/interfaces/Settings/Addons/IPv4SidePanel.tsx +++ b/apps/studio/components/interfaces/Settings/Addons/IPv4SidePanel.tsx @@ -3,7 +3,7 @@ import { useParams } from 'common' import { useEffect, useState } from 'react' import { toast } from 'sonner' import { cn, RadioGroup, RadioGroupLargeItem, SidePanel } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { TaxDisclaimer } from '@/components/interfaces/Billing/TaxDisclaimer' import { DocsButton } from '@/components/ui/DocsButton' diff --git a/apps/studio/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.tsx b/apps/studio/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.tsx index 1d89f386db3aa..a3a32de1a34be 100644 --- a/apps/studio/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.tsx +++ b/apps/studio/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.tsx @@ -21,7 +21,7 @@ import { InputGroupText, Separator, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { PageSection, diff --git a/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessConfiguration.tsx b/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessConfiguration.tsx index 6c4cb135cf3c9..ff497a0cf1e64 100644 --- a/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessConfiguration.tsx +++ b/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessConfiguration.tsx @@ -23,7 +23,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormLayout } from 'ui-patterns/form/Layout/FormLayout' import { PageSection, diff --git a/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessDeleteDialog.tsx b/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessDeleteDialog.tsx index 5a6054390695b..b1a707ea06140 100644 --- a/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessDeleteDialog.tsx +++ b/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessDeleteDialog.tsx @@ -9,7 +9,7 @@ import { AlertDialogHeader, AlertDialogTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import type { JitUserRule } from './JitDbAccess.types' diff --git a/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessRoleGrantFields.tsx b/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessRoleGrantFields.tsx index 619f7721e2e33..c08ef8702d6fa 100644 --- a/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessRoleGrantFields.tsx +++ b/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessRoleGrantFields.tsx @@ -9,7 +9,7 @@ import { SelectValue, WarningIcon, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { SingleValueFieldArray } from 'ui-patterns/form/SingleValueFieldArray/SingleValueFieldArray' import { TimestampInfo } from 'ui-patterns/TimestampInfo' diff --git a/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessRuleSheet.tsx b/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessRuleSheet.tsx index 3b5af9abac3b4..3c29635c1a565 100644 --- a/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessRuleSheet.tsx +++ b/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessRuleSheet.tsx @@ -22,7 +22,7 @@ import { SheetHeader, SheetTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { z } from 'zod' diff --git a/apps/studio/components/interfaces/Settings/Database/NetworkRestrictions/RemoveRestrictionModal.tsx b/apps/studio/components/interfaces/Settings/Database/NetworkRestrictions/RemoveRestrictionModal.tsx index 5c1bfb0a53f44..3a8530c2dc214 100644 --- a/apps/studio/components/interfaces/Settings/Database/NetworkRestrictions/RemoveRestrictionModal.tsx +++ b/apps/studio/components/interfaces/Settings/Database/NetworkRestrictions/RemoveRestrictionModal.tsx @@ -10,7 +10,7 @@ import { AlertDialogHeader, AlertDialogTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useNetworkRestrictionsQuery } from '@/data/network-restrictions/network-restrictions-query' import { useNetworkRestrictionsApplyMutation } from '@/data/network-restrictions/network-retrictions-apply-mutation' diff --git a/apps/studio/components/interfaces/Settings/Database/SSLConfiguration.tsx b/apps/studio/components/interfaces/Settings/Database/SSLConfiguration.tsx index 42ec83780b756..f624b5e415b6d 100644 --- a/apps/studio/components/interfaces/Settings/Database/SSLConfiguration.tsx +++ b/apps/studio/components/interfaces/Settings/Database/SSLConfiguration.tsx @@ -22,7 +22,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormLayout } from 'ui-patterns/form/Layout/FormLayout' import { PageSection, diff --git a/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainActivate.tsx b/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainActivate.tsx index 78c2e33341ed9..018e17b728e20 100644 --- a/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainActivate.tsx +++ b/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainActivate.tsx @@ -1,7 +1,7 @@ import { useState } from 'react' import { toast } from 'sonner' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { DocsButton } from '@/components/ui/DocsButton' diff --git a/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainVerify.tsx b/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainVerify.tsx index 3a6498fa977cc..0f12e3d8628cc 100644 --- a/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainVerify.tsx +++ b/apps/studio/components/interfaces/Settings/General/CustomDomainConfig/CustomDomainVerify.tsx @@ -3,7 +3,7 @@ import { AlertCircle, RefreshCw } from 'lucide-react' import { useEffect } from 'react' import { toast } from 'sonner' import { Alert, AlertDescription, AlertTitle, Button, WarningIcon } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { DNSRecord } from './DNSRecord' import { DNSTableHeaders } from './DNSTableHeaders' diff --git a/apps/studio/components/interfaces/Settings/General/DashboardPreferences.tsx b/apps/studio/components/interfaces/Settings/General/DashboardPreferences.tsx index c6b6c44044080..ffcacaf06a851 100644 --- a/apps/studio/components/interfaces/Settings/General/DashboardPreferences.tsx +++ b/apps/studio/components/interfaces/Settings/General/DashboardPreferences.tsx @@ -21,7 +21,7 @@ import { FormControl, FormField, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { PageSection, diff --git a/apps/studio/components/interfaces/Settings/General/General.tsx b/apps/studio/components/interfaces/Settings/General/General.tsx index f804a93bbed2c..7bcba9057d3b7 100644 --- a/apps/studio/components/interfaces/Settings/General/General.tsx +++ b/apps/studio/components/interfaces/Settings/General/General.tsx @@ -4,7 +4,7 @@ import { IS_PLATFORM, useParams } from 'common' import { useForm } from 'react-hook-form' import { toast } from 'sonner' import { Button, Card, CardContent, CardFooter, Form, FormControl, FormField, Input } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input as PasswordInput } from 'ui-patterns/DataInputs/Input' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { diff --git a/apps/studio/components/interfaces/Settings/General/Infrastructure/ProjectUpgradeAlert.tsx b/apps/studio/components/interfaces/Settings/General/Infrastructure/ProjectUpgradeAlert.tsx index 17a3c53814b53..c3ca078fe072c 100644 --- a/apps/studio/components/interfaces/Settings/General/Infrastructure/ProjectUpgradeAlert.tsx +++ b/apps/studio/components/interfaces/Settings/General/Infrastructure/ProjectUpgradeAlert.tsx @@ -30,7 +30,7 @@ import { SelectTrigger, SelectValue, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { z } from 'zod' diff --git a/apps/studio/components/interfaces/Settings/General/TransferProjectPanel/TransferProjectButton.tsx b/apps/studio/components/interfaces/Settings/General/TransferProjectPanel/TransferProjectButton.tsx index e6e265d6eaef5..9d49006f54feb 100644 --- a/apps/studio/components/interfaces/Settings/General/TransferProjectPanel/TransferProjectButton.tsx +++ b/apps/studio/components/interfaces/Settings/General/TransferProjectPanel/TransferProjectButton.tsx @@ -23,7 +23,7 @@ import { SelectValue, WarningIcon, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { ButtonTooltip } from '@/components/ui/ButtonTooltip' diff --git a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureActivity.tsx b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureActivity.tsx index fb40475c70916..d56d563379cc5 100644 --- a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureActivity.tsx +++ b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureActivity.tsx @@ -5,7 +5,7 @@ import { BarChart2, ChartLine, ExternalLink } from 'lucide-react' import Link from 'next/link' import { Fragment, useMemo, useState } from 'react' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { INFRA_ACTIVITY_METRICS } from './Infrastructure.constants' diff --git a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureInfo.tsx b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureInfo.tsx index 5274d4ac83b4d..aacf582ae327f 100644 --- a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureInfo.tsx +++ b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureInfo.tsx @@ -9,7 +9,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' diff --git a/apps/studio/components/interfaces/Settings/Infrastructure/UpgradeWarnings.tsx b/apps/studio/components/interfaces/Settings/Infrastructure/UpgradeWarnings.tsx index db1ca7378d64d..a5204a403db44 100644 --- a/apps/studio/components/interfaces/Settings/Infrastructure/UpgradeWarnings.tsx +++ b/apps/studio/components/interfaces/Settings/Infrastructure/UpgradeWarnings.tsx @@ -1,7 +1,7 @@ import { useParams } from 'common' import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { InlineLink } from '@/components/ui/InlineLink' import { diff --git a/apps/studio/components/interfaces/Settings/Integrations/AWSPrivateLink/AWSPrivateLinkForm.tsx b/apps/studio/components/interfaces/Settings/Integrations/AWSPrivateLink/AWSPrivateLinkForm.tsx index 62d1dea190e17..2dc4c3473763a 100644 --- a/apps/studio/components/interfaces/Settings/Integrations/AWSPrivateLink/AWSPrivateLinkForm.tsx +++ b/apps/studio/components/interfaces/Settings/Integrations/AWSPrivateLink/AWSPrivateLinkForm.tsx @@ -17,7 +17,7 @@ import { SheetSection, SheetTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { InlineLink } from '@/components/ui/InlineLink' diff --git a/apps/studio/components/interfaces/Settings/Integrations/GithubIntegration/GitHubIntegrationConnectionForm.tsx b/apps/studio/components/interfaces/Settings/Integrations/GithubIntegration/GitHubIntegrationConnectionForm.tsx index eb672742b9885..ddf5df5a7278f 100644 --- a/apps/studio/components/interfaces/Settings/Integrations/GithubIntegration/GitHubIntegrationConnectionForm.tsx +++ b/apps/studio/components/interfaces/Settings/Integrations/GithubIntegration/GitHubIntegrationConnectionForm.tsx @@ -17,7 +17,7 @@ import { Input, Switch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import * as z from 'zod' diff --git a/apps/studio/components/interfaces/Settings/Integrations/IntegrationsSettings.tsx b/apps/studio/components/interfaces/Settings/Integrations/IntegrationsSettings.tsx index 5422d72ba50aa..80405ab50b3c7 100644 --- a/apps/studio/components/interfaces/Settings/Integrations/IntegrationsSettings.tsx +++ b/apps/studio/components/interfaces/Settings/Integrations/IntegrationsSettings.tsx @@ -1,5 +1,5 @@ import { Card } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { AWSPrivateLinkSection } from './AWSPrivateLink/AWSPrivateLinkSection' import { GitHubSection } from './GithubIntegration/GithubSection' diff --git a/apps/studio/components/interfaces/Settings/Integrations/VercelIntegration/VercelIntegrationConnectionForm.tsx b/apps/studio/components/interfaces/Settings/Integrations/VercelIntegration/VercelIntegrationConnectionForm.tsx index a968219bc5bee..b1b656f579e91 100644 --- a/apps/studio/components/interfaces/Settings/Integrations/VercelIntegration/VercelIntegrationConnectionForm.tsx +++ b/apps/studio/components/interfaces/Settings/Integrations/VercelIntegration/VercelIntegrationConnectionForm.tsx @@ -17,7 +17,7 @@ import { Input, Switch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import * as z from 'zod' diff --git a/apps/studio/components/interfaces/Settings/Logs/LogsExplorerOtelBanner.tsx b/apps/studio/components/interfaces/Settings/Logs/LogsExplorerOtelBanner.tsx index 1c52f2f52657c..4f9bac9cd3460 100644 --- a/apps/studio/components/interfaces/Settings/Logs/LogsExplorerOtelBanner.tsx +++ b/apps/studio/components/interfaces/Settings/Logs/LogsExplorerOtelBanner.tsx @@ -1,5 +1,5 @@ import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' interface LogsExplorerOtelBannerProps { isRewriting: boolean diff --git a/apps/studio/components/interfaces/SignIn/ForgotPasswordWizard.tsx b/apps/studio/components/interfaces/SignIn/ForgotPasswordWizard.tsx index f86c6c13bedff..265926f1da5b1 100644 --- a/apps/studio/components/interfaces/SignIn/ForgotPasswordWizard.tsx +++ b/apps/studio/components/interfaces/SignIn/ForgotPasswordWizard.tsx @@ -5,7 +5,7 @@ import { useRef, useState } from 'react' import { SubmitHandler, useForm } from 'react-hook-form' import { toast } from 'sonner' import { Button, Form, FormControl, FormField, Input } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import * as z from 'zod' diff --git a/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/BucketCallouts.tsx b/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/BucketCallouts.tsx index 3876dbf344bda..21f797b422264 100644 --- a/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/BucketCallouts.tsx +++ b/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/BucketCallouts.tsx @@ -1,6 +1,6 @@ import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { SimpleConfigurationDetails } from './SimpleConfigurationDetails' import { WrapperMeta } from '@/components/interfaces/Integrations/Wrappers/Wrappers.types' diff --git a/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/SimpleConfigurationDetails.tsx b/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/SimpleConfigurationDetails.tsx index 6000042a6bf7a..357ed760bcda9 100644 --- a/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/SimpleConfigurationDetails.tsx +++ b/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/SimpleConfigurationDetails.tsx @@ -1,6 +1,6 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' import { Card } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { DESCRIPTIONS, LABELS, OPTION_ORDER } from './AnalyticsBucketDetails.constants' import { CopyEnvButton } from './CopyEnvButton' diff --git a/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/UpdateCatalogTokenDialog.tsx b/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/UpdateCatalogTokenDialog.tsx index 21dc8212a496f..ed73ce414f949 100644 --- a/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/UpdateCatalogTokenDialog.tsx +++ b/apps/studio/components/interfaces/Storage/AnalyticsBuckets/AnalyticsBucketDetails/UpdateCatalogTokenDialog.tsx @@ -20,7 +20,7 @@ import { SelectTrigger, SelectValue, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' diff --git a/apps/studio/components/interfaces/Storage/AnalyticsBuckets/CreateAnalyticsBucketForm.tsx b/apps/studio/components/interfaces/Storage/AnalyticsBuckets/CreateAnalyticsBucketForm.tsx index d9327afd52704..f48a5d1de58ac 100644 --- a/apps/studio/components/interfaces/Storage/AnalyticsBuckets/CreateAnalyticsBucketForm.tsx +++ b/apps/studio/components/interfaces/Storage/AnalyticsBuckets/CreateAnalyticsBucketForm.tsx @@ -14,7 +14,7 @@ import { SheetFooter, SheetSection, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import z from 'zod' diff --git a/apps/studio/components/interfaces/Storage/BucketsPickerDialog/BucketsPicker.tsx b/apps/studio/components/interfaces/Storage/BucketsPickerDialog/BucketsPicker.tsx index b527971903e56..595cb64317e0a 100644 --- a/apps/studio/components/interfaces/Storage/BucketsPickerDialog/BucketsPicker.tsx +++ b/apps/studio/components/interfaces/Storage/BucketsPickerDialog/BucketsPicker.tsx @@ -11,7 +11,7 @@ import { DropdownMenuRadioItem, DropdownMenuTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' diff --git a/apps/studio/components/interfaces/Storage/CreateBucketModal.tsx b/apps/studio/components/interfaces/Storage/CreateBucketModal.tsx index 411204e7e6d51..58d90f9592189 100644 --- a/apps/studio/components/interfaces/Storage/CreateBucketModal.tsx +++ b/apps/studio/components/interfaces/Storage/CreateBucketModal.tsx @@ -24,7 +24,7 @@ import { SelectValue, Switch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import z from 'zod' diff --git a/apps/studio/components/interfaces/Storage/EditBucketModal.tsx b/apps/studio/components/interfaces/Storage/EditBucketModal.tsx index d0a3a8f047b46..cdab844adfed9 100644 --- a/apps/studio/components/interfaces/Storage/EditBucketModal.tsx +++ b/apps/studio/components/interfaces/Storage/EditBucketModal.tsx @@ -24,7 +24,7 @@ import { SelectValue, Switch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { z } from 'zod' diff --git a/apps/studio/components/interfaces/Storage/EmptyBucketModal.tsx b/apps/studio/components/interfaces/Storage/EmptyBucketModal.tsx index edbb38a5c85d3..15d5646f10bba 100644 --- a/apps/studio/components/interfaces/Storage/EmptyBucketModal.tsx +++ b/apps/studio/components/interfaces/Storage/EmptyBucketModal.tsx @@ -10,7 +10,7 @@ import { DialogSectionSeparator, DialogTitle, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useBucketEmptyMutation } from '@/data/storage/bucket-empty-mutation' import type { Bucket } from '@/data/storage/buckets-query' diff --git a/apps/studio/components/interfaces/Storage/FilesBuckets/index.tsx b/apps/studio/components/interfaces/Storage/FilesBuckets/index.tsx index db17240ed8495..da0f7aea3a550 100644 --- a/apps/studio/components/interfaces/Storage/FilesBuckets/index.tsx +++ b/apps/studio/components/interfaces/Storage/FilesBuckets/index.tsx @@ -12,7 +12,7 @@ import { DropdownMenuRadioItem, DropdownMenuTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { PageContainer } from 'ui-patterns/PageContainer' import { PageSection, PageSectionContent } from 'ui-patterns/PageSection' diff --git a/apps/studio/components/interfaces/Storage/PublicBucketWarning.tsx b/apps/studio/components/interfaces/Storage/PublicBucketWarning.tsx index 555d5cc5d7e41..1626a35fd76bf 100644 --- a/apps/studio/components/interfaces/Storage/PublicBucketWarning.tsx +++ b/apps/studio/components/interfaces/Storage/PublicBucketWarning.tsx @@ -4,7 +4,7 @@ import { LOCAL_STORAGE_KEYS, safeLocalStorage } from 'common' import { useEffect, useState, type ReactNode } from 'react' import { toast } from 'sonner' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { CodeBlock } from 'ui-patterns/CodeBlock' import { ConfirmationModal } from 'ui-patterns/Dialogs/ConfirmationModal' diff --git a/apps/studio/components/interfaces/Storage/StorageBucketsError.tsx b/apps/studio/components/interfaces/Storage/StorageBucketsError.tsx index 1ae65ef4d8d1c..4af7100ec2e25 100644 --- a/apps/studio/components/interfaces/Storage/StorageBucketsError.tsx +++ b/apps/studio/components/interfaces/Storage/StorageBucketsError.tsx @@ -1,7 +1,7 @@ import { SupportCategories } from '@supabase/shared-types/out/constants' import { useParams } from 'common' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { SupportLink } from '../Support/SupportLink' import type { ResponseError } from '@/types' diff --git a/apps/studio/components/interfaces/Storage/StorageSettings/StorageSettings.tsx b/apps/studio/components/interfaces/Storage/StorageSettings/StorageSettings.tsx index 245ef42366086..3a3bf7ca63f24 100644 --- a/apps/studio/components/interfaces/Storage/StorageSettings/StorageSettings.tsx +++ b/apps/studio/components/interfaces/Storage/StorageSettings/StorageSettings.tsx @@ -21,7 +21,7 @@ import { SelectValue, Switch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { PageContainer } from 'ui-patterns/PageContainer' import { PageSection, PageSectionContent } from 'ui-patterns/PageSection' diff --git a/apps/studio/components/interfaces/Storage/VectorBuckets/CreateVectorBucketDialog.tsx b/apps/studio/components/interfaces/Storage/VectorBuckets/CreateVectorBucketDialog.tsx index f35171dd7715a..9746240bb6a6e 100644 --- a/apps/studio/components/interfaces/Storage/VectorBuckets/CreateVectorBucketDialog.tsx +++ b/apps/studio/components/interfaces/Storage/VectorBuckets/CreateVectorBucketDialog.tsx @@ -17,7 +17,7 @@ import { FormField, Input, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import z from 'zod' diff --git a/apps/studio/components/interfaces/Storage/VectorBuckets/CreateVectorTableSheet.tsx b/apps/studio/components/interfaces/Storage/VectorBuckets/CreateVectorTableSheet.tsx index 8bf96c3df3e47..7ce7052975314 100644 --- a/apps/studio/components/interfaces/Storage/VectorBuckets/CreateVectorTableSheet.tsx +++ b/apps/studio/components/interfaces/Storage/VectorBuckets/CreateVectorTableSheet.tsx @@ -23,7 +23,7 @@ import { SheetTitle, SheetTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import z from 'zod' diff --git a/apps/studio/components/interfaces/Storage/VectorBuckets/VectorBucketDetails/VectorBucketCallouts.tsx b/apps/studio/components/interfaces/Storage/VectorBuckets/VectorBucketDetails/VectorBucketCallouts.tsx index 05b68cda2453b..a39c18f825446 100644 --- a/apps/studio/components/interfaces/Storage/VectorBuckets/VectorBucketDetails/VectorBucketCallouts.tsx +++ b/apps/studio/components/interfaces/Storage/VectorBuckets/VectorBucketDetails/VectorBucketCallouts.tsx @@ -1,7 +1,7 @@ import Link from 'next/link' import { toast } from 'sonner' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { WrapperMeta } from '@/components/interfaces/Integrations/Wrappers/Wrappers.types' import { ScaffoldSection } from '@/components/layouts/Scaffold' diff --git a/apps/studio/components/interfaces/Storage/VectorBuckets/VectorBucketDetails/VectorBucketTableExamplesSheet.tsx b/apps/studio/components/interfaces/Storage/VectorBuckets/VectorBucketDetails/VectorBucketTableExamplesSheet.tsx index d50be9764c427..75b8469bc02b2 100644 --- a/apps/studio/components/interfaces/Storage/VectorBuckets/VectorBucketDetails/VectorBucketTableExamplesSheet.tsx +++ b/apps/studio/components/interfaces/Storage/VectorBuckets/VectorBucketDetails/VectorBucketTableExamplesSheet.tsx @@ -22,7 +22,7 @@ import { SheetTitle, SheetTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { CodeBlock } from 'ui-patterns/CodeBlock' import { useS3VectorsWrapperExtension } from '../useS3VectorsWrapper' diff --git a/apps/studio/components/interfaces/Storage/VectorBuckets/VectorBucketsLocalDisabledState.tsx b/apps/studio/components/interfaces/Storage/VectorBuckets/VectorBucketsLocalDisabledState.tsx index b58bd8fd8fb14..abc33955152eb 100644 --- a/apps/studio/components/interfaces/Storage/VectorBuckets/VectorBucketsLocalDisabledState.tsx +++ b/apps/studio/components/interfaces/Storage/VectorBuckets/VectorBucketsLocalDisabledState.tsx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { CodeBlock } from 'ui-patterns/CodeBlock' const CONFIG_SNIPPET = `[storage.vector] diff --git a/apps/studio/components/interfaces/Support/CategoryAndSeverityInfo.tsx b/apps/studio/components/interfaces/Support/CategoryAndSeverityInfo.tsx index 34e243e3226f1..c8e07af7646ac 100644 --- a/apps/studio/components/interfaces/Support/CategoryAndSeverityInfo.tsx +++ b/apps/studio/components/interfaces/Support/CategoryAndSeverityInfo.tsx @@ -12,7 +12,7 @@ import { SelectTrigger, SelectValue, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { diff --git a/apps/studio/components/interfaces/Support/IncidentAdmonition.tsx b/apps/studio/components/interfaces/Support/IncidentAdmonition.tsx index a0e59404a07f5..4680a9ea453c5 100644 --- a/apps/studio/components/interfaces/Support/IncidentAdmonition.tsx +++ b/apps/studio/components/interfaces/Support/IncidentAdmonition.tsx @@ -2,7 +2,7 @@ import { AnimatePresence, motion } from 'framer-motion' import { ExternalLink } from 'lucide-react' import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useIncidentStatusQuery } from '@/data/platform/incident-status-query' import { processIncidentData } from '@/data/platform/incident-status-utils' diff --git a/apps/studio/components/interfaces/Support/LinkSupportTicketPage.tsx b/apps/studio/components/interfaces/Support/LinkSupportTicketPage.tsx index b41c76a478bd9..014111b314b2b 100644 --- a/apps/studio/components/interfaces/Support/LinkSupportTicketPage.tsx +++ b/apps/studio/components/interfaces/Support/LinkSupportTicketPage.tsx @@ -3,7 +3,7 @@ import Link from 'next/link' import { useRouter } from 'next/router' import { useState } from 'react' import { Button, cn, DialogSectionSeparator } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { LinkSupportTicketForm } from './LinkSupportTicketForm' diff --git a/apps/studio/components/interfaces/Support/MessageField.tsx b/apps/studio/components/interfaces/Support/MessageField.tsx index 41f13db835a1d..522d9efc257da 100644 --- a/apps/studio/components/interfaces/Support/MessageField.tsx +++ b/apps/studio/components/interfaces/Support/MessageField.tsx @@ -2,7 +2,7 @@ import type { UseFormReturn } from 'react-hook-form' // End of third-party imports import { FormControl, FormField, TextArea } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { IPV4SuggestionAlert } from './IPV4SuggestionAlert' diff --git a/apps/studio/components/interfaces/Support/ProjectAndPlanInfo.tsx b/apps/studio/components/interfaces/Support/ProjectAndPlanInfo.tsx index f587e28a2a572..5f0fa748e0b7d 100644 --- a/apps/studio/components/interfaces/Support/ProjectAndPlanInfo.tsx +++ b/apps/studio/components/interfaces/Support/ProjectAndPlanInfo.tsx @@ -7,7 +7,7 @@ import Link from 'next/link' import type { UseFormReturn } from 'react-hook-form' import { toast } from 'sonner' import { Button, cn, CommandGroup, CommandItem, FormControl, FormField } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' diff --git a/apps/studio/components/interfaces/Support/SupportFormPage.tsx b/apps/studio/components/interfaces/Support/SupportFormPage.tsx index b7ed6b91e2622..3962d3fbf3512 100644 --- a/apps/studio/components/interfaces/Support/SupportFormPage.tsx +++ b/apps/studio/components/interfaces/Support/SupportFormPage.tsx @@ -6,7 +6,7 @@ import type { UseFormReturn } from 'react-hook-form' import SVG from 'react-inlinesvg' import { toast } from 'sonner' import { Button, cn, Tooltip, TooltipContent, TooltipTrigger } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { AIAssistantOption } from './AIAssistantOption' import { DiscordCTACard } from './DiscordCTACard' diff --git a/apps/studio/components/interfaces/SupportEmailVerification/SupportEmailVerification.tsx b/apps/studio/components/interfaces/SupportEmailVerification/SupportEmailVerification.tsx index 76c46d62b1330..013b23ab711da 100644 --- a/apps/studio/components/interfaces/SupportEmailVerification/SupportEmailVerification.tsx +++ b/apps/studio/components/interfaces/SupportEmailVerification/SupportEmailVerification.tsx @@ -1,6 +1,6 @@ import { useParams } from 'common' import { useEffect } from 'react' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { InterstitialLayout, SupabaseLogo } from '@/components/layouts/InterstitialLayout' diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/ApiAccessToggle.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/ApiAccessToggle.tsx index 756de361299dc..6128fb98ef9ff 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/ApiAccessToggle.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/ApiAccessToggle.tsx @@ -13,7 +13,7 @@ import { } from 'react' import { usePreviousDistinct } from 'react-use' import { Button, Switch } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { getApiEndpoint } from '@/components/interfaces/Integrations/DataApi/DataApi.utils' diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx index a8313d0cd1a66..b1f32ee4873a5 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx @@ -2,7 +2,7 @@ import { isEmpty, noop } from 'lodash' import { useContext, useEffect, useMemo, useRef, useState } from 'react' import { toast } from 'sonner' import { Badge, Checkbox, Input, SidePanel } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { ActionBar } from '../ActionBar' diff --git a/apps/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx b/apps/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx index b0a2f2d4c54f6..3df3be4c575e0 100644 --- a/apps/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/TableGridEditor.tsx @@ -5,7 +5,7 @@ import { useRouter } from 'next/router' import { parseAsString, useQueryState } from 'nuqs' import { useCallback } from 'react' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader' import DeleteConfirmationDialogs from './DeleteConfirmationDialogs' diff --git a/apps/studio/components/layouts/Navigation/LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx b/apps/studio/components/layouts/Navigation/LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx index 3dc429217f343..8532b9db1a6fa 100644 --- a/apps/studio/components/layouts/Navigation/LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx +++ b/apps/studio/components/layouts/Navigation/LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx @@ -17,7 +17,7 @@ import { PopoverSeparator, TextArea, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { convertB64toBlob, diff --git a/apps/studio/components/layouts/Navigation/LayoutHeader/LocalVersionPopover.tsx b/apps/studio/components/layouts/Navigation/LayoutHeader/LocalVersionPopover.tsx index 428fe5b008311..1ce8c1140a678 100644 --- a/apps/studio/components/layouts/Navigation/LayoutHeader/LocalVersionPopover.tsx +++ b/apps/studio/components/layouts/Navigation/LayoutHeader/LocalVersionPopover.tsx @@ -17,7 +17,7 @@ import { TabsList, TabsTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { SimpleCodeBlock } from 'ui-patterns/SimpleCodeBlock' import { getSemver, semverGte, semverLte } from './LocalVersionPopover.utils' diff --git a/apps/studio/components/layouts/ProjectLayout/PausedState/PauseDisabledState.tsx b/apps/studio/components/layouts/ProjectLayout/PausedState/PauseDisabledState.tsx index dc9a1e9b99697..ab60e5398e84f 100644 --- a/apps/studio/components/layouts/ProjectLayout/PausedState/PauseDisabledState.tsx +++ b/apps/studio/components/layouts/ProjectLayout/PausedState/PauseDisabledState.tsx @@ -1,6 +1,6 @@ import { useParams } from 'common' import { ExternalLink } from 'lucide-react' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { TimestampInfo } from 'ui-patterns/TimestampInfo' import { DownloadBackupsSection } from './DownloadBackupsSection' diff --git a/apps/studio/components/layouts/ProjectLayout/RestoringState.tsx b/apps/studio/components/layouts/ProjectLayout/RestoringState.tsx index b9de7da682607..a223931bb4b37 100644 --- a/apps/studio/components/layouts/ProjectLayout/RestoringState.tsx +++ b/apps/studio/components/layouts/ProjectLayout/RestoringState.tsx @@ -3,7 +3,7 @@ import { LOCAL_STORAGE_KEYS, useParams } from 'common' import { CheckCircle, Download, Loader } from 'lucide-react' import { useEffect, useState } from 'react' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { SupportLink } from '@/components/interfaces/Support/SupportLink' import { ButtonTooltip } from '@/components/ui/ButtonTooltip' diff --git a/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx b/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx index dffa621856ecb..aafba624bafe6 100644 --- a/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx +++ b/apps/studio/components/ui/AIAssistantPanel/AIAssistant.tsx @@ -8,7 +8,7 @@ import { Eraser, Pencil, X } from 'lucide-react' import { useRouter } from 'next/router' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { Button, cn, KeyboardShortcut } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { AlertError } from '../AlertError' import { ButtonTooltip } from '../ButtonTooltip' diff --git a/apps/studio/components/ui/AIAssistantPanel/AIAssistantHeader.tsx b/apps/studio/components/ui/AIAssistantPanel/AIAssistantHeader.tsx index 8725e83dcb1ba..49351c8a205b4 100644 --- a/apps/studio/components/ui/AIAssistantPanel/AIAssistantHeader.tsx +++ b/apps/studio/components/ui/AIAssistantPanel/AIAssistantHeader.tsx @@ -20,7 +20,7 @@ import { DropdownMenuTrigger, Input, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ButtonTooltip } from '../ButtonTooltip' import { ShortcutPills, ShortcutTooltip } from '../ShortcutTooltip' diff --git a/apps/studio/components/ui/AlertError.tsx b/apps/studio/components/ui/AlertError.tsx index 9c521678ff6cd..9506899bff5bf 100644 --- a/apps/studio/components/ui/AlertError.tsx +++ b/apps/studio/components/ui/AlertError.tsx @@ -1,7 +1,7 @@ import { SupportCategories } from '@supabase/shared-types/out/constants' import { PropsWithChildren, useEffect, useRef } from 'react' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { SupportLink } from '@/components/interfaces/Support/SupportLink' import { isDashboardErrorSampled } from '@/lib/telemetry/error-sampling' diff --git a/apps/studio/components/ui/AlphaNotice.tsx b/apps/studio/components/ui/AlphaNotice.tsx index fe53c97d71d70..19de807b20292 100644 --- a/apps/studio/components/ui/AlphaNotice.tsx +++ b/apps/studio/components/ui/AlphaNotice.tsx @@ -2,7 +2,7 @@ import { ExternalLink } from 'lucide-react' import Link from 'next/link' import { PropsWithChildren } from 'react' import { Badge, Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { BASE_PATH } from '@/lib/constants' diff --git a/apps/studio/components/ui/AutoEnableRLSNotice.tsx b/apps/studio/components/ui/AutoEnableRLSNotice.tsx index 368678b418fe5..170e91a91158e 100644 --- a/apps/studio/components/ui/AutoEnableRLSNotice.tsx +++ b/apps/studio/components/ui/AutoEnableRLSNotice.tsx @@ -15,7 +15,7 @@ import { DialogTitle, DialogTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { CodeBlock } from 'ui-patterns/CodeBlock' import { AUTO_ENABLE_RLS_EVENT_TRIGGER_SQL } from '@/components/interfaces/Database/Triggers/EventTriggersList/EventTriggers.constants' diff --git a/apps/studio/components/ui/EdgeFunctionBlock/EdgeFunctionBlock.tsx b/apps/studio/components/ui/EdgeFunctionBlock/EdgeFunctionBlock.tsx index 8591de05fc8df..ae71ae1b38c25 100644 --- a/apps/studio/components/ui/EdgeFunctionBlock/EdgeFunctionBlock.tsx +++ b/apps/studio/components/ui/EdgeFunctionBlock/EdgeFunctionBlock.tsx @@ -2,7 +2,7 @@ import { Code } from 'lucide-react' import Link from 'next/link' import type { DragEvent, ReactNode } from 'react' import { Button, cn } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { CodeBlock, type CodeBlockLang } from 'ui-patterns/CodeBlock' import { ReportBlockContainer } from '@/components/interfaces/Reports/ReportBlock/ReportBlockContainer' diff --git a/apps/studio/components/ui/EditorPanel/EditorPanel.tsx b/apps/studio/components/ui/EditorPanel/EditorPanel.tsx index f4a244209b22a..9df6699fcd01e 100644 --- a/apps/studio/components/ui/EditorPanel/EditorPanel.tsx +++ b/apps/studio/components/ui/EditorPanel/EditorPanel.tsx @@ -34,7 +34,7 @@ import { PopoverTrigger, SQL_ICON, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { CodeBlock } from 'ui-patterns/CodeBlock' import { containsUnknownFunction, isReadOnlySelect } from '../AIAssistantPanel/AIAssistant.utils' diff --git a/apps/studio/components/ui/ErrorBoundary/ClientSideExceptionHandler.tsx b/apps/studio/components/ui/ErrorBoundary/ClientSideExceptionHandler.tsx index f5e37a2d175b3..1b4534fa3925a 100644 --- a/apps/studio/components/ui/ErrorBoundary/ClientSideExceptionHandler.tsx +++ b/apps/studio/components/ui/ErrorBoundary/ClientSideExceptionHandler.tsx @@ -3,7 +3,7 @@ import { safeLocalStorage, safeSessionStorage } from 'common' import { ExternalLink } from 'lucide-react' import { useRouter } from 'next/router' import { Button, cn } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import CopyButton from '../CopyButton' import { InlineLinkClassName } from '../InlineLink' diff --git a/apps/studio/components/ui/HighAvailability/HighAvailabilityDisabledSectionNotice.tsx b/apps/studio/components/ui/HighAvailability/HighAvailabilityDisabledSectionNotice.tsx index 50188ff985610..29e7c1f7eeea9 100644 --- a/apps/studio/components/ui/HighAvailability/HighAvailabilityDisabledSectionNotice.tsx +++ b/apps/studio/components/ui/HighAvailability/HighAvailabilityDisabledSectionNotice.tsx @@ -1,5 +1,5 @@ import type { ReactNode } from 'react' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { useHighAvailability } from '@/hooks/misc/useHighAvailability' diff --git a/apps/studio/components/ui/HighQueryCost.tsx b/apps/studio/components/ui/HighQueryCost.tsx index 4d9432f08ef23..eb78467da387e 100644 --- a/apps/studio/components/ui/HighQueryCost.tsx +++ b/apps/studio/components/ui/HighQueryCost.tsx @@ -14,7 +14,7 @@ import { TooltipContent, TooltipTrigger, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { DocsButton } from './DocsButton' import { InlineLinkClassName } from './InlineLink' diff --git a/apps/studio/components/ui/NoPermission.tsx b/apps/studio/components/ui/NoPermission.tsx index 90d8c3c32bd11..e736079d8901c 100644 --- a/apps/studio/components/ui/NoPermission.tsx +++ b/apps/studio/components/ui/NoPermission.tsx @@ -1,4 +1,4 @@ -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' interface NoPermissionProps { resourceText: string diff --git a/apps/studio/components/ui/ProjectUpgradeFailedBanner.tsx b/apps/studio/components/ui/ProjectUpgradeFailedBanner.tsx index 53b24331c066a..510c2c8fcaa64 100644 --- a/apps/studio/components/ui/ProjectUpgradeFailedBanner.tsx +++ b/apps/studio/components/ui/ProjectUpgradeFailedBanner.tsx @@ -4,7 +4,7 @@ import { LOCAL_STORAGE_KEYS, useParams } from 'common' import dayjs from 'dayjs' import { X } from 'lucide-react' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ButtonTooltip } from './ButtonTooltip' import { InlineLink } from './InlineLink' diff --git a/apps/studio/components/ui/SqlWarningAdmonition.tsx b/apps/studio/components/ui/SqlWarningAdmonition.tsx index d8cb41f532444..18f4e0a47db11 100644 --- a/apps/studio/components/ui/SqlWarningAdmonition.tsx +++ b/apps/studio/components/ui/SqlWarningAdmonition.tsx @@ -1,5 +1,5 @@ import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export interface SqlWarningAdmonitionProps { warningType: 'hasWriteOperation' | 'hasUnknownFunctions' diff --git a/apps/studio/components/ui/UnknownInterface.tsx b/apps/studio/components/ui/UnknownInterface.tsx index fcbf30d68f8f3..92b565f0ab22b 100644 --- a/apps/studio/components/ui/UnknownInterface.tsx +++ b/apps/studio/components/ui/UnknownInterface.tsx @@ -1,6 +1,6 @@ import Link from 'next/link' import { Button, cn } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' export const UnknownInterface = ({ urlBack, diff --git a/apps/studio/components/ui/UpgradeToPro.tsx b/apps/studio/components/ui/UpgradeToPro.tsx index b8e6b0f81a046..4c8ddac9616df 100644 --- a/apps/studio/components/ui/UpgradeToPro.tsx +++ b/apps/studio/components/ui/UpgradeToPro.tsx @@ -1,6 +1,6 @@ import { ReactNode } from 'react' import { cn } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { DocsButton } from './DocsButton' import { UpgradePlanButton } from './UpgradePlanButton' diff --git a/apps/studio/pages/account/security.tsx b/apps/studio/pages/account/security.tsx index c52cf4547289b..db7ec4be0b798 100644 --- a/apps/studio/pages/account/security.tsx +++ b/apps/studio/pages/account/security.tsx @@ -1,6 +1,6 @@ import { Lock } from 'lucide-react' import { Badge, Card, CardContent, CardHeader } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { PageContainer } from 'ui-patterns/PageContainer' import { PageHeader, diff --git a/apps/studio/pages/claim-project.tsx b/apps/studio/pages/claim-project.tsx index 25cc7aa8e7ea8..1ba8c0bfd3d4b 100644 --- a/apps/studio/pages/claim-project.tsx +++ b/apps/studio/pages/claim-project.tsx @@ -1,7 +1,7 @@ import { useParams } from 'common' import Head from 'next/head' import { PropsWithChildren, useMemo, useState } from 'react' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { ProjectClaimBenefits } from '@/components/interfaces/Organization/ProjectClaim/benefits' diff --git a/apps/studio/pages/cli/login.tsx b/apps/studio/pages/cli/login.tsx index 3ef79b48dd92c..e663e16ca980b 100644 --- a/apps/studio/pages/cli/login.tsx +++ b/apps/studio/pages/cli/login.tsx @@ -5,7 +5,7 @@ import Link from 'next/link' import { useRouter } from 'next/router' import { useEffect, useEffectEvent, useRef, useState, type ReactNode } from 'react' import { Button, Card, CardContent } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { diff --git a/apps/studio/pages/integrations/vercel/install.tsx b/apps/studio/pages/integrations/vercel/install.tsx index 7eea86d25b10c..fb2365a97304b 100644 --- a/apps/studio/pages/integrations/vercel/install.tsx +++ b/apps/studio/pages/integrations/vercel/install.tsx @@ -15,7 +15,7 @@ import { SelectTrigger, SelectValue, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { diff --git a/apps/studio/pages/org/[slug]/index.tsx b/apps/studio/pages/org/[slug]/index.tsx index 4673219bb6c7a..26fbcb40c3a9e 100644 --- a/apps/studio/pages/org/[slug]/index.tsx +++ b/apps/studio/pages/org/[slug]/index.tsx @@ -1,7 +1,7 @@ import { useIsMFAEnabled } from 'common' import Link from 'next/link' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ProjectList } from '@/components/interfaces/Home/ProjectList/ProjectList' import { HomePageActions } from '@/components/interfaces/HomePageActions' diff --git a/apps/studio/pages/partners/stripe/projects/login.tsx b/apps/studio/pages/partners/stripe/projects/login.tsx index bb1afc2a829d0..20ea5f7d6527a 100644 --- a/apps/studio/pages/partners/stripe/projects/login.tsx +++ b/apps/studio/pages/partners/stripe/projects/login.tsx @@ -5,7 +5,7 @@ import Head from 'next/head' import { useRouter } from 'next/router' import { useEffect } from 'react' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader' import { diff --git a/apps/studio/pages/project/[ref]/auth/templates/[templateId].tsx b/apps/studio/pages/project/[ref]/auth/templates/[templateId].tsx index 93a4c95abb0be..4f5254f12f861 100644 --- a/apps/studio/pages/project/[ref]/auth/templates/[templateId].tsx +++ b/apps/studio/pages/project/[ref]/auth/templates/[templateId].tsx @@ -21,7 +21,7 @@ import { FormField, Switch, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { PageContainer } from 'ui-patterns/PageContainer' import { diff --git a/apps/studio/pages/project/[ref]/database/backups/pitr.tsx b/apps/studio/pages/project/[ref]/database/backups/pitr.tsx index 1c7d72cbf30ce..f62c4ffa2770c 100644 --- a/apps/studio/pages/project/[ref]/database/backups/pitr.tsx +++ b/apps/studio/pages/project/[ref]/database/backups/pitr.tsx @@ -2,7 +2,7 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' import { useParams } from 'common' import { AlertCircle, DatabaseBackup } from 'lucide-react' import { Alert, AlertDescription, AlertTitle } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { PageContainer } from 'ui-patterns/PageContainer' import { PageHeader, diff --git a/apps/studio/pages/project/[ref]/database/backups/scheduled.tsx b/apps/studio/pages/project/[ref]/database/backups/scheduled.tsx index dd77bf41bda33..547e0018607ac 100644 --- a/apps/studio/pages/project/[ref]/database/backups/scheduled.tsx +++ b/apps/studio/pages/project/[ref]/database/backups/scheduled.tsx @@ -1,7 +1,7 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' import { useParams } from 'common' import { Info } from 'lucide-react' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { PageContainer } from 'ui-patterns/PageContainer' import { PageHeader, diff --git a/apps/studio/pages/project/[ref]/functions/index.tsx b/apps/studio/pages/project/[ref]/functions/index.tsx index 9f6d74bc2fa97..b0a026a30a45a 100644 --- a/apps/studio/pages/project/[ref]/functions/index.tsx +++ b/apps/studio/pages/project/[ref]/functions/index.tsx @@ -4,7 +4,7 @@ import { useRouter } from 'next/router' import { parseAsString, parseAsStringLiteral, useQueryState } from 'nuqs' import React, { useMemo, useRef, type PropsWithChildren } from 'react' import { Button, Card, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Input } from 'ui-patterns/DataInputs/Input' import { PageContainer } from 'ui-patterns/PageContainer' import { diff --git a/apps/studio/pages/project/[ref]/functions/secrets.tsx b/apps/studio/pages/project/[ref]/functions/secrets.tsx index de49ba0b3c986..9f1afd218946e 100644 --- a/apps/studio/pages/project/[ref]/functions/secrets.tsx +++ b/apps/studio/pages/project/[ref]/functions/secrets.tsx @@ -1,5 +1,5 @@ import type { PropsWithChildren } from 'react' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { PageContainer } from 'ui-patterns/PageContainer' import { PageHeader, diff --git a/apps/studio/pages/project/[ref]/integrations/[id]/[pageId]/[childId]/index.tsx b/apps/studio/pages/project/[ref]/integrations/[id]/[pageId]/[childId]/index.tsx index 2e88ba89ded54..ffd3ad8e31845 100644 --- a/apps/studio/pages/project/[ref]/integrations/[id]/[pageId]/[childId]/index.tsx +++ b/apps/studio/pages/project/[ref]/integrations/[id]/[pageId]/[childId]/index.tsx @@ -1,7 +1,7 @@ import { useParams } from 'common' import { useRouter } from 'next/router' import { useEffect, useMemo } from 'react' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { PageContainer } from 'ui-patterns/PageContainer' import { PageHeader, diff --git a/apps/studio/pages/project/[ref]/merge.tsx b/apps/studio/pages/project/[ref]/merge.tsx index 3200df9cf704b..f662734cac269 100644 --- a/apps/studio/pages/project/[ref]/merge.tsx +++ b/apps/studio/pages/project/[ref]/merge.tsx @@ -5,7 +5,7 @@ import { useRouter } from 'next/router' import { useCallback, useEffect, useMemo, useState } from 'react' import { toast } from 'sonner' import { Button, cn, NavMenu, NavMenuItem } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ConfirmationModal } from 'ui-patterns/Dialogs/ConfirmationModal' import { useIsPgDeltaDiffEnabled } from '@/components/interfaces/App/FeaturePreview/FeaturePreviewContext' diff --git a/apps/studio/pages/project/[ref]/observability/query-performance.tsx b/apps/studio/pages/project/[ref]/observability/query-performance.tsx index d3ffbb10055b6..00f6b34768a27 100644 --- a/apps/studio/pages/project/[ref]/observability/query-performance.tsx +++ b/apps/studio/pages/project/[ref]/observability/query-performance.tsx @@ -1,6 +1,6 @@ import { useParams } from 'common' import { parseAsArrayOf, parseAsInteger, parseAsJson, parseAsString, useQueryStates } from 'nuqs' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { OBSERVABILITY_DOCS_HREFS } from '@/components/interfaces/Observability/Observability.constants' import { useIndexAdvisorStatus } from '@/components/interfaces/QueryPerformance/hooks/useIsIndexAdvisorStatus' diff --git a/apps/studio/pages/project/[ref]/settings/api-keys/index.tsx b/apps/studio/pages/project/[ref]/settings/api-keys/index.tsx index 3e895b1ba5514..6e9cd5389c708 100644 --- a/apps/studio/pages/project/[ref]/settings/api-keys/index.tsx +++ b/apps/studio/pages/project/[ref]/settings/api-keys/index.tsx @@ -2,7 +2,7 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' import { IS_PLATFORM, useParams } from 'common' import { useMemo } from 'react' import { Separator } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ApiKeysCreateCallout, diff --git a/apps/studio/pages/project/[ref]/sql/[id].tsx b/apps/studio/pages/project/[ref]/sql/[id].tsx index 9657ec98a0b58..f40ea989fbfd9 100644 --- a/apps/studio/pages/project/[ref]/sql/[id].tsx +++ b/apps/studio/pages/project/[ref]/sql/[id].tsx @@ -5,7 +5,7 @@ import { useRouter } from 'next/router' import { useEffect } from 'react' import { toast } from 'sonner' import { Button } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { SQLEditor } from '@/components/interfaces/SQLEditor/SQLEditor' import { generateSnippetTitle } from '@/components/interfaces/SQLEditor/SQLEditor.constants' diff --git a/apps/www/app/partners/catalog/[slug]/PartnerCatalogDetail.tsx b/apps/www/app/partners/catalog/[slug]/PartnerCatalogDetail.tsx index 568697ca96da0..1eaf596567f41 100644 --- a/apps/www/app/partners/catalog/[slug]/PartnerCatalogDetail.tsx +++ b/apps/www/app/partners/catalog/[slug]/PartnerCatalogDetail.tsx @@ -16,7 +16,7 @@ import { useQueryState } from 'nuqs' import { useEffect, useRef, useState, type Dispatch, type SetStateAction } from 'react' import { Swiper, SwiperSlide } from 'swiper/react' import { Button, cn } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { ExpandableVideo } from 'ui-patterns/ExpandableVideo' import SectionContainerWithCn from '@/components/Layouts/SectionContainerWithCn' diff --git a/apps/www/components/Contribute/UnansweredThreads.tsx b/apps/www/components/Contribute/UnansweredThreads.tsx index 18c3a85089d1c..32d59a278fbd2 100644 --- a/apps/www/components/Contribute/UnansweredThreads.tsx +++ b/apps/www/components/Contribute/UnansweredThreads.tsx @@ -1,10 +1,11 @@ -import { Admonition } from 'ui-patterns/admonition' import { getAllProductAreas, getAllStacks, getChannelCounts, getUnansweredThreads, } from '~/data/contribute' +import { Admonition } from 'ui-patterns/Admonition' + import { UnansweredThreadsTable } from './UnansweredThreadsTable' export async function UnansweredThreads({ diff --git a/apps/www/lib/mdx/mdxComponents.tsx b/apps/www/lib/mdx/mdxComponents.tsx index b84c0ac9148c7..c35930d122e14 100644 --- a/apps/www/lib/mdx/mdxComponents.tsx +++ b/apps/www/lib/mdx/mdxComponents.tsx @@ -27,7 +27,7 @@ import Tabs, { TabPanel } from '~/components/Tabs/Tabs' import { ArrowUpRight } from 'lucide-react' import type { PropsWithChildren } from 'react' import { Badge, cn, Heading } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { Image, type ImageProps } from 'ui-patterns/Image' import { Mermaid } from 'ui-patterns/Mermaid' diff --git a/apps/www/pages/opt-out/[ref].tsx b/apps/www/pages/opt-out/[ref].tsx index 2fb9c81f6850d..57e57ed560411 100644 --- a/apps/www/pages/opt-out/[ref].tsx +++ b/apps/www/pages/opt-out/[ref].tsx @@ -19,7 +19,7 @@ import { SelectTrigger, SelectValue, } from 'ui' -import { Admonition } from 'ui-patterns/admonition' +import { Admonition } from 'ui-patterns/Admonition' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { z } from 'zod' diff --git a/packages/ui-patterns/package.json b/packages/ui-patterns/package.json index c274ba9bd3151..3acf9ca2eb1ca 100644 --- a/packages/ui-patterns/package.json +++ b/packages/ui-patterns/package.json @@ -690,10 +690,6 @@ "import": "./src/TweetCard/index.tsx", "types": "./src/TweetCard/index.tsx" }, - "./admonition": { - "import": "./src/admonition.tsx", - "types": "./src/admonition.tsx" - }, "./collapsible-alert": { "import": "./src/collapsible-alert.tsx", "types": "./src/collapsible-alert.tsx" diff --git a/packages/ui-patterns/src/Dialogs/ConfirmationModal.tsx b/packages/ui-patterns/src/Dialogs/ConfirmationModal.tsx index dda2a23243e69..5b70b94d8c040 100644 --- a/packages/ui-patterns/src/Dialogs/ConfirmationModal.tsx +++ b/packages/ui-patterns/src/Dialogs/ConfirmationModal.tsx @@ -16,7 +16,7 @@ import { } from 'ui' import { DialogDescription, DialogHeader } from 'ui/src/components/shadcn/ui/dialog' -import { Admonition } from '../admonition' +import { Admonition } from '../Admonition' export interface ConfirmationModalProps { loading?: boolean diff --git a/packages/ui-patterns/src/Dialogs/TextConfirmModal.tsx b/packages/ui-patterns/src/Dialogs/TextConfirmModal.tsx index ebfaa494e33bf..c3e156a071c6f 100644 --- a/packages/ui-patterns/src/Dialogs/TextConfirmModal.tsx +++ b/packages/ui-patterns/src/Dialogs/TextConfirmModal.tsx @@ -29,7 +29,7 @@ import { import { DialogHeader } from 'ui/src/components/shadcn/ui/dialog' import { z } from 'zod' -import { Admonition } from '../admonition' +import { Admonition } from '../Admonition' export interface TextConfirmModalProps { loading: boolean diff --git a/packages/ui-patterns/src/ErrorDisplay/ErrorDisplay.tsx b/packages/ui-patterns/src/ErrorDisplay/ErrorDisplay.tsx index e495a27dba181..5654c5827cd09 100644 --- a/packages/ui-patterns/src/ErrorDisplay/ErrorDisplay.tsx +++ b/packages/ui-patterns/src/ErrorDisplay/ErrorDisplay.tsx @@ -4,7 +4,7 @@ import { HelpCircle } from 'lucide-react' import { forwardRef, useEffect, useRef } from 'react' import { Card, CardHeader, cn } from 'ui' -import { WarningIcon } from '../admonition' +import { WarningIcon } from '../Admonition' import type { ErrorDisplayProps, SupportFormParams } from './ErrorDisplay.types' export type { SupportFormParams } from './ErrorDisplay.types' diff --git a/packages/ui-patterns/src/PrivacySettings/index.tsx b/packages/ui-patterns/src/PrivacySettings/index.tsx index 09ae65a0250c2..b13fdd0c5c37d 100644 --- a/packages/ui-patterns/src/PrivacySettings/index.tsx +++ b/packages/ui-patterns/src/PrivacySettings/index.tsx @@ -17,7 +17,7 @@ import { Switch, } from 'ui' -import { Admonition } from '../admonition' +import { Admonition } from '../Admonition' interface PrivacySettingsProps { className?: string diff --git a/packages/ui-patterns/src/SqlToRest/index.tsx b/packages/ui-patterns/src/SqlToRest/index.tsx index b9bafca284ab2..97bba48883181 100644 --- a/packages/ui-patterns/src/SqlToRest/index.tsx +++ b/packages/ui-patterns/src/SqlToRest/index.tsx @@ -3,7 +3,7 @@ import dynamic from 'next/dynamic.js' import { ErrorBoundary, FallbackProps } from 'react-error-boundary' -import { Admonition } from '../admonition' +import { Admonition } from '../Admonition' import { SqlToRestProps } from './sql-to-rest' function FallbackComponent({ error }: FallbackProps) { diff --git a/packages/ui-patterns/src/admonition.tsx b/packages/ui-patterns/src/admonition.tsx deleted file mode 100644 index 11ef9105ab863..0000000000000 --- a/packages/ui-patterns/src/admonition.tsx +++ /dev/null @@ -1,4 +0,0 @@ -// Must point at ./Admonition/index explicitly: on case-insensitive filesystems -// (macOS) a bare './Admonition' resolves to './Admonition.tsx', which is this -// same file, making the re-export a no-op that exports nothing. -export * from './Admonition/index' From d5436ae82668a6231f45369bb4223ad088e7d079 Mon Sep 17 00:00:00 2001 From: Charis <26616127+charislam@users.noreply.github.com> Date: Tue, 28 Jul 2026 13:49:11 -0400 Subject: [PATCH 06/10] feat(studio): log date range domain + session logRange state (#48401) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? Feature (+ a small refactor and a docs/convention note). PR 4 of the stacked SQL-editor query-source series (Database vs Logs). ## What is the current behavior? The SQL editor has no representation of a logs query's time range: `querySource.ts` only knows how to map a snippet type to a source (`getSnippetSource`), and session state (`sql-editor-session-state.ts`) tracks results and the row limit but not a per-snippet time range. The Logs date picker's pure range helpers (`parseCustomInput`, `generateDynamicHelper`, the `Unit` type) are trapped inside the `Logs.DatePickers.tsx` React component. ## What is the new behavior? - **Logs time-range domain** in `querySource.ts`: branded `IsoDateTimeString` + `isoDateTimeString()`, `RelativeTimeUnit`, a `LogDateRange` discriminated union (relative/absolute), `DEFAULT_LOG_DATE_RANGE`, a single date-picker parser (`datePickerValueToLogDateRange` / `logDateRangeToDatePickerValue` — handles the five presets *and* dynamic `2h`/`30m` helpers; `calcTo === ''` means "now"; unparseable helpers degrade to absolute), and `resolveLogRunRange` which re-resolves relative ranges against `now` at run time (reusing the existing `ResolvedLogDateRange` shape). - **Session state**: per-snippet `logRange` + `setLogRange` — session-only, never written to snippet content, so it works on read-only shared snippets and is cleaned up in `clearForSnippet`. - **Refactor**: extracted the picker's framework-free helpers into a new pure `Logs.datePickerHelpers.ts`; the logs domain now shares the `Unit` type and reuses `generateDynamicHelper` instead of duplicating them. Importers point at the new module directly (no re-export shim). Hardened the amount parse against `NaN`. - **Full unit coverage** in `querySource.test.ts`. Recorded the no-shim refactoring convention in the `studio-best-practices` skill. Verification: `pnpm typecheck` clean, lint ratchet improved, 43 tests pass (querySource + Logs.Datepickers), Prettier clean. ## Additional context ## Summary by CodeRabbit - **New Features** - Added robust Logs date-range modeling with support for relative (e.g., last N units) and absolute time periods. - SQL Editor sessions now remember log date ranges per snippet. - **Bug Fixes** - Safer handling of invalid or missing date inputs, with sensible fallback to default/current time. - **Tests** - Added/expanded automated coverage for date-range conversion, helper parsing, and resolution behavior. - **Refactor** - Centralized date-picker helper utilities for reuse across the Logs and SQL query experience. --- apps/studio/CLAUDE.md | 1 + .../interfaces/SQLEditor/querySource.test.ts | 217 +++++++++++++++++- .../interfaces/SQLEditor/querySource.ts | 124 ++++++++++ .../Settings/Logs/Logs.DatePickers.tsx | 60 +---- .../Settings/Logs/Logs.datePickerHelpers.ts | 73 ++++++ .../sql-editor/sql-editor-session-state.ts | 23 +- .../features/logs/Logs.Datepickers.test.tsx | 4 +- 7 files changed, 435 insertions(+), 67 deletions(-) create mode 100644 apps/studio/components/interfaces/Settings/Logs/Logs.datePickerHelpers.ts diff --git a/apps/studio/CLAUDE.md b/apps/studio/CLAUDE.md index 892cbf8e93d8d..53de52db8915a 100644 --- a/apps/studio/CLAUDE.md +++ b/apps/studio/CLAUDE.md @@ -69,6 +69,7 @@ Older Studio code predates some of these conventions. For new or modified code, - **Memoization is not the default**: `useMemo`/`useCallback` only for measured expense or referential stability a memoized child depends on. - **TypeScript**: avoid `as` casts — where external data enters, parse it with zod (`schema.parse`/`safeParse`) instead. Model multi-state values as discriminated unions (`{ status: 'success'; data: T } | { status: 'error'; error: Error }`) rather than independent boolean flags. - **Naming**: prop callbacks are `onX`, internal handlers are `handleX`. Custom hooks return objects, not tuples. +- **Refactoring**: when you move or extract code into a new module, update every importer to point at the new location directly — do **not** leave a re-export shim in the old file "for backward compatibility." It's a one-line import change per consumer, and keeping shims around makes the codebase messy and the true source of a symbol ambiguous. ## Defaults that differ here diff --git a/apps/studio/components/interfaces/SQLEditor/querySource.test.ts b/apps/studio/components/interfaces/SQLEditor/querySource.test.ts index 16f1e6ae16d5d..9c63333f64eb5 100644 --- a/apps/studio/components/interfaces/SQLEditor/querySource.test.ts +++ b/apps/studio/components/interfaces/SQLEditor/querySource.test.ts @@ -1,6 +1,39 @@ -import { describe, expect, it } from 'vitest' +import dayjs from 'dayjs' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { getSnippetSource } from './querySource' +import { + datePickerValueToLogDateRange, + DEFAULT_LOG_DATE_RANGE, + getSnippetSource, + isoDateTimeString, + logDateRangeToDatePickerValue, + resolveLogRunRange, + type LogDateRange, +} from './querySource' +import { + EXPLORER_DATEPICKER_HELPERS, + getDefaultHelper, +} from '@/components/interfaces/Settings/Logs/Logs.constants' +import { generateHelpersFromInput } from '@/components/interfaces/Settings/Logs/Logs.datePickerHelpers' +import type { DatePickerValue } from '@/components/interfaces/Settings/Logs/Logs.DatePickers' +import type { DatetimeHelper } from '@/components/interfaces/Settings/Logs/Logs.types' + +/** Build the `DatePickerValue` the Logs picker submits when a helper is selected. */ +const valueFromHelper = (helper: DatetimeHelper): DatePickerValue => ({ + from: helper.calcFrom(), + to: helper.calcTo(), + isHelper: true, + text: helper.text, +}) + +/** The single dynamic helper produced from typed input like "2h" / "30m". */ +const dynamicHelper = (input: string): DatetimeHelper => { + const generated = generateHelpersFromInput(input) + if (!generated || generated.length !== 1) { + throw new Error(`Expected a single dynamic helper for "${input}"`) + } + return generated[0] +} describe('querySource.ts:getSnippetSource', () => { it('maps log_sql to the logs source', () => { @@ -15,3 +48,183 @@ describe('querySource.ts:getSnippetSource', () => { expect(getSnippetSource({ type: 'report' })).toBe('database') }) }) + +describe('querySource.ts:isoDateTimeString', () => { + it('accepts a valid ISO datetime', () => { + const raw = '2025-01-01T12:00:00.000Z' + expect(isoDateTimeString(raw)).toBe(raw) + }) + + it('rejects an empty string', () => { + expect(isoDateTimeString('')).toBeNull() + }) + + it('rejects junk', () => { + expect(isoDateTimeString('not-a-date')).toBeNull() + expect(isoDateTimeString('2025-13-45T99:99:99Z')).toBeNull() + }) +}) + +describe('querySource.ts:datePickerValueToLogDateRange', () => { + it('parses every static preset into a relative range', () => { + const cases: Array<[string, { amount: number; unit: 'minute' | 'hour' | 'day' }]> = [ + ['Last hour', { amount: 1, unit: 'hour' }], + ['Last 3 hours', { amount: 3, unit: 'hour' }], + ['Last 24 hours', { amount: 24, unit: 'hour' }], + ['Last 3 days', { amount: 3, unit: 'day' }], + ['Last 7 days', { amount: 7, unit: 'day' }], + ] + + for (const [text, last] of cases) { + const helper = EXPLORER_DATEPICKER_HELPERS.find((h) => h.text === text) + expect(helper, `preset "${text}" exists`).toBeDefined() + expect(datePickerValueToLogDateRange(valueFromHelper(helper!))).toEqual({ + kind: 'relative', + last, + }) + } + }) + + it('parses dynamic helpers ("2h", "30m", "7d") into relative ranges', () => { + expect(datePickerValueToLogDateRange(valueFromHelper(dynamicHelper('2h')))).toEqual({ + kind: 'relative', + last: { amount: 2, unit: 'hour' }, + }) + expect(datePickerValueToLogDateRange(valueFromHelper(dynamicHelper('30m')))).toEqual({ + kind: 'relative', + last: { amount: 30, unit: 'minute' }, + }) + expect(datePickerValueToLogDateRange(valueFromHelper(dynamicHelper('7d')))).toEqual({ + kind: 'relative', + last: { amount: 7, unit: 'day' }, + }) + }) + + it('treats a preset (calcTo() === "") as relative — the empty end means "now"', () => { + const lastHour = getDefaultHelper(EXPLORER_DATEPICKER_HELPERS) + const value = valueFromHelper(lastHour) + expect(value.to).toBe('') + expect(datePickerValueToLogDateRange(value)).toEqual({ + kind: 'relative', + last: { amount: 1, unit: 'hour' }, + }) + }) + + it('degrades an unparseable helper to an absolute range using from/now (never empty)', () => { + vi.useFakeTimers() + const now = new Date('2025-01-01T12:00:00.000Z') + vi.setSystemTime(now) + + const from = '2024-12-31T00:00:00.000Z' + const result = datePickerValueToLogDateRange({ + from, + to: '', + isHelper: true, + text: 'Some custom label', + }) + + expect(result).toEqual({ + kind: 'absolute', + from, + to: dayjs(now).toISOString(), + }) + }) + + it('maps a custom (non-helper) pick to an absolute range with both endpoints', () => { + const from = '2025-01-01T00:00:00.000Z' + const to = '2025-01-02T00:00:00.000Z' + expect(datePickerValueToLogDateRange({ from, to, isHelper: false })).toEqual({ + kind: 'absolute', + from, + to, + }) + }) + + it('falls back to the default range when the value has no usable from', () => { + expect(datePickerValueToLogDateRange({ from: '', to: '', isHelper: false })).toEqual( + DEFAULT_LOG_DATE_RANGE + ) + }) +}) + +describe('querySource.ts:logDateRangeToDatePickerValue', () => { + beforeEach(() => { + vi.useFakeTimers() + vi.setSystemTime(new Date('2025-01-01T12:00:00.000Z')) + }) + + it('renders a relative range exactly as the picker would emit the helper', () => { + const value = logDateRangeToDatePickerValue({ + kind: 'relative', + last: { amount: 1, unit: 'hour' }, + }) + expect(value).toEqual({ + from: dayjs().subtract(1, 'hour').toISOString(), + to: dayjs().toISOString(), + isHelper: true, + text: 'Last 1 hour', + }) + }) + + it('pluralizes the label for amounts greater than one', () => { + expect( + logDateRangeToDatePickerValue({ kind: 'relative', last: { amount: 3, unit: 'day' } }).text + ).toBe('Last 3 days') + }) + + it('round-trips through datePickerValueToLogDateRange', () => { + const range: LogDateRange = { kind: 'relative', last: { amount: 30, unit: 'minute' } } + expect(datePickerValueToLogDateRange(logDateRangeToDatePickerValue(range))).toEqual(range) + }) + + it('passes an absolute range through as a non-helper value', () => { + const range: LogDateRange = { + kind: 'absolute', + from: isoDateTimeString('2025-01-01T00:00:00.000Z')!, + to: isoDateTimeString('2025-01-02T00:00:00.000Z')!, + } + expect(logDateRangeToDatePickerValue(range)).toEqual({ + from: '2025-01-01T00:00:00.000Z', + to: '2025-01-02T00:00:00.000Z', + isHelper: false, + }) + }) +}) + +describe('querySource.ts:resolveLogRunRange', () => { + afterEach(() => { + vi.useRealTimers() + }) + + it('re-resolves a relative range against the current time', () => { + vi.useFakeTimers() + const now = new Date('2025-06-15T08:30:00.000Z') + vi.setSystemTime(now) + + expect(resolveLogRunRange({ kind: 'relative', last: { amount: 2, unit: 'hour' } })).toEqual({ + from: dayjs(now).subtract(2, 'hour').toISOString(), + to: dayjs(now).toISOString(), + }) + }) + + it('re-resolves the same relative range differently as time advances', () => { + vi.useFakeTimers() + vi.setSystemTime(new Date('2025-06-15T08:00:00.000Z')) + const first = resolveLogRunRange({ kind: 'relative', last: { amount: 1, unit: 'hour' } }) + + vi.setSystemTime(new Date('2025-06-15T10:00:00.000Z')) + const second = resolveLogRunRange({ kind: 'relative', last: { amount: 1, unit: 'hour' } }) + + expect(first).not.toEqual(second) + expect(second.to).toBe(dayjs('2025-06-15T10:00:00.000Z').toISOString()) + }) + + it('passes an absolute range through unchanged', () => { + const from = isoDateTimeString('2025-01-01T00:00:00.000Z')! + const to = isoDateTimeString('2025-01-02T00:00:00.000Z')! + expect(resolveLogRunRange({ kind: 'absolute', from, to })).toEqual({ + from: '2025-01-01T00:00:00.000Z', + to: '2025-01-02T00:00:00.000Z', + }) + }) +}) diff --git a/apps/studio/components/interfaces/SQLEditor/querySource.ts b/apps/studio/components/interfaces/SQLEditor/querySource.ts index ed6bf4e6412b5..af6d1d169a2fc 100644 --- a/apps/studio/components/interfaces/SQLEditor/querySource.ts +++ b/apps/studio/components/interfaces/SQLEditor/querySource.ts @@ -1,3 +1,9 @@ +import dayjs from 'dayjs' + +import { generateDynamicHelper } from '@/components/interfaces/Settings/Logs/Logs.datePickerHelpers' +import type { Unit } from '@/components/interfaces/Settings/Logs/Logs.datePickerHelpers' +import type { DatePickerValue } from '@/components/interfaces/Settings/Logs/Logs.DatePickers' +import type { ResolvedLogDateRange } from '@/components/interfaces/Settings/Logs/logsDateRange' import type { Snippet } from '@/data/content/sql-folders-query' /** @@ -18,3 +24,121 @@ export type SqlSnippetSource = 'database' | 'logs' export function getSnippetSource(snippet: Pick): SqlSnippetSource { return snippet.type === 'log_sql' ? 'logs' : 'database' } + +/** + * An ISO-8601 datetime proven valid at construction via a dayjs parse. Absolute + * log ranges carry these instead of raw strings so an unvalidated datetime can + * never reach execution. + */ +export type IsoDateTimeString = string & { readonly __isoDateTimeBrand: unique symbol } + +/** + * Validate a raw string as an ISO datetime, returning the branded value or null. + * The sole construction site for `IsoDateTimeString` outside `now`. + */ +export function isoDateTimeString(raw: string): IsoDateTimeString | null { + if (!raw) return null + return dayjs(raw).isValid() ? (raw as IsoDateTimeString) : null +} + +/** `now` as a branded ISO datetime — `toISOString()` is always valid ISO-8601. */ +function nowIsoDateTime(): IsoDateTimeString { + return dayjs().toISOString() as IsoDateTimeString +} + +/** + * The units a relative log range is expressed in. Aliases the Logs date picker's + * `Unit` so the two stay in lockstep rather than drifting as parallel unions. + */ +export type RelativeTimeUnit = Unit + +/** + * A log query's time range. Relative ranges are structural (amount + unit) and + * re-resolve against `now` at every run — so a saved "last hour" always means the + * hour before the run, not the hour before the snippet was opened. Absolute ranges + * carry validated ISO datetimes and pass through unchanged. + */ +export type LogDateRange = + | { kind: 'relative'; last: { amount: number; unit: RelativeTimeUnit } } + | { kind: 'absolute'; from: IsoDateTimeString; to: IsoDateTimeString } + +/** The range a freshly opened logs snippet starts with: the last hour. */ +export const DEFAULT_LOG_DATE_RANGE: LogDateRange = { + kind: 'relative', + last: { amount: 1, unit: 'hour' }, +} + +/** + * Parse a date-picker helper's label (e.g. "Last hour", "Last 3 hours", "Last 30 + * minutes") into a relative amount/unit. Covers both the static presets in + * `EXPLORER_DATEPICKER_HELPERS` and the dynamic helpers `generateHelpersFromInput` + * produces from typed input like "2h"/"30m". A label with no number means one unit + * ("Last hour"). Returns null for any other label. + */ +function parseRelativeHelperLabel( + text: string | undefined +): { amount: number; unit: RelativeTimeUnit } | null { + if (!text) return null + const match = text + .trim() + .toLowerCase() + .match(/^last\s+(?:(\d+)\s+)?(minute|hour|day)s?$/) + if (!match) return null + const amount = match[1] ? parseInt(match[1], 10) : 1 + if (!Number.isFinite(amount) || amount <= 0) return null + const unit = match[2] + if (unit !== 'minute' && unit !== 'hour' && unit !== 'day') return null + return { amount, unit } +} + +/** + * Convert a Logs date-picker value into a `LogDateRange`. Helper picks (presets and + * dynamic "2h"/"30m" helpers) become relative ranges by parsing the helper label; + * a preset's `calcTo()` resolves to `''` (meaning "now"), which the relative variant + * models implicitly. Everything else — custom calendar picks, or a helper whose label + * we can't parse — becomes an absolute range with validated ISO datetimes, degrading + * via `from`/now rather than rejecting an empty string. A value with no usable `from` + * falls back to the default range. + */ +export function datePickerValueToLogDateRange(value: DatePickerValue): LogDateRange { + if (value.isHelper) { + const relative = parseRelativeHelperLabel(value.text) + if (relative) return { kind: 'relative', last: relative } + } + + const from = isoDateTimeString(value.from) + if (from === null) return DEFAULT_LOG_DATE_RANGE + const to = isoDateTimeString(value.to) ?? nowIsoDateTime() + return { kind: 'absolute', from, to } +} + +/** + * Render a `LogDateRange` back into a Logs date-picker value for display. Relative + * ranges reuse the picker's own `generateDynamicHelper` to derive the resolved + * `from`/`to` and matching "Last N unit(s)" label, so the value is byte-for-byte + * what the picker itself would emit for that helper. Absolute ranges pass their + * datetimes through. + */ +export function logDateRangeToDatePickerValue(range: LogDateRange): DatePickerValue { + if (range.kind === 'relative') { + const helper = generateDynamicHelper(range.last.amount, range.last.unit) + return { from: helper.calcFrom(), to: helper.calcTo(), isHelper: true, text: helper.text } + } + return { from: range.from, to: range.to, isHelper: false } +} + +/** + * Resolve a `LogDateRange` to concrete ISO endpoints for a run. Relative ranges + * re-resolve against `now` (so "last hour" is always the hour before the run); + * absolute ranges pass through. Reuses the Logs `ResolvedLogDateRange` shape. + */ +export function resolveLogRunRange(range: LogDateRange): ResolvedLogDateRange { + if (range.kind === 'relative') { + const now = dayjs() + return { + from: now.subtract(range.last.amount, range.last.unit).toISOString(), + to: now.toISOString(), + } + } + return { from: range.from, to: range.to } +} diff --git a/apps/studio/components/interfaces/Settings/Logs/Logs.DatePickers.tsx b/apps/studio/components/interfaces/Settings/Logs/Logs.DatePickers.tsx index 1c1c6975f5289..811191d918a2c 100644 --- a/apps/studio/components/interfaces/Settings/Logs/Logs.DatePickers.tsx +++ b/apps/studio/components/interfaces/Settings/Logs/Logs.DatePickers.tsx @@ -17,6 +17,7 @@ import { } from 'ui' import { LOGS_LARGE_DATE_RANGE_DAYS_THRESHOLD } from './Logs.constants' +import { generateHelpersFromInput } from './Logs.datePickerHelpers' import type { DatetimeHelper } from './Logs.types' import { ButtonTooltip } from '@/components/ui/ButtonTooltip' import { TimeSplitInput } from '@/components/ui/DatePicker/TimeSplitInput' @@ -24,65 +25,6 @@ import { ShortcutTooltip } from '@/components/ui/ShortcutTooltip' import { useCheckEntitlements } from '@/hooks/misc/useCheckEntitlements' import type { ShortcutId } from '@/state/shortcuts/registry' -type Unit = 'minute' | 'hour' | 'day' - -export type ParsedCustomInput = - | { type: 'number'; value: number } - | { type: 'unit'; value: number; unit: Unit } - | { type: 'invalid' } - -export const parseCustomInput = (input: string): ParsedCustomInput => { - const trimmed = input.trim().toLowerCase() - if (!trimmed) return { type: 'invalid' } - - // Try to match "number + optional space + unit prefix" - const match = trimmed.match(/^(\d+)\s*([a-z]*)$/) - if (!match) return { type: 'invalid' } - - const [, numStr, unitStr] = match - const value = parseInt(numStr, 10) - - if (isNaN(value) || value <= 0) return { type: 'invalid' } - - if (!unitStr) { - return { type: 'number', value } - } - - // Match if unitStr is a prefix of any unit name or its first letter - const units: Unit[] = ['minute', 'hour', 'day'] - const matchedUnit = units.find((u) => u.startsWith(unitStr) || u[0] === unitStr) - - if (!matchedUnit) return { type: 'invalid' } - - return { type: 'unit', value, unit: matchedUnit } -} - -export const generateDynamicHelper = (value: number, unit: Unit): DatetimeHelper => { - return { - text: `Last ${value} ${unit}${value === 1 ? '' : 's'}`, - calcFrom: () => dayjs().subtract(value, unit).toISOString(), - calcTo: () => dayjs().toISOString(), - } -} - -export const generateDynamicHelpers = (value: number): DatetimeHelper[] => { - const units: Unit[] = ['minute', 'hour', 'day'] - return units.map((unit) => generateDynamicHelper(value, unit)) -} - -export const generateHelpersFromInput = (input: string): DatetimeHelper[] | null => { - const parsed = parseCustomInput(input) - - switch (parsed.type) { - case 'number': - return generateDynamicHelpers(parsed.value) - case 'unit': - return [generateDynamicHelper(parsed.value, parsed.unit)] - case 'invalid': - return null - } -} - export type DatePickerValue = { to: string from: string diff --git a/apps/studio/components/interfaces/Settings/Logs/Logs.datePickerHelpers.ts b/apps/studio/components/interfaces/Settings/Logs/Logs.datePickerHelpers.ts new file mode 100644 index 0000000000000..422a2f040339c --- /dev/null +++ b/apps/studio/components/interfaces/Settings/Logs/Logs.datePickerHelpers.ts @@ -0,0 +1,73 @@ +import dayjs from 'dayjs' + +import type { DatetimeHelper } from './Logs.types' + +/** + * Framework-free date-range helpers shared by the Logs date picker + * (`Logs.DatePickers.tsx`) and the SQL editor's logs query-source domain + * (`SQLEditor/querySource.ts`). Kept in a pure `.ts` module — depending only on + * dayjs — so both a React component and a valtio-free domain module can import it + * without pulling in the picker's UI. + */ + +/** The relative-range units the picker and the logs domain both speak. */ +export type Unit = 'minute' | 'hour' | 'day' + +export type ParsedCustomInput = + | { type: 'number'; value: number } + | { type: 'unit'; value: number; unit: Unit } + | { type: 'invalid' } + +export const parseCustomInput = (input: string): ParsedCustomInput => { + const trimmed = input.trim().toLowerCase() + if (!trimmed) return { type: 'invalid' } + + // Try to match "number + optional space + unit prefix" + const match = trimmed.match(/^(\d+)\s*([a-z]*)$/) + if (!match) return { type: 'invalid' } + + const [, numStr, unitStr] = match + const value = Number.parseInt(numStr, 10) + + // Only finite positive values may reach generateDynamicHelper(): Number.isFinite + // rejects NaN and Infinity outright, and the <= 0 guard keeps out non-positive. + if (!Number.isFinite(value) || value <= 0) return { type: 'invalid' } + + if (!unitStr) { + return { type: 'number', value } + } + + // Match if unitStr is a prefix of any unit name or its first letter + const units: Unit[] = ['minute', 'hour', 'day'] + const matchedUnit = units.find((u) => u.startsWith(unitStr) || u[0] === unitStr) + + if (!matchedUnit) return { type: 'invalid' } + + return { type: 'unit', value, unit: matchedUnit } +} + +export const generateDynamicHelper = (value: number, unit: Unit): DatetimeHelper => { + return { + text: `Last ${value} ${unit}${value === 1 ? '' : 's'}`, + calcFrom: () => dayjs().subtract(value, unit).toISOString(), + calcTo: () => dayjs().toISOString(), + } +} + +export const generateDynamicHelpers = (value: number): DatetimeHelper[] => { + const units: Unit[] = ['minute', 'hour', 'day'] + return units.map((unit) => generateDynamicHelper(value, unit)) +} + +export const generateHelpersFromInput = (input: string): DatetimeHelper[] | null => { + const parsed = parseCustomInput(input) + + switch (parsed.type) { + case 'number': + return generateDynamicHelpers(parsed.value) + case 'unit': + return [generateDynamicHelper(parsed.value, parsed.unit)] + case 'invalid': + return null + } +} diff --git a/apps/studio/state/sql-editor/sql-editor-session-state.ts b/apps/studio/state/sql-editor/sql-editor-session-state.ts index 338e7eb365146..38aeafc030c19 100644 --- a/apps/studio/state/sql-editor/sql-editor-session-state.ts +++ b/apps/studio/state/sql-editor/sql-editor-session-state.ts @@ -1,10 +1,12 @@ import { proxy, ref, snapshot, useSnapshot } from 'valtio' +import type { LogDateRange } from '@/components/interfaces/SQLEditor/querySource' + /** - * Ephemeral, per-session SQL editor state that is NOT persisted: query results - * and the row limit. Kept separate from the snippet/folder store (which deals - * with persistence) because none of this is saved — it lives only for the - * current editing session. + * Ephemeral, per-session SQL editor state that is NOT persisted: query results, + * the row limit, and the per-snippet logs time range. Kept separate from the + * snippet/folder store (which deals with persistence) because none of this is + * saved — it lives only for the current editing session. */ export const sqlEditorSessionState = proxy({ /** @@ -29,6 +31,18 @@ export const sqlEditorSessionState = proxy({ setLimit: (value: number) => (sqlEditorSessionState.limit = value), + /** + * The logs time range for a logs snippet, keyed by snippet id. Session state — + * never written to snippet content — so it works on read-only shared snippets + * and resets on reload. An unset snippet has no entry; read sites fall back to + * `DEFAULT_LOG_DATE_RANGE`. + */ + logRange: {} as { [snippetId: string]: LogDateRange }, + + setLogRange: (id: string, range: LogDateRange) => { + sqlEditorSessionState.logRange[id] = range + }, + addResult: (id: string, results: any[], autoLimit?: number) => { // Use ref() to prevent Valtio from creating proxies for each row object. // This is critical for large result sets - without ref(), Valtio wraps every @@ -49,6 +63,7 @@ export const sqlEditorSessionState = proxy({ /** Drop all session state for a snippet (called when the snippet is removed). */ clearForSnippet: (id: string) => { delete sqlEditorSessionState.results[id] + delete sqlEditorSessionState.logRange[id] }, }) diff --git a/apps/studio/tests/features/logs/Logs.Datepickers.test.tsx b/apps/studio/tests/features/logs/Logs.Datepickers.test.tsx index 654a4d52a8c0c..09e328d5f4ec5 100644 --- a/apps/studio/tests/features/logs/Logs.Datepickers.test.tsx +++ b/apps/studio/tests/features/logs/Logs.Datepickers.test.tsx @@ -11,9 +11,9 @@ import { generateDynamicHelper, generateDynamicHelpers, generateHelpersFromInput, - LogsDatePicker, parseCustomInput, -} from '@/components/interfaces/Settings/Logs/Logs.DatePickers' +} from '@/components/interfaces/Settings/Logs/Logs.datePickerHelpers' +import { LogsDatePicker } from '@/components/interfaces/Settings/Logs/Logs.DatePickers' import { DatetimeHelper } from '@/components/interfaces/Settings/Logs/Logs.types' dayjs.extend(timezone) From 944b41c7084a2002cff297ce165c0928d25dde8f Mon Sep 17 00:00:00 2001 From: Daniel Guerra <15204776+danielmx-dev@users.noreply.github.com> Date: Tue, 28 Jul 2026 12:38:44 -0600 Subject: [PATCH 07/10] Add Daniel Guerra to humans.txt (#48412) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? Add myself (Daniel Guerra) to `humans.txt` as part of my onboarding. ## Summary by CodeRabbit * **Documentation** * Added Daniel Guerra to the team information listed in the project’s public documentation. --- apps/docs/public/humans.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/docs/public/humans.txt b/apps/docs/public/humans.txt index 28baf1d0b78ca..b9b05b1ecbfaa 100644 --- a/apps/docs/public/humans.txt +++ b/apps/docs/public/humans.txt @@ -70,6 +70,7 @@ Colum Ferry Craig Cannon Cuong Do Dane Harrigan +Daniel Guerra Daniel Mitterdorfer Daniel Velázquez Lara Danny White From 37dded67d123f7c650a78ea6320e53e118dc5262 Mon Sep 17 00:00:00 2001 From: Danny White <3104761+dnywh@users.noreply.github.com> Date: Tue, 28 Jul 2026 16:21:50 -0400 Subject: [PATCH 08/10] feat: unify SkipToContent across studio, docs, www, and design-system (#48314) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What kind of change does this PR introduce? Feature / a11y polish ## What is the current behavior? Studio and Docs each had their own skip-to-content link (different styling and behaviour). www and design-system had none. ## What is the new behavior? Shared `SkipToContent` in `ui-patterns`, adopted by Studio, Docs, www, and design-system. Documented as a fragment with a short note under Accessibility → Jumping ahead. Tab once to reveal the button (top-left), Enter to jump to a content-only `
`. | After | | --- | | CleanShot 2026-07-24 at 14 08
47@2x | ## To test Shared steps for every app: enable Tab key navigation if needed, load the preview, press **Tab** once — skip button should slide in top-left. Press **Enter** — focus jumps to main content (no blue ring on `
`). Press **Tab** again — first interactive control in the page body, not the sidebar/nav. Hover the skip button — solid fill, clear hover state, no chrome showing through. - **Studio** — [preview](https://studio-staging-git-dnywh-featskip-to-content-supabase.vercel.app) → sign in → any project page - **Docs** — [preview](https://docs-git-dnywh-featskip-to-content-supabase.vercel.app) → any docs page with sidebar - **www** — [preview](https://zone-www-dot-com-git-dnywh-featskip-to-content-supabase.vercel.app) → homepage or any marketing page with the default nav - **Design system** — [preview](https://design-system-git-dnywh-featskip-to-content-supabase.vercel.app) → any docs page (confirm Tab from content does **not** walk the sidebar), plus [Skip to Content fragment](https://design-system-git-dnywh-featskip-to-content-supabase.vercel.app/docs/fragments/skip-to-content) ## Additional context Follow-up to #47694 / #48303 (Studio) and #47515 (Docs). ## Summary by CodeRabbit - **New Features** - Added a reusable “Skip to content” accessibility link across key layouts and pages. - Updated main landmarks to support keyboard focus and skip-link navigation (`id="main"`). - **Accessibility** - Skip links now follow consistent landmark-target conventions and remain hidden until focused. - Improved documentation for skip links/jump shortcuts in persistent chrome layouts. - **Documentation** - Added a dedicated Skip to Content fragment, navigation entry, and expanded accessibility guidance. - Updated button description wording in component docs. - **Tests** - Added component tests for SkipToContent. - **Chores** - Exposed SkipToContent via additional public package entry points. --- .../default/block/chart-bar-interactive.tsx | 3 +- apps/design-system/__registry__/index.tsx | 11 ++++ apps/design-system/app/(app)/layout.tsx | 11 ++-- apps/design-system/config/docs.ts | 5 ++ .../content/docs/accessibility.mdx | 6 ++- .../content/docs/components/button.mdx | 2 +- .../docs/fragments/skip-to-content.mdx | 53 +++++++++++++++++++ .../content/docs/ui-patterns/navigation.mdx | 6 ++- .../default/example/skip-to-content-demo.tsx | 19 +++++++ apps/design-system/registry/examples.ts | 5 ++ apps/docs/app/layout.tsx | 5 +- apps/docs/components/SkipToContent.tsx | 22 -------- apps/docs/layouts/MainSkeleton.tsx | 2 +- .../components/layouts/DefaultLayout.tsx | 26 ++------- apps/www/app/(home)/layout.tsx | 6 ++- apps/www/components/Go/GoPageRenderer.tsx | 8 ++- apps/www/components/Layouts/Default.tsx | 10 +++- packages/ui-patterns/package.json | 8 +++ .../src/SkipToContent/SkipToContent.test.tsx | 41 ++++++++++++++ .../src/SkipToContent/SkipToContent.tsx | 37 +++++++++++++ .../ui-patterns/src/SkipToContent/index.tsx | 1 + 21 files changed, 228 insertions(+), 59 deletions(-) create mode 100644 apps/design-system/content/docs/fragments/skip-to-content.mdx create mode 100644 apps/design-system/registry/default/example/skip-to-content-demo.tsx delete mode 100644 apps/docs/components/SkipToContent.tsx create mode 100644 packages/ui-patterns/src/SkipToContent/SkipToContent.test.tsx create mode 100644 packages/ui-patterns/src/SkipToContent/SkipToContent.tsx create mode 100644 packages/ui-patterns/src/SkipToContent/index.tsx diff --git a/apps/design-system/__registry__/default/block/chart-bar-interactive.tsx b/apps/design-system/__registry__/default/block/chart-bar-interactive.tsx index fca68de5bc732..128664bb431e8 100644 --- a/apps/design-system/__registry__/default/block/chart-bar-interactive.tsx +++ b/apps/design-system/__registry__/default/block/chart-bar-interactive.tsx @@ -146,7 +146,8 @@ export default function Component() { {['desktop', 'mobile'].map((key) => { const chart = key as keyof typeof chartConfig return ( - - ) -} - -export { SkipToContent } diff --git a/apps/docs/layouts/MainSkeleton.tsx b/apps/docs/layouts/MainSkeleton.tsx index 93cc70fa00c19..5ae70b4386cd9 100644 --- a/apps/docs/layouts/MainSkeleton.tsx +++ b/apps/docs/layouts/MainSkeleton.tsx @@ -290,7 +290,7 @@ const Container = memo(function Container({ id={DOCS_CONTENT_CONTAINER_ID} tabIndex={-1} className={cn( - 'w-full transition-all ease-out relative scroll-mt-(--header-height)', + 'w-full transition-all ease-out relative scroll-mt-(--header-height) outline-hidden', // desktop override any margin styles 'lg:ml-0', className diff --git a/apps/studio/components/layouts/DefaultLayout.tsx b/apps/studio/components/layouts/DefaultLayout.tsx index 0d507baaca380..734493bb7bba0 100644 --- a/apps/studio/components/layouts/DefaultLayout.tsx +++ b/apps/studio/components/layouts/DefaultLayout.tsx @@ -1,14 +1,8 @@ import { useBreakpoint, useParams } from 'common' import { useRouter } from 'next/router' import { PropsWithChildren, useEffect, useState } from 'react' -import { - buttonVariants, - cn, - ResizablePanel, - ResizablePanelGroup, - SidebarProvider, - usePanelRef, -} from 'ui' +import { ResizablePanel, ResizablePanelGroup, SidebarProvider, usePanelRef } from 'ui' +import { SkipToContent } from 'ui-patterns/SkipToContent' import { BannerStack } from '../ui/BannerStack/BannerStack' import { LayoutHeader } from './Navigation/LayoutHeader/LayoutHeader' @@ -101,19 +95,7 @@ export const DefaultLayout = ({
- - Skip to content - + {/* Top Banner */}
@@ -144,7 +126,7 @@ export const DefaultLayout = ({ maxSize={`${contentMaxSizePercentage}`} defaultSize={`${contentMaxSizePercentage}`} > -
+
{children}
diff --git a/apps/www/app/(home)/layout.tsx b/apps/www/app/(home)/layout.tsx index 61677b56677b0..0e005f310f9c2 100644 --- a/apps/www/app/(home)/layout.tsx +++ b/apps/www/app/(home)/layout.tsx @@ -1,15 +1,19 @@ import Footer from '~/components/Footer' import Nav from '~/components/Nav' +import { SkipToContent } from 'ui-patterns/SkipToContent' import { ThemeForcer } from './ThemeForcer' export default function HomeLayout({ children }: { children: React.ReactNode }) { return ( <> +