@verma-consulting/design-library 0.1.17 → 0.1.19

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/README.md CHANGED
@@ -68,19 +68,20 @@ The library re-exports **all of `@mui/material`**, so you can use MUI components
68
68
  | [StatusPill](./docs/StatusPill.md) | Chip showing user status (Pending, Active, etc.). |
69
69
  | [IOSSwitch](./docs/IOSSwitch.md) | iOS-style switch (accepts MUI Switch props). |
70
70
  | [Loader](./docs/Loader.md) | Full-screen loading overlay with spinner. |
71
- | [SkeletonBar](./docs/SkeletonBar.md) | Horizontal shimmer bar for loading placeholders. |
72
- | [EmptyState](./docs/EmptyState.md) | Centered empty-state view with optional icon and label. |
71
+ | [SkeletonBar](./docs/SkeletonBar.md) | Horizontal shimmer bar for loading placeholders. |
72
+ | [EmptyState](./docs/EmptyState.md) | Centered empty-state view with optional icon and label. |
73
73
 
74
74
  Detailed docs for each component are in **[docs/](./docs/README.md)**.
75
75
 
76
76
  ## Scripts
77
77
 
78
- | Command | Description |
79
- | ---------------- | -------------------------------------- |
80
- | `pnpm run build` | Build the library (output in `dist/`). |
81
- | `pnpm run watch` | Watch and rebuild on changes. |
82
- | `pnpm run clean` | Remove `dist/`. |
83
- | `pnpm run lint` | Run ESLint on `src/`. |
78
+ | Command | Description |
79
+ | ---------------- | ------------------------------------------------------------------------------ |
80
+ | `pnpm run dev` | Start the Vite dev server to preview components (e.g. `/EmptyState`, `/Pill`). |
81
+ | `pnpm run build` | Build the library (output in `dist/`). |
82
+ | `pnpm run watch` | Watch and rebuild on changes. |
83
+ | `pnpm run clean` | Remove `dist/`. |
84
+ | `pnpm run lint` | Run ESLint on `src/`. |
84
85
 
85
86
  ## License
86
87
 
package/dist/index.js CHANGED
@@ -690,15 +690,15 @@ var import_material10 = require("@mui/material");
690
690
  var import_icons_material5 = require("@mui/icons-material");
691
691
  var import_jsx_runtime10 = require("react/jsx-runtime");
692
692
  var EmptyState = ({ label, m = 8, icon }) => {
693
- var _a, _b, _c, _d;
694
693
  const theme = (0, import_material10.useTheme)();
695
- const text = label != null ? label : "No data here";
696
- const iconColor = theme.palette.mode === "dark" ? (_b = (_a = theme.palette.grey) == null ? void 0 : _a[600]) != null ? _b : "rgba(255,255,255,0.25)" : (_d = (_c = theme.palette.grey) == null ? void 0 : _c[300]) != null ? _d : "rgba(0,0,0,0.18)";
694
+ const text = label != null ? label : "No data created yet";
695
+ const iconColor = theme.palette.mode === "dark" ? "rgba(255,255,255,0.42)" : "rgba(0,0,0,0.42)";
696
+ const labelColor = theme.palette.mode === "dark" ? "rgba(255,255,255,0.50)" : "rgba(0,0,0,0.38)";
697
697
  const iconEl = icon != null && import_react4.default.isValidElement(icon) ? icon : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
698
- import_icons_material5.StorageOutlined,
698
+ import_icons_material5.DatasetOutlined,
699
699
  {
700
700
  sx: {
701
- fontSize: 72,
701
+ fontSize: 48,
702
702
  color: iconColor,
703
703
  display: "block"
704
704
  }
@@ -712,40 +712,25 @@ var EmptyState = ({ label, m = 8, icon }) => {
712
712
  flexDirection: "column",
713
713
  alignItems: "center",
714
714
  justifyContent: "center",
715
- minHeight: 140,
715
+ gap: 1.5,
716
+ minHeight: 160,
716
717
  m,
717
- position: "relative"
718
+ py: 3,
719
+ px: 2
718
720
  },
719
721
  children: [
720
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
721
- import_material10.Box,
722
- {
723
- sx: {
724
- position: "absolute",
725
- top: "50%",
726
- left: "50%",
727
- transform: "translate(-50%, -50%)",
728
- pointerEvents: "none",
729
- display: "flex",
730
- alignItems: "center",
731
- justifyContent: "center"
732
- },
733
- children: iconEl
734
- }
735
- ),
722
+ iconEl,
736
723
  /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
737
724
  import_material10.Typography,
738
725
  {
739
- variant: "subtitle1",
726
+ variant: "body2",
740
727
  align: "center",
741
728
  sx: {
742
- position: "relative",
743
- zIndex: 1,
744
- fontWeight: 600,
745
- fontSize: "1rem",
729
+ fontWeight: 400,
730
+ fontSize: "0.875rem",
746
731
  letterSpacing: "0.01em",
747
- color: "text.secondary",
748
- maxWidth: 360,
732
+ color: labelColor,
733
+ maxWidth: 320,
749
734
  lineHeight: 1.5
750
735
  },
751
736
  children: text
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.tsx","../src/ClearableSelect.tsx","../src/TabPanel.tsx","../src/Logo.tsx","../src/FormDialog.tsx","../src/InputFileUpload.tsx","../src/ImageUploadAvatar.tsx","../src/FormSnackBar.tsx","../src/Loader.tsx","../src/SkeletonBar.tsx","../src/EmptyState.tsx","../src/Pill.tsx","../src/IOSSwitch.tsx","../src/StatusPill.tsx","../src/FormPopover.tsx","../src/SearchableSelect.tsx","../src/FormDrawer.tsx","../src/PhoneNumberField.tsx"],"sourcesContent":["export * from \"@mui/material\";\nexport { default as ClearableSelect } from \"./ClearableSelect\";\nexport { default as TabPanel } from \"./TabPanel\";\nexport {\n useTheme,\n styled,\n createTheme,\n ThemeProvider,\n} from \"@mui/material/styles\";\nexport { makeStyles } from \"@mui/styles\";\nexport { default as Logo } from \"./Logo\";\nexport { default as FormDialog } from \"./FormDialog\";\nexport { default as InputFileUpload } from \"./InputFileUpload\";\nexport { default as ImageUploadAvatar } from \"./ImageUploadAvatar\";\nexport { default as FormSnackBar } from \"./FormSnackBar\";\nexport { default as Loader } from \"./Loader\";\nexport { default as SkeletonBar } from \"./SkeletonBar\";\nexport { default as EmptyState } from \"./EmptyState\";\nexport { default as Pill } from \"./Pill\";\nexport { default as IOSSwitch } from \"./IOSSwitch\";\nexport { default as StatusPill } from \"./StatusPill\";\nexport { default as FormPopover } from \"./FormPopover\";\nexport { default as SearchableSelect } from \"./SearchableSelect\";\nexport { default as FormDrawer } from \"./FormDrawer\";\nexport { default as PhoneNumberField } from \"./PhoneNumberField\";\n","// @ts-nocheck\nimport React from \"react\";\nimport {\n FormControl,\n InputLabel,\n Select,\n InputAdornment,\n IconButton,\n OutlinedInput,\n SelectChangeEvent,\n Typography,\n FormLabel,\n} from \"@mui/material\";\nimport { Clear } from \"@mui/icons-material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { prettifyString } from \"@verma-consulting/common-library\";\n\nconst useStyles = makeStyles((theme) => ({\n defaultMode: {\n paddingTop: 14,\n paddingBottom: 14,\n paddingLeft: 8,\n paddingRight: 8,\n cursor: \"pointer\",\n \"&:hover\": {\n borderRadius: 10,\n boxShadow: \"rgba(100, 100, 111, 0.2) 0px 7px 29px 0px\",\n },\n },\n formLabel: {\n cursor: \"pointer\",\n },\n formValue: {\n cursor: \"pointer\",\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n },\n}));\n\ninterface ClearableSelectProps {\n name: string;\n label: string;\n value: string | number | (string | number)[];\n onChange: (\n event: SelectChangeEvent<string | number | (string | number)[]>\n ) => void;\n size?: \"small\" | \"medium\";\n style?: React.CSSProperties;\n disabled?: boolean;\n onClear?: () => void;\n multiple?: boolean;\n defaultEditMode?: boolean;\n renderValue?: () => null;\n children: React.ReactNode;\n}\n\nconst ClearableSelect: React.FC<ClearableSelectProps> = ({\n name,\n label,\n value = \"\",\n onChange,\n size = \"small\",\n style,\n disabled = false,\n onClear,\n multiple = false,\n defaultEditMode = false,\n renderValue,\n children,\n}) => {\n const classes = useStyles();\n const wrapperRef = React.useRef(null);\n const [editMode, setEditMode] = React.useState(defaultEditMode);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n wrapperRef.current &&\n !(wrapperRef.current as any).contains(event.target)\n ) {\n setEditMode(false);\n }\n };\n\n if (editMode) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [editMode]);\n\n const isValueEmpty =\n multiple && Array.isArray(value) ? value.length === 0 : value === \"\";\n\n const handleClear = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (onClear) {\n onClear();\n setEditMode(false);\n } else {\n const fakeEvent = {\n target: { name, value: multiple ? [] : \"\" },\n } as unknown as SelectChangeEvent<string | number | (string | number)[]>;\n onChange(fakeEvent);\n }\n };\n\n if (editMode) {\n return (\n <FormControl\n variant=\"outlined\"\n size={size}\n style={style}\n disabled={disabled}\n fullWidth\n >\n <InputLabel id={`${name}-select-label`}>{label}</InputLabel>\n <Select\n labelId={`${name}-select-label`}\n id={`${name}-select`}\n name={name}\n multiple={multiple}\n value={multiple ? value?.split(\", \") : value}\n onChange={onChange}\n onBlur={() => setEditMode(false)}\n onClose={() => setEditMode(false)}\n label={label}\n input={\n <OutlinedInput\n size={size}\n color=\"primary\"\n endAdornment={\n onClear && !isValueEmpty ? (\n <InputAdornment position=\"end\" sx={{ gap: 1 }}>\n <IconButton\n aria-label={`clear ${name}`}\n onClick={handleClear}\n edge=\"end\"\n size=\"small\"\n sx={{ mr: 1 }}\n >\n <Clear fontSize=\"inherit\" />\n </IconButton>\n </InputAdornment>\n ) : null\n }\n label={label}\n name={name}\n sx={{\n paddingRight: !isValueEmpty ? 2 : undefined,\n }}\n />\n }\n renderValue={renderValue}\n >\n {children}\n </Select>\n </FormControl>\n );\n }\n return (\n <div\n onClick={() => {\n if (!disabled) {\n setEditMode(true);\n }\n }}\n className={classes.defaultMode}\n >\n <FormLabel className={classes.formLabel}>{label}</FormLabel>\n <Typography className={classes.formValue}>\n {renderValue ? renderValue(value) : prettifyString(value)}\n </Typography>\n </div>\n );\n};\n\nexport default ClearableSelect;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: number;\n value: number;\n}\n\nconst TabPanel = (props: TabPanelProps) => {\n const { children, value, index, ...other } = props;\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`simple-tabpanel-${index}`}\n {...other}\n >\n {value === index && <Box sx={{ p: 1 }}>{children}</Box>}\n </div>\n );\n};\n\nexport default TabPanel;\n","// @ts-nocheck\nimport React, { memo } from \"react\";\nimport {\n Grid,\n Typography,\n Avatar,\n Tooltip,\n Box,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { capitalizeSentence } from \"@verma-consulting/common-library\";\n\ntype LogoProps = {\n loggedIn?: boolean;\n centered?: boolean;\n organization?: {\n name?: string;\n logo?: { url?: string };\n } | null;\n defaultLogo?: React.ReactNode;\n companyComponent?: React.ReactNode;\n handleClick?: () => void;\n};\n\nconst Logo: React.FC<LogoProps> = memo(\n ({\n loggedIn = false,\n centered = false,\n organization = null,\n defaultLogo = null,\n handleClick = () => null,\n companyComponent = null,\n }) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n const maxWidth = mdMatches ? 160 : 320;\n\n const companyName = capitalizeSentence(organization?.name ?? \"\");\n const logoUrl = organization?.logo?.url;\n\n if (centered) {\n return (\n <Grid\n container\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n spacing={1}\n sx={{ cursor: \"pointer\" }}\n onClick={handleClick}\n >\n {/* Logo on top */}\n {(logoUrl || defaultLogo) && (\n <Grid item>\n {logoUrl ? (\n <Avatar\n alt={companyName || \"avatar\"}\n src={logoUrl}\n sx={{\n width: 64, // slightly bigger\n height: 64,\n bgcolor: \"primary.main\",\n fontSize: 20,\n fontWeight: \"bold\",\n }}\n imgProps={{ loading: \"lazy\" }}\n >\n {companyName?.charAt(0) || \"?\"}\n </Avatar>\n ) : (\n defaultLogo\n )}\n </Grid>\n )}\n\n {/* Company name or companyComponent below logo */}\n <Grid item sx={{ maxWidth, textAlign: \"center\" }}>\n {loggedIn ? (\n <Tooltip title={companyName} placement=\"top\" arrow>\n <Typography\n variant=\"h6\"\n sx={{\n fontFamily: \"Courier, monospace\",\n fontWeight: \"bold\",\n color: \"primary.main\",\n }}\n >\n {companyName}\n </Typography>\n </Tooltip>\n ) : (\n <Box sx={{ display: \"flex\", justifyContent: \"center\" }}>\n {companyComponent}\n </Box>\n )}\n </Grid>\n </Grid>\n );\n }\n\n // Default horizontal layout\n return (\n <Grid\n container\n alignItems=\"center\"\n wrap=\"nowrap\"\n sx={{\n cursor: \"pointer\",\n \"&:hover\": { opacity: 0.9, transition: \"opacity 0.2s ease-in-out\" },\n }}\n onClick={handleClick}\n >\n {(logoUrl || defaultLogo) && (\n <Box sx={{ mr: 1, display: \"flex\", alignItems: \"center\" }}>\n {logoUrl ? (\n <Avatar\n alt={companyName || \"avatar\"}\n src={logoUrl}\n sx={{\n width: 36,\n height: 36,\n bgcolor: \"primary.main\",\n fontSize: 14,\n fontWeight: \"bold\",\n }}\n imgProps={{ loading: \"lazy\" }}\n >\n {companyName?.charAt(0) || \"?\"}\n </Avatar>\n ) : (\n defaultLogo\n )}\n </Box>\n )}\n\n <Box sx={{ maxWidth, flexShrink: 1, minWidth: 0 }}>\n {loggedIn ? (\n <Tooltip title={companyName} placement=\"top\" arrow>\n <Typography\n variant=\"h6\"\n noWrap\n sx={{\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n fontFamily: \"Courier, monospace\",\n fontWeight: \"bold\",\n color: \"primary.main\",\n }}\n >\n {companyName}\n </Typography>\n </Tooltip>\n ) : (\n companyComponent\n )}\n </Box>\n </Grid>\n );\n }\n);\n\nexport default Logo;\n","// @ts-nocheck\nimport * as React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport {\n useTheme,\n useMediaQuery,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n} from \"@mui/material\";\nexport { useTheme } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\n \"& .MuiDialogContent-root\": {\n padding: theme.spacing(4),\n },\n \"& .MuiDialogActions-root\": {\n padding: theme.spacing(4),\n },\n}));\n\nexport interface DialogTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: () => void;\n}\n\nconst BootstrapDialogTitle = (props: DialogTitleProps) => {\n const { children, onClose, ...other } = props;\n\n return (\n <DialogTitle\n sx={{\n px: 3,\n py: 3,\n pt: 3.5,\n pb: 2.5,\n fontSize: \"1.25rem\",\n fontWeight: 600,\n letterSpacing: \"0.02em\",\n lineHeight: 1.35,\n }}\n {...other}\n >\n {children}\n {onClose ? (\n <IconButton\n onClick={onClose}\n sx={{\n position: \"absolute\",\n right: 16,\n top: 16,\n }}\n >\n <Close color=\"primary\" />\n </IconButton>\n ) : null}\n </DialogTitle>\n );\n};\n\nconst FormDialog = ({ open = false, setOpen, title = \"\", actions, children, maxWidth = \"lg\", ...props }) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n return (\n <BootstrapDialog fullWidth onClose={() => setOpen(false)} open={open} maxWidth={maxWidth} fullScreen={mdMatches}>\n <BootstrapDialogTitle onClose={() => setOpen(false)}>{title}</BootstrapDialogTitle>\n <DialogContent dividers>{children}</DialogContent>\n <DialogActions>{actions}</DialogActions>\n </BootstrapDialog>\n );\n};\n\nexport default FormDialog;\n","// @ts-nocheck\nimport React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport { Button } from \"@mui/material\";\nimport { CloudUpload } from \"@mui/icons-material\";\n\nconst VisuallyHiddenInput = styled(\"input\")({\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(50%)\",\n height: 1,\n overflow: \"hidden\",\n position: \"absolute\",\n bottom: 0,\n left: 0,\n whiteSpace: \"nowrap\",\n width: 1,\n});\n\nconst InputFileUpload = ({ name = \"\", onChange = () => null, title = \"\" }) => (\n <Button\n role={undefined}\n component=\"label\"\n size=\"small\"\n variant=\"contained\"\n tabIndex={-1}\n startIcon={<CloudUpload fontSize=\"inherit\" />}\n >\n {title}\n <VisuallyHiddenInput type=\"file\" name={name} onChange={onChange} />\n </Button>\n);\n\nexport default InputFileUpload;\n","import React, { useEffect, useRef, useState, ChangeEvent } from \"react\";\nimport { Box, IconButton } from \"@mui/material\";\nimport { styled } from \"@mui/material/styles\";\nimport { CloudUpload, Close as CloseIcon } from \"@mui/icons-material\";\n\ntype ImageUploadAvatarProps = {\n name?: string;\n defaultValue?: string | null;\n onChange?: (file: File | null, previewSrc: string | null) => void;\n size?: number;\n variant?: \"circular\" | \"rounded\" | \"square\";\n accept?: string;\n disabled?: boolean;\n allowClear?: boolean;\n};\n\nconst HiddenInput = styled(\"input\")({\n position: \"absolute\",\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0 0 0 0)\",\n border: 0,\n});\n\nconst Wrapper = styled(Box, {\n shouldForwardProp: (prop) => prop !== \"variant\" && prop !== \"size\",\n})<{ size: number; variant: \"circular\" | \"rounded\" | \"square\" }>(({ theme, size, variant }) => ({\n position: \"relative\",\n width: size,\n height: size,\n borderRadius: variant === \"circular\" ? \"50%\" : variant === \"rounded\" ? theme.shape.borderRadius * 2 : 0,\n border: `1px dashed ${theme.palette.grey[400]}`,\n backgroundColor: theme.palette.grey[200],\n overflow: \"hidden\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n}));\n\nconst PreviewImg = styled(\"img\")({\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n display: \"block\",\n});\n\nconst Overlay = styled(Box)(({ theme }) => ({\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 120ms ease\",\n borderRadius: \"inherit\",\n \"& .uploadIcon\": {\n opacity: 0,\n transition: \"opacity 120ms ease, transform 120ms ease\",\n transform: \"scale(0.95)\",\n },\n \"&.empty .uploadIcon\": {\n opacity: 0.6,\n transform: \"scale(1)\",\n },\n \"&.hover\": {\n background: \"rgba(0,0,0,0.15)\",\n \"& .uploadIcon\": { opacity: 1, transform: \"scale(1)\" },\n },\n}));\n\nconst ClearButton = styled(IconButton)(({ theme }) => ({\n position: \"absolute\",\n top: -8,\n right: -8,\n background: theme.palette.background.paper,\n boxShadow: theme.shadows[2],\n \"&:hover\": { background: theme.palette.background.paper },\n}));\n\nexport const ImageUploadAvatar: React.FC<ImageUploadAvatarProps> = ({\n name = \"image\",\n defaultValue = null,\n onChange,\n size = 128,\n variant = \"rounded\",\n accept = \"image/*\",\n disabled,\n allowClear = true,\n}) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [internalSrc, setInternalSrc] = useState<string | null>(defaultValue ?? null);\n const [hover, setHover] = useState(false);\n\n useEffect(() => {\n if (!defaultValue) return;\n if (!internalSrc || !internalSrc.startsWith(\"blob:\")) {\n setInternalSrc(defaultValue);\n }\n }, [defaultValue]);\n\n useEffect(() => {\n return () => {\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n };\n }, [internalSrc]);\n\n const handlePick = (e: ChangeEvent<HTMLInputElement>) => {\n const selected = e.target.files?.[0] ?? null;\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n let preview: string | null = null;\n if (selected) {\n preview = URL.createObjectURL(selected);\n setInternalSrc(preview);\n } else {\n setInternalSrc(null);\n }\n if (inputRef.current) inputRef.current.value = \"\";\n onChange?.(selected, preview);\n };\n\n const triggerPick = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n setInternalSrc(null);\n onChange?.(null, null);\n };\n\n return (\n <Wrapper\n role=\"button\"\n size={size}\n variant={variant}\n onPointerEnter={() => setHover(true)}\n onPointerLeave={() => setHover(false)}\n onClick={triggerPick}\n >\n {internalSrc && <PreviewImg src={internalSrc} />}\n <Overlay className={`${!internalSrc ? \"empty\" : \"\"} ${hover && !disabled ? \"hover\" : \"\"}`}>\n <CloudUpload className=\"uploadIcon\" fontSize=\"large\" />\n </Overlay>\n\n {allowClear && internalSrc && !disabled && (\n <ClearButton size=\"small\" aria-label=\"Clear image\" onClick={handleClear} sx={{ m: 1 }}>\n <CloseIcon fontSize=\"inherit\" />\n </ClearButton>\n )}\n\n <HiddenInput ref={inputRef} type=\"file\" name={name} accept={accept} onChange={handlePick} disabled={disabled} />\n </Wrapper>\n );\n};\n\nexport default ImageUploadAvatar;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Snackbar, Alert, AlertTitle, Slide } from \"@mui/material\";\n\nconst FormSnackBar = ({ snackBar = {}, setSnackBar = () => null }) => {\n const getAlertStyles = () => {\n if (snackBar?.type === \"success\") {\n return { backgroundColor: \"#65C466\", color: \"white\" };\n }\n return {};\n };\n\n return (\n <Snackbar\n sx={{ width: \"100%\" }}\n autoHideDuration={1000}\n anchorOrigin={{ vertical: \"top\", horizontal: \"center\" }}\n open={snackBar?.open || false}\n onClose={() =>\n setSnackBar({\n open: false,\n message: \"\",\n type: \"\",\n })\n }\n TransitionComponent={Slide}\n >\n <Alert\n sx={{\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n ...getAlertStyles(),\n }}\n variant=\"filled\"\n severity={snackBar?.type}\n >\n <AlertTitle sx={{ m: 0, p: 0 }}>{snackBar?.message}</AlertTitle>\n </Alert>\n </Snackbar>\n );\n};\n\nexport default FormSnackBar;\n","import React from \"react\";\nimport { CircularProgress, Backdrop } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\ninterface LoaderProps {\n size?: number;\n color?: \"primary\" | \"secondary\" | \"inherit\" | \"success\" | \"error\" | \"info\" | \"warning\";\n}\n\nconst useStyles = makeStyles({\n \"@keyframes pulse\": {\n \"0%\": { transform: \"scale(1)\", opacity: 0.9 },\n \"50%\": { transform: \"scale(1.05)\", opacity: 1 },\n \"100%\": { transform: \"scale(1)\", opacity: 0.9 },\n },\n progress: {\n animation: \"$pulse 1.5s ease-in-out infinite\",\n },\n});\n\nconst Loader: React.FC<LoaderProps> = ({ size = 48, color = \"primary\" }) => {\n const classes = useStyles();\n\n return (\n <Backdrop\n open\n sx={{\n zIndex: (theme) => theme.zIndex.modal + 1,\n backgroundColor: \"rgba(255, 255, 255, 0.15)\",\n backdropFilter: \"blur(2px)\",\n }}\n >\n <CircularProgress size={size} color={color} thickness={3.5} className={classes.progress} />\n </Backdrop>\n );\n};\n\nexport default Loader;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Box, useTheme } from \"@mui/material\";\n\nconst SHIMMER_KEYFRAMES = {\n \"@keyframes skeletonShimmer\": {\n \"0%\": { backgroundPosition: \"200% 0\" },\n \"100%\": { backgroundPosition: \"-200% 0\" },\n },\n};\n\nexport interface SkeletonBarProps {\n width?: string | number;\n height?: number;\n sx?: object;\n}\n\n/**\n * Horizontal bar with sideways shimmer loading animation.\n * Use in tables, cards, selects, and any loading placeholder.\n */\nexport const SkeletonBar: React.FC<SkeletonBarProps> = ({\n width = \"100%\",\n height = 24,\n sx = {},\n}) => {\n const theme = useTheme();\n const base =\n theme.palette.mode === \"dark\"\n ? theme.palette.grey?.[700] ?? \"#424242\"\n : theme.palette.grey?.[200] ?? \"#e0e0e0\";\n const highlight =\n theme.palette.mode === \"dark\"\n ? theme.palette.grey?.[600] ?? \"#616161\"\n : theme.palette.grey?.[100] ?? \"#f5f5f5\";\n\n return (\n <Box\n sx={{\n ...SHIMMER_KEYFRAMES,\n borderRadius: 2,\n height,\n width,\n maxWidth: \"100%\",\n overflow: \"hidden\",\n background: `linear-gradient(90deg, ${base} 0%, ${highlight} 20%, ${base} 40%, ${base} 100%)`,\n backgroundSize: \"200% 100%\",\n animation: \"skeletonShimmer 1.4s ease-in-out infinite\",\n ...sx,\n }}\n />\n );\n};\n\nexport default SkeletonBar;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Box, Typography, useTheme } from \"@mui/material\";\nimport { StorageOutlined } from \"@mui/icons-material\";\n\nexport interface EmptyStateProps {\n /** Label text to display (e.g. getContent(\"noDataDescription\")) */\n label?: string;\n /** Vertical margin (theme spacing, default 8) */\n m?: number;\n /** Optional custom icon */\n icon?: React.ReactNode;\n}\n\nconst EmptyState: React.FC<EmptyStateProps> = ({ label, m = 8, icon }) => {\n const theme = useTheme();\n const text = label ?? \"No data here\";\n\n const iconColor =\n theme.palette.mode === \"dark\"\n ? (theme.palette.grey?.[600] ?? \"rgba(255,255,255,0.25)\")\n : (theme.palette.grey?.[300] ?? \"rgba(0,0,0,0.18)\");\n\n const iconEl =\n icon != null && React.isValidElement(icon) ? (\n icon\n ) : (\n <StorageOutlined\n sx={{\n fontSize: 72,\n color: iconColor,\n display: \"block\",\n }}\n />\n );\n\n return (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n minHeight: 140,\n m,\n position: \"relative\",\n }}\n >\n <Box\n sx={{\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n pointerEvents: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {iconEl}\n </Box>\n <Typography\n variant=\"subtitle1\"\n align=\"center\"\n sx={{\n position: \"relative\",\n zIndex: 1,\n fontWeight: 600,\n fontSize: \"1rem\",\n letterSpacing: \"0.01em\",\n color: \"text.secondary\",\n maxWidth: 360,\n lineHeight: 1.5,\n }}\n >\n {text}\n </Typography>\n </Box>\n );\n};\n\nexport default EmptyState;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Button, Typography, Icon, useTheme } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { isNullableType } from \"graphql\";\n\nexport type PillProps = {\n label?: string;\n leftIcon?: string;\n rightIcon?: string;\n color?: string;\n isSelected?: boolean;\n onClick?: () => void;\n disabled?: boolean;\n};\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n padding: \"4px 8px 4px 8px\",\n color: \"black\",\n borderColor: \"black\",\n borderStyle: \"solid\",\n border: \"6px\",\n borderRadius: \"24px !important\",\n \"&:hover\": {\n color: theme.palette.primary[500],\n },\n },\n}));\n\nconst Pill = ({\n variant = \"filter\",\n leftIcon = null,\n rightIcon = null,\n color = null,\n isSelected = false,\n onClick = () => null,\n label = \"\",\n disabled = false,\n}: PillProps) => {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n <Button\n variant={isSelected ? \"contained\" : \"outlined\"}\n color={color || \"primary\"}\n sx={{\n borderRadius: \"48px\",\n padding: \"8px 24px\",\n textTransform: \"none\",\n }}\n onClick={onClick}\n >\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n {leftIcon && (\n <Icon\n className={leftIcon}\n fontSize={14}\n color=\"inherit\"\n style={{ paddingRight: 8 }}\n data-testid=\"pill-left-icon\"\n />\n )}\n <Typography variant=\"subtitle\" color=\"inherit\" fontWeight={\"bold\"}>\n {label}\n </Typography>\n {rightIcon && (\n <Icon\n className={rightIcon}\n fontSize={14}\n color=\"inherit\"\n style={{ marginLeft: 8 }}\n data-testid=\"pill-right-icon\"\n />\n )}\n </div>\n </Button>\n );\n};\n\nexport default Pill;\n","import React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport Switch, { SwitchProps } from \"@mui/material/Switch\";\n\n// explicitly type as FC with SwitchProps\nconst IOSSwitch: React.FC<SwitchProps> = styled((props: SwitchProps) => (\n <Switch focusVisibleClassName=\".Mui-focusVisible\" disableRipple {...props} />\n))(({ theme }) => ({\n width: 46,\n height: 30,\n padding: 0,\n \"& .MuiSwitch-switchBase\": {\n padding: 0,\n margin: 2,\n transitionDuration: \"300ms\",\n \"&.Mui-checked\": {\n transform: \"translateX(16px)\",\n color: \"#fff\",\n \"& + .MuiSwitch-track\": {\n backgroundColor: theme.palette.primary.main,\n opacity: 1,\n border: 0,\n },\n \"&.Mui-disabled + .MuiSwitch-track\": {\n opacity: 0.5,\n },\n },\n \"&.Mui-focusVisible .MuiSwitch-thumb\": {\n color: \"#33cf4d\",\n border: \"6px solid #fff\",\n },\n \"&.Mui-disabled .MuiSwitch-thumb\": {\n color:\n theme.palette.mode === \"light\"\n ? theme.palette.grey[100]\n : theme.palette.grey[600],\n },\n \"&.Mui-disabled + .MuiSwitch-track\": {\n opacity: theme.palette.mode === \"light\" ? 0.7 : 0.3,\n },\n },\n \"& .MuiSwitch-thumb\": {\n boxSizing: \"border-box\",\n width: 26,\n height: 26,\n },\n \"& .MuiSwitch-track\": {\n borderRadius: 30 / 2,\n backgroundColor:\n theme.palette.mode === \"light\" ? \"#E9E9EA\" : theme.palette.grey[600],\n opacity: 1,\n transition: theme.transitions.create([\"background-color\"], {\n duration: 500,\n }),\n },\n}));\n\nexport default IOSSwitch;\n","import React from \"react\";\nimport { Chip } from \"@mui/material\";\nimport { userStatus } from \"@verma-consulting/common-library\";\n\ninterface StatusPillProps {\n status: userStatus;\n}\n\nconst statusColorMap: Record<\n userStatus,\n \"default\" | \"primary\" | \"secondary\" | \"success\" | \"error\" | \"warning\" | \"info\"\n> = {\n [userStatus.Pending]: \"warning\",\n [userStatus.Active]: \"success\",\n [userStatus.Inactive]: \"error\",\n [userStatus.Invited]: \"info\",\n};\n\nconst StatusPill: React.FC<StatusPillProps> = ({ status }) => (\n <Chip\n label={status}\n color={statusColorMap[status]}\n variant=\"outlined\"\n sx={{ fontWeight: 600, borderRadius: \"16px\", px: 1.5 }}\n />\n);\n\nexport default StatusPill;\n","import React, { useState, MouseEvent, ReactNode, FC } from \"react\";\nimport { Tooltip, IconButton, Popover } from \"@mui/material\";\nimport { MoreHoriz } from \"@mui/icons-material\";\n\ninterface FormPopoverProps {\n row?: any;\n children: (props: { row: any; handleClose: () => void }) => React.ReactNode;\n title?: string;\n}\n\nconst FormPopover: FC<FormPopoverProps> = ({ row, children, title }) => {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const open = Boolean(anchorEl);\n\n return (\n <>\n <Tooltip title={title}>\n <IconButton\n onClick={handleClick}\n size=\"small\"\n sx={{\n backgroundColor: \"white\",\n boxShadow: 1,\n borderRadius: \"50%\",\n border: \"1px solid transparent\",\n \"&:hover\": {\n border: (theme) => `1px solid ${theme.palette.primary.main}`,\n backgroundColor: \"#f0f0f0\",\n },\n }}\n >\n <MoreHoriz fontSize=\"inherit\" color=\"primary\" />\n </IconButton>\n </Tooltip>\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"left\",\n }}\n >\n {children({ row, handleClose })}\n </Popover>\n </>\n );\n};\n\nexport default FormPopover;\n","// @ts-nocheck\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\nimport {\n Autocomplete,\n TextField,\n Typography,\n FormLabel,\n FormControl,\n IconButton,\n} from \"@mui/material\";\nimport { Clear } from \"@mui/icons-material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { GenericPayload } from \"@verma-consulting/common-library\";\n\nconst useStyles = makeStyles(() => ({\n defaultMode: {\n padding: \"14px 8px\",\n cursor: \"pointer\",\n \"&:hover\": {\n borderRadius: 10,\n boxShadow: \"rgba(100, 100, 111, 0.2) 0px 7px 29px 0px\",\n },\n },\n formLabel: {\n cursor: \"pointer\",\n },\n formValue: {\n cursor: \"pointer\",\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n },\n}));\n\ninterface SearchableSelectProps {\n name: string;\n label: string;\n value: string;\n onChange: (value: string) => void;\n options: GenericPayload[];\n size?: \"small\" | \"medium\";\n style?: React.CSSProperties;\n disabled?: boolean;\n onClear?: () => void;\n defaultEditMode?: boolean;\n multiple?: boolean;\n}\n\nconst SearchableSelect: React.FC<SearchableSelectProps> = React.memo(\n ({\n name,\n label,\n value,\n onChange,\n options,\n size = \"small\",\n style,\n disabled = false,\n onClear,\n defaultEditMode = false,\n multiple = false,\n }) => {\n const classes = useStyles();\n const wrapperRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [editMode, setEditMode] = useState(defaultEditMode);\n const [open, setOpen] = useState(defaultEditMode);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n wrapperRef.current &&\n !wrapperRef.current.contains(event.target as Node)\n ) {\n setEditMode(false);\n setOpen(false);\n }\n }\n\n if (editMode) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [editMode]);\n\n useEffect(() => {\n if (editMode && open && inputRef.current) {\n inputRef.current.focus();\n }\n }, [editMode, open]);\n\n const handleClear = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (onClear) {\n onClear();\n } else {\n onChange(\"\");\n }\n setEditMode(false);\n setOpen(false);\n };\n\n const selected = useMemo(() => {\n if (multiple) {\n if (!value.trim()) return [];\n const selectedValues = value.split(\", \").map((v) => v.trim());\n return options.filter((opt) => selectedValues.includes(opt.value));\n } else {\n return options.find((opt) => opt.value === value) ?? null;\n }\n }, [value, options, multiple]);\n\n const displayValue = useMemo(() => {\n if (multiple) {\n if (!Array.isArray(selected)) return \"\";\n return selected.map((opt) => opt.label).join(\", \");\n } else {\n return (selected as GenericPayload | null)?.label ?? \"\";\n }\n }, [selected, multiple]);\n\n const isValueEmpty = !value.trim();\n\n return editMode ? (\n <FormControl fullWidth style={style} disabled={disabled} size={size}>\n <Autocomplete\n multiple={multiple}\n disableCloseOnSelect={multiple}\n options={options}\n value={selected}\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n onChange={(_, newValue) => {\n if (multiple) {\n if (Array.isArray(newValue)) {\n let vals = newValue?.map((opt) => opt?.value);\n let val = vals?.join(\", \");\n onChange(val);\n } else {\n onChange(\"\");\n }\n setOpen(true);\n } else {\n onChange((newValue as GenericPayload | null)?.value ?? \"\");\n setOpen(false);\n }\n }}\n disableClearable={!onClear}\n autoHighlight\n getOptionLabel={(option) => option.label}\n isOptionEqualToValue={(option, val) => option.value === val.value}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n variant=\"outlined\"\n size={size}\n inputRef={inputRef}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {!isValueEmpty && (\n <IconButton\n aria-label={`clear ${name}`}\n onClick={handleClear}\n size=\"small\"\n sx={{\n backgroundColor: \"transparent\",\n boxShadow: \"none\",\n }}\n >\n <Clear fontSize=\"inherit\" />\n </IconButton>\n )}\n </>\n ),\n }}\n />\n )}\n onBlur={() => {\n setEditMode(false);\n setOpen(false);\n }}\n />\n </FormControl>\n ) : (\n <div\n ref={wrapperRef}\n onClick={() => {\n if (!disabled) {\n setEditMode(true);\n setOpen(true);\n }\n }}\n className={classes.defaultMode}\n style={style}\n >\n <FormLabel className={classes.formLabel}>{label}</FormLabel>\n <Typography className={classes.formValue}>{displayValue}</Typography>\n </div>\n );\n }\n);\n\nexport default SearchableSelect;\n","import {\n Drawer,\n Typography,\n Box,\n IconButton,\n Grid,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface FormDrawerProps {\n open: boolean;\n setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n title?: string | null;\n actions?: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst FormDrawer: React.FC<FormDrawerProps> = ({\n open,\n setOpen,\n title,\n actions,\n children,\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n return (\n <Drawer\n anchor={mdMatches ? \"bottom\" : \"right\"}\n open={open}\n onClose={() => setOpen(false)}\n sx={{\n \"& .MuiDrawer-paper\": {\n width: mdMatches ? \"100%\" : \"64%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: 0,\n },\n }}\n >\n <Box p={3} borderBottom=\"1px solid #eee\">\n <Grid container>\n <Grid item>\n {title && (\n <Typography variant=\"h6\" fontWeight=\"bold\">\n {title}\n </Typography>\n )}\n </Grid>\n <Grid item>\n <IconButton\n size=\"medium\"\n onClick={() => setOpen(false)}\n sx={{\n position: \"absolute\",\n top: 8,\n right: 8,\n zIndex: 2,\n }}\n >\n <Close fontSize=\"inherit\" />\n </IconButton>\n </Grid>\n </Grid>\n </Box>\n <Box flex={1} overflow=\"auto\" p={3}>\n {children}\n </Box>\n\n {actions && (\n <Box\n p={2}\n borderTop=\"1px solid #eee\"\n sx={{\n position: \"sticky\",\n bottom: 0,\n zIndex: 1,\n }}\n >\n {actions}\n </Box>\n )}\n </Drawer>\n );\n};\n\nexport default FormDrawer;\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n ChangeEvent,\n FocusEvent,\n} from \"react\";\nimport {\n Box,\n Stack,\n TextField,\n MenuItem,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { constants } from \"@verma-consulting/common-library\";\n\ninterface PhoneNumberFieldProps {\n value?: string | null;\n onChange: (e164: string) => void;\n defaultCountry?: string;\n label?: string;\n size?: \"small\" | \"medium\";\n disabled?: boolean;\n autoFocus?: boolean;\n onBlur?: () => void;\n}\n\nconst PhoneNumberField: React.FC<PhoneNumberFieldProps> = ({\n value = \"\",\n onChange,\n defaultCountry = \"US\",\n label = \"Phone number\",\n size = \"small\",\n disabled = false,\n autoFocus = false,\n onBlur,\n}) => {\n const theme = useTheme();\n const smMatches = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const countries = (constants.COUNTRIES || []) as any;\n\n const [country, setCountry] = useState(defaultCountry);\n const [localNumber, setLocalNumber] = useState(\"\");\n const [isFocused, setIsFocused] = useState(false);\n const [selectOpen, setSelectOpen] = useState(false);\n const [ignoreNextOutsideClick, setIgnoreNextOutsideClick] = useState(false);\n\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const parseE164 = useCallback(\n (val: string) => {\n const cleaned = (val || \"\").toString().replace(/\\D/g, \"\");\n if (!cleaned) return { dial: \"\", local: \"\" };\n\n const sorted = [...countries].sort(\n (a, b) => b.phone.length - a.phone.length\n );\n const found = sorted.find((c) => cleaned.startsWith(c.phone));\n if (found) {\n const dial = found.phone;\n const local = cleaned.slice(dial.length);\n return { dial, local: local.slice(-10) };\n }\n return { dial: \"\", local: cleaned.slice(-10) };\n },\n [countries]\n );\n\n useEffect(() => {\n if (isFocused) return;\n if (!value) {\n setLocalNumber(\"\");\n return;\n }\n const { dial, local } = parseE164(String(value));\n if (dial) {\n const found = countries.find((c: any) => c.phone === dial);\n if (found) setCountry(found.code);\n }\n setLocalNumber(local);\n }, [value, parseE164, countries, isFocused]);\n\n const formatLocalNumber = (digits: string) => {\n const cleaned = digits.replace(/\\D/g, \"\").slice(0, 10);\n let formatted = \"\";\n if (cleaned.length > 0) formatted += cleaned.slice(0, 3);\n if (cleaned.length > 3) formatted += \"-\" + cleaned.slice(3, 6);\n if (cleaned.length > 6) formatted += \"-\" + cleaned.slice(6, 10);\n return formatted;\n };\n\n const commitValue = useCallback(() => {\n const sel = countries.find((c: any) => c.code === country);\n const dial = sel?.phone ?? \"\";\n if (dial && localNumber) {\n onChange(`+${dial}${localNumber}`);\n } else {\n onChange(\"\");\n }\n }, [countries, country, localNumber, onChange]);\n\n const handleLocalChange = (e: ChangeEvent<HTMLInputElement>) => {\n const digits = e.target.value.replace(/\\D/g, \"\").slice(0, 10);\n setLocalNumber(digits);\n };\n\n const handleCountryChange = (e: ChangeEvent<HTMLInputElement>) => {\n setCountry(e.target.value);\n };\n\n useEffect(() => {\n const onDocMouseDown = (ev: MouseEvent) => {\n if (!wrapperRef.current) return;\n if (wrapperRef.current.contains(ev.target as Node)) return;\n if (ignoreNextOutsideClick) {\n setIgnoreNextOutsideClick(false);\n return;\n }\n if (isFocused && !selectOpen) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n return () => document.removeEventListener(\"mousedown\", onDocMouseDown);\n }, [isFocused, selectOpen, ignoreNextOutsideClick, commitValue, onBlur]);\n\n const handleWrapperBlur = (e: FocusEvent<HTMLDivElement>) => {\n const next = e.relatedTarget as Node | null;\n if (wrapperRef.current && next && wrapperRef.current.contains(next)) return;\n if (selectOpen) return;\n if (isFocused) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n\n return (\n <Box\n ref={wrapperRef}\n onFocusCapture={() => setIsFocused(true)}\n onBlurCapture={handleWrapperBlur}\n sx={{ display: \"flex\", alignItems: \"center\", width: \"100%\" }}\n >\n <Stack\n direction=\"row\"\n spacing={0}\n alignItems=\"center\"\n sx={{ width: \"100%\" }}\n >\n <TextField\n select\n value={country}\n onChange={handleCountryChange}\n disabled={disabled}\n size={size}\n sx={{\n width: 140,\n \"& .MuiOutlinedInput-root\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n }}\n SelectProps={{\n renderValue: (val: unknown) => {\n const code =\n typeof val === \"string\" ? val : defaultCountry.toUpperCase();\n const c = countries.find((x: any) => x.code === code);\n return c ? `${c.code} (+${c.phone})` : code;\n },\n onOpen: () => {\n setSelectOpen(true);\n setIgnoreNextOutsideClick(true);\n },\n onClose: () => setSelectOpen(false),\n }}\n >\n {countries.map((option: any) => (\n <MenuItem key={option.code} value={option.code}>\n {option.code} (+{option.phone})\n </MenuItem>\n ))}\n </TextField>\n <TextField\n label={label}\n value={localNumber ? formatLocalNumber(localNumber) : \"\"}\n onChange={handleLocalChange}\n placeholder=\" - - \"\n inputProps={{\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n maxLength: 12,\n }}\n disabled={disabled}\n size={size}\n autoFocus={autoFocus}\n fullWidth\n sx={{\n \"& .MuiOutlinedInput-root\": {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n },\n }}\n />\n </Stack>\n </Box>\n );\n};\n\nexport default PhoneNumberField;\n"],"mappings":"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","names":["React","import_material","import_jsx_runtime","import_styles","import_react","import_material","import_common_library","import_jsx_runtime","import_styles","import_material","import_icons_material","import_jsx_runtime","import_styles","import_material","import_icons_material","import_jsx_runtime","import_react","import_material","import_styles","import_icons_material","import_jsx_runtime","CloseIcon","import_material","import_jsx_runtime","import_material","import_styles","import_jsx_runtime","useStyles","import_material","import_jsx_runtime","import_react","import_material","import_icons_material","import_jsx_runtime","React","import_material","import_styles","import_jsx_runtime","useStyles","import_styles","import_jsx_runtime","Switch","import_material","import_common_library","import_jsx_runtime","import_react","import_material","import_icons_material","import_jsx_runtime","import_react","import_material","import_icons_material","import_styles","import_jsx_runtime","useStyles","React","import_material","import_icons_material","import_jsx_runtime","import_react","import_material","import_common_library","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../src/index.tsx","../src/ClearableSelect.tsx","../src/TabPanel.tsx","../src/Logo.tsx","../src/FormDialog.tsx","../src/InputFileUpload.tsx","../src/ImageUploadAvatar.tsx","../src/FormSnackBar.tsx","../src/Loader.tsx","../src/SkeletonBar.tsx","../src/EmptyState.tsx","../src/Pill.tsx","../src/IOSSwitch.tsx","../src/StatusPill.tsx","../src/FormPopover.tsx","../src/SearchableSelect.tsx","../src/FormDrawer.tsx","../src/PhoneNumberField.tsx"],"sourcesContent":["export * from \"@mui/material\";\nexport { default as ClearableSelect } from \"./ClearableSelect\";\nexport { default as TabPanel } from \"./TabPanel\";\nexport {\n useTheme,\n styled,\n createTheme,\n ThemeProvider,\n} from \"@mui/material/styles\";\nexport { makeStyles } from \"@mui/styles\";\nexport { default as Logo } from \"./Logo\";\nexport { default as FormDialog } from \"./FormDialog\";\nexport { default as InputFileUpload } from \"./InputFileUpload\";\nexport { default as ImageUploadAvatar } from \"./ImageUploadAvatar\";\nexport { default as FormSnackBar } from \"./FormSnackBar\";\nexport { default as Loader } from \"./Loader\";\nexport { default as SkeletonBar } from \"./SkeletonBar\";\nexport { default as EmptyState } from \"./EmptyState\";\nexport { default as Pill } from \"./Pill\";\nexport { default as IOSSwitch } from \"./IOSSwitch\";\nexport { default as StatusPill } from \"./StatusPill\";\nexport { default as FormPopover } from \"./FormPopover\";\nexport { default as SearchableSelect } from \"./SearchableSelect\";\nexport { default as FormDrawer } from \"./FormDrawer\";\nexport { default as PhoneNumberField } from \"./PhoneNumberField\";\n","// @ts-nocheck\nimport React from \"react\";\nimport {\n FormControl,\n InputLabel,\n Select,\n InputAdornment,\n IconButton,\n OutlinedInput,\n SelectChangeEvent,\n Typography,\n FormLabel,\n} from \"@mui/material\";\nimport { Clear } from \"@mui/icons-material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { prettifyString } from \"@verma-consulting/common-library\";\n\nconst useStyles = makeStyles((theme) => ({\n defaultMode: {\n paddingTop: 14,\n paddingBottom: 14,\n paddingLeft: 8,\n paddingRight: 8,\n cursor: \"pointer\",\n \"&:hover\": {\n borderRadius: 10,\n boxShadow: \"rgba(100, 100, 111, 0.2) 0px 7px 29px 0px\",\n },\n },\n formLabel: {\n cursor: \"pointer\",\n },\n formValue: {\n cursor: \"pointer\",\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n },\n}));\n\ninterface ClearableSelectProps {\n name: string;\n label: string;\n value: string | number | (string | number)[];\n onChange: (\n event: SelectChangeEvent<string | number | (string | number)[]>\n ) => void;\n size?: \"small\" | \"medium\";\n style?: React.CSSProperties;\n disabled?: boolean;\n onClear?: () => void;\n multiple?: boolean;\n defaultEditMode?: boolean;\n renderValue?: () => null;\n children: React.ReactNode;\n}\n\nconst ClearableSelect: React.FC<ClearableSelectProps> = ({\n name,\n label,\n value = \"\",\n onChange,\n size = \"small\",\n style,\n disabled = false,\n onClear,\n multiple = false,\n defaultEditMode = false,\n renderValue,\n children,\n}) => {\n const classes = useStyles();\n const wrapperRef = React.useRef(null);\n const [editMode, setEditMode] = React.useState(defaultEditMode);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n wrapperRef.current &&\n !(wrapperRef.current as any).contains(event.target)\n ) {\n setEditMode(false);\n }\n };\n\n if (editMode) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [editMode]);\n\n const isValueEmpty =\n multiple && Array.isArray(value) ? value.length === 0 : value === \"\";\n\n const handleClear = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (onClear) {\n onClear();\n setEditMode(false);\n } else {\n const fakeEvent = {\n target: { name, value: multiple ? [] : \"\" },\n } as unknown as SelectChangeEvent<string | number | (string | number)[]>;\n onChange(fakeEvent);\n }\n };\n\n if (editMode) {\n return (\n <FormControl\n variant=\"outlined\"\n size={size}\n style={style}\n disabled={disabled}\n fullWidth\n >\n <InputLabel id={`${name}-select-label`}>{label}</InputLabel>\n <Select\n labelId={`${name}-select-label`}\n id={`${name}-select`}\n name={name}\n multiple={multiple}\n value={multiple ? value?.split(\", \") : value}\n onChange={onChange}\n onBlur={() => setEditMode(false)}\n onClose={() => setEditMode(false)}\n label={label}\n input={\n <OutlinedInput\n size={size}\n color=\"primary\"\n endAdornment={\n onClear && !isValueEmpty ? (\n <InputAdornment position=\"end\" sx={{ gap: 1 }}>\n <IconButton\n aria-label={`clear ${name}`}\n onClick={handleClear}\n edge=\"end\"\n size=\"small\"\n sx={{ mr: 1 }}\n >\n <Clear fontSize=\"inherit\" />\n </IconButton>\n </InputAdornment>\n ) : null\n }\n label={label}\n name={name}\n sx={{\n paddingRight: !isValueEmpty ? 2 : undefined,\n }}\n />\n }\n renderValue={renderValue}\n >\n {children}\n </Select>\n </FormControl>\n );\n }\n return (\n <div\n onClick={() => {\n if (!disabled) {\n setEditMode(true);\n }\n }}\n className={classes.defaultMode}\n >\n <FormLabel className={classes.formLabel}>{label}</FormLabel>\n <Typography className={classes.formValue}>\n {renderValue ? renderValue(value) : prettifyString(value)}\n </Typography>\n </div>\n );\n};\n\nexport default ClearableSelect;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: number;\n value: number;\n}\n\nconst TabPanel = (props: TabPanelProps) => {\n const { children, value, index, ...other } = props;\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`simple-tabpanel-${index}`}\n {...other}\n >\n {value === index && <Box sx={{ p: 1 }}>{children}</Box>}\n </div>\n );\n};\n\nexport default TabPanel;\n","// @ts-nocheck\nimport React, { memo } from \"react\";\nimport {\n Grid,\n Typography,\n Avatar,\n Tooltip,\n Box,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { capitalizeSentence } from \"@verma-consulting/common-library\";\n\ntype LogoProps = {\n loggedIn?: boolean;\n centered?: boolean;\n organization?: {\n name?: string;\n logo?: { url?: string };\n } | null;\n defaultLogo?: React.ReactNode;\n companyComponent?: React.ReactNode;\n handleClick?: () => void;\n};\n\nconst Logo: React.FC<LogoProps> = memo(\n ({\n loggedIn = false,\n centered = false,\n organization = null,\n defaultLogo = null,\n handleClick = () => null,\n companyComponent = null,\n }) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n const maxWidth = mdMatches ? 160 : 320;\n\n const companyName = capitalizeSentence(organization?.name ?? \"\");\n const logoUrl = organization?.logo?.url;\n\n if (centered) {\n return (\n <Grid\n container\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n spacing={1}\n sx={{ cursor: \"pointer\" }}\n onClick={handleClick}\n >\n {/* Logo on top */}\n {(logoUrl || defaultLogo) && (\n <Grid item>\n {logoUrl ? (\n <Avatar\n alt={companyName || \"avatar\"}\n src={logoUrl}\n sx={{\n width: 64, // slightly bigger\n height: 64,\n bgcolor: \"primary.main\",\n fontSize: 20,\n fontWeight: \"bold\",\n }}\n imgProps={{ loading: \"lazy\" }}\n >\n {companyName?.charAt(0) || \"?\"}\n </Avatar>\n ) : (\n defaultLogo\n )}\n </Grid>\n )}\n\n {/* Company name or companyComponent below logo */}\n <Grid item sx={{ maxWidth, textAlign: \"center\" }}>\n {loggedIn ? (\n <Tooltip title={companyName} placement=\"top\" arrow>\n <Typography\n variant=\"h6\"\n sx={{\n fontFamily: \"Courier, monospace\",\n fontWeight: \"bold\",\n color: \"primary.main\",\n }}\n >\n {companyName}\n </Typography>\n </Tooltip>\n ) : (\n <Box sx={{ display: \"flex\", justifyContent: \"center\" }}>\n {companyComponent}\n </Box>\n )}\n </Grid>\n </Grid>\n );\n }\n\n // Default horizontal layout\n return (\n <Grid\n container\n alignItems=\"center\"\n wrap=\"nowrap\"\n sx={{\n cursor: \"pointer\",\n \"&:hover\": { opacity: 0.9, transition: \"opacity 0.2s ease-in-out\" },\n }}\n onClick={handleClick}\n >\n {(logoUrl || defaultLogo) && (\n <Box sx={{ mr: 1, display: \"flex\", alignItems: \"center\" }}>\n {logoUrl ? (\n <Avatar\n alt={companyName || \"avatar\"}\n src={logoUrl}\n sx={{\n width: 36,\n height: 36,\n bgcolor: \"primary.main\",\n fontSize: 14,\n fontWeight: \"bold\",\n }}\n imgProps={{ loading: \"lazy\" }}\n >\n {companyName?.charAt(0) || \"?\"}\n </Avatar>\n ) : (\n defaultLogo\n )}\n </Box>\n )}\n\n <Box sx={{ maxWidth, flexShrink: 1, minWidth: 0 }}>\n {loggedIn ? (\n <Tooltip title={companyName} placement=\"top\" arrow>\n <Typography\n variant=\"h6\"\n noWrap\n sx={{\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n fontFamily: \"Courier, monospace\",\n fontWeight: \"bold\",\n color: \"primary.main\",\n }}\n >\n {companyName}\n </Typography>\n </Tooltip>\n ) : (\n companyComponent\n )}\n </Box>\n </Grid>\n );\n }\n);\n\nexport default Logo;\n","// @ts-nocheck\nimport * as React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport {\n useTheme,\n useMediaQuery,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n} from \"@mui/material\";\nexport { useTheme } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\n \"& .MuiDialogContent-root\": {\n padding: theme.spacing(4),\n },\n \"& .MuiDialogActions-root\": {\n padding: theme.spacing(4),\n },\n}));\n\nexport interface DialogTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: () => void;\n}\n\nconst BootstrapDialogTitle = (props: DialogTitleProps) => {\n const { children, onClose, ...other } = props;\n\n return (\n <DialogTitle\n sx={{\n px: 3,\n py: 3,\n pt: 3.5,\n pb: 2.5,\n fontSize: \"1.25rem\",\n fontWeight: 600,\n letterSpacing: \"0.02em\",\n lineHeight: 1.35,\n }}\n {...other}\n >\n {children}\n {onClose ? (\n <IconButton\n onClick={onClose}\n sx={{\n position: \"absolute\",\n right: 16,\n top: 16,\n }}\n >\n <Close color=\"primary\" />\n </IconButton>\n ) : null}\n </DialogTitle>\n );\n};\n\nconst FormDialog = ({ open = false, setOpen, title = \"\", actions, children, maxWidth = \"lg\", ...props }) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n return (\n <BootstrapDialog fullWidth onClose={() => setOpen(false)} open={open} maxWidth={maxWidth} fullScreen={mdMatches}>\n <BootstrapDialogTitle onClose={() => setOpen(false)}>{title}</BootstrapDialogTitle>\n <DialogContent dividers>{children}</DialogContent>\n <DialogActions>{actions}</DialogActions>\n </BootstrapDialog>\n );\n};\n\nexport default FormDialog;\n","// @ts-nocheck\nimport React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport { Button } from \"@mui/material\";\nimport { CloudUpload } from \"@mui/icons-material\";\n\nconst VisuallyHiddenInput = styled(\"input\")({\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(50%)\",\n height: 1,\n overflow: \"hidden\",\n position: \"absolute\",\n bottom: 0,\n left: 0,\n whiteSpace: \"nowrap\",\n width: 1,\n});\n\nconst InputFileUpload = ({ name = \"\", onChange = () => null, title = \"\" }) => (\n <Button\n role={undefined}\n component=\"label\"\n size=\"small\"\n variant=\"contained\"\n tabIndex={-1}\n startIcon={<CloudUpload fontSize=\"inherit\" />}\n >\n {title}\n <VisuallyHiddenInput type=\"file\" name={name} onChange={onChange} />\n </Button>\n);\n\nexport default InputFileUpload;\n","import React, { useEffect, useRef, useState, ChangeEvent } from \"react\";\nimport { Box, IconButton } from \"@mui/material\";\nimport { styled } from \"@mui/material/styles\";\nimport { CloudUpload, Close as CloseIcon } from \"@mui/icons-material\";\n\ntype ImageUploadAvatarProps = {\n name?: string;\n defaultValue?: string | null;\n onChange?: (file: File | null, previewSrc: string | null) => void;\n size?: number;\n variant?: \"circular\" | \"rounded\" | \"square\";\n accept?: string;\n disabled?: boolean;\n allowClear?: boolean;\n};\n\nconst HiddenInput = styled(\"input\")({\n position: \"absolute\",\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0 0 0 0)\",\n border: 0,\n});\n\nconst Wrapper = styled(Box, {\n shouldForwardProp: (prop) => prop !== \"variant\" && prop !== \"size\",\n})<{ size: number; variant: \"circular\" | \"rounded\" | \"square\" }>(({ theme, size, variant }) => ({\n position: \"relative\",\n width: size,\n height: size,\n borderRadius: variant === \"circular\" ? \"50%\" : variant === \"rounded\" ? theme.shape.borderRadius * 2 : 0,\n border: `1px dashed ${theme.palette.grey[400]}`,\n backgroundColor: theme.palette.grey[200],\n overflow: \"hidden\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n}));\n\nconst PreviewImg = styled(\"img\")({\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n display: \"block\",\n});\n\nconst Overlay = styled(Box)(({ theme }) => ({\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 120ms ease\",\n borderRadius: \"inherit\",\n \"& .uploadIcon\": {\n opacity: 0,\n transition: \"opacity 120ms ease, transform 120ms ease\",\n transform: \"scale(0.95)\",\n },\n \"&.empty .uploadIcon\": {\n opacity: 0.6,\n transform: \"scale(1)\",\n },\n \"&.hover\": {\n background: \"rgba(0,0,0,0.15)\",\n \"& .uploadIcon\": { opacity: 1, transform: \"scale(1)\" },\n },\n}));\n\nconst ClearButton = styled(IconButton)(({ theme }) => ({\n position: \"absolute\",\n top: -8,\n right: -8,\n background: theme.palette.background.paper,\n boxShadow: theme.shadows[2],\n \"&:hover\": { background: theme.palette.background.paper },\n}));\n\nexport const ImageUploadAvatar: React.FC<ImageUploadAvatarProps> = ({\n name = \"image\",\n defaultValue = null,\n onChange,\n size = 128,\n variant = \"rounded\",\n accept = \"image/*\",\n disabled,\n allowClear = true,\n}) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [internalSrc, setInternalSrc] = useState<string | null>(defaultValue ?? null);\n const [hover, setHover] = useState(false);\n\n useEffect(() => {\n if (!defaultValue) return;\n if (!internalSrc || !internalSrc.startsWith(\"blob:\")) {\n setInternalSrc(defaultValue);\n }\n }, [defaultValue]);\n\n useEffect(() => {\n return () => {\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n };\n }, [internalSrc]);\n\n const handlePick = (e: ChangeEvent<HTMLInputElement>) => {\n const selected = e.target.files?.[0] ?? null;\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n let preview: string | null = null;\n if (selected) {\n preview = URL.createObjectURL(selected);\n setInternalSrc(preview);\n } else {\n setInternalSrc(null);\n }\n if (inputRef.current) inputRef.current.value = \"\";\n onChange?.(selected, preview);\n };\n\n const triggerPick = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n setInternalSrc(null);\n onChange?.(null, null);\n };\n\n return (\n <Wrapper\n role=\"button\"\n size={size}\n variant={variant}\n onPointerEnter={() => setHover(true)}\n onPointerLeave={() => setHover(false)}\n onClick={triggerPick}\n >\n {internalSrc && <PreviewImg src={internalSrc} />}\n <Overlay className={`${!internalSrc ? \"empty\" : \"\"} ${hover && !disabled ? \"hover\" : \"\"}`}>\n <CloudUpload className=\"uploadIcon\" fontSize=\"large\" />\n </Overlay>\n\n {allowClear && internalSrc && !disabled && (\n <ClearButton size=\"small\" aria-label=\"Clear image\" onClick={handleClear} sx={{ m: 1 }}>\n <CloseIcon fontSize=\"inherit\" />\n </ClearButton>\n )}\n\n <HiddenInput ref={inputRef} type=\"file\" name={name} accept={accept} onChange={handlePick} disabled={disabled} />\n </Wrapper>\n );\n};\n\nexport default ImageUploadAvatar;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Snackbar, Alert, AlertTitle, Slide } from \"@mui/material\";\n\nconst FormSnackBar = ({ snackBar = {}, setSnackBar = () => null }) => {\n const getAlertStyles = () => {\n if (snackBar?.type === \"success\") {\n return { backgroundColor: \"#65C466\", color: \"white\" };\n }\n return {};\n };\n\n return (\n <Snackbar\n sx={{ width: \"100%\" }}\n autoHideDuration={1000}\n anchorOrigin={{ vertical: \"top\", horizontal: \"center\" }}\n open={snackBar?.open || false}\n onClose={() =>\n setSnackBar({\n open: false,\n message: \"\",\n type: \"\",\n })\n }\n TransitionComponent={Slide}\n >\n <Alert\n sx={{\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n ...getAlertStyles(),\n }}\n variant=\"filled\"\n severity={snackBar?.type}\n >\n <AlertTitle sx={{ m: 0, p: 0 }}>{snackBar?.message}</AlertTitle>\n </Alert>\n </Snackbar>\n );\n};\n\nexport default FormSnackBar;\n","import React from \"react\";\nimport { CircularProgress, Backdrop } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\ninterface LoaderProps {\n size?: number;\n color?: \"primary\" | \"secondary\" | \"inherit\" | \"success\" | \"error\" | \"info\" | \"warning\";\n}\n\nconst useStyles = makeStyles({\n \"@keyframes pulse\": {\n \"0%\": { transform: \"scale(1)\", opacity: 0.9 },\n \"50%\": { transform: \"scale(1.05)\", opacity: 1 },\n \"100%\": { transform: \"scale(1)\", opacity: 0.9 },\n },\n progress: {\n animation: \"$pulse 1.5s ease-in-out infinite\",\n },\n});\n\nconst Loader: React.FC<LoaderProps> = ({ size = 48, color = \"primary\" }) => {\n const classes = useStyles();\n\n return (\n <Backdrop\n open\n sx={{\n zIndex: (theme) => theme.zIndex.modal + 1,\n backgroundColor: \"rgba(255, 255, 255, 0.15)\",\n backdropFilter: \"blur(2px)\",\n }}\n >\n <CircularProgress size={size} color={color} thickness={3.5} className={classes.progress} />\n </Backdrop>\n );\n};\n\nexport default Loader;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Box, useTheme } from \"@mui/material\";\n\nconst SHIMMER_KEYFRAMES = {\n \"@keyframes skeletonShimmer\": {\n \"0%\": { backgroundPosition: \"200% 0\" },\n \"100%\": { backgroundPosition: \"-200% 0\" },\n },\n};\n\nexport interface SkeletonBarProps {\n width?: string | number;\n height?: number;\n sx?: object;\n}\n\n/**\n * Horizontal bar with sideways shimmer loading animation.\n * Use in tables, cards, selects, and any loading placeholder.\n */\nexport const SkeletonBar: React.FC<SkeletonBarProps> = ({\n width = \"100%\",\n height = 24,\n sx = {},\n}) => {\n const theme = useTheme();\n const base =\n theme.palette.mode === \"dark\"\n ? theme.palette.grey?.[700] ?? \"#424242\"\n : theme.palette.grey?.[200] ?? \"#e0e0e0\";\n const highlight =\n theme.palette.mode === \"dark\"\n ? theme.palette.grey?.[600] ?? \"#616161\"\n : theme.palette.grey?.[100] ?? \"#f5f5f5\";\n\n return (\n <Box\n sx={{\n ...SHIMMER_KEYFRAMES,\n borderRadius: 2,\n height,\n width,\n maxWidth: \"100%\",\n overflow: \"hidden\",\n background: `linear-gradient(90deg, ${base} 0%, ${highlight} 20%, ${base} 40%, ${base} 100%)`,\n backgroundSize: \"200% 100%\",\n animation: \"skeletonShimmer 1.4s ease-in-out infinite\",\n ...sx,\n }}\n />\n );\n};\n\nexport default SkeletonBar;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Box, Typography, useTheme } from \"@mui/material\";\nimport { DatasetOutlined } from \"@mui/icons-material\";\n\nexport interface EmptyStateProps {\n /** Label text to display (e.g. getContent(\"noDataDescription\")) */\n label?: string;\n /** Vertical margin (theme spacing, default 8) */\n m?: number;\n /** Optional custom icon */\n icon?: React.ReactNode;\n}\n\nconst EmptyState: React.FC<EmptyStateProps> = ({ label, m = 8, icon }) => {\n const theme = useTheme();\n const text = label ?? \"No data created yet\";\n\n const iconColor =\n theme.palette.mode === \"dark\"\n ? \"rgba(255,255,255,0.42)\"\n : \"rgba(0,0,0,0.42)\";\n\n const labelColor =\n theme.palette.mode === \"dark\"\n ? \"rgba(255,255,255,0.50)\"\n : \"rgba(0,0,0,0.38)\";\n\n const iconEl =\n icon != null && React.isValidElement(icon) ? (\n icon\n ) : (\n <DatasetOutlined\n sx={{\n fontSize: 48,\n color: iconColor,\n display: \"block\",\n }}\n />\n );\n\n return (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 1.5,\n minHeight: 160,\n m,\n py: 3,\n px: 2,\n }}\n >\n {iconEl}\n <Typography\n variant=\"body2\"\n align=\"center\"\n sx={{\n fontWeight: 400,\n fontSize: \"0.875rem\",\n letterSpacing: \"0.01em\",\n color: labelColor,\n maxWidth: 320,\n lineHeight: 1.5,\n }}\n >\n {text}\n </Typography>\n </Box>\n );\n};\nexport default EmptyState;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Button, Typography, Icon, useTheme } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { isNullableType } from \"graphql\";\n\nexport type PillProps = {\n label?: string;\n leftIcon?: string;\n rightIcon?: string;\n color?: string;\n isSelected?: boolean;\n onClick?: () => void;\n disabled?: boolean;\n};\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n padding: \"4px 8px 4px 8px\",\n color: \"black\",\n borderColor: \"black\",\n borderStyle: \"solid\",\n border: \"6px\",\n borderRadius: \"24px !important\",\n \"&:hover\": {\n color: theme.palette.primary[500],\n },\n },\n}));\n\nconst Pill = ({\n variant = \"filter\",\n leftIcon = null,\n rightIcon = null,\n color = null,\n isSelected = false,\n onClick = () => null,\n label = \"\",\n disabled = false,\n}: PillProps) => {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n <Button\n variant={isSelected ? \"contained\" : \"outlined\"}\n color={color || \"primary\"}\n sx={{\n borderRadius: \"48px\",\n padding: \"8px 24px\",\n textTransform: \"none\",\n }}\n onClick={onClick}\n >\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n {leftIcon && (\n <Icon\n className={leftIcon}\n fontSize={14}\n color=\"inherit\"\n style={{ paddingRight: 8 }}\n data-testid=\"pill-left-icon\"\n />\n )}\n <Typography variant=\"subtitle\" color=\"inherit\" fontWeight={\"bold\"}>\n {label}\n </Typography>\n {rightIcon && (\n <Icon\n className={rightIcon}\n fontSize={14}\n color=\"inherit\"\n style={{ marginLeft: 8 }}\n data-testid=\"pill-right-icon\"\n />\n )}\n </div>\n </Button>\n );\n};\n\nexport default Pill;\n","import React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport Switch, { SwitchProps } from \"@mui/material/Switch\";\n\n// explicitly type as FC with SwitchProps\nconst IOSSwitch: React.FC<SwitchProps> = styled((props: SwitchProps) => (\n <Switch focusVisibleClassName=\".Mui-focusVisible\" disableRipple {...props} />\n))(({ theme }) => ({\n width: 46,\n height: 30,\n padding: 0,\n \"& .MuiSwitch-switchBase\": {\n padding: 0,\n margin: 2,\n transitionDuration: \"300ms\",\n \"&.Mui-checked\": {\n transform: \"translateX(16px)\",\n color: \"#fff\",\n \"& + .MuiSwitch-track\": {\n backgroundColor: theme.palette.primary.main,\n opacity: 1,\n border: 0,\n },\n \"&.Mui-disabled + .MuiSwitch-track\": {\n opacity: 0.5,\n },\n },\n \"&.Mui-focusVisible .MuiSwitch-thumb\": {\n color: \"#33cf4d\",\n border: \"6px solid #fff\",\n },\n \"&.Mui-disabled .MuiSwitch-thumb\": {\n color:\n theme.palette.mode === \"light\"\n ? theme.palette.grey[100]\n : theme.palette.grey[600],\n },\n \"&.Mui-disabled + .MuiSwitch-track\": {\n opacity: theme.palette.mode === \"light\" ? 0.7 : 0.3,\n },\n },\n \"& .MuiSwitch-thumb\": {\n boxSizing: \"border-box\",\n width: 26,\n height: 26,\n },\n \"& .MuiSwitch-track\": {\n borderRadius: 30 / 2,\n backgroundColor:\n theme.palette.mode === \"light\" ? \"#E9E9EA\" : theme.palette.grey[600],\n opacity: 1,\n transition: theme.transitions.create([\"background-color\"], {\n duration: 500,\n }),\n },\n}));\n\nexport default IOSSwitch;\n","import React from \"react\";\nimport { Chip } from \"@mui/material\";\nimport { userStatus } from \"@verma-consulting/common-library\";\n\ninterface StatusPillProps {\n status: userStatus;\n}\n\nconst statusColorMap: Record<\n userStatus,\n \"default\" | \"primary\" | \"secondary\" | \"success\" | \"error\" | \"warning\" | \"info\"\n> = {\n [userStatus.Pending]: \"warning\",\n [userStatus.Active]: \"success\",\n [userStatus.Inactive]: \"error\",\n [userStatus.Invited]: \"info\",\n};\n\nconst StatusPill: React.FC<StatusPillProps> = ({ status }) => (\n <Chip\n label={status}\n color={statusColorMap[status]}\n variant=\"outlined\"\n sx={{ fontWeight: 600, borderRadius: \"16px\", px: 1.5 }}\n />\n);\n\nexport default StatusPill;\n","import React, { useState, MouseEvent, ReactNode, FC } from \"react\";\nimport { Tooltip, IconButton, Popover } from \"@mui/material\";\nimport { MoreHoriz } from \"@mui/icons-material\";\n\ninterface FormPopoverProps {\n row?: any;\n children: (props: { row: any; handleClose: () => void }) => React.ReactNode;\n title?: string;\n}\n\nconst FormPopover: FC<FormPopoverProps> = ({ row, children, title }) => {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const open = Boolean(anchorEl);\n\n return (\n <>\n <Tooltip title={title}>\n <IconButton\n onClick={handleClick}\n size=\"small\"\n sx={{\n backgroundColor: \"white\",\n boxShadow: 1,\n borderRadius: \"50%\",\n border: \"1px solid transparent\",\n \"&:hover\": {\n border: (theme) => `1px solid ${theme.palette.primary.main}`,\n backgroundColor: \"#f0f0f0\",\n },\n }}\n >\n <MoreHoriz fontSize=\"inherit\" color=\"primary\" />\n </IconButton>\n </Tooltip>\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"left\",\n }}\n >\n {children({ row, handleClose })}\n </Popover>\n </>\n );\n};\n\nexport default FormPopover;\n","// @ts-nocheck\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\nimport {\n Autocomplete,\n TextField,\n Typography,\n FormLabel,\n FormControl,\n IconButton,\n} from \"@mui/material\";\nimport { Clear } from \"@mui/icons-material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { GenericPayload } from \"@verma-consulting/common-library\";\n\nconst useStyles = makeStyles(() => ({\n defaultMode: {\n padding: \"14px 8px\",\n cursor: \"pointer\",\n \"&:hover\": {\n borderRadius: 10,\n boxShadow: \"rgba(100, 100, 111, 0.2) 0px 7px 29px 0px\",\n },\n },\n formLabel: {\n cursor: \"pointer\",\n },\n formValue: {\n cursor: \"pointer\",\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n },\n}));\n\ninterface SearchableSelectProps {\n name: string;\n label: string;\n value: string;\n onChange: (value: string) => void;\n options: GenericPayload[];\n size?: \"small\" | \"medium\";\n style?: React.CSSProperties;\n disabled?: boolean;\n onClear?: () => void;\n defaultEditMode?: boolean;\n multiple?: boolean;\n}\n\nconst SearchableSelect: React.FC<SearchableSelectProps> = React.memo(\n ({\n name,\n label,\n value,\n onChange,\n options,\n size = \"small\",\n style,\n disabled = false,\n onClear,\n defaultEditMode = false,\n multiple = false,\n }) => {\n const classes = useStyles();\n const wrapperRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [editMode, setEditMode] = useState(defaultEditMode);\n const [open, setOpen] = useState(defaultEditMode);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n wrapperRef.current &&\n !wrapperRef.current.contains(event.target as Node)\n ) {\n setEditMode(false);\n setOpen(false);\n }\n }\n\n if (editMode) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [editMode]);\n\n useEffect(() => {\n if (editMode && open && inputRef.current) {\n inputRef.current.focus();\n }\n }, [editMode, open]);\n\n const handleClear = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (onClear) {\n onClear();\n } else {\n onChange(\"\");\n }\n setEditMode(false);\n setOpen(false);\n };\n\n const selected = useMemo(() => {\n if (multiple) {\n if (!value.trim()) return [];\n const selectedValues = value.split(\", \").map((v) => v.trim());\n return options.filter((opt) => selectedValues.includes(opt.value));\n } else {\n return options.find((opt) => opt.value === value) ?? null;\n }\n }, [value, options, multiple]);\n\n const displayValue = useMemo(() => {\n if (multiple) {\n if (!Array.isArray(selected)) return \"\";\n return selected.map((opt) => opt.label).join(\", \");\n } else {\n return (selected as GenericPayload | null)?.label ?? \"\";\n }\n }, [selected, multiple]);\n\n const isValueEmpty = !value.trim();\n\n return editMode ? (\n <FormControl fullWidth style={style} disabled={disabled} size={size}>\n <Autocomplete\n multiple={multiple}\n disableCloseOnSelect={multiple}\n options={options}\n value={selected}\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n onChange={(_, newValue) => {\n if (multiple) {\n if (Array.isArray(newValue)) {\n let vals = newValue?.map((opt) => opt?.value);\n let val = vals?.join(\", \");\n onChange(val);\n } else {\n onChange(\"\");\n }\n setOpen(true);\n } else {\n onChange((newValue as GenericPayload | null)?.value ?? \"\");\n setOpen(false);\n }\n }}\n disableClearable={!onClear}\n autoHighlight\n getOptionLabel={(option) => option.label}\n isOptionEqualToValue={(option, val) => option.value === val.value}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n variant=\"outlined\"\n size={size}\n inputRef={inputRef}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {!isValueEmpty && (\n <IconButton\n aria-label={`clear ${name}`}\n onClick={handleClear}\n size=\"small\"\n sx={{\n backgroundColor: \"transparent\",\n boxShadow: \"none\",\n }}\n >\n <Clear fontSize=\"inherit\" />\n </IconButton>\n )}\n </>\n ),\n }}\n />\n )}\n onBlur={() => {\n setEditMode(false);\n setOpen(false);\n }}\n />\n </FormControl>\n ) : (\n <div\n ref={wrapperRef}\n onClick={() => {\n if (!disabled) {\n setEditMode(true);\n setOpen(true);\n }\n }}\n className={classes.defaultMode}\n style={style}\n >\n <FormLabel className={classes.formLabel}>{label}</FormLabel>\n <Typography className={classes.formValue}>{displayValue}</Typography>\n </div>\n );\n }\n);\n\nexport default SearchableSelect;\n","import {\n Drawer,\n Typography,\n Box,\n IconButton,\n Grid,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface FormDrawerProps {\n open: boolean;\n setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n title?: string | null;\n actions?: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst FormDrawer: React.FC<FormDrawerProps> = ({\n open,\n setOpen,\n title,\n actions,\n children,\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n return (\n <Drawer\n anchor={mdMatches ? \"bottom\" : \"right\"}\n open={open}\n onClose={() => setOpen(false)}\n sx={{\n \"& .MuiDrawer-paper\": {\n width: mdMatches ? \"100%\" : \"64%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: 0,\n },\n }}\n >\n <Box p={3} borderBottom=\"1px solid #eee\">\n <Grid container>\n <Grid item>\n {title && (\n <Typography variant=\"h6\" fontWeight=\"bold\">\n {title}\n </Typography>\n )}\n </Grid>\n <Grid item>\n <IconButton\n size=\"medium\"\n onClick={() => setOpen(false)}\n sx={{\n position: \"absolute\",\n top: 8,\n right: 8,\n zIndex: 2,\n }}\n >\n <Close fontSize=\"inherit\" />\n </IconButton>\n </Grid>\n </Grid>\n </Box>\n <Box flex={1} overflow=\"auto\" p={3}>\n {children}\n </Box>\n\n {actions && (\n <Box\n p={2}\n borderTop=\"1px solid #eee\"\n sx={{\n position: \"sticky\",\n bottom: 0,\n zIndex: 1,\n }}\n >\n {actions}\n </Box>\n )}\n </Drawer>\n );\n};\n\nexport default FormDrawer;\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n ChangeEvent,\n FocusEvent,\n} from \"react\";\nimport {\n Box,\n Stack,\n TextField,\n MenuItem,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { constants } from \"@verma-consulting/common-library\";\n\ninterface PhoneNumberFieldProps {\n value?: string | null;\n onChange: (e164: string) => void;\n defaultCountry?: string;\n label?: string;\n size?: \"small\" | \"medium\";\n disabled?: boolean;\n autoFocus?: boolean;\n onBlur?: () => void;\n}\n\nconst PhoneNumberField: React.FC<PhoneNumberFieldProps> = ({\n value = \"\",\n onChange,\n defaultCountry = \"US\",\n label = \"Phone number\",\n size = \"small\",\n disabled = false,\n autoFocus = false,\n onBlur,\n}) => {\n const theme = useTheme();\n const smMatches = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const countries = (constants.COUNTRIES || []) as any;\n\n const [country, setCountry] = useState(defaultCountry);\n const [localNumber, setLocalNumber] = useState(\"\");\n const [isFocused, setIsFocused] = useState(false);\n const [selectOpen, setSelectOpen] = useState(false);\n const [ignoreNextOutsideClick, setIgnoreNextOutsideClick] = useState(false);\n\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const parseE164 = useCallback(\n (val: string) => {\n const cleaned = (val || \"\").toString().replace(/\\D/g, \"\");\n if (!cleaned) return { dial: \"\", local: \"\" };\n\n const sorted = [...countries].sort(\n (a, b) => b.phone.length - a.phone.length\n );\n const found = sorted.find((c) => cleaned.startsWith(c.phone));\n if (found) {\n const dial = found.phone;\n const local = cleaned.slice(dial.length);\n return { dial, local: local.slice(-10) };\n }\n return { dial: \"\", local: cleaned.slice(-10) };\n },\n [countries]\n );\n\n useEffect(() => {\n if (isFocused) return;\n if (!value) {\n setLocalNumber(\"\");\n return;\n }\n const { dial, local } = parseE164(String(value));\n if (dial) {\n const found = countries.find((c: any) => c.phone === dial);\n if (found) setCountry(found.code);\n }\n setLocalNumber(local);\n }, [value, parseE164, countries, isFocused]);\n\n const formatLocalNumber = (digits: string) => {\n const cleaned = digits.replace(/\\D/g, \"\").slice(0, 10);\n let formatted = \"\";\n if (cleaned.length > 0) formatted += cleaned.slice(0, 3);\n if (cleaned.length > 3) formatted += \"-\" + cleaned.slice(3, 6);\n if (cleaned.length > 6) formatted += \"-\" + cleaned.slice(6, 10);\n return formatted;\n };\n\n const commitValue = useCallback(() => {\n const sel = countries.find((c: any) => c.code === country);\n const dial = sel?.phone ?? \"\";\n if (dial && localNumber) {\n onChange(`+${dial}${localNumber}`);\n } else {\n onChange(\"\");\n }\n }, [countries, country, localNumber, onChange]);\n\n const handleLocalChange = (e: ChangeEvent<HTMLInputElement>) => {\n const digits = e.target.value.replace(/\\D/g, \"\").slice(0, 10);\n setLocalNumber(digits);\n };\n\n const handleCountryChange = (e: ChangeEvent<HTMLInputElement>) => {\n setCountry(e.target.value);\n };\n\n useEffect(() => {\n const onDocMouseDown = (ev: MouseEvent) => {\n if (!wrapperRef.current) return;\n if (wrapperRef.current.contains(ev.target as Node)) return;\n if (ignoreNextOutsideClick) {\n setIgnoreNextOutsideClick(false);\n return;\n }\n if (isFocused && !selectOpen) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n return () => document.removeEventListener(\"mousedown\", onDocMouseDown);\n }, [isFocused, selectOpen, ignoreNextOutsideClick, commitValue, onBlur]);\n\n const handleWrapperBlur = (e: FocusEvent<HTMLDivElement>) => {\n const next = e.relatedTarget as Node | null;\n if (wrapperRef.current && next && wrapperRef.current.contains(next)) return;\n if (selectOpen) return;\n if (isFocused) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n\n return (\n <Box\n ref={wrapperRef}\n onFocusCapture={() => setIsFocused(true)}\n onBlurCapture={handleWrapperBlur}\n sx={{ display: \"flex\", alignItems: \"center\", width: \"100%\" }}\n >\n <Stack\n direction=\"row\"\n spacing={0}\n alignItems=\"center\"\n sx={{ width: \"100%\" }}\n >\n <TextField\n select\n value={country}\n onChange={handleCountryChange}\n disabled={disabled}\n size={size}\n sx={{\n width: 140,\n \"& .MuiOutlinedInput-root\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n }}\n SelectProps={{\n renderValue: (val: unknown) => {\n const code =\n typeof val === \"string\" ? val : defaultCountry.toUpperCase();\n const c = countries.find((x: any) => x.code === code);\n return c ? `${c.code} (+${c.phone})` : code;\n },\n onOpen: () => {\n setSelectOpen(true);\n setIgnoreNextOutsideClick(true);\n },\n onClose: () => setSelectOpen(false),\n }}\n >\n {countries.map((option: any) => (\n <MenuItem key={option.code} value={option.code}>\n {option.code} (+{option.phone})\n </MenuItem>\n ))}\n </TextField>\n <TextField\n label={label}\n value={localNumber ? formatLocalNumber(localNumber) : \"\"}\n onChange={handleLocalChange}\n placeholder=\" - - \"\n inputProps={{\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n maxLength: 12,\n }}\n disabled={disabled}\n size={size}\n autoFocus={autoFocus}\n fullWidth\n sx={{\n \"& .MuiOutlinedInput-root\": {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n },\n }}\n />\n </Stack>\n </Box>\n );\n};\n\nexport default PhoneNumberField;\n"],"mappings":"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","names":["React","import_material","import_jsx_runtime","import_styles","import_react","import_material","import_common_library","import_jsx_runtime","import_styles","import_material","import_icons_material","import_jsx_runtime","import_styles","import_material","import_icons_material","import_jsx_runtime","import_react","import_material","import_styles","import_icons_material","import_jsx_runtime","CloseIcon","import_material","import_jsx_runtime","import_material","import_styles","import_jsx_runtime","useStyles","import_material","import_jsx_runtime","import_react","import_material","import_icons_material","import_jsx_runtime","React","import_material","import_styles","import_jsx_runtime","useStyles","import_styles","import_jsx_runtime","Switch","import_material","import_common_library","import_jsx_runtime","import_react","import_material","import_icons_material","import_jsx_runtime","import_react","import_material","import_icons_material","import_styles","import_jsx_runtime","useStyles","React","import_material","import_icons_material","import_jsx_runtime","import_react","import_material","import_common_library","import_jsx_runtime"]}
package/dist/index.mjs CHANGED
@@ -661,18 +661,18 @@ var SkeletonBar_default = SkeletonBar;
661
661
  // src/EmptyState.tsx
662
662
  import React4 from "react";
663
663
  import { Box as Box5, Typography as Typography3, useTheme as useTheme5 } from "@mui/material";
664
- import { StorageOutlined } from "@mui/icons-material";
664
+ import { DatasetOutlined } from "@mui/icons-material";
665
665
  import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
666
666
  var EmptyState = ({ label, m = 8, icon }) => {
667
- var _a, _b, _c, _d;
668
667
  const theme = useTheme5();
669
- const text = label != null ? label : "No data here";
670
- const iconColor = theme.palette.mode === "dark" ? (_b = (_a = theme.palette.grey) == null ? void 0 : _a[600]) != null ? _b : "rgba(255,255,255,0.25)" : (_d = (_c = theme.palette.grey) == null ? void 0 : _c[300]) != null ? _d : "rgba(0,0,0,0.18)";
668
+ const text = label != null ? label : "No data created yet";
669
+ const iconColor = theme.palette.mode === "dark" ? "rgba(255,255,255,0.42)" : "rgba(0,0,0,0.42)";
670
+ const labelColor = theme.palette.mode === "dark" ? "rgba(255,255,255,0.50)" : "rgba(0,0,0,0.38)";
671
671
  const iconEl = icon != null && React4.isValidElement(icon) ? icon : /* @__PURE__ */ jsx10(
672
- StorageOutlined,
672
+ DatasetOutlined,
673
673
  {
674
674
  sx: {
675
- fontSize: 72,
675
+ fontSize: 48,
676
676
  color: iconColor,
677
677
  display: "block"
678
678
  }
@@ -686,40 +686,25 @@ var EmptyState = ({ label, m = 8, icon }) => {
686
686
  flexDirection: "column",
687
687
  alignItems: "center",
688
688
  justifyContent: "center",
689
- minHeight: 140,
689
+ gap: 1.5,
690
+ minHeight: 160,
690
691
  m,
691
- position: "relative"
692
+ py: 3,
693
+ px: 2
692
694
  },
693
695
  children: [
694
- /* @__PURE__ */ jsx10(
695
- Box5,
696
- {
697
- sx: {
698
- position: "absolute",
699
- top: "50%",
700
- left: "50%",
701
- transform: "translate(-50%, -50%)",
702
- pointerEvents: "none",
703
- display: "flex",
704
- alignItems: "center",
705
- justifyContent: "center"
706
- },
707
- children: iconEl
708
- }
709
- ),
696
+ iconEl,
710
697
  /* @__PURE__ */ jsx10(
711
698
  Typography3,
712
699
  {
713
- variant: "subtitle1",
700
+ variant: "body2",
714
701
  align: "center",
715
702
  sx: {
716
- position: "relative",
717
- zIndex: 1,
718
- fontWeight: 600,
719
- fontSize: "1rem",
703
+ fontWeight: 400,
704
+ fontSize: "0.875rem",
720
705
  letterSpacing: "0.01em",
721
- color: "text.secondary",
722
- maxWidth: 360,
706
+ color: labelColor,
707
+ maxWidth: 320,
723
708
  lineHeight: 1.5
724
709
  },
725
710
  children: text
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.tsx","../src/ClearableSelect.tsx","../src/TabPanel.tsx","../src/Logo.tsx","../src/FormDialog.tsx","../src/InputFileUpload.tsx","../src/ImageUploadAvatar.tsx","../src/FormSnackBar.tsx","../src/Loader.tsx","../src/SkeletonBar.tsx","../src/EmptyState.tsx","../src/Pill.tsx","../src/IOSSwitch.tsx","../src/StatusPill.tsx","../src/FormPopover.tsx","../src/SearchableSelect.tsx","../src/FormDrawer.tsx","../src/PhoneNumberField.tsx"],"sourcesContent":["export * from \"@mui/material\";\nexport { default as ClearableSelect } from \"./ClearableSelect\";\nexport { default as TabPanel } from \"./TabPanel\";\nexport {\n useTheme,\n styled,\n createTheme,\n ThemeProvider,\n} from \"@mui/material/styles\";\nexport { makeStyles } from \"@mui/styles\";\nexport { default as Logo } from \"./Logo\";\nexport { default as FormDialog } from \"./FormDialog\";\nexport { default as InputFileUpload } from \"./InputFileUpload\";\nexport { default as ImageUploadAvatar } from \"./ImageUploadAvatar\";\nexport { default as FormSnackBar } from \"./FormSnackBar\";\nexport { default as Loader } from \"./Loader\";\nexport { default as SkeletonBar } from \"./SkeletonBar\";\nexport { default as EmptyState } from \"./EmptyState\";\nexport { default as Pill } from \"./Pill\";\nexport { default as IOSSwitch } from \"./IOSSwitch\";\nexport { default as StatusPill } from \"./StatusPill\";\nexport { default as FormPopover } from \"./FormPopover\";\nexport { default as SearchableSelect } from \"./SearchableSelect\";\nexport { default as FormDrawer } from \"./FormDrawer\";\nexport { default as PhoneNumberField } from \"./PhoneNumberField\";\n","// @ts-nocheck\nimport React from \"react\";\nimport {\n FormControl,\n InputLabel,\n Select,\n InputAdornment,\n IconButton,\n OutlinedInput,\n SelectChangeEvent,\n Typography,\n FormLabel,\n} from \"@mui/material\";\nimport { Clear } from \"@mui/icons-material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { prettifyString } from \"@verma-consulting/common-library\";\n\nconst useStyles = makeStyles((theme) => ({\n defaultMode: {\n paddingTop: 14,\n paddingBottom: 14,\n paddingLeft: 8,\n paddingRight: 8,\n cursor: \"pointer\",\n \"&:hover\": {\n borderRadius: 10,\n boxShadow: \"rgba(100, 100, 111, 0.2) 0px 7px 29px 0px\",\n },\n },\n formLabel: {\n cursor: \"pointer\",\n },\n formValue: {\n cursor: \"pointer\",\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n },\n}));\n\ninterface ClearableSelectProps {\n name: string;\n label: string;\n value: string | number | (string | number)[];\n onChange: (\n event: SelectChangeEvent<string | number | (string | number)[]>\n ) => void;\n size?: \"small\" | \"medium\";\n style?: React.CSSProperties;\n disabled?: boolean;\n onClear?: () => void;\n multiple?: boolean;\n defaultEditMode?: boolean;\n renderValue?: () => null;\n children: React.ReactNode;\n}\n\nconst ClearableSelect: React.FC<ClearableSelectProps> = ({\n name,\n label,\n value = \"\",\n onChange,\n size = \"small\",\n style,\n disabled = false,\n onClear,\n multiple = false,\n defaultEditMode = false,\n renderValue,\n children,\n}) => {\n const classes = useStyles();\n const wrapperRef = React.useRef(null);\n const [editMode, setEditMode] = React.useState(defaultEditMode);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n wrapperRef.current &&\n !(wrapperRef.current as any).contains(event.target)\n ) {\n setEditMode(false);\n }\n };\n\n if (editMode) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [editMode]);\n\n const isValueEmpty =\n multiple && Array.isArray(value) ? value.length === 0 : value === \"\";\n\n const handleClear = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (onClear) {\n onClear();\n setEditMode(false);\n } else {\n const fakeEvent = {\n target: { name, value: multiple ? [] : \"\" },\n } as unknown as SelectChangeEvent<string | number | (string | number)[]>;\n onChange(fakeEvent);\n }\n };\n\n if (editMode) {\n return (\n <FormControl\n variant=\"outlined\"\n size={size}\n style={style}\n disabled={disabled}\n fullWidth\n >\n <InputLabel id={`${name}-select-label`}>{label}</InputLabel>\n <Select\n labelId={`${name}-select-label`}\n id={`${name}-select`}\n name={name}\n multiple={multiple}\n value={multiple ? value?.split(\", \") : value}\n onChange={onChange}\n onBlur={() => setEditMode(false)}\n onClose={() => setEditMode(false)}\n label={label}\n input={\n <OutlinedInput\n size={size}\n color=\"primary\"\n endAdornment={\n onClear && !isValueEmpty ? (\n <InputAdornment position=\"end\" sx={{ gap: 1 }}>\n <IconButton\n aria-label={`clear ${name}`}\n onClick={handleClear}\n edge=\"end\"\n size=\"small\"\n sx={{ mr: 1 }}\n >\n <Clear fontSize=\"inherit\" />\n </IconButton>\n </InputAdornment>\n ) : null\n }\n label={label}\n name={name}\n sx={{\n paddingRight: !isValueEmpty ? 2 : undefined,\n }}\n />\n }\n renderValue={renderValue}\n >\n {children}\n </Select>\n </FormControl>\n );\n }\n return (\n <div\n onClick={() => {\n if (!disabled) {\n setEditMode(true);\n }\n }}\n className={classes.defaultMode}\n >\n <FormLabel className={classes.formLabel}>{label}</FormLabel>\n <Typography className={classes.formValue}>\n {renderValue ? renderValue(value) : prettifyString(value)}\n </Typography>\n </div>\n );\n};\n\nexport default ClearableSelect;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: number;\n value: number;\n}\n\nconst TabPanel = (props: TabPanelProps) => {\n const { children, value, index, ...other } = props;\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`simple-tabpanel-${index}`}\n {...other}\n >\n {value === index && <Box sx={{ p: 1 }}>{children}</Box>}\n </div>\n );\n};\n\nexport default TabPanel;\n","// @ts-nocheck\nimport React, { memo } from \"react\";\nimport {\n Grid,\n Typography,\n Avatar,\n Tooltip,\n Box,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { capitalizeSentence } from \"@verma-consulting/common-library\";\n\ntype LogoProps = {\n loggedIn?: boolean;\n centered?: boolean;\n organization?: {\n name?: string;\n logo?: { url?: string };\n } | null;\n defaultLogo?: React.ReactNode;\n companyComponent?: React.ReactNode;\n handleClick?: () => void;\n};\n\nconst Logo: React.FC<LogoProps> = memo(\n ({\n loggedIn = false,\n centered = false,\n organization = null,\n defaultLogo = null,\n handleClick = () => null,\n companyComponent = null,\n }) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n const maxWidth = mdMatches ? 160 : 320;\n\n const companyName = capitalizeSentence(organization?.name ?? \"\");\n const logoUrl = organization?.logo?.url;\n\n if (centered) {\n return (\n <Grid\n container\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n spacing={1}\n sx={{ cursor: \"pointer\" }}\n onClick={handleClick}\n >\n {/* Logo on top */}\n {(logoUrl || defaultLogo) && (\n <Grid item>\n {logoUrl ? (\n <Avatar\n alt={companyName || \"avatar\"}\n src={logoUrl}\n sx={{\n width: 64, // slightly bigger\n height: 64,\n bgcolor: \"primary.main\",\n fontSize: 20,\n fontWeight: \"bold\",\n }}\n imgProps={{ loading: \"lazy\" }}\n >\n {companyName?.charAt(0) || \"?\"}\n </Avatar>\n ) : (\n defaultLogo\n )}\n </Grid>\n )}\n\n {/* Company name or companyComponent below logo */}\n <Grid item sx={{ maxWidth, textAlign: \"center\" }}>\n {loggedIn ? (\n <Tooltip title={companyName} placement=\"top\" arrow>\n <Typography\n variant=\"h6\"\n sx={{\n fontFamily: \"Courier, monospace\",\n fontWeight: \"bold\",\n color: \"primary.main\",\n }}\n >\n {companyName}\n </Typography>\n </Tooltip>\n ) : (\n <Box sx={{ display: \"flex\", justifyContent: \"center\" }}>\n {companyComponent}\n </Box>\n )}\n </Grid>\n </Grid>\n );\n }\n\n // Default horizontal layout\n return (\n <Grid\n container\n alignItems=\"center\"\n wrap=\"nowrap\"\n sx={{\n cursor: \"pointer\",\n \"&:hover\": { opacity: 0.9, transition: \"opacity 0.2s ease-in-out\" },\n }}\n onClick={handleClick}\n >\n {(logoUrl || defaultLogo) && (\n <Box sx={{ mr: 1, display: \"flex\", alignItems: \"center\" }}>\n {logoUrl ? (\n <Avatar\n alt={companyName || \"avatar\"}\n src={logoUrl}\n sx={{\n width: 36,\n height: 36,\n bgcolor: \"primary.main\",\n fontSize: 14,\n fontWeight: \"bold\",\n }}\n imgProps={{ loading: \"lazy\" }}\n >\n {companyName?.charAt(0) || \"?\"}\n </Avatar>\n ) : (\n defaultLogo\n )}\n </Box>\n )}\n\n <Box sx={{ maxWidth, flexShrink: 1, minWidth: 0 }}>\n {loggedIn ? (\n <Tooltip title={companyName} placement=\"top\" arrow>\n <Typography\n variant=\"h6\"\n noWrap\n sx={{\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n fontFamily: \"Courier, monospace\",\n fontWeight: \"bold\",\n color: \"primary.main\",\n }}\n >\n {companyName}\n </Typography>\n </Tooltip>\n ) : (\n companyComponent\n )}\n </Box>\n </Grid>\n );\n }\n);\n\nexport default Logo;\n","// @ts-nocheck\nimport * as React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport {\n useTheme,\n useMediaQuery,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n} from \"@mui/material\";\nexport { useTheme } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\n \"& .MuiDialogContent-root\": {\n padding: theme.spacing(4),\n },\n \"& .MuiDialogActions-root\": {\n padding: theme.spacing(4),\n },\n}));\n\nexport interface DialogTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: () => void;\n}\n\nconst BootstrapDialogTitle = (props: DialogTitleProps) => {\n const { children, onClose, ...other } = props;\n\n return (\n <DialogTitle\n sx={{\n px: 3,\n py: 3,\n pt: 3.5,\n pb: 2.5,\n fontSize: \"1.25rem\",\n fontWeight: 600,\n letterSpacing: \"0.02em\",\n lineHeight: 1.35,\n }}\n {...other}\n >\n {children}\n {onClose ? (\n <IconButton\n onClick={onClose}\n sx={{\n position: \"absolute\",\n right: 16,\n top: 16,\n }}\n >\n <Close color=\"primary\" />\n </IconButton>\n ) : null}\n </DialogTitle>\n );\n};\n\nconst FormDialog = ({ open = false, setOpen, title = \"\", actions, children, maxWidth = \"lg\", ...props }) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n return (\n <BootstrapDialog fullWidth onClose={() => setOpen(false)} open={open} maxWidth={maxWidth} fullScreen={mdMatches}>\n <BootstrapDialogTitle onClose={() => setOpen(false)}>{title}</BootstrapDialogTitle>\n <DialogContent dividers>{children}</DialogContent>\n <DialogActions>{actions}</DialogActions>\n </BootstrapDialog>\n );\n};\n\nexport default FormDialog;\n","// @ts-nocheck\nimport React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport { Button } from \"@mui/material\";\nimport { CloudUpload } from \"@mui/icons-material\";\n\nconst VisuallyHiddenInput = styled(\"input\")({\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(50%)\",\n height: 1,\n overflow: \"hidden\",\n position: \"absolute\",\n bottom: 0,\n left: 0,\n whiteSpace: \"nowrap\",\n width: 1,\n});\n\nconst InputFileUpload = ({ name = \"\", onChange = () => null, title = \"\" }) => (\n <Button\n role={undefined}\n component=\"label\"\n size=\"small\"\n variant=\"contained\"\n tabIndex={-1}\n startIcon={<CloudUpload fontSize=\"inherit\" />}\n >\n {title}\n <VisuallyHiddenInput type=\"file\" name={name} onChange={onChange} />\n </Button>\n);\n\nexport default InputFileUpload;\n","import React, { useEffect, useRef, useState, ChangeEvent } from \"react\";\nimport { Box, IconButton } from \"@mui/material\";\nimport { styled } from \"@mui/material/styles\";\nimport { CloudUpload, Close as CloseIcon } from \"@mui/icons-material\";\n\ntype ImageUploadAvatarProps = {\n name?: string;\n defaultValue?: string | null;\n onChange?: (file: File | null, previewSrc: string | null) => void;\n size?: number;\n variant?: \"circular\" | \"rounded\" | \"square\";\n accept?: string;\n disabled?: boolean;\n allowClear?: boolean;\n};\n\nconst HiddenInput = styled(\"input\")({\n position: \"absolute\",\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0 0 0 0)\",\n border: 0,\n});\n\nconst Wrapper = styled(Box, {\n shouldForwardProp: (prop) => prop !== \"variant\" && prop !== \"size\",\n})<{ size: number; variant: \"circular\" | \"rounded\" | \"square\" }>(({ theme, size, variant }) => ({\n position: \"relative\",\n width: size,\n height: size,\n borderRadius: variant === \"circular\" ? \"50%\" : variant === \"rounded\" ? theme.shape.borderRadius * 2 : 0,\n border: `1px dashed ${theme.palette.grey[400]}`,\n backgroundColor: theme.palette.grey[200],\n overflow: \"hidden\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n}));\n\nconst PreviewImg = styled(\"img\")({\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n display: \"block\",\n});\n\nconst Overlay = styled(Box)(({ theme }) => ({\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 120ms ease\",\n borderRadius: \"inherit\",\n \"& .uploadIcon\": {\n opacity: 0,\n transition: \"opacity 120ms ease, transform 120ms ease\",\n transform: \"scale(0.95)\",\n },\n \"&.empty .uploadIcon\": {\n opacity: 0.6,\n transform: \"scale(1)\",\n },\n \"&.hover\": {\n background: \"rgba(0,0,0,0.15)\",\n \"& .uploadIcon\": { opacity: 1, transform: \"scale(1)\" },\n },\n}));\n\nconst ClearButton = styled(IconButton)(({ theme }) => ({\n position: \"absolute\",\n top: -8,\n right: -8,\n background: theme.palette.background.paper,\n boxShadow: theme.shadows[2],\n \"&:hover\": { background: theme.palette.background.paper },\n}));\n\nexport const ImageUploadAvatar: React.FC<ImageUploadAvatarProps> = ({\n name = \"image\",\n defaultValue = null,\n onChange,\n size = 128,\n variant = \"rounded\",\n accept = \"image/*\",\n disabled,\n allowClear = true,\n}) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [internalSrc, setInternalSrc] = useState<string | null>(defaultValue ?? null);\n const [hover, setHover] = useState(false);\n\n useEffect(() => {\n if (!defaultValue) return;\n if (!internalSrc || !internalSrc.startsWith(\"blob:\")) {\n setInternalSrc(defaultValue);\n }\n }, [defaultValue]);\n\n useEffect(() => {\n return () => {\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n };\n }, [internalSrc]);\n\n const handlePick = (e: ChangeEvent<HTMLInputElement>) => {\n const selected = e.target.files?.[0] ?? null;\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n let preview: string | null = null;\n if (selected) {\n preview = URL.createObjectURL(selected);\n setInternalSrc(preview);\n } else {\n setInternalSrc(null);\n }\n if (inputRef.current) inputRef.current.value = \"\";\n onChange?.(selected, preview);\n };\n\n const triggerPick = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n setInternalSrc(null);\n onChange?.(null, null);\n };\n\n return (\n <Wrapper\n role=\"button\"\n size={size}\n variant={variant}\n onPointerEnter={() => setHover(true)}\n onPointerLeave={() => setHover(false)}\n onClick={triggerPick}\n >\n {internalSrc && <PreviewImg src={internalSrc} />}\n <Overlay className={`${!internalSrc ? \"empty\" : \"\"} ${hover && !disabled ? \"hover\" : \"\"}`}>\n <CloudUpload className=\"uploadIcon\" fontSize=\"large\" />\n </Overlay>\n\n {allowClear && internalSrc && !disabled && (\n <ClearButton size=\"small\" aria-label=\"Clear image\" onClick={handleClear} sx={{ m: 1 }}>\n <CloseIcon fontSize=\"inherit\" />\n </ClearButton>\n )}\n\n <HiddenInput ref={inputRef} type=\"file\" name={name} accept={accept} onChange={handlePick} disabled={disabled} />\n </Wrapper>\n );\n};\n\nexport default ImageUploadAvatar;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Snackbar, Alert, AlertTitle, Slide } from \"@mui/material\";\n\nconst FormSnackBar = ({ snackBar = {}, setSnackBar = () => null }) => {\n const getAlertStyles = () => {\n if (snackBar?.type === \"success\") {\n return { backgroundColor: \"#65C466\", color: \"white\" };\n }\n return {};\n };\n\n return (\n <Snackbar\n sx={{ width: \"100%\" }}\n autoHideDuration={1000}\n anchorOrigin={{ vertical: \"top\", horizontal: \"center\" }}\n open={snackBar?.open || false}\n onClose={() =>\n setSnackBar({\n open: false,\n message: \"\",\n type: \"\",\n })\n }\n TransitionComponent={Slide}\n >\n <Alert\n sx={{\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n ...getAlertStyles(),\n }}\n variant=\"filled\"\n severity={snackBar?.type}\n >\n <AlertTitle sx={{ m: 0, p: 0 }}>{snackBar?.message}</AlertTitle>\n </Alert>\n </Snackbar>\n );\n};\n\nexport default FormSnackBar;\n","import React from \"react\";\nimport { CircularProgress, Backdrop } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\ninterface LoaderProps {\n size?: number;\n color?: \"primary\" | \"secondary\" | \"inherit\" | \"success\" | \"error\" | \"info\" | \"warning\";\n}\n\nconst useStyles = makeStyles({\n \"@keyframes pulse\": {\n \"0%\": { transform: \"scale(1)\", opacity: 0.9 },\n \"50%\": { transform: \"scale(1.05)\", opacity: 1 },\n \"100%\": { transform: \"scale(1)\", opacity: 0.9 },\n },\n progress: {\n animation: \"$pulse 1.5s ease-in-out infinite\",\n },\n});\n\nconst Loader: React.FC<LoaderProps> = ({ size = 48, color = \"primary\" }) => {\n const classes = useStyles();\n\n return (\n <Backdrop\n open\n sx={{\n zIndex: (theme) => theme.zIndex.modal + 1,\n backgroundColor: \"rgba(255, 255, 255, 0.15)\",\n backdropFilter: \"blur(2px)\",\n }}\n >\n <CircularProgress size={size} color={color} thickness={3.5} className={classes.progress} />\n </Backdrop>\n );\n};\n\nexport default Loader;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Box, useTheme } from \"@mui/material\";\n\nconst SHIMMER_KEYFRAMES = {\n \"@keyframes skeletonShimmer\": {\n \"0%\": { backgroundPosition: \"200% 0\" },\n \"100%\": { backgroundPosition: \"-200% 0\" },\n },\n};\n\nexport interface SkeletonBarProps {\n width?: string | number;\n height?: number;\n sx?: object;\n}\n\n/**\n * Horizontal bar with sideways shimmer loading animation.\n * Use in tables, cards, selects, and any loading placeholder.\n */\nexport const SkeletonBar: React.FC<SkeletonBarProps> = ({\n width = \"100%\",\n height = 24,\n sx = {},\n}) => {\n const theme = useTheme();\n const base =\n theme.palette.mode === \"dark\"\n ? theme.palette.grey?.[700] ?? \"#424242\"\n : theme.palette.grey?.[200] ?? \"#e0e0e0\";\n const highlight =\n theme.palette.mode === \"dark\"\n ? theme.palette.grey?.[600] ?? \"#616161\"\n : theme.palette.grey?.[100] ?? \"#f5f5f5\";\n\n return (\n <Box\n sx={{\n ...SHIMMER_KEYFRAMES,\n borderRadius: 2,\n height,\n width,\n maxWidth: \"100%\",\n overflow: \"hidden\",\n background: `linear-gradient(90deg, ${base} 0%, ${highlight} 20%, ${base} 40%, ${base} 100%)`,\n backgroundSize: \"200% 100%\",\n animation: \"skeletonShimmer 1.4s ease-in-out infinite\",\n ...sx,\n }}\n />\n );\n};\n\nexport default SkeletonBar;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Box, Typography, useTheme } from \"@mui/material\";\nimport { StorageOutlined } from \"@mui/icons-material\";\n\nexport interface EmptyStateProps {\n /** Label text to display (e.g. getContent(\"noDataDescription\")) */\n label?: string;\n /** Vertical margin (theme spacing, default 8) */\n m?: number;\n /** Optional custom icon */\n icon?: React.ReactNode;\n}\n\nconst EmptyState: React.FC<EmptyStateProps> = ({ label, m = 8, icon }) => {\n const theme = useTheme();\n const text = label ?? \"No data here\";\n\n const iconColor =\n theme.palette.mode === \"dark\"\n ? (theme.palette.grey?.[600] ?? \"rgba(255,255,255,0.25)\")\n : (theme.palette.grey?.[300] ?? \"rgba(0,0,0,0.18)\");\n\n const iconEl =\n icon != null && React.isValidElement(icon) ? (\n icon\n ) : (\n <StorageOutlined\n sx={{\n fontSize: 72,\n color: iconColor,\n display: \"block\",\n }}\n />\n );\n\n return (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n minHeight: 140,\n m,\n position: \"relative\",\n }}\n >\n <Box\n sx={{\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n pointerEvents: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {iconEl}\n </Box>\n <Typography\n variant=\"subtitle1\"\n align=\"center\"\n sx={{\n position: \"relative\",\n zIndex: 1,\n fontWeight: 600,\n fontSize: \"1rem\",\n letterSpacing: \"0.01em\",\n color: \"text.secondary\",\n maxWidth: 360,\n lineHeight: 1.5,\n }}\n >\n {text}\n </Typography>\n </Box>\n );\n};\n\nexport default EmptyState;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Button, Typography, Icon, useTheme } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { isNullableType } from \"graphql\";\n\nexport type PillProps = {\n label?: string;\n leftIcon?: string;\n rightIcon?: string;\n color?: string;\n isSelected?: boolean;\n onClick?: () => void;\n disabled?: boolean;\n};\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n padding: \"4px 8px 4px 8px\",\n color: \"black\",\n borderColor: \"black\",\n borderStyle: \"solid\",\n border: \"6px\",\n borderRadius: \"24px !important\",\n \"&:hover\": {\n color: theme.palette.primary[500],\n },\n },\n}));\n\nconst Pill = ({\n variant = \"filter\",\n leftIcon = null,\n rightIcon = null,\n color = null,\n isSelected = false,\n onClick = () => null,\n label = \"\",\n disabled = false,\n}: PillProps) => {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n <Button\n variant={isSelected ? \"contained\" : \"outlined\"}\n color={color || \"primary\"}\n sx={{\n borderRadius: \"48px\",\n padding: \"8px 24px\",\n textTransform: \"none\",\n }}\n onClick={onClick}\n >\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n {leftIcon && (\n <Icon\n className={leftIcon}\n fontSize={14}\n color=\"inherit\"\n style={{ paddingRight: 8 }}\n data-testid=\"pill-left-icon\"\n />\n )}\n <Typography variant=\"subtitle\" color=\"inherit\" fontWeight={\"bold\"}>\n {label}\n </Typography>\n {rightIcon && (\n <Icon\n className={rightIcon}\n fontSize={14}\n color=\"inherit\"\n style={{ marginLeft: 8 }}\n data-testid=\"pill-right-icon\"\n />\n )}\n </div>\n </Button>\n );\n};\n\nexport default Pill;\n","import React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport Switch, { SwitchProps } from \"@mui/material/Switch\";\n\n// explicitly type as FC with SwitchProps\nconst IOSSwitch: React.FC<SwitchProps> = styled((props: SwitchProps) => (\n <Switch focusVisibleClassName=\".Mui-focusVisible\" disableRipple {...props} />\n))(({ theme }) => ({\n width: 46,\n height: 30,\n padding: 0,\n \"& .MuiSwitch-switchBase\": {\n padding: 0,\n margin: 2,\n transitionDuration: \"300ms\",\n \"&.Mui-checked\": {\n transform: \"translateX(16px)\",\n color: \"#fff\",\n \"& + .MuiSwitch-track\": {\n backgroundColor: theme.palette.primary.main,\n opacity: 1,\n border: 0,\n },\n \"&.Mui-disabled + .MuiSwitch-track\": {\n opacity: 0.5,\n },\n },\n \"&.Mui-focusVisible .MuiSwitch-thumb\": {\n color: \"#33cf4d\",\n border: \"6px solid #fff\",\n },\n \"&.Mui-disabled .MuiSwitch-thumb\": {\n color:\n theme.palette.mode === \"light\"\n ? theme.palette.grey[100]\n : theme.palette.grey[600],\n },\n \"&.Mui-disabled + .MuiSwitch-track\": {\n opacity: theme.palette.mode === \"light\" ? 0.7 : 0.3,\n },\n },\n \"& .MuiSwitch-thumb\": {\n boxSizing: \"border-box\",\n width: 26,\n height: 26,\n },\n \"& .MuiSwitch-track\": {\n borderRadius: 30 / 2,\n backgroundColor:\n theme.palette.mode === \"light\" ? \"#E9E9EA\" : theme.palette.grey[600],\n opacity: 1,\n transition: theme.transitions.create([\"background-color\"], {\n duration: 500,\n }),\n },\n}));\n\nexport default IOSSwitch;\n","import React from \"react\";\nimport { Chip } from \"@mui/material\";\nimport { userStatus } from \"@verma-consulting/common-library\";\n\ninterface StatusPillProps {\n status: userStatus;\n}\n\nconst statusColorMap: Record<\n userStatus,\n \"default\" | \"primary\" | \"secondary\" | \"success\" | \"error\" | \"warning\" | \"info\"\n> = {\n [userStatus.Pending]: \"warning\",\n [userStatus.Active]: \"success\",\n [userStatus.Inactive]: \"error\",\n [userStatus.Invited]: \"info\",\n};\n\nconst StatusPill: React.FC<StatusPillProps> = ({ status }) => (\n <Chip\n label={status}\n color={statusColorMap[status]}\n variant=\"outlined\"\n sx={{ fontWeight: 600, borderRadius: \"16px\", px: 1.5 }}\n />\n);\n\nexport default StatusPill;\n","import React, { useState, MouseEvent, ReactNode, FC } from \"react\";\nimport { Tooltip, IconButton, Popover } from \"@mui/material\";\nimport { MoreHoriz } from \"@mui/icons-material\";\n\ninterface FormPopoverProps {\n row?: any;\n children: (props: { row: any; handleClose: () => void }) => React.ReactNode;\n title?: string;\n}\n\nconst FormPopover: FC<FormPopoverProps> = ({ row, children, title }) => {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const open = Boolean(anchorEl);\n\n return (\n <>\n <Tooltip title={title}>\n <IconButton\n onClick={handleClick}\n size=\"small\"\n sx={{\n backgroundColor: \"white\",\n boxShadow: 1,\n borderRadius: \"50%\",\n border: \"1px solid transparent\",\n \"&:hover\": {\n border: (theme) => `1px solid ${theme.palette.primary.main}`,\n backgroundColor: \"#f0f0f0\",\n },\n }}\n >\n <MoreHoriz fontSize=\"inherit\" color=\"primary\" />\n </IconButton>\n </Tooltip>\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"left\",\n }}\n >\n {children({ row, handleClose })}\n </Popover>\n </>\n );\n};\n\nexport default FormPopover;\n","// @ts-nocheck\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\nimport {\n Autocomplete,\n TextField,\n Typography,\n FormLabel,\n FormControl,\n IconButton,\n} from \"@mui/material\";\nimport { Clear } from \"@mui/icons-material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { GenericPayload } from \"@verma-consulting/common-library\";\n\nconst useStyles = makeStyles(() => ({\n defaultMode: {\n padding: \"14px 8px\",\n cursor: \"pointer\",\n \"&:hover\": {\n borderRadius: 10,\n boxShadow: \"rgba(100, 100, 111, 0.2) 0px 7px 29px 0px\",\n },\n },\n formLabel: {\n cursor: \"pointer\",\n },\n formValue: {\n cursor: \"pointer\",\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n },\n}));\n\ninterface SearchableSelectProps {\n name: string;\n label: string;\n value: string;\n onChange: (value: string) => void;\n options: GenericPayload[];\n size?: \"small\" | \"medium\";\n style?: React.CSSProperties;\n disabled?: boolean;\n onClear?: () => void;\n defaultEditMode?: boolean;\n multiple?: boolean;\n}\n\nconst SearchableSelect: React.FC<SearchableSelectProps> = React.memo(\n ({\n name,\n label,\n value,\n onChange,\n options,\n size = \"small\",\n style,\n disabled = false,\n onClear,\n defaultEditMode = false,\n multiple = false,\n }) => {\n const classes = useStyles();\n const wrapperRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [editMode, setEditMode] = useState(defaultEditMode);\n const [open, setOpen] = useState(defaultEditMode);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n wrapperRef.current &&\n !wrapperRef.current.contains(event.target as Node)\n ) {\n setEditMode(false);\n setOpen(false);\n }\n }\n\n if (editMode) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [editMode]);\n\n useEffect(() => {\n if (editMode && open && inputRef.current) {\n inputRef.current.focus();\n }\n }, [editMode, open]);\n\n const handleClear = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (onClear) {\n onClear();\n } else {\n onChange(\"\");\n }\n setEditMode(false);\n setOpen(false);\n };\n\n const selected = useMemo(() => {\n if (multiple) {\n if (!value.trim()) return [];\n const selectedValues = value.split(\", \").map((v) => v.trim());\n return options.filter((opt) => selectedValues.includes(opt.value));\n } else {\n return options.find((opt) => opt.value === value) ?? null;\n }\n }, [value, options, multiple]);\n\n const displayValue = useMemo(() => {\n if (multiple) {\n if (!Array.isArray(selected)) return \"\";\n return selected.map((opt) => opt.label).join(\", \");\n } else {\n return (selected as GenericPayload | null)?.label ?? \"\";\n }\n }, [selected, multiple]);\n\n const isValueEmpty = !value.trim();\n\n return editMode ? (\n <FormControl fullWidth style={style} disabled={disabled} size={size}>\n <Autocomplete\n multiple={multiple}\n disableCloseOnSelect={multiple}\n options={options}\n value={selected}\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n onChange={(_, newValue) => {\n if (multiple) {\n if (Array.isArray(newValue)) {\n let vals = newValue?.map((opt) => opt?.value);\n let val = vals?.join(\", \");\n onChange(val);\n } else {\n onChange(\"\");\n }\n setOpen(true);\n } else {\n onChange((newValue as GenericPayload | null)?.value ?? \"\");\n setOpen(false);\n }\n }}\n disableClearable={!onClear}\n autoHighlight\n getOptionLabel={(option) => option.label}\n isOptionEqualToValue={(option, val) => option.value === val.value}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n variant=\"outlined\"\n size={size}\n inputRef={inputRef}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {!isValueEmpty && (\n <IconButton\n aria-label={`clear ${name}`}\n onClick={handleClear}\n size=\"small\"\n sx={{\n backgroundColor: \"transparent\",\n boxShadow: \"none\",\n }}\n >\n <Clear fontSize=\"inherit\" />\n </IconButton>\n )}\n </>\n ),\n }}\n />\n )}\n onBlur={() => {\n setEditMode(false);\n setOpen(false);\n }}\n />\n </FormControl>\n ) : (\n <div\n ref={wrapperRef}\n onClick={() => {\n if (!disabled) {\n setEditMode(true);\n setOpen(true);\n }\n }}\n className={classes.defaultMode}\n style={style}\n >\n <FormLabel className={classes.formLabel}>{label}</FormLabel>\n <Typography className={classes.formValue}>{displayValue}</Typography>\n </div>\n );\n }\n);\n\nexport default SearchableSelect;\n","import {\n Drawer,\n Typography,\n Box,\n IconButton,\n Grid,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface FormDrawerProps {\n open: boolean;\n setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n title?: string | null;\n actions?: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst FormDrawer: React.FC<FormDrawerProps> = ({\n open,\n setOpen,\n title,\n actions,\n children,\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n return (\n <Drawer\n anchor={mdMatches ? \"bottom\" : \"right\"}\n open={open}\n onClose={() => setOpen(false)}\n sx={{\n \"& .MuiDrawer-paper\": {\n width: mdMatches ? \"100%\" : \"64%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: 0,\n },\n }}\n >\n <Box p={3} borderBottom=\"1px solid #eee\">\n <Grid container>\n <Grid item>\n {title && (\n <Typography variant=\"h6\" fontWeight=\"bold\">\n {title}\n </Typography>\n )}\n </Grid>\n <Grid item>\n <IconButton\n size=\"medium\"\n onClick={() => setOpen(false)}\n sx={{\n position: \"absolute\",\n top: 8,\n right: 8,\n zIndex: 2,\n }}\n >\n <Close fontSize=\"inherit\" />\n </IconButton>\n </Grid>\n </Grid>\n </Box>\n <Box flex={1} overflow=\"auto\" p={3}>\n {children}\n </Box>\n\n {actions && (\n <Box\n p={2}\n borderTop=\"1px solid #eee\"\n sx={{\n position: \"sticky\",\n bottom: 0,\n zIndex: 1,\n }}\n >\n {actions}\n </Box>\n )}\n </Drawer>\n );\n};\n\nexport default FormDrawer;\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n ChangeEvent,\n FocusEvent,\n} from \"react\";\nimport {\n Box,\n Stack,\n TextField,\n MenuItem,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { constants } from \"@verma-consulting/common-library\";\n\ninterface PhoneNumberFieldProps {\n value?: string | null;\n onChange: (e164: string) => void;\n defaultCountry?: string;\n label?: string;\n size?: \"small\" | \"medium\";\n disabled?: boolean;\n autoFocus?: boolean;\n onBlur?: () => void;\n}\n\nconst PhoneNumberField: React.FC<PhoneNumberFieldProps> = ({\n value = \"\",\n onChange,\n defaultCountry = \"US\",\n label = \"Phone number\",\n size = \"small\",\n disabled = false,\n autoFocus = false,\n onBlur,\n}) => {\n const theme = useTheme();\n const smMatches = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const countries = (constants.COUNTRIES || []) as any;\n\n const [country, setCountry] = useState(defaultCountry);\n const [localNumber, setLocalNumber] = useState(\"\");\n const [isFocused, setIsFocused] = useState(false);\n const [selectOpen, setSelectOpen] = useState(false);\n const [ignoreNextOutsideClick, setIgnoreNextOutsideClick] = useState(false);\n\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const parseE164 = useCallback(\n (val: string) => {\n const cleaned = (val || \"\").toString().replace(/\\D/g, \"\");\n if (!cleaned) return { dial: \"\", local: \"\" };\n\n const sorted = [...countries].sort(\n (a, b) => b.phone.length - a.phone.length\n );\n const found = sorted.find((c) => cleaned.startsWith(c.phone));\n if (found) {\n const dial = found.phone;\n const local = cleaned.slice(dial.length);\n return { dial, local: local.slice(-10) };\n }\n return { dial: \"\", local: cleaned.slice(-10) };\n },\n [countries]\n );\n\n useEffect(() => {\n if (isFocused) return;\n if (!value) {\n setLocalNumber(\"\");\n return;\n }\n const { dial, local } = parseE164(String(value));\n if (dial) {\n const found = countries.find((c: any) => c.phone === dial);\n if (found) setCountry(found.code);\n }\n setLocalNumber(local);\n }, [value, parseE164, countries, isFocused]);\n\n const formatLocalNumber = (digits: string) => {\n const cleaned = digits.replace(/\\D/g, \"\").slice(0, 10);\n let formatted = \"\";\n if (cleaned.length > 0) formatted += cleaned.slice(0, 3);\n if (cleaned.length > 3) formatted += \"-\" + cleaned.slice(3, 6);\n if (cleaned.length > 6) formatted += \"-\" + cleaned.slice(6, 10);\n return formatted;\n };\n\n const commitValue = useCallback(() => {\n const sel = countries.find((c: any) => c.code === country);\n const dial = sel?.phone ?? \"\";\n if (dial && localNumber) {\n onChange(`+${dial}${localNumber}`);\n } else {\n onChange(\"\");\n }\n }, [countries, country, localNumber, onChange]);\n\n const handleLocalChange = (e: ChangeEvent<HTMLInputElement>) => {\n const digits = e.target.value.replace(/\\D/g, \"\").slice(0, 10);\n setLocalNumber(digits);\n };\n\n const handleCountryChange = (e: ChangeEvent<HTMLInputElement>) => {\n setCountry(e.target.value);\n };\n\n useEffect(() => {\n const onDocMouseDown = (ev: MouseEvent) => {\n if (!wrapperRef.current) return;\n if (wrapperRef.current.contains(ev.target as Node)) return;\n if (ignoreNextOutsideClick) {\n setIgnoreNextOutsideClick(false);\n return;\n }\n if (isFocused && !selectOpen) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n return () => document.removeEventListener(\"mousedown\", onDocMouseDown);\n }, [isFocused, selectOpen, ignoreNextOutsideClick, commitValue, onBlur]);\n\n const handleWrapperBlur = (e: FocusEvent<HTMLDivElement>) => {\n const next = e.relatedTarget as Node | null;\n if (wrapperRef.current && next && wrapperRef.current.contains(next)) return;\n if (selectOpen) return;\n if (isFocused) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n\n return (\n <Box\n ref={wrapperRef}\n onFocusCapture={() => setIsFocused(true)}\n onBlurCapture={handleWrapperBlur}\n sx={{ display: \"flex\", alignItems: \"center\", width: \"100%\" }}\n >\n <Stack\n direction=\"row\"\n spacing={0}\n alignItems=\"center\"\n sx={{ width: \"100%\" }}\n >\n <TextField\n select\n value={country}\n onChange={handleCountryChange}\n disabled={disabled}\n size={size}\n sx={{\n width: 140,\n \"& .MuiOutlinedInput-root\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n }}\n SelectProps={{\n renderValue: (val: unknown) => {\n const code =\n typeof val === \"string\" ? val : defaultCountry.toUpperCase();\n const c = countries.find((x: any) => x.code === code);\n return c ? `${c.code} (+${c.phone})` : code;\n },\n onOpen: () => {\n setSelectOpen(true);\n setIgnoreNextOutsideClick(true);\n },\n onClose: () => setSelectOpen(false),\n }}\n >\n {countries.map((option: any) => (\n <MenuItem key={option.code} value={option.code}>\n {option.code} (+{option.phone})\n </MenuItem>\n ))}\n </TextField>\n <TextField\n label={label}\n value={localNumber ? formatLocalNumber(localNumber) : \"\"}\n onChange={handleLocalChange}\n placeholder=\" - - \"\n inputProps={{\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n maxLength: 12,\n }}\n disabled={disabled}\n size={size}\n autoFocus={autoFocus}\n fullWidth\n sx={{\n \"& .MuiOutlinedInput-root\": {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n },\n }}\n />\n </Stack>\n </Box>\n );\n};\n\nexport default PhoneNumberField;\n"],"mappings":";AAAA,cAAc;;;ACCd,OAAO,WAAW;AAClB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AACP,SAAS,aAAa;AACtB,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAgGzB,SAOE,KAPF;AA9FN,IAAM,YAAY,WAAW,CAAC,WAAW;AAAA,EACvC,aAAa;AAAA,IACX,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,aAAa;AAAA,IACb,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,WAAW;AAAA,MACT,cAAc;AAAA,MACd,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,WAAW;AAAA,IACT,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY;AAAA,EACd;AACF,EAAE;AAmBF,IAAM,kBAAkD,CAAC;AAAA,EACvD;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB;AAAA,EACA;AACF,MAAM;AACJ,QAAM,UAAU,UAAU;AAC1B,QAAM,aAAa,MAAM,OAAO,IAAI;AACpC,QAAM,CAAC,UAAU,WAAW,IAAI,MAAM,SAAS,eAAe;AAE9D,QAAM,UAAU,MAAM;AACpB,UAAM,qBAAqB,CAAC,UAAsB;AAChD,UACE,WAAW,WACX,CAAE,WAAW,QAAgB,SAAS,MAAM,MAAM,GAClD;AACA,oBAAY,KAAK;AAAA,MACnB;AAAA,IACF;AAEA,QAAI,UAAU;AACZ,eAAS,iBAAiB,aAAa,kBAAkB;AAAA,IAC3D;AAEA,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,kBAAkB;AAAA,IAC9D;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,eACJ,YAAY,MAAM,QAAQ,KAAK,IAAI,MAAM,WAAW,IAAI,UAAU;AAEpE,QAAM,cAAc,CAAC,UAA+C;AAClE,UAAM,gBAAgB;AACtB,QAAI,SAAS;AACX,cAAQ;AACR,kBAAY,KAAK;AAAA,IACnB,OAAO;AACL,YAAM,YAAY;AAAA,QAChB,QAAQ,EAAE,MAAM,OAAO,WAAW,CAAC,IAAI,GAAG;AAAA,MAC5C;AACA,eAAS,SAAS;AAAA,IACpB;AAAA,EACF;AAEA,MAAI,UAAU;AACZ,WACE;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAS;AAAA,QAET;AAAA,8BAAC,cAAW,IAAI,GAAG,IAAI,iBAAkB,iBAAM;AAAA,UAC/C;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,GAAG,IAAI;AAAA,cAChB,IAAI,GAAG,IAAI;AAAA,cACX;AAAA,cACA;AAAA,cACA,OAAO,WAAW,+BAAO,MAAM,QAAQ;AAAA,cACvC;AAAA,cACA,QAAQ,MAAM,YAAY,KAAK;AAAA,cAC/B,SAAS,MAAM,YAAY,KAAK;AAAA,cAChC;AAAA,cACA,OACE;AAAA,gBAAC;AAAA;AAAA,kBACC;AAAA,kBACA,OAAM;AAAA,kBACN,cACE,WAAW,CAAC,eACV,oBAAC,kBAAe,UAAS,OAAM,IAAI,EAAE,KAAK,EAAE,GAC1C;AAAA,oBAAC;AAAA;AAAA,sBACC,cAAY,SAAS,IAAI;AAAA,sBACzB,SAAS;AAAA,sBACT,MAAK;AAAA,sBACL,MAAK;AAAA,sBACL,IAAI,EAAE,IAAI,EAAE;AAAA,sBAEZ,8BAAC,SAAM,UAAS,WAAU;AAAA;AAAA,kBAC5B,GACF,IACE;AAAA,kBAEN;AAAA,kBACA;AAAA,kBACA,IAAI;AAAA,oBACF,cAAc,CAAC,eAAe,IAAI;AAAA,kBACpC;AAAA;AAAA,cACF;AAAA,cAEF;AAAA,cAEC;AAAA;AAAA,UACH;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,MAAM;AACb,YAAI,CAAC,UAAU;AACb,sBAAY,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,MACA,WAAW,QAAQ;AAAA,MAEnB;AAAA,4BAAC,aAAU,WAAW,QAAQ,WAAY,iBAAM;AAAA,QAChD,oBAAC,cAAW,WAAW,QAAQ,WAC5B,wBAAc,YAAY,KAAK,IAAI,eAAe,KAAK,GAC1D;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,0BAAQ;;;ACjLf,SAAS,WAAW;AAiBM,gBAAAA,YAAA;AAT1B,IAAM,WAAW,CAAC,UAAyB;AACzC,QAAM,EAAE,UAAU,OAAO,OAAO,GAAG,MAAM,IAAI;AAC7C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,QAAQ,UAAU;AAAA,MAClB,IAAI,mBAAmB,KAAK;AAAA,MAC3B,GAAG;AAAA,MAEH,oBAAU,SAAS,gBAAAA,KAAC,OAAI,IAAI,EAAE,GAAG,EAAE,GAAI,UAAS;AAAA;AAAA,EACnD;AAEJ;AAEA,IAAO,mBAAQ;;;AFrBf;AAAA,EACE,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAAC,mBAAkB;;;AGR3B,SAAgB,YAAY;AAC5B;AAAA,EACE;AAAA,EACA,cAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAAC;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,0BAA0B;AAgC3B,SAaQ,OAAAC,MAbR,QAAAC,aAAA;AAlBR,IAAM,OAA4B;AAAA,EAChC,CAAC;AAAA,IACC,WAAW;AAAA,IACX,WAAW;AAAA,IACX,eAAe;AAAA,IACf,cAAc;AAAA,IACd,cAAc,MAAM;AAAA,IACpB,mBAAmB;AAAA,EACrB,MAAM;AAjCR;AAkCI,UAAM,QAAQ,SAAS;AACvB,UAAM,YAAY,cAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAC5D,UAAM,WAAW,YAAY,MAAM;AAEnC,UAAM,cAAc,oBAAmB,kDAAc,SAAd,YAAsB,EAAE;AAC/D,UAAM,WAAU,kDAAc,SAAd,mBAAoB;AAEpC,QAAI,UAAU;AACZ,aACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAS;AAAA,UACT,WAAU;AAAA,UACV,YAAW;AAAA,UACX,gBAAe;AAAA,UACf,SAAS;AAAA,UACT,IAAI,EAAE,QAAQ,UAAU;AAAA,UACxB,SAAS;AAAA,UAGP;AAAA,wBAAW,gBACX,gBAAAD,KAAC,QAAK,MAAI,MACP,oBACC,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,KAAK,eAAe;AAAA,gBACpB,KAAK;AAAA,gBACL,IAAI;AAAA,kBACF,OAAO;AAAA;AAAA,kBACP,QAAQ;AAAA,kBACR,SAAS;AAAA,kBACT,UAAU;AAAA,kBACV,YAAY;AAAA,gBACd;AAAA,gBACA,UAAU,EAAE,SAAS,OAAO;AAAA,gBAE3B,sDAAa,OAAO,OAAM;AAAA;AAAA,YAC7B,IAEA,aAEJ;AAAA,YAIF,gBAAAA,KAAC,QAAK,MAAI,MAAC,IAAI,EAAE,UAAU,WAAW,SAAS,GAC5C,qBACC,gBAAAA,KAAC,WAAQ,OAAO,aAAa,WAAU,OAAM,OAAK,MAChD,0BAAAA;AAAA,cAACF;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,IAAI;AAAA,kBACF,YAAY;AAAA,kBACZ,YAAY;AAAA,kBACZ,OAAO;AAAA,gBACT;AAAA,gBAEC;AAAA;AAAA,YACH,GACF,IAEA,gBAAAE,KAACD,MAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,gBAAgB,SAAS,GAClD,4BACH,GAEJ;AAAA;AAAA;AAAA,MACF;AAAA,IAEJ;AAGA,WACE,gBAAAE;AAAA,MAAC;AAAA;AAAA,QACC,WAAS;AAAA,QACT,YAAW;AAAA,QACX,MAAK;AAAA,QACL,IAAI;AAAA,UACF,QAAQ;AAAA,UACR,WAAW,EAAE,SAAS,KAAK,YAAY,2BAA2B;AAAA,QACpE;AAAA,QACA,SAAS;AAAA,QAEP;AAAA,sBAAW,gBACX,gBAAAD,KAACD,MAAA,EAAI,IAAI,EAAE,IAAI,GAAG,SAAS,QAAQ,YAAY,SAAS,GACrD,oBACC,gBAAAC;AAAA,YAAC;AAAA;AAAA,cACC,KAAK,eAAe;AAAA,cACpB,KAAK;AAAA,cACL,IAAI;AAAA,gBACF,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,SAAS;AAAA,gBACT,UAAU;AAAA,gBACV,YAAY;AAAA,cACd;AAAA,cACA,UAAU,EAAE,SAAS,OAAO;AAAA,cAE3B,sDAAa,OAAO,OAAM;AAAA;AAAA,UAC7B,IAEA,aAEJ;AAAA,UAGF,gBAAAA,KAACD,MAAA,EAAI,IAAI,EAAE,UAAU,YAAY,GAAG,UAAU,EAAE,GAC7C,qBACC,gBAAAC,KAAC,WAAQ,OAAO,aAAa,WAAU,OAAM,OAAK,MAChD,0BAAAA;AAAA,YAACF;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,QAAM;AAAA,cACN,IAAI;AAAA,gBACF,cAAc;AAAA,gBACd,UAAU;AAAA,gBACV,YAAY;AAAA,gBACZ,YAAY;AAAA,gBACZ,YAAY;AAAA,gBACZ,OAAO;AAAA,cACT;AAAA,cAEC;AAAA;AAAA,UACH,GACF,IAEA,kBAEJ;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,IAAO,eAAQ;;;ACjKf,SAAS,cAAc;AACvB;AAAA,EACE,YAAAI;AAAA,EACA,iBAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,OACK;AACP,SAAS,YAAAF,iBAAgB;AACzB,SAAS,aAAa;AAqBlB,SAuBM,OAAAG,MAvBN,QAAAC,aAAA;AAnBJ,IAAM,kBAAkB,OAAO,MAAM,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACrD,4BAA4B;AAAA,IAC1B,SAAS,MAAM,QAAQ,CAAC;AAAA,EAC1B;AAAA,EACA,4BAA4B;AAAA,IAC1B,SAAS,MAAM,QAAQ,CAAC;AAAA,EAC1B;AACF,EAAE;AAQF,IAAM,uBAAuB,CAAC,UAA4B;AACxD,QAAM,EAAE,UAAU,SAAS,GAAG,MAAM,IAAI;AAExC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,QACF,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,YAAY;AAAA,MACd;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,UACC,gBAAAD;AAAA,UAACD;AAAA,UAAA;AAAA,YACC,SAAS;AAAA,YACT,IAAI;AAAA,cACF,UAAU;AAAA,cACV,OAAO;AAAA,cACP,KAAK;AAAA,YACP;AAAA,YAEA,0BAAAC,KAAC,SAAM,OAAM,WAAU;AAAA;AAAA,QACzB,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,aAAa,CAAC,EAAE,OAAO,OAAO,SAAS,QAAQ,IAAI,SAAS,UAAU,WAAW,MAAM,GAAG,MAAM,MAAM;AAC1G,QAAM,QAAQH,UAAS;AACvB,QAAM,YAAYC,eAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAC5D,SACE,gBAAAG,MAAC,mBAAgB,WAAS,MAAC,SAAS,MAAM,QAAQ,KAAK,GAAG,MAAY,UAAoB,YAAY,WACpG;AAAA,oBAAAD,KAAC,wBAAqB,SAAS,MAAM,QAAQ,KAAK,GAAI,iBAAM;AAAA,IAC5D,gBAAAA,KAAC,iBAAc,UAAQ,MAAE,UAAS;AAAA,IAClC,gBAAAA,KAAC,iBAAe,mBAAQ;AAAA,KAC1B;AAEJ;AAEA,IAAO,qBAAQ;;;AC1Ef,SAAS,UAAAE,eAAc;AACvB,SAAS,cAAc;AACvB,SAAS,mBAAmB;AAe1B,SAMa,OAAAC,MANb,QAAAC,aAAA;AAbF,IAAM,sBAAsBF,QAAO,OAAO,EAAE;AAAA,EAC1C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,OAAO;AACT,CAAC;AAED,IAAM,kBAAkB,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAAM,QAAQ,GAAG,MACtE,gBAAAE;AAAA,EAAC;AAAA;AAAA,IACC,MAAM;AAAA,IACN,WAAU;AAAA,IACV,MAAK;AAAA,IACL,SAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW,gBAAAD,KAAC,eAAY,UAAS,WAAU;AAAA,IAE1C;AAAA;AAAA,MACD,gBAAAA,KAAC,uBAAoB,MAAK,QAAO,MAAY,UAAoB;AAAA;AAAA;AACnE;AAGF,IAAO,0BAAQ;;;AChCf,SAAgB,WAAW,QAAQ,gBAA6B;AAChE,SAAS,OAAAE,MAAK,cAAAC,mBAAkB;AAChC,SAAS,UAAAC,eAAc;AACvB,SAAS,eAAAC,cAAa,SAAS,iBAAiB;AA0I5C,SAQkB,OAAAC,MARlB,QAAAC,aAAA;AA7HJ,IAAM,cAAcH,QAAO,OAAO,EAAE;AAAA,EAClC,UAAU;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AACV,CAAC;AAED,IAAM,UAAUA,QAAOF,MAAK;AAAA,EAC1B,mBAAmB,CAAC,SAAS,SAAS,aAAa,SAAS;AAC9D,CAAC,EAAgE,CAAC,EAAE,OAAO,MAAM,QAAQ,OAAO;AAAA,EAC9F,UAAU;AAAA,EACV,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc,YAAY,aAAa,QAAQ,YAAY,YAAY,MAAM,MAAM,eAAe,IAAI;AAAA,EACtG,QAAQ,cAAc,MAAM,QAAQ,KAAK,GAAG,CAAC;AAAA,EAC7C,iBAAiB,MAAM,QAAQ,KAAK,GAAG;AAAA,EACvC,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,gBAAgB;AAClB,EAAE;AAEF,IAAM,aAAaE,QAAO,KAAK,EAAE;AAAA,EAC/B,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,SAAS;AACX,CAAC;AAED,IAAM,UAAUA,QAAOF,IAAG,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EAC1C,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW;AAAA,EACb;AAAA,EACA,uBAAuB;AAAA,IACrB,SAAS;AAAA,IACT,WAAW;AAAA,EACb;AAAA,EACA,WAAW;AAAA,IACT,YAAY;AAAA,IACZ,iBAAiB,EAAE,SAAS,GAAG,WAAW,WAAW;AAAA,EACvD;AACF,EAAE;AAEF,IAAM,cAAcE,QAAOD,WAAU,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACrD,UAAU;AAAA,EACV,KAAK;AAAA,EACL,OAAO;AAAA,EACP,YAAY,MAAM,QAAQ,WAAW;AAAA,EACrC,WAAW,MAAM,QAAQ,CAAC;AAAA,EAC1B,WAAW,EAAE,YAAY,MAAM,QAAQ,WAAW,MAAM;AAC1D,EAAE;AAEK,IAAM,oBAAsD,CAAC;AAAA,EAClE,OAAO;AAAA,EACP,eAAe;AAAA,EACf;AAAA,EACA,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EACT;AAAA,EACA,aAAa;AACf,MAAM;AACJ,QAAM,WAAW,OAAgC,IAAI;AACrD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAwB,sCAAgB,IAAI;AAClF,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,KAAK;AAExC,YAAU,MAAM;AACd,QAAI,CAAC,aAAc;AACnB,QAAI,CAAC,eAAe,CAAC,YAAY,WAAW,OAAO,GAAG;AACpD,qBAAe,YAAY;AAAA,IAC7B;AAAA,EACF,GAAG,CAAC,YAAY,CAAC;AAEjB,YAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,2CAAa,WAAW,UAAU;AACpC,YAAI,gBAAgB,WAAW;AAAA,MACjC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,aAAa,CAAC,MAAqC;AA/G3D;AAgHI,UAAM,YAAW,aAAE,OAAO,UAAT,mBAAiB,OAAjB,YAAuB;AACxC,QAAI,2CAAa,WAAW,UAAU;AACpC,UAAI,gBAAgB,WAAW;AAAA,IACjC;AACA,QAAI,UAAyB;AAC7B,QAAI,UAAU;AACZ,gBAAU,IAAI,gBAAgB,QAAQ;AACtC,qBAAe,OAAO;AAAA,IACxB,OAAO;AACL,qBAAe,IAAI;AAAA,IACrB;AACA,QAAI,SAAS,QAAS,UAAS,QAAQ,QAAQ;AAC/C,yCAAW,UAAU;AAAA,EACvB;AAEA,QAAM,cAAc,MAAM;AA/H5B;AAgII,QAAI,CAAC,SAAU,gBAAS,YAAT,mBAAkB;AAAA,EACnC;AAEA,QAAM,cAAc,CAAC,MAAwB;AAC3C,MAAE,gBAAgB;AAClB,QAAI,2CAAa,WAAW,UAAU;AACpC,UAAI,gBAAgB,WAAW;AAAA,IACjC;AACA,mBAAe,IAAI;AACnB,yCAAW,MAAM;AAAA,EACnB;AAEA,SACE,gBAAAI;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,gBAAgB,MAAM,SAAS,IAAI;AAAA,MACnC,gBAAgB,MAAM,SAAS,KAAK;AAAA,MACpC,SAAS;AAAA,MAER;AAAA,uBAAe,gBAAAD,KAAC,cAAW,KAAK,aAAa;AAAA,QAC9C,gBAAAA,KAAC,WAAQ,WAAW,GAAG,CAAC,cAAc,UAAU,EAAE,IAAI,SAAS,CAAC,WAAW,UAAU,EAAE,IACrF,0BAAAA,KAACD,cAAA,EAAY,WAAU,cAAa,UAAS,SAAQ,GACvD;AAAA,QAEC,cAAc,eAAe,CAAC,YAC7B,gBAAAC,KAAC,eAAY,MAAK,SAAQ,cAAW,eAAc,SAAS,aAAa,IAAI,EAAE,GAAG,EAAE,GAClF,0BAAAA,KAAC,aAAU,UAAS,WAAU,GAChC;AAAA,QAGF,gBAAAA,KAAC,eAAY,KAAK,UAAU,MAAK,QAAO,MAAY,QAAgB,UAAU,YAAY,UAAoB;AAAA;AAAA;AAAA,EAChH;AAEJ;AAEA,IAAO,4BAAQ;;;ACnKf,SAAS,UAAU,OAAO,YAAY,aAAa;AAqC3C,gBAAAE,YAAA;AAnCR,IAAM,eAAe,CAAC,EAAE,WAAW,CAAC,GAAG,cAAc,MAAM,KAAK,MAAM;AACpE,QAAM,iBAAiB,MAAM;AAC3B,SAAI,qCAAU,UAAS,WAAW;AAChC,aAAO,EAAE,iBAAiB,WAAW,OAAO,QAAQ;AAAA,IACtD;AACA,WAAO,CAAC;AAAA,EACV;AAEA,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI,EAAE,OAAO,OAAO;AAAA,MACpB,kBAAkB;AAAA,MAClB,cAAc,EAAE,UAAU,OAAO,YAAY,SAAS;AAAA,MACtD,OAAM,qCAAU,SAAQ;AAAA,MACxB,SAAS,MACP,YAAY;AAAA,QACV,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,MACR,CAAC;AAAA,MAEH,qBAAqB;AAAA,MAErB,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,IAAI;AAAA,YACF,OAAO;AAAA,YACP,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,gBAAgB;AAAA,YAChB,WAAW;AAAA,YACX,GAAG,eAAe;AAAA,UACpB;AAAA,UACA,SAAQ;AAAA,UACR,UAAU,qCAAU;AAAA,UAEpB,0BAAAA,KAAC,cAAW,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,GAAI,+CAAU,SAAQ;AAAA;AAAA,MACrD;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,uBAAQ;;;AC5Cf,SAAS,kBAAkB,gBAAgB;AAC3C,SAAS,cAAAC,mBAAkB;AA8BrB,gBAAAC,YAAA;AAvBN,IAAMC,aAAYF,YAAW;AAAA,EAC3B,oBAAoB;AAAA,IAClB,MAAM,EAAE,WAAW,YAAY,SAAS,IAAI;AAAA,IAC5C,OAAO,EAAE,WAAW,eAAe,SAAS,EAAE;AAAA,IAC9C,QAAQ,EAAE,WAAW,YAAY,SAAS,IAAI;AAAA,EAChD;AAAA,EACA,UAAU;AAAA,IACR,WAAW;AAAA,EACb;AACF,CAAC;AAED,IAAM,SAAgC,CAAC,EAAE,OAAO,IAAI,QAAQ,UAAU,MAAM;AAC1E,QAAM,UAAUE,WAAU;AAE1B,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,MAAI;AAAA,MACJ,IAAI;AAAA,QACF,QAAQ,CAAC,UAAU,MAAM,OAAO,QAAQ;AAAA,QACxC,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,MAClB;AAAA,MAEA,0BAAAA,KAAC,oBAAiB,MAAY,OAAc,WAAW,KAAK,WAAW,QAAQ,UAAU;AAAA;AAAA,EAC3F;AAEJ;AAEA,IAAO,iBAAQ;;;ACnCf,SAAS,OAAAE,MAAK,YAAAC,iBAAgB;AAmC1B,gBAAAC,YAAA;AAjCJ,IAAM,oBAAoB;AAAA,EACxB,8BAA8B;AAAA,IAC5B,MAAM,EAAE,oBAAoB,SAAS;AAAA,IACrC,QAAQ,EAAE,oBAAoB,UAAU;AAAA,EAC1C;AACF;AAYO,IAAM,cAA0C,CAAC;AAAA,EACtD,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,KAAK,CAAC;AACR,MAAM;AAzBN;AA0BE,QAAM,QAAQD,UAAS;AACvB,QAAM,OACJ,MAAM,QAAQ,SAAS,UACnB,iBAAM,QAAQ,SAAd,mBAAqB,SAArB,YAA6B,aAC7B,iBAAM,QAAQ,SAAd,mBAAqB,SAArB,YAA6B;AACnC,QAAM,YACJ,MAAM,QAAQ,SAAS,UACnB,iBAAM,QAAQ,SAAd,mBAAqB,SAArB,YAA6B,aAC7B,iBAAM,QAAQ,SAAd,mBAAqB,SAArB,YAA6B;AAEnC,SACE,gBAAAC;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF,GAAG;AAAA,QACH,cAAc;AAAA,QACd;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,UAAU;AAAA,QACV,YAAY,0BAA0B,IAAI,QAAQ,SAAS,SAAS,IAAI,SAAS,IAAI;AAAA,QACrF,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX,GAAG;AAAA,MACL;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,sBAAQ;;;ACrDf,OAAOG,YAAW;AAClB,SAAS,OAAAC,MAAK,cAAAC,aAAY,YAAAC,iBAAgB;AAC1C,SAAS,uBAAuB;AAwB1B,gBAAAC,OAUF,QAAAC,aAVE;AAbN,IAAM,aAAwC,CAAC,EAAE,OAAO,IAAI,GAAG,KAAK,MAAM;AAd1E;AAeE,QAAM,QAAQF,UAAS;AACvB,QAAM,OAAO,wBAAS;AAEtB,QAAM,YACJ,MAAM,QAAQ,SAAS,UAClB,iBAAM,QAAQ,SAAd,mBAAqB,SAArB,YAA6B,4BAC7B,iBAAM,QAAQ,SAAd,mBAAqB,SAArB,YAA6B;AAEpC,QAAM,SACJ,QAAQ,QAAQH,OAAM,eAAe,IAAI,IACvC,OAEA,gBAAAI;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,QACF,UAAU;AAAA,QACV,OAAO;AAAA,QACP,SAAS;AAAA,MACX;AAAA;AAAA,EACF;AAGJ,SACE,gBAAAC;AAAA,IAACJ;AAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF,SAAS;AAAA,QACT,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,WAAW;AAAA,QACX;AAAA,QACA,UAAU;AAAA,MACZ;AAAA,MAEA;AAAA,wBAAAG;AAAA,UAACH;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,UAAU;AAAA,cACV,KAAK;AAAA,cACL,MAAM;AAAA,cACN,WAAW;AAAA,cACX,eAAe;AAAA,cACf,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,YAClB;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QACA,gBAAAG;AAAA,UAACF;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,IAAI;AAAA,cACF,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,YAAY;AAAA,cACZ,UAAU;AAAA,cACV,eAAe;AAAA,cACf,OAAO;AAAA,cACP,UAAU;AAAA,cACV,YAAY;AAAA,YACd;AAAA,YAEC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,qBAAQ;;;AChFf,SAAS,UAAAI,SAAQ,cAAAC,aAAY,MAAM,YAAAC,iBAAgB;AACnD,SAAS,cAAAC,mBAAkB;AAmDrB,SAEI,OAAAC,OAFJ,QAAAC,aAAA;AAtCN,IAAMC,aAAYH,YAAW,CAAC,WAAW;AAAA,EACvC,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,aAAa;AAAA,IACb,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,WAAW;AAAA,MACT,OAAO,MAAM,QAAQ,QAAQ,GAAG;AAAA,IAClC;AAAA,EACF;AACF,EAAE;AAEF,IAAM,OAAO,CAAC;AAAA,EACZ,UAAU;AAAA,EACV,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,UAAU,MAAM;AAAA,EAChB,QAAQ;AAAA,EACR,WAAW;AACb,MAAiB;AACf,QAAM,QAAQD,UAAS;AACvB,QAAM,UAAUI,WAAU;AAE1B,SACE,gBAAAF;AAAA,IAACJ;AAAA,IAAA;AAAA,MACC,SAAS,aAAa,cAAc;AAAA,MACpC,OAAO,SAAS;AAAA,MAChB,IAAI;AAAA,QACF,cAAc;AAAA,QACd,SAAS;AAAA,QACT,eAAe;AAAA,MACjB;AAAA,MACA;AAAA,MAEA,0BAAAK,MAAC,SAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,SAAS,GACjD;AAAA,oBACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,YACX,UAAU;AAAA,YACV,OAAM;AAAA,YACN,OAAO,EAAE,cAAc,EAAE;AAAA,YACzB,eAAY;AAAA;AAAA,QACd;AAAA,QAEF,gBAAAA,MAACH,aAAA,EAAW,SAAQ,YAAW,OAAM,WAAU,YAAY,QACxD,iBACH;AAAA,QACC,aACC,gBAAAG;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,YACX,UAAU;AAAA,YACV,OAAM;AAAA,YACN,OAAO,EAAE,YAAY,EAAE;AAAA,YACvB,eAAY;AAAA;AAAA,QACd;AAAA,SAEJ;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,eAAQ;;;AChFf,SAAS,UAAAG,eAAc;AACvB,OAAO,YAA6B;AAIlC,gBAAAC,aAAA;AADF,IAAM,YAAmCD,QAAO,CAAC,UAC/C,gBAAAC,MAAC,UAAO,uBAAsB,qBAAoB,eAAa,MAAE,GAAG,OAAO,CAC5E,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACjB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,2BAA2B;AAAA,IACzB,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,MACf,WAAW;AAAA,MACX,OAAO;AAAA,MACP,wBAAwB;AAAA,QACtB,iBAAiB,MAAM,QAAQ,QAAQ;AAAA,QACvC,SAAS;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,MACA,qCAAqC;AAAA,QACnC,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,uCAAuC;AAAA,MACrC,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,IACA,mCAAmC;AAAA,MACjC,OACE,MAAM,QAAQ,SAAS,UACnB,MAAM,QAAQ,KAAK,GAAG,IACtB,MAAM,QAAQ,KAAK,GAAG;AAAA,IAC9B;AAAA,IACA,qCAAqC;AAAA,MACnC,SAAS,MAAM,QAAQ,SAAS,UAAU,MAAM;AAAA,IAClD;AAAA,EACF;AAAA,EACA,sBAAsB;AAAA,IACpB,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAAA,EACA,sBAAsB;AAAA,IACpB,cAAc,KAAK;AAAA,IACnB,iBACE,MAAM,QAAQ,SAAS,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AAAA,IACrE,SAAS;AAAA,IACT,YAAY,MAAM,YAAY,OAAO,CAAC,kBAAkB,GAAG;AAAA,MACzD,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AACF,EAAE;AAEF,IAAO,oBAAQ;;;ACxDf,SAAS,YAAY;AACrB,SAAS,kBAAkB;AAiBzB,gBAAAC,aAAA;AAXF,IAAM,iBAGF;AAAA,EACF,CAAC,WAAW,OAAO,GAAG;AAAA,EACtB,CAAC,WAAW,MAAM,GAAG;AAAA,EACrB,CAAC,WAAW,QAAQ,GAAG;AAAA,EACvB,CAAC,WAAW,OAAO,GAAG;AACxB;AAEA,IAAM,aAAwC,CAAC,EAAE,OAAO,MACtD,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,OAAO;AAAA,IACP,OAAO,eAAe,MAAM;AAAA,IAC5B,SAAQ;AAAA,IACR,IAAI,EAAE,YAAY,KAAK,cAAc,QAAQ,IAAI,IAAI;AAAA;AACvD;AAGF,IAAO,qBAAQ;;;AC3Bf,SAAgB,YAAAC,iBAA2C;AAC3D,SAAS,WAAAC,UAAS,cAAAC,aAAY,eAAe;AAC7C,SAAS,iBAAiB;AAsBtB,mBAgBM,OAAAC,OAhBN,QAAAC,aAAA;AAdJ,IAAM,cAAoC,CAAC,EAAE,KAAK,UAAU,MAAM,MAAM;AACtE,QAAM,CAAC,UAAU,WAAW,IAAIJ,UAA6B,IAAI;AAEjE,QAAM,cAAc,CAAC,UAAmC;AACtD,gBAAY,MAAM,aAAa;AAAA,EACjC;AAEA,QAAM,cAAc,MAAM;AACxB,gBAAY,IAAI;AAAA,EAClB;AAEA,QAAM,OAAO,QAAQ,QAAQ;AAE7B,SACE,gBAAAI,MAAA,YACE;AAAA,oBAAAD,MAACF,UAAA,EAAQ,OACP,0BAAAE;AAAA,MAACD;AAAA,MAAA;AAAA,QACC,SAAS;AAAA,QACT,MAAK;AAAA,QACL,IAAI;AAAA,UACF,iBAAiB;AAAA,UACjB,WAAW;AAAA,UACX,cAAc;AAAA,UACd,QAAQ;AAAA,UACR,WAAW;AAAA,YACT,QAAQ,CAAC,UAAU,aAAa,MAAM,QAAQ,QAAQ,IAAI;AAAA,YAC1D,iBAAiB;AAAA,UACnB;AAAA,QACF;AAAA,QAEA,0BAAAC,MAAC,aAAU,UAAS,WAAU,OAAM,WAAU;AAAA;AAAA,IAChD,GACF;AAAA,IACA,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT,cAAc;AAAA,UACZ,UAAU;AAAA,UACV,YAAY;AAAA,QACd;AAAA,QAEC,mBAAS,EAAE,KAAK,YAAY,CAAC;AAAA;AAAA,IAChC;AAAA,KACF;AAEJ;AAEA,IAAO,sBAAQ;;;ACzDf,OAAOE,UAAS,aAAAC,YAAW,UAAAC,SAAQ,YAAAC,WAAU,eAAe;AAC5D;AAAA,EACE;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,OACK;AACP,SAAS,SAAAC,cAAa;AACtB,SAAS,cAAAC,mBAAkB;AAyJT,qBAAAC,WAWM,OAAAC,OAelB,QAAAC,aA1BY;AAtJlB,IAAMC,aAAYJ,YAAW,OAAO;AAAA,EAClC,aAAa;AAAA,IACX,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,WAAW;AAAA,MACT,cAAc;AAAA,MACd,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,WAAW;AAAA,IACT,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,YAAY;AAAA,EACd;AACF,EAAE;AAgBF,IAAM,mBAAoDT,OAAM;AAAA,EAC9D,CAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,kBAAkB;AAAA,IAClB,WAAW;AAAA,EACb,MAAM;AACJ,UAAM,UAAUa,WAAU;AAC1B,UAAM,aAAaX,QAAuB,IAAI;AAC9C,UAAM,WAAWA,QAAyB,IAAI;AAC9C,UAAM,CAAC,UAAU,WAAW,IAAIC,UAAS,eAAe;AACxD,UAAM,CAAC,MAAM,OAAO,IAAIA,UAAS,eAAe;AAEhD,IAAAF,WAAU,MAAM;AACd,eAAS,mBAAmB,OAAmB;AAC7C,YACE,WAAW,WACX,CAAC,WAAW,QAAQ,SAAS,MAAM,MAAc,GACjD;AACA,sBAAY,KAAK;AACjB,kBAAQ,KAAK;AAAA,QACf;AAAA,MACF;AAEA,UAAI,UAAU;AACZ,iBAAS,iBAAiB,aAAa,kBAAkB;AAAA,MAC3D;AAEA,aAAO,MAAM;AACX,iBAAS,oBAAoB,aAAa,kBAAkB;AAAA,MAC9D;AAAA,IACF,GAAG,CAAC,QAAQ,CAAC;AAEb,IAAAA,WAAU,MAAM;AACd,UAAI,YAAY,QAAQ,SAAS,SAAS;AACxC,iBAAS,QAAQ,MAAM;AAAA,MACzB;AAAA,IACF,GAAG,CAAC,UAAU,IAAI,CAAC;AAEnB,UAAM,cAAc,CAAC,UAA+C;AAClE,YAAM,gBAAgB;AACtB,UAAI,SAAS;AACX,gBAAQ;AAAA,MACV,OAAO;AACL,iBAAS,EAAE;AAAA,MACb;AACA,kBAAY,KAAK;AACjB,cAAQ,KAAK;AAAA,IACf;AAEA,UAAM,WAAW,QAAQ,MAAM;AAxGnC;AAyGM,UAAI,UAAU;AACZ,YAAI,CAAC,MAAM,KAAK,EAAG,QAAO,CAAC;AAC3B,cAAM,iBAAiB,MAAM,MAAM,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAC5D,eAAO,QAAQ,OAAO,CAAC,QAAQ,eAAe,SAAS,IAAI,KAAK,CAAC;AAAA,MACnE,OAAO;AACL,gBAAO,aAAQ,KAAK,CAAC,QAAQ,IAAI,UAAU,KAAK,MAAzC,YAA8C;AAAA,MACvD;AAAA,IACF,GAAG,CAAC,OAAO,SAAS,QAAQ,CAAC;AAE7B,UAAM,eAAe,QAAQ,MAAM;AAlHvC;AAmHM,UAAI,UAAU;AACZ,YAAI,CAAC,MAAM,QAAQ,QAAQ,EAAG,QAAO;AACrC,eAAO,SAAS,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,KAAK,IAAI;AAAA,MACnD,OAAO;AACL,gBAAQ,0CAAoC,UAApC,YAA6C;AAAA,MACvD;AAAA,IACF,GAAG,CAAC,UAAU,QAAQ,CAAC;AAEvB,UAAM,eAAe,CAAC,MAAM,KAAK;AAEjC,WAAO,WACL,gBAAAU,MAACL,cAAA,EAAY,WAAS,MAAC,OAAc,UAAoB,MACvD,0BAAAK;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,sBAAsB;AAAA,QACtB;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA,QAAQ,MAAM,QAAQ,IAAI;AAAA,QAC1B,SAAS,MAAM,QAAQ,KAAK;AAAA,QAC5B,UAAU,CAAC,GAAG,aAAa;AAvIrC;AAwIY,cAAI,UAAU;AACZ,gBAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,kBAAI,OAAO,qCAAU,IAAI,CAAC,QAAQ,2BAAK;AACvC,kBAAI,MAAM,6BAAM,KAAK;AACrB,uBAAS,GAAG;AAAA,YACd,OAAO;AACL,uBAAS,EAAE;AAAA,YACb;AACA,oBAAQ,IAAI;AAAA,UACd,OAAO;AACL,sBAAU,0CAAoC,UAApC,YAA6C,EAAE;AACzD,oBAAQ,KAAK;AAAA,UACf;AAAA,QACF;AAAA,QACA,kBAAkB,CAAC;AAAA,QACnB,eAAa;AAAA,QACb,gBAAgB,CAAC,WAAW,OAAO;AAAA,QACnC,sBAAsB,CAAC,QAAQ,QAAQ,OAAO,UAAU,IAAI;AAAA,QAC5D,aAAa,CAAC,WACZ,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ;AAAA,YACA,SAAQ;AAAA,YACR;AAAA,YACA;AAAA,YACA,YAAY;AAAA,cACV,GAAG,OAAO;AAAA,cACV,cACE,gBAAAA,MAAAD,WAAA,EACG,WAAC,gBACA,gBAAAC;AAAA,gBAACJ;AAAA,gBAAA;AAAA,kBACC,cAAY,SAAS,IAAI;AAAA,kBACzB,SAAS;AAAA,kBACT,MAAK;AAAA,kBACL,IAAI;AAAA,oBACF,iBAAiB;AAAA,oBACjB,WAAW;AAAA,kBACb;AAAA,kBAEA,0BAAAI,MAACH,QAAA,EAAM,UAAS,WAAU;AAAA;AAAA,cAC5B,GAEJ;AAAA,YAEJ;AAAA;AAAA,QACF;AAAA,QAEF,QAAQ,MAAM;AACZ,sBAAY,KAAK;AACjB,kBAAQ,KAAK;AAAA,QACf;AAAA;AAAA,IACF,GACF,IAEA,gBAAAI;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,SAAS,MAAM;AACb,cAAI,CAAC,UAAU;AACb,wBAAY,IAAI;AAChB,oBAAQ,IAAI;AAAA,UACd;AAAA,QACF;AAAA,QACA,WAAW,QAAQ;AAAA,QACnB;AAAA,QAEA;AAAA,0BAAAD,MAACN,YAAA,EAAU,WAAW,QAAQ,WAAY,iBAAM;AAAA,UAChD,gBAAAM,MAACP,aAAA,EAAW,WAAW,QAAQ,WAAY,wBAAa;AAAA;AAAA;AAAA,IAC1D;AAAA,EAEJ;AACF;AAEA,IAAO,2BAAQ;;;AChNf;AAAA,EACE;AAAA,EACA,cAAAU;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,OACK;AACP,SAAS,SAAAC,cAAa;AAoCd,SAGM,OAAAC,OAHN,QAAAC,cAAA;AA1BR,IAAM,aAAwC,CAAC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQJ,UAAS;AACvB,QAAM,YAAYC,eAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAE5D,SACE,gBAAAG;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ,YAAY,WAAW;AAAA,MAC/B;AAAA,MACA,SAAS,MAAM,QAAQ,KAAK;AAAA,MAC5B,IAAI;AAAA,QACF,sBAAsB;AAAA,UACpB,OAAO,YAAY,SAAS;AAAA,UAC5B,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,eAAe;AAAA,UACf,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAD,MAACN,MAAA,EAAI,GAAG,GAAG,cAAa,kBACtB,0BAAAO,OAACL,OAAA,EAAK,WAAS,MACb;AAAA,0BAAAI,MAACJ,OAAA,EAAK,MAAI,MACP,mBACC,gBAAAI,MAACP,aAAA,EAAW,SAAQ,MAAK,YAAW,QACjC,iBACH,GAEJ;AAAA,UACA,gBAAAO,MAACJ,OAAA,EAAK,MAAI,MACR,0BAAAI;AAAA,YAACL;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,MAAM,QAAQ,KAAK;AAAA,cAC5B,IAAI;AAAA,gBACF,UAAU;AAAA,gBACV,KAAK;AAAA,gBACL,OAAO;AAAA,gBACP,QAAQ;AAAA,cACV;AAAA,cAEA,0BAAAK,MAACD,QAAA,EAAM,UAAS,WAAU;AAAA;AAAA,UAC5B,GACF;AAAA,WACF,GACF;AAAA,QACA,gBAAAC,MAACN,MAAA,EAAI,MAAM,GAAG,UAAS,QAAO,GAAG,GAC9B,UACH;AAAA,QAEC,WACC,gBAAAM;AAAA,UAACN;AAAA,UAAA;AAAA,YACC,GAAG;AAAA,YACH,WAAU;AAAA,YACV,IAAI;AAAA,cACF,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,QAAQ;AAAA,YACV;AAAA,YAEC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,IAAO,qBAAQ;;;AC1Ff;AAAA,EACE;AAAA,EACA,aAAAQ;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OAGK;AACP;AAAA,EACE,OAAAC;AAAA,EACA;AAAA,EACA,aAAAC;AAAA,EACA;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,OACK;AACP,SAAS,iBAAiB;AA0IlB,gBAAAC,OA4BI,QAAAC,cA5BJ;AA7HR,IAAM,mBAAoD,CAAC;AAAA,EACzD,QAAQ;AAAA,EACR;AAAA,EACA,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AACF,MAAM;AACJ,QAAM,QAAQH,UAAS;AACvB,QAAM,YAAYC,eAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAC5D,QAAM,YAAa,UAAU,aAAa,CAAC;AAE3C,QAAM,CAAC,SAAS,UAAU,IAAIJ,UAAS,cAAc;AACrD,QAAM,CAAC,aAAa,cAAc,IAAIA,UAAS,EAAE;AACjD,QAAM,CAAC,WAAW,YAAY,IAAIA,UAAS,KAAK;AAChD,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAS,KAAK;AAClD,QAAM,CAAC,wBAAwB,yBAAyB,IAAIA,UAAS,KAAK;AAE1E,QAAM,aAAaD,QAA8B,IAAI;AAErD,QAAM,YAAY;AAAA,IAChB,CAAC,QAAgB;AACf,YAAM,WAAW,OAAO,IAAI,SAAS,EAAE,QAAQ,OAAO,EAAE;AACxD,UAAI,CAAC,QAAS,QAAO,EAAE,MAAM,IAAI,OAAO,GAAG;AAE3C,YAAM,SAAS,CAAC,GAAG,SAAS,EAAE;AAAA,QAC5B,CAAC,GAAG,MAAM,EAAE,MAAM,SAAS,EAAE,MAAM;AAAA,MACrC;AACA,YAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,QAAQ,WAAW,EAAE,KAAK,CAAC;AAC5D,UAAI,OAAO;AACT,cAAM,OAAO,MAAM;AACnB,cAAM,QAAQ,QAAQ,MAAM,KAAK,MAAM;AACvC,eAAO,EAAE,MAAM,OAAO,MAAM,MAAM,GAAG,EAAE;AAAA,MACzC;AACA,aAAO,EAAE,MAAM,IAAI,OAAO,QAAQ,MAAM,GAAG,EAAE;AAAA,IAC/C;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AAEA,EAAAD,WAAU,MAAM;AACd,QAAI,UAAW;AACf,QAAI,CAAC,OAAO;AACV,qBAAe,EAAE;AACjB;AAAA,IACF;AACA,UAAM,EAAE,MAAM,MAAM,IAAI,UAAU,OAAO,KAAK,CAAC;AAC/C,QAAI,MAAM;AACR,YAAM,QAAQ,UAAU,KAAK,CAAC,MAAW,EAAE,UAAU,IAAI;AACzD,UAAI,MAAO,YAAW,MAAM,IAAI;AAAA,IAClC;AACA,mBAAe,KAAK;AAAA,EACtB,GAAG,CAAC,OAAO,WAAW,WAAW,SAAS,CAAC;AAE3C,QAAM,oBAAoB,CAAC,WAAmB;AAC5C,UAAM,UAAU,OAAO,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,EAAE;AACrD,QAAI,YAAY;AAChB,QAAI,QAAQ,SAAS,EAAG,cAAa,QAAQ,MAAM,GAAG,CAAC;AACvD,QAAI,QAAQ,SAAS,EAAG,cAAa,MAAM,QAAQ,MAAM,GAAG,CAAC;AAC7D,QAAI,QAAQ,SAAS,EAAG,cAAa,MAAM,QAAQ,MAAM,GAAG,EAAE;AAC9D,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,YAAY,MAAM;AA7FxC;AA8FI,UAAM,MAAM,UAAU,KAAK,CAAC,MAAW,EAAE,SAAS,OAAO;AACzD,UAAM,QAAO,gCAAK,UAAL,YAAc;AAC3B,QAAI,QAAQ,aAAa;AACvB,eAAS,IAAI,IAAI,GAAG,WAAW,EAAE;AAAA,IACnC,OAAO;AACL,eAAS,EAAE;AAAA,IACb;AAAA,EACF,GAAG,CAAC,WAAW,SAAS,aAAa,QAAQ,CAAC;AAE9C,QAAM,oBAAoB,CAAC,MAAqC;AAC9D,UAAM,SAAS,EAAE,OAAO,MAAM,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,EAAE;AAC5D,mBAAe,MAAM;AAAA,EACvB;AAEA,QAAM,sBAAsB,CAAC,MAAqC;AAChE,eAAW,EAAE,OAAO,KAAK;AAAA,EAC3B;AAEA,EAAAA,WAAU,MAAM;AACd,UAAM,iBAAiB,CAAC,OAAmB;AACzC,UAAI,CAAC,WAAW,QAAS;AACzB,UAAI,WAAW,QAAQ,SAAS,GAAG,MAAc,EAAG;AACpD,UAAI,wBAAwB;AAC1B,kCAA0B,KAAK;AAC/B;AAAA,MACF;AACA,UAAI,aAAa,CAAC,YAAY;AAC5B,oBAAY;AACZ,qBAAa,KAAK;AAClB;AAAA,MACF;AAAA,IACF;AACA,aAAS,iBAAiB,aAAa,cAAc;AACrD,WAAO,MAAM,SAAS,oBAAoB,aAAa,cAAc;AAAA,EACvE,GAAG,CAAC,WAAW,YAAY,wBAAwB,aAAa,MAAM,CAAC;AAEvE,QAAM,oBAAoB,CAAC,MAAkC;AAC3D,UAAM,OAAO,EAAE;AACf,QAAI,WAAW,WAAW,QAAQ,WAAW,QAAQ,SAAS,IAAI,EAAG;AACrE,QAAI,WAAY;AAChB,QAAI,WAAW;AACb,kBAAY;AACZ,mBAAa,KAAK;AAClB;AAAA,IACF;AAAA,EACF;AAEA,SACE,gBAAAO;AAAA,IAACJ;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,gBAAgB,MAAM,aAAa,IAAI;AAAA,MACvC,eAAe;AAAA,MACf,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,OAAO,OAAO;AAAA,MAE3D,0BAAAK;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,SAAS;AAAA,UACT,YAAW;AAAA,UACX,IAAI,EAAE,OAAO,OAAO;AAAA,UAEpB;AAAA,4BAAAD;AAAA,cAACH;AAAA,cAAA;AAAA,gBACC,QAAM;AAAA,gBACN,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA,IAAI;AAAA,kBACF,OAAO;AAAA,kBACP,4BAA4B;AAAA,oBAC1B,sBAAsB;AAAA,oBACtB,yBAAyB;AAAA,kBAC3B;AAAA,gBACF;AAAA,gBACA,aAAa;AAAA,kBACX,aAAa,CAAC,QAAiB;AAC7B,0BAAM,OACJ,OAAO,QAAQ,WAAW,MAAM,eAAe,YAAY;AAC7D,0BAAM,IAAI,UAAU,KAAK,CAAC,MAAW,EAAE,SAAS,IAAI;AACpD,2BAAO,IAAI,GAAG,EAAE,IAAI,MAAM,EAAE,KAAK,MAAM;AAAA,kBACzC;AAAA,kBACA,QAAQ,MAAM;AACZ,kCAAc,IAAI;AAClB,8CAA0B,IAAI;AAAA,kBAChC;AAAA,kBACA,SAAS,MAAM,cAAc,KAAK;AAAA,gBACpC;AAAA,gBAEC,oBAAU,IAAI,CAAC,WACd,gBAAAI,OAAC,YAA2B,OAAO,OAAO,MACvC;AAAA,yBAAO;AAAA,kBAAK;AAAA,kBAAI,OAAO;AAAA,kBAAM;AAAA,qBADjB,OAAO,IAEtB,CACD;AAAA;AAAA,YACH;AAAA,YACA,gBAAAD;AAAA,cAACH;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA,OAAO,cAAc,kBAAkB,WAAW,IAAI;AAAA,gBACtD,UAAU;AAAA,gBACV,aAAY;AAAA,gBACZ,YAAY;AAAA,kBACV,WAAW;AAAA,kBACX,SAAS;AAAA,kBACT,WAAW;AAAA,gBACb;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,WAAS;AAAA,gBACT,IAAI;AAAA,kBACF,4BAA4B;AAAA,oBAC1B,qBAAqB;AAAA,oBACrB,wBAAwB;AAAA,kBAC1B;AAAA,gBACF;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,2BAAQ;","names":["jsx","useTheme","styled","makeStyles","Typography","Box","jsx","jsxs","useTheme","useMediaQuery","IconButton","jsx","jsxs","styled","jsx","jsxs","Box","IconButton","styled","CloudUpload","jsx","jsxs","jsx","makeStyles","jsx","useStyles","Box","useTheme","jsx","React","Box","Typography","useTheme","jsx","jsxs","Button","Typography","useTheme","makeStyles","jsx","jsxs","useStyles","styled","jsx","jsx","useState","Tooltip","IconButton","jsx","jsxs","React","useEffect","useRef","useState","Typography","FormLabel","FormControl","IconButton","Clear","makeStyles","Fragment","jsx","jsxs","useStyles","Typography","Box","IconButton","Grid","useTheme","useMediaQuery","Close","jsx","jsxs","useEffect","useRef","useState","Box","TextField","useTheme","useMediaQuery","jsx","jsxs"]}
1
+ {"version":3,"sources":["../src/index.tsx","../src/ClearableSelect.tsx","../src/TabPanel.tsx","../src/Logo.tsx","../src/FormDialog.tsx","../src/InputFileUpload.tsx","../src/ImageUploadAvatar.tsx","../src/FormSnackBar.tsx","../src/Loader.tsx","../src/SkeletonBar.tsx","../src/EmptyState.tsx","../src/Pill.tsx","../src/IOSSwitch.tsx","../src/StatusPill.tsx","../src/FormPopover.tsx","../src/SearchableSelect.tsx","../src/FormDrawer.tsx","../src/PhoneNumberField.tsx"],"sourcesContent":["export * from \"@mui/material\";\nexport { default as ClearableSelect } from \"./ClearableSelect\";\nexport { default as TabPanel } from \"./TabPanel\";\nexport {\n useTheme,\n styled,\n createTheme,\n ThemeProvider,\n} from \"@mui/material/styles\";\nexport { makeStyles } from \"@mui/styles\";\nexport { default as Logo } from \"./Logo\";\nexport { default as FormDialog } from \"./FormDialog\";\nexport { default as InputFileUpload } from \"./InputFileUpload\";\nexport { default as ImageUploadAvatar } from \"./ImageUploadAvatar\";\nexport { default as FormSnackBar } from \"./FormSnackBar\";\nexport { default as Loader } from \"./Loader\";\nexport { default as SkeletonBar } from \"./SkeletonBar\";\nexport { default as EmptyState } from \"./EmptyState\";\nexport { default as Pill } from \"./Pill\";\nexport { default as IOSSwitch } from \"./IOSSwitch\";\nexport { default as StatusPill } from \"./StatusPill\";\nexport { default as FormPopover } from \"./FormPopover\";\nexport { default as SearchableSelect } from \"./SearchableSelect\";\nexport { default as FormDrawer } from \"./FormDrawer\";\nexport { default as PhoneNumberField } from \"./PhoneNumberField\";\n","// @ts-nocheck\nimport React from \"react\";\nimport {\n FormControl,\n InputLabel,\n Select,\n InputAdornment,\n IconButton,\n OutlinedInput,\n SelectChangeEvent,\n Typography,\n FormLabel,\n} from \"@mui/material\";\nimport { Clear } from \"@mui/icons-material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { prettifyString } from \"@verma-consulting/common-library\";\n\nconst useStyles = makeStyles((theme) => ({\n defaultMode: {\n paddingTop: 14,\n paddingBottom: 14,\n paddingLeft: 8,\n paddingRight: 8,\n cursor: \"pointer\",\n \"&:hover\": {\n borderRadius: 10,\n boxShadow: \"rgba(100, 100, 111, 0.2) 0px 7px 29px 0px\",\n },\n },\n formLabel: {\n cursor: \"pointer\",\n },\n formValue: {\n cursor: \"pointer\",\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n },\n}));\n\ninterface ClearableSelectProps {\n name: string;\n label: string;\n value: string | number | (string | number)[];\n onChange: (\n event: SelectChangeEvent<string | number | (string | number)[]>\n ) => void;\n size?: \"small\" | \"medium\";\n style?: React.CSSProperties;\n disabled?: boolean;\n onClear?: () => void;\n multiple?: boolean;\n defaultEditMode?: boolean;\n renderValue?: () => null;\n children: React.ReactNode;\n}\n\nconst ClearableSelect: React.FC<ClearableSelectProps> = ({\n name,\n label,\n value = \"\",\n onChange,\n size = \"small\",\n style,\n disabled = false,\n onClear,\n multiple = false,\n defaultEditMode = false,\n renderValue,\n children,\n}) => {\n const classes = useStyles();\n const wrapperRef = React.useRef(null);\n const [editMode, setEditMode] = React.useState(defaultEditMode);\n\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n wrapperRef.current &&\n !(wrapperRef.current as any).contains(event.target)\n ) {\n setEditMode(false);\n }\n };\n\n if (editMode) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [editMode]);\n\n const isValueEmpty =\n multiple && Array.isArray(value) ? value.length === 0 : value === \"\";\n\n const handleClear = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (onClear) {\n onClear();\n setEditMode(false);\n } else {\n const fakeEvent = {\n target: { name, value: multiple ? [] : \"\" },\n } as unknown as SelectChangeEvent<string | number | (string | number)[]>;\n onChange(fakeEvent);\n }\n };\n\n if (editMode) {\n return (\n <FormControl\n variant=\"outlined\"\n size={size}\n style={style}\n disabled={disabled}\n fullWidth\n >\n <InputLabel id={`${name}-select-label`}>{label}</InputLabel>\n <Select\n labelId={`${name}-select-label`}\n id={`${name}-select`}\n name={name}\n multiple={multiple}\n value={multiple ? value?.split(\", \") : value}\n onChange={onChange}\n onBlur={() => setEditMode(false)}\n onClose={() => setEditMode(false)}\n label={label}\n input={\n <OutlinedInput\n size={size}\n color=\"primary\"\n endAdornment={\n onClear && !isValueEmpty ? (\n <InputAdornment position=\"end\" sx={{ gap: 1 }}>\n <IconButton\n aria-label={`clear ${name}`}\n onClick={handleClear}\n edge=\"end\"\n size=\"small\"\n sx={{ mr: 1 }}\n >\n <Clear fontSize=\"inherit\" />\n </IconButton>\n </InputAdornment>\n ) : null\n }\n label={label}\n name={name}\n sx={{\n paddingRight: !isValueEmpty ? 2 : undefined,\n }}\n />\n }\n renderValue={renderValue}\n >\n {children}\n </Select>\n </FormControl>\n );\n }\n return (\n <div\n onClick={() => {\n if (!disabled) {\n setEditMode(true);\n }\n }}\n className={classes.defaultMode}\n >\n <FormLabel className={classes.formLabel}>{label}</FormLabel>\n <Typography className={classes.formValue}>\n {renderValue ? renderValue(value) : prettifyString(value)}\n </Typography>\n </div>\n );\n};\n\nexport default ClearableSelect;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: number;\n value: number;\n}\n\nconst TabPanel = (props: TabPanelProps) => {\n const { children, value, index, ...other } = props;\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`simple-tabpanel-${index}`}\n {...other}\n >\n {value === index && <Box sx={{ p: 1 }}>{children}</Box>}\n </div>\n );\n};\n\nexport default TabPanel;\n","// @ts-nocheck\nimport React, { memo } from \"react\";\nimport {\n Grid,\n Typography,\n Avatar,\n Tooltip,\n Box,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { capitalizeSentence } from \"@verma-consulting/common-library\";\n\ntype LogoProps = {\n loggedIn?: boolean;\n centered?: boolean;\n organization?: {\n name?: string;\n logo?: { url?: string };\n } | null;\n defaultLogo?: React.ReactNode;\n companyComponent?: React.ReactNode;\n handleClick?: () => void;\n};\n\nconst Logo: React.FC<LogoProps> = memo(\n ({\n loggedIn = false,\n centered = false,\n organization = null,\n defaultLogo = null,\n handleClick = () => null,\n companyComponent = null,\n }) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n const maxWidth = mdMatches ? 160 : 320;\n\n const companyName = capitalizeSentence(organization?.name ?? \"\");\n const logoUrl = organization?.logo?.url;\n\n if (centered) {\n return (\n <Grid\n container\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n spacing={1}\n sx={{ cursor: \"pointer\" }}\n onClick={handleClick}\n >\n {/* Logo on top */}\n {(logoUrl || defaultLogo) && (\n <Grid item>\n {logoUrl ? (\n <Avatar\n alt={companyName || \"avatar\"}\n src={logoUrl}\n sx={{\n width: 64, // slightly bigger\n height: 64,\n bgcolor: \"primary.main\",\n fontSize: 20,\n fontWeight: \"bold\",\n }}\n imgProps={{ loading: \"lazy\" }}\n >\n {companyName?.charAt(0) || \"?\"}\n </Avatar>\n ) : (\n defaultLogo\n )}\n </Grid>\n )}\n\n {/* Company name or companyComponent below logo */}\n <Grid item sx={{ maxWidth, textAlign: \"center\" }}>\n {loggedIn ? (\n <Tooltip title={companyName} placement=\"top\" arrow>\n <Typography\n variant=\"h6\"\n sx={{\n fontFamily: \"Courier, monospace\",\n fontWeight: \"bold\",\n color: \"primary.main\",\n }}\n >\n {companyName}\n </Typography>\n </Tooltip>\n ) : (\n <Box sx={{ display: \"flex\", justifyContent: \"center\" }}>\n {companyComponent}\n </Box>\n )}\n </Grid>\n </Grid>\n );\n }\n\n // Default horizontal layout\n return (\n <Grid\n container\n alignItems=\"center\"\n wrap=\"nowrap\"\n sx={{\n cursor: \"pointer\",\n \"&:hover\": { opacity: 0.9, transition: \"opacity 0.2s ease-in-out\" },\n }}\n onClick={handleClick}\n >\n {(logoUrl || defaultLogo) && (\n <Box sx={{ mr: 1, display: \"flex\", alignItems: \"center\" }}>\n {logoUrl ? (\n <Avatar\n alt={companyName || \"avatar\"}\n src={logoUrl}\n sx={{\n width: 36,\n height: 36,\n bgcolor: \"primary.main\",\n fontSize: 14,\n fontWeight: \"bold\",\n }}\n imgProps={{ loading: \"lazy\" }}\n >\n {companyName?.charAt(0) || \"?\"}\n </Avatar>\n ) : (\n defaultLogo\n )}\n </Box>\n )}\n\n <Box sx={{ maxWidth, flexShrink: 1, minWidth: 0 }}>\n {loggedIn ? (\n <Tooltip title={companyName} placement=\"top\" arrow>\n <Typography\n variant=\"h6\"\n noWrap\n sx={{\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n fontFamily: \"Courier, monospace\",\n fontWeight: \"bold\",\n color: \"primary.main\",\n }}\n >\n {companyName}\n </Typography>\n </Tooltip>\n ) : (\n companyComponent\n )}\n </Box>\n </Grid>\n );\n }\n);\n\nexport default Logo;\n","// @ts-nocheck\nimport * as React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport {\n useTheme,\n useMediaQuery,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n} from \"@mui/material\";\nexport { useTheme } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\n \"& .MuiDialogContent-root\": {\n padding: theme.spacing(4),\n },\n \"& .MuiDialogActions-root\": {\n padding: theme.spacing(4),\n },\n}));\n\nexport interface DialogTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: () => void;\n}\n\nconst BootstrapDialogTitle = (props: DialogTitleProps) => {\n const { children, onClose, ...other } = props;\n\n return (\n <DialogTitle\n sx={{\n px: 3,\n py: 3,\n pt: 3.5,\n pb: 2.5,\n fontSize: \"1.25rem\",\n fontWeight: 600,\n letterSpacing: \"0.02em\",\n lineHeight: 1.35,\n }}\n {...other}\n >\n {children}\n {onClose ? (\n <IconButton\n onClick={onClose}\n sx={{\n position: \"absolute\",\n right: 16,\n top: 16,\n }}\n >\n <Close color=\"primary\" />\n </IconButton>\n ) : null}\n </DialogTitle>\n );\n};\n\nconst FormDialog = ({ open = false, setOpen, title = \"\", actions, children, maxWidth = \"lg\", ...props }) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n return (\n <BootstrapDialog fullWidth onClose={() => setOpen(false)} open={open} maxWidth={maxWidth} fullScreen={mdMatches}>\n <BootstrapDialogTitle onClose={() => setOpen(false)}>{title}</BootstrapDialogTitle>\n <DialogContent dividers>{children}</DialogContent>\n <DialogActions>{actions}</DialogActions>\n </BootstrapDialog>\n );\n};\n\nexport default FormDialog;\n","// @ts-nocheck\nimport React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport { Button } from \"@mui/material\";\nimport { CloudUpload } from \"@mui/icons-material\";\n\nconst VisuallyHiddenInput = styled(\"input\")({\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(50%)\",\n height: 1,\n overflow: \"hidden\",\n position: \"absolute\",\n bottom: 0,\n left: 0,\n whiteSpace: \"nowrap\",\n width: 1,\n});\n\nconst InputFileUpload = ({ name = \"\", onChange = () => null, title = \"\" }) => (\n <Button\n role={undefined}\n component=\"label\"\n size=\"small\"\n variant=\"contained\"\n tabIndex={-1}\n startIcon={<CloudUpload fontSize=\"inherit\" />}\n >\n {title}\n <VisuallyHiddenInput type=\"file\" name={name} onChange={onChange} />\n </Button>\n);\n\nexport default InputFileUpload;\n","import React, { useEffect, useRef, useState, ChangeEvent } from \"react\";\nimport { Box, IconButton } from \"@mui/material\";\nimport { styled } from \"@mui/material/styles\";\nimport { CloudUpload, Close as CloseIcon } from \"@mui/icons-material\";\n\ntype ImageUploadAvatarProps = {\n name?: string;\n defaultValue?: string | null;\n onChange?: (file: File | null, previewSrc: string | null) => void;\n size?: number;\n variant?: \"circular\" | \"rounded\" | \"square\";\n accept?: string;\n disabled?: boolean;\n allowClear?: boolean;\n};\n\nconst HiddenInput = styled(\"input\")({\n position: \"absolute\",\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0 0 0 0)\",\n border: 0,\n});\n\nconst Wrapper = styled(Box, {\n shouldForwardProp: (prop) => prop !== \"variant\" && prop !== \"size\",\n})<{ size: number; variant: \"circular\" | \"rounded\" | \"square\" }>(({ theme, size, variant }) => ({\n position: \"relative\",\n width: size,\n height: size,\n borderRadius: variant === \"circular\" ? \"50%\" : variant === \"rounded\" ? theme.shape.borderRadius * 2 : 0,\n border: `1px dashed ${theme.palette.grey[400]}`,\n backgroundColor: theme.palette.grey[200],\n overflow: \"hidden\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n}));\n\nconst PreviewImg = styled(\"img\")({\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n display: \"block\",\n});\n\nconst Overlay = styled(Box)(({ theme }) => ({\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 120ms ease\",\n borderRadius: \"inherit\",\n \"& .uploadIcon\": {\n opacity: 0,\n transition: \"opacity 120ms ease, transform 120ms ease\",\n transform: \"scale(0.95)\",\n },\n \"&.empty .uploadIcon\": {\n opacity: 0.6,\n transform: \"scale(1)\",\n },\n \"&.hover\": {\n background: \"rgba(0,0,0,0.15)\",\n \"& .uploadIcon\": { opacity: 1, transform: \"scale(1)\" },\n },\n}));\n\nconst ClearButton = styled(IconButton)(({ theme }) => ({\n position: \"absolute\",\n top: -8,\n right: -8,\n background: theme.palette.background.paper,\n boxShadow: theme.shadows[2],\n \"&:hover\": { background: theme.palette.background.paper },\n}));\n\nexport const ImageUploadAvatar: React.FC<ImageUploadAvatarProps> = ({\n name = \"image\",\n defaultValue = null,\n onChange,\n size = 128,\n variant = \"rounded\",\n accept = \"image/*\",\n disabled,\n allowClear = true,\n}) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [internalSrc, setInternalSrc] = useState<string | null>(defaultValue ?? null);\n const [hover, setHover] = useState(false);\n\n useEffect(() => {\n if (!defaultValue) return;\n if (!internalSrc || !internalSrc.startsWith(\"blob:\")) {\n setInternalSrc(defaultValue);\n }\n }, [defaultValue]);\n\n useEffect(() => {\n return () => {\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n };\n }, [internalSrc]);\n\n const handlePick = (e: ChangeEvent<HTMLInputElement>) => {\n const selected = e.target.files?.[0] ?? null;\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n let preview: string | null = null;\n if (selected) {\n preview = URL.createObjectURL(selected);\n setInternalSrc(preview);\n } else {\n setInternalSrc(null);\n }\n if (inputRef.current) inputRef.current.value = \"\";\n onChange?.(selected, preview);\n };\n\n const triggerPick = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n setInternalSrc(null);\n onChange?.(null, null);\n };\n\n return (\n <Wrapper\n role=\"button\"\n size={size}\n variant={variant}\n onPointerEnter={() => setHover(true)}\n onPointerLeave={() => setHover(false)}\n onClick={triggerPick}\n >\n {internalSrc && <PreviewImg src={internalSrc} />}\n <Overlay className={`${!internalSrc ? \"empty\" : \"\"} ${hover && !disabled ? \"hover\" : \"\"}`}>\n <CloudUpload className=\"uploadIcon\" fontSize=\"large\" />\n </Overlay>\n\n {allowClear && internalSrc && !disabled && (\n <ClearButton size=\"small\" aria-label=\"Clear image\" onClick={handleClear} sx={{ m: 1 }}>\n <CloseIcon fontSize=\"inherit\" />\n </ClearButton>\n )}\n\n <HiddenInput ref={inputRef} type=\"file\" name={name} accept={accept} onChange={handlePick} disabled={disabled} />\n </Wrapper>\n );\n};\n\nexport default ImageUploadAvatar;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Snackbar, Alert, AlertTitle, Slide } from \"@mui/material\";\n\nconst FormSnackBar = ({ snackBar = {}, setSnackBar = () => null }) => {\n const getAlertStyles = () => {\n if (snackBar?.type === \"success\") {\n return { backgroundColor: \"#65C466\", color: \"white\" };\n }\n return {};\n };\n\n return (\n <Snackbar\n sx={{ width: \"100%\" }}\n autoHideDuration={1000}\n anchorOrigin={{ vertical: \"top\", horizontal: \"center\" }}\n open={snackBar?.open || false}\n onClose={() =>\n setSnackBar({\n open: false,\n message: \"\",\n type: \"\",\n })\n }\n TransitionComponent={Slide}\n >\n <Alert\n sx={{\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n ...getAlertStyles(),\n }}\n variant=\"filled\"\n severity={snackBar?.type}\n >\n <AlertTitle sx={{ m: 0, p: 0 }}>{snackBar?.message}</AlertTitle>\n </Alert>\n </Snackbar>\n );\n};\n\nexport default FormSnackBar;\n","import React from \"react\";\nimport { CircularProgress, Backdrop } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\n\ninterface LoaderProps {\n size?: number;\n color?: \"primary\" | \"secondary\" | \"inherit\" | \"success\" | \"error\" | \"info\" | \"warning\";\n}\n\nconst useStyles = makeStyles({\n \"@keyframes pulse\": {\n \"0%\": { transform: \"scale(1)\", opacity: 0.9 },\n \"50%\": { transform: \"scale(1.05)\", opacity: 1 },\n \"100%\": { transform: \"scale(1)\", opacity: 0.9 },\n },\n progress: {\n animation: \"$pulse 1.5s ease-in-out infinite\",\n },\n});\n\nconst Loader: React.FC<LoaderProps> = ({ size = 48, color = \"primary\" }) => {\n const classes = useStyles();\n\n return (\n <Backdrop\n open\n sx={{\n zIndex: (theme) => theme.zIndex.modal + 1,\n backgroundColor: \"rgba(255, 255, 255, 0.15)\",\n backdropFilter: \"blur(2px)\",\n }}\n >\n <CircularProgress size={size} color={color} thickness={3.5} className={classes.progress} />\n </Backdrop>\n );\n};\n\nexport default Loader;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Box, useTheme } from \"@mui/material\";\n\nconst SHIMMER_KEYFRAMES = {\n \"@keyframes skeletonShimmer\": {\n \"0%\": { backgroundPosition: \"200% 0\" },\n \"100%\": { backgroundPosition: \"-200% 0\" },\n },\n};\n\nexport interface SkeletonBarProps {\n width?: string | number;\n height?: number;\n sx?: object;\n}\n\n/**\n * Horizontal bar with sideways shimmer loading animation.\n * Use in tables, cards, selects, and any loading placeholder.\n */\nexport const SkeletonBar: React.FC<SkeletonBarProps> = ({\n width = \"100%\",\n height = 24,\n sx = {},\n}) => {\n const theme = useTheme();\n const base =\n theme.palette.mode === \"dark\"\n ? theme.palette.grey?.[700] ?? \"#424242\"\n : theme.palette.grey?.[200] ?? \"#e0e0e0\";\n const highlight =\n theme.palette.mode === \"dark\"\n ? theme.palette.grey?.[600] ?? \"#616161\"\n : theme.palette.grey?.[100] ?? \"#f5f5f5\";\n\n return (\n <Box\n sx={{\n ...SHIMMER_KEYFRAMES,\n borderRadius: 2,\n height,\n width,\n maxWidth: \"100%\",\n overflow: \"hidden\",\n background: `linear-gradient(90deg, ${base} 0%, ${highlight} 20%, ${base} 40%, ${base} 100%)`,\n backgroundSize: \"200% 100%\",\n animation: \"skeletonShimmer 1.4s ease-in-out infinite\",\n ...sx,\n }}\n />\n );\n};\n\nexport default SkeletonBar;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Box, Typography, useTheme } from \"@mui/material\";\nimport { DatasetOutlined } from \"@mui/icons-material\";\n\nexport interface EmptyStateProps {\n /** Label text to display (e.g. getContent(\"noDataDescription\")) */\n label?: string;\n /** Vertical margin (theme spacing, default 8) */\n m?: number;\n /** Optional custom icon */\n icon?: React.ReactNode;\n}\n\nconst EmptyState: React.FC<EmptyStateProps> = ({ label, m = 8, icon }) => {\n const theme = useTheme();\n const text = label ?? \"No data created yet\";\n\n const iconColor =\n theme.palette.mode === \"dark\"\n ? \"rgba(255,255,255,0.42)\"\n : \"rgba(0,0,0,0.42)\";\n\n const labelColor =\n theme.palette.mode === \"dark\"\n ? \"rgba(255,255,255,0.50)\"\n : \"rgba(0,0,0,0.38)\";\n\n const iconEl =\n icon != null && React.isValidElement(icon) ? (\n icon\n ) : (\n <DatasetOutlined\n sx={{\n fontSize: 48,\n color: iconColor,\n display: \"block\",\n }}\n />\n );\n\n return (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 1.5,\n minHeight: 160,\n m,\n py: 3,\n px: 2,\n }}\n >\n {iconEl}\n <Typography\n variant=\"body2\"\n align=\"center\"\n sx={{\n fontWeight: 400,\n fontSize: \"0.875rem\",\n letterSpacing: \"0.01em\",\n color: labelColor,\n maxWidth: 320,\n lineHeight: 1.5,\n }}\n >\n {text}\n </Typography>\n </Box>\n );\n};\nexport default EmptyState;\n","// @ts-nocheck\nimport React from \"react\";\nimport { Button, Typography, Icon, useTheme } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { isNullableType } from \"graphql\";\n\nexport type PillProps = {\n label?: string;\n leftIcon?: string;\n rightIcon?: string;\n color?: string;\n isSelected?: boolean;\n onClick?: () => void;\n disabled?: boolean;\n};\n\nconst useStyles = makeStyles((theme) => ({\n button: {\n padding: \"4px 8px 4px 8px\",\n color: \"black\",\n borderColor: \"black\",\n borderStyle: \"solid\",\n border: \"6px\",\n borderRadius: \"24px !important\",\n \"&:hover\": {\n color: theme.palette.primary[500],\n },\n },\n}));\n\nconst Pill = ({\n variant = \"filter\",\n leftIcon = null,\n rightIcon = null,\n color = null,\n isSelected = false,\n onClick = () => null,\n label = \"\",\n disabled = false,\n}: PillProps) => {\n const theme = useTheme();\n const classes = useStyles();\n\n return (\n <Button\n variant={isSelected ? \"contained\" : \"outlined\"}\n color={color || \"primary\"}\n sx={{\n borderRadius: \"48px\",\n padding: \"8px 24px\",\n textTransform: \"none\",\n }}\n onClick={onClick}\n >\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n {leftIcon && (\n <Icon\n className={leftIcon}\n fontSize={14}\n color=\"inherit\"\n style={{ paddingRight: 8 }}\n data-testid=\"pill-left-icon\"\n />\n )}\n <Typography variant=\"subtitle\" color=\"inherit\" fontWeight={\"bold\"}>\n {label}\n </Typography>\n {rightIcon && (\n <Icon\n className={rightIcon}\n fontSize={14}\n color=\"inherit\"\n style={{ marginLeft: 8 }}\n data-testid=\"pill-right-icon\"\n />\n )}\n </div>\n </Button>\n );\n};\n\nexport default Pill;\n","import React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport Switch, { SwitchProps } from \"@mui/material/Switch\";\n\n// explicitly type as FC with SwitchProps\nconst IOSSwitch: React.FC<SwitchProps> = styled((props: SwitchProps) => (\n <Switch focusVisibleClassName=\".Mui-focusVisible\" disableRipple {...props} />\n))(({ theme }) => ({\n width: 46,\n height: 30,\n padding: 0,\n \"& .MuiSwitch-switchBase\": {\n padding: 0,\n margin: 2,\n transitionDuration: \"300ms\",\n \"&.Mui-checked\": {\n transform: \"translateX(16px)\",\n color: \"#fff\",\n \"& + .MuiSwitch-track\": {\n backgroundColor: theme.palette.primary.main,\n opacity: 1,\n border: 0,\n },\n \"&.Mui-disabled + .MuiSwitch-track\": {\n opacity: 0.5,\n },\n },\n \"&.Mui-focusVisible .MuiSwitch-thumb\": {\n color: \"#33cf4d\",\n border: \"6px solid #fff\",\n },\n \"&.Mui-disabled .MuiSwitch-thumb\": {\n color:\n theme.palette.mode === \"light\"\n ? theme.palette.grey[100]\n : theme.palette.grey[600],\n },\n \"&.Mui-disabled + .MuiSwitch-track\": {\n opacity: theme.palette.mode === \"light\" ? 0.7 : 0.3,\n },\n },\n \"& .MuiSwitch-thumb\": {\n boxSizing: \"border-box\",\n width: 26,\n height: 26,\n },\n \"& .MuiSwitch-track\": {\n borderRadius: 30 / 2,\n backgroundColor:\n theme.palette.mode === \"light\" ? \"#E9E9EA\" : theme.palette.grey[600],\n opacity: 1,\n transition: theme.transitions.create([\"background-color\"], {\n duration: 500,\n }),\n },\n}));\n\nexport default IOSSwitch;\n","import React from \"react\";\nimport { Chip } from \"@mui/material\";\nimport { userStatus } from \"@verma-consulting/common-library\";\n\ninterface StatusPillProps {\n status: userStatus;\n}\n\nconst statusColorMap: Record<\n userStatus,\n \"default\" | \"primary\" | \"secondary\" | \"success\" | \"error\" | \"warning\" | \"info\"\n> = {\n [userStatus.Pending]: \"warning\",\n [userStatus.Active]: \"success\",\n [userStatus.Inactive]: \"error\",\n [userStatus.Invited]: \"info\",\n};\n\nconst StatusPill: React.FC<StatusPillProps> = ({ status }) => (\n <Chip\n label={status}\n color={statusColorMap[status]}\n variant=\"outlined\"\n sx={{ fontWeight: 600, borderRadius: \"16px\", px: 1.5 }}\n />\n);\n\nexport default StatusPill;\n","import React, { useState, MouseEvent, ReactNode, FC } from \"react\";\nimport { Tooltip, IconButton, Popover } from \"@mui/material\";\nimport { MoreHoriz } from \"@mui/icons-material\";\n\ninterface FormPopoverProps {\n row?: any;\n children: (props: { row: any; handleClose: () => void }) => React.ReactNode;\n title?: string;\n}\n\nconst FormPopover: FC<FormPopoverProps> = ({ row, children, title }) => {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const open = Boolean(anchorEl);\n\n return (\n <>\n <Tooltip title={title}>\n <IconButton\n onClick={handleClick}\n size=\"small\"\n sx={{\n backgroundColor: \"white\",\n boxShadow: 1,\n borderRadius: \"50%\",\n border: \"1px solid transparent\",\n \"&:hover\": {\n border: (theme) => `1px solid ${theme.palette.primary.main}`,\n backgroundColor: \"#f0f0f0\",\n },\n }}\n >\n <MoreHoriz fontSize=\"inherit\" color=\"primary\" />\n </IconButton>\n </Tooltip>\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"left\",\n }}\n >\n {children({ row, handleClose })}\n </Popover>\n </>\n );\n};\n\nexport default FormPopover;\n","// @ts-nocheck\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\nimport {\n Autocomplete,\n TextField,\n Typography,\n FormLabel,\n FormControl,\n IconButton,\n} from \"@mui/material\";\nimport { Clear } from \"@mui/icons-material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { GenericPayload } from \"@verma-consulting/common-library\";\n\nconst useStyles = makeStyles(() => ({\n defaultMode: {\n padding: \"14px 8px\",\n cursor: \"pointer\",\n \"&:hover\": {\n borderRadius: 10,\n boxShadow: \"rgba(100, 100, 111, 0.2) 0px 7px 29px 0px\",\n },\n },\n formLabel: {\n cursor: \"pointer\",\n },\n formValue: {\n cursor: \"pointer\",\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n },\n}));\n\ninterface SearchableSelectProps {\n name: string;\n label: string;\n value: string;\n onChange: (value: string) => void;\n options: GenericPayload[];\n size?: \"small\" | \"medium\";\n style?: React.CSSProperties;\n disabled?: boolean;\n onClear?: () => void;\n defaultEditMode?: boolean;\n multiple?: boolean;\n}\n\nconst SearchableSelect: React.FC<SearchableSelectProps> = React.memo(\n ({\n name,\n label,\n value,\n onChange,\n options,\n size = \"small\",\n style,\n disabled = false,\n onClear,\n defaultEditMode = false,\n multiple = false,\n }) => {\n const classes = useStyles();\n const wrapperRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [editMode, setEditMode] = useState(defaultEditMode);\n const [open, setOpen] = useState(defaultEditMode);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n wrapperRef.current &&\n !wrapperRef.current.contains(event.target as Node)\n ) {\n setEditMode(false);\n setOpen(false);\n }\n }\n\n if (editMode) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [editMode]);\n\n useEffect(() => {\n if (editMode && open && inputRef.current) {\n inputRef.current.focus();\n }\n }, [editMode, open]);\n\n const handleClear = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n if (onClear) {\n onClear();\n } else {\n onChange(\"\");\n }\n setEditMode(false);\n setOpen(false);\n };\n\n const selected = useMemo(() => {\n if (multiple) {\n if (!value.trim()) return [];\n const selectedValues = value.split(\", \").map((v) => v.trim());\n return options.filter((opt) => selectedValues.includes(opt.value));\n } else {\n return options.find((opt) => opt.value === value) ?? null;\n }\n }, [value, options, multiple]);\n\n const displayValue = useMemo(() => {\n if (multiple) {\n if (!Array.isArray(selected)) return \"\";\n return selected.map((opt) => opt.label).join(\", \");\n } else {\n return (selected as GenericPayload | null)?.label ?? \"\";\n }\n }, [selected, multiple]);\n\n const isValueEmpty = !value.trim();\n\n return editMode ? (\n <FormControl fullWidth style={style} disabled={disabled} size={size}>\n <Autocomplete\n multiple={multiple}\n disableCloseOnSelect={multiple}\n options={options}\n value={selected}\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n onChange={(_, newValue) => {\n if (multiple) {\n if (Array.isArray(newValue)) {\n let vals = newValue?.map((opt) => opt?.value);\n let val = vals?.join(\", \");\n onChange(val);\n } else {\n onChange(\"\");\n }\n setOpen(true);\n } else {\n onChange((newValue as GenericPayload | null)?.value ?? \"\");\n setOpen(false);\n }\n }}\n disableClearable={!onClear}\n autoHighlight\n getOptionLabel={(option) => option.label}\n isOptionEqualToValue={(option, val) => option.value === val.value}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n variant=\"outlined\"\n size={size}\n inputRef={inputRef}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {!isValueEmpty && (\n <IconButton\n aria-label={`clear ${name}`}\n onClick={handleClear}\n size=\"small\"\n sx={{\n backgroundColor: \"transparent\",\n boxShadow: \"none\",\n }}\n >\n <Clear fontSize=\"inherit\" />\n </IconButton>\n )}\n </>\n ),\n }}\n />\n )}\n onBlur={() => {\n setEditMode(false);\n setOpen(false);\n }}\n />\n </FormControl>\n ) : (\n <div\n ref={wrapperRef}\n onClick={() => {\n if (!disabled) {\n setEditMode(true);\n setOpen(true);\n }\n }}\n className={classes.defaultMode}\n style={style}\n >\n <FormLabel className={classes.formLabel}>{label}</FormLabel>\n <Typography className={classes.formValue}>{displayValue}</Typography>\n </div>\n );\n }\n);\n\nexport default SearchableSelect;\n","import {\n Drawer,\n Typography,\n Box,\n IconButton,\n Grid,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface FormDrawerProps {\n open: boolean;\n setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n title?: string | null;\n actions?: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst FormDrawer: React.FC<FormDrawerProps> = ({\n open,\n setOpen,\n title,\n actions,\n children,\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n return (\n <Drawer\n anchor={mdMatches ? \"bottom\" : \"right\"}\n open={open}\n onClose={() => setOpen(false)}\n sx={{\n \"& .MuiDrawer-paper\": {\n width: mdMatches ? \"100%\" : \"64%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: 0,\n },\n }}\n >\n <Box p={3} borderBottom=\"1px solid #eee\">\n <Grid container>\n <Grid item>\n {title && (\n <Typography variant=\"h6\" fontWeight=\"bold\">\n {title}\n </Typography>\n )}\n </Grid>\n <Grid item>\n <IconButton\n size=\"medium\"\n onClick={() => setOpen(false)}\n sx={{\n position: \"absolute\",\n top: 8,\n right: 8,\n zIndex: 2,\n }}\n >\n <Close fontSize=\"inherit\" />\n </IconButton>\n </Grid>\n </Grid>\n </Box>\n <Box flex={1} overflow=\"auto\" p={3}>\n {children}\n </Box>\n\n {actions && (\n <Box\n p={2}\n borderTop=\"1px solid #eee\"\n sx={{\n position: \"sticky\",\n bottom: 0,\n zIndex: 1,\n }}\n >\n {actions}\n </Box>\n )}\n </Drawer>\n );\n};\n\nexport default FormDrawer;\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n ChangeEvent,\n FocusEvent,\n} from \"react\";\nimport {\n Box,\n Stack,\n TextField,\n MenuItem,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { constants } from \"@verma-consulting/common-library\";\n\ninterface PhoneNumberFieldProps {\n value?: string | null;\n onChange: (e164: string) => void;\n defaultCountry?: string;\n label?: string;\n size?: \"small\" | \"medium\";\n disabled?: boolean;\n autoFocus?: boolean;\n onBlur?: () => void;\n}\n\nconst PhoneNumberField: React.FC<PhoneNumberFieldProps> = ({\n value = \"\",\n onChange,\n defaultCountry = \"US\",\n label = \"Phone number\",\n size = \"small\",\n disabled = false,\n autoFocus = false,\n onBlur,\n}) => {\n const theme = useTheme();\n const smMatches = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const countries = (constants.COUNTRIES || []) as any;\n\n const [country, setCountry] = useState(defaultCountry);\n const [localNumber, setLocalNumber] = useState(\"\");\n const [isFocused, setIsFocused] = useState(false);\n const [selectOpen, setSelectOpen] = useState(false);\n const [ignoreNextOutsideClick, setIgnoreNextOutsideClick] = useState(false);\n\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const parseE164 = useCallback(\n (val: string) => {\n const cleaned = (val || \"\").toString().replace(/\\D/g, \"\");\n if (!cleaned) return { dial: \"\", local: \"\" };\n\n const sorted = [...countries].sort(\n (a, b) => b.phone.length - a.phone.length\n );\n const found = sorted.find((c) => cleaned.startsWith(c.phone));\n if (found) {\n const dial = found.phone;\n const local = cleaned.slice(dial.length);\n return { dial, local: local.slice(-10) };\n }\n return { dial: \"\", local: cleaned.slice(-10) };\n },\n [countries]\n );\n\n useEffect(() => {\n if (isFocused) return;\n if (!value) {\n setLocalNumber(\"\");\n return;\n }\n const { dial, local } = parseE164(String(value));\n if (dial) {\n const found = countries.find((c: any) => c.phone === dial);\n if (found) setCountry(found.code);\n }\n setLocalNumber(local);\n }, [value, parseE164, countries, isFocused]);\n\n const formatLocalNumber = (digits: string) => {\n const cleaned = digits.replace(/\\D/g, \"\").slice(0, 10);\n let formatted = \"\";\n if (cleaned.length > 0) formatted += cleaned.slice(0, 3);\n if (cleaned.length > 3) formatted += \"-\" + cleaned.slice(3, 6);\n if (cleaned.length > 6) formatted += \"-\" + cleaned.slice(6, 10);\n return formatted;\n };\n\n const commitValue = useCallback(() => {\n const sel = countries.find((c: any) => c.code === country);\n const dial = sel?.phone ?? \"\";\n if (dial && localNumber) {\n onChange(`+${dial}${localNumber}`);\n } else {\n onChange(\"\");\n }\n }, [countries, country, localNumber, onChange]);\n\n const handleLocalChange = (e: ChangeEvent<HTMLInputElement>) => {\n const digits = e.target.value.replace(/\\D/g, \"\").slice(0, 10);\n setLocalNumber(digits);\n };\n\n const handleCountryChange = (e: ChangeEvent<HTMLInputElement>) => {\n setCountry(e.target.value);\n };\n\n useEffect(() => {\n const onDocMouseDown = (ev: MouseEvent) => {\n if (!wrapperRef.current) return;\n if (wrapperRef.current.contains(ev.target as Node)) return;\n if (ignoreNextOutsideClick) {\n setIgnoreNextOutsideClick(false);\n return;\n }\n if (isFocused && !selectOpen) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n return () => document.removeEventListener(\"mousedown\", onDocMouseDown);\n }, [isFocused, selectOpen, ignoreNextOutsideClick, commitValue, onBlur]);\n\n const handleWrapperBlur = (e: FocusEvent<HTMLDivElement>) => {\n const next = e.relatedTarget as Node | null;\n if (wrapperRef.current && next && wrapperRef.current.contains(next)) return;\n if (selectOpen) return;\n if (isFocused) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n\n return (\n <Box\n ref={wrapperRef}\n onFocusCapture={() => setIsFocused(true)}\n onBlurCapture={handleWrapperBlur}\n sx={{ display: \"flex\", alignItems: \"center\", width: \"100%\" }}\n >\n <Stack\n direction=\"row\"\n spacing={0}\n alignItems=\"center\"\n sx={{ width: \"100%\" }}\n >\n <TextField\n select\n value={country}\n onChange={handleCountryChange}\n disabled={disabled}\n size={size}\n sx={{\n width: 140,\n \"& .MuiOutlinedInput-root\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n }}\n SelectProps={{\n renderValue: (val: unknown) => {\n const code =\n typeof val === \"string\" ? val : defaultCountry.toUpperCase();\n const c = countries.find((x: any) => x.code === code);\n return c ? `${c.code} (+${c.phone})` : code;\n },\n onOpen: () => {\n setSelectOpen(true);\n setIgnoreNextOutsideClick(true);\n },\n onClose: () => setSelectOpen(false),\n }}\n >\n {countries.map((option: any) => (\n <MenuItem key={option.code} value={option.code}>\n {option.code} (+{option.phone})\n </MenuItem>\n ))}\n </TextField>\n <TextField\n label={label}\n value={localNumber ? formatLocalNumber(localNumber) : \"\"}\n onChange={handleLocalChange}\n placeholder=\" - - \"\n inputProps={{\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n maxLength: 12,\n }}\n disabled={disabled}\n size={size}\n autoFocus={autoFocus}\n fullWidth\n sx={{\n \"& .MuiOutlinedInput-root\": {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n },\n }}\n />\n </Stack>\n </Box>\n );\n};\n\nexport default PhoneNumberField;\n"],"mappings":"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","names":["jsx","useTheme","styled","makeStyles","Typography","Box","jsx","jsxs","useTheme","useMediaQuery","IconButton","jsx","jsxs","styled","jsx","jsxs","Box","IconButton","styled","CloudUpload","jsx","jsxs","jsx","makeStyles","jsx","useStyles","Box","useTheme","jsx","React","Box","Typography","useTheme","jsx","jsxs","Button","Typography","useTheme","makeStyles","jsx","jsxs","useStyles","styled","jsx","jsx","useState","Tooltip","IconButton","jsx","jsxs","React","useEffect","useRef","useState","Typography","FormLabel","FormControl","IconButton","Clear","makeStyles","Fragment","jsx","jsxs","useStyles","Typography","Box","IconButton","Grid","useTheme","useMediaQuery","Close","jsx","jsxs","useEffect","useRef","useState","Box","TextField","useTheme","useMediaQuery","jsx","jsxs"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verma-consulting/design-library",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "description": "Shared MUI-based components for Verma Consulting",
5
5
  "author": "Ankit Verma <ankit@vermadev.com>",
6
6
  "license": "MIT",
@@ -19,23 +19,32 @@
19
19
  },
20
20
  "devDependencies": {
21
21
  "@changesets/cli": "^2.27.1",
22
+ "@emotion/react": "^11.11.0",
23
+ "@emotion/styled": "^11.11.0",
24
+ "@mui/icons-material": "^5.15.0",
25
+ "@mui/material": "^5.15.0",
22
26
  "@types/react": "^17.0.69",
23
27
  "@types/react-dom": "^18.2.14",
28
+ "@vitejs/plugin-react": "^4.2.0",
24
29
  "eslint": "^9.0.0",
30
+ "react": "^18.2.0",
31
+ "react-dom": "^18.2.0",
25
32
  "rimraf": "^6.0.0",
26
33
  "tsup": "^8.0.0",
27
- "typescript": "^5.6.0"
34
+ "typescript": "^5.6.0",
35
+ "vite": "^5.0.0"
28
36
  },
29
37
  "publishConfig": {
30
38
  "access": "public"
31
39
  },
32
40
  "dependencies": {
33
- "@verma-consulting/common-library": "^0.1.49"
41
+ "@verma-consulting/common-library": "^0.1.50"
34
42
  },
35
43
  "scripts": {
36
44
  "clean": "rimraf dist",
37
45
  "build": "tsup src/index.tsx --dts",
38
46
  "watch": "tsup --watch",
47
+ "dev": "vite",
39
48
  "lint": "eslint \"src/**/*.{ts,tsx}\"",
40
49
  "test": "jest",
41
50
  "changeset": "changeset"