@useloops/design-system
Version:
The official React based Loops design system
1,610 lines (1,535 loc) • 89.6 kB
TypeScript
import * as react from 'react';
import react__default, { FunctionComponent, PropsWithChildren, ReactElement, MouseEventHandler, ComponentProps, Dispatch, SetStateAction, ReactNode, ChangeEvent, FC } from 'react';
import * as _mui_material from '@mui/material';
import { SxProps, Theme, CSSObject, ButtonProps as ButtonProps$1, TypographyProps as TypographyProps$1, BoxProps, PaperProps, PopperProps as PopperProps$1, ClickAwayListenerProps, FadeProps, SkeletonProps as SkeletonProps$1, AvatarProps as AvatarProps$1, AvatarGroupProps as AvatarGroupProps$1, LinkProps as LinkProps$1, CheckboxProps as CheckboxProps$1, ContainerProps, MenuProps as MenuProps$1, MenuItemProps as MenuItemProps$1, FormControlLabelProps as FormControlLabelProps$1, IconButtonProps as IconButtonProps$1, TooltipProps as TooltipProps$1, ButtonGroupProps, TextFieldProps as TextFieldProps$1, CircularProgressProps, LinearProgressProps, SelectProps as SelectProps$1, SelectChangeEvent, SwitchProps as SwitchProps$1, SvgIconProps, AccordionProps as AccordionProps$1, AccordionSummaryProps, AccordionDetailsProps, Breakpoint, PaletteMode, Direction } from '@mui/material';
import * as react_jsx_runtime from 'react/jsx-runtime';
import { PopupState } from 'material-ui-popup-state/hooks';
import { Theme as Theme$1, SxProps as SxProps$1 } from '@mui/material/styles';
import { MotionProps } from 'framer-motion';
import { SemanticColor as SemanticColor$1, IconName as IconName$2 } from 'systems/BrandCore';
import { IconName as IconName$1 } from 'systems/BrandCore/Icon';
import { KpiIndicatorProps as KpiIndicatorProps$1 } from 'systems/Platform/KpiIndicator';
import { BoxProps as BoxProps$1 } from '@mui/material/Box';
import { IconProps as IconProps$1 } from 'systems/BrandCore/Icon/Icon';
import { TypographyProps as TypographyProps$2, CheckboxProps as CheckboxProps$2 } from 'systems/WebCore';
import { TooltipProps as TooltipProps$2 } from 'systems/WebCore/Tooltip';
import { CommentEmotion } from 'utils/EmojiCommentList';
import { KpiIndicatorColor as KpiIndicatorColor$1 } from 'systems/Platform/KpiIndicator/utils';
import { ChipProps } from '@mui/material/Chip';
import { SubmitHandler } from 'react-hook-form';
import { NumericFormatProps } from 'react-number-format';
import * as _emotion_styled from '@emotion/styled';
import * as _mui_system from '@mui/system';
import { UniqueIdentifier } from '@dnd-kit/core';
import { Mark } from '@mui/material/Slider/useSlider.types';
import { LazyLoadImageProps } from 'react-lazy-load-image-component';
import * as _mui_material_OverridableComponent from '@mui/material/OverridableComponent';
interface ColorRange$1 {
0: string;
50?: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
950?: string;
1000: string;
1100?: string;
}
interface ColorRangeAlpha$1 {
0: string;
0.01: string;
1: string;
2: string;
3: string;
4: string;
5: string;
}
declare enum FontWeight {
DEFAULT = 400,
BOLD = 500
}
interface SemanticColor {
light: {
surface: {
sunken: string | undefined;
default: string | undefined;
raised: string | undefined;
float: string | undefined;
overlay: string | undefined;
scrim: string | undefined;
transparent: string | undefined;
};
interaction: {
none: string | undefined;
hover: string | undefined;
press: string | undefined;
hoverOnDark: string | undefined;
pressOnDark: string | undefined;
disabled: string | undefined;
};
stroke: {
default: string | undefined;
light: string | undefined;
focus: string | undefined;
disabled: string | undefined;
};
text: {
primary: string | undefined;
secondary: string | undefined;
placeholder: string | undefined;
disabled: string | undefined;
link: string | undefined;
linkHover: string | undefined;
primaryInverted: string | undefined;
secondaryInverted: string | undefined;
placeholderInverted: string | undefined;
disabledInverted: string | undefined;
positive: string | undefined;
negative: string | undefined;
lockedWhite: string | undefined;
};
icon: {
primary: string | undefined;
secondary: string | undefined;
disabled: string | undefined;
primaryInverted: string | undefined;
secondaryInverted: string | undefined;
disabledInverted: string | undefined;
positive: string | undefined;
negative: string | undefined;
lockedWhite: string | undefined;
link: string | undefined;
linkHover: string | undefined;
};
input: {
default: string | undefined;
disabled: string | undefined;
};
skeleton: {
default: string | undefined;
};
data: {
sentimentVeryPositive: string | undefined;
sentimentPositive: string | undefined;
sentimentNegative: string | undefined;
sentimentVeryNegative: string | undefined;
sentimentNeutral: string | undefined;
};
};
dark: {
surface: {
sunken: string | undefined;
default: string | undefined;
raised: string | undefined;
float: string | undefined;
overlay: string | undefined;
scrim: string | undefined;
transparent: string | undefined;
};
interaction: {
none: string | undefined;
hover: string | undefined;
press: string | undefined;
hoverOnDark: string | undefined;
pressOnDark: string | undefined;
disabled: string | undefined;
};
stroke: {
default: string | undefined;
light: string | undefined;
focus: string | undefined;
disabled: string | undefined;
};
text: {
primary: string | undefined;
secondary: string | undefined;
placeholder: string | undefined;
disabled: string | undefined;
link: string | undefined;
linkHover: string | undefined;
primaryInverted: string | undefined;
secondaryInverted: string | undefined;
placeholderInverted: string | undefined;
disabledInverted: string | undefined;
positive: string | undefined;
negative: string | undefined;
lockedWhite: string | undefined;
};
icon: {
primary: string | undefined;
secondary: string | undefined;
disabled: string | undefined;
primaryInverted: string | undefined;
secondaryInverted: string | undefined;
disabledInverted: string | undefined;
positive: string | undefined;
negative: string | undefined;
lockedWhite: string | undefined;
link: string | undefined;
linkHover: string | undefined;
};
input: {
default: string | undefined;
disabled: string | undefined;
};
skeleton: {
default: string | undefined;
};
data: {
sentimentVeryPositive: string | undefined;
sentimentPositive: string | undefined;
sentimentNegative: string | undefined;
sentimentVeryNegative: string | undefined;
sentimentNeutral: string | undefined;
};
};
}
declare const neutralRamp: {
light: {
0: string;
50: string | undefined;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
950: string | undefined;
1000: string;
1100: string | undefined;
};
dark: {
0: string;
50: string | undefined;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
950: string | undefined;
1000: string;
1100: string | undefined;
};
};
declare const generateRamp: (color: ColorRange$1) => {
light: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
dark: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
};
declare const purpleRamp: {
light: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
dark: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
};
declare const redRamp: {
light: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
dark: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
};
declare const peachRamp: {
light: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
dark: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
};
declare const yellowRamp: {
light: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
dark: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
};
declare const blueRamp: {
light: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
dark: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
};
declare const greenRamp: {
light: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
dark: {
0: string;
100: string;
200: string;
300: string;
400: string;
500: string;
600: string;
700: string;
800: string;
900: string;
1000: string;
};
};
declare const neutral: ColorRange$1;
declare const darkNeutral: ColorRange$1;
declare const neutralAlpha: ColorRangeAlpha$1;
declare const darkNeutralAlpha: ColorRangeAlpha$1;
declare const purple: ColorRange$1;
declare const red: ColorRange$1;
declare const peach: ColorRange$1;
declare const yellow: ColorRange$1;
declare const blue: ColorRange$1;
declare const green: ColorRange$1;
type GenericSizeMap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl';
declare const breakpoints: {
sm: number;
md: number;
lg: number;
lgNav: number;
xl: number;
xxl: number;
};
declare const space: {
0: number;
25: number;
50: number;
100: number;
150: number;
200: number;
300: number;
350: number;
400: number;
500: number;
600: number;
800: number;
1000: number;
2000: number;
};
declare const base: number;
declare const margin: {
none: number;
xs: number;
sm: number;
md: number;
lg: number;
xl: number;
xxl: number;
xxxl: number;
};
declare const padding: {
none: number;
xs: number;
sm: number;
md: number;
lg: number;
xl: number;
};
declare const radius: {
none: number;
xs: number;
sm: number;
md: number;
lg: number;
xl: number;
round: number;
};
declare const elevation: {
raised: string;
float: string;
overlay: string;
};
declare const elevationFilter: {
raised: string;
float: string;
overlay: string;
};
declare const boxShadow: {
input: {
focus: string;
};
};
declare const easing: {
default: string;
input: string;
};
declare const semantic: SemanticColor;
declare const fonts: {
Domaine: {
name: string;
default: {
fileName: string;
weight: FontWeight;
};
bold: {
fileName: string;
weight: FontWeight;
};
};
FoundersGrotesk: {
name: string;
default: {
fileName: string;
weight: FontWeight;
};
bold: {
fileName: string;
weight: FontWeight;
};
};
FontStack: {
Serif: string;
SansSerif: string;
};
};
declare const iconSizeMap: Record<string, number>;
interface IconProps {
color?: string;
name: IconName;
size?: number;
sx?: SxProps<Theme>;
}
declare const Icon: react.ForwardRefExoticComponent<IconProps & react.RefAttributes<SVGSVGElement>>;
type IconName = 'payment-card-visa' | 'payment-card-mastercard' | 'payment-card-amex' | 'brand-wordmark' | 'brand-logomark' | 'menu' | 'menu-open' | 'chevron-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'arrow-left' | 'arrow-right' | 'search' | 'close' | 'more-horizontal' | 'more-vertical' | 'home' | 'home-filled' | 'settings' | 'controls' | 'help' | 'filter-list' | 'sort' | 'open-in-new' | 'nav-toggle' | 'nav-collapse' | 'nav-expand' | 'expand-window' | 'reduce-window' | 'redo' | 'hand' | 'play-circle' | 'play-video' | 'email' | 'document' | 'folder' | 'attach-file' | 'save' | 'image' | 'image-add' | 'image-search' | 'image-no' | 'upload' | 'upload-cloud' | 'upload-cloud-filled' | 'time' | 'time-filled' | 'zoom-in' | 'zoom-out' | 'add' | 'remove' | 'dashboard' | 'list-view' | 'grid-view' | 'grid-view-filled' | 'grid-view-small' | 'grid-view-large' | 'eye' | 'eye-off' | 'notification' | 'pound' | 'euro' | 'dollar' | 'play' | 'pause' | 'stop' | 'shuffle' | 'replay' | 'volume-mute' | 'volume-high' | 'volume-low' | 'test' | 'test-pending' | 'test-edit' | 'data-bar' | 'label' | 'send' | 'comment' | 'comment-filled' | 'chat' | 'microphone' | 'keyboard' | 'translate' | 'error' | 'warning' | 'lightbulb' | 'thumb-up' | 'info' | 'info-filled' | 'cancel' | 'compress' | 'expand' | 'unfold' | 'drag-handle' | 'focus' | 'drag-select' | 'lock' | 'copy' | 'edit' | 'delete' | 'check' | 'check-circle' | 'check-circle-filled' | 'alert-dot' | 'pin' | 'pin-filled' | 'link' | 'user-search' | 'crosshair' | 'fingerprint' | 'star' | 'star-half' | 'star-filled' | 'thumbs-up-down' | 'emoticon' | 'linear-scale' | 'check-double' | 'rank' | 'sentiment-double-down' | 'sentiment-down' | 'sentiment-flat' | 'sentiment-up' | 'sentiment-double-up' | 'ai' | 'work' | 'gift' | 'social-medium-single-colour' | 'social-linkedin-single-colour' | 'social-youtube-single-colour' | 'social-linkedin-full-colour' | 'social-google-full-colour' | 'badge-tick' | 'badge-tick-in-circle' | 'badge-cross' | 'badge-cross-in-circle' | 'badge-hyphen' | 'badge-hyphen-in-circle' | 'badge-question' | 'badge-question-in-circle' | 'number-0' | 'number-1' | 'number-2' | 'number-3' | 'number-4' | 'number-5' | 'number-6' | 'number-7' | 'number-8' | 'number-9' | 'number-10' | 'number-11' | 'number-12' | 'number-13' | 'number-14' | 'number-15' | 'number-16' | 'number-17' | 'number-18' | 'number-19' | 'number-20' | 'number-21' | 'number-22' | 'number-23' | 'number-24' | 'number-25' | 'number-26' | 'number-27' | 'number-28' | 'number-29' | 'number-30' | 'number-31' | 'number-32' | 'number-33' | 'number-34' | 'number-35' | 'number-36' | 'number-37' | 'number-38' | 'number-39' | 'number-40' | 'number-41' | 'number-42' | 'number-43' | 'number-44' | 'number-45' | 'number-46' | 'number-47' | 'number-48' | 'number-49' | 'number-50';
interface CustomTheme {
palette: {
black: string;
white: string;
neutral: ColorRange;
neutralAlpha: ColorRangeAlpha;
purple: ColorRange;
red: ColorRange;
peach: ColorRange;
yellow: ColorRange;
blue: ColorRange;
green: ColorRange;
icon: {
primary: string;
secondary: string;
disabled: string;
primaryInverted: string;
secondaryInverted: string;
disabledInverted: string;
lockedWhite: string;
link: string;
linkHover: string;
};
interaction: {
none: string;
hover: string;
press: string;
hoverOnDark: string;
pressOnDark: string;
disabled: string;
};
stroke: {
default: string;
light: string;
focus: string;
disabled: string;
};
surface: {
default: string;
sunken: string;
raised: string;
float: string;
overlay: string;
scrim: string;
transparent: string;
};
text: {
primary: string;
secondary: string;
placeholder: string;
disabled: string;
link: string;
linkHover: string;
primaryInverted: string;
secondaryInverted: string;
placeholderInverted: string;
disabledInverted: string;
positive: string;
negative: string;
lockedWhite: string;
};
input: {
default: string;
disabled: string;
};
skeleton: {
default: string;
};
data: {
sentimentVeryPositive: string;
sentimentPositive: string;
sentimentNeutral: string;
sentimentNegative: string;
sentimentVeryNegative: string;
};
body: string;
};
margin: {
none: number;
xs: number;
sm: number;
md: number;
lg: number;
xl: number;
xxl: number;
xxxl: number;
};
padding: {
none: number;
xs: number;
sm: number;
md: number;
lg: number;
xl: number;
};
radius: {
none: number;
xs: number;
sm: number;
md: number;
lg: number;
xl: number;
round: number;
};
elevation: {
raised: string;
float: string;
overlay: string;
};
elevationFilter: {
raised: string;
float: string;
overlay: string;
};
easing: {
default: string;
input: string;
};
boxShadow: {
input: {
focus: string;
handle: string;
};
};
shape: {
borderRadius: number;
hotspot: {
active: number;
default: number;
};
};
typography: {
headline: {
xxs: string;
xs: string;
sm: string;
md: string;
lg: string;
xl: string;
xxl: string;
xxxl: string;
};
body: {
xxs: string;
xs: string;
sm: string;
md: string;
lg: string;
xl: string;
xxl: string;
xxxl: string;
};
};
}
interface PlanHeading {
heading: string;
pricing: string;
}
interface PlanRow {
heading: string;
description: string;
tier1: string;
tier2: string;
tier3: string;
tier4: string;
}
interface PlanFeatureTableData {
headings: {
'01-tier1': PlanHeading;
'02-tier2': PlanHeading;
'03-tier3': PlanHeading;
'04-tier4': PlanHeading;
};
rows: {
'01-servicing': PlanRow;
'02-respondents': PlanRow;
'03-questions': PlanRow;
'04-ai': PlanRow;
'05-demographics': PlanRow;
'06-training': PlanRow;
'07-invite': PlanRow;
'08-email': PlanRow;
'09-beta': PlanRow;
'10-sso': PlanRow;
'11-minimum': PlanRow;
};
}
interface PlanFeatureTableProps {
currencySymbol: string;
data?: PlanFeatureTableData;
loading?: boolean;
tier1MinimumTerm: string;
tier1Price: number | string;
tier1QuestionLimit: number | string;
tier1RespondentPrice: number | string;
tier2MinimumTerm: string;
tier2Price: number | string;
tier2QuestionLimit: number | string;
tier2RespondentPrice: number | string;
tier3MinimumTerm: string;
tier3Price: number | string;
tier3QuestionLimit: number | string;
tier3RespondentPrice: number | string;
tier4MinimumTerm: string;
tier4Price: number | string;
tier4QuestionLimit: number | string;
tier4RespondentPrice: number | string;
variation?: 'default' | 'platform';
}
declare const PlanFeatureTable: FunctionComponent<PlanFeatureTableProps>;
type Section = 'headerHeight' | 'bodyHeight' | 'respondentCardHeight' | 'bottomHeight';
interface PlanTierCardProps {
amount: string;
billingType?: string;
body: string;
ctaEvent?: (heading: string) => void;
ctaLink?: string;
ctaTarget?: string;
ctaText: string;
ctaVariation?: 'primary' | 'secondary' | 'outlined';
currencySymbol: string;
currentPlan?: boolean;
features?: string[];
heading: string;
label?: string;
loading?: boolean;
perMonth: string;
respondentsTitle?: string;
respondentsFeatures?: string[];
saving?: string;
sectionHeights: Record<Section, number>;
updateSectionHeight?: (section: Section, height: number) => void;
}
declare const PlanTierCard: FunctionComponent<PlanTierCardProps>;
interface TickGroupProps {
heading: string;
ticks: string[];
}
declare const TickGroup: FunctionComponent<TickGroupProps>;
interface AiContentContainerProps extends PropsWithChildren {
sx?: SxProps<Theme>;
widthLockUp?: boolean;
}
declare const AiContentContainer: FunctionComponent<AiContentContainerProps>;
declare const subtle: (theme: Theme, destructive?: boolean) => {
backgroundColor: string;
color: string;
fontWeight: number;
'&:focus:before': {
boxShadow: string;
};
'&:focus-visible': {
boxShadow: string;
};
};
declare const outlined$1: (theme: Theme, destructive?: boolean) => {
backgroundColor: string;
color: string;
border: string;
'&:focus:before': {
boxShadow: string;
};
'&:hover': {
backgroundColor: string;
};
'&:focus-visible': {
boxShadow: string;
};
'&:active': {
backgroundColor: string;
};
'&:disabled': {
border: string;
};
};
declare const secondary: (theme: Theme, destructive?: boolean) => {
backgroundColor: any;
color: string;
'&:focus:before': {
boxShadow: string;
};
'&:hover': {
backgroundColor: any;
};
'&:focus-visible': {
boxShadow: string;
};
'&:active': {
backgroundColor: any;
};
};
declare const primary: (theme: Theme, destructive?: boolean) => {
backgroundColor: any;
color: string;
'&:focus:before': {
boxShadow: string;
};
'&:hover': {
backgroundColor: any;
color: string;
'&::before': {
backgroundColor: string;
};
};
'&:focus-visible': {
boxShadow: string;
'&::before': {
backgroundColor: string;
};
};
'&:active': {
backgroundColor: any;
color: string;
'&::before': {
backgroundColor: string;
};
};
};
declare const buttonInteraction: (theme: Theme, active?: boolean) => {
backgroundColor: string;
color: string;
fontWeight: number;
'&:focus:before': {
boxShadow: string;
};
'&:focus-visible': {
boxShadow: string;
};
'&:hover': {
backgroundColor: string;
};
'&:focus': {
backgroundColor: string;
};
'&:active': {
backgroundColor: string;
};
cursor: string;
'&:disabled': {
backgroundColor: string;
color: string;
};
};
type ButtonSizing = Exclude<GenericSizeMap, 'none'>;
declare const buttonHeightMap: {
xs: number;
sm: number;
md: number;
lg: number;
xl: number;
xxl: number;
xxxl: number;
};
declare const getIconSizing$1: (sizing: ButtonSizing) => CSSObject;
declare const getButtonTypography: (sizing: ButtonSizing) => CSSObject;
declare const getButtonSizing: (sizing: ButtonSizing) => CSSObject;
interface ButtonBaseProps extends ButtonProps$1 {
loading?: boolean;
sizing: ButtonSizing;
}
declare const ButtonBase: ({ children, loading, sizing, ...rest }: ButtonBaseProps) => react_jsx_runtime.JSX.Element;
interface ButtonProps extends Partial<ButtonBaseProps> {
variation?: 'primary' | 'secondary' | 'outlined' | 'subtle';
destructive?: boolean;
href?: string;
fullWidth?: boolean;
endIcon?: ReactElement;
startIcon?: ReactElement;
}
declare const Button: FunctionComponent<ButtonProps>;
interface TypographyProps extends Omit<TypographyProps$1, 'ref'> {
clamp?: number;
component: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p';
type?: 'default' | 'button';
variation?: 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl';
weight?: 'default' | 'bold';
sx?: SxProps<Theme>;
}
declare const Typography: react.ForwardRefExoticComponent<TypographyProps & react.RefAttributes<HTMLHeadingElement | HTMLParagraphElement>>;
interface ExpandableTypographyClampProps extends Partial<TypographyProps> {
onShowMoreClick?: ButtonProps['onClick'];
onShowLessClick?: ButtonProps['onClick'];
slotProps?: {
gradientBox?: {
background?: string | ((theme: Theme) => string);
} & BoxProps;
showMoreButton?: ButtonProps;
showLessButton?: ButtonProps;
};
}
declare const ExpandableTypographyClamp: react__default.FC<ExpandableTypographyClampProps>;
type SurfaceVariation = 'default' | 'sunken' | 'raised' | 'overlay' | 'float';
type BorderRadius = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
interface SurfaceProps extends PaperProps {
variation?: SurfaceVariation;
borderradius?: BorderRadius;
active?: boolean;
}
declare const Surface: react.ForwardRefExoticComponent<Omit<SurfaceProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
type BindOn = 'trigger' | 'contextMenu' | 'toggle' | 'hover' | 'focus' | 'doubleClick';
interface PopperProps {
popperProps?: Partial<PopperProps$1>;
clickAwayListenerProps?: Partial<Omit<ClickAwayListenerProps, 'onClickAway'> & {
onClickAway?: (event: MouseEvent | TouchEvent, state: PopupState) => void;
}>;
transitionFadeProps?: Pick<FadeProps, 'easing' | 'timeout' | 'appear' | 'enter' | 'exit'>;
surfaceProps?: SurfaceProps;
bindOn?: BindOn[];
trigger: ReactElement;
children: ReactElement;
state?: PopupState;
}
declare const Popper: ({ bindOn, trigger, children, state, ...props }: PopperProps) => react_jsx_runtime.JSX.Element;
interface MenuItemProps {
baseState?: PopupState;
label?: string;
active?: boolean;
danger?: boolean;
divider?: boolean;
heading?: boolean;
selected?: boolean;
disabled?: boolean;
closeOnClick?: boolean;
onClick?: MouseEventHandler<HTMLButtonElement>;
children?: MenuItemProps[];
width?: number;
startIcon?: IconName;
slotProps?: {
startIcon?: Partial<Omit<IconProps, 'name'>>;
};
}
interface MenuProps extends PropsWithChildren {
menuItems?: MenuItemProps[];
offset?: number[];
placement?: PopperProps$1['placement'];
state?: PopupState;
parentState?: PopupState;
bindOn?: PopperProps['bindOn'];
trigger: ReactElement;
width?: number;
slotProps?: {
popper?: PopperProps['popperProps'];
surface?: SurfaceProps;
};
}
declare const Menu: FunctionComponent<MenuProps>;
interface SkeletonProps {
animation?: SkeletonProps$1['animation'];
children?: SkeletonProps$1['children'];
height?: SkeletonProps$1['height'];
sx?: SkeletonProps$1['sx'];
variant?: SkeletonProps$1['variant'];
width?: SkeletonProps$1['width'];
component?: SkeletonProps$1['component'];
ref?: SkeletonProps$1['ref'];
}
declare const Skeleton: FunctionComponent<SkeletonProps>;
type AISummaryProps = {
heading?: string;
body?: string;
bodyLineClamp?: number;
attribution?: string;
menuItems?: MenuProps['menuItems'];
onStartChatClick?: () => void;
onRetryClick?: () => void;
loading?: boolean;
loadingMessage?: string;
error?: boolean;
slotProps?: {
heading?: Omit<TypographyProps, 'children'>;
retry?: Omit<TypographyProps, 'onClick'>;
expandableTypographyClamp?: Omit<ExpandableTypographyClampProps, 'children'>;
attributionIcon?: ComponentProps<typeof Icon>;
attribution?: Omit<TypographyProps, 'children'>;
menu?: Omit<MenuProps, 'menuItems'>;
startChatButton?: Omit<ButtonProps, 'onClick'>;
skeleton?: SkeletonProps;
};
sx?: SxProps<Theme>;
};
declare const AISummary: react.ForwardRefExoticComponent<AISummaryProps & react.RefAttributes<HTMLDivElement>>;
interface AiWrittenByLockUpProps {
sx?: SxProps<Theme>;
}
declare const AiWrittenByLockUp: FunctionComponent<AiWrittenByLockUpProps>;
declare const emailValidation: {
pattern: {
value: RegExp;
message: string;
};
};
declare const chooseArticle: (word: string) => string;
declare const defaultInputValidation: (inputName?: string, isRequired?: boolean, maxLength?: number) => {
required?: string | undefined;
maxLength: {
value: number;
message: string;
};
};
declare const DEFAULT_MAX_INPUT_LENGTH: number;
declare const passwordValidation: (min?: number) => {
minLength: {
value: number;
message: string;
};
equal: {
value: string;
message: string;
};
};
interface BackgroundOptions {
texture?: 'none' | 'noise1';
gradient?: 'tone1' | 'tone2' | 'tone3' | 'tone3_lowOpacity' | 'tone4';
}
declare const backgroundCreator: (theme: Theme, options: BackgroundOptions) => string;
type SupportedCurrency = 'gbp' | 'eur' | 'usd';
type SupportedFrequency = 'monthly' | 'annually';
interface AnnualControllerProps {
body: string;
currency: string;
hideCurrency?: boolean;
changeCurrencyEvent?: (value: string) => void;
frequency: string;
heading: string;
setCurrency?: Dispatch<SetStateAction<SupportedCurrency>>;
setFrequency?: Dispatch<SetStateAction<SupportedFrequency>>;
togglePayAnnuallyEvent?: () => void;
selections?: {
value: SupportedCurrency;
label: string;
}[];
}
declare const AnnualController: FunctionComponent<AnnualControllerProps>;
interface AccordionProps {
heading?: string;
items?: {
heading: string;
body: ReactNode;
}[];
}
declare const Accordion: FunctionComponent<AccordionProps>;
interface AuthFormHeaderProps {
logo?: ReactElement | false | undefined;
headerText?: string;
subText?: ReactElement | string;
}
declare const AuthFormHeader: FunctionComponent<AuthFormHeaderProps>;
interface AvatarProps extends AvatarProps$1 {
sizing?: 'xxs' | 'xs' | 'sm' | 'lg';
}
declare const Avatar: FunctionComponent<AvatarProps>;
interface AvatarGroupProps extends AvatarGroupProps$1 {
variation?: 'primary';
max?: number;
sx: SxProps<Theme>;
}
declare const AvatarGroup: FunctionComponent<AvatarGroupProps>;
interface BadgeProps extends PropsWithChildren {
}
declare const Badge: FunctionComponent<BadgeProps>;
interface BrandBadgeProps {
color?: 'purple' | 'peach' | 'red' | 'default';
name: 'emotion-meh' | 'emotion-good' | 'emotion-great' | 'understanding-unknown' | 'understanding-low' | 'understanding-good' | 'understanding-great' | 'property-secure' | 'property-private';
size?: number;
sx?: SxProps;
}
declare const BrandBadge: FunctionComponent<BrandBadgeProps>;
interface StyledLinkProps extends LinkProps$1 {
disabled?: boolean | undefined;
}
interface LinkProps {
children: React.ReactNode;
href?: string;
target?: string;
onClick?: StyledLinkProps['onClick'];
disabled?: boolean;
sx?: SxProps<Theme>;
underline?: 'none' | 'hover' | 'always' | undefined;
noWrap?: boolean;
component?: any;
rel?: any;
title?: string;
}
declare const Link: FunctionComponent<LinkProps>;
type BreadcrumbLink = {
label: string;
} & ({
href?: LinkProps['href'];
onClick?: never;
} | {
href?: never;
onClick?: LinkProps['onClick'];
});
interface BreadcrumbProps {
links?: BreadcrumbLink[];
}
declare const Breadcrumb: FunctionComponent<BreadcrumbProps>;
interface BulletGraphicProps {
name: 'placeholder' | 'variant-test' | 'worldwide' | 'celebrate-collaborate' | 'ai' | 'many-media' | 'qual-and-quant' | 'alert' | 'comment';
size?: number;
sx?: SxProps;
}
declare const BulletGraphic: FunctionComponent<BulletGraphicProps>;
interface StyledCheckboxProps extends CheckboxProps$1 {
sizing?: 'default' | 'lg';
}
interface CheckboxProps {
sizing?: StyledCheckboxProps['sizing'];
checked?: boolean;
indeterminate?: StyledCheckboxProps['indeterminate'];
checkboxLabel?: string | ReactElement;
internalChange?: () => void;
onChange?: (event: React.SyntheticEvent<Element, Event>, checked: boolean) => void;
inputRef?: React.RefObject<HTMLInputElement>;
defaultChecked?: boolean;
disabled?: boolean;
id?: string;
required?: boolean;
value?: boolean;
}
declare const Checkbox: FunctionComponent<CheckboxProps>;
interface CheckboxGroupOption {
label: string;
value: string;
exclusive?: boolean;
}
interface CheckboxGroupOther {
label?: string;
enabled?: boolean;
placeholder?: string;
name?: string;
defaultValue?: string;
}
interface CheckboxGroupProps {
options: CheckboxGroupOption[];
value: string[];
sizing?: CheckboxProps['sizing'];
onChange: (arrayIds: string[]) => void;
id: string;
inputRef?: any;
other?: CheckboxGroupOther;
internalChange?: () => void;
}
declare const CheckboxGroup: FunctionComponent<CheckboxGroupProps>;
interface ColorBackgroundContainerProps {
sx?: SxProps<Theme>;
children: ContainerProps['children'];
texture?: 'none' | 'noise1';
gradient?: 'tone1' | 'tone2' | 'tone3' | 'tone3_lowOpacity' | 'tone4';
}
declare const ColorBackgroundContainer: FunctionComponent<ColorBackgroundContainerProps>;
type InputSizing = Exclude<GenericSizeMap, 'none'>;
type SelectOption = {
label: string;
value: string;
};
type GroupSelectOption = SelectOption & {
group: string;
};
interface CreatableAutocompleteOption {
label: string | undefined;
value: string | undefined;
}
interface CreatableAutocompleteProps {
options: CreatableAutocompleteOption[];
value?: string | null;
onChange?: (value: string) => void;
internalChange?: () => void;
placeholder?: string;
sizing?: InputSizing;
disabled?: boolean;
fullWidth?: boolean;
}
declare const CreatableAutocomplete: FunctionComponent<CreatableAutocompleteProps>;
type CustomFieldProps = {
inputField: react__default.FC<{
onChange: (data: unknown) => void;
}>;
onChange?: (data: unknown) => void;
defaultValue?: unknown;
value?: unknown;
placeholder?: string;
transformValue?: (value?: unknown) => void;
internalChange?: () => void;
};
declare const CustomField: FunctionComponent<CustomFieldProps>;
interface DifferentialProps {
labelLeft: string;
labelRight: string;
labelCenter?: string;
disabled?: boolean;
value?: string;
onChange?: (event: ChangeEvent<HTMLInputElement>, checked: boolean) => void;
internalChange?: () => void;
}
declare const Differential: FunctionComponent<DifferentialProps>;
interface DropdownMenuItemProps {
icon?: ReactElement;
label: string;
onClick: () => void;
menuItemProps?: MenuItemProps$1;
}
interface DropdownMenuProps extends MenuProps$1 {
open: boolean;
anchorEl: HTMLElement | null;
handleClose: () => void;
handleClick?: (event: React.MouseEvent<HTMLElement>) => void;
items?: DropdownMenuItemProps[];
}
declare const DropdownMenu: FunctionComponent<DropdownMenuProps>;
declare const useDropdownMenu: () => {
open: boolean;
handleClick: (event: react__default.MouseEvent<HTMLButtonElement>) => void;
handleClose: () => void;
anchorEl: HTMLElement | null;
};
interface FlagProps {
/**
* ISO 3166-1-alpha-2 country code (e.g., 'us', 'gb', 'de')
* or locale string with format 'lang_country' (e.g., 'eng_us', 'deu_de')
*/
countryCode: string;
/**
* Optional className to pass to the span element
*/
className?: string;
slotProps?: {
avatar?: AvatarProps;
};
}
/**
* Flag component displays a country flag based on ISO 3166-1-alpha-2 country codes.
* It supports both direct country codes ('us') and locale formats ('eng_us').
*
* @example
* // Direct country code
* <Flag countryCode="de" />
*
* @example
* // Locale format
* <Flag countryCode="eng_us" />
*/
declare const Flag: FunctionComponent<FlagProps>;
interface FormControlLabelProps {
control: FormControlLabelProps$1['control'];
checked?: boolean;
disabled?: boolean;
label?: string | ReactElement;
labelPlacement?: FormControlLabelProps$1['labelPlacement'];
sx?: SxProps<Theme>;
onChange?: FormControlLabelProps$1['onChange'];
value?: unknown;
required?: boolean;
error?: boolean;
name?: string;
id?: string;
inputRef?: FormControlLabelProps$1['inputRef'];
}
declare const FormControlLabel: FunctionComponent<FormControlLabelProps>;
/**
* Form Generator Core Types
*/
interface FormGeneratorHandler {
set: () => void;
reset: () => void;
submit: () => void;
values: () => void;
valid: () => void;
errors: () => void;
triggerFormValidation: () => Promise<unknown>;
}
type FormGeneratorProps = FunctionComponent<{
ref?: any;
formConfig: FormGeneratorConfig;
onFormSubmit?: SubmitHandler<any>;
onFormChange?: (formData: any) => void;
submitButton?: ReactElement;
secondaryButton?: ReactElement;
}>;
interface FormGeneratorConfig {
fields: FieldTypes[];
autoComplete?: 'off';
mode?: 'onSubmit' | 'onBlur' | 'onChange';
formId?: string;
reValidateMode?: 'onSubmit' | 'onBlur' | 'onChange';
validateOnInit?: boolean;
styleOverrides?: {
sxForm?: SxProps<Theme>;
sxButtons?: SxProps<Theme>;
sxStack?: SxProps<Theme>;
};
}
/**
* Field Types
*/
type FieldTypes = CheckboxType | CheckboxGroupType | SwitchType | TextareaType | SelectType | TextFieldType | SliderType | DifferentialType | RichTextFieldType | LikertType | RadioGroupType | DragAndDropRankingType | NumberFieldType | StarRatingType | HTMLType | CreatableAutocompleteType | CustomFieldType;
type CreatableAutocompleteType = CreateFieldType<'creatableautocomplete', CreatableAutocompleteProps, string>;
type TextFieldType = CreateFieldType<'textfield', TextFieldProps, string>;
type NumberFieldType = CreateFieldType<'numberfield', NumberFieldProps, number>;
type TextareaType = CreateFieldType<'textarea', TextareaProps, string>;
type SelectType = CreateFieldType<'select', SelectProps, SelectProps['value']>;
type CheckboxType = CreateFieldType<'checkbox', CheckboxProps, NonNullable<CheckboxProps['value']>>;
type CheckboxGroupType = CreateFieldType<'checkboxGroup', CheckboxGroupProps, string[]>;
type SwitchType = CreateFieldType<'switch', SwitchProps, NonNullable<SwitchProps['checked']>>;
type SliderType = CreateFieldType<'slider', SliderProps, NonNullable<SliderProps['value']>>;
type DifferentialType = CreateFieldType<'differential', DifferentialProps, NonNullable<DifferentialProps['value']>>;
type LikertType = CreateFieldType<'likert', LikertProps, LikertProps['value']>;
type RadioGroupType = CreateFieldType<'radioGroup', RadioGroupProps, RadioGroupProps['value']>;
type DragAndDropRankingType = CreateFieldType<'ranking', RankProps, NonNullable<RankProps['value']>>;
type RichTextFieldType = CreateFieldType<'richTextfield', RichTextFieldProps, RichTextFieldProps['value']>;
type StarRatingType = CreateFieldType<'starRating', StarRatingProps, NonNullable<StarRatingProps['value']>>;
type HTMLType = {
fieldType: 'html';
content: HtmlProps['children'];
defaultValue?: never;
} & BaseField;
type CustomFieldType = {
fieldType: 'customfield';
defaultValue?: CustomFieldProps['value'];
} & BaseField & CustomFieldProps;
/**
* Field Type Utilities
*/
interface BaseField {
id?: string;
name: string;
ref?: any;
multiline?: boolean;
content?: ReactElement;
label?: string | ReactElement;
labelProps?: InputLabelProps;
helperText?: string;
hidden?: boolean;
type?: string;
helpTextProps?: InputLabelHelpProps;
validation?: any;
valueTransformer?: (valueToTransform: string) => string;
disabled?: boolean;
strengthIndicator?: boolean;
styleOverrides?: {
sxInputWrapper?: SxProps<Theme>;
sxInputBase?: SxProps<Theme>;
sxInputStack?: SxProps<Theme>;
};
}
type CreateFieldType<TFieldType extends string, TProps, TDefaultValue extends any = void> = {
fieldType: TFieldType;
} & BaseField & Omit<TProps, 'id' | 'name' | 'value' | 'defaultValue' | 'onChange'> & (TDefaultValue extends void ? unknown : {
defaultValue?: TDefaultValue;
});
type FieldType = FieldTypes['fieldType'];
declare const FormGenerator: FormGeneratorProps;
interface GridOverlayProps {
breakpoint?: boolean;
maxWidth?: boolean;
position?: 'fixed' | 'absolute';
visible?: boolean;
}
declare const GridOverlay: FunctionComponent<GridOverlayProps>;
interface HtmlProps {
children: ReactElement;
}
declare const Html: FunctionComponent<HtmlProps>;
type HtmlParserProps = {
children: string;
typographyProps?: Partial<TypographyProps>;
};
declare const HtmlParser: FC<HtmlParserProps>;
type IconButtonSizing = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
type IconButtonShapeMap = 'default' | 'round';
type IconButtonVariation = 'default' | 'toggle' | 'outlined' | 'raised' | 'elevated';
declare const defaultStyle: (theme: Theme) => CSSObject;
declare const toggle: (theme: Theme) => CSSObject;
declare const outlined: (theme: Theme) => CSSObject;
declare const raised: (theme: Theme) => CSSObject;
declare const elevated: (theme: Theme) => CSSObject;
declare const getIconButtonRadius: (shape: IconButtonShapeMap, theme: Theme) => CSSObject;
declare const buttonSizeMap: {
xs: number;
sm: number;
md: number;
lg: number;
xl: number;
};
declare const getIconButtonSizing: (sizing: IconButtonSizing) => CSSObject;
declare const IconSizeMap: {
xs: number;
sm: number;
md: number;
lg: number;
xl: number;
};
declare const getIconSizing: (sizing: IconButtonSizing) => CSSObject;
declare const IconButton_variantHelpers_IconSizeMap: typeof IconSizeMap;
declare const IconButton_variantHelpers_buttonSizeMap: typeof buttonSizeMap;
declare const IconButton_variantHelpers_defaultStyle: typeof defaultStyle;
declare const IconButton_variantHelpers_elevated: typeof elevated;
declare const IconButton_variantHelpers_getIconButtonRadius: typeof getIconButtonRadius;
declare const IconButton_variantHelpers_getIconButtonSizing: typeof getIconButtonSizing;
declare const IconButton_variantHelpers_getIconSizing: typeof getIconSizing;
declare const IconButton_variantHelpers_outlined: typeof outlined;
declare const IconButton_variantHelpers_raised: typeof raised;
declare const IconButton_variantHelpers_toggle: typeof toggle;
declare namespace IconButton_variantHelpers {
export { IconButton_variantHelpers_IconSizeMap as IconSizeMap, IconButton_variantHelpers_buttonSizeMap as buttonSizeMap, IconButton_variantHelpers_defaultStyle as defaultStyle, IconButton_variantHelpers_elevated as elevated, IconButton_variantHelpers_getIconButtonRadius as getIconButtonRadius, IconButton_variantHelpers_getIconButtonSizing as getIconButtonSizing, IconButton_variantHelpers_getIconSizing as getIconSizing, IconButton_variantHelpers_outlined as outlined, IconButton_variantHelpers_raised as raised, IconButton_variantHelpers_toggle as toggle };
}
interface IconButtonBaseProps extends IconButtonProps$1 {
variation?: IconButtonVariation;
shape?: IconButtonShapeMap;
sizing?: IconButtonSizing;
}
declare const IconButtonBase: react.ForwardRefExoticComponent<Omit<IconButtonBaseProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
interface TooltipProps extends Omit<Partial<TooltipProps$1>, 'title' | 'slotProps'> {
message: TooltipProps$1['title'];
variation?: 'primary';
slotProps?: TooltipProps$1['slotProps'] & {
wrapper?: BoxProps;
};
}
declare const Tooltip: FunctionComponent<TooltipProps>;
interface IconButtonProps extends IconButtonBaseProps {
icon: ReactElement;
loading?: boolean;
tooltipMessage?: TooltipProps['message'];
slotProps?: {
tooltip?: Omit<TooltipProps, 'message'>;
};
emojiMode?: boolean;
}
declare const IconButton: react.ForwardRefExoticComponent<Omit<IconButtonProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
interface IconButtonGroupProps {
ButtonGroupProps?: ButtonGroupProps;
variation?: Exclude<IconButtonVariation, 'outlined'>;
orientation: ButtonGroupProps['orientation'];
sizing?: IconButtonProps['sizing'];
iconColor?: string;
groupRaised?: boolean;
className?: string;
onClick?: (e: any) => void;
onMouseDown?: (e: any) => void;
sx?: SxProps<Theme>;
children: ButtonGroupProps['children'] | any;
}
declare const IconButtonGroup: FunctionComponent<IconButtonGroupProps>;
interface ImageProps extends LazyLoadImageProps {
containerSx?: SxProps<Theme>;
src?: LazyLoadImageProps['src'];
style?: LazyLoadImageProps['style'];
loading?: LazyLoadImageProps['loading'];
}
declare const Image: FunctionComponent<ImageProps>;
type InputFieldBaseProps = TextFieldProps$1;
declare const InputFieldBase: _emotion_styled.StyledComponent<{
variant?: _mui_material.TextFieldVariants | undefined;
} & Omit<_mui_material.FilledTextFieldProps | _mui_material.OutlinedTextFieldProps | _mui_material.StandardTextFieldProps, "variant"> & (_mui_system.MUIStyledCommonProps<_mui_material.Theme> & InputFieldBaseProps), {}, {}>;
type InputVariation = 'default' | 'help';
interface InputLabelProps {
variation?: InputVariation;
align?: 'left' | 'center' | 'right' | undefined;
sx?: SxProps<Theme$1>;
children?: ReactElement | string;
disabled?: boolean;
error?: boolean;
required?: boolean;
}
declare const InputLabel: FunctionComponent<InputLabelProps>;
interface InputLabelHelpProps {
state?: 'default' | 'positive' | 'negative' | 'disabled';
showicon?: boolean;
icon?: ReactNode;
align?: 'left' | 'center' | 'right';
children?: ReactNode;
disabled?: boolean;
required?: boolean;
}
declare const InputLabelHelp: FunctionComponent<InputLabelHelpProps>;
interface StyledChipProps extends ChipProps {
variation?: 'default' | 'peach' | 'peachDark' | 'purple';
weight?: 'heavy' | 'light';
}
interface LabelProps extends Omit<StyledChipProps, 'size' | 'color' | 'label' | 'children'> {
body: string;
}
declare const Label: react.ForwardRefExoticComponent<Omit<LabelProps, "ref"> & react.RefAttributes<HTMLDivElement>>;
interface LikertOption {
label: string;
value: string;
}
interface LikertProps {
options: LikertOption[];
disabled?: boolean;
onChange: (value: LikertOption['value']) => void;
value: string;
sizing?: 'default' | 'lg';