From aec960d3795a22f436b969175f826ce19c103b1f Mon Sep 17 00:00:00 2001 From: Iago Dahlem Lorensini Date: Thu, 7 May 2026 17:00:35 -0300 Subject: [PATCH] feat(ui): add provider selection grid to ConfigureSSO step Replace placeholder text in SelectProviderStep with a SAML provider selection UI featuring Okta Workforce and Custom SAML Provider cards. Introduces a ProviderCard component with selected state styling and adjusts Step header alignment to top-align with refined spacing. --- .../components/ConfigureSSO/elements/Step.tsx | 4 +- .../ConfigureSSO/steps/SelectProviderStep.tsx | 92 ++++++++++++++++++- 2 files changed, 91 insertions(+), 5 deletions(-) diff --git a/packages/ui/src/components/ConfigureSSO/elements/Step.tsx b/packages/ui/src/components/ConfigureSSO/elements/Step.tsx index 22471d05357..f675394a50c 100644 --- a/packages/ui/src/components/ConfigureSSO/elements/Step.tsx +++ b/packages/ui/src/components/ConfigureSSO/elements/Step.tsx @@ -54,11 +54,11 @@ const Header = ({ title, description, children }: StepHeaderProps): JSX.Element })} > ({ gap: theme.space.$4 })} > - ({ gap: theme.space.$1x5, minWidth: 0 })}> + ({ gap: theme.space.$2, minWidth: 0 })}> ({ color: theme.colors.$colorForeground, fontSize: theme.fontSizes.$lg })} diff --git a/packages/ui/src/components/ConfigureSSO/steps/SelectProviderStep.tsx b/packages/ui/src/components/ConfigureSSO/steps/SelectProviderStep.tsx index 5cf9fb888b8..cf9d01387c2 100644 --- a/packages/ui/src/components/ConfigureSSO/steps/SelectProviderStep.tsx +++ b/packages/ui/src/components/ConfigureSSO/steps/SelectProviderStep.tsx @@ -1,4 +1,6 @@ -import { descriptors, Flow, Text } from '@/customizables'; +import type { PropsWithChildren } from 'react'; + +import { Box, Col, descriptors, Flow, Grid, SimpleButton, Text } from '@/customizables'; import { Step } from '../elements/Step'; import { useWizard } from '../elements/Wizard'; @@ -18,8 +20,42 @@ export const SelectProviderStep = (): JSX.Element => { /> - - UI goes here + ({ gap: theme.space.$5 })}> + ({ gap: theme.space.$1x5 })}> + ({ color: theme.colors.$colorForeground })} + > + Select your identity provider + + + ({ color: theme.colors.$colorMutedForeground })} + > + We'll guide you through the detailed setup process next. + + + + ({ gap: theme.space.$3 })}> + ({ color: theme.colors.$colorForeground })} + > + SAML + + + + Okta Workforce + Custom SAML Provider + + @@ -37,3 +73,53 @@ export const SelectProviderStep = (): JSX.Element => { ); }; + +type ProviderCardProps = PropsWithChildren<{ + isSelected?: boolean; + onClick?: () => void; +}>; + +const ProviderCard = ({ isSelected, onClick, children }: ProviderCardProps): JSX.Element => { + return ( + ({ + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + gap: theme.space.$2, + height: theme.sizes.$32, + padding: theme.space.$1x5, + backgroundColor: theme.colors.$colorBackground, + ...(isSelected + ? { + boxShadow: `0 0 0 4px ${theme.colors.$colorRing}`, + } + : {}), + })} + > + {/* TODO: add provider icons */} + ({ + width: theme.sizes.$8, + height: theme.sizes.$8, + borderRadius: theme.radii.$md, + backgroundColor: theme.colors.$primary500, + })} + /> + + ({ color: theme.colors.$colorForeground })} + > + {children} + + + ); +};