diff --git a/apps/design-system/components/color-palette.tsx b/apps/design-system/components/color-palette.tsx index 92f85bdbd8cc2..f568da8c511e0 100644 --- a/apps/design-system/components/color-palette.tsx +++ b/apps/design-system/components/color-palette.tsx @@ -64,7 +64,7 @@ const ColorPalette = () => { key={step * 100} type="button" onClick={() => handleCopy(reference)} - className="group relative flex aspect-square w-full items-center justify-center rounded-sm border border-overlay/40 transition hover:scale-[1.05] focus:outline-none focus-visible:ring-2 focus-visible:ring-foreground" + className="group relative flex aspect-square w-full items-center justify-center rounded-sm border border-overlay/40 transition-transform hover:scale-[1.05] focus-ring" style={{ backgroundColor: reference }} title={reference} > diff --git a/apps/design-system/registry/default/example/form-patterns-sidepanel.tsx b/apps/design-system/registry/default/example/form-patterns-sidepanel.tsx index 0ca56bf42ac97..1b3a146e357f8 100644 --- a/apps/design-system/registry/default/example/form-patterns-sidepanel.tsx +++ b/apps/design-system/registry/default/example/form-patterns-sidepanel.tsx @@ -319,7 +319,7 @@ export default function FormPatternsSidePanel() { tabIndex={0} type="button" onClick={() => uploadButtonRef.current?.click()} - className="flex items-center justify-center h-10 w-10 shrink-0 text-foreground-lighter hover:text-foreground-light overflow-hidden rounded-full bg-cover border hover:border-strong focus-visible:outline-brand-600" + className="flex items-center justify-center h-10 w-10 shrink-0 text-foreground-lighter hover:text-foreground-light overflow-hidden rounded-full bg-cover border hover:border-strong focus-ring" style={{ backgroundImage: logoUrl ? `url("${logoUrl}")` : 'none', }} diff --git a/apps/docs/components/Navigation/NavigationMenu/GlobalMobileMenu.tsx b/apps/docs/components/Navigation/NavigationMenu/GlobalMobileMenu.tsx index b3f69894d6c27..619222551c2ab 100644 --- a/apps/docs/components/Navigation/NavigationMenu/GlobalMobileMenu.tsx +++ b/apps/docs/components/Navigation/NavigationMenu/GlobalMobileMenu.tsx @@ -29,7 +29,7 @@ const listItem = { } const itemClassName = - 'block py-2 pl-2 pr-3.5 text-sm text-foreground-light hover:bg-surface-200 focus-visible:ring-2 focus-visible:outline-hidden focus-visible:ring-foreground-lighter focus-visible:rounded-sm' + 'block py-2 pl-2 pr-3.5 text-sm text-foreground-light hover:bg-surface-200 focus-ring rounded-sm' const AccordionMenuItem = ({ section }: { section: DropdownMenuItem[] }) => { const activeLabel = useActiveMenuLabel(GLOBAL_MENU_ITEMS) @@ -145,7 +145,7 @@ const GlobalMobileMenu = ({ open, setOpen }: Props) => { tabIndex={0} onClick={() => setOpen(false)} type="button" - className="inline-flex items-center justify-center focus:ring-brand bg-surface-100 hover:bg-surface-200 focus:outline-hidden focus:ring-2 focus:ring-inset border border-default bg-surface-100/75 text-foreground-light rounded-sm min-w-[30px] w-[30px] h-[30px]" + className="inline-flex items-center justify-center bg-surface-100 hover:bg-surface-200 border border-default bg-surface-100/75 text-foreground-light rounded-sm min-w-[30px] w-[30px] h-[30px] focus-ring" > Close menu diff --git a/apps/docs/components/Navigation/NavigationMenu/GlobalNavigationMenu.tsx b/apps/docs/components/Navigation/NavigationMenu/GlobalNavigationMenu.tsx index 3b6c71ed599a0..bd3c81b821189 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-(--header-height) p-2 bg-transparent border-0 border-b-2 border-transparent font-normal rounded-none text-foreground-light hover:bg-transparent hover:text-foreground data-open:bg-transparent! 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' + 'h-(--header-height) p-2 bg-transparent border-0 border-b-2 border-transparent font-normal rounded-none text-foreground-light hover:bg-transparent hover:text-foreground data-open:bg-transparent! data-open:text-foreground! focus-ring focus-visible:text-foreground h-full focus-visible:rounded-sm shadow-none!' return (
@@ -172,7 +172,7 @@ export const MenuItem = React.forwardRef< ref={ref} className={cn( 'group/menu-item flex items-center gap-2', - 'w-full flex h-8 items-center text-foreground-light text-sm hover:text-foreground select-none rounded-md p-2 leading-none no-underline outline-hidden! focus-visible:ring-2 focus-visible:ring-foreground-lighter focus-visible:text-foreground', + 'w-full flex h-8 items-center text-foreground-light text-sm hover:text-foreground select-none rounded-md p-2 leading-none no-underline focus-ring focus-visible:text-foreground', className )} {...props} diff --git a/apps/docs/features/ui/PromptPanel.tsx b/apps/docs/features/ui/PromptPanel.tsx index 9182f290b42da..8155548b70396 100644 --- a/apps/docs/features/ui/PromptPanel.tsx +++ b/apps/docs/features/ui/PromptPanel.tsx @@ -133,7 +133,7 @@ function ExpandableContent({ children }: { children: ReactNode }) { tabIndex={0} type="button" onClick={() => setIsExpanded((expanded) => !expanded)} - className="mt-2 text-sm text-brand-link transition-colors hover:text-brand focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-foreground-muted" + className="mt-2 text-sm text-brand-link transition-colors hover:text-brand focus-ring" aria-expanded={isExpanded} > {isExpanded ? 'Show less' : 'Show more'} @@ -192,7 +192,7 @@ function CopyButton({ label, value }: { label: string; value: string }) { setCopied(true) }) }} - className="rounded-sm p-1.5 text-foreground-muted transition-colors hover:bg-surface-200 hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-foreground-muted" + className="rounded-sm p-1.5 text-foreground-muted transition-colors hover:bg-surface-200 hover:text-foreground focus-ring" aria-label={copied ? `${label} copied` : `Copy ${label}`} title={copied ? 'Copied' : 'Copy to clipboard'} > diff --git a/apps/docs/features/ui/Tabs.tsx b/apps/docs/features/ui/Tabs.tsx index c227a87062011..2c01f57be29fe 100644 --- a/apps/docs/features/ui/Tabs.tsx +++ b/apps/docs/features/ui/Tabs.tsx @@ -55,7 +55,7 @@ export const tabsListVariants = cva(cn('flex'), { export const tabsTriggerListVariants = cva( cn( - 'relative cursor-pointer flex items-center space-x-2 text-center transition focus:outline-hidden focus-visible:ring-3 focus-visible:ring-foreground-muted focus-visible:border-foreground-muted' + 'relative cursor-pointer flex items-center space-x-2 text-center transition-colors focus-ring' ), { variants: { diff --git a/apps/studio/components/interfaces/Auth/CustomAuthProviders/CreateOrUpdateCustomProviderSheet.tsx b/apps/studio/components/interfaces/Auth/CustomAuthProviders/CreateOrUpdateCustomProviderSheet.tsx index 1fa18fbba32f8..c46a10f81e478 100644 --- a/apps/studio/components/interfaces/Auth/CustomAuthProviders/CreateOrUpdateCustomProviderSheet.tsx +++ b/apps/studio/components/interfaces/Auth/CustomAuthProviders/CreateOrUpdateCustomProviderSheet.tsx @@ -260,10 +260,8 @@ export const CreateOrUpdateCustomProviderSheet = ({
diff --git a/apps/studio/components/interfaces/Auth/OAuthApps/CreateOrUpdateOAuthAppSheet.tsx b/apps/studio/components/interfaces/Auth/OAuthApps/CreateOrUpdateOAuthAppSheet.tsx index ff6e87750ca44..a44a80a8d7c30 100644 --- a/apps/studio/components/interfaces/Auth/OAuthApps/CreateOrUpdateOAuthAppSheet.tsx +++ b/apps/studio/components/interfaces/Auth/OAuthApps/CreateOrUpdateOAuthAppSheet.tsx @@ -263,10 +263,8 @@ export const CreateOrUpdateOAuthAppSheet = ({
diff --git a/apps/studio/components/interfaces/Database/Policies/PolicyEditorPanel/PolicyEditorPanelHeader.tsx b/apps/studio/components/interfaces/Database/Policies/PolicyEditorPanel/PolicyEditorPanelHeader.tsx index 60b646d64c26f..debf11e9d9d30 100644 --- a/apps/studio/components/interfaces/Database/Policies/PolicyEditorPanel/PolicyEditorPanelHeader.tsx +++ b/apps/studio/components/interfaces/Database/Policies/PolicyEditorPanel/PolicyEditorPanelHeader.tsx @@ -30,9 +30,8 @@ export const PolicyEditorPanelHeader = ({
diff --git a/apps/studio/components/interfaces/Database/Replication/ReplicationPipelineStatus/SlotLagMetrics.tsx b/apps/studio/components/interfaces/Database/Replication/ReplicationPipelineStatus/SlotLagMetrics.tsx index 9c69b77f5ada7..767322c381a62 100644 --- a/apps/studio/components/interfaces/Database/Replication/ReplicationPipelineStatus/SlotLagMetrics.tsx +++ b/apps/studio/components/interfaces/Database/Replication/ReplicationPipelineStatus/SlotLagMetrics.tsx @@ -135,7 +135,7 @@ export const SlotLagMetricsList = ({ type="button" tabIndex={0} aria-label={`What is ${field.label}`} - className="inline-flex h-4 w-4 items-center justify-center rounded-full bg-surface-200 text-foreground-lighter transition-colors hover:bg-surface-300 hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-foreground-lighter" + className="inline-flex h-4 w-4 items-center justify-center rounded-full bg-surface-200 text-foreground-lighter transition-colors hover:bg-surface-300 hover:text-foreground focus-ring" > diff --git a/apps/studio/components/interfaces/Database/Replication/ReplicationPipelineStatus/SlotStatus.tsx b/apps/studio/components/interfaces/Database/Replication/ReplicationPipelineStatus/SlotStatus.tsx index 85bd503a804c2..3bbeada6407c6 100644 --- a/apps/studio/components/interfaces/Database/Replication/ReplicationPipelineStatus/SlotStatus.tsx +++ b/apps/studio/components/interfaces/Database/Replication/ReplicationPipelineStatus/SlotStatus.tsx @@ -66,7 +66,7 @@ export const SlotStatusLegend = () => { type="button" tabIndex={0} aria-label="What do the slot statuses mean?" - className="inline-flex h-4 w-4 items-center justify-center rounded-full bg-surface-200 text-foreground-lighter transition-colors hover:bg-surface-300 hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-foreground-lighter" + className="inline-flex h-4 w-4 items-center justify-center rounded-full bg-surface-200 text-foreground-lighter transition-colors hover:bg-surface-300 hover:text-foreground focus-ring" > diff --git a/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceCard.tsx b/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceCard.tsx index 0b1d6b3eb37e4..a32b1731b247e 100644 --- a/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceCard.tsx +++ b/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceCard.tsx @@ -18,7 +18,7 @@ export const MarketplaceCard = ({ integration, isInstalled }: MarketplaceCardPro return (
diff --git a/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceFeaturedHeroGrid.tsx b/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceFeaturedHeroGrid.tsx index 05d5dcaf01aa1..8a0fe9880feb5 100644 --- a/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceFeaturedHeroGrid.tsx +++ b/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceFeaturedHeroGrid.tsx @@ -113,7 +113,7 @@ export const MarketplaceFeaturedHeroGrid = ({
@@ -170,7 +170,7 @@ export const MarketplaceFeaturedHeroGrid = ({
diff --git a/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceFilterBar.tsx b/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceFilterBar.tsx index b66782689473d..0ea9161959f40 100644 --- a/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceFilterBar.tsx +++ b/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceFilterBar.tsx @@ -220,7 +220,7 @@ export const MarketplaceFilterBar = ({ onClick={() => onViewModeChange('grid')} className={cn( 'border-r px-2 py-1.5 rounded-l-md cursor-pointer', - 'focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground-muted focus-visible:ring-offset-1 focus-visible:ring-offset-background', + 'focus-visible:z-10 focus-ring', viewMode === 'grid' ? 'bg-surface-200 text-foreground' : 'text-foreground-light hover:bg-surface-100' @@ -235,7 +235,7 @@ export const MarketplaceFilterBar = ({ onClick={() => onViewModeChange('list')} className={cn( 'px-2 py-1.5 rounded-r-md cursor-pointer', - 'focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground-muted focus-visible:ring-offset-1 focus-visible:ring-offset-background', + 'focus-visible:z-10 focus-ring', viewMode === 'list' ? 'bg-surface-200 text-foreground' : 'text-foreground-light hover:bg-surface-100' diff --git a/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceListRow.tsx b/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceListRow.tsx index dc5055e059bbe..b19413b0511da 100644 --- a/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceListRow.tsx +++ b/apps/studio/components/interfaces/Integrations/Marketplace/MarketplaceListRow.tsx @@ -33,12 +33,9 @@ export const MarketplaceListRow = ({ integration, isInstalled }: MarketplaceList - +
-
+
{integration.name}
diff --git a/apps/studio/components/interfaces/ProjectHome/ConnectSection.tsx b/apps/studio/components/interfaces/ProjectHome/ConnectSection.tsx index 587ba378057cc..1bf15867cc532 100644 --- a/apps/studio/components/interfaces/ProjectHome/ConnectSection.tsx +++ b/apps/studio/components/interfaces/ProjectHome/ConnectSection.tsx @@ -92,7 +92,7 @@ export const ConnectSection = () => { onClick={() => handleActionClick(action)} className={cn( 'group flex items-center gap-3 p-4 text-left transition-colors min-h-[72px] w-full', - 'hover:bg-surface-100 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-brand', + 'hover:bg-surface-100 focus-ring', 'xl:min-h-32 xl:flex-col xl:justify-center xl:p-6 xl:text-center', ((action.requiresActiveProject ?? true) ? !isActiveHealthy diff --git a/apps/studio/components/interfaces/ProjectHome/SortableSection.tsx b/apps/studio/components/interfaces/ProjectHome/SortableSection.tsx index 3074852d286bf..9502472e12f89 100644 --- a/apps/studio/components/interfaces/ProjectHome/SortableSection.tsx +++ b/apps/studio/components/interfaces/ProjectHome/SortableSection.tsx @@ -27,8 +27,7 @@ export const SortableSection = ({ id, children }: SortableSectionProps) => { aria-label="Drag to reorder section" className={cn( 'absolute -left-6 top-2 text-foreground-muted hover:text-foreground cursor-grab active:cursor-grabbing', - 'rounded-sm outline-hidden', - 'focus-visible:outline-solid focus-visible:outline-4 focus-visible:outline-offset-1 focus-visible:outline-border-strong' + 'rounded-sm focus-ring' )} {...attributes} {...listeners} diff --git a/apps/studio/components/interfaces/QueryPerformance/QueryPerformanceMetrics.tsx b/apps/studio/components/interfaces/QueryPerformance/QueryPerformanceMetrics.tsx index 7063136cca588..cf6966ee7c234 100644 --- a/apps/studio/components/interfaces/QueryPerformance/QueryPerformanceMetrics.tsx +++ b/apps/studio/components/interfaces/QueryPerformance/QueryPerformanceMetrics.tsx @@ -71,7 +71,7 @@ export const QueryPerformanceMetrics = () => { type="button" tabIndex={0} aria-label="How are slow queries calculated?" - className="inline-flex h-4 w-4 items-center justify-center rounded-full bg-surface-200 text-foreground-lighter transition-colors hover:bg-surface-300 hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-foreground-lighter" + className="inline-flex h-4 w-4 items-center justify-center rounded-full bg-surface-200 text-foreground-lighter transition-colors hover:bg-surface-300 hover:text-foreground focus-ring" onClick={(e) => { e.stopPropagation() }} @@ -92,7 +92,7 @@ export const QueryPerformanceMetrics = () => { type="button" tabIndex={0} aria-label={`What is ${card.title}?`} - className="inline-flex h-4 w-4 items-center justify-center rounded-full bg-surface-200 text-foreground-lighter transition-colors hover:bg-surface-300 hover:text-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-foreground-lighter" + className="inline-flex h-4 w-4 items-center justify-center rounded-full bg-surface-200 text-foreground-lighter transition-colors hover:bg-surface-300 hover:text-foreground focus-ring" onClick={(e) => { e.stopPropagation() }} diff --git a/apps/studio/components/interfaces/Storage/StoragePolicies/StoragePoliciesBucketsSection.tsx b/apps/studio/components/interfaces/Storage/StoragePolicies/StoragePoliciesBucketsSection.tsx index 98cff2d655006..42835b9e1cc38 100644 --- a/apps/studio/components/interfaces/Storage/StoragePolicies/StoragePoliciesBucketsSection.tsx +++ b/apps/studio/components/interfaces/Storage/StoragePolicies/StoragePoliciesBucketsSection.tsx @@ -72,7 +72,7 @@ export const BucketsPolicies = ({ aria-label="Toggle bucket list" className={cn( 'rounded-md p-1 text-foreground-light hover:text-foreground', - 'outline-hidden focus-visible:ring-2 focus-visible:ring-foreground-muted focus-visible:ring-offset-1 focus-visible:ring-offset-background' + 'focus-ring' )} > diff --git a/apps/studio/components/interfaces/Storage/StoragePolicies/StoragePolicyEditorModalTitle.tsx b/apps/studio/components/interfaces/Storage/StoragePolicies/StoragePolicyEditorModalTitle.tsx index 8f837ab6c383d..137403b158034 100644 --- a/apps/studio/components/interfaces/Storage/StoragePolicies/StoragePolicyEditorModalTitle.tsx +++ b/apps/studio/components/interfaces/Storage/StoragePolicies/StoragePolicyEditorModalTitle.tsx @@ -32,7 +32,7 @@ export const StoragePolicyEditorModalTitle = ({ tabIndex={0} onClick={onSelectBackFromTemplates} className={cn( - 'cursor-pointer rounded-xs opacity-20 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-foreground-muted', + 'cursor-pointer rounded-xs opacity-20 hover:opacity-100 focus-ring disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-foreground-muted', 'hit-area-6' )} > @@ -51,7 +51,7 @@ export const StoragePolicyEditorModalTitle = ({ diff --git a/apps/studio/components/interfaces/Support/AttachmentUpload.tsx b/apps/studio/components/interfaces/Support/AttachmentUpload.tsx index 18613095630fa..bcb7791fddb9e 100644 --- a/apps/studio/components/interfaces/Support/AttachmentUpload.tsx +++ b/apps/studio/components/interfaces/Support/AttachmentUpload.tsx @@ -24,7 +24,7 @@ const MAX_ATTACHMENTS = 5 const removeAttachmentButtonClassName = cn( 'absolute -top-1 -right-1 size-4 shrink-0 rounded-full bg-red-900 p-0 cursor-pointer', - 'outline-hidden focus-visible:ring-2 focus-visible:ring-foreground-muted focus-visible:ring-offset-1 focus-visible:ring-offset-background' + 'focus-ring' ) const RemoveAttachmentIcon = () => ( @@ -257,9 +257,9 @@ export function AttachmentUploadDisplay({ tabIndex={0} aria-label="Add attachment" className={cn( - 'border border-stronger opacity-50 transition hover:opacity-100', + 'border border-stronger opacity-50 hover:opacity-100', 'group flex h-14 w-14 cursor-pointer items-center justify-center rounded-sm', - 'outline-hidden focus-visible:opacity-100 focus-visible:ring-2 focus-visible:ring-foreground-muted focus-visible:ring-offset-1 focus-visible:ring-offset-background' + 'focus-visible:opacity-100 focus-ring' )} onClick={addFile} > diff --git a/apps/studio/components/interfaces/Support/SupportAssistantSuccessCard.tsx b/apps/studio/components/interfaces/Support/SupportAssistantSuccessCard.tsx index 2c88dd111d15c..064b55e557f57 100644 --- a/apps/studio/components/interfaces/Support/SupportAssistantSuccessCard.tsx +++ b/apps/studio/components/interfaces/Support/SupportAssistantSuccessCard.tsx @@ -46,7 +46,7 @@ function SupportAssistantSuccessCardLoadingShell({ className }: { className?: st tabIndex={0} aria-label="Open assistant response" className={cn( - 'group cursor-pointer bg-muted/50 transition-colors hover:bg-muted/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand', + 'group cursor-pointer bg-muted/50 transition-colors hover:bg-muted/50 focus-ring', className )} > diff --git a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SpreadsheetImport/SpreadsheetImportPreview.tsx b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SpreadsheetImport/SpreadsheetImportPreview.tsx index 67268cdfeee1d..2b1ae0abcfd1a 100644 --- a/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SpreadsheetImport/SpreadsheetImportPreview.tsx +++ b/apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SpreadsheetImport/SpreadsheetImportPreview.tsx @@ -179,7 +179,7 @@ export const SpreadsheetImportPreview = ({ ) if (!isDisabled || !disabledOptionTooltip) return optionButton diff --git a/apps/www/app/partners/catalog/IntegrationsContent.tsx b/apps/www/app/partners/catalog/IntegrationsContent.tsx index 00ff3172e70e9..c1651c96c8581 100644 --- a/apps/www/app/partners/catalog/IntegrationsContent.tsx +++ b/apps/www/app/partners/catalog/IntegrationsContent.tsx @@ -314,7 +314,7 @@ export default function IntegrationsContent({ title="Grid view" onClick={() => setFilters({ view: 'grid' })} className={cn( - 'relative flex items-center justify-center w-8 h-8 transition-colors rounded-l-lg focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground-lighter focus-visible:ring-offset-1 focus-visible:ring-offset-background', + 'relative flex items-center justify-center w-8 h-8 rounded-l-lg focus-visible:z-10 focus-ring', viewMode === 'grid' ? 'bg-surface-300 text-foreground' : 'bg-surface-75 text-foreground-muted hover:text-foreground hover:bg-surface-200' @@ -327,7 +327,7 @@ export default function IntegrationsContent({ title="List view" onClick={() => setFilters({ view: 'list' })} className={cn( - 'relative flex items-center justify-center w-8 h-8 transition-colors border-l border-muted rounded-r-lg focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground-lighter focus-visible:ring-offset-1 focus-visible:ring-offset-background', + 'relative flex items-center justify-center w-8 h-8 border-l border-muted rounded-r-lg focus-visible:z-10 focus-ring', viewMode === 'list' ? 'bg-surface-300 text-foreground' : 'bg-surface-75 text-foreground-muted hover:text-foreground hover:bg-surface-200' @@ -346,7 +346,7 @@ export default function IntegrationsContent({ `absolute top-0 z-1 text-xs inline-flex h-full items-center justify-center font-medium ${ isActive ? 'hover:text-foreground-light hover:text-foreground' : 'hover:text-foreground' - } hover:text-foreground focus:z-10 focus:outline-hidden focus:border-blue-300 focus:ring-blue - transition ease-in-out duration-150` + } hover:text-foreground focus-visible:z-10 focus-ring` return (
- {options.map((option: any, index: number) => ( - { + const isActive = activeOption === option + return ( + + ) + })}
) } diff --git a/apps/www/components/Announcement/Badge.tsx b/apps/www/components/Announcement/Badge.tsx index 0009742b79533..500ad764ff8aa 100644 --- a/apps/www/components/Announcement/Badge.tsx +++ b/apps/www/components/Announcement/Badge.tsx @@ -48,7 +48,7 @@ const AnnouncementBadge = ({ hover:border-foreground-muted/30 shadow-md overflow-hidden - focus-visible:outline-hidden focus-visible:ring-brand-600 focus-visible:ring-2 focus-visible:rounded-full + focus-ring rounded-full `, !badge && 'pl-5' )} diff --git a/apps/www/components/Button.tsx b/apps/www/components/Button.tsx index 93bf7f63a5e71..88b9c32f60595 100644 --- a/apps/www/components/Button.tsx +++ b/apps/www/components/Button.tsx @@ -11,7 +11,7 @@ const Button = (props: Props) => { const colorClass = type === 'primary' - ? 'px-3 py-2 shadow-xs border border-transparent text-white bg-brand-400 hover:bg-brand-300 focus:ring-2 focus:ring-offset-2 focus:ring-brand-300' + ? 'px-3 py-2 shadow-xs border border-transparent text-white bg-brand-400 hover:bg-brand-300' : 'text-brand-400 bg-none' const textClass = type === 'primary' ? 'font-medium left-3 group-hover:left-0' : 'font-normal' @@ -27,7 +27,7 @@ const Button = (props: Props) => { const sharedClassName = ` group inline-flex items-center rounded-md text-sm - leading-4 transition focus:outline-hidden ${colorClass} ${className} + leading-4 focus-ring ${colorClass} ${className} ` const content = ( diff --git a/apps/www/components/Changelog/ChangelogTimelineList.tsx b/apps/www/components/Changelog/ChangelogTimelineList.tsx index a75c04c3e4f25..acd81b4a600c0 100644 --- a/apps/www/components/Changelog/ChangelogTimelineList.tsx +++ b/apps/www/components/Changelog/ChangelogTimelineList.tsx @@ -38,8 +38,8 @@ export function LabelBadges({ href={changelogTagFilterUrl(label.name)} className={ tiny - ? 'inline-flex shrink-0 no-underline focus-visible:ring-brand-default rounded-sm focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden' - : 'inline-flex shrink-0 no-underline focus-visible:ring-brand-default rounded-md focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden' + ? 'inline-flex shrink-0 no-underline focus-ring rounded-sm' + : 'inline-flex shrink-0 no-underline focus-ring rounded-md' } onClick={onBadgeClick} > diff --git a/apps/www/components/FeaturesMatrix.tsx b/apps/www/components/FeaturesMatrix.tsx index 420fae4dfe735..d62adbff94dbc 100644 --- a/apps/www/components/FeaturesMatrix.tsx +++ b/apps/www/components/FeaturesMatrix.tsx @@ -170,7 +170,7 @@ export function FeaturesMatrix({ features }: FeaturesMatrixProps) {
diff --git a/apps/www/components/Modules/ModulesNav.tsx b/apps/www/components/Modules/ModulesNav.tsx index ffc70394298b7..d145135312138 100644 --- a/apps/www/components/Modules/ModulesNav.tsx +++ b/apps/www/components/Modules/ModulesNav.tsx @@ -23,7 +23,7 @@ function ModulesNav({ activePage, docsUrl }: Props) { key={currentModule.name} className={cn( 'flex items-center gap-1.5 px-2 first:-ml-2 py-3 border-b border-transparent text-sm text-foreground-lighter hover:text-foreground', - 'focus-visible:ring-2 focus-visible:ring-foreground-lighter focus-visible:text-foreground focus-visible:outline-brand-600', + 'focus-ring focus-visible:text-foreground', currentModule.name === activePage && 'border-foreground-light text-foreground' )} href={currentModule.url ?? ''} @@ -52,7 +52,7 @@ function ModulesNav({ activePage, docsUrl }: Props) { diff --git a/apps/www/components/Nav/DevelopersDropdown.tsx b/apps/www/components/Nav/DevelopersDropdown.tsx index 8c9de8c27cb5d..58fc8b4e0872e 100644 --- a/apps/www/components/Nav/DevelopersDropdown.tsx +++ b/apps/www/components/Nav/DevelopersDropdown.tsx @@ -27,7 +27,7 @@ export const DevelopersDropdown = () => {
  • {Icon && } {link.text} @@ -51,7 +51,7 @@ export const DevelopersDropdown = () => {
    Blog @@ -61,7 +61,7 @@ export const DevelopersDropdown = () => {
  • {post.title} diff --git a/apps/www/components/Nav/HamburgerMenu.tsx b/apps/www/components/Nav/HamburgerMenu.tsx index 6d141c145a709..61386798fc7d4 100644 --- a/apps/www/components/Nav/HamburgerMenu.tsx +++ b/apps/www/components/Nav/HamburgerMenu.tsx @@ -11,7 +11,7 @@ const HamburgerButton = (props: HamburgerButtonProps) => (

  • diff --git a/apps/www/components/Products/ProductCard.tsx b/apps/www/components/Products/ProductCard.tsx index 25e5d86960ec6..6187050f45f21 100644 --- a/apps/www/components/Products/ProductCard.tsx +++ b/apps/www/components/Products/ProductCard.tsx @@ -30,7 +30,7 @@ const ProductCard = ({ {changelogLabelDisplayName(label.name)} diff --git a/apps/www/pages/company.tsx b/apps/www/pages/company.tsx index ef209842ff3ee..6574e23327e26 100644 --- a/apps/www/pages/company.tsx +++ b/apps/www/pages/company.tsx @@ -220,7 +220,7 @@ const Press = () => { href={x.href} key={x.href} target="_blank" - className="flex flex-col justify-start items-stretch group cursor-pointer transition rounded-xl focus-visible:ring-2 focus-visible:ring-foreground-lighter outline-hidden outline-0 focus-visible:outline-4 focus-visible:outline-offset-1 focus-visible:outline-foreground-lighter" + className="flex flex-col justify-start items-stretch group cursor-pointer rounded-xl focus-ring" > { href={x.href} key={x.href} target="_blank" - className="flex flex-col justify-start items-stretch group cursor-pointer transition rounded-xl focus-visible:ring-2 focus-visible:ring-foreground-lighter outline-hidden outline-0 focus-visible:outline-4 focus-visible:outline-offset-1 focus-visible:outline-foreground-lighter" + className="flex flex-col justify-start items-stretch group cursor-pointer rounded-xl focus-ring" > setViewMode('grid')} className={cn( - 'relative flex items-center justify-center w-8 h-8 transition-colors rounded-l-lg focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground-lighter focus-visible:ring-offset-1 focus-visible:ring-offset-background', + 'relative flex items-center justify-center w-8 h-8 rounded-l-lg focus-visible:z-10 focus-ring', viewMode === 'grid' ? 'bg-surface-300 text-foreground' : 'bg-surface-75 text-foreground-muted hover:text-foreground hover:bg-surface-200' @@ -293,7 +293,7 @@ function FeaturesPage() { title="Matrix view" onClick={() => setViewMode('matrix')} className={cn( - 'relative flex items-center justify-center w-8 h-8 transition-colors border-l border-muted rounded-r-lg focus-visible:z-10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground-lighter focus-visible:ring-offset-1 focus-visible:ring-offset-background', + 'relative flex items-center justify-center w-8 h-8 border-l border-muted rounded-r-lg focus-visible:z-10 focus-ring', viewMode === 'matrix' ? 'bg-surface-300 text-foreground' : 'bg-surface-75 text-foreground-muted hover:text-foreground hover:bg-surface-200' @@ -316,7 +316,7 @@ function FeaturesPage() { @@ -66,12 +66,11 @@ const RadioGroupStackedItem = React.forwardRef< // Base styles 'aspect-square h-4 w-4 min-w-4 min-h-4 rounded-full border relative', 'flex items-center justify-center', - 'ring-offset-background transition', // States 'group-data-[state=checked]:border-foreground-muted', - 'group-focus:border-foreground-muted group-focus:outline-hidden', - 'group-focus-visible:ring-2 group-focus-visible:ring-background-control group-focus-visible:ring-offset-2 group-focus-visible:ring-offset-foreground-muted', - 'group-hover:border-foreground-muted' + 'group-focus-visible:border-foreground-muted', + 'group-focus-visible:ring-2 group-focus-visible:ring-ring group-focus-visible:ring-offset-2 group-focus-visible:ring-offset-background', + 'group-hover:border-foreground-muted transition-colors' )} > diff --git a/packages/ui/src/components/shadcn/ui/dialog.tsx b/packages/ui/src/components/shadcn/ui/dialog.tsx index 5edd2b3318e9f..226ef4b00033c 100644 --- a/packages/ui/src/components/shadcn/ui/dialog.tsx +++ b/packages/ui/src/components/shadcn/ui/dialog.tsx @@ -114,7 +114,7 @@ const DialogContent = React.forwardRef< {!hideClose && ( @@ -197,7 +197,7 @@ const DialogClose = React.forwardRef< diff --git a/packages/ui/src/components/shadcn/ui/sonner.tsx b/packages/ui/src/components/shadcn/ui/sonner.tsx index fcdee422e322b..956c760a22f11 100644 --- a/packages/ui/src/components/shadcn/ui/sonner.tsx +++ b/packages/ui/src/components/shadcn/ui/sonner.tsx @@ -54,10 +54,10 @@ const SonnerToaster = ({ toastOptions, ...props }: ToasterProps) => { 'group toast group-[.toaster]:!bg-destructive-200 group-[.toaster]:!border-destructive-500', closeButton: cn( // unset all styles set from sonner - 'absolute right-2 top-2 size-6 flex items-center justify-center rounded-md text-foreground-light opacity-0 transition', - 'hover:text-foreground hover:bg-surface-200 focus:opacity-100 focus:outline-hidden focus:ring-2 group-hover:opacity-100', + 'absolute right-2 top-2 size-6 flex items-center justify-center rounded-md text-foreground-light opacity-0 transition-opacity', + 'hover:text-foreground hover:bg-surface-200 focus-visible:opacity-100 focus-ring group-hover:opacity-100', 'group-[.destructive]:text-destructive-300 group-[.destructive]:hover:text-destructive-50', - 'group-[.destructive]:focus:ring-destructive-400 group-[.destructive]:focus:ring-offset-destructive-600', + 'group-[.destructive]:focus-visible:ring-destructive-400 group-[.destructive]:focus-visible:ring-offset-destructive-600', 'left-auto transform-none border-0 border-transparent' ), content: 'grow',