From 56de26fe22e5923fe5376b1f45cae87cbd162411 Mon Sep 17 00:00:00 2001 From: Ivan Vasilov Date: Thu, 30 Apr 2026 13:53:24 +0300 Subject: [PATCH] chore: Migrate the monorepo to use Tailwind v4 (#45318) This PR migrates the whole monorepo to use Tailwind v4: - Removed `@tailwindcss/container-queries` plugin since it's included by default in v4, - Bump all instances of Tailwind to v4. Made minimal changes to the shared config to remove non-supported features (`alpha` mentions), - Migrate all apps to be compatible with v4 configs, - Fix the `typography.css` import in 3 apps, - Add missing rules which were included by default in v3, - Run `pnpm dlx @tailwindcss/upgrade` on all apps, which renames a lot of classes - Rename all misnamed classes according to https://tailwindcss.com/docs/upgrade-guide#renamed-utilities in all apps. --------- Co-authored-by: Jordi Enric --- .../default/block/chart-composed-metrics.tsx | 4 +- apps/design-system/app/layout.tsx | 2 +- apps/design-system/components/class-label.tsx | 2 +- .../components/code-block-wrapper.tsx | 2 +- .../components/code-fragment.tsx | 6 +- apps/design-system/components/colors.tsx | 2 +- .../design-system/components/command-menu.tsx | 4 +- .../components/component-preview.tsx | 14 +- apps/design-system/components/grid.tsx | 4 +- apps/design-system/components/icons.tsx | 7 +- .../components/mdx-components.tsx | 13 +- .../components/theme-switcher-dropdown.tsx | 2 +- .../components/top-navigation.tsx | 2 +- .../content/docs/components/chart.mdx | 2 +- .../content/docs/components/field.mdx | 22 +- .../content/docs/components/form.mdx | 2 +- .../content/docs/components/sidebar.mdx | 6 +- .../content/docs/components/typography.mdx | 2 +- apps/design-system/package.json | 3 +- .../default/block/chart-composed-metrics.tsx | 4 +- .../example/assistant-chat-commands.tsx | 2 +- .../default/example/chart-tooltip-demo.tsx | 18 +- .../color-usage-surface-studio-frame.tsx | 10 +- .../default/example/command-dialog.tsx | 2 +- .../default/example/data-grid-demo.tsx | 5 +- .../default/example/data-grid-empty-state.tsx | 5 +- .../registry/default/example/field-hear.tsx | 6 +- .../example/form-patterns-pagelayout.tsx | 2 +- .../example/form-patterns-sidepanel.tsx | 4 +- .../default/example/inner-side-menu-empty.tsx | 2 +- .../default/example/navigation-menu-demo.tsx | 4 +- .../example/navigation-menu-responsive.tsx | 4 +- .../example/scroll-area-horizontal-demo.tsx | 2 +- .../registry/default/example/toc-demo.tsx | 2 +- .../default/example/toc-single-demo.tsx | 2 +- .../default/example/typography-demo.tsx | 34 +- .../example/typography-inline-code.tsx | 2 +- .../registry/default/example/typography-p.tsx | 2 +- .../default/example/typography-table.tsx | 16 +- apps/design-system/styles/globals.css | 12 +- apps/design-system/styles/mdx.css | 2 + apps/design-system/tailwind.config.js | 2 +- apps/docs/app/graphiql/page.tsx | 2 +- .../database/database-advisors/page.tsx | 2 +- .../deployment/terraform/reference/page.tsx | 4 +- apps/docs/app/guides/troubleshooting/page.tsx | 2 +- .../AuthSmsProviderConfig.tsx | 6 +- .../components/BodyContentTypeDropdown.tsx | 2 +- apps/docs/components/ButtonCard.tsx | 2 +- apps/docs/components/Feedback/Feedback.tsx | 12 +- apps/docs/components/HomePageCover.tsx | 2 +- .../NavigationMenu/GlobalMobileMenu.tsx | 16 +- .../NavigationMenu/GlobalNavigationMenu.tsx | 10 +- .../NavigationMenu/NavigationMenuCliList.tsx | 2 +- .../NavigationMenuRefListItems.tsx | 2 +- .../Navigation/NavigationMenu/TopNavBar.tsx | 12 +- .../NavigationMenu/TopNavDropdown.tsx | 2 +- apps/docs/components/Navigation/SideBar.tsx | 10 +- apps/docs/components/RefVersionDropdown.tsx | 2 +- apps/docs/components/RegionsList.tsx | 4 +- apps/docs/components/StepHike/index.tsx | 2 +- apps/docs/components/Table.tsx | 2 +- .../docs/content/guides/auth/signing-keys.mdx | 24 +- .../docs/content/guides/database/orioledb.mdx | 4 +- .../content/guides/database/partitions.mdx | 2 +- .../branching/github-integration.mdx | 2 +- .../guides/getting-started/api-keys.mdx | 8 +- .../guides/platform/project-transfer.mdx | 4 +- .../content/guides/platform/read-replicas.mdx | 2 +- .../docs/content/guides/queues/quickstart.mdx | 6 +- .../docs/content/guides/telemetry/metrics.mdx | 2 +- .../telemetry/metrics/grafana-cloud.mdx | 2 +- .../telemetry/metrics/grafana-self-hosted.mdx | 2 +- .../telemetry/metrics/vendor-agnostic.mdx | 2 +- .../self-hosting-functions/introduction.mdx | 2 +- .../features/directives/CodeSample.client.tsx | 2 +- .../directives/CodeTabs.components.tsx | 2 +- .../docs/features/docs/Reference.sections.tsx | 16 +- apps/docs/features/docs/Reference.ui.tsx | 33 +- .../features/docs/Troubleshooting.page.tsx | 4 +- .../docs/Troubleshooting.ui.client.tsx | 7 +- .../docs/features/docs/Troubleshooting.ui.tsx | 2 +- .../ui/CodeBlock/CodeBlock.client.tsx | 2 +- apps/docs/features/ui/InfoTooltip.tsx | 6 +- apps/docs/layouts/MainSkeleton.tsx | 14 +- apps/docs/layouts/ref/RefSubLayout.tsx | 2 +- apps/docs/package.json | 1 - apps/docs/styles/main.css | 18 +- apps/docs/styles/prism-okaidia.css | 1 + apps/docs/tailwind.config.cjs | 1 - apps/learn/components/command.tsx | 2 +- apps/learn/components/course-hero.tsx | 4 +- apps/learn/components/mdx-components.tsx | 9 +- .../components/theme-switcher-dropdown.tsx | 2 +- apps/learn/components/what-will-i-learn.tsx | 8 +- apps/learn/package.json | 5 +- apps/learn/styles/globals.css | 6 +- apps/learn/styles/mdx.css | 2 + apps/lite-studio/app/app.css | 6 +- apps/lite-studio/app/root.tsx | 1 - apps/lite-studio/package.json | 1 - .../grid/components/editor/DateTimeEditor.tsx | 8 +- .../grid/components/editor/JsonEditor.tsx | 6 +- .../grid/components/editor/TextEditor.tsx | 4 +- .../formatter/ReferenceRecordPeek.tsx | 2 +- .../grid/components/grid/ColumnHeader.tsx | 12 +- .../components/grid/ColumnOverlayItem.tsx | 2 +- .../components/grid/components/grid/Grid.tsx | 2 +- .../grid/components/grid/GridError.tsx | 8 +- .../grid/components/header/Header.tsx | 8 +- .../grid/components/menu/RowContextMenu.tsx | 2 +- .../grid/context/TableIndexAdvisorContext.tsx | 2 +- .../interfaces/APIKeys/APIKeyRow.tsx | 2 +- .../APIKeys/ApiKeysIllustrations.tsx | 12 +- .../APIKeys/CreateNewAPIKeysButton.tsx | 2 +- .../interfaces/APIKeys/SecretAPIKeys.tsx | 2 +- .../TokenPermissionSection.tsx | 2 +- .../AccessTokenTable/TableContainer.tsx | 2 +- .../Scoped/NewScopedTokenSheet.tsx | 4 +- .../AccessTokens/Scoped/ViewTokenSheet.tsx | 2 +- .../interfaces/Account/AuditLogs.tsx | 10 +- .../Preferences/DeleteAccountButton.tsx | 2 +- .../Account/TOTPFactors/AddNewFactorModal.tsx | 2 +- .../interfaces/Advisors/AdvisorRuleItem.tsx | 4 +- .../interfaces/Advisors/AdvisorRules.tsx | 2 +- .../Advisors/AdvisorRules.utils.tsx | 2 +- .../ContextSearchResults.shared.tsx | 8 +- .../App/CommandMenu/CreateCommands.tsx | 2 +- .../FeaturePreview/AdvisorRulesPreview.tsx | 4 +- .../App/FeaturePreview/CLSPreview.tsx | 4 +- .../FeaturePreview/FeaturePreviewModal.tsx | 8 +- .../FeaturePreview/InlineEditorPreview.tsx | 2 +- .../App/FeaturePreview/PgDeltaDiffPreview.tsx | 2 +- .../App/FeaturePreview/RLSTesterPreview.tsx | 4 +- .../App/FeaturePreview/UnifiedLogsPreview.tsx | 4 +- .../interfaces/Auth/AuditLogsForm.tsx | 2 +- .../AuthProvidersForm.constants.ts | 2 +- .../CreateOrUpdateCustomProviderSheet.tsx | 2 +- .../CustomAuthProvidersList.tsx | 4 +- .../Auth/EmailTemplates/SpamValidation.tsx | 2 +- .../Auth/EmailTemplates/TemplateEditor.tsx | 6 +- .../interfaces/Auth/Hooks/HookCard.tsx | 2 +- .../OAuthApps/CreateOrUpdateOAuthAppSheet.tsx | 2 +- .../Auth/OAuthApps/OAuthAppsList.tsx | 4 +- .../Auth/Overview/OverviewMetrics.tsx | 6 +- .../PolicyEditorPanelHeader.tsx | 6 +- .../PolicyEditorPanel/PolicyTemplates.tsx | 6 +- .../PolicyEditorPanel/RLSCodeEditor.tsx | 4 +- .../Auth/Policies/PolicyEditorPanel/index.tsx | 6 +- .../Auth/Policies/PolicySelection.tsx | 4 +- .../Policies/PolicyTableRow/PolicyRow.tsx | 2 +- .../Auth/RLSTester/RLSTableCard.tsx | 6 +- .../Auth/RLSTester/RLSTesterResults.tsx | 24 +- .../Auth/RLSTester/RLSTesterSheet.tsx | 4 +- .../Auth/RLSTester/UserSelector.tsx | 2 +- .../Auth/RedirectUrls/AddNewURLModal.tsx | 2 +- .../Auth/RedirectUrls/ValueContainer.tsx | 2 +- .../ThirdPartyAuthForm/IntegrationCard.tsx | 2 +- .../Auth/ThirdPartyAuthForm/index.tsx | 2 +- .../interfaces/Auth/Users/AddUserDropdown.tsx | 2 +- .../interfaces/Auth/Users/UserLogs.tsx | 2 +- .../interfaces/Auth/Users/UserOverview.tsx | 6 +- .../interfaces/Auth/Users/UserPanel.tsx | 6 +- .../interfaces/Auth/Users/Users.utils.tsx | 2 +- .../Auth/Users/UsersGridComponents.tsx | 2 +- .../interfaces/Auth/Users/UsersSearch.tsx | 4 +- .../interfaces/Auth/Users/UsersV2.tsx | 6 +- .../Billing/NoProjectsOnPaidOrgInfo.tsx | 2 +- .../Payment/AddNewPaymentMethodModal.tsx | 6 +- .../Billing/Payment/AddPaymentMethodForm.tsx | 10 +- .../Payment/PaymentMethods/CreditCard.tsx | 2 +- .../BranchManagement/BranchPanels.tsx | 4 +- .../BranchManagement/DatabaseDiffPanel.tsx | 2 +- .../BranchManagement/WorkflowLogs.tsx | 2 +- .../BranchManagement/WorkflowLogsCard.tsx | 6 +- .../interfaces/Connect/ConnectionPanel.tsx | 16 +- .../Connect/ConnectionParameters.tsx | 6 +- .../Connect/DatabaseConnectionString.tsx | 8 +- .../ConnectSheet/ConnectConfigSection.tsx | 2 +- .../ConnectSheet/ConnectSheetStep.tsx | 2 +- .../ConnectSheet/ConnectionParameters.tsx | 2 +- .../ConnectSheet/CopyPromptAdmonition.tsx | 2 +- .../ConnectSheet/FrameworkSelector.tsx | 2 +- .../direct-connection/IPv4StatusPanel.tsx | 14 +- .../mcp/claude-code/authenticate/content.tsx | 2 +- .../steps/mcp/codex/verify/content.tsx | 4 +- .../Database/Backups/BackupItem.tsx | 2 +- .../Database/Backups/BackupsList.tsx | 2 +- .../Database/Backups/PITR/PITRForm.tsx | 6 +- .../Database/Backups/PITR/PITRNotice.tsx | 2 +- .../Database/Backups/PITR/TimeInput.tsx | 6 +- .../RestoreToNewProject/BackupsList.tsx | 2 +- .../CreateEnumeratedTypeSidePanel.tsx | 2 +- .../EditEnumeratedTypeSidePanel.tsx | 2 +- .../EnumeratedTypeValueRow.tsx | 2 +- .../Extensions/ExtensionCardSkeleton.tsx | 2 +- .../Database/Extensions/Extensions.tsx | 4 +- .../CreateFunction/CreateFunctionHeader.tsx | 2 +- .../CreateFunction/FunctionEditor.tsx | 2 +- .../Functions/CreateFunction/index.tsx | 6 +- .../Database/Hooks/FormContents.tsx | 12 +- .../interfaces/Database/Hooks/HTTPHeaders.tsx | 4 +- .../Database/Hooks/HTTPParameters.tsx | 4 +- .../Database/Hooks/HTTPRequestConfig.tsx | 6 +- .../Database/Hooks/HooksList/SchemaTable.tsx | 2 +- .../Database/Indexes/CreateIndexSidePanel.tsx | 10 +- .../interfaces/Database/Indexes/Indexes.tsx | 2 +- .../Database/Migrations/Migrations.tsx | 2 +- .../Database/ProtectedSchemaWarning.tsx | 2 +- .../DestinationForm/AdvancedSettings.tsx | 2 +- .../DestinationPanelFields.tsx | 2 +- .../DestinationForm/PublicationSelection.tsx | 2 +- .../ValidationFailuresSection.tsx | 2 +- .../DestinationForm/index.tsx | 2 +- .../DestinationPanel/DestinationPanel.tsx | 4 +- .../DestinationTypeSelection.tsx | 2 +- .../ReadReplicaForm/index.tsx | 4 +- .../Replication/EnableReplicationCallout.tsx | 6 +- .../Replication/ErrorDetailsDialog.tsx | 4 +- .../ReadReplicas/ReadReplicaDetails.tsx | 2 +- .../Replication/ReplicationDiagram/Edges.tsx | 4 +- .../Replication/ReplicationDiagram/Nodes.tsx | 4 +- .../Replication/ReplicationDiagram/index.tsx | 4 +- .../ReplicationPipelineStatus.tsx | 10 +- .../SlotLagMetrics.tsx | 2 +- .../Replication/UpdateVersionModal.tsx | 4 +- .../PreviousRestoreItem.tsx | 4 +- .../interfaces/Database/Roles/RoleRow.tsx | 6 +- .../Database/Roles/RoleRowSkeleton.tsx | 4 +- .../interfaces/Database/Roles/RolesList.tsx | 2 +- .../Database/Schemas/DefaultEdge.tsx | 2 +- .../Database/Schemas/SchemaGraph.tsx | 8 +- .../Database/Schemas/SchemaTableNode.tsx | 11 +- .../interfaces/Database/Tables/ColumnList.tsx | 4 +- .../interfaces/Database/Tables/TableList.tsx | 4 +- .../Database/Triggers/ChooseFunctionForm.tsx | 6 +- .../Database/Triggers/TriggerSheet.tsx | 8 +- .../DiskManagement/DiskManagementForm.tsx | 6 +- .../DiskManagementReviewAndSubmitDialog.tsx | 6 +- .../fields/ComputeSizeField.tsx | 4 +- .../fields/StorageTypeField.tsx | 2 +- .../DiskManagement/ui/BillingChangeBadge.tsx | 2 +- .../DiskManagement/ui/DiskCountdownRadial.tsx | 2 +- .../ui/DiskManagementReadReplicas.tsx | 4 +- .../DiskManagement/ui/DiskSpaceBar.tsx | 12 +- .../Docs/PublicSchemaNotEnabledAlert.tsx | 6 +- .../ExplainVisualizer.NodeRow.tsx | 2 +- .../ExplainVisualizer.utils.ts | 2 +- .../EdgeFunctionDetails.tsx | 8 +- .../EdgeFunctionTesterSheet.tsx | 8 +- .../EdgeFunctionInvocationsChart.tsx | 4 +- .../EdgeFunctionInvocationsSection.tsx | 2 +- .../EdgeFunctionRecentErrors.tsx | 2 +- .../EdgeFunctionRecentInvocations.tsx | 2 +- .../EdgeFunctionSecret.tsx | 6 +- .../EdgeFunctionSecrets/EditSecretSheet.tsx | 4 +- .../Functions/EdgeFunctionsListItem.tsx | 2 +- .../Functions/FunctionsEmptyState.tsx | 6 +- .../interfaces/Functions/FunctionsNav.tsx | 2 +- .../Functions/TerminalInstructions.tsx | 4 +- .../interfaces/GraphQL/GraphiQL.tsx | 2 +- .../interfaces/GraphQL/graphiql.module.css | 2 + .../interfaces/Home/AdvisorWidget.tsx | 18 +- .../Home/NewProjectPanel/APIKeys.tsx | 2 +- .../Home/NewProjectPanel/GetStartedHero.tsx | 4 +- .../Home/NewProjectPanel/NewProjectPanel.tsx | 16 +- .../Home/ProjectList/ProjectCard.tsx | 2 +- .../Home/ProjectList/ProjectCardStatus.tsx | 2 +- .../Home/ProjectList/ProjectTableRow.tsx | 2 +- .../Home/ProjectList/ShimmeringCard.tsx | 2 +- .../interfaces/Home/ProjectUsage.tsx | 8 +- .../CronJobScheduleSection.tsx | 4 +- .../Integrations/CronJobs/CronJobs.utils.tsx | 2 +- .../CronJobs/CronJobsTab.CleanupNotice.tsx | 4 +- .../CronJobs/CronJobsTab.DataGrid.tsx | 2 +- .../CronJobsTab.EstimateErrorNotice.tsx | 2 +- .../CronJobs/EdgeFunctionSection.tsx | 2 +- .../CronJobs/HttpBodyFieldSection.tsx | 2 +- .../Integrations/CronJobs/PreviousRunsTab.tsx | 4 +- .../CronJobs/SqlSnippetSection.tsx | 2 +- .../AdvancedSettings.tsx | 2 +- .../InstallIntegrationSheet.tsx | 2 +- .../Integration/MarkdownContent.tsx | 4 +- .../Landing/AvailableIntegrations.tsx | 4 +- .../Landing/InstalledIntegrations.tsx | 2 +- .../Queues/CreateQueueSheet/RlsSection.tsx | 2 +- .../Integrations/Queues/QueueTab.tsx | 2 +- .../Integrations/Queues/Queues.utils.tsx | 10 +- .../Integrations/Queues/QueuesSettings.tsx | 2 +- .../Integrations/Queues/QueuesTab.tsx | 2 +- .../SingleQueue/MessageDetailsPanel.tsx | 2 +- .../Queues/SingleQueue/QueueDataGrid.tsx | 4 +- .../Queues/SingleQueue/SendMessageModal.tsx | 2 +- .../Vault/Secrets/Secrets.utils.tsx | 2 +- .../Vault/Secrets/SecretsManagement.tsx | 2 +- .../Vercel/OrganizationPicker.tsx | 2 +- .../VercelGithub/IntegrationPanels.tsx | 12 +- .../VercelGithub/ProjectLinker.tsx | 14 +- .../Integrations/Wrappers/ColumnType.tsx | 4 +- .../Integrations/Wrappers/OverviewTab.tsx | 2 +- .../Integrations/Wrappers/WrapperRow.tsx | 10 +- .../Wrappers/WrapperTableEditor.tsx | 2 +- .../StripeSyncSettingsPage.tsx | 2 +- .../JwtSecrets/algorithm-hover-card.tsx | 2 +- .../jwt-secret-keys-table/index.tsx | 2 +- .../interfaces/JwtSecrets/jwt-settings.tsx | 10 +- .../interfaces/JwtSecrets/jwt.constants.ts | 6 +- .../JwtSecrets/start-using-keys-banner.tsx | 2 +- .../interfaces/Linter/LintPageTabs.tsx | 12 +- .../interfaces/Linter/LinterDataGrid.tsx | 4 +- .../interfaces/Linter/LinterPageFooter.tsx | 2 +- .../interfaces/LogDrains/AnimatedLogos.tsx | 2 +- .../LogDrainDestinationSheetForm.tsx | 4 +- .../interfaces/LogDrains/LogDrains.tsx | 2 +- .../DatabaseInfrastructureSection.tsx | 10 +- .../Organization/AuditLogs/AuditLogs.tsx | 10 +- .../BillingBreakdown/BillingBreakdown.tsx | 2 +- .../BillingBreakdown/UpcomingInvoice.tsx | 16 +- .../BillingSettings/BillingEmail.tsx | 2 +- .../BillingSettings/BillingSettings.tsx | 2 +- .../CostControl/CostControl.tsx | 2 +- .../CostControl/SpendCapSidePanel.tsx | 2 +- .../BillingSettings/CreditCodeRedemption.tsx | 6 +- .../BillingSettings/CreditTopUp.tsx | 6 +- .../Subscription/EnterpriseCard.tsx | 4 +- .../Subscription/ExitSurveyModal.tsx | 4 +- .../Subscription/PaymentMethodSelection.tsx | 6 +- .../Subscription/PlanUpdateSidePanel.tsx | 4 +- .../Subscription/Subscription.tsx | 2 +- .../SubscriptionPlanUpdateDialog.tsx | 8 +- .../Subscription/UpgradeModal.tsx | 2 +- .../AwsMarketplaceAutoRenewalWarning.tsx | 2 +- .../AwsMarketplaceLinkExistingOrg.tsx | 4 +- .../interfaces/Organization/HeaderBanner.tsx | 2 +- .../InvoicesSettings/InvoicesSettings.tsx | 2 +- .../Organization/OAuthApps/OAuthAppRow.tsx | 4 +- .../Organization/OAuthApps/OAuthApps.tsx | 2 +- .../OAuthApps/PublishAppSidePanel/index.tsx | 6 +- .../Apps/AppsList/AppsListLoading.tsx | 4 +- .../Apps/AppsList/AppsListTable.tsx | 2 +- .../Apps/CreateAppSheet/CreateAppSheet.tsx | 6 +- .../Apps/ViewAppSheet/ViewAppSheet.tsx | 2 +- .../Apps/ViewAppSheet/ViewAppSheetInfo.tsx | 2 +- .../Organization/ProjectClaim/confirm.tsx | 6 +- .../TeamSettings/InviteMemberButton.tsx | 2 +- .../Organization/TeamSettings/MembersView.tsx | 4 +- .../TeamSettings/TeamSettings.tsx | 2 +- .../UpdateRolesPanel/UpdateRolesPanel.tsx | 7 +- .../Organization/Usage/TotalUsage.tsx | 2 +- .../interfaces/Organization/Usage/Usage.tsx | 4 +- .../Usage/UsageSection/DatabaseSizeUsage.tsx | 2 +- .../Usage/UsageSection/DiskUsage.tsx | 2 +- .../OrganizationInvite/OrganizationInvite.tsx | 2 +- .../PlatformWebhooksEndpointSheet.tsx | 2 +- .../ProjectAPIDocs/Content/Entity.tsx | 2 +- .../ProjectAPIDocs/ContentSnippet.tsx | 2 +- .../ProjectAPIDocs/FirstLevelNav.tsx | 10 +- .../ProjectAPIDocs/ResourceContent.tsx | 2 +- .../ProjectAPIDocs/SecondLevelNav.Layout.tsx | 6 +- .../ProjectCreation/AdvancedConfiguration.tsx | 12 +- .../ProjectCreation/OrganizationSelector.tsx | 2 +- .../ProjectCreation/RegionSelector.tsx | 8 +- .../interfaces/ProjectHome/ConnectSection.tsx | 4 +- .../ProjectHome/CustomReportSection.tsx | 4 +- .../interfaces/ProjectHome/Home.tsx | 2 +- .../ProjectHome/SortableSection.tsx | 2 +- .../QueryInsightsChart/QueryInsightsChart.tsx | 6 +- .../QueryInsightsChartTooltip.tsx | 2 +- .../QueryInsightsHealthMetric.tsx | 2 +- .../QueryInsightsHealthScoreSkeleton.tsx | 4 +- .../QueryInsightsDetailSheet.tsx | 8 +- .../QueryInsightsTable/QueryInsightsTable.tsx | 14 +- .../hooks/useQueryInsightsTableColumns.tsx | 16 +- .../IndexAdvisor/IndexAdvisorNotice.tsx | 2 +- .../IndexAdvisor/IndexSuggestionIcon.tsx | 2 +- .../QueryPerformance/QueryDetail.tsx | 4 +- .../QueryPerformance/QueryIndexes.tsx | 12 +- .../QueryPerformanceChart.tsx | 4 +- .../QueryPerformance/QueryPerformanceGrid.tsx | 16 +- .../QueryPerformanceMetrics.tsx | 4 +- .../QueryPerformance/SqlMonacoBlock.tsx | 2 +- .../WithStatements/WithStatements.tsx | 2 +- .../interfaces/Realtime/Inspector/Header.tsx | 2 +- .../Realtime/Inspector/MessageSelection.tsx | 4 +- .../Realtime/Inspector/MessagesTable.tsx | 14 +- .../RealtimeFilterPopover/TableSelector.tsx | 2 +- .../Inspector/RealtimeFilterPopover/index.tsx | 6 +- .../RealtimeMessageColumnRenderer.tsx | 4 +- .../SelectedRealtimeMessagePanel.tsx | 2 +- .../Realtime/Inspector/SendMessageModal.tsx | 2 +- .../ReportBlock/ReportBlockContainer.tsx | 2 +- .../interfaces/Reports/ReportFilterBar.tsx | 2 +- .../Reports/ReportFilterPopover.tsx | 2 +- .../components/interfaces/Reports/Reports.tsx | 2 +- .../Reports/renderers/ApiRenderers.tsx | 25 +- .../Reports/renderers/StorageRenderers.tsx | 4 +- .../Reports/v2/ReportsSelectFilter.tsx | 2 +- .../UserImpersonationSelector.tsx | 4 +- .../interfaces/SQLEditor/AskAIWidget.tsx | 2 +- .../SQLEditor/DownloadSnippetModal.tsx | 4 +- .../SQLEditor/OngoingQueriesPanel.tsx | 2 +- .../SQLEditor/RunQueryWarningModal.tsx | 2 +- .../UtilityPanel/CellDetailPanel.tsx | 2 +- .../SQLEditor/UtilityPanel/ChartConfig.tsx | 4 +- .../SQLEditor/UtilityPanel/Results.tsx | 2 +- .../SQLEditor/UtilityPanel/UtilityPanel.tsx | 6 +- .../UtilityPanel/UtilityTabExplain.tsx | 8 +- .../UtilityPanel/UtilityTabResults.tsx | 8 +- .../Settings/API/ExposedFunctionSelector.tsx | 4 +- .../Settings/API/ExposedSchemaSelector.tsx | 2 +- .../Settings/API/ExposedTableSelector.tsx | 4 +- .../API/UnsafeEntitiesConfirmModal.tsx | 2 +- .../interfaces/Settings/Addons/Addons.tsx | 2 +- .../Settings/Addons/CustomDomainSidePanel.tsx | 6 +- .../Settings/Addons/IPv4SidePanel.tsx | 4 +- .../Settings/Addons/PITRSidePanel.tsx | 6 +- .../Database/DiskSizeConfiguration.tsx | 2 +- .../JitDbAccessRoleGrantFields.tsx | 2 +- .../JitDbAccessRuleSheet.tsx | 2 +- .../CustomDomainActivate.tsx | 2 +- .../CustomDomainConfig/CustomDomainDelete.tsx | 2 +- .../CustomDomainsShimmerLoader.tsx | 4 +- .../DeleteProjectPanel/DeleteProjectModal.tsx | 6 +- .../Infrastructure/RestartServerButton.tsx | 2 +- .../InfrastructureConfiguration/Edge.tsx | 2 +- .../InstanceConfiguration.tsx | 4 +- .../InstanceNode.tsx | 16 +- .../InfrastructureConfiguration/MapView.tsx | 10 +- .../Infrastructure/InfrastructureInfo.tsx | 2 +- .../GitHubIntegrationConnectionForm.tsx | 6 +- .../Integrations/IntegrationsSettings.tsx | 2 +- .../VercelIntegration/VercelSection.tsx | 2 +- .../interfaces/Settings/Logs/LogSelection.tsx | 2 +- .../DefaultPreviewSelectionRenderer.tsx | 4 +- .../interfaces/Settings/Logs/LogTable.tsx | 4 +- .../Settings/Logs/Logs.DatePickers.tsx | 4 +- .../interfaces/Settings/Logs/Logs.Divider.tsx | 2 +- .../Settings/Logs/Logs.SqlSnippetCode.tsx | 2 +- .../Settings/Logs/LogsFilterPopover.tsx | 2 +- .../Settings/Logs/LogsFormatters.tsx | 18 +- .../Settings/Logs/LogsQueryPanel.tsx | 12 +- .../Settings/Logs/LogsTableEmptyState.tsx | 2 +- .../Settings/Logs/PreviewFilterPanel.tsx | 2 +- .../Settings/Logs/RecentQueriesItem.tsx | 2 +- .../Settings/Logs/SidebarV2/SidebarItem.tsx | 2 +- .../Settings/Logs/UpgradePrompt.tsx | 2 +- apps/studio/components/interfaces/Sidebar.tsx | 4 +- .../interfaces/SignIn/LastSignInWrapper.tsx | 2 +- .../interfaces/SignIn/ResetPasswordForm.tsx | 2 +- .../interfaces/SignIn/SignUpForm.tsx | 2 +- .../CreateTableInstructionsDialog.tsx | 6 +- .../CreateTable/CreateTableSheet.tsx | 6 +- .../InitializeForeignSchemaDialog.tsx | 2 +- .../NamespaceWithTables/InsertDataDialog.tsx | 2 +- .../NamespaceWithTables/TableRowComponent.tsx | 4 +- .../UpdateForeignSchemaDialog.tsx | 2 +- .../AnalyticsBucketDetails/index.tsx | 2 +- .../CreateAnalyticsBucketForm.tsx | 6 +- .../interfaces/Storage/EditBucketModal.tsx | 4 +- .../interfaces/Storage/FilesBuckets/index.tsx | 2 +- .../Storage/PublicBucketWarning.tsx | 2 +- .../StorageExplorer/ConfirmDeleteModal.tsx | 2 +- .../StorageExplorer/FileExplorerColumn.tsx | 4 +- .../FileExplorerHeaderSelection.tsx | 2 +- .../StorageExplorer/FileExplorerRow.tsx | 2 +- .../FileExplorerRowEditing.tsx | 2 +- .../Storage/StorageExplorer/PreviewPane.tsx | 2 +- .../Storage/StorageSettings/S3Connection.tsx | 2 +- .../StorageSettings.ValidateSizeLimit.tsx | 2 +- .../CreateVectorBucketDialog.tsx | 2 +- .../VectorBuckets/CreateVectorTableSheet.tsx | 2 +- .../InitializeForeignSchemaDialog.tsx | 2 +- .../VectorBucketTableExamplesSheet.tsx | 2 +- .../interfaces/Support/AIAssistantOption.tsx | 6 +- .../interfaces/Support/AttachmentUpload.tsx | 6 +- .../interfaces/Support/ClientLibraryInfo.tsx | 4 +- .../Support/DashboardLogsToggle.tsx | 2 +- .../interfaces/Support/DocsLink.tsx | 2 +- .../Support/LinkSupportTicketPage.tsx | 2 +- .../interfaces/Support/ProjectAndPlanInfo.tsx | 2 +- .../components/interfaces/Support/Success.tsx | 4 +- .../Support/SupportAccessToggle.tsx | 4 +- .../interfaces/Support/SupportForm.utils.tsx | 8 +- .../interfaces/Support/SupportFormPage.tsx | 8 +- .../DeleteConfirmationDialogs.tsx | 4 +- .../TableGridEditor/GridHeaderActions.tsx | 2 +- .../ColumnEditor/ColumnEditor.tsx | 18 +- .../ColumnEditor/ColumnType.tsx | 2 +- .../ColumnEditor/HeaderTitle.tsx | 6 +- .../ColumnEditor/InputWithSuggestions.tsx | 2 +- .../OperationQueueSidePanel.tsx | 2 +- .../ForeignRowSelector/ForeignRowSelector.tsx | 4 +- .../SidePanelEditor/RowEditor/HeaderTitle.tsx | 2 +- .../DrilldownViewer/DrilldownPane.tsx | 8 +- .../SpreadsheetImport.utils.tsx | 2 +- .../SpreadsheetImportPreview.tsx | 2 +- .../SpreadsheetPreviewGrid.tsx | 2 +- .../SidePanelEditor/TableEditor/Column.tsx | 2 +- .../TableEditor/ColumnManagement.tsx | 2 +- .../ForeignKeysManagement/ForeignKeyRow.tsx | 2 +- .../ForeignKeysManagement.tsx | 2 +- .../TableEditor/HeaderTitle.tsx | 6 +- .../TableEditor/RLSDisableModal.tsx | 2 +- .../TableEditor/TableEditor.tsx | 4 +- .../components/shared/BlockField.tsx | 4 +- .../components/shared/CollapsibleSection.tsx | 2 +- .../components/shared/FieldWithSeeMore.tsx | 6 +- .../components/shared/TimelineStep.tsx | 2 +- .../shared/TruncatedTextWithPopover.tsx | 2 +- .../UnifiedLogs/ServiceFlowPanel.tsx | 2 +- .../interfaces/UnifiedLogs/UnifiedLogs.tsx | 4 +- .../UnifiedLogs/components/LogsListPanel.tsx | 2 +- .../layouts/AppLayout/AppLayout.tsx | 2 +- .../layouts/AppLayout/BranchBadge.tsx | 8 +- .../BranchDropdownCommandContent.tsx | 2 +- .../BranchingPostgresVersionNotice.tsx | 2 +- .../OrganizationDropdownCommandContent.tsx | 2 +- .../EdgeFunctionDetailsLayout.tsx | 4 +- .../Integrations/IntegrationsProductMenu.tsx | 2 +- .../IntegrationWindowLayout.tsx | 2 +- .../Integrations.Commands.tsx | 2 +- .../VercelIntegrationWindowLayout.tsx | 2 +- .../layouts/LogsLayout/LogsSidebarMenuV2.tsx | 4 +- .../FloatingMobileToolbar.tsx | 8 +- .../LayoutHeader/BreadcrumbsView.tsx | 2 +- .../FeedbackDropdown/FeedbackWidget.tsx | 2 +- .../Navigation/LayoutHeader/LayoutHeader.tsx | 2 +- .../LayoutHeader/LocalVersionPopover.tsx | 14 +- .../NavigationBar/CommandOption.tsx | 2 +- .../NavigationBar/MobileNavigationBar.tsx | 4 +- .../NavigationBar/MobileViewNav.tsx | 2 +- .../NavigationBar/NavigationIconButton.tsx | 2 +- .../NavigationBar/NavigationIconLink.tsx | 8 +- .../Navigation/NavigationBar/OrgSelector.tsx | 6 +- .../ProjectBranchSelectorTrigger.tsx | 6 +- .../layouts/Navigation/ProductMenuBar.tsx | 2 +- .../layouts/PageLayout/PageLayout.tsx | 2 +- .../layouts/ProjectIntegrationsLayout.tsx | 2 +- .../layouts/ProjectLayout/ConnectingState.tsx | 4 +- .../MobileMenuContent/MobileMenuContent.tsx | 4 +- .../MobileMenuContent/OrgMenuContent.tsx | 4 +- .../ProjectLayout/LayoutSidebar/index.tsx | 2 +- .../OrganizationSettingsLayout.tsx | 2 +- .../PausedState/PauseDisabledState.tsx | 4 +- .../PausedState/ProjectPausedState.tsx | 2 +- .../layouts/ProjectLayout/PausingState.tsx | 2 +- .../layouts/ProjectLayout/RestoringState.tsx | 2 +- .../ProjectLayout/UpgradingState/index.tsx | 4 +- .../PrivateSqlSnippetEmpty.tsx | 4 +- .../CommunitySnippetsSection.tsx | 2 +- .../SQLEditorNavV2/SQLEditorNav.tsx | 8 +- .../SQLEditorLayout/SqlEditor.Commands.tsx | 4 +- .../TableEditorLayout/EntityListItem.tsx | 2 +- .../TableEditorLayout/TableMenuEmptyState.tsx | 4 +- .../components/layouts/Tabs/ActionCard.tsx | 2 +- .../layouts/Tabs/CollapseButton.tsx | 2 +- .../layouts/Tabs/MigrateToPostgres.tsx | 2 +- .../components/layouts/Tabs/RecentItems.tsx | 2 +- .../components/layouts/Tabs/SortableTab.tsx | 4 +- .../components/layouts/Tabs/TabPreview.tsx | 2 +- apps/studio/components/layouts/Tabs/Tabs.tsx | 10 +- .../layouts/editors/EditorBaseLayout.tsx | 2 +- .../components/to-be-cleaned/ListIcons.tsx | 4 +- .../to-be-cleaned/ProductEmptyState.tsx | 2 +- .../ui/AIAssistantPanel/AIAssistant.tsx | 6 +- .../ui/AIAssistantPanel/AIAssistantHeader.tsx | 2 +- .../ui/AIAssistantPanel/AIOnboarding.tsx | 2 +- .../ui/AIAssistantPanel/AIOptInModal.tsx | 2 +- .../ui/AIAssistantPanel/ConfirmFooter.tsx | 2 +- .../ui/AIAssistantPanel/Message.Actions.tsx | 11 +- .../ui/AIAssistantPanel/Message.Display.tsx | 2 +- .../ui/AIAssistantPanel/Message.Parts.tsx | 2 +- .../ui/AIAssistantPanel/MessageMarkdown.tsx | 4 +- .../ui/AIAssistantPanel/SnippetRow.tsx | 6 +- .../ui/AIAssistantPanel/elements/Tool.tsx | 2 +- apps/studio/components/ui/ActionCard.tsx | 2 +- apps/studio/components/ui/AlphaNotice.tsx | 2 +- .../components/ui/BannerStack/BannerCard.tsx | 2 +- .../Banners/BannerFreeMicroUpgrade.tsx | 4 +- apps/studio/components/ui/CardButton.tsx | 2 +- .../studio/components/ui/Charts/AreaChart.tsx | 2 +- apps/studio/components/ui/Charts/BarChart.tsx | 2 +- .../ui/Charts/ComposedChart.utils.tsx | 2 +- .../components/ui/Charts/StackedBarChart.tsx | 2 +- .../components/ui/CodeEditor/CodeEditor.tsx | 2 +- .../components/ui/ComputeBadgeWrapper.tsx | 4 +- .../DataTableFilterCheckbox.tsx | 10 +- .../DataTableFilterCheckboxAsync.tsx | 10 +- .../DataTableFilterCheckboxLoader.tsx | 6 +- .../DataTableFilterCommand.tsx | 12 +- .../DataTableFilterControls.tsx | 2 +- .../DataTableFilters/DataTableFilterInput.tsx | 2 +- .../DataTableFilterResetButton.tsx | 2 +- .../DataTableFilterSlider.tsx | 4 +- .../ui/DataTable/DataTableInfinite.tsx | 2 +- .../ui/DataTable/DataTableSheetRowAction.tsx | 2 +- .../components/ui/DataTable/LiveRow.tsx | 2 +- apps/studio/components/ui/DataTable/Table.tsx | 8 +- .../DataTable/primitives/InputWithAddons.tsx | 6 +- .../ui/DataTable/primitives/Kbd.tsx | 2 +- .../ui/DataTable/primitives/Slider.tsx | 2 +- .../ui/DatePicker/TimeSplitInput.tsx | 4 +- .../ui/DevToolbar/ResourceWarningsTab.tsx | 2 +- apps/studio/components/ui/DotGrid.tsx | 2 +- .../components/ui/DropdownMenuItemTooltip.tsx | 2 +- .../EdgeFunctionBlock/EdgeFunctionBlock.tsx | 2 +- .../components/ui/EditorPanel/EditorPanel.tsx | 4 +- apps/studio/components/ui/EmptyListState.tsx | 4 +- .../ui/FeaturePreviewSidebarPanel.tsx | 2 +- .../studio/components/ui/Forms/FormHeader.tsx | 2 +- apps/studio/components/ui/Forms/FormPanel.tsx | 2 +- .../components/ui/Forms/FormSection.tsx | 6 +- .../studio/components/ui/FunctionSelector.tsx | 2 +- .../components/ui/GrafanaPromoBanner.tsx | 2 +- .../components/ui/HelpPanel/HelpPanel.tsx | 4 +- .../ui/Logs/ChartIntervalDropdown.tsx | 2 +- .../components/ui/Logs/LogsExplorerHeader.tsx | 12 +- .../ui/OrganizationProjectSelector.tsx | 2 +- apps/studio/components/ui/Panel.tsx | 6 +- .../components/ui/PasswordStrengthBar.tsx | 2 +- .../ui/ProductMenu/ProductMenuItem.tsx | 2 +- .../ui/ProjectSettings/DisplayApiSettings.tsx | 4 +- .../ProjectSettings/DisplayConfigSettings.tsx | 2 +- .../components/ui/QueryBlock/QueryBlock.tsx | 4 +- .../components/ui/Resource/ResourceItem.tsx | 2 +- apps/studio/components/ui/SchemaComboBox.tsx | 4 +- apps/studio/components/ui/SchemaSelector.tsx | 6 +- apps/studio/components/ui/ScrollGradient.tsx | 2 +- apps/studio/components/ui/Shimmers.tsx | 4 +- apps/studio/components/ui/SparkBar.tsx | 6 +- .../components/ui/SqlWarningAdmonition.tsx | 2 +- apps/studio/components/ui/TwoOptionToggle.tsx | 4 +- apps/studio/data/reports/database-charts.ts | 4 +- .../table-rows/table-row-delete-mutation.tsx | 2 +- apps/studio/package.json | 1 - apps/studio/pages/404.tsx | 4 +- apps/studio/pages/_app.tsx | 1 - apps/studio/pages/account/security.tsx | 6 +- .../[slug]/deploy-button/new-project.tsx | 2 +- .../[slug]/marketplace/choose-project.tsx | 2 +- apps/studio/pages/join.tsx | 2 +- .../project/[ref]/advisors/performance.tsx | 2 +- .../pages/project/[ref]/advisors/security.tsx | 2 +- .../project/[ref]/branches/merge-requests.tsx | 2 +- .../[ref]/database/column-privileges.tsx | 4 +- .../[ref]/database/replication/index.tsx | 2 +- .../replication/replica/[replicaId].tsx | 2 +- .../project/[ref]/logs/explorer/templates.tsx | 4 +- .../storage/files/buckets/[bucketId].tsx | 2 +- apps/studio/pages/sign-in-partner.tsx | 6 +- apps/studio/styles/code.css | 4 +- apps/studio/styles/editor.css | 2 + apps/studio/styles/focus.css | 2 + apps/studio/styles/grid.css | 19 +- apps/studio/styles/main.css | 33 +- apps/studio/styles/markdown-preview.css | 1 + apps/studio/styles/monaco.css | 2 + apps/studio/styles/react-data-grid-logs.css | 4 + apps/studio/styles/reactflow.css | 2 + apps/studio/styles/storage.css | 4 +- apps/studio/styles/ui.css | 11 +- apps/studio/tailwind.config.ts | 2 - .../registry/tanstack-db/_generators/list.ts | 2 +- .../registry/tanstack-db/_generators/sheet.ts | 2 +- .../example/password-based-auth/layout.tsx | 2 +- .../app/example/social-auth/layout.tsx | 2 +- .../ui-library/components/block-item-code.tsx | 2 +- apps/ui-library/components/command-menu.tsx | 2 +- apps/ui-library/components/command.tsx | 2 +- .../components/component-preview.tsx | 10 +- apps/ui-library/components/mdx-components.tsx | 15 +- .../components/theme-switcher-dropdown.tsx | 2 +- .../docs/getting-started/quickstart.mdx | 2 +- .../blocks/dropzone/components/dropzone.tsx | 4 +- .../components/avatar-stack.tsx | 2 +- .../realtime-cursor/components/cursor.tsx | 2 +- .../registry/default/components/ui/button.tsx | 10 +- .../registry/default/components/ui/card.tsx | 2 +- .../default/components/ui/checkbox.tsx | 2 +- .../default/components/ui/command.tsx | 6 +- .../registry/default/components/ui/dialog.tsx | 6 +- .../registry/default/components/ui/drawer.tsx | 2 +- .../default/components/ui/hover-card.tsx | 2 +- .../registry/default/components/ui/input.tsx | 2 +- .../default/components/ui/popover.tsx | 2 +- .../registry/default/components/ui/select.tsx | 6 +- .../registry/default/components/ui/switch.tsx | 8 +- .../default/components/ui/textarea.tsx | 2 +- .../default/components/ui/tooltip.tsx | 2 +- .../components/results-table.tsx | 2 +- .../components/supabase-manager/logs.tsx | 4 +- .../supabase-manager/suggestions.tsx | 4 +- apps/ui-library/styles/globals.css | 6 +- apps/ui-library/styles/mdx.css | 2 + apps/ui-library/tailwind.config.js | 3 +- .../_blog/2021-03-25-angels-of-supabase.mdx | 16 +- ...idate-slackbot-to-consolidate-messages.mdx | 2 +- ...trello-board-with-supabase-and-angular.mdx | 22 +- ...023-04-07-designing-with-ai-midjourney.mdx | 2 +- ...dge-runtime-self-hosted-deno-functions.mdx | 2 +- .../2023-04-13-supabase-auth-sso-pkce.mdx | 4 +- ...05-25-chatgpt-plugins-support-postgres.mdx | 2 +- ...023-12-08-how-design-works-at-supabase.mdx | 4 +- .../2024-10-10-database-build-live-share.mdx | 4 +- .../_blog/2024-12-06-database-build-v2.mdx | 2 +- apps/www/_blog/2025-04-04-mcp-server.mdx | 2 +- apps/www/_blog/2025-06-25-natural-db.mdx | 2 +- apps/www/app/blog/BlogClient.tsx | 18 +- .../app/contribute/t/[id]/page-loading.tsx | 16 +- .../StateOfStartups2026Content.tsx | 2 +- .../StateOfStartupsAuroraHeader.tsx | 2 +- .../components/StateOfStartupsHeader.tsx | 2 +- .../components/SurveyChapter.tsx | 2 +- .../components/SurveyChapterSection.tsx | 2 +- .../components/SurveyChart.tsx | 4 +- .../components/SurveyPullQuote.tsx | 2 +- .../components/SurveySectionBreak.tsx | 2 +- .../components/TwoOptionToggle.tsx | 4 +- .../register/RegisterContent.tsx | 8 +- apps/www/app/wrapped/WrappedClient.tsx | 2 +- apps/www/components/AIDemo/DotGrid.tsx | 6 +- apps/www/components/AIDemo/Panel.tsx | 4 +- apps/www/components/AIDemo/SqlSnippet.tsx | 2 +- apps/www/components/Announcement/Badge.tsx | 4 +- apps/www/components/Blog/BlogGridItem.tsx | 4 +- apps/www/components/Blog/BlogPostRenderer.tsx | 2 +- apps/www/components/Blog/DraftModeBanner.tsx | 2 +- apps/www/components/Blog/FeaturedThumb.tsx | 4 +- .../BuiltWithSupabase/ExamplesMobile.tsx | 2 +- .../components/BuiltWithSupabase/index.tsx | 6 +- apps/www/components/Button.tsx | 4 +- .../Changelog/ChangelogTimelineList.tsx | 8 +- .../CodeTabs/CodeTabs.components.tsx | 2 +- .../components/Contribute/Conversation.tsx | 4 +- .../Contribute/SimilarSolvedThreads.tsx | 10 +- .../Contribute/UnansweredThreadsTable.tsx | 6 +- .../Contribute/markdownComponents.tsx | 2 +- .../CustomerStories/CustomersSliderMobile.tsx | 8 +- .../CutomsersSliderDesktop.tsx | 2 +- apps/www/components/CustomerStories/index.tsx | 2 +- apps/www/components/Enterprise/CTAForm.tsx | 2 +- .../components/Enterprise/EnterpriseLogos.tsx | 8 +- .../www/components/Enterprise/Performance.tsx | 4 +- apps/www/components/Enterprise/Security.tsx | 4 +- apps/www/components/Enterprise/UseCases.tsx | 10 +- apps/www/components/EnterpriseFormQuotes.tsx | 4 +- apps/www/components/EventCallout.tsx | 2 +- apps/www/components/Events/EventGridItem.tsx | 4 +- apps/www/components/Events/EventsFilters.tsx | 2 +- .../www/components/Events/new/EventBanner.tsx | 16 +- .../Events/new/EventClientRenderer.tsx | 2 +- .../components/Events/new/EventGallery.tsx | 2 +- apps/www/components/Events/new/EventList.tsx | 14 +- apps/www/components/ExampleCard.tsx | 6 +- .../components/Examples/ExamplesCarousel.tsx | 2 +- .../FloatingIcons/FloatingIcons.tsx | 2 +- apps/www/components/Footer/index.tsx | 8 +- apps/www/components/Go/GoPageRenderer.tsx | 4 +- apps/www/components/Hero/Hero.tsx | 2 +- apps/www/components/Hero/HeroFrameworks.tsx | 4 +- apps/www/components/ImageGrid.tsx | 2 +- .../LaunchWeek/11/HackathonCallout.tsx | 4 +- .../components/LaunchWeek/11/LW11Meetups.tsx | 8 +- .../components/LaunchWeek/11/LW11Summary.tsx | 4 +- .../LaunchWeek/11/LaunchWeekLogoHeader.tsx | 2 +- .../LaunchWeek/11/LaunchWeekPrizeSection.tsx | 2 +- .../LaunchWeek/11/Releases/BuildStage.tsx | 2 +- .../LaunchWeek/11/Releases/LW11Header.tsx | 6 +- .../LaunchWeek/11/Releases/LW11StickyNav.tsx | 10 +- .../LaunchWeek/11/Releases/MainStage.tsx | 4 +- .../11/Releases/components/AdventCard.tsx | 6 +- .../11/Releases/components/DaySection.tsx | 8 +- .../LaunchWeek/12/HackathonCallout.tsx | 4 +- .../LaunchWeek/12/LW12Background.tsx | 2 +- .../components/LaunchWeek/12/LWMeetups.tsx | 4 +- .../LaunchWeek/12/LaunchWeekLogoHeader.tsx | 2 +- .../LaunchWeek/12/LaunchWeekPrizeSection.tsx | 2 +- .../LaunchWeek/12/Releases/BuildStage.tsx | 2 +- .../LaunchWeek/12/Releases/LWHeader.tsx | 4 +- .../LaunchWeek/12/Releases/LWStickyNav.tsx | 8 +- .../LaunchWeek/12/Releases/MainStage.tsx | 2 +- .../12/Releases/components/BuildCard.tsx | 6 +- .../12/Releases/components/DaySection.tsx | 8 +- .../LaunchWeek/13/Releases/BuildStage.tsx | 2 +- .../LaunchWeek/13/Releases/LWHeader.tsx | 2 +- .../LaunchWeek/13/Releases/LWStickyNav.tsx | 6 +- .../LaunchWeek/13/Releases/MainStage.tsx | 2 +- .../13/Releases/components/BuildCard.tsx | 6 +- .../13/Releases/components/DaySection.tsx | 10 +- .../components/LaunchWeek/14/ActionButton.tsx | 18 +- apps/www/components/LaunchWeek/14/Header.tsx | 6 +- .../LaunchWeek/14/Releases/BuildStage.tsx | 2 +- .../LaunchWeek/14/Releases/LWHeader.tsx | 6 +- .../LaunchWeek/14/Releases/LWStickyNav.tsx | 6 +- .../LaunchWeek/14/Releases/MainStage.tsx | 2 +- .../14/Releases/components/BuildCard.tsx | 6 +- .../14/Releases/components/DaySection.tsx | 10 +- .../components/LaunchWeek/15/ActionButton.tsx | 18 +- .../LaunchWeek/15/LW15BuildStage.tsx | 2 +- .../LaunchWeek/15/LW15Hackathon.tsx | 8 +- .../components/LaunchWeek/15/LW15Heading.tsx | 2 +- .../LaunchWeek/15/LW15MainStage.tsx | 20 +- .../components/LaunchWeek/15/LW15Meetups.tsx | 10 +- .../components/LaunchWeek/15/LWSummary.tsx | 2 +- .../LaunchWeek/15/Ticketing/LW15Ticket.tsx | 2 +- .../15/Ticketing/LW15TicketPage.tsx | 2 +- .../LaunchWeek/15/Ticketing/TicketURLCopy.tsx | 4 +- .../LaunchWeek/15/lw15.components.tsx | 2 +- .../components/LaunchWeek/5/ScheduleInfo.tsx | 2 +- .../www/components/LaunchWeek/7/BlogLinks.tsx | 2 +- .../components/LaunchWeek/7/LW7BgGraphic.tsx | 2 +- .../components/LaunchWeek/7/LabelBadge.tsx | 2 +- .../7/LaunchSection/ArticleButton.tsx | 2 +- .../7/LaunchSection/ProductButton.tsx | 2 +- .../7/LaunchSection/ProductButtonListItem.tsx | 2 +- .../LaunchWeek/7/LaunchSection/index.tsx | 4 +- .../LaunchWeek/7/LaunchWeekPrizeCard.tsx | 4 +- .../LaunchWeek/7/LaunchWeekPrizeSection.tsx | 6 +- .../components/LaunchWeek/7/Releases/Day5.tsx | 26 +- .../7/Releases/components/index.tsx | 22 +- .../LaunchWeek/7/Releases/index.tsx | 16 +- .../LaunchWeek/8/LW8CalloutsSection.tsx | 6 +- .../www/components/LaunchWeek/8/LWArchive.tsx | 4 +- .../components/LaunchWeek/8/LabelBadge.tsx | 2 +- .../LaunchWeek/8/LaunchWeekLogoHeader.tsx | 2 +- .../LaunchWeek/8/LaunchWeekPrizeCard.tsx | 4 +- .../LaunchWeek/8/LaunchWeekPrizeSection.tsx | 10 +- .../LaunchWeek/8/Releases/LWAnnouncement.tsx | 4 +- .../8/Releases/components/index.tsx | 22 +- .../LaunchWeek/8/Releases/index.tsx | 2 +- .../components/LaunchWeek/X/Album/Player.tsx | 2 +- .../components/LaunchWeek/X/LWXMeetups.tsx | 2 +- .../components/LaunchWeek/X/LabelBadge.tsx | 2 +- .../LaunchWeek/X/LaunchWeekLogoHeader.tsx | 2 +- .../LaunchWeek/X/Releases/BuildStage.tsx | 2 +- .../LaunchWeek/X/Releases/LWXHeader.tsx | 4 +- .../LaunchWeek/X/Releases/LWXStickyNav.tsx | 8 +- .../LaunchWeek/X/Releases/MainStage.tsx | 6 +- .../X/Releases/components/AdventCard.tsx | 6 +- .../X/Releases/components/DaySection.tsx | 6 +- .../X/Releases/data/lwx_advent_days.tsx | 2 +- apps/www/components/MagnifiedProducts.tsx | 2 +- .../Modules/Cron/CronSQLSection.tsx | 8 +- apps/www/components/Modules/ModulesNav.tsx | 2 +- .../Modules/Queues/QueuesAPISection.tsx | 8 +- .../Modules/Queues/QueuesSQLSection.tsx | 8 +- .../www/components/Nav/DevelopersDropdown.tsx | 8 +- apps/www/components/Nav/GitHubButton.tsx | 2 +- apps/www/components/Nav/HamburgerMenu.tsx | 2 +- apps/www/components/Nav/MenuItem.tsx | 2 +- apps/www/components/Nav/MobileMenu.tsx | 24 +- apps/www/components/Nav/ProductDropdown.tsx | 10 +- .../components/Nav/RightClickBrandLogo.tsx | 4 +- apps/www/components/Nav/SolutionsDropdown.tsx | 2 +- apps/www/components/Nav/index.tsx | 14 +- apps/www/components/NewFeatureCard.tsx | 2 +- apps/www/components/OpenSource/OSSHero.tsx | 10 +- apps/www/components/OpenSource/Repos.tsx | 6 +- apps/www/components/OpenSourceSection.tsx | 2 +- apps/www/components/Panel/Panel.tsx | 6 +- .../components/Partners/PartnerLinkBox.tsx | 2 +- apps/www/components/Partners/TileGrid.tsx | 4 +- apps/www/components/PrevNextFeatureNav.tsx | 2 +- .../Pricing/ComputePricingCalculator.tsx | 6 +- .../Pricing/CostControlAnimation.tsx | 8 +- .../components/Pricing/PricingAddOnTable.tsx | 2 +- apps/www/components/Pricing/PricingAddons.tsx | 2 +- .../Pricing/PricingComputeAnimation.tsx | 12 +- .../Pricing/PricingComputeSection.tsx | 4 +- apps/www/components/Pricing/PricingPlans.tsx | 2 +- .../components/Products/DataAPIsVisual.tsx | 10 +- apps/www/components/Products/Functions/CI.tsx | 6 +- .../Products/Functions/ConnectToDBPanel.tsx | 2 +- .../Products/Functions/FunctionsHero.tsx | 6 +- .../Products/Functions/LocalDXGrid.tsx | 2 +- .../Products/Functions/LocalDXImage.tsx | 2 +- .../components/Products/Functions/Metrics.tsx | 2 +- .../Products/Functions/ParityImage.tsx | 4 +- .../Products/Functions/QueryLogs.tsx | 2 +- .../Functions/TriggerViaWebhookPanel.tsx | 2 +- .../Products/Functions/ZeroConfigPanel.tsx | 2 +- apps/www/components/Products/ProductCard.tsx | 6 +- apps/www/components/Products/ProductsNav.tsx | 2 +- .../components/Products/RealtimeVisual.tsx | 4 +- .../Products/VectorAI/IntegrationsImage.tsx | 2 +- .../Products/VectorAI/OpenAIImage.tsx | 2 +- apps/www/components/Products/VectorVisual.tsx | 6 +- apps/www/components/Products/index.tsx | 6 +- .../components/Realtime/example-layout.tsx | 6 +- .../Realtime/examples/chat-example.tsx | 2 +- .../examples/cursor-tracking-example.tsx | 2 +- .../examples/iframe-annotation-example.tsx | 14 +- .../Realtime/examples/log-viewer-example.tsx | 6 +- .../Realtime/examples/presence-example.tsx | 4 +- .../Realtime/examples/todo-example.tsx | 6 +- apps/www/components/Realtime/sandpack.tsx | 4 +- .../Sections/CenteredTitleImage.tsx | 2 +- .../components/Sections/CommunitySlider.tsx | 4 +- .../Sections/CustomerQuotesSection.tsx | 4 +- .../components/Sections/HighlightCards.tsx | 2 +- .../Sections/ImageParagraphSection.tsx | 4 +- .../components/Sections/ParagraphSection.tsx | 2 +- .../components/Sections/ProductHeader2.tsx | 4 +- .../Sections/ProductHeaderCentered.tsx | 2 +- .../Sections/ProductModulesHeader.tsx | 2 +- apps/www/components/Sections/SingleQuote.tsx | 2 +- .../Sections/TimedAccordionPanels.tsx | 8 +- .../Sections/TimedAccordionSection.tsx | 2 +- .../components/Sections/TimedTabsSection.tsx | 4 +- .../Sections/TwitterSocialProofMobile.tsx | 2 +- .../components/Sections/UseCasesSection.tsx | 2 +- .../components/Solutions/AIBuildersLogos.tsx | 8 +- apps/www/components/Solutions/CTAForm.tsx | 2 +- apps/www/components/Solutions/CtaSection.tsx | 2 +- .../Solutions/DeveloperExperienceSection.tsx | 16 +- apps/www/components/Solutions/FeatureGrid.tsx | 12 +- .../www/components/Solutions/FeaturesGrid.tsx | 4 +- .../components/Solutions/PlatformSection.tsx | 4 +- apps/www/components/Solutions/PostGrid.tsx | 6 +- apps/www/components/Solutions/Quotes.tsx | 4 +- .../components/Solutions/ResultsSection.tsx | 4 +- apps/www/components/Solutions/Videos.tsx | 6 +- apps/www/components/SolutionsStickyNav.tsx | 6 +- .../Supasquad/ApplicationFormSection.tsx | 2 +- .../components/Supasquad/CountrySelector.tsx | 2 +- apps/www/components/Supasquad/CtaSection.tsx | 2 +- .../components/Supasquad/PerfectTiming.tsx | 4 +- apps/www/components/Supasquad/Quotes.tsx | 4 +- .../SurveyResults/StateOfStartupsHeader.tsx | 2 +- .../SurveyResults/SurveyChapter.tsx | 2 +- .../SurveyResults/SurveyChapterSection.tsx | 2 +- .../components/SurveyResults/SurveyChart.tsx | 4 +- .../SurveyResults/SurveyPullQuote.tsx | 2 +- .../SurveyResults/SurveySectionBreak.tsx | 2 +- apps/www/components/Tabs/Tabs.tsx | 2 +- apps/www/components/TabsWithHighlights.tsx | 4 +- apps/www/components/TwitterSocialSection.tsx | 4 +- apps/www/components/UsersGrowthChart.tsx | 6 +- .../Wrapped/AnimatedGridBackground.tsx | 4 +- .../Wrapped/Pages/CustomerStories.tsx | 8 +- apps/www/components/Wrapped/Pages/Devs.tsx | 10 +- apps/www/components/Wrapped/Pages/Home.tsx | 4 +- apps/www/components/Wrapped/Pages/Intro.tsx | 2 +- .../Wrapped/Pages/ProductAnnouncements.tsx | 10 +- .../Wrapped/Pages/SupabaseSelect.tsx | 11 +- .../www/components/Wrapped/Pages/YearOfAI.tsx | 14 +- apps/www/components/logos.tsx | 4 +- apps/www/data/aws-reinvent-2025.tsx | 18 +- apps/www/data/home/content.tsx | 4 +- apps/www/data/products/modules/cron.tsx | 8 +- apps/www/data/products/modules/queues.tsx | 8 +- apps/www/data/solutions/agencies.tsx | 18 +- apps/www/data/solutions/beginners.tsx | 10 +- apps/www/data/solutions/developers.tsx | 18 +- apps/www/data/solutions/firebase.tsx | 20 +- apps/www/data/solutions/hackathon.tsx | 18 +- apps/www/data/solutions/innovation-teams.tsx | 16 +- apps/www/data/solutions/neon.tsx | 20 +- apps/www/data/solutions/no-code.tsx | 24 +- .../data/solutions/postgres-developers.tsx | 36 +- apps/www/data/solutions/startups.tsx | 20 +- apps/www/data/solutions/vibe-coders.tsx | 12 +- apps/www/data/support.tsx | 2 +- apps/www/layouts/comparison.tsx | 2 +- apps/www/pages/404.tsx | 4 +- apps/www/pages/_app.tsx | 2 +- apps/www/pages/assistant.tsx | 4 +- apps/www/pages/auth.tsx | 2 +- apps/www/pages/aws-reinvent-2025.tsx | 2 +- apps/www/pages/beta.tsx | 2 +- apps/www/pages/careers.tsx | 42 +- apps/www/pages/changelog.tsx | 8 +- apps/www/pages/changelog/[slug].tsx | 2 +- apps/www/pages/contact-us.tsx | 4 +- apps/www/pages/contact/sales.tsx | 10 +- apps/www/pages/customers.tsx | 2 +- apps/www/pages/customers/[slug].tsx | 6 +- apps/www/pages/edge-functions.tsx | 6 +- apps/www/pages/events/[slug].tsx | 26 +- apps/www/pages/features.tsx | 24 +- apps/www/pages/features/[slug].tsx | 8 +- apps/www/pages/ga.tsx | 36 +- apps/www/pages/launch-week/12/index.tsx | 2 +- apps/www/pages/launch-week/6/index.tsx | 82 +-- apps/www/pages/launch-week/7/index.tsx | 6 +- apps/www/pages/launch-week/8/index.tsx | 14 +- apps/www/pages/launch-week/ticket.tsx | 2 +- .../pages/launch-week/tickets/[username].tsx | 2 +- apps/www/pages/launch-week/x/index.tsx | 2 +- apps/www/pages/modules/cron.tsx | 4 +- apps/www/pages/modules/queues.tsx | 4 +- apps/www/pages/modules/vector.tsx | 6 +- apps/www/pages/open-source.tsx | 6 +- .../open-source/contributing/supasquad.tsx | 2 +- apps/www/pages/opt-out/[ref].tsx | 2 +- apps/www/pages/partners/index.tsx | 14 +- .../pages/partners/integrations/[slug].tsx | 8 +- apps/www/pages/realtime.tsx | 10 +- apps/www/pages/solutions/agencies.tsx | 2 +- apps/www/pages/solutions/agents.tsx | 4 +- apps/www/pages/solutions/ai-builders.tsx | 2 +- apps/www/pages/solutions/b2b-saas.tsx | 4 +- apps/www/pages/solutions/beginners.tsx | 2 +- apps/www/pages/solutions/developers.tsx | 4 +- apps/www/pages/solutions/enterprise.tsx | 2 +- apps/www/pages/solutions/finserv.tsx | 4 +- apps/www/pages/solutions/healthcare.tsx | 4 +- apps/www/pages/solutions/innovation-teams.tsx | 2 +- apps/www/pages/solutions/no-code.tsx | 2 +- .../pages/solutions/postgres-developers.tsx | 2 +- apps/www/pages/solutions/startups.tsx | 4 +- apps/www/pages/solutions/vibe-coders.tsx | 2 +- apps/www/pages/state-of-startups-2025.tsx | 2 +- apps/www/pages/support.tsx | 10 +- apps/www/styles/career.module.css | 2 + apps/www/styles/index.css | 36 +- apps/www/tailwind.config.js | 18 +- packages/config/package.json | 1 + packages/config/postcss.config.js | 4 +- packages/config/tailwind.config.js | 16 +- packages/config/typography.css | 107 ++-- packages/config/ui.config.js | 5 + packages/dev-tools/DevToolbar.tsx | 18 +- packages/dev-tools/package.json | 2 + packages/marketing/package.json | 10 +- .../src/go/sections/CodeBlockSection.tsx | 6 +- .../src/go/sections/CodeBlockTabs.tsx | 4 +- .../marketing/src/go/sections/FaqSection.tsx | 2 +- .../src/go/sections/FeatureGridSection.tsx | 2 +- .../marketing/src/go/sections/HeroSection.tsx | 2 +- .../src/go/sections/HubSpotMeetingSection.tsx | 2 +- .../src/go/sections/MetricsSection.tsx | 2 +- .../src/go/sections/QuoteSection.tsx | 2 +- .../src/go/sections/SingleColumnSection.tsx | 6 +- .../src/go/sections/StepsSection.tsx | 2 +- .../src/go/sections/ThreeColumnSection.tsx | 4 +- .../src/go/sections/TwoColumnSection.tsx | 4 +- .../hubspot-meeting/TimezoneSelector.tsx | 2 +- packages/ui-patterns/package.json | 8 +- .../src/AssistantChat/AssistantChatForm.tsx | 2 +- .../src/AuthenticatedDropdownMenu/index.tsx | 2 +- .../ui-patterns/src/Banners/LW15Banner.tsx | 2 +- .../src/Chart/charts/chart-bar.tsx | 2 +- .../src/Chart/charts/chart-line.tsx | 2 +- packages/ui-patterns/src/Chart/index.tsx | 4 +- .../ui-patterns/src/CodeBlock/CodeBlock.tsx | 2 +- .../src/CommandMenu/api/Badges.tsx | 2 +- .../src/CommandMenu/api/CommandInput.tsx | 2 +- .../src/CommandMenu/api/CommandMenu.tsx | 8 +- .../src/CommandMenu/internal/Command.tsx | 4 +- .../src/CommandMenu/internal/CommandGroup.tsx | 2 +- .../prepackaged/DocsAi/DocsAiPage.tsx | 16 +- .../prepackaged/DocsSearch/DocsSearchPage.tsx | 14 +- .../CommandMenu/prepackaged/ai/AiWarning.tsx | 2 +- .../ui-patterns/src/ComputeBadge/index.tsx | 2 +- .../src/CountdownWidget/CountdownStep.tsx | 2 +- .../src/Dialogs/ConfirmationModal.tsx | 2 +- .../src/Dialogs/TextConfirmModal.tsx | 2 +- .../src/ErrorDisplay/ErrorDisplay.tsx | 2 +- .../ui-patterns/src/ExpandableVideo/index.tsx | 12 +- .../src/FilterBar/CommandListItem.tsx | 2 +- .../src/FilterBar/FilterCondition.tsx | 8 +- .../ui-patterns/src/FilterBar/FilterGroup.tsx | 4 +- .../src/FilterBar/OperatorSymbolBadge.tsx | 2 +- packages/ui-patterns/src/GlassPanel/index.tsx | 2 +- .../ui-patterns/src/InnerSideMenu/index.tsx | 2 +- .../ui-patterns/src/LogsBarChart/index.tsx | 2 +- .../components/McpConfigurationDisplay.tsx | 5 +- packages/ui-patterns/src/MetricCard/index.tsx | 2 +- packages/ui-patterns/src/PageHeader/index.tsx | 4 +- .../ui-patterns/src/PageSection/index.tsx | 6 +- packages/ui-patterns/src/PopupFrame/index.tsx | 8 +- .../ui-patterns/src/PromoToast/PromoToast.tsx | 2 +- packages/ui-patterns/src/Row/index.tsx | 2 +- .../src/ShimmeringLoader/index.tsx | 2 +- .../ui-patterns/src/SqlToRest/sql-to-rest.tsx | 2 +- packages/ui-patterns/src/TextLink/index.tsx | 2 +- packages/ui-patterns/src/Toc/toc.tsx | 8 +- packages/ui-patterns/src/TweetCard/index.tsx | 2 +- packages/ui-patterns/src/consent.tsx | 4 +- .../src/form/Layout/FormLayout.tsx | 4 +- .../src/multi-select/multi-select.tsx | 14 +- .../ui/src/components/Accordion/Accordion.tsx | 2 +- .../ui/src/components/Alert/Alert.module.css | 2 +- .../AlertCollapsible/AlertCollapsible.tsx | 2 +- packages/ui/src/components/Button/Button.tsx | 2 +- .../ui/src/components/Icon/IconBackground.tsx | 2 +- .../ui/src/components/Input/Input.module.css | 4 +- .../KeyboardShortcut/KeyboardShortcut.tsx | 2 +- .../ui/src/components/Menu/Menu.module.css | 2 +- packages/ui/src/components/Menu/Menu.tsx | 2 +- packages/ui/src/components/NavMenu/index.tsx | 2 +- .../src/components/Popover/Popover.module.css | 4 +- .../src/components/ShadowScrollArea/index.tsx | 16 +- packages/ui/src/components/StatusIcon.tsx | 12 +- .../ui/src/components/radio-group-card.tsx | 6 +- .../ui/src/components/radio-group-stacked.tsx | 8 +- .../src/components/shadcn/ui/alert-dialog.tsx | 4 +- .../ui/src/components/shadcn/ui/alert.tsx | 2 +- .../src/components/shadcn/ui/breadcrumb.tsx | 2 +- .../ui/src/components/shadcn/ui/button.tsx | 2 +- .../ui/src/components/shadcn/ui/calendar.tsx | 4 +- packages/ui/src/components/shadcn/ui/card.tsx | 11 +- .../ui/src/components/shadcn/ui/chart.tsx | 6 +- .../ui/src/components/shadcn/ui/checkbox.tsx | 4 +- .../ui/src/components/shadcn/ui/command.tsx | 14 +- .../src/components/shadcn/ui/context-menu.tsx | 12 +- .../ui/src/components/shadcn/ui/dialog.tsx | 10 +- .../components/shadcn/ui/dropdown-menu.tsx | 14 +- .../ui/src/components/shadcn/ui/field.tsx | 14 +- .../src/components/shadcn/ui/hover-card.tsx | 2 +- .../src/components/shadcn/ui/input-group.tsx | 8 +- .../ui/src/components/shadcn/ui/input-otp.tsx | 5 +- .../ui/src/components/shadcn/ui/input.tsx | 2 +- .../ui/src/components/shadcn/ui/menubar.tsx | 14 +- .../components/shadcn/ui/navigation-menu.tsx | 8 +- .../ui/src/components/shadcn/ui/popover.tsx | 2 +- .../src/components/shadcn/ui/radio-group.tsx | 6 +- .../ui/src/components/shadcn/ui/resizable.tsx | 4 +- .../src/components/shadcn/ui/scroll-area.tsx | 4 +- .../ui/src/components/shadcn/ui/select.tsx | 8 +- .../ui/src/components/shadcn/ui/separator.tsx | 2 +- .../ui/src/components/shadcn/ui/sheet.tsx | 6 +- .../ui/src/components/shadcn/ui/sidebar.tsx | 42 +- .../ui/src/components/shadcn/ui/slider.tsx | 2 +- .../ui/src/components/shadcn/ui/sonner.tsx | 8 +- .../ui/src/components/shadcn/ui/switch.tsx | 6 +- .../ui/src/components/shadcn/ui/table.tsx | 4 +- packages/ui/src/components/shadcn/ui/tabs.tsx | 4 +- .../ui/src/components/shadcn/ui/text-area.tsx | 2 +- .../ui/src/components/shadcn/ui/textarea.tsx | 2 +- .../ui/src/components/shadcn/ui/toggle.tsx | 2 +- packages/ui/src/lib/commonCva.ts | 4 +- packages/ui/src/lib/theme/defaultTheme.ts | 46 +- pnpm-lock.yaml | 470 ++++++++---------- pnpm-workspace.yaml | 16 +- scripts/tw-rename-utilities.ts | 131 +++++ 1137 files changed, 3216 insertions(+), 3102 deletions(-) create mode 100644 scripts/tw-rename-utilities.ts diff --git a/apps/design-system/__registry__/default/block/chart-composed-metrics.tsx b/apps/design-system/__registry__/default/block/chart-composed-metrics.tsx index 361c35a9a45..deab28e4ee2 100644 --- a/apps/design-system/__registry__/default/block/chart-composed-metrics.tsx +++ b/apps/design-system/__registry__/default/block/chart-composed-metrics.tsx @@ -71,7 +71,7 @@ export default function ChartComposedMetrics() { } + loadingState={} > @@ -89,7 +89,7 @@ export default function ChartComposedMetrics() { } + loadingState={} > diff --git a/apps/design-system/app/layout.tsx b/apps/design-system/app/layout.tsx index 143adbc56f9..93fa102345d 100644 --- a/apps/design-system/app/layout.tsx +++ b/apps/design-system/app/layout.tsx @@ -1,5 +1,5 @@ +import 'react-data-grid/lib/styles.css' import '@/styles/globals.css' -import 'config/typography.css' import type { Metadata, Viewport } from 'next' diff --git a/apps/design-system/components/class-label.tsx b/apps/design-system/components/class-label.tsx index 6575c2f4373..a779b1d353e 100644 --- a/apps/design-system/components/class-label.tsx +++ b/apps/design-system/components/class-label.tsx @@ -5,7 +5,7 @@ const ClassLabel = React.forwardRef {children} diff --git a/apps/design-system/components/code-block-wrapper.tsx b/apps/design-system/components/code-block-wrapper.tsx index 2a6c81ce03e..d4be5c110d3 100644 --- a/apps/design-system/components/code-block-wrapper.tsx +++ b/apps/design-system/components/code-block-wrapper.tsx @@ -36,7 +36,7 @@ export function CodeBlockWrapper({
diff --git a/apps/design-system/components/code-fragment.tsx b/apps/design-system/components/code-fragment.tsx index 4e688bf9c28..ccf33703720 100644 --- a/apps/design-system/components/code-fragment.tsx +++ b/apps/design-system/components/code-fragment.tsx @@ -51,7 +51,7 @@ export function CodeFragment({ return (

Code fragment{' '} - + {name} {' '} not found in registry. @@ -94,10 +94,10 @@ export function CodeFragment({ )} > {showGrid && ( -

+
)} {showDottedGrid && ( -
+
)}
{ComponentPreview}
diff --git a/apps/design-system/components/colors.tsx b/apps/design-system/components/colors.tsx index d7ba3a364c6..5a0660ac63a 100644 --- a/apps/design-system/components/colors.tsx +++ b/apps/design-system/components/colors.tsx @@ -70,7 +70,7 @@ const Colors = ({ onClick={() => handleCopy(x, i)} > - + {copiedIndex === i ? 'Copied!' : x} diff --git a/apps/design-system/components/command-menu.tsx b/apps/design-system/components/command-menu.tsx index a2dd7b3de58..fbd26bea2e8 100644 --- a/apps/design-system/components/command-menu.tsx +++ b/apps/design-system/components/command-menu.tsx @@ -56,7 +56,7 @@ export function CommandMenu({ ...props }: DialogProps) { diff --git a/apps/design-system/components/component-preview.tsx b/apps/design-system/components/component-preview.tsx index b6c5005fcb1..0189c7ee1ed 100644 --- a/apps/design-system/components/component-preview.tsx +++ b/apps/design-system/components/component-preview.tsx @@ -55,7 +55,7 @@ export function ComponentPreview({ return (

Component{' '} - + {name} {' '} not found in registry. @@ -99,10 +99,10 @@ export function ComponentPreview({ )} > {showGrid && ( -

+
)} {showDottedGrid && ( -
+
)}
{ComponentPreview}
{/*
*/} @@ -144,10 +144,10 @@ export function ComponentPreview({ })} > {showGrid && ( -
+
)} {showDottedGrid && ( -
+
)}
{ComponentPreview}
@@ -164,12 +164,12 @@ export function ComponentPreview({ px-4 py-4 border border-r group - data-[state=closed]:rounded-bl-md data-[state=closed]:rounded-br-md + data-closed:rounded-bl-md data-closed:rounded-br-md `} > View code diff --git a/apps/design-system/components/grid.tsx b/apps/design-system/components/grid.tsx index 659117a7737..23ca11ac432 100644 --- a/apps/design-system/components/grid.tsx +++ b/apps/design-system/components/grid.tsx @@ -47,8 +47,8 @@ const GridItem = forwardRef>( transition group-hover:border group-hover:border-foreground-muted - group-data-[state=open]:border - group-data-[state=open]:border-foreground-muted + group-data-open:border + group-data-open:border-foreground-muted " > {children} diff --git a/apps/design-system/components/icons.tsx b/apps/design-system/components/icons.tsx index e94f408759d..ce07e959a04 100644 --- a/apps/design-system/components/icons.tsx +++ b/apps/design-system/components/icons.tsx @@ -18,11 +18,8 @@ function Icons() { - - + + {icon.name} diff --git a/apps/design-system/components/mdx-components.tsx b/apps/design-system/components/mdx-components.tsx index 5e44875ed9e..6d260d75c57 100644 --- a/apps/design-system/components/mdx-components.tsx +++ b/apps/design-system/components/mdx-components.tsx @@ -92,10 +92,7 @@ const components = { /> ), p: ({ className, ...props }: React.HTMLAttributes) => ( -

+

), ul: ({ className, ...props }: React.HTMLAttributes) => (

    @@ -127,7 +124,7 @@ const components = { th: ({ className, ...props }: React.HTMLAttributes) => ( ) => ( ) => ( ) => ( { return null } - const iconClasses = 'text-foreground-lighter group-data-[state=open]:text-foreground' + const iconClasses = 'text-foreground-lighter group-data-open:text-foreground' return ( <> diff --git a/apps/design-system/components/top-navigation.tsx b/apps/design-system/components/top-navigation.tsx index 0af6b28d06b..232167a8528 100644 --- a/apps/design-system/components/top-navigation.tsx +++ b/apps/design-system/components/top-navigation.tsx @@ -13,7 +13,7 @@ export const TopNavigation = () => { const { toggle } = useMobileSidebar() return ( -
    +
-

+

As a result, people stopped telling jokes, and the kingdom fell into a gloom. But there was one person who refused to let the king's foolishness get him down: a court jester named Jokester. @@ -41,12 +41,12 @@ export default function TypographyDemo() {

Jokester's Revolt

-

+

Jokester began sneaking into the castle in the middle of the night and leaving jokes all over the place: under the king's pillow, in his soup, even in the royal toilet. The king was furious, but he couldn't seem to stop Jokester.

-

+

And then, one day, the people of the kingdom discovered that the jokes left by Jokester were so funny that they couldn't help but laugh. And once they started laughing, they couldn't stop. @@ -54,7 +54,7 @@ export default function TypographyDemo() {

The People's Rebellion

-

+

The people of the kingdom, feeling uplifted by the laughter, started to tell jokes and puns again, and soon the entire kingdom was in on the joke.

@@ -62,48 +62,48 @@ export default function TypographyDemo() { - - - - - - - -
+ King's Treasury + People's happiness
+ Empty + Overflowing
+ Modest + Satisfied
+ Full + Ecstatic
-

+

The king, seeing how much happier his subjects were, realized the error of his ways and repealed the joke tax. Jokester was declared a hero, and the kingdom lived happily ever after.

-

+

The moral of the story is: never underestimate the power of a good laugh and always be careful of bad ideas.

diff --git a/apps/design-system/registry/default/example/typography-inline-code.tsx b/apps/design-system/registry/default/example/typography-inline-code.tsx index fbbc96ba688..36e5b271396 100644 --- a/apps/design-system/registry/default/example/typography-inline-code.tsx +++ b/apps/design-system/registry/default/example/typography-inline-code.tsx @@ -1,6 +1,6 @@ export default function TypographyInlineCode() { return ( - + @radix-ui/react-alert-dialog ) diff --git a/apps/design-system/registry/default/example/typography-p.tsx b/apps/design-system/registry/default/example/typography-p.tsx index 0a20c523c48..ed5f1131101 100644 --- a/apps/design-system/registry/default/example/typography-p.tsx +++ b/apps/design-system/registry/default/example/typography-p.tsx @@ -1,6 +1,6 @@ export default function TypographyP() { return ( -

+

The king, seeing how much happier his subjects were, realized the error of his ways and repealed the joke tax.

diff --git a/apps/design-system/registry/default/example/typography-table.tsx b/apps/design-system/registry/default/example/typography-table.tsx index 7a91dfda844..a24e2c5316e 100644 --- a/apps/design-system/registry/default/example/typography-table.tsx +++ b/apps/design-system/registry/default/example/typography-table.tsx @@ -4,36 +4,36 @@ export default function TypographyTable() { - - - - - - - - diff --git a/apps/design-system/styles/globals.css b/apps/design-system/styles/globals.css index d1f98daa8a0..0160d13280c 100644 --- a/apps/design-system/styles/globals.css +++ b/apps/design-system/styles/globals.css @@ -1,11 +1,13 @@ +@import 'tailwindcss'; + @import './../../../packages/ui/build/css/source/global.css'; @import './../../../packages/ui/build/css/themes/dark.css'; @import './../../../packages/ui/build/css/themes/classic-dark.css'; @import './../../../packages/ui/build/css/themes/light.css'; -@tailwind base; -@tailwind components; -@tailwind utilities; +@config '../tailwind.config.js'; + +@import 'config/typography.css'; @layer base { :root { @@ -68,3 +70,7 @@ @apply px-4; } } + +.rdg-cell { + padding-inline: 0.5rem; +} diff --git a/apps/design-system/styles/mdx.css b/apps/design-system/styles/mdx.css index 84391167b6f..32f049edca0 100644 --- a/apps/design-system/styles/mdx.css +++ b/apps/design-system/styles/mdx.css @@ -1,3 +1,5 @@ +@reference './globals.css'; + /* [data-theme="light"] { display: block; } */ diff --git a/apps/design-system/tailwind.config.js b/apps/design-system/tailwind.config.js index 4d875930e75..e329c8e381e 100644 --- a/apps/design-system/tailwind.config.js +++ b/apps/design-system/tailwind.config.js @@ -5,12 +5,12 @@ module.exports = config({ './app/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}', './registry/**/*.{js,ts,jsx,tsx}', + './content/**/*.mdx', // purge styles from grid library // './../../packages/ui/src/**/*.{tsx,ts,js}', './../../packages/ui-patterns/src/**/*.{tsx,ts,js}', ], - plugins: [require('@tailwindcss/container-queries')], theme: { extend: { maxWidth: { diff --git a/apps/docs/app/graphiql/page.tsx b/apps/docs/app/graphiql/page.tsx index 671b5525963..377685efd69 100644 --- a/apps/docs/app/graphiql/page.tsx +++ b/apps/docs/app/graphiql/page.tsx @@ -29,5 +29,5 @@ export default function GraphiQLPage() { notFound() } - return + return } diff --git a/apps/docs/app/guides/database/database-advisors/page.tsx b/apps/docs/app/guides/database/database-advisors/page.tsx index 334be03cd77..889dff9b749 100644 --- a/apps/docs/app/guides/database/database-advisors/page.tsx +++ b/apps/docs/app/guides/database/database-advisors/page.tsx @@ -87,7 +87,7 @@ const DatabaseAdvisorDocs = async () => { . ) : ( - + {lints.map((lint) => ( {nestedAttribute}
    -
  • +
  • { schema[resource].block.attributes[attribute].nested_type @@ -285,7 +285,7 @@ function DataSources({ schema }: { schema: any }) {
  • {nestedAttribute}
      -
    • +
    • { schema[dataSource].block.attributes[attribute].nested_type diff --git a/apps/docs/app/guides/troubleshooting/page.tsx b/apps/docs/app/guides/troubleshooting/page.tsx index 74582ef4838..d00356c6e27 100644 --- a/apps/docs/app/guides/troubleshooting/page.tsx +++ b/apps/docs/app/guides/troubleshooting/page.tsx @@ -26,7 +26,7 @@ export default async function GlobalTroubleshootingPage() { const errors = await getAllTroubleshootingErrors() return ( - +

      Troubleshooting

      diff --git a/apps/docs/components/AuthSmsProviderConfig/AuthSmsProviderConfig.tsx b/apps/docs/components/AuthSmsProviderConfig/AuthSmsProviderConfig.tsx index 357b37ffa77..9e634a825d2 100644 --- a/apps/docs/components/AuthSmsProviderConfig/AuthSmsProviderConfig.tsx +++ b/apps/docs/components/AuthSmsProviderConfig/AuthSmsProviderConfig.tsx @@ -62,18 +62,18 @@ const AuthSmsProviderConfig = () => { > {selectedProvider && ( { evt.preventDefault() headingRef.current?.focus() }} > - + {selectedProvider.name} - + {selectedProvider.name.toLowerCase().includes('messagebird') && } {selectedProvider.name.toLowerCase().includes('twilio') && } {selectedProvider.name.toLowerCase().includes('vonage') && } diff --git a/apps/docs/components/BodyContentTypeDropdown.tsx b/apps/docs/components/BodyContentTypeDropdown.tsx index 46c5437272e..33334ae094d 100644 --- a/apps/docs/components/BodyContentTypeDropdown.tsx +++ b/apps/docs/components/BodyContentTypeDropdown.tsx @@ -26,7 +26,7 @@ const BodyContentTypeDropdown = ({ types, onSelect }: IParamProps) => { border hover:border-control hover:bg-overlay-hover - border-control px-2 h-[32px] rounded + border-control px-2 h-[32px] rounded-sm font-mono flex items-center gap-1 text-foreground text-sm group-hover:text-foreground transition diff --git a/apps/docs/components/ButtonCard.tsx b/apps/docs/components/ButtonCard.tsx index ecc50fd15c0..f7df15298f3 100644 --- a/apps/docs/components/ButtonCard.tsx +++ b/apps/docs/components/ButtonCard.tsx @@ -26,7 +26,7 @@ const ButtonCard: FC = ({

      -
      +
      diff --git a/apps/docs/components/Navigation/NavigationMenu/GlobalNavigationMenu.tsx b/apps/docs/components/Navigation/NavigationMenu/GlobalNavigationMenu.tsx index 29445946b4d..f323b7737a7 100644 --- a/apps/docs/components/Navigation/NavigationMenu/GlobalNavigationMenu.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/GlobalNavigationMenu.tsx @@ -59,7 +59,7 @@ export const useActiveMenuLabel = (menu: typeof GLOBAL_MENU_ITEMS) => { const GlobalNavigationMenu: FC = () => { const activeLabel = useActiveMenuLabel(GLOBAL_MENU_ITEMS) const triggerClassName = - 'h-[var(--header-height)] p-2 bg-transparent border-0 border-b-2 border-transparent font-normal rounded-none text-foreground-light hover:text-foreground data-[state=open]:!text-foreground data-[radix-collection-item]:focus-visible:ring-2 data-[radix-collection-item]:focus-visible:ring-foreground-lighter data-[radix-collection-item]:focus-visible:text-foreground h-full focus-visible:rounded !shadow-none outline-none transition-all outline-0 focus-visible:outline-4 focus-visible:outline-offset-1 focus-visible:outline-brand-600' + 'h-(--header-height) p-2 bg-transparent border-0 border-b-2 border-transparent font-normal rounded-none text-foreground-light hover:text-foreground data-open:text-foreground! data-radix-collection-item:focus-visible:ring-2 data-radix-collection-item:focus-visible:ring-foreground-lighter data-radix-collection-item:focus-visible:text-foreground h-full focus-visible:rounded-sm shadow-none! outline-hidden transition-all outline-0 focus-visible:outline-4 focus-visible:outline-offset-1 focus-visible:outline-brand-600' return (
      @@ -68,9 +68,9 @@ const GlobalNavigationMenu: FC = () => { skipDelayDuration={0} className="w-full flex justify-start h-full" renderViewport={false} - viewportClassName="mt-0 max-w-screen overflow-hidden border-0 rounded-none mt-1.5 rounded-md !border-x" + viewportClassName="mt-0 max-w-screen overflow-hidden border-0 rounded-none mt-1.5 rounded-md border-x!" > - + {GLOBAL_MENU_ITEMS.filter((section) => section[0].enabled !== false).map( (section, sectionIdx) => section[0].menuItems ? ( @@ -91,7 +91,7 @@ const GlobalNavigationMenu: FC = () => { section[0].label )} - +
      {section[0].menuItems?.map((menuItem, menuItemIndex) => ( {

      diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenuRefListItems.tsx b/apps/docs/components/Navigation/NavigationMenu/NavigationMenuRefListItems.tsx index 5f4a5836cd3..18e8d40f6cb 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenuRefListItems.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenuRefListItems.tsx @@ -78,7 +78,7 @@ const FunctionLink = memo(function FunctionLink({ {active && !isSubItem && ( )} {isParent && ( diff --git a/apps/docs/components/Navigation/NavigationMenu/TopNavBar.tsx b/apps/docs/components/Navigation/NavigationMenu/TopNavBar.tsx index 66221d9e786..ed7537aab81 100644 --- a/apps/docs/components/Navigation/NavigationMenu/TopNavBar.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/TopNavBar.tsx @@ -32,9 +32,9 @@ const TopNavBar: FC = () => { <>

+ King's Treasury + People's happiness
+ Empty + Overflowing
+ Modest + Satisfied
+ Full + Ecstatic
) => ( { ) } - const iconClasses = 'text-foreground-light group-data-[state=open]:text-foreground' + const iconClasses = 'text-foreground-light group-data-open:text-foreground' return ( <> diff --git a/apps/learn/components/what-will-i-learn.tsx b/apps/learn/components/what-will-i-learn.tsx index 4be8a0522c2..178bbf07318 100644 --- a/apps/learn/components/what-will-i-learn.tsx +++ b/apps/learn/components/what-will-i-learn.tsx @@ -100,19 +100,19 @@ export function WhatWillILearn() {
    -
  • +
  • Real-time room monitoring that tracks live occupancy, sensor readings
  • -
  • +
  • Booking management with live status filters, calendar integrations.
  • -
  • +
  • @@ -120,7 +120,7 @@ export function WhatWillILearn() { Advanced analytics that surface 30+ days of utilization trends and patterns.
  • -
  • +
  • diff --git a/apps/learn/package.json b/apps/learn/package.json index 1f75dbc32e4..217c202dc5b 100644 --- a/apps/learn/package.json +++ b/apps/learn/package.json @@ -43,8 +43,9 @@ "@types/react": "catalog:", "config": "workspace:^", "mdast-util-toc": "^6.1.1", + "shiki": "^1.1.7", + "tailwindcss": "catalog:", "tsconfig": "workspace:*", - "tsx": "catalog:", - "shiki": "^1.1.7" + "tsx": "catalog:" } } diff --git a/apps/learn/styles/globals.css b/apps/learn/styles/globals.css index 6f47ae5da96..54735e85e71 100644 --- a/apps/learn/styles/globals.css +++ b/apps/learn/styles/globals.css @@ -1,11 +1,11 @@ +@import 'tailwindcss'; + @import './../../../packages/ui/build/css/source/global.css'; @import './../../../packages/ui/build/css/themes/dark.css'; @import './../../../packages/ui/build/css/themes/classic-dark.css'; @import './../../../packages/ui/build/css/themes/light.css'; -@tailwind base; -@tailwind components; -@tailwind utilities; +@config '../tailwind.config.js'; @layer base { :root { diff --git a/apps/learn/styles/mdx.css b/apps/learn/styles/mdx.css index 66ebc271c5c..8b06fb2d87f 100644 --- a/apps/learn/styles/mdx.css +++ b/apps/learn/styles/mdx.css @@ -1,3 +1,5 @@ +@reference './globals.css'; + .dark [data-theme='light'] { display: none; } diff --git a/apps/lite-studio/app/app.css b/apps/lite-studio/app/app.css index 67093bff5cd..da69bb81ee1 100644 --- a/apps/lite-studio/app/app.css +++ b/apps/lite-studio/app/app.css @@ -1,8 +1,12 @@ +@import 'tailwindcss'; + @import './../../../packages/ui/build/css/source/global.css'; @import './../../../packages/ui/build/css/themes/dark.css'; @import './../../../packages/ui/build/css/themes/light.css'; -@tailwind components; +@config '../tailwind.config.js'; + +@import 'config/typography.css'; @font-face { font-family: 'custom-font'; diff --git a/apps/lite-studio/app/root.tsx b/apps/lite-studio/app/root.tsx index 73dda59651e..6ea72dfb0f6 100644 --- a/apps/lite-studio/app/root.tsx +++ b/apps/lite-studio/app/root.tsx @@ -3,7 +3,6 @@ import { isRouteErrorResponse, Links, Meta, Outlet, Scripts, ScrollRestoration } import type { Route } from './+types/root' import './app.css' -import 'config/typography.css' export const links: Route.LinksFunction = () => [ { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, diff --git a/apps/lite-studio/package.json b/apps/lite-studio/package.json index 7429825bb70..54379669df7 100644 --- a/apps/lite-studio/package.json +++ b/apps/lite-studio/package.json @@ -25,7 +25,6 @@ "@types/node": "^22", "@types/react": "catalog:", "@types/react-dom": "catalog:", - "autoprefixer": "^10.4.27", "config": "workspace:*", "postcss": "catalog:", "tailwindcss": "catalog:", diff --git a/apps/studio/components/grid/components/editor/DateTimeEditor.tsx b/apps/studio/components/grid/components/editor/DateTimeEditor.tsx index 8f0e8f4ac33..321308e17c9 100644 --- a/apps/studio/components/grid/components/editor/DateTimeEditor.tsx +++ b/apps/studio/components/grid/components/editor/DateTimeEditor.tsx @@ -93,7 +93,7 @@ function BaseEditor({ value={inputValue ?? ''} placeholder={format} onChange={(e) => setInputValue(e.target.value)} - className="border-0 rounded-none bg-dash-sidebar outline-none !ring-0 !ring-offset-0" + className="border-0 rounded-none bg-dash-sidebar outline-hidden ring-0! ring-offset-0!" />
    @@ -107,7 +107,7 @@ function BaseEditor({ displayAs="utc" utcTimestamp={timeValue} labelFormat="DD MMM YYYY HH:mm:ss (ZZ)" - className="text-left !text-sm font-mono tracking-tight" + className="text-left text-sm! font-mono tracking-tight" /> ) : (

    @@ -126,13 +126,13 @@ function BaseEditor({

    -
    +
    ⏎

    {applyChangesLabel}

    -
    +
    Esc

    Cancel changes

    diff --git a/apps/studio/components/grid/components/editor/JsonEditor.tsx b/apps/studio/components/grid/components/editor/JsonEditor.tsx index da6ed1e8162..58822f49b77 100644 --- a/apps/studio/components/grid/components/editor/JsonEditor.tsx +++ b/apps/studio/components/grid/components/editor/JsonEditor.tsx @@ -187,13 +187,13 @@ export const JsonEditor = ({ {isEditable && (
    -
    +
    ⏎

    {applyChangesLabel}

    -
    +
    Esc

    Cancel changes

    @@ -204,7 +204,7 @@ export const JsonEditor = ({
    onSelectExpand()} diff --git a/apps/studio/components/grid/components/editor/TextEditor.tsx b/apps/studio/components/grid/components/editor/TextEditor.tsx index d719cf39074..494adf84018 100644 --- a/apps/studio/components/grid/components/editor/TextEditor.tsx +++ b/apps/studio/components/grid/components/editor/TextEditor.tsx @@ -143,13 +143,13 @@ export const TextEditor = ({
    -
    +
    ⏎

    {applyChangesLabel}

    -
    +
    Esc

    Cancel changes

    diff --git a/apps/studio/components/grid/components/formatter/ReferenceRecordPeek.tsx b/apps/studio/components/grid/components/formatter/ReferenceRecordPeek.tsx index 8fb5bf1bd44..0d7e1043991 100644 --- a/apps/studio/components/grid/components/formatter/ReferenceRecordPeek.tsx +++ b/apps/studio/components/grid/components/formatter/ReferenceRecordPeek.tsx @@ -80,7 +80,7 @@ export const ReferenceRecordPeek = ({ table, column, value }: ReferenceRecordPee sortable: false, width: columnWidth, minWidth: COLUMN_MIN_WIDTH, - headerCellClass: 'outline-none !shadow-none', + headerCellClass: 'outline-hidden shadow-none!', renderHeaderCell: () => (
    {isPrimaryKey && ( diff --git a/apps/studio/components/grid/components/grid/ColumnHeader.tsx b/apps/studio/components/grid/components/grid/ColumnHeader.tsx index 30808cbec6c..cc75818f6f8 100644 --- a/apps/studio/components/grid/components/grid/ColumnHeader.tsx +++ b/apps/studio/components/grid/components/grid/ColumnHeader.tsx @@ -88,7 +88,7 @@ export function ColumnHeader({ onClick={() => openSheet(column.name as string)} > View {column.name} index suggestion - + @@ -124,20 +124,20 @@ function ColumnIcon({

    Foreign key relation:

    -

    {name}

    - -

    +

    {name}

    + +

    {foreignKey?.targetTableSchema}.{foreignKey?.targetTableName}. {foreignKey?.targetColumnName}

    {foreignKey?.updateAction !== FOREIGN_KEY_CASCADE_ACTION.NO_ACTION && ( -

    +

    On update: {getForeignKeyCascadeAction(foreignKey?.updateAction)}

    )} {foreignKey?.deletionAction !== FOREIGN_KEY_CASCADE_ACTION.NO_ACTION && ( -

    +

    On delete: {getForeignKeyCascadeAction(foreignKey?.deletionAction)}

    )} diff --git a/apps/studio/components/grid/components/grid/ColumnOverlayItem.tsx b/apps/studio/components/grid/components/grid/ColumnOverlayItem.tsx index e5cd5bbe03c..f48b9cedb47 100644 --- a/apps/studio/components/grid/components/grid/ColumnOverlayItem.tsx +++ b/apps/studio/components/grid/components/grid/ColumnOverlayItem.tsx @@ -34,7 +34,7 @@ export function ColumnOverlayItem({ column }: ColumnOverlayItemProps) { {columnFormat === 'bytea' ? ` (hex)` : ''} {column.isEncrypted && } - {hasIndexSuggestion && } + {hasIndexSuggestion && }
    ) diff --git a/apps/studio/components/grid/components/grid/Grid.tsx b/apps/studio/components/grid/components/grid/Grid.tsx index 4377e34d5ef..f714cf5d01d 100644 --- a/apps/studio/components/grid/components/grid/Grid.tsx +++ b/apps/studio/components/grid/components/grid/Grid.tsx @@ -231,7 +231,7 @@ export const Grid = memo( {(rows ?? []).length === 0 && (
    {isLoading && !isDisabled && ( diff --git a/apps/studio/components/grid/components/grid/GridError.tsx b/apps/studio/components/grid/components/grid/GridError.tsx index 1574b239fd4..cdedbab22f1 100644 --- a/apps/studio/components/grid/components/grid/GridError.tsx +++ b/apps/studio/components/grid/components/grid/GridError.tsx @@ -121,7 +121,7 @@ const FilterError = ({ removeAllFilters }: { removeAllFilters: () => void }) => className="pointer-events-auto" title="No results found — check your filter values" > -

    +

    One or more of your filters may have a value or operator that doesn't match the column's data type. Try updating or removing the filter.

    @@ -145,16 +145,16 @@ const InvalidOrderingOperatorError = ({ error }: { error: ResponseError }) => { className="pointer-events-auto" title={`Sorting is not supporting on ${sorts.length > 1 ? 'one of the selected columns' : 'the selected column'}`} > -

    +

    Unable to retrieve results as sorting is not supported on{' '} {sorts.length > 1 ? 'one of the selected columns' : 'the selected column'} due to its data type. ({formattedInvalidDataType})

    -

    +

    Remove any sorts on columns with the data type {formattedInvalidDataType} applying the sorts again.

    -

    +

    Error: {error.message}

    diff --git a/apps/studio/components/grid/components/header/Header.tsx b/apps/studio/components/grid/components/header/Header.tsx index c5cfec42e8c..20086e61688 100644 --- a/apps/studio/components/grid/components/header/Header.tsx +++ b/apps/studio/components/grid/components/header/Header.tsx @@ -145,7 +145,7 @@ const InsertButton = () => {
    @@ -169,7 +169,7 @@ const InsertButton = () => {
    @@ -204,11 +204,11 @@ const InsertButton = () => { }} >
    - + { }, [getRowAndColumn]) return ( - + Copy cell diff --git a/apps/studio/components/grid/context/TableIndexAdvisorContext.tsx b/apps/studio/components/grid/context/TableIndexAdvisorContext.tsx index c12f949293f..09d986de1c9 100644 --- a/apps/studio/components/grid/context/TableIndexAdvisorContext.tsx +++ b/apps/studio/components/grid/context/TableIndexAdvisorContext.tsx @@ -128,7 +128,7 @@ export function TableIndexAdvisorProvider({ {children} !open && closeSheet()}> - + Index Recommendation diff --git a/apps/studio/components/interfaces/APIKeys/APIKeyRow.tsx b/apps/studio/components/interfaces/APIKeys/APIKeyRow.tsx index 91115ebde06..764bad7a475 100644 --- a/apps/studio/components/interfaces/APIKeys/APIKeyRow.tsx +++ b/apps/studio/components/interfaces/APIKeys/APIKeyRow.tsx @@ -88,7 +88,7 @@ export const APIKeyRow = ({
    - + - + diff --git a/apps/studio/components/interfaces/Account/AccessTokens/AccessTokenTable/TableContainer.tsx b/apps/studio/components/interfaces/Account/AccessTokens/AccessTokenTable/TableContainer.tsx index 8462711f9fd..e684a587677 100644 --- a/apps/studio/components/interfaces/Account/AccessTokens/AccessTokenTable/TableContainer.tsx +++ b/apps/studio/components/interfaces/Account/AccessTokens/AccessTokenTable/TableContainer.tsx @@ -35,7 +35,7 @@ export const TableContainer = ({ children, sort, onSortChange }: TableContainerP Expires - + {children} diff --git a/apps/studio/components/interfaces/Account/AccessTokens/Scoped/NewScopedTokenSheet.tsx b/apps/studio/components/interfaces/Account/AccessTokens/Scoped/NewScopedTokenSheet.tsx index cc9a391d7dd..7943c87529b 100644 --- a/apps/studio/components/interfaces/Account/AccessTokens/Scoped/NewScopedTokenSheet.tsx +++ b/apps/studio/components/interfaces/Account/AccessTokens/Scoped/NewScopedTokenSheet.tsx @@ -247,7 +247,7 @@ export const NewScopedTokenSheet = ({ @@ -312,7 +312,7 @@ export const NewScopedTokenSheet = ({
    - +
    - + {(organizations ?? []).length > 0 ? ( <> diff --git a/apps/studio/components/interfaces/Account/TOTPFactors/AddNewFactorModal.tsx b/apps/studio/components/interfaces/Account/TOTPFactors/AddNewFactorModal.tsx index 1e0b9143c98..f9d6e06f927 100644 --- a/apps/studio/components/interfaces/Account/TOTPFactors/AddNewFactorModal.tsx +++ b/apps/studio/components/interfaces/Account/TOTPFactors/AddNewFactorModal.tsx @@ -217,7 +217,7 @@ const SecondStep = ({ {factor && (
    -
    +
    {factor.totp.uri}
    diff --git a/apps/studio/components/interfaces/Advisors/AdvisorRuleItem.tsx b/apps/studio/components/interfaces/Advisors/AdvisorRuleItem.tsx index 8f6afca5b60..62dbabdeb9d 100644 --- a/apps/studio/components/interfaces/Advisors/AdvisorRuleItem.tsx +++ b/apps/studio/components/interfaces/Advisors/AdvisorRuleItem.tsx @@ -106,7 +106,7 @@ export const AdvisorRuleItem = ({ lint }: AdvisorRuleItemProps) => { else setExpandedLint(undefined) }} > - +
    @@ -138,7 +138,7 @@ export const AdvisorRuleItem = ({ lint }: AdvisorRuleItemProps) => { 0 ? 'divide-y' : '' )} > diff --git a/apps/studio/components/interfaces/Advisors/AdvisorRules.tsx b/apps/studio/components/interfaces/Advisors/AdvisorRules.tsx index 72c59071b51..fe4056a3b64 100644 --- a/apps/studio/components/interfaces/Advisors/AdvisorRules.tsx +++ b/apps/studio/components/interfaces/Advisors/AdvisorRules.tsx @@ -11,7 +11,7 @@ export const AdvisorRules = ({ category }: AdvisorRulesProps) => { return ( - +
    {lints.map((lint) => ( diff --git a/apps/studio/components/interfaces/Advisors/AdvisorRules.utils.tsx b/apps/studio/components/interfaces/Advisors/AdvisorRules.utils.tsx index 62ff6b1e4d7..786a34457d6 100644 --- a/apps/studio/components/interfaces/Advisors/AdvisorRules.utils.tsx +++ b/apps/studio/components/interfaces/Advisors/AdvisorRules.utils.tsx @@ -25,7 +25,7 @@ export const generateRuleDescription = ({ return ( <>

    What this rule means:

    -

    +

    The "{lint?.title}" lint will be{' '} {disabled ? `ignored for ${!!member ? `this user only` : 'this project'}` diff --git a/apps/studio/components/interfaces/App/CommandMenu/ContextSearchResults.shared.tsx b/apps/studio/components/interfaces/App/CommandMenu/ContextSearchResults.shared.tsx index 2db9db46f0e..d2ae7fd773b 100644 --- a/apps/studio/components/interfaces/App/CommandMenu/ContextSearchResults.shared.tsx +++ b/apps/studio/components/interfaces/App/CommandMenu/ContextSearchResults.shared.tsx @@ -18,10 +18,10 @@ export function SkeletonResults() {

    {[0, 1, 2, 3].map((i) => (
    - +
    - - + +
    ))} @@ -88,7 +88,7 @@ export function ResultsList({ return ( diff --git a/apps/studio/components/interfaces/App/CommandMenu/CreateCommands.tsx b/apps/studio/components/interfaces/App/CommandMenu/CreateCommands.tsx index 2a91347b5a5..29e4c0b8898 100644 --- a/apps/studio/components/interfaces/App/CommandMenu/CreateCommands.tsx +++ b/apps/studio/components/interfaces/App/CommandMenu/CreateCommands.tsx @@ -330,7 +330,7 @@ export function useCreateCommands(options?: CommandOptions) { const getIcon = () => { if (isWrapper) { return ( -
    +
    {integration.icon()}
    ) diff --git a/apps/studio/components/interfaces/App/FeaturePreview/AdvisorRulesPreview.tsx b/apps/studio/components/interfaces/App/FeaturePreview/AdvisorRulesPreview.tsx index 2a96db1432a..1f4d3964817 100644 --- a/apps/studio/components/interfaces/App/FeaturePreview/AdvisorRulesPreview.tsx +++ b/apps/studio/components/interfaces/App/FeaturePreview/AdvisorRulesPreview.tsx @@ -21,9 +21,9 @@ export const AdvisorRulesPreview = () => { width={1296} height={900} alt="api-docs-side-panel-preview" - className="rounded border mb-4" + className="rounded-sm border mb-4" /> -
    +

    Enabling this preview will:

    • diff --git a/apps/studio/components/interfaces/App/FeaturePreview/CLSPreview.tsx b/apps/studio/components/interfaces/App/FeaturePreview/CLSPreview.tsx index e7064826eae..672f6bf0c6c 100644 --- a/apps/studio/components/interfaces/App/FeaturePreview/CLSPreview.tsx +++ b/apps/studio/components/interfaces/App/FeaturePreview/CLSPreview.tsx @@ -41,9 +41,9 @@ export const CLSPreview = () => { width={1860} height={970} alt="api-docs-side-panel-preview" - className="rounded border" + className="rounded-sm border" /> -
      +

      Enabling this preview will:

      • diff --git a/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewModal.tsx b/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewModal.tsx index ae16a7b11a1..01cdada28fd 100644 --- a/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewModal.tsx +++ b/apps/studio/components/interfaces/App/FeaturePreview/FeaturePreviewModal.tsx @@ -96,7 +96,7 @@ export const FeaturePreviewModal = () => { return ( - + Dashboard feature previews Get early access to new features and give feedback @@ -104,7 +104,7 @@ export const FeaturePreviewModal = () => { - + {allFeaturePreviews.length > 0 ? (
        @@ -136,7 +136,7 @@ export const FeaturePreviewModal = () => { {selectedFeature.isNew && New}
        - + {allFeaturePreviews.map((feature) => ( selectFeaturePreview(feature.key)} className={cn( - '!w-full flex-1 flex items-center justify-between p-4 border-b cursor-pointer bg transition', + 'w-full! flex-1 flex items-center justify-between p-4 border-b cursor-pointer bg transition', selectedFeature?.key === feature.key ? 'bg-surface-300' : 'bg-surface-100', className )} diff --git a/apps/studio/components/interfaces/App/FeaturePreview/InlineEditorPreview.tsx b/apps/studio/components/interfaces/App/FeaturePreview/InlineEditorPreview.tsx index 71f85053224..7b9beaa3d26 100644 --- a/apps/studio/components/interfaces/App/FeaturePreview/InlineEditorPreview.tsx +++ b/apps/studio/components/interfaces/App/FeaturePreview/InlineEditorPreview.tsx @@ -10,7 +10,7 @@ export const InlineEditorPreview = () => { width={1296} height={900} alt="api-docs-side-panel-preview" - className="rounded border mb-4" + className="rounded-sm border mb-4" />

        Edit policies, functions, and triggers directly in the inline SQL editor. When you select diff --git a/apps/studio/components/interfaces/App/FeaturePreview/PgDeltaDiffPreview.tsx b/apps/studio/components/interfaces/App/FeaturePreview/PgDeltaDiffPreview.tsx index 98b0bacfc5f..677fd196501 100644 --- a/apps/studio/components/interfaces/App/FeaturePreview/PgDeltaDiffPreview.tsx +++ b/apps/studio/components/interfaces/App/FeaturePreview/PgDeltaDiffPreview.tsx @@ -21,7 +21,7 @@ export const PgDeltaDiffPreview = () => {

      -
      +

      Enabling this preview will:

      • Use pg-delta to compute schema diffs when comparing branches, instead of migra
      • diff --git a/apps/studio/components/interfaces/App/FeaturePreview/RLSTesterPreview.tsx b/apps/studio/components/interfaces/App/FeaturePreview/RLSTesterPreview.tsx index 704b0dfd8f1..4f8a00c3def 100644 --- a/apps/studio/components/interfaces/App/FeaturePreview/RLSTesterPreview.tsx +++ b/apps/studio/components/interfaces/App/FeaturePreview/RLSTesterPreview.tsx @@ -20,9 +20,9 @@ export const RLSTesterPreview = () => { height={900} quality={100} alt="rls-tester-preview" - className="rounded border" + className="rounded-sm border" /> -
        +

        Enabling this preview will:

        • diff --git a/apps/studio/components/interfaces/App/FeaturePreview/UnifiedLogsPreview.tsx b/apps/studio/components/interfaces/App/FeaturePreview/UnifiedLogsPreview.tsx index fc623381159..7448f63c2d8 100644 --- a/apps/studio/components/interfaces/App/FeaturePreview/UnifiedLogsPreview.tsx +++ b/apps/studio/components/interfaces/App/FeaturePreview/UnifiedLogsPreview.tsx @@ -22,10 +22,10 @@ export const UnifiedLogsPreview = () => { src={`${BASE_PATH}/img/previews/new-logs-preview.png`} width={1296} height={900} - className="rounded border mb-4" + className="rounded-sm border mb-4" /> -
          +

          Enabling this preview will:

          • diff --git a/apps/studio/components/interfaces/Auth/AuditLogsForm.tsx b/apps/studio/components/interfaces/Auth/AuditLogsForm.tsx index 4e2a60fb64c..5c187bd0d45 100644 --- a/apps/studio/components/interfaces/Auth/AuditLogsForm.tsx +++ b/apps/studio/components/interfaces/Auth/AuditLogsForm.tsx @@ -173,7 +173,7 @@ export const AuditLogsForm = () => { . You are responsible for backing up, copying, or migrating existing data from the{' '} - + {AUDIT_LOG_ENTRIES_TABLE} {' '} table if needed. diff --git a/apps/studio/components/interfaces/Auth/AuthProvidersForm/AuthProvidersForm.constants.ts b/apps/studio/components/interfaces/Auth/AuthProvidersForm/AuthProvidersForm.constants.ts index cb272c121c5..a4e1318751e 100644 --- a/apps/studio/components/interfaces/Auth/AuthProvidersForm/AuthProvidersForm.constants.ts +++ b/apps/studio/components/interfaces/Auth/AuthProvidersForm/AuthProvidersForm.constants.ts @@ -6,7 +6,7 @@ export const ProviderCollapsibleClasses = [ 'hover:border-strong data-open:border-strong', 'data-open:pb-px col-span-12 mx-auto', '-space-y-px overflow-hidden', - 'border shadow', + 'border shadow-sm', 'transition', 'first:rounded-tl', 'first:rounded-tr', diff --git a/apps/studio/components/interfaces/Auth/CustomAuthProviders/CreateOrUpdateCustomProviderSheet.tsx b/apps/studio/components/interfaces/Auth/CustomAuthProviders/CreateOrUpdateCustomProviderSheet.tsx index e7765b0dc50..8916086b469 100644 --- a/apps/studio/components/interfaces/Auth/CustomAuthProviders/CreateOrUpdateCustomProviderSheet.tsx +++ b/apps/studio/components/interfaces/Auth/CustomAuthProviders/CreateOrUpdateCustomProviderSheet.tsx @@ -261,7 +261,7 @@ export const CreateOrUpdateCustomProviderSheet = ({ { Enabled -
            +
            @@ -421,7 +421,7 @@ export const CustomAuthProvidersList = () => {
diff --git a/apps/studio/components/interfaces/Auth/EmailTemplates/TemplateEditor.tsx b/apps/studio/components/interfaces/Auth/EmailTemplates/TemplateEditor.tsx index b701cdb43e7..7bedec7cfd1 100644 --- a/apps/studio/components/interfaces/Auth/EmailTemplates/TemplateEditor.tsx +++ b/apps/studio/components/interfaces/Auth/EmailTemplates/TemplateEditor.tsx @@ -285,12 +285,12 @@ export const TemplateEditor = ({ template }: TemplateEditorProps) => { {activeView === 'source' ? ( <> -
+
{ setBodyValue(e ?? '') if (bodyValue !== e) setHasUnsavedChanges(true) @@ -325,7 +325,7 @@ export const TemplateEditor = ({ template }: TemplateEditorProps) => { ) : ( <>