From 09a1f431bcf6658830d1342322b532ed764cb224 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Wed, 14 Oct 2026 18:56:55 +0800 Subject: [PATCH] Mass update for all lucide icon imports to use the component with Icon suffix (#51659) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Context This is largely just a mechanical change here: Opting to use lucide icons with the `Icon` suffix across all icon imports within `studio` - so that it’s clearer which components are icons + reduces the possibility of name collision with our own components - e.g vs Also added a eslint rule for this: image And updated `AGENTS.md` as such: ``` Icons come from `lucide-react`, always imported with the `Icon` suffix (`import { CheckIcon, Trash2Icon } from 'lucide-react'`) — never the bare names (`Check`) or `Check as CheckIcon` aliases (lint-enforced). ``` --- apps/studio/AGENTS.md | 2 +- .../grid/components/editor/DateTimeEditor.tsx | 4 +- .../grid/components/editor/JsonEditor.tsx | 4 +- .../grid/components/editor/TextEditor.tsx | 4 +- .../footer/operations/SaveQueueActionBar.tsx | 8 +- .../footer/pagination/Pagination.tsx | 14 +-- .../formatter/CellContextMenuWrapper.tsx | 4 +- .../formatter/ForeignKeyFormatter.tsx | 4 +- .../formatter/ReferenceRecordPeek.tsx | 4 +- .../grid/components/grid/AddColumn.tsx | 4 +- .../grid/components/grid/ColumnHeader.tsx | 12 +- .../components/grid/ColumnOverlayItem.tsx | 12 +- .../grid/components/grid/GridError.tsx | 4 +- .../grid/components/grid/SelectColumn.tsx | 4 +- .../grid/components/header/Header.tsx | 8 +- .../grid/components/header/RefreshButton.tsx | 4 +- .../header/filter/FilterPopoverNew.tsx | 4 +- .../header/filter/FilterPopoverPrimitive.tsx | 4 +- .../components/header/filter/FilterRow.tsx | 8 +- .../header/sort/SortPopoverPrimitive.tsx | 6 +- .../grid/components/header/sort/SortRow.tsx | 6 +- .../grid/components/menu/ColumnMenu.tsx | 30 +++-- .../grid/components/menu/RowContextMenu.tsx | 12 +- .../interfaces/APIKeys/APIKeyDeleteDialog.tsx | 4 +- .../interfaces/APIKeys/APIKeyRow.tsx | 4 +- .../interfaces/APIKeys/ApiKeyPill.tsx | 4 +- .../APIKeys/ApiKeysIllustrations.tsx | 5 +- .../APIKeys/CreatePublishableAPIKeyDialog.tsx | 4 +- .../APIKeys/CreateSecretAPIKeyDialog.tsx | 6 +- .../Account/AccessTokens/AccessTokenList.tsx | 8 +- .../AccessTokenNewBanner.tsx | 4 +- .../TokenPermissionSection.tsx | 4 +- .../Classic/ExperimentalTokenDropdown.tsx | 4 +- .../AccessTokens/Classic/NewTokenDialog.tsx | 4 +- .../Scoped/Form/NewScopedTokenForm.tsx | 6 +- .../Scoped/ResourceAccessPills.tsx | 6 +- .../Scoped/TokenCapabilities/EndpointRow.tsx | 6 +- .../interfaces/Account/AuditLogs.tsx | 4 +- .../interfaces/Account/OAuthApps/GrantRow.tsx | 8 +- .../Preferences/AccountConnections.tsx | 8 +- .../Account/Preferences/AccountIdentities.tsx | 6 +- .../Account/Preferences/AddPasswordRow.tsx | 4 +- .../Account/Preferences/TimezoneSettings.tsx | 4 +- .../TOTPFactors/RecoveryCodesModal.tsx | 12 +- .../RegenerateRecoveryCodesModal.tsx | 4 +- .../UnenrollRecoveryCodesModal.tsx | 4 +- .../interfaces/Account/TOTPFactors/index.tsx | 8 +- .../interfaces/Advisors/AdvisorRuleItem.tsx | 6 +- .../interfaces/App/CommandMenu/ApiKeys.tsx | 16 +-- .../interfaces/App/CommandMenu/ApiUrl.tsx | 4 +- .../App/CommandMenu/ContextSearchCommands.tsx | 4 +- .../App/CommandMenu/ContextSearchResults.tsx | 4 +- .../App/CommandMenu/CreateCommands.tsx | 82 ++++++------ .../CommandMenu/EdgeFunctionSearchResults.tsx | 4 +- .../App/CommandMenu/FeaturePreviews.tsx | 8 +- .../App/CommandMenu/OrgProjectSwitcher.tsx | 10 +- .../App/CommandMenu/PolicySearchResults.tsx | 4 +- .../App/CommandMenu/StorageSearchResults.tsx | 4 +- .../interfaces/App/CommandMenu/Support.tsx | 8 +- .../App/CommandMenu/TableSearchResults.tsx | 10 +- .../FeaturePreview/FeaturePreviewModal.tsx | 16 +-- .../AuditLogs/AuditLogDetailsPanel.tsx | 6 +- .../interfaces/AuditLogs/AuditLogOverview.tsx | 14 +-- .../AuditLogs/AuditLogs.columns.tsx | 6 +- .../AuditLogs/AuditLogsSelectionHeader.tsx | 6 +- .../Auth/AuthProvidersForm/AuthAlert.tsx | 4 +- .../Auth/AuthProvidersForm/FormField.tsx | 4 +- .../Auth/AuthProvidersForm/index.tsx | 4 +- .../interfaces/Auth/BasicAuthSettingsForm.tsx | 4 +- .../CreateOrUpdateCustomProviderSheet.tsx | 4 +- .../CustomAuthProvidersList.tsx | 29 +++-- ...stomEmailTemplateRestrictionAdmonition.tsx | 4 +- .../Auth/EmailTemplates/EmailTemplates.tsx | 6 +- .../interfaces/Auth/Hooks/AddHookDropdown.tsx | 4 +- .../interfaces/Auth/Hooks/HookCard.tsx | 21 ++-- .../OAuthApps/CreateOrUpdateOAuthAppSheet.tsx | 8 +- .../interfaces/Auth/OAuthApps/LogoPicker.tsx | 6 +- .../Auth/OAuthApps/NewOAuthAppBanner.tsx | 4 +- .../Auth/OAuthApps/OAuthAppsList.tsx | 26 ++-- .../Auth/Overview/OverviewLearnMore.tsx | 4 +- .../Auth/Overview/OverviewMetrics.tsx | 14 +-- .../Auth/Overview/OverviewTable.tsx | 4 +- .../Auth/RedirectUrls/RedirectUrlList.tsx | 6 +- .../AddIntegrationDropdown.tsx | 4 +- .../ThirdPartyAuthForm/AwsRegionSelector.tsx | 4 +- .../ThirdPartyAuthForm/CreateAuth0Dialog.tsx | 4 +- .../CreateAwsCognitoAuthDialog.tsx | 4 +- .../CreateFirebaseAuthDialog.tsx | 4 +- .../ThirdPartyAuthForm/CreateWorkOSDialog.tsx | 4 +- .../ThirdPartyAuthForm/IntegrationCard.tsx | 4 +- .../Auth/ThirdPartyAuthForm/index.tsx | 4 +- .../interfaces/Auth/Users/AddUserDropdown.tsx | 8 +- .../interfaces/Auth/Users/CreateUserModal.tsx | 6 +- .../interfaces/Auth/Users/SortDropdown.tsx | 8 +- .../interfaces/Auth/Users/UserHeader.tsx | 8 +- .../interfaces/Auth/Users/UserLogs.tsx | 6 +- .../interfaces/Auth/Users/UserOverview.tsx | 32 +++-- .../interfaces/Auth/Users/UserPanel.tsx | 4 +- .../interfaces/Auth/Users/Users.utils.tsx | 8 +- .../interfaces/Auth/Users/UsersFooter.tsx | 6 +- .../Auth/Users/UsersGridComponents.tsx | 8 +- .../interfaces/Auth/Users/UsersSearch.tsx | 6 +- .../interfaces/Auth/Users/UsersV2.tsx | 18 +-- .../Payment/PaymentMethods/CreditCard.tsx | 4 +- .../NewPaymentMethodElement.tsx | 8 +- .../Payment/PaymentMethods/PaymentMethods.tsx | 6 +- .../StripePaymentConnection.tsx | 6 +- .../BranchManagement/Branch.Commands.tsx | 8 +- .../BranchManagement/BranchPanels.tsx | 4 +- .../BranchManagement/BranchSelector.tsx | 8 +- .../BranchManagement/BranchingEmptyState.tsx | 4 +- .../BranchManagement/ConnectToGitHub.tsx | 4 +- .../BranchManagement/CreateBranchModal.tsx | 12 +- .../BranchManagement/DatabaseDiffPanel.tsx | 16 ++- .../EdgeFunctionsDiffPanel.tsx | 16 +-- .../BranchManagement/EditBranchModal.tsx | 6 +- .../BranchManagement/EmptyStates.tsx | 4 +- .../interfaces/BranchManagement/Overview.tsx | 45 ++++--- .../BranchManagement/WorkflowLogs.tsx | 6 +- .../BranchManagement/WorkflowLogsCard.tsx | 8 +- .../interfaces/Branching/MergeRequest.tsx | 10 +- .../interfaces/Compute/ComputeEmptyState.tsx | 4 +- .../ComputeInstanceDetail.tsx | 6 +- .../ComputeInstanceLogsTab.tsx | 6 +- .../Compute/ComputeInstanceSnippetTabs.tsx | 14 +-- .../interfaces/Compute/ComputeList.tsx | 10 +- .../ConfigDrift/ConfigurationDriftPage.tsx | 20 +-- .../Connect/OrganizationSelector.tsx | 6 +- .../ConnectButton/Connect.Commands.tsx | 6 +- .../ConnectButton/ConnectButton.tsx | 6 +- .../ConnectSheet/ConnectConfigSection.tsx | 6 +- .../ConnectSheet/ConnectModeButton.tsx | 21 ++-- .../ConnectSheet/CopyPromptAdmonition.tsx | 4 +- .../content/server/common/SecretRow.tsx | 4 +- .../steps/direct-connection/content.tsx | 6 +- .../Database/Backups/BackupItem.tsx | 4 +- .../Database/Backups/BackupsEmpty.tsx | 4 +- .../Database/Backups/BackupsList.tsx | 4 +- .../Database/Backups/PITR/PITRForm.tsx | 4 +- .../Database/Backups/PITR/PITRNotice.tsx | 4 +- .../Database/Backups/PITR/PITRStatus.tsx | 4 +- .../Database/Backups/PITR/TimeInput.tsx | 4 +- .../Backups/PITR/TimezoneSelection.tsx | 4 +- .../CreateEnumeratedTypeSidePanel.tsx | 8 +- .../EditEnumeratedTypeSidePanel.tsx | 8 +- .../EnumeratedTypeValueRow.tsx | 6 +- .../EnumeratedTypes/EnumeratedTypes.tsx | 10 +- .../Database/Extensions/ExtensionRow.tsx | 8 +- .../Database/Extensions/Extensions.tsx | 6 +- .../CreateFunction/FunctionEditor.tsx | 4 +- .../Functions/CreateFunction/index.tsx | 6 +- .../Functions/FunctionsList/FunctionList.tsx | 23 ++-- .../Functions/FunctionsList/FunctionsList.tsx | 10 +- .../Database/Hooks/HooksList/HookList.tsx | 10 +- .../Database/Hooks/HooksList/HooksList.tsx | 4 +- .../Database/Indexes/CreateIndexSidePanel.tsx | 12 +- .../interfaces/Database/Indexes/Indexes.tsx | 8 +- .../Database/Migrations/Migrations.tsx | 4 +- .../Migrations/MigrationsEmptyState.tsx | 4 +- .../PolicyEditorPanel/LockedQuerySection.tsx | 4 +- .../PolicyEditorPanel/PolicyDetailsV2.tsx | 6 +- .../PolicyEditorPanelHeader.tsx | 10 +- .../PolicyEditorPanel/PolicyTemplates.tsx | 4 +- .../Policies/PolicyTableRow/PolicyRow.tsx | 10 +- .../PolicyTableRow/PolicyTableRowHeader.tsx | 6 +- .../Publications/PublicationsAvailability.tsx | 4 +- .../Publications/PublicationsList.tsx | 8 +- .../Publications/PublicationsTables.tsx | 4 +- .../Database/Replication/DestinationIcon.tsx | 4 +- .../AnalyticsBucket/Fields.tsx | 6 +- .../DestinationForm/BigQuery/Fields.tsx | 4 +- .../BigQuery/TableOptionRow.tsx | 4 +- .../DestinationForm/BigQuery/TableOptions.tsx | 12 +- .../DestinationForm/ClickHouse/Fields.tsx | 4 +- .../DestinationForm/DuckLake/Fields.tsx | 10 +- .../NoDestinationsAvailable.tsx | 4 +- .../DestinationForm/PublicationsComboBox.tsx | 6 +- .../DestinationForm/Snowflake/Fields.tsx | 6 +- .../DestinationForm/index.tsx | 4 +- .../DestinationPanel/DestinationPanel.tsx | 4 +- .../Database/Replication/DestinationRow.tsx | 6 +- .../Database/Replication/Destinations.tsx | 14 +-- .../Replication/ReplicationPipelineLayout.tsx | 36 +++--- .../ReplicationPipelineStatus.tsx | 14 +-- .../TableReplicationRow.tsx | 6 +- .../Database/Replication/RowMenu.tsx | 32 ++--- .../RestoreToNewProject.tsx | 4 +- .../interfaces/Database/Roles/RoleRow.tsx | 8 +- .../Database/Roles/RoleRowSkeleton.tsx | 4 +- .../interfaces/Database/Roles/RolesList.tsx | 10 +- .../Database/Schemas/DefaultEdge.tsx | 6 +- .../Database/Schemas/FindTableSelector.tsx | 6 +- .../Database/Schemas/SchemaGraph.tsx | 25 ++-- .../Database/Schemas/SchemaGraphLegend.tsx | 8 +- .../Database/Schemas/SchemaTableNode.tsx | 38 +++--- .../interfaces/Database/Tables/ColumnList.tsx | 56 ++++----- .../interfaces/Database/Tables/TableList.tsx | 42 +++---- .../Database/Triggers/ChooseFunctionForm.tsx | 6 +- .../EventTriggersList/EventTriggerList.tsx | 30 +++-- .../EventTriggersList/EventTriggersList.tsx | 10 +- .../Database/Triggers/TriggerSheet.tsx | 6 +- .../TriggersList/CreateTriggerButtons.tsx | 4 +- .../Triggers/TriggersList/TriggerList.tsx | 26 ++-- .../Triggers/TriggersList/TriggersList.tsx | 6 +- .../ComputeAndDiskUsageCharts.tsx | 10 +- .../DiskManagementRestartRequiredSection.tsx | 4 +- .../DiskManagementReviewAndSubmitDialog.tsx | 8 +- .../fields/ComputeSizeField.tsx | 8 +- .../DiskManagement/fields/DiskSizeField.tsx | 4 +- .../DiskManagement/ui/BillingChangeBadge.tsx | 4 +- .../DiskManagement/ui/DiskSpaceBar.tsx | 4 +- .../interfaces/Docs/Description.tsx | 4 +- .../interfaces/Docs/GeneratingTypes.tsx | 4 +- .../interfaces/Docs/LangSelector.tsx | 6 +- .../interfaces/Docs/ResourceContent.tsx | 4 +- .../DeployEdgeFunctionButton.tsx | 8 +- .../EdgeFunctionsSortDropdown.tsx | 6 +- .../ErrorHandling/TroubleshootingSections.tsx | 4 +- .../ExplainVisualizer.Header.tsx | 6 +- .../ExplainVisualizer.NodeRow.tsx | 6 +- .../ExplainVisualizer.RowCountIndicator.tsx | 6 +- .../ExplainVisualizer.utils.ts | 40 +++--- .../interfaces/Explorer/AddCellDropdown.tsx | 8 +- .../interfaces/Explorer/ExplorerChatTab.tsx | 6 +- .../Explorer/ExplorerChatToolbar.tsx | 18 ++- .../interfaces/Explorer/ExplorerHomeTab.tsx | 13 +- .../Explorer/ExplorerNotebookTab.tsx | 58 ++++----- .../Explorer/ExplorerOnboarding.tsx | 6 +- .../Explorer/ExplorerOnboardingWireframes.tsx | 74 +++++------ .../interfaces/Explorer/ExplorerQueryTab.tsx | 21 ++-- .../interfaces/Explorer/ExplorerToolbar.tsx | 4 +- .../Explorer/MoveCellDropdownContent.tsx | 8 +- .../interfaces/Explorer/QueryCell/index.tsx | 4 +- .../QueryEditor/DisplaySettingsButton.tsx | 12 +- .../Explorer/QueryEditor/QueryResultError.tsx | 4 +- .../QueryEditor/QueryResultRenderer.tsx | 4 +- .../Explorer/QueryEditor/QueryRunButton.tsx | 6 +- .../Explorer/QueryEditor/QuerySourceMenu.tsx | 6 +- .../interfaces/Explorer/QueryEditor/index.tsx | 10 +- .../interfaces/Explorer/SaveQueryDropdown.tsx | 7 +- .../interfaces/Functions/CommandRender.tsx | 6 +- .../EdgeFunctionTesterSheet.tsx | 8 +- .../EdgeFunctionChartEmptyState.tsx | 4 +- .../EdgeFunctionInvocationsChart.tsx | 4 +- .../EdgeFunctionOverview.tsx | 4 +- .../EdgeFunctionRecentErrors.tsx | 10 +- .../EdgeFunctionRecentInvocations.tsx | 8 +- .../EdgeFunctionSecrets/AddNewSecretForm.tsx | 8 +- .../EdgeFunctionSecret.tsx | 8 +- .../EdgeFunctionSecrets.tsx | 4 +- .../EdgeFunctionSecrets/EditSecretSheet.tsx | 4 +- .../Functions/EdgeFunctionsListItem.tsx | 6 +- .../Functions/FunctionsEmptyState.tsx | 10 +- .../Functions/TerminalInstructions.tsx | 10 +- .../interfaces/Home/ClientLibrary.tsx | 6 +- .../interfaces/Home/ExampleProject.tsx | 4 +- .../Home/ProjectList/EmptyStates.tsx | 6 +- .../Home/ProjectList/ProjectCard.tsx | 10 +- .../Home/ProjectList/ProjectCardStatus.tsx | 10 +- .../Home/ProjectList/ProjectTableRow.tsx | 12 +- .../components/interfaces/HomePageActions.tsx | 14 +-- .../Integrations/CronJobs/CronJobPage.tsx | 11 +- .../CronJobs/CronJobTableCell.tsx | 18 +-- .../CronJobs/CronJobs.constants.tsx | 4 +- .../CronJobs/CronJobsTab.CleanupNotice.tsx | 8 +- .../CronJobs/CronJobsTab.Header.tsx | 8 +- .../Integrations/CronJobs/CronJobsTab.tsx | 4 +- .../CronJobs/EdgeFunctionSection.tsx | 6 +- .../Integrations/CronJobs/PreviousRunsTab.tsx | 8 +- .../DataApi/DataApiDisabledState.tsx | 4 +- .../DataApi/DataApiURLSettings.tsx | 4 +- .../Integrations/DataApi/DocsMobileNav.tsx | 4 +- .../Integrations/DataApi/DocsTabs.utils.tsx | 8 +- .../Integrations/GraphQL/GraphiQLTab.tsx | 4 +- .../GraphQL/IntrospectionDisabledNotice.tsx | 6 +- .../Integration/BuildBySection.tsx | 4 +- .../ConnectedResourceGroupSection.tsx | 10 +- .../InstallationSettings.tsx | 4 +- .../Integrations/Landing/IntegrationCard.tsx | 4 +- .../Landing/Integrations.constants.tsx | 26 ++-- .../Landing/useAvailableIntegrations.tsx | 4 +- .../Marketplace/Marketplace.constants.tsx | 22 ++-- .../Marketplace/MarketplaceDetail.tsx | 14 +-- .../Marketplace/MarketplaceDetailRail.tsx | 8 +- .../Marketplace/MarketplaceFilterBar.tsx | 14 +-- .../Marketplace/MarketplaceSidebar.tsx | 10 +- .../Integrations/Queues/QueueCells.tsx | 6 +- .../Integrations/Queues/QueueTab.tsx | 12 +- .../Integrations/Queues/Queues.constants.tsx | 8 +- .../Integrations/Queues/QueuesTab.tsx | 8 +- .../SingleQueue/MessageDetailsPanel.tsx | 10 +- .../Queues/SingleQueue/QueueDataGrid.tsx | 4 +- .../Queues/SingleQueue/QueueSettings.tsx | 6 +- .../Vault/Secrets/AddNewSecretModal.tsx | 4 +- .../Vault/Secrets/EditSecretModal.tsx | 4 +- .../Integrations/Vault/Secrets/SecretRow.tsx | 24 ++-- .../Vault/Secrets/SecretsManagement.tsx | 8 +- .../VercelGithub/IntegrationConnection.tsx | 19 ++- .../VercelGithub/IntegrationPanels.tsx | 10 +- .../VercelGithub/ProjectLinkerComponents.tsx | 10 +- .../Warehouse/WarehouseConnectSection.tsx | 8 +- .../Integrations/Wrappers/ColumnType.tsx | 36 +++--- .../Wrappers/ForeignTablesSelector.tsx | 6 +- .../Integrations/Wrappers/InputField.tsx | 4 +- .../Integrations/Wrappers/WrapperRow.tsx | 16 ++- .../Wrappers/WrapperTableEditor.tsx | 6 +- .../StripeSyncEngine/OverviewTab.tsx | 6 +- .../StripeSyncChangesCard.tsx | 28 +++-- .../StripeSyncSettingsPage.tsx | 4 +- .../JwtSecrets/algorithm-hover-card.tsx | 15 ++- .../jwt-secret-keys-table/index.tsx | 10 +- .../key-details-dialog.tsx | 4 +- .../rotate-key-dialog.tsx | 22 ++-- .../jwt-secret-keys-table/signing-key-row.tsx | 38 +++--- .../interfaces/JwtSecrets/jwt-settings.tsx | 58 +++++---- .../JwtSecrets/start-using-keys-banner.tsx | 4 +- .../Linter/GraphqlExposureLintCTA.tsx | 14 ++- .../interfaces/Linter/LintDetail.tsx | 4 +- .../interfaces/Linter/LintPageTabs.tsx | 4 +- .../interfaces/Linter/Linter.utils.test.tsx | 4 +- .../interfaces/Linter/Linter.utils.tsx | 119 +++++++++--------- .../interfaces/Linter/LinterDataGrid.tsx | 4 +- .../interfaces/Linter/LinterFilters.tsx | 6 +- .../interfaces/Linter/LinterPageFooter.tsx | 4 +- .../components/interfaces/LocalDropdown.tsx | 6 +- .../interfaces/LogDrains/AnimatedLogos.tsx | 6 +- .../LogDrains/LogDrains.constants.tsx | 6 +- .../interfaces/LogDrains/LogDrainsList.tsx | 6 +- .../LogDrains/OrgAuditLogDrains.tsx | 4 +- .../interfaces/MCP/Secrets/McpSecretsForm.tsx | 6 +- .../DatabaseConnections/Activity.tsx | 6 +- .../DatabaseConnections/ActivityRow.tsx | 20 +-- .../Observability/ObservabilityOverview.tsx | 4 +- .../Observability/ServiceHealthTable.tsx | 6 +- .../Organization/AuditLogs/AuditLogs.tsx | 4 +- .../BillingBreakdown/BillingMetric.tsx | 4 +- .../BillingBreakdown/ComputeMetric.tsx | 4 +- .../BillingCustomerDataForm.tsx | 13 +- .../CostControl/CostControl.tsx | 4 +- .../CostControl/SpendCapSidePanel.tsx | 6 +- .../BillingSettings/CreditCodeRedemption.tsx | 8 +- .../BillingSettings/CreditTopUp.tsx | 8 +- .../BillingSettings/Restriction.tsx | 10 +- .../Subscription/DowngradeModal.tsx | 6 +- .../Subscription/EnterpriseCard.tsx | 4 +- .../Subscription/InvoiceEstimateTooltip.tsx | 4 +- .../Subscription/PaymentMethodSelection.tsx | 6 +- .../BillingSettings/Subscription/PlanCard.tsx | 4 +- .../Subscription/PlanUpdatePanelShell.tsx | 8 +- .../SubscriptionPlanUpdateDialog.tsx | 4 +- .../Organization/Documents/CustomDocument.tsx | 4 +- .../Organization/Documents/HIPAA.tsx | 4 +- .../Organization/Documents/ISO27001.tsx | 4 +- .../Organization/Documents/SOC2.tsx | 4 +- .../Documents/SecurityQuestionnaire.tsx | 4 +- .../interfaces/Organization/Documents/TIA.tsx | 4 +- .../InvoicesSettings/InvoicesSettings.tsx | 22 +++- .../Organization/NewOrg/NewOrgForm.tsx | 4 +- .../OAuthApps/AuthorizeRequesterDetails.tsx | 6 +- .../OAuthApps/AuthorizedAppRow.tsx | 4 +- .../OAuthApps/Consent/AuthorizingAsCard.tsx | 4 +- .../Organization/OAuthApps/DeleteAppModal.tsx | 4 +- .../Organization/OAuthApps/OAuthAppRow.tsx | 8 +- .../OAuthApps/OAuthAppsAuthorizedRow.tsx | 8 +- .../OAuthAppsMemberGrantsDialogContent.tsx | 4 +- .../OAuthApps/OAuthSecrets/SecretRow.tsx | 8 +- .../OAuthApps/PublishAppSidePanel/Scopes.tsx | 4 +- .../OAuthApps/PublishAppSidePanel/index.tsx | 6 +- .../OAuthApps/PublishableApps.tsx | 6 +- .../Organization/OAuthApps/RevokeAppModal.tsx | 4 +- .../Organization/OrganizationCard.tsx | 8 +- .../PrivateApps/Apps/AppsList/AppsList.tsx | 8 +- .../Apps/AppsList/AppsListTable.tsx | 10 +- .../Apps/CreateAppSheet/CreateAppSheet.tsx | 14 +-- .../Apps/ViewAppSheet/ViewAppSheet.tsx | 4 +- .../Apps/ViewAppSheet/ViewAppSheetInfo.tsx | 6 +- .../Organization/ProjectClaim/benefits.tsx | 12 +- .../Organization/ProjectClaim/confirm.tsx | 12 +- .../interfaces/Organization/SSO/SSOConfig.tsx | 4 +- .../Organization/SSO/SSODomains.tsx | 6 +- .../Organization/SSO/SSOMetadata.tsx | 4 +- .../TeamSettings/InviteMemberButton.tsx | 4 +- .../TeamSettings/MemberActions.tsx | 10 +- .../Organization/TeamSettings/MemberRow.tsx | 10 +- .../Organization/TeamSettings/MembersView.tsx | 4 +- .../TeamSettings/TeamSettings.tsx | 4 +- .../UpdateRolesPanel/UpdateRolesPanel.tsx | 9 +- .../Organization/Usage/ActiveCompute.tsx | 4 +- .../interfaces/Organization/Usage/Compute.tsx | 4 +- .../Organization/Usage/SectionContent.tsx | 4 +- .../interfaces/Organization/Usage/Usage.tsx | 12 +- .../Usage/UsageSection/AttributeUsage.tsx | 8 +- .../PlatformWebhooksDeliveryDetailsSheet.tsx | 11 +- .../PlatformWebhooksEndpointDetails.tsx | 20 +-- .../Webhooks/PlatformWebhooksEndpointList.tsx | 24 ++-- .../PlatformWebhooksEndpointSheet.tsx | 4 +- .../Webhooks/PlatformWebhooksPage.tsx | 12 +- .../components/interfaces/Project/APIKeys.tsx | 4 +- .../ProjectAPIDocs/Content/Entities.tsx | 4 +- .../ProjectAPIDocs/Content/Introduction.tsx | 6 +- .../ProjectAPIDocs/FirstLevelNav.tsx | 8 +- .../ProjectAPIDocs/LanguageSelector.tsx | 6 +- .../ProjectAPIDocs/SecondLevelNav.Layout.tsx | 6 +- .../DisabledWarningDueToIncident.tsx | 4 +- .../ProjectCreation/RegionSelector.tsx | 4 +- .../interfaces/ProjectHome/ActivityStats.tsx | 12 +- .../interfaces/ProjectHome/AdvisorSection.tsx | 4 +- .../ProjectHome/ConnectSection.config.tsx | 21 ++-- .../interfaces/ProjectHome/ConnectSection.tsx | 4 +- .../ProjectHome/CustomReportSection.tsx | 8 +- .../ProjectHome/HighAvailabilityBadge.tsx | 4 +- .../MakeReportSnippetPublicModal.tsx | 6 +- .../ProjectHome/NotebooksSection.tsx | 8 +- .../interfaces/ProjectHome/PlanUsageCard.tsx | 4 +- .../ProjectHome/ProjectConnectionPopover.tsx | 22 ++-- .../interfaces/ProjectHome/ServiceStatus.tsx | 20 +-- .../ProjectHome/SnippetDropdown.tsx | 4 +- .../QueryInsightsChart/QueryInsightsChart.tsx | 4 +- .../QueryInsightsDetailSheet.tsx | 4 +- .../QueryInsightsTable.constants.ts | 8 +- .../QueryInsightsTable/QueryInsightsTable.tsx | 10 +- .../hooks/useQueryInsightsTableColumns.tsx | 29 +++-- .../IndexAdvisor/IndexSuggestionIcon.tsx | 4 +- .../QueryPerformance/QueryDetail.tsx | 6 +- .../QueryPerformance/QueryIndexes.tsx | 8 +- .../QueryPerformance/QueryPanel.tsx | 6 +- .../QueryPerformance/QueryPerformanceGrid.tsx | 18 ++- .../QueryPerformanceMetrics.tsx | 6 +- .../QueryPerformance/SqlMonacoBlock.tsx | 4 +- .../WithStatements/WithStatements.tsx | 8 +- .../components/FilterInput.tsx | 6 +- .../components/FilterPill.tsx | 4 +- .../components/IndexAdvisorFilter.tsx | 9 +- .../components/SortIndicator.tsx | 4 +- .../DatabaseParametersSubMenu.tsx | 6 +- .../QuerySources/LogsTimeRangeSubMenu.tsx | 8 +- .../QuerySources/QuerySourceIcon.tsx | 4 +- .../Realtime/Inspector/AnimatedCursors.tsx | 6 +- .../Inspector/ChooseChannelPopover.tsx | 4 +- .../interfaces/Realtime/Inspector/Header.tsx | 6 +- .../Realtime/Inspector/MessageSelection.tsx | 4 +- .../Realtime/Inspector/MessagesTable.tsx | 10 +- .../RealtimeFilterPopover/TableSelector.tsx | 12 +- .../Inspector/RealtimeFilterPopover/index.tsx | 4 +- .../RealtimeMessageColumnRenderer.tsx | 4 +- .../interfaces/Reports/MetricOptions.tsx | 6 +- .../Reports/ReportBlock/ChartBlock.tsx | 6 +- .../ReportBlock/LogsSnippetReportBlock.tsx | 4 +- .../Reports/ReportBlock/ReportBlock.tsx | 12 +- .../ReportBlock/ReportBlockContainer.tsx | 6 +- .../interfaces/Reports/ReportFilterBar.tsx | 21 ++-- .../interfaces/Reports/ReportWidget.tsx | 6 +- .../components/interfaces/Reports/Reports.tsx | 12 +- .../Reports/renderers/ApiRenderers.tsx | 4 +- .../interfaces/Reports/v2/ReportChartV2.tsx | 4 +- .../Reports/v2/ReportSectionHeader.tsx | 4 +- .../Reports/v2/ReportsNumericFilter.tsx | 4 +- .../Reports/v2/ReportsSelectFilter.tsx | 4 +- .../RoleImpersonationPopover.tsx | 8 +- .../UserImpersonationSelector.tsx | 10 +- .../RoleImpersonationSelector/index.tsx | 14 +-- .../SQLEditor/DownloadSnippetModal.tsx | 6 +- .../interfaces/SQLEditor/MoveQueryModal.tsx | 10 +- .../SQLEditor/SQLEditorEditorPanel.tsx | 4 +- .../interfaces/SQLEditor/SQLEditorLayout.tsx | 4 +- .../SQLEditor/UtilityPanel/AutosaveStatus.tsx | 4 +- .../SQLEditor/UtilityPanel/ChartConfig.tsx | 6 +- .../QuerySourceMenu/QuerySourceMenu.tsx | 6 +- .../SQLEditor/UtilityPanel/RunButton.tsx | 4 +- .../SQLEditor/UtilityPanel/SaveButton.tsx | 4 +- .../UtilityPanel/SavingIndicator.tsx | 10 +- .../SQLEditor/UtilityPanel/UtilityActions.tsx | 31 +++-- .../UtilityPanel/UtilityTabResults.tsx | 6 +- .../API/DataApiEnableSwitchStates.tsx | 4 +- .../Settings/API/DataApiProjectUrlCard.tsx | 4 +- .../Settings/API/ExposedFunctionSelector.tsx | 12 +- .../Settings/API/ExposedSchemaSelector.tsx | 8 +- .../Settings/API/ExposedTableSelector.tsx | 12 +- .../Settings/API/HardenAPIModal.tsx | 8 +- .../Settings/API/PostgrestConfig.tsx | 4 +- .../interfaces/Settings/API/ServiceList.tsx | 4 +- .../API/UnsafeEntitiesConfirmModal.tsx | 4 +- .../interfaces/Settings/Addons/Addons.tsx | 8 +- .../Settings/Addons/CustomDomainSidePanel.tsx | 4 +- .../Settings/Database/BannedIPs.tsx | 4 +- .../Database/DatabaseReadOnlyAlert.tsx | 6 +- .../Database/DiskSizeConfiguration.tsx | 10 +- .../Database/DiskSizeConfigurationModal.tsx | 10 +- .../JitDbAccessConfiguration.tsx | 4 +- .../JitDbAccessRulesTable.tsx | 10 +- .../AddRestrictionModal.tsx | 4 +- .../NetworkRestrictions.tsx | 10 +- .../Settings/Database/SSLConfiguration.tsx | 8 +- .../ProjectComplianceMode.tsx | 4 +- .../CustomDomainConfig/CustomDomainConfig.tsx | 4 +- .../CustomDomainConfig/CustomDomainDelete.tsx | 4 +- .../CustomDomainConfig/CustomDomainVerify.tsx | 6 +- .../CustomDomainConfig/DNSTableHeaders.tsx | 4 +- .../Settings/General/DashboardPreferences.tsx | 4 +- .../Infrastructure/PauseProjectButton.tsx | 4 +- .../Infrastructure/ProjectUpgradeAlert.tsx | 6 +- .../Infrastructure/RestartServerButton.tsx | 6 +- .../TransferProjectButton.tsx | 8 +- .../TransferProjectPanel.tsx | 4 +- .../InfrastructureConfiguration/Edge.tsx | 4 +- .../HaInstanceConfiguration.tsx | 6 +- .../HaInstanceNode.tsx | 21 ++-- .../InstanceConfiguration.tsx | 13 +- .../InstanceNode.tsx | 22 ++-- .../InfrastructureConfiguration/MapView.tsx | 4 +- .../ReadReplicas/ReadReplicaDetails.tsx | 4 +- .../ReadReplicas/ReadReplicaRow.tsx | 12 +- .../ReadReplicas/ReadReplicasSection.tsx | 6 +- .../AWSPrivateLinkAttentionAdmonition.tsx | 4 +- .../AWSPrivateLink/AWSPrivateLinkSection.tsx | 4 +- .../GitHubIntegrationConnectionForm.tsx | 4 +- .../GitHubRepositoryField.tsx | 6 +- .../GithubIntegration/GitHubStatus.tsx | 12 +- .../GithubIntegration/GithubSection.tsx | 8 +- .../VercelIntegration/VercelSection.tsx | 6 +- .../Settings/Logs/ErrorCodeDialog.tsx | 4 +- .../interfaces/Settings/Logs/LogSelection.tsx | 8 +- .../interfaces/Settings/Logs/LogTable.tsx | 11 +- .../Settings/Logs/Logs.DatePickers.tsx | 6 +- .../Settings/Logs/Logs.SavedQueriesItem.tsx | 6 +- .../Settings/Logs/LogsFormatters.tsx | 10 +- .../Settings/Logs/LogsPreviewer.tsx | 4 +- .../Settings/Logs/LogsQueryPanel.tsx | 27 ++-- .../Settings/Logs/LogsTableEmptyState.tsx | 4 +- .../Settings/Logs/MultiSelectActionBar.tsx | 16 ++- .../Settings/Logs/PreviewFilterPanel.tsx | 12 +- .../Settings/Logs/RecentQueriesItem.tsx | 4 +- .../Settings/Logs/SidebarV2/SidebarItem.tsx | 4 +- apps/studio/components/interfaces/Sidebar.tsx | 24 ++-- .../interfaces/SignIn/ResetPasswordForm.tsx | 6 +- .../interfaces/SignIn/SignInForm.tsx | 4 +- .../interfaces/SignIn/SignInMfaForm.tsx | 4 +- .../interfaces/SignIn/SignInPartner.tsx | 4 +- .../interfaces/SignIn/SignInSSOForm.tsx | 4 +- .../interfaces/SignIn/SignUpForm.tsx | 4 +- .../AnalyticsBucketDetails/CopyEnvButton.tsx | 4 +- .../CreateTable/CreateTableInstructions.tsx | 4 +- .../CreateTableInstructionsDialog.tsx | 6 +- .../CreateTable/CreateTableSheet.tsx | 8 +- .../DecryptedReadOnlyInput.tsx | 8 +- .../NamespaceWithTables/TableRowComponent.tsx | 30 +++-- .../NamespaceWithTables/index.tsx | 22 ++-- .../AnalyticsBucketDetails/index.tsx | 4 +- .../Storage/AnalyticsBuckets/index.tsx | 6 +- .../BucketFilePickerColumn.tsx | 4 +- .../BucketFilePickerHeader.tsx | 42 +++---- .../BucketFilePickerHeaderSelection.tsx | 4 +- .../BucketFilePickerPreviewPane.tsx | 12 +- .../BucketFilePickerRow.tsx | 6 +- .../Storage/BucketVersioningPill.tsx | 4 +- .../BucketsPickerDialog/BucketTableRow.tsx | 8 +- .../BucketsPickerDialog/BucketsPicker.tsx | 6 +- .../Storage/FilesBuckets/BucketTable.tsx | 4 +- .../interfaces/Storage/FilesBuckets/index.tsx | 8 +- .../interfaces/Storage/NewBucketButton.tsx | 4 +- .../ArchivedFilePreviewPane.tsx | 8 +- .../ArchivedVersionRestoreWidget.tsx | 8 +- .../StorageExplorer/ArchivedVersionRow.tsx | 8 +- .../StorageExplorer/FileExplorerColumn.tsx | 21 ++-- .../StorageExplorer/FileExplorerHeader.tsx | 46 +++---- .../FileExplorerHeaderSelection.tsx | 14 ++- .../StorageExplorer/FileExplorerRow.tsx | 70 +++++------ .../Storage/StorageExplorer/FilePreview.tsx | 4 +- .../StorageExplorer/MoveItemsFolderPicker.tsx | 8 +- .../MoveItemsFolderPickerRow.tsx | 4 +- .../Storage/StorageExplorer/PreviewPane.tsx | 33 +++-- .../StorageExplorer/PreviewSection.tsx | 4 +- .../StorageExplorer/VersionCompareWidget.tsx | 10 +- .../StorageExplorer/VersionHistory.tsx | 8 +- .../VersionHistoryPolicyRow.tsx | 4 +- .../StorageExplorer/VersionThumbnail.tsx | 12 +- .../PolicyEditor/PolicyDefinition.tsx | 6 +- .../PolicyEditorModalTitle.tsx | 6 +- .../StoragePolicies/PolicySelection.tsx | 10 +- .../StoragePoliciesBucketsSection.tsx | 8 +- .../StoragePolicyEditorModalTitle.tsx | 6 +- .../interfaces/Storage/StorageRowIcon.tsx | 27 +++- .../StorageSettings/CreateCredentialModal.tsx | 4 +- .../StorageSettings/StorageCredItem.tsx | 4 +- .../VectorBuckets/CreateVectorTableSheet.tsx | 6 +- .../VectorBucketTableExamplesSheet.tsx | 6 +- .../VectorBucketDetails/index.tsx | 8 +- .../Storage/VectorBuckets/index.tsx | 6 +- .../interfaces/Support/AIAssistantOption.tsx | 4 +- .../interfaces/Support/AttachmentUpload.tsx | 8 +- .../interfaces/Support/ClientLibraryInfo.tsx | 6 +- .../Support/DashboardLogsToggle.tsx | 4 +- .../interfaces/Support/DocsSuggestions.tsx | 8 +- .../Support/IPV4SuggestionAlert.tsx | 6 +- .../interfaces/Support/IncidentAdmonition.tsx | 4 +- .../Support/LinkSupportTicketForm.tsx | 4 +- .../Support/LinkSupportTicketPage.tsx | 6 +- .../interfaces/Support/ProjectAndPlanInfo.tsx | 8 +- .../Support/SubjectAndSuggestionsInfo.tsx | 4 +- .../components/interfaces/Support/Success.tsx | 4 +- .../Support/SupportAccessToggle.tsx | 4 +- .../Support/SupportAssistantSuccessCard.tsx | 4 +- .../interfaces/Support/SupportForm.utils.tsx | 10 +- .../interfaces/Support/SupportFormPage.tsx | 6 +- .../interfaces/Support/SupportSidebarForm.tsx | 4 +- .../DeleteConfirmationDialogs.tsx | 8 +- .../TableGridEditor/GridHeaderActions.tsx | 31 +++-- .../TableGridEditor/InsertButton.tsx | 8 +- .../SecurityDefinerViewPopover.tsx | 6 +- .../ColumnEditor/ColumnEditor.tsx | 6 +- .../ColumnEditor/ColumnType.tsx | 32 +++-- .../ColumnEditor/InputWithSuggestions.tsx | 8 +- .../ForeignKeySelector/ForeignKeySelector.tsx | 14 +-- .../ForeignKeySelector.utils.tsx | 4 +- .../AddRowOperationItem.tsx | 4 +- .../DeleteRowOperationItem.tsx | 4 +- .../OperationQueueSidePanel/OperationItem.tsx | 4 +- .../RowEditor/DateTimeInput/index.tsx | 4 +- .../ForeignRowSelector/ForeignRowSelector.tsx | 8 +- .../ForeignRowSelector/Pagination.tsx | 8 +- .../ForeignRowSelector/SelectorGrid.tsx | 4 +- .../SidePanelEditor/RowEditor/InputField.tsx | 10 +- .../DrilldownViewer/DrilldownBreadCrumbs.tsx | 6 +- .../DrilldownViewer/DrilldownPane.tsx | 4 +- .../RowEditor/JsonEditor/index.tsx | 4 +- .../SpreadSheetFileUpload.tsx | 6 +- .../SpreadSheetImportConfiguration.tsx | 4 +- .../SpreadsheetImport.utils.tsx | 4 +- .../SpreadsheetImportPreview.tsx | 10 +- .../TableEditor/ApiAccessToggle.tsx | 4 +- .../SidePanelEditor/TableEditor/Column.tsx | 14 +-- .../TableEditor/ColumnManagement.tsx | 22 ++-- .../ForeignKeysManagement/ForeignKeyRow.tsx | 4 +- .../UnifiedLogs/ServiceFlow/LogOverview.tsx | 4 +- .../components/PostgresFlowDetail.tsx | 22 ++-- .../components/ServiceFlowPanelControls.tsx | 25 ++-- .../ServiceFlow/config/blockConfigs.ts | 44 +++---- .../interfaces/UnifiedLogs/UnifiedLogs.tsx | 6 +- .../UnifiedLogs/UnifiedLogsBanner.tsx | 6 +- .../components/DownloadLogsButton.tsx | 10 +- .../UnifiedLogs/components/LogFields.tsx | 4 +- .../UnifiedLogs/components/LogTypeIcon.tsx | 16 +-- .../UnifiedLogs/components/LogsFilterBar.tsx | 6 +- .../UnifiedLogs/components/LogsListPanel.tsx | 6 +- .../components/UserLogFilterControl.tsx | 8 +- .../components/interfaces/UserDropdown.tsx | 10 +- .../layouts/AccountLayout/WithSidebar.tsx | 4 +- .../AdvisorsLayout/AdvisorsMenu.utils.tsx | 4 +- .../layouts/AppLayout/AdvisorButton.tsx | 4 +- .../layouts/AppLayout/AppLayoutDropdown.tsx | 6 +- .../BranchDropdownCommandContent.tsx | 10 +- .../layouts/AppLayout/BranchLink.tsx | 6 +- .../BranchingPITRNotice.tsx | 4 +- .../layouts/AppLayout/OrgCommandItem.tsx | 4 +- .../AppLayout/OrganizationDropdown.tsx | 4 +- .../OrganizationDropdownCommandContent.tsx | 6 +- .../layouts/AppLayout/ProjectDropdown.tsx | 8 +- .../layouts/AppLayout/ProjectRowLink.tsx | 4 +- .../layouts/AuthLayout/AuthLayout.utils.ts | 4 +- .../DatabaseLayout/Database.Commands.tsx | 24 ++-- .../EdgeFunctionDetailsLayout.tsx | 14 ++- .../ExplorerLayout.constants.tsx | 6 +- .../layouts/ExplorerLayout/ExplorerLayout.tsx | 18 ++- .../ExplorerLayout/ExplorerNavHeader.tsx | 4 +- .../ExplorerLayout/ExplorerNavHome.tsx | 8 +- .../ExplorerLayout/ExplorerNavItem.tsx | 11 +- .../ExplorerPreferencesDropdown.tsx | 4 +- .../components/layouts/InterstitialLayout.tsx | 4 +- .../layouts/LogsLayout/LogsSidebarMenuV2.tsx | 6 +- .../FloatingMobileToolbar.tsx | 8 +- .../LayoutHeader/AdminStudioButton.tsx | 4 +- .../FeedbackDropdown/FeedbackDropdown.tsx | 6 +- .../FeedbackDropdown/FeedbackWidget.tsx | 10 +- .../Navigation/LayoutHeader/LayoutHeader.tsx | 4 +- .../LayoutHeader/MergeRequestButton.tsx | 4 +- .../NavigationBar/MobileNavigationBar.tsx | 6 +- .../NavigationBar/NavigationBar.utils.tsx | 12 +- .../Navigation/NavigationBar/OrgSelector.tsx | 8 +- .../NavigationBar/OrgSelectorSheet.tsx | 4 +- .../ProjectBranchSelectorSheet.tsx | 10 +- .../ProjectBranchSelectorTrigger.tsx | 6 +- .../ObservabilityLayout/ObservabilityMenu.tsx | 6 +- .../ObservabilityMenuItem.tsx | 8 +- .../components/layouts/OrganizationLayout.tsx | 4 +- .../layouts/PageLayout/PageHeader.tsx | 6 +- .../layouts/ProjectLayout/BuildingState.tsx | 6 +- .../layouts/ProjectLayout/ConnectingState.tsx | 10 +- .../MobileMenuContent/MobileMenuContent.tsx | 4 +- .../MobileMenuContent/OrgMenuContent.tsx | 24 ++-- .../ProjectLayout/PauseFailedState.tsx | 8 +- .../PausedState/DownloadBackupsSection.tsx | 4 +- .../PausedState/PauseDisabledState.tsx | 6 +- .../PausedState/ProjectPausedState.tsx | 8 +- .../layouts/ProjectLayout/PausingState.tsx | 8 +- .../layouts/ProjectLayout/ResizingState.tsx | 4 +- .../layouts/ProjectLayout/RestartingState.tsx | 4 +- .../ProjectLayout/RestoreFailedState.tsx | 8 +- .../layouts/ProjectLayout/RestoringState.tsx | 8 +- .../layouts/ProjectLayout/UnhealthyState.tsx | 4 +- .../ProjectLayout/UpgradingState/index.tsx | 28 ++--- .../ProjectNeedsSecuringView.tsx | 12 +- .../SettingsMenu.utils.tsx | 14 +-- .../PrivateSqlSnippetEmpty.tsx | 4 +- .../layouts/SQLEditorLayout/SQLEditorMenu.tsx | 12 +- .../ReferenceSnippetsSection.tsx | 4 +- .../SQLEditorNavV2/SQLEditorNav.tsx | 4 +- .../SQLEditorNavV2/SQLEditorTreeViewItem.tsx | 48 +++---- .../SQLEditorNavV2/SearchList.tsx | 4 +- .../SQLEditorNavV2/ShareSnippetModal.tsx | 6 +- .../SQLEditorLayout/SqlEditor.Commands.tsx | 12 +- .../TableEditorLayout/EntityListItem.tsx | 40 +++--- .../TableEditor.Commands.tsx | 6 +- .../TableEditorLayout/TableEditorMenu.tsx | 6 +- .../TableEditorLayout/TableMenuEmptyState.tsx | 4 +- .../layouts/Tabs/CollapseButton.tsx | 6 +- .../studio/components/layouts/Tabs/NewTab.tsx | 4 +- .../components/layouts/Tabs/SortableTab.tsx | 4 +- apps/studio/components/layouts/Tabs/Tabs.tsx | 8 +- .../components/to-be-cleaned/ListIcons.tsx | 4 +- .../to-be-cleaned/ProductEmptyState.tsx | 4 +- .../AIAssistantPanel/AIAssistant.prompts.ts | 24 ++-- .../AIAssistantChatSelector.tsx | 16 +-- .../ui/AIAssistantPanel/AIAssistantHeader.tsx | 28 ++--- .../ui/AIAssistantPanel/AIOnboarding.tsx | 4 +- .../ui/AIAssistantPanel/AssistantChat.tsx | 8 +- .../ui/AIAssistantPanel/AssistantChatForm.tsx | 12 +- .../AssistantNotebookPreview.tsx | 4 +- .../AssistantNotebookPreviewCell.tsx | 8 +- .../AIAssistantPanel/CollapsibleCodeBlock.tsx | 6 +- .../ui/AIAssistantPanel/Confirm.tsx | 6 +- .../ui/AIAssistantPanel/Message.Actions.tsx | 24 ++-- .../ui/AIAssistantPanel/Message.Parts.tsx | 10 +- .../AIAssistantPanel/MessagePartQueryLogs.tsx | 4 +- .../ui/AIAssistantPanel/ModelSelector.tsx | 6 +- .../NotebookProposalRenderer.tsx | 6 +- .../AIAssistantPanel/NotebookRunRenderer.tsx | 4 +- .../ui/AIAssistantPanel/SnippetRow.tsx | 4 +- .../SupportAssistantSuccessCardContent.tsx | 6 +- .../SupportRequestMessage.tsx | 4 +- .../AIAssistantPanel/elements/ToolGroup.tsx | 4 +- .../ui/AdvisorPanel/AdvisorFilters.tsx | 4 +- .../ui/AdvisorPanel/AdvisorPanel.utils.ts | 10 +- .../ui/AdvisorPanel/AdvisorPanelBody.tsx | 8 +- .../ui/AdvisorPanel/AdvisorPanelHeader.tsx | 6 +- .../ui/AdvisorPanel/AdvisorSignalDetail.tsx | 6 +- .../ui/AdvisorPanel/EmptyAdvisor.tsx | 4 +- .../ui/AdvisorPanel/NotificationDetail.tsx | 6 +- .../components/ui/AiAssistantDropdown.tsx | 6 +- apps/studio/components/ui/AlphaNotice.tsx | 4 +- .../components/ui/AutoEnableRLSNotice.tsx | 6 +- .../components/ui/BannerStack/BannerCard.tsx | 4 +- .../Banners/BannerIndexAdvisor.tsx | 4 +- apps/studio/components/ui/CardButton.tsx | 10 +- .../components/ui/Charts/ChartHeader.tsx | 8 +- .../ui/Charts/ChartHighlightActions.tsx | 4 +- .../ui/Charts/ComposedChartHandler.tsx | 6 +- .../ui/Charts/NoDataPlaceholder.tsx | 4 +- .../components/ui/Charts/ReportSettings.tsx | 4 +- .../components/ui/CodeEditor/CodeEditor.tsx | 4 +- apps/studio/components/ui/CopyButton.tsx | 6 +- .../ui/DataGridResults/ResultCell.tsx | 4 +- .../components/ui/DataGridResults/index.tsx | 6 +- .../ui/DataTable/CollapsibleDetailSection.tsx | 4 +- .../DataTableColumnStatusCode.tsx | 4 +- .../DataTableFilterCheckbox.tsx | 6 +- .../DataTableFilterCheckboxAsync.tsx | 8 +- .../DataTableFilters/DataTableFilterInput.tsx | 4 +- .../DataTableFilterResetButton.tsx | 4 +- .../ui/DataTable/DataTableInfinite.tsx | 6 +- .../ui/DataTable/DataTableResetButton.tsx | 4 +- .../ui/DataTable/DataTableSheetRowAction.tsx | 34 ++--- .../ui/DataTable/DataTableViewOptions.tsx | 6 +- .../components/ui/DataTable/LiveButton.tsx | 6 +- .../components/ui/DataTable/RefreshButton.tsx | 6 +- .../studio/components/ui/DatabaseSelector.tsx | 12 +- .../studio/components/ui/DatePicker/index.tsx | 6 +- apps/studio/components/ui/DateRangePicker.tsx | 4 +- apps/studio/components/ui/DocsButton.tsx | 4 +- .../components/ui/DownloadResultsButton.tsx | 16 +-- .../EdgeFunctionBlock/EdgeFunctionBlock.tsx | 4 +- .../components/ui/EditorPanel/EditorPanel.tsx | 28 ++--- apps/studio/components/ui/EntityTypeIcon.tsx | 28 ++--- .../ClientSideExceptionHandler.tsx | 4 +- .../ui/ErrorBoundary/ErrorBoundary.tsx | 4 +- .../InsertBeforeRemoveChildErrorHandler.tsx | 6 +- .../ui/ErrorCodeTooltip/ErrorCodeTooltip.tsx | 4 +- apps/studio/components/ui/FeatureBanner.tsx | 4 +- .../components/ui/FeaturePreviewBadge.tsx | 4 +- .../FileExplorerAndEditorRow.tsx | 8 +- .../ui/FileExplorerAndEditor/index.tsx | 4 +- apps/studio/components/ui/FilterPopover.tsx | 6 +- .../studio/components/ui/FunctionSelector.tsx | 6 +- .../ShortcutsReferenceSheet.tsx | 4 +- .../components/ui/HelpPanel/HelpButton.tsx | 4 +- .../ui/HelpPanel/HelpOptionsList.tsx | 12 +- .../components/ui/HelpPanel/HelpPanel.tsx | 6 +- .../HighAvailabilityDisabledEmptyState.tsx | 4 +- apps/studio/components/ui/InformationBox.tsx | 8 +- .../ui/Logs/ChartIntervalDropdown.tsx | 4 +- .../components/ui/Logs/LogsExplorerHeader.tsx | 29 +++-- .../ui/OrganizationProjectSelector.tsx | 6 +- .../ProjectCommandItem.tsx | 6 +- apps/studio/components/ui/Panel.tsx | 4 +- .../components/ui/PartnerManagedResource.tsx | 4 +- .../ui/ProjectSettings/DisplayApiSettings.tsx | 10 +- .../ui/ProjectUpgradeFailedBanner.tsx | 4 +- .../ui/QueryBlock/BlockViewConfiguration.tsx | 8 +- .../ui/QueryBlock/EditQueryButton.tsx | 8 +- .../components/ui/QueryBlock/QueryBlock.tsx | 6 +- .../components/ui/ReactFlow/EdgeVisual.tsx | 10 +- .../components/ui/Resource/ResourceItem.tsx | 6 +- .../ResourceExhaustionWarningBanner.tsx | 23 ++-- apps/studio/components/ui/SchemaSelector.tsx | 8 +- apps/studio/components/ui/SortDropdown.tsx | 6 +- apps/studio/components/ui/SortableSection.tsx | 4 +- apps/studio/components/ui/org-selector.tsx | 4 +- apps/studio/eslint.config.cjs | 8 ++ apps/studio/lib/sign-in-destinations.tsx | 4 +- apps/studio/pages/account/tokens.tsx | 8 +- apps/studio/pages/cli/login.tsx | 4 +- apps/studio/pages/maintenance.tsx | 8 +- .../pages/org/[slug]/private-apps/index.tsx | 4 +- apps/studio/pages/organizations.tsx | 6 +- .../pages/partners/stripe/projects/login.tsx | 4 +- .../project/[ref]/branches/merge-requests.tsx | 12 +- .../pages/project/[ref]/compute/index.tsx | 6 +- .../project/[ref]/database/backups/pitr.tsx | 6 +- .../[ref]/database/backups/scheduled.tsx | 6 +- .../[ref]/database/column-privileges.tsx | 6 +- .../pages/project/[ref]/database/indexes.tsx | 4 +- .../pages/project/[ref]/database/policies.tsx | 6 +- .../[ref]/functions/[functionSlug]/code.tsx | 8 +- .../pages/project/[ref]/functions/index.tsx | 14 ++- .../pages/project/[ref]/functions/new.tsx | 8 +- .../project/[ref]/integrations/index.tsx | 4 +- .../project/[ref]/logs/explorer/recent.tsx | 4 +- .../project/[ref]/logs/explorer/saved.tsx | 4 +- apps/studio/pages/project/[ref]/merge.tsx | 6 +- .../project/[ref]/observability/auth.tsx | 6 +- .../[ref]/observability/connections.tsx | 4 +- .../project/[ref]/observability/database.tsx | 8 +- .../[ref]/observability/edge-functions.tsx | 6 +- .../project/[ref]/observability/postgrest.tsx | 6 +- .../project/[ref]/observability/realtime.tsx | 6 +- .../project/[ref]/observability/storage.tsx | 6 +- .../infrastructure/replica/[replicaId].tsx | 6 +- .../project/[ref]/settings/log-drains.tsx | 4 +- .../storage/files/buckets/[bucketId].tsx | 12 +- 848 files changed, 3947 insertions(+), 3401 deletions(-) diff --git a/apps/studio/AGENTS.md b/apps/studio/AGENTS.md index d007e5dc2bd..19fb5459f2d 100644 --- a/apps/studio/AGENTS.md +++ b/apps/studio/AGENTS.md @@ -83,7 +83,7 @@ Older Studio code predates some of these conventions. For new or modified code, - **Permissions**: `useAsyncCheckPermissions` from `hooks/misc/useCheckPermissions` (returns `can: true` when self-hosted). - **Gating**: `useIsFeatureEnabled` for product features, `useFlag` from `'common'` for feature flags — two different systems. - **Dates**: `dayjs` (plugins pre-loaded at both entries, `pages/_app.tsx` and `routes/__root.tsx`), not `date-fns`. **Toasts**: `toast` from `'sonner'`. -- **Import split**: `'ui'` = primitives, `'ui-patterns'` = composed patterns (`ConfirmationModal`, …), `@ui/*` = alias into `packages/ui/src`. Icons come from `lucide-react`. +- **Import split**: `'ui'` = primitives, `'ui-patterns'` = composed patterns (`ConfirmationModal`, …), `@ui/*` = alias into `packages/ui/src`. Icons come from `lucide-react`, always imported with the `Icon` suffix (`import { CheckIcon, Trash2Icon } from 'lucide-react'`) — never the bare names (`Check`) or `Check as CheckIcon` aliases (lint-enforced). - **New tables** use `@tanstack/react-table`; `react-data-grid` is banned for new code. - **Ad-hoc SQL** against the user's database goes through `executeSql` / `useExecuteSqlMutation` (`data/sql/execute-sql-mutation`). - **Confirmations**: `ConfirmationModal` / `TextConfirmModal` from `ui-patterns`, never `window.confirm`. Disabled buttons needing an explanation use `ButtonTooltip`; inline warnings use `Admonition`. diff --git a/apps/studio/components/grid/components/editor/DateTimeEditor.tsx b/apps/studio/components/grid/components/editor/DateTimeEditor.tsx index 2ffc0353016..ad4ea1b20f3 100644 --- a/apps/studio/components/grid/components/editor/DateTimeEditor.tsx +++ b/apps/studio/components/grid/components/editor/DateTimeEditor.tsx @@ -1,5 +1,5 @@ import dayjs from 'dayjs' -import { ChevronDown } from 'lucide-react' +import { ChevronDownIcon } from 'lucide-react' import { useEffect, useRef, useState } from 'react' import type { RenderEditCellProps } from 'react-data-grid' import { @@ -153,7 +153,7 @@ function BaseEditor({ @@ -119,14 +119,14 @@ function ColumnIcon({ return ( - +

Foreign key relation:

{name}

- +

{foreignKey?.targetTableSchema}.{foreignKey?.targetTableName}. {foreignKey?.targetColumnName} diff --git a/apps/studio/components/grid/components/grid/ColumnOverlayItem.tsx b/apps/studio/components/grid/components/grid/ColumnOverlayItem.tsx index f48b9cedb47..45cf40cb7d2 100644 --- a/apps/studio/components/grid/components/grid/ColumnOverlayItem.tsx +++ b/apps/studio/components/grid/components/grid/ColumnOverlayItem.tsx @@ -1,4 +1,4 @@ -import { Key, Lightbulb, Link, Lock } from 'lucide-react' +import { KeyIcon, LightbulbIcon, LinkIcon, LockIcon } from 'lucide-react' import { useColumnHasIndexSuggestion } from '../../context/TableIndexAdvisorContext' import { ColumnType, SupaColumn } from '../../types' @@ -23,7 +23,7 @@ export function ColumnOverlayItem({ column }: ColumnOverlayItemProps) { {column.isPrimaryKey && (

- +
)} @@ -33,8 +33,10 @@ export function ColumnOverlayItem({ column }: ColumnOverlayItemProps) { {columnFormat} {columnFormat === 'bytea' ? ` (hex)` : ''} - {column.isEncrypted && } - {hasIndexSuggestion && } + {column.isEncrypted && } + {hasIndexSuggestion && ( + + )}
) @@ -44,7 +46,7 @@ function ColumnIcon({ type }: { type: ColumnType }) { switch (type) { case 'foreign_key': // [Joshen] Look into this separately but this should be a hover card instead - return + return default: return null } diff --git a/apps/studio/components/grid/components/grid/GridError.tsx b/apps/studio/components/grid/components/grid/GridError.tsx index f9bcd007a68..39b5f4c83f8 100644 --- a/apps/studio/components/grid/components/grid/GridError.tsx +++ b/apps/studio/components/grid/components/grid/GridError.tsx @@ -1,6 +1,6 @@ import { useQueryClient } from '@tanstack/react-query' import { useParams } from 'common' -import { ChevronDown } from 'lucide-react' +import { ChevronDownIcon } from 'lucide-react' import { useCallback } from 'react' import { Button, Collapsible, CollapsibleContent, CollapsibleTrigger } from 'ui' import { Admonition } from 'ui-patterns/Admonition' @@ -224,7 +224,7 @@ const ExpandError = ({ error }: { error: ResponseError }) => {
View error - +
diff --git a/apps/studio/components/grid/components/grid/SelectColumn.tsx b/apps/studio/components/grid/components/grid/SelectColumn.tsx index 3434f3845d1..8a4360e2c55 100644 --- a/apps/studio/components/grid/components/grid/SelectColumn.tsx +++ b/apps/studio/components/grid/components/grid/SelectColumn.tsx @@ -1,4 +1,4 @@ -import { Maximize2 } from 'lucide-react' +import { Maximize2Icon } from 'lucide-react' import { ChangeEvent, InputHTMLAttributes, SyntheticEvent, useEffect, useRef } from 'react' import { CalculatedColumn, @@ -150,7 +150,7 @@ function SelectCellFormatter({ variant="text" size="tiny" className="px-1 rdg-row__select-column__edit-action" - icon={} + icon={} onClick={onEditClick} tooltip={{ content: { diff --git a/apps/studio/components/grid/components/header/Header.tsx b/apps/studio/components/grid/components/header/Header.tsx index ea8fc957635..e09d4d1d39f 100644 --- a/apps/studio/components/grid/components/header/Header.tsx +++ b/apps/studio/components/grid/components/header/Header.tsx @@ -1,6 +1,6 @@ import { keepPreviousData } from '@tanstack/react-query' import { useBreakpoint, useParams } from 'common' -import { ChevronDown, Trash } from 'lucide-react' +import { ChevronDownIcon, TrashIcon } from 'lucide-react' import { AnimatePresence, motion } from 'motion/react' import { ReactNode, useEffect, useRef, useState } from 'react' import { toast } from 'sonner' @@ -354,7 +354,7 @@ const RowHeader = ({ rows: visibleRows, tableQueriesEnabled = true }: RowHeaderP {!snap.allRowsSelected ? ( - @@ -381,7 +381,7 @@ const RowHeader = ({ rows: visibleRows, tableQueriesEnabled = true }: RowHeaderP - @@ -433,7 +433,7 @@ const RowHeader = ({ rows: visibleRows, tableQueriesEnabled = true }: RowHeaderP } + icon={} onClick={onRowsDelete} disabled={snap.allRowsSelected && isImpersonatingRole} tooltip={{ diff --git a/apps/studio/components/grid/components/header/RefreshButton.tsx b/apps/studio/components/grid/components/header/RefreshButton.tsx index 5c9cdf67f89..04cd9d08a49 100644 --- a/apps/studio/components/grid/components/header/RefreshButton.tsx +++ b/apps/studio/components/grid/components/header/RefreshButton.tsx @@ -1,6 +1,6 @@ import { useQueryClient } from '@tanstack/react-query' import { useParams } from 'common' -import { RefreshCw } from 'lucide-react' +import { RefreshCwIcon } from 'lucide-react' import { Button } from 'ui' import { useTableIndexAdvisor } from '@/components/grid/context/TableIndexAdvisorContext' @@ -34,7 +34,7 @@ export const RefreshButton = ({ tableId, isRefetching }: RefreshButtonProps) => @@ -292,7 +292,7 @@ export const SortPopoverPrimitive = ({
@@ -63,7 +63,7 @@ const SortRow = ({ index, columnName, sort, onDelete, onToggle }: SortRowProps)
diff --git a/apps/studio/components/interfaces/APIKeys/CreatePublishableAPIKeyDialog.tsx b/apps/studio/components/interfaces/APIKeys/CreatePublishableAPIKeyDialog.tsx index 12ec00d3f4e..99493b1e13d 100644 --- a/apps/studio/components/interfaces/APIKeys/CreatePublishableAPIKeyDialog.tsx +++ b/apps/studio/components/interfaces/APIKeys/CreatePublishableAPIKeyDialog.tsx @@ -1,5 +1,5 @@ import { zodResolver } from '@hookform/resolvers/zod' -import { Plus } from 'lucide-react' +import { PlusIcon } from 'lucide-react' import { useParams } from 'next/navigation' import { parseAsString, useQueryState } from 'nuqs' import { useRef } from 'react' @@ -86,7 +86,7 @@ export const CreatePublishableAPIKeyDialog = () => { side="bottom" tooltipOpen={visible === 'publishable' ? false : undefined} > - diff --git a/apps/studio/components/interfaces/APIKeys/CreateSecretAPIKeyDialog.tsx b/apps/studio/components/interfaces/APIKeys/CreateSecretAPIKeyDialog.tsx index 57a57d64f8f..c4d7284c348 100644 --- a/apps/studio/components/interfaces/APIKeys/CreateSecretAPIKeyDialog.tsx +++ b/apps/studio/components/interfaces/APIKeys/CreateSecretAPIKeyDialog.tsx @@ -1,6 +1,6 @@ import { zodResolver } from '@hookform/resolvers/zod' import { useParams } from 'common' -import { Plus, ShieldCheck } from 'lucide-react' +import { PlusIcon, ShieldCheckIcon } from 'lucide-react' import { parseAsString, useQueryState } from 'nuqs' import { useRef } from 'react' import { useForm, type SubmitHandler } from 'react-hook-form' @@ -92,7 +92,7 @@ export const CreateSecretAPIKeyDialog = () => { side="bottom" tooltipOpen={visible === 'secret' ? false : undefined} > - @@ -148,7 +148,7 @@ export const CreateSecretAPIKeyDialog = () => { - + Securing your API key