From 2c586592bbfdc75752e28dcfbe4d3758806c59fe Mon Sep 17 00:00:00 2001 From: Derek Siemens Date: Thu, 26 Feb 2026 14:51:57 -0800 Subject: [PATCH] DS: add masking for PII --- .../sqm-input-field/sqm-input-field-view.tsx | 8 ++++ .../sqm-name-fields/sqm-name-fields-view.tsx | 4 ++ .../sqm-banking-info-form/formDefinitions.tsx | 21 ++++++++++ .../sqm-banking-info-form-view.tsx | 7 ++++ .../sqm-banking-info-form.tsx | 10 +++++ .../sqm-indirect-tax-form-view.tsx | 5 +++ .../sqm-payout-details-card-view.tsx | 6 ++- .../small-views/IndirectTaxDetailsView.tsx | 13 +++++- .../sqm-user-info-form-view.tsx | 18 +++++++++ .../src/utils/posthogMasking.ts | 40 +++++++++++++++++++ 10 files changed, 129 insertions(+), 3 deletions(-) create mode 100644 packages/mint-components/src/utils/posthogMasking.ts diff --git a/packages/mint-components/src/components/sqm-input-field/sqm-input-field-view.tsx b/packages/mint-components/src/components/sqm-input-field/sqm-input-field-view.tsx index 8002017109..bb3f1a976f 100644 --- a/packages/mint-components/src/components/sqm-input-field/sqm-input-field-view.tsx +++ b/packages/mint-components/src/components/sqm-input-field/sqm-input-field-view.tsx @@ -3,6 +3,10 @@ import jss from "jss"; import preset from "jss-preset-default"; import { intl } from "../../global/global"; import { ErrorStyles } from "../../global/mixins"; +import { + sensitiveMaskAttrs, + shouldMaskSensitiveField, +} from "../../utils/posthogMasking"; import { RegistrationFormState } from "../sqm-portal-registration-form/useRegistrationFormState"; export interface InputFieldViewProps { @@ -40,6 +44,9 @@ const styleString = sheet.toString(); export function InputFieldView(props: InputFieldViewProps) { const { states, content } = props; const validationErrors = states?.registrationFormState?.validationErrors; + const shouldMask = + content.fieldType === "tel" || shouldMaskSensitiveField(content.fieldName); + const maskAttrs = sensitiveMaskAttrs(shouldMask); return (
@@ -52,6 +59,7 @@ export function InputFieldView(props: InputFieldViewProps) { name={`/${content.fieldName}`} type={content.fieldType} label={content.fieldLabel} + {...maskAttrs} {...(!content.fieldOptional ? { required: true } : [])} disabled={ states.registrationFormState?.loading || diff --git a/packages/mint-components/src/components/sqm-name-fields/sqm-name-fields-view.tsx b/packages/mint-components/src/components/sqm-name-fields/sqm-name-fields-view.tsx index 1426f18a1b..5b364727a3 100644 --- a/packages/mint-components/src/components/sqm-name-fields/sqm-name-fields-view.tsx +++ b/packages/mint-components/src/components/sqm-name-fields/sqm-name-fields-view.tsx @@ -1,6 +1,7 @@ import { h } from "@stencil/core"; import { ErrorStyles } from "../../global/mixins"; import { createStyleSheet } from "../../styling/JSS"; +import { sensitiveMaskAttrs } from "../../utils/posthogMasking"; import { RegistrationFormState } from "../sqm-portal-registration-form/useRegistrationFormState"; export interface NameFieldsViewProps { @@ -67,6 +68,7 @@ const styleString = sheet.toString(); export function NameFieldsView(props: NameFieldsViewProps) { const { states } = props; const validationErrors = states?.registrationFormState?.validationErrors; + const maskAttrs = sensitiveMaskAttrs(true); return (