diff --git a/apps/studio/components/interfaces/Auth/Policies/PolicyEditor/PolicyDefinition.tsx b/apps/studio/components/interfaces/Auth/Policies/PolicyEditor/PolicyDefinition.tsx
index f695fb6717a..25a12759699 100644
--- a/apps/studio/components/interfaces/Auth/Policies/PolicyEditor/PolicyDefinition.tsx
+++ b/apps/studio/components/interfaces/Auth/Policies/PolicyEditor/PolicyDefinition.tsx
@@ -1,9 +1,9 @@
+import { usePrevious } from '@uidotdev/usehooks'
import { noop } from 'lodash'
+import { HelpCircle } from 'lucide-react'
import { useEffect } from 'react'
import SqlEditor from 'components/ui/SqlEditor'
-import { usePrevious } from 'hooks/deprecated'
-import { HelpCircle } from 'lucide-react'
import { Tooltip, TooltipContent, TooltipTrigger } from 'ui'
interface PolicyDefinitionProps {
diff --git a/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx b/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx
index 48931a50560..d3e77df1c63 100644
--- a/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx
+++ b/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx
@@ -7,12 +7,11 @@ import { useParams } from 'common'
import NoSearchResults from 'components/to-be-cleaned/NoSearchResults'
import AlertError from 'components/ui/AlertError'
import { ButtonTooltip } from 'components/ui/ButtonTooltip'
-import { Loading } from 'components/ui/Loading'
import { useDatabasePublicationsQuery } from 'data/database-publications/database-publications-query'
import { useTablesQuery } from 'data/tables/tables-query'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
-import { Card, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from 'ui'
+import { Card, LogoLoader, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from 'ui'
import { Admonition } from 'ui-patterns'
import { Input } from 'ui-patterns/DataInputs/Input'
import { PublicationsTableItem } from './PublicationsTableItem'
@@ -87,7 +86,7 @@ export const PublicationsTables = () => {
{(isLoading || isLoadingPermissions) && (
-
+
)}
diff --git a/apps/studio/components/interfaces/HomeNew/CustomReportSection.tsx b/apps/studio/components/interfaces/HomeNew/CustomReportSection.tsx
index 62e4c9fb4f5..601c04fadf3 100644
--- a/apps/studio/components/interfaces/HomeNew/CustomReportSection.tsx
+++ b/apps/studio/components/interfaces/HomeNew/CustomReportSection.tsx
@@ -9,8 +9,8 @@ import {
import { SortableContext, arrayMove, rectSortingStrategy, useSortable } from '@dnd-kit/sortable'
import { PermissionAction } from '@supabase/shared-types/out/constants'
import dayjs from 'dayjs'
-import type { CSSProperties, DragEvent, ReactNode } from 'react'
import { Plus, RefreshCw } from 'lucide-react'
+import type { CSSProperties, DragEvent, ReactNode } from 'react'
import { useCallback, useEffect, useMemo, useState } from 'react'
import { toast } from 'sonner'
diff --git a/apps/studio/components/interfaces/Integrations/GraphQL/GraphiQLTab.tsx b/apps/studio/components/interfaces/Integrations/GraphQL/GraphiQLTab.tsx
index 2478f55f7cd..2f5cd906fc9 100644
--- a/apps/studio/components/interfaces/Integrations/GraphQL/GraphiQLTab.tsx
+++ b/apps/studio/components/interfaces/Integrations/GraphQL/GraphiQLTab.tsx
@@ -6,13 +6,13 @@ import { toast } from 'sonner'
import { useParams } from 'common'
import GraphiQL from 'components/interfaces/GraphQL/GraphiQL'
-import { Loading } from 'components/ui/Loading'
import { getKeys, useAPIKeysQuery } from 'data/api-keys/api-keys-query'
import { useSessionAccessTokenQuery } from 'data/auth/session-access-token-query'
import { useProjectPostgrestConfigQuery } from 'data/config/project-postgrest-config-query'
import { API_URL, IS_PLATFORM } from 'lib/constants'
import { getRoleImpersonationJWT } from 'lib/role-impersonation'
import { useGetImpersonatedRoleState } from 'state/role-impersonation-state'
+import { LogoLoader } from 'ui'
export const GraphiQLTab = () => {
const { resolvedTheme } = useTheme()
@@ -73,7 +73,7 @@ export const GraphiQLTab = () => {
}, [projectRef, getImpersonatedRoleState, jwtSecret, accessToken, serviceKey, secretKey?.api_key])
if ((IS_PLATFORM && !accessToken) || !isFetched) {
- return
+ return
}
return
diff --git a/apps/studio/components/interfaces/Reports/GridResize.tsx b/apps/studio/components/interfaces/Reports/GridResize.tsx
index f4634f74834..6355da82b91 100644
--- a/apps/studio/components/interfaces/Reports/GridResize.tsx
+++ b/apps/studio/components/interfaces/Reports/GridResize.tsx
@@ -15,7 +15,7 @@ import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization
import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
import { uuidv4 } from 'lib/helpers'
import { useProfile } from 'lib/profile'
-import { Dashboards } from 'types'
+import type { Dashboards } from 'types'
import { createSqlSnippetSkeletonV2 } from '../SQLEditor/SQLEditor.utils'
import { ChartConfig } from '../SQLEditor/UtilityPanel/ChartConfig'
import { ReportBlock } from './ReportBlock/ReportBlock'
diff --git a/apps/studio/components/interfaces/Reports/MetricOptions.tsx b/apps/studio/components/interfaces/Reports/MetricOptions.tsx
index 53d39b157bc..19cc6bab799 100644
--- a/apps/studio/components/interfaces/Reports/MetricOptions.tsx
+++ b/apps/studio/components/interfaces/Reports/MetricOptions.tsx
@@ -8,7 +8,7 @@ import { useSendEventMutation } from 'data/telemetry/send-event-mutation'
import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization'
import { Metric, METRIC_CATEGORIES, METRICS } from 'lib/constants/metrics'
-import { Dashboards } from 'types'
+import type { Dashboards } from 'types'
import {
Command_Shadcn_,
CommandEmpty_Shadcn_,
diff --git a/apps/studio/components/interfaces/Reports/ReportBlock/ChartBlock.tsx b/apps/studio/components/interfaces/Reports/ReportBlock/ChartBlock.tsx
index 1e6ea533305..155fc26e1f9 100644
--- a/apps/studio/components/interfaces/Reports/ReportBlock/ChartBlock.tsx
+++ b/apps/studio/components/interfaces/Reports/ReportBlock/ChartBlock.tsx
@@ -19,7 +19,7 @@ import { METRICS } from 'lib/constants/metrics'
import { Activity, BarChartIcon, Loader2 } from 'lucide-react'
import { Bar, BarChart, CartesianGrid, Line, LineChart, XAxis, YAxis } from 'recharts'
import { useDatabaseSelectorStateSnapshot } from 'state/database-selector'
-import { Dashboards } from 'types'
+import type { Dashboards } from 'types'
import { WarningIcon } from 'ui'
import { METRIC_THRESHOLDS } from './ReportBlock.constants'
import { ReportBlockContainer } from './ReportBlockContainer'
diff --git a/apps/studio/components/interfaces/Reports/Reports.tsx b/apps/studio/components/interfaces/Reports/Reports.tsx
index b51b6661b13..b2669fe8949 100644
--- a/apps/studio/components/interfaces/Reports/Reports.tsx
+++ b/apps/studio/components/interfaces/Reports/Reports.tsx
@@ -11,7 +11,6 @@ import { useParams } from 'common'
import { ButtonTooltip } from 'components/ui/ButtonTooltip'
import DatabaseSelector from 'components/ui/DatabaseSelector'
import { DateRangePicker } from 'components/ui/DateRangePicker'
-import { Loading } from 'components/ui/Loading'
import NoPermission from 'components/ui/NoPermission'
import { DEFAULT_CHART_CONFIG } from 'components/ui/QueryBlock/QueryBlock'
import { AnalyticsInterval } from 'data/analytics/constants'
@@ -29,8 +28,8 @@ import { Metric, TIME_PERIODS_REPORTS } from 'lib/constants/metrics'
import { uuidv4 } from 'lib/helpers'
import { useProfile } from 'lib/profile'
import { useDatabaseSelectorStateSnapshot } from 'state/database-selector'
-import { Dashboards } from 'types'
-import { Button, cn, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from 'ui'
+import type { Dashboards } from 'types'
+import { Button, cn, DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, LogoLoader } from 'ui'
import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal'
import { createSqlSnippetSkeletonV2 } from '../SQLEditor/SQLEditor.utils'
import { ChartConfig } from '../SQLEditor/UtilityPanel/ChartConfig'
@@ -392,7 +391,7 @@ const Reports = () => {
}, [hasEdits, confirmNavigate, router])
if (isLoading || isLoadingPermissions) {
- return
+ return
}
if (!canReadReport) {
diff --git a/apps/studio/components/interfaces/SQLEditor/UtilityPanel/SavingIndicator.tsx b/apps/studio/components/interfaces/SQLEditor/UtilityPanel/SavingIndicator.tsx
index 9a0591906e5..a8fbec38aac 100644
--- a/apps/studio/components/interfaces/SQLEditor/UtilityPanel/SavingIndicator.tsx
+++ b/apps/studio/components/interfaces/SQLEditor/UtilityPanel/SavingIndicator.tsx
@@ -1,7 +1,7 @@
+import { usePrevious } from '@uidotdev/usehooks'
import { AlertCircle, Check, Loader2, RefreshCcw } from 'lucide-react'
import { useEffect, useState } from 'react'
-import { usePrevious } from 'hooks/deprecated'
import { useProfile } from 'lib/profile'
import { useSqlEditorV2StateSnapshot } from 'state/sql-editor-v2'
import { Button, Tooltip, TooltipContent, TooltipTrigger } from 'ui'
diff --git a/apps/studio/components/interfaces/Settings/Logs/RecentQueriesItem.tsx b/apps/studio/components/interfaces/Settings/Logs/RecentQueriesItem.tsx
index 4d95be7cea0..0afcc534c07 100644
--- a/apps/studio/components/interfaces/Settings/Logs/RecentQueriesItem.tsx
+++ b/apps/studio/components/interfaces/Settings/Logs/RecentQueriesItem.tsx
@@ -1,9 +1,10 @@
-import Table from 'components/to-be-cleaned/Table'
+import { Play } from 'lucide-react'
import { useRouter } from 'next/router'
+
+import Table from 'components/to-be-cleaned/Table'
import type { LogSqlSnippets } from 'types'
import { Button } from 'ui'
import SqlSnippetCode from './Logs.SqlSnippetCode'
-import { Play } from 'lucide-react'
interface Props {
item: LogSqlSnippets.Content
diff --git a/apps/studio/components/interfaces/UnifiedLogs/ServiceFlowPanel.tsx b/apps/studio/components/interfaces/UnifiedLogs/ServiceFlowPanel.tsx
index 17bc50b429f..d1ece93f8cd 100644
--- a/apps/studio/components/interfaces/UnifiedLogs/ServiceFlowPanel.tsx
+++ b/apps/studio/components/interfaces/UnifiedLogs/ServiceFlowPanel.tsx
@@ -2,7 +2,10 @@ import { useState } from 'react'
import { useParams } from 'common'
import { useDataTable } from 'components/ui/DataTable/providers/DataTableProvider'
-import { ServiceFlowType, useUnifiedLogInspectionQuery } from 'data/logs'
+import {
+ ServiceFlowType,
+ useUnifiedLogInspectionQuery,
+} from 'data/logs/unified-log-inspection-query'
import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
import {
CodeBlock,
diff --git a/apps/studio/components/layouts/ProjectLayout/index.tsx b/apps/studio/components/layouts/ProjectLayout/index.tsx
index cb259ffca56..43bc5ec4668 100644
--- a/apps/studio/components/layouts/ProjectLayout/index.tsx
+++ b/apps/studio/components/layouts/ProjectLayout/index.tsx
@@ -5,7 +5,6 @@ import { forwardRef, Fragment, PropsWithChildren, ReactNode, useEffect, useState
import { useFlag, useParams } from 'common'
import { CreateBranchModal } from 'components/interfaces/BranchManagement/CreateBranchModal'
import { ProjectAPIDocs } from 'components/interfaces/ProjectAPIDocs/ProjectAPIDocs'
-import { Loading } from 'components/ui/Loading'
import { ResourceExhaustionWarningBanner } from 'components/ui/ResourceExhaustionWarningBanner/ResourceExhaustionWarningBanner'
import { AnimatePresence, motion } from 'framer-motion'
import { useCustomContent } from 'hooks/custom-content/useCustomContent'
@@ -15,7 +14,7 @@ import { withAuth } from 'hooks/misc/withAuth'
import { PROJECT_STATUS } from 'lib/constants'
import { useAppStateSnapshot } from 'state/app-state'
import { useDatabaseSelectorStateSnapshot } from 'state/database-selector'
-import { cn, ResizableHandle, ResizablePanel, ResizablePanelGroup } from 'ui'
+import { cn, LogoLoader, ResizableHandle, ResizablePanel, ResizablePanelGroup } from 'ui'
import MobileSheetNav from 'ui-patterns/MobileSheetNav/MobileSheetNav'
import { useEditorType } from '../editors/EditorsLayout.hooks'
import BuildingState from './BuildingState'
@@ -334,7 +333,7 @@ const ContentWrapper = ({ isLoading, isBlocking = true, children }: ContentWrapp
}, [ref])
if (isBlocking && (isLoading || (requiresProjectDetails && selectedProject === undefined))) {
- return router.pathname.endsWith('[ref]') ? :
+ return router.pathname.endsWith('[ref]') ? :
}
if (isRestarting && !isBackupsPage) {
@@ -370,7 +369,7 @@ const ContentWrapper = ({ isLoading, isBlocking = true, children }: ContentWrapp
}
if (shouldRedirectToHomeForBuilding) {
- return
+ return
}
if (shouldShowBuildingState) {
diff --git a/apps/studio/components/layouts/ReportsLayout/ReportMenuItem.tsx b/apps/studio/components/layouts/ReportsLayout/ReportMenuItem.tsx
index 781a4080ba2..0b8b048919a 100644
--- a/apps/studio/components/layouts/ReportsLayout/ReportMenuItem.tsx
+++ b/apps/studio/components/layouts/ReportsLayout/ReportMenuItem.tsx
@@ -5,7 +5,7 @@ import Link from 'next/link'
import { ContentBase } from 'data/content/content-query'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { useProfile } from 'lib/profile'
-import { Dashboards } from 'types'
+import type { Dashboards } from 'types'
import {
Button,
cn,
diff --git a/apps/studio/components/layouts/SQLEditorLayout/SQLEditorNavV2/ShareSnippetModal.tsx b/apps/studio/components/layouts/SQLEditorLayout/SQLEditorNavV2/ShareSnippetModal.tsx
index c6e33f9922f..28c2be47152 100644
--- a/apps/studio/components/layouts/SQLEditorLayout/SQLEditorNavV2/ShareSnippetModal.tsx
+++ b/apps/studio/components/layouts/SQLEditorLayout/SQLEditorNavV2/ShareSnippetModal.tsx
@@ -6,7 +6,7 @@ import { getContentById } from 'data/content/content-id-query'
import { useContentUpsertMutation } from 'data/content/content-upsert-mutation'
import { Snippet } from 'data/content/sql-folders-query'
import { useSqlEditorV2StateSnapshot } from 'state/sql-editor-v2'
-import { SqlSnippets } from 'types'
+import type { SqlSnippets } from 'types'
import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal'
export const ShareSnippetModal = ({
diff --git a/apps/studio/components/layouts/SQLEditorLayout/SQLEditorNavV2/UnshareSnippetModal.tsx b/apps/studio/components/layouts/SQLEditorLayout/SQLEditorNavV2/UnshareSnippetModal.tsx
index 3da90a17921..fb1fc02d292 100644
--- a/apps/studio/components/layouts/SQLEditorLayout/SQLEditorNavV2/UnshareSnippetModal.tsx
+++ b/apps/studio/components/layouts/SQLEditorLayout/SQLEditorNavV2/UnshareSnippetModal.tsx
@@ -1,11 +1,12 @@
+import { EyeOffIcon } from 'lucide-react'
+import { toast } from 'sonner'
+
import { useParams } from 'common'
import { getContentById } from 'data/content/content-id-query'
import { useContentUpsertMutation } from 'data/content/content-upsert-mutation'
import { Snippet } from 'data/content/sql-folders-query'
-import { EyeOffIcon } from 'lucide-react'
-import { toast } from 'sonner'
import { useSqlEditorV2StateSnapshot } from 'state/sql-editor-v2'
-import { SqlSnippets } from 'types'
+import type { SqlSnippets } from 'types'
import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal'
export const UnshareSnippetModal = ({
diff --git a/apps/studio/components/to-be-cleaned/TooltipListener.tsx b/apps/studio/components/to-be-cleaned/TooltipListener.tsx
deleted file mode 100644
index 7f520660618..00000000000
--- a/apps/studio/components/to-be-cleaned/TooltipListener.tsx
+++ /dev/null
@@ -1,80 +0,0 @@
-import { useRef, useEffect } from 'react'
-import { renderToString } from 'react-dom/server'
-
-import { makeRandomString } from 'lib/helpers'
-import KeyMap from './KeyMap'
-
-/**
- * Hook for listening to hover action on the target element and show tooltip.
- * A tooltip contains a title and an optional keyMap shortcut.
- *
- * @param {String} title
- * @param {String} position top/top-left/bottom/bottom-left/left/right. default value: bottom
- * @param {String} keyMap element key shortcuts
- * @param {String} className custom class name
- * @param {Boolean} nowrap disable title wrap text
- *
- * @returns {Object} Ref for the target element
- */
-
-export default function TooltipListener({
- title = '',
- position = 'bottom',
- keyMap = null,
- className = '',
- nowrap = false,
-}) {
- const ref = useRef(null)
- const tooltipId = `tooltip-${makeRandomString(5)}`
- const tooltip = document.createElement('div')
- tooltip.id = tooltipId
- tooltip.className = `tooltips ${position} absolute p-2 m-1 bg-black border border-solid border-default rounded-lg rounded text-center ${className} z-50`
- tooltip.innerHTML = `${title} ${renderToString(
-
- {/* force dark mode on KeyMap */}
-
-
- )}`
-
- function handleMouseOver() {
- const elem = document.getElementById(tooltipId)
- if (!elem) {
- ref.current.style.position = 'relative'
- ref.current.appendChild(tooltip)
- }
- }
-
- function handleMouseLeave() {
- removeTooltip()
- }
-
- function handleMouseClick() {
- removeTooltip()
- }
-
- function removeTooltip() {
- const elem = document.getElementById(tooltipId)
- if (elem) {
- ref.current.style.position = 'static'
- ref.current.removeChild(elem)
- }
- }
-
- useEffect(() => {
- if (!ref.current) return
-
- ref.current.addEventListener('mouseover', handleMouseOver)
- ref.current.addEventListener('mouseleave', handleMouseLeave)
- ref.current.addEventListener('click', handleMouseClick)
-
- return () => {
- ref.current.removeEventListener('mouseover', handleMouseOver)
- ref.current.removeEventListener('mouseleave', handleMouseLeave)
- ref.current.removeEventListener('click', handleMouseClick)
- }
- }, [ref.current])
-
- return ref
-}
diff --git a/apps/studio/components/ui/CodeEditor/CodeEditor.tsx b/apps/studio/components/ui/CodeEditor/CodeEditor.tsx
index 90532d12041..971ddc07083 100644
--- a/apps/studio/components/ui/CodeEditor/CodeEditor.tsx
+++ b/apps/studio/components/ui/CodeEditor/CodeEditor.tsx
@@ -7,8 +7,7 @@ import { Markdown } from 'components/interfaces/Markdown'
import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
import { formatSql } from 'lib/formatSql'
import { timeout } from 'lib/helpers'
-import { cn } from 'ui'
-import { Loading } from '../Loading'
+import { cn, LogoLoader } from 'ui'
import { alignEditor } from './CodeEditor.utils'
type CodeEditorActions = { enabled: boolean; callback: (value: any) => void }
@@ -238,7 +237,7 @@ const CodeEditor = ({
value={value ?? undefined}
language={language}
defaultValue={defaultValue ?? undefined}
- loading={loading || }
+ loading={loading || }
options={optionsMerged}
onMount={onMount}
onChange={onChangeContent}
diff --git a/apps/studio/components/ui/Loading/index.ts b/apps/studio/components/ui/Loading/index.ts
deleted file mode 100644
index c7260e08d48..00000000000
--- a/apps/studio/components/ui/Loading/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { LogoLoader as Loading } from 'ui'
diff --git a/apps/studio/components/ui/SqlEditor.tsx b/apps/studio/components/ui/SqlEditor.tsx
index cd73a9438f6..8dc3157e6de 100644
--- a/apps/studio/components/ui/SqlEditor.tsx
+++ b/apps/studio/components/ui/SqlEditor.tsx
@@ -3,6 +3,7 @@ import { noop } from 'lodash'
import { useEffect, useRef } from 'react'
import { formatSql } from 'lib/formatSql'
+import { LogoLoader } from 'ui'
// [Joshen] We should deprecate this and use CodeEditor instead
@@ -86,7 +87,7 @@ const SqlEditor = ({
defaultLanguage={language}
defaultValue={defaultValue}
path={queryId}
- loading={}
+ loading={}
options={{
readOnly,
tabSize: 2,
diff --git a/apps/studio/data/content-api/docs-error-codes-query.ts b/apps/studio/data/content-api/docs-error-codes-query.ts
index 28b96a378d8..58e10dc04bf 100644
--- a/apps/studio/data/content-api/docs-error-codes-query.ts
+++ b/apps/studio/data/content-api/docs-error-codes-query.ts
@@ -1,6 +1,6 @@
import { useQuery, type UseQueryOptions } from '@tanstack/react-query'
-import { graphql } from 'data/graphql'
import { executeGraphQL } from 'data/graphql/execute'
+import { graphql } from 'data/graphql/gql'
import { Service } from 'data/graphql/graphql'
import { contentApiKeys } from './keys'
diff --git a/apps/studio/data/database/database-query-constants.ts b/apps/studio/data/database/database-query-constants.ts
index 328a469fecb..f05a837a205 100644
--- a/apps/studio/data/database/database-query-constants.ts
+++ b/apps/studio/data/database/database-query-constants.ts
@@ -1,7 +1,4 @@
-export { CREATE_PG_GET_TABLEDEF_SQL } from './database-table-definition'
-
// https://www.postgresql.org/docs/current/catalog-pg-constraint.html
-
export enum FOREIGN_KEY_CASCADE_ACTION {
NO_ACTION = 'a',
RESTRICT = 'r',
diff --git a/apps/studio/data/database/entity-definitions-query.ts b/apps/studio/data/database/entity-definitions-query.ts
index 3630ba2e578..49bc48c4ba1 100644
--- a/apps/studio/data/database/entity-definitions-query.ts
+++ b/apps/studio/data/database/entity-definitions-query.ts
@@ -1,6 +1,6 @@
import { useQuery, UseQueryOptions } from '@tanstack/react-query'
import { executeSql, ExecuteSqlError } from '../sql/execute-sql-query'
-import { CREATE_PG_GET_TABLEDEF_SQL } from './database-query-constants'
+import { CREATE_PG_GET_TABLEDEF_SQL } from './database-table-definition'
import { databaseKeys } from './keys'
export const getEntityDefinitionsSql = ({
diff --git a/apps/studio/data/database/table-definition-query.ts b/apps/studio/data/database/table-definition-query.ts
index b5b5bb1593b..b20a20f163b 100644
--- a/apps/studio/data/database/table-definition-query.ts
+++ b/apps/studio/data/database/table-definition-query.ts
@@ -1,6 +1,6 @@
import { useQuery, UseQueryOptions } from '@tanstack/react-query'
import { executeSql, ExecuteSqlError } from '../sql/execute-sql-query'
-import { CREATE_PG_GET_TABLEDEF_SQL } from './database-query-constants'
+import { CREATE_PG_GET_TABLEDEF_SQL } from './database-table-definition'
import { databaseKeys } from './keys'
type GetTableDefinitionArgs = {
diff --git a/apps/studio/data/graphql/index.ts b/apps/studio/data/graphql/index.ts
deleted file mode 100644
index 83851531f64..00000000000
--- a/apps/studio/data/graphql/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export {} from './fragment-masking'
-export { graphql } from './gql'
diff --git a/apps/studio/data/logs/index.ts b/apps/studio/data/logs/index.ts
deleted file mode 100644
index 4410f1e3b84..00000000000
--- a/apps/studio/data/logs/index.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export { logsKeys } from './keys'
-export {
- useUnifiedLogInspectionQuery,
- getUnifiedLogInspection,
- SERVICE_FLOW_TYPES,
- type ServiceFlowType,
- type UnifiedLogInspectionVariables,
- type UnifiedLogInspectionResponse,
- type UnifiedLogInspectionEntry,
- type UnifiedLogInspectionData,
- type UnifiedLogInspectionError,
-} from './unified-log-inspection-query'
diff --git a/apps/studio/hooks/deprecated.ts b/apps/studio/hooks/deprecated.ts
deleted file mode 100644
index f5e534d08a2..00000000000
--- a/apps/studio/hooks/deprecated.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import TooltipListener from 'components/to-be-cleaned/TooltipListener'
-import { useEffect, useRef } from 'react'
-
-function usePrevious(value: any) {
- const ref = useRef()
- useEffect(() => {
- ref.current = value
- })
- return ref.current
-}
-
-export { TooltipListener, usePrevious }
diff --git a/apps/studio/hooks/misc/useCheckPermissions.ts b/apps/studio/hooks/misc/useCheckPermissions.ts
index 96f3667c052..b7ce793b75b 100644
--- a/apps/studio/hooks/misc/useCheckPermissions.ts
+++ b/apps/studio/hooks/misc/useCheckPermissions.ts
@@ -1,12 +1,12 @@
-import { useIsLoggedIn, useParams } from 'common'
import jsonLogic from 'json-logic-js'
+import { useMemo } from 'react'
+import { useIsLoggedIn, useParams } from 'common'
import { usePermissionsQuery } from 'data/permissions/permissions-query'
import { IS_PLATFORM } from 'lib/constants'
import type { Permission } from 'types'
import { useSelectedOrganizationQuery } from './useSelectedOrganization'
import { useSelectedProjectQuery } from './useSelectedProject'
-import { useMemo } from 'react'
const toRegexpString = (actionOrResource: string) =>
`^${actionOrResource.replace('.', '\\.').replace('%', '.*')}$`
diff --git a/apps/studio/hooks/misc/withAuth.tsx b/apps/studio/hooks/misc/withAuth.tsx
index a7795ed2a8d..64a6efc0326 100644
--- a/apps/studio/hooks/misc/withAuth.tsx
+++ b/apps/studio/hooks/misc/withAuth.tsx
@@ -2,12 +2,13 @@ import { useRouter } from 'next/router'
import { ComponentType, useCallback, useEffect, useRef, useState } from 'react'
import { toast } from 'sonner'
+import { useAuth } from 'common'
import { SessionTimeoutModal } from 'components/interfaces/SignIn/SessionTimeoutModal'
import { usePermissionsQuery } from 'data/permissions/permissions-query'
import { useAuthenticatorAssuranceLevelQuery } from 'data/profile/mfa-authenticator-assurance-level-query'
-import { useAuth, useSignOut } from 'lib/auth'
+import { useSignOut } from 'lib/auth'
import { BASE_PATH, IS_PLATFORM } from 'lib/constants'
-import { NextPageWithLayout, isNextPageWithLayout } from 'types'
+import { type NextPageWithLayout, isNextPageWithLayout } from 'types'
const MAX_TIMEOUT = 10000 // 10 seconds
diff --git a/apps/studio/lib/auth.tsx b/apps/studio/lib/auth.tsx
index 92663680c91..b405d8dd0e5 100644
--- a/apps/studio/lib/auth.tsx
+++ b/apps/studio/lib/auth.tsx
@@ -1,13 +1,13 @@
import { useQueryClient } from '@tanstack/react-query'
+import { PropsWithChildren, useCallback, useEffect } from 'react'
+import { toast } from 'sonner'
+
import {
AuthProvider as AuthProviderInternal,
clearLocalStorage,
gotrueClient,
useAuthError,
} from 'common'
-import { PropsWithChildren, useCallback, useEffect } from 'react'
-import { toast } from 'sonner'
-
import { useAiAssistantStateSnapshot } from 'state/ai-assistant-state'
import { GOTRUE_ERRORS, IS_PLATFORM } from './constants'
@@ -39,8 +39,6 @@ export const AuthProvider = ({ children }: PropsWithChildren) => {
)
}
-export { useAuth, useIsLoggedIn, useSession, useUser } from 'common'
-
export function useSignOut() {
const queryClient = useQueryClient()
const { clearStorage: clearAssistantStorage } = useAiAssistantStateSnapshot()
diff --git a/apps/studio/pages/_app.tsx b/apps/studio/pages/_app.tsx
index 66ed565b58e..5b96b0af328 100644
--- a/apps/studio/pages/_app.tsx
+++ b/apps/studio/pages/_app.tsx
@@ -57,7 +57,7 @@ import { AuthProvider } from 'lib/auth'
import { API_URL, BASE_PATH, IS_PLATFORM, useDefaultProvider } from 'lib/constants'
import { ProfileProvider } from 'lib/profile'
import { Telemetry } from 'lib/telemetry'
-import { AppPropsWithLayout } from 'types'
+import type { AppPropsWithLayout } from 'types'
import { SonnerToaster, TooltipProvider } from 'ui'
dayjs.extend(customParseFormat)
diff --git a/apps/studio/pages/aws-marketplace-onboarding.tsx b/apps/studio/pages/aws-marketplace-onboarding.tsx
index ee06af6d5a9..573e9e32a69 100644
--- a/apps/studio/pages/aws-marketplace-onboarding.tsx
+++ b/apps/studio/pages/aws-marketplace-onboarding.tsx
@@ -1,4 +1,6 @@
import { useRouter } from 'next/router'
+
+import type { NextPageWithLayout } from 'types'
import AwsMarketplaceCreateNewOrg from '../components/interfaces/Organization/CloudMarketplace/AwsMarketplaceCreateNewOrg'
import { AwsMarketplaceLinkExistingOrg } from '../components/interfaces/Organization/CloudMarketplace/AwsMarketplaceLinkExistingOrg'
import AwsMarketplaceOnboardingPlaceholder from '../components/interfaces/Organization/CloudMarketplace/AwsMarketplaceOnboardingPlaceholder'
@@ -11,7 +13,6 @@ import {
ScaffoldTitle,
} from '../components/layouts/Scaffold'
import { useOrganizationsQuery } from '../data/organizations/organizations-query'
-import { NextPageWithLayout } from '../types'
const AwsMarketplaceOnboarding: NextPageWithLayout = () => {
const {
diff --git a/apps/studio/pages/cli/login.tsx b/apps/studio/pages/cli/login.tsx
index b31eb20c54f..fa11a76594e 100644
--- a/apps/studio/pages/cli/login.tsx
+++ b/apps/studio/pages/cli/login.tsx
@@ -1,15 +1,15 @@
-import { useIsLoggedIn, useParams } from 'common'
-import APIAuthorizationLayout from 'components/layouts/APIAuthorizationLayout'
-import CopyButton from 'components/ui/CopyButton'
-import { Loading } from 'components/ui/Loading'
-import { createCliLoginSession } from 'data/cli/login'
-import { withAuth } from 'hooks/misc/withAuth'
import Link from 'next/link'
import { useRouter } from 'next/router'
import { useEffect } from 'react'
import { toast } from 'sonner'
-import { NextPageWithLayout } from 'types'
-import { InputOTP, InputOTPGroup, InputOTPSlot } from 'ui'
+
+import { useIsLoggedIn, useParams } from 'common'
+import APIAuthorizationLayout from 'components/layouts/APIAuthorizationLayout'
+import CopyButton from 'components/ui/CopyButton'
+import { createCliLoginSession } from 'data/cli/login'
+import { withAuth } from 'hooks/misc/withAuth'
+import type { NextPageWithLayout } from 'types'
+import { InputOTP, InputOTPGroup, InputOTPSlot, LogoLoader } from 'ui'
import { Admonition } from 'ui-patterns'
const CliLoginPage: NextPageWithLayout = () => {
@@ -77,7 +77,7 @@ const CliLoginPage: NextPageWithLayout = () => {
/>
>
) : (
-
+
)}
diff --git a/apps/studio/pages/forgot-password-mfa.tsx b/apps/studio/pages/forgot-password-mfa.tsx
index 341485c511c..801d9507323 100644
--- a/apps/studio/pages/forgot-password-mfa.tsx
+++ b/apps/studio/pages/forgot-password-mfa.tsx
@@ -7,9 +7,9 @@ import { toast } from 'sonner'
import { getAccessToken } from 'common'
import { SignInMfaForm } from 'components/interfaces/SignIn/SignInMfaForm'
import ForgotPasswordLayout from 'components/layouts/SignInLayout/ForgotPasswordLayout'
-import { Loading } from 'components/ui/Loading'
import { auth, buildPathWithParams, getReturnToPath } from 'lib/gotrue'
import type { NextPageWithLayout } from 'types'
+import { LogoLoader } from 'ui'
const ForgotPasswordMfa: NextPageWithLayout = () => {
const router = useRouter()
@@ -69,7 +69,7 @@ const ForgotPasswordMfa: NextPageWithLayout = () => {
if (loading) {
return (
-
+
)
}
diff --git a/apps/studio/pages/integrations/vercel/install.tsx b/apps/studio/pages/integrations/vercel/install.tsx
index bf9a99e011d..8494b474892 100644
--- a/apps/studio/pages/integrations/vercel/install.tsx
+++ b/apps/studio/pages/integrations/vercel/install.tsx
@@ -1,4 +1,5 @@
import { useParams } from 'common'
+import { AlertTriangle, Info } from 'lucide-react'
import Link from 'next/link'
import { useRouter } from 'next/router'
import { useEffect, useMemo, useState } from 'react'
@@ -13,7 +14,6 @@ import { ScaffoldColumn, ScaffoldContainer } from 'components/layouts/Scaffold'
import { useIntegrationsQuery } from 'data/integrations/integrations-query'
import { useVercelIntegrationCreateMutation } from 'data/integrations/vercel-integration-create-mutation'
import { useOrganizationsQuery } from 'data/organizations/organizations-query'
-import { AlertTriangle, Info } from 'lucide-react'
import { useIntegrationInstallationSnapshot } from 'state/integration-installation'
import type { NextPageWithLayout, Organization } from 'types'
diff --git a/apps/studio/pages/join.tsx b/apps/studio/pages/join.tsx
index 75823e77d9d..b7ea40b6ca6 100644
--- a/apps/studio/pages/join.tsx
+++ b/apps/studio/pages/join.tsx
@@ -4,7 +4,7 @@ import { OrganizationInvite } from 'components/interfaces/OrganizationInvite/Org
import { BASE_PATH } from 'lib/constants'
import { useTheme } from 'next-themes'
import { useEffect, useMemo, useState } from 'react'
-import { NextPageWithLayout } from 'types'
+import type { NextPageWithLayout } from 'types'
import { cn } from 'ui'
const JoinOrganizationPage: NextPageWithLayout = () => {
diff --git a/apps/studio/pages/logout.tsx b/apps/studio/pages/logout.tsx
index 40307dd9275..8be367a62dd 100644
--- a/apps/studio/pages/logout.tsx
+++ b/apps/studio/pages/logout.tsx
@@ -2,9 +2,9 @@ import { useRouter } from 'next/router'
import { useEffect } from 'react'
import { toast } from 'sonner'
-import { Loading } from 'components/ui/Loading'
import { useSignOut } from 'lib/auth'
-import { NextPageWithLayout } from 'types'
+import type { NextPageWithLayout } from 'types'
+import { LogoLoader } from 'ui'
const LogoutPage: NextPageWithLayout = () => {
const router = useRouter()
@@ -21,7 +21,7 @@ const LogoutPage: NextPageWithLayout = () => {
return (
-
+
)
}
diff --git a/apps/studio/pages/org/[slug]/audit.tsx b/apps/studio/pages/org/[slug]/audit.tsx
index 42a813754af..5b806f0cc3e 100644
--- a/apps/studio/pages/org/[slug]/audit.tsx
+++ b/apps/studio/pages/org/[slug]/audit.tsx
@@ -2,17 +2,19 @@ import { AuditLogs } from 'components/interfaces/Organization/AuditLogs/AuditLog
import DefaultLayout from 'components/layouts/DefaultLayout'
import OrganizationLayout from 'components/layouts/OrganizationLayout'
import OrganizationSettingsLayout from 'components/layouts/ProjectLayout/OrganizationSettingsLayout'
-import { Loading } from 'components/ui/Loading'
import { usePermissionsQuery } from 'data/permissions/permissions-query'
import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization'
import type { NextPageWithLayout } from 'types'
+import { LogoLoader } from 'ui'
const OrgAuditLogs: NextPageWithLayout = () => {
const { isLoading: isLoadingPermissions } = usePermissionsQuery()
const { data: selectedOrganization } = useSelectedOrganizationQuery()
return (
- <>{selectedOrganization === undefined && isLoadingPermissions ? : }>
+ <>
+ {selectedOrganization === undefined && isLoadingPermissions ? : }
+ >
)
}
diff --git a/apps/studio/pages/org/[slug]/general.tsx b/apps/studio/pages/org/[slug]/general.tsx
index 1bdcce2af5b..487a1cd9b1f 100644
--- a/apps/studio/pages/org/[slug]/general.tsx
+++ b/apps/studio/pages/org/[slug]/general.tsx
@@ -2,10 +2,10 @@ import { GeneralSettings } from 'components/interfaces/Organization/GeneralSetti
import DefaultLayout from 'components/layouts/DefaultLayout'
import OrganizationLayout from 'components/layouts/OrganizationLayout'
import OrganizationSettingsLayout from 'components/layouts/ProjectLayout/OrganizationSettingsLayout'
-import { Loading } from 'components/ui/Loading'
import { usePermissionsQuery } from 'data/permissions/permissions-query'
import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization'
import type { NextPageWithLayout } from 'types'
+import { LogoLoader } from 'ui'
const OrgGeneralSettings: NextPageWithLayout = () => {
const { isLoading: isLoadingPermissions } = usePermissionsQuery()
@@ -14,7 +14,7 @@ const OrgGeneralSettings: NextPageWithLayout = () => {
return (
<>
{selectedOrganization === undefined && isLoadingPermissions ? (
-
+
) : (
)}
diff --git a/apps/studio/pages/org/[slug]/team.tsx b/apps/studio/pages/org/[slug]/team.tsx
index 36039aebd48..b2ac479ddfa 100644
--- a/apps/studio/pages/org/[slug]/team.tsx
+++ b/apps/studio/pages/org/[slug]/team.tsx
@@ -1,16 +1,20 @@
import { TeamSettings } from 'components/interfaces/Organization/TeamSettings/TeamSettings'
import DefaultLayout from 'components/layouts/DefaultLayout'
import OrganizationLayout from 'components/layouts/OrganizationLayout'
-import { Loading } from 'components/ui/Loading'
import { usePermissionsQuery } from 'data/permissions/permissions-query'
import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization'
import type { NextPageWithLayout } from 'types'
+import { LogoLoader } from 'ui'
const OrgTeamSettings: NextPageWithLayout = () => {
const { isLoading: isLoadingPermissions } = usePermissionsQuery()
const { data: selectedOrganization } = useSelectedOrganizationQuery()
- return selectedOrganization === undefined && isLoadingPermissions ? :
+ return selectedOrganization === undefined && isLoadingPermissions ? (
+
+ ) : (
+
+ )
}
OrgTeamSettings.getLayout = (page) => (
diff --git a/apps/studio/pages/organizations.tsx b/apps/studio/pages/organizations.tsx
index b09de93df16..2cd7e942699 100644
--- a/apps/studio/pages/organizations.tsx
+++ b/apps/studio/pages/organizations.tsx
@@ -14,7 +14,7 @@ import NoSearchResults from 'components/ui/NoSearchResults'
import { useOrganizationsQuery } from 'data/organizations/organizations-query'
import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
import { withAuth } from 'hooks/misc/withAuth'
-import { NextPageWithLayout } from 'types'
+import type { NextPageWithLayout } from 'types'
import {
AlertDescription_Shadcn_,
AlertTitle_Shadcn_,
diff --git a/apps/studio/pages/project/[ref]/advisors/rules/performance.tsx b/apps/studio/pages/project/[ref]/advisors/rules/performance.tsx
index 9fe5d07746b..9cf9a0fc031 100644
--- a/apps/studio/pages/project/[ref]/advisors/rules/performance.tsx
+++ b/apps/studio/pages/project/[ref]/advisors/rules/performance.tsx
@@ -1,6 +1,6 @@
import { AdvisorRules } from 'components/interfaces/Advisors/AdvisorRules'
import { AdvisorRulesLayout } from 'components/layouts/AdvisorsLayout/AdvisorRulesLayout'
-import { NextPageWithLayout } from 'types'
+import type { NextPageWithLayout } from 'types'
const AdvisorPerformanceRulesPage: NextPageWithLayout = () => {
return
diff --git a/apps/studio/pages/project/[ref]/advisors/rules/security.tsx b/apps/studio/pages/project/[ref]/advisors/rules/security.tsx
index c28b4ff186e..80778f9dc22 100644
--- a/apps/studio/pages/project/[ref]/advisors/rules/security.tsx
+++ b/apps/studio/pages/project/[ref]/advisors/rules/security.tsx
@@ -1,6 +1,6 @@
import { AdvisorRules } from 'components/interfaces/Advisors/AdvisorRules'
import { AdvisorRulesLayout } from 'components/layouts/AdvisorsLayout/AdvisorRulesLayout'
-import { NextPageWithLayout } from 'types'
+import type { NextPageWithLayout } from 'types'
const AdvisorSecurityRulesPage: NextPageWithLayout = () => {
return
diff --git a/apps/studio/pages/project/[ref]/auth/overview.tsx b/apps/studio/pages/project/[ref]/auth/overview.tsx
index a0c89ea5d13..f16920f031f 100644
--- a/apps/studio/pages/project/[ref]/auth/overview.tsx
+++ b/apps/studio/pages/project/[ref]/auth/overview.tsx
@@ -1,16 +1,16 @@
-import { NextPageWithLayout } from 'types'
-import DefaultLayout from 'components/layouts/DefaultLayout'
-import AuthLayout from 'components/layouts/AuthLayout/AuthLayout'
-import { ScaffoldContainer } from 'components/layouts/Scaffold'
-import { PageLayout } from 'components/layouts/PageLayout/PageLayout'
-import { DocsButton } from 'components/ui/DocsButton'
-import { DOCS_URL } from 'lib/constants'
-import { OverviewUsage } from 'components/interfaces/Auth/Overview/OverviewUsage'
+import { FeatureFlagContext, useFlag, useParams } from 'common'
import { OverviewLearnMore } from 'components/interfaces/Auth/Overview/OverviewLearnMore'
import { OverviewMonitoring } from 'components/interfaces/Auth/Overview/OverviewMonitoring'
+import { OverviewUsage } from 'components/interfaces/Auth/Overview/OverviewUsage'
+import AuthLayout from 'components/layouts/AuthLayout/AuthLayout'
+import DefaultLayout from 'components/layouts/DefaultLayout'
+import { PageLayout } from 'components/layouts/PageLayout/PageLayout'
+import { ScaffoldContainer } from 'components/layouts/Scaffold'
+import { DocsButton } from 'components/ui/DocsButton'
+import { DOCS_URL } from 'lib/constants'
import { useRouter } from 'next/router'
-import { FeatureFlagContext, useFlag, useParams } from 'common'
import { useContext, useEffect } from 'react'
+import type { NextPageWithLayout } from 'types'
const AuthOverview: NextPageWithLayout = () => {
const router = useRouter()
diff --git a/apps/studio/pages/project/[ref]/auth/policies.tsx b/apps/studio/pages/project/[ref]/auth/policies.tsx
index 64f9aa45999..e5c05ebbb44 100644
--- a/apps/studio/pages/project/[ref]/auth/policies.tsx
+++ b/apps/studio/pages/project/[ref]/auth/policies.tsx
@@ -12,23 +12,23 @@ import { generatePolicyUpdateSQL } from 'components/interfaces/Auth/Policies/Pol
import AuthLayout from 'components/layouts/AuthLayout/AuthLayout'
import DefaultLayout from 'components/layouts/DefaultLayout'
import { PageLayout } from 'components/layouts/PageLayout/PageLayout'
+import { SIDEBAR_KEYS } from 'components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider'
import { ScaffoldContainer, ScaffoldSection } from 'components/layouts/Scaffold'
import AlertError from 'components/ui/AlertError'
import { DocsButton } from 'components/ui/DocsButton'
import NoPermission from 'components/ui/NoPermission'
import SchemaSelector from 'components/ui/SchemaSelector'
import { GenericSkeletonLoader } from 'components/ui/ShimmeringLoader'
-import { useDatabasePoliciesQuery } from 'data/database-policies/database-policies-query'
import { useProjectPostgrestConfigQuery } from 'data/config/project-postgrest-config-query'
+import { useDatabasePoliciesQuery } from 'data/database-policies/database-policies-query'
import { useTablesQuery } from 'data/tables/tables-query'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
import { useIsProtectedSchema } from 'hooks/useProtectedSchemas'
import { DOCS_URL } from 'lib/constants'
-import { SIDEBAR_KEYS } from 'components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider'
+import { parseAsString, useQueryState } from 'nuqs'
import { useEditorPanelStateSnapshot } from 'state/editor-panel-state'
import { useSidebarManagerSnapshot } from 'state/sidebar-manager-state'
-import { parseAsString, useQueryState } from 'nuqs'
import type { NextPageWithLayout } from 'types'
import { Input } from 'ui-patterns/DataInputs/Input'
diff --git a/apps/studio/pages/project/[ref]/database/functions.tsx b/apps/studio/pages/project/[ref]/database/functions.tsx
index eb33fa1d6fc..02e68b6ee14 100644
--- a/apps/studio/pages/project/[ref]/database/functions.tsx
+++ b/apps/studio/pages/project/[ref]/database/functions.tsx
@@ -7,16 +7,16 @@ import { DeleteFunction } from 'components/interfaces/Database/Functions/DeleteF
import FunctionsList from 'components/interfaces/Database/Functions/FunctionsList/FunctionsList'
import DatabaseLayout from 'components/layouts/DatabaseLayout/DatabaseLayout'
import DefaultLayout from 'components/layouts/DefaultLayout'
+import { SIDEBAR_KEYS } from 'components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider'
import { ScaffoldContainer, ScaffoldSection } from 'components/layouts/Scaffold'
import { FormHeader } from 'components/ui/Forms/FormHeader'
import NoPermission from 'components/ui/NoPermission'
import { DatabaseFunction } from 'data/database-functions/database-functions-query'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { DOCS_URL } from 'lib/constants'
-import type { NextPageWithLayout } from 'types'
-import { SIDEBAR_KEYS } from 'components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider'
import { useEditorPanelStateSnapshot } from 'state/editor-panel-state'
import { useSidebarManagerSnapshot } from 'state/sidebar-manager-state'
+import type { NextPageWithLayout } from 'types'
const DatabaseFunctionsPage: NextPageWithLayout = () => {
const [selectedFunction, setSelectedFunction] = useState()
diff --git a/apps/studio/pages/project/[ref]/database/schemas.tsx b/apps/studio/pages/project/[ref]/database/schemas.tsx
index d653dd912e8..3b65542418b 100644
--- a/apps/studio/pages/project/[ref]/database/schemas.tsx
+++ b/apps/studio/pages/project/[ref]/database/schemas.tsx
@@ -2,8 +2,8 @@ import { ReactFlowProvider } from 'reactflow'
import { SchemaGraph } from 'components/interfaces/Database/Schemas/SchemaGraph'
import DatabaseLayout from 'components/layouts/DatabaseLayout/DatabaseLayout'
-import type { NextPageWithLayout } from 'types'
import DefaultLayout from 'components/layouts/DefaultLayout'
+import type { NextPageWithLayout } from 'types'
const SchemasPage: NextPageWithLayout = () => {
return (
diff --git a/apps/studio/pages/project/[ref]/database/triggers.tsx b/apps/studio/pages/project/[ref]/database/triggers.tsx
index 50edcb6b844..fd9cc1df6ce 100644
--- a/apps/studio/pages/project/[ref]/database/triggers.tsx
+++ b/apps/studio/pages/project/[ref]/database/triggers.tsx
@@ -9,15 +9,15 @@ import { generateTriggerCreateSQL } from 'components/interfaces/Database/Trigger
import TriggersList from 'components/interfaces/Database/Triggers/TriggersList/TriggersList'
import DatabaseLayout from 'components/layouts/DatabaseLayout/DatabaseLayout'
import DefaultLayout from 'components/layouts/DefaultLayout'
+import { SIDEBAR_KEYS } from 'components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider'
import { ScaffoldContainer, ScaffoldSection } from 'components/layouts/Scaffold'
import { FormHeader } from 'components/ui/Forms/FormHeader'
import NoPermission from 'components/ui/NoPermission'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { DOCS_URL } from 'lib/constants'
-import type { NextPageWithLayout } from 'types'
-import { SIDEBAR_KEYS } from 'components/layouts/ProjectLayout/LayoutSidebar/LayoutSidebarProvider'
import { useEditorPanelStateSnapshot } from 'state/editor-panel-state'
import { useSidebarManagerSnapshot } from 'state/sidebar-manager-state'
+import type { NextPageWithLayout } from 'types'
const TriggersPage: NextPageWithLayout = () => {
const isInlineEditorEnabled = useIsInlineEditorEnabled()
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 e2527a9219d..87704cf4e12 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
@@ -8,7 +8,7 @@ import { ScaffoldContainer, ScaffoldSection } from 'components/layouts/Scaffold'
import { GenericSkeletonLoader } from 'components/ui/ShimmeringLoader'
import { useRouter } from 'next/compat/router'
import { useEffect, useMemo } from 'react'
-import { NextPageWithLayout } from 'types'
+import type { NextPageWithLayout } from 'types'
import { Admonition } from 'ui-patterns'
const IntegrationPage: NextPageWithLayout = () => {
diff --git a/apps/studio/pages/project/[ref]/integrations/[id]/[pageId]/index.tsx b/apps/studio/pages/project/[ref]/integrations/[id]/[pageId]/index.tsx
index 1b7ced2f8ee..19c85fbd74c 100644
--- a/apps/studio/pages/project/[ref]/integrations/[id]/[pageId]/index.tsx
+++ b/apps/studio/pages/project/[ref]/integrations/[id]/[pageId]/index.tsx
@@ -10,7 +10,7 @@ import { UnknownInterface } from 'components/ui/UnknownInterface'
import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
import { useRouter } from 'next/compat/router'
import { useEffect, useMemo } from 'react'
-import { NextPageWithLayout } from 'types'
+import type { NextPageWithLayout } from 'types'
import { Admonition } from 'ui-patterns'
const IntegrationPage: NextPageWithLayout = () => {
diff --git a/apps/studio/pages/project/[ref]/integrations/[id]/index.tsx b/apps/studio/pages/project/[ref]/integrations/[id]/index.tsx
index 37e5f844e0d..8ffe7a7c109 100644
--- a/apps/studio/pages/project/[ref]/integrations/[id]/index.tsx
+++ b/apps/studio/pages/project/[ref]/integrations/[id]/index.tsx
@@ -1,12 +1,11 @@
import { useParams } from 'common'
import DefaultLayout from 'components/layouts/DefaultLayout'
import IntegrationsLayout from 'components/layouts/Integrations/layout'
-import { PageLayout } from 'components/layouts/PageLayout/PageLayout'
import { ScaffoldContainer, ScaffoldSection } from 'components/layouts/Scaffold'
import { GenericSkeletonLoader } from 'components/ui/ShimmeringLoader'
import { useRouter } from 'next/compat/router'
import { useEffect } from 'react'
-import { NextPageWithLayout } from 'types'
+import type { NextPageWithLayout } from 'types'
const IntegrationPage: NextPageWithLayout = () => {
const router = useRouter()
diff --git a/apps/studio/pages/project/[ref]/logs/cron-logs.tsx b/apps/studio/pages/project/[ref]/logs/cron-logs.tsx
index 58bccd410de..fe9f47e39f1 100644
--- a/apps/studio/pages/project/[ref]/logs/cron-logs.tsx
+++ b/apps/studio/pages/project/[ref]/logs/cron-logs.tsx
@@ -2,11 +2,11 @@
import { useRouter } from 'next/router'
+import { LogsTableName } from 'components/interfaces/Settings/Logs/Logs.constants'
import { LogsPreviewer } from 'components/interfaces/Settings/Logs/LogsPreviewer'
+import DefaultLayout from 'components/layouts/DefaultLayout'
import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
import type { NextPageWithLayout } from 'types'
-import { LogsTableName } from 'components/interfaces/Settings/Logs/Logs.constants'
-import DefaultLayout from 'components/layouts/DefaultLayout'
export const LogPage: NextPageWithLayout = () => {
const router = useRouter()
diff --git a/apps/studio/pages/project/[ref]/logs/dedicated-pooler-logs.tsx b/apps/studio/pages/project/[ref]/logs/dedicated-pooler-logs.tsx
index 62f26ace503..8ee5a0969e4 100644
--- a/apps/studio/pages/project/[ref]/logs/dedicated-pooler-logs.tsx
+++ b/apps/studio/pages/project/[ref]/logs/dedicated-pooler-logs.tsx
@@ -3,11 +3,11 @@ import { LogsTableName } from 'components/interfaces/Settings/Logs/Logs.constant
import { LogsPreviewer } from 'components/interfaces/Settings/Logs/LogsPreviewer'
import DefaultLayout from 'components/layouts/DefaultLayout'
import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
-import { Loading } from 'components/ui/Loading'
import { useCurrentOrgPlan } from 'hooks/misc/useCurrentOrgPlan'
import { useRouter } from 'next/router'
import { useEffect } from 'react'
import type { NextPageWithLayout } from 'types'
+import { LogoLoader } from 'ui'
export const LogPage: NextPageWithLayout = () => {
const router = useRouter()
@@ -24,7 +24,7 @@ export const LogPage: NextPageWithLayout = () => {
// Prevent showing logs while checking plan or loading config
if (isOrgPlanLoading || isFreePlan) {
- return
+ return
}
return (
diff --git a/apps/studio/pages/project/[ref]/logs/edge-functions-logs.tsx b/apps/studio/pages/project/[ref]/logs/edge-functions-logs.tsx
index 34ca6a8bf90..fc9d0249c98 100644
--- a/apps/studio/pages/project/[ref]/logs/edge-functions-logs.tsx
+++ b/apps/studio/pages/project/[ref]/logs/edge-functions-logs.tsx
@@ -2,9 +2,9 @@ import { useRouter } from 'next/router'
import { LogsTableName } from 'components/interfaces/Settings/Logs/Logs.constants'
import { LogsPreviewer } from 'components/interfaces/Settings/Logs/LogsPreviewer'
+import DefaultLayout from 'components/layouts/DefaultLayout'
import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
import type { NextPageWithLayout } from 'types'
-import DefaultLayout from 'components/layouts/DefaultLayout'
export const LogPage: NextPageWithLayout = () => {
const router = useRouter()
const { ref } = router.query
diff --git a/apps/studio/pages/project/[ref]/logs/edge-logs.tsx b/apps/studio/pages/project/[ref]/logs/edge-logs.tsx
index b97ef42a875..89e7d1fa99c 100644
--- a/apps/studio/pages/project/[ref]/logs/edge-logs.tsx
+++ b/apps/studio/pages/project/[ref]/logs/edge-logs.tsx
@@ -2,9 +2,9 @@ import { useRouter } from 'next/router'
import { LogsTableName } from 'components/interfaces/Settings/Logs/Logs.constants'
import { LogsPreviewer } from 'components/interfaces/Settings/Logs/LogsPreviewer'
+import DefaultLayout from 'components/layouts/DefaultLayout'
import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
import type { NextPageWithLayout } from 'types'
-import DefaultLayout from 'components/layouts/DefaultLayout'
export const LogPage: NextPageWithLayout = () => {
const router = useRouter()
diff --git a/apps/studio/pages/project/[ref]/logs/etl-replication-logs.tsx b/apps/studio/pages/project/[ref]/logs/etl-replication-logs.tsx
index 25171a4d1e2..b456cc436fa 100644
--- a/apps/studio/pages/project/[ref]/logs/etl-replication-logs.tsx
+++ b/apps/studio/pages/project/[ref]/logs/etl-replication-logs.tsx
@@ -1,9 +1,9 @@
+import { useParams } from 'common'
import { LogsTableName } from 'components/interfaces/Settings/Logs/Logs.constants'
import { LogsPreviewer } from 'components/interfaces/Settings/Logs/LogsPreviewer'
-import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
import DefaultLayout from 'components/layouts/DefaultLayout'
+import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
import type { NextPageWithLayout } from 'types'
-import { useParams } from 'common'
export const LogPage: NextPageWithLayout = () => {
const { ref } = useParams()
diff --git a/apps/studio/pages/project/[ref]/logs/explorer/recent.tsx b/apps/studio/pages/project/[ref]/logs/explorer/recent.tsx
index ec9ff6a5e50..4fdfda5bdda 100644
--- a/apps/studio/pages/project/[ref]/logs/explorer/recent.tsx
+++ b/apps/studio/pages/project/[ref]/logs/explorer/recent.tsx
@@ -1,15 +1,15 @@
+import { Clock } from 'lucide-react'
import Link from 'next/link'
import { useParams } from 'common'
import RecentQueriesItem from 'components/interfaces/Settings/Logs/RecentQueriesItem'
+import DefaultLayout from 'components/layouts/DefaultLayout'
import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
import Table from 'components/to-be-cleaned/Table'
import LogsExplorerHeader from 'components/ui/Logs/LogsExplorerHeader'
import { useLocalStorage } from 'hooks/misc/useLocalStorage'
import type { LogSqlSnippets, NextPageWithLayout } from 'types'
import { Button } from 'ui'
-import { Clock } from 'lucide-react'
-import DefaultLayout from 'components/layouts/DefaultLayout'
export const LogsSavedPage: NextPageWithLayout = () => {
const { ref } = useParams()
diff --git a/apps/studio/pages/project/[ref]/logs/explorer/saved.tsx b/apps/studio/pages/project/[ref]/logs/explorer/saved.tsx
index 19024f03005..aeda5008739 100644
--- a/apps/studio/pages/project/[ref]/logs/explorer/saved.tsx
+++ b/apps/studio/pages/project/[ref]/logs/explorer/saved.tsx
@@ -3,13 +3,13 @@ import { Save } from 'lucide-react'
import Link from 'next/link'
import LogsSavedQueriesItem from 'components/interfaces/Settings/Logs/Logs.SavedQueriesItem'
+import DefaultLayout from 'components/layouts/DefaultLayout'
import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
import Table from 'components/to-be-cleaned/Table'
import LogsExplorerHeader from 'components/ui/Logs/LogsExplorerHeader'
import { useContentQuery } from 'data/content/content-query'
import type { NextPageWithLayout } from 'types'
import { Loading } from 'ui'
-import DefaultLayout from 'components/layouts/DefaultLayout'
// [Joshen] This page looks like its not longer in use from a UI POV - double checking and deprecate + add redirects
export const LogsSavedPage: NextPageWithLayout = () => {
diff --git a/apps/studio/pages/project/[ref]/logs/index.tsx b/apps/studio/pages/project/[ref]/logs/index.tsx
index 3f8c7b68541..ca61c7cf858 100644
--- a/apps/studio/pages/project/[ref]/logs/index.tsx
+++ b/apps/studio/pages/project/[ref]/logs/index.tsx
@@ -6,7 +6,7 @@ import { useUnifiedLogsPreview } from 'components/interfaces/App/FeaturePreview/
import { UnifiedLogs } from 'components/interfaces/UnifiedLogs/UnifiedLogs'
import DefaultLayout from 'components/layouts/DefaultLayout'
import { ProjectLayout } from 'components/layouts/ProjectLayout'
-import { NextPageWithLayout } from 'types'
+import type { NextPageWithLayout } from 'types'
export const LogPage: NextPageWithLayout = () => {
const router = useRouter()
diff --git a/apps/studio/pages/project/[ref]/logs/pgcron-logs.tsx b/apps/studio/pages/project/[ref]/logs/pgcron-logs.tsx
index e3a32652066..22bb9d979cf 100644
--- a/apps/studio/pages/project/[ref]/logs/pgcron-logs.tsx
+++ b/apps/studio/pages/project/[ref]/logs/pgcron-logs.tsx
@@ -2,8 +2,8 @@ import { useRouter } from 'next/router'
import { LogsTableName } from 'components/interfaces/Settings/Logs/Logs.constants'
import { LogsPreviewer } from 'components/interfaces/Settings/Logs/LogsPreviewer'
-import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
import DefaultLayout from 'components/layouts/DefaultLayout'
+import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
import type { NextPageWithLayout } from 'types'
export const LogPage: NextPageWithLayout = () => {
diff --git a/apps/studio/pages/project/[ref]/logs/pooler-logs.tsx b/apps/studio/pages/project/[ref]/logs/pooler-logs.tsx
index bee89264a26..08f18ff8c56 100644
--- a/apps/studio/pages/project/[ref]/logs/pooler-logs.tsx
+++ b/apps/studio/pages/project/[ref]/logs/pooler-logs.tsx
@@ -3,16 +3,16 @@ import { LogsTableName } from 'components/interfaces/Settings/Logs/Logs.constant
import { LogsPreviewer } from 'components/interfaces/Settings/Logs/LogsPreviewer'
import DefaultLayout from 'components/layouts/DefaultLayout'
import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
-import { Loading } from 'components/ui/Loading'
import { useSupavisorConfigurationQuery } from 'data/database/supavisor-configuration-query'
import type { NextPageWithLayout } from 'types'
+import { LogoLoader } from 'ui'
export const LogPage: NextPageWithLayout = () => {
const { ref } = useParams()
const { isLoading } = useSupavisorConfigurationQuery({ projectRef: ref ?? 'default' })
// this prevents initial load of pooler logs before config has been retrieved
- if (isLoading) return
+ if (isLoading) return
return (
{
const router = useRouter()
diff --git a/apps/studio/pages/project/[ref]/logs/postgrest-logs.tsx b/apps/studio/pages/project/[ref]/logs/postgrest-logs.tsx
index 66a5622f6e6..af38c4c6785 100644
--- a/apps/studio/pages/project/[ref]/logs/postgrest-logs.tsx
+++ b/apps/studio/pages/project/[ref]/logs/postgrest-logs.tsx
@@ -2,10 +2,10 @@ import { useRouter } from 'next/router'
import { LogsTableName } from 'components/interfaces/Settings/Logs/Logs.constants'
import { LogsPreviewer } from 'components/interfaces/Settings/Logs/LogsPreviewer'
-import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
-import type { NextPageWithLayout } from 'types'
import { LogsTableEmptyState } from 'components/interfaces/Settings/Logs/LogsTableEmptyState'
import DefaultLayout from 'components/layouts/DefaultLayout'
+import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
+import type { NextPageWithLayout } from 'types'
export const LogPage: NextPageWithLayout = () => {
const router = useRouter()
diff --git a/apps/studio/pages/project/[ref]/logs/realtime-logs.tsx b/apps/studio/pages/project/[ref]/logs/realtime-logs.tsx
index f3233584c16..ccd69081bd1 100644
--- a/apps/studio/pages/project/[ref]/logs/realtime-logs.tsx
+++ b/apps/studio/pages/project/[ref]/logs/realtime-logs.tsx
@@ -1,9 +1,9 @@
import { useRouter } from 'next/router'
import { LogsPreviewer } from 'components/interfaces/Settings/Logs/LogsPreviewer'
+import DefaultLayout from 'components/layouts/DefaultLayout'
import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
import type { NextPageWithLayout } from 'types'
-import DefaultLayout from 'components/layouts/DefaultLayout'
export const LogPage: NextPageWithLayout = () => {
const router = useRouter()
diff --git a/apps/studio/pages/project/[ref]/logs/storage-logs.tsx b/apps/studio/pages/project/[ref]/logs/storage-logs.tsx
index 1461ad5917c..3131dac9ad5 100644
--- a/apps/studio/pages/project/[ref]/logs/storage-logs.tsx
+++ b/apps/studio/pages/project/[ref]/logs/storage-logs.tsx
@@ -1,8 +1,8 @@
import { useRouter } from 'next/router'
import { LogsPreviewer } from 'components/interfaces/Settings/Logs/LogsPreviewer'
-import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
import DefaultLayout from 'components/layouts/DefaultLayout'
+import LogsLayout from 'components/layouts/LogsLayout/LogsLayout'
import type { NextPageWithLayout } from 'types'
export const LogPage: NextPageWithLayout = () => {
diff --git a/apps/studio/pages/project/[ref]/reports/api-overview.tsx b/apps/studio/pages/project/[ref]/reports/api-overview.tsx
index db5c13970d7..368378ce753 100644
--- a/apps/studio/pages/project/[ref]/reports/api-overview.tsx
+++ b/apps/studio/pages/project/[ref]/reports/api-overview.tsx
@@ -17,7 +17,7 @@ import DefaultLayout from 'components/layouts/DefaultLayout'
import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout'
import { useApiReport } from 'data/reports/api-report-query'
import { useReportDateRange } from 'hooks/misc/useReportDateRange'
-import { NextPageWithLayout } from 'types'
+import type { NextPageWithLayout } from 'types'
export const ApiReport: NextPageWithLayout = () => {
const report = useApiReport()
diff --git a/apps/studio/pages/project/[ref]/reports/auth.tsx b/apps/studio/pages/project/[ref]/reports/auth.tsx
index 6d153cadc0e..7ab6bf4c442 100644
--- a/apps/studio/pages/project/[ref]/reports/auth.tsx
+++ b/apps/studio/pages/project/[ref]/reports/auth.tsx
@@ -2,13 +2,13 @@ import { useQueryClient } from '@tanstack/react-query'
import { useParams } from 'common'
import dayjs from 'dayjs'
import { ArrowRight, LogsIcon, RefreshCw } from 'lucide-react'
-import { useMemo, useState } from 'react'
+import { useState } from 'react'
-import { ReportChartV2 } from 'components/interfaces/Reports/v2/ReportChartV2'
-import { ReportSectionHeader } from 'components/interfaces/Reports/v2/ReportSectionHeader'
import ReportHeader from 'components/interfaces/Reports/ReportHeader'
import ReportPadding from 'components/interfaces/Reports/ReportPadding'
import ReportStickyNav from 'components/interfaces/Reports/ReportStickyNav'
+import { ReportChartV2 } from 'components/interfaces/Reports/v2/ReportChartV2'
+import { ReportSectionHeader } from 'components/interfaces/Reports/v2/ReportSectionHeader'
import { LogsDatePicker } from 'components/interfaces/Settings/Logs/Logs.DatePickers'
import DefaultLayout from 'components/layouts/DefaultLayout'
import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout'
@@ -18,17 +18,6 @@ import ReportFilterBar from 'components/interfaces/Reports/ReportFilterBar'
import { REPORT_DATERANGE_HELPER_LABELS } from 'components/interfaces/Reports/Reports.constants'
import { SharedAPIReport } from 'components/interfaces/Reports/SharedAPIReport/SharedAPIReport'
import { useSharedAPIReport } from 'components/interfaces/Reports/SharedAPIReport/SharedAPIReport.constants'
-import UpgradePrompt from 'components/interfaces/Settings/Logs/UpgradePrompt'
-import { useReportDateRange } from 'hooks/misc/useReportDateRange'
-import type { NextPageWithLayout } from 'types'
-import {
- createUsageReportConfig,
- createErrorsReportConfig,
- createLatencyReportConfig,
-} from 'data/reports/v2/auth.config'
-import { ReportSettings } from 'components/ui/Charts/ReportSettings'
-import type { ChartHighlightAction } from 'components/ui/Charts/ChartHighlightActions'
-import { useRouter } from 'next/router'
import {
ReportsNumericFilter,
numericFilterSchema,
@@ -37,7 +26,18 @@ import {
ReportsSelectFilter,
selectFilterSchema,
} from 'components/interfaces/Reports/v2/ReportsSelectFilter'
-import { useQueryState, parseAsJson } from 'nuqs'
+import UpgradePrompt from 'components/interfaces/Settings/Logs/UpgradePrompt'
+import type { ChartHighlightAction } from 'components/ui/Charts/ChartHighlightActions'
+import { ReportSettings } from 'components/ui/Charts/ReportSettings'
+import {
+ createErrorsReportConfig,
+ createLatencyReportConfig,
+ createUsageReportConfig,
+} from 'data/reports/v2/auth.config'
+import { useReportDateRange } from 'hooks/misc/useReportDateRange'
+import { useRouter } from 'next/router'
+import { parseAsJson, useQueryState } from 'nuqs'
+import type { NextPageWithLayout } from 'types'
const AuthReport: NextPageWithLayout = () => {
return (
diff --git a/apps/studio/pages/project/[ref]/reports/edge-functions.tsx b/apps/studio/pages/project/[ref]/reports/edge-functions.tsx
index 3cbcc7e27b2..d56ba6aa5f8 100644
--- a/apps/studio/pages/project/[ref]/reports/edge-functions.tsx
+++ b/apps/studio/pages/project/[ref]/reports/edge-functions.tsx
@@ -32,8 +32,8 @@ import { useReportDateRange } from 'hooks/misc/useReportDateRange'
import { EDGE_FUNCTION_REGIONS } from 'components/interfaces/Reports/Reports.constants'
import { ReportSettings } from 'components/ui/Charts/ReportSettings'
import { BASE_PATH } from 'lib/constants'
+import { parseAsJson, useQueryState } from 'nuqs'
import type { NextPageWithLayout } from 'types'
-import { useQueryState, parseAsJson } from 'nuqs'
const EdgeFunctionsReportV2: NextPageWithLayout = () => {
return (
diff --git a/apps/studio/pages/project/[ref]/reports/index.tsx b/apps/studio/pages/project/[ref]/reports/index.tsx
index 3fa77b7124c..f65437c225a 100644
--- a/apps/studio/pages/project/[ref]/reports/index.tsx
+++ b/apps/studio/pages/project/[ref]/reports/index.tsx
@@ -7,11 +7,11 @@ import { CreateReportModal } from 'components/interfaces/Reports/CreateReportMod
import DefaultLayout from 'components/layouts/DefaultLayout'
import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout'
import ProductEmptyState from 'components/to-be-cleaned/ProductEmptyState'
-import { Loading } from 'components/ui/Loading'
import { useContentQuery } from 'data/content/content-query'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { useProfile } from 'lib/profile'
import type { NextPageWithLayout } from 'types'
+import { LogoLoader } from 'ui'
export const UserReportPage: NextPageWithLayout = () => {
const router = useRouter()
@@ -48,7 +48,7 @@ export const UserReportPage: NextPageWithLayout = () => {
return (
{isLoading ? (
-
+
) : (
<>
{
return (
diff --git a/apps/studio/pages/project/[ref]/reports/query-performance.tsx b/apps/studio/pages/project/[ref]/reports/query-performance.tsx
index f0a78fb3f4d..ebd26722860 100644
--- a/apps/studio/pages/project/[ref]/reports/query-performance.tsx
+++ b/apps/studio/pages/project/[ref]/reports/query-performance.tsx
@@ -1,25 +1,27 @@
import { parseAsArrayOf, parseAsString, useQueryStates } from 'nuqs'
import { useParams } from 'common'
-import { EnableIndexAdvisorButton } from 'components/interfaces/QueryPerformance/IndexAdvisor/EnableIndexAdvisorButton'
import { useIndexAdvisorStatus } from 'components/interfaces/QueryPerformance/hooks/useIsIndexAdvisorStatus'
import { useQueryPerformanceSort } from 'components/interfaces/QueryPerformance/hooks/useQueryPerformanceSort'
+import { EnableIndexAdvisorButton } from 'components/interfaces/QueryPerformance/IndexAdvisor/EnableIndexAdvisorButton'
import { QueryPerformance } from 'components/interfaces/QueryPerformance/QueryPerformance'
-import { PRESET_CONFIG } from 'components/interfaces/Reports/Reports.constants'
+import {
+ PRESET_CONFIG,
+ REPORT_DATERANGE_HELPER_LABELS,
+} from 'components/interfaces/Reports/Reports.constants'
import { useQueryPerformanceQuery } from 'components/interfaces/Reports/Reports.queries'
import { Presets } from 'components/interfaces/Reports/Reports.types'
import { queriesFactory } from 'components/interfaces/Reports/Reports.utils'
-import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout'
+import { LogsDatePicker } from 'components/interfaces/Settings/Logs/Logs.DatePickers'
import DefaultLayout from 'components/layouts/DefaultLayout'
+import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout'
import DatabaseSelector from 'components/ui/DatabaseSelector'
import { DocsButton } from 'components/ui/DocsButton'
import { FormHeader } from 'components/ui/Forms/FormHeader'
+import { useReportDateRange } from 'hooks/misc/useReportDateRange'
+import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
import { DOCS_URL } from 'lib/constants'
import type { NextPageWithLayout } from 'types'
-import { LogsDatePicker } from 'components/interfaces/Settings/Logs/Logs.DatePickers'
-import { useReportDateRange } from 'hooks/misc/useReportDateRange'
-import { REPORT_DATERANGE_HELPER_LABELS } from 'components/interfaces/Reports/Reports.constants'
-import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
const QueryPerformanceReport: NextPageWithLayout = () => {
const { ref } = useParams()
diff --git a/apps/studio/pages/project/[ref]/settings/general.tsx b/apps/studio/pages/project/[ref]/settings/general.tsx
index 392985ff6d2..2bcf27c0244 100644
--- a/apps/studio/pages/project/[ref]/settings/general.tsx
+++ b/apps/studio/pages/project/[ref]/settings/general.tsx
@@ -1,3 +1,4 @@
+import { IS_PLATFORM } from 'common'
import { subscriptionHasHipaaAddon } from 'components/interfaces/Billing/Subscription/Subscription.utils'
import { ComplianceConfig } from 'components/interfaces/Settings/General/ComplianceConfig/ProjectComplianceMode'
import { CustomDomainConfig } from 'components/interfaces/Settings/General/CustomDomainConfig/CustomDomainConfig'
@@ -11,10 +12,9 @@ import { useOrgSubscriptionQuery } from 'data/subscriptions/org-subscription-que
import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization'
import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
-import type { NextPageWithLayout } from 'types'
import { useRouter } from 'next/router'
import { useEffect } from 'react'
-import { IS_PLATFORM } from 'common'
+import type { NextPageWithLayout } from 'types'
const ProjectSettings: NextPageWithLayout = () => {
const { data: project } = useSelectedProjectQuery()
diff --git a/apps/studio/pages/project/[ref]/sql/[id].tsx b/apps/studio/pages/project/[ref]/sql/[id].tsx
index 307a973517b..c09873fd356 100644
--- a/apps/studio/pages/project/[ref]/sql/[id].tsx
+++ b/apps/studio/pages/project/[ref]/sql/[id].tsx
@@ -1,8 +1,8 @@
+import { usePrevious } from '@uidotdev/usehooks'
import Link from 'next/link'
import { useRouter } from 'next/router'
import { useEffect } from 'react'
-import { usePrevious } from '@uidotdev/usehooks'
import { useParams } from 'common/hooks/useParams'
import { SQLEditor } from 'components/interfaces/SQLEditor/SQLEditor'
import DefaultLayout from 'components/layouts/DefaultLayout'
diff --git a/apps/studio/pages/sign-in-mfa.tsx b/apps/studio/pages/sign-in-mfa.tsx
index 7c67408c4ae..33a09078d4e 100644
--- a/apps/studio/pages/sign-in-mfa.tsx
+++ b/apps/studio/pages/sign-in-mfa.tsx
@@ -7,12 +7,12 @@ import { toast } from 'sonner'
import { getAccessToken, useParams } from 'common'
import { SignInMfaForm } from 'components/interfaces/SignIn/SignInMfaForm'
import SignInLayout from 'components/layouts/SignInLayout/SignInLayout'
-import { Loading } from 'components/ui/Loading'
import { useAddLoginEvent } from 'data/misc/audit-login-mutation'
import { useSendEventMutation } from 'data/telemetry/send-event-mutation'
import useLatest from 'hooks/misc/useLatest'
import { auth, buildPathWithParams, getReturnToPath } from 'lib/gotrue'
import type { NextPageWithLayout } from 'types'
+import { LogoLoader } from 'ui'
const SignInMfaPage: NextPageWithLayout = () => {
const router = useRouter()
@@ -90,7 +90,7 @@ const SignInMfaPage: NextPageWithLayout = () => {
if (loading) {
return (
-
+
)
}
diff --git a/apps/studio/pages/support/new.tsx b/apps/studio/pages/support/new.tsx
index 8b3d879ba0c..7330213b826 100644
--- a/apps/studio/pages/support/new.tsx
+++ b/apps/studio/pages/support/new.tsx
@@ -2,7 +2,7 @@ import { SupportFormPage } from 'components/interfaces/Support/SupportFormPage'
import AppLayout from 'components/layouts/AppLayout/AppLayout'
import DefaultLayout from 'components/layouts/DefaultLayout'
import { withAuth } from 'hooks/misc/withAuth'
-import { NextPageWithLayout } from 'types'
+import type { NextPageWithLayout } from 'types'
const SupportPage: NextPageWithLayout = () => {
return
diff --git a/apps/studio/state/sql-editor-v2.ts b/apps/studio/state/sql-editor-v2.ts
index afdc7aed40e..c9a4b3a6a0f 100644
--- a/apps/studio/state/sql-editor-v2.ts
+++ b/apps/studio/state/sql-editor-v2.ts
@@ -1,4 +1,5 @@
import { debounce, memoize } from 'lodash'
+import { useMemo } from 'react'
import { toast } from 'sonner'
import { proxy, snapshot, subscribe, useSnapshot } from 'valtio'
import { devtools, proxyMap } from 'valtio/utils'
@@ -10,7 +11,6 @@ import { createSQLSnippetFolder } from 'data/content/sql-folder-create-mutation'
import { updateSQLSnippetFolder } from 'data/content/sql-folder-update-mutation'
import { Snippet, SnippetFolder } from 'data/content/sql-folders-query'
import { getQueryClient } from 'data/query-client'
-import { useMemo } from 'react'
import { SqlSnippets } from 'types'
export type StateSnippetFolder = {