Skip to content

Commit 65da4f8

Browse files
iagodahlemLauraBeatris
authored andcommitted
feat(ui): expose element descriptors for ResetConnectionDialog and inactive banner
Adds element descriptors so the reset dialog (card, confirmation input, destructive submit, cancel) and the inactive footer banner on the confirmation step can be targeted by appearance customizations. Surface-level only; no behavior changes.
1 parent 2bb81b1 commit 65da4f8

6 files changed

Lines changed: 32 additions & 7 deletions

File tree

packages/ui/src/components/ConfigureSSO/ResetConnectionDialog.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useReverification } from '@clerk/shared/react';
22

3-
import { Col, localizationKeys } from '@/customizables';
3+
import { Col, descriptors, localizationKeys } from '@/customizables';
44
import { Card } from '@/elements/Card';
55
import { useCardState, withCardStateProvider } from '@/elements/contexts';
66
import { Form } from '@/elements/Form';
@@ -81,7 +81,10 @@ const ResetConnectionDialogContent = withCardStateProvider((props: ResetConnecti
8181
};
8282

8383
return (
84-
<Card.Root sx={t => ({ borderRadius: t.radii.$md })}>
84+
<Card.Root
85+
elementDescriptor={descriptors.configureSSOResetConnectionDialog}
86+
sx={t => ({ borderRadius: t.radii.$md })}
87+
>
8588
<Card.Content sx={t => ({ textAlign: 'start', padding: t.sizes.$5 })}>
8689
<FormContainer
8790
headerTitle={localizationKeys('configureSSO.resetConnectionDialog.title')}
@@ -93,17 +96,20 @@ const ResetConnectionDialogContent = withCardStateProvider((props: ResetConnecti
9396
<Form.ControlRow elementId={confirmationField.id}>
9497
<Form.PlainInput
9598
{...confirmationField.props}
99+
elementDescriptor={descriptors.configureSSOResetConnectionDialogConfirmationInput}
96100
ignorePasswordManager
97101
/>
98102
</Form.ControlRow>
99103
<FormButtonContainer>
100104
<Form.SubmitButton
105+
elementDescriptor={descriptors.configureSSOResetConnectionDialogSubmitButton}
101106
block={false}
102107
colorScheme='danger'
103108
isDisabled={!canSubmit}
104109
localizationKey={localizationKeys('configureSSO.resetConnectionDialog.resetButton')}
105110
/>
106111
<Form.ResetButton
112+
elementDescriptor={descriptors.configureSSOResetConnectionDialogCancelButton}
107113
block={false}
108114
localizationKey={localizationKeys('configureSSO.resetConnectionDialog.cancelButton')}
109115
onClick={onClose}

packages/ui/src/components/ConfigureSSO/steps/ConfirmationStep.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export const ConfirmationStep = (): JSX.Element => {
5050
<Step.Footer>
5151
{!isActive && (
5252
<Flex
53+
elementDescriptor={descriptors.configureSSOConfirmationInactiveBanner}
5354
sx={{ flex: 1 }}
5455
align='center'
5556
>

packages/ui/src/customizables/elementDescriptors.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,9 +603,15 @@ export const APPEARANCE_KEYS = containsAllElementsConfigKeys([
603603
'configureSSOConfirmationConfigDetailsLabel',
604604
'configureSSOConfirmationConfigDetailsValue',
605605
'configureSSOConfirmationConfigDetailsLink',
606+
'configureSSOConfirmationInactiveBanner',
606607
'configureSSOConfirmationReconfigureButton',
607608
'configureSSOConfirmationResetButton',
608609

610+
'configureSSOResetConnectionDialog',
611+
'configureSSOResetConnectionDialogCancelButton',
612+
'configureSSOResetConnectionDialogConfirmationInput',
613+
'configureSSOResetConnectionDialogSubmitButton',
614+
609615
'web3SolanaWalletButtonsRoot',
610616
'web3SolanaWalletButtons',
611617
'web3SolanaWalletButtonsIconButton',

packages/ui/src/elements/FieldControl.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,14 +255,18 @@ const CheckboxLabel = (props: { description?: string | LocalizationKey }) => {
255255
);
256256
};
257257

258-
const InputElement = forwardRef<HTMLInputElement>((_, ref) => {
258+
type InputElementProps = {
259+
elementDescriptor?: ElementDescriptor;
260+
};
261+
262+
const InputElement = forwardRef<HTMLInputElement, InputElementProps>(({ elementDescriptor }, ref) => {
259263
const { t } = useLocalizations();
260264
const formField = useFormField();
261265
const { placeholder, ...inputProps } = sanitizeInputProps(formField);
262266
return (
263267
<Input
264268
ref={ref}
265-
elementDescriptor={descriptors.formFieldInput}
269+
elementDescriptor={elementDescriptor || descriptors.formFieldInput}
266270
elementId={descriptors.formFieldInput.setId(formField.fieldId)}
267271
{...inputProps}
268272
placeholder={t(placeholder)}

packages/ui/src/elements/Form.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import React, { forwardRef, useState } from 'react';
55

66
import type { LocalizationKey } from '../customizables';
77
import { Button, Col, descriptors, Flex, Form as FormPrim, localizationKeys } from '../customizables';
8+
import type { ElementDescriptor } from '../customizables/elementDescriptors';
89
import { useLoadingStatus } from '../hooks';
910
import type { PropsOfComponent } from '../styledSystem';
1011
import { LastAuthenticationStrategyBadge } from './Badge';
@@ -180,10 +181,11 @@ const LastAuthenticationStrategyBadgeWithFormState = (
180181
);
181182
};
182183

183-
const PlainInput = (props: CommonInputProps) => {
184+
const PlainInput = (props: CommonInputProps & { elementDescriptor?: ElementDescriptor }) => {
185+
const { elementDescriptor, ...rest } = props;
184186
return (
185-
<CommonInputWrapper {...props}>
186-
<Field.Input />
187+
<CommonInputWrapper {...rest}>
188+
<Field.Input elementDescriptor={elementDescriptor} />
187189
</CommonInputWrapper>
188190
);
189191
};

packages/ui/src/internal/appearance.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -739,9 +739,15 @@ export type ElementsConfig = {
739739
configureSSOConfirmationConfigDetailsLabel: WithOptions;
740740
configureSSOConfirmationConfigDetailsValue: WithOptions;
741741
configureSSOConfirmationConfigDetailsLink: WithOptions;
742+
configureSSOConfirmationInactiveBanner: WithOptions;
742743
configureSSOConfirmationReconfigureButton: WithOptions;
743744
configureSSOConfirmationResetButton: WithOptions;
744745

746+
configureSSOResetConnectionDialog: WithOptions;
747+
configureSSOResetConnectionDialogCancelButton: WithOptions;
748+
configureSSOResetConnectionDialogConfirmationInput: WithOptions;
749+
configureSSOResetConnectionDialogSubmitButton: WithOptions;
750+
745751
web3SolanaWalletButtonsRoot: WithOptions;
746752
web3SolanaWalletButtons: WithOptions;
747753
web3SolanaWalletButtonsIconButton: WithOptions<string, LoadingState>;

0 commit comments

Comments
 (0)