@oatfi/ui 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -477,6 +477,17 @@ const Button = styled.button`
477
477
  }
478
478
  }
479
479
 
480
+ &.dashed {
481
+ background-color: transparent;
482
+ color: ${({ theme }) => theme.colors.secondary};
483
+ border: 1px dashed ${({ theme }) => theme.colors.border};
484
+ &:hover {
485
+ background-color: ${({ theme }) => theme.colors.surface};
486
+ border-color: ${({ theme }) => theme.colors.secondary};
487
+ color: ${({ theme }) => theme.colors.primary};
488
+ }
489
+ }
490
+
480
491
  &.link {
481
492
  background-color: transparent;
482
493
  color: ${({ theme }) => theme.colors.accent};
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/theme/defaultTheme.ts","../src/theme/mergeBranding.ts","../src/theme/muiTheme.ts","../src/theme/ThemeProvider.tsx","../src/theme/useTheme.ts","../src/styles/inputs.ts","../src/styles/layout.ts","../src/styles/forms.ts","../src/components/TextInput.tsx","../src/components/EmailInput.tsx","../src/components/PhoneInput.tsx","../src/components/SSNInput.tsx","../src/components/TaxIdInput.tsx","../src/components/CurrencyInput.tsx","../src/components/DateInput.tsx","../src/components/DropDown.tsx","../src/components/SearchDropdown.tsx","../src/components/FileInput.tsx","../src/components/RadioInput.tsx","../src/components/CheckboxInput.tsx","../src/components/Stepper.tsx","../src/components/Tabs.tsx","../src/components/Loader.tsx","../src/components/DotsMenu.tsx","../src/preview/Preview.tsx"],"sourcesContent":["import type { Theme } from './types';\n\n/**\n * The default OatFi theme. Ported from the embeds' `theme/types.js`, using the\n * more complete shape (with `colors.default`) from `mf-remote-react`, extended\n * with `buttonPrimary` / `buttonSecondary` so partner button colors have a home.\n *\n * `buttonPrimary` / `buttonSecondary` default to `primary` / `secondary` here so\n * an unbranded theme renders identically to the original embeds.\n */\nexport const defaultTheme: Theme = {\n colors: {\n primary: '#111827',\n secondary: '#6B7280',\n accent: '#2563EB',\n background: '#FFFFFF',\n surface: '#F3F4F6',\n border: '#E5E7EB',\n success: '#10B981',\n default: '#6B7280',\n warning: '#F59E42',\n error: '#EF4444',\n buttonPrimary: '#111827',\n buttonSecondary: '#6B7280',\n },\n border: {\n radius: '8px',\n width: '1px',\n color: '#E5E7EB',\n },\n typography: {\n fontFamily: '\"Geist\", \"Geist Sans\", Arial, sans-serif',\n },\n};\n","import { defaultTheme } from './defaultTheme';\nimport type { Branding, Theme } from './types';\n\nconst toPx = (value: number): string => `${value}px`;\n\n/**\n * Map partner `Branding` onto the full internal `Theme`.\n *\n * Pure and total: any missing field falls back to `defaultTheme`. Note that\n * `colors.primary` / `colors.secondary` are NOT partner-configurable — they\n * stay at the theme defaults; only the button colors, border, and font can be\n * branded.\n */\nexport function mergeBranding(branding?: Branding): Theme {\n const b = branding ?? {};\n\n return {\n ...defaultTheme,\n colors: {\n ...defaultTheme.colors,\n buttonPrimary: b.primaryButtonColor ?? defaultTheme.colors.buttonPrimary,\n buttonSecondary: b.secondaryButtonColor ?? defaultTheme.colors.buttonSecondary,\n },\n border: {\n ...defaultTheme.border,\n radius: b.borderRadius != null ? toPx(b.borderRadius) : defaultTheme.border.radius,\n width: b.borderWidth != null ? toPx(b.borderWidth) : defaultTheme.border.width,\n },\n typography: {\n ...defaultTheme.typography,\n fontFamily: b.fontFamily ?? defaultTheme.typography.fontFamily,\n },\n };\n}\n","import { createTheme, type Theme as MuiTheme } from '@mui/material/styles';\nimport type { Theme } from './types';\n\n/**\n * Build a MUI theme from our internal `Theme` so MUI-based primitives read the\n * same tokens as styled-components ones. Ported from the embeds'\n * `MuiThemeProvider.js`, typed and driven by the merged theme.\n */\nexport function buildMuiTheme(theme: Theme): MuiTheme {\n const { colors, border, typography } = theme;\n\n return createTheme({\n palette: {\n primary: {\n main: colors.accent,\n contrastText: colors.background,\n },\n secondary: {\n main: colors.secondary,\n },\n error: {\n main: colors.error,\n },\n warning: {\n main: colors.warning,\n },\n success: {\n main: colors.success,\n },\n background: {\n default: colors.background,\n paper: colors.surface,\n },\n text: {\n primary: colors.primary,\n secondary: colors.secondary,\n },\n },\n typography: {\n fontFamily: typography.fontFamily,\n fontSize: 14,\n },\n shape: {\n borderRadius: parseInt(border.radius, 10),\n },\n components: {\n MuiFormControlLabel: {\n styleOverrides: {\n label: {\n fontSize: '12px',\n fontWeight: 400,\n },\n },\n },\n MuiPaper: {\n styleOverrides: {\n root: {\n backgroundColor: colors.background,\n border: `${border.width} solid ${border.color}`,\n },\n },\n defaultProps: {\n elevation: 0,\n },\n },\n MuiLink: {\n styleOverrides: {\n root: {\n cursor: 'pointer',\n fontSize: '16px',\n fontWeight: 600,\n fontFamily: typography.fontFamily,\n },\n },\n },\n MuiTextField: {\n styleOverrides: {\n root: {\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: border.color,\n borderWidth: border.width,\n },\n '&:hover fieldset': {\n borderColor: colors.accent,\n },\n '&.Mui-focused fieldset': {\n borderColor: colors.accent,\n },\n '&.Mui-error fieldset': {\n borderColor: colors.error,\n },\n },\n '& .MuiInputLabel-root, & .MuiFormLabel-root, & .MuiInputLabel-formControl': {\n color: colors.secondary,\n fontSize: '14px',\n '&.Mui-focused': {\n color: colors.accent,\n },\n '&.Mui-error': {\n color: colors.error,\n },\n },\n '& .MuiInputBase-input': {\n fontSize: 14,\n color: colors.primary,\n '&::placeholder': {\n color: colors.secondary,\n opacity: 1,\n },\n },\n },\n },\n },\n MuiSelect: {\n styleOverrides: {\n select: {\n fontSize: 14,\n },\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: {\n fontSize: 14,\n '& input[type=\"date\"]::-webkit-calendar-picker-indicator': {\n display: 'none',\n },\n '& .Mui-error': {\n color: colors.error,\n },\n '& input[type=\"date\"]::-webkit-inner-spin-button': {\n display: 'none',\n },\n '& input[type=\"date\"]::-webkit-clear-button': {\n display: 'none',\n },\n },\n },\n },\n MuiFormControl: {\n styleOverrides: {\n root: {\n '& input::-webkit-datetime-edit': {\n color: colors.secondary,\n },\n '& .Mui-error': {\n input: {\n color: colors.error,\n },\n label: {\n color: colors.error,\n },\n },\n },\n },\n },\n },\n });\n}\n","import React, { useMemo } from 'react';\nimport { ThemeProvider as MuiThemeProviderBase } from '@mui/material/styles';\nimport { ThemeProvider as StyledThemeProvider, createGlobalStyle } from 'styled-components';\nimport { mergeBranding } from './mergeBranding';\nimport { buildMuiTheme } from './muiTheme';\nimport type { Branding } from './types';\n\nconst GlobalStyle = createGlobalStyle`\n * {\n font-family: ${({ theme }) => theme.typography.fontFamily};\n box-sizing: border-box;\n }\n`;\n\nexport interface ThemeProviderProps {\n /**\n * Partner branding overrides. Any omitted field falls back to `defaultTheme`.\n * Omit entirely to render with the default OatFi theme.\n */\n branding?: Branding;\n children?: React.ReactNode;\n}\n\n/**\n * Single theming entry point for @oatfi/ui consumers.\n *\n * Resolves `branding` into the full internal `Theme` and provides it through\n * BOTH styled-components and MUI, so a primitive built on either gets identical\n * tokens. Context cannot cross the embed loader's script boundary, so this is\n * mounted *inside* each consumer's React root.\n */\nexport function ThemeProvider({ branding, children }: ThemeProviderProps) {\n const theme = useMemo(() => mergeBranding(branding), [branding]);\n const muiTheme = useMemo(() => buildMuiTheme(theme), [theme]);\n\n return (\n <StyledThemeProvider theme={theme}>\n <GlobalStyle />\n <MuiThemeProviderBase theme={muiTheme}>{children}</MuiThemeProviderBase>\n </StyledThemeProvider>\n );\n}\n","import { useTheme as useStyledTheme } from 'styled-components';\nimport type { Theme } from './types';\n\n/**\n * Read the resolved @oatfi/ui theme. Typed re-export of styled-components'\n * `useTheme` (typing comes from the `DefaultTheme` augmentation in `styled.d.ts`).\n */\nexport const useTheme = (): Theme => useStyledTheme();\n","import styled from 'styled-components';\n\n/**\n * Input style bases, ported from\n * `onboarding-flow-general/src/components/globals/shared/InputStyles.js`.\n *\n * The dropdown chevron SVG fill was a hardcoded `#6B7280`; it now reads from\n * `theme.colors.default` (whose default value is `#6B7280`, so unbranded\n * appearance is unchanged) and is URL-encoded into the `data:` URI.\n */\n\nconst chevronDataUri = (color: string): string =>\n `data:image/svg+xml;utf8,<svg fill=\"${encodeURIComponent(\n color,\n )}\" height=\"20\" viewBox=\"0 0 20 20\" width=\"20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.293 7.293a1 1 0 011.414 0L10 8.586l1.293-1.293a1 1 0 111.414 1.414l-2 2a1 1 0 01-1.414 0l-2-2a1 1 0 010-1.414z\"/></svg>`;\n\nexport const InputWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 5px;\n width: 100%;\n\n span.icon {\n position: absolute;\n right: 1rem;\n top: 51%;\n display: flex;\n align-items: center;\n cursor: pointer;\n z-index: 1;\n }\n\n &.Werror span.icon {\n top: 42%;\n }\n`;\n\nexport const InputLabel = styled.label`\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n font-weight: 500;\n margin-bottom: 4px;\n`;\n\nexport const InputError = styled.span`\n color: ${({ theme }) => theme.colors.error};\n font-size: 12px;\n font-weight: 500;\n margin-top: -4px;\n padding-left: 5px;\n`;\n\nexport const BaseInput = styled.input`\n display: flex;\n padding: 9px;\n border: ${({ theme }) => theme.border.width} solid ${({ theme }) => theme.border.color};\n border-radius: ${({ theme }) => theme.border.radius};\n background: ${({ theme }) => theme.colors.background};\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n font-family: ${({ theme }) => theme.typography.fontFamily};\n outline: none;\n transition: border-color 0.2s;\n\n &[type='date'] {\n &::-webkit-calendar-picker-indicator {\n opacity: 0;\n pointer-events: none;\n }\n &::-moz-calendar-picker-indicator {\n opacity: 0;\n pointer-events: none;\n }\n &::-ms-input-placeholder {\n opacity: 0;\n pointer-events: none;\n }\n }\n\n &:focus {\n border-color: ${({ theme }) => theme.colors.accent};\n }\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.secondary};\n opacity: 1;\n }\n\n &.error {\n border-color: ${({ theme }) => theme.colors.error};\n color: ${({ theme }) => theme.colors.error};\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.error};\n opacity: 1;\n }\n }\n`;\n\nexport const SelectInput = styled(BaseInput)`\n appearance: none;\n background-image: url('${({ theme }) => chevronDataUri(theme.colors.default)}');\n background-repeat: no-repeat;\n background-position: right 12px center;\n background-size: 20px 20px;\n`;\n\nexport const DropdownContainer = styled.div`\n position: relative;\n width: 100%;\n`;\n\nexport const AutocompleteInput = styled(BaseInput)`\n cursor: pointer;\n background-image: url('${({ theme }) => chevronDataUri(theme.colors.default)}');\n background-repeat: no-repeat;\n background-position: right 12px center;\n background-size: 20px 20px;\n width: 100%;\n`;\n\nexport const DropdownList = styled.div<{ $isOpen?: boolean }>`\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n max-height: 200px;\n overflow-y: auto;\n background: ${({ theme }) => theme.colors.background};\n border: ${({ theme }) => theme.border.width} solid ${({ theme }) => theme.border.color};\n border-top: none;\n border-radius: 0 0 ${({ theme }) => theme.border.radius} ${({ theme }) => theme.border.radius};\n z-index: 1000;\n display: ${({ $isOpen }) => ($isOpen ? 'block' : 'none')};\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n`;\n\nexport const DropdownItem = styled.div<{ $isSelected?: boolean }>`\n padding: 8px 12px;\n cursor: pointer;\n background: ${({ $isSelected, theme }) => ($isSelected ? theme.colors.accent + '20' : 'transparent')};\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n border-bottom: 1px solid ${({ theme }) => theme.border.color};\n\n &:hover {\n background: ${({ theme }) => theme.colors.accent + '10'};\n }\n\n &:last-child {\n border-bottom: none;\n }\n`;\n\nexport const NoResults = styled.div`\n padding: 12px;\n text-align: center;\n color: ${({ theme }) => theme.colors.secondary};\n font-size: 14px;\n`;\n","import styled from 'styled-components';\n\n/**\n * Layout, typography, and button style bases, ported from\n * `onboarding-flow-general/src/components/globals/shared/General.js`.\n *\n * The Button hover (`${theme.colors.primary}CC`) and `Body*` link colors\n * (`theme.colors.primary`) already read from the theme in the source — the\n * `#0e0e0e` / `#0000FF` literals the rollout plan flagged were from an older\n * revision and are not present here.\n */\n\nexport const H3 = styled.h3`\n font-size: 18px;\n font-weight: 500;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const H2 = styled.h2`\n font-size: 24px;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const H1 = styled.h1`\n font-size: 32px;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const Body100 = styled.p`\n font-size: 12px;\n font-weight: 400;\n text-align: justify;\n color: ${({ color, theme }) => (color === 'secondary' ? theme.colors.secondary : theme.colors.primary)};\n a {\n font-size: 12px;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration-color: ${({ theme }) => theme.colors.primary};\n }\n &.bold {\n font-weight: 600;\n }\n span {\n font-weight: 400;\n }\n`;\n\nexport const Body200 = styled.p`\n font-size: 14px;\n font-weight: 400;\n text-align: justify;\n color: ${({ color, theme }) => (color === 'secondary' ? theme.colors.secondary : theme.colors.primary)};\n a {\n font-size: 14px;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration-color: ${({ theme }) => theme.colors.primary};\n }\n &.bold {\n font-weight: 600;\n }\n span {\n font-weight: 400;\n }\n`;\n\nexport const Body400 = styled.p`\n font-size: 11px;\n font-weight: 400;\n text-align: justify;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const Container = styled.div`\n padding: 2rem;\n border-radius: ${({ theme }) => theme.border.radius};\n background-color: ${({ theme }) => theme.colors.background};\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n max-width: 1000px;\n margin: 0 auto;\n`;\n\nexport const Content = styled.div`\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n`;\n\nexport const ButtonContainer = styled.div`\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 1rem;\n &.space-between {\n justify-content: space-between;\n }\n`;\n\nexport const Button = styled.button`\n align-items: center;\n background-color: ${({ theme }) => theme.colors.buttonPrimary};\n border: none;\n border-radius: ${({ theme }) => theme.border.radius};\n color: ${({ theme }) => theme.colors.background};\n cursor: pointer;\n display: flex;\n font-size: 14px;\n gap: 0.25rem;\n justify-content: center;\n margin-top: 1rem;\n padding: 0.75rem 1.5rem;\n transition: background-color 0.2s ease;\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.35;\n }\n\n &:hover {\n background-color: ${({ theme }) => `${theme.colors.buttonPrimary}CC`};\n }\n\n &.secondary {\n background-color: ${({ theme }) => theme.colors.background};\n color: ${({ theme }) => theme.colors.buttonSecondary};\n border: 1px solid ${({ theme }) => theme.colors.buttonSecondary};\n &:hover {\n background-color: ${({ theme }) => `${theme.colors.buttonSecondary}10`};\n }\n }\n\n &.link {\n background-color: transparent;\n color: ${({ theme }) => theme.colors.accent};\n border: none;\n cursor: pointer;\n margin: 0;\n }\n &.link:hover {\n color: ${({ theme }) => theme.colors.accent};\n text-decoration: underline;\n }\n &.no-padding {\n padding: 0;\n }\n`;\n\nexport const FlexRowWrapper = styled.div`\n display: flex;\n flex-direction: row;\n .flex-row-item {\n flex: 1;\n }\n`;\n\nexport const FlexColumnWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\nexport const DetailsContainer = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 5px;\n justify-content: space-between;\n button {\n color: ${({ theme }) => theme.colors.primary};\n text-decoration-color: ${({ theme }) => theme.colors.primary};\n }\n`;\n\nexport const DetailRow = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nexport const DetailElement = styled.div`\n flex: 1;\n p {\n margin: 5px 0 0 0;\n }\n`;\n\nexport const TermsList = styled.ul`\n list-style-type: disc;\n padding-left: 20px;\n p {\n margin: 0;\n }\n`;\n\nexport const StatusTag = styled.div`\n padding: 4px 8px;\n border-radius: 4px;\n color: ${({ theme }) => theme.colors.background};\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n &.small {\n font-size: 10px;\n padding: 2px 4px;\n }\n &.success {\n background-color: ${({ theme }) => theme.colors.success};\n }\n &.error {\n background-color: ${({ theme }) => theme.colors.error};\n }\n &.warning {\n background-color: ${({ theme }) => theme.colors.warning};\n }\n`;\n","import styled from 'styled-components';\n\n/**\n * Form layout style bases, ported from\n * `onboarding-flow-general/src/components/globals/shared/FormStyles.js`.\n *\n * The source's `Body100` is intentionally NOT re-exported here — the richer\n * `Body100` from `layout.ts` (with `color` prop + link styling) is the single\n * canonical version.\n */\n\nexport const Form = styled.form`\n max-width: 1000px;\n margin: 0 auto;\n`;\n\nexport const FormTitle = styled.h2`\n font-size: 1.5rem;\n font-weight: 600;\n margin-bottom: 2rem;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const FormSubtitle = styled.h3`\n font-size: 14px;\n font-weight: 500;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const FormRow = styled.div`\n display: flex;\n gap: 1rem;\n margin-bottom: 1rem;\n flex-wrap: wrap;\n\n @media (max-width: 768px) {\n flex-direction: column;\n }\n`;\n\nexport const FormColumn = styled.div`\n flex: 1;\n min-width: 200px;\n`;\n\nexport const FormCheckboxLabel = styled.label`\n display: flex;\n align-items: center;\n gap: 0.5rem;\n cursor: pointer;\n color: ${({ theme }) => theme.colors.primary};\n font-size: 0.875rem;\n\n input[type='checkbox'] {\n margin: 0;\n }\n`;\n\nexport const FormActions = styled.div`\n margin-top: 2rem;\n display: flex;\n justify-content: flex-end;\n`;\n","import React from 'react';\nimport { TextField } from '@mui/material';\n\nexport interface TextInputProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n type?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n /** Native `name` on the underlying input (form semantics + by-name selectors). */\n name?: string;\n /** Rendered as `data-testid` on the input element for e2e selection. */\n testId?: string;\n /** For `type=\"number\"`: maximum numeric value. Otherwise: maximum input length. */\n max?: number;\n /** Strip numeric characters as the user types. */\n ignoreNumbers?: boolean;\n /** Strip non-numeric characters as the user types. */\n onlyNumbers?: boolean;\n}\n\n/**\n * Text field built on MUI `TextField`. Presentational: emits the raw string\n * value via `onChange`. Ported from `onboarding-flow-general` (MUI v7\n * `slotProps` replace the deprecated `inputProps`); `disabled` is new.\n */\nexport function TextInput({\n label,\n error,\n value,\n onChange,\n placeholder,\n type = 'text',\n required = false,\n disabled = false,\n className,\n name,\n testId,\n max,\n ignoreNumbers = false,\n onlyNumbers = false,\n}: TextInputProps) {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n let newValue = e.target.value;\n\n if (ignoreNumbers) {\n newValue = newValue.replace(/[0-9]/g, '');\n }\n\n if (onlyNumbers) {\n newValue = newValue.replace(/[^0-9]/g, '');\n }\n\n if (type === 'number' && max !== undefined && newValue !== '') {\n const numericValue = parseFloat(newValue);\n if (!isNaN(numericValue) && numericValue > max) {\n return; // Don't update if value exceeds max\n }\n }\n\n onChange(newValue);\n };\n\n return (\n <TextField\n label={label}\n value={value}\n onChange={handleChange}\n placeholder={placeholder}\n type={type}\n required={required}\n disabled={disabled}\n className={className}\n name={name}\n error={!!error}\n helperText={error}\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n slotProps={{\n htmlInput: {\n ...(type === 'number' ? { max } : { maxLength: max }),\n 'data-testid': testId,\n },\n }}\n />\n );\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface EmailInputProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\n/** Email field — a `TextInput` pinned to `type=\"email\"`. */\nexport function EmailInput({ placeholder = 'Enter email address', ...props }: EmailInputProps) {\n return <TextInput {...props} type=\"email\" placeholder={placeholder} />;\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface PhoneInputProps {\n label?: string;\n error?: string;\n /** Raw digits (up to 10). Displayed masked as `(XXX) XXX-XXXX`. */\n value: string;\n onChange: (rawValue: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst formatPhoneNumber = (value: string): string => {\n if (!value) return '';\n const phoneNumber = value.replace(/\\D/g, '');\n if (phoneNumber.length <= 3) {\n return phoneNumber;\n } else if (phoneNumber.length <= 6) {\n return `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3)}`;\n }\n return `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3, 6)}-${phoneNumber.slice(6, 10)}`;\n};\n\n/** US phone field. Masks display as `(XXX) XXX-XXXX`; emits raw digits. */\nexport function PhoneInput({\n placeholder = '(XXX) XXX-XXXX',\n value,\n onChange,\n ...props\n}: PhoneInputProps) {\n const handleChange = (maskedValue: string) => {\n onChange(maskedValue.replace(/\\D/g, '').slice(0, 10));\n };\n\n return (\n <TextInput\n {...props}\n value={formatPhoneNumber(value)}\n onChange={handleChange}\n placeholder={placeholder}\n max={14}\n />\n );\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface SSNInputProps {\n label?: string;\n error?: string;\n /** Raw value; displayed masked as `XXX-XX-XXXX`. */\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst formatDisplayValue = (rawValue: string): string => {\n if (!rawValue) return '';\n const digits = rawValue.replace(/[^\\d]/g, '');\n if (digits.length <= 3) return digits;\n if (digits.length <= 5) return `${digits.slice(0, 3)}-${digits.slice(3)}`;\n return `${digits.slice(0, 3)}-${digits.slice(3, 5)}-${digits.slice(5, 9)}`;\n};\n\n/** SSN field. Masks display as `XXX-XX-XXXX`; emits the masked value. */\nexport function SSNInput({\n placeholder = 'XXX-XX-XXXX',\n value,\n onChange,\n ...props\n}: SSNInputProps) {\n return (\n <TextInput\n {...props}\n value={formatDisplayValue(value)}\n onChange={onChange}\n placeholder={placeholder}\n max={11}\n />\n );\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface TaxIdInputProps {\n label?: string;\n error?: string;\n /** Raw value; displayed masked as `XX-XXXXXXX` (EIN). */\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst formatDisplayValue = (rawValue: string): string => {\n if (!rawValue) return '';\n const digits = rawValue.replace(/[^\\d]/g, '');\n if (digits.length <= 2) return digits;\n if (digits.length <= 9) return `${digits.slice(0, 2)}-${digits.slice(2)}`;\n return `${digits.slice(0, 2)}-${digits.slice(2, 9)}`;\n};\n\n/** EIN / Tax ID field. Masks display as `XX-XXXXXXX`; emits the masked value. */\nexport function TaxIdInput({\n placeholder = 'XX-XXXXXXX',\n value,\n onChange,\n ...props\n}: TaxIdInputProps) {\n return (\n <TextInput\n {...props}\n value={formatDisplayValue(value)}\n onChange={onChange}\n placeholder={placeholder}\n max={10}\n />\n );\n}\n","import React, { useId } from 'react';\nimport styled from 'styled-components';\nimport { BaseInput, InputError, InputLabel, InputWrapper } from '../styles/inputs';\n\nexport interface CurrencyInputProps {\n label?: string;\n /** Raw numeric string (no `$`/commas); displayed with thousand separators. */\n value: string;\n onChange: (rawValue: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n error?: string;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst CurrencyInputWrapper = styled.div`\n position: relative;\n width: 100%;\n`;\n\nconst CurrencyPrefix = styled.span<{ $hasError?: boolean }>`\n position: absolute;\n left: 9px;\n top: 50%;\n transform: translateY(-50%);\n color: ${({ theme, $hasError }) => ($hasError ? theme.colors.error : theme.colors.primary)};\n font-size: 14px;\n font-family: ${({ theme }) => theme.typography.fontFamily};\n pointer-events: none;\n z-index: 1;\n`;\n\nconst StyledBaseInput = styled(BaseInput)`\n padding-left: calc(15px + 1ch);\n width: 100%;\n`;\n\nconst formatDisplayValue = (rawValue: string): string => {\n if (!rawValue || rawValue === '') return '';\n\n const numericValue = rawValue.toString().replace(/[^\\d.]/g, '');\n if (numericValue === '' || numericValue === '.') return '';\n\n const parts = numericValue.split('.');\n const integerPart = parts[0] || '';\n const decimalPart = parts[1] || '';\n\n const formattedInteger = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n const formattedDecimal = decimalPart.slice(0, 2);\n\n if (formattedDecimal) {\n return `${formattedInteger}.${formattedDecimal}`;\n } else if (numericValue.includes('.')) {\n return `${formattedInteger}.`;\n }\n return `${formattedInteger}`;\n};\n\nconst extractRawValue = (formattedValue: string): string => {\n if (!formattedValue) return '';\n const raw = formattedValue.replace(/[^\\d.]/g, '');\n const parts = raw.split('.');\n if (parts.length > 2) {\n return parts[0] + '.' + parts.slice(1).join('');\n }\n return raw;\n};\n\n/**\n * Currency field with a `$` prefix and thousand separators. Built on the shared\n * `BaseInput` style; emits the raw numeric string via `onChange`.\n */\nexport function CurrencyInput({\n label,\n value,\n onChange,\n placeholder,\n required,\n disabled,\n error,\n className,\n name,\n testId,\n}: CurrencyInputProps) {\n const reactId = useId();\n const inputId = `${reactId}-input`;\n const errorId = `${reactId}-error`;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(extractRawValue(e.target.value));\n };\n\n return (\n <InputWrapper className={className}>\n {label && <InputLabel htmlFor={inputId}>{label}</InputLabel>}\n <CurrencyInputWrapper>\n <CurrencyPrefix $hasError={!!error}>$</CurrencyPrefix>\n <StyledBaseInput\n id={inputId}\n name={name}\n type=\"text\"\n value={formatDisplayValue(value || '')}\n onChange={handleChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n className={error ? 'error' : ''}\n aria-invalid={!!error}\n aria-describedby={error ? errorId : undefined}\n data-testid={testId}\n />\n </CurrencyInputWrapper>\n {error && <InputError id={errorId}>{error}</InputError>}\n </InputWrapper>\n );\n}\n","import React, { useRef } from 'react';\nimport { IconButton, InputAdornment, TextField } from '@mui/material';\nimport CalendarMonthIcon from '@mui/icons-material/CalendarMonth';\n\nexport interface DateInputProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n /** ISO date string (`YYYY-MM-DD`) bounds. */\n min?: string;\n max?: string;\n}\n\n/**\n * Native date field (MUI `TextField type=\"date\"`) with a calendar-icon trigger.\n * Ported from `onboarding-flow-general`; the `react-feather` icon is replaced\n * by `@mui/icons-material` (a peer dep) and `inputProps`/`InputProps` by\n * MUI v7 `slotProps`.\n */\nexport function DateInput({\n label,\n error,\n value,\n onChange,\n required = false,\n disabled = false,\n className,\n name,\n testId,\n min,\n max,\n}: DateInputProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleIconClick = () => {\n const input = inputRef.current;\n if (!input) return;\n if (typeof input.showPicker === 'function') {\n input.showPicker();\n } else {\n input.focus();\n }\n };\n\n return (\n <TextField\n label={label}\n value={value}\n onChange={e => onChange(e.target.value)}\n type=\"date\"\n required={required}\n disabled={disabled}\n className={className}\n name={name}\n error={!!error}\n helperText={error}\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n inputRef={inputRef}\n slotProps={{\n inputLabel: { shrink: true },\n htmlInput: { min, max, 'data-testid': testId },\n input: {\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n onClick={handleIconClick}\n edge=\"end\"\n aria-label=\"Open date picker\"\n size=\"small\"\n disabled={disabled}\n >\n <CalendarMonthIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n },\n }}\n />\n );\n}\n","import React, { useId } from 'react';\nimport {\n FormControl,\n FormHelperText,\n InputLabel,\n MenuItem,\n Select,\n type SelectChangeEvent,\n} from '@mui/material';\nimport type { Option } from './types';\n\nexport interface DropDownProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n options?: Option[];\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\n/** Single-select dropdown built on MUI `Select`. */\nexport function DropDown({\n label,\n error,\n value,\n onChange,\n options = [],\n required = false,\n disabled = false,\n className,\n name,\n testId,\n}: DropDownProps) {\n const reactId = useId();\n const labelId = `${reactId}-label`;\n const selectId = `${reactId}-select`;\n\n // SelectDisplayProps is typed as HTMLAttributes, which omits `data-*`; widen it.\n const selectDisplayProps: React.HTMLAttributes<HTMLDivElement> & { 'data-testid'?: string } = {\n 'data-testid': testId,\n };\n\n const handleChange = (event: SelectChangeEvent) => {\n onChange(event.target.value);\n };\n\n return (\n <FormControl\n fullWidth\n error={!!error}\n required={required}\n disabled={disabled}\n className={className}\n size=\"small\"\n >\n {label && (\n <InputLabel id={labelId} sx={{ fontSize: '14px' }}>\n {label}\n </InputLabel>\n )}\n <Select\n labelId={label ? labelId : undefined}\n id={selectId}\n name={name}\n value={value || ''}\n onChange={handleChange}\n label={label}\n variant=\"outlined\"\n SelectDisplayProps={selectDisplayProps}\n >\n {options.map((opt, index) => (\n <MenuItem key={opt.value + index} value={opt.value}>\n {opt.label}\n </MenuItem>\n ))}\n </Select>\n {error && <FormHelperText>{error}</FormHelperText>}\n </FormControl>\n );\n}\n","import React from 'react';\nimport { Autocomplete, TextField } from '@mui/material';\nimport type { Option } from './types';\n\nexport interface SearchDropdownProps {\n label?: string;\n error?: string;\n /** Selected `value`(s). A comma-joined string is also accepted in multiple mode. */\n value: string | string[];\n onChange: (value: string | string[]) => void;\n options: Option[];\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n multiple?: boolean;\n noResultsMessage?: string;\n name?: string;\n testId?: string;\n}\n\n/** Searchable single/multi select built on MUI `Autocomplete`. */\nexport function SearchDropdown({\n label,\n error,\n value,\n onChange,\n options,\n placeholder = 'Search...',\n required = false,\n disabled = false,\n className,\n multiple = false,\n noResultsMessage = 'No results found',\n name,\n testId,\n}: SearchDropdownProps) {\n const getSelectedOption = (): Option | Option[] | null => {\n if (!value) return multiple ? [] : null;\n if (multiple) {\n const selectedValues = Array.isArray(value) ? value : value.split(',').filter(v => v.trim());\n return options.filter(opt => selectedValues.includes(opt.value));\n }\n const stringValue = Array.isArray(value) ? value[0] : value;\n return options.find(opt => opt.value === stringValue) || null;\n };\n\n const handleChange = (_event: React.SyntheticEvent, newValue: Option | Option[] | null) => {\n if (multiple) {\n onChange(Array.isArray(newValue) ? newValue.map(opt => opt.value) : []);\n } else {\n onChange(newValue && !Array.isArray(newValue) ? newValue.value : '');\n }\n };\n\n return (\n <Autocomplete<Option, boolean, false, false>\n options={options}\n value={getSelectedOption()}\n onChange={handleChange}\n getOptionLabel={option => option.label}\n isOptionEqualToValue={(option, val) => option.value === val.value}\n data-testid={testId}\n renderInput={params => (\n <TextField\n {...params}\n label={label}\n placeholder={placeholder}\n required={required}\n error={!!error}\n helperText={error}\n className={className}\n variant=\"outlined\"\n name={name}\n />\n )}\n noOptionsText={noResultsMessage}\n size=\"small\"\n fullWidth\n multiple={multiple}\n disabled={disabled}\n clearOnBlur={false}\n selectOnFocus\n autoHighlight\n />\n );\n}\n","import React, { useId, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { InputError, InputLabel } from '../styles/inputs';\nimport { Body200 } from '../styles/layout';\n\nexport interface FileInputProps {\n label?: string;\n error?: string;\n value?: File | null;\n /** Called with the chosen file (or null) and a validation error (or null). */\n onChange: (file: File | null, error: string | null) => void;\n placeholder?: string;\n /** Comma-separated extension list, e.g. `.png,.jpg,.pdf`. */\n accept?: string;\n /** Max size in bytes. */\n maxSize?: number;\n required?: boolean;\n className?: string;\n showRequirements?: boolean;\n name?: string;\n testId?: string;\n}\n\nconst FileInputContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n`;\n\nconst FileInputWrapper = styled.div<{ $hasError?: boolean; $dragOver?: boolean }>`\n position: relative;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: border-color 0.2s;\n border-color: ${({ theme, $dragOver }) => ($dragOver ? theme.colors.accent : undefined)};\n background-color: ${({ theme, $dragOver }) => ($dragOver ? theme.colors.surface : undefined)};\n\n &:hover {\n border-color: ${({ theme, $hasError }) => ($hasError ? theme.colors.error : theme.colors.accent)};\n }\n\n &:focus-within {\n border-color: ${({ theme, $hasError }) => ($hasError ? theme.colors.error : theme.colors.accent)};\n }\n`;\n\nconst HiddenFileInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst UploadButton = styled.button`\n background: none;\n border: none;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration: underline;\n cursor: pointer;\n font-size: 14px;\n padding: 0;\n display: flex;\n align-items: center;\n gap: 4px;\n\n &:hover {\n color: ${({ theme }) => theme.colors.accent};\n }\n`;\n\nconst FileName = styled.span`\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n flex: 1;\n`;\n\nconst UploadIcon = styled.span`\n color: ${({ theme }) => theme.colors.primary};\n display: flex;\n align-items: center;\n`;\n\nconst FileSize = styled.span`\n color: ${({ theme }) => theme.colors.secondary};\n font-size: 12px;\n`;\n\nconst ClearButton = styled.button`\n background: none;\n border: none;\n color: ${({ theme }) => theme.colors.secondary};\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n\n &:hover {\n color: ${({ theme }) => theme.colors.error};\n background-color: ${({ theme }) => theme.colors.error}20;\n }\n`;\n\nconst FileRequirements = styled.div`\n margin-top: 8px;\n padding: 8px 12px;\n background: ${({ theme }) => theme.colors.background};\n border: 1px solid ${({ theme }) => theme.border.color};\n border-radius: ${({ theme }) => theme.border.radius};\n`;\n\nconst formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n};\n\n/**\n * File upload with click + drag-and-drop, extension/size validation, and a\n * requirements hint. Emits `(file, error)` — both nullable. Ported from\n * `onboarding-flow-general`; `react-feather` icons replaced by\n * `@mui/icons-material`, and the `dragOver`/`hasError` style props made transient.\n */\nexport function FileInput({\n label,\n error,\n value,\n onChange,\n placeholder = 'Upload document',\n accept = '.png,.jpg,.jpeg,.pdf',\n maxSize = 10 * 1024 * 1024,\n required = false,\n className,\n showRequirements = true,\n name,\n testId,\n}: FileInputProps) {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [dragOver, setDragOver] = useState(false);\n const reactId = useId();\n const inputId = `${reactId}-input`;\n const errorId = `${reactId}-error`;\n const requirementsId = `${reactId}-requirements`;\n const describedBy = [error ? errorId : null, showRequirements ? requirementsId : null]\n .filter(Boolean)\n .join(' ');\n\n const validateFile = (file: File): string | null => {\n const validTypes = accept.split(',').map(type => type.trim().toLowerCase());\n const fileExtension = '.' + (file.name.split('.').pop() ?? '').toLowerCase();\n\n if (!validTypes.includes(fileExtension)) {\n return `Invalid file type. Accepted types: ${accept}`;\n }\n if (file.size > maxSize) {\n return `File size too large. Maximum size: ${formatFileSize(maxSize)}`;\n }\n return null;\n };\n\n const handleFileSelect = (file: File) => {\n const validationError = validateFile(file);\n if (validationError) {\n onChange(null, validationError);\n return;\n }\n onChange(file, null);\n };\n\n const handleClick = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file) handleFileSelect(file);\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(false);\n const file = e.dataTransfer.files?.[0];\n if (file) handleFileSelect(file);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange(null, null);\n if (fileInputRef.current) fileInputRef.current.value = '';\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClick();\n }\n };\n\n const acceptedTypesText = accept\n .split(',')\n .map(type => type.trim().toUpperCase().replace('.', ''))\n .join(', ');\n\n return (\n <FileInputContainer className={className}>\n {label && <InputLabel htmlFor={inputId}>{label}</InputLabel>}\n\n <FileInputWrapper\n $hasError={!!error}\n $dragOver={dragOver}\n role=\"button\"\n tabIndex={0}\n aria-label={label ? `${label}. ${placeholder}` : placeholder}\n aria-invalid={!!error}\n aria-describedby={describedBy || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n <UploadIcon>\n <CloudUploadIcon fontSize=\"small\" />\n </UploadIcon>\n <UploadButton as=\"span\">{placeholder}</UploadButton>\n\n {value && (\n <>\n <FileName>\n {value.name}\n <FileSize> ({formatFileSize(value.size)})</FileSize>\n </FileName>\n <ClearButton\n type=\"button\"\n onClick={handleClear}\n title=\"Clear file\"\n aria-label=\"Clear file\"\n >\n <CloseIcon fontSize=\"small\" />\n </ClearButton>\n </>\n )}\n\n <HiddenFileInput\n ref={fileInputRef}\n id={inputId}\n name={name}\n type=\"file\"\n accept={accept}\n onChange={handleFileChange}\n required={required}\n tabIndex={-1}\n data-testid={testId}\n />\n </FileInputWrapper>\n\n {error && <InputError id={errorId}>{error}</InputError>}\n\n {showRequirements && (\n <FileRequirements id={requirementsId}>\n <Body200>\n File types accepted are {acceptedTypesText}, with a max. size of{' '}\n {formatFileSize(maxSize)}\n </Body200>\n </FileRequirements>\n )}\n </FileInputContainer>\n );\n}\n","import styled from 'styled-components';\n\n/**\n * Themed radio button (a styled native `<input type=\"radio\">`). The fill grows\n * from the theme border color to `colors.primary` when checked.\n */\nexport const RadioInput = styled.input.attrs({ type: 'radio' })`\n appearance: none;\n width: 20px;\n height: 20px;\n border: 2px solid ${({ theme }) => theme.border.color};\n border-radius: 50%;\n margin: 0 0.5rem 0 0;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n transition: all 0.2s;\n\n &:checked {\n border-color: ${({ theme }) => theme.colors.primary};\n border-width: 6px;\n }\n\n &:hover {\n border-color: ${({ theme }) => theme.colors.primary};\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n","import styled from 'styled-components';\n\n/**\n * Themed checkbox (a styled native `<input type=\"checkbox\">`) with a CSS\n * checkmark. Fill uses `colors.primary` when checked.\n */\nexport const CheckboxInput = styled.input.attrs({ type: 'checkbox' })`\n appearance: none;\n width: 20px;\n height: 20px;\n border: 2px solid ${({ theme }) => theme.border.color};\n border-radius: 4px;\n margin: 0 0.5rem 0 0;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n transition: all 0.2s;\n\n &:checked {\n border-color: ${({ theme }) => theme.colors.primary};\n background-color: ${({ theme }) => theme.colors.primary};\n }\n\n &:checked::after {\n content: '';\n position: absolute;\n left: 5px;\n top: 1px;\n width: 6px;\n height: 11px;\n border: solid white;\n border-width: 0 2px 2px 0;\n transform: rotate(45deg);\n }\n\n &:hover {\n border-color: ${({ theme }) => theme.colors.primary};\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport interface StepperStep {\n label: string;\n component?: React.ReactNode;\n}\n\nexport interface StepperProps {\n steps: StepperStep[];\n currentStep: number;\n className?: string;\n testId?: string;\n}\n\nconst StepperContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n`;\n\nconst StepsContainer = styled.div`\n display: flex;\n justify-content: space-between;\n position: relative;\n`;\n\nconst StepContent = styled.div``;\n\nconst Step = styled.div<{ $active?: boolean; $completed?: boolean }>`\n position: relative;\n z-index: 2;\n background: ${({ theme }) => theme.colors.background};\n padding: 0 1rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.5rem;\n transition: all 0.2s ease-in-out;\n padding-bottom: 1rem;\n flex: 1;\n border-bottom: 1px solid;\n border-color: ${({ theme, $active, $completed }) =>\n $active || $completed ? theme.colors.primary : theme.colors.border};\n`;\n\nconst StepNumber = styled.div<{ $active?: boolean; $completed?: boolean }>`\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: ${({ theme, $active, $completed }) =>\n $completed ? theme.colors.primary : $active ? 'white' : theme.colors.surface};\n color: ${({ theme, $active, $completed }) =>\n $completed ? theme.colors.background : $active ? theme.colors.primary : theme.colors.secondary};\n font-weight: 500;\n transition: all 0.2s ease-in-out;\n border: 2px solid\n ${({ theme, $active, $completed }) =>\n $active || $completed ? theme.colors.primary : theme.colors.border};\n`;\n\nconst StepLabel = styled.span<{ $active?: boolean }>`\n color: ${({ theme, $active }) => ($active ? theme.colors.primary : theme.colors.secondary)};\n font-size: 0.875rem;\n font-weight: ${({ $active }) => ($active ? 500 : 400)};\n transition: all 0.2s ease-in-out;\n text-align: center;\n white-space: nowrap;\n`;\n\n/** Horizontal stepper with a number/label per step and the active step's content below. */\nexport function Stepper({ steps, currentStep, className, testId }: StepperProps) {\n return (\n <StepperContainer className={className} data-testid={testId}>\n <StepsContainer>\n {steps.map((step, index) => {\n const active = index === currentStep;\n const completed = index < currentStep;\n return (\n <Step\n key={'stepper-step-' + index}\n $active={active}\n $completed={completed}\n aria-current={active ? 'step' : undefined}\n >\n <StepNumber $active={active} $completed={completed}>\n {index + 1}\n </StepNumber>\n <StepLabel $active={active}>{step.label}</StepLabel>\n </Step>\n );\n })}\n </StepsContainer>\n <StepContent>{steps[currentStep]?.component}</StepContent>\n </StepperContainer>\n );\n}\n","import React, { useId, useState } from 'react';\nimport styled from 'styled-components';\n\nexport interface Tab {\n name: string;\n content?: React.ReactNode;\n}\n\nexport interface TabsProps {\n tabs?: Tab[];\n defaultActiveTab?: number;\n className?: string;\n onTabChange?: (index: number) => void;\n testId?: string;\n}\n\nconst TabsContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\n\nconst TabList = styled.div`\n display: flex;\n border-bottom: 1px solid ${({ theme }) => theme.colors.border};\n margin-bottom: 1rem;\n`;\n\nconst TabButton = styled.button<{ $active?: boolean }>`\n background: none;\n border: none;\n padding: 0.75rem 1.5rem;\n cursor: pointer;\n font-size: 0.875rem;\n font-weight: 500;\n color: ${({ theme, $active }) => ($active ? theme.colors.primary : theme.colors.secondary)};\n border-bottom: 2px solid ${({ theme, $active }) => ($active ? theme.colors.primary : 'transparent')};\n transition: all 0.2s ease-in-out;\n position: relative;\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary};\n background-color: ${({ theme }) => theme.colors.surface};\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.colors.accent};\n outline-offset: -2px;\n }\n`;\n\nconst TabContent = styled.div`\n padding: 1rem 0;\n min-height: 100px;\n`;\n\n/**\n * Tabbed panel managing its own active-tab state. Implements the ARIA tabs\n * pattern (`tablist`/`tab`/`tabpanel` with id linkage) for accessibility.\n */\nexport function Tabs({\n tabs = [],\n defaultActiveTab = 0,\n className,\n onTabChange,\n testId,\n}: TabsProps) {\n const [activeTab, setActiveTab] = useState(defaultActiveTab);\n const baseId = useId();\n\n const handleTabClick = (index: number) => {\n setActiveTab(index);\n onTabChange?.(index);\n };\n\n if (!tabs || tabs.length === 0) {\n return null;\n }\n\n const tabId = (i: number) => `${baseId}-tab-${i}`;\n const panelId = (i: number) => `${baseId}-panel-${i}`;\n\n return (\n <TabsContainer className={className} data-testid={testId}>\n <TabList role=\"tablist\">\n {tabs.map((tab, index) => {\n const active = index === activeTab;\n return (\n <TabButton\n key={`tab-${index}`}\n id={tabId(index)}\n role=\"tab\"\n type=\"button\"\n $active={active}\n aria-selected={active}\n aria-controls={panelId(index)}\n tabIndex={active ? 0 : -1}\n onClick={() => handleTabClick(index)}\n >\n {tab.name}\n </TabButton>\n );\n })}\n </TabList>\n\n <TabContent role=\"tabpanel\" id={panelId(activeTab)} aria-labelledby={tabId(activeTab)}>\n {tabs[activeTab]?.content}\n </TabContent>\n </TabsContainer>\n );\n}\n","import React from 'react';\nimport { Box, CircularProgress } from '@mui/material';\n\nexport interface LoaderProps {\n className?: string;\n /** Spinner diameter in px. */\n size?: number;\n /** Accessible label announced to screen readers. */\n label?: string;\n testId?: string;\n}\n\n/** Centered indeterminate spinner (MUI `CircularProgress`). */\nexport function Loader({ className, size, label = 'Loading', testId }: LoaderProps) {\n return (\n <Box\n className={className}\n data-testid={testId}\n sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }}\n >\n <CircularProgress size={size} aria-label={label} />\n </Box>\n );\n}\n","import React, { useId, useState } from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\n\nexport interface DotsMenuOption {\n label: string;\n action: () => void;\n}\n\nexport interface DotsMenuProps {\n options: DotsMenuOption[];\n iconSize?: 'small' | 'medium' | 'large';\n /** Accessible label for the trigger button. */\n ariaLabel?: string;\n testId?: string;\n}\n\n/**\n * Overflow (\"kebab\") menu: an icon button opening a list of actions. IDs are\n * generated with `useId()` so multiple instances on a page stay unique\n * (the source hardcoded a single id).\n */\nexport function DotsMenu({\n options,\n iconSize = 'medium',\n ariaLabel = 'more',\n testId,\n}: DotsMenuProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n const baseId = useId();\n const buttonId = `${baseId}-button`;\n const menuId = `${baseId}-menu`;\n\n const handleClick = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleOptionClick = (action: () => void) => {\n action();\n handleClose();\n };\n\n return (\n <>\n <IconButton\n aria-label={ariaLabel}\n id={buttonId}\n data-testid={testId}\n aria-controls={open ? menuId : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? 'true' : undefined}\n onClick={handleClick}\n size={iconSize}\n >\n <MoreVertIcon />\n </IconButton>\n <Menu\n id={menuId}\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n slotProps={{\n list: { 'aria-labelledby': buttonId },\n paper: { style: { maxHeight: 200, width: '20ch' } },\n }}\n >\n {options.map((option, idx) => (\n <MenuItem key={option.label + idx} onClick={() => handleOptionClick(option.action)}>\n {option.label}\n </MenuItem>\n ))}\n </Menu>\n </>\n );\n}\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { ThemeProvider } from '../theme';\nimport type { Branding } from '../theme';\nimport { Body100, Button, ButtonContainer, StatusTag } from '../styles/layout';\nimport { FormCheckboxLabel } from '../styles/forms';\nimport { CheckboxInput } from '../components/CheckboxInput';\nimport { DropDown } from '../components/DropDown';\nimport { Stepper } from '../components/Stepper';\nimport { TextInput } from '../components/TextInput';\n\nexport interface PreviewProps {\n /** Partner branding to render the sample with. Omit for the default theme. */\n branding?: Branding;\n className?: string;\n}\n\nconst PreviewCard = styled.div`\n display: flex;\n gap: 2rem;\n padding: 1.5rem;\n background: ${({ theme }) => theme.colors.background};\n border: ${({ theme }) => theme.border.width} solid ${({ theme }) => theme.border.color};\n border-radius: ${({ theme }) => theme.border.radius};\n`;\n\nconst MainColumn = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n flex: 1;\n min-width: 0;\n`;\n\nconst HeaderRow = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n`;\n\nconst SideColumn = styled.div`\n flex: 1;\n min-width: 0;\n`;\n\nfunction PreviewContent() {\n const [name, setName] = useState('Acme Corporation');\n const [plan, setPlan] = useState('growth');\n const [autopay, setAutopay] = useState(true);\n\n return (\n <PreviewCard data-testid=\"oatfi-ui-preview\">\n <MainColumn>\n <HeaderRow>\n <Body100 className=\"bold\">Partner</Body100>\n <StatusTag className=\"success small\">Active</StatusTag>\n </HeaderRow>\n\n <TextInput label=\"Business name\" value={name} onChange={setName} />\n <DropDown\n label=\"Plan\"\n value={plan}\n onChange={setPlan}\n options={[\n { value: 'starter', label: 'Starter' },\n { value: 'growth', label: 'Growth' },\n { value: 'scale', label: 'Scale' },\n ]}\n />\n <FormCheckboxLabel>\n <CheckboxInput checked={autopay} onChange={e => setAutopay(e.target.checked)} />\n Enable automatic payments\n </FormCheckboxLabel>\n\n <ButtonContainer>\n <Button className=\"secondary\">Cancel</Button>\n <Button>Save changes</Button>\n </ButtonContainer>\n </MainColumn>\n\n <SideColumn>\n <Stepper\n currentStep={1}\n steps={[{ label: 'Connect' }, { label: 'Verify' }, { label: 'Done' }]}\n />\n </SideColumn>\n </PreviewCard>\n );\n}\n\n/**\n * A self-contained branded snapshot of the OatFi UI kit — a header, a few\n * inputs, buttons, and a stepper. Wraps its own `ThemeProvider`, so a consumer\n * (e.g. the dashboard's Branding settings page) drops it in and passes partner\n * `branding` without setting up theming itself.\n */\nexport function Preview({ branding, className }: PreviewProps) {\n return (\n <ThemeProvider branding={branding}>\n <div className={className}>\n <PreviewContent />\n </div>\n </ThemeProvider>\n );\n}\n"],"names":["createTheme","createGlobalStyle","useMemo","jsxs","StyledThemeProvider","jsx","MuiThemeProviderBase","useStyledTheme","TextField","formatDisplayValue","useId","useRef","InputAdornment","IconButton","FormControl","InputLabel","Select","MenuItem","FormHelperText","Autocomplete","useState","Fragment","Box","CircularProgress"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/theme/defaultTheme.ts","../src/theme/mergeBranding.ts","../src/theme/muiTheme.ts","../src/theme/ThemeProvider.tsx","../src/theme/useTheme.ts","../src/styles/inputs.ts","../src/styles/layout.ts","../src/styles/forms.ts","../src/components/TextInput.tsx","../src/components/EmailInput.tsx","../src/components/PhoneInput.tsx","../src/components/SSNInput.tsx","../src/components/TaxIdInput.tsx","../src/components/CurrencyInput.tsx","../src/components/DateInput.tsx","../src/components/DropDown.tsx","../src/components/SearchDropdown.tsx","../src/components/FileInput.tsx","../src/components/RadioInput.tsx","../src/components/CheckboxInput.tsx","../src/components/Stepper.tsx","../src/components/Tabs.tsx","../src/components/Loader.tsx","../src/components/DotsMenu.tsx","../src/preview/Preview.tsx"],"sourcesContent":["import type { Theme } from './types';\n\n/**\n * The default OatFi theme. Ported from the embeds' `theme/types.js`, using the\n * more complete shape (with `colors.default`) from `mf-remote-react`, extended\n * with `buttonPrimary` / `buttonSecondary` so partner button colors have a home.\n *\n * `buttonPrimary` / `buttonSecondary` default to `primary` / `secondary` here so\n * an unbranded theme renders identically to the original embeds.\n */\nexport const defaultTheme: Theme = {\n colors: {\n primary: '#111827',\n secondary: '#6B7280',\n accent: '#2563EB',\n background: '#FFFFFF',\n surface: '#F3F4F6',\n border: '#E5E7EB',\n success: '#10B981',\n default: '#6B7280',\n warning: '#F59E42',\n error: '#EF4444',\n buttonPrimary: '#111827',\n buttonSecondary: '#6B7280',\n },\n border: {\n radius: '8px',\n width: '1px',\n color: '#E5E7EB',\n },\n typography: {\n fontFamily: '\"Geist\", \"Geist Sans\", Arial, sans-serif',\n },\n};\n","import { defaultTheme } from './defaultTheme';\nimport type { Branding, Theme } from './types';\n\nconst toPx = (value: number): string => `${value}px`;\n\n/**\n * Map partner `Branding` onto the full internal `Theme`.\n *\n * Pure and total: any missing field falls back to `defaultTheme`. Note that\n * `colors.primary` / `colors.secondary` are NOT partner-configurable — they\n * stay at the theme defaults; only the button colors, border, and font can be\n * branded.\n */\nexport function mergeBranding(branding?: Branding): Theme {\n const b = branding ?? {};\n\n return {\n ...defaultTheme,\n colors: {\n ...defaultTheme.colors,\n buttonPrimary: b.primaryButtonColor ?? defaultTheme.colors.buttonPrimary,\n buttonSecondary: b.secondaryButtonColor ?? defaultTheme.colors.buttonSecondary,\n },\n border: {\n ...defaultTheme.border,\n radius: b.borderRadius != null ? toPx(b.borderRadius) : defaultTheme.border.radius,\n width: b.borderWidth != null ? toPx(b.borderWidth) : defaultTheme.border.width,\n },\n typography: {\n ...defaultTheme.typography,\n fontFamily: b.fontFamily ?? defaultTheme.typography.fontFamily,\n },\n };\n}\n","import { createTheme, type Theme as MuiTheme } from '@mui/material/styles';\nimport type { Theme } from './types';\n\n/**\n * Build a MUI theme from our internal `Theme` so MUI-based primitives read the\n * same tokens as styled-components ones. Ported from the embeds'\n * `MuiThemeProvider.js`, typed and driven by the merged theme.\n */\nexport function buildMuiTheme(theme: Theme): MuiTheme {\n const { colors, border, typography } = theme;\n\n return createTheme({\n palette: {\n primary: {\n main: colors.accent,\n contrastText: colors.background,\n },\n secondary: {\n main: colors.secondary,\n },\n error: {\n main: colors.error,\n },\n warning: {\n main: colors.warning,\n },\n success: {\n main: colors.success,\n },\n background: {\n default: colors.background,\n paper: colors.surface,\n },\n text: {\n primary: colors.primary,\n secondary: colors.secondary,\n },\n },\n typography: {\n fontFamily: typography.fontFamily,\n fontSize: 14,\n },\n shape: {\n borderRadius: parseInt(border.radius, 10),\n },\n components: {\n MuiFormControlLabel: {\n styleOverrides: {\n label: {\n fontSize: '12px',\n fontWeight: 400,\n },\n },\n },\n MuiPaper: {\n styleOverrides: {\n root: {\n backgroundColor: colors.background,\n border: `${border.width} solid ${border.color}`,\n },\n },\n defaultProps: {\n elevation: 0,\n },\n },\n MuiLink: {\n styleOverrides: {\n root: {\n cursor: 'pointer',\n fontSize: '16px',\n fontWeight: 600,\n fontFamily: typography.fontFamily,\n },\n },\n },\n MuiTextField: {\n styleOverrides: {\n root: {\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: border.color,\n borderWidth: border.width,\n },\n '&:hover fieldset': {\n borderColor: colors.accent,\n },\n '&.Mui-focused fieldset': {\n borderColor: colors.accent,\n },\n '&.Mui-error fieldset': {\n borderColor: colors.error,\n },\n },\n '& .MuiInputLabel-root, & .MuiFormLabel-root, & .MuiInputLabel-formControl': {\n color: colors.secondary,\n fontSize: '14px',\n '&.Mui-focused': {\n color: colors.accent,\n },\n '&.Mui-error': {\n color: colors.error,\n },\n },\n '& .MuiInputBase-input': {\n fontSize: 14,\n color: colors.primary,\n '&::placeholder': {\n color: colors.secondary,\n opacity: 1,\n },\n },\n },\n },\n },\n MuiSelect: {\n styleOverrides: {\n select: {\n fontSize: 14,\n },\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: {\n fontSize: 14,\n '& input[type=\"date\"]::-webkit-calendar-picker-indicator': {\n display: 'none',\n },\n '& .Mui-error': {\n color: colors.error,\n },\n '& input[type=\"date\"]::-webkit-inner-spin-button': {\n display: 'none',\n },\n '& input[type=\"date\"]::-webkit-clear-button': {\n display: 'none',\n },\n },\n },\n },\n MuiFormControl: {\n styleOverrides: {\n root: {\n '& input::-webkit-datetime-edit': {\n color: colors.secondary,\n },\n '& .Mui-error': {\n input: {\n color: colors.error,\n },\n label: {\n color: colors.error,\n },\n },\n },\n },\n },\n },\n });\n}\n","import React, { useMemo } from 'react';\nimport { ThemeProvider as MuiThemeProviderBase } from '@mui/material/styles';\nimport { ThemeProvider as StyledThemeProvider, createGlobalStyle } from 'styled-components';\nimport { mergeBranding } from './mergeBranding';\nimport { buildMuiTheme } from './muiTheme';\nimport type { Branding } from './types';\n\nconst GlobalStyle = createGlobalStyle`\n * {\n font-family: ${({ theme }) => theme.typography.fontFamily};\n box-sizing: border-box;\n }\n`;\n\nexport interface ThemeProviderProps {\n /**\n * Partner branding overrides. Any omitted field falls back to `defaultTheme`.\n * Omit entirely to render with the default OatFi theme.\n */\n branding?: Branding;\n children?: React.ReactNode;\n}\n\n/**\n * Single theming entry point for @oatfi/ui consumers.\n *\n * Resolves `branding` into the full internal `Theme` and provides it through\n * BOTH styled-components and MUI, so a primitive built on either gets identical\n * tokens. Context cannot cross the embed loader's script boundary, so this is\n * mounted *inside* each consumer's React root.\n */\nexport function ThemeProvider({ branding, children }: ThemeProviderProps) {\n const theme = useMemo(() => mergeBranding(branding), [branding]);\n const muiTheme = useMemo(() => buildMuiTheme(theme), [theme]);\n\n return (\n <StyledThemeProvider theme={theme}>\n <GlobalStyle />\n <MuiThemeProviderBase theme={muiTheme}>{children}</MuiThemeProviderBase>\n </StyledThemeProvider>\n );\n}\n","import { useTheme as useStyledTheme } from 'styled-components';\nimport type { Theme } from './types';\n\n/**\n * Read the resolved @oatfi/ui theme. Typed re-export of styled-components'\n * `useTheme` (typing comes from the `DefaultTheme` augmentation in `styled.d.ts`).\n */\nexport const useTheme = (): Theme => useStyledTheme();\n","import styled from 'styled-components';\n\n/**\n * Input style bases, ported from\n * `onboarding-flow-general/src/components/globals/shared/InputStyles.js`.\n *\n * The dropdown chevron SVG fill was a hardcoded `#6B7280`; it now reads from\n * `theme.colors.default` (whose default value is `#6B7280`, so unbranded\n * appearance is unchanged) and is URL-encoded into the `data:` URI.\n */\n\nconst chevronDataUri = (color: string): string =>\n `data:image/svg+xml;utf8,<svg fill=\"${encodeURIComponent(\n color,\n )}\" height=\"20\" viewBox=\"0 0 20 20\" width=\"20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.293 7.293a1 1 0 011.414 0L10 8.586l1.293-1.293a1 1 0 111.414 1.414l-2 2a1 1 0 01-1.414 0l-2-2a1 1 0 010-1.414z\"/></svg>`;\n\nexport const InputWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 5px;\n width: 100%;\n\n span.icon {\n position: absolute;\n right: 1rem;\n top: 51%;\n display: flex;\n align-items: center;\n cursor: pointer;\n z-index: 1;\n }\n\n &.Werror span.icon {\n top: 42%;\n }\n`;\n\nexport const InputLabel = styled.label`\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n font-weight: 500;\n margin-bottom: 4px;\n`;\n\nexport const InputError = styled.span`\n color: ${({ theme }) => theme.colors.error};\n font-size: 12px;\n font-weight: 500;\n margin-top: -4px;\n padding-left: 5px;\n`;\n\nexport const BaseInput = styled.input`\n display: flex;\n padding: 9px;\n border: ${({ theme }) => theme.border.width} solid ${({ theme }) => theme.border.color};\n border-radius: ${({ theme }) => theme.border.radius};\n background: ${({ theme }) => theme.colors.background};\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n font-family: ${({ theme }) => theme.typography.fontFamily};\n outline: none;\n transition: border-color 0.2s;\n\n &[type='date'] {\n &::-webkit-calendar-picker-indicator {\n opacity: 0;\n pointer-events: none;\n }\n &::-moz-calendar-picker-indicator {\n opacity: 0;\n pointer-events: none;\n }\n &::-ms-input-placeholder {\n opacity: 0;\n pointer-events: none;\n }\n }\n\n &:focus {\n border-color: ${({ theme }) => theme.colors.accent};\n }\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.secondary};\n opacity: 1;\n }\n\n &.error {\n border-color: ${({ theme }) => theme.colors.error};\n color: ${({ theme }) => theme.colors.error};\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.error};\n opacity: 1;\n }\n }\n`;\n\nexport const SelectInput = styled(BaseInput)`\n appearance: none;\n background-image: url('${({ theme }) => chevronDataUri(theme.colors.default)}');\n background-repeat: no-repeat;\n background-position: right 12px center;\n background-size: 20px 20px;\n`;\n\nexport const DropdownContainer = styled.div`\n position: relative;\n width: 100%;\n`;\n\nexport const AutocompleteInput = styled(BaseInput)`\n cursor: pointer;\n background-image: url('${({ theme }) => chevronDataUri(theme.colors.default)}');\n background-repeat: no-repeat;\n background-position: right 12px center;\n background-size: 20px 20px;\n width: 100%;\n`;\n\nexport const DropdownList = styled.div<{ $isOpen?: boolean }>`\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n max-height: 200px;\n overflow-y: auto;\n background: ${({ theme }) => theme.colors.background};\n border: ${({ theme }) => theme.border.width} solid ${({ theme }) => theme.border.color};\n border-top: none;\n border-radius: 0 0 ${({ theme }) => theme.border.radius} ${({ theme }) => theme.border.radius};\n z-index: 1000;\n display: ${({ $isOpen }) => ($isOpen ? 'block' : 'none')};\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n`;\n\nexport const DropdownItem = styled.div<{ $isSelected?: boolean }>`\n padding: 8px 12px;\n cursor: pointer;\n background: ${({ $isSelected, theme }) => ($isSelected ? theme.colors.accent + '20' : 'transparent')};\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n border-bottom: 1px solid ${({ theme }) => theme.border.color};\n\n &:hover {\n background: ${({ theme }) => theme.colors.accent + '10'};\n }\n\n &:last-child {\n border-bottom: none;\n }\n`;\n\nexport const NoResults = styled.div`\n padding: 12px;\n text-align: center;\n color: ${({ theme }) => theme.colors.secondary};\n font-size: 14px;\n`;\n","import styled from 'styled-components';\n\n/**\n * Layout, typography, and button style bases, ported from\n * `onboarding-flow-general/src/components/globals/shared/General.js`.\n *\n * The Button hover (`${theme.colors.primary}CC`) and `Body*` link colors\n * (`theme.colors.primary`) already read from the theme in the source — the\n * `#0e0e0e` / `#0000FF` literals the rollout plan flagged were from an older\n * revision and are not present here.\n */\n\nexport const H3 = styled.h3`\n font-size: 18px;\n font-weight: 500;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const H2 = styled.h2`\n font-size: 24px;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const H1 = styled.h1`\n font-size: 32px;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const Body100 = styled.p`\n font-size: 12px;\n font-weight: 400;\n text-align: justify;\n color: ${({ color, theme }) => (color === 'secondary' ? theme.colors.secondary : theme.colors.primary)};\n a {\n font-size: 12px;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration-color: ${({ theme }) => theme.colors.primary};\n }\n &.bold {\n font-weight: 600;\n }\n span {\n font-weight: 400;\n }\n`;\n\nexport const Body200 = styled.p`\n font-size: 14px;\n font-weight: 400;\n text-align: justify;\n color: ${({ color, theme }) => (color === 'secondary' ? theme.colors.secondary : theme.colors.primary)};\n a {\n font-size: 14px;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration-color: ${({ theme }) => theme.colors.primary};\n }\n &.bold {\n font-weight: 600;\n }\n span {\n font-weight: 400;\n }\n`;\n\nexport const Body400 = styled.p`\n font-size: 11px;\n font-weight: 400;\n text-align: justify;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const Container = styled.div`\n padding: 2rem;\n border-radius: ${({ theme }) => theme.border.radius};\n background-color: ${({ theme }) => theme.colors.background};\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n max-width: 1000px;\n margin: 0 auto;\n`;\n\nexport const Content = styled.div`\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n`;\n\nexport const ButtonContainer = styled.div`\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 1rem;\n &.space-between {\n justify-content: space-between;\n }\n`;\n\nexport const Button = styled.button`\n align-items: center;\n background-color: ${({ theme }) => theme.colors.buttonPrimary};\n border: none;\n border-radius: ${({ theme }) => theme.border.radius};\n color: ${({ theme }) => theme.colors.background};\n cursor: pointer;\n display: flex;\n font-size: 14px;\n gap: 0.25rem;\n justify-content: center;\n margin-top: 1rem;\n padding: 0.75rem 1.5rem;\n transition: background-color 0.2s ease;\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.35;\n }\n\n &:hover {\n background-color: ${({ theme }) => `${theme.colors.buttonPrimary}CC`};\n }\n\n &.secondary {\n background-color: ${({ theme }) => theme.colors.background};\n color: ${({ theme }) => theme.colors.buttonSecondary};\n border: 1px solid ${({ theme }) => theme.colors.buttonSecondary};\n &:hover {\n background-color: ${({ theme }) => `${theme.colors.buttonSecondary}10`};\n }\n }\n\n &.dashed {\n background-color: transparent;\n color: ${({ theme }) => theme.colors.secondary};\n border: 1px dashed ${({ theme }) => theme.colors.border};\n &:hover {\n background-color: ${({ theme }) => theme.colors.surface};\n border-color: ${({ theme }) => theme.colors.secondary};\n color: ${({ theme }) => theme.colors.primary};\n }\n }\n\n &.link {\n background-color: transparent;\n color: ${({ theme }) => theme.colors.accent};\n border: none;\n cursor: pointer;\n margin: 0;\n }\n &.link:hover {\n color: ${({ theme }) => theme.colors.accent};\n text-decoration: underline;\n }\n &.no-padding {\n padding: 0;\n }\n`;\n\nexport const FlexRowWrapper = styled.div`\n display: flex;\n flex-direction: row;\n .flex-row-item {\n flex: 1;\n }\n`;\n\nexport const FlexColumnWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\nexport const DetailsContainer = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 5px;\n justify-content: space-between;\n button {\n color: ${({ theme }) => theme.colors.primary};\n text-decoration-color: ${({ theme }) => theme.colors.primary};\n }\n`;\n\nexport const DetailRow = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nexport const DetailElement = styled.div`\n flex: 1;\n p {\n margin: 5px 0 0 0;\n }\n`;\n\nexport const TermsList = styled.ul`\n list-style-type: disc;\n padding-left: 20px;\n p {\n margin: 0;\n }\n`;\n\nexport const StatusTag = styled.div`\n padding: 4px 8px;\n border-radius: 4px;\n color: ${({ theme }) => theme.colors.background};\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n &.small {\n font-size: 10px;\n padding: 2px 4px;\n }\n &.success {\n background-color: ${({ theme }) => theme.colors.success};\n }\n &.error {\n background-color: ${({ theme }) => theme.colors.error};\n }\n &.warning {\n background-color: ${({ theme }) => theme.colors.warning};\n }\n`;\n","import styled from 'styled-components';\n\n/**\n * Form layout style bases, ported from\n * `onboarding-flow-general/src/components/globals/shared/FormStyles.js`.\n *\n * The source's `Body100` is intentionally NOT re-exported here — the richer\n * `Body100` from `layout.ts` (with `color` prop + link styling) is the single\n * canonical version.\n */\n\nexport const Form = styled.form`\n max-width: 1000px;\n margin: 0 auto;\n`;\n\nexport const FormTitle = styled.h2`\n font-size: 1.5rem;\n font-weight: 600;\n margin-bottom: 2rem;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const FormSubtitle = styled.h3`\n font-size: 14px;\n font-weight: 500;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const FormRow = styled.div`\n display: flex;\n gap: 1rem;\n margin-bottom: 1rem;\n flex-wrap: wrap;\n\n @media (max-width: 768px) {\n flex-direction: column;\n }\n`;\n\nexport const FormColumn = styled.div`\n flex: 1;\n min-width: 200px;\n`;\n\nexport const FormCheckboxLabel = styled.label`\n display: flex;\n align-items: center;\n gap: 0.5rem;\n cursor: pointer;\n color: ${({ theme }) => theme.colors.primary};\n font-size: 0.875rem;\n\n input[type='checkbox'] {\n margin: 0;\n }\n`;\n\nexport const FormActions = styled.div`\n margin-top: 2rem;\n display: flex;\n justify-content: flex-end;\n`;\n","import React from 'react';\nimport { TextField } from '@mui/material';\n\nexport interface TextInputProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n type?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n /** Native `name` on the underlying input (form semantics + by-name selectors). */\n name?: string;\n /** Rendered as `data-testid` on the input element for e2e selection. */\n testId?: string;\n /** For `type=\"number\"`: maximum numeric value. Otherwise: maximum input length. */\n max?: number;\n /** Strip numeric characters as the user types. */\n ignoreNumbers?: boolean;\n /** Strip non-numeric characters as the user types. */\n onlyNumbers?: boolean;\n}\n\n/**\n * Text field built on MUI `TextField`. Presentational: emits the raw string\n * value via `onChange`. Ported from `onboarding-flow-general` (MUI v7\n * `slotProps` replace the deprecated `inputProps`); `disabled` is new.\n */\nexport function TextInput({\n label,\n error,\n value,\n onChange,\n placeholder,\n type = 'text',\n required = false,\n disabled = false,\n className,\n name,\n testId,\n max,\n ignoreNumbers = false,\n onlyNumbers = false,\n}: TextInputProps) {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n let newValue = e.target.value;\n\n if (ignoreNumbers) {\n newValue = newValue.replace(/[0-9]/g, '');\n }\n\n if (onlyNumbers) {\n newValue = newValue.replace(/[^0-9]/g, '');\n }\n\n if (type === 'number' && max !== undefined && newValue !== '') {\n const numericValue = parseFloat(newValue);\n if (!isNaN(numericValue) && numericValue > max) {\n return; // Don't update if value exceeds max\n }\n }\n\n onChange(newValue);\n };\n\n return (\n <TextField\n label={label}\n value={value}\n onChange={handleChange}\n placeholder={placeholder}\n type={type}\n required={required}\n disabled={disabled}\n className={className}\n name={name}\n error={!!error}\n helperText={error}\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n slotProps={{\n htmlInput: {\n ...(type === 'number' ? { max } : { maxLength: max }),\n 'data-testid': testId,\n },\n }}\n />\n );\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface EmailInputProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\n/** Email field — a `TextInput` pinned to `type=\"email\"`. */\nexport function EmailInput({ placeholder = 'Enter email address', ...props }: EmailInputProps) {\n return <TextInput {...props} type=\"email\" placeholder={placeholder} />;\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface PhoneInputProps {\n label?: string;\n error?: string;\n /** Raw digits (up to 10). Displayed masked as `(XXX) XXX-XXXX`. */\n value: string;\n onChange: (rawValue: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst formatPhoneNumber = (value: string): string => {\n if (!value) return '';\n const phoneNumber = value.replace(/\\D/g, '');\n if (phoneNumber.length <= 3) {\n return phoneNumber;\n } else if (phoneNumber.length <= 6) {\n return `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3)}`;\n }\n return `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3, 6)}-${phoneNumber.slice(6, 10)}`;\n};\n\n/** US phone field. Masks display as `(XXX) XXX-XXXX`; emits raw digits. */\nexport function PhoneInput({\n placeholder = '(XXX) XXX-XXXX',\n value,\n onChange,\n ...props\n}: PhoneInputProps) {\n const handleChange = (maskedValue: string) => {\n onChange(maskedValue.replace(/\\D/g, '').slice(0, 10));\n };\n\n return (\n <TextInput\n {...props}\n value={formatPhoneNumber(value)}\n onChange={handleChange}\n placeholder={placeholder}\n max={14}\n />\n );\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface SSNInputProps {\n label?: string;\n error?: string;\n /** Raw value; displayed masked as `XXX-XX-XXXX`. */\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst formatDisplayValue = (rawValue: string): string => {\n if (!rawValue) return '';\n const digits = rawValue.replace(/[^\\d]/g, '');\n if (digits.length <= 3) return digits;\n if (digits.length <= 5) return `${digits.slice(0, 3)}-${digits.slice(3)}`;\n return `${digits.slice(0, 3)}-${digits.slice(3, 5)}-${digits.slice(5, 9)}`;\n};\n\n/** SSN field. Masks display as `XXX-XX-XXXX`; emits the masked value. */\nexport function SSNInput({\n placeholder = 'XXX-XX-XXXX',\n value,\n onChange,\n ...props\n}: SSNInputProps) {\n return (\n <TextInput\n {...props}\n value={formatDisplayValue(value)}\n onChange={onChange}\n placeholder={placeholder}\n max={11}\n />\n );\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface TaxIdInputProps {\n label?: string;\n error?: string;\n /** Raw value; displayed masked as `XX-XXXXXXX` (EIN). */\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst formatDisplayValue = (rawValue: string): string => {\n if (!rawValue) return '';\n const digits = rawValue.replace(/[^\\d]/g, '');\n if (digits.length <= 2) return digits;\n if (digits.length <= 9) return `${digits.slice(0, 2)}-${digits.slice(2)}`;\n return `${digits.slice(0, 2)}-${digits.slice(2, 9)}`;\n};\n\n/** EIN / Tax ID field. Masks display as `XX-XXXXXXX`; emits the masked value. */\nexport function TaxIdInput({\n placeholder = 'XX-XXXXXXX',\n value,\n onChange,\n ...props\n}: TaxIdInputProps) {\n return (\n <TextInput\n {...props}\n value={formatDisplayValue(value)}\n onChange={onChange}\n placeholder={placeholder}\n max={10}\n />\n );\n}\n","import React, { useId } from 'react';\nimport styled from 'styled-components';\nimport { BaseInput, InputError, InputLabel, InputWrapper } from '../styles/inputs';\n\nexport interface CurrencyInputProps {\n label?: string;\n /** Raw numeric string (no `$`/commas); displayed with thousand separators. */\n value: string;\n onChange: (rawValue: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n error?: string;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst CurrencyInputWrapper = styled.div`\n position: relative;\n width: 100%;\n`;\n\nconst CurrencyPrefix = styled.span<{ $hasError?: boolean }>`\n position: absolute;\n left: 9px;\n top: 50%;\n transform: translateY(-50%);\n color: ${({ theme, $hasError }) => ($hasError ? theme.colors.error : theme.colors.primary)};\n font-size: 14px;\n font-family: ${({ theme }) => theme.typography.fontFamily};\n pointer-events: none;\n z-index: 1;\n`;\n\nconst StyledBaseInput = styled(BaseInput)`\n padding-left: calc(15px + 1ch);\n width: 100%;\n`;\n\nconst formatDisplayValue = (rawValue: string): string => {\n if (!rawValue || rawValue === '') return '';\n\n const numericValue = rawValue.toString().replace(/[^\\d.]/g, '');\n if (numericValue === '' || numericValue === '.') return '';\n\n const parts = numericValue.split('.');\n const integerPart = parts[0] || '';\n const decimalPart = parts[1] || '';\n\n const formattedInteger = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n const formattedDecimal = decimalPart.slice(0, 2);\n\n if (formattedDecimal) {\n return `${formattedInteger}.${formattedDecimal}`;\n } else if (numericValue.includes('.')) {\n return `${formattedInteger}.`;\n }\n return `${formattedInteger}`;\n};\n\nconst extractRawValue = (formattedValue: string): string => {\n if (!formattedValue) return '';\n const raw = formattedValue.replace(/[^\\d.]/g, '');\n const parts = raw.split('.');\n if (parts.length > 2) {\n return parts[0] + '.' + parts.slice(1).join('');\n }\n return raw;\n};\n\n/**\n * Currency field with a `$` prefix and thousand separators. Built on the shared\n * `BaseInput` style; emits the raw numeric string via `onChange`.\n */\nexport function CurrencyInput({\n label,\n value,\n onChange,\n placeholder,\n required,\n disabled,\n error,\n className,\n name,\n testId,\n}: CurrencyInputProps) {\n const reactId = useId();\n const inputId = `${reactId}-input`;\n const errorId = `${reactId}-error`;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(extractRawValue(e.target.value));\n };\n\n return (\n <InputWrapper className={className}>\n {label && <InputLabel htmlFor={inputId}>{label}</InputLabel>}\n <CurrencyInputWrapper>\n <CurrencyPrefix $hasError={!!error}>$</CurrencyPrefix>\n <StyledBaseInput\n id={inputId}\n name={name}\n type=\"text\"\n value={formatDisplayValue(value || '')}\n onChange={handleChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n className={error ? 'error' : ''}\n aria-invalid={!!error}\n aria-describedby={error ? errorId : undefined}\n data-testid={testId}\n />\n </CurrencyInputWrapper>\n {error && <InputError id={errorId}>{error}</InputError>}\n </InputWrapper>\n );\n}\n","import React, { useRef } from 'react';\nimport { IconButton, InputAdornment, TextField } from '@mui/material';\nimport CalendarMonthIcon from '@mui/icons-material/CalendarMonth';\n\nexport interface DateInputProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n /** ISO date string (`YYYY-MM-DD`) bounds. */\n min?: string;\n max?: string;\n}\n\n/**\n * Native date field (MUI `TextField type=\"date\"`) with a calendar-icon trigger.\n * Ported from `onboarding-flow-general`; the `react-feather` icon is replaced\n * by `@mui/icons-material` (a peer dep) and `inputProps`/`InputProps` by\n * MUI v7 `slotProps`.\n */\nexport function DateInput({\n label,\n error,\n value,\n onChange,\n required = false,\n disabled = false,\n className,\n name,\n testId,\n min,\n max,\n}: DateInputProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleIconClick = () => {\n const input = inputRef.current;\n if (!input) return;\n if (typeof input.showPicker === 'function') {\n input.showPicker();\n } else {\n input.focus();\n }\n };\n\n return (\n <TextField\n label={label}\n value={value}\n onChange={e => onChange(e.target.value)}\n type=\"date\"\n required={required}\n disabled={disabled}\n className={className}\n name={name}\n error={!!error}\n helperText={error}\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n inputRef={inputRef}\n slotProps={{\n inputLabel: { shrink: true },\n htmlInput: { min, max, 'data-testid': testId },\n input: {\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n onClick={handleIconClick}\n edge=\"end\"\n aria-label=\"Open date picker\"\n size=\"small\"\n disabled={disabled}\n >\n <CalendarMonthIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n },\n }}\n />\n );\n}\n","import React, { useId } from 'react';\nimport {\n FormControl,\n FormHelperText,\n InputLabel,\n MenuItem,\n Select,\n type SelectChangeEvent,\n} from '@mui/material';\nimport type { Option } from './types';\n\nexport interface DropDownProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n options?: Option[];\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\n/** Single-select dropdown built on MUI `Select`. */\nexport function DropDown({\n label,\n error,\n value,\n onChange,\n options = [],\n required = false,\n disabled = false,\n className,\n name,\n testId,\n}: DropDownProps) {\n const reactId = useId();\n const labelId = `${reactId}-label`;\n const selectId = `${reactId}-select`;\n\n // SelectDisplayProps is typed as HTMLAttributes, which omits `data-*`; widen it.\n const selectDisplayProps: React.HTMLAttributes<HTMLDivElement> & { 'data-testid'?: string } = {\n 'data-testid': testId,\n };\n\n const handleChange = (event: SelectChangeEvent) => {\n onChange(event.target.value);\n };\n\n return (\n <FormControl\n fullWidth\n error={!!error}\n required={required}\n disabled={disabled}\n className={className}\n size=\"small\"\n >\n {label && (\n <InputLabel id={labelId} sx={{ fontSize: '14px' }}>\n {label}\n </InputLabel>\n )}\n <Select\n labelId={label ? labelId : undefined}\n id={selectId}\n name={name}\n value={value || ''}\n onChange={handleChange}\n label={label}\n variant=\"outlined\"\n SelectDisplayProps={selectDisplayProps}\n >\n {options.map((opt, index) => (\n <MenuItem key={opt.value + index} value={opt.value}>\n {opt.label}\n </MenuItem>\n ))}\n </Select>\n {error && <FormHelperText>{error}</FormHelperText>}\n </FormControl>\n );\n}\n","import React from 'react';\nimport { Autocomplete, TextField } from '@mui/material';\nimport type { Option } from './types';\n\nexport interface SearchDropdownProps {\n label?: string;\n error?: string;\n /** Selected `value`(s). A comma-joined string is also accepted in multiple mode. */\n value: string | string[];\n onChange: (value: string | string[]) => void;\n options: Option[];\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n multiple?: boolean;\n noResultsMessage?: string;\n name?: string;\n testId?: string;\n}\n\n/** Searchable single/multi select built on MUI `Autocomplete`. */\nexport function SearchDropdown({\n label,\n error,\n value,\n onChange,\n options,\n placeholder = 'Search...',\n required = false,\n disabled = false,\n className,\n multiple = false,\n noResultsMessage = 'No results found',\n name,\n testId,\n}: SearchDropdownProps) {\n const getSelectedOption = (): Option | Option[] | null => {\n if (!value) return multiple ? [] : null;\n if (multiple) {\n const selectedValues = Array.isArray(value) ? value : value.split(',').filter(v => v.trim());\n return options.filter(opt => selectedValues.includes(opt.value));\n }\n const stringValue = Array.isArray(value) ? value[0] : value;\n return options.find(opt => opt.value === stringValue) || null;\n };\n\n const handleChange = (_event: React.SyntheticEvent, newValue: Option | Option[] | null) => {\n if (multiple) {\n onChange(Array.isArray(newValue) ? newValue.map(opt => opt.value) : []);\n } else {\n onChange(newValue && !Array.isArray(newValue) ? newValue.value : '');\n }\n };\n\n return (\n <Autocomplete<Option, boolean, false, false>\n options={options}\n value={getSelectedOption()}\n onChange={handleChange}\n getOptionLabel={option => option.label}\n isOptionEqualToValue={(option, val) => option.value === val.value}\n data-testid={testId}\n renderInput={params => (\n <TextField\n {...params}\n label={label}\n placeholder={placeholder}\n required={required}\n error={!!error}\n helperText={error}\n className={className}\n variant=\"outlined\"\n name={name}\n />\n )}\n noOptionsText={noResultsMessage}\n size=\"small\"\n fullWidth\n multiple={multiple}\n disabled={disabled}\n clearOnBlur={false}\n selectOnFocus\n autoHighlight\n />\n );\n}\n","import React, { useId, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { InputError, InputLabel } from '../styles/inputs';\nimport { Body200 } from '../styles/layout';\n\nexport interface FileInputProps {\n label?: string;\n error?: string;\n value?: File | null;\n /** Called with the chosen file (or null) and a validation error (or null). */\n onChange: (file: File | null, error: string | null) => void;\n placeholder?: string;\n /** Comma-separated extension list, e.g. `.png,.jpg,.pdf`. */\n accept?: string;\n /** Max size in bytes. */\n maxSize?: number;\n required?: boolean;\n className?: string;\n showRequirements?: boolean;\n name?: string;\n testId?: string;\n}\n\nconst FileInputContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n`;\n\nconst FileInputWrapper = styled.div<{ $hasError?: boolean; $dragOver?: boolean }>`\n position: relative;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: border-color 0.2s;\n border-color: ${({ theme, $dragOver }) => ($dragOver ? theme.colors.accent : undefined)};\n background-color: ${({ theme, $dragOver }) => ($dragOver ? theme.colors.surface : undefined)};\n\n &:hover {\n border-color: ${({ theme, $hasError }) => ($hasError ? theme.colors.error : theme.colors.accent)};\n }\n\n &:focus-within {\n border-color: ${({ theme, $hasError }) => ($hasError ? theme.colors.error : theme.colors.accent)};\n }\n`;\n\nconst HiddenFileInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst UploadButton = styled.button`\n background: none;\n border: none;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration: underline;\n cursor: pointer;\n font-size: 14px;\n padding: 0;\n display: flex;\n align-items: center;\n gap: 4px;\n\n &:hover {\n color: ${({ theme }) => theme.colors.accent};\n }\n`;\n\nconst FileName = styled.span`\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n flex: 1;\n`;\n\nconst UploadIcon = styled.span`\n color: ${({ theme }) => theme.colors.primary};\n display: flex;\n align-items: center;\n`;\n\nconst FileSize = styled.span`\n color: ${({ theme }) => theme.colors.secondary};\n font-size: 12px;\n`;\n\nconst ClearButton = styled.button`\n background: none;\n border: none;\n color: ${({ theme }) => theme.colors.secondary};\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n\n &:hover {\n color: ${({ theme }) => theme.colors.error};\n background-color: ${({ theme }) => theme.colors.error}20;\n }\n`;\n\nconst FileRequirements = styled.div`\n margin-top: 8px;\n padding: 8px 12px;\n background: ${({ theme }) => theme.colors.background};\n border: 1px solid ${({ theme }) => theme.border.color};\n border-radius: ${({ theme }) => theme.border.radius};\n`;\n\nconst formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n};\n\n/**\n * File upload with click + drag-and-drop, extension/size validation, and a\n * requirements hint. Emits `(file, error)` — both nullable. Ported from\n * `onboarding-flow-general`; `react-feather` icons replaced by\n * `@mui/icons-material`, and the `dragOver`/`hasError` style props made transient.\n */\nexport function FileInput({\n label,\n error,\n value,\n onChange,\n placeholder = 'Upload document',\n accept = '.png,.jpg,.jpeg,.pdf',\n maxSize = 10 * 1024 * 1024,\n required = false,\n className,\n showRequirements = true,\n name,\n testId,\n}: FileInputProps) {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [dragOver, setDragOver] = useState(false);\n const reactId = useId();\n const inputId = `${reactId}-input`;\n const errorId = `${reactId}-error`;\n const requirementsId = `${reactId}-requirements`;\n const describedBy = [error ? errorId : null, showRequirements ? requirementsId : null]\n .filter(Boolean)\n .join(' ');\n\n const validateFile = (file: File): string | null => {\n const validTypes = accept.split(',').map(type => type.trim().toLowerCase());\n const fileExtension = '.' + (file.name.split('.').pop() ?? '').toLowerCase();\n\n if (!validTypes.includes(fileExtension)) {\n return `Invalid file type. Accepted types: ${accept}`;\n }\n if (file.size > maxSize) {\n return `File size too large. Maximum size: ${formatFileSize(maxSize)}`;\n }\n return null;\n };\n\n const handleFileSelect = (file: File) => {\n const validationError = validateFile(file);\n if (validationError) {\n onChange(null, validationError);\n return;\n }\n onChange(file, null);\n };\n\n const handleClick = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file) handleFileSelect(file);\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(false);\n const file = e.dataTransfer.files?.[0];\n if (file) handleFileSelect(file);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange(null, null);\n if (fileInputRef.current) fileInputRef.current.value = '';\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClick();\n }\n };\n\n const acceptedTypesText = accept\n .split(',')\n .map(type => type.trim().toUpperCase().replace('.', ''))\n .join(', ');\n\n return (\n <FileInputContainer className={className}>\n {label && <InputLabel htmlFor={inputId}>{label}</InputLabel>}\n\n <FileInputWrapper\n $hasError={!!error}\n $dragOver={dragOver}\n role=\"button\"\n tabIndex={0}\n aria-label={label ? `${label}. ${placeholder}` : placeholder}\n aria-invalid={!!error}\n aria-describedby={describedBy || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n <UploadIcon>\n <CloudUploadIcon fontSize=\"small\" />\n </UploadIcon>\n <UploadButton as=\"span\">{placeholder}</UploadButton>\n\n {value && (\n <>\n <FileName>\n {value.name}\n <FileSize> ({formatFileSize(value.size)})</FileSize>\n </FileName>\n <ClearButton\n type=\"button\"\n onClick={handleClear}\n title=\"Clear file\"\n aria-label=\"Clear file\"\n >\n <CloseIcon fontSize=\"small\" />\n </ClearButton>\n </>\n )}\n\n <HiddenFileInput\n ref={fileInputRef}\n id={inputId}\n name={name}\n type=\"file\"\n accept={accept}\n onChange={handleFileChange}\n required={required}\n tabIndex={-1}\n data-testid={testId}\n />\n </FileInputWrapper>\n\n {error && <InputError id={errorId}>{error}</InputError>}\n\n {showRequirements && (\n <FileRequirements id={requirementsId}>\n <Body200>\n File types accepted are {acceptedTypesText}, with a max. size of{' '}\n {formatFileSize(maxSize)}\n </Body200>\n </FileRequirements>\n )}\n </FileInputContainer>\n );\n}\n","import styled from 'styled-components';\n\n/**\n * Themed radio button (a styled native `<input type=\"radio\">`). The fill grows\n * from the theme border color to `colors.primary` when checked.\n */\nexport const RadioInput = styled.input.attrs({ type: 'radio' })`\n appearance: none;\n width: 20px;\n height: 20px;\n border: 2px solid ${({ theme }) => theme.border.color};\n border-radius: 50%;\n margin: 0 0.5rem 0 0;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n transition: all 0.2s;\n\n &:checked {\n border-color: ${({ theme }) => theme.colors.primary};\n border-width: 6px;\n }\n\n &:hover {\n border-color: ${({ theme }) => theme.colors.primary};\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n","import styled from 'styled-components';\n\n/**\n * Themed checkbox (a styled native `<input type=\"checkbox\">`) with a CSS\n * checkmark. Fill uses `colors.primary` when checked.\n */\nexport const CheckboxInput = styled.input.attrs({ type: 'checkbox' })`\n appearance: none;\n width: 20px;\n height: 20px;\n border: 2px solid ${({ theme }) => theme.border.color};\n border-radius: 4px;\n margin: 0 0.5rem 0 0;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n transition: all 0.2s;\n\n &:checked {\n border-color: ${({ theme }) => theme.colors.primary};\n background-color: ${({ theme }) => theme.colors.primary};\n }\n\n &:checked::after {\n content: '';\n position: absolute;\n left: 5px;\n top: 1px;\n width: 6px;\n height: 11px;\n border: solid white;\n border-width: 0 2px 2px 0;\n transform: rotate(45deg);\n }\n\n &:hover {\n border-color: ${({ theme }) => theme.colors.primary};\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport interface StepperStep {\n label: string;\n component?: React.ReactNode;\n}\n\nexport interface StepperProps {\n steps: StepperStep[];\n currentStep: number;\n className?: string;\n testId?: string;\n}\n\nconst StepperContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n`;\n\nconst StepsContainer = styled.div`\n display: flex;\n justify-content: space-between;\n position: relative;\n`;\n\nconst StepContent = styled.div``;\n\nconst Step = styled.div<{ $active?: boolean; $completed?: boolean }>`\n position: relative;\n z-index: 2;\n background: ${({ theme }) => theme.colors.background};\n padding: 0 1rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.5rem;\n transition: all 0.2s ease-in-out;\n padding-bottom: 1rem;\n flex: 1;\n border-bottom: 1px solid;\n border-color: ${({ theme, $active, $completed }) =>\n $active || $completed ? theme.colors.primary : theme.colors.border};\n`;\n\nconst StepNumber = styled.div<{ $active?: boolean; $completed?: boolean }>`\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: ${({ theme, $active, $completed }) =>\n $completed ? theme.colors.primary : $active ? 'white' : theme.colors.surface};\n color: ${({ theme, $active, $completed }) =>\n $completed ? theme.colors.background : $active ? theme.colors.primary : theme.colors.secondary};\n font-weight: 500;\n transition: all 0.2s ease-in-out;\n border: 2px solid\n ${({ theme, $active, $completed }) =>\n $active || $completed ? theme.colors.primary : theme.colors.border};\n`;\n\nconst StepLabel = styled.span<{ $active?: boolean }>`\n color: ${({ theme, $active }) => ($active ? theme.colors.primary : theme.colors.secondary)};\n font-size: 0.875rem;\n font-weight: ${({ $active }) => ($active ? 500 : 400)};\n transition: all 0.2s ease-in-out;\n text-align: center;\n white-space: nowrap;\n`;\n\n/** Horizontal stepper with a number/label per step and the active step's content below. */\nexport function Stepper({ steps, currentStep, className, testId }: StepperProps) {\n return (\n <StepperContainer className={className} data-testid={testId}>\n <StepsContainer>\n {steps.map((step, index) => {\n const active = index === currentStep;\n const completed = index < currentStep;\n return (\n <Step\n key={'stepper-step-' + index}\n $active={active}\n $completed={completed}\n aria-current={active ? 'step' : undefined}\n >\n <StepNumber $active={active} $completed={completed}>\n {index + 1}\n </StepNumber>\n <StepLabel $active={active}>{step.label}</StepLabel>\n </Step>\n );\n })}\n </StepsContainer>\n <StepContent>{steps[currentStep]?.component}</StepContent>\n </StepperContainer>\n );\n}\n","import React, { useId, useState } from 'react';\nimport styled from 'styled-components';\n\nexport interface Tab {\n name: string;\n content?: React.ReactNode;\n}\n\nexport interface TabsProps {\n tabs?: Tab[];\n defaultActiveTab?: number;\n className?: string;\n onTabChange?: (index: number) => void;\n testId?: string;\n}\n\nconst TabsContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\n\nconst TabList = styled.div`\n display: flex;\n border-bottom: 1px solid ${({ theme }) => theme.colors.border};\n margin-bottom: 1rem;\n`;\n\nconst TabButton = styled.button<{ $active?: boolean }>`\n background: none;\n border: none;\n padding: 0.75rem 1.5rem;\n cursor: pointer;\n font-size: 0.875rem;\n font-weight: 500;\n color: ${({ theme, $active }) => ($active ? theme.colors.primary : theme.colors.secondary)};\n border-bottom: 2px solid ${({ theme, $active }) => ($active ? theme.colors.primary : 'transparent')};\n transition: all 0.2s ease-in-out;\n position: relative;\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary};\n background-color: ${({ theme }) => theme.colors.surface};\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.colors.accent};\n outline-offset: -2px;\n }\n`;\n\nconst TabContent = styled.div`\n padding: 1rem 0;\n min-height: 100px;\n`;\n\n/**\n * Tabbed panel managing its own active-tab state. Implements the ARIA tabs\n * pattern (`tablist`/`tab`/`tabpanel` with id linkage) for accessibility.\n */\nexport function Tabs({\n tabs = [],\n defaultActiveTab = 0,\n className,\n onTabChange,\n testId,\n}: TabsProps) {\n const [activeTab, setActiveTab] = useState(defaultActiveTab);\n const baseId = useId();\n\n const handleTabClick = (index: number) => {\n setActiveTab(index);\n onTabChange?.(index);\n };\n\n if (!tabs || tabs.length === 0) {\n return null;\n }\n\n const tabId = (i: number) => `${baseId}-tab-${i}`;\n const panelId = (i: number) => `${baseId}-panel-${i}`;\n\n return (\n <TabsContainer className={className} data-testid={testId}>\n <TabList role=\"tablist\">\n {tabs.map((tab, index) => {\n const active = index === activeTab;\n return (\n <TabButton\n key={`tab-${index}`}\n id={tabId(index)}\n role=\"tab\"\n type=\"button\"\n $active={active}\n aria-selected={active}\n aria-controls={panelId(index)}\n tabIndex={active ? 0 : -1}\n onClick={() => handleTabClick(index)}\n >\n {tab.name}\n </TabButton>\n );\n })}\n </TabList>\n\n <TabContent role=\"tabpanel\" id={panelId(activeTab)} aria-labelledby={tabId(activeTab)}>\n {tabs[activeTab]?.content}\n </TabContent>\n </TabsContainer>\n );\n}\n","import React from 'react';\nimport { Box, CircularProgress } from '@mui/material';\n\nexport interface LoaderProps {\n className?: string;\n /** Spinner diameter in px. */\n size?: number;\n /** Accessible label announced to screen readers. */\n label?: string;\n testId?: string;\n}\n\n/** Centered indeterminate spinner (MUI `CircularProgress`). */\nexport function Loader({ className, size, label = 'Loading', testId }: LoaderProps) {\n return (\n <Box\n className={className}\n data-testid={testId}\n sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }}\n >\n <CircularProgress size={size} aria-label={label} />\n </Box>\n );\n}\n","import React, { useId, useState } from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\n\nexport interface DotsMenuOption {\n label: string;\n action: () => void;\n}\n\nexport interface DotsMenuProps {\n options: DotsMenuOption[];\n iconSize?: 'small' | 'medium' | 'large';\n /** Accessible label for the trigger button. */\n ariaLabel?: string;\n testId?: string;\n}\n\n/**\n * Overflow (\"kebab\") menu: an icon button opening a list of actions. IDs are\n * generated with `useId()` so multiple instances on a page stay unique\n * (the source hardcoded a single id).\n */\nexport function DotsMenu({\n options,\n iconSize = 'medium',\n ariaLabel = 'more',\n testId,\n}: DotsMenuProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n const baseId = useId();\n const buttonId = `${baseId}-button`;\n const menuId = `${baseId}-menu`;\n\n const handleClick = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleOptionClick = (action: () => void) => {\n action();\n handleClose();\n };\n\n return (\n <>\n <IconButton\n aria-label={ariaLabel}\n id={buttonId}\n data-testid={testId}\n aria-controls={open ? menuId : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? 'true' : undefined}\n onClick={handleClick}\n size={iconSize}\n >\n <MoreVertIcon />\n </IconButton>\n <Menu\n id={menuId}\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n slotProps={{\n list: { 'aria-labelledby': buttonId },\n paper: { style: { maxHeight: 200, width: '20ch' } },\n }}\n >\n {options.map((option, idx) => (\n <MenuItem key={option.label + idx} onClick={() => handleOptionClick(option.action)}>\n {option.label}\n </MenuItem>\n ))}\n </Menu>\n </>\n );\n}\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { ThemeProvider } from '../theme';\nimport type { Branding } from '../theme';\nimport { Body100, Button, ButtonContainer, StatusTag } from '../styles/layout';\nimport { FormCheckboxLabel } from '../styles/forms';\nimport { CheckboxInput } from '../components/CheckboxInput';\nimport { DropDown } from '../components/DropDown';\nimport { Stepper } from '../components/Stepper';\nimport { TextInput } from '../components/TextInput';\n\nexport interface PreviewProps {\n /** Partner branding to render the sample with. Omit for the default theme. */\n branding?: Branding;\n className?: string;\n}\n\nconst PreviewCard = styled.div`\n display: flex;\n gap: 2rem;\n padding: 1.5rem;\n background: ${({ theme }) => theme.colors.background};\n border: ${({ theme }) => theme.border.width} solid ${({ theme }) => theme.border.color};\n border-radius: ${({ theme }) => theme.border.radius};\n`;\n\nconst MainColumn = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n flex: 1;\n min-width: 0;\n`;\n\nconst HeaderRow = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n`;\n\nconst SideColumn = styled.div`\n flex: 1;\n min-width: 0;\n`;\n\nfunction PreviewContent() {\n const [name, setName] = useState('Acme Corporation');\n const [plan, setPlan] = useState('growth');\n const [autopay, setAutopay] = useState(true);\n\n return (\n <PreviewCard data-testid=\"oatfi-ui-preview\">\n <MainColumn>\n <HeaderRow>\n <Body100 className=\"bold\">Partner</Body100>\n <StatusTag className=\"success small\">Active</StatusTag>\n </HeaderRow>\n\n <TextInput label=\"Business name\" value={name} onChange={setName} />\n <DropDown\n label=\"Plan\"\n value={plan}\n onChange={setPlan}\n options={[\n { value: 'starter', label: 'Starter' },\n { value: 'growth', label: 'Growth' },\n { value: 'scale', label: 'Scale' },\n ]}\n />\n <FormCheckboxLabel>\n <CheckboxInput checked={autopay} onChange={e => setAutopay(e.target.checked)} />\n Enable automatic payments\n </FormCheckboxLabel>\n\n <ButtonContainer>\n <Button className=\"secondary\">Cancel</Button>\n <Button>Save changes</Button>\n </ButtonContainer>\n </MainColumn>\n\n <SideColumn>\n <Stepper\n currentStep={1}\n steps={[{ label: 'Connect' }, { label: 'Verify' }, { label: 'Done' }]}\n />\n </SideColumn>\n </PreviewCard>\n );\n}\n\n/**\n * A self-contained branded snapshot of the OatFi UI kit — a header, a few\n * inputs, buttons, and a stepper. Wraps its own `ThemeProvider`, so a consumer\n * (e.g. the dashboard's Branding settings page) drops it in and passes partner\n * `branding` without setting up theming itself.\n */\nexport function Preview({ branding, className }: PreviewProps) {\n return (\n <ThemeProvider branding={branding}>\n <div className={className}>\n <PreviewContent />\n </div>\n </ThemeProvider>\n );\n}\n"],"names":["createTheme","createGlobalStyle","useMemo","jsxs","StyledThemeProvider","jsx","MuiThemeProviderBase","useStyledTheme","TextField","formatDisplayValue","useId","useRef","InputAdornment","IconButton","FormControl","InputLabel","Select","MenuItem","FormHelperText","Autocomplete","useState","Fragment","Box","CircularProgress"],"mappings":"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"}
package/dist/index.esm.js CHANGED
@@ -475,6 +475,17 @@ const Button = styled.button`
475
475
  }
476
476
  }
477
477
 
478
+ &.dashed {
479
+ background-color: transparent;
480
+ color: ${({ theme }) => theme.colors.secondary};
481
+ border: 1px dashed ${({ theme }) => theme.colors.border};
482
+ &:hover {
483
+ background-color: ${({ theme }) => theme.colors.surface};
484
+ border-color: ${({ theme }) => theme.colors.secondary};
485
+ color: ${({ theme }) => theme.colors.primary};
486
+ }
487
+ }
488
+
478
489
  &.link {
479
490
  background-color: transparent;
480
491
  color: ${({ theme }) => theme.colors.accent};
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/theme/defaultTheme.ts","../src/theme/mergeBranding.ts","../src/theme/muiTheme.ts","../src/theme/ThemeProvider.tsx","../src/theme/useTheme.ts","../src/styles/inputs.ts","../src/styles/layout.ts","../src/styles/forms.ts","../src/components/TextInput.tsx","../src/components/EmailInput.tsx","../src/components/PhoneInput.tsx","../src/components/SSNInput.tsx","../src/components/TaxIdInput.tsx","../src/components/CurrencyInput.tsx","../src/components/DateInput.tsx","../src/components/DropDown.tsx","../src/components/SearchDropdown.tsx","../src/components/FileInput.tsx","../src/components/RadioInput.tsx","../src/components/CheckboxInput.tsx","../src/components/Stepper.tsx","../src/components/Tabs.tsx","../src/components/Loader.tsx","../src/components/DotsMenu.tsx","../src/preview/Preview.tsx"],"sourcesContent":["import type { Theme } from './types';\n\n/**\n * The default OatFi theme. Ported from the embeds' `theme/types.js`, using the\n * more complete shape (with `colors.default`) from `mf-remote-react`, extended\n * with `buttonPrimary` / `buttonSecondary` so partner button colors have a home.\n *\n * `buttonPrimary` / `buttonSecondary` default to `primary` / `secondary` here so\n * an unbranded theme renders identically to the original embeds.\n */\nexport const defaultTheme: Theme = {\n colors: {\n primary: '#111827',\n secondary: '#6B7280',\n accent: '#2563EB',\n background: '#FFFFFF',\n surface: '#F3F4F6',\n border: '#E5E7EB',\n success: '#10B981',\n default: '#6B7280',\n warning: '#F59E42',\n error: '#EF4444',\n buttonPrimary: '#111827',\n buttonSecondary: '#6B7280',\n },\n border: {\n radius: '8px',\n width: '1px',\n color: '#E5E7EB',\n },\n typography: {\n fontFamily: '\"Geist\", \"Geist Sans\", Arial, sans-serif',\n },\n};\n","import { defaultTheme } from './defaultTheme';\nimport type { Branding, Theme } from './types';\n\nconst toPx = (value: number): string => `${value}px`;\n\n/**\n * Map partner `Branding` onto the full internal `Theme`.\n *\n * Pure and total: any missing field falls back to `defaultTheme`. Note that\n * `colors.primary` / `colors.secondary` are NOT partner-configurable — they\n * stay at the theme defaults; only the button colors, border, and font can be\n * branded.\n */\nexport function mergeBranding(branding?: Branding): Theme {\n const b = branding ?? {};\n\n return {\n ...defaultTheme,\n colors: {\n ...defaultTheme.colors,\n buttonPrimary: b.primaryButtonColor ?? defaultTheme.colors.buttonPrimary,\n buttonSecondary: b.secondaryButtonColor ?? defaultTheme.colors.buttonSecondary,\n },\n border: {\n ...defaultTheme.border,\n radius: b.borderRadius != null ? toPx(b.borderRadius) : defaultTheme.border.radius,\n width: b.borderWidth != null ? toPx(b.borderWidth) : defaultTheme.border.width,\n },\n typography: {\n ...defaultTheme.typography,\n fontFamily: b.fontFamily ?? defaultTheme.typography.fontFamily,\n },\n };\n}\n","import { createTheme, type Theme as MuiTheme } from '@mui/material/styles';\nimport type { Theme } from './types';\n\n/**\n * Build a MUI theme from our internal `Theme` so MUI-based primitives read the\n * same tokens as styled-components ones. Ported from the embeds'\n * `MuiThemeProvider.js`, typed and driven by the merged theme.\n */\nexport function buildMuiTheme(theme: Theme): MuiTheme {\n const { colors, border, typography } = theme;\n\n return createTheme({\n palette: {\n primary: {\n main: colors.accent,\n contrastText: colors.background,\n },\n secondary: {\n main: colors.secondary,\n },\n error: {\n main: colors.error,\n },\n warning: {\n main: colors.warning,\n },\n success: {\n main: colors.success,\n },\n background: {\n default: colors.background,\n paper: colors.surface,\n },\n text: {\n primary: colors.primary,\n secondary: colors.secondary,\n },\n },\n typography: {\n fontFamily: typography.fontFamily,\n fontSize: 14,\n },\n shape: {\n borderRadius: parseInt(border.radius, 10),\n },\n components: {\n MuiFormControlLabel: {\n styleOverrides: {\n label: {\n fontSize: '12px',\n fontWeight: 400,\n },\n },\n },\n MuiPaper: {\n styleOverrides: {\n root: {\n backgroundColor: colors.background,\n border: `${border.width} solid ${border.color}`,\n },\n },\n defaultProps: {\n elevation: 0,\n },\n },\n MuiLink: {\n styleOverrides: {\n root: {\n cursor: 'pointer',\n fontSize: '16px',\n fontWeight: 600,\n fontFamily: typography.fontFamily,\n },\n },\n },\n MuiTextField: {\n styleOverrides: {\n root: {\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: border.color,\n borderWidth: border.width,\n },\n '&:hover fieldset': {\n borderColor: colors.accent,\n },\n '&.Mui-focused fieldset': {\n borderColor: colors.accent,\n },\n '&.Mui-error fieldset': {\n borderColor: colors.error,\n },\n },\n '& .MuiInputLabel-root, & .MuiFormLabel-root, & .MuiInputLabel-formControl': {\n color: colors.secondary,\n fontSize: '14px',\n '&.Mui-focused': {\n color: colors.accent,\n },\n '&.Mui-error': {\n color: colors.error,\n },\n },\n '& .MuiInputBase-input': {\n fontSize: 14,\n color: colors.primary,\n '&::placeholder': {\n color: colors.secondary,\n opacity: 1,\n },\n },\n },\n },\n },\n MuiSelect: {\n styleOverrides: {\n select: {\n fontSize: 14,\n },\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: {\n fontSize: 14,\n '& input[type=\"date\"]::-webkit-calendar-picker-indicator': {\n display: 'none',\n },\n '& .Mui-error': {\n color: colors.error,\n },\n '& input[type=\"date\"]::-webkit-inner-spin-button': {\n display: 'none',\n },\n '& input[type=\"date\"]::-webkit-clear-button': {\n display: 'none',\n },\n },\n },\n },\n MuiFormControl: {\n styleOverrides: {\n root: {\n '& input::-webkit-datetime-edit': {\n color: colors.secondary,\n },\n '& .Mui-error': {\n input: {\n color: colors.error,\n },\n label: {\n color: colors.error,\n },\n },\n },\n },\n },\n },\n });\n}\n","import React, { useMemo } from 'react';\nimport { ThemeProvider as MuiThemeProviderBase } from '@mui/material/styles';\nimport { ThemeProvider as StyledThemeProvider, createGlobalStyle } from 'styled-components';\nimport { mergeBranding } from './mergeBranding';\nimport { buildMuiTheme } from './muiTheme';\nimport type { Branding } from './types';\n\nconst GlobalStyle = createGlobalStyle`\n * {\n font-family: ${({ theme }) => theme.typography.fontFamily};\n box-sizing: border-box;\n }\n`;\n\nexport interface ThemeProviderProps {\n /**\n * Partner branding overrides. Any omitted field falls back to `defaultTheme`.\n * Omit entirely to render with the default OatFi theme.\n */\n branding?: Branding;\n children?: React.ReactNode;\n}\n\n/**\n * Single theming entry point for @oatfi/ui consumers.\n *\n * Resolves `branding` into the full internal `Theme` and provides it through\n * BOTH styled-components and MUI, so a primitive built on either gets identical\n * tokens. Context cannot cross the embed loader's script boundary, so this is\n * mounted *inside* each consumer's React root.\n */\nexport function ThemeProvider({ branding, children }: ThemeProviderProps) {\n const theme = useMemo(() => mergeBranding(branding), [branding]);\n const muiTheme = useMemo(() => buildMuiTheme(theme), [theme]);\n\n return (\n <StyledThemeProvider theme={theme}>\n <GlobalStyle />\n <MuiThemeProviderBase theme={muiTheme}>{children}</MuiThemeProviderBase>\n </StyledThemeProvider>\n );\n}\n","import { useTheme as useStyledTheme } from 'styled-components';\nimport type { Theme } from './types';\n\n/**\n * Read the resolved @oatfi/ui theme. Typed re-export of styled-components'\n * `useTheme` (typing comes from the `DefaultTheme` augmentation in `styled.d.ts`).\n */\nexport const useTheme = (): Theme => useStyledTheme();\n","import styled from 'styled-components';\n\n/**\n * Input style bases, ported from\n * `onboarding-flow-general/src/components/globals/shared/InputStyles.js`.\n *\n * The dropdown chevron SVG fill was a hardcoded `#6B7280`; it now reads from\n * `theme.colors.default` (whose default value is `#6B7280`, so unbranded\n * appearance is unchanged) and is URL-encoded into the `data:` URI.\n */\n\nconst chevronDataUri = (color: string): string =>\n `data:image/svg+xml;utf8,<svg fill=\"${encodeURIComponent(\n color,\n )}\" height=\"20\" viewBox=\"0 0 20 20\" width=\"20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.293 7.293a1 1 0 011.414 0L10 8.586l1.293-1.293a1 1 0 111.414 1.414l-2 2a1 1 0 01-1.414 0l-2-2a1 1 0 010-1.414z\"/></svg>`;\n\nexport const InputWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 5px;\n width: 100%;\n\n span.icon {\n position: absolute;\n right: 1rem;\n top: 51%;\n display: flex;\n align-items: center;\n cursor: pointer;\n z-index: 1;\n }\n\n &.Werror span.icon {\n top: 42%;\n }\n`;\n\nexport const InputLabel = styled.label`\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n font-weight: 500;\n margin-bottom: 4px;\n`;\n\nexport const InputError = styled.span`\n color: ${({ theme }) => theme.colors.error};\n font-size: 12px;\n font-weight: 500;\n margin-top: -4px;\n padding-left: 5px;\n`;\n\nexport const BaseInput = styled.input`\n display: flex;\n padding: 9px;\n border: ${({ theme }) => theme.border.width} solid ${({ theme }) => theme.border.color};\n border-radius: ${({ theme }) => theme.border.radius};\n background: ${({ theme }) => theme.colors.background};\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n font-family: ${({ theme }) => theme.typography.fontFamily};\n outline: none;\n transition: border-color 0.2s;\n\n &[type='date'] {\n &::-webkit-calendar-picker-indicator {\n opacity: 0;\n pointer-events: none;\n }\n &::-moz-calendar-picker-indicator {\n opacity: 0;\n pointer-events: none;\n }\n &::-ms-input-placeholder {\n opacity: 0;\n pointer-events: none;\n }\n }\n\n &:focus {\n border-color: ${({ theme }) => theme.colors.accent};\n }\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.secondary};\n opacity: 1;\n }\n\n &.error {\n border-color: ${({ theme }) => theme.colors.error};\n color: ${({ theme }) => theme.colors.error};\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.error};\n opacity: 1;\n }\n }\n`;\n\nexport const SelectInput = styled(BaseInput)`\n appearance: none;\n background-image: url('${({ theme }) => chevronDataUri(theme.colors.default)}');\n background-repeat: no-repeat;\n background-position: right 12px center;\n background-size: 20px 20px;\n`;\n\nexport const DropdownContainer = styled.div`\n position: relative;\n width: 100%;\n`;\n\nexport const AutocompleteInput = styled(BaseInput)`\n cursor: pointer;\n background-image: url('${({ theme }) => chevronDataUri(theme.colors.default)}');\n background-repeat: no-repeat;\n background-position: right 12px center;\n background-size: 20px 20px;\n width: 100%;\n`;\n\nexport const DropdownList = styled.div<{ $isOpen?: boolean }>`\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n max-height: 200px;\n overflow-y: auto;\n background: ${({ theme }) => theme.colors.background};\n border: ${({ theme }) => theme.border.width} solid ${({ theme }) => theme.border.color};\n border-top: none;\n border-radius: 0 0 ${({ theme }) => theme.border.radius} ${({ theme }) => theme.border.radius};\n z-index: 1000;\n display: ${({ $isOpen }) => ($isOpen ? 'block' : 'none')};\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n`;\n\nexport const DropdownItem = styled.div<{ $isSelected?: boolean }>`\n padding: 8px 12px;\n cursor: pointer;\n background: ${({ $isSelected, theme }) => ($isSelected ? theme.colors.accent + '20' : 'transparent')};\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n border-bottom: 1px solid ${({ theme }) => theme.border.color};\n\n &:hover {\n background: ${({ theme }) => theme.colors.accent + '10'};\n }\n\n &:last-child {\n border-bottom: none;\n }\n`;\n\nexport const NoResults = styled.div`\n padding: 12px;\n text-align: center;\n color: ${({ theme }) => theme.colors.secondary};\n font-size: 14px;\n`;\n","import styled from 'styled-components';\n\n/**\n * Layout, typography, and button style bases, ported from\n * `onboarding-flow-general/src/components/globals/shared/General.js`.\n *\n * The Button hover (`${theme.colors.primary}CC`) and `Body*` link colors\n * (`theme.colors.primary`) already read from the theme in the source — the\n * `#0e0e0e` / `#0000FF` literals the rollout plan flagged were from an older\n * revision and are not present here.\n */\n\nexport const H3 = styled.h3`\n font-size: 18px;\n font-weight: 500;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const H2 = styled.h2`\n font-size: 24px;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const H1 = styled.h1`\n font-size: 32px;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const Body100 = styled.p`\n font-size: 12px;\n font-weight: 400;\n text-align: justify;\n color: ${({ color, theme }) => (color === 'secondary' ? theme.colors.secondary : theme.colors.primary)};\n a {\n font-size: 12px;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration-color: ${({ theme }) => theme.colors.primary};\n }\n &.bold {\n font-weight: 600;\n }\n span {\n font-weight: 400;\n }\n`;\n\nexport const Body200 = styled.p`\n font-size: 14px;\n font-weight: 400;\n text-align: justify;\n color: ${({ color, theme }) => (color === 'secondary' ? theme.colors.secondary : theme.colors.primary)};\n a {\n font-size: 14px;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration-color: ${({ theme }) => theme.colors.primary};\n }\n &.bold {\n font-weight: 600;\n }\n span {\n font-weight: 400;\n }\n`;\n\nexport const Body400 = styled.p`\n font-size: 11px;\n font-weight: 400;\n text-align: justify;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const Container = styled.div`\n padding: 2rem;\n border-radius: ${({ theme }) => theme.border.radius};\n background-color: ${({ theme }) => theme.colors.background};\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n max-width: 1000px;\n margin: 0 auto;\n`;\n\nexport const Content = styled.div`\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n`;\n\nexport const ButtonContainer = styled.div`\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 1rem;\n &.space-between {\n justify-content: space-between;\n }\n`;\n\nexport const Button = styled.button`\n align-items: center;\n background-color: ${({ theme }) => theme.colors.buttonPrimary};\n border: none;\n border-radius: ${({ theme }) => theme.border.radius};\n color: ${({ theme }) => theme.colors.background};\n cursor: pointer;\n display: flex;\n font-size: 14px;\n gap: 0.25rem;\n justify-content: center;\n margin-top: 1rem;\n padding: 0.75rem 1.5rem;\n transition: background-color 0.2s ease;\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.35;\n }\n\n &:hover {\n background-color: ${({ theme }) => `${theme.colors.buttonPrimary}CC`};\n }\n\n &.secondary {\n background-color: ${({ theme }) => theme.colors.background};\n color: ${({ theme }) => theme.colors.buttonSecondary};\n border: 1px solid ${({ theme }) => theme.colors.buttonSecondary};\n &:hover {\n background-color: ${({ theme }) => `${theme.colors.buttonSecondary}10`};\n }\n }\n\n &.link {\n background-color: transparent;\n color: ${({ theme }) => theme.colors.accent};\n border: none;\n cursor: pointer;\n margin: 0;\n }\n &.link:hover {\n color: ${({ theme }) => theme.colors.accent};\n text-decoration: underline;\n }\n &.no-padding {\n padding: 0;\n }\n`;\n\nexport const FlexRowWrapper = styled.div`\n display: flex;\n flex-direction: row;\n .flex-row-item {\n flex: 1;\n }\n`;\n\nexport const FlexColumnWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\nexport const DetailsContainer = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 5px;\n justify-content: space-between;\n button {\n color: ${({ theme }) => theme.colors.primary};\n text-decoration-color: ${({ theme }) => theme.colors.primary};\n }\n`;\n\nexport const DetailRow = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nexport const DetailElement = styled.div`\n flex: 1;\n p {\n margin: 5px 0 0 0;\n }\n`;\n\nexport const TermsList = styled.ul`\n list-style-type: disc;\n padding-left: 20px;\n p {\n margin: 0;\n }\n`;\n\nexport const StatusTag = styled.div`\n padding: 4px 8px;\n border-radius: 4px;\n color: ${({ theme }) => theme.colors.background};\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n &.small {\n font-size: 10px;\n padding: 2px 4px;\n }\n &.success {\n background-color: ${({ theme }) => theme.colors.success};\n }\n &.error {\n background-color: ${({ theme }) => theme.colors.error};\n }\n &.warning {\n background-color: ${({ theme }) => theme.colors.warning};\n }\n`;\n","import styled from 'styled-components';\n\n/**\n * Form layout style bases, ported from\n * `onboarding-flow-general/src/components/globals/shared/FormStyles.js`.\n *\n * The source's `Body100` is intentionally NOT re-exported here — the richer\n * `Body100` from `layout.ts` (with `color` prop + link styling) is the single\n * canonical version.\n */\n\nexport const Form = styled.form`\n max-width: 1000px;\n margin: 0 auto;\n`;\n\nexport const FormTitle = styled.h2`\n font-size: 1.5rem;\n font-weight: 600;\n margin-bottom: 2rem;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const FormSubtitle = styled.h3`\n font-size: 14px;\n font-weight: 500;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const FormRow = styled.div`\n display: flex;\n gap: 1rem;\n margin-bottom: 1rem;\n flex-wrap: wrap;\n\n @media (max-width: 768px) {\n flex-direction: column;\n }\n`;\n\nexport const FormColumn = styled.div`\n flex: 1;\n min-width: 200px;\n`;\n\nexport const FormCheckboxLabel = styled.label`\n display: flex;\n align-items: center;\n gap: 0.5rem;\n cursor: pointer;\n color: ${({ theme }) => theme.colors.primary};\n font-size: 0.875rem;\n\n input[type='checkbox'] {\n margin: 0;\n }\n`;\n\nexport const FormActions = styled.div`\n margin-top: 2rem;\n display: flex;\n justify-content: flex-end;\n`;\n","import React from 'react';\nimport { TextField } from '@mui/material';\n\nexport interface TextInputProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n type?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n /** Native `name` on the underlying input (form semantics + by-name selectors). */\n name?: string;\n /** Rendered as `data-testid` on the input element for e2e selection. */\n testId?: string;\n /** For `type=\"number\"`: maximum numeric value. Otherwise: maximum input length. */\n max?: number;\n /** Strip numeric characters as the user types. */\n ignoreNumbers?: boolean;\n /** Strip non-numeric characters as the user types. */\n onlyNumbers?: boolean;\n}\n\n/**\n * Text field built on MUI `TextField`. Presentational: emits the raw string\n * value via `onChange`. Ported from `onboarding-flow-general` (MUI v7\n * `slotProps` replace the deprecated `inputProps`); `disabled` is new.\n */\nexport function TextInput({\n label,\n error,\n value,\n onChange,\n placeholder,\n type = 'text',\n required = false,\n disabled = false,\n className,\n name,\n testId,\n max,\n ignoreNumbers = false,\n onlyNumbers = false,\n}: TextInputProps) {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n let newValue = e.target.value;\n\n if (ignoreNumbers) {\n newValue = newValue.replace(/[0-9]/g, '');\n }\n\n if (onlyNumbers) {\n newValue = newValue.replace(/[^0-9]/g, '');\n }\n\n if (type === 'number' && max !== undefined && newValue !== '') {\n const numericValue = parseFloat(newValue);\n if (!isNaN(numericValue) && numericValue > max) {\n return; // Don't update if value exceeds max\n }\n }\n\n onChange(newValue);\n };\n\n return (\n <TextField\n label={label}\n value={value}\n onChange={handleChange}\n placeholder={placeholder}\n type={type}\n required={required}\n disabled={disabled}\n className={className}\n name={name}\n error={!!error}\n helperText={error}\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n slotProps={{\n htmlInput: {\n ...(type === 'number' ? { max } : { maxLength: max }),\n 'data-testid': testId,\n },\n }}\n />\n );\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface EmailInputProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\n/** Email field — a `TextInput` pinned to `type=\"email\"`. */\nexport function EmailInput({ placeholder = 'Enter email address', ...props }: EmailInputProps) {\n return <TextInput {...props} type=\"email\" placeholder={placeholder} />;\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface PhoneInputProps {\n label?: string;\n error?: string;\n /** Raw digits (up to 10). Displayed masked as `(XXX) XXX-XXXX`. */\n value: string;\n onChange: (rawValue: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst formatPhoneNumber = (value: string): string => {\n if (!value) return '';\n const phoneNumber = value.replace(/\\D/g, '');\n if (phoneNumber.length <= 3) {\n return phoneNumber;\n } else if (phoneNumber.length <= 6) {\n return `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3)}`;\n }\n return `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3, 6)}-${phoneNumber.slice(6, 10)}`;\n};\n\n/** US phone field. Masks display as `(XXX) XXX-XXXX`; emits raw digits. */\nexport function PhoneInput({\n placeholder = '(XXX) XXX-XXXX',\n value,\n onChange,\n ...props\n}: PhoneInputProps) {\n const handleChange = (maskedValue: string) => {\n onChange(maskedValue.replace(/\\D/g, '').slice(0, 10));\n };\n\n return (\n <TextInput\n {...props}\n value={formatPhoneNumber(value)}\n onChange={handleChange}\n placeholder={placeholder}\n max={14}\n />\n );\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface SSNInputProps {\n label?: string;\n error?: string;\n /** Raw value; displayed masked as `XXX-XX-XXXX`. */\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst formatDisplayValue = (rawValue: string): string => {\n if (!rawValue) return '';\n const digits = rawValue.replace(/[^\\d]/g, '');\n if (digits.length <= 3) return digits;\n if (digits.length <= 5) return `${digits.slice(0, 3)}-${digits.slice(3)}`;\n return `${digits.slice(0, 3)}-${digits.slice(3, 5)}-${digits.slice(5, 9)}`;\n};\n\n/** SSN field. Masks display as `XXX-XX-XXXX`; emits the masked value. */\nexport function SSNInput({\n placeholder = 'XXX-XX-XXXX',\n value,\n onChange,\n ...props\n}: SSNInputProps) {\n return (\n <TextInput\n {...props}\n value={formatDisplayValue(value)}\n onChange={onChange}\n placeholder={placeholder}\n max={11}\n />\n );\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface TaxIdInputProps {\n label?: string;\n error?: string;\n /** Raw value; displayed masked as `XX-XXXXXXX` (EIN). */\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst formatDisplayValue = (rawValue: string): string => {\n if (!rawValue) return '';\n const digits = rawValue.replace(/[^\\d]/g, '');\n if (digits.length <= 2) return digits;\n if (digits.length <= 9) return `${digits.slice(0, 2)}-${digits.slice(2)}`;\n return `${digits.slice(0, 2)}-${digits.slice(2, 9)}`;\n};\n\n/** EIN / Tax ID field. Masks display as `XX-XXXXXXX`; emits the masked value. */\nexport function TaxIdInput({\n placeholder = 'XX-XXXXXXX',\n value,\n onChange,\n ...props\n}: TaxIdInputProps) {\n return (\n <TextInput\n {...props}\n value={formatDisplayValue(value)}\n onChange={onChange}\n placeholder={placeholder}\n max={10}\n />\n );\n}\n","import React, { useId } from 'react';\nimport styled from 'styled-components';\nimport { BaseInput, InputError, InputLabel, InputWrapper } from '../styles/inputs';\n\nexport interface CurrencyInputProps {\n label?: string;\n /** Raw numeric string (no `$`/commas); displayed with thousand separators. */\n value: string;\n onChange: (rawValue: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n error?: string;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst CurrencyInputWrapper = styled.div`\n position: relative;\n width: 100%;\n`;\n\nconst CurrencyPrefix = styled.span<{ $hasError?: boolean }>`\n position: absolute;\n left: 9px;\n top: 50%;\n transform: translateY(-50%);\n color: ${({ theme, $hasError }) => ($hasError ? theme.colors.error : theme.colors.primary)};\n font-size: 14px;\n font-family: ${({ theme }) => theme.typography.fontFamily};\n pointer-events: none;\n z-index: 1;\n`;\n\nconst StyledBaseInput = styled(BaseInput)`\n padding-left: calc(15px + 1ch);\n width: 100%;\n`;\n\nconst formatDisplayValue = (rawValue: string): string => {\n if (!rawValue || rawValue === '') return '';\n\n const numericValue = rawValue.toString().replace(/[^\\d.]/g, '');\n if (numericValue === '' || numericValue === '.') return '';\n\n const parts = numericValue.split('.');\n const integerPart = parts[0] || '';\n const decimalPart = parts[1] || '';\n\n const formattedInteger = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n const formattedDecimal = decimalPart.slice(0, 2);\n\n if (formattedDecimal) {\n return `${formattedInteger}.${formattedDecimal}`;\n } else if (numericValue.includes('.')) {\n return `${formattedInteger}.`;\n }\n return `${formattedInteger}`;\n};\n\nconst extractRawValue = (formattedValue: string): string => {\n if (!formattedValue) return '';\n const raw = formattedValue.replace(/[^\\d.]/g, '');\n const parts = raw.split('.');\n if (parts.length > 2) {\n return parts[0] + '.' + parts.slice(1).join('');\n }\n return raw;\n};\n\n/**\n * Currency field with a `$` prefix and thousand separators. Built on the shared\n * `BaseInput` style; emits the raw numeric string via `onChange`.\n */\nexport function CurrencyInput({\n label,\n value,\n onChange,\n placeholder,\n required,\n disabled,\n error,\n className,\n name,\n testId,\n}: CurrencyInputProps) {\n const reactId = useId();\n const inputId = `${reactId}-input`;\n const errorId = `${reactId}-error`;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(extractRawValue(e.target.value));\n };\n\n return (\n <InputWrapper className={className}>\n {label && <InputLabel htmlFor={inputId}>{label}</InputLabel>}\n <CurrencyInputWrapper>\n <CurrencyPrefix $hasError={!!error}>$</CurrencyPrefix>\n <StyledBaseInput\n id={inputId}\n name={name}\n type=\"text\"\n value={formatDisplayValue(value || '')}\n onChange={handleChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n className={error ? 'error' : ''}\n aria-invalid={!!error}\n aria-describedby={error ? errorId : undefined}\n data-testid={testId}\n />\n </CurrencyInputWrapper>\n {error && <InputError id={errorId}>{error}</InputError>}\n </InputWrapper>\n );\n}\n","import React, { useRef } from 'react';\nimport { IconButton, InputAdornment, TextField } from '@mui/material';\nimport CalendarMonthIcon from '@mui/icons-material/CalendarMonth';\n\nexport interface DateInputProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n /** ISO date string (`YYYY-MM-DD`) bounds. */\n min?: string;\n max?: string;\n}\n\n/**\n * Native date field (MUI `TextField type=\"date\"`) with a calendar-icon trigger.\n * Ported from `onboarding-flow-general`; the `react-feather` icon is replaced\n * by `@mui/icons-material` (a peer dep) and `inputProps`/`InputProps` by\n * MUI v7 `slotProps`.\n */\nexport function DateInput({\n label,\n error,\n value,\n onChange,\n required = false,\n disabled = false,\n className,\n name,\n testId,\n min,\n max,\n}: DateInputProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleIconClick = () => {\n const input = inputRef.current;\n if (!input) return;\n if (typeof input.showPicker === 'function') {\n input.showPicker();\n } else {\n input.focus();\n }\n };\n\n return (\n <TextField\n label={label}\n value={value}\n onChange={e => onChange(e.target.value)}\n type=\"date\"\n required={required}\n disabled={disabled}\n className={className}\n name={name}\n error={!!error}\n helperText={error}\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n inputRef={inputRef}\n slotProps={{\n inputLabel: { shrink: true },\n htmlInput: { min, max, 'data-testid': testId },\n input: {\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n onClick={handleIconClick}\n edge=\"end\"\n aria-label=\"Open date picker\"\n size=\"small\"\n disabled={disabled}\n >\n <CalendarMonthIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n },\n }}\n />\n );\n}\n","import React, { useId } from 'react';\nimport {\n FormControl,\n FormHelperText,\n InputLabel,\n MenuItem,\n Select,\n type SelectChangeEvent,\n} from '@mui/material';\nimport type { Option } from './types';\n\nexport interface DropDownProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n options?: Option[];\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\n/** Single-select dropdown built on MUI `Select`. */\nexport function DropDown({\n label,\n error,\n value,\n onChange,\n options = [],\n required = false,\n disabled = false,\n className,\n name,\n testId,\n}: DropDownProps) {\n const reactId = useId();\n const labelId = `${reactId}-label`;\n const selectId = `${reactId}-select`;\n\n // SelectDisplayProps is typed as HTMLAttributes, which omits `data-*`; widen it.\n const selectDisplayProps: React.HTMLAttributes<HTMLDivElement> & { 'data-testid'?: string } = {\n 'data-testid': testId,\n };\n\n const handleChange = (event: SelectChangeEvent) => {\n onChange(event.target.value);\n };\n\n return (\n <FormControl\n fullWidth\n error={!!error}\n required={required}\n disabled={disabled}\n className={className}\n size=\"small\"\n >\n {label && (\n <InputLabel id={labelId} sx={{ fontSize: '14px' }}>\n {label}\n </InputLabel>\n )}\n <Select\n labelId={label ? labelId : undefined}\n id={selectId}\n name={name}\n value={value || ''}\n onChange={handleChange}\n label={label}\n variant=\"outlined\"\n SelectDisplayProps={selectDisplayProps}\n >\n {options.map((opt, index) => (\n <MenuItem key={opt.value + index} value={opt.value}>\n {opt.label}\n </MenuItem>\n ))}\n </Select>\n {error && <FormHelperText>{error}</FormHelperText>}\n </FormControl>\n );\n}\n","import React from 'react';\nimport { Autocomplete, TextField } from '@mui/material';\nimport type { Option } from './types';\n\nexport interface SearchDropdownProps {\n label?: string;\n error?: string;\n /** Selected `value`(s). A comma-joined string is also accepted in multiple mode. */\n value: string | string[];\n onChange: (value: string | string[]) => void;\n options: Option[];\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n multiple?: boolean;\n noResultsMessage?: string;\n name?: string;\n testId?: string;\n}\n\n/** Searchable single/multi select built on MUI `Autocomplete`. */\nexport function SearchDropdown({\n label,\n error,\n value,\n onChange,\n options,\n placeholder = 'Search...',\n required = false,\n disabled = false,\n className,\n multiple = false,\n noResultsMessage = 'No results found',\n name,\n testId,\n}: SearchDropdownProps) {\n const getSelectedOption = (): Option | Option[] | null => {\n if (!value) return multiple ? [] : null;\n if (multiple) {\n const selectedValues = Array.isArray(value) ? value : value.split(',').filter(v => v.trim());\n return options.filter(opt => selectedValues.includes(opt.value));\n }\n const stringValue = Array.isArray(value) ? value[0] : value;\n return options.find(opt => opt.value === stringValue) || null;\n };\n\n const handleChange = (_event: React.SyntheticEvent, newValue: Option | Option[] | null) => {\n if (multiple) {\n onChange(Array.isArray(newValue) ? newValue.map(opt => opt.value) : []);\n } else {\n onChange(newValue && !Array.isArray(newValue) ? newValue.value : '');\n }\n };\n\n return (\n <Autocomplete<Option, boolean, false, false>\n options={options}\n value={getSelectedOption()}\n onChange={handleChange}\n getOptionLabel={option => option.label}\n isOptionEqualToValue={(option, val) => option.value === val.value}\n data-testid={testId}\n renderInput={params => (\n <TextField\n {...params}\n label={label}\n placeholder={placeholder}\n required={required}\n error={!!error}\n helperText={error}\n className={className}\n variant=\"outlined\"\n name={name}\n />\n )}\n noOptionsText={noResultsMessage}\n size=\"small\"\n fullWidth\n multiple={multiple}\n disabled={disabled}\n clearOnBlur={false}\n selectOnFocus\n autoHighlight\n />\n );\n}\n","import React, { useId, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { InputError, InputLabel } from '../styles/inputs';\nimport { Body200 } from '../styles/layout';\n\nexport interface FileInputProps {\n label?: string;\n error?: string;\n value?: File | null;\n /** Called with the chosen file (or null) and a validation error (or null). */\n onChange: (file: File | null, error: string | null) => void;\n placeholder?: string;\n /** Comma-separated extension list, e.g. `.png,.jpg,.pdf`. */\n accept?: string;\n /** Max size in bytes. */\n maxSize?: number;\n required?: boolean;\n className?: string;\n showRequirements?: boolean;\n name?: string;\n testId?: string;\n}\n\nconst FileInputContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n`;\n\nconst FileInputWrapper = styled.div<{ $hasError?: boolean; $dragOver?: boolean }>`\n position: relative;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: border-color 0.2s;\n border-color: ${({ theme, $dragOver }) => ($dragOver ? theme.colors.accent : undefined)};\n background-color: ${({ theme, $dragOver }) => ($dragOver ? theme.colors.surface : undefined)};\n\n &:hover {\n border-color: ${({ theme, $hasError }) => ($hasError ? theme.colors.error : theme.colors.accent)};\n }\n\n &:focus-within {\n border-color: ${({ theme, $hasError }) => ($hasError ? theme.colors.error : theme.colors.accent)};\n }\n`;\n\nconst HiddenFileInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst UploadButton = styled.button`\n background: none;\n border: none;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration: underline;\n cursor: pointer;\n font-size: 14px;\n padding: 0;\n display: flex;\n align-items: center;\n gap: 4px;\n\n &:hover {\n color: ${({ theme }) => theme.colors.accent};\n }\n`;\n\nconst FileName = styled.span`\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n flex: 1;\n`;\n\nconst UploadIcon = styled.span`\n color: ${({ theme }) => theme.colors.primary};\n display: flex;\n align-items: center;\n`;\n\nconst FileSize = styled.span`\n color: ${({ theme }) => theme.colors.secondary};\n font-size: 12px;\n`;\n\nconst ClearButton = styled.button`\n background: none;\n border: none;\n color: ${({ theme }) => theme.colors.secondary};\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n\n &:hover {\n color: ${({ theme }) => theme.colors.error};\n background-color: ${({ theme }) => theme.colors.error}20;\n }\n`;\n\nconst FileRequirements = styled.div`\n margin-top: 8px;\n padding: 8px 12px;\n background: ${({ theme }) => theme.colors.background};\n border: 1px solid ${({ theme }) => theme.border.color};\n border-radius: ${({ theme }) => theme.border.radius};\n`;\n\nconst formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n};\n\n/**\n * File upload with click + drag-and-drop, extension/size validation, and a\n * requirements hint. Emits `(file, error)` — both nullable. Ported from\n * `onboarding-flow-general`; `react-feather` icons replaced by\n * `@mui/icons-material`, and the `dragOver`/`hasError` style props made transient.\n */\nexport function FileInput({\n label,\n error,\n value,\n onChange,\n placeholder = 'Upload document',\n accept = '.png,.jpg,.jpeg,.pdf',\n maxSize = 10 * 1024 * 1024,\n required = false,\n className,\n showRequirements = true,\n name,\n testId,\n}: FileInputProps) {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [dragOver, setDragOver] = useState(false);\n const reactId = useId();\n const inputId = `${reactId}-input`;\n const errorId = `${reactId}-error`;\n const requirementsId = `${reactId}-requirements`;\n const describedBy = [error ? errorId : null, showRequirements ? requirementsId : null]\n .filter(Boolean)\n .join(' ');\n\n const validateFile = (file: File): string | null => {\n const validTypes = accept.split(',').map(type => type.trim().toLowerCase());\n const fileExtension = '.' + (file.name.split('.').pop() ?? '').toLowerCase();\n\n if (!validTypes.includes(fileExtension)) {\n return `Invalid file type. Accepted types: ${accept}`;\n }\n if (file.size > maxSize) {\n return `File size too large. Maximum size: ${formatFileSize(maxSize)}`;\n }\n return null;\n };\n\n const handleFileSelect = (file: File) => {\n const validationError = validateFile(file);\n if (validationError) {\n onChange(null, validationError);\n return;\n }\n onChange(file, null);\n };\n\n const handleClick = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file) handleFileSelect(file);\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(false);\n const file = e.dataTransfer.files?.[0];\n if (file) handleFileSelect(file);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange(null, null);\n if (fileInputRef.current) fileInputRef.current.value = '';\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClick();\n }\n };\n\n const acceptedTypesText = accept\n .split(',')\n .map(type => type.trim().toUpperCase().replace('.', ''))\n .join(', ');\n\n return (\n <FileInputContainer className={className}>\n {label && <InputLabel htmlFor={inputId}>{label}</InputLabel>}\n\n <FileInputWrapper\n $hasError={!!error}\n $dragOver={dragOver}\n role=\"button\"\n tabIndex={0}\n aria-label={label ? `${label}. ${placeholder}` : placeholder}\n aria-invalid={!!error}\n aria-describedby={describedBy || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n <UploadIcon>\n <CloudUploadIcon fontSize=\"small\" />\n </UploadIcon>\n <UploadButton as=\"span\">{placeholder}</UploadButton>\n\n {value && (\n <>\n <FileName>\n {value.name}\n <FileSize> ({formatFileSize(value.size)})</FileSize>\n </FileName>\n <ClearButton\n type=\"button\"\n onClick={handleClear}\n title=\"Clear file\"\n aria-label=\"Clear file\"\n >\n <CloseIcon fontSize=\"small\" />\n </ClearButton>\n </>\n )}\n\n <HiddenFileInput\n ref={fileInputRef}\n id={inputId}\n name={name}\n type=\"file\"\n accept={accept}\n onChange={handleFileChange}\n required={required}\n tabIndex={-1}\n data-testid={testId}\n />\n </FileInputWrapper>\n\n {error && <InputError id={errorId}>{error}</InputError>}\n\n {showRequirements && (\n <FileRequirements id={requirementsId}>\n <Body200>\n File types accepted are {acceptedTypesText}, with a max. size of{' '}\n {formatFileSize(maxSize)}\n </Body200>\n </FileRequirements>\n )}\n </FileInputContainer>\n );\n}\n","import styled from 'styled-components';\n\n/**\n * Themed radio button (a styled native `<input type=\"radio\">`). The fill grows\n * from the theme border color to `colors.primary` when checked.\n */\nexport const RadioInput = styled.input.attrs({ type: 'radio' })`\n appearance: none;\n width: 20px;\n height: 20px;\n border: 2px solid ${({ theme }) => theme.border.color};\n border-radius: 50%;\n margin: 0 0.5rem 0 0;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n transition: all 0.2s;\n\n &:checked {\n border-color: ${({ theme }) => theme.colors.primary};\n border-width: 6px;\n }\n\n &:hover {\n border-color: ${({ theme }) => theme.colors.primary};\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n","import styled from 'styled-components';\n\n/**\n * Themed checkbox (a styled native `<input type=\"checkbox\">`) with a CSS\n * checkmark. Fill uses `colors.primary` when checked.\n */\nexport const CheckboxInput = styled.input.attrs({ type: 'checkbox' })`\n appearance: none;\n width: 20px;\n height: 20px;\n border: 2px solid ${({ theme }) => theme.border.color};\n border-radius: 4px;\n margin: 0 0.5rem 0 0;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n transition: all 0.2s;\n\n &:checked {\n border-color: ${({ theme }) => theme.colors.primary};\n background-color: ${({ theme }) => theme.colors.primary};\n }\n\n &:checked::after {\n content: '';\n position: absolute;\n left: 5px;\n top: 1px;\n width: 6px;\n height: 11px;\n border: solid white;\n border-width: 0 2px 2px 0;\n transform: rotate(45deg);\n }\n\n &:hover {\n border-color: ${({ theme }) => theme.colors.primary};\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport interface StepperStep {\n label: string;\n component?: React.ReactNode;\n}\n\nexport interface StepperProps {\n steps: StepperStep[];\n currentStep: number;\n className?: string;\n testId?: string;\n}\n\nconst StepperContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n`;\n\nconst StepsContainer = styled.div`\n display: flex;\n justify-content: space-between;\n position: relative;\n`;\n\nconst StepContent = styled.div``;\n\nconst Step = styled.div<{ $active?: boolean; $completed?: boolean }>`\n position: relative;\n z-index: 2;\n background: ${({ theme }) => theme.colors.background};\n padding: 0 1rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.5rem;\n transition: all 0.2s ease-in-out;\n padding-bottom: 1rem;\n flex: 1;\n border-bottom: 1px solid;\n border-color: ${({ theme, $active, $completed }) =>\n $active || $completed ? theme.colors.primary : theme.colors.border};\n`;\n\nconst StepNumber = styled.div<{ $active?: boolean; $completed?: boolean }>`\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: ${({ theme, $active, $completed }) =>\n $completed ? theme.colors.primary : $active ? 'white' : theme.colors.surface};\n color: ${({ theme, $active, $completed }) =>\n $completed ? theme.colors.background : $active ? theme.colors.primary : theme.colors.secondary};\n font-weight: 500;\n transition: all 0.2s ease-in-out;\n border: 2px solid\n ${({ theme, $active, $completed }) =>\n $active || $completed ? theme.colors.primary : theme.colors.border};\n`;\n\nconst StepLabel = styled.span<{ $active?: boolean }>`\n color: ${({ theme, $active }) => ($active ? theme.colors.primary : theme.colors.secondary)};\n font-size: 0.875rem;\n font-weight: ${({ $active }) => ($active ? 500 : 400)};\n transition: all 0.2s ease-in-out;\n text-align: center;\n white-space: nowrap;\n`;\n\n/** Horizontal stepper with a number/label per step and the active step's content below. */\nexport function Stepper({ steps, currentStep, className, testId }: StepperProps) {\n return (\n <StepperContainer className={className} data-testid={testId}>\n <StepsContainer>\n {steps.map((step, index) => {\n const active = index === currentStep;\n const completed = index < currentStep;\n return (\n <Step\n key={'stepper-step-' + index}\n $active={active}\n $completed={completed}\n aria-current={active ? 'step' : undefined}\n >\n <StepNumber $active={active} $completed={completed}>\n {index + 1}\n </StepNumber>\n <StepLabel $active={active}>{step.label}</StepLabel>\n </Step>\n );\n })}\n </StepsContainer>\n <StepContent>{steps[currentStep]?.component}</StepContent>\n </StepperContainer>\n );\n}\n","import React, { useId, useState } from 'react';\nimport styled from 'styled-components';\n\nexport interface Tab {\n name: string;\n content?: React.ReactNode;\n}\n\nexport interface TabsProps {\n tabs?: Tab[];\n defaultActiveTab?: number;\n className?: string;\n onTabChange?: (index: number) => void;\n testId?: string;\n}\n\nconst TabsContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\n\nconst TabList = styled.div`\n display: flex;\n border-bottom: 1px solid ${({ theme }) => theme.colors.border};\n margin-bottom: 1rem;\n`;\n\nconst TabButton = styled.button<{ $active?: boolean }>`\n background: none;\n border: none;\n padding: 0.75rem 1.5rem;\n cursor: pointer;\n font-size: 0.875rem;\n font-weight: 500;\n color: ${({ theme, $active }) => ($active ? theme.colors.primary : theme.colors.secondary)};\n border-bottom: 2px solid ${({ theme, $active }) => ($active ? theme.colors.primary : 'transparent')};\n transition: all 0.2s ease-in-out;\n position: relative;\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary};\n background-color: ${({ theme }) => theme.colors.surface};\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.colors.accent};\n outline-offset: -2px;\n }\n`;\n\nconst TabContent = styled.div`\n padding: 1rem 0;\n min-height: 100px;\n`;\n\n/**\n * Tabbed panel managing its own active-tab state. Implements the ARIA tabs\n * pattern (`tablist`/`tab`/`tabpanel` with id linkage) for accessibility.\n */\nexport function Tabs({\n tabs = [],\n defaultActiveTab = 0,\n className,\n onTabChange,\n testId,\n}: TabsProps) {\n const [activeTab, setActiveTab] = useState(defaultActiveTab);\n const baseId = useId();\n\n const handleTabClick = (index: number) => {\n setActiveTab(index);\n onTabChange?.(index);\n };\n\n if (!tabs || tabs.length === 0) {\n return null;\n }\n\n const tabId = (i: number) => `${baseId}-tab-${i}`;\n const panelId = (i: number) => `${baseId}-panel-${i}`;\n\n return (\n <TabsContainer className={className} data-testid={testId}>\n <TabList role=\"tablist\">\n {tabs.map((tab, index) => {\n const active = index === activeTab;\n return (\n <TabButton\n key={`tab-${index}`}\n id={tabId(index)}\n role=\"tab\"\n type=\"button\"\n $active={active}\n aria-selected={active}\n aria-controls={panelId(index)}\n tabIndex={active ? 0 : -1}\n onClick={() => handleTabClick(index)}\n >\n {tab.name}\n </TabButton>\n );\n })}\n </TabList>\n\n <TabContent role=\"tabpanel\" id={panelId(activeTab)} aria-labelledby={tabId(activeTab)}>\n {tabs[activeTab]?.content}\n </TabContent>\n </TabsContainer>\n );\n}\n","import React from 'react';\nimport { Box, CircularProgress } from '@mui/material';\n\nexport interface LoaderProps {\n className?: string;\n /** Spinner diameter in px. */\n size?: number;\n /** Accessible label announced to screen readers. */\n label?: string;\n testId?: string;\n}\n\n/** Centered indeterminate spinner (MUI `CircularProgress`). */\nexport function Loader({ className, size, label = 'Loading', testId }: LoaderProps) {\n return (\n <Box\n className={className}\n data-testid={testId}\n sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }}\n >\n <CircularProgress size={size} aria-label={label} />\n </Box>\n );\n}\n","import React, { useId, useState } from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\n\nexport interface DotsMenuOption {\n label: string;\n action: () => void;\n}\n\nexport interface DotsMenuProps {\n options: DotsMenuOption[];\n iconSize?: 'small' | 'medium' | 'large';\n /** Accessible label for the trigger button. */\n ariaLabel?: string;\n testId?: string;\n}\n\n/**\n * Overflow (\"kebab\") menu: an icon button opening a list of actions. IDs are\n * generated with `useId()` so multiple instances on a page stay unique\n * (the source hardcoded a single id).\n */\nexport function DotsMenu({\n options,\n iconSize = 'medium',\n ariaLabel = 'more',\n testId,\n}: DotsMenuProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n const baseId = useId();\n const buttonId = `${baseId}-button`;\n const menuId = `${baseId}-menu`;\n\n const handleClick = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleOptionClick = (action: () => void) => {\n action();\n handleClose();\n };\n\n return (\n <>\n <IconButton\n aria-label={ariaLabel}\n id={buttonId}\n data-testid={testId}\n aria-controls={open ? menuId : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? 'true' : undefined}\n onClick={handleClick}\n size={iconSize}\n >\n <MoreVertIcon />\n </IconButton>\n <Menu\n id={menuId}\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n slotProps={{\n list: { 'aria-labelledby': buttonId },\n paper: { style: { maxHeight: 200, width: '20ch' } },\n }}\n >\n {options.map((option, idx) => (\n <MenuItem key={option.label + idx} onClick={() => handleOptionClick(option.action)}>\n {option.label}\n </MenuItem>\n ))}\n </Menu>\n </>\n );\n}\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { ThemeProvider } from '../theme';\nimport type { Branding } from '../theme';\nimport { Body100, Button, ButtonContainer, StatusTag } from '../styles/layout';\nimport { FormCheckboxLabel } from '../styles/forms';\nimport { CheckboxInput } from '../components/CheckboxInput';\nimport { DropDown } from '../components/DropDown';\nimport { Stepper } from '../components/Stepper';\nimport { TextInput } from '../components/TextInput';\n\nexport interface PreviewProps {\n /** Partner branding to render the sample with. Omit for the default theme. */\n branding?: Branding;\n className?: string;\n}\n\nconst PreviewCard = styled.div`\n display: flex;\n gap: 2rem;\n padding: 1.5rem;\n background: ${({ theme }) => theme.colors.background};\n border: ${({ theme }) => theme.border.width} solid ${({ theme }) => theme.border.color};\n border-radius: ${({ theme }) => theme.border.radius};\n`;\n\nconst MainColumn = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n flex: 1;\n min-width: 0;\n`;\n\nconst HeaderRow = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n`;\n\nconst SideColumn = styled.div`\n flex: 1;\n min-width: 0;\n`;\n\nfunction PreviewContent() {\n const [name, setName] = useState('Acme Corporation');\n const [plan, setPlan] = useState('growth');\n const [autopay, setAutopay] = useState(true);\n\n return (\n <PreviewCard data-testid=\"oatfi-ui-preview\">\n <MainColumn>\n <HeaderRow>\n <Body100 className=\"bold\">Partner</Body100>\n <StatusTag className=\"success small\">Active</StatusTag>\n </HeaderRow>\n\n <TextInput label=\"Business name\" value={name} onChange={setName} />\n <DropDown\n label=\"Plan\"\n value={plan}\n onChange={setPlan}\n options={[\n { value: 'starter', label: 'Starter' },\n { value: 'growth', label: 'Growth' },\n { value: 'scale', label: 'Scale' },\n ]}\n />\n <FormCheckboxLabel>\n <CheckboxInput checked={autopay} onChange={e => setAutopay(e.target.checked)} />\n Enable automatic payments\n </FormCheckboxLabel>\n\n <ButtonContainer>\n <Button className=\"secondary\">Cancel</Button>\n <Button>Save changes</Button>\n </ButtonContainer>\n </MainColumn>\n\n <SideColumn>\n <Stepper\n currentStep={1}\n steps={[{ label: 'Connect' }, { label: 'Verify' }, { label: 'Done' }]}\n />\n </SideColumn>\n </PreviewCard>\n );\n}\n\n/**\n * A self-contained branded snapshot of the OatFi UI kit — a header, a few\n * inputs, buttons, and a stepper. Wraps its own `ThemeProvider`, so a consumer\n * (e.g. the dashboard's Branding settings page) drops it in and passes partner\n * `branding` without setting up theming itself.\n */\nexport function Preview({ branding, className }: PreviewProps) {\n return (\n <ThemeProvider branding={branding}>\n <div className={className}>\n <PreviewContent />\n </div>\n </ThemeProvider>\n );\n}\n"],"names":["StyledThemeProvider","MuiThemeProviderBase","useStyledTheme","formatDisplayValue","InputLabel","IconButton","MenuItem"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/theme/defaultTheme.ts","../src/theme/mergeBranding.ts","../src/theme/muiTheme.ts","../src/theme/ThemeProvider.tsx","../src/theme/useTheme.ts","../src/styles/inputs.ts","../src/styles/layout.ts","../src/styles/forms.ts","../src/components/TextInput.tsx","../src/components/EmailInput.tsx","../src/components/PhoneInput.tsx","../src/components/SSNInput.tsx","../src/components/TaxIdInput.tsx","../src/components/CurrencyInput.tsx","../src/components/DateInput.tsx","../src/components/DropDown.tsx","../src/components/SearchDropdown.tsx","../src/components/FileInput.tsx","../src/components/RadioInput.tsx","../src/components/CheckboxInput.tsx","../src/components/Stepper.tsx","../src/components/Tabs.tsx","../src/components/Loader.tsx","../src/components/DotsMenu.tsx","../src/preview/Preview.tsx"],"sourcesContent":["import type { Theme } from './types';\n\n/**\n * The default OatFi theme. Ported from the embeds' `theme/types.js`, using the\n * more complete shape (with `colors.default`) from `mf-remote-react`, extended\n * with `buttonPrimary` / `buttonSecondary` so partner button colors have a home.\n *\n * `buttonPrimary` / `buttonSecondary` default to `primary` / `secondary` here so\n * an unbranded theme renders identically to the original embeds.\n */\nexport const defaultTheme: Theme = {\n colors: {\n primary: '#111827',\n secondary: '#6B7280',\n accent: '#2563EB',\n background: '#FFFFFF',\n surface: '#F3F4F6',\n border: '#E5E7EB',\n success: '#10B981',\n default: '#6B7280',\n warning: '#F59E42',\n error: '#EF4444',\n buttonPrimary: '#111827',\n buttonSecondary: '#6B7280',\n },\n border: {\n radius: '8px',\n width: '1px',\n color: '#E5E7EB',\n },\n typography: {\n fontFamily: '\"Geist\", \"Geist Sans\", Arial, sans-serif',\n },\n};\n","import { defaultTheme } from './defaultTheme';\nimport type { Branding, Theme } from './types';\n\nconst toPx = (value: number): string => `${value}px`;\n\n/**\n * Map partner `Branding` onto the full internal `Theme`.\n *\n * Pure and total: any missing field falls back to `defaultTheme`. Note that\n * `colors.primary` / `colors.secondary` are NOT partner-configurable — they\n * stay at the theme defaults; only the button colors, border, and font can be\n * branded.\n */\nexport function mergeBranding(branding?: Branding): Theme {\n const b = branding ?? {};\n\n return {\n ...defaultTheme,\n colors: {\n ...defaultTheme.colors,\n buttonPrimary: b.primaryButtonColor ?? defaultTheme.colors.buttonPrimary,\n buttonSecondary: b.secondaryButtonColor ?? defaultTheme.colors.buttonSecondary,\n },\n border: {\n ...defaultTheme.border,\n radius: b.borderRadius != null ? toPx(b.borderRadius) : defaultTheme.border.radius,\n width: b.borderWidth != null ? toPx(b.borderWidth) : defaultTheme.border.width,\n },\n typography: {\n ...defaultTheme.typography,\n fontFamily: b.fontFamily ?? defaultTheme.typography.fontFamily,\n },\n };\n}\n","import { createTheme, type Theme as MuiTheme } from '@mui/material/styles';\nimport type { Theme } from './types';\n\n/**\n * Build a MUI theme from our internal `Theme` so MUI-based primitives read the\n * same tokens as styled-components ones. Ported from the embeds'\n * `MuiThemeProvider.js`, typed and driven by the merged theme.\n */\nexport function buildMuiTheme(theme: Theme): MuiTheme {\n const { colors, border, typography } = theme;\n\n return createTheme({\n palette: {\n primary: {\n main: colors.accent,\n contrastText: colors.background,\n },\n secondary: {\n main: colors.secondary,\n },\n error: {\n main: colors.error,\n },\n warning: {\n main: colors.warning,\n },\n success: {\n main: colors.success,\n },\n background: {\n default: colors.background,\n paper: colors.surface,\n },\n text: {\n primary: colors.primary,\n secondary: colors.secondary,\n },\n },\n typography: {\n fontFamily: typography.fontFamily,\n fontSize: 14,\n },\n shape: {\n borderRadius: parseInt(border.radius, 10),\n },\n components: {\n MuiFormControlLabel: {\n styleOverrides: {\n label: {\n fontSize: '12px',\n fontWeight: 400,\n },\n },\n },\n MuiPaper: {\n styleOverrides: {\n root: {\n backgroundColor: colors.background,\n border: `${border.width} solid ${border.color}`,\n },\n },\n defaultProps: {\n elevation: 0,\n },\n },\n MuiLink: {\n styleOverrides: {\n root: {\n cursor: 'pointer',\n fontSize: '16px',\n fontWeight: 600,\n fontFamily: typography.fontFamily,\n },\n },\n },\n MuiTextField: {\n styleOverrides: {\n root: {\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n borderColor: border.color,\n borderWidth: border.width,\n },\n '&:hover fieldset': {\n borderColor: colors.accent,\n },\n '&.Mui-focused fieldset': {\n borderColor: colors.accent,\n },\n '&.Mui-error fieldset': {\n borderColor: colors.error,\n },\n },\n '& .MuiInputLabel-root, & .MuiFormLabel-root, & .MuiInputLabel-formControl': {\n color: colors.secondary,\n fontSize: '14px',\n '&.Mui-focused': {\n color: colors.accent,\n },\n '&.Mui-error': {\n color: colors.error,\n },\n },\n '& .MuiInputBase-input': {\n fontSize: 14,\n color: colors.primary,\n '&::placeholder': {\n color: colors.secondary,\n opacity: 1,\n },\n },\n },\n },\n },\n MuiSelect: {\n styleOverrides: {\n select: {\n fontSize: 14,\n },\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: {\n fontSize: 14,\n '& input[type=\"date\"]::-webkit-calendar-picker-indicator': {\n display: 'none',\n },\n '& .Mui-error': {\n color: colors.error,\n },\n '& input[type=\"date\"]::-webkit-inner-spin-button': {\n display: 'none',\n },\n '& input[type=\"date\"]::-webkit-clear-button': {\n display: 'none',\n },\n },\n },\n },\n MuiFormControl: {\n styleOverrides: {\n root: {\n '& input::-webkit-datetime-edit': {\n color: colors.secondary,\n },\n '& .Mui-error': {\n input: {\n color: colors.error,\n },\n label: {\n color: colors.error,\n },\n },\n },\n },\n },\n },\n });\n}\n","import React, { useMemo } from 'react';\nimport { ThemeProvider as MuiThemeProviderBase } from '@mui/material/styles';\nimport { ThemeProvider as StyledThemeProvider, createGlobalStyle } from 'styled-components';\nimport { mergeBranding } from './mergeBranding';\nimport { buildMuiTheme } from './muiTheme';\nimport type { Branding } from './types';\n\nconst GlobalStyle = createGlobalStyle`\n * {\n font-family: ${({ theme }) => theme.typography.fontFamily};\n box-sizing: border-box;\n }\n`;\n\nexport interface ThemeProviderProps {\n /**\n * Partner branding overrides. Any omitted field falls back to `defaultTheme`.\n * Omit entirely to render with the default OatFi theme.\n */\n branding?: Branding;\n children?: React.ReactNode;\n}\n\n/**\n * Single theming entry point for @oatfi/ui consumers.\n *\n * Resolves `branding` into the full internal `Theme` and provides it through\n * BOTH styled-components and MUI, so a primitive built on either gets identical\n * tokens. Context cannot cross the embed loader's script boundary, so this is\n * mounted *inside* each consumer's React root.\n */\nexport function ThemeProvider({ branding, children }: ThemeProviderProps) {\n const theme = useMemo(() => mergeBranding(branding), [branding]);\n const muiTheme = useMemo(() => buildMuiTheme(theme), [theme]);\n\n return (\n <StyledThemeProvider theme={theme}>\n <GlobalStyle />\n <MuiThemeProviderBase theme={muiTheme}>{children}</MuiThemeProviderBase>\n </StyledThemeProvider>\n );\n}\n","import { useTheme as useStyledTheme } from 'styled-components';\nimport type { Theme } from './types';\n\n/**\n * Read the resolved @oatfi/ui theme. Typed re-export of styled-components'\n * `useTheme` (typing comes from the `DefaultTheme` augmentation in `styled.d.ts`).\n */\nexport const useTheme = (): Theme => useStyledTheme();\n","import styled from 'styled-components';\n\n/**\n * Input style bases, ported from\n * `onboarding-flow-general/src/components/globals/shared/InputStyles.js`.\n *\n * The dropdown chevron SVG fill was a hardcoded `#6B7280`; it now reads from\n * `theme.colors.default` (whose default value is `#6B7280`, so unbranded\n * appearance is unchanged) and is URL-encoded into the `data:` URI.\n */\n\nconst chevronDataUri = (color: string): string =>\n `data:image/svg+xml;utf8,<svg fill=\"${encodeURIComponent(\n color,\n )}\" height=\"20\" viewBox=\"0 0 20 20\" width=\"20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.293 7.293a1 1 0 011.414 0L10 8.586l1.293-1.293a1 1 0 111.414 1.414l-2 2a1 1 0 01-1.414 0l-2-2a1 1 0 010-1.414z\"/></svg>`;\n\nexport const InputWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 5px;\n width: 100%;\n\n span.icon {\n position: absolute;\n right: 1rem;\n top: 51%;\n display: flex;\n align-items: center;\n cursor: pointer;\n z-index: 1;\n }\n\n &.Werror span.icon {\n top: 42%;\n }\n`;\n\nexport const InputLabel = styled.label`\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n font-weight: 500;\n margin-bottom: 4px;\n`;\n\nexport const InputError = styled.span`\n color: ${({ theme }) => theme.colors.error};\n font-size: 12px;\n font-weight: 500;\n margin-top: -4px;\n padding-left: 5px;\n`;\n\nexport const BaseInput = styled.input`\n display: flex;\n padding: 9px;\n border: ${({ theme }) => theme.border.width} solid ${({ theme }) => theme.border.color};\n border-radius: ${({ theme }) => theme.border.radius};\n background: ${({ theme }) => theme.colors.background};\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n font-family: ${({ theme }) => theme.typography.fontFamily};\n outline: none;\n transition: border-color 0.2s;\n\n &[type='date'] {\n &::-webkit-calendar-picker-indicator {\n opacity: 0;\n pointer-events: none;\n }\n &::-moz-calendar-picker-indicator {\n opacity: 0;\n pointer-events: none;\n }\n &::-ms-input-placeholder {\n opacity: 0;\n pointer-events: none;\n }\n }\n\n &:focus {\n border-color: ${({ theme }) => theme.colors.accent};\n }\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.secondary};\n opacity: 1;\n }\n\n &.error {\n border-color: ${({ theme }) => theme.colors.error};\n color: ${({ theme }) => theme.colors.error};\n\n &::placeholder {\n color: ${({ theme }) => theme.colors.error};\n opacity: 1;\n }\n }\n`;\n\nexport const SelectInput = styled(BaseInput)`\n appearance: none;\n background-image: url('${({ theme }) => chevronDataUri(theme.colors.default)}');\n background-repeat: no-repeat;\n background-position: right 12px center;\n background-size: 20px 20px;\n`;\n\nexport const DropdownContainer = styled.div`\n position: relative;\n width: 100%;\n`;\n\nexport const AutocompleteInput = styled(BaseInput)`\n cursor: pointer;\n background-image: url('${({ theme }) => chevronDataUri(theme.colors.default)}');\n background-repeat: no-repeat;\n background-position: right 12px center;\n background-size: 20px 20px;\n width: 100%;\n`;\n\nexport const DropdownList = styled.div<{ $isOpen?: boolean }>`\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n max-height: 200px;\n overflow-y: auto;\n background: ${({ theme }) => theme.colors.background};\n border: ${({ theme }) => theme.border.width} solid ${({ theme }) => theme.border.color};\n border-top: none;\n border-radius: 0 0 ${({ theme }) => theme.border.radius} ${({ theme }) => theme.border.radius};\n z-index: 1000;\n display: ${({ $isOpen }) => ($isOpen ? 'block' : 'none')};\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n`;\n\nexport const DropdownItem = styled.div<{ $isSelected?: boolean }>`\n padding: 8px 12px;\n cursor: pointer;\n background: ${({ $isSelected, theme }) => ($isSelected ? theme.colors.accent + '20' : 'transparent')};\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n border-bottom: 1px solid ${({ theme }) => theme.border.color};\n\n &:hover {\n background: ${({ theme }) => theme.colors.accent + '10'};\n }\n\n &:last-child {\n border-bottom: none;\n }\n`;\n\nexport const NoResults = styled.div`\n padding: 12px;\n text-align: center;\n color: ${({ theme }) => theme.colors.secondary};\n font-size: 14px;\n`;\n","import styled from 'styled-components';\n\n/**\n * Layout, typography, and button style bases, ported from\n * `onboarding-flow-general/src/components/globals/shared/General.js`.\n *\n * The Button hover (`${theme.colors.primary}CC`) and `Body*` link colors\n * (`theme.colors.primary`) already read from the theme in the source — the\n * `#0e0e0e` / `#0000FF` literals the rollout plan flagged were from an older\n * revision and are not present here.\n */\n\nexport const H3 = styled.h3`\n font-size: 18px;\n font-weight: 500;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const H2 = styled.h2`\n font-size: 24px;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const H1 = styled.h1`\n font-size: 32px;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const Body100 = styled.p`\n font-size: 12px;\n font-weight: 400;\n text-align: justify;\n color: ${({ color, theme }) => (color === 'secondary' ? theme.colors.secondary : theme.colors.primary)};\n a {\n font-size: 12px;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration-color: ${({ theme }) => theme.colors.primary};\n }\n &.bold {\n font-weight: 600;\n }\n span {\n font-weight: 400;\n }\n`;\n\nexport const Body200 = styled.p`\n font-size: 14px;\n font-weight: 400;\n text-align: justify;\n color: ${({ color, theme }) => (color === 'secondary' ? theme.colors.secondary : theme.colors.primary)};\n a {\n font-size: 14px;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration-color: ${({ theme }) => theme.colors.primary};\n }\n &.bold {\n font-weight: 600;\n }\n span {\n font-weight: 400;\n }\n`;\n\nexport const Body400 = styled.p`\n font-size: 11px;\n font-weight: 400;\n text-align: justify;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const Container = styled.div`\n padding: 2rem;\n border-radius: ${({ theme }) => theme.border.radius};\n background-color: ${({ theme }) => theme.colors.background};\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n max-width: 1000px;\n margin: 0 auto;\n`;\n\nexport const Content = styled.div`\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n`;\n\nexport const ButtonContainer = styled.div`\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 1rem;\n &.space-between {\n justify-content: space-between;\n }\n`;\n\nexport const Button = styled.button`\n align-items: center;\n background-color: ${({ theme }) => theme.colors.buttonPrimary};\n border: none;\n border-radius: ${({ theme }) => theme.border.radius};\n color: ${({ theme }) => theme.colors.background};\n cursor: pointer;\n display: flex;\n font-size: 14px;\n gap: 0.25rem;\n justify-content: center;\n margin-top: 1rem;\n padding: 0.75rem 1.5rem;\n transition: background-color 0.2s ease;\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.35;\n }\n\n &:hover {\n background-color: ${({ theme }) => `${theme.colors.buttonPrimary}CC`};\n }\n\n &.secondary {\n background-color: ${({ theme }) => theme.colors.background};\n color: ${({ theme }) => theme.colors.buttonSecondary};\n border: 1px solid ${({ theme }) => theme.colors.buttonSecondary};\n &:hover {\n background-color: ${({ theme }) => `${theme.colors.buttonSecondary}10`};\n }\n }\n\n &.dashed {\n background-color: transparent;\n color: ${({ theme }) => theme.colors.secondary};\n border: 1px dashed ${({ theme }) => theme.colors.border};\n &:hover {\n background-color: ${({ theme }) => theme.colors.surface};\n border-color: ${({ theme }) => theme.colors.secondary};\n color: ${({ theme }) => theme.colors.primary};\n }\n }\n\n &.link {\n background-color: transparent;\n color: ${({ theme }) => theme.colors.accent};\n border: none;\n cursor: pointer;\n margin: 0;\n }\n &.link:hover {\n color: ${({ theme }) => theme.colors.accent};\n text-decoration: underline;\n }\n &.no-padding {\n padding: 0;\n }\n`;\n\nexport const FlexRowWrapper = styled.div`\n display: flex;\n flex-direction: row;\n .flex-row-item {\n flex: 1;\n }\n`;\n\nexport const FlexColumnWrapper = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\nexport const DetailsContainer = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 5px;\n justify-content: space-between;\n button {\n color: ${({ theme }) => theme.colors.primary};\n text-decoration-color: ${({ theme }) => theme.colors.primary};\n }\n`;\n\nexport const DetailRow = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nexport const DetailElement = styled.div`\n flex: 1;\n p {\n margin: 5px 0 0 0;\n }\n`;\n\nexport const TermsList = styled.ul`\n list-style-type: disc;\n padding-left: 20px;\n p {\n margin: 0;\n }\n`;\n\nexport const StatusTag = styled.div`\n padding: 4px 8px;\n border-radius: 4px;\n color: ${({ theme }) => theme.colors.background};\n display: flex;\n flex-direction: row;\n align-items: center;\n text-transform: capitalize;\n &.small {\n font-size: 10px;\n padding: 2px 4px;\n }\n &.success {\n background-color: ${({ theme }) => theme.colors.success};\n }\n &.error {\n background-color: ${({ theme }) => theme.colors.error};\n }\n &.warning {\n background-color: ${({ theme }) => theme.colors.warning};\n }\n`;\n","import styled from 'styled-components';\n\n/**\n * Form layout style bases, ported from\n * `onboarding-flow-general/src/components/globals/shared/FormStyles.js`.\n *\n * The source's `Body100` is intentionally NOT re-exported here — the richer\n * `Body100` from `layout.ts` (with `color` prop + link styling) is the single\n * canonical version.\n */\n\nexport const Form = styled.form`\n max-width: 1000px;\n margin: 0 auto;\n`;\n\nexport const FormTitle = styled.h2`\n font-size: 1.5rem;\n font-weight: 600;\n margin-bottom: 2rem;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const FormSubtitle = styled.h3`\n font-size: 14px;\n font-weight: 500;\n color: ${({ theme }) => theme.colors.primary};\n`;\n\nexport const FormRow = styled.div`\n display: flex;\n gap: 1rem;\n margin-bottom: 1rem;\n flex-wrap: wrap;\n\n @media (max-width: 768px) {\n flex-direction: column;\n }\n`;\n\nexport const FormColumn = styled.div`\n flex: 1;\n min-width: 200px;\n`;\n\nexport const FormCheckboxLabel = styled.label`\n display: flex;\n align-items: center;\n gap: 0.5rem;\n cursor: pointer;\n color: ${({ theme }) => theme.colors.primary};\n font-size: 0.875rem;\n\n input[type='checkbox'] {\n margin: 0;\n }\n`;\n\nexport const FormActions = styled.div`\n margin-top: 2rem;\n display: flex;\n justify-content: flex-end;\n`;\n","import React from 'react';\nimport { TextField } from '@mui/material';\n\nexport interface TextInputProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n type?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n /** Native `name` on the underlying input (form semantics + by-name selectors). */\n name?: string;\n /** Rendered as `data-testid` on the input element for e2e selection. */\n testId?: string;\n /** For `type=\"number\"`: maximum numeric value. Otherwise: maximum input length. */\n max?: number;\n /** Strip numeric characters as the user types. */\n ignoreNumbers?: boolean;\n /** Strip non-numeric characters as the user types. */\n onlyNumbers?: boolean;\n}\n\n/**\n * Text field built on MUI `TextField`. Presentational: emits the raw string\n * value via `onChange`. Ported from `onboarding-flow-general` (MUI v7\n * `slotProps` replace the deprecated `inputProps`); `disabled` is new.\n */\nexport function TextInput({\n label,\n error,\n value,\n onChange,\n placeholder,\n type = 'text',\n required = false,\n disabled = false,\n className,\n name,\n testId,\n max,\n ignoreNumbers = false,\n onlyNumbers = false,\n}: TextInputProps) {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n let newValue = e.target.value;\n\n if (ignoreNumbers) {\n newValue = newValue.replace(/[0-9]/g, '');\n }\n\n if (onlyNumbers) {\n newValue = newValue.replace(/[^0-9]/g, '');\n }\n\n if (type === 'number' && max !== undefined && newValue !== '') {\n const numericValue = parseFloat(newValue);\n if (!isNaN(numericValue) && numericValue > max) {\n return; // Don't update if value exceeds max\n }\n }\n\n onChange(newValue);\n };\n\n return (\n <TextField\n label={label}\n value={value}\n onChange={handleChange}\n placeholder={placeholder}\n type={type}\n required={required}\n disabled={disabled}\n className={className}\n name={name}\n error={!!error}\n helperText={error}\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n slotProps={{\n htmlInput: {\n ...(type === 'number' ? { max } : { maxLength: max }),\n 'data-testid': testId,\n },\n }}\n />\n );\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface EmailInputProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\n/** Email field — a `TextInput` pinned to `type=\"email\"`. */\nexport function EmailInput({ placeholder = 'Enter email address', ...props }: EmailInputProps) {\n return <TextInput {...props} type=\"email\" placeholder={placeholder} />;\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface PhoneInputProps {\n label?: string;\n error?: string;\n /** Raw digits (up to 10). Displayed masked as `(XXX) XXX-XXXX`. */\n value: string;\n onChange: (rawValue: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst formatPhoneNumber = (value: string): string => {\n if (!value) return '';\n const phoneNumber = value.replace(/\\D/g, '');\n if (phoneNumber.length <= 3) {\n return phoneNumber;\n } else if (phoneNumber.length <= 6) {\n return `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3)}`;\n }\n return `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3, 6)}-${phoneNumber.slice(6, 10)}`;\n};\n\n/** US phone field. Masks display as `(XXX) XXX-XXXX`; emits raw digits. */\nexport function PhoneInput({\n placeholder = '(XXX) XXX-XXXX',\n value,\n onChange,\n ...props\n}: PhoneInputProps) {\n const handleChange = (maskedValue: string) => {\n onChange(maskedValue.replace(/\\D/g, '').slice(0, 10));\n };\n\n return (\n <TextInput\n {...props}\n value={formatPhoneNumber(value)}\n onChange={handleChange}\n placeholder={placeholder}\n max={14}\n />\n );\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface SSNInputProps {\n label?: string;\n error?: string;\n /** Raw value; displayed masked as `XXX-XX-XXXX`. */\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst formatDisplayValue = (rawValue: string): string => {\n if (!rawValue) return '';\n const digits = rawValue.replace(/[^\\d]/g, '');\n if (digits.length <= 3) return digits;\n if (digits.length <= 5) return `${digits.slice(0, 3)}-${digits.slice(3)}`;\n return `${digits.slice(0, 3)}-${digits.slice(3, 5)}-${digits.slice(5, 9)}`;\n};\n\n/** SSN field. Masks display as `XXX-XX-XXXX`; emits the masked value. */\nexport function SSNInput({\n placeholder = 'XXX-XX-XXXX',\n value,\n onChange,\n ...props\n}: SSNInputProps) {\n return (\n <TextInput\n {...props}\n value={formatDisplayValue(value)}\n onChange={onChange}\n placeholder={placeholder}\n max={11}\n />\n );\n}\n","import React from 'react';\nimport { TextInput } from './TextInput';\n\nexport interface TaxIdInputProps {\n label?: string;\n error?: string;\n /** Raw value; displayed masked as `XX-XXXXXXX` (EIN). */\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst formatDisplayValue = (rawValue: string): string => {\n if (!rawValue) return '';\n const digits = rawValue.replace(/[^\\d]/g, '');\n if (digits.length <= 2) return digits;\n if (digits.length <= 9) return `${digits.slice(0, 2)}-${digits.slice(2)}`;\n return `${digits.slice(0, 2)}-${digits.slice(2, 9)}`;\n};\n\n/** EIN / Tax ID field. Masks display as `XX-XXXXXXX`; emits the masked value. */\nexport function TaxIdInput({\n placeholder = 'XX-XXXXXXX',\n value,\n onChange,\n ...props\n}: TaxIdInputProps) {\n return (\n <TextInput\n {...props}\n value={formatDisplayValue(value)}\n onChange={onChange}\n placeholder={placeholder}\n max={10}\n />\n );\n}\n","import React, { useId } from 'react';\nimport styled from 'styled-components';\nimport { BaseInput, InputError, InputLabel, InputWrapper } from '../styles/inputs';\n\nexport interface CurrencyInputProps {\n label?: string;\n /** Raw numeric string (no `$`/commas); displayed with thousand separators. */\n value: string;\n onChange: (rawValue: string) => void;\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n error?: string;\n className?: string;\n name?: string;\n testId?: string;\n}\n\nconst CurrencyInputWrapper = styled.div`\n position: relative;\n width: 100%;\n`;\n\nconst CurrencyPrefix = styled.span<{ $hasError?: boolean }>`\n position: absolute;\n left: 9px;\n top: 50%;\n transform: translateY(-50%);\n color: ${({ theme, $hasError }) => ($hasError ? theme.colors.error : theme.colors.primary)};\n font-size: 14px;\n font-family: ${({ theme }) => theme.typography.fontFamily};\n pointer-events: none;\n z-index: 1;\n`;\n\nconst StyledBaseInput = styled(BaseInput)`\n padding-left: calc(15px + 1ch);\n width: 100%;\n`;\n\nconst formatDisplayValue = (rawValue: string): string => {\n if (!rawValue || rawValue === '') return '';\n\n const numericValue = rawValue.toString().replace(/[^\\d.]/g, '');\n if (numericValue === '' || numericValue === '.') return '';\n\n const parts = numericValue.split('.');\n const integerPart = parts[0] || '';\n const decimalPart = parts[1] || '';\n\n const formattedInteger = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n const formattedDecimal = decimalPart.slice(0, 2);\n\n if (formattedDecimal) {\n return `${formattedInteger}.${formattedDecimal}`;\n } else if (numericValue.includes('.')) {\n return `${formattedInteger}.`;\n }\n return `${formattedInteger}`;\n};\n\nconst extractRawValue = (formattedValue: string): string => {\n if (!formattedValue) return '';\n const raw = formattedValue.replace(/[^\\d.]/g, '');\n const parts = raw.split('.');\n if (parts.length > 2) {\n return parts[0] + '.' + parts.slice(1).join('');\n }\n return raw;\n};\n\n/**\n * Currency field with a `$` prefix and thousand separators. Built on the shared\n * `BaseInput` style; emits the raw numeric string via `onChange`.\n */\nexport function CurrencyInput({\n label,\n value,\n onChange,\n placeholder,\n required,\n disabled,\n error,\n className,\n name,\n testId,\n}: CurrencyInputProps) {\n const reactId = useId();\n const inputId = `${reactId}-input`;\n const errorId = `${reactId}-error`;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(extractRawValue(e.target.value));\n };\n\n return (\n <InputWrapper className={className}>\n {label && <InputLabel htmlFor={inputId}>{label}</InputLabel>}\n <CurrencyInputWrapper>\n <CurrencyPrefix $hasError={!!error}>$</CurrencyPrefix>\n <StyledBaseInput\n id={inputId}\n name={name}\n type=\"text\"\n value={formatDisplayValue(value || '')}\n onChange={handleChange}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n className={error ? 'error' : ''}\n aria-invalid={!!error}\n aria-describedby={error ? errorId : undefined}\n data-testid={testId}\n />\n </CurrencyInputWrapper>\n {error && <InputError id={errorId}>{error}</InputError>}\n </InputWrapper>\n );\n}\n","import React, { useRef } from 'react';\nimport { IconButton, InputAdornment, TextField } from '@mui/material';\nimport CalendarMonthIcon from '@mui/icons-material/CalendarMonth';\n\nexport interface DateInputProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n /** ISO date string (`YYYY-MM-DD`) bounds. */\n min?: string;\n max?: string;\n}\n\n/**\n * Native date field (MUI `TextField type=\"date\"`) with a calendar-icon trigger.\n * Ported from `onboarding-flow-general`; the `react-feather` icon is replaced\n * by `@mui/icons-material` (a peer dep) and `inputProps`/`InputProps` by\n * MUI v7 `slotProps`.\n */\nexport function DateInput({\n label,\n error,\n value,\n onChange,\n required = false,\n disabled = false,\n className,\n name,\n testId,\n min,\n max,\n}: DateInputProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleIconClick = () => {\n const input = inputRef.current;\n if (!input) return;\n if (typeof input.showPicker === 'function') {\n input.showPicker();\n } else {\n input.focus();\n }\n };\n\n return (\n <TextField\n label={label}\n value={value}\n onChange={e => onChange(e.target.value)}\n type=\"date\"\n required={required}\n disabled={disabled}\n className={className}\n name={name}\n error={!!error}\n helperText={error}\n fullWidth\n variant=\"outlined\"\n size=\"small\"\n inputRef={inputRef}\n slotProps={{\n inputLabel: { shrink: true },\n htmlInput: { min, max, 'data-testid': testId },\n input: {\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n onClick={handleIconClick}\n edge=\"end\"\n aria-label=\"Open date picker\"\n size=\"small\"\n disabled={disabled}\n >\n <CalendarMonthIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n },\n }}\n />\n );\n}\n","import React, { useId } from 'react';\nimport {\n FormControl,\n FormHelperText,\n InputLabel,\n MenuItem,\n Select,\n type SelectChangeEvent,\n} from '@mui/material';\nimport type { Option } from './types';\n\nexport interface DropDownProps {\n label?: string;\n error?: string;\n value: string;\n onChange: (value: string) => void;\n options?: Option[];\n required?: boolean;\n disabled?: boolean;\n className?: string;\n name?: string;\n testId?: string;\n}\n\n/** Single-select dropdown built on MUI `Select`. */\nexport function DropDown({\n label,\n error,\n value,\n onChange,\n options = [],\n required = false,\n disabled = false,\n className,\n name,\n testId,\n}: DropDownProps) {\n const reactId = useId();\n const labelId = `${reactId}-label`;\n const selectId = `${reactId}-select`;\n\n // SelectDisplayProps is typed as HTMLAttributes, which omits `data-*`; widen it.\n const selectDisplayProps: React.HTMLAttributes<HTMLDivElement> & { 'data-testid'?: string } = {\n 'data-testid': testId,\n };\n\n const handleChange = (event: SelectChangeEvent) => {\n onChange(event.target.value);\n };\n\n return (\n <FormControl\n fullWidth\n error={!!error}\n required={required}\n disabled={disabled}\n className={className}\n size=\"small\"\n >\n {label && (\n <InputLabel id={labelId} sx={{ fontSize: '14px' }}>\n {label}\n </InputLabel>\n )}\n <Select\n labelId={label ? labelId : undefined}\n id={selectId}\n name={name}\n value={value || ''}\n onChange={handleChange}\n label={label}\n variant=\"outlined\"\n SelectDisplayProps={selectDisplayProps}\n >\n {options.map((opt, index) => (\n <MenuItem key={opt.value + index} value={opt.value}>\n {opt.label}\n </MenuItem>\n ))}\n </Select>\n {error && <FormHelperText>{error}</FormHelperText>}\n </FormControl>\n );\n}\n","import React from 'react';\nimport { Autocomplete, TextField } from '@mui/material';\nimport type { Option } from './types';\n\nexport interface SearchDropdownProps {\n label?: string;\n error?: string;\n /** Selected `value`(s). A comma-joined string is also accepted in multiple mode. */\n value: string | string[];\n onChange: (value: string | string[]) => void;\n options: Option[];\n placeholder?: string;\n required?: boolean;\n disabled?: boolean;\n className?: string;\n multiple?: boolean;\n noResultsMessage?: string;\n name?: string;\n testId?: string;\n}\n\n/** Searchable single/multi select built on MUI `Autocomplete`. */\nexport function SearchDropdown({\n label,\n error,\n value,\n onChange,\n options,\n placeholder = 'Search...',\n required = false,\n disabled = false,\n className,\n multiple = false,\n noResultsMessage = 'No results found',\n name,\n testId,\n}: SearchDropdownProps) {\n const getSelectedOption = (): Option | Option[] | null => {\n if (!value) return multiple ? [] : null;\n if (multiple) {\n const selectedValues = Array.isArray(value) ? value : value.split(',').filter(v => v.trim());\n return options.filter(opt => selectedValues.includes(opt.value));\n }\n const stringValue = Array.isArray(value) ? value[0] : value;\n return options.find(opt => opt.value === stringValue) || null;\n };\n\n const handleChange = (_event: React.SyntheticEvent, newValue: Option | Option[] | null) => {\n if (multiple) {\n onChange(Array.isArray(newValue) ? newValue.map(opt => opt.value) : []);\n } else {\n onChange(newValue && !Array.isArray(newValue) ? newValue.value : '');\n }\n };\n\n return (\n <Autocomplete<Option, boolean, false, false>\n options={options}\n value={getSelectedOption()}\n onChange={handleChange}\n getOptionLabel={option => option.label}\n isOptionEqualToValue={(option, val) => option.value === val.value}\n data-testid={testId}\n renderInput={params => (\n <TextField\n {...params}\n label={label}\n placeholder={placeholder}\n required={required}\n error={!!error}\n helperText={error}\n className={className}\n variant=\"outlined\"\n name={name}\n />\n )}\n noOptionsText={noResultsMessage}\n size=\"small\"\n fullWidth\n multiple={multiple}\n disabled={disabled}\n clearOnBlur={false}\n selectOnFocus\n autoHighlight\n />\n );\n}\n","import React, { useId, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport CloudUploadIcon from '@mui/icons-material/CloudUpload';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { InputError, InputLabel } from '../styles/inputs';\nimport { Body200 } from '../styles/layout';\n\nexport interface FileInputProps {\n label?: string;\n error?: string;\n value?: File | null;\n /** Called with the chosen file (or null) and a validation error (or null). */\n onChange: (file: File | null, error: string | null) => void;\n placeholder?: string;\n /** Comma-separated extension list, e.g. `.png,.jpg,.pdf`. */\n accept?: string;\n /** Max size in bytes. */\n maxSize?: number;\n required?: boolean;\n className?: string;\n showRequirements?: boolean;\n name?: string;\n testId?: string;\n}\n\nconst FileInputContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 4px;\n`;\n\nconst FileInputWrapper = styled.div<{ $hasError?: boolean; $dragOver?: boolean }>`\n position: relative;\n display: flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n transition: border-color 0.2s;\n border-color: ${({ theme, $dragOver }) => ($dragOver ? theme.colors.accent : undefined)};\n background-color: ${({ theme, $dragOver }) => ($dragOver ? theme.colors.surface : undefined)};\n\n &:hover {\n border-color: ${({ theme, $hasError }) => ($hasError ? theme.colors.error : theme.colors.accent)};\n }\n\n &:focus-within {\n border-color: ${({ theme, $hasError }) => ($hasError ? theme.colors.error : theme.colors.accent)};\n }\n`;\n\nconst HiddenFileInput = styled.input`\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n pointer-events: none;\n`;\n\nconst UploadButton = styled.button`\n background: none;\n border: none;\n color: ${({ theme }) => theme.colors.primary};\n text-decoration: underline;\n cursor: pointer;\n font-size: 14px;\n padding: 0;\n display: flex;\n align-items: center;\n gap: 4px;\n\n &:hover {\n color: ${({ theme }) => theme.colors.accent};\n }\n`;\n\nconst FileName = styled.span`\n color: ${({ theme }) => theme.colors.primary};\n font-size: 14px;\n flex: 1;\n`;\n\nconst UploadIcon = styled.span`\n color: ${({ theme }) => theme.colors.primary};\n display: flex;\n align-items: center;\n`;\n\nconst FileSize = styled.span`\n color: ${({ theme }) => theme.colors.secondary};\n font-size: 12px;\n`;\n\nconst ClearButton = styled.button`\n background: none;\n border: none;\n color: ${({ theme }) => theme.colors.secondary};\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 4px;\n transition: all 0.2s;\n\n &:hover {\n color: ${({ theme }) => theme.colors.error};\n background-color: ${({ theme }) => theme.colors.error}20;\n }\n`;\n\nconst FileRequirements = styled.div`\n margin-top: 8px;\n padding: 8px 12px;\n background: ${({ theme }) => theme.colors.background};\n border: 1px solid ${({ theme }) => theme.border.color};\n border-radius: ${({ theme }) => theme.border.radius};\n`;\n\nconst formatFileSize = (bytes: number): string => {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n};\n\n/**\n * File upload with click + drag-and-drop, extension/size validation, and a\n * requirements hint. Emits `(file, error)` — both nullable. Ported from\n * `onboarding-flow-general`; `react-feather` icons replaced by\n * `@mui/icons-material`, and the `dragOver`/`hasError` style props made transient.\n */\nexport function FileInput({\n label,\n error,\n value,\n onChange,\n placeholder = 'Upload document',\n accept = '.png,.jpg,.jpeg,.pdf',\n maxSize = 10 * 1024 * 1024,\n required = false,\n className,\n showRequirements = true,\n name,\n testId,\n}: FileInputProps) {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [dragOver, setDragOver] = useState(false);\n const reactId = useId();\n const inputId = `${reactId}-input`;\n const errorId = `${reactId}-error`;\n const requirementsId = `${reactId}-requirements`;\n const describedBy = [error ? errorId : null, showRequirements ? requirementsId : null]\n .filter(Boolean)\n .join(' ');\n\n const validateFile = (file: File): string | null => {\n const validTypes = accept.split(',').map(type => type.trim().toLowerCase());\n const fileExtension = '.' + (file.name.split('.').pop() ?? '').toLowerCase();\n\n if (!validTypes.includes(fileExtension)) {\n return `Invalid file type. Accepted types: ${accept}`;\n }\n if (file.size > maxSize) {\n return `File size too large. Maximum size: ${formatFileSize(maxSize)}`;\n }\n return null;\n };\n\n const handleFileSelect = (file: File) => {\n const validationError = validateFile(file);\n if (validationError) {\n onChange(null, validationError);\n return;\n }\n onChange(file, null);\n };\n\n const handleClick = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (file) handleFileSelect(file);\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(false);\n const file = e.dataTransfer.files?.[0];\n if (file) handleFileSelect(file);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange(null, null);\n if (fileInputRef.current) fileInputRef.current.value = '';\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClick();\n }\n };\n\n const acceptedTypesText = accept\n .split(',')\n .map(type => type.trim().toUpperCase().replace('.', ''))\n .join(', ');\n\n return (\n <FileInputContainer className={className}>\n {label && <InputLabel htmlFor={inputId}>{label}</InputLabel>}\n\n <FileInputWrapper\n $hasError={!!error}\n $dragOver={dragOver}\n role=\"button\"\n tabIndex={0}\n aria-label={label ? `${label}. ${placeholder}` : placeholder}\n aria-invalid={!!error}\n aria-describedby={describedBy || undefined}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n <UploadIcon>\n <CloudUploadIcon fontSize=\"small\" />\n </UploadIcon>\n <UploadButton as=\"span\">{placeholder}</UploadButton>\n\n {value && (\n <>\n <FileName>\n {value.name}\n <FileSize> ({formatFileSize(value.size)})</FileSize>\n </FileName>\n <ClearButton\n type=\"button\"\n onClick={handleClear}\n title=\"Clear file\"\n aria-label=\"Clear file\"\n >\n <CloseIcon fontSize=\"small\" />\n </ClearButton>\n </>\n )}\n\n <HiddenFileInput\n ref={fileInputRef}\n id={inputId}\n name={name}\n type=\"file\"\n accept={accept}\n onChange={handleFileChange}\n required={required}\n tabIndex={-1}\n data-testid={testId}\n />\n </FileInputWrapper>\n\n {error && <InputError id={errorId}>{error}</InputError>}\n\n {showRequirements && (\n <FileRequirements id={requirementsId}>\n <Body200>\n File types accepted are {acceptedTypesText}, with a max. size of{' '}\n {formatFileSize(maxSize)}\n </Body200>\n </FileRequirements>\n )}\n </FileInputContainer>\n );\n}\n","import styled from 'styled-components';\n\n/**\n * Themed radio button (a styled native `<input type=\"radio\">`). The fill grows\n * from the theme border color to `colors.primary` when checked.\n */\nexport const RadioInput = styled.input.attrs({ type: 'radio' })`\n appearance: none;\n width: 20px;\n height: 20px;\n border: 2px solid ${({ theme }) => theme.border.color};\n border-radius: 50%;\n margin: 0 0.5rem 0 0;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n transition: all 0.2s;\n\n &:checked {\n border-color: ${({ theme }) => theme.colors.primary};\n border-width: 6px;\n }\n\n &:hover {\n border-color: ${({ theme }) => theme.colors.primary};\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n","import styled from 'styled-components';\n\n/**\n * Themed checkbox (a styled native `<input type=\"checkbox\">`) with a CSS\n * checkmark. Fill uses `colors.primary` when checked.\n */\nexport const CheckboxInput = styled.input.attrs({ type: 'checkbox' })`\n appearance: none;\n width: 20px;\n height: 20px;\n border: 2px solid ${({ theme }) => theme.border.color};\n border-radius: 4px;\n margin: 0 0.5rem 0 0;\n flex-shrink: 0;\n cursor: pointer;\n position: relative;\n transition: all 0.2s;\n\n &:checked {\n border-color: ${({ theme }) => theme.colors.primary};\n background-color: ${({ theme }) => theme.colors.primary};\n }\n\n &:checked::after {\n content: '';\n position: absolute;\n left: 5px;\n top: 1px;\n width: 6px;\n height: 11px;\n border: solid white;\n border-width: 0 2px 2px 0;\n transform: rotate(45deg);\n }\n\n &:hover {\n border-color: ${({ theme }) => theme.colors.primary};\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n`;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport interface StepperStep {\n label: string;\n component?: React.ReactNode;\n}\n\nexport interface StepperProps {\n steps: StepperStep[];\n currentStep: number;\n className?: string;\n testId?: string;\n}\n\nconst StepperContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n`;\n\nconst StepsContainer = styled.div`\n display: flex;\n justify-content: space-between;\n position: relative;\n`;\n\nconst StepContent = styled.div``;\n\nconst Step = styled.div<{ $active?: boolean; $completed?: boolean }>`\n position: relative;\n z-index: 2;\n background: ${({ theme }) => theme.colors.background};\n padding: 0 1rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.5rem;\n transition: all 0.2s ease-in-out;\n padding-bottom: 1rem;\n flex: 1;\n border-bottom: 1px solid;\n border-color: ${({ theme, $active, $completed }) =>\n $active || $completed ? theme.colors.primary : theme.colors.border};\n`;\n\nconst StepNumber = styled.div<{ $active?: boolean; $completed?: boolean }>`\n width: 2rem;\n height: 2rem;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: ${({ theme, $active, $completed }) =>\n $completed ? theme.colors.primary : $active ? 'white' : theme.colors.surface};\n color: ${({ theme, $active, $completed }) =>\n $completed ? theme.colors.background : $active ? theme.colors.primary : theme.colors.secondary};\n font-weight: 500;\n transition: all 0.2s ease-in-out;\n border: 2px solid\n ${({ theme, $active, $completed }) =>\n $active || $completed ? theme.colors.primary : theme.colors.border};\n`;\n\nconst StepLabel = styled.span<{ $active?: boolean }>`\n color: ${({ theme, $active }) => ($active ? theme.colors.primary : theme.colors.secondary)};\n font-size: 0.875rem;\n font-weight: ${({ $active }) => ($active ? 500 : 400)};\n transition: all 0.2s ease-in-out;\n text-align: center;\n white-space: nowrap;\n`;\n\n/** Horizontal stepper with a number/label per step and the active step's content below. */\nexport function Stepper({ steps, currentStep, className, testId }: StepperProps) {\n return (\n <StepperContainer className={className} data-testid={testId}>\n <StepsContainer>\n {steps.map((step, index) => {\n const active = index === currentStep;\n const completed = index < currentStep;\n return (\n <Step\n key={'stepper-step-' + index}\n $active={active}\n $completed={completed}\n aria-current={active ? 'step' : undefined}\n >\n <StepNumber $active={active} $completed={completed}>\n {index + 1}\n </StepNumber>\n <StepLabel $active={active}>{step.label}</StepLabel>\n </Step>\n );\n })}\n </StepsContainer>\n <StepContent>{steps[currentStep]?.component}</StepContent>\n </StepperContainer>\n );\n}\n","import React, { useId, useState } from 'react';\nimport styled from 'styled-components';\n\nexport interface Tab {\n name: string;\n content?: React.ReactNode;\n}\n\nexport interface TabsProps {\n tabs?: Tab[];\n defaultActiveTab?: number;\n className?: string;\n onTabChange?: (index: number) => void;\n testId?: string;\n}\n\nconst TabsContainer = styled.div`\n display: flex;\n flex-direction: column;\n width: 100%;\n`;\n\nconst TabList = styled.div`\n display: flex;\n border-bottom: 1px solid ${({ theme }) => theme.colors.border};\n margin-bottom: 1rem;\n`;\n\nconst TabButton = styled.button<{ $active?: boolean }>`\n background: none;\n border: none;\n padding: 0.75rem 1.5rem;\n cursor: pointer;\n font-size: 0.875rem;\n font-weight: 500;\n color: ${({ theme, $active }) => ($active ? theme.colors.primary : theme.colors.secondary)};\n border-bottom: 2px solid ${({ theme, $active }) => ($active ? theme.colors.primary : 'transparent')};\n transition: all 0.2s ease-in-out;\n position: relative;\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary};\n background-color: ${({ theme }) => theme.colors.surface};\n }\n\n &:focus-visible {\n outline: 2px solid ${({ theme }) => theme.colors.accent};\n outline-offset: -2px;\n }\n`;\n\nconst TabContent = styled.div`\n padding: 1rem 0;\n min-height: 100px;\n`;\n\n/**\n * Tabbed panel managing its own active-tab state. Implements the ARIA tabs\n * pattern (`tablist`/`tab`/`tabpanel` with id linkage) for accessibility.\n */\nexport function Tabs({\n tabs = [],\n defaultActiveTab = 0,\n className,\n onTabChange,\n testId,\n}: TabsProps) {\n const [activeTab, setActiveTab] = useState(defaultActiveTab);\n const baseId = useId();\n\n const handleTabClick = (index: number) => {\n setActiveTab(index);\n onTabChange?.(index);\n };\n\n if (!tabs || tabs.length === 0) {\n return null;\n }\n\n const tabId = (i: number) => `${baseId}-tab-${i}`;\n const panelId = (i: number) => `${baseId}-panel-${i}`;\n\n return (\n <TabsContainer className={className} data-testid={testId}>\n <TabList role=\"tablist\">\n {tabs.map((tab, index) => {\n const active = index === activeTab;\n return (\n <TabButton\n key={`tab-${index}`}\n id={tabId(index)}\n role=\"tab\"\n type=\"button\"\n $active={active}\n aria-selected={active}\n aria-controls={panelId(index)}\n tabIndex={active ? 0 : -1}\n onClick={() => handleTabClick(index)}\n >\n {tab.name}\n </TabButton>\n );\n })}\n </TabList>\n\n <TabContent role=\"tabpanel\" id={panelId(activeTab)} aria-labelledby={tabId(activeTab)}>\n {tabs[activeTab]?.content}\n </TabContent>\n </TabsContainer>\n );\n}\n","import React from 'react';\nimport { Box, CircularProgress } from '@mui/material';\n\nexport interface LoaderProps {\n className?: string;\n /** Spinner diameter in px. */\n size?: number;\n /** Accessible label announced to screen readers. */\n label?: string;\n testId?: string;\n}\n\n/** Centered indeterminate spinner (MUI `CircularProgress`). */\nexport function Loader({ className, size, label = 'Loading', testId }: LoaderProps) {\n return (\n <Box\n className={className}\n data-testid={testId}\n sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }}\n >\n <CircularProgress size={size} aria-label={label} />\n </Box>\n );\n}\n","import React, { useId, useState } from 'react';\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\n\nexport interface DotsMenuOption {\n label: string;\n action: () => void;\n}\n\nexport interface DotsMenuProps {\n options: DotsMenuOption[];\n iconSize?: 'small' | 'medium' | 'large';\n /** Accessible label for the trigger button. */\n ariaLabel?: string;\n testId?: string;\n}\n\n/**\n * Overflow (\"kebab\") menu: an icon button opening a list of actions. IDs are\n * generated with `useId()` so multiple instances on a page stay unique\n * (the source hardcoded a single id).\n */\nexport function DotsMenu({\n options,\n iconSize = 'medium',\n ariaLabel = 'more',\n testId,\n}: DotsMenuProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const open = Boolean(anchorEl);\n const baseId = useId();\n const buttonId = `${baseId}-button`;\n const menuId = `${baseId}-menu`;\n\n const handleClick = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleOptionClick = (action: () => void) => {\n action();\n handleClose();\n };\n\n return (\n <>\n <IconButton\n aria-label={ariaLabel}\n id={buttonId}\n data-testid={testId}\n aria-controls={open ? menuId : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? 'true' : undefined}\n onClick={handleClick}\n size={iconSize}\n >\n <MoreVertIcon />\n </IconButton>\n <Menu\n id={menuId}\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n slotProps={{\n list: { 'aria-labelledby': buttonId },\n paper: { style: { maxHeight: 200, width: '20ch' } },\n }}\n >\n {options.map((option, idx) => (\n <MenuItem key={option.label + idx} onClick={() => handleOptionClick(option.action)}>\n {option.label}\n </MenuItem>\n ))}\n </Menu>\n </>\n );\n}\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { ThemeProvider } from '../theme';\nimport type { Branding } from '../theme';\nimport { Body100, Button, ButtonContainer, StatusTag } from '../styles/layout';\nimport { FormCheckboxLabel } from '../styles/forms';\nimport { CheckboxInput } from '../components/CheckboxInput';\nimport { DropDown } from '../components/DropDown';\nimport { Stepper } from '../components/Stepper';\nimport { TextInput } from '../components/TextInput';\n\nexport interface PreviewProps {\n /** Partner branding to render the sample with. Omit for the default theme. */\n branding?: Branding;\n className?: string;\n}\n\nconst PreviewCard = styled.div`\n display: flex;\n gap: 2rem;\n padding: 1.5rem;\n background: ${({ theme }) => theme.colors.background};\n border: ${({ theme }) => theme.border.width} solid ${({ theme }) => theme.border.color};\n border-radius: ${({ theme }) => theme.border.radius};\n`;\n\nconst MainColumn = styled.div`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n flex: 1;\n min-width: 0;\n`;\n\nconst HeaderRow = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1rem;\n`;\n\nconst SideColumn = styled.div`\n flex: 1;\n min-width: 0;\n`;\n\nfunction PreviewContent() {\n const [name, setName] = useState('Acme Corporation');\n const [plan, setPlan] = useState('growth');\n const [autopay, setAutopay] = useState(true);\n\n return (\n <PreviewCard data-testid=\"oatfi-ui-preview\">\n <MainColumn>\n <HeaderRow>\n <Body100 className=\"bold\">Partner</Body100>\n <StatusTag className=\"success small\">Active</StatusTag>\n </HeaderRow>\n\n <TextInput label=\"Business name\" value={name} onChange={setName} />\n <DropDown\n label=\"Plan\"\n value={plan}\n onChange={setPlan}\n options={[\n { value: 'starter', label: 'Starter' },\n { value: 'growth', label: 'Growth' },\n { value: 'scale', label: 'Scale' },\n ]}\n />\n <FormCheckboxLabel>\n <CheckboxInput checked={autopay} onChange={e => setAutopay(e.target.checked)} />\n Enable automatic payments\n </FormCheckboxLabel>\n\n <ButtonContainer>\n <Button className=\"secondary\">Cancel</Button>\n <Button>Save changes</Button>\n </ButtonContainer>\n </MainColumn>\n\n <SideColumn>\n <Stepper\n currentStep={1}\n steps={[{ label: 'Connect' }, { label: 'Verify' }, { label: 'Done' }]}\n />\n </SideColumn>\n </PreviewCard>\n );\n}\n\n/**\n * A self-contained branded snapshot of the OatFi UI kit — a header, a few\n * inputs, buttons, and a stepper. Wraps its own `ThemeProvider`, so a consumer\n * (e.g. the dashboard's Branding settings page) drops it in and passes partner\n * `branding` without setting up theming itself.\n */\nexport function Preview({ branding, className }: PreviewProps) {\n return (\n <ThemeProvider branding={branding}>\n <div className={className}>\n <PreviewContent />\n </div>\n </ThemeProvider>\n );\n}\n"],"names":["StyledThemeProvider","MuiThemeProviderBase","useStyledTheme","formatDisplayValue","InputLabel","IconButton","MenuItem"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oatfi/ui",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Shared UI primitives, theme contract, and Preview component for OatFi embedded components",
5
5
  "license": "UNLICENSED",
6
6
  "author": "Oat Financial",