@verma-consulting/design-library 0.1.38 → 0.1.39

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.d.mts CHANGED
@@ -162,7 +162,8 @@ interface SearchableSelectProps {
162
162
  size?: "small" | "medium";
163
163
  style?: React__default.CSSProperties;
164
164
  disabled?: boolean;
165
- onClear?: () => void;
165
+ /** If `null` or omitted, the clear control is not shown. Pass a handler to enable clear. */
166
+ onClear?: (() => void) | null;
166
167
  defaultEditMode?: boolean;
167
168
  multiple?: boolean;
168
169
  }
package/dist/index.d.ts CHANGED
@@ -162,7 +162,8 @@ interface SearchableSelectProps {
162
162
  size?: "small" | "medium";
163
163
  style?: React__default.CSSProperties;
164
164
  disabled?: boolean;
165
- onClear?: () => void;
165
+ /** If `null` or omitted, the clear control is not shown. Pass a handler to enable clear. */
166
+ onClear?: (() => void) | null;
166
167
  defaultEditMode?: boolean;
167
168
  multiple?: boolean;
168
169
  }
package/dist/index.js CHANGED
@@ -1214,7 +1214,7 @@ var SearchableSelect = import_react6.default.memo(
1214
1214
  size = "small",
1215
1215
  style,
1216
1216
  disabled = false,
1217
- onClear,
1217
+ onClear = null,
1218
1218
  defaultEditMode = false,
1219
1219
  multiple = false
1220
1220
  }) => {
@@ -1248,8 +1248,6 @@ var SearchableSelect = import_react6.default.memo(
1248
1248
  event.stopPropagation();
1249
1249
  if (onClear) {
1250
1250
  onClear();
1251
- } else {
1252
- onChange("");
1253
1251
  }
1254
1252
  setEditMode(false);
1255
1253
  setOpen(false);
@@ -1274,6 +1272,7 @@ var SearchableSelect = import_react6.default.memo(
1274
1272
  }
1275
1273
  }, [selected, multiple]);
1276
1274
  const isValueEmpty = !value.trim();
1275
+ const showClear = onClear != null;
1277
1276
  return editMode ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_material13.FormControl, { fullWidth: true, style, disabled, size, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1278
1277
  import_material13.Autocomplete,
1279
1278
  {
@@ -1388,7 +1387,7 @@ var SearchableSelect = import_react6.default.memo(
1388
1387
  }
1389
1388
  },
1390
1389
  endAdornment: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
1391
- !isValueEmpty && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1390
+ showClear && !isValueEmpty && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1392
1391
  import_material13.IconButton,
1393
1392
  {
1394
1393
  "aria-label": `clear ${name}`,
package/dist/index.js.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"],"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\";\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","// @ts-nocheck\nimport * as React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport {\n useTheme,\n useMediaQuery,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n} from \"@mui/material\";\nexport { useTheme } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\n \"& .MuiDialog-paper\": {\n borderRadius: \"24px\",\n },\n \"& .MuiDialogContent-root\": {\n padding: theme.spacing(4),\n },\n \"& .MuiDialogActions-root\": {\n padding: theme.spacing(4),\n },\n}));\n\nexport interface DialogTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: () => void;\n}\n\nconst BootstrapDialogTitle = (props: DialogTitleProps) => {\n const { children, onClose, ...other } = props;\n\n return (\n <DialogTitle\n sx={{\n px: 3,\n py: 3,\n pt: 3.5,\n pb: 2.5,\n fontSize: \"1.25rem\",\n fontWeight: 600,\n letterSpacing: \"0.02em\",\n lineHeight: 1.35,\n color: \"primary.main\",\n }}\n {...other}\n >\n {children}\n {onClose ? (\n <IconButton\n onClick={onClose}\n sx={{\n position: \"absolute\",\n right: 16,\n top: 16,\n }}\n >\n <Close color=\"primary\" />\n </IconButton>\n ) : null}\n </DialogTitle>\n );\n};\n\nconst FormDialog = ({\n open = false,\n setOpen,\n title = \"\",\n actions,\n children,\n maxWidth = \"lg\",\n ...props\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n return (\n <BootstrapDialog\n fullWidth\n onClose={() => setOpen(false)}\n open={open}\n maxWidth={maxWidth}\n fullScreen={mdMatches}\n >\n <BootstrapDialogTitle onClose={() => setOpen(false)}>\n {title}\n </BootstrapDialogTitle>\n <DialogContent dividers>{children}</DialogContent>\n <DialogActions>{actions}</DialogActions>\n </BootstrapDialog>\n );\n};\n\nexport default FormDialog;\n","// @ts-nocheck\nimport React from \"react\";\nimport { alpha, styled } from \"@mui/material/styles\";\nimport { Button } from \"@mui/material\";\nimport { CloudUpload } from \"@mui/icons-material\";\nimport { 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\nconst InputFileUpload = ({ name = \"\", onChange = () => null, title = \"\" }) => (\n <Button\n role={undefined}\n component=\"label\"\n size=\"small\"\n variant=\"contained\"\n tabIndex={-1}\n startIcon={<CloudUpload fontSize=\"inherit\" />}\n sx={{\n ...(theme) => glassSurface(theme),\n textTransform: \"none\",\n borderRadius: 999,\n px: 2.25,\n py: 0.75,\n color: \"text.primary\",\n borderColor: (theme) => alpha(theme.palette.primary.main, 0.24),\n \"&:hover\": {\n borderColor: (theme) => alpha(theme.palette.primary.main, 0.42),\n },\n }}\n >\n {title}\n <VisuallyHiddenInput type=\"file\" name={name} onChange={onChange} />\n </Button>\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\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 = \"image/*\",\n disabled,\n allowClear = true,\n}) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [internalSrc, setInternalSrc] = useState<string | null>(defaultValue ?? null);\n const [hover, setHover] = useState(false);\n\n useEffect(() => {\n if (!defaultValue) return;\n if (!internalSrc || !internalSrc.startsWith(\"blob:\")) {\n setInternalSrc(defaultValue);\n }\n }, [defaultValue]);\n\n useEffect(() => {\n return () => {\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n };\n }, [internalSrc]);\n\n const handlePick = (e: ChangeEvent<HTMLInputElement>) => {\n const selected = e.target.files?.[0] ?? null;\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n let preview: string | null = null;\n if (selected) {\n preview = URL.createObjectURL(selected);\n setInternalSrc(preview);\n } else {\n setInternalSrc(null);\n }\n if (inputRef.current) inputRef.current.value = \"\";\n onChange?.(selected, preview);\n };\n\n const triggerPick = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n setInternalSrc(null);\n onChange?.(null, null);\n };\n\n return (\n <Wrapper\n role=\"button\"\n size={size}\n variant={variant}\n onPointerEnter={() => setHover(true)}\n onPointerLeave={() => setHover(false)}\n onClick={triggerPick}\n >\n {internalSrc && <PreviewImg src={internalSrc} />}\n <Overlay className={`${!internalSrc ? \"empty\" : \"\"} ${hover && !disabled ? \"hover\" : \"\"}`}>\n <CloudUpload className=\"uploadIcon\" fontSize=\"large\" />\n </Overlay>\n\n {allowClear && internalSrc && !disabled && (\n <ClearButton size=\"small\" aria-label=\"Clear image\" onClick={handleClear} sx={{ m: 1 }}>\n <CloseIcon fontSize=\"inherit\" />\n </ClearButton>\n )}\n\n <HiddenInput ref={inputRef} type=\"file\" name={name} accept={accept} onChange={handlePick} disabled={disabled} />\n </Wrapper>\n );\n};\n\nexport default ImageUploadAvatar;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport {\n Alert,\n Grow,\n IconButton,\n type AlertProps,\n} 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 =\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"\";\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 );\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: 3,\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: \"999px\",\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: 30 / 2,\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: \"999px\",\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: 14,\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 onClear?: () => void;\n defaultEditMode?: boolean;\n multiple?: boolean;\n}\n\nconst SearchableSelect: React.FC<SearchableSelectProps> = React.memo(\n ({\n name,\n label,\n value,\n onChange,\n options,\n size = \"small\",\n style,\n disabled = false,\n onClear,\n defaultEditMode = false,\n multiple = false,\n }) => {\n const 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 } else {\n onChange(\"\");\n }\n setEditMode(false);\n setOpen(false);\n };\n\n const selected = useMemo(() => {\n if (multiple) {\n if (!value.trim()) return [];\n const selectedValues = value.split(\", \").map((v) => v.trim());\n return options.filter((opt) => selectedValues.includes(opt.value));\n } else {\n return options.find((opt) => opt.value === value) ?? null;\n }\n }, [value, options, multiple]);\n\n const displayValue = useMemo(() => {\n if (multiple) {\n if (!Array.isArray(selected)) return \"\";\n return selected.map((opt) => opt.label).join(\", \");\n } else {\n return (selected as GenericPayload | null)?.label ?? \"\";\n }\n }, [selected, multiple]);\n\n const isValueEmpty = !value.trim();\n\n return editMode ? (\n <FormControl fullWidth style={style} disabled={disabled} size={size}>\n <Autocomplete\n multiple={multiple}\n disableCloseOnSelect={multiple}\n options={options}\n value={selected}\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n onChange={(_, newValue) => {\n if (multiple) {\n if (Array.isArray(newValue)) {\n let vals = newValue?.map((opt) => opt?.value);\n let val = vals?.join(\", \");\n onChange(val);\n } else {\n onChange(\"\");\n }\n setOpen(true);\n } else {\n onChange((newValue as GenericPayload | null)?.value ?? \"\");\n setOpen(false);\n }\n }}\n disableClearable\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: 1.75,\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 {!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 className={classes.formLabel} sx={{ color: \"text.secondary\" }}>\n {label}\n </FormLabel>\n <Typography className={classes.formValue} sx={{ color: \"text.primary\" }}>\n {displayValue}\n </Typography>\n </div>\n );\n },\n);\n\nexport default SearchableSelect;\n","import {\n Drawer,\n Typography,\n Box,\n IconButton,\n Grid,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface FormDrawerProps {\n open: boolean;\n setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n title?: string | null;\n actions?: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst FormDrawer: React.FC<FormDrawerProps> = ({\n open,\n setOpen,\n title,\n actions,\n children,\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n return (\n <Drawer\n anchor={mdMatches ? \"bottom\" : \"right\"}\n open={open}\n onClose={() => setOpen(false)}\n sx={{\n \"& .MuiDrawer-paper\": {\n width: mdMatches ? \"100%\" : \"64%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: mdMatches ? \"24px 24px 0 0\" : \"24px 0 0 24px\",\n },\n }}\n >\n <Box\n p={3}\n borderBottom={`1px solid ${alpha(theme.palette.divider, 0.36)}`}\n >\n <Grid container>\n <Grid item>\n {title && (\n <Typography variant=\"h6\" fontWeight=\"bold\">\n {title}\n </Typography>\n )}\n </Grid>\n <Grid item>\n <IconButton\n size=\"medium\"\n onClick={() => setOpen(false)}\n sx={{\n position: \"absolute\",\n top: 8,\n right: 8,\n zIndex: 2,\n backgroundColor: alpha(theme.palette.background.paper, 0.46),\n }}\n >\n <Close fontSize=\"inherit\" />\n </IconButton>\n </Grid>\n </Grid>\n </Box>\n <Box flex={1} overflow=\"auto\" p={3}>\n {children}\n </Box>\n\n {actions && (\n <Box\n p={2}\n borderTop={`1px solid ${alpha(theme.palette.divider, 0.36)}`}\n sx={{\n position: \"sticky\",\n bottom: 0,\n zIndex: 1,\n backgroundColor: alpha(theme.palette.background.paper, 0.38),\n backdropFilter: \"blur(10px)\",\n }}\n >\n {actions}\n </Box>\n )}\n </Drawer>\n );\n};\n\nexport default FormDrawer;\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n ChangeEvent,\n FocusEvent,\n} from \"react\";\nimport {\n Box,\n Stack,\n TextField,\n MenuItem,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { constants } from \"@verma-consulting/common-library\";\n\ninterface PhoneNumberFieldProps {\n value?: string | null;\n onChange: (e164: string) => void;\n defaultCountry?: string;\n label?: string;\n size?: \"small\" | \"medium\";\n disabled?: boolean;\n autoFocus?: boolean;\n onBlur?: () => void;\n}\n\nconst PhoneNumberField: React.FC<PhoneNumberFieldProps> = ({\n value = \"\",\n onChange,\n defaultCountry = \"US\",\n label = \"Phone number\",\n size = \"small\",\n disabled = false,\n autoFocus = false,\n onBlur,\n}) => {\n const theme = useTheme();\n const smMatches = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const countries = (constants.COUNTRIES || []) as any;\n 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 [isFocused, setIsFocused] = useState(false);\n const [selectOpen, setSelectOpen] = useState(false);\n const [ignoreNextOutsideClick, setIgnoreNextOutsideClick] = useState(false);\n\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const parseE164 = useCallback(\n (val: string) => {\n const cleaned = (val || \"\").toString().replace(/\\D/g, \"\");\n if (!cleaned) return { dial: \"\", local: \"\" };\n\n const sorted = [...countries].sort(\n (a, b) => b.phone.length - a.phone.length\n );\n const found = sorted.find((c) => cleaned.startsWith(c.phone));\n if (found) {\n const dial = found.phone;\n const local = cleaned.slice(dial.length);\n return { dial, local: local.slice(-10) };\n }\n return { dial: \"\", local: cleaned.slice(-10) };\n },\n [countries]\n );\n\n useEffect(() => {\n if (isFocused) return;\n if (!value) {\n setLocalNumber(\"\");\n return;\n }\n const { dial, local } = parseE164(String(value));\n if (dial) {\n const found = countries.find((c: any) => c.phone === dial);\n if (found) setCountry(found.code);\n }\n setLocalNumber(local);\n }, [value, parseE164, countries, isFocused]);\n\n const formatLocalNumber = (digits: string) => {\n const cleaned = digits.replace(/\\D/g, \"\").slice(0, 10);\n let formatted = \"\";\n if (cleaned.length > 0) formatted += cleaned.slice(0, 3);\n if (cleaned.length > 3) formatted += \"-\" + cleaned.slice(3, 6);\n if (cleaned.length > 6) formatted += \"-\" + cleaned.slice(6, 10);\n return formatted;\n };\n\n const commitValue = useCallback(() => {\n const sel = countries.find((c: any) => c.code === country);\n const dial = sel?.phone ?? \"\";\n if (dial && localNumber) {\n onChange(`+${dial}${localNumber}`);\n } else {\n onChange(\"\");\n }\n }, [countries, country, localNumber, onChange]);\n\n const handleLocalChange = (e: ChangeEvent<HTMLInputElement>) => {\n const digits = e.target.value.replace(/\\D/g, \"\").slice(0, 10);\n setLocalNumber(digits);\n };\n\n const handleCountryChange = (e: ChangeEvent<HTMLInputElement>) => {\n setCountry(e.target.value);\n };\n\n useEffect(() => {\n const onDocMouseDown = (ev: MouseEvent) => {\n if (!wrapperRef.current) return;\n if (wrapperRef.current.contains(ev.target as Node)) return;\n if (ignoreNextOutsideClick) {\n setIgnoreNextOutsideClick(false);\n return;\n }\n if (isFocused && !selectOpen) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n return () => document.removeEventListener(\"mousedown\", onDocMouseDown);\n }, [isFocused, selectOpen, ignoreNextOutsideClick, commitValue, onBlur]);\n\n const handleWrapperBlur = (e: FocusEvent<HTMLDivElement>) => {\n const next = e.relatedTarget as Node | null;\n if (wrapperRef.current && next && wrapperRef.current.contains(next)) return;\n if (selectOpen) return;\n if (isFocused) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n\n return (\n <Box\n ref={wrapperRef}\n onFocusCapture={() => setIsFocused(true)}\n onBlurCapture={handleWrapperBlur}\n sx={{ display: \"flex\", alignItems: \"center\", width: \"100%\" }}\n >\n <Stack\n direction=\"row\"\n spacing={0}\n alignItems=\"center\"\n sx={{ width: \"100%\" }}\n >\n <TextField\n select\n value={country}\n onChange={handleCountryChange}\n disabled={disabled}\n size={size}\n sx={{\n width: 140,\n \"& .MuiOutlinedInput-root\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n ...glassInputSx,\n },\n }}\n SelectProps={{\n renderValue: (val: unknown) => {\n const code =\n typeof val === \"string\" ? val : defaultCountry.toUpperCase();\n const c = countries.find((x: any) => x.code === code);\n return c ? `${c.code} (+${c.phone})` : code;\n },\n onOpen: () => {\n setSelectOpen(true);\n setIgnoreNextOutsideClick(true);\n },\n onClose: () => setSelectOpen(false),\n }}\n >\n {countries.map((option: any) => (\n <MenuItem key={option.code} value={option.code}>\n {option.code} (+{option.phone})\n </MenuItem>\n ))}\n </TextField>\n <TextField\n label={label}\n value={localNumber ? formatLocalNumber(localNumber) : \"\"}\n onChange={handleLocalChange}\n placeholder=\" - - \"\n inputProps={{\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n maxLength: 12,\n }}\n disabled={disabled}\n size={size}\n autoFocus={autoFocus}\n fullWidth\n sx={{\n \"& .MuiOutlinedInput-root\": {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n ...glassInputSx,\n },\n }}\n />\n </Stack>\n </Box>\n );\n};\n\nexport default PhoneNumberField;\n"],"mappings":"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","names":["import_jsx_runtime","tablePaginationClasses","TablePagination","_a","MuiTablePagination","import_styles","import_material","import_jsx_runtime","_a","import_styles","import_material","import_jsx_runtime","import_styles","import_material","import_icons_material","import_styles","import_jsx_runtime","import_react","import_material","import_styles","import_icons_material","import_jsx_runtime","_a","CloseIcon","import_react","import_material","import_styles","import_jsx_runtime","_a","severity","CloseIcon","import_material","import_styles","import_jsx_runtime","import_material","import_jsx_runtime","_a","import_react","import_material","import_icons_material","import_jsx_runtime","React","import_material","import_styles","import_jsx_runtime","import_styles","import_jsx_runtime","Switch","import_material","import_styles","import_common_library","import_jsx_runtime","_a","import_react","import_material","import_icons_material","import_jsx_runtime","import_react","import_material","import_styles","import_icons_material","import_jsx_runtime","useStyles","React","_a","import_material","import_styles","import_icons_material","import_jsx_runtime","import_react","import_material","import_styles","import_common_library","import_jsx_runtime","_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"],"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\";\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","// @ts-nocheck\nimport * as React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport {\n useTheme,\n useMediaQuery,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n} from \"@mui/material\";\nexport { useTheme } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\n \"& .MuiDialog-paper\": {\n borderRadius: \"24px\",\n },\n \"& .MuiDialogContent-root\": {\n padding: theme.spacing(4),\n },\n \"& .MuiDialogActions-root\": {\n padding: theme.spacing(4),\n },\n}));\n\nexport interface DialogTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: () => void;\n}\n\nconst BootstrapDialogTitle = (props: DialogTitleProps) => {\n const { children, onClose, ...other } = props;\n\n return (\n <DialogTitle\n sx={{\n px: 3,\n py: 3,\n pt: 3.5,\n pb: 2.5,\n fontSize: \"1.25rem\",\n fontWeight: 600,\n letterSpacing: \"0.02em\",\n lineHeight: 1.35,\n color: \"primary.main\",\n }}\n {...other}\n >\n {children}\n {onClose ? (\n <IconButton\n onClick={onClose}\n sx={{\n position: \"absolute\",\n right: 16,\n top: 16,\n }}\n >\n <Close color=\"primary\" />\n </IconButton>\n ) : null}\n </DialogTitle>\n );\n};\n\nconst FormDialog = ({\n open = false,\n setOpen,\n title = \"\",\n actions,\n children,\n maxWidth = \"lg\",\n ...props\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n return (\n <BootstrapDialog\n fullWidth\n onClose={() => setOpen(false)}\n open={open}\n maxWidth={maxWidth}\n fullScreen={mdMatches}\n >\n <BootstrapDialogTitle onClose={() => setOpen(false)}>\n {title}\n </BootstrapDialogTitle>\n <DialogContent dividers>{children}</DialogContent>\n <DialogActions>{actions}</DialogActions>\n </BootstrapDialog>\n );\n};\n\nexport default FormDialog;\n","// @ts-nocheck\nimport React from \"react\";\nimport { alpha, styled } from \"@mui/material/styles\";\nimport { Button } from \"@mui/material\";\nimport { CloudUpload } from \"@mui/icons-material\";\nimport { 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\nconst InputFileUpload = ({ name = \"\", onChange = () => null, title = \"\" }) => (\n <Button\n role={undefined}\n component=\"label\"\n size=\"small\"\n variant=\"contained\"\n tabIndex={-1}\n startIcon={<CloudUpload fontSize=\"inherit\" />}\n sx={{\n ...(theme) => glassSurface(theme),\n textTransform: \"none\",\n borderRadius: 999,\n px: 2.25,\n py: 0.75,\n color: \"text.primary\",\n borderColor: (theme) => alpha(theme.palette.primary.main, 0.24),\n \"&:hover\": {\n borderColor: (theme) => alpha(theme.palette.primary.main, 0.42),\n },\n }}\n >\n {title}\n <VisuallyHiddenInput type=\"file\" name={name} onChange={onChange} />\n </Button>\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\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 = \"image/*\",\n disabled,\n allowClear = true,\n}) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [internalSrc, setInternalSrc] = useState<string | null>(defaultValue ?? null);\n const [hover, setHover] = useState(false);\n\n useEffect(() => {\n if (!defaultValue) return;\n if (!internalSrc || !internalSrc.startsWith(\"blob:\")) {\n setInternalSrc(defaultValue);\n }\n }, [defaultValue]);\n\n useEffect(() => {\n return () => {\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n };\n }, [internalSrc]);\n\n const handlePick = (e: ChangeEvent<HTMLInputElement>) => {\n const selected = e.target.files?.[0] ?? null;\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n let preview: string | null = null;\n if (selected) {\n preview = URL.createObjectURL(selected);\n setInternalSrc(preview);\n } else {\n setInternalSrc(null);\n }\n if (inputRef.current) inputRef.current.value = \"\";\n onChange?.(selected, preview);\n };\n\n const triggerPick = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n setInternalSrc(null);\n onChange?.(null, null);\n };\n\n return (\n <Wrapper\n role=\"button\"\n size={size}\n variant={variant}\n onPointerEnter={() => setHover(true)}\n onPointerLeave={() => setHover(false)}\n onClick={triggerPick}\n >\n {internalSrc && <PreviewImg src={internalSrc} />}\n <Overlay className={`${!internalSrc ? \"empty\" : \"\"} ${hover && !disabled ? \"hover\" : \"\"}`}>\n <CloudUpload className=\"uploadIcon\" fontSize=\"large\" />\n </Overlay>\n\n {allowClear && internalSrc && !disabled && (\n <ClearButton size=\"small\" aria-label=\"Clear image\" onClick={handleClear} sx={{ m: 1 }}>\n <CloseIcon fontSize=\"inherit\" />\n </ClearButton>\n )}\n\n <HiddenInput ref={inputRef} type=\"file\" name={name} accept={accept} onChange={handlePick} disabled={disabled} />\n </Wrapper>\n );\n};\n\nexport default ImageUploadAvatar;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport {\n Alert,\n Grow,\n IconButton,\n type AlertProps,\n} 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 =\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"\";\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 );\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: 3,\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: \"999px\",\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: 30 / 2,\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: \"999px\",\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: 14,\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: 1.75,\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 className={classes.formLabel} sx={{ color: \"text.secondary\" }}>\n {label}\n </FormLabel>\n <Typography className={classes.formValue} sx={{ color: \"text.primary\" }}>\n {displayValue}\n </Typography>\n </div>\n );\n },\n);\n\nexport default SearchableSelect;\n","import {\n Drawer,\n Typography,\n Box,\n IconButton,\n Grid,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface FormDrawerProps {\n open: boolean;\n setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n title?: string | null;\n actions?: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst FormDrawer: React.FC<FormDrawerProps> = ({\n open,\n setOpen,\n title,\n actions,\n children,\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n return (\n <Drawer\n anchor={mdMatches ? \"bottom\" : \"right\"}\n open={open}\n onClose={() => setOpen(false)}\n sx={{\n \"& .MuiDrawer-paper\": {\n width: mdMatches ? \"100%\" : \"64%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: mdMatches ? \"24px 24px 0 0\" : \"24px 0 0 24px\",\n },\n }}\n >\n <Box\n p={3}\n borderBottom={`1px solid ${alpha(theme.palette.divider, 0.36)}`}\n >\n <Grid container>\n <Grid item>\n {title && (\n <Typography variant=\"h6\" fontWeight=\"bold\">\n {title}\n </Typography>\n )}\n </Grid>\n <Grid item>\n <IconButton\n size=\"medium\"\n onClick={() => setOpen(false)}\n sx={{\n position: \"absolute\",\n top: 8,\n right: 8,\n zIndex: 2,\n backgroundColor: alpha(theme.palette.background.paper, 0.46),\n }}\n >\n <Close fontSize=\"inherit\" />\n </IconButton>\n </Grid>\n </Grid>\n </Box>\n <Box flex={1} overflow=\"auto\" p={3}>\n {children}\n </Box>\n\n {actions && (\n <Box\n p={2}\n borderTop={`1px solid ${alpha(theme.palette.divider, 0.36)}`}\n sx={{\n position: \"sticky\",\n bottom: 0,\n zIndex: 1,\n backgroundColor: alpha(theme.palette.background.paper, 0.38),\n backdropFilter: \"blur(10px)\",\n }}\n >\n {actions}\n </Box>\n )}\n </Drawer>\n );\n};\n\nexport default FormDrawer;\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n ChangeEvent,\n FocusEvent,\n} from \"react\";\nimport {\n Box,\n Stack,\n TextField,\n MenuItem,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { constants } from \"@verma-consulting/common-library\";\n\ninterface PhoneNumberFieldProps {\n value?: string | null;\n onChange: (e164: string) => void;\n defaultCountry?: string;\n label?: string;\n size?: \"small\" | \"medium\";\n disabled?: boolean;\n autoFocus?: boolean;\n onBlur?: () => void;\n}\n\nconst PhoneNumberField: React.FC<PhoneNumberFieldProps> = ({\n value = \"\",\n onChange,\n defaultCountry = \"US\",\n label = \"Phone number\",\n size = \"small\",\n disabled = false,\n autoFocus = false,\n onBlur,\n}) => {\n const theme = useTheme();\n const smMatches = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const countries = (constants.COUNTRIES || []) as any;\n 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 [isFocused, setIsFocused] = useState(false);\n const [selectOpen, setSelectOpen] = useState(false);\n const [ignoreNextOutsideClick, setIgnoreNextOutsideClick] = useState(false);\n\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const parseE164 = useCallback(\n (val: string) => {\n const cleaned = (val || \"\").toString().replace(/\\D/g, \"\");\n if (!cleaned) return { dial: \"\", local: \"\" };\n\n const sorted = [...countries].sort(\n (a, b) => b.phone.length - a.phone.length\n );\n const found = sorted.find((c) => cleaned.startsWith(c.phone));\n if (found) {\n const dial = found.phone;\n const local = cleaned.slice(dial.length);\n return { dial, local: local.slice(-10) };\n }\n return { dial: \"\", local: cleaned.slice(-10) };\n },\n [countries]\n );\n\n useEffect(() => {\n if (isFocused) return;\n if (!value) {\n setLocalNumber(\"\");\n return;\n }\n const { dial, local } = parseE164(String(value));\n if (dial) {\n const found = countries.find((c: any) => c.phone === dial);\n if (found) setCountry(found.code);\n }\n setLocalNumber(local);\n }, [value, parseE164, countries, isFocused]);\n\n const formatLocalNumber = (digits: string) => {\n const cleaned = digits.replace(/\\D/g, \"\").slice(0, 10);\n let formatted = \"\";\n if (cleaned.length > 0) formatted += cleaned.slice(0, 3);\n if (cleaned.length > 3) formatted += \"-\" + cleaned.slice(3, 6);\n if (cleaned.length > 6) formatted += \"-\" + cleaned.slice(6, 10);\n return formatted;\n };\n\n const commitValue = useCallback(() => {\n const sel = countries.find((c: any) => c.code === country);\n const dial = sel?.phone ?? \"\";\n if (dial && localNumber) {\n onChange(`+${dial}${localNumber}`);\n } else {\n onChange(\"\");\n }\n }, [countries, country, localNumber, onChange]);\n\n const handleLocalChange = (e: ChangeEvent<HTMLInputElement>) => {\n const digits = e.target.value.replace(/\\D/g, \"\").slice(0, 10);\n setLocalNumber(digits);\n };\n\n const handleCountryChange = (e: ChangeEvent<HTMLInputElement>) => {\n setCountry(e.target.value);\n };\n\n useEffect(() => {\n const onDocMouseDown = (ev: MouseEvent) => {\n if (!wrapperRef.current) return;\n if (wrapperRef.current.contains(ev.target as Node)) return;\n if (ignoreNextOutsideClick) {\n setIgnoreNextOutsideClick(false);\n return;\n }\n if (isFocused && !selectOpen) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n return () => document.removeEventListener(\"mousedown\", onDocMouseDown);\n }, [isFocused, selectOpen, ignoreNextOutsideClick, commitValue, onBlur]);\n\n const handleWrapperBlur = (e: FocusEvent<HTMLDivElement>) => {\n const next = e.relatedTarget as Node | null;\n if (wrapperRef.current && next && wrapperRef.current.contains(next)) return;\n if (selectOpen) return;\n if (isFocused) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n\n return (\n <Box\n ref={wrapperRef}\n onFocusCapture={() => setIsFocused(true)}\n onBlurCapture={handleWrapperBlur}\n sx={{ display: \"flex\", alignItems: \"center\", width: \"100%\" }}\n >\n <Stack\n direction=\"row\"\n spacing={0}\n alignItems=\"center\"\n sx={{ width: \"100%\" }}\n >\n <TextField\n select\n value={country}\n onChange={handleCountryChange}\n disabled={disabled}\n size={size}\n sx={{\n width: 140,\n \"& .MuiOutlinedInput-root\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n ...glassInputSx,\n },\n }}\n SelectProps={{\n renderValue: (val: unknown) => {\n const code =\n typeof val === \"string\" ? val : defaultCountry.toUpperCase();\n const c = countries.find((x: any) => x.code === code);\n return c ? `${c.code} (+${c.phone})` : code;\n },\n onOpen: () => {\n setSelectOpen(true);\n setIgnoreNextOutsideClick(true);\n },\n onClose: () => setSelectOpen(false),\n }}\n >\n {countries.map((option: any) => (\n <MenuItem key={option.code} value={option.code}>\n {option.code} (+{option.phone})\n </MenuItem>\n ))}\n </TextField>\n <TextField\n label={label}\n value={localNumber ? formatLocalNumber(localNumber) : \"\"}\n onChange={handleLocalChange}\n placeholder=\" - - \"\n inputProps={{\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n maxLength: 12,\n }}\n disabled={disabled}\n size={size}\n autoFocus={autoFocus}\n fullWidth\n sx={{\n \"& .MuiOutlinedInput-root\": {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n ...glassInputSx,\n },\n }}\n />\n </Stack>\n </Box>\n );\n};\n\nexport default PhoneNumberField;\n"],"mappings":"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","names":["import_jsx_runtime","tablePaginationClasses","TablePagination","_a","MuiTablePagination","import_styles","import_material","import_jsx_runtime","_a","import_styles","import_material","import_jsx_runtime","import_styles","import_material","import_icons_material","import_styles","import_jsx_runtime","import_react","import_material","import_styles","import_icons_material","import_jsx_runtime","_a","CloseIcon","import_react","import_material","import_styles","import_jsx_runtime","_a","severity","CloseIcon","import_material","import_styles","import_jsx_runtime","import_material","import_jsx_runtime","_a","import_react","import_material","import_icons_material","import_jsx_runtime","React","import_material","import_styles","import_jsx_runtime","import_styles","import_jsx_runtime","Switch","import_material","import_styles","import_common_library","import_jsx_runtime","_a","import_react","import_material","import_icons_material","import_jsx_runtime","import_react","import_material","import_styles","import_icons_material","import_jsx_runtime","useStyles","React","_a","import_material","import_styles","import_icons_material","import_jsx_runtime","import_react","import_material","import_styles","import_common_library","import_jsx_runtime","_a"]}
package/dist/index.mjs CHANGED
@@ -1190,7 +1190,7 @@ var SearchableSelect = React7.memo(
1190
1190
  size = "small",
1191
1191
  style,
1192
1192
  disabled = false,
1193
- onClear,
1193
+ onClear = null,
1194
1194
  defaultEditMode = false,
1195
1195
  multiple = false
1196
1196
  }) => {
@@ -1224,8 +1224,6 @@ var SearchableSelect = React7.memo(
1224
1224
  event.stopPropagation();
1225
1225
  if (onClear) {
1226
1226
  onClear();
1227
- } else {
1228
- onChange("");
1229
1227
  }
1230
1228
  setEditMode(false);
1231
1229
  setOpen(false);
@@ -1250,6 +1248,7 @@ var SearchableSelect = React7.memo(
1250
1248
  }
1251
1249
  }, [selected, multiple]);
1252
1250
  const isValueEmpty = !value.trim();
1251
+ const showClear = onClear != null;
1253
1252
  return editMode ? /* @__PURE__ */ jsx15(FormControl, { fullWidth: true, style, disabled, size, children: /* @__PURE__ */ jsx15(
1254
1253
  Autocomplete,
1255
1254
  {
@@ -1364,7 +1363,7 @@ var SearchableSelect = React7.memo(
1364
1363
  }
1365
1364
  },
1366
1365
  endAdornment: /* @__PURE__ */ jsxs8(Fragment2, { children: [
1367
- !isValueEmpty && /* @__PURE__ */ jsx15(
1366
+ showClear && !isValueEmpty && /* @__PURE__ */ jsx15(
1368
1367
  IconButton5,
1369
1368
  {
1370
1369
  "aria-label": `clear ${name}`,
@@ -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"],"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\";\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","// @ts-nocheck\nimport * as React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport {\n useTheme,\n useMediaQuery,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n} from \"@mui/material\";\nexport { useTheme } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\n \"& .MuiDialog-paper\": {\n borderRadius: \"24px\",\n },\n \"& .MuiDialogContent-root\": {\n padding: theme.spacing(4),\n },\n \"& .MuiDialogActions-root\": {\n padding: theme.spacing(4),\n },\n}));\n\nexport interface DialogTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: () => void;\n}\n\nconst BootstrapDialogTitle = (props: DialogTitleProps) => {\n const { children, onClose, ...other } = props;\n\n return (\n <DialogTitle\n sx={{\n px: 3,\n py: 3,\n pt: 3.5,\n pb: 2.5,\n fontSize: \"1.25rem\",\n fontWeight: 600,\n letterSpacing: \"0.02em\",\n lineHeight: 1.35,\n color: \"primary.main\",\n }}\n {...other}\n >\n {children}\n {onClose ? (\n <IconButton\n onClick={onClose}\n sx={{\n position: \"absolute\",\n right: 16,\n top: 16,\n }}\n >\n <Close color=\"primary\" />\n </IconButton>\n ) : null}\n </DialogTitle>\n );\n};\n\nconst FormDialog = ({\n open = false,\n setOpen,\n title = \"\",\n actions,\n children,\n maxWidth = \"lg\",\n ...props\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n return (\n <BootstrapDialog\n fullWidth\n onClose={() => setOpen(false)}\n open={open}\n maxWidth={maxWidth}\n fullScreen={mdMatches}\n >\n <BootstrapDialogTitle onClose={() => setOpen(false)}>\n {title}\n </BootstrapDialogTitle>\n <DialogContent dividers>{children}</DialogContent>\n <DialogActions>{actions}</DialogActions>\n </BootstrapDialog>\n );\n};\n\nexport default FormDialog;\n","// @ts-nocheck\nimport React from \"react\";\nimport { alpha, styled } from \"@mui/material/styles\";\nimport { Button } from \"@mui/material\";\nimport { CloudUpload } from \"@mui/icons-material\";\nimport { 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\nconst InputFileUpload = ({ name = \"\", onChange = () => null, title = \"\" }) => (\n <Button\n role={undefined}\n component=\"label\"\n size=\"small\"\n variant=\"contained\"\n tabIndex={-1}\n startIcon={<CloudUpload fontSize=\"inherit\" />}\n sx={{\n ...(theme) => glassSurface(theme),\n textTransform: \"none\",\n borderRadius: 999,\n px: 2.25,\n py: 0.75,\n color: \"text.primary\",\n borderColor: (theme) => alpha(theme.palette.primary.main, 0.24),\n \"&:hover\": {\n borderColor: (theme) => alpha(theme.palette.primary.main, 0.42),\n },\n }}\n >\n {title}\n <VisuallyHiddenInput type=\"file\" name={name} onChange={onChange} />\n </Button>\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\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 = \"image/*\",\n disabled,\n allowClear = true,\n}) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [internalSrc, setInternalSrc] = useState<string | null>(defaultValue ?? null);\n const [hover, setHover] = useState(false);\n\n useEffect(() => {\n if (!defaultValue) return;\n if (!internalSrc || !internalSrc.startsWith(\"blob:\")) {\n setInternalSrc(defaultValue);\n }\n }, [defaultValue]);\n\n useEffect(() => {\n return () => {\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n };\n }, [internalSrc]);\n\n const handlePick = (e: ChangeEvent<HTMLInputElement>) => {\n const selected = e.target.files?.[0] ?? null;\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n let preview: string | null = null;\n if (selected) {\n preview = URL.createObjectURL(selected);\n setInternalSrc(preview);\n } else {\n setInternalSrc(null);\n }\n if (inputRef.current) inputRef.current.value = \"\";\n onChange?.(selected, preview);\n };\n\n const triggerPick = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n setInternalSrc(null);\n onChange?.(null, null);\n };\n\n return (\n <Wrapper\n role=\"button\"\n size={size}\n variant={variant}\n onPointerEnter={() => setHover(true)}\n onPointerLeave={() => setHover(false)}\n onClick={triggerPick}\n >\n {internalSrc && <PreviewImg src={internalSrc} />}\n <Overlay className={`${!internalSrc ? \"empty\" : \"\"} ${hover && !disabled ? \"hover\" : \"\"}`}>\n <CloudUpload className=\"uploadIcon\" fontSize=\"large\" />\n </Overlay>\n\n {allowClear && internalSrc && !disabled && (\n <ClearButton size=\"small\" aria-label=\"Clear image\" onClick={handleClear} sx={{ m: 1 }}>\n <CloseIcon fontSize=\"inherit\" />\n </ClearButton>\n )}\n\n <HiddenInput ref={inputRef} type=\"file\" name={name} accept={accept} onChange={handlePick} disabled={disabled} />\n </Wrapper>\n );\n};\n\nexport default ImageUploadAvatar;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport {\n Alert,\n Grow,\n IconButton,\n type AlertProps,\n} 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 =\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"\";\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 );\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: 3,\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: \"999px\",\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: 30 / 2,\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: \"999px\",\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: 14,\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 onClear?: () => void;\n defaultEditMode?: boolean;\n multiple?: boolean;\n}\n\nconst SearchableSelect: React.FC<SearchableSelectProps> = React.memo(\n ({\n name,\n label,\n value,\n onChange,\n options,\n size = \"small\",\n style,\n disabled = false,\n onClear,\n defaultEditMode = false,\n multiple = false,\n }) => {\n const 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 } else {\n onChange(\"\");\n }\n setEditMode(false);\n setOpen(false);\n };\n\n const selected = useMemo(() => {\n if (multiple) {\n if (!value.trim()) return [];\n const selectedValues = value.split(\", \").map((v) => v.trim());\n return options.filter((opt) => selectedValues.includes(opt.value));\n } else {\n return options.find((opt) => opt.value === value) ?? null;\n }\n }, [value, options, multiple]);\n\n const displayValue = useMemo(() => {\n if (multiple) {\n if (!Array.isArray(selected)) return \"\";\n return selected.map((opt) => opt.label).join(\", \");\n } else {\n return (selected as GenericPayload | null)?.label ?? \"\";\n }\n }, [selected, multiple]);\n\n const isValueEmpty = !value.trim();\n\n return editMode ? (\n <FormControl fullWidth style={style} disabled={disabled} size={size}>\n <Autocomplete\n multiple={multiple}\n disableCloseOnSelect={multiple}\n options={options}\n value={selected}\n open={open}\n onOpen={() => setOpen(true)}\n onClose={() => setOpen(false)}\n onChange={(_, newValue) => {\n if (multiple) {\n if (Array.isArray(newValue)) {\n let vals = newValue?.map((opt) => opt?.value);\n let val = vals?.join(\", \");\n onChange(val);\n } else {\n onChange(\"\");\n }\n setOpen(true);\n } else {\n onChange((newValue as GenericPayload | null)?.value ?? \"\");\n setOpen(false);\n }\n }}\n disableClearable\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: 1.75,\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 {!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 className={classes.formLabel} sx={{ color: \"text.secondary\" }}>\n {label}\n </FormLabel>\n <Typography className={classes.formValue} sx={{ color: \"text.primary\" }}>\n {displayValue}\n </Typography>\n </div>\n );\n },\n);\n\nexport default SearchableSelect;\n","import {\n Drawer,\n Typography,\n Box,\n IconButton,\n Grid,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface FormDrawerProps {\n open: boolean;\n setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n title?: string | null;\n actions?: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst FormDrawer: React.FC<FormDrawerProps> = ({\n open,\n setOpen,\n title,\n actions,\n children,\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n return (\n <Drawer\n anchor={mdMatches ? \"bottom\" : \"right\"}\n open={open}\n onClose={() => setOpen(false)}\n sx={{\n \"& .MuiDrawer-paper\": {\n width: mdMatches ? \"100%\" : \"64%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: mdMatches ? \"24px 24px 0 0\" : \"24px 0 0 24px\",\n },\n }}\n >\n <Box\n p={3}\n borderBottom={`1px solid ${alpha(theme.palette.divider, 0.36)}`}\n >\n <Grid container>\n <Grid item>\n {title && (\n <Typography variant=\"h6\" fontWeight=\"bold\">\n {title}\n </Typography>\n )}\n </Grid>\n <Grid item>\n <IconButton\n size=\"medium\"\n onClick={() => setOpen(false)}\n sx={{\n position: \"absolute\",\n top: 8,\n right: 8,\n zIndex: 2,\n backgroundColor: alpha(theme.palette.background.paper, 0.46),\n }}\n >\n <Close fontSize=\"inherit\" />\n </IconButton>\n </Grid>\n </Grid>\n </Box>\n <Box flex={1} overflow=\"auto\" p={3}>\n {children}\n </Box>\n\n {actions && (\n <Box\n p={2}\n borderTop={`1px solid ${alpha(theme.palette.divider, 0.36)}`}\n sx={{\n position: \"sticky\",\n bottom: 0,\n zIndex: 1,\n backgroundColor: alpha(theme.palette.background.paper, 0.38),\n backdropFilter: \"blur(10px)\",\n }}\n >\n {actions}\n </Box>\n )}\n </Drawer>\n );\n};\n\nexport default FormDrawer;\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n ChangeEvent,\n FocusEvent,\n} from \"react\";\nimport {\n Box,\n Stack,\n TextField,\n MenuItem,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { constants } from \"@verma-consulting/common-library\";\n\ninterface PhoneNumberFieldProps {\n value?: string | null;\n onChange: (e164: string) => void;\n defaultCountry?: string;\n label?: string;\n size?: \"small\" | \"medium\";\n disabled?: boolean;\n autoFocus?: boolean;\n onBlur?: () => void;\n}\n\nconst PhoneNumberField: React.FC<PhoneNumberFieldProps> = ({\n value = \"\",\n onChange,\n defaultCountry = \"US\",\n label = \"Phone number\",\n size = \"small\",\n disabled = false,\n autoFocus = false,\n onBlur,\n}) => {\n const theme = useTheme();\n const smMatches = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const countries = (constants.COUNTRIES || []) as any;\n 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 [isFocused, setIsFocused] = useState(false);\n const [selectOpen, setSelectOpen] = useState(false);\n const [ignoreNextOutsideClick, setIgnoreNextOutsideClick] = useState(false);\n\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const parseE164 = useCallback(\n (val: string) => {\n const cleaned = (val || \"\").toString().replace(/\\D/g, \"\");\n if (!cleaned) return { dial: \"\", local: \"\" };\n\n const sorted = [...countries].sort(\n (a, b) => b.phone.length - a.phone.length\n );\n const found = sorted.find((c) => cleaned.startsWith(c.phone));\n if (found) {\n const dial = found.phone;\n const local = cleaned.slice(dial.length);\n return { dial, local: local.slice(-10) };\n }\n return { dial: \"\", local: cleaned.slice(-10) };\n },\n [countries]\n );\n\n useEffect(() => {\n if (isFocused) return;\n if (!value) {\n setLocalNumber(\"\");\n return;\n }\n const { dial, local } = parseE164(String(value));\n if (dial) {\n const found = countries.find((c: any) => c.phone === dial);\n if (found) setCountry(found.code);\n }\n setLocalNumber(local);\n }, [value, parseE164, countries, isFocused]);\n\n const formatLocalNumber = (digits: string) => {\n const cleaned = digits.replace(/\\D/g, \"\").slice(0, 10);\n let formatted = \"\";\n if (cleaned.length > 0) formatted += cleaned.slice(0, 3);\n if (cleaned.length > 3) formatted += \"-\" + cleaned.slice(3, 6);\n if (cleaned.length > 6) formatted += \"-\" + cleaned.slice(6, 10);\n return formatted;\n };\n\n const commitValue = useCallback(() => {\n const sel = countries.find((c: any) => c.code === country);\n const dial = sel?.phone ?? \"\";\n if (dial && localNumber) {\n onChange(`+${dial}${localNumber}`);\n } else {\n onChange(\"\");\n }\n }, [countries, country, localNumber, onChange]);\n\n const handleLocalChange = (e: ChangeEvent<HTMLInputElement>) => {\n const digits = e.target.value.replace(/\\D/g, \"\").slice(0, 10);\n setLocalNumber(digits);\n };\n\n const handleCountryChange = (e: ChangeEvent<HTMLInputElement>) => {\n setCountry(e.target.value);\n };\n\n useEffect(() => {\n const onDocMouseDown = (ev: MouseEvent) => {\n if (!wrapperRef.current) return;\n if (wrapperRef.current.contains(ev.target as Node)) return;\n if (ignoreNextOutsideClick) {\n setIgnoreNextOutsideClick(false);\n return;\n }\n if (isFocused && !selectOpen) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n return () => document.removeEventListener(\"mousedown\", onDocMouseDown);\n }, [isFocused, selectOpen, ignoreNextOutsideClick, commitValue, onBlur]);\n\n const handleWrapperBlur = (e: FocusEvent<HTMLDivElement>) => {\n const next = e.relatedTarget as Node | null;\n if (wrapperRef.current && next && wrapperRef.current.contains(next)) return;\n if (selectOpen) return;\n if (isFocused) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n\n return (\n <Box\n ref={wrapperRef}\n onFocusCapture={() => setIsFocused(true)}\n onBlurCapture={handleWrapperBlur}\n sx={{ display: \"flex\", alignItems: \"center\", width: \"100%\" }}\n >\n <Stack\n direction=\"row\"\n spacing={0}\n alignItems=\"center\"\n sx={{ width: \"100%\" }}\n >\n <TextField\n select\n value={country}\n onChange={handleCountryChange}\n disabled={disabled}\n size={size}\n sx={{\n width: 140,\n \"& .MuiOutlinedInput-root\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n ...glassInputSx,\n },\n }}\n SelectProps={{\n renderValue: (val: unknown) => {\n const code =\n typeof val === \"string\" ? val : defaultCountry.toUpperCase();\n const c = countries.find((x: any) => x.code === code);\n return c ? `${c.code} (+${c.phone})` : code;\n },\n onOpen: () => {\n setSelectOpen(true);\n setIgnoreNextOutsideClick(true);\n },\n onClose: () => setSelectOpen(false),\n }}\n >\n {countries.map((option: any) => (\n <MenuItem key={option.code} value={option.code}>\n {option.code} (+{option.phone})\n </MenuItem>\n ))}\n </TextField>\n <TextField\n label={label}\n value={localNumber ? formatLocalNumber(localNumber) : \"\"}\n onChange={handleLocalChange}\n placeholder=\" - - \"\n inputProps={{\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n maxLength: 12,\n }}\n disabled={disabled}\n size={size}\n autoFocus={autoFocus}\n fullWidth\n sx={{\n \"& .MuiOutlinedInput-root\": {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n ...glassInputSx,\n },\n }}\n />\n </Stack>\n </Box>\n );\n};\n\nexport default PhoneNumberField;\n"],"mappings":"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","names":["jsx","TablePagination","_a","useTheme","styled","makeStyles","Box","jsx","_a","useTheme","useMediaQuery","jsx","jsxs","alpha","styled","alpha","jsx","jsxs","styled","alpha","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","Button","Typography","alpha","useTheme","jsx","jsxs","useTheme","Button","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","useEffect","useRef","useState","Box","TextField","useTheme","useMediaQuery","alpha","constants","jsx","jsxs","_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"],"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\";\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","// @ts-nocheck\nimport * as React from \"react\";\nimport { styled } from \"@mui/material/styles\";\nimport {\n useTheme,\n useMediaQuery,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n} from \"@mui/material\";\nexport { useTheme } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\n \"& .MuiDialog-paper\": {\n borderRadius: \"24px\",\n },\n \"& .MuiDialogContent-root\": {\n padding: theme.spacing(4),\n },\n \"& .MuiDialogActions-root\": {\n padding: theme.spacing(4),\n },\n}));\n\nexport interface DialogTitleProps {\n id: string;\n children?: React.ReactNode;\n onClose: () => void;\n}\n\nconst BootstrapDialogTitle = (props: DialogTitleProps) => {\n const { children, onClose, ...other } = props;\n\n return (\n <DialogTitle\n sx={{\n px: 3,\n py: 3,\n pt: 3.5,\n pb: 2.5,\n fontSize: \"1.25rem\",\n fontWeight: 600,\n letterSpacing: \"0.02em\",\n lineHeight: 1.35,\n color: \"primary.main\",\n }}\n {...other}\n >\n {children}\n {onClose ? (\n <IconButton\n onClick={onClose}\n sx={{\n position: \"absolute\",\n right: 16,\n top: 16,\n }}\n >\n <Close color=\"primary\" />\n </IconButton>\n ) : null}\n </DialogTitle>\n );\n};\n\nconst FormDialog = ({\n open = false,\n setOpen,\n title = \"\",\n actions,\n children,\n maxWidth = \"lg\",\n ...props\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n return (\n <BootstrapDialog\n fullWidth\n onClose={() => setOpen(false)}\n open={open}\n maxWidth={maxWidth}\n fullScreen={mdMatches}\n >\n <BootstrapDialogTitle onClose={() => setOpen(false)}>\n {title}\n </BootstrapDialogTitle>\n <DialogContent dividers>{children}</DialogContent>\n <DialogActions>{actions}</DialogActions>\n </BootstrapDialog>\n );\n};\n\nexport default FormDialog;\n","// @ts-nocheck\nimport React from \"react\";\nimport { alpha, styled } from \"@mui/material/styles\";\nimport { Button } from \"@mui/material\";\nimport { CloudUpload } from \"@mui/icons-material\";\nimport { 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\nconst InputFileUpload = ({ name = \"\", onChange = () => null, title = \"\" }) => (\n <Button\n role={undefined}\n component=\"label\"\n size=\"small\"\n variant=\"contained\"\n tabIndex={-1}\n startIcon={<CloudUpload fontSize=\"inherit\" />}\n sx={{\n ...(theme) => glassSurface(theme),\n textTransform: \"none\",\n borderRadius: 999,\n px: 2.25,\n py: 0.75,\n color: \"text.primary\",\n borderColor: (theme) => alpha(theme.palette.primary.main, 0.24),\n \"&:hover\": {\n borderColor: (theme) => alpha(theme.palette.primary.main, 0.42),\n },\n }}\n >\n {title}\n <VisuallyHiddenInput type=\"file\" name={name} onChange={onChange} />\n </Button>\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\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 = \"image/*\",\n disabled,\n allowClear = true,\n}) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [internalSrc, setInternalSrc] = useState<string | null>(defaultValue ?? null);\n const [hover, setHover] = useState(false);\n\n useEffect(() => {\n if (!defaultValue) return;\n if (!internalSrc || !internalSrc.startsWith(\"blob:\")) {\n setInternalSrc(defaultValue);\n }\n }, [defaultValue]);\n\n useEffect(() => {\n return () => {\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n };\n }, [internalSrc]);\n\n const handlePick = (e: ChangeEvent<HTMLInputElement>) => {\n const selected = e.target.files?.[0] ?? null;\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n let preview: string | null = null;\n if (selected) {\n preview = URL.createObjectURL(selected);\n setInternalSrc(preview);\n } else {\n setInternalSrc(null);\n }\n if (inputRef.current) inputRef.current.value = \"\";\n onChange?.(selected, preview);\n };\n\n const triggerPick = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (internalSrc?.startsWith(\"blob:\")) {\n URL.revokeObjectURL(internalSrc);\n }\n setInternalSrc(null);\n onChange?.(null, null);\n };\n\n return (\n <Wrapper\n role=\"button\"\n size={size}\n variant={variant}\n onPointerEnter={() => setHover(true)}\n onPointerLeave={() => setHover(false)}\n onClick={triggerPick}\n >\n {internalSrc && <PreviewImg src={internalSrc} />}\n <Overlay className={`${!internalSrc ? \"empty\" : \"\"} ${hover && !disabled ? \"hover\" : \"\"}`}>\n <CloudUpload className=\"uploadIcon\" fontSize=\"large\" />\n </Overlay>\n\n {allowClear && internalSrc && !disabled && (\n <ClearButton size=\"small\" aria-label=\"Clear image\" onClick={handleClear} sx={{ m: 1 }}>\n <CloseIcon fontSize=\"inherit\" />\n </ClearButton>\n )}\n\n <HiddenInput ref={inputRef} type=\"file\" name={name} accept={accept} onChange={handlePick} disabled={disabled} />\n </Wrapper>\n );\n};\n\nexport default ImageUploadAvatar;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport {\n Alert,\n Grow,\n IconButton,\n type AlertProps,\n} 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 =\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"\";\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 );\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: 3,\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: \"999px\",\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: 30 / 2,\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: \"999px\",\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: 14,\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: 1.75,\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 className={classes.formLabel} sx={{ color: \"text.secondary\" }}>\n {label}\n </FormLabel>\n <Typography className={classes.formValue} sx={{ color: \"text.primary\" }}>\n {displayValue}\n </Typography>\n </div>\n );\n },\n);\n\nexport default SearchableSelect;\n","import {\n Drawer,\n Typography,\n Box,\n IconButton,\n Grid,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface FormDrawerProps {\n open: boolean;\n setOpen: React.Dispatch<React.SetStateAction<boolean>>;\n title?: string | null;\n actions?: React.ReactNode;\n children: React.ReactNode;\n}\n\nconst FormDrawer: React.FC<FormDrawerProps> = ({\n open,\n setOpen,\n title,\n actions,\n children,\n}) => {\n const theme = useTheme();\n const mdMatches = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n return (\n <Drawer\n anchor={mdMatches ? \"bottom\" : \"right\"}\n open={open}\n onClose={() => setOpen(false)}\n sx={{\n \"& .MuiDrawer-paper\": {\n width: mdMatches ? \"100%\" : \"64%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: mdMatches ? \"24px 24px 0 0\" : \"24px 0 0 24px\",\n },\n }}\n >\n <Box\n p={3}\n borderBottom={`1px solid ${alpha(theme.palette.divider, 0.36)}`}\n >\n <Grid container>\n <Grid item>\n {title && (\n <Typography variant=\"h6\" fontWeight=\"bold\">\n {title}\n </Typography>\n )}\n </Grid>\n <Grid item>\n <IconButton\n size=\"medium\"\n onClick={() => setOpen(false)}\n sx={{\n position: \"absolute\",\n top: 8,\n right: 8,\n zIndex: 2,\n backgroundColor: alpha(theme.palette.background.paper, 0.46),\n }}\n >\n <Close fontSize=\"inherit\" />\n </IconButton>\n </Grid>\n </Grid>\n </Box>\n <Box flex={1} overflow=\"auto\" p={3}>\n {children}\n </Box>\n\n {actions && (\n <Box\n p={2}\n borderTop={`1px solid ${alpha(theme.palette.divider, 0.36)}`}\n sx={{\n position: \"sticky\",\n bottom: 0,\n zIndex: 1,\n backgroundColor: alpha(theme.palette.background.paper, 0.38),\n backdropFilter: \"blur(10px)\",\n }}\n >\n {actions}\n </Box>\n )}\n </Drawer>\n );\n};\n\nexport default FormDrawer;\n","import React, {\n useCallback,\n useEffect,\n useRef,\n useState,\n ChangeEvent,\n FocusEvent,\n} from \"react\";\nimport {\n Box,\n Stack,\n TextField,\n MenuItem,\n useTheme,\n useMediaQuery,\n} from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\nimport { constants } from \"@verma-consulting/common-library\";\n\ninterface PhoneNumberFieldProps {\n value?: string | null;\n onChange: (e164: string) => void;\n defaultCountry?: string;\n label?: string;\n size?: \"small\" | \"medium\";\n disabled?: boolean;\n autoFocus?: boolean;\n onBlur?: () => void;\n}\n\nconst PhoneNumberField: React.FC<PhoneNumberFieldProps> = ({\n value = \"\",\n onChange,\n defaultCountry = \"US\",\n label = \"Phone number\",\n size = \"small\",\n disabled = false,\n autoFocus = false,\n onBlur,\n}) => {\n const theme = useTheme();\n const smMatches = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const countries = (constants.COUNTRIES || []) as any;\n 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 [isFocused, setIsFocused] = useState(false);\n const [selectOpen, setSelectOpen] = useState(false);\n const [ignoreNextOutsideClick, setIgnoreNextOutsideClick] = useState(false);\n\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n\n const parseE164 = useCallback(\n (val: string) => {\n const cleaned = (val || \"\").toString().replace(/\\D/g, \"\");\n if (!cleaned) return { dial: \"\", local: \"\" };\n\n const sorted = [...countries].sort(\n (a, b) => b.phone.length - a.phone.length\n );\n const found = sorted.find((c) => cleaned.startsWith(c.phone));\n if (found) {\n const dial = found.phone;\n const local = cleaned.slice(dial.length);\n return { dial, local: local.slice(-10) };\n }\n return { dial: \"\", local: cleaned.slice(-10) };\n },\n [countries]\n );\n\n useEffect(() => {\n if (isFocused) return;\n if (!value) {\n setLocalNumber(\"\");\n return;\n }\n const { dial, local } = parseE164(String(value));\n if (dial) {\n const found = countries.find((c: any) => c.phone === dial);\n if (found) setCountry(found.code);\n }\n setLocalNumber(local);\n }, [value, parseE164, countries, isFocused]);\n\n const formatLocalNumber = (digits: string) => {\n const cleaned = digits.replace(/\\D/g, \"\").slice(0, 10);\n let formatted = \"\";\n if (cleaned.length > 0) formatted += cleaned.slice(0, 3);\n if (cleaned.length > 3) formatted += \"-\" + cleaned.slice(3, 6);\n if (cleaned.length > 6) formatted += \"-\" + cleaned.slice(6, 10);\n return formatted;\n };\n\n const commitValue = useCallback(() => {\n const sel = countries.find((c: any) => c.code === country);\n const dial = sel?.phone ?? \"\";\n if (dial && localNumber) {\n onChange(`+${dial}${localNumber}`);\n } else {\n onChange(\"\");\n }\n }, [countries, country, localNumber, onChange]);\n\n const handleLocalChange = (e: ChangeEvent<HTMLInputElement>) => {\n const digits = e.target.value.replace(/\\D/g, \"\").slice(0, 10);\n setLocalNumber(digits);\n };\n\n const handleCountryChange = (e: ChangeEvent<HTMLInputElement>) => {\n setCountry(e.target.value);\n };\n\n useEffect(() => {\n const onDocMouseDown = (ev: MouseEvent) => {\n if (!wrapperRef.current) return;\n if (wrapperRef.current.contains(ev.target as Node)) return;\n if (ignoreNextOutsideClick) {\n setIgnoreNextOutsideClick(false);\n return;\n }\n if (isFocused && !selectOpen) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n document.addEventListener(\"mousedown\", onDocMouseDown);\n return () => document.removeEventListener(\"mousedown\", onDocMouseDown);\n }, [isFocused, selectOpen, ignoreNextOutsideClick, commitValue, onBlur]);\n\n const handleWrapperBlur = (e: FocusEvent<HTMLDivElement>) => {\n const next = e.relatedTarget as Node | null;\n if (wrapperRef.current && next && wrapperRef.current.contains(next)) return;\n if (selectOpen) return;\n if (isFocused) {\n commitValue();\n setIsFocused(false);\n onBlur?.();\n }\n };\n\n return (\n <Box\n ref={wrapperRef}\n onFocusCapture={() => setIsFocused(true)}\n onBlurCapture={handleWrapperBlur}\n sx={{ display: \"flex\", alignItems: \"center\", width: \"100%\" }}\n >\n <Stack\n direction=\"row\"\n spacing={0}\n alignItems=\"center\"\n sx={{ width: \"100%\" }}\n >\n <TextField\n select\n value={country}\n onChange={handleCountryChange}\n disabled={disabled}\n size={size}\n sx={{\n width: 140,\n \"& .MuiOutlinedInput-root\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n ...glassInputSx,\n },\n }}\n SelectProps={{\n renderValue: (val: unknown) => {\n const code =\n typeof val === \"string\" ? val : defaultCountry.toUpperCase();\n const c = countries.find((x: any) => x.code === code);\n return c ? `${c.code} (+${c.phone})` : code;\n },\n onOpen: () => {\n setSelectOpen(true);\n setIgnoreNextOutsideClick(true);\n },\n onClose: () => setSelectOpen(false),\n }}\n >\n {countries.map((option: any) => (\n <MenuItem key={option.code} value={option.code}>\n {option.code} (+{option.phone})\n </MenuItem>\n ))}\n </TextField>\n <TextField\n label={label}\n value={localNumber ? formatLocalNumber(localNumber) : \"\"}\n onChange={handleLocalChange}\n placeholder=\" - - \"\n inputProps={{\n inputMode: \"numeric\",\n pattern: \"[0-9]*\",\n maxLength: 12,\n }}\n disabled={disabled}\n size={size}\n autoFocus={autoFocus}\n fullWidth\n sx={{\n \"& .MuiOutlinedInput-root\": {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n ...glassInputSx,\n },\n }}\n />\n </Stack>\n </Box>\n );\n};\n\nexport default PhoneNumberField;\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;;;AC5Jf,SAAS,cAAc;AACvB;AAAA,EACE,YAAAE;AAAA,EACA,iBAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,YAAAD,iBAAgB;AACzB,SAAS,aAAa;AAwBlB,SAwBM,OAAAE,MAxBN,QAAAC,aAAA;AAtBJ,IAAM,kBAAkB,OAAO,MAAM,EAAE,CAAC,EAAE,MAAM,OAAO;AAAA,EACrD,sBAAsB;AAAA,IACpB,cAAc;AAAA,EAChB;AAAA,EACA,4BAA4B;AAAA,IAC1B,SAAS,MAAM,QAAQ,CAAC;AAAA,EAC1B;AAAA,EACA,4BAA4B;AAAA,IAC1B,SAAS,MAAM,QAAQ,CAAC;AAAA,EAC1B;AACF,EAAE;AAQF,IAAM,uBAAuB,CAAC,UAA4B;AACxD,QAAM,EAAE,UAAU,SAAS,GAAG,MAAM,IAAI;AAExC,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,QACF,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,OAAO;AAAA,MACT;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACA,UACC,gBAAAD;AAAA,UAAC;AAAA;AAAA,YACC,SAAS;AAAA,YACT,IAAI;AAAA,cACF,UAAU;AAAA,cACV,OAAO;AAAA,cACP,KAAK;AAAA,YACP;AAAA,YAEA,0BAAAA,KAAC,SAAM,OAAM,WAAU;AAAA;AAAA,QACzB,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;AAEA,IAAM,aAAa,CAAC;AAAA,EAClB,OAAO;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACL,MAAM;AACJ,QAAM,QAAQF,UAAS;AACvB,QAAM,YAAYC,eAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAC5D,SACE,gBAAAE;AAAA,IAAC;AAAA;AAAA,MACC,WAAS;AAAA,MACT,SAAS,MAAM,QAAQ,KAAK;AAAA,MAC5B;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MAEZ;AAAA,wBAAAD,KAAC,wBAAqB,SAAS,MAAM,QAAQ,KAAK,GAC/C,iBACH;AAAA,QACA,gBAAAA,KAAC,iBAAc,UAAQ,MAAE,UAAS;AAAA,QAClC,gBAAAA,KAAC,iBAAe,mBAAQ;AAAA;AAAA;AAAA,EAC1B;AAEJ;AAEA,IAAO,qBAAQ;;;AC9Ff,SAAS,SAAAE,QAAO,UAAAC,eAAc;AAC9B,SAAS,cAAc;AACvB,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;;;ADAE,SAMa,OAAAC,MANb,QAAAC,aAAA;AAbF,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;AAED,IAAM,kBAAkB,CAAC,EAAE,OAAO,IAAI,WAAW,MAAM,MAAM,QAAQ,GAAG,MACtE,gBAAAD;AAAA,EAAC;AAAA;AAAA,IACC,MAAM;AAAA,IACN,WAAU;AAAA,IACV,MAAK;AAAA,IACL,SAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW,gBAAAD,KAAC,eAAY,UAAS,WAAU;AAAA,IAC3C,IAAI;AAAA,MACF,GAAG,CAAC,UAAU,aAAa,KAAK;AAAA,MAChC,eAAe;AAAA,MACf,cAAc;AAAA,MACd,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,aAAa,CAAC,UAAUG,OAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI;AAAA,MAC9D,WAAW;AAAA,QACT,aAAa,CAAC,UAAUA,OAAM,MAAM,QAAQ,QAAQ,MAAM,IAAI;AAAA,MAChE;AAAA,IACF;AAAA,IAEC;AAAA;AAAA,MACD,gBAAAH,KAAC,uBAAoB,MAAK,QAAO,MAAY,UAAoB;AAAA;AAAA;AACnE;AAGF,IAAO,0BAAQ;;;AE7Cf,SAAgB,WAAW,QAAQ,gBAA6B;AAChE,SAAS,OAAAI,MAAK,cAAAC,mBAAkB;AAChC,SAAS,SAAAC,QAAO,UAAAC,eAAc;AAC9B,SAAS,eAAAC,cAAa,SAAS,iBAAiB;AA6I5C,SAQkB,OAAAC,MARlB,QAAAC,aAAA;AA/HJ,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;AAlH3D,QAAAE,KAAA;AAmHI,UAAM,YAAW,MAAAA,MAAA,EAAE,OAAO,UAAT,gBAAAA,IAAiB,OAAjB,YAAuB;AACxC,QAAI,2CAAa,WAAW,UAAU;AACpC,UAAI,gBAAgB,WAAW;AAAA,IACjC;AACA,QAAI,UAAyB;AAC7B,QAAI,UAAU;AACZ,gBAAU,IAAI,gBAAgB,QAAQ;AACtC,qBAAe,OAAO;AAAA,IACxB,OAAO;AACL,qBAAe,IAAI;AAAA,IACrB;AACA,QAAI,SAAS,QAAS,UAAS,QAAQ,QAAQ;AAC/C,yCAAW,UAAU;AAAA,EACvB;AAEA,QAAM,cAAc,MAAM;AAlI5B,QAAAA;AAmII,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;;;ACxKf,SAAgB,aAAAQ,YAAW,UAAAC,SAAQ,YAAAC,iBAAgB;AACnD;AAAA,EACE;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,OAEK;AACP,SAAS,SAAAC,QAAO,YAAAC,iBAAgB;AAChC,OAAOC,gBAAe;AACtB,SAAS,iBAAiB;AA2LR,gBAAAC,YAAA;AApMlB;AAWA,IAAM,kBAAkB,sCAAmB;AAS3C,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;AAtDN,MAAAC,KAAA;AAuDE,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;AAAA,IAChB,CAAC;AAAA,EACH;AAEA,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;;;AChNf,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,UAAAI,SAAQ,cAAAC,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,IAACG;AAAA,IAAA;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,aACTC,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,0BAAAH,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,MAACK,aAAA,EAAW,SAAQ,aAAY,OAAM,WAAU,YAAY,KACzD,iBACH;AAAA,QACC,aACC,gBAAAL;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,SAAAM,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,KAAK;AAAA,IACnB,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,QAAO,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,MAAC,aAAU,WAAW,QAAQ,WAAW,IAAI,EAAE,OAAO,iBAAiB,GACpE,iBACH;AAAA,UACA,gBAAAA,MAACN,aAAA,EAAW,WAAW,QAAQ,WAAW,IAAI,EAAE,OAAO,eAAe,GACnE,wBACH;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,IAAO,2BAAQ;;;AClTf;AAAA,EACE;AAAA,EACA,cAAAU;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,OACK;AACP,SAAS,SAAAC,eAAa;AACtB,SAAS,SAAAC,cAAa;AAuCd,SAGM,OAAAC,OAHN,QAAAC,aAAA;AA7BR,IAAM,aAAwC,CAAC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,QAAQL,WAAS;AACvB,QAAM,YAAYC,eAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAE5D,SACE,gBAAAI;AAAA,IAAC;AAAA;AAAA,MACC,QAAQ,YAAY,WAAW;AAAA,MAC/B;AAAA,MACA,SAAS,MAAM,QAAQ,KAAK;AAAA,MAC5B,IAAI;AAAA,QACF,sBAAsB;AAAA,UACpB,OAAO,YAAY,SAAS;AAAA,UAC5B,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,eAAe;AAAA,UACf,cAAc,YAAY,kBAAkB;AAAA,QAC9C;AAAA,MACF;AAAA,MAEA;AAAA,wBAAAD;AAAA,UAACP;AAAA,UAAA;AAAA,YACC,GAAG;AAAA,YACH,cAAc,aAAaK,QAAM,MAAM,QAAQ,SAAS,IAAI,CAAC;AAAA,YAE7D,0BAAAG,MAACN,OAAA,EAAK,WAAS,MACb;AAAA,8BAAAK,MAACL,OAAA,EAAK,MAAI,MACP,mBACC,gBAAAK,MAACR,aAAA,EAAW,SAAQ,MAAK,YAAW,QACjC,iBACH,GAEJ;AAAA,cACA,gBAAAQ,MAACL,OAAA,EAAK,MAAI,MACR,0BAAAK;AAAA,gBAACN;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS,MAAM,QAAQ,KAAK;AAAA,kBAC5B,IAAI;AAAA,oBACF,UAAU;AAAA,oBACV,KAAK;AAAA,oBACL,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,iBAAiBI,QAAM,MAAM,QAAQ,WAAW,OAAO,IAAI;AAAA,kBAC7D;AAAA,kBAEA,0BAAAE,MAACD,QAAA,EAAM,UAAS,WAAU;AAAA;AAAA,cAC5B,GACF;AAAA,eACF;AAAA;AAAA,QACF;AAAA,QACA,gBAAAC,MAACP,MAAA,EAAI,MAAM,GAAG,UAAS,QAAO,GAAG,GAC9B,UACH;AAAA,QAEC,WACC,gBAAAO;AAAA,UAACP;AAAA,UAAA;AAAA,YACC,GAAG;AAAA,YACH,WAAW,aAAaK,QAAM,MAAM,QAAQ,SAAS,IAAI,CAAC;AAAA,YAC1D,IAAI;AAAA,cACF,UAAU;AAAA,cACV,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,iBAAiBA,QAAM,MAAM,QAAQ,WAAW,OAAO,IAAI;AAAA,cAC3D,gBAAgB;AAAA,YAClB;AAAA,YAEC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,IAAO,qBAAQ;;;ACjGf;AAAA,EACE;AAAA,EACA,aAAAI;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,OAGK;AACP;AAAA,EACE,OAAAC;AAAA,EACA;AAAA,EACA,aAAAC;AAAA,EACA;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,OACK;AACP,SAAS,SAAAC,eAAa;AACtB,SAAS,aAAAC,kBAAiB;AAmJlB,gBAAAC,OA6BI,QAAAC,cA7BJ;AAtIR,IAAM,mBAAoD,CAAC;AAAA,EACzD,QAAQ;AAAA,EACR;AAAA,EACA,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AACF,MAAM;AACJ,QAAM,QAAQL,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,IAAIL,UAAS,cAAc;AACrD,QAAM,CAAC,aAAa,cAAc,IAAIA,UAAS,EAAE;AACjD,QAAM,CAAC,WAAW,YAAY,IAAIA,UAAS,KAAK;AAChD,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAS,KAAK;AAClD,QAAM,CAAC,wBAAwB,yBAAyB,IAAIA,UAAS,KAAK;AAE1E,QAAM,aAAaD,QAA8B,IAAI;AAErD,QAAM,YAAY;AAAA,IAChB,CAAC,QAAgB;AACf,YAAM,WAAW,OAAO,IAAI,SAAS,EAAE,QAAQ,OAAO,EAAE;AACxD,UAAI,CAAC,QAAS,QAAO,EAAE,MAAM,IAAI,OAAO,GAAG;AAE3C,YAAM,SAAS,CAAC,GAAG,SAAS,EAAE;AAAA,QAC5B,CAAC,GAAG,MAAM,EAAE,MAAM,SAAS,EAAE,MAAM;AAAA,MACrC;AACA,YAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,QAAQ,WAAW,EAAE,KAAK,CAAC;AAC5D,UAAI,OAAO;AACT,cAAM,OAAO,MAAM;AACnB,cAAM,QAAQ,QAAQ,MAAM,KAAK,MAAM;AACvC,eAAO,EAAE,MAAM,OAAO,MAAM,MAAM,GAAG,EAAE;AAAA,MACzC;AACA,aAAO,EAAE,MAAM,IAAI,OAAO,QAAQ,MAAM,GAAG,EAAE;AAAA,IAC/C;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AAEA,EAAAD,WAAU,MAAM;AACd,QAAI,UAAW;AACf,QAAI,CAAC,OAAO;AACV,qBAAe,EAAE;AACjB;AAAA,IACF;AACA,UAAM,EAAE,MAAM,MAAM,IAAI,UAAU,OAAO,KAAK,CAAC;AAC/C,QAAI,MAAM;AACR,YAAM,QAAQ,UAAU,KAAK,CAAC,MAAW,EAAE,UAAU,IAAI;AACzD,UAAI,MAAO,YAAW,MAAM,IAAI;AAAA,IAClC;AACA,mBAAe,KAAK;AAAA,EACtB,GAAG,CAAC,OAAO,WAAW,WAAW,SAAS,CAAC;AAE3C,QAAM,oBAAoB,CAAC,WAAmB;AAC5C,UAAM,UAAU,OAAO,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,EAAE;AACrD,QAAI,YAAY;AAChB,QAAI,QAAQ,SAAS,EAAG,cAAa,QAAQ,MAAM,GAAG,CAAC;AACvD,QAAI,QAAQ,SAAS,EAAG,cAAa,MAAM,QAAQ,MAAM,GAAG,CAAC;AAC7D,QAAI,QAAQ,SAAS,EAAG,cAAa,MAAM,QAAQ,MAAM,GAAG,EAAE;AAC9D,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,YAAY,MAAM;AAvGxC,QAAAW;AAwGI,UAAM,MAAM,UAAU,KAAK,CAAC,MAAW,EAAE,SAAS,OAAO;AACzD,UAAM,QAAOA,MAAA,2BAAK,UAAL,OAAAA,MAAc;AAC3B,QAAI,QAAQ,aAAa;AACvB,eAAS,IAAI,IAAI,GAAG,WAAW,EAAE;AAAA,IACnC,OAAO;AACL,eAAS,EAAE;AAAA,IACb;AAAA,EACF,GAAG,CAAC,WAAW,SAAS,aAAa,QAAQ,CAAC;AAE9C,QAAM,oBAAoB,CAAC,MAAqC;AAC9D,UAAM,SAAS,EAAE,OAAO,MAAM,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,EAAE;AAC5D,mBAAe,MAAM;AAAA,EACvB;AAEA,QAAM,sBAAsB,CAAC,MAAqC;AAChE,eAAW,EAAE,OAAO,KAAK;AAAA,EAC3B;AAEA,EAAAX,WAAU,MAAM;AACd,UAAM,iBAAiB,CAAC,OAAmB;AACzC,UAAI,CAAC,WAAW,QAAS;AACzB,UAAI,WAAW,QAAQ,SAAS,GAAG,MAAc,EAAG;AACpD,UAAI,wBAAwB;AAC1B,kCAA0B,KAAK;AAC/B;AAAA,MACF;AACA,UAAI,aAAa,CAAC,YAAY;AAC5B,oBAAY;AACZ,qBAAa,KAAK;AAClB;AAAA,MACF;AAAA,IACF;AACA,aAAS,iBAAiB,aAAa,cAAc;AACrD,WAAO,MAAM,SAAS,oBAAoB,aAAa,cAAc;AAAA,EACvE,GAAG,CAAC,WAAW,YAAY,wBAAwB,aAAa,MAAM,CAAC;AAEvE,QAAM,oBAAoB,CAAC,MAAkC;AAC3D,UAAM,OAAO,EAAE;AACf,QAAI,WAAW,WAAW,QAAQ,WAAW,QAAQ,SAAS,IAAI,EAAG;AACrE,QAAI,WAAY;AAChB,QAAI,WAAW;AACb,kBAAY;AACZ,mBAAa,KAAK;AAClB;AAAA,IACF;AAAA,EACF;AAEA,SACE,gBAAAS;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,cAACL;AAAA,cAAA;AAAA,gBACC,QAAM;AAAA,gBACN,OAAO;AAAA,gBACP,UAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBACA,IAAI;AAAA,kBACF,OAAO;AAAA,kBACP,4BAA4B;AAAA,oBAC1B,sBAAsB;AAAA,oBACtB,yBAAyB;AAAA,oBACzB,GAAG;AAAA,kBACL;AAAA,gBACF;AAAA,gBACA,aAAa;AAAA,kBACX,aAAa,CAAC,QAAiB;AAC7B,0BAAM,OACJ,OAAO,QAAQ,WAAW,MAAM,eAAe,YAAY;AAC7D,0BAAM,IAAI,UAAU,KAAK,CAAC,MAAW,EAAE,SAAS,IAAI;AACpD,2BAAO,IAAI,GAAG,EAAE,IAAI,MAAM,EAAE,KAAK,MAAM;AAAA,kBACzC;AAAA,kBACA,QAAQ,MAAM;AACZ,kCAAc,IAAI;AAClB,8CAA0B,IAAI;AAAA,kBAChC;AAAA,kBACA,SAAS,MAAM,cAAc,KAAK;AAAA,gBACpC;AAAA,gBAEC,oBAAU,IAAI,CAAC,WACd,gBAAAM,OAAC,YAA2B,OAAO,OAAO,MACvC;AAAA,yBAAO;AAAA,kBAAK;AAAA,kBAAI,OAAO;AAAA,kBAAM;AAAA,qBADjB,OAAO,IAEtB,CACD;AAAA;AAAA,YACH;AAAA,YACA,gBAAAD;AAAA,cAACL;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA,OAAO,cAAc,kBAAkB,WAAW,IAAI;AAAA,gBACtD,UAAU;AAAA,gBACV,aAAY;AAAA,gBACZ,YAAY;AAAA,kBACV,WAAW;AAAA,kBACX,SAAS;AAAA,kBACT,WAAW;AAAA,gBACb;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,WAAS;AAAA,gBACT,IAAI;AAAA,kBACF,4BAA4B;AAAA,oBAC1B,qBAAqB;AAAA,oBACrB,wBAAwB;AAAA,oBACxB,GAAG;AAAA,kBACL;AAAA,gBACF;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,2BAAQ;","names":["jsx","TablePagination","_a","useTheme","styled","makeStyles","Box","jsx","_a","useTheme","useMediaQuery","jsx","jsxs","alpha","styled","alpha","jsx","jsxs","styled","alpha","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","Button","Typography","alpha","useTheme","jsx","jsxs","useTheme","Button","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","useEffect","useRef","useState","Box","TextField","useTheme","useMediaQuery","alpha","constants","jsx","jsxs","_a"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verma-consulting/design-library",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
4
4
  "description": "Shared MUI-based components for Verma Consulting",
5
5
  "author": "Ankit Verma <ankit@vermadev.com>",
6
6
  "license": "MIT",