@verma-consulting/design-library 0.1.48 → 0.1.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +0 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx","../src/TabPanel.tsx","../src/TablePagination.tsx","../src/Logo.tsx","../src/FormDialog.tsx","../src/InputFileUpload.tsx","../src/glassStyles.ts","../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","../src/CountrySelect.tsx","../src/OTPField.tsx"],"sourcesContent":["export * from \"@mui/material\";\nexport { default as TabPanel } from \"./TabPanel\";\nexport { default as TablePagination } from \"./TablePagination\";\nexport type { TablePaginationDesignProps } from \"./TablePagination\";\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\";\nexport { default as CountrySelect } from \"./CountrySelect\";\nexport type { CountryType } from \"./CountrySelect\";\nexport { default as OTPField } from \"./OTPField\";\nexport type { OTPFieldProps } from \"./OTPField\";\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","import * as React from \"react\";\nimport MuiTablePagination from \"@mui/material/TablePagination\";\nimport type { LabelDisplayedRowsArgs } from \"@mui/material/TablePagination\";\nimport tablePaginationClasses from \"@mui/material/TablePagination/tablePaginationClasses\";\nimport type { SxProps, Theme } from \"@mui/material/styles\";\nimport { alpha } from \"@mui/material/styles\";\n\nexport type TablePaginationDesignProps = React.ComponentProps<\n typeof MuiTablePagination\n> & {\n /** Label before the rows-per-page control. Default: \"Per page\". Overrides MUI `labelRowsPerPage` when both are omitted; explicit `labelRowsPerPage` wins. */\n rowsPerPageLabel?: React.ReactNode;\n /** Formats the range summary (e.g. total count). Default: \"1–10 of 47 results\". Overrides MUI `labelDisplayedRows` when both are omitted; explicit `labelDisplayedRows` wins. */\n displayedRangeLabel?: (info: LabelDisplayedRowsArgs) => React.ReactNode;\n};\n\nfunction mergeSx(...parts: (SxProps<Theme> | undefined)[]): SxProps<Theme> {\n const flat: object[] = [];\n for (const p of parts) {\n if (p == null) continue;\n if (Array.isArray(p)) {\n for (const x of p) {\n if (x != null) flat.push(x as object);\n }\n } else {\n flat.push(p as object);\n }\n }\n return flat as SxProps<Theme>;\n}\n\nconst DEFAULT_ROWS_PER_PAGE_LABEL = \"Per page\";\n\nfunction defaultDisplayedRangeLabel({\n from,\n to,\n count,\n}: LabelDisplayedRowsArgs): React.ReactNode {\n if (count === 0) {\n return \"No results\";\n }\n if (count === -1) {\n return `${from}–${to}+`;\n }\n if (from > to) {\n return `0 of ${count} results`;\n }\n return `${from}–${to} of ${count} results`;\n}\n\nfunction defaultGetItemAriaLabel(\n type: \"first\" | \"last\" | \"next\" | \"previous\",\n): string {\n const labels: Record<typeof type, string> = {\n first: \"First page\",\n previous: \"Previous page\",\n next: \"Next page\",\n last: \"Last page\",\n };\n return labels[type];\n}\n\nconst rootSx: SxProps<Theme> = {\n width: \"100%\",\n boxSizing: \"border-box\",\n verticalAlign: \"middle\",\n bgcolor: \"transparent\",\n backdropFilter: \"blur(12px) saturate(150%)\",\n borderRadius: 2,\n py: 0.75,\n px: { xs: 1, sm: 1.5 },\n [`& .${tablePaginationClasses.toolbar}`]: {\n width: \"100%\",\n minHeight: 48,\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n gap: { xs: 0.75, sm: 1.25 },\n py: 0,\n pr: 0,\n pl: 0,\n maxWidth: \"100%\",\n overflowX: \"auto\",\n },\n [`& .${tablePaginationClasses.spacer}`]: {\n flex: \"1 1 auto\",\n minWidth: 0,\n },\n [`& .${tablePaginationClasses.selectLabel}`]: {\n typography: \"body2\",\n fontWeight: 500,\n textTransform: \"none\",\n color: \"text.secondary\",\n m: 0,\n whiteSpace: \"nowrap\",\n },\n [`& .${tablePaginationClasses.displayedRows}`]: {\n typography: \"body2\",\n fontWeight: 600,\n color: \"text.primary\",\n fontVariantNumeric: \"tabular-nums\",\n m: 0,\n whiteSpace: \"nowrap\",\n },\n [`& .${tablePaginationClasses.input}`]: {\n marginLeft: 0,\n marginRight: 0,\n },\n [`& .${tablePaginationClasses.actions}`]: {\n mx: 1,\n gap: 1,\n display: \"flex\",\n alignItems: \"center\",\n [`& .MuiIconButton-root`]: {\n borderRadius: 2,\n color: \"text.secondary\",\n padding: 0.5,\n border: \"1px solid\",\n borderColor: \"divider\",\n \"&:hover\": {\n bgcolor: \"action.selected\",\n color: \"text.primary\",\n },\n \"&.Mui-disabled\": {\n opacity: 0.36,\n },\n },\n },\n};\n\n/**\n * Design-library TablePagination: forwards MUI props and ref, with a compact\n * toolbar (spacer + `justifyContent: flex-end` so controls stay right),\n * optional `rowsPerPageLabel` / `displayedRangeLabel`, and first/last\n * navigation by default. Use inside `TableFooter` for vertical alignment with\n * table rows.\n */\nconst TablePagination = React.forwardRef(function TablePagination(\n props: TablePaginationDesignProps,\n ref: React.ComponentPropsWithRef<typeof MuiTablePagination>[\"ref\"],\n) {\n const {\n sx,\n slotProps,\n SelectProps,\n showFirstButton = true,\n showLastButton = true,\n labelDisplayedRows: labelDisplayedRowsProp,\n labelRowsPerPage: labelRowsPerPageProp,\n getItemAriaLabel,\n rowsPerPageLabel,\n displayedRangeLabel,\n ...other\n } = props;\n\n const labelRowsPerPageResolved =\n labelRowsPerPageProp ?? rowsPerPageLabel ?? DEFAULT_ROWS_PER_PAGE_LABEL;\n\n const labelDisplayedRowsResolved =\n labelDisplayedRowsProp ?? displayedRangeLabel ?? defaultDisplayedRangeLabel;\n\n const slotSelect = slotProps?.select;\n const { sx: slotSelectSx, ...slotSelectRest } = slotSelect ?? {};\n const { sx: legacySelectSx, ...legacySelectRest } = SelectProps ?? {};\n\n const mergedSelect = {\n variant: \"outlined\" as const,\n size: \"small\" as const,\n ...legacySelectRest,\n ...slotSelectRest,\n sx: mergeSx(\n (theme: Theme) => ({\n borderRadius: 2,\n minWidth: 64,\n fontSize: theme.typography.body2.fontSize,\n backdropFilter: \"blur(10px)\",\n backgroundColor: alpha(\n theme.palette.background.paper,\n theme.palette.mode === \"dark\" ? 0.2 : 0.74,\n ),\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: alpha(\n \"#FFFFFF\",\n theme.palette.mode === \"dark\" ? 0.16 : 0.56,\n ),\n },\n \"&:hover .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"text.disabled\",\n },\n \"&.Mui-focused .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"primary.main\",\n },\n \"& .MuiSelect-select\": {\n py: 0.625,\n minHeight: \"unset\",\n display: \"flex\",\n alignItems: \"center\",\n },\n }),\n legacySelectSx,\n slotSelectSx,\n ),\n };\n\n return (\n <MuiTablePagination\n ref={ref}\n showFirstButton={showFirstButton}\n showLastButton={showLastButton}\n labelRowsPerPage={labelRowsPerPageResolved}\n labelDisplayedRows={labelDisplayedRowsResolved}\n getItemAriaLabel={getItemAriaLabel ?? defaultGetItemAriaLabel}\n slotProps={{\n ...slotProps,\n select: mergedSelect,\n }}\n sx={mergeSx(rootSx, sx)}\n {...other}\n />\n );\n});\n\nexport default TablePagination;\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 = 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 {(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 <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 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","import * as React from \"react\";\nimport { styled, alpha, type Theme } from \"@mui/material/styles\";\nimport {\n useTheme,\n useMediaQuery,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n type DialogProps,\n} from \"@mui/material\";\nimport { Close } from \"@mui/icons-material\";\n\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\n \"& .MuiDialog-paper\": {\n borderRadius: 24,\n backgroundColor: theme.palette.background.paper,\n display: \"flex\",\n flexDirection: \"column\",\n maxHeight: \"min(92vh, 1200px)\",\n [theme.breakpoints.down(\"md\")]: {\n borderRadius: 0,\n maxHeight: \"100%\",\n },\n },\n \"& .MuiDialogContent-root\": {\n padding: theme.spacing(4),\n },\n \"& .MuiDialogActions-root\": {\n padding: theme.spacing(4),\n },\n}));\n\nexport type FormDialogTitleProps = React.ComponentProps<typeof DialogTitle> & {\n onClose?: () => void;\n};\n\nconst BootstrapDialogTitle = ({\n children,\n onClose,\n ...other\n}: FormDialogTitleProps) => (\n <DialogTitle\n sx={{\n position: \"relative\",\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 color: \"primary.main\",\n flexShrink: 0,\n bgcolor: \"background.paper\",\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 aria-label=\"Close\"\n >\n <Close color=\"primary\" />\n </IconButton>\n ) : null}\n </DialogTitle>\n);\n\nconst defaultBackdropSx = {\n backgroundColor: (t: Theme) =>\n alpha(t.palette.common.black, t.palette.mode === \"dark\" ? 0.52 : 0.28),\n backdropFilter: \"saturate(150%) blur(10px)\",\n WebkitBackdropFilter: \"saturate(150%) blur(10px)\",\n};\n\nexport type FormDialogProps = Omit<\n DialogProps,\n \"open\" | \"onClose\" | \"title\" | \"children\"\n> & {\n open?: boolean;\n setOpen:\n | React.Dispatch<React.SetStateAction<boolean>>\n | ((open: boolean) => void);\n title?: React.ReactNode;\n /** Omit or pass `null` to hide the actions row. */\n actions?: React.ReactNode | null;\n children: React.ReactNode;\n maxWidth?: DialogProps[\"maxWidth\"];\n};\n\nconst FormDialog = ({\n open = false,\n setOpen,\n title = \"\",\n actions,\n children,\n maxWidth = \"lg\",\n BackdropProps,\n ...props\n}: FormDialogProps) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n const close = () => setOpen(false);\n\n const bp = BackdropProps ?? {};\n const mergedBackdrop = {\n ...bp,\n sx: Array.isArray(bp.sx)\n ? [defaultBackdropSx, ...bp.sx]\n : [defaultBackdropSx, bp.sx].filter(Boolean),\n };\n\n return (\n <BootstrapDialog\n {...props}\n fullWidth\n onClose={close}\n open={open}\n maxWidth={maxWidth}\n fullScreen={mdMatches}\n BackdropProps={mergedBackdrop}\n >\n <BootstrapDialogTitle onClose={close}>{title}</BootstrapDialogTitle>\n <DialogContent\n dividers\n sx={{\n flex: \"1 1 auto\",\n minHeight: 0,\n overflow: \"auto\",\n bgcolor: \"background.paper\",\n }}\n >\n {children}\n </DialogContent>\n {actions != null ? (\n <DialogActions\n sx={{\n flexShrink: 0,\n bgcolor: \"background.paper\",\n borderTop: (t) => `1px solid ${t.palette.divider}`,\n }}\n >\n {actions}\n </DialogActions>\n ) : null}\n </BootstrapDialog>\n );\n};\n\nexport default FormDialog;\n","// @ts-nocheck\nimport React from \"react\";\nimport { alpha, styled, useTheme } from \"@mui/material/styles\";\nimport { Box, Typography } from \"@mui/material\";\nimport { CloudUpload } from \"@mui/icons-material\";\nimport { glassHover, glassSurface } from \"./glassStyles\";\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\nexport type InputFileUploadProps = {\n name?: string;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n /** Primary label (e.g. “Upload document”). */\n title?: string;\n /** Secondary line under the title (e.g. accepted types). */\n subtitle?: string;\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n /** Stretch to the width of the parent container. */\n fullWidth?: boolean;\n};\n\nconst InputFileUpload: React.FC<InputFileUploadProps> = ({\n name = \"\",\n onChange = () => null,\n title = \"Choose file\",\n subtitle = \"Tap to browse\",\n accept,\n multiple,\n disabled = false,\n fullWidth = false,\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n component=\"label\"\n sx={(t) => ({\n ...glassSurface(t),\n display: fullWidth ? \"flex\" : \"inline-flex\",\n alignItems: \"center\",\n gap: 2,\n width: fullWidth ? \"100%\" : \"auto\",\n maxWidth: \"100%\",\n px: 2.25,\n py: 1.75,\n borderRadius: 2.5,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.52 : 1,\n pointerEvents: disabled ? \"none\" : \"auto\",\n transition: \"box-shadow 0.2s ease, transform 0.2s ease\",\n borderStyle: \"dashed\",\n borderWidth: 1,\n borderColor: alpha(\n t.palette.primary.main,\n t.palette.mode === \"dark\" ? 0.35 : 0.28,\n ),\n \"&:hover\": !disabled\n ? {\n ...glassHover(t),\n borderColor: alpha(t.palette.primary.main, 0.45),\n boxShadow:\n t.palette.mode === \"dark\"\n ? \"0 12px 28px rgba(0,0,0,0.38)\"\n : \"0 12px 28px rgba(15, 23, 42, 0.12)\",\n }\n : undefined,\n \"&:focus-within\": {\n outline: `2px solid ${alpha(t.palette.primary.main, 0.45)}`,\n outlineOffset: 2,\n },\n })}\n >\n <Box\n aria-hidden\n sx={{\n flexShrink: 0,\n width: 44,\n height: 44,\n borderRadius: 2,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: alpha(\n theme.palette.primary.main,\n theme.palette.mode === \"dark\" ? 0.22 : 0.12,\n ),\n border: `1px solid ${alpha(theme.palette.primary.main, 0.25)}`,\n color: \"primary.main\",\n }}\n >\n <CloudUpload sx={{ fontSize: 22 }} />\n </Box>\n\n <Box sx={{ flex: 1, minWidth: 0, textAlign: \"left\" }}>\n <Typography\n variant=\"subtitle2\"\n component=\"span\"\n display=\"block\"\n fontWeight={700}\n color=\"text.primary\"\n letterSpacing=\"-0.01em\"\n >\n {title}\n </Typography>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n display=\"block\"\n sx={{ mt: 0.25 }}\n >\n {subtitle}\n </Typography>\n </Box>\n\n <VisuallyHiddenInput\n type=\"file\"\n name={name}\n onChange={onChange}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n />\n </Box>\n );\n};\n\nexport default InputFileUpload;\n","import { alpha, Theme } from \"@mui/material/styles\";\n\nexport const glassBorder = (theme: Theme) =>\n `1px solid ${alpha(\n \"#FFFFFF\",\n theme.palette.mode === \"dark\" ? 0.16 : 0.62,\n )}`;\n\nexport const glassSurface = (theme: Theme) => ({\n background:\n theme.palette.mode === \"dark\"\n ? `linear-gradient(160deg, ${alpha(\"#1F2937\", 0.78)} 0%, ${alpha(\"#111827\", 0.68)} 100%)`\n : `linear-gradient(160deg, ${alpha(\"#FFFFFF\", 0.88)} 0%, ${alpha(\"#F5F9FF\", 0.72)} 100%)`,\n border: glassBorder(theme),\n backdropFilter: \"blur(18px) saturate(155%)\",\n WebkitBackdropFilter: \"blur(18px) saturate(155%)\",\n boxShadow:\n theme.palette.mode === \"dark\"\n ? \"0 16px 40px rgba(0,0,0,0.34)\"\n : \"0 14px 34px rgba(15, 23, 42, 0.12)\",\n});\n\nexport const glassHover = (theme: Theme) => ({\n background:\n theme.palette.mode === \"dark\"\n ? `linear-gradient(160deg, ${alpha(\"#374151\", 0.8)} 0%, ${alpha(\"#1F2937\", 0.74)} 100%)`\n : `linear-gradient(160deg, ${alpha(\"#FFFFFF\", 0.97)} 0%, ${alpha(\"#EEF5FF\", 0.86)} 100%)`,\n});\n","import React, { useEffect, useRef, useState, ChangeEvent } from \"react\";\nimport { Box, IconButton } from \"@mui/material\";\nimport { alpha, styled } from \"@mui/material/styles\";\nimport { CloudUpload, Close as CloseIcon } from \"@mui/icons-material\";\nimport { glassSurface } from \"./glassStyles\";\n\nconst DEFAULT_ACCEPT =\n \"image/jpeg,image/png,image/gif,image/webp,image/avif,image/bmp,image/svg+xml,image/heic,image/heif\";\n\nfunction isValidImageFile(file: File): boolean {\n const type = file.type.trim().toLowerCase();\n if (type.startsWith(\"image/\")) {\n return true;\n }\n if (!type && /\\.(jpe?g|png|gif|webp|avif|bmp|svg|heic|heif)$/i.test(file.name)) {\n return true;\n }\n return false;\n}\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 ...glassSurface(theme),\n border: `1px dashed ${alpha(theme.palette.primary.main, 0.28)}`,\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 ...glassSurface(theme),\n boxShadow: theme.shadows[2],\n \"&:hover\": {\n background: alpha(theme.palette.background.paper, 0.9),\n },\n}));\n\nexport const ImageUploadAvatar: React.FC<ImageUploadAvatarProps> = ({\n name = \"image\",\n defaultValue = null,\n onChange,\n size = 128,\n variant = \"rounded\",\n accept = DEFAULT_ACCEPT,\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 raw = e.target.files?.[0] ?? null;\n if (raw && !isValidImageFile(raw)) {\n if (inputRef.current) inputRef.current.value = \"\";\n return;\n }\n const selected = raw;\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","import React, { useEffect, useRef, useState } from \"react\";\nimport { Alert, Grow, IconButton, type AlertProps } from \"@mui/material\";\nimport { alpha, useTheme } from \"@mui/material/styles\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { constants } from \"@verma-consulting/common-library\";\n\nconst SNACKBAR_TYPES = (constants as any)?.SNACKBAR_TYPES;\n\nexport type SnackbarType = \"success\" | \"error\" | \"warning\" | \"info\" | \"\";\n\nconst DULL_SNACKBAR_COLORS = {\n success: \"#6B8E6B\",\n warning: \"#C97B4B\", // dull orange soda\n info: \"#4A5E8A\",\n error: \"#9B4444\",\n} as const;\n\nexport interface FormSnackBarState {\n open?: boolean;\n message?: string;\n type?: SnackbarType;\n}\n\nexport interface FormSnackBarProps {\n snackBar?: FormSnackBarState;\n setSnackBar?: (state: FormSnackBarState) => void;\n autoHideDuration?: number;\n}\n\nfunction isSnackbarType(val: unknown): val is Exclude<SnackbarType, \"\"> {\n if (typeof val !== \"string\") return false;\n if (!SNACKBAR_TYPES) {\n return ([\"success\", \"error\", \"warning\", \"info\"] as const).includes(\n val as any,\n );\n }\n const values = Object.values(SNACKBAR_TYPES) as string[];\n return values.includes(val);\n}\n\nconst FormSnackBar: React.FC<FormSnackBarProps> = ({\n snackBar = {},\n setSnackBar = () => null,\n autoHideDuration = 3500,\n}) => {\n const theme = useTheme();\n\n const [queue, setQueue] = useState<\n Array<{ id: string; type: SnackbarType; message: string }>\n >([]);\n const idRef = useRef(0);\n const prevOpenRef = useRef<boolean>(!!snackBar?.open);\n const prevSignatureRef = useRef<string>(\"\");\n const timersRef = useRef<Record<string, ReturnType<typeof setTimeout>>>({});\n\n const type = (snackBar.type ?? \"\") as SnackbarType;\n const message = snackBar.message ?? \"\";\n\n const severity: AlertProps[\"severity\"] = isSnackbarType(type) ? type : \"info\";\n\n const enqueueFromProp = () => {\n if (!snackBar?.open) return;\n if (!message) return;\n\n const signature = `${type}::${message}`;\n const openRose = !prevOpenRef.current && !!snackBar?.open;\n const signatureChanged = signature !== prevSignatureRef.current;\n\n // Enqueue on a rising edge OR when message/type changes while still open.\n if (!openRose && !signatureChanged) return;\n\n prevSignatureRef.current = signature;\n const id = String(++idRef.current);\n setQueue((q) => [...q, { id, type, message }]);\n\n timersRef.current[id] = setTimeout(() => {\n setQueue((q) => q.filter((item) => item.id !== id));\n delete timersRef.current[id];\n }, autoHideDuration);\n\n // Reset the external trigger immediately so repeated actions can enqueue again.\n setSnackBar({ open: false, message: \"\", type: \"\" });\n };\n\n useEffect(() => {\n const nextOpen = !!snackBar?.open;\n // Enqueue on open change and/or message change while open.\n enqueueFromProp();\n prevOpenRef.current = nextOpen;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [snackBar?.open, snackBar?.message, snackBar?.type]);\n\n const handleDismiss = (id: string) => {\n const t = timersRef.current[id];\n if (t) clearTimeout(t);\n delete timersRef.current[id];\n setQueue((q) => q.filter((item) => item.id !== id));\n };\n\n useEffect(() => {\n return () => {\n Object.values(timersRef.current).forEach((t) => clearTimeout(t));\n timersRef.current = {};\n };\n }, []);\n\n const typeStyles = (severity: AlertProps[\"severity\"]) => {\n // Softer, dull colors so they are visible without being harsh.\n const baseHex =\n severity === \"success\"\n ? DULL_SNACKBAR_COLORS.success\n : severity === \"error\"\n ? DULL_SNACKBAR_COLORS.error\n : severity === \"warning\"\n ? DULL_SNACKBAR_COLORS.warning\n : DULL_SNACKBAR_COLORS.info;\n return {\n bg:\n theme.palette.mode === \"dark\"\n ? alpha(baseHex, 0.34)\n : alpha(baseHex, 0.24),\n text: theme.palette.mode === \"dark\" ? \"rgba(255,255,255,0.94)\" : baseHex,\n icon: baseHex,\n };\n };\n\n return (\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n style={{\n position: \"fixed\",\n top: 12,\n right: 12,\n zIndex: 1400,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n width: \"min(420px, calc(100vw - 24px))\",\n pointerEvents: \"none\",\n }}\n >\n {queue.map((item) => {\n const localSeverity: AlertProps[\"severity\"] = isSnackbarType(item.type)\n ? item.type\n : \"info\";\n\n const colors = typeStyles(localSeverity);\n\n return (\n <Grow key={item.id} in timeout={280}>\n <Alert\n variant=\"filled\"\n severity={localSeverity}\n sx={{\n width: \"100%\",\n pointerEvents: \"auto\",\n borderRadius: 2,\n px: { xs: 1.25, sm: 1.5 },\n py: 0.875,\n alignItems: \"center\",\n boxShadow: 2,\n backgroundColor: colors.bg,\n color: colors.text,\n backdropFilter: \"blur(14px) saturate(150%)\",\n WebkitBackdropFilter: \"blur(14px) saturate(150%)\",\n border: `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.16 : 0.55)}`,\n \"& .MuiAlert-icon\": {\n color: colors.icon,\n },\n \"& .MuiAlert-message\": {\n m: 0,\n p: 0,\n fontWeight: 600,\n letterSpacing: \"-0.01em\",\n },\n }}\n action={\n <IconButton\n aria-label=\"close\"\n color=\"inherit\"\n size=\"small\"\n onClick={() => handleDismiss(item.id)}\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n }\n >\n {item.message}\n </Alert>\n </Grow>\n );\n })}\n </div>\n );\n};\n\nexport default FormSnackBar;\n","import React from \"react\";\nimport { CircularProgress, Backdrop } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { alpha } from \"@mui/material/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: \"transparent\",\n backdropFilter: \"blur(10px) saturate(145%)\",\n }}\n >\n <CircularProgress\n size={size}\n color={color}\n thickness={3.4}\n className={classes.progress}\n sx={{\n p: 1,\n borderRadius: \"50%\",\n backgroundColor: \"transparent\",\n border: (theme) =>\n `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.14 : 0.56)}`,\n boxShadow: (theme) =>\n theme.palette.mode === \"dark\"\n ? \"0 10px 24px rgba(0,0,0,0.32)\"\n : \"0 10px 20px rgba(15,23,42,0.14)\",\n }}\n />\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 } from \"@mui/material\";\nimport { alpha, useTheme } from \"@mui/material/styles\";\nimport { glassSurface } from \"./glassStyles\";\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 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\n return (\n <Button\n variant={isSelected ? \"contained\" : \"outlined\"}\n color={color || \"primary\"}\n sx={{\n ...glassSurface(theme),\n borderRadius: 16,\n padding: \"8px 16px\",\n minHeight: 38,\n textTransform: \"none\",\n borderColor: isSelected\n ? alpha(theme.palette.primary.main, 0.34)\n : alpha(theme.palette.text.primary, 0.18),\n color: isSelected ? \"primary.main\" : \"text.primary\",\n \"&:hover\": {\n borderColor: alpha(theme.palette.primary.main, 0.42),\n boxShadow:\n theme.palette.mode === \"dark\"\n ? \"0 10px 22px rgba(0,0,0,0.34)\"\n : \"0 10px 20px rgba(15,23,42,0.14)\",\n },\n }}\n onClick={onClick}\n disabled={disabled}\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=\"subtitle2\" color=\"inherit\" fontWeight={700}>\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 { alpha, 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 background: `linear-gradient(120deg, ${alpha(theme.palette.primary.light, 0.92)} 0%, ${alpha(theme.palette.primary.main, 0.94)} 100%)`,\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 boxShadow:\n theme.palette.mode === \"dark\"\n ? \"0 2px 8px rgba(0,0,0,0.38)\"\n : \"0 2px 6px rgba(15,23,42,0.24)\",\n },\n \"& .MuiSwitch-track\": {\n borderRadius: 16,\n background:\n theme.palette.mode === \"light\"\n ? \"linear-gradient(120deg, rgba(245,248,255,0.92) 0%, rgba(224,232,245,0.92) 100%)\"\n : \"linear-gradient(120deg, rgba(55,65,81,0.74) 0%, rgba(31,41,55,0.8) 100%)\",\n border: `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.16 : 0.56)}`,\n backdropFilter: \"blur(10px) saturate(145%)\",\n WebkitBackdropFilter: \"blur(10px) saturate(145%)\",\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 { alpha, useTheme } from \"@mui/material/styles\";\nimport { userStatus } from \"@verma-consulting/common-library\";\nimport { glassSurface } from \"./glassStyles\";\n\ninterface StatusPillProps {\n status: userStatus;\n}\n\nconst statusColorMap: Record<userStatus, string> = {\n [userStatus.Pending]: \"#B06A00\",\n [userStatus.Active]: \"#087443\",\n [userStatus.Inactive]: \"#B42318\",\n [userStatus.Invited]: \"#175CD3\",\n};\n\nconst StatusPill: React.FC<StatusPillProps> = ({ status }) => {\n const theme = useTheme();\n\n return (\n <Chip\n label={status}\n variant=\"outlined\"\n sx={{\n ...glassSurface(theme),\n minHeight: 38,\n fontWeight: 700,\n borderRadius: 16,\n px: 1.25,\n letterSpacing: \"0.01em\",\n color: statusColorMap[status] ?? theme.palette.text.primary,\n backgroundColor: alpha(\n statusColorMap[status] ?? theme.palette.text.primary,\n theme.palette.mode === \"dark\" ? 0.24 : 0.12,\n ),\n borderColor: alpha(\n statusColorMap[status] ?? theme.palette.text.primary,\n theme.palette.mode === \"dark\" ? 0.36 : 0.28,\n ),\n \"& .MuiChip-label\": {\n px: 1.25,\n },\n }}\n />\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 { alpha, useTheme } from \"@mui/material/styles\";\nimport { Clear } from \"@mui/icons-material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { GenericPayload } from \"@verma-consulting/common-library\";\n\nconst useStyles = makeStyles((theme) => ({\n defaultMode: {\n margin: \"4px\",\n padding: \"14px 8px\",\n cursor: \"pointer\",\n borderRadius: 8,\n border: `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.16 : 0.55)}`,\n backdropFilter: \"blur(14px) saturate(150%)\",\n background:\n theme.palette.mode === \"dark\"\n ? \"linear-gradient(160deg, rgba(31,41,55,0.78), rgba(17,24,39,0.68))\"\n : \"linear-gradient(160deg, rgba(255,255,255,0.9), rgba(245,249,255,0.72))\",\n \"&:hover\": {\n boxShadow:\n theme.palette.mode === \"dark\"\n ? \"rgba(0, 0, 0, 0.34) 0px 10px 26px\"\n : \"rgba(15, 23, 42, 0.16) 0px 8px 24px\",\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 /** If `null` or omitted, the clear control is not shown. Pass a handler to enable clear. */\n onClear?: (() => void) | null;\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 = null,\n defaultEditMode = false,\n multiple = false,\n }) => {\n const theme = useTheme();\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 const glassBackground =\n theme.palette.mode === \"dark\"\n ? \"linear-gradient(160deg, rgba(31,41,55,0.78), rgba(17,24,39,0.68))\"\n : \"linear-gradient(160deg, rgba(255,255,255,0.9), rgba(245,249,255,0.72))\";\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 }\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 const showClear = onClear != null;\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\n autoHighlight\n getOptionLabel={(option) => option.label}\n isOptionEqualToValue={(option, val) => option.value === val.value}\n sx={{\n \"& .MuiAutocomplete-inputRoot\": {\n background: glassBackground,\n color: \"text.primary\",\n },\n \"& .MuiAutocomplete-inputRoot.Mui-focused\": {\n background: glassBackground,\n color: \"text.primary\",\n },\n \"& .MuiAutocomplete-inputRoot:hover\": {\n background: glassBackground,\n },\n \"& .MuiAutocomplete-input\": {\n color: \"text.primary\",\n WebkitTextFillColor: \"currentColor\",\n },\n \"& .MuiInputLabel-root\": {\n color: \"text.secondary\",\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"text.primary\",\n },\n \"& .MuiSvgIcon-root\": {\n color: \"text.secondary\",\n },\n }}\n slotProps={{\n paper: {\n sx: {\n background: glassBackground,\n backdropFilter: \"blur(12px) saturate(150%)\",\n border: `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.16 : 0.55)}`,\n boxShadow:\n theme.palette.mode === \"dark\"\n ? \"rgba(0, 0, 0, 0.34) 0px 10px 26px\"\n : \"rgba(15, 23, 42, 0.16) 0px 8px 24px\",\n \"& .MuiAutocomplete-option\": {\n \"&[aria-selected='true']\": {\n backgroundColor: alpha(\n theme.palette.primary.main,\n theme.palette.mode === \"dark\" ? 0.28 : 0.14,\n ),\n },\n \"&.Mui-focused\": {\n backgroundColor: alpha(\n theme.palette.primary.main,\n theme.palette.mode === \"dark\" ? 0.2 : 0.1,\n ),\n },\n },\n },\n },\n }}\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 sx: {\n borderRadius: 2,\n backdropFilter: \"blur(10px)\",\n pr: 1.5,\n background: glassBackground,\n color: \"text.primary\",\n \"&.Mui-focused\": {\n background: glassBackground,\n },\n \"&:hover\": {\n background: glassBackground,\n },\n \"& .MuiInputBase-input\": {\n color: \"text.primary\",\n WebkitTextFillColor: \"currentColor\",\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: alpha(\n \"#FFFFFF\",\n theme.palette.mode === \"dark\" ? 0.18 : 0.6,\n ),\n },\n },\n endAdornment: (\n <>\n {showClear && !isValueEmpty && (\n <IconButton\n aria-label={`clear ${name}`}\n onClick={handleClear}\n size=\"small\"\n sx={{\n backgroundColor: \"transparent\",\n boxShadow: \"none\",\n mr: 0.25,\n }}\n >\n <Clear fontSize=\"inherit\" />\n </IconButton>\n )}\n {params.InputProps.endAdornment}\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\n className={classes.formLabel}\n sx={{ color: \"text.secondary\" }}\n >\n {label}\n </FormLabel>\n <Typography\n className={classes.formValue}\n sx={{ color: \"text.primary\" }}\n >\n {displayValue}\n </Typography>\n </div>\n );\n },\n);\n\nexport default SearchableSelect;\n","import * as React from \"react\";\nimport {\n Drawer,\n Typography,\n Box,\n IconButton,\n Grid,\n useTheme,\n useMediaQuery,\n type DrawerProps,\n} from \"@mui/material\";\nimport { alpha, type Theme } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\nexport type FormDrawerProps = Omit<\n DrawerProps,\n \"open\" | \"onClose\" | \"children\"\n> & {\n open: boolean;\n setOpen:\n | React.Dispatch<React.SetStateAction<boolean>>\n | ((open: boolean) => void);\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 BackdropProps,\n sx,\n ...props\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n const close = () => setOpen(false);\n\n const defaultBackdropSx = {\n backgroundColor: (t: Theme) =>\n alpha(t.palette.common.black, t.palette.mode === \"dark\" ? 0.52 : 0.28),\n backdropFilter: \"saturate(150%) blur(10px)\",\n WebkitBackdropFilter: \"saturate(150%) blur(10px)\",\n };\n\n const bp = BackdropProps ?? {};\n const mergedBackdrop = {\n ...bp,\n sx: Array.isArray(bp.sx)\n ? [defaultBackdropSx, ...bp.sx]\n : [defaultBackdropSx, bp.sx].filter(Boolean),\n };\n\n return (\n <Drawer\n {...props}\n anchor={mdMatches ? \"bottom\" : \"right\"}\n open={open}\n onClose={close}\n BackdropProps={mergedBackdrop}\n sx={[\n {\n \"& .MuiDrawer-paper\": {\n width: mdMatches ? \"100%\" : \"78%\",\n maxWidth: \"100%\",\n height: mdMatches ? \"100%\" : \"100%\",\n maxHeight: mdMatches ? \"100%\" : \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: mdMatches ? 0 : \"24px 0 0 24px\",\n overflow: \"hidden\",\n bgcolor: \"background.paper\",\n },\n },\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ]}\n >\n <Box\n sx={{\n position: \"relative\",\n flexShrink: 0,\n p: 3,\n borderBottom: (t) => `1px solid ${alpha(t.palette.divider, 0.36)}`,\n bgcolor: \"background.paper\",\n }}\n >\n <Grid container>\n <Grid item>\n {title ? (\n <Typography variant=\"h6\" fontWeight=\"bold\" component=\"div\">\n {title}\n </Typography>\n ) : null}\n </Grid>\n <Grid item>\n <IconButton\n size=\"medium\"\n onClick={close}\n sx={{\n position: \"absolute\",\n top: 8,\n right: 8,\n zIndex: 2,\n bgcolor: \"background.paper\",\n boxShadow: 1,\n }}\n aria-label=\"Close\"\n >\n <Close fontSize=\"inherit\" />\n </IconButton>\n </Grid>\n </Grid>\n </Box>\n <Box\n sx={{\n flex: 1,\n minHeight: 0,\n overflow: \"auto\",\n p: 3,\n bgcolor: \"background.paper\",\n }}\n >\n {children}\n </Box>\n {actions != null ? (\n <Box\n sx={{\n flexShrink: 0,\n p: 2,\n borderTop: (t) => `1px solid ${alpha(t.palette.divider, 0.36)}`,\n bgcolor: \"background.paper\",\n }}\n >\n {actions}\n </Box>\n ) : null}\n </Drawer>\n );\n};\n\nexport default FormDrawer;\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n} from \"react\";\nimport {\n Autocomplete,\n Box,\n Stack,\n TextField,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { createFilterOptions } from \"@mui/material/Autocomplete\";\nimport { alpha } from \"@mui/material/styles\";\nimport { constants } from \"@verma-consulting/common-library\";\n\nconst EXT_MAX_LEN = 20;\n\nconst filterCountryOptions = createFilterOptions({\n stringify: (option: { label: string; code: string; phone: string }) =>\n `${option.label} ${option.code} ${option.phone}`,\n});\n\n/** Strips ;ext= / ext. from main string; returns main without ext metadata and ext digits. */\nfunction extractExtensionFromMain(main: string): {\n main: string;\n extFromMeta: string;\n} {\n let m = main.trim();\n let extFromMeta = \"\";\n const semi = m.match(/;ext=(\\d+)/i);\n if (semi) {\n extFromMeta = semi[1];\n m = m.replace(/;ext=\\d+/gi, \"\");\n }\n const extWord = m.match(/\\bext\\.?\\s*(\\d+)/i);\n if (extWord) {\n extFromMeta = extFromMeta || extWord[1];\n m = m.replace(/\\bext\\.?\\s*\\d+/i, \"\");\n }\n return { main: m, extFromMeta };\n}\n\ninterface ParsedPhone {\n dial: string;\n local: string;\n extension: string;\n}\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 error?: boolean;\n helperText?: React.ReactNode;\n onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void;\n}\n\nfunction parsePhoneValue(\n raw: string,\n countries: any[],\n defaultCountry: string,\n): ParsedPhone {\n const s = String(raw ?? \"\").trim();\n if (!s) return { dial: \"\", local: \"\", extension: \"\" };\n\n const defaultDial =\n countries.find((c: any) => c.code === defaultCountry)?.phone ?? \"1\";\n\n let ext = \"\";\n let mainPart = s;\n\n const xSplit = s.split(/\\s*[xX]\\s*/);\n if (xSplit.length > 1) {\n mainPart = xSplit[0] ?? \"\";\n ext = xSplit.slice(1).join(\"\").replace(/\\D/g, \"\").slice(0, EXT_MAX_LEN);\n }\n\n const meta = extractExtensionFromMain(mainPart);\n mainPart = meta.main;\n if (meta.extFromMeta) {\n ext = (ext || meta.extFromMeta).replace(/\\D/g, \"\").slice(0, EXT_MAX_LEN);\n }\n\n const digitsOnly = mainPart.replace(/\\D/g, \"\");\n if (!digitsOnly) return { dial: \"\", local: \"\", extension: ext };\n\n const sorted = [...countries].sort((a, b) => b.phone.length - a.phone.length);\n\n if (mainPart.trim().startsWith(\"+\")) {\n const found = sorted.find((c) => digitsOnly.startsWith(c.phone));\n if (found) {\n const rest = digitsOnly.slice(found.phone.length);\n const local = found.phone === \"1\" ? rest.slice(-10) : rest.slice(-10);\n return {\n dial: found.phone,\n local,\n extension: ext,\n };\n }\n }\n\n const foundDefault = countries.find((c: any) => c.code === defaultCountry);\n const dial = foundDefault?.phone ?? defaultDial;\n\n if (dial === \"1\") {\n if (digitsOnly.length === 11 && digitsOnly.startsWith(\"1\")) {\n return {\n dial: \"1\",\n local: digitsOnly.slice(1, 11),\n extension: ext,\n };\n }\n if (digitsOnly.length <= 10) {\n return {\n dial: \"1\",\n local: digitsOnly.slice(-10),\n extension: ext,\n };\n }\n if (digitsOnly.length > 10) {\n return {\n dial: \"1\",\n local: digitsOnly.slice(-10),\n extension: ext,\n };\n }\n }\n\n const found = sorted.find((c) => digitsOnly.startsWith(c.phone));\n if (found) {\n const rest = digitsOnly.slice(found.phone.length);\n return {\n dial: found.phone,\n local: rest.slice(-10),\n extension: ext,\n };\n }\n\n return {\n dial,\n local: digitsOnly.slice(-10),\n extension: ext,\n };\n}\n\nfunction buildStoredValue(\n dial: string,\n local: string,\n extension: string,\n): string {\n if (!dial || !local) return \"\";\n const core = `+${dial}${local}`;\n if (extension) return `${core}x${extension}`;\n return core;\n}\n\n/**\n * US/Canada NANP — national digits only, 3-3-4 with dashes (no parentheses:\n * parens make backspace fight the formatter).\n */\nfunction formatNanpNational(digits: string): string {\n const d = digits.replace(/\\D/g, \"\").slice(0, 10);\n if (!d.length) return \"\";\n if (d.length <= 3) return d;\n if (d.length <= 6) return `${d.slice(0, 3)}-${d.slice(3)}`;\n return `${d.slice(0, 3)}-${d.slice(3, 6)}-${d.slice(6, 10)}`;\n}\n\n/** Non-US: show national digits only; light spacing (country dial is in the select). */\nfunction formatOtherNational(local: string): string {\n const d = local.replace(/\\D/g, \"\").slice(0, 15);\n if (!d.length) return \"\";\n return d.replace(/(\\d{3,4})(?=\\d)/g, \"$1 \").trim();\n}\n\nfunction formatLineDisplay(\n dial: string,\n localNumber: string,\n extension: string,\n): string {\n if (!localNumber && !extension) return \"\";\n const main =\n dial === \"1\"\n ? formatNanpNational(localNumber)\n : formatOtherNational(localNumber);\n if (!extension) return main;\n if (!main) return `x${extension}`;\n return `${main} x${extension}`;\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 error = false,\n helperText,\n onKeyDown,\n}) => {\n const theme = useTheme();\n const smMatches = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const countries = (constants.COUNTRIES || []) as any[];\n const glassInputSx = {\n backdropFilter: \"blur(10px) saturate(150%)\",\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: alpha(\n \"#FFFFFF\",\n theme.palette.mode === \"dark\" ? 0.16 : 0.58,\n ),\n },\n };\n\n const [country, setCountry] = useState(defaultCountry);\n const [localNumber, setLocalNumber] = useState(\"\");\n const [extension, setExtension] = useState(\"\");\n const [isFocused, setIsFocused] = useState(false);\n const [selectOpen, setSelectOpen] = useState(false);\n const [ignoreNextOutsideClick, setIgnoreNextOutsideClick] = useState(false);\n /** True when input has \"x\" / \"X\" but no extension digits yet (so we show a trailing x). */\n const [bareExtensionX, setBareExtensionX] = useState(false);\n\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const applyParsedFromValue = useCallback(\n (val: string) => {\n setBareExtensionX(false);\n const parsed = parsePhoneValue(val, countries, defaultCountry);\n if (parsed.dial) {\n const found = countries.find((c: any) => c.phone === parsed.dial);\n if (found) setCountry(found.code);\n }\n setLocalNumber(parsed.local);\n setExtension(parsed.extension);\n },\n [countries, defaultCountry],\n );\n\n useEffect(() => {\n if (isFocused) return;\n if (!value) {\n setLocalNumber(\"\");\n setExtension(\"\");\n setBareExtensionX(false);\n return;\n }\n applyParsedFromValue(String(value));\n }, [value, isFocused, applyParsedFromValue]);\n\n const commitValue = useCallback(() => {\n const sel = countries.find((c: any) => c.code === country);\n const dial = sel?.phone ?? \"\";\n onChange(buildStoredValue(dial, localNumber, extension));\n }, [countries, country, localNumber, extension, onChange]);\n\n const handleLocalChange = (e: ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value;\n const parts = raw.split(/\\s*[xX]\\s*/);\n const mainRaw = parts[0] ?? \"\";\n const extDigits = parts\n .slice(1)\n .join(\"\")\n .replace(/\\D/g, \"\")\n .slice(0, EXT_MAX_LEN);\n\n const sel = countries.find((c: any) => c.code === country);\n const dial = sel?.phone ?? \"1\";\n const maxLocal = dial === \"1\" ? 10 : 15;\n\n let mainDigits = mainRaw.replace(/\\D/g, \"\");\n if (dial === \"1\") {\n if (mainDigits.length === 11 && mainDigits.startsWith(\"1\")) {\n mainDigits = mainDigits.slice(1);\n }\n mainDigits = mainDigits.slice(0, 10);\n } else {\n mainDigits = mainDigits.slice(0, maxLocal);\n }\n setLocalNumber(mainDigits);\n setExtension(extDigits);\n setBareExtensionX(/[xX]/.test(raw) && extDigits.length === 0);\n };\n\n const dialForDisplay =\n countries.find((c: any) => c.code === country)?.phone ?? \"\";\n const displayLocal =\n formatLineDisplay(dialForDisplay, localNumber, extension) +\n (bareExtensionX ? (localNumber ? \" x\" : \"x\") : \"\");\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 const selectedCountry = countries.find((c: any) => c.code === country);\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 <Autocomplete\n disabled={disabled}\n options={countries}\n value={selectedCountry ?? null}\n onChange={(_, newValue) => {\n if (newValue) setCountry(newValue.code);\n }}\n getOptionLabel={(option) => `(+${option.phone})`}\n filterOptions={filterCountryOptions}\n isOptionEqualToValue={(a, b) => a.code === b.code}\n disableClearable\n size={size}\n onOpen={() => {\n setSelectOpen(true);\n setIgnoreNextOutsideClick(true);\n }}\n onClose={() => setSelectOpen(false)}\n sx={{\n width: smMatches ? 56 : 96,\n minWidth: smMatches ? 56 : 96,\n maxWidth: smMatches ? 56 : 96,\n flexShrink: 0,\n \"& .MuiOutlinedInput-root\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n ...glassInputSx,\n },\n \"& .MuiInputBase-input\": {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n }}\n renderOption={(props, option) => (\n <Box component=\"li\" {...props} key={option.code}>\n <Box\n component=\"img\"\n loading=\"lazy\"\n width={20}\n alt=\"\"\n src={`https://flagcdn.com/w20/${option.code.toLowerCase()}.png`}\n srcSet={`https://flagcdn.com/w40/${option.code.toLowerCase()}.png 2x`}\n sx={{ mr: 1, flexShrink: 0 }}\n />\n {option.code} (+{option.phone})\n </Box>\n )}\n renderInput={(params) => (\n <TextField\n {...params}\n variant=\"outlined\"\n size={size}\n inputProps={{\n ...params.inputProps,\n autoComplete: \"tel-country\",\n }}\n />\n )}\n />\n <TextField\n label={label}\n value={displayLocal}\n onChange={handleLocalChange}\n placeholder=\"415-555-0100 x123\"\n error={error}\n helperText={helperText}\n onKeyDown={onKeyDown}\n inputProps={{\n inputMode: \"text\",\n autoComplete: \"tel-national\",\n \"aria-label\": label,\n }}\n disabled={disabled}\n size={size}\n autoFocus={autoFocus}\n fullWidth\n sx={{\n \"& .MuiOutlinedInput-root\": {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n ...glassInputSx,\n },\n }}\n />\n </Stack>\n </Box>\n );\n};\n\nexport default PhoneNumberField;\n","import React, { useEffect, useState } from \"react\";\nimport {\n Autocomplete,\n Box,\n TextField,\n Typography,\n FormLabel,\n} from \"@mui/material\";\nimport { alpha, Theme, useTheme, type SxProps } from \"@mui/material/styles\";\nimport { makeStyles } from \"@mui/styles\";\nimport { constants } from \"@verma-consulting/common-library\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n defaultMode: {\n margin: \"4px\",\n paddingTop: 14,\n paddingBottom: 14,\n paddingLeft: 8,\n paddingRight: 8,\n cursor: \"pointer\",\n borderRadius: 8,\n border: `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.16 : 0.55)}`,\n backdropFilter: \"blur(14px) saturate(150%)\",\n background:\n theme.palette.mode === \"dark\"\n ? \"linear-gradient(160deg, rgba(31,41,55,0.78), rgba(17,24,39,0.68))\"\n : \"linear-gradient(160deg, rgba(255,255,255,0.9), rgba(245,249,255,0.72))\",\n \"&:hover\": {\n boxShadow:\n theme.palette.mode === \"dark\"\n ? \"rgba(0, 0, 0, 0.34) 0px 10px 26px\"\n : \"rgba(15, 23, 42, 0.16) 0px 8px 24px\",\n },\n },\n formLabel: {\n cursor: \"pointer\",\n },\n formValue: {\n cursor: \"pointer\",\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n },\n}));\n\nexport interface CountryType {\n code: string;\n label: string;\n phone: string;\n suggested?: boolean;\n}\n\ninterface CountrySelectProps {\n value: string;\n onChange: (newValue: CountryType | null) => void;\n label?: string;\n size?: \"small\" | \"medium\";\n disabled?: boolean;\n /** Applied to the view wrapper and the edit-mode `Autocomplete` root. */\n sx?: SxProps<Theme>;\n}\n\nconst COUNTRIES: CountryType[] =\n constants.COUNTRIES as unknown as CountryType[];\n\nexport const CountrySelect: React.FC<CountrySelectProps> = ({\n value,\n onChange,\n label = \"Country\",\n size = \"small\",\n disabled = false,\n sx,\n}) => {\n const theme = useTheme();\n const classes = useStyles();\n const [editMode, setEditMode] = useState(false);\n const [listOpen, setListOpen] = useState(false);\n const glassBackground =\n theme.palette.mode === \"dark\"\n ? \"linear-gradient(160deg, rgba(31,41,55,0.78), rgba(17,24,39,0.68))\"\n : \"linear-gradient(160deg, rgba(255,255,255,0.9), rgba(245,249,255,0.72))\";\n\n const handleBlur = () => {\n setTimeout(() => setEditMode(false), 15);\n };\n\n useEffect(() => {\n if (!editMode) setListOpen(false);\n }, [editMode]);\n\n const selectedOption = COUNTRIES.find((country) => country.code === value);\n\n if (!editMode) {\n return (\n <Box\n component=\"div\"\n onClick={() => {\n if (!disabled) {\n setEditMode(true);\n setListOpen(true);\n }\n }}\n className={classes.defaultMode}\n sx={sx}\n >\n <FormLabel className={classes.formLabel}>{label}</FormLabel>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n mt: 0.25,\n }}\n >\n {selectedOption ? (\n <Box\n component=\"img\"\n loading=\"lazy\"\n width={20}\n alt=\"\"\n src={`https://flagcdn.com/w20/${selectedOption.code.toLowerCase()}.png`}\n srcSet={`https://flagcdn.com/w40/${selectedOption.code.toLowerCase()}.png 2x`}\n sx={{ flexShrink: 0 }}\n />\n ) : null}\n <Typography className={classes.formValue} component=\"span\">\n {selectedOption?.label || \"–\"}\n </Typography>\n </Box>\n </Box>\n );\n }\n\n return (\n <Autocomplete\n disabled={disabled}\n options={COUNTRIES}\n getOptionLabel={(option) => option.label}\n autoHighlight\n open={listOpen}\n onOpen={() => setListOpen(true)}\n onClose={() => setListOpen(false)}\n openOnFocus\n disableClearable\n value={selectedOption ?? undefined}\n onChange={(_, newValue) => {\n if (newValue == null) return;\n onChange(newValue);\n setListOpen(false);\n setEditMode(false);\n }}\n onBlur={handleBlur}\n sx={sx}\n size={size}\n componentsProps={{\n paper: {\n sx: {\n background: glassBackground,\n backdropFilter: \"blur(12px) saturate(150%)\",\n border: `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.16 : 0.55)}`,\n boxShadow:\n theme.palette.mode === \"dark\"\n ? \"rgba(0, 0, 0, 0.34) 0px 10px 26px\"\n : \"rgba(15, 23, 42, 0.16) 0px 8px 24px\",\n \"& .MuiAutocomplete-option\": {\n \"&[aria-selected='true']\": {\n backgroundColor: alpha(\n theme.palette.primary.main,\n theme.palette.mode === \"dark\" ? 0.28 : 0.14,\n ),\n },\n \"&.Mui-focused\": {\n backgroundColor: alpha(\n theme.palette.primary.main,\n theme.palette.mode === \"dark\" ? 0.2 : 0.1,\n ),\n },\n },\n },\n },\n }}\n renderOption={(props, option) => (\n <Box component=\"li\" {...props} key={option.code}>\n <img\n loading=\"lazy\"\n width=\"20\"\n src={`https://flagcdn.com/w20/${option.code.toLowerCase()}.png`}\n srcSet={`https://flagcdn.com/w40/${option.code.toLowerCase()}.png 2x`}\n alt=\"\"\n style={{ marginRight: 8, flexShrink: 0 }}\n />\n {option.label} ({option.code})\n </Box>\n )}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n variant=\"outlined\"\n size={size}\n autoFocus\n inputProps={{\n ...params.inputProps,\n autoComplete: \"new-password\",\n }}\n InputProps={{\n ...params.InputProps,\n startAdornment: (\n <>\n {selectedOption ? (\n <Box\n component=\"img\"\n loading=\"lazy\"\n width={20}\n alt=\"\"\n src={`https://flagcdn.com/w20/${selectedOption.code.toLowerCase()}.png`}\n srcSet={`https://flagcdn.com/w40/${selectedOption.code.toLowerCase()}.png 2x`}\n sx={{ mr: 1, flexShrink: 0, alignSelf: \"center\" }}\n />\n ) : null}\n {params.InputProps.startAdornment}\n </>\n ),\n sx: {\n borderRadius: 2,\n backdropFilter: \"blur(10px)\",\n background: glassBackground,\n color: \"text.primary\",\n \"&.Mui-focused\": {\n background: glassBackground,\n },\n \"&:hover\": {\n background: glassBackground,\n },\n \"& .MuiInputBase-input\": {\n color: \"text.primary\",\n WebkitTextFillColor: \"currentColor\",\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: alpha(\n \"#FFFFFF\",\n theme.palette.mode === \"dark\" ? 0.18 : 0.6,\n ),\n },\n },\n }}\n />\n )}\n />\n );\n};\n\nexport default CountrySelect;\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type ClipboardEvent,\n type CSSProperties,\n type KeyboardEvent,\n} from \"react\";\nimport { Box, TextField } from \"@mui/material\";\nimport type { SxProps, Theme } from \"@mui/material/styles\";\n\nexport type OTPFieldProps = {\n length: number;\n initialValue?: string;\n onChange: (value: string, index?: number) => void;\n onComplete?: (value: string, index?: number) => void;\n /** Use password inputs (no brief reveal; React 19–safe replacement for `react-pin-input` `secret`). */\n secret?: boolean;\n autoSelect?: boolean;\n disabled?: boolean;\n /** Applied to the focused cell’s outline (`fieldset`). */\n inputFocusStyle?: CSSProperties;\n /** Applied to the outer `Box` (MUI `sx`). */\n sx?: SxProps<Theme>;\n type?: string;\n inputMode?: React.HTMLAttributes<HTMLInputElement>[\"inputMode\"];\n /** Optional per-character filter (same idea as `react-pin-input` `regexCriteria`). */\n regexCriteria?: RegExp;\n};\n\nfunction toCells(s: string, len: number): string[] {\n const slice = (s || \"\").slice(0, len);\n return Array.from({ length: len }, (_, i) => slice[i] ?? \"\");\n}\n\nconst OTPField: React.FC<OTPFieldProps> = ({\n length,\n initialValue = \"\",\n onChange,\n onComplete,\n secret = false,\n autoSelect = false,\n disabled = false,\n inputFocusStyle,\n sx,\n type = \"text\",\n inputMode = \"text\",\n regexCriteria,\n}) => {\n const [cells, setCells] = useState(() => toCells(initialValue, length));\n const cellsRef = useRef(cells);\n cellsRef.current = cells;\n const refs = useRef<Array<HTMLInputElement | null>>([]);\n\n useEffect(() => {\n setCells(toCells(initialValue, length));\n }, [initialValue, length]);\n\n const emit = useCallback(\n (next: string[], editedIndex?: number) => {\n setCells(next);\n const joined = next.join(\"\");\n onChange(joined, editedIndex);\n if (onComplete && joined.length === length && next.every(Boolean)) {\n onComplete(joined, length - 1);\n }\n },\n [length, onChange, onComplete],\n );\n\n useEffect(() => {\n if (!autoSelect) return;\n const id = requestAnimationFrame(() => refs.current[0]?.focus());\n return () => cancelAnimationFrame(id);\n }, [autoSelect, length]);\n\n const charAllowed = useCallback(\n (ch: string) => {\n if (!ch) return true;\n if (type === \"numeric\" && /\\D/.test(ch)) return false;\n if (regexCriteria && !regexCriteria.test(ch)) return false;\n return true;\n },\n [regexCriteria, type],\n );\n\n const applyMany = useCallback(\n (startIdx: number, raw: string) => {\n const incoming = (\n type === \"numeric\" ? raw.replace(/\\D/g, \"\") : raw\n ).split(\"\");\n const next = [...cellsRef.current];\n let i = startIdx;\n for (const ch of incoming) {\n if (i >= length) break;\n if (!charAllowed(ch)) return;\n next[i] = ch;\n i += 1;\n }\n const focusAt = Math.min(Math.max(i - 1, 0), length - 1);\n emit(next, focusAt);\n refs.current[focusAt]?.focus();\n },\n [charAllowed, emit, length, type],\n );\n\n const onFieldChange = (\n idx: number,\n e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n const raw = e.target.value;\n if (raw.length > 1) {\n applyMany(idx, raw);\n return;\n }\n if (raw && !charAllowed(raw)) return;\n const next = [...cellsRef.current];\n next[idx] = raw;\n emit(next, idx);\n if (raw && idx < length - 1) {\n refs.current[idx + 1]?.focus();\n }\n };\n\n const onKeyDown = (idx: number, e: KeyboardEvent) => {\n if (e.key === \"Backspace\") {\n const next = [...cellsRef.current];\n if (next[idx]) {\n next[idx] = \"\";\n emit(next, idx);\n } else if (idx > 0) {\n next[idx - 1] = \"\";\n emit(next, idx - 1);\n refs.current[idx - 1]?.focus();\n }\n e.preventDefault();\n } else if (e.key === \"ArrowLeft\" && idx > 0) {\n refs.current[idx - 1]?.focus();\n e.preventDefault();\n } else if (e.key === \"ArrowRight\" && idx < length - 1) {\n refs.current[idx + 1]?.focus();\n e.preventDefault();\n }\n };\n\n const onPasteFirst = (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const text = e.clipboardData.getData(\"text\").replace(/\\s/g, \"\");\n if (!text) return;\n applyMany(0, text);\n };\n\n const inputType = secret ? \"password\" : type === \"numeric\" ? \"tel\" : \"text\";\n\n return (\n <Box\n sx={[\n {\n display: \"flex\",\n gap: 1,\n flexWrap: \"nowrap\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n ...(sx == null ? [] : Array.isArray(sx) ? sx : [sx]),\n ]}\n >\n {Array.from({ length }).map((_, idx) => (\n <TextField\n key={idx}\n inputRef={(el: HTMLInputElement | null) => {\n refs.current[idx] = el;\n }}\n value={cells[idx]}\n onChange={(e) => onFieldChange(idx, e)}\n onKeyDown={(e) => onKeyDown(idx, e)}\n onPaste={idx === 0 ? onPasteFirst : undefined}\n disabled={disabled}\n size=\"small\"\n type={inputType}\n sx={{\n width: 44,\n \"& .MuiOutlinedInput-input\": {\n textAlign: \"center\",\n py: 1,\n px: 0.5,\n },\n ...(inputFocusStyle\n ? {\n \"& .MuiOutlinedInput-root.Mui-focused fieldset\": inputFocusStyle,\n }\n : {}),\n }}\n inputProps={{\n maxLength: 1,\n inputMode: inputMode ?? undefined,\n \"aria-label\": `Code character ${idx + 1} of ${length}`,\n autoComplete: \"one-time-code\",\n }}\n />\n ))}\n </Box>\n );\n};\n\nexport default OTPField;\n"],"mappings":";AAAA,cAAc;;;ACEd,SAAS,WAAW;AAiBM;AAT1B,IAAM,WAAW,CAAC,UAAyB;AACzC,QAAM,EAAE,UAAU,OAAO,OAAO,GAAG,MAAM,IAAI;AAC7C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,QAAQ,UAAU;AAAA,MAClB,IAAI,mBAAmB,KAAK;AAAA,MAC3B,GAAG;AAAA,MAEH,oBAAU,SAAS,oBAAC,OAAI,IAAI,EAAE,GAAG,EAAE,GAAI,UAAS;AAAA;AAAA,EACnD;AAEJ;AAEA,IAAO,mBAAQ;;;ACxBf,YAAY,WAAW;AACvB,OAAO,wBAAwB;AAE/B,OAAO,4BAA4B;AAEnC,SAAS,aAAa;AAwMlB,gBAAAA,YAAA;AA7LJ,SAAS,WAAW,OAAuD;AACzE,QAAM,OAAiB,CAAC;AACxB,aAAW,KAAK,OAAO;AACrB,QAAI,KAAK,KAAM;AACf,QAAI,MAAM,QAAQ,CAAC,GAAG;AACpB,iBAAW,KAAK,GAAG;AACjB,YAAI,KAAK,KAAM,MAAK,KAAK,CAAW;AAAA,MACtC;AAAA,IACF,OAAO;AACL,WAAK,KAAK,CAAW;AAAA,IACvB;AAAA,EACF;AACA,SAAO;AACT;AAEA,IAAM,8BAA8B;AAEpC,SAAS,2BAA2B;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AACF,GAA4C;AAC1C,MAAI,UAAU,GAAG;AACf,WAAO;AAAA,EACT;AACA,MAAI,UAAU,IAAI;AAChB,WAAO,GAAG,IAAI,SAAI,EAAE;AAAA,EACtB;AACA,MAAI,OAAO,IAAI;AACb,WAAO,QAAQ,KAAK;AAAA,EACtB;AACA,SAAO,GAAG,IAAI,SAAI,EAAE,OAAO,KAAK;AAClC;AAEA,SAAS,wBACP,MACQ;AACR,QAAM,SAAsC;AAAA,IAC1C,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACA,SAAO,OAAO,IAAI;AACpB;AAEA,IAAM,SAAyB;AAAA,EAC7B,OAAO;AAAA,EACP,WAAW;AAAA,EACX,eAAe;AAAA,EACf,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,IAAI;AAAA,EACJ,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI;AAAA,EACrB,CAAC,MAAM,uBAAuB,OAAO,EAAE,GAAG;AAAA,IACxC,OAAO;AAAA,IACP,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,KAAK,EAAE,IAAI,MAAM,IAAI,KAAK;AAAA,IAC1B,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AAAA,EACA,CAAC,MAAM,uBAAuB,MAAM,EAAE,GAAG;AAAA,IACvC,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAAA,EACA,CAAC,MAAM,uBAAuB,WAAW,EAAE,GAAG;AAAA,IAC5C,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,OAAO;AAAA,IACP,GAAG;AAAA,IACH,YAAY;AAAA,EACd;AAAA,EACA,CAAC,MAAM,uBAAuB,aAAa,EAAE,GAAG;AAAA,IAC9C,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,oBAAoB;AAAA,IACpB,GAAG;AAAA,IACH,YAAY;AAAA,EACd;AAAA,EACA,CAAC,MAAM,uBAAuB,KAAK,EAAE,GAAG;AAAA,IACtC,YAAY;AAAA,IACZ,aAAa;AAAA,EACf;AAAA,EACA,CAAC,MAAM,uBAAuB,OAAO,EAAE,GAAG;AAAA,IACxC,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,CAAC,uBAAuB,GAAG;AAAA,MACzB,cAAc;AAAA,MACd,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,WAAW;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,MACA,kBAAkB;AAAA,QAChB,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;AASA,IAAM,kBAAwB,iBAAW,SAASC,iBAChD,OACA,KACA;AA5IF,MAAAC,KAAA;AA6IE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,IAClB,iBAAiB;AAAA,IACjB,oBAAoB;AAAA,IACpB,kBAAkB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,4BACJA,MAAA,sDAAwB,qBAAxB,OAAAA,MAA4C;AAE9C,QAAM,8BACJ,+DAA0B,wBAA1B,YAAiD;AAEnD,QAAM,aAAa,uCAAW;AAC9B,QAAM,EAAE,IAAI,cAAc,GAAG,eAAe,IAAI,kCAAc,CAAC;AAC/D,QAAM,EAAE,IAAI,gBAAgB,GAAG,iBAAiB,IAAI,oCAAe,CAAC;AAEpE,QAAM,eAAe;AAAA,IACnB,SAAS;AAAA,IACT,MAAM;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,MACF,CAAC,WAAkB;AAAA,QACjB,cAAc;AAAA,QACd,UAAU;AAAA,QACV,UAAU,MAAM,WAAW,MAAM;AAAA,QACjC,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,UACf,MAAM,QAAQ,WAAW;AAAA,UACzB,MAAM,QAAQ,SAAS,SAAS,MAAM;AAAA,QACxC;AAAA,QACA,sCAAsC;AAAA,UACpC,aAAa;AAAA,YACX;AAAA,YACA,MAAM,QAAQ,SAAS,SAAS,OAAO;AAAA,UACzC;AAAA,QACF;AAAA,QACA,4CAA4C;AAAA,UAC1C,aAAa;AAAA,QACf;AAAA,QACA,kDAAkD;AAAA,UAChD,aAAa;AAAA,QACf;AAAA,QACA,uBAAuB;AAAA,UACrB,IAAI;AAAA,UACJ,WAAW;AAAA,UACX,SAAS;AAAA,UACT,YAAY;AAAA,QACd;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,kBAAkB,8CAAoB;AAAA,MACtC,WAAW;AAAA,QACT,GAAG;AAAA,QACH,QAAQ;AAAA,MACV;AAAA,MACA,IAAI,QAAQ,QAAQ,EAAE;AAAA,MACrB,GAAG;AAAA;AAAA,EACN;AAEJ,CAAC;AAED,IAAO,0BAAQ;;;AF1Nf;AAAA,EACE,YAAAG;AAAA,EACA,UAAAC;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAAC,mBAAkB;;;AGT3B,SAAgB,YAAY;AAC5B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAAC;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAiCC,SAYQ,OAAAC,MAZR;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,QAAAC;AAkCI,UAAM,QAAQ,SAAS;AACvB,UAAM,YAAY,cAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAC5D,UAAM,WAAW,YAAY,MAAM;AAEnC,UAAM,eAAc,6CAAc,SAAQ;AAC1C,UAAM,WAAUA,MAAA,6CAAc,SAAd,gBAAAA,IAAoB;AAEpC,QAAI,UAAU;AACZ,aACE;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,UAEP;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,YAEF,gBAAAA,KAAC,QAAK,MAAI,MAAC,IAAI,EAAE,UAAU,WAAW,SAAS,GAC5C,qBACC,gBAAAA,KAAC,WAAQ,OAAO,aAAa,WAAU,OAAM,OAAK,MAChD,0BAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,IAAI;AAAA,kBACF,YAAY;AAAA,kBACZ,YAAY;AAAA,kBACZ,OAAO;AAAA,gBACT;AAAA,gBAEC;AAAA;AAAA,YACH,GACF,IAEA,gBAAAA,KAACD,MAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,gBAAgB,SAAS,GAClD,4BACH,GAEJ;AAAA;AAAA;AAAA,MACF;AAAA,IAEJ;AACA,WACE;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,gBAAAC,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,YAAC;AAAA;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;;;AC7Jf,SAAS,QAAQ,SAAAE,cAAyB;AAC1C;AAAA,EACE,YAAAC;AAAA,EACA,iBAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,aAAa;AA+BpB,SA4BM,OAAAC,MA5BN,QAAAC,aAAA;AA7BF,IAAM,kBAAkB,OAAO,MAAM,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACrD,sBAAsB;AAAA,IACpB,cAAc;AAAA,IACd,iBAAiB,MAAM,QAAQ,WAAW;AAAA,IAC1C,SAAS;AAAA,IACT,eAAe;AAAA,IACf,WAAW;AAAA,IACX,CAAC,MAAM,YAAY,KAAK,IAAI,CAAC,GAAG;AAAA,MAC9B,cAAc;AAAA,MACd,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,4BAA4B;AAAA,IAC1B,SAAS,MAAM,QAAQ,CAAC;AAAA,EAC1B;AAAA,EACA,4BAA4B;AAAA,IAC1B,SAAS,MAAM,QAAQ,CAAC;AAAA,EAC1B;AACF,EAAE;AAMF,IAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,IAAI;AAAA,MACF,UAAU;AAAA,MACV,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,IACC,GAAG;AAAA,IAEH;AAAA;AAAA,MACA,UACC,gBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,IAAI;AAAA,YACF,UAAU;AAAA,YACV,OAAO;AAAA,YACP,KAAK;AAAA,UACP;AAAA,UACA,cAAW;AAAA,UAEX,0BAAAA,KAAC,SAAM,OAAM,WAAU;AAAA;AAAA,MACzB,IACE;AAAA;AAAA;AACN;AAGF,IAAM,oBAAoB;AAAA,EACxB,iBAAiB,CAAC,MAChBH,OAAM,EAAE,QAAQ,OAAO,OAAO,EAAE,QAAQ,SAAS,SAAS,OAAO,IAAI;AAAA,EACvE,gBAAgB;AAAA,EAChB,sBAAsB;AACxB;AAiBA,IAAM,aAAa,CAAC;AAAA,EAClB,OAAO;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,MAAuB;AACrB,QAAM,QAAQC,UAAS;AACvB,QAAM,YAAYC,eAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAC5D,QAAM,QAAQ,MAAM,QAAQ,KAAK;AAEjC,QAAM,KAAK,wCAAiB,CAAC;AAC7B,QAAM,iBAAiB;AAAA,IACrB,GAAG;AAAA,IACH,IAAI,MAAM,QAAQ,GAAG,EAAE,IACnB,CAAC,mBAAmB,GAAG,GAAG,EAAE,IAC5B,CAAC,mBAAmB,GAAG,EAAE,EAAE,OAAO,OAAO;AAAA,EAC/C;AAEA,SACE,gBAAAE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAS;AAAA,MACT,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,eAAe;AAAA,MAEf;AAAA,wBAAAD,KAAC,wBAAqB,SAAS,OAAQ,iBAAM;AAAA,QAC7C,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,UAAQ;AAAA,YACR,IAAI;AAAA,cACF,MAAM;AAAA,cACN,WAAW;AAAA,cACX,UAAU;AAAA,cACV,SAAS;AAAA,YACX;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QACC,WAAW,OACV,gBAAAA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,cACF,YAAY;AAAA,cACZ,SAAS;AAAA,cACT,WAAW,CAAC,MAAM,aAAa,EAAE,QAAQ,OAAO;AAAA,YAClD;AAAA,YAEC;AAAA;AAAA,QACH,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;AAEA,IAAO,qBAAQ;;;AC5Jf,SAAS,SAAAE,QAAO,UAAAC,SAAQ,YAAAC,iBAAgB;AACxC,SAAS,OAAAC,MAAK,cAAAC,mBAAkB;AAChC,SAAS,mBAAmB;;;ACJ5B,SAAS,SAAAC,cAAoB;AAEtB,IAAM,cAAc,CAAC,UAC1B,aAAaA;AAAA,EACX;AAAA,EACA,MAAM,QAAQ,SAAS,SAAS,OAAO;AACzC,CAAC;AAEI,IAAM,eAAe,CAAC,WAAkB;AAAA,EAC7C,YACE,MAAM,QAAQ,SAAS,SACnB,2BAA2BA,OAAM,WAAW,IAAI,CAAC,QAAQA,OAAM,WAAW,IAAI,CAAC,WAC/E,2BAA2BA,OAAM,WAAW,IAAI,CAAC,QAAQA,OAAM,WAAW,IAAI,CAAC;AAAA,EACrF,QAAQ,YAAY,KAAK;AAAA,EACzB,gBAAgB;AAAA,EAChB,sBAAsB;AAAA,EACtB,WACE,MAAM,QAAQ,SAAS,SACnB,iCACA;AACR;AAEO,IAAM,aAAa,CAAC,WAAkB;AAAA,EAC3C,YACE,MAAM,QAAQ,SAAS,SACnB,2BAA2BA,OAAM,WAAW,GAAG,CAAC,QAAQA,OAAM,WAAW,IAAI,CAAC,WAC9E,2BAA2BA,OAAM,WAAW,IAAI,CAAC,QAAQA,OAAM,WAAW,IAAI,CAAC;AACvF;;;AD2EQ,gBAAAC,MAGF,QAAAC,aAHE;AA/FR,IAAM,sBAAsBC,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;AAgBD,IAAM,kBAAkD,CAAC;AAAA,EACvD,OAAO;AAAA,EACP,WAAW,MAAM;AAAA,EACjB,QAAQ;AAAA,EACR,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,YAAY;AACd,MAAM;AACJ,QAAM,QAAQC,UAAS;AAEvB,SACE,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,IAAI,CAAC,OAAO;AAAA,QACV,GAAG,aAAa,CAAC;AAAA,QACjB,SAAS,YAAY,SAAS;AAAA,QAC9B,YAAY;AAAA,QACZ,KAAK;AAAA,QACL,OAAO,YAAY,SAAS;AAAA,QAC5B,UAAU;AAAA,QACV,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,cAAc;AAAA,QACd,QAAQ,WAAW,gBAAgB;AAAA,QACnC,SAAS,WAAW,OAAO;AAAA,QAC3B,eAAe,WAAW,SAAS;AAAA,QACnC,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,aAAa;AAAA,QACb,aAAaC;AAAA,UACX,EAAE,QAAQ,QAAQ;AAAA,UAClB,EAAE,QAAQ,SAAS,SAAS,OAAO;AAAA,QACrC;AAAA,QACA,WAAW,CAAC,WACR;AAAA,UACE,GAAG,WAAW,CAAC;AAAA,UACf,aAAaA,OAAM,EAAE,QAAQ,QAAQ,MAAM,IAAI;AAAA,UAC/C,WACE,EAAE,QAAQ,SAAS,SACf,iCACA;AAAA,QACR,IACA;AAAA,QACJ,kBAAkB;AAAA,UAChB,SAAS,aAAaA,OAAM,EAAE,QAAQ,QAAQ,MAAM,IAAI,CAAC;AAAA,UACzD,eAAe;AAAA,QACjB;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAL;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,eAAW;AAAA,YACX,IAAI;AAAA,cACF,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,YAAYC;AAAA,gBACV,MAAM,QAAQ,QAAQ;AAAA,gBACtB,MAAM,QAAQ,SAAS,SAAS,OAAO;AAAA,cACzC;AAAA,cACA,QAAQ,aAAaA,OAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI,CAAC;AAAA,cAC5D,OAAO;AAAA,YACT;AAAA,YAEA,0BAAAL,KAAC,eAAY,IAAI,EAAE,UAAU,GAAG,GAAG;AAAA;AAAA,QACrC;AAAA,QAEA,gBAAAC,MAACG,MAAA,EAAI,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,OAAO,GACjD;AAAA,0BAAAJ;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,YAAY;AAAA,cACZ,OAAM;AAAA,cACN,eAAc;AAAA,cAEb;AAAA;AAAA,UACH;AAAA,UACA,gBAAAN;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,OAAM;AAAA,cACN,SAAQ;AAAA,cACR,IAAI,EAAE,IAAI,KAAK;AAAA,cAEd;AAAA;AAAA,UACH;AAAA,WACF;AAAA,QAEA,gBAAAN;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,0BAAQ;;;AE1If,SAAgB,WAAW,QAAQ,gBAA6B;AAChE,SAAS,OAAAO,MAAK,cAAAC,mBAAkB;AAChC,SAAS,SAAAC,QAAO,UAAAC,eAAc;AAC9B,SAAS,eAAAC,cAAa,SAAS,iBAAiB;AAgK5C,SAQkB,OAAAC,MARlB,QAAAC,aAAA;AA7JJ,IAAM,iBACJ;AAEF,SAAS,iBAAiB,MAAqB;AAC7C,QAAM,OAAO,KAAK,KAAK,KAAK,EAAE,YAAY;AAC1C,MAAI,KAAK,WAAW,QAAQ,GAAG;AAC7B,WAAO;AAAA,EACT;AACA,MAAI,CAAC,QAAQ,kDAAkD,KAAK,KAAK,IAAI,GAAG;AAC9E,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAaA,IAAM,cAAcC,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,QAAOC,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,GAAG,aAAa,KAAK;AAAA,EACrB,QAAQ,cAAcC,OAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI,CAAC;AAAA,EAC7D,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,gBAAgB;AAClB,EAAE;AAEF,IAAM,aAAaF,QAAO,KAAK,EAAE;AAAA,EAC/B,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,SAAS;AACX,CAAC;AAED,IAAM,UAAUA,QAAOC,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,cAAcD,QAAOG,WAAU,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACrD,UAAU;AAAA,EACV,KAAK;AAAA,EACL,OAAO;AAAA,EACP,GAAG,aAAa,KAAK;AAAA,EACrB,WAAW,MAAM,QAAQ,CAAC;AAAA,EAC1B,WAAW;AAAA,IACT,YAAYD,OAAM,MAAM,QAAQ,WAAW,OAAO,GAAG;AAAA,EACvD;AACF,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;AAhI3D,QAAAE,KAAA;AAiII,UAAM,OAAM,MAAAA,MAAA,EAAE,OAAO,UAAT,gBAAAA,IAAiB,OAAjB,YAAuB;AACnC,QAAI,OAAO,CAAC,iBAAiB,GAAG,GAAG;AACjC,UAAI,SAAS,QAAS,UAAS,QAAQ,QAAQ;AAC/C;AAAA,IACF;AACA,UAAM,WAAW;AACjB,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;AArJ5B,QAAAA;AAsJI,QAAI,CAAC,SAAU,EAAAA,MAAA,SAAS,YAAT,gBAAAA,IAAkB;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,gBAAAL;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,KAACO,cAAA,EAAY,WAAU,cAAa,UAAS,SAAQ,GACvD;AAAA,QAEC,cAAc,eAAe,CAAC,YAC7B,gBAAAP,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;;;AC3Lf,SAAgB,aAAAQ,YAAW,UAAAC,SAAQ,YAAAC,iBAAgB;AACnD,SAAS,OAAO,MAAM,cAAAC,mBAAmC;AACzD,SAAS,SAAAC,QAAO,YAAAC,iBAAgB;AAChC,OAAOC,gBAAe;AACtB,SAAS,iBAAiB;AAoLR,gBAAAC,YAAA;AAxLlB;AAMA,IAAM,kBAAkB,sCAAmB;AAI3C,IAAM,uBAAuB;AAAA,EAC3B,SAAS;AAAA,EACT,SAAS;AAAA;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AACT;AAcA,SAAS,eAAe,KAAgD;AACtE,MAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,MAAI,CAAC,gBAAgB;AACnB,WAAQ,CAAC,WAAW,SAAS,WAAW,MAAM,EAAY;AAAA,MACxD;AAAA,IACF;AAAA,EACF;AACA,QAAM,SAAS,OAAO,OAAO,cAAc;AAC3C,SAAO,OAAO,SAAS,GAAG;AAC5B;AAEA,IAAM,eAA4C,CAAC;AAAA,EACjD,WAAW,CAAC;AAAA,EACZ,cAAc,MAAM;AAAA,EACpB,mBAAmB;AACrB,MAAM;AA5CN,MAAAC,KAAA;AA6CE,QAAM,QAAQH,UAAS;AAEvB,QAAM,CAAC,OAAO,QAAQ,IAAIH,UAExB,CAAC,CAAC;AACJ,QAAM,QAAQD,QAAO,CAAC;AACtB,QAAM,cAAcA,QAAgB,CAAC,EAAC,qCAAU,KAAI;AACpD,QAAM,mBAAmBA,QAAe,EAAE;AAC1C,QAAM,YAAYA,QAAsD,CAAC,CAAC;AAE1E,QAAM,QAAQO,MAAA,SAAS,SAAT,OAAAA,MAAiB;AAC/B,QAAM,WAAU,cAAS,YAAT,YAAoB;AAEpC,QAAM,WAAmC,eAAe,IAAI,IAAI,OAAO;AAEvE,QAAM,kBAAkB,MAAM;AAC5B,QAAI,EAAC,qCAAU,MAAM;AACrB,QAAI,CAAC,QAAS;AAEd,UAAM,YAAY,GAAG,IAAI,KAAK,OAAO;AACrC,UAAM,WAAW,CAAC,YAAY,WAAW,CAAC,EAAC,qCAAU;AACrD,UAAM,mBAAmB,cAAc,iBAAiB;AAGxD,QAAI,CAAC,YAAY,CAAC,iBAAkB;AAEpC,qBAAiB,UAAU;AAC3B,UAAM,KAAK,OAAO,EAAE,MAAM,OAAO;AACjC,aAAS,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,MAAM,QAAQ,CAAC,CAAC;AAE7C,cAAU,QAAQ,EAAE,IAAI,WAAW,MAAM;AACvC,eAAS,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;AAClD,aAAO,UAAU,QAAQ,EAAE;AAAA,IAC7B,GAAG,gBAAgB;AAGnB,gBAAY,EAAE,MAAM,OAAO,SAAS,IAAI,MAAM,GAAG,CAAC;AAAA,EACpD;AAEA,EAAAR,WAAU,MAAM;AACd,UAAM,WAAW,CAAC,EAAC,qCAAU;AAE7B,oBAAgB;AAChB,gBAAY,UAAU;AAAA,EAExB,GAAG,CAAC,qCAAU,MAAM,qCAAU,SAAS,qCAAU,IAAI,CAAC;AAEtD,QAAM,gBAAgB,CAAC,OAAe;AACpC,UAAM,IAAI,UAAU,QAAQ,EAAE;AAC9B,QAAI,EAAG,cAAa,CAAC;AACrB,WAAO,UAAU,QAAQ,EAAE;AAC3B,aAAS,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;AAAA,EACpD;AAEA,EAAAA,WAAU,MAAM;AACd,WAAO,MAAM;AACX,aAAO,OAAO,UAAU,OAAO,EAAE,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;AAC/D,gBAAU,UAAU,CAAC;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,aAAa,CAACS,cAAqC;AAEvD,UAAM,UACJA,cAAa,YACT,qBAAqB,UACrBA,cAAa,UACX,qBAAqB,QACrBA,cAAa,YACX,qBAAqB,UACrB,qBAAqB;AAC/B,WAAO;AAAA,MACL,IACE,MAAM,QAAQ,SAAS,SACnBL,OAAM,SAAS,IAAI,IACnBA,OAAM,SAAS,IAAI;AAAA,MACzB,MAAM,MAAM,QAAQ,SAAS,SAAS,2BAA2B;AAAA,MACjE,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SACE,gBAAAG;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,eAAY;AAAA,MACZ,OAAO;AAAA,QACL,UAAU;AAAA,QACV,KAAK;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,eAAe;AAAA,QACf,KAAK;AAAA,QACL,OAAO;AAAA,QACP,eAAe;AAAA,MACjB;AAAA,MAEC,gBAAM,IAAI,CAAC,SAAS;AACnB,cAAM,gBAAwC,eAAe,KAAK,IAAI,IAClE,KAAK,OACL;AAEJ,cAAM,SAAS,WAAW,aAAa;AAEvC,eACE,gBAAAA,KAAC,QAAmB,IAAE,MAAC,SAAS,KAC9B,0BAAAA;AAAA,UAAC;AAAA;AAAA,YACC,SAAQ;AAAA,YACR,UAAU;AAAA,YACV,IAAI;AAAA,cACF,OAAO;AAAA,cACP,eAAe;AAAA,cACf,cAAc;AAAA,cACd,IAAI,EAAE,IAAI,MAAM,IAAI,IAAI;AAAA,cACxB,IAAI;AAAA,cACJ,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,iBAAiB,OAAO;AAAA,cACxB,OAAO,OAAO;AAAA,cACd,gBAAgB;AAAA,cAChB,sBAAsB;AAAA,cACtB,QAAQ,aAAaH,OAAM,WAAW,MAAM,QAAQ,SAAS,SAAS,OAAO,IAAI,CAAC;AAAA,cAClF,oBAAoB;AAAA,gBAClB,OAAO,OAAO;AAAA,cAChB;AAAA,cACA,uBAAuB;AAAA,gBACrB,GAAG;AAAA,gBACH,GAAG;AAAA,gBACH,YAAY;AAAA,gBACZ,eAAe;AAAA,cACjB;AAAA,YACF;AAAA,YACA,QACE,gBAAAG;AAAA,cAACJ;AAAA,cAAA;AAAA,gBACC,cAAW;AAAA,gBACX,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,SAAS,MAAM,cAAc,KAAK,EAAE;AAAA,gBAEpC,0BAAAI,KAACD,YAAA,EAAU,UAAS,SAAQ;AAAA;AAAA,YAC9B;AAAA,YAGD,eAAK;AAAA;AAAA,QACR,KAvCS,KAAK,EAwChB;AAAA,MAEJ,CAAC;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,uBAAQ;;;ACpMf,SAAS,kBAAkB,gBAAgB;AAC3C,SAAS,kBAAkB;AAC3B,SAAS,SAAAI,cAAa;AA8BhB,gBAAAC,YAAA;AAvBN,IAAM,YAAY,WAAW;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,UAAU,UAAU;AAE1B,SACE,gBAAAA;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;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA,WAAW;AAAA,UACX,WAAW,QAAQ;AAAA,UACnB,IAAI;AAAA,YACF,GAAG;AAAA,YACH,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,QAAQ,CAAC,UACP,aAAaD,OAAM,WAAW,MAAM,QAAQ,SAAS,SAAS,OAAO,IAAI,CAAC;AAAA,YAC5E,WAAW,CAAC,UACV,MAAM,QAAQ,SAAS,SACnB,iCACA;AAAA,UACR;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,iBAAQ;;;ACpDf,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,MAAAC,KAAA;AA0BE,QAAM,QAAQF,UAAS;AACvB,QAAM,OACJ,MAAM,QAAQ,SAAS,UAClB,MAAAE,MAAA,MAAM,QAAQ,SAAd,gBAAAA,IAAqB,SAArB,YAA6B,aAC7B,iBAAM,QAAQ,SAAd,mBAAqB,SAArB,YAA6B;AACpC,QAAM,YACJ,MAAM,QAAQ,SAAS,UAClB,iBAAM,QAAQ,SAAd,mBAAqB,SAArB,YAA6B,aAC7B,iBAAM,QAAQ,SAAd,mBAAqB,SAArB,YAA6B;AAEpC,SACE,gBAAAD;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,OAAOI,YAAW;AAClB,SAAS,OAAAC,MAAK,cAAAC,aAAY,YAAAC,iBAAgB;AAC1C,SAAS,uBAAuB;AA6B1B,gBAAAC,OAUF,QAAAC,aAVE;AAlBN,IAAM,aAAwC,CAAC,EAAE,OAAO,IAAI,GAAG,KAAK,MAAM;AACxE,QAAM,QAAQF,UAAS;AACvB,QAAM,OAAO,wBAAS;AAEtB,QAAM,YACJ,MAAM,QAAQ,SAAS,SACnB,2BACA;AAEN,QAAM,aACJ,MAAM,QAAQ,SAAS,SACnB,2BACA;AAEN,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,KAAK;AAAA,QACL,WAAW;AAAA,QACX;AAAA,QACA,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,MAEC;AAAA;AAAA,QACD,gBAAAG;AAAA,UAACF;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,OAAM;AAAA,YACN,IAAI;AAAA,cACF,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;AACA,IAAO,qBAAQ;;;ACvEf,SAAS,QAAQ,cAAAI,aAAY,YAAY;AACzC,SAAS,SAAAC,QAAO,YAAAC,iBAAgB;AAkD1B,SAEI,OAAAC,OAFJ,QAAAC,aAAA;AArCN,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,QAAQC,UAAS;AAEvB,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,aAAa,cAAc;AAAA,MACpC,OAAO,SAAS;AAAA,MAChB,IAAI;AAAA,QACF,GAAG,aAAa,KAAK;AAAA,QACrB,cAAc;AAAA,QACd,SAAS;AAAA,QACT,WAAW;AAAA,QACX,eAAe;AAAA,QACf,aAAa,aACTG,OAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI,IACtCA,OAAM,MAAM,QAAQ,KAAK,SAAS,IAAI;AAAA,QAC1C,OAAO,aAAa,iBAAiB;AAAA,QACrC,WAAW;AAAA,UACT,aAAaA,OAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI;AAAA,UACnD,WACE,MAAM,QAAQ,SAAS,SACnB,iCACA;AAAA,QACR;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MAEA,0BAAAF,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,MAACI,aAAA,EAAW,SAAQ,aAAY,OAAM,WAAU,YAAY,KACzD,iBACH;AAAA,QACC,aACC,gBAAAJ;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;;;AC/Ef,SAAS,SAAAK,QAAO,UAAAC,eAAc;AAC9B,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,YAAY,2BAA2BF,OAAM,MAAM,QAAQ,QAAQ,OAAO,IAAI,CAAC,QAAQA,OAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI,CAAC;AAAA,QAC9H,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,IACR,WACE,MAAM,QAAQ,SAAS,SACnB,+BACA;AAAA,EACR;AAAA,EACA,sBAAsB;AAAA,IACpB,cAAc;AAAA,IACd,YACE,MAAM,QAAQ,SAAS,UACnB,oFACA;AAAA,IACN,QAAQ,aAAaA,OAAM,WAAW,MAAM,QAAQ,SAAS,SAAS,OAAO,IAAI,CAAC;AAAA,IAClF,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,IACtB,SAAS;AAAA,IACT,YAAY,MAAM,YAAY,OAAO,CAAC,kBAAkB,GAAG;AAAA,MACzD,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AACF,EAAE;AAEF,IAAO,oBAAQ;;;ACjEf,SAAS,YAAY;AACrB,SAAS,SAAAG,SAAO,YAAAC,iBAAgB;AAChC,SAAS,kBAAkB;AAkBvB,gBAAAC,aAAA;AAXJ,IAAM,iBAA6C;AAAA,EACjD,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,MAAM;AAjB9D,MAAAC,KAAA;AAkBE,QAAM,QAAQC,UAAS;AAEvB,SACE,gBAAAF;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,SAAQ;AAAA,MACR,IAAI;AAAA,QACF,GAAG,aAAa,KAAK;AAAA,QACrB,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,IAAI;AAAA,QACJ,eAAe;AAAA,QACf,QAAOC,MAAA,eAAe,MAAM,MAArB,OAAAA,MAA0B,MAAM,QAAQ,KAAK;AAAA,QACpD,iBAAiBE;AAAA,WACf,oBAAe,MAAM,MAArB,YAA0B,MAAM,QAAQ,KAAK;AAAA,UAC7C,MAAM,QAAQ,SAAS,SAAS,OAAO;AAAA,QACzC;AAAA,QACA,aAAaA;AAAA,WACX,oBAAe,MAAM,MAArB,YAA0B,MAAM,QAAQ,KAAK;AAAA,UAC7C,MAAM,QAAQ,SAAS,SAAS,OAAO;AAAA,QACzC;AAAA,QACA,oBAAoB;AAAA,UAClB,IAAI;AAAA,QACN;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,qBAAQ;;;AChDf,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;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,OACK;AACP,SAAS,SAAAC,SAAO,YAAAC,iBAAgB;AAChC,SAAS,aAAa;AACtB,SAAS,cAAAC,mBAAkB;AAoPT,qBAAAC,WAYM,OAAAC,OAZN,QAAAC,aAAA;AAjPlB,IAAMC,aAAYJ,YAAW,CAAC,WAAW;AAAA,EACvC,aAAa;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,QAAQ,aAAaF,QAAM,WAAW,MAAM,QAAQ,SAAS,SAAS,OAAO,IAAI,CAAC;AAAA,IAClF,gBAAgB;AAAA,IAChB,YACE,MAAM,QAAQ,SAAS,SACnB,sEACA;AAAA,IACN,WAAW;AAAA,MACT,WACE,MAAM,QAAQ,SAAS,SACnB,sCACA;AAAA,IACR;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;AAiBF,IAAM,mBAAoDN,OAAM;AAAA,EAC9D,CAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,WAAW;AAAA,IACX,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,WAAW;AAAA,EACb,MAAM;AACJ,UAAM,QAAQO,UAAS;AACvB,UAAM,UAAUK,WAAU;AAC1B,UAAM,aAAaV,QAAuB,IAAI;AAC9C,UAAM,WAAWA,QAAyB,IAAI;AAC9C,UAAM,CAAC,UAAU,WAAW,IAAIC,UAAS,eAAe;AACxD,UAAM,CAAC,MAAM,OAAO,IAAIA,UAAS,eAAe;AAChD,UAAM,kBACJ,MAAM,QAAQ,SAAS,SACnB,sEACA;AAEN,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;AACA,kBAAY,KAAK;AACjB,cAAQ,KAAK;AAAA,IACf;AAEA,UAAM,WAAW,QAAQ,MAAM;AAvHnC,UAAAY;AAwHM,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,gBAAOA,MAAA,QAAQ,KAAK,CAAC,QAAQ,IAAI,UAAU,KAAK,MAAzC,OAAAA,MAA8C;AAAA,MACvD;AAAA,IACF,GAAG,CAAC,OAAO,SAAS,QAAQ,CAAC;AAE7B,UAAM,eAAe,QAAQ,MAAM;AAjIvC,UAAAA;AAkIM,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,gBAAQA,MAAA,qCAAoC,UAApC,OAAAA,MAA6C;AAAA,MACvD;AAAA,IACF,GAAG,CAAC,UAAU,QAAQ,CAAC;AAEvB,UAAM,eAAe,CAAC,MAAM,KAAK;AACjC,UAAM,YAAY,WAAW;AAE7B,WAAO,WACL,gBAAAH,MAAC,eAAY,WAAS,MAAC,OAAc,UAAoB,MACvD,0BAAAA;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;AAvJrC,cAAAG;AAwJY,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,sBAAUA,MAAA,qCAAoC,UAApC,OAAAA,MAA6C,EAAE;AACzD,oBAAQ,KAAK;AAAA,UACf;AAAA,QACF;AAAA,QACA,kBAAgB;AAAA,QAChB,eAAa;AAAA,QACb,gBAAgB,CAAC,WAAW,OAAO;AAAA,QACnC,sBAAsB,CAAC,QAAQ,QAAQ,OAAO,UAAU,IAAI;AAAA,QAC5D,IAAI;AAAA,UACF,gCAAgC;AAAA,YAC9B,YAAY;AAAA,YACZ,OAAO;AAAA,UACT;AAAA,UACA,4CAA4C;AAAA,YAC1C,YAAY;AAAA,YACZ,OAAO;AAAA,UACT;AAAA,UACA,sCAAsC;AAAA,YACpC,YAAY;AAAA,UACd;AAAA,UACA,4BAA4B;AAAA,YAC1B,OAAO;AAAA,YACP,qBAAqB;AAAA,UACvB;AAAA,UACA,yBAAyB;AAAA,YACvB,OAAO;AAAA,UACT;AAAA,UACA,qCAAqC;AAAA,YACnC,OAAO;AAAA,UACT;AAAA,UACA,sBAAsB;AAAA,YACpB,OAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,WAAW;AAAA,UACT,OAAO;AAAA,YACL,IAAI;AAAA,cACF,YAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,QAAQ,aAAaP,QAAM,WAAW,MAAM,QAAQ,SAAS,SAAS,OAAO,IAAI,CAAC;AAAA,cAClF,WACE,MAAM,QAAQ,SAAS,SACnB,sCACA;AAAA,cACN,6BAA6B;AAAA,gBAC3B,2BAA2B;AAAA,kBACzB,iBAAiBA;AAAA,oBACf,MAAM,QAAQ,QAAQ;AAAA,oBACtB,MAAM,QAAQ,SAAS,SAAS,OAAO;AAAA,kBACzC;AAAA,gBACF;AAAA,gBACA,iBAAiB;AAAA,kBACf,iBAAiBA;AAAA,oBACf,MAAM,QAAQ,QAAQ;AAAA,oBACtB,MAAM,QAAQ,SAAS,SAAS,MAAM;AAAA,kBACxC;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA,aAAa,CAAC,WACZ,gBAAAI;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACJ;AAAA,YACA,SAAQ;AAAA,YACR;AAAA,YACA;AAAA,YACA,YAAY;AAAA,cACV,GAAG,OAAO;AAAA,cACV,IAAI;AAAA,gBACF,cAAc;AAAA,gBACd,gBAAgB;AAAA,gBAChB,IAAI;AAAA,gBACJ,YAAY;AAAA,gBACZ,OAAO;AAAA,gBACP,iBAAiB;AAAA,kBACf,YAAY;AAAA,gBACd;AAAA,gBACA,WAAW;AAAA,kBACT,YAAY;AAAA,gBACd;AAAA,gBACA,yBAAyB;AAAA,kBACvB,OAAO;AAAA,kBACP,qBAAqB;AAAA,gBACvB;AAAA,gBACA,sCAAsC;AAAA,kBACpC,aAAaJ;AAAA,oBACX;AAAA,oBACA,MAAM,QAAQ,SAAS,SAAS,OAAO;AAAA,kBACzC;AAAA,gBACF;AAAA,cACF;AAAA,cACA,cACE,gBAAAK,MAAAF,WAAA,EACG;AAAA,6BAAa,CAAC,gBACb,gBAAAC;AAAA,kBAACL;AAAA,kBAAA;AAAA,oBACC,cAAY,SAAS,IAAI;AAAA,oBACzB,SAAS;AAAA,oBACT,MAAK;AAAA,oBACL,IAAI;AAAA,sBACF,iBAAiB;AAAA,sBACjB,WAAW;AAAA,sBACX,IAAI;AAAA,oBACN;AAAA,oBAEA,0BAAAK,MAAC,SAAM,UAAS,WAAU;AAAA;AAAA,gBAC5B;AAAA,gBAED,OAAO,WAAW;AAAA,iBACrB;AAAA,YAEJ;AAAA;AAAA,QACF;AAAA,QAEF,QAAQ,MAAM;AACZ,sBAAY,KAAK;AACjB,kBAAQ,KAAK;AAAA,QACf;AAAA;AAAA,IACF,GACF,IAEA,gBAAAC;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;AAAA,YAAC;AAAA;AAAA,cACC,WAAW,QAAQ;AAAA,cACnB,IAAI,EAAE,OAAO,iBAAiB;AAAA,cAE7B;AAAA;AAAA,UACH;AAAA,UACA,gBAAAA;AAAA,YAACN;AAAA,YAAA;AAAA,cACC,WAAW,QAAQ;AAAA,cACnB,IAAI,EAAE,OAAO,eAAe;AAAA,cAE3B;AAAA;AAAA,UACH;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,IAAO,2BAAQ;;;ACvTf;AAAA,EACE;AAAA,EACA,cAAAU;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,OAEK;AACP,SAAS,SAAAC,eAAyB;AAClC,SAAS,SAAAC,cAAa;AA6Ed,SAGM,OAAAC,OAHN,QAAAC,aAAA;AA9DR,IAAM,aAAwC,CAAC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,QAAQL,WAAS;AACvB,QAAM,YAAYC,eAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAC5D,QAAM,QAAQ,MAAM,QAAQ,KAAK;AAEjC,QAAMK,qBAAoB;AAAA,IACxB,iBAAiB,CAAC,MAChBJ,QAAM,EAAE,QAAQ,OAAO,OAAO,EAAE,QAAQ,SAAS,SAAS,OAAO,IAAI;AAAA,IACvE,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,EACxB;AAEA,QAAM,KAAK,wCAAiB,CAAC;AAC7B,QAAM,iBAAiB;AAAA,IACrB,GAAG;AAAA,IACH,IAAI,MAAM,QAAQ,GAAG,EAAE,IACnB,CAACI,oBAAmB,GAAG,GAAG,EAAE,IAC5B,CAACA,oBAAmB,GAAG,EAAE,EAAE,OAAO,OAAO;AAAA,EAC/C;AAEA,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,QAAQ,YAAY,WAAW;AAAA,MAC/B;AAAA,MACA,SAAS;AAAA,MACT,eAAe;AAAA,MACf,IAAI;AAAA,QACF;AAAA,UACE,sBAAsB;AAAA,YACpB,OAAO,YAAY,SAAS;AAAA,YAC5B,UAAU;AAAA,YACV,QAAQ,YAAY,SAAS;AAAA,YAC7B,WAAW,YAAY,SAAS;AAAA,YAChC,SAAS;AAAA,YACT,eAAe;AAAA,YACf,cAAc,YAAY,IAAI;AAAA,YAC9B,UAAU;AAAA,YACV,SAAS;AAAA,UACX;AAAA,QACF;AAAA,QACA,GAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC;AAAA,MAC5C;AAAA,MAEA;AAAA,wBAAAD;AAAA,UAACP;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,GAAG;AAAA,cACH,cAAc,CAAC,MAAM,aAAaK,QAAM,EAAE,QAAQ,SAAS,IAAI,CAAC;AAAA,cAChE,SAAS;AAAA,YACX;AAAA,YAEA,0BAAAG,MAACN,OAAA,EAAK,WAAS,MACb;AAAA,8BAAAK,MAACL,OAAA,EAAK,MAAI,MACP,kBACC,gBAAAK,MAACR,aAAA,EAAW,SAAQ,MAAK,YAAW,QAAO,WAAU,OAClD,iBACH,IACE,MACN;AAAA,cACA,gBAAAQ,MAACL,OAAA,EAAK,MAAI,MACR,0BAAAK;AAAA,gBAACN;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS;AAAA,kBACT,IAAI;AAAA,oBACF,UAAU;AAAA,oBACV,KAAK;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,SAAS;AAAA,oBACT,WAAW;AAAA,kBACb;AAAA,kBACA,cAAW;AAAA,kBAEX,0BAAAM,MAACD,QAAA,EAAM,UAAS,WAAU;AAAA;AAAA,cAC5B,GACF;AAAA,eACF;AAAA;AAAA,QACF;AAAA,QACA,gBAAAC;AAAA,UAACP;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,MAAM;AAAA,cACN,WAAW;AAAA,cACX,UAAU;AAAA,cACV,GAAG;AAAA,cACH,SAAS;AAAA,YACX;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QACC,WAAW,OACV,gBAAAO;AAAA,UAACP;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,YAAY;AAAA,cACZ,GAAG;AAAA,cACH,WAAW,CAAC,MAAM,aAAaK,QAAM,EAAE,QAAQ,SAAS,IAAI,CAAC;AAAA,cAC7D,SAAS;AAAA,YACX;AAAA,YAEC;AAAA;AAAA,QACH,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;AAEA,IAAO,qBAAQ;;;AC/If;AAAA,EACE;AAAA,EACA,aAAAK;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OAIK;AACP;AAAA,EACE,gBAAAC;AAAA,EACA,OAAAC;AAAA,EACA;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,OACK;AACP,SAAS,2BAA2B;AACpC,SAAS,SAAAC,eAAa;AACtB,SAAS,aAAAC,kBAAiB;AAkUpB,SAyCQ,OAAAC,OAzCR,QAAAC,cAAA;AAwCM;AAxWZ,IAAM,cAAc;AAEpB,IAAM,uBAAuB,oBAAoB;AAAA,EAC/C,WAAW,CAAC,WACV,GAAG,OAAO,KAAK,IAAI,OAAO,IAAI,IAAI,OAAO,KAAK;AAClD,CAAC;AAGD,SAAS,yBAAyB,MAGhC;AACA,MAAI,IAAI,KAAK,KAAK;AAClB,MAAI,cAAc;AAClB,QAAM,OAAO,EAAE,MAAM,aAAa;AAClC,MAAI,MAAM;AACR,kBAAc,KAAK,CAAC;AACpB,QAAI,EAAE,QAAQ,cAAc,EAAE;AAAA,EAChC;AACA,QAAM,UAAU,EAAE,MAAM,mBAAmB;AAC3C,MAAI,SAAS;AACX,kBAAc,eAAe,QAAQ,CAAC;AACtC,QAAI,EAAE,QAAQ,mBAAmB,EAAE;AAAA,EACrC;AACA,SAAO,EAAE,MAAM,GAAG,YAAY;AAChC;AAsBA,SAAS,gBACP,KACA,WACA,gBACa;AAxEf,MAAAC,KAAA;AAyEE,QAAM,IAAI,OAAO,oBAAO,EAAE,EAAE,KAAK;AACjC,MAAI,CAAC,EAAG,QAAO,EAAE,MAAM,IAAI,OAAO,IAAI,WAAW,GAAG;AAEpD,QAAM,eACJ,MAAAA,MAAA,UAAU,KAAK,CAAC,MAAW,EAAE,SAAS,cAAc,MAApD,gBAAAA,IAAuD,UAAvD,YAAgE;AAElE,MAAI,MAAM;AACV,MAAI,WAAW;AAEf,QAAM,SAAS,EAAE,MAAM,YAAY;AACnC,MAAI,OAAO,SAAS,GAAG;AACrB,gBAAW,YAAO,CAAC,MAAR,YAAa;AACxB,UAAM,OAAO,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,WAAW;AAAA,EACxE;AAEA,QAAM,OAAO,yBAAyB,QAAQ;AAC9C,aAAW,KAAK;AAChB,MAAI,KAAK,aAAa;AACpB,WAAO,OAAO,KAAK,aAAa,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,WAAW;AAAA,EACzE;AAEA,QAAM,aAAa,SAAS,QAAQ,OAAO,EAAE;AAC7C,MAAI,CAAC,WAAY,QAAO,EAAE,MAAM,IAAI,OAAO,IAAI,WAAW,IAAI;AAE9D,QAAM,SAAS,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,MAAM,SAAS,EAAE,MAAM,MAAM;AAE5E,MAAI,SAAS,KAAK,EAAE,WAAW,GAAG,GAAG;AACnC,UAAMC,SAAQ,OAAO,KAAK,CAAC,MAAM,WAAW,WAAW,EAAE,KAAK,CAAC;AAC/D,QAAIA,QAAO;AACT,YAAM,OAAO,WAAW,MAAMA,OAAM,MAAM,MAAM;AAChD,YAAM,QAAQA,OAAM,UAAU,MAAM,KAAK,MAAM,GAAG,IAAI,KAAK,MAAM,GAAG;AACpE,aAAO;AAAA,QACL,MAAMA,OAAM;AAAA,QACZ;AAAA,QACA,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAe,UAAU,KAAK,CAAC,MAAW,EAAE,SAAS,cAAc;AACzE,QAAM,QAAO,kDAAc,UAAd,YAAuB;AAEpC,MAAI,SAAS,KAAK;AAChB,QAAI,WAAW,WAAW,MAAM,WAAW,WAAW,GAAG,GAAG;AAC1D,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,WAAW,MAAM,GAAG,EAAE;AAAA,QAC7B,WAAW;AAAA,MACb;AAAA,IACF;AACA,QAAI,WAAW,UAAU,IAAI;AAC3B,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,WAAW,MAAM,GAAG;AAAA,QAC3B,WAAW;AAAA,MACb;AAAA,IACF;AACA,QAAI,WAAW,SAAS,IAAI;AAC1B,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,WAAW,MAAM,GAAG;AAAA,QAC3B,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,WAAW,WAAW,EAAE,KAAK,CAAC;AAC/D,MAAI,OAAO;AACT,UAAM,OAAO,WAAW,MAAM,MAAM,MAAM,MAAM;AAChD,WAAO;AAAA,MACL,MAAM,MAAM;AAAA,MACZ,OAAO,KAAK,MAAM,GAAG;AAAA,MACrB,WAAW;AAAA,IACb;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,OAAO,WAAW,MAAM,GAAG;AAAA,IAC3B,WAAW;AAAA,EACb;AACF;AAEA,SAAS,iBACP,MACA,OACA,WACQ;AACR,MAAI,CAAC,QAAQ,CAAC,MAAO,QAAO;AAC5B,QAAM,OAAO,IAAI,IAAI,GAAG,KAAK;AAC7B,MAAI,UAAW,QAAO,GAAG,IAAI,IAAI,SAAS;AAC1C,SAAO;AACT;AAMA,SAAS,mBAAmB,QAAwB;AAClD,QAAM,IAAI,OAAO,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,EAAE;AAC/C,MAAI,CAAC,EAAE,OAAQ,QAAO;AACtB,MAAI,EAAE,UAAU,EAAG,QAAO;AAC1B,MAAI,EAAE,UAAU,EAAG,QAAO,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACxD,SAAO,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC;AAC5D;AAGA,SAAS,oBAAoB,OAAuB;AAClD,QAAM,IAAI,MAAM,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,EAAE;AAC9C,MAAI,CAAC,EAAE,OAAQ,QAAO;AACtB,SAAO,EAAE,QAAQ,oBAAoB,KAAK,EAAE,KAAK;AACnD;AAEA,SAAS,kBACP,MACA,aACA,WACQ;AACR,MAAI,CAAC,eAAe,CAAC,UAAW,QAAO;AACvC,QAAM,OACJ,SAAS,MACL,mBAAmB,WAAW,IAC9B,oBAAoB,WAAW;AACrC,MAAI,CAAC,UAAW,QAAO;AACvB,MAAI,CAAC,KAAM,QAAO,IAAI,SAAS;AAC/B,SAAO,GAAG,IAAI,KAAK,SAAS;AAC9B;AAEA,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;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AACF,MAAM;AArNN,MAAAD,KAAA;AAsNE,QAAM,QAAQN,WAAS;AACvB,QAAM,YAAYC,eAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAC5D,QAAM,YAAaE,WAAU,aAAa,CAAC;AAC3C,QAAM,eAAe;AAAA,IACnB,gBAAgB;AAAA,IAChB,sCAAsC;AAAA,MACpC,aAAaD;AAAA,QACX;AAAA,QACA,MAAM,QAAQ,SAAS,SAAS,OAAO;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,CAAC,SAAS,UAAU,IAAIN,UAAS,cAAc;AACrD,QAAM,CAAC,aAAa,cAAc,IAAIA,UAAS,EAAE;AACjD,QAAM,CAAC,WAAW,YAAY,IAAIA,UAAS,EAAE;AAC7C,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,CAAC,gBAAgB,iBAAiB,IAAIA,UAAS,KAAK;AAE1D,QAAM,aAAaD,QAA8B,IAAI;AAErD,QAAM,uBAAuB;AAAA,IAC3B,CAAC,QAAgB;AACf,wBAAkB,KAAK;AACvB,YAAM,SAAS,gBAAgB,KAAK,WAAW,cAAc;AAC7D,UAAI,OAAO,MAAM;AACf,cAAM,QAAQ,UAAU,KAAK,CAAC,MAAW,EAAE,UAAU,OAAO,IAAI;AAChE,YAAI,MAAO,YAAW,MAAM,IAAI;AAAA,MAClC;AACA,qBAAe,OAAO,KAAK;AAC3B,mBAAa,OAAO,SAAS;AAAA,IAC/B;AAAA,IACA,CAAC,WAAW,cAAc;AAAA,EAC5B;AAEA,EAAAD,WAAU,MAAM;AACd,QAAI,UAAW;AACf,QAAI,CAAC,OAAO;AACV,qBAAe,EAAE;AACjB,mBAAa,EAAE;AACf,wBAAkB,KAAK;AACvB;AAAA,IACF;AACA,yBAAqB,OAAO,KAAK,CAAC;AAAA,EACpC,GAAG,CAAC,OAAO,WAAW,oBAAoB,CAAC;AAE3C,QAAM,cAAc,YAAY,MAAM;AAvQxC,QAAAY;AAwQI,UAAM,MAAM,UAAU,KAAK,CAAC,MAAW,EAAE,SAAS,OAAO;AACzD,UAAM,QAAOA,MAAA,2BAAK,UAAL,OAAAA,MAAc;AAC3B,aAAS,iBAAiB,MAAM,aAAa,SAAS,CAAC;AAAA,EACzD,GAAG,CAAC,WAAW,SAAS,aAAa,WAAW,QAAQ,CAAC;AAEzD,QAAM,oBAAoB,CAAC,MAAqC;AA7QlE,QAAAA,KAAAE;AA8QI,UAAM,MAAM,EAAE,OAAO;AACrB,UAAM,QAAQ,IAAI,MAAM,YAAY;AACpC,UAAM,WAAUF,MAAA,MAAM,CAAC,MAAP,OAAAA,MAAY;AAC5B,UAAM,YAAY,MACf,MAAM,CAAC,EACP,KAAK,EAAE,EACP,QAAQ,OAAO,EAAE,EACjB,MAAM,GAAG,WAAW;AAEvB,UAAM,MAAM,UAAU,KAAK,CAAC,MAAW,EAAE,SAAS,OAAO;AACzD,UAAM,QAAOE,MAAA,2BAAK,UAAL,OAAAA,MAAc;AAC3B,UAAM,WAAW,SAAS,MAAM,KAAK;AAErC,QAAI,aAAa,QAAQ,QAAQ,OAAO,EAAE;AAC1C,QAAI,SAAS,KAAK;AAChB,UAAI,WAAW,WAAW,MAAM,WAAW,WAAW,GAAG,GAAG;AAC1D,qBAAa,WAAW,MAAM,CAAC;AAAA,MACjC;AACA,mBAAa,WAAW,MAAM,GAAG,EAAE;AAAA,IACrC,OAAO;AACL,mBAAa,WAAW,MAAM,GAAG,QAAQ;AAAA,IAC3C;AACA,mBAAe,UAAU;AACzB,iBAAa,SAAS;AACtB,sBAAkB,OAAO,KAAK,GAAG,KAAK,UAAU,WAAW,CAAC;AAAA,EAC9D;AAEA,QAAM,kBACJ,MAAAF,MAAA,UAAU,KAAK,CAAC,MAAW,EAAE,SAAS,OAAO,MAA7C,gBAAAA,IAAgD,UAAhD,YAAyD;AAC3D,QAAM,eACJ,kBAAkB,gBAAgB,aAAa,SAAS,KACvD,iBAAkB,cAAc,OAAO,MAAO;AAEjD,EAAAZ,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,QAAM,kBAAkB,UAAU,KAAK,CAAC,MAAW,EAAE,SAAS,OAAO;AAErE,SACE,gBAAAU;AAAA,IAACN;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,0BAAAO;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,SAAS;AAAA,UACT,YAAW;AAAA,UACX,IAAI,EAAE,OAAO,OAAO;AAAA,UAEpB;AAAA,4BAAAD;AAAA,cAACP;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA,SAAS;AAAA,gBACT,OAAO,4CAAmB;AAAA,gBAC1B,UAAU,CAAC,GAAG,aAAa;AACzB,sBAAI,SAAU,YAAW,SAAS,IAAI;AAAA,gBACxC;AAAA,gBACA,gBAAgB,CAAC,WAAW,KAAK,OAAO,KAAK;AAAA,gBAC7C,eAAe;AAAA,gBACf,sBAAsB,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE;AAAA,gBAC7C,kBAAgB;AAAA,gBAChB;AAAA,gBACA,QAAQ,MAAM;AACZ,gCAAc,IAAI;AAClB,4CAA0B,IAAI;AAAA,gBAChC;AAAA,gBACA,SAAS,MAAM,cAAc,KAAK;AAAA,gBAClC,IAAI;AAAA,kBACF,OAAO,YAAY,KAAK;AAAA,kBACxB,UAAU,YAAY,KAAK;AAAA,kBAC3B,UAAU,YAAY,KAAK;AAAA,kBAC3B,YAAY;AAAA,kBACZ,4BAA4B;AAAA,oBAC1B,sBAAsB;AAAA,oBACtB,yBAAyB;AAAA,oBACzB,GAAG;AAAA,kBACL;AAAA,kBACA,yBAAyB;AAAA,oBACvB,UAAU;AAAA,oBACV,cAAc;AAAA,oBACd,YAAY;AAAA,kBACd;AAAA,gBACF;AAAA,gBACA,cAAc,CAAC,OAAO,WACpB,8BAACC,MAAA,EAAI,WAAU,MAAM,GAAG,OAAO,KAAK,OAAO,QACzC,gBAAAM;AAAA,kBAACN;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,SAAQ;AAAA,oBACR,OAAO;AAAA,oBACP,KAAI;AAAA,oBACJ,KAAK,2BAA2B,OAAO,KAAK,YAAY,CAAC;AAAA,oBACzD,QAAQ,2BAA2B,OAAO,KAAK,YAAY,CAAC;AAAA,oBAC5D,IAAI,EAAE,IAAI,GAAG,YAAY,EAAE;AAAA;AAAA,gBAC7B,GACC,OAAO,MAAK,OAAI,OAAO,OAAM,GAChC;AAAA,gBAEF,aAAa,CAAC,WACZ,gBAAAM;AAAA,kBAACL;AAAA,kBAAA;AAAA,oBACE,GAAG;AAAA,oBACJ,SAAQ;AAAA,oBACR;AAAA,oBACA,YAAY;AAAA,sBACV,GAAG,OAAO;AAAA,sBACV,cAAc;AAAA,oBAChB;AAAA;AAAA,gBACF;AAAA;AAAA,YAEJ;AAAA,YACA,gBAAAK;AAAA,cAACL;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV,aAAY;AAAA,gBACZ;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,YAAY;AAAA,kBACV,WAAW;AAAA,kBACX,cAAc;AAAA,kBACd,cAAc;AAAA,gBAChB;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,WAAS;AAAA,gBACT,IAAI;AAAA,kBACF,4BAA4B;AAAA,oBAC1B,qBAAqB;AAAA,oBACrB,wBAAwB;AAAA,oBACxB,GAAG;AAAA,kBACL;AAAA,gBACF;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,2BAAQ;;;ACpbf,SAAgB,aAAAU,YAAW,YAAAC,iBAAgB;AAC3C;AAAA,EACE,gBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AACP,SAAS,SAAAC,SAAc,YAAAC,kBAA8B;AACrD,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,aAAAC,kBAAiB;AA8FlB,SAuGM,YAAAC,WAvGN,OAAAC,OACA,QAAAC,cADA;AA6EA,0BAAAC,sBAAA;AAzKR,IAAMC,aAAYN,YAAW,CAAC,WAAkB;AAAA,EAC9C,aAAa;AAAA,IACX,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,aAAa;AAAA,IACb,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,QAAQ,aAAaF,QAAM,WAAW,MAAM,QAAQ,SAAS,SAAS,OAAO,IAAI,CAAC;AAAA,IAClF,gBAAgB;AAAA,IAChB,YACE,MAAM,QAAQ,SAAS,SACnB,sEACA;AAAA,IACN,WAAW;AAAA,MACT,WACE,MAAM,QAAQ,SAAS,SACnB,sCACA;AAAA,IACR;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,YACJG,WAAU;AAEL,IAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,EACX;AACF,MAAM;AACJ,QAAM,QAAQF,WAAS;AACvB,QAAM,UAAUO,WAAU;AAC1B,QAAM,CAAC,UAAU,WAAW,IAAId,UAAS,KAAK;AAC9C,QAAM,CAAC,UAAU,WAAW,IAAIA,UAAS,KAAK;AAC9C,QAAM,kBACJ,MAAM,QAAQ,SAAS,SACnB,sEACA;AAEN,QAAM,aAAa,MAAM;AACvB,eAAW,MAAM,YAAY,KAAK,GAAG,EAAE;AAAA,EACzC;AAEA,EAAAD,WAAU,MAAM;AACd,QAAI,CAAC,SAAU,aAAY,KAAK;AAAA,EAClC,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,iBAAiB,UAAU,KAAK,CAAC,YAAY,QAAQ,SAAS,KAAK;AAEzE,MAAI,CAAC,UAAU;AACb,WACE,gBAAAa;AAAA,MAACV;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,MAAM;AACb,cAAI,CAAC,UAAU;AACb,wBAAY,IAAI;AAChB,wBAAY,IAAI;AAAA,UAClB;AAAA,QACF;AAAA,QACA,WAAW,QAAQ;AAAA,QACnB;AAAA,QAEA;AAAA,0BAAAS,MAACN,YAAA,EAAU,WAAW,QAAQ,WAAY,iBAAM;AAAA,UAChD,gBAAAO;AAAA,YAACV;AAAA,YAAA;AAAA,cACC,IAAI;AAAA,gBACF,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,KAAK;AAAA,gBACL,IAAI;AAAA,cACN;AAAA,cAEC;AAAA,iCACC,gBAAAS;AAAA,kBAACT;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,SAAQ;AAAA,oBACR,OAAO;AAAA,oBACP,KAAI;AAAA,oBACJ,KAAK,2BAA2B,eAAe,KAAK,YAAY,CAAC;AAAA,oBACjE,QAAQ,2BAA2B,eAAe,KAAK,YAAY,CAAC;AAAA,oBACpE,IAAI,EAAE,YAAY,EAAE;AAAA;AAAA,gBACtB,IACE;AAAA,gBACJ,gBAAAS,MAACP,aAAA,EAAW,WAAW,QAAQ,WAAW,WAAU,QACjD,4DAAgB,UAAS,UAC5B;AAAA;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AAEA,SACE,gBAAAO;AAAA,IAACV;AAAA,IAAA;AAAA,MACC;AAAA,MACA,SAAS;AAAA,MACT,gBAAgB,CAAC,WAAW,OAAO;AAAA,MACnC,eAAa;AAAA,MACb,MAAM;AAAA,MACN,QAAQ,MAAM,YAAY,IAAI;AAAA,MAC9B,SAAS,MAAM,YAAY,KAAK;AAAA,MAChC,aAAW;AAAA,MACX,kBAAgB;AAAA,MAChB,OAAO,0CAAkB;AAAA,MACzB,UAAU,CAAC,GAAG,aAAa;AACzB,YAAI,YAAY,KAAM;AACtB,iBAAS,QAAQ;AACjB,oBAAY,KAAK;AACjB,oBAAY,KAAK;AAAA,MACnB;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,iBAAiB;AAAA,QACf,OAAO;AAAA,UACL,IAAI;AAAA,YACF,YAAY;AAAA,YACZ,gBAAgB;AAAA,YAChB,QAAQ,aAAaK,QAAM,WAAW,MAAM,QAAQ,SAAS,SAAS,OAAO,IAAI,CAAC;AAAA,YAClF,WACE,MAAM,QAAQ,SAAS,SACnB,sCACA;AAAA,YACN,6BAA6B;AAAA,cAC3B,2BAA2B;AAAA,gBACzB,iBAAiBA;AAAA,kBACf,MAAM,QAAQ,QAAQ;AAAA,kBACtB,MAAM,QAAQ,SAAS,SAAS,OAAO;AAAA,gBACzC;AAAA,cACF;AAAA,cACA,iBAAiB;AAAA,gBACf,iBAAiBA;AAAA,kBACf,MAAM,QAAQ,QAAQ;AAAA,kBACtB,MAAM,QAAQ,SAAS,SAAS,MAAM;AAAA,gBACxC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,cAAc,CAAC,OAAO,WACpB,gBAAAO,eAACX,MAAA,EAAI,WAAU,MAAM,GAAG,OAAO,KAAK,OAAO,QACzC,gBAAAS;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,OAAM;AAAA,UACN,KAAK,2BAA2B,OAAO,KAAK,YAAY,CAAC;AAAA,UACzD,QAAQ,2BAA2B,OAAO,KAAK,YAAY,CAAC;AAAA,UAC5D,KAAI;AAAA,UACJ,OAAO,EAAE,aAAa,GAAG,YAAY,EAAE;AAAA;AAAA,MACzC,GACC,OAAO,OAAM,MAAG,OAAO,MAAK,GAC/B;AAAA,MAEF,aAAa,CAAC,WACZ,gBAAAA;AAAA,QAACR;AAAA,QAAA;AAAA,UACE,GAAG;AAAA,UACJ;AAAA,UACA,SAAQ;AAAA,UACR;AAAA,UACA,WAAS;AAAA,UACT,YAAY;AAAA,YACV,GAAG,OAAO;AAAA,YACV,cAAc;AAAA,UAChB;AAAA,UACA,YAAY;AAAA,YACV,GAAG,OAAO;AAAA,YACV,gBACE,gBAAAS,OAAAF,WAAA,EACG;AAAA,+BACC,gBAAAC;AAAA,gBAACT;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,SAAQ;AAAA,kBACR,OAAO;AAAA,kBACP,KAAI;AAAA,kBACJ,KAAK,2BAA2B,eAAe,KAAK,YAAY,CAAC;AAAA,kBACjE,QAAQ,2BAA2B,eAAe,KAAK,YAAY,CAAC;AAAA,kBACpE,IAAI,EAAE,IAAI,GAAG,YAAY,GAAG,WAAW,SAAS;AAAA;AAAA,cAClD,IACE;AAAA,cACH,OAAO,WAAW;AAAA,eACrB;AAAA,YAEF,IAAI;AAAA,cACF,cAAc;AAAA,cACd,gBAAgB;AAAA,cAChB,YAAY;AAAA,cACZ,OAAO;AAAA,cACP,iBAAiB;AAAA,gBACf,YAAY;AAAA,cACd;AAAA,cACA,WAAW;AAAA,gBACT,YAAY;AAAA,cACd;AAAA,cACA,yBAAyB;AAAA,gBACvB,OAAO;AAAA,gBACP,qBAAqB;AAAA,cACvB;AAAA,cACA,sCAAsC;AAAA,gBACpC,aAAaI;AAAA,kBACX;AAAA,kBACA,MAAM,QAAQ,SAAS,SAAS,OAAO;AAAA,gBACzC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA;AAAA,MACF;AAAA;AAAA,EAEJ;AAEJ;AAEA,IAAO,wBAAQ;;;AC3Pf;AAAA,EACE,eAAAS;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OAKK;AACP,SAAS,OAAAC,OAAK,aAAAC,kBAAiB;AAgKvB,gBAAAC,aAAA;AA1IR,SAAS,QAAQ,GAAW,KAAuB;AACjD,QAAM,SAAS,KAAK,IAAI,MAAM,GAAG,GAAG;AACpC,SAAO,MAAM,KAAK,EAAE,QAAQ,IAAI,GAAG,CAAC,GAAG,MAAG;AAlC5C,QAAAC;AAkC+C,YAAAA,MAAA,MAAM,CAAC,MAAP,OAAAA,MAAY;AAAA,GAAE;AAC7D;AAEA,IAAM,WAAoC,CAAC;AAAA,EACzC;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,YAAY;AAAA,EACZ;AACF,MAAM;AACJ,QAAM,CAAC,OAAO,QAAQ,IAAIJ,UAAS,MAAM,QAAQ,cAAc,MAAM,CAAC;AACtE,QAAM,WAAWD,QAAO,KAAK;AAC7B,WAAS,UAAU;AACnB,QAAM,OAAOA,QAAuC,CAAC,CAAC;AAEtD,EAAAD,WAAU,MAAM;AACd,aAAS,QAAQ,cAAc,MAAM,CAAC;AAAA,EACxC,GAAG,CAAC,cAAc,MAAM,CAAC;AAEzB,QAAM,OAAOD;AAAA,IACX,CAAC,MAAgB,gBAAyB;AACxC,eAAS,IAAI;AACb,YAAM,SAAS,KAAK,KAAK,EAAE;AAC3B,eAAS,QAAQ,WAAW;AAC5B,UAAI,cAAc,OAAO,WAAW,UAAU,KAAK,MAAM,OAAO,GAAG;AACjE,mBAAW,QAAQ,SAAS,CAAC;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,UAAU,UAAU;AAAA,EAC/B;AAEA,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,WAAY;AACjB,UAAM,KAAK,sBAAsB,MAAG;AA1ExC,UAAAM;AA0E2C,cAAAA,MAAA,KAAK,QAAQ,CAAC,MAAd,gBAAAA,IAAiB;AAAA,KAAO;AAC/D,WAAO,MAAM,qBAAqB,EAAE;AAAA,EACtC,GAAG,CAAC,YAAY,MAAM,CAAC;AAEvB,QAAM,cAAcP;AAAA,IAClB,CAAC,OAAe;AACd,UAAI,CAAC,GAAI,QAAO;AAChB,UAAI,SAAS,aAAa,KAAK,KAAK,EAAE,EAAG,QAAO;AAChD,UAAI,iBAAiB,CAAC,cAAc,KAAK,EAAE,EAAG,QAAO;AACrD,aAAO;AAAA,IACT;AAAA,IACA,CAAC,eAAe,IAAI;AAAA,EACtB;AAEA,QAAM,YAAYA;AAAA,IAChB,CAAC,UAAkB,QAAgB;AAzFvC,UAAAO;AA0FM,YAAM,YACJ,SAAS,YAAY,IAAI,QAAQ,OAAO,EAAE,IAAI,KAC9C,MAAM,EAAE;AACV,YAAM,OAAO,CAAC,GAAG,SAAS,OAAO;AACjC,UAAI,IAAI;AACR,iBAAW,MAAM,UAAU;AACzB,YAAI,KAAK,OAAQ;AACjB,YAAI,CAAC,YAAY,EAAE,EAAG;AACtB,aAAK,CAAC,IAAI;AACV,aAAK;AAAA,MACP;AACA,YAAM,UAAU,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC;AACvD,WAAK,MAAM,OAAO;AAClB,OAAAA,MAAA,KAAK,QAAQ,OAAO,MAApB,gBAAAA,IAAuB;AAAA,IACzB;AAAA,IACA,CAAC,aAAa,MAAM,QAAQ,IAAI;AAAA,EAClC;AAEA,QAAM,gBAAgB,CACpB,KACA,MACG;AA/GP,QAAAA;AAgHI,UAAM,MAAM,EAAE,OAAO;AACrB,QAAI,IAAI,SAAS,GAAG;AAClB,gBAAU,KAAK,GAAG;AAClB;AAAA,IACF;AACA,QAAI,OAAO,CAAC,YAAY,GAAG,EAAG;AAC9B,UAAM,OAAO,CAAC,GAAG,SAAS,OAAO;AACjC,SAAK,GAAG,IAAI;AACZ,SAAK,MAAM,GAAG;AACd,QAAI,OAAO,MAAM,SAAS,GAAG;AAC3B,OAAAA,MAAA,KAAK,QAAQ,MAAM,CAAC,MAApB,gBAAAA,IAAuB;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,YAAY,CAAC,KAAa,MAAqB;AA9HvD,QAAAA,KAAA;AA+HI,QAAI,EAAE,QAAQ,aAAa;AACzB,YAAM,OAAO,CAAC,GAAG,SAAS,OAAO;AACjC,UAAI,KAAK,GAAG,GAAG;AACb,aAAK,GAAG,IAAI;AACZ,aAAK,MAAM,GAAG;AAAA,MAChB,WAAW,MAAM,GAAG;AAClB,aAAK,MAAM,CAAC,IAAI;AAChB,aAAK,MAAM,MAAM,CAAC;AAClB,SAAAA,MAAA,KAAK,QAAQ,MAAM,CAAC,MAApB,gBAAAA,IAAuB;AAAA,MACzB;AACA,QAAE,eAAe;AAAA,IACnB,WAAW,EAAE,QAAQ,eAAe,MAAM,GAAG;AAC3C,iBAAK,QAAQ,MAAM,CAAC,MAApB,mBAAuB;AACvB,QAAE,eAAe;AAAA,IACnB,WAAW,EAAE,QAAQ,gBAAgB,MAAM,SAAS,GAAG;AACrD,iBAAK,QAAQ,MAAM,CAAC,MAApB,mBAAuB;AACvB,QAAE,eAAe;AAAA,IACnB;AAAA,EACF;AAEA,QAAM,eAAe,CAAC,MAAwC;AAC5D,MAAE,eAAe;AACjB,UAAM,OAAO,EAAE,cAAc,QAAQ,MAAM,EAAE,QAAQ,OAAO,EAAE;AAC9D,QAAI,CAAC,KAAM;AACX,cAAU,GAAG,IAAI;AAAA,EACnB;AAEA,QAAM,YAAY,SAAS,aAAa,SAAS,YAAY,QAAQ;AAErE,SACE,gBAAAD;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF;AAAA,UACE,SAAS;AAAA,UACT,KAAK;AAAA,UACL,UAAU;AAAA,UACV,gBAAgB;AAAA,UAChB,YAAY;AAAA,QACd;AAAA,QACA,GAAI,MAAM,OAAO,CAAC,IAAI,MAAM,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE;AAAA,MACpD;AAAA,MAEC,gBAAM,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,QAC9B,gBAAAE;AAAA,QAACD;AAAA,QAAA;AAAA,UAEC,UAAU,CAAC,OAAgC;AACzC,iBAAK,QAAQ,GAAG,IAAI;AAAA,UACtB;AAAA,UACA,OAAO,MAAM,GAAG;AAAA,UAChB,UAAU,CAAC,MAAM,cAAc,KAAK,CAAC;AAAA,UACrC,WAAW,CAAC,MAAM,UAAU,KAAK,CAAC;AAAA,UAClC,SAAS,QAAQ,IAAI,eAAe;AAAA,UACpC;AAAA,UACA,MAAK;AAAA,UACL,MAAM;AAAA,UACN,IAAI;AAAA,YACF,OAAO;AAAA,YACP,6BAA6B;AAAA,cAC3B,WAAW;AAAA,cACX,IAAI;AAAA,cACJ,IAAI;AAAA,YACN;AAAA,YACA,GAAI,kBACA;AAAA,cACE,iDAAiD;AAAA,YACnD,IACA,CAAC;AAAA,UACP;AAAA,UACA,YAAY;AAAA,YACV,WAAW;AAAA,YACX,WAAW,gCAAa;AAAA,YACxB,cAAc,kBAAkB,MAAM,CAAC,OAAO,MAAM;AAAA,YACpD,cAAc;AAAA,UAChB;AAAA;AAAA,QA7BK;AAAA,MA8BP,CACD;AAAA;AAAA,EACH;AAEJ;AAEA,IAAO,mBAAQ;","names":["jsx","TablePagination","_a","useTheme","styled","makeStyles","Box","jsx","_a","alpha","useTheme","useMediaQuery","jsx","jsxs","alpha","styled","useTheme","Box","Typography","alpha","jsx","jsxs","styled","useTheme","Box","alpha","Typography","Box","IconButton","alpha","styled","CloudUpload","jsx","jsxs","styled","Box","alpha","IconButton","_a","CloudUpload","useEffect","useRef","useState","IconButton","alpha","useTheme","CloseIcon","jsx","_a","severity","alpha","jsx","Box","useTheme","jsx","_a","React","Box","Typography","useTheme","jsx","jsxs","Typography","alpha","useTheme","jsx","jsxs","useTheme","alpha","Typography","alpha","styled","jsx","alpha","useTheme","jsx","_a","useTheme","alpha","useState","Tooltip","IconButton","jsx","jsxs","React","useEffect","useRef","useState","Typography","IconButton","alpha","useTheme","makeStyles","Fragment","jsx","jsxs","useStyles","_a","Typography","Box","IconButton","Grid","useTheme","useMediaQuery","alpha","Close","jsx","jsxs","defaultBackdropSx","useEffect","useRef","useState","Autocomplete","Box","TextField","useTheme","useMediaQuery","alpha","constants","jsx","jsxs","_a","found","_b","useEffect","useState","Autocomplete","Box","TextField","Typography","FormLabel","alpha","useTheme","makeStyles","constants","Fragment","jsx","jsxs","createElement","useStyles","useCallback","useEffect","useRef","useState","Box","TextField","jsx","_a"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx","../src/TabPanel.tsx","../src/TablePagination.tsx","../src/Logo.tsx","../src/FormDialog.tsx","../src/InputFileUpload.tsx","../src/glassStyles.ts","../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","../src/CountrySelect.tsx","../src/OTPField.tsx"],"sourcesContent":["export * from \"@mui/material\";\nexport { default as TabPanel } from \"./TabPanel\";\nexport { default as TablePagination } from \"./TablePagination\";\nexport type { TablePaginationDesignProps } from \"./TablePagination\";\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\";\nexport { default as CountrySelect } from \"./CountrySelect\";\nexport type { CountryType } from \"./CountrySelect\";\nexport { default as OTPField } from \"./OTPField\";\nexport type { OTPFieldProps } from \"./OTPField\";\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","import * as React from \"react\";\nimport MuiTablePagination from \"@mui/material/TablePagination\";\nimport type { LabelDisplayedRowsArgs } from \"@mui/material/TablePagination\";\nimport tablePaginationClasses from \"@mui/material/TablePagination/tablePaginationClasses\";\nimport type { SxProps, Theme } from \"@mui/material/styles\";\nimport { alpha } from \"@mui/material/styles\";\n\nexport type TablePaginationDesignProps = React.ComponentProps<\n typeof MuiTablePagination\n> & {\n /** Label before the rows-per-page control. Default: \"Per page\". Overrides MUI `labelRowsPerPage` when both are omitted; explicit `labelRowsPerPage` wins. */\n rowsPerPageLabel?: React.ReactNode;\n /** Formats the range summary (e.g. total count). Default: \"1–10 of 47 results\". Overrides MUI `labelDisplayedRows` when both are omitted; explicit `labelDisplayedRows` wins. */\n displayedRangeLabel?: (info: LabelDisplayedRowsArgs) => React.ReactNode;\n};\n\nfunction mergeSx(...parts: (SxProps<Theme> | undefined)[]): SxProps<Theme> {\n const flat: object[] = [];\n for (const p of parts) {\n if (p == null) continue;\n if (Array.isArray(p)) {\n for (const x of p) {\n if (x != null) flat.push(x as object);\n }\n } else {\n flat.push(p as object);\n }\n }\n return flat as SxProps<Theme>;\n}\n\nconst DEFAULT_ROWS_PER_PAGE_LABEL = \"Per page\";\n\nfunction defaultDisplayedRangeLabel({\n from,\n to,\n count,\n}: LabelDisplayedRowsArgs): React.ReactNode {\n if (count === 0) {\n return \"No results\";\n }\n if (count === -1) {\n return `${from}–${to}+`;\n }\n if (from > to) {\n return `0 of ${count} results`;\n }\n return `${from}–${to} of ${count} results`;\n}\n\nfunction defaultGetItemAriaLabel(\n type: \"first\" | \"last\" | \"next\" | \"previous\",\n): string {\n const labels: Record<typeof type, string> = {\n first: \"First page\",\n previous: \"Previous page\",\n next: \"Next page\",\n last: \"Last page\",\n };\n return labels[type];\n}\n\nconst rootSx: SxProps<Theme> = {\n width: \"100%\",\n boxSizing: \"border-box\",\n verticalAlign: \"middle\",\n bgcolor: \"transparent\",\n backdropFilter: \"blur(12px) saturate(150%)\",\n borderRadius: 2,\n py: 0.75,\n px: { xs: 1, sm: 1.5 },\n [`& .${tablePaginationClasses.toolbar}`]: {\n width: \"100%\",\n minHeight: 48,\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n gap: { xs: 0.75, sm: 1.25 },\n py: 0,\n pr: 0,\n pl: 0,\n maxWidth: \"100%\",\n overflowX: \"auto\",\n },\n [`& .${tablePaginationClasses.spacer}`]: {\n flex: \"1 1 auto\",\n minWidth: 0,\n },\n [`& .${tablePaginationClasses.selectLabel}`]: {\n typography: \"body2\",\n fontWeight: 500,\n textTransform: \"none\",\n color: \"text.secondary\",\n m: 0,\n whiteSpace: \"nowrap\",\n },\n [`& .${tablePaginationClasses.displayedRows}`]: {\n typography: \"body2\",\n fontWeight: 600,\n color: \"text.primary\",\n fontVariantNumeric: \"tabular-nums\",\n m: 0,\n whiteSpace: \"nowrap\",\n },\n [`& .${tablePaginationClasses.input}`]: {\n marginLeft: 0,\n marginRight: 0,\n },\n [`& .${tablePaginationClasses.actions}`]: {\n mx: 1,\n gap: 1,\n display: \"flex\",\n alignItems: \"center\",\n [`& .MuiIconButton-root`]: {\n borderRadius: 2,\n color: \"text.secondary\",\n padding: 0.5,\n border: \"1px solid\",\n borderColor: \"divider\",\n \"&:hover\": {\n bgcolor: \"action.selected\",\n color: \"text.primary\",\n },\n \"&.Mui-disabled\": {\n opacity: 0.36,\n },\n },\n },\n};\n\n/**\n * Design-library TablePagination: forwards MUI props and ref, with a compact\n * toolbar (spacer + `justifyContent: flex-end` so controls stay right),\n * optional `rowsPerPageLabel` / `displayedRangeLabel`, and first/last\n * navigation by default. Use inside `TableFooter` for vertical alignment with\n * table rows.\n */\nconst TablePagination = React.forwardRef(function TablePagination(\n props: TablePaginationDesignProps,\n ref: React.ComponentPropsWithRef<typeof MuiTablePagination>[\"ref\"],\n) {\n const {\n sx,\n slotProps,\n SelectProps,\n showFirstButton = true,\n showLastButton = true,\n labelDisplayedRows: labelDisplayedRowsProp,\n labelRowsPerPage: labelRowsPerPageProp,\n getItemAriaLabel,\n rowsPerPageLabel,\n displayedRangeLabel,\n ...other\n } = props;\n\n const labelRowsPerPageResolved =\n labelRowsPerPageProp ?? rowsPerPageLabel ?? DEFAULT_ROWS_PER_PAGE_LABEL;\n\n const labelDisplayedRowsResolved =\n labelDisplayedRowsProp ?? displayedRangeLabel ?? defaultDisplayedRangeLabel;\n\n const slotSelect = slotProps?.select;\n const { sx: slotSelectSx, ...slotSelectRest } = slotSelect ?? {};\n const { sx: legacySelectSx, ...legacySelectRest } = SelectProps ?? {};\n\n const mergedSelect = {\n variant: \"outlined\" as const,\n size: \"small\" as const,\n ...legacySelectRest,\n ...slotSelectRest,\n sx: mergeSx(\n (theme: Theme) => ({\n borderRadius: 2,\n minWidth: 64,\n fontSize: theme.typography.body2.fontSize,\n backdropFilter: \"blur(10px)\",\n backgroundColor: alpha(\n theme.palette.background.paper,\n theme.palette.mode === \"dark\" ? 0.2 : 0.74,\n ),\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: alpha(\n \"#FFFFFF\",\n theme.palette.mode === \"dark\" ? 0.16 : 0.56,\n ),\n },\n \"&:hover .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"text.disabled\",\n },\n \"&.Mui-focused .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"primary.main\",\n },\n \"& .MuiSelect-select\": {\n py: 0.625,\n minHeight: \"unset\",\n display: \"flex\",\n alignItems: \"center\",\n },\n }),\n legacySelectSx,\n slotSelectSx,\n ),\n };\n\n return (\n <MuiTablePagination\n ref={ref}\n showFirstButton={showFirstButton}\n showLastButton={showLastButton}\n labelRowsPerPage={labelRowsPerPageResolved}\n labelDisplayedRows={labelDisplayedRowsResolved}\n getItemAriaLabel={getItemAriaLabel ?? defaultGetItemAriaLabel}\n slotProps={{\n ...slotProps,\n select: mergedSelect,\n }}\n sx={mergeSx(rootSx, sx)}\n {...other}\n />\n );\n});\n\nexport default TablePagination;\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 = 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 {(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 <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 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","import * as React from \"react\";\nimport { styled, alpha, type Theme } from \"@mui/material/styles\";\nimport {\n useTheme,\n useMediaQuery,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n type DialogProps,\n} from \"@mui/material\";\nimport { Close } from \"@mui/icons-material\";\n\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\n \"& .MuiDialog-paper\": {\n borderRadius: 24,\n backgroundColor: theme.palette.background.paper,\n display: \"flex\",\n flexDirection: \"column\",\n maxHeight: \"min(92vh, 1200px)\",\n [theme.breakpoints.down(\"md\")]: {\n borderRadius: 0,\n maxHeight: \"100%\",\n },\n },\n \"& .MuiDialogContent-root\": {\n padding: theme.spacing(4),\n },\n \"& .MuiDialogActions-root\": {\n padding: theme.spacing(4),\n },\n}));\n\nexport type FormDialogTitleProps = React.ComponentProps<typeof DialogTitle> & {\n onClose?: () => void;\n};\n\nconst BootstrapDialogTitle = ({\n children,\n onClose,\n ...other\n}: FormDialogTitleProps) => (\n <DialogTitle\n sx={{\n position: \"relative\",\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 color: \"primary.main\",\n flexShrink: 0,\n bgcolor: \"background.paper\",\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 aria-label=\"Close\"\n >\n <Close color=\"primary\" />\n </IconButton>\n ) : null}\n </DialogTitle>\n);\n\nconst defaultBackdropSx = {\n backgroundColor: (t: Theme) =>\n alpha(t.palette.common.black, t.palette.mode === \"dark\" ? 0.52 : 0.28),\n backdropFilter: \"saturate(150%) blur(10px)\",\n WebkitBackdropFilter: \"saturate(150%) blur(10px)\",\n};\n\nexport type FormDialogProps = Omit<\n DialogProps,\n \"open\" | \"onClose\" | \"title\" | \"children\"\n> & {\n open?: boolean;\n setOpen:\n | React.Dispatch<React.SetStateAction<boolean>>\n | ((open: boolean) => void);\n title?: React.ReactNode;\n /** Omit or pass `null` to hide the actions row. */\n actions?: React.ReactNode | null;\n children: React.ReactNode;\n maxWidth?: DialogProps[\"maxWidth\"];\n};\n\nconst FormDialog = ({\n open = false,\n setOpen,\n title = \"\",\n actions,\n children,\n maxWidth = \"lg\",\n BackdropProps,\n ...props\n}: FormDialogProps) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n const close = () => setOpen(false);\n\n const bp = BackdropProps ?? {};\n const mergedBackdrop = {\n ...bp,\n sx: Array.isArray(bp.sx)\n ? [defaultBackdropSx, ...bp.sx]\n : [defaultBackdropSx, bp.sx].filter(Boolean),\n };\n\n return (\n <BootstrapDialog\n {...props}\n fullWidth\n onClose={close}\n open={open}\n maxWidth={maxWidth}\n fullScreen={mdMatches}\n BackdropProps={mergedBackdrop}\n >\n <BootstrapDialogTitle onClose={close}>{title}</BootstrapDialogTitle>\n <DialogContent\n dividers\n sx={{\n flex: \"1 1 auto\",\n minHeight: 0,\n overflow: \"auto\",\n bgcolor: \"background.paper\",\n }}\n >\n {children}\n </DialogContent>\n {actions != null ? (\n <DialogActions\n sx={{\n flexShrink: 0,\n bgcolor: \"background.paper\",\n borderTop: (t) => `1px solid ${t.palette.divider}`,\n }}\n >\n {actions}\n </DialogActions>\n ) : null}\n </BootstrapDialog>\n );\n};\n\nexport default FormDialog;\n","// @ts-nocheck\nimport React from \"react\";\nimport { alpha, styled, useTheme } from \"@mui/material/styles\";\nimport { Box, Typography } from \"@mui/material\";\nimport { CloudUpload } from \"@mui/icons-material\";\nimport { glassHover, glassSurface } from \"./glassStyles\";\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\nexport type InputFileUploadProps = {\n name?: string;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n /** Primary label (e.g. “Upload document”). */\n title?: string;\n /** Secondary line under the title (e.g. accepted types). */\n subtitle?: string;\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n /** Stretch to the width of the parent container. */\n fullWidth?: boolean;\n};\n\nconst InputFileUpload: React.FC<InputFileUploadProps> = ({\n name = \"\",\n onChange = () => null,\n title = \"Choose file\",\n subtitle = \"Tap to browse\",\n accept,\n multiple,\n disabled = false,\n fullWidth = false,\n}) => {\n const theme = useTheme();\n\n return (\n <Box\n component=\"label\"\n sx={(t) => ({\n ...glassSurface(t),\n display: fullWidth ? \"flex\" : \"inline-flex\",\n alignItems: \"center\",\n gap: 2,\n width: fullWidth ? \"100%\" : \"auto\",\n maxWidth: \"100%\",\n px: 2.25,\n py: 1.75,\n borderRadius: 2.5,\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n opacity: disabled ? 0.52 : 1,\n pointerEvents: disabled ? \"none\" : \"auto\",\n transition: \"box-shadow 0.2s ease, transform 0.2s ease\",\n borderStyle: \"dashed\",\n borderWidth: 1,\n borderColor: alpha(\n t.palette.primary.main,\n t.palette.mode === \"dark\" ? 0.35 : 0.28,\n ),\n \"&:hover\": !disabled\n ? {\n ...glassHover(t),\n borderColor: alpha(t.palette.primary.main, 0.45),\n boxShadow:\n t.palette.mode === \"dark\"\n ? \"0 12px 28px rgba(0,0,0,0.38)\"\n : \"0 12px 28px rgba(15, 23, 42, 0.12)\",\n }\n : undefined,\n \"&:focus-within\": {\n outline: `2px solid ${alpha(t.palette.primary.main, 0.45)}`,\n outlineOffset: 2,\n },\n })}\n >\n <Box\n aria-hidden\n sx={{\n flexShrink: 0,\n width: 44,\n height: 44,\n borderRadius: 2,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: alpha(\n theme.palette.primary.main,\n theme.palette.mode === \"dark\" ? 0.22 : 0.12,\n ),\n border: `1px solid ${alpha(theme.palette.primary.main, 0.25)}`,\n color: \"primary.main\",\n }}\n >\n <CloudUpload sx={{ fontSize: 22 }} />\n </Box>\n\n <Box sx={{ flex: 1, minWidth: 0, textAlign: \"left\" }}>\n <Typography\n variant=\"subtitle2\"\n component=\"span\"\n display=\"block\"\n fontWeight={700}\n color=\"text.primary\"\n letterSpacing=\"-0.01em\"\n >\n {title}\n </Typography>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n display=\"block\"\n sx={{ mt: 0.25 }}\n >\n {subtitle}\n </Typography>\n </Box>\n\n <VisuallyHiddenInput\n type=\"file\"\n name={name}\n onChange={onChange}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n />\n </Box>\n );\n};\n\nexport default InputFileUpload;\n","import { alpha, Theme } from \"@mui/material/styles\";\n\nexport const glassBorder = (theme: Theme) =>\n `1px solid ${alpha(\n \"#FFFFFF\",\n theme.palette.mode === \"dark\" ? 0.16 : 0.62,\n )}`;\n\nexport const glassSurface = (theme: Theme) => ({\n background:\n theme.palette.mode === \"dark\"\n ? `linear-gradient(160deg, ${alpha(\"#1F2937\", 0.78)} 0%, ${alpha(\"#111827\", 0.68)} 100%)`\n : `linear-gradient(160deg, ${alpha(\"#FFFFFF\", 0.88)} 0%, ${alpha(\"#F5F9FF\", 0.72)} 100%)`,\n border: glassBorder(theme),\n backdropFilter: \"blur(18px) saturate(155%)\",\n WebkitBackdropFilter: \"blur(18px) saturate(155%)\",\n boxShadow:\n theme.palette.mode === \"dark\"\n ? \"0 16px 40px rgba(0,0,0,0.34)\"\n : \"0 14px 34px rgba(15, 23, 42, 0.12)\",\n});\n\nexport const glassHover = (theme: Theme) => ({\n background:\n theme.palette.mode === \"dark\"\n ? `linear-gradient(160deg, ${alpha(\"#374151\", 0.8)} 0%, ${alpha(\"#1F2937\", 0.74)} 100%)`\n : `linear-gradient(160deg, ${alpha(\"#FFFFFF\", 0.97)} 0%, ${alpha(\"#EEF5FF\", 0.86)} 100%)`,\n});\n","import React, { useEffect, useRef, useState, ChangeEvent } from \"react\";\nimport { Box, IconButton } from \"@mui/material\";\nimport { alpha, styled } from \"@mui/material/styles\";\nimport { CloudUpload, Close as CloseIcon } from \"@mui/icons-material\";\nimport { glassSurface } from \"./glassStyles\";\n\nconst DEFAULT_ACCEPT =\n \"image/jpeg,image/png,image/gif,image/webp,image/avif,image/bmp,image/svg+xml,image/heic,image/heif\";\n\nfunction isValidImageFile(file: File): boolean {\n const type = file.type.trim().toLowerCase();\n if (type.startsWith(\"image/\")) {\n return true;\n }\n if (!type && /\\.(jpe?g|png|gif|webp|avif|bmp|svg|heic|heif)$/i.test(file.name)) {\n return true;\n }\n return false;\n}\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 ...glassSurface(theme),\n border: `1px dashed ${alpha(theme.palette.primary.main, 0.28)}`,\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 ...glassSurface(theme),\n boxShadow: theme.shadows[2],\n \"&:hover\": {\n background: alpha(theme.palette.background.paper, 0.9),\n },\n}));\n\nexport const ImageUploadAvatar: React.FC<ImageUploadAvatarProps> = ({\n name = \"image\",\n defaultValue = null,\n onChange,\n size = 128,\n variant = \"rounded\",\n accept = DEFAULT_ACCEPT,\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 raw = e.target.files?.[0] ?? null;\n if (raw && !isValidImageFile(raw)) {\n if (inputRef.current) inputRef.current.value = \"\";\n return;\n }\n const selected = raw;\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","import React, { useEffect, useRef, useState } from \"react\";\nimport { Alert, Grow, IconButton, type AlertProps } from \"@mui/material\";\nimport { alpha, useTheme } from \"@mui/material/styles\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { constants } from \"@verma-consulting/common-library\";\n\nconst SNACKBAR_TYPES = (constants as any)?.SNACKBAR_TYPES;\n\nexport type SnackbarType = \"success\" | \"error\" | \"warning\" | \"info\" | \"\";\n\nconst DULL_SNACKBAR_COLORS = {\n success: \"#6B8E6B\",\n warning: \"#C97B4B\", // dull orange soda\n info: \"#4A5E8A\",\n error: \"#9B4444\",\n} as const;\n\nexport interface FormSnackBarState {\n open?: boolean;\n message?: string;\n type?: SnackbarType;\n}\n\nexport interface FormSnackBarProps {\n snackBar?: FormSnackBarState;\n setSnackBar?: (state: FormSnackBarState) => void;\n autoHideDuration?: number;\n}\n\nfunction isSnackbarType(val: unknown): val is Exclude<SnackbarType, \"\"> {\n if (typeof val !== \"string\") return false;\n if (!SNACKBAR_TYPES) {\n return ([\"success\", \"error\", \"warning\", \"info\"] as const).includes(\n val as any,\n );\n }\n const values = Object.values(SNACKBAR_TYPES) as string[];\n return values.includes(val);\n}\n\nconst FormSnackBar: React.FC<FormSnackBarProps> = ({\n snackBar = {},\n setSnackBar = () => null,\n autoHideDuration = 3500,\n}) => {\n const theme = useTheme();\n\n const [queue, setQueue] = useState<\n Array<{ id: string; type: SnackbarType; message: string }>\n >([]);\n const idRef = useRef(0);\n const prevOpenRef = useRef<boolean>(!!snackBar?.open);\n const prevSignatureRef = useRef<string>(\"\");\n const timersRef = useRef<Record<string, ReturnType<typeof setTimeout>>>({});\n\n const type = (snackBar.type ?? \"\") as SnackbarType;\n const message = snackBar.message ?? \"\";\n\n const severity: AlertProps[\"severity\"] = isSnackbarType(type) ? type : \"info\";\n\n const enqueueFromProp = () => {\n if (!snackBar?.open) return;\n if (!message) return;\n\n const signature = `${type}::${message}`;\n const openRose = !prevOpenRef.current && !!snackBar?.open;\n const signatureChanged = signature !== prevSignatureRef.current;\n\n // Enqueue on a rising edge OR when message/type changes while still open.\n if (!openRose && !signatureChanged) return;\n\n prevSignatureRef.current = signature;\n const id = String(++idRef.current);\n setQueue((q) => [...q, { id, type, message }]);\n\n timersRef.current[id] = setTimeout(() => {\n setQueue((q) => q.filter((item) => item.id !== id));\n delete timersRef.current[id];\n }, autoHideDuration);\n\n // Reset the external trigger immediately so repeated actions can enqueue again.\n setSnackBar({ open: false, message: \"\", type: \"\" });\n };\n\n useEffect(() => {\n const nextOpen = !!snackBar?.open;\n // Enqueue on open change and/or message change while open.\n enqueueFromProp();\n prevOpenRef.current = nextOpen;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [snackBar?.open, snackBar?.message, snackBar?.type]);\n\n const handleDismiss = (id: string) => {\n const t = timersRef.current[id];\n if (t) clearTimeout(t);\n delete timersRef.current[id];\n setQueue((q) => q.filter((item) => item.id !== id));\n };\n\n useEffect(() => {\n return () => {\n Object.values(timersRef.current).forEach((t) => clearTimeout(t));\n timersRef.current = {};\n };\n }, []);\n\n const typeStyles = (severity: AlertProps[\"severity\"]) => {\n // Softer, dull colors so they are visible without being harsh.\n const baseHex =\n severity === \"success\"\n ? DULL_SNACKBAR_COLORS.success\n : severity === \"error\"\n ? DULL_SNACKBAR_COLORS.error\n : severity === \"warning\"\n ? DULL_SNACKBAR_COLORS.warning\n : DULL_SNACKBAR_COLORS.info;\n return {\n bg:\n theme.palette.mode === \"dark\"\n ? alpha(baseHex, 0.34)\n : alpha(baseHex, 0.24),\n text: theme.palette.mode === \"dark\" ? \"rgba(255,255,255,0.94)\" : baseHex,\n icon: baseHex,\n };\n };\n\n return (\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n style={{\n position: \"fixed\",\n top: 12,\n right: 12,\n zIndex: 1400,\n display: \"flex\",\n flexDirection: \"column\",\n gap: 8,\n width: \"min(420px, calc(100vw - 24px))\",\n pointerEvents: \"none\",\n }}\n >\n {queue.map((item) => {\n const localSeverity: AlertProps[\"severity\"] = isSnackbarType(item.type)\n ? item.type\n : \"info\";\n\n const colors = typeStyles(localSeverity);\n\n return (\n <Grow key={item.id} in timeout={280}>\n <Alert\n variant=\"filled\"\n severity={localSeverity}\n sx={{\n width: \"100%\",\n pointerEvents: \"auto\",\n borderRadius: 2,\n px: { xs: 1.25, sm: 1.5 },\n py: 0.875,\n alignItems: \"center\",\n boxShadow: 2,\n backgroundColor: colors.bg,\n color: colors.text,\n backdropFilter: \"blur(14px) saturate(150%)\",\n WebkitBackdropFilter: \"blur(14px) saturate(150%)\",\n border: `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.16 : 0.55)}`,\n \"& .MuiAlert-icon\": {\n color: colors.icon,\n },\n \"& .MuiAlert-message\": {\n m: 0,\n p: 0,\n fontWeight: 600,\n letterSpacing: \"-0.01em\",\n },\n }}\n action={\n <IconButton\n aria-label=\"close\"\n color=\"inherit\"\n size=\"small\"\n onClick={() => handleDismiss(item.id)}\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n }\n >\n {item.message}\n </Alert>\n </Grow>\n );\n })}\n </div>\n );\n};\n\nexport default FormSnackBar;\n","import React from \"react\";\nimport { CircularProgress, Backdrop } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { alpha } from \"@mui/material/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: \"transparent\",\n backdropFilter: \"blur(10px) saturate(145%)\",\n }}\n >\n <CircularProgress\n size={size}\n color={color}\n thickness={3.4}\n className={classes.progress}\n sx={{\n p: 1,\n borderRadius: \"50%\",\n backgroundColor: \"transparent\",\n border: (theme) =>\n `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.14 : 0.56)}`,\n boxShadow: (theme) =>\n theme.palette.mode === \"dark\"\n ? \"0 10px 24px rgba(0,0,0,0.32)\"\n : \"0 10px 20px rgba(15,23,42,0.14)\",\n }}\n />\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 } from \"@mui/material\";\nimport { alpha, useTheme } from \"@mui/material/styles\";\nimport { glassSurface } from \"./glassStyles\";\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 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\n return (\n <Button\n variant={isSelected ? \"contained\" : \"outlined\"}\n color={color || \"primary\"}\n sx={{\n ...glassSurface(theme),\n borderRadius: 16,\n padding: \"8px 16px\",\n minHeight: 38,\n textTransform: \"none\",\n borderColor: isSelected\n ? alpha(theme.palette.primary.main, 0.34)\n : alpha(theme.palette.text.primary, 0.18),\n color: isSelected ? \"primary.main\" : \"text.primary\",\n \"&:hover\": {\n borderColor: alpha(theme.palette.primary.main, 0.42),\n boxShadow:\n theme.palette.mode === \"dark\"\n ? \"0 10px 22px rgba(0,0,0,0.34)\"\n : \"0 10px 20px rgba(15,23,42,0.14)\",\n },\n }}\n onClick={onClick}\n disabled={disabled}\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=\"subtitle2\" color=\"inherit\" fontWeight={700}>\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 { alpha, 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 background: `linear-gradient(120deg, ${alpha(theme.palette.primary.light, 0.92)} 0%, ${alpha(theme.palette.primary.main, 0.94)} 100%)`,\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 boxShadow:\n theme.palette.mode === \"dark\"\n ? \"0 2px 8px rgba(0,0,0,0.38)\"\n : \"0 2px 6px rgba(15,23,42,0.24)\",\n },\n \"& .MuiSwitch-track\": {\n borderRadius: 16,\n background:\n theme.palette.mode === \"light\"\n ? \"linear-gradient(120deg, rgba(245,248,255,0.92) 0%, rgba(224,232,245,0.92) 100%)\"\n : \"linear-gradient(120deg, rgba(55,65,81,0.74) 0%, rgba(31,41,55,0.8) 100%)\",\n border: `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.16 : 0.56)}`,\n backdropFilter: \"blur(10px) saturate(145%)\",\n WebkitBackdropFilter: \"blur(10px) saturate(145%)\",\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 { alpha, useTheme } from \"@mui/material/styles\";\nimport { userStatus } from \"@verma-consulting/common-library\";\nimport { glassSurface } from \"./glassStyles\";\n\ninterface StatusPillProps {\n status: userStatus;\n}\n\nconst statusColorMap: Record<userStatus, string> = {\n [userStatus.Pending]: \"#B06A00\",\n [userStatus.Active]: \"#087443\",\n [userStatus.Inactive]: \"#B42318\",\n [userStatus.Invited]: \"#175CD3\",\n};\n\nconst StatusPill: React.FC<StatusPillProps> = ({ status }) => {\n const theme = useTheme();\n\n return (\n <Chip\n label={status}\n variant=\"outlined\"\n sx={{\n ...glassSurface(theme),\n minHeight: 38,\n fontWeight: 700,\n borderRadius: 16,\n px: 1.25,\n letterSpacing: \"0.01em\",\n color: statusColorMap[status] ?? theme.palette.text.primary,\n backgroundColor: alpha(\n statusColorMap[status] ?? theme.palette.text.primary,\n theme.palette.mode === \"dark\" ? 0.24 : 0.12,\n ),\n borderColor: alpha(\n statusColorMap[status] ?? theme.palette.text.primary,\n theme.palette.mode === \"dark\" ? 0.36 : 0.28,\n ),\n \"& .MuiChip-label\": {\n px: 1.25,\n },\n }}\n />\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 { alpha, useTheme } from \"@mui/material/styles\";\nimport { Clear } from \"@mui/icons-material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { GenericPayload } from \"@verma-consulting/common-library\";\n\nconst useStyles = makeStyles((theme) => ({\n defaultMode: {\n margin: \"4px\",\n padding: \"14px 8px\",\n cursor: \"pointer\",\n borderRadius: 8,\n border: `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.16 : 0.55)}`,\n backdropFilter: \"blur(14px) saturate(150%)\",\n background:\n theme.palette.mode === \"dark\"\n ? \"linear-gradient(160deg, rgba(31,41,55,0.78), rgba(17,24,39,0.68))\"\n : \"linear-gradient(160deg, rgba(255,255,255,0.9), rgba(245,249,255,0.72))\",\n \"&:hover\": {\n boxShadow:\n theme.palette.mode === \"dark\"\n ? \"rgba(0, 0, 0, 0.34) 0px 10px 26px\"\n : \"rgba(15, 23, 42, 0.16) 0px 8px 24px\",\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 /** If `null` or omitted, the clear control is not shown. Pass a handler to enable clear. */\n onClear?: (() => void) | null;\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 = null,\n defaultEditMode = false,\n multiple = false,\n }) => {\n const theme = useTheme();\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 const glassBackground =\n theme.palette.mode === \"dark\"\n ? \"linear-gradient(160deg, rgba(31,41,55,0.78), rgba(17,24,39,0.68))\"\n : \"linear-gradient(160deg, rgba(255,255,255,0.9), rgba(245,249,255,0.72))\";\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 }\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 const showClear = onClear != null;\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\n autoHighlight\n getOptionLabel={(option) => option.label}\n isOptionEqualToValue={(option, val) => option.value === val.value}\n sx={{\n \"& .MuiAutocomplete-inputRoot\": {\n background: glassBackground,\n color: \"text.primary\",\n },\n \"& .MuiAutocomplete-inputRoot.Mui-focused\": {\n background: glassBackground,\n color: \"text.primary\",\n },\n \"& .MuiAutocomplete-inputRoot:hover\": {\n background: glassBackground,\n },\n \"& .MuiAutocomplete-input\": {\n color: \"text.primary\",\n WebkitTextFillColor: \"currentColor\",\n },\n \"& .MuiInputLabel-root\": {\n color: \"text.secondary\",\n },\n \"& .MuiInputLabel-root.Mui-focused\": {\n color: \"text.primary\",\n },\n \"& .MuiSvgIcon-root\": {\n color: \"text.secondary\",\n },\n }}\n slotProps={{\n paper: {\n sx: {\n background: glassBackground,\n backdropFilter: \"blur(12px) saturate(150%)\",\n border: `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.16 : 0.55)}`,\n boxShadow:\n theme.palette.mode === \"dark\"\n ? \"rgba(0, 0, 0, 0.34) 0px 10px 26px\"\n : \"rgba(15, 23, 42, 0.16) 0px 8px 24px\",\n \"& .MuiAutocomplete-option\": {\n \"&[aria-selected='true']\": {\n backgroundColor: alpha(\n theme.palette.primary.main,\n theme.palette.mode === \"dark\" ? 0.28 : 0.14,\n ),\n },\n \"&.Mui-focused\": {\n backgroundColor: alpha(\n theme.palette.primary.main,\n theme.palette.mode === \"dark\" ? 0.2 : 0.1,\n ),\n },\n },\n },\n },\n }}\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 sx: {\n borderRadius: 2,\n backdropFilter: \"blur(10px)\",\n pr: 1.5,\n background: glassBackground,\n color: \"text.primary\",\n \"&.Mui-focused\": {\n background: glassBackground,\n },\n \"&:hover\": {\n background: glassBackground,\n },\n \"& .MuiInputBase-input\": {\n color: \"text.primary\",\n WebkitTextFillColor: \"currentColor\",\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: alpha(\n \"#FFFFFF\",\n theme.palette.mode === \"dark\" ? 0.18 : 0.6,\n ),\n },\n },\n endAdornment: (\n <>\n {showClear && !isValueEmpty && (\n <IconButton\n aria-label={`clear ${name}`}\n onClick={handleClear}\n size=\"small\"\n sx={{\n backgroundColor: \"transparent\",\n boxShadow: \"none\",\n mr: 0.25,\n }}\n >\n <Clear fontSize=\"inherit\" />\n </IconButton>\n )}\n {params.InputProps.endAdornment}\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\n className={classes.formLabel}\n sx={{ color: \"text.secondary\" }}\n >\n {label}\n </FormLabel>\n <Typography\n className={classes.formValue}\n sx={{ color: \"text.primary\" }}\n >\n {displayValue}\n </Typography>\n </div>\n );\n },\n);\n\nexport default SearchableSelect;\n","import * as React from \"react\";\nimport {\n Drawer,\n Typography,\n Box,\n IconButton,\n Grid,\n useTheme,\n useMediaQuery,\n type DrawerProps,\n} from \"@mui/material\";\nimport { alpha, type Theme } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\nexport type FormDrawerProps = Omit<\n DrawerProps,\n \"open\" | \"onClose\" | \"children\"\n> & {\n open: boolean;\n setOpen:\n | React.Dispatch<React.SetStateAction<boolean>>\n | ((open: boolean) => void);\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 BackdropProps,\n sx,\n ...props\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n const close = () => setOpen(false);\n\n const defaultBackdropSx = {\n backgroundColor: (t: Theme) =>\n alpha(t.palette.common.black, t.palette.mode === \"dark\" ? 0.52 : 0.28),\n backdropFilter: \"saturate(150%) blur(10px)\",\n WebkitBackdropFilter: \"saturate(150%) blur(10px)\",\n };\n\n const bp = BackdropProps ?? {};\n const mergedBackdrop = {\n ...bp,\n sx: Array.isArray(bp.sx)\n ? [defaultBackdropSx, ...bp.sx]\n : [defaultBackdropSx, bp.sx].filter(Boolean),\n };\n\n return (\n <Drawer\n {...props}\n anchor={mdMatches ? \"bottom\" : \"right\"}\n open={open}\n onClose={close}\n BackdropProps={mergedBackdrop}\n sx={[\n {\n \"& .MuiDrawer-paper\": {\n width: mdMatches ? \"100%\" : \"78%\",\n maxWidth: \"100%\",\n height: mdMatches ? \"100%\" : \"100%\",\n maxHeight: mdMatches ? \"100%\" : \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: mdMatches ? 0 : \"24px 0 0 24px\",\n overflow: \"hidden\",\n bgcolor: \"background.paper\",\n },\n },\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\n ]}\n >\n <Box\n sx={{\n position: \"relative\",\n flexShrink: 0,\n p: 3,\n bgcolor: \"background.paper\",\n }}\n >\n <Grid container>\n <Grid item>\n {title ? (\n <Typography variant=\"h6\" fontWeight=\"bold\" component=\"div\">\n {title}\n </Typography>\n ) : null}\n </Grid>\n <Grid item>\n <IconButton\n size=\"medium\"\n onClick={close}\n sx={{\n position: \"absolute\",\n top: 8,\n right: 8,\n zIndex: 2,\n bgcolor: \"background.paper\",\n boxShadow: 1,\n }}\n aria-label=\"Close\"\n >\n <Close fontSize=\"inherit\" />\n </IconButton>\n </Grid>\n </Grid>\n </Box>\n <Box\n sx={{\n flex: 1,\n minHeight: 0,\n overflow: \"auto\",\n p: 3,\n bgcolor: \"background.paper\",\n }}\n >\n {children}\n </Box>\n {actions != null ? (\n <Box\n sx={{\n flexShrink: 0,\n p: 2,\n borderTop: (t) => `1px solid ${alpha(t.palette.divider, 0.36)}`,\n bgcolor: \"background.paper\",\n }}\n >\n {actions}\n </Box>\n ) : null}\n </Drawer>\n );\n};\n\nexport default FormDrawer;\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n} from \"react\";\nimport {\n Autocomplete,\n Box,\n Stack,\n TextField,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { createFilterOptions } from \"@mui/material/Autocomplete\";\nimport { alpha } from \"@mui/material/styles\";\nimport { constants } from \"@verma-consulting/common-library\";\n\nconst EXT_MAX_LEN = 20;\n\nconst filterCountryOptions = createFilterOptions({\n stringify: (option: { label: string; code: string; phone: string }) =>\n `${option.label} ${option.code} ${option.phone}`,\n});\n\n/** Strips ;ext= / ext. from main string; returns main without ext metadata and ext digits. */\nfunction extractExtensionFromMain(main: string): {\n main: string;\n extFromMeta: string;\n} {\n let m = main.trim();\n let extFromMeta = \"\";\n const semi = m.match(/;ext=(\\d+)/i);\n if (semi) {\n extFromMeta = semi[1];\n m = m.replace(/;ext=\\d+/gi, \"\");\n }\n const extWord = m.match(/\\bext\\.?\\s*(\\d+)/i);\n if (extWord) {\n extFromMeta = extFromMeta || extWord[1];\n m = m.replace(/\\bext\\.?\\s*\\d+/i, \"\");\n }\n return { main: m, extFromMeta };\n}\n\ninterface ParsedPhone {\n dial: string;\n local: string;\n extension: string;\n}\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 error?: boolean;\n helperText?: React.ReactNode;\n onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void;\n}\n\nfunction parsePhoneValue(\n raw: string,\n countries: any[],\n defaultCountry: string,\n): ParsedPhone {\n const s = String(raw ?? \"\").trim();\n if (!s) return { dial: \"\", local: \"\", extension: \"\" };\n\n const defaultDial =\n countries.find((c: any) => c.code === defaultCountry)?.phone ?? \"1\";\n\n let ext = \"\";\n let mainPart = s;\n\n const xSplit = s.split(/\\s*[xX]\\s*/);\n if (xSplit.length > 1) {\n mainPart = xSplit[0] ?? \"\";\n ext = xSplit.slice(1).join(\"\").replace(/\\D/g, \"\").slice(0, EXT_MAX_LEN);\n }\n\n const meta = extractExtensionFromMain(mainPart);\n mainPart = meta.main;\n if (meta.extFromMeta) {\n ext = (ext || meta.extFromMeta).replace(/\\D/g, \"\").slice(0, EXT_MAX_LEN);\n }\n\n const digitsOnly = mainPart.replace(/\\D/g, \"\");\n if (!digitsOnly) return { dial: \"\", local: \"\", extension: ext };\n\n const sorted = [...countries].sort((a, b) => b.phone.length - a.phone.length);\n\n if (mainPart.trim().startsWith(\"+\")) {\n const found = sorted.find((c) => digitsOnly.startsWith(c.phone));\n if (found) {\n const rest = digitsOnly.slice(found.phone.length);\n const local = found.phone === \"1\" ? rest.slice(-10) : rest.slice(-10);\n return {\n dial: found.phone,\n local,\n extension: ext,\n };\n }\n }\n\n const foundDefault = countries.find((c: any) => c.code === defaultCountry);\n const dial = foundDefault?.phone ?? defaultDial;\n\n if (dial === \"1\") {\n if (digitsOnly.length === 11 && digitsOnly.startsWith(\"1\")) {\n return {\n dial: \"1\",\n local: digitsOnly.slice(1, 11),\n extension: ext,\n };\n }\n if (digitsOnly.length <= 10) {\n return {\n dial: \"1\",\n local: digitsOnly.slice(-10),\n extension: ext,\n };\n }\n if (digitsOnly.length > 10) {\n return {\n dial: \"1\",\n local: digitsOnly.slice(-10),\n extension: ext,\n };\n }\n }\n\n const found = sorted.find((c) => digitsOnly.startsWith(c.phone));\n if (found) {\n const rest = digitsOnly.slice(found.phone.length);\n return {\n dial: found.phone,\n local: rest.slice(-10),\n extension: ext,\n };\n }\n\n return {\n dial,\n local: digitsOnly.slice(-10),\n extension: ext,\n };\n}\n\nfunction buildStoredValue(\n dial: string,\n local: string,\n extension: string,\n): string {\n if (!dial || !local) return \"\";\n const core = `+${dial}${local}`;\n if (extension) return `${core}x${extension}`;\n return core;\n}\n\n/**\n * US/Canada NANP — national digits only, 3-3-4 with dashes (no parentheses:\n * parens make backspace fight the formatter).\n */\nfunction formatNanpNational(digits: string): string {\n const d = digits.replace(/\\D/g, \"\").slice(0, 10);\n if (!d.length) return \"\";\n if (d.length <= 3) return d;\n if (d.length <= 6) return `${d.slice(0, 3)}-${d.slice(3)}`;\n return `${d.slice(0, 3)}-${d.slice(3, 6)}-${d.slice(6, 10)}`;\n}\n\n/** Non-US: show national digits only; light spacing (country dial is in the select). */\nfunction formatOtherNational(local: string): string {\n const d = local.replace(/\\D/g, \"\").slice(0, 15);\n if (!d.length) return \"\";\n return d.replace(/(\\d{3,4})(?=\\d)/g, \"$1 \").trim();\n}\n\nfunction formatLineDisplay(\n dial: string,\n localNumber: string,\n extension: string,\n): string {\n if (!localNumber && !extension) return \"\";\n const main =\n dial === \"1\"\n ? formatNanpNational(localNumber)\n : formatOtherNational(localNumber);\n if (!extension) return main;\n if (!main) return `x${extension}`;\n return `${main} x${extension}`;\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 error = false,\n helperText,\n onKeyDown,\n}) => {\n const theme = useTheme();\n const smMatches = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const countries = (constants.COUNTRIES || []) as any[];\n const glassInputSx = {\n backdropFilter: \"blur(10px) saturate(150%)\",\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: alpha(\n \"#FFFFFF\",\n theme.palette.mode === \"dark\" ? 0.16 : 0.58,\n ),\n },\n };\n\n const [country, setCountry] = useState(defaultCountry);\n const [localNumber, setLocalNumber] = useState(\"\");\n const [extension, setExtension] = useState(\"\");\n const [isFocused, setIsFocused] = useState(false);\n const [selectOpen, setSelectOpen] = useState(false);\n const [ignoreNextOutsideClick, setIgnoreNextOutsideClick] = useState(false);\n /** True when input has \"x\" / \"X\" but no extension digits yet (so we show a trailing x). */\n const [bareExtensionX, setBareExtensionX] = useState(false);\n\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const applyParsedFromValue = useCallback(\n (val: string) => {\n setBareExtensionX(false);\n const parsed = parsePhoneValue(val, countries, defaultCountry);\n if (parsed.dial) {\n const found = countries.find((c: any) => c.phone === parsed.dial);\n if (found) setCountry(found.code);\n }\n setLocalNumber(parsed.local);\n setExtension(parsed.extension);\n },\n [countries, defaultCountry],\n );\n\n useEffect(() => {\n if (isFocused) return;\n if (!value) {\n setLocalNumber(\"\");\n setExtension(\"\");\n setBareExtensionX(false);\n return;\n }\n applyParsedFromValue(String(value));\n }, [value, isFocused, applyParsedFromValue]);\n\n const commitValue = useCallback(() => {\n const sel = countries.find((c: any) => c.code === country);\n const dial = sel?.phone ?? \"\";\n onChange(buildStoredValue(dial, localNumber, extension));\n }, [countries, country, localNumber, extension, onChange]);\n\n const handleLocalChange = (e: ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value;\n const parts = raw.split(/\\s*[xX]\\s*/);\n const mainRaw = parts[0] ?? \"\";\n const extDigits = parts\n .slice(1)\n .join(\"\")\n .replace(/\\D/g, \"\")\n .slice(0, EXT_MAX_LEN);\n\n const sel = countries.find((c: any) => c.code === country);\n const dial = sel?.phone ?? \"1\";\n const maxLocal = dial === \"1\" ? 10 : 15;\n\n let mainDigits = mainRaw.replace(/\\D/g, \"\");\n if (dial === \"1\") {\n if (mainDigits.length === 11 && mainDigits.startsWith(\"1\")) {\n mainDigits = mainDigits.slice(1);\n }\n mainDigits = mainDigits.slice(0, 10);\n } else {\n mainDigits = mainDigits.slice(0, maxLocal);\n }\n setLocalNumber(mainDigits);\n setExtension(extDigits);\n setBareExtensionX(/[xX]/.test(raw) && extDigits.length === 0);\n };\n\n const dialForDisplay =\n countries.find((c: any) => c.code === country)?.phone ?? \"\";\n const displayLocal =\n formatLineDisplay(dialForDisplay, localNumber, extension) +\n (bareExtensionX ? (localNumber ? \" x\" : \"x\") : \"\");\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 const selectedCountry = countries.find((c: any) => c.code === country);\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 <Autocomplete\n disabled={disabled}\n options={countries}\n value={selectedCountry ?? null}\n onChange={(_, newValue) => {\n if (newValue) setCountry(newValue.code);\n }}\n getOptionLabel={(option) => `(+${option.phone})`}\n filterOptions={filterCountryOptions}\n isOptionEqualToValue={(a, b) => a.code === b.code}\n disableClearable\n size={size}\n onOpen={() => {\n setSelectOpen(true);\n setIgnoreNextOutsideClick(true);\n }}\n onClose={() => setSelectOpen(false)}\n sx={{\n width: smMatches ? 56 : 96,\n minWidth: smMatches ? 56 : 96,\n maxWidth: smMatches ? 56 : 96,\n flexShrink: 0,\n \"& .MuiOutlinedInput-root\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n ...glassInputSx,\n },\n \"& .MuiInputBase-input\": {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n }}\n renderOption={(props, option) => (\n <Box component=\"li\" {...props} key={option.code}>\n <Box\n component=\"img\"\n loading=\"lazy\"\n width={20}\n alt=\"\"\n src={`https://flagcdn.com/w20/${option.code.toLowerCase()}.png`}\n srcSet={`https://flagcdn.com/w40/${option.code.toLowerCase()}.png 2x`}\n sx={{ mr: 1, flexShrink: 0 }}\n />\n {option.code} (+{option.phone})\n </Box>\n )}\n renderInput={(params) => (\n <TextField\n {...params}\n variant=\"outlined\"\n size={size}\n inputProps={{\n ...params.inputProps,\n autoComplete: \"tel-country\",\n }}\n />\n )}\n />\n <TextField\n label={label}\n value={displayLocal}\n onChange={handleLocalChange}\n placeholder=\"415-555-0100 x123\"\n error={error}\n helperText={helperText}\n onKeyDown={onKeyDown}\n inputProps={{\n inputMode: \"text\",\n autoComplete: \"tel-national\",\n \"aria-label\": label,\n }}\n disabled={disabled}\n size={size}\n autoFocus={autoFocus}\n fullWidth\n sx={{\n \"& .MuiOutlinedInput-root\": {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n ...glassInputSx,\n },\n }}\n />\n </Stack>\n </Box>\n );\n};\n\nexport default PhoneNumberField;\n","import React, { useEffect, useState } from \"react\";\nimport {\n Autocomplete,\n Box,\n TextField,\n Typography,\n FormLabel,\n} from \"@mui/material\";\nimport { alpha, Theme, useTheme, type SxProps } from \"@mui/material/styles\";\nimport { makeStyles } from \"@mui/styles\";\nimport { constants } from \"@verma-consulting/common-library\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n defaultMode: {\n margin: \"4px\",\n paddingTop: 14,\n paddingBottom: 14,\n paddingLeft: 8,\n paddingRight: 8,\n cursor: \"pointer\",\n borderRadius: 8,\n border: `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.16 : 0.55)}`,\n backdropFilter: \"blur(14px) saturate(150%)\",\n background:\n theme.palette.mode === \"dark\"\n ? \"linear-gradient(160deg, rgba(31,41,55,0.78), rgba(17,24,39,0.68))\"\n : \"linear-gradient(160deg, rgba(255,255,255,0.9), rgba(245,249,255,0.72))\",\n \"&:hover\": {\n boxShadow:\n theme.palette.mode === \"dark\"\n ? \"rgba(0, 0, 0, 0.34) 0px 10px 26px\"\n : \"rgba(15, 23, 42, 0.16) 0px 8px 24px\",\n },\n },\n formLabel: {\n cursor: \"pointer\",\n },\n formValue: {\n cursor: \"pointer\",\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n },\n}));\n\nexport interface CountryType {\n code: string;\n label: string;\n phone: string;\n suggested?: boolean;\n}\n\ninterface CountrySelectProps {\n value: string;\n onChange: (newValue: CountryType | null) => void;\n label?: string;\n size?: \"small\" | \"medium\";\n disabled?: boolean;\n /** Applied to the view wrapper and the edit-mode `Autocomplete` root. */\n sx?: SxProps<Theme>;\n}\n\nconst COUNTRIES: CountryType[] =\n constants.COUNTRIES as unknown as CountryType[];\n\nexport const CountrySelect: React.FC<CountrySelectProps> = ({\n value,\n onChange,\n label = \"Country\",\n size = \"small\",\n disabled = false,\n sx,\n}) => {\n const theme = useTheme();\n const classes = useStyles();\n const [editMode, setEditMode] = useState(false);\n const [listOpen, setListOpen] = useState(false);\n const glassBackground =\n theme.palette.mode === \"dark\"\n ? \"linear-gradient(160deg, rgba(31,41,55,0.78), rgba(17,24,39,0.68))\"\n : \"linear-gradient(160deg, rgba(255,255,255,0.9), rgba(245,249,255,0.72))\";\n\n const handleBlur = () => {\n setTimeout(() => setEditMode(false), 15);\n };\n\n useEffect(() => {\n if (!editMode) setListOpen(false);\n }, [editMode]);\n\n const selectedOption = COUNTRIES.find((country) => country.code === value);\n\n if (!editMode) {\n return (\n <Box\n component=\"div\"\n onClick={() => {\n if (!disabled) {\n setEditMode(true);\n setListOpen(true);\n }\n }}\n className={classes.defaultMode}\n sx={sx}\n >\n <FormLabel className={classes.formLabel}>{label}</FormLabel>\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 1,\n mt: 0.25,\n }}\n >\n {selectedOption ? (\n <Box\n component=\"img\"\n loading=\"lazy\"\n width={20}\n alt=\"\"\n src={`https://flagcdn.com/w20/${selectedOption.code.toLowerCase()}.png`}\n srcSet={`https://flagcdn.com/w40/${selectedOption.code.toLowerCase()}.png 2x`}\n sx={{ flexShrink: 0 }}\n />\n ) : null}\n <Typography className={classes.formValue} component=\"span\">\n {selectedOption?.label || \"–\"}\n </Typography>\n </Box>\n </Box>\n );\n }\n\n return (\n <Autocomplete\n disabled={disabled}\n options={COUNTRIES}\n getOptionLabel={(option) => option.label}\n autoHighlight\n open={listOpen}\n onOpen={() => setListOpen(true)}\n onClose={() => setListOpen(false)}\n openOnFocus\n disableClearable\n value={selectedOption ?? undefined}\n onChange={(_, newValue) => {\n if (newValue == null) return;\n onChange(newValue);\n setListOpen(false);\n setEditMode(false);\n }}\n onBlur={handleBlur}\n sx={sx}\n size={size}\n componentsProps={{\n paper: {\n sx: {\n background: glassBackground,\n backdropFilter: \"blur(12px) saturate(150%)\",\n border: `1px solid ${alpha(\"#FFFFFF\", theme.palette.mode === \"dark\" ? 0.16 : 0.55)}`,\n boxShadow:\n theme.palette.mode === \"dark\"\n ? \"rgba(0, 0, 0, 0.34) 0px 10px 26px\"\n : \"rgba(15, 23, 42, 0.16) 0px 8px 24px\",\n \"& .MuiAutocomplete-option\": {\n \"&[aria-selected='true']\": {\n backgroundColor: alpha(\n theme.palette.primary.main,\n theme.palette.mode === \"dark\" ? 0.28 : 0.14,\n ),\n },\n \"&.Mui-focused\": {\n backgroundColor: alpha(\n theme.palette.primary.main,\n theme.palette.mode === \"dark\" ? 0.2 : 0.1,\n ),\n },\n },\n },\n },\n }}\n renderOption={(props, option) => (\n <Box component=\"li\" {...props} key={option.code}>\n <img\n loading=\"lazy\"\n width=\"20\"\n src={`https://flagcdn.com/w20/${option.code.toLowerCase()}.png`}\n srcSet={`https://flagcdn.com/w40/${option.code.toLowerCase()}.png 2x`}\n alt=\"\"\n style={{ marginRight: 8, flexShrink: 0 }}\n />\n {option.label} ({option.code})\n </Box>\n )}\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n variant=\"outlined\"\n size={size}\n autoFocus\n inputProps={{\n ...params.inputProps,\n autoComplete: \"new-password\",\n }}\n InputProps={{\n ...params.InputProps,\n startAdornment: (\n <>\n {selectedOption ? (\n <Box\n component=\"img\"\n loading=\"lazy\"\n width={20}\n alt=\"\"\n src={`https://flagcdn.com/w20/${selectedOption.code.toLowerCase()}.png`}\n srcSet={`https://flagcdn.com/w40/${selectedOption.code.toLowerCase()}.png 2x`}\n sx={{ mr: 1, flexShrink: 0, alignSelf: \"center\" }}\n />\n ) : null}\n {params.InputProps.startAdornment}\n </>\n ),\n sx: {\n borderRadius: 2,\n backdropFilter: \"blur(10px)\",\n background: glassBackground,\n color: \"text.primary\",\n \"&.Mui-focused\": {\n background: glassBackground,\n },\n \"&:hover\": {\n background: glassBackground,\n },\n \"& .MuiInputBase-input\": {\n color: \"text.primary\",\n WebkitTextFillColor: \"currentColor\",\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: alpha(\n \"#FFFFFF\",\n theme.palette.mode === \"dark\" ? 0.18 : 0.6,\n ),\n },\n },\n }}\n />\n )}\n />\n );\n};\n\nexport default CountrySelect;\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type ClipboardEvent,\n type CSSProperties,\n type KeyboardEvent,\n} from \"react\";\nimport { Box, TextField } from \"@mui/material\";\nimport type { SxProps, Theme } from \"@mui/material/styles\";\n\nexport type OTPFieldProps = {\n length: number;\n initialValue?: string;\n onChange: (value: string, index?: number) => void;\n onComplete?: (value: string, index?: number) => void;\n /** Use password inputs (no brief reveal; React 19–safe replacement for `react-pin-input` `secret`). */\n secret?: boolean;\n autoSelect?: boolean;\n disabled?: boolean;\n /** Applied to the focused cell’s outline (`fieldset`). */\n inputFocusStyle?: CSSProperties;\n /** Applied to the outer `Box` (MUI `sx`). */\n sx?: SxProps<Theme>;\n type?: string;\n inputMode?: React.HTMLAttributes<HTMLInputElement>[\"inputMode\"];\n /** Optional per-character filter (same idea as `react-pin-input` `regexCriteria`). */\n regexCriteria?: RegExp;\n};\n\nfunction toCells(s: string, len: number): string[] {\n const slice = (s || \"\").slice(0, len);\n return Array.from({ length: len }, (_, i) => slice[i] ?? \"\");\n}\n\nconst OTPField: React.FC<OTPFieldProps> = ({\n length,\n initialValue = \"\",\n onChange,\n onComplete,\n secret = false,\n autoSelect = false,\n disabled = false,\n inputFocusStyle,\n sx,\n type = \"text\",\n inputMode = \"text\",\n regexCriteria,\n}) => {\n const [cells, setCells] = useState(() => toCells(initialValue, length));\n const cellsRef = useRef(cells);\n cellsRef.current = cells;\n const refs = useRef<Array<HTMLInputElement | null>>([]);\n\n useEffect(() => {\n setCells(toCells(initialValue, length));\n }, [initialValue, length]);\n\n const emit = useCallback(\n (next: string[], editedIndex?: number) => {\n setCells(next);\n const joined = next.join(\"\");\n onChange(joined, editedIndex);\n if (onComplete && joined.length === length && next.every(Boolean)) {\n onComplete(joined, length - 1);\n }\n },\n [length, onChange, onComplete],\n );\n\n useEffect(() => {\n if (!autoSelect) return;\n const id = requestAnimationFrame(() => refs.current[0]?.focus());\n return () => cancelAnimationFrame(id);\n }, [autoSelect, length]);\n\n const charAllowed = useCallback(\n (ch: string) => {\n if (!ch) return true;\n if (type === \"numeric\" && /\\D/.test(ch)) return false;\n if (regexCriteria && !regexCriteria.test(ch)) return false;\n return true;\n },\n [regexCriteria, type],\n );\n\n const applyMany = useCallback(\n (startIdx: number, raw: string) => {\n const incoming = (\n type === \"numeric\" ? raw.replace(/\\D/g, \"\") : raw\n ).split(\"\");\n const next = [...cellsRef.current];\n let i = startIdx;\n for (const ch of incoming) {\n if (i >= length) break;\n if (!charAllowed(ch)) return;\n next[i] = ch;\n i += 1;\n }\n const focusAt = Math.min(Math.max(i - 1, 0), length - 1);\n emit(next, focusAt);\n refs.current[focusAt]?.focus();\n },\n [charAllowed, emit, length, type],\n );\n\n const onFieldChange = (\n idx: number,\n e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,\n ) => {\n const raw = e.target.value;\n if (raw.length > 1) {\n applyMany(idx, raw);\n return;\n }\n if (raw && !charAllowed(raw)) return;\n const next = [...cellsRef.current];\n next[idx] = raw;\n emit(next, idx);\n if (raw && idx < length - 1) {\n refs.current[idx + 1]?.focus();\n }\n };\n\n const onKeyDown = (idx: number, e: KeyboardEvent) => {\n if (e.key === \"Backspace\") {\n const next = [...cellsRef.current];\n if (next[idx]) {\n next[idx] = \"\";\n emit(next, idx);\n } else if (idx > 0) {\n next[idx - 1] = \"\";\n emit(next, idx - 1);\n refs.current[idx - 1]?.focus();\n }\n e.preventDefault();\n } else if (e.key === \"ArrowLeft\" && idx > 0) {\n refs.current[idx - 1]?.focus();\n e.preventDefault();\n } else if (e.key === \"ArrowRight\" && idx < length - 1) {\n refs.current[idx + 1]?.focus();\n e.preventDefault();\n }\n };\n\n const onPasteFirst = (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const text = e.clipboardData.getData(\"text\").replace(/\\s/g, \"\");\n if (!text) return;\n applyMany(0, text);\n };\n\n const inputType = secret ? \"password\" : type === \"numeric\" ? \"tel\" : \"text\";\n\n return (\n <Box\n sx={[\n {\n display: \"flex\",\n gap: 1,\n flexWrap: \"nowrap\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n ...(sx == null ? [] : Array.isArray(sx) ? sx : [sx]),\n ]}\n >\n {Array.from({ length }).map((_, idx) => (\n <TextField\n key={idx}\n inputRef={(el: HTMLInputElement | null) => {\n refs.current[idx] = el;\n }}\n value={cells[idx]}\n onChange={(e) => onFieldChange(idx, e)}\n onKeyDown={(e) => onKeyDown(idx, e)}\n onPaste={idx === 0 ? onPasteFirst : undefined}\n disabled={disabled}\n size=\"small\"\n type={inputType}\n sx={{\n width: 44,\n \"& .MuiOutlinedInput-input\": {\n textAlign: \"center\",\n py: 1,\n px: 0.5,\n },\n ...(inputFocusStyle\n ? {\n \"& .MuiOutlinedInput-root.Mui-focused fieldset\": inputFocusStyle,\n }\n : {}),\n }}\n inputProps={{\n maxLength: 1,\n inputMode: inputMode ?? undefined,\n \"aria-label\": `Code character ${idx + 1} of ${length}`,\n autoComplete: \"one-time-code\",\n }}\n />\n ))}\n </Box>\n );\n};\n\nexport default OTPField;\n"],"mappings":"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","names":["jsx","TablePagination","_a","useTheme","styled","makeStyles","Box","jsx","_a","alpha","useTheme","useMediaQuery","jsx","jsxs","alpha","styled","useTheme","Box","Typography","alpha","jsx","jsxs","styled","useTheme","Box","alpha","Typography","Box","IconButton","alpha","styled","CloudUpload","jsx","jsxs","styled","Box","alpha","IconButton","_a","CloudUpload","useEffect","useRef","useState","IconButton","alpha","useTheme","CloseIcon","jsx","_a","severity","alpha","jsx","Box","useTheme","jsx","_a","React","Box","Typography","useTheme","jsx","jsxs","Typography","alpha","useTheme","jsx","jsxs","useTheme","alpha","Typography","alpha","styled","jsx","alpha","useTheme","jsx","_a","useTheme","alpha","useState","Tooltip","IconButton","jsx","jsxs","React","useEffect","useRef","useState","Typography","IconButton","alpha","useTheme","makeStyles","Fragment","jsx","jsxs","useStyles","_a","Typography","Box","IconButton","Grid","useTheme","useMediaQuery","alpha","Close","jsx","jsxs","defaultBackdropSx","useEffect","useRef","useState","Autocomplete","Box","TextField","useTheme","useMediaQuery","alpha","constants","jsx","jsxs","_a","found","_b","useEffect","useState","Autocomplete","Box","TextField","Typography","FormLabel","alpha","useTheme","makeStyles","constants","Fragment","jsx","jsxs","createElement","useStyles","useCallback","useEffect","useRef","useState","Box","TextField","jsx","_a"]}
|