diff --git a/apps/studio/components/grid/SupabaseGrid.tsx b/apps/studio/components/grid/SupabaseGrid.tsx
index 6591f8e7e1a..a2e4d95132c 100644
--- a/apps/studio/components/grid/SupabaseGrid.tsx
+++ b/apps/studio/components/grid/SupabaseGrid.tsx
@@ -18,9 +18,9 @@ import {
saveStorageDebounced,
} from './SupabaseGrid.utils'
import { Shortcuts } from './components/common'
-import Footer from './components/footer'
+import Footer from './components/footer/Footer'
import { Grid } from './components/grid'
-import Header from './components/header'
+import Header from './components/header/Header'
import { RowContextMenu } from './components/menu'
import { StoreProvider, useDispatch, useTrackedState } from './store'
import { SupabaseGridProps } from './types'
diff --git a/apps/studio/components/grid/components/footer/Footer.tsx b/apps/studio/components/grid/components/footer/Footer.tsx
index dad7a782cc3..daa98099f67 100644
--- a/apps/studio/components/grid/components/footer/Footer.tsx
+++ b/apps/studio/components/grid/components/footer/Footer.tsx
@@ -1,4 +1,4 @@
-import Pagination from './pagination'
+import { Pagination } from './pagination'
import useTable from 'hooks/misc/useTable'
import { useParams } from 'common'
import TwoOptionToggle from 'components/ui/TwoOptionToggle'
diff --git a/apps/studio/components/grid/components/footer/index.ts b/apps/studio/components/grid/components/footer/index.ts
deleted file mode 100644
index 9c7e8318339..00000000000
--- a/apps/studio/components/grid/components/footer/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import Footer from './Footer'
-
-export default Footer
diff --git a/apps/studio/components/grid/components/footer/pagination/index.ts b/apps/studio/components/grid/components/footer/pagination/index.ts
index 1466412190c..1b98eba6044 100644
--- a/apps/studio/components/grid/components/footer/pagination/index.ts
+++ b/apps/studio/components/grid/components/footer/pagination/index.ts
@@ -1,3 +1 @@
-import Pagination from './Pagination'
-
-export default Pagination
+export { default as Pagination } from './Pagination'
diff --git a/apps/studio/components/grid/components/grid/RowRenderer.tsx b/apps/studio/components/grid/components/grid/RowRenderer.tsx
index f8e01b894e4..12df5f412a2 100644
--- a/apps/studio/components/grid/components/grid/RowRenderer.tsx
+++ b/apps/studio/components/grid/components/grid/RowRenderer.tsx
@@ -1,16 +1,15 @@
import { Key } from 'react'
import { TriggerEvent, useContextMenu } from 'react-contexify'
import { Row, RenderRowProps } from 'react-data-grid'
-import { MENU_IDS } from '../menu'
import { SupaRow } from '../../types'
+import { ROW_CONTEXT_MENU_ID } from '../menu'
export default function RowRenderer(key: Key, props: RenderRowProps) {
const { show: showContextMenu } = useContextMenu()
function displayMenu(e: TriggerEvent) {
- const menuId = MENU_IDS.ROW_CONTEXT_MENU_ID
showContextMenu(e, {
- id: menuId,
+ id: ROW_CONTEXT_MENU_ID,
props: { rowIdx: props.rowIdx },
})
}
diff --git a/apps/studio/components/grid/components/header/Header.tsx b/apps/studio/components/grid/components/header/Header.tsx
index 20fd4b3e0b8..b4d786f212f 100644
--- a/apps/studio/components/grid/components/header/Header.tsx
+++ b/apps/studio/components/grid/components/header/Header.tsx
@@ -32,8 +32,8 @@ import {
cn,
} from 'ui'
-import FilterDropdown from './filter'
-import SortPopover from './sort'
+import { FilterPopover } from './filter'
+import { SortPopover } from './sort'
// [Joshen] CSV exports require this guard as a fail-safe if the table is
// just too large for a browser to keep all the rows in memory before
@@ -120,7 +120,7 @@ const DefaultHeader = ({
return (
-
+
{canAddNew && (
diff --git a/apps/studio/components/grid/components/header/filter/index.ts b/apps/studio/components/grid/components/header/filter/index.ts
index 077fcde392d..bf987dfacf3 100644
--- a/apps/studio/components/grid/components/header/filter/index.ts
+++ b/apps/studio/components/grid/components/header/filter/index.ts
@@ -1,4 +1,3 @@
-import FilterPopover from './FilterPopover'
+export { default as FilterPopover } from './FilterPopover'
export * from './Filter.constants'
-export default FilterPopover
diff --git a/apps/studio/components/grid/components/header/index.ts b/apps/studio/components/grid/components/header/index.ts
deleted file mode 100644
index 7cd29d7abd0..00000000000
--- a/apps/studio/components/grid/components/header/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import Header from './Header'
-
-export default Header
diff --git a/apps/studio/components/grid/components/header/sort/index.ts b/apps/studio/components/grid/components/header/sort/index.ts
index f3f0e9d2821..8f4094016a6 100644
--- a/apps/studio/components/grid/components/header/sort/index.ts
+++ b/apps/studio/components/grid/components/header/sort/index.ts
@@ -1,3 +1 @@
-import SortPopover from './SortPopover'
-
-export default SortPopover
+export { default as SortPopover } from './SortPopover'
diff --git a/apps/studio/components/grid/components/menu/RowContextMenu.tsx b/apps/studio/components/grid/components/menu/RowContextMenu.tsx
index 879181b81ef..196417110e9 100644
--- a/apps/studio/components/grid/components/menu/RowContextMenu.tsx
+++ b/apps/studio/components/grid/components/menu/RowContextMenu.tsx
@@ -6,8 +6,7 @@ import { useCallback } from 'react'
import { useTableEditorStateSnapshot } from 'state/table-editor'
import { useTrackedState } from '../../store'
import { copyToClipboard, formatClipboardValue } from '../../utils'
-
-export const ROW_CONTEXT_MENU_ID = 'row-context-menu-id'
+import { ROW_CONTEXT_MENU_ID } from '.'
export type RowContextMenuProps = {
rows: SupaRow[]
diff --git a/apps/studio/components/grid/components/menu/index.ts b/apps/studio/components/grid/components/menu/index.ts
index f16e1e45345..d205906f811 100644
--- a/apps/studio/components/grid/components/menu/index.ts
+++ b/apps/studio/components/grid/components/menu/index.ts
@@ -1,6 +1,4 @@
-import ColumnMenu from './ColumnMenu'
-import RowContextMenu, { ROW_CONTEXT_MENU_ID } from './RowContextMenu'
+export { default as ColumnMenu } from './ColumnMenu'
+export { default as RowContextMenu } from './RowContextMenu'
-const MENU_IDS = { ROW_CONTEXT_MENU_ID }
-
-export { ColumnMenu, RowContextMenu, MENU_IDS }
+export const ROW_CONTEXT_MENU_ID = 'row-context-menu-id'
diff --git a/apps/studio/components/grid/index.ts b/apps/studio/components/grid/index.ts
index c6ed6766a7b..2074ff98607 100644
--- a/apps/studio/components/grid/index.ts
+++ b/apps/studio/components/grid/index.ts
@@ -2,6 +2,4 @@ export * from './SupabaseGrid'
export { parseSupaTable } from './SupabaseGrid.utils'
export * from './types'
-import Query from './query'
-
-export { Query }
+export { Query } from './query/Query'
diff --git a/apps/studio/components/grid/query/index.ts b/apps/studio/components/grid/query/index.ts
deleted file mode 100644
index 7a974c2c7ed..00000000000
--- a/apps/studio/components/grid/query/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { Query } from './Query'
-
-export default Query
diff --git a/apps/studio/components/grid/store/reducers/index.ts b/apps/studio/components/grid/store/reducers/index.ts
index 70a87f684e3..cdb8fc5e993 100644
--- a/apps/studio/components/grid/store/reducers/index.ts
+++ b/apps/studio/components/grid/store/reducers/index.ts
@@ -1,7 +1,7 @@
-import BaseReducer, { BaseInitialState, baseInitialState } from './base'
-import CallbackReducer, { CallbackInitialState, callbackInitialState } from './callback'
-import ColumnReducer, { ColumnInitialState, columnInitialState } from './column'
-import RowReducer, { RowInitialState, rowInitialState } from './row'
+import BaseReducer, { type BaseInitialState, baseInitialState } from './base'
+import CallbackReducer, { type CallbackInitialState, callbackInitialState } from './callback'
+import ColumnReducer, { type ColumnInitialState, columnInitialState } from './column'
+import RowReducer, { type RowInitialState, rowInitialState } from './row'
export interface InitialStateType
extends BaseInitialState,
diff --git a/apps/studio/components/interfaces/Account/Preferences/index.ts b/apps/studio/components/interfaces/Account/Preferences/index.ts
index 3da36a706fe..73078697650 100644
--- a/apps/studio/components/interfaces/Account/Preferences/index.ts
+++ b/apps/studio/components/interfaces/Account/Preferences/index.ts
@@ -1,13 +1,5 @@
-import AccountInformation from './AccountInformation'
-import AnalyticsSettings from './AnalyticsSettings'
-import ThemeSettingsOld from './ThemeSettingsOld'
-import ThemeSettings from './ThemeSettings'
-import ThemeSettingsWithPreferredTheme from './ThemeSettingsWithPreferredTheme'
-
-export {
- AccountInformation,
- AnalyticsSettings,
- ThemeSettingsOld,
- ThemeSettings,
- ThemeSettingsWithPreferredTheme,
-}
+export { default as AccountInformation } from './AccountInformation'
+export { default as AnalyticsSettings } from './AnalyticsSettings'
+export { default as ThemeSettingsOld } from './ThemeSettingsOld'
+export { default as ThemeSettings } from './ThemeSettings'
+export { default as ThemeSettingsWithPreferredTheme } from './ThemeSettingsWithPreferredTheme'
diff --git a/apps/studio/components/interfaces/Account/index.ts b/apps/studio/components/interfaces/Account/index.ts
index 82ff3116897..76959ae88fc 100644
--- a/apps/studio/components/interfaces/Account/index.ts
+++ b/apps/studio/components/interfaces/Account/index.ts
@@ -1,7 +1,5 @@
-import AccessTokenList from './AccessTokenList'
-import AuditLogs from './AuditLogs'
-import NewAccessTokenButton from './NewAccessTokenButton'
-import NewTokenBanner from './NewTokenBanner'
-import TOTPFactors from './TOTPFactors'
-
-export { AccessTokenList, NewTokenBanner, NewAccessTokenButton, TOTPFactors, AuditLogs }
+export { default as AccessTokenList } from './AccessTokenList'
+export { default as AuditLogs } from './AuditLogs'
+export { default as NewAccessTokenButton } from './NewAccessTokenButton'
+export { default as NewTokenBanner } from './NewTokenBanner'
+export { default as TOTPFactors } from './TOTPFactors'
diff --git a/apps/studio/components/interfaces/App/FeaturePreview/index.ts b/apps/studio/components/interfaces/App/FeaturePreview/index.ts
deleted file mode 100644
index bf36ec23b7a..00000000000
--- a/apps/studio/components/interfaces/App/FeaturePreview/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import { FeaturePreviewContextProvider } from './FeaturePreviewContext'
-import FeaturePreviewModal from './FeaturePreviewModal'
-
-export { FeaturePreviewContextProvider, FeaturePreviewModal }
diff --git a/apps/studio/components/interfaces/App/index.ts b/apps/studio/components/interfaces/App/index.ts
index a919142ae20..885f516f42e 100644
--- a/apps/studio/components/interfaces/App/index.ts
+++ b/apps/studio/components/interfaces/App/index.ts
@@ -1,5 +1,3 @@
-import AppBannerWrapper from './AppBannerWrapper'
-import CommandMenuWrapper from './CommandMenuWrapper'
-import RouteValidationWrapper from './RouteValidationWrapper'
-
-export { AppBannerWrapper, CommandMenuWrapper, RouteValidationWrapper }
+export { default as AppBannerWrapper } from './AppBannerWrapper'
+export { default as CommandMenuWrapper } from './CommandMenuWrapper'
+export { default as RouteValidationWrapper } from './RouteValidationWrapper'
diff --git a/apps/studio/components/interfaces/AuditLogs/index.ts b/apps/studio/components/interfaces/AuditLogs/index.ts
index d54f1b5d120..082c6e83fde 100644
--- a/apps/studio/components/interfaces/AuditLogs/index.ts
+++ b/apps/studio/components/interfaces/AuditLogs/index.ts
@@ -1,4 +1,2 @@
-import FilterPopover from './FilterPopover'
-import LogDetailsPanel from './LogDetailsPanel'
-
-export { FilterPopover, LogDetailsPanel }
+export { default as FilterPopover } from './FilterPopover'
+export { default as LogDetailsPanel } from './LogDetailsPanel'
diff --git a/apps/studio/components/interfaces/Auth/EmailTemplates/TemplateEditor.tsx b/apps/studio/components/interfaces/Auth/EmailTemplates/TemplateEditor.tsx
index d43a845da55..21fa7bcdd8d 100644
--- a/apps/studio/components/interfaces/Auth/EmailTemplates/TemplateEditor.tsx
+++ b/apps/studio/components/interfaces/Auth/EmailTemplates/TemplateEditor.tsx
@@ -13,7 +13,7 @@ import {
AlertTitle_Shadcn_,
} from 'ui'
-import CodeEditor from 'components/ui/CodeEditor'
+import { CodeEditor } from 'components/ui/CodeEditor'
import { FormActions, FormSection, FormSectionContent, FormSectionLabel } from 'components/ui/Forms'
import InformationBox from 'components/ui/InformationBox'
diff --git a/apps/studio/components/interfaces/Auth/Users/index.ts b/apps/studio/components/interfaces/Auth/Users/index.ts
index 07ac15a15a9..f868a0efc51 100644
--- a/apps/studio/components/interfaces/Auth/Users/index.ts
+++ b/apps/studio/components/interfaces/Auth/Users/index.ts
@@ -1,2 +1 @@
-import Users from './Users'
-export default Users
+export { default as Users } from './Users'
diff --git a/apps/studio/components/interfaces/Auth/index.tsx b/apps/studio/components/interfaces/Auth/index.tsx
index d46e9f7a642..96f04d7eee5 100644
--- a/apps/studio/components/interfaces/Auth/index.tsx
+++ b/apps/studio/components/interfaces/Auth/index.tsx
@@ -1,16 +1,5 @@
-import AuthProvidersForm from './AuthProvidersForm/AuthProvidersForm'
-import EmailTemplates from './EmailTemplates/EmailTemplates'
-import SmtpForm from './SmtpForm/SmtpForm'
-import BasicAuthSettingsForm from './BasicAuthSettingsForm/BasicAuthSettingsForm'
-import AdvancedAuthSettingsForm from './AdvancedAuthSettingsForm/AdvancedAuthSettingsForm'
-
-import Users from './Users'
-
-export {
- Users,
- AuthProvidersForm,
- EmailTemplates,
- SmtpForm,
- BasicAuthSettingsForm,
- AdvancedAuthSettingsForm,
-}
+export { default as AuthProvidersForm } from './AuthProvidersForm/AuthProvidersForm'
+export { default as EmailTemplates } from './EmailTemplates/EmailTemplates'
+export { default as SmtpForm } from './SmtpForm/SmtpForm'
+export { default as BasicAuthSettingsForm } from './BasicAuthSettingsForm/BasicAuthSettingsForm'
+export { default as AdvancedAuthSettingsForm } from './AdvancedAuthSettingsForm/AdvancedAuthSettingsForm'
diff --git a/apps/studio/components/interfaces/Billing/Usage/UsageWarningAlerts/index.ts b/apps/studio/components/interfaces/Billing/Usage/UsageWarningAlerts/index.ts
index 3b3afe3f30e..37d339b8dc3 100644
--- a/apps/studio/components/interfaces/Billing/Usage/UsageWarningAlerts/index.ts
+++ b/apps/studio/components/interfaces/Billing/Usage/UsageWarningAlerts/index.ts
@@ -1,5 +1,3 @@
-import CPUWarnings from './CPUWarnings'
-import DiskIOBandwidthWarnings from './DiskIOBandwidthWarnings'
-import RAMWarnings from './RAMWarnings'
-
-export { CPUWarnings, DiskIOBandwidthWarnings, RAMWarnings }
+export { default as CPUWarnings } from './CPUWarnings'
+export { default as DiskIOBandwidthWarnings } from './DiskIOBandwidthWarnings'
+export { default as RAMWarnings } from './RAMWarnings'
diff --git a/apps/studio/components/interfaces/Database/Backups/PITR/index.ts b/apps/studio/components/interfaces/Database/Backups/PITR/index.ts
index 2b24fb9939f..44f7453d8fa 100644
--- a/apps/studio/components/interfaces/Database/Backups/PITR/index.ts
+++ b/apps/studio/components/interfaces/Database/Backups/PITR/index.ts
@@ -1,4 +1,2 @@
-import PITRNotice from './PITRNotice'
-import PITRSelection from './PITRSelection'
-
-export { PITRNotice, PITRSelection }
+export { default as PITRNotice } from './PITRNotice'
+export { default as PITRSelection } from './PITRSelection'
diff --git a/apps/studio/components/interfaces/Database/Indexes/CreateIndexSidePanel.tsx b/apps/studio/components/interfaces/Database/Indexes/CreateIndexSidePanel.tsx
index c1af6223d8e..3a8f270b5fd 100644
--- a/apps/studio/components/interfaces/Database/Indexes/CreateIndexSidePanel.tsx
+++ b/apps/studio/components/interfaces/Database/Indexes/CreateIndexSidePanel.tsx
@@ -3,7 +3,7 @@ import { useEffect, useMemo, useState } from 'react'
import { Button, Input, Listbox, SidePanel } from 'ui'
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
-import CodeEditor from 'components/ui/CodeEditor'
+import { CodeEditor } from 'components/ui/CodeEditor'
import MultiSelect, { MultiSelectOption } from 'components/ui/MultiSelect'
import ShimmeringLoader from 'components/ui/ShimmeringLoader'
import { useIndexesQuery } from 'data/database/indexes-query'
diff --git a/apps/studio/components/interfaces/Database/Indexes/Indexes.tsx b/apps/studio/components/interfaces/Database/Indexes/Indexes.tsx
index 3aec38f65f5..d484b737872 100644
--- a/apps/studio/components/interfaces/Database/Indexes/Indexes.tsx
+++ b/apps/studio/components/interfaces/Database/Indexes/Indexes.tsx
@@ -19,7 +19,7 @@ import {
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
import Table from 'components/to-be-cleaned/Table'
import AlertError from 'components/ui/AlertError'
-import CodeEditor from 'components/ui/CodeEditor'
+import { CodeEditor } from 'components/ui/CodeEditor'
import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal'
import SchemaSelector from 'components/ui/SchemaSelector'
import ShimmeringLoader, { GenericSkeletonLoader } from 'components/ui/ShimmeringLoader'
diff --git a/apps/studio/components/interfaces/Database/Migrations/Migrations.tsx b/apps/studio/components/interfaces/Database/Migrations/Migrations.tsx
index 994c246adfc..66154aec7d0 100644
--- a/apps/studio/components/interfaces/Database/Migrations/Migrations.tsx
+++ b/apps/studio/components/interfaces/Database/Migrations/Migrations.tsx
@@ -6,7 +6,7 @@ import { Alert, Button, IconExternalLink, IconSearch, Input, SidePanel } from 'u
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
import Table from 'components/to-be-cleaned/Table'
-import CodeEditor from 'components/ui/CodeEditor'
+import { CodeEditor } from 'components/ui/CodeEditor'
import ShimmeringLoader from 'components/ui/ShimmeringLoader'
import { DatabaseMigration, useMigrationsQuery } from 'data/database/migrations-query'
import MigrationsEmptyState from './MigrationsEmptyState'
diff --git a/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx b/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx
index 2365eb1c034..a01f921bfdf 100644
--- a/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx
+++ b/apps/studio/components/interfaces/Database/Publications/PublicationsTables.tsx
@@ -7,7 +7,7 @@ import NoSearchResults from 'components/to-be-cleaned/NoSearchResults'
import Table from 'components/to-be-cleaned/Table'
import AlertError from 'components/ui/AlertError'
import InformationBox from 'components/ui/InformationBox'
-import Connecting from 'components/ui/Loading/Loading'
+import { Loading } from 'components/ui/Loading'
import { useTablesQuery } from 'data/tables/tables-query'
import { useCheckPermissions } from 'hooks'
import { EXCLUDED_SCHEMAS } from 'lib/constants/schemas'
@@ -83,7 +83,7 @@ const PublicationsTables = ({ selectedPublication, onSelectBack }: PublicationsT
{isLoading && (
-
+
)}
diff --git a/apps/studio/components/interfaces/Database/Wrappers/EditWrapper.tsx b/apps/studio/components/interfaces/Database/Wrappers/EditWrapper.tsx
index b14aef512c2..9048a20ae2c 100644
--- a/apps/studio/components/interfaces/Database/Wrappers/EditWrapper.tsx
+++ b/apps/studio/components/interfaces/Database/Wrappers/EditWrapper.tsx
@@ -16,7 +16,7 @@ import {
FormSectionContent,
FormSectionLabel,
} from 'components/ui/Forms'
-import Loading from 'components/ui/Loading'
+import { Loading } from 'components/ui/Loading'
import { invalidateSchemasQuery } from 'data/database/schemas-query'
import { useFDWUpdateMutation } from 'data/fdw/fdw-update-mutation'
import { useFDWsQuery } from 'data/fdw/fdws-query'
diff --git a/apps/studio/components/interfaces/Database/index.ts b/apps/studio/components/interfaces/Database/index.ts
index 46eb0254b69..793792801c0 100644
--- a/apps/studio/components/interfaces/Database/index.ts
+++ b/apps/studio/components/interfaces/Database/index.ts
@@ -1,41 +1,23 @@
-import ColumnList from './Tables/ColumnList'
-import TableList from './Tables/TableList'
+export { default as ColumnList } from './Tables/ColumnList'
+export { default as TableList } from './Tables/TableList'
-import RolesList from './Roles/RolesList'
+export { default as RolesList } from './Roles/RolesList'
-import Extensions from './Extensions/Extensions'
+export { default as Extensions } from './Extensions/Extensions'
-import CreateWrapper from './Wrappers/CreateWrapper'
-import EditWrapper from './Wrappers/EditWrapper'
-import Wrappers from './Wrappers/Wrappers'
+export { default as CreateWrapper } from './Wrappers/CreateWrapper'
+export { default as EditWrapper } from './Wrappers/EditWrapper'
+export { default as Wrappers } from './Wrappers/Wrappers'
-import PublicationsList from './Publications/PublicationsList'
-import PublicationsTables from './Publications/PublicationsTables'
+export { default as PublicationsList } from './Publications/PublicationsList'
+export { default as PublicationsTables } from './Publications/PublicationsTables'
-import BackupsList from './Backups/BackupsList'
+export { default as BackupsList } from './Backups/BackupsList'
-import CreateTrigger from './Triggers/CreateTrigger'
-import DeleteTrigger from './Triggers/DeleteTrigger'
+export { default as CreateTrigger } from './Triggers/CreateTrigger'
+export { default as DeleteTrigger } from './Triggers/DeleteTrigger'
-import CreateFunction from './Functions/CreateFunction'
-import DeleteFunction from './Functions/DeleteFunction'
+export { default as CreateFunction } from './Functions/CreateFunction'
+export { default as DeleteFunction } from './Functions/DeleteFunction'
-import EnumeratedTypes from './EnumeratedTypes/EnumeratedTypes'
-
-export {
- BackupsList,
- ColumnList,
- CreateFunction,
- CreateTrigger,
- CreateWrapper,
- DeleteFunction,
- DeleteTrigger,
- EditWrapper,
- EnumeratedTypes,
- Extensions,
- PublicationsList,
- PublicationsTables,
- RolesList,
- TableList,
- Wrappers,
-}
+export { default as EnumeratedTypes } from './EnumeratedTypes/EnumeratedTypes'
diff --git a/apps/studio/components/interfaces/Docs/index.ts b/apps/studio/components/interfaces/Docs/index.ts
index 8eaff962f84..c0e0dc2ccfe 100644
--- a/apps/studio/components/interfaces/Docs/index.ts
+++ b/apps/studio/components/interfaces/Docs/index.ts
@@ -1,5 +1,3 @@
-import GeneralContent from './GeneralContent'
-import ResourceContent from './ResourceContent'
-import RpcContent from './RpcContent'
-
-export { GeneralContent, ResourceContent, RpcContent }
+export { default as GeneralContent } from './GeneralContent'
+export { default as ResourceContent } from './ResourceContent'
+export { default as RpcContent } from './RpcContent'
diff --git a/apps/studio/components/interfaces/Functions/index.ts b/apps/studio/components/interfaces/Functions/index.ts
index 992b396e1be..e90c28a844a 100644
--- a/apps/studio/components/interfaces/Functions/index.ts
+++ b/apps/studio/components/interfaces/Functions/index.ts
@@ -1,6 +1,4 @@
-import EdgeFunctionDetails from './EdgeFunctionDetails/EdgeFunctionDetails'
-import EdgeFunctionsListItem from './EdgeFunctionsListItem'
-import FunctionsEmptyState from './FunctionsEmptyState'
-import TerminalInstructions from './TerminalInstructions'
-
-export { EdgeFunctionDetails, EdgeFunctionsListItem, FunctionsEmptyState, TerminalInstructions }
+export { default as EdgeFunctionDetails } from './EdgeFunctionDetails/EdgeFunctionDetails'
+export { default as EdgeFunctionsListItem } from './EdgeFunctionsListItem'
+export { default as FunctionsEmptyState } from './FunctionsEmptyState'
+export { default as TerminalInstructions } from './TerminalInstructions'
diff --git a/apps/studio/components/interfaces/Home/ProjectList/index.ts b/apps/studio/components/interfaces/Home/ProjectList/index.ts
index 238e6186c32..48c2789ec2c 100644
--- a/apps/studio/components/interfaces/Home/ProjectList/index.ts
+++ b/apps/studio/components/interfaces/Home/ProjectList/index.ts
@@ -1,3 +1 @@
-import ProjectList from './ProjectList'
-
-export default ProjectList
+export { default as ProjectList } from './ProjectList'
diff --git a/apps/studio/components/interfaces/Home/index.ts b/apps/studio/components/interfaces/Home/index.ts
index 229677cb889..003fa0a4159 100644
--- a/apps/studio/components/interfaces/Home/index.ts
+++ b/apps/studio/components/interfaces/Home/index.ts
@@ -1,5 +1,3 @@
-import ClientLibrary from './ClientLibrary'
-import ExampleProject from './ExampleProject'
-import NewProjectPanel from './NewProjectPanel/NewProjectPanel'
-
-export { ClientLibrary, ExampleProject, NewProjectPanel }
+export { default as ClientLibrary } from './ClientLibrary'
+export { default as ExampleProject } from './ExampleProject'
+export { default as NewProjectPanel } from './NewProjectPanel/NewProjectPanel'
diff --git a/apps/studio/components/interfaces/Organization/NewProject/index.ts b/apps/studio/components/interfaces/Organization/NewProject/index.ts
index 38f93a6cd6b..0b4cb8f09e7 100644
--- a/apps/studio/components/interfaces/Organization/NewProject/index.ts
+++ b/apps/studio/components/interfaces/Organization/NewProject/index.ts
@@ -1,5 +1,3 @@
-import NotOrganizationOwnerWarning from './NotOrganizationOwnerWarning'
-import FreeProjectLimitWarning from './FreeProjectLimitWarning'
-import EmptyPaymentMethodWarning from './EmptyPaymentMethodWarning'
-
-export { NotOrganizationOwnerWarning, FreeProjectLimitWarning, EmptyPaymentMethodWarning }
+export { default as NotOrganizationOwnerWarning } from './NotOrganizationOwnerWarning'
+export { default as FreeProjectLimitWarning } from './FreeProjectLimitWarning'
+export { default as EmptyPaymentMethodWarning } from './EmptyPaymentMethodWarning'
diff --git a/apps/studio/components/interfaces/Organization/index.ts b/apps/studio/components/interfaces/Organization/index.ts
index d98a1842db3..a48f73b8f58 100644
--- a/apps/studio/components/interfaces/Organization/index.ts
+++ b/apps/studio/components/interfaces/Organization/index.ts
@@ -1,23 +1,10 @@
-import BillingSettings from './BillingSettings/BillingSettings'
-import GeneralSettings from './GeneralSettings/GeneralSettings'
-import IntegrationSettings from './IntegrationSettings/IntegrationSettings'
-import InvoicesSettings from './InvoicesSettings/InvoicesSettings'
-import NewOrgForm from './NewOrg/NewOrgForm'
-import Usage from './Usage/Usage'
-import AuditLogs from './AuditLogs/AuditLogs'
-import OAuthApps from './OAuthApps/OAuthApps'
-import TeamSettings from './TeamSettings/TeamSettings'
-import Documents from './Documents/Documents'
-
-export {
- BillingSettings,
- GeneralSettings,
- IntegrationSettings,
- InvoicesSettings,
- NewOrgForm,
- OAuthApps,
- AuditLogs,
- TeamSettings,
- Usage,
- Documents,
-}
+export { default as BillingSettings } from './BillingSettings/BillingSettings'
+export { default as GeneralSettings } from './GeneralSettings/GeneralSettings'
+export { default as IntegrationSettings } from './IntegrationSettings/IntegrationSettings'
+export { default as InvoicesSettings } from './InvoicesSettings/InvoicesSettings'
+export { default as NewOrgForm } from './NewOrg/NewOrgForm'
+export { default as Usage } from './Usage/Usage'
+export { default as AuditLogs } from './AuditLogs/AuditLogs'
+export { default as OAuthApps } from './OAuthApps/OAuthApps'
+export { default as TeamSettings } from './TeamSettings/TeamSettings'
+export { default as Documents } from './Documents/Documents'
diff --git a/apps/studio/components/interfaces/ProjectAPIDocs/Content/index.ts b/apps/studio/components/interfaces/ProjectAPIDocs/Content/index.ts
index 7b2e4fe7d59..1c409fd4c65 100644
--- a/apps/studio/components/interfaces/ProjectAPIDocs/Content/index.ts
+++ b/apps/studio/components/interfaces/ProjectAPIDocs/Content/index.ts
@@ -1,26 +1,12 @@
-import EdgeFunctions from './EdgeFunctions'
-import Entities from './Entities'
-import Introduction from './Introduction'
-import Realtime from './Realtime'
-import Storage from './Storage'
-import StoredProcedures from './StoredProcedures'
-import UserManagement from './UserManagement'
+export { default as EdgeFunctions } from './EdgeFunctions'
+export { default as Entities } from './Entities'
+export { default as Introduction } from './Introduction'
+export { default as Realtime } from './Realtime'
+export { default as Storage } from './Storage'
+export { default as StoredProcedures } from './StoredProcedures'
+export { default as UserManagement } from './UserManagement'
-import Bucket from './Bucket'
-import EdgeFunction from './EdgeFunction'
-import Entity from './Entity'
-import RPC from './RPC'
-
-export {
- Bucket,
- EdgeFunction,
- EdgeFunctions,
- Entities,
- Entity,
- Introduction,
- RPC,
- Realtime,
- Storage,
- StoredProcedures,
- UserManagement,
-}
+export { default as Bucket } from './Bucket'
+export { default as EdgeFunction } from './EdgeFunction'
+export { default as Entity } from './Entity'
+export { default as RPC } from './RPC'
diff --git a/apps/studio/components/interfaces/Realtime/Inspector/SendMessageModal.tsx b/apps/studio/components/interfaces/Realtime/Inspector/SendMessageModal.tsx
index d2fcd857869..00dfb8a95e2 100644
--- a/apps/studio/components/interfaces/Realtime/Inspector/SendMessageModal.tsx
+++ b/apps/studio/components/interfaces/Realtime/Inspector/SendMessageModal.tsx
@@ -1,6 +1,6 @@
import { Input, Modal } from 'ui'
-import CodeEditor from 'components/ui/CodeEditor'
+import { CodeEditor } from 'components/ui/CodeEditor'
import { useEffect, useState } from 'react'
import { tryParseJson } from 'lib/helpers'
diff --git a/apps/studio/components/interfaces/Reports/Reports.tsx b/apps/studio/components/interfaces/Reports/Reports.tsx
index e9b04020e8a..541acc09ae3 100644
--- a/apps/studio/components/interfaces/Reports/Reports.tsx
+++ b/apps/studio/components/interfaces/Reports/Reports.tsx
@@ -24,7 +24,7 @@ import {
import { useParams } from 'common/hooks'
import DateRangePicker from 'components/to-be-cleaned/DateRangePicker'
-import Loading from 'components/ui/Loading'
+import { Loading } from 'components/ui/Loading'
import NoPermission from 'components/ui/NoPermission'
import { useCheckPermissions, useIsFeatureEnabled } from 'hooks'
import { METRICS, METRIC_CATEGORIES, TIME_PERIODS_REPORTS } from 'lib/constants/metrics'
diff --git a/apps/studio/components/interfaces/Settings/Database/index.ts b/apps/studio/components/interfaces/Settings/Database/index.ts
index 4e13e0f7952..5ebdf805c64 100644
--- a/apps/studio/components/interfaces/Settings/Database/index.ts
+++ b/apps/studio/components/interfaces/Settings/Database/index.ts
@@ -1,5 +1,3 @@
-import { ConnectionPooling } from './ConnectionPooling/ConnectionPooling'
-import NetworkRestrictions from './NetworkRestrictions/NetworkRestrictions'
-import DatabaseSettings from './DatabaseSettings/DatabaseSettings'
-
-export { ConnectionPooling, DatabaseSettings, NetworkRestrictions }
+export { ConnectionPooling } from './ConnectionPooling/ConnectionPooling'
+export { default as NetworkRestrictions } from './NetworkRestrictions/NetworkRestrictions'
+export { default as DatabaseSettings } from './DatabaseSettings/DatabaseSettings'
diff --git a/apps/studio/components/interfaces/Settings/General/Infrastructure/Infrastructure.tsx b/apps/studio/components/interfaces/Settings/General/Infrastructure/Infrastructure.tsx
index df601a1124c..9465ba008b7 100644
--- a/apps/studio/components/interfaces/Settings/General/Infrastructure/Infrastructure.tsx
+++ b/apps/studio/components/interfaces/Settings/General/Infrastructure/Infrastructure.tsx
@@ -16,7 +16,7 @@ import { useProjectUpgradeEligibilityQuery } from 'data/config/project-upgrade-e
import { useOrgSubscriptionQuery } from 'data/subscriptions/org-subscription-query'
import { useSelectedOrganization } from 'hooks'
import PauseProjectButton from './PauseProjectButton'
-import ProjectUpgradeAlert from './ProjectUpgradeAlert'
+import { ProjectUpgradeAlert } from './ProjectUpgradeAlert'
import RestartServerButton from './RestartServerButton'
interface InfrastructureProps {}
diff --git a/apps/studio/components/interfaces/Settings/General/Infrastructure/ProjectUpgradeAlert/index.ts b/apps/studio/components/interfaces/Settings/General/Infrastructure/ProjectUpgradeAlert/index.ts
index 74c03a0bc01..b2e2a24a42e 100644
--- a/apps/studio/components/interfaces/Settings/General/Infrastructure/ProjectUpgradeAlert/index.ts
+++ b/apps/studio/components/interfaces/Settings/General/Infrastructure/ProjectUpgradeAlert/index.ts
@@ -1,2 +1 @@
-import ProjectUpgradeAlert from './ProjectUpgradeAlert'
-export default ProjectUpgradeAlert
+export { default as ProjectUpgradeAlert } from './ProjectUpgradeAlert'
diff --git a/apps/studio/components/interfaces/Settings/General/index.ts b/apps/studio/components/interfaces/Settings/General/index.ts
index ecd3345f01c..be92b7554a3 100644
--- a/apps/studio/components/interfaces/Settings/General/index.ts
+++ b/apps/studio/components/interfaces/Settings/General/index.ts
@@ -1,17 +1,7 @@
-import General from './General'
-import Infrastructure from './Infrastructure/Infrastructure'
-import CustomDomainConfig from './CustomDomainConfig/CustomDomainConfig'
-import DeleteProjectPanel from './DeleteProjectPanel/DeleteProjectPanel'
-import DeleteProjectButton from './DeleteProjectPanel/DeleteProjectButton'
-import TransferProjectButton from './TransferProjectPanel/TransferProjectButton'
-import TransferProjectPanel from './TransferProjectPanel/TransferProjectPanel'
-
-export {
- General,
- Infrastructure,
- CustomDomainConfig,
- DeleteProjectPanel,
- DeleteProjectButton,
- TransferProjectPanel,
- TransferProjectButton,
-}
+export { default as General } from './General'
+export { default as Infrastructure } from './Infrastructure/Infrastructure'
+export { default as CustomDomainConfig } from './CustomDomainConfig/CustomDomainConfig'
+export { default as DeleteProjectPanel } from './DeleteProjectPanel/DeleteProjectPanel'
+export { default as DeleteProjectButton } from './DeleteProjectPanel/DeleteProjectButton'
+export { default as TransferProjectButton } from './TransferProjectPanel/TransferProjectButton'
+export { default as TransferProjectPanel } from './TransferProjectPanel/TransferProjectPanel'
diff --git a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureInfo.tsx b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureInfo.tsx
index ac36896a3fd..0e3b9d478c4 100644
--- a/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureInfo.tsx
+++ b/apps/studio/components/interfaces/Settings/Infrastructure/InfrastructureInfo.tsx
@@ -25,7 +25,7 @@ import { useProjectUpgradeEligibilityQuery } from 'data/config/project-upgrade-e
import { useReadReplicasQuery } from 'data/read-replicas/replicas-query'
import { useIsFeatureEnabled } from 'hooks'
import { AWS_REGIONS, FLY_REGIONS } from 'lib/constants'
-import ProjectUpgradeAlert from '../General/Infrastructure/ProjectUpgradeAlert'
+import { ProjectUpgradeAlert } from '../General/Infrastructure/ProjectUpgradeAlert'
import InstanceConfiguration from './InfrastructureConfiguration/InstanceConfiguration'
import {
AWS_REGIONS_VALUES,
diff --git a/apps/studio/components/interfaces/Settings/Logs/LogSelection.tsx b/apps/studio/components/interfaces/Settings/Logs/LogSelection.tsx
index 8d4147ba3be..b791eaa29b0 100644
--- a/apps/studio/components/interfaces/Settings/Logs/LogSelection.tsx
+++ b/apps/studio/components/interfaces/Settings/Logs/LogSelection.tsx
@@ -1,7 +1,7 @@
import { Button, IconX } from 'ui'
import CopyButton from 'components/ui/CopyButton'
-import Connecting from 'components/ui/Loading/Loading'
+import { Loading } from 'components/ui/Loading'
import useSingleLog from 'hooks/analytics/useSingleLog'
import { useMemo } from 'react'
import {
@@ -170,7 +170,7 @@ ${JSON.stringify(fullLog.metadata, null, 2)}
- {isLoading && }
+ {isLoading && }
{!isLoading && }
diff --git a/apps/studio/components/interfaces/Settings/Vault/index.ts b/apps/studio/components/interfaces/Settings/Vault/index.ts
index 41f32a26d17..c4c4a5ec325 100644
--- a/apps/studio/components/interfaces/Settings/Vault/index.ts
+++ b/apps/studio/components/interfaces/Settings/Vault/index.ts
@@ -1,6 +1,4 @@
-import VaultToggle from './VaultToggle'
-import SecretsManagement from './Secrets/SecretsManagement'
-import EncryptionKeySelector from './Keys/EncryptionKeySelector'
-import EncryptionKeysManagement from './Keys/EncryptionKeysManagement'
-
-export { VaultToggle, SecretsManagement, EncryptionKeySelector, EncryptionKeysManagement }
+export { default as VaultToggle } from './VaultToggle'
+export { default as SecretsManagement } from './Secrets/SecretsManagement'
+export { default as EncryptionKeySelector } from './Keys/EncryptionKeySelector'
+export { default as EncryptionKeysManagement } from './Keys/EncryptionKeysManagement'
diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/DateTimeInput/index.ts b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/DateTimeInput/index.ts
index 11fc66c6e2d..e1a725706ad 100644
--- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/DateTimeInput/index.ts
+++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/DateTimeInput/index.ts
@@ -1,3 +1 @@
-import DateTimeInput from './DateTimeInput'
-
-export default DateTimeInput
+export { default as DateTimeInput } from './DateTimeInput'
diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/ForeignRowSelector/ForeignRowSelector.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/ForeignRowSelector/ForeignRowSelector.tsx
index 7e925616466..2d22e95b91a 100644
--- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/ForeignRowSelector/ForeignRowSelector.tsx
+++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/ForeignRowSelector/ForeignRowSelector.tsx
@@ -7,8 +7,8 @@ import { IconLoader, SidePanel } from 'ui'
import { parseSupaTable } from 'components/grid'
import { formatFilterURLParams, formatSortURLParams } from 'components/grid/SupabaseGrid.utils'
import RefreshButton from 'components/grid/components/header/RefreshButton'
-import FilterPopover from 'components/grid/components/header/filter'
-import SortPopover from 'components/grid/components/header/sort'
+import { FilterPopover } from 'components/grid/components/header/filter'
+import { SortPopover } from 'components/grid/components/header/sort'
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
import { ForeignKeyConstraint } from 'data/database/foreign-key-constraints-query'
import { useTableRowsQuery } from 'data/table-rows/table-rows-query'
diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/InputField.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/InputField.tsx
index 02889333aa6..9754a3f8ca0 100644
--- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/InputField.tsx
+++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/InputField.tsx
@@ -2,7 +2,7 @@ import { includes, noop } from 'lodash'
import { Button, IconEdit2, IconLink, Input, Listbox, Select } from 'ui'
import { DATETIME_TYPES, JSON_TYPES, TEXT_TYPES } from '../SidePanelEditor.constants'
-import DateTimeInput from './DateTimeInput'
+import { DateTimeInput } from './DateTimeInput'
import { RowField } from './RowEditor.types'
export interface InputFieldProps {
diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/DrilldownViewer/index.ts b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/DrilldownViewer/index.ts
index feeb7224bd6..0122a59f724 100644
--- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/DrilldownViewer/index.ts
+++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/DrilldownViewer/index.ts
@@ -1,3 +1 @@
-import DrilldownViewer from './DrilldownViewer'
-
-export default DrilldownViewer
+export { default as DrilldownViewer } from './DrilldownViewer'
diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/JsonEditor.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/JsonEditor.tsx
index 28cf419760d..eff7bf73ebb 100644
--- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/JsonEditor.tsx
+++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/JsonEditor.tsx
@@ -6,7 +6,7 @@ import TwoOptionToggle from 'components/ui/TwoOptionToggle'
import { minifyJSON, prettifyJSON, tryParseJson, removeJSONTrailingComma } from 'lib/helpers'
import toast from 'react-hot-toast'
import ActionBar from '../../ActionBar'
-import DrilldownViewer from './DrilldownViewer'
+import { DrilldownViewer } from './DrilldownViewer'
import JsonCodeEditor from './JsonCodeEditor'
interface JsonEditProps {
diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/index.ts b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/index.ts
index 40295113e5b..b1bbc25b412 100644
--- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/index.ts
+++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/index.ts
@@ -1,3 +1 @@
-import JsonEditor from './JsonEditor'
-
-export default JsonEditor
+export { default as JsonEditor } from './JsonEditor'
diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/RowEditor.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/RowEditor.tsx
index 130f824cd87..90652720084 100644
--- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/RowEditor.tsx
+++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/RowEditor.tsx
@@ -10,7 +10,7 @@ import ActionBar from '../ActionBar'
import ForeignRowSelector from './ForeignRowSelector/ForeignRowSelector'
import HeaderTitle from './HeaderTitle'
import InputField from './InputField'
-import JsonEdit from './JsonEditor'
+import { JsonEditor } from './JsonEditor'
import { JsonEditValue, RowField } from './RowEditor.types'
import {
generateRowFields,
@@ -190,7 +190,7 @@ const RowEditor = ({
>
)}
- setIsEdited(true)}
/>
-
+ return
}
if (isUndefined(selectedTable)) {
diff --git a/apps/studio/components/interfaces/TableGridEditor/index.ts b/apps/studio/components/interfaces/TableGridEditor/index.ts
index 10414d79b9c..86131e01172 100644
--- a/apps/studio/components/interfaces/TableGridEditor/index.ts
+++ b/apps/studio/components/interfaces/TableGridEditor/index.ts
@@ -1,6 +1,3 @@
-import TableGridEditor from './TableGridEditor'
-import SidePanelEditor from './SidePanelEditor'
-import EmptyState from './EmptyState'
-
-export { EmptyState, SidePanelEditor }
-export default TableGridEditor
+export { default as TableGridEditor } from './TableGridEditor'
+export { default as SidePanelEditor } from './SidePanelEditor/SidePanelEditor'
+export { default as EmptyState } from './EmptyState'
diff --git a/apps/studio/components/interfaces/index.ts b/apps/studio/components/interfaces/index.ts
deleted file mode 100644
index de0b1eee793..00000000000
--- a/apps/studio/components/interfaces/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import TableGridEditor from './TableGridEditor'
-
-export * from './Auth'
-
-export { TableGridEditor }
diff --git a/apps/studio/components/layouts/AccountLayout/WithSidebar.tsx b/apps/studio/components/layouts/AccountLayout/WithSidebar.tsx
index 43c1ddcfa6a..81b4f347cfc 100644
--- a/apps/studio/components/layouts/AccountLayout/WithSidebar.tsx
+++ b/apps/studio/components/layouts/AccountLayout/WithSidebar.tsx
@@ -4,7 +4,7 @@ import { ReactNode } from 'react'
import { Badge, IconArrowUpRight, IconLogOut, Menu } from 'ui'
import { useFlag } from 'hooks'
-import LayoutHeader from '../ProjectLayout/LayoutHeader'
+import { LayoutHeader } from '../ProjectLayout/LayoutHeader'
import { SidebarLink, SidebarSection } from './AccountLayout.types'
interface WithSidebarProps {
diff --git a/apps/studio/components/layouts/AppLayout/AppHeader.tsx b/apps/studio/components/layouts/AppLayout/AppHeader.tsx
index 7eabf45eb8d..7dce7f04970 100644
--- a/apps/studio/components/layouts/AppLayout/AppHeader.tsx
+++ b/apps/studio/components/layouts/AppLayout/AppHeader.tsx
@@ -3,7 +3,7 @@ import Link from 'next/link'
import { useRouter } from 'next/router'
import { useSelectedOrganization, useSelectedProject } from 'hooks'
-import FeedbackDropdown from '../ProjectLayout/LayoutHeader/FeedbackDropdown'
+import { FeedbackDropdown } from '../ProjectLayout/LayoutHeader/FeedbackDropdown'
import HelpPopover from '../ProjectLayout/LayoutHeader/HelpPopover'
import NotificationsPopoverV2 from '../ProjectLayout/LayoutHeader/NotificationsPopoverV2/NotificationsPopover'
import BranchDropdown from './BranchDropdown'
diff --git a/apps/studio/components/layouts/AuthLayout/AuthLayout.tsx b/apps/studio/components/layouts/AuthLayout/AuthLayout.tsx
index 1a247684ec7..8c05659a12b 100644
--- a/apps/studio/components/layouts/AuthLayout/AuthLayout.tsx
+++ b/apps/studio/components/layouts/AuthLayout/AuthLayout.tsx
@@ -3,10 +3,10 @@ import { useRouter } from 'next/router'
import { PropsWithChildren } from 'react'
import { useIsColumnLevelPrivilegesEnabled } from 'components/interfaces/App/FeaturePreview/FeaturePreviewContext'
-import ProductMenu from 'components/ui/ProductMenu'
+import { ProductMenu } from 'components/ui/ProductMenu'
import { useAuthConfigPrefetch } from 'data/auth/auth-config-query'
import { withAuth } from 'hooks'
-import ProjectLayout from '../'
+import { ProjectLayout } from '../'
import { generateAuthMenu } from './AuthLayout.utils'
export interface AuthLayoutProps {
diff --git a/apps/studio/components/layouts/BillingLayout.tsx b/apps/studio/components/layouts/BillingLayout.tsx
index 2d5a1a3a8e9..abb764fd1cc 100644
--- a/apps/studio/components/layouts/BillingLayout.tsx
+++ b/apps/studio/components/layouts/BillingLayout.tsx
@@ -1,7 +1,7 @@
import Link from 'next/link'
import { PropsWithChildren } from 'react'
-import BaseLayout from 'components/layouts'
+import { ProjectLayout } from 'components/layouts'
import { useSelectedOrganization, useSelectedProject, withAuth } from 'hooks'
import { IconX } from 'ui'
@@ -12,7 +12,7 @@ const BillingLayout = ({ children }: PropsWithChildren) => {
const selectedProject = useSelectedProject()
return (
-
+
{/* Header */}
@@ -50,7 +50,7 @@ const BillingLayout = ({ children }: PropsWithChildren) => {
-
+
)
}
diff --git a/apps/studio/components/layouts/DatabaseLayout/DatabaseLayout.tsx b/apps/studio/components/layouts/DatabaseLayout/DatabaseLayout.tsx
index b16843611e9..4341217d156 100644
--- a/apps/studio/components/layouts/DatabaseLayout/DatabaseLayout.tsx
+++ b/apps/studio/components/layouts/DatabaseLayout/DatabaseLayout.tsx
@@ -2,11 +2,11 @@ import { observer } from 'mobx-react-lite'
import { useRouter } from 'next/router'
import { PropsWithChildren } from 'react'
-import ProductMenu from 'components/ui/ProductMenu'
+import { ProductMenu } from 'components/ui/ProductMenu'
import { useDatabaseExtensionsQuery } from 'data/database-extensions/database-extensions-query'
import { useProjectAddonsQuery } from 'data/subscriptions/project-addons-query'
import { useSelectedProject, withAuth } from 'hooks'
-import ProjectLayout from '../'
+import { ProjectLayout } from '../'
import { generateDatabaseMenu } from './DatabaseMenu.utils'
export interface DatabaseLayoutProps {
diff --git a/apps/studio/components/layouts/DocsLayout/DocsLayout.tsx b/apps/studio/components/layouts/DocsLayout/DocsLayout.tsx
index f67a6976615..ad906c325c3 100644
--- a/apps/studio/components/layouts/DocsLayout/DocsLayout.tsx
+++ b/apps/studio/components/layouts/DocsLayout/DocsLayout.tsx
@@ -5,11 +5,11 @@ import { ReactElement } from 'react'
import { useParams } from 'common'
import { useIsAPIDocsSidePanelEnabled } from 'components/interfaces/App/FeaturePreview/FeaturePreviewContext'
import Error from 'components/ui/Error'
-import ProductMenu from 'components/ui/ProductMenu'
+import { ProductMenu } from 'components/ui/ProductMenu'
import { useOpenAPISpecQuery } from 'data/open-api/api-spec-query'
import { useIsFeatureEnabled, useSelectedProject, withAuth } from 'hooks'
import { PROJECT_STATUS } from 'lib/constants'
-import ProjectLayout from '../'
+import { ProjectLayout } from '../'
import { generateDocsMenu } from './DocsLayout.utils'
function DocsLayout({ title, children }: { title: string; children: ReactElement }) {
diff --git a/apps/studio/components/layouts/FunctionsLayout.tsx b/apps/studio/components/layouts/FunctionsLayout.tsx
index ebeed817dc1..2247126ac9e 100644
--- a/apps/studio/components/layouts/FunctionsLayout.tsx
+++ b/apps/studio/components/layouts/FunctionsLayout.tsx
@@ -12,7 +12,7 @@ import { useEdgeFunctionQuery } from 'data/edge-functions/edge-function-query'
import { useEdgeFunctionsQuery } from 'data/edge-functions/edge-functions-query'
import { useCheckPermissions, withAuth } from 'hooks'
import FunctionsNav from '../interfaces/Functions/FunctionsNav'
-import ProjectLayout from './'
+import { ProjectLayout } from './'
interface FunctionsLayoutProps {
title?: string
diff --git a/apps/studio/components/layouts/LogsLayout/LogsLayout.tsx b/apps/studio/components/layouts/LogsLayout/LogsLayout.tsx
index ee599471dff..b2b12f6233f 100644
--- a/apps/studio/components/layouts/LogsLayout/LogsLayout.tsx
+++ b/apps/studio/components/layouts/LogsLayout/LogsLayout.tsx
@@ -3,9 +3,9 @@ import { useRouter } from 'next/router'
import { PropsWithChildren } from 'react'
import NoPermission from 'components/ui/NoPermission'
-import ProductMenu from 'components/ui/ProductMenu'
+import { ProductMenu } from 'components/ui/ProductMenu'
import { useCheckPermissions, useIsFeatureEnabled, useSelectedProject, withAuth } from 'hooks'
-import ProjectLayout from '../'
+import { ProjectLayout } from '../'
import { generateLogsMenu } from './LogsMenu.utils'
interface LogsLayoutProps {
diff --git a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/FeedbackDropdown/index.ts b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/FeedbackDropdown/index.ts
index c4d782a81b4..5b5e5bc0e4d 100644
--- a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/FeedbackDropdown/index.ts
+++ b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/FeedbackDropdown/index.ts
@@ -1,3 +1 @@
-import FeedbackDropdown from './FeedbackDropdown'
-
-export default FeedbackDropdown
+export { default as FeedbackDropdown } from './FeedbackDropdown'
diff --git a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/LayoutHeader.tsx b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/LayoutHeader.tsx
index ed2373894bc..4b601acbf6a 100644
--- a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/LayoutHeader.tsx
+++ b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/LayoutHeader.tsx
@@ -13,7 +13,7 @@ import { useOrgUsageQuery } from 'data/usage/org-usage-query'
import { useSelectedOrganization, useSelectedProject } from 'hooks'
import { IS_PLATFORM } from 'lib/constants'
import BreadcrumbsView from './BreadcrumbsView'
-import FeedbackDropdown from './FeedbackDropdown'
+import { FeedbackDropdown } from './FeedbackDropdown'
import HelpPopover from './HelpPopover'
import NotificationsPopoverV2 from './NotificationsPopoverV2/NotificationsPopover'
diff --git a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/index.ts b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/index.ts
index 357ec371434..fee21125467 100644
--- a/apps/studio/components/layouts/ProjectLayout/LayoutHeader/index.ts
+++ b/apps/studio/components/layouts/ProjectLayout/LayoutHeader/index.ts
@@ -1,3 +1 @@
-import LayoutHeader from './LayoutHeader'
-
-export default LayoutHeader
+export { default as LayoutHeader } from './LayoutHeader'
diff --git a/apps/studio/components/layouts/ProjectLayout/ProjectLayout.tsx b/apps/studio/components/layouts/ProjectLayout/ProjectLayout.tsx
index 5a783e8ad41..52971bb3e0c 100644
--- a/apps/studio/components/layouts/ProjectLayout/ProjectLayout.tsx
+++ b/apps/studio/components/layouts/ProjectLayout/ProjectLayout.tsx
@@ -5,7 +5,7 @@ import { Fragment, PropsWithChildren, ReactNode, useEffect } from 'react'
import ProjectAPIDocs from 'components/interfaces/ProjectAPIDocs/ProjectAPIDocs'
import AISettingsModal from 'components/ui/AISettingsModal'
-import Connecting from 'components/ui/Loading/Loading'
+import { Loading } from 'components/ui/Loading'
import ResourceExhaustionWarningBanner from 'components/ui/ResourceExhaustionWarningBanner/ResourceExhaustionWarningBanner'
import { useFlag, useSelectedOrganization, useSelectedProject, withAuth } from 'hooks'
import { IS_PLATFORM, PROJECT_STATUS } from 'lib/constants'
@@ -14,7 +14,7 @@ import AppLayout from '../AppLayout/AppLayout'
import EnableBranchingModal from '../AppLayout/EnableBranchingButton/EnableBranchingModal'
import BuildingState from './BuildingState'
import ConnectingState from './ConnectingState'
-import LayoutHeader from './LayoutHeader'
+import { LayoutHeader } from './LayoutHeader'
import LoadingState from './LoadingState'
import NavigationBar from './NavigationBar/NavigationBar'
import PausingState from './PausingState'
@@ -22,7 +22,7 @@ import ProductMenuBar from './ProductMenuBar'
import { ProjectContextProvider } from './ProjectContext'
import ProjectPausedState from './ProjectPausedState'
import RestoringState from './RestoringState'
-import UpgradingState from './UpgradingState'
+import { UpgradingState } from './UpgradingState'
import { ResizableHandle, ResizablePanelGroup, ResizablePanel, cn } from 'ui'
// [Joshen] This is temporary while we unblock users from managing their project
@@ -236,7 +236,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 (isProjectUpgrading) {
diff --git a/apps/studio/components/layouts/ProjectLayout/UpgradingState/index.ts b/apps/studio/components/layouts/ProjectLayout/UpgradingState/index.ts
index eb515bf7666..7264caf00de 100644
--- a/apps/studio/components/layouts/ProjectLayout/UpgradingState/index.ts
+++ b/apps/studio/components/layouts/ProjectLayout/UpgradingState/index.ts
@@ -1,2 +1 @@
-import UpgradingState from './UpgradingState'
-export default UpgradingState
+export { default as UpgradingState } from './UpgradingState'
diff --git a/apps/studio/components/layouts/ProjectSettingsLayout/SettingsLayout.tsx b/apps/studio/components/layouts/ProjectSettingsLayout/SettingsLayout.tsx
index 33dcf5e41e5..2c9787db4e6 100644
--- a/apps/studio/components/layouts/ProjectSettingsLayout/SettingsLayout.tsx
+++ b/apps/studio/components/layouts/ProjectSettingsLayout/SettingsLayout.tsx
@@ -5,8 +5,8 @@ import { PropsWithChildren } from 'react'
import { generateSettingsMenu } from './SettingsMenu.utils'
import { useParams } from 'common'
-import ProductMenu from 'components/ui/ProductMenu'
-import ProjectLayout from '..'
+import { ProductMenu } from 'components/ui/ProductMenu'
+import { ProjectLayout } from '..'
interface SettingsLayoutProps {
title?: string
diff --git a/apps/studio/components/layouts/RealtimeLayout/RealtimeLayout.tsx b/apps/studio/components/layouts/RealtimeLayout/RealtimeLayout.tsx
index 961839006c0..1c2a87c485d 100644
--- a/apps/studio/components/layouts/RealtimeLayout/RealtimeLayout.tsx
+++ b/apps/studio/components/layouts/RealtimeLayout/RealtimeLayout.tsx
@@ -1,9 +1,9 @@
import { useRouter } from 'next/router'
import { PropsWithChildren } from 'react'
-import ProductMenu from 'components/ui/ProductMenu'
+import { ProductMenu } from 'components/ui/ProductMenu'
import { useSelectedProject, useStore, withAuth } from 'hooks'
-import ProjectLayout from '../'
+import { ProjectLayout } from '../'
import { generateRealtimeMenu } from './RealtimeMenu.utils'
export interface RealtimeLayoutProps {
diff --git a/apps/studio/components/layouts/ReportsLayout/ReportsLayout.tsx b/apps/studio/components/layouts/ReportsLayout/ReportsLayout.tsx
index d0d9168bbce..eca6d2f9339 100644
--- a/apps/studio/components/layouts/ReportsLayout/ReportsLayout.tsx
+++ b/apps/studio/components/layouts/ReportsLayout/ReportsLayout.tsx
@@ -1,6 +1,6 @@
import { PropsWithChildren } from 'react'
import { withAuth } from 'hooks'
-import ProjectLayout from '../'
+import { ProjectLayout } from '../'
import ReportsMenu from './ReportsMenu'
interface ReportsLayoutProps {
diff --git a/apps/studio/components/layouts/SQLEditorLayout/SQLEditorLayout.tsx b/apps/studio/components/layouts/SQLEditorLayout/SQLEditorLayout.tsx
index b20474dba70..8e89fccd6d4 100644
--- a/apps/studio/components/layouts/SQLEditorLayout/SQLEditorLayout.tsx
+++ b/apps/studio/components/layouts/SQLEditorLayout/SQLEditorLayout.tsx
@@ -1,6 +1,6 @@
import { withAuth } from 'hooks'
import { ReactNode, useMemo } from 'react'
-import ProjectLayout from '../'
+import { ProjectLayout } from '../'
import SQLEditorMenu from './SQLEditorMenu'
export interface SQLEditorLayoutProps {
diff --git a/apps/studio/components/layouts/StorageLayout/StorageLayout.tsx b/apps/studio/components/layouts/StorageLayout/StorageLayout.tsx
index e0c06300a0a..8e70cadc132 100644
--- a/apps/studio/components/layouts/StorageLayout/StorageLayout.tsx
+++ b/apps/studio/components/layouts/StorageLayout/StorageLayout.tsx
@@ -5,7 +5,7 @@ import { AutoApiService, useProjectApiQuery } from 'data/config/project-api-quer
import { useSelectedProject, useStore, withAuth } from 'hooks'
import { PROJECT_STATUS } from 'lib/constants'
import { useStorageStore } from 'localStores/storageExplorer/StorageExplorerStore'
-import ProjectLayout from '../'
+import { ProjectLayout } from '../'
import StorageMenu from './StorageMenu'
export interface StorageLayoutProps {
diff --git a/apps/studio/components/layouts/TableEditorLayout/TableEditorLayout.tsx b/apps/studio/components/layouts/TableEditorLayout/TableEditorLayout.tsx
index abeb9fb5339..f4a4c585965 100644
--- a/apps/studio/components/layouts/TableEditorLayout/TableEditorLayout.tsx
+++ b/apps/studio/components/layouts/TableEditorLayout/TableEditorLayout.tsx
@@ -4,7 +4,7 @@ import { PropsWithChildren, useMemo } from 'react'
import NoPermission from 'components/ui/NoPermission'
import { useCheckPermissions, usePermissionsLoaded } from 'hooks'
-import { ProjectLayoutWithAuth } from '../'
+import { ProjectLayoutWithAuth } from '../ProjectLayout/ProjectLayout'
import TableEditorMenu from './TableEditorMenu'
const TableEditorLayout = ({ children }: PropsWithChildren<{}>) => {
diff --git a/apps/studio/components/layouts/WizardLayout.tsx b/apps/studio/components/layouts/WizardLayout.tsx
index 3685006886f..5e51f9721b8 100644
--- a/apps/studio/components/layouts/WizardLayout.tsx
+++ b/apps/studio/components/layouts/WizardLayout.tsx
@@ -6,7 +6,7 @@ import { IconChevronRight } from 'ui'
import { withAuth } from 'hooks'
import { BASE_PATH } from 'lib/constants'
import { Organization, Project } from 'types'
-import FeedbackDropdown from './ProjectLayout/LayoutHeader/FeedbackDropdown'
+import { FeedbackDropdown } from './ProjectLayout/LayoutHeader/FeedbackDropdown'
import HelpPopover from './ProjectLayout/LayoutHeader/HelpPopover'
interface WizardLayoutProps {
diff --git a/apps/studio/components/layouts/index.ts b/apps/studio/components/layouts/index.ts
index 1240d37c30a..a510c8ddb94 100644
--- a/apps/studio/components/layouts/index.ts
+++ b/apps/studio/components/layouts/index.ts
@@ -1,40 +1,17 @@
-import AccountLayout from './AccountLayout/AccountLayout'
-import AuthLayout from './AuthLayout/AuthLayout'
-import BillingLayout from './BillingLayout'
-import DatabaseLayout from './DatabaseLayout/DatabaseLayout'
-import DocsLayout from './DocsLayout/DocsLayout'
-import LogsLayout from './LogsLayout/LogsLayout'
-import OrganizationLayout from './OrganizationLayout'
-import ProjectLayout, { ProjectLayoutWithAuth } from './ProjectLayout/ProjectLayout'
-import SettingsLayout from './ProjectSettingsLayout/SettingsLayout'
-import ReportsLayout from './ReportsLayout/ReportsLayout'
-import SQLEditorLayout from './SQLEditorLayout/SQLEditorLayout'
-import ForgotPasswordLayout from './SignInLayout/ForgotPasswordLayout'
-import SignInLayout from './SignInLayout/SignInLayout'
-import StorageLayout from './StorageLayout/StorageLayout'
-import TableEditorLayout from './TableEditorLayout/TableEditorLayout'
-import VercelIntegrationLayout from './VercelIntegrationLayout'
-import WizardLayout, { WizardLayoutWithoutAuth } from './WizardLayout'
-
-export {
- AccountLayout,
- AuthLayout,
- BillingLayout,
- DatabaseLayout,
- DocsLayout,
- ForgotPasswordLayout,
- LogsLayout,
- OrganizationLayout,
- ProjectLayoutWithAuth,
- ReportsLayout,
- SQLEditorLayout,
- SettingsLayout,
- SignInLayout,
- StorageLayout,
- TableEditorLayout,
- VercelIntegrationLayout,
- WizardLayout,
- WizardLayoutWithoutAuth,
-}
-
-export default ProjectLayout
+export { default as AccountLayout } from './AccountLayout/AccountLayout'
+export { default as AuthLayout } from './AuthLayout/AuthLayout'
+export { default as BillingLayout } from './BillingLayout'
+export { default as DatabaseLayout } from './DatabaseLayout/DatabaseLayout'
+export { default as DocsLayout } from './DocsLayout/DocsLayout'
+export { default as LogsLayout } from './LogsLayout/LogsLayout'
+export { default as OrganizationLayout } from './OrganizationLayout'
+export { default as ProjectLayout } from './ProjectLayout/ProjectLayout'
+export { default as SettingsLayout } from './ProjectSettingsLayout/SettingsLayout'
+export { default as ReportsLayout } from './ReportsLayout/ReportsLayout'
+export { default as SQLEditorLayout } from './SQLEditorLayout/SQLEditorLayout'
+export { default as ForgotPasswordLayout } from './SignInLayout/ForgotPasswordLayout'
+export { default as SignInLayout } from './SignInLayout/SignInLayout'
+export { default as StorageLayout } from './StorageLayout/StorageLayout'
+export { default as TableEditorLayout } from './TableEditorLayout/TableEditorLayout'
+export { default as VercelIntegrationLayout } from './VercelIntegrationLayout'
+export { default as WizardLayout } from './WizardLayout'
diff --git a/apps/studio/components/to-be-cleaned/Storage/index.ts b/apps/studio/components/to-be-cleaned/Storage/index.ts
index de58d4fb2ee..efecd4c782b 100644
--- a/apps/studio/components/to-be-cleaned/Storage/index.ts
+++ b/apps/studio/components/to-be-cleaned/Storage/index.ts
@@ -1,7 +1,5 @@
-import StorageExplorer from './StorageExplorer/StorageExplorer'
-import StoragePolicies from './StoragePolicies/StoragePolicies'
-import StorageSettings from './StorageSettings/StorageSettings'
+export { default as StorageExplorer } from './StorageExplorer/StorageExplorer'
+export { default as StoragePolicies } from './StoragePolicies/StoragePolicies'
+export { default as StorageSettings } from './StorageSettings/StorageSettings'
-import DeleteBucketModal from './DeleteBucketModal'
-
-export { DeleteBucketModal, StorageExplorer, StoragePolicies, StorageSettings }
+export { default as DeleteBucketModal } from './DeleteBucketModal'
diff --git a/apps/studio/components/ui/CodeEditor/CodeEditor.tsx b/apps/studio/components/ui/CodeEditor/CodeEditor.tsx
index abfa83028bc..f955a339e97 100644
--- a/apps/studio/components/ui/CodeEditor/CodeEditor.tsx
+++ b/apps/studio/components/ui/CodeEditor/CodeEditor.tsx
@@ -5,7 +5,7 @@ import { useRef } from 'react'
import { cn } from 'ui'
import { timeout } from 'lib/helpers'
-import Connecting from '../Loading'
+import { Loading } from '../Loading'
import { alignEditor } from './CodeEditor.utils'
interface CodeEditorProps {
@@ -88,7 +88,7 @@ const CodeEditor = ({
value={value ?? undefined}
language={language}
defaultValue={defaultValue ?? undefined}
- loading={loading || }
+ loading={loading || }
options={optionsMerged}
onMount={onMount}
onChange={onInputChange}
diff --git a/apps/studio/components/ui/CodeEditor/index.ts b/apps/studio/components/ui/CodeEditor/index.ts
index a4bbbd740db..33f33a3c5e1 100644
--- a/apps/studio/components/ui/CodeEditor/index.ts
+++ b/apps/studio/components/ui/CodeEditor/index.ts
@@ -1,4 +1,3 @@
-import CodeEditor from './CodeEditor'
+export { default as CodeEditor } from './CodeEditor'
export * from './CodeEditor.utils'
-export default CodeEditor
diff --git a/apps/studio/components/ui/Loading/Loading.tsx b/apps/studio/components/ui/Loading/Loading.tsx
deleted file mode 100644
index 1db8aaa9e5a..00000000000
--- a/apps/studio/components/ui/Loading/Loading.tsx
+++ /dev/null
@@ -1,3 +0,0 @@
-import Loading from 'ui/src/components/LogoLoader'
-
-export default Loading
diff --git a/apps/studio/components/ui/Loading/index.ts b/apps/studio/components/ui/Loading/index.ts
index 472e998095e..ecc66c9df96 100644
--- a/apps/studio/components/ui/Loading/index.ts
+++ b/apps/studio/components/ui/Loading/index.ts
@@ -1,3 +1 @@
-import Loading from './Loading'
-
-export default Loading
+export { default as Loading } from 'ui/src/components/LogoLoader'
diff --git a/apps/studio/components/ui/ProductMenu/index.ts b/apps/studio/components/ui/ProductMenu/index.ts
index 91cdf1160a2..fd8718e8537 100644
--- a/apps/studio/components/ui/ProductMenu/index.ts
+++ b/apps/studio/components/ui/ProductMenu/index.ts
@@ -1,2 +1 @@
-import ProductMenu from './ProductMenu'
-export default ProductMenu
+export { default as ProductMenu } from './ProductMenu'
diff --git a/apps/studio/data/table-rows/table-row-create-mutation.ts b/apps/studio/data/table-rows/table-row-create-mutation.ts
index c7f6f4e7964..1a3cc009716 100644
--- a/apps/studio/data/table-rows/table-row-create-mutation.ts
+++ b/apps/studio/data/table-rows/table-row-create-mutation.ts
@@ -2,11 +2,11 @@ import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react
import { toast } from 'react-hot-toast'
import { Query, SupaTable } from 'components/grid'
-import { executeSql } from 'data/sql/execute-sql-query'
import { sqlKeys } from 'data/sql/keys'
import { ImpersonationRole, wrapWithRoleImpersonation } from 'lib/role-impersonation'
import { isRoleImpersonationEnabled } from 'state/role-impersonation-state'
import { ResponseError } from 'types'
+import { executeSql } from 'data/sql/execute-sql-query'
export type TableRowCreateVariables = {
projectRef: string
diff --git a/apps/studio/pages/_app.tsx b/apps/studio/pages/_app.tsx
index 9e96606394c..42a3b45a640 100644
--- a/apps/studio/pages/_app.tsx
+++ b/apps/studio/pages/_app.tsx
@@ -43,10 +43,6 @@ import {
RouteValidationWrapper,
} from 'components/interfaces/App'
import { AppBannerContextProvider } from 'components/interfaces/App/AppBannerWrapperContext'
-import {
- FeaturePreviewContextProvider,
- FeaturePreviewModal,
-} from 'components/interfaces/App/FeaturePreview'
import FlagProvider from 'components/ui/Flag/FlagProvider'
import PageTelemetry from 'components/ui/PageTelemetry'
import { useRootQueryClient } from 'data/query-client'
@@ -60,6 +56,8 @@ import { RootStore } from 'stores'
import HCaptchaLoadedStore from 'stores/hcaptcha-loaded-store'
import { AppPropsWithLayout } from 'types'
import { Toaster } from 'ui'
+import { FeaturePreviewContextProvider } from 'components/interfaces/App/FeaturePreview/FeaturePreviewContext'
+import FeaturePreviewModal from 'components/interfaces/App/FeaturePreview/FeaturePreviewModal'
dayjs.extend(customParseFormat)
dayjs.extend(utc)
diff --git a/apps/studio/pages/cli/login.tsx b/apps/studio/pages/cli/login.tsx
index 8006cd6f52c..90df8081adc 100644
--- a/apps/studio/pages/cli/login.tsx
+++ b/apps/studio/pages/cli/login.tsx
@@ -5,7 +5,7 @@ import { createCliLoginSession } from 'data/cli/login'
import { useIsLoggedIn, useParams } from 'common'
import { useRouter } from 'next/router'
import { withAuth } from 'hooks'
-import Connecting from 'components/ui/Loading/Loading'
+import { Loading } from 'components/ui/Loading'
import { useEffect, useState } from 'react'
import Link from 'next/link'
@@ -63,7 +63,7 @@ const CliLoginPage: NextPage = () => {
>
) : (
-
+
)}
diff --git a/apps/studio/pages/new/[slug].tsx b/apps/studio/pages/new/[slug].tsx
index c0f93850740..0fdc1557886 100644
--- a/apps/studio/pages/new/[slug].tsx
+++ b/apps/studio/pages/new/[slug].tsx
@@ -11,7 +11,6 @@ import {
NotOrganizationOwnerWarning,
} from 'components/interfaces/Organization/NewProject'
import { RegionSelector } from 'components/interfaces/ProjectCreation/RegionSelector'
-import { WizardLayoutWithoutAuth } from 'components/layouts'
import DisabledWarningDueToIncident from 'components/ui/DisabledWarningDueToIncident'
import Panel from 'components/ui/Panel'
import PasswordStrengthBar from 'components/ui/PasswordStrengthBar'
@@ -37,6 +36,7 @@ import { passwordStrength, pluckObjectFields } from 'lib/helpers'
import { NextPageWithLayout } from 'types'
import { Badge, Button, IconExternalLink, IconUsers, Input, Listbox } from 'ui'
import { components } from 'data/api'
+import { WizardLayoutWithoutAuth } from 'components/layouts/WizardLayout'
type DesiredInstanceSize = components['schemas']['DesiredInstanceSize']
diff --git a/apps/studio/pages/org/[slug]/apps.tsx b/apps/studio/pages/org/[slug]/apps.tsx
index 961fe12b405..b55b3ebd927 100644
--- a/apps/studio/pages/org/[slug]/apps.tsx
+++ b/apps/studio/pages/org/[slug]/apps.tsx
@@ -1,6 +1,6 @@
import { OAuthApps } from 'components/interfaces/Organization'
import { OrganizationLayout } from 'components/layouts'
-import Loading from 'components/ui/Loading'
+import { Loading } from 'components/ui/Loading'
import { usePermissionsQuery } from 'data/permissions/permissions-query'
import { useSelectedOrganization } from 'hooks'
import { NextPageWithLayout } from 'types'
diff --git a/apps/studio/pages/org/[slug]/audit.tsx b/apps/studio/pages/org/[slug]/audit.tsx
index 895526ed470..e8ae6ef1e4c 100644
--- a/apps/studio/pages/org/[slug]/audit.tsx
+++ b/apps/studio/pages/org/[slug]/audit.tsx
@@ -1,6 +1,6 @@
import { AuditLogs } from 'components/interfaces/Organization'
import { OrganizationLayout } from 'components/layouts'
-import Loading from 'components/ui/Loading'
+import { Loading } from 'components/ui/Loading'
import { usePermissionsQuery } from 'data/permissions/permissions-query'
import { useSelectedOrganization } from 'hooks'
import { NextPageWithLayout } from 'types'
diff --git a/apps/studio/pages/org/[slug]/billing.tsx b/apps/studio/pages/org/[slug]/billing.tsx
index bb7bdbcd790..4555aac2a9d 100644
--- a/apps/studio/pages/org/[slug]/billing.tsx
+++ b/apps/studio/pages/org/[slug]/billing.tsx
@@ -1,7 +1,7 @@
import { useParams } from 'common'
import { BillingSettings } from 'components/interfaces/Organization'
import { OrganizationLayout } from 'components/layouts'
-import Loading from 'components/ui/Loading'
+import { Loading } from 'components/ui/Loading'
import { usePermissionsQuery } from 'data/permissions/permissions-query'
import { useSelectedOrganization } from 'hooks'
import { useEffect } from 'react'
diff --git a/apps/studio/pages/org/[slug]/general.tsx b/apps/studio/pages/org/[slug]/general.tsx
index d186365fad5..9e1803d79b9 100644
--- a/apps/studio/pages/org/[slug]/general.tsx
+++ b/apps/studio/pages/org/[slug]/general.tsx
@@ -1,6 +1,6 @@
import { GeneralSettings as GeneralSettingsLegacy } from 'components/interfaces/Organization'
import { OrganizationLayout } from 'components/layouts'
-import Loading from 'components/ui/Loading'
+import { Loading } from 'components/ui/Loading'
import { usePermissionsQuery } from 'data/permissions/permissions-query'
import { useSelectedOrganization } from 'hooks'
import { NextPageWithLayout } from 'types'
diff --git a/apps/studio/pages/org/[slug]/invoices.tsx b/apps/studio/pages/org/[slug]/invoices.tsx
index 418510243c3..7d9f643546f 100644
--- a/apps/studio/pages/org/[slug]/invoices.tsx
+++ b/apps/studio/pages/org/[slug]/invoices.tsx
@@ -1,6 +1,6 @@
import { InvoicesSettings } from 'components/interfaces/Organization'
import { OrganizationLayout } from 'components/layouts'
-import Loading from 'components/ui/Loading'
+import { Loading } from 'components/ui/Loading'
import { usePermissionsQuery } from 'data/permissions/permissions-query'
import { useSelectedOrganization } from 'hooks'
import { NextPageWithLayout } from 'types'
diff --git a/apps/studio/pages/org/[slug]/team.tsx b/apps/studio/pages/org/[slug]/team.tsx
index d1a75aec2f4..de36efe5d32 100644
--- a/apps/studio/pages/org/[slug]/team.tsx
+++ b/apps/studio/pages/org/[slug]/team.tsx
@@ -1,6 +1,6 @@
import { TeamSettings } from 'components/interfaces/Organization'
import { OrganizationLayout } from 'components/layouts'
-import Loading from 'components/ui/Loading'
+import { Loading } from 'components/ui/Loading'
import { usePermissionsQuery } from 'data/permissions/permissions-query'
import { useSelectedOrganization } from 'hooks'
import { NextPageWithLayout } from 'types'
diff --git a/apps/studio/pages/org/[slug]/usage.tsx b/apps/studio/pages/org/[slug]/usage.tsx
index dfc69e815e0..67585db31f9 100644
--- a/apps/studio/pages/org/[slug]/usage.tsx
+++ b/apps/studio/pages/org/[slug]/usage.tsx
@@ -1,6 +1,6 @@
import { Usage } from 'components/interfaces/Organization'
import { OrganizationLayout } from 'components/layouts'
-import Loading from 'components/ui/Loading'
+import { Loading } from 'components/ui/Loading'
import { usePermissionsQuery } from 'data/permissions/permissions-query'
import { useSelectedOrganization } from 'hooks'
import { NextPageWithLayout } from 'types'
diff --git a/apps/studio/pages/project/[ref]/api/graphiql.tsx b/apps/studio/pages/project/[ref]/api/graphiql.tsx
index 52f62ccfcd9..c5f19532f03 100644
--- a/apps/studio/pages/project/[ref]/api/graphiql.tsx
+++ b/apps/studio/pages/project/[ref]/api/graphiql.tsx
@@ -10,7 +10,7 @@ import ExtensionCard from 'components/interfaces/Database/Extensions/ExtensionCa
import GraphiQL from 'components/interfaces/GraphQL/GraphiQL'
import { DocsLayout } from 'components/layouts'
import { useProjectContext } from 'components/layouts/ProjectLayout/ProjectContext'
-import Connecting from 'components/ui/Loading/Loading'
+import { Loading } from 'components/ui/Loading'
import { useSessionAccessTokenQuery } from 'data/auth/session-access-token-query'
import { useProjectApiQuery } from 'data/config/project-api-query'
import { useProjectPostgrestConfigQuery } from 'data/config/project-postgrest-config-query'
@@ -86,7 +86,7 @@ const GraphiQLPage: NextPageWithLayout = () => {
}, [projectRef, getImpersonatedRole, jwtSecret, accessToken, serviceRoleKey])
if ((IS_PLATFORM && !accessToken) || !isFetched || (isExtensionsLoading && !pgGraphqlExtension)) {
- return
+ return
}
if (pgGraphqlExtension?.installed_version === null) {
diff --git a/apps/studio/pages/project/[ref]/auth/providers.tsx b/apps/studio/pages/project/[ref]/auth/providers.tsx
index ea2840d188d..ea9d2e25a11 100644
--- a/apps/studio/pages/project/[ref]/auth/providers.tsx
+++ b/apps/studio/pages/project/[ref]/auth/providers.tsx
@@ -1,6 +1,6 @@
import { PermissionAction } from '@supabase/shared-types/out/constants'
-import { AuthProvidersForm } from 'components/interfaces'
+import { AuthProvidersForm } from 'components/interfaces/Auth'
import { AuthLayout } from 'components/layouts'
import { FormsContainer } from 'components/ui/Forms'
import NoPermission from 'components/ui/NoPermission'
diff --git a/apps/studio/pages/project/[ref]/auth/templates.tsx b/apps/studio/pages/project/[ref]/auth/templates.tsx
index 058cbbdd680..f403d698ed0 100644
--- a/apps/studio/pages/project/[ref]/auth/templates.tsx
+++ b/apps/studio/pages/project/[ref]/auth/templates.tsx
@@ -1,6 +1,6 @@
import { PermissionAction } from '@supabase/shared-types/out/constants'
-import { EmailTemplates } from 'components/interfaces'
+import { EmailTemplates } from 'components/interfaces/Auth'
import { AuthLayout } from 'components/layouts'
import { FormsContainer } from 'components/ui/Forms'
import NoPermission from 'components/ui/NoPermission'
diff --git a/apps/studio/pages/project/[ref]/auth/users.tsx b/apps/studio/pages/project/[ref]/auth/users.tsx
index ce0dc519ec6..1767354d942 100644
--- a/apps/studio/pages/project/[ref]/auth/users.tsx
+++ b/apps/studio/pages/project/[ref]/auth/users.tsx
@@ -1,4 +1,4 @@
-import { Users } from 'components/interfaces/Auth'
+import { Users } from 'components/interfaces/Auth/Users'
import { AuthLayout } from 'components/layouts'
import { NextPageWithLayout } from 'types'
diff --git a/apps/studio/pages/project/[ref]/branches.tsx b/apps/studio/pages/project/[ref]/branches.tsx
index bee6a18c20a..dd2573bdab4 100644
--- a/apps/studio/pages/project/[ref]/branches.tsx
+++ b/apps/studio/pages/project/[ref]/branches.tsx
@@ -1,5 +1,5 @@
import BranchManagement from 'components/interfaces/BranchManagement/BranchManagement'
-import { ProjectLayoutWithAuth } from 'components/layouts'
+import { ProjectLayoutWithAuth } from 'components/layouts/ProjectLayout/ProjectLayout'
import { NextPageWithLayout } from 'types'
const BranchManagementPage: NextPageWithLayout = () => {
diff --git a/apps/studio/pages/project/[ref]/building.tsx b/apps/studio/pages/project/[ref]/building.tsx
index b4ebc0a961e..88255e3d491 100644
--- a/apps/studio/pages/project/[ref]/building.tsx
+++ b/apps/studio/pages/project/[ref]/building.tsx
@@ -1,4 +1,4 @@
-import { ProjectLayoutWithAuth } from 'components/layouts'
+import { ProjectLayoutWithAuth } from 'components/layouts/ProjectLayout/ProjectLayout'
import { useRouter } from 'next/router'
import { useEffect } from 'react'
import { NextPageWithLayout } from 'types'
diff --git a/apps/studio/pages/project/[ref]/editor/[id].tsx b/apps/studio/pages/project/[ref]/editor/[id].tsx
index fd1d5957f7d..1b84514ea61 100644
--- a/apps/studio/pages/project/[ref]/editor/[id].tsx
+++ b/apps/studio/pages/project/[ref]/editor/[id].tsx
@@ -1,6 +1,6 @@
import { useTheme } from 'next-themes'
import { useParams } from 'common/hooks'
-import { TableGridEditor } from 'components/interfaces'
+import { TableGridEditor } from 'components/interfaces/TableGridEditor'
import DeleteConfirmationDialogs from 'components/interfaces/TableGridEditor/DeleteConfirmationDialogs'
import { TableEditorLayout } from 'components/layouts'
import { ProjectContextFromParamsProvider } from 'components/layouts/ProjectLayout/ProjectContext'
diff --git a/apps/studio/pages/project/[ref]/index.tsx b/apps/studio/pages/project/[ref]/index.tsx
index f14f8c21e4c..a64e832739a 100644
--- a/apps/studio/pages/project/[ref]/index.tsx
+++ b/apps/studio/pages/project/[ref]/index.tsx
@@ -6,7 +6,7 @@ import Connect from 'components/interfaces/Home/Connect/Connect'
import { CLIENT_LIBRARIES, EXAMPLE_PROJECTS } from 'components/interfaces/Home/Home.constants'
import ProjectUsageSection from 'components/interfaces/Home/ProjectUsageSection'
import ServiceStatus from 'components/interfaces/Home/ServiceStatus'
-import { ProjectLayoutWithAuth } from 'components/layouts'
+import { ProjectLayoutWithAuth } from 'components/layouts/ProjectLayout/ProjectLayout'
import ProjectPausedState from 'components/layouts/ProjectLayout/ProjectPausedState'
import ProjectUpgradeFailedBanner from 'components/ui/ProjectUpgradeFailedBanner'
import { useSelectedProject } from 'hooks'
diff --git a/apps/studio/pages/project/[ref]/logs/explorer/index.tsx b/apps/studio/pages/project/[ref]/logs/explorer/index.tsx
index 1a3c08e11b7..20f817a898b 100644
--- a/apps/studio/pages/project/[ref]/logs/explorer/index.tsx
+++ b/apps/studio/pages/project/[ref]/logs/explorer/index.tsx
@@ -27,7 +27,7 @@ import {
} from 'components/interfaces/Settings/Logs'
import UpgradePrompt from 'components/interfaces/Settings/Logs/UpgradePrompt'
import { LogsLayout } from 'components/layouts'
-import CodeEditor from 'components/ui/CodeEditor'
+import { CodeEditor } from 'components/ui/CodeEditor'
import LoadingOpacity from 'components/ui/LoadingOpacity'
import ShimmerLine from 'components/ui/ShimmerLine'
import { useContentInsertMutation } from 'data/content/content-insert-mutation'
diff --git a/apps/studio/pages/project/[ref]/logs/pooler-logs.tsx b/apps/studio/pages/project/[ref]/logs/pooler-logs.tsx
index e55fdcb38af..1b69384a7e1 100644
--- a/apps/studio/pages/project/[ref]/logs/pooler-logs.tsx
+++ b/apps/studio/pages/project/[ref]/logs/pooler-logs.tsx
@@ -5,14 +5,14 @@ import LogsPreviewer from 'components/interfaces/Settings/Logs/LogsPreviewer'
import { LogsLayout } from 'components/layouts'
import { usePoolingConfigurationQuery } from 'data/database/pooling-configuration-query'
import { NextPageWithLayout } from 'types'
-import Connecting from 'components/ui/Loading/Loading'
+import { Loading } from 'components/ui/Loading'
export const LogPage: NextPageWithLayout = () => {
const { ref } = useParams()
const { isLoading } = usePoolingConfigurationQuery({ projectRef: ref ?? 'default' })
// this prevents initial load of pooler logs before config has been retrieved
- if (isLoading) return
+ if (isLoading) return
return (
{
{navLayoutV2 && (
-
+
)}
{!navLayoutV2 && (
diff --git a/apps/studio/pages/sign-in-mfa.tsx b/apps/studio/pages/sign-in-mfa.tsx
index 4564fb46a9c..d72348b7431 100644
--- a/apps/studio/pages/sign-in-mfa.tsx
+++ b/apps/studio/pages/sign-in-mfa.tsx
@@ -6,7 +6,7 @@ import toast from 'react-hot-toast'
import { useTelemetryProps } from 'common'
import SignInMfaForm from 'components/interfaces/SignIn/SignInMfaForm'
import { SignInLayout } from 'components/layouts'
-import Loading from 'components/ui/Loading'
+import { Loading } from 'components/ui/Loading'
import { auth, buildPathWithParams, getAccessToken, getReturnToPath } from 'lib/gotrue'
import Telemetry from 'lib/telemetry'
import { NextPageWithLayout } from 'types'
diff --git a/apps/studio/pages/vercel/integrate.tsx b/apps/studio/pages/vercel/integrate.tsx
index 0c04b7dcf41..04a8e2183c2 100644
--- a/apps/studio/pages/vercel/integrate.tsx
+++ b/apps/studio/pages/vercel/integrate.tsx
@@ -15,7 +15,7 @@ import {
prepareVercelEvns,
} from 'components/to-be-cleaned/Integration/Vercel.utils'
import { databaseIcon, vercelIcon } from 'components/to-be-cleaned/ListIcons'
-import Loading from 'components/ui/Loading'
+import { Loading } from 'components/ui/Loading'
import { useProjectsQuery } from 'data/projects/projects-query'
import { withAuth } from 'hooks'
import { get } from 'lib/common/fetch'
diff --git a/apps/studio/pages/vercel/setupProject.tsx b/apps/studio/pages/vercel/setupProject.tsx
index 3c7af8ef4d1..c1a90490f38 100644
--- a/apps/studio/pages/vercel/setupProject.tsx
+++ b/apps/studio/pages/vercel/setupProject.tsx
@@ -14,7 +14,7 @@ import {
fetchVercelProject,
prepareVercelEvns,
} from 'components/to-be-cleaned/Integration/Vercel.utils'
-import Loading from 'components/ui/Loading'
+import { Loading } from 'components/ui/Loading'
import PasswordStrengthBar from 'components/ui/PasswordStrengthBar'
import { useProjectCreateMutation } from 'data/projects/project-create-mutation'
import {