@proounce/shared-common 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +16 -0
- package/README.md +430 -2
- package/dist/charts/fusion.cjs +252 -0
- package/dist/charts/fusion.cjs.map +1 -0
- package/dist/charts/fusion.d.cts +78 -0
- package/dist/charts/fusion.d.ts +78 -0
- package/dist/charts/fusion.js +220 -0
- package/dist/charts/fusion.js.map +1 -0
- package/dist/grids/ag-grid.cjs +167 -0
- package/dist/grids/ag-grid.cjs.map +1 -0
- package/dist/grids/ag-grid.d.cts +45 -0
- package/dist/grids/ag-grid.d.ts +45 -0
- package/dist/grids/ag-grid.js +152 -0
- package/dist/grids/ag-grid.js.map +1 -0
- package/dist/icons/lucide.cjs +104 -0
- package/dist/icons/lucide.cjs.map +1 -0
- package/dist/icons/lucide.d.cts +1 -0
- package/dist/icons/lucide.d.ts +1 -0
- package/dist/icons/lucide.js +3 -0
- package/dist/icons/lucide.js.map +1 -0
- package/dist/icons/mui.cjs +1106 -0
- package/dist/icons/mui.cjs.map +1 -0
- package/dist/icons/mui.d.cts +150 -0
- package/dist/icons/mui.d.ts +150 -0
- package/dist/icons/mui.js +152 -0
- package/dist/icons/mui.js.map +1 -0
- package/dist/index.cjs +4468 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1779 -0
- package/dist/index.d.ts +1779 -0
- package/dist/index.js +3371 -0
- package/dist/index.js.map +1 -0
- package/dist/mui-b9ldbP0Q.d.cts +306 -0
- package/dist/mui-b9ldbP0Q.d.ts +306 -0
- package/docs/COMPONENT_AUDIT.md +158 -0
- package/package.json +124 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/buttons/SharedButton.tsx","../src/buttons/SharedIconButton.tsx","../src/buttons/CustomButton.tsx","../src/icons/mui.ts","../src/actions/actionIconData.ts","../src/actions/ActionIcon.tsx","../src/actions/ActionIconButton.tsx","../src/actions/ActionsContainer.tsx","../src/accessibility/controlNames.ts","../src/inputs/SharedTextField.tsx","../src/inputs/SearchInput.tsx","../src/inputs/SelectInput.tsx","../src/inputs/DateInput.tsx","../src/inputs/DateTimeInput.tsx","../src/inputs/AdvancedDropDownList.tsx","../src/inputs/MultiSelectDropDownList.tsx","../src/inputs/DropDownList.tsx","../src/inputs/InputAddons.tsx","../src/inputs/FileInput.tsx","../src/inputs/StandaloneInputs.tsx","../src/inputs/CustomDropZone.tsx","../src/tables/DataTable.tsx","../src/feedback/FeedbackPrimitives.tsx","../src/feedback/InfoTooltip.tsx","../src/tables/TablePrimitives.tsx","../src/forms/FormPrimitives.tsx","../src/forms/GenericRequestPrimitives.tsx","../src/forms/HeaderToggles.tsx","../src/forms/ChoicePrimitives.tsx","../src/feedback/StatusIndicator.tsx","../src/feedback/EmptyState.tsx","../src/feedback/AccessFeedback.tsx","../src/feedback/ErrorPage.tsx","../src/navigation/NavigationPrimitives.tsx","../src/dialogs/ConfirmDialog.tsx","../src/dialogs/Modal.tsx","../src/dialogs/StatusDialog.tsx","../src/dialogs/DialogPrimitives.tsx","../src/layout/Page.tsx","../src/layout/SurfacePrimitives.tsx","../src/layout/LegacyKpiCards.tsx","../src/navigation/BreadcrumbNavigation.tsx","../src/navigation/MainSelector.tsx","../src/navigation/ScrollIndicator.tsx","../src/tables/TableWrapper.tsx","../src/tables/SearchableDataTable.tsx","../src/tables/LegacyTables.tsx","../src/tables/SelectWithTable.tsx","../src/display/ValueDisplay.tsx","../src/display/StandaloneDisplay.tsx","../src/display/DocumentationCards.tsx","../src/display/CardComponents.tsx","../src/display/OperationsInfo.tsx","../src/accessibility/AccessibilityPrimitives.tsx","../src/hooks/useDisplayOrder.ts"],"names":["jsx","default","IconButton","Tooltip","jsxs","CircularProgress","Stack","InputAdornment","SearchIcon","useId","MenuItem","TextField","LocalizationProvider","AdapterDayjs","MuiDateTimePicker","Autocomplete","useRef","FormHelperText","Typography","useState","createElement","Chip","item","Box","DeleteOutlineIcon","useMemo","Popover","DescriptionOutlinedIcon","styled","TableCell","TableSortLabel","TableRow","FunctionsIcon","TableBody","Skeleton","Checkbox","FormControlLabel","Paper","InfoOutlinedIcon","ToggleButton","Dialog","DialogTitle","CloseIcon","DialogContent","CheckCircleOutlineIcon","ErrorOutlineIcon","DialogContentText","DialogActions","CustomTransition","Card","CardContent","OpenInNewIcon","ArrowForwardIosSharpIcon","ArrowBackIcon","Fragment","Button","useEffect","TableContainer","Table","TableHead","CardActions","index","TablePagination","Divider","Link"],"mappings":"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","file":"index.js","sourcesContent":["import Button, { type ButtonProps } from \"@mui/material/Button\";\nimport { Children, isValidElement, type ReactNode } from \"react\";\n\nexport type SharedButtonProps = ButtonProps;\n\nfunction accessibleText(children: ReactNode): string {\n let text = \"\";\n Children.forEach(children, (child) => {\n if (typeof child === \"string\" || typeof child === \"number\") {\n text += String(child);\n } else if (isValidElement<{ children?: ReactNode }>(child)) {\n text += accessibleText(child.props.children);\n }\n });\n return text.trim() || \"Button\";\n}\n\n/** A consistently sized MUI button with accessible defaults. */\nexport function SharedButton({\n children,\n sx,\n ...props\n}: SharedButtonProps) {\n return (\n <Button\n aria-label={props[\"aria-label\"] ?? accessibleText(children)}\n sx={{\n minWidth: 40,\n minHeight: 40,\n borderRadius: 1,\n px: 1.5,\n textTransform: \"none\",\n ...sx,\n }}\n {...props}\n >\n {children}\n </Button>\n );\n}\n\nexport default SharedButton;\n","import IconButton, { type IconButtonProps } from \"@mui/material/IconButton\";\n\nexport interface SharedIconButtonProps extends IconButtonProps {\n \"aria-label\": string;\n}\n\n/** An icon-only button that requires an accessible label. */\nexport function SharedIconButton({ sx, ...props }: SharedIconButtonProps) {\n return (\n <IconButton\n sx={{ width: 40, height: 40, borderRadius: 1, ...sx }}\n {...props}\n />\n );\n}\n\nexport default SharedIconButton;\n","import type { ReactElement } from \"react\";\nimport { SharedButton, type SharedButtonProps } from \"./SharedButton\";\n\nexport interface CustomButtonProps\n extends Omit<SharedButtonProps, \"children\" | \"endIcon\" | \"onClick\" | \"startIcon\" | \"title\"> {\n icon: ReactElement;\n title: string;\n handle: () => void;\n align?: \"left\" | \"right\";\n}\n\n/** Legacy icon/title contract rendered as a native, keyboard-operable button. */\nexport function CustomButton({ icon, title, handle, align = \"left\", ...props }: CustomButtonProps) {\n return (\n <SharedButton\n onClick={handle}\n {...(align === \"left\" ? { startIcon: icon } : { endIcon: icon })}\n {...props}\n >\n {title}\n </SharedButton>\n );\n}\n","// Direct module exports keep the MUI icon barrel out of consumer bundles.\n// This list matches the shared/action component registry; do not wildcard it.\nexport { default as AccessibilityNew } from \"@mui/icons-material/AccessibilityNew\";\nexport { default as AccountTree, default as AccountTreeIcon } from \"@mui/icons-material/AccountTree\";\nexport { default as AccountTreeOutlined, default as AccountTreeOutlinedIcon } from \"@mui/icons-material/AccountTreeOutlined\";\nexport { default as Add, default as AddIcon } from \"@mui/icons-material/Add\";\nexport { default as AddCircleOutline, default as AddCircleOutlineIcon } from \"@mui/icons-material/AddCircleOutline\";\nexport { default as AdminPanelSettings, default as AdminPanelSettingsIcon } from \"@mui/icons-material/AdminPanelSettings\";\nexport { default as Archive } from \"@mui/icons-material/Archive\";\nexport { default as ArrowBack, default as ArrowBackIcon } from \"@mui/icons-material/ArrowBack\";\nexport { default as ArrowForwardIosSharp, default as ArrowForwardIosSharpIcon } from \"@mui/icons-material/ArrowForwardIosSharp\";\nexport { default as ArticleOutlined, default as ArticleOutlinedIcon } from \"@mui/icons-material/ArticleOutlined\";\nexport { default as AssessmentOutlined } from \"@mui/icons-material/AssessmentOutlined\";\nexport { default as AssignmentOutlined, default as AssignmentOutlinedIcon } from \"@mui/icons-material/AssignmentOutlined\";\nexport { default as AssignmentTurnedIn } from \"@mui/icons-material/AssignmentTurnedIn\";\nexport { default as AttachMoney } from \"@mui/icons-material/AttachMoney\";\nexport { default as Attachment, default as AttachmentIcon } from \"@mui/icons-material/Attachment\";\nexport { default as AutoModeOutlined } from \"@mui/icons-material/AutoModeOutlined\";\nexport { default as BackupTable, default as BackupTableIcon } from \"@mui/icons-material/BackupTable\";\nexport { default as BookmarkAdded } from \"@mui/icons-material/BookmarkAdded\";\nexport { default as BrightnessAuto } from \"@mui/icons-material/BrightnessAuto\";\nexport { default as Business } from \"@mui/icons-material/Business\";\nexport { default as BusinessCenterOutlined } from \"@mui/icons-material/BusinessCenterOutlined\";\nexport { default as CableOutlined } from \"@mui/icons-material/CableOutlined\";\nexport { default as Cached } from \"@mui/icons-material/Cached\";\nexport { default as Cancel, default as CancelIcon } from \"@mui/icons-material/Cancel\";\nexport { default as Check, default as CheckIcon } from \"@mui/icons-material/Check\";\nexport { default as CheckCircle, default as CheckCircleIcon } from \"@mui/icons-material/CheckCircle\";\nexport { default as CheckCircleOutline } from \"@mui/icons-material/CheckCircleOutline\";\nexport { default as Close, default as CloseIcon } from \"@mui/icons-material/Close\";\nexport { default as Comment, default as CommentIcon } from \"@mui/icons-material/Comment\";\nexport { default as Compare, default as CompareIcon } from \"@mui/icons-material/Compare\";\nexport { default as CompareArrows } from \"@mui/icons-material/CompareArrows\";\nexport { default as ContactEmergency } from \"@mui/icons-material/ContactEmergency\";\nexport { default as ContentCopy, default as ContentCopyIcon } from \"@mui/icons-material/ContentCopy\";\nexport { default as ContentCopyOutlined } from \"@mui/icons-material/ContentCopyOutlined\";\nexport { default as CorporateFare, default as CorporateFareIcon } from \"@mui/icons-material/CorporateFare\";\nexport { default as CurrencyExchange } from \"@mui/icons-material/CurrencyExchange\";\nexport { default as DeleteForever } from \"@mui/icons-material/DeleteForever\";\nexport { default as DeleteForeverOutlined } from \"@mui/icons-material/DeleteForeverOutlined\";\nexport { default as DeleteOutline, default as DeleteOutlineIcon } from \"@mui/icons-material/DeleteOutline\";\nexport { default as DeleteOutlined } from \"@mui/icons-material/DeleteOutlined\";\nexport { default as DescriptionOutlined } from \"@mui/icons-material/DescriptionOutlined\";\nexport { default as Difference } from \"@mui/icons-material/Difference\";\nexport { default as DoneAllOutlined } from \"@mui/icons-material/DoneAllOutlined\";\nexport { default as DoneOutline } from \"@mui/icons-material/DoneOutline\";\nexport { default as Download, default as DownloadIcon } from \"@mui/icons-material/Download\";\nexport { default as EditOutlined, default as EditOutlinedIcon } from \"@mui/icons-material/EditOutlined\";\nexport { default as Email, default as EmailIcon } from \"@mui/icons-material/Email\";\nexport { default as Equalizer } from \"@mui/icons-material/Equalizer\";\nexport { default as ErrorOutlineOutlined, default as ErrorIcon } from \"@mui/icons-material/ErrorOutlineOutlined\";\nexport { default as EventSeat } from \"@mui/icons-material/EventSeat\";\nexport { default as FileCopy } from \"@mui/icons-material/FileCopy\";\nexport { default as FileCopyOutlined } from \"@mui/icons-material/FileCopyOutlined\";\nexport { default as FileUpload } from \"@mui/icons-material/FileUpload\";\nexport { default as FileUploadOutlined, default as FileUploadOutlinedIcon } from \"@mui/icons-material/FileUploadOutlined\";\nexport { default as FilterAlt, default as FilterAltIcon } from \"@mui/icons-material/FilterAlt\";\nexport { default as FilterList, default as FilterListIcon } from \"@mui/icons-material/FilterList\";\nexport { default as FilterListOff } from \"@mui/icons-material/FilterListOff\";\nexport { default as Flag } from \"@mui/icons-material/Flag\";\nexport { default as FlagOutlined } from \"@mui/icons-material/FlagOutlined\";\nexport { default as FolderOpen } from \"@mui/icons-material/FolderOpen\";\nexport { default as Functions, default as FunctionsIcon } from \"@mui/icons-material/Functions\";\nexport { default as GetApp } from \"@mui/icons-material/GetApp\";\nexport { default as Group, default as GroupIcon } from \"@mui/icons-material/Group\";\nexport { default as GroupAdd } from \"@mui/icons-material/GroupAdd\";\nexport { default as GroupAddOutlined } from \"@mui/icons-material/GroupAddOutlined\";\nexport { default as GroupWorkOutlined } from \"@mui/icons-material/GroupWorkOutlined\";\nexport { default as Handshake } from \"@mui/icons-material/Handshake\";\nexport { default as HelpOutline, default as HelpOutlineIcon } from \"@mui/icons-material/HelpOutline\";\nexport { default as History, default as HistoryIcon } from \"@mui/icons-material/History\";\nexport { default as HistoryOutlined } from \"@mui/icons-material/HistoryOutlined\";\nexport { default as HorizontalSplitOutlined } from \"@mui/icons-material/HorizontalSplitOutlined\";\nexport { default as HourglassEmpty } from \"@mui/icons-material/HourglassEmpty\";\nexport { default as HowToVote } from \"@mui/icons-material/HowToVote\";\nexport { default as HttpOutlined } from \"@mui/icons-material/HttpOutlined\";\nexport { default as ImportContacts } from \"@mui/icons-material/ImportContacts\";\nexport { default as ImportExport } from \"@mui/icons-material/ImportExport\";\nexport { default as InfoOutlined, default as InfoOutlinedIcon } from \"@mui/icons-material/InfoOutlined\";\nexport { default as InsertChartOutlined } from \"@mui/icons-material/InsertChartOutlined\";\nexport { default as IosShareOutlined } from \"@mui/icons-material/IosShareOutlined\";\nexport { default as Link } from \"@mui/icons-material/Link\";\nexport { default as List } from \"@mui/icons-material/List\";\nexport { default as MailOutline } from \"@mui/icons-material/MailOutline\";\nexport { default as ManageAccounts, default as ManageAccountsIcon } from \"@mui/icons-material/ManageAccounts\";\nexport { default as Menu, default as MenuIcon } from \"@mui/icons-material/Menu\";\nexport { default as MenuBook } from \"@mui/icons-material/MenuBook\";\nexport { default as MonetizationOn } from \"@mui/icons-material/MonetizationOn\";\nexport { default as MoreVert, default as MoreVertIcon } from \"@mui/icons-material/MoreVert\";\nexport { default as NextWeek } from \"@mui/icons-material/NextWeek\";\nexport { default as Nfc } from \"@mui/icons-material/Nfc\";\nexport { default as OpenInNew, default as OpenInNewIcon } from \"@mui/icons-material/OpenInNew\";\nexport { default as PanToolOutlined } from \"@mui/icons-material/PanToolOutlined\";\nexport { default as PauseCircleOutline } from \"@mui/icons-material/PauseCircleOutline\";\nexport { default as PeopleAltOutlined, default as PeopleAltOutlinedIcon } from \"@mui/icons-material/PeopleAltOutlined\";\nexport { default as Person } from \"@mui/icons-material/Person\";\nexport { default as PersonOutlineOutlined } from \"@mui/icons-material/PersonOutlineOutlined\";\nexport { default as PlayCircle } from \"@mui/icons-material/PlayCircle\";\nexport { default as PlayCircleOutlined } from \"@mui/icons-material/PlayCircleOutlined\";\nexport { default as PlaylistAddCheck } from \"@mui/icons-material/PlaylistAddCheck\";\nexport { default as PostAddOutlined } from \"@mui/icons-material/PostAddOutlined\";\nexport { default as PreviewRounded, default as PreviewRoundedIcon } from \"@mui/icons-material/PreviewRounded\";\nexport { default as PriceChangeOutlined } from \"@mui/icons-material/PriceChangeOutlined\";\nexport { default as Print } from \"@mui/icons-material/Print\";\nexport { default as Publish, default as PublishIcon } from \"@mui/icons-material/Publish\";\nexport { default as PublishedWithChanges } from \"@mui/icons-material/PublishedWithChanges\";\nexport { default as RecentActorsOutlined } from \"@mui/icons-material/RecentActorsOutlined\";\nexport { default as RecommendOutlined } from \"@mui/icons-material/RecommendOutlined\";\nexport { default as Refresh, default as RefreshIcon } from \"@mui/icons-material/Refresh\";\nexport { default as ReorderOutlined } from \"@mui/icons-material/ReorderOutlined\";\nexport { default as Repeat, default as RepeatIcon } from \"@mui/icons-material/Repeat\";\nexport { default as RequestQuoteOutlined } from \"@mui/icons-material/RequestQuoteOutlined\";\nexport { default as RestartAlt } from \"@mui/icons-material/RestartAlt\";\nexport { default as Rule } from \"@mui/icons-material/Rule\";\nexport { default as RuleOutlined } from \"@mui/icons-material/RuleOutlined\";\nexport { default as SafetyDivider } from \"@mui/icons-material/SafetyDivider\";\nexport { default as Search, default as SearchIcon } from \"@mui/icons-material/Search\";\nexport { default as Security } from \"@mui/icons-material/Security\";\nexport { default as Send, default as SendIcon } from \"@mui/icons-material/Send\";\nexport { default as Settings, default as SettingsIcon } from \"@mui/icons-material/Settings\";\nexport { default as SettingsEthernet } from \"@mui/icons-material/SettingsEthernet\";\nexport { default as Share } from \"@mui/icons-material/Share\";\nexport { default as SimCardDownload } from \"@mui/icons-material/SimCardDownload\";\nexport { default as SlowMotionVideoOutlined } from \"@mui/icons-material/SlowMotionVideoOutlined\";\nexport { default as Sort } from \"@mui/icons-material/Sort\";\nexport { default as SpaceDashboardOutlined } from \"@mui/icons-material/SpaceDashboardOutlined\";\nexport { default as Speed } from \"@mui/icons-material/Speed\";\nexport { default as Star, default as StarIcon } from \"@mui/icons-material/Star\";\nexport { default as StarBorder, default as StarBorderIcon } from \"@mui/icons-material/StarBorder\";\nexport { default as Stop } from \"@mui/icons-material/Stop\";\nexport { default as SupervisedUserCircleOutlined } from \"@mui/icons-material/SupervisedUserCircleOutlined\";\nexport { default as SupervisorAccountOutlined } from \"@mui/icons-material/SupervisorAccountOutlined\";\nexport { default as SwapCalls } from \"@mui/icons-material/SwapCalls\";\nexport { default as Sync } from \"@mui/icons-material/Sync\";\nexport { default as SyncAlt } from \"@mui/icons-material/SyncAlt\";\nexport { default as TableChartOutlined } from \"@mui/icons-material/TableChartOutlined\";\nexport { default as Tag } from \"@mui/icons-material/Tag\";\nexport { default as TaskAlt } from \"@mui/icons-material/TaskAlt\";\nexport { default as ThumbDownOutlined } from \"@mui/icons-material/ThumbDownOutlined\";\nexport { default as ThumbUpOutlined } from \"@mui/icons-material/ThumbUpOutlined\";\nexport { default as TimerOutlined } from \"@mui/icons-material/TimerOutlined\";\nexport { default as Toc } from \"@mui/icons-material/Toc\";\nexport { default as TornadoOutlined } from \"@mui/icons-material/TornadoOutlined\";\nexport { default as TrackChanges } from \"@mui/icons-material/TrackChanges\";\nexport { default as UploadFileOutlined, default as UploadFileOutlinedIcon } from \"@mui/icons-material/UploadFileOutlined\";\nexport { default as VerifiedUser } from \"@mui/icons-material/VerifiedUser\";\nexport { default as VerifiedUserOutlined } from \"@mui/icons-material/VerifiedUserOutlined\";\nexport { default as VerticalSplit } from \"@mui/icons-material/VerticalSplit\";\nexport { default as ViewComfy } from \"@mui/icons-material/ViewComfy\";\nexport { default as ViewHeadline } from \"@mui/icons-material/ViewHeadline\";\nexport { default as Visibility, default as VisibilityIcon } from \"@mui/icons-material/Visibility\";\nexport { default as WarningOutlined, default as WarningOutlinedIcon } from \"@mui/icons-material/WarningOutlined\";\n","import type { SvgIconProps } from \"@mui/material/SvgIcon\";\nimport type { ComponentType } from \"react\";\nimport * as MuiIcons from \"../icons/mui\";\n\nexport type ActionColor = SvgIconProps[\"color\"];\nexport type ActionIconName = keyof typeof MuiIcons;\nexport interface ActionIconDefinition {\n icon: ActionIconName;\n defaultColor: ActionColor;\n}\n\nconst item = (\n icon: ActionIconName,\n defaultColor: ActionColor = \"primary\",\n): ActionIconDefinition => ({ icon, defaultColor });\n\n/** Legacy action purposes retained for incremental application migration. */\nexport const ActionIconData = {\n default: item(\"HelpOutline\", \"secondary\"),\n add: item(\"AddCircleOutline\"),\n copy: item(\"ContentCopy\", \"error\"),\n download: item(\"Download\", \"warning\"),\n fileupload: item(\"UploadFileOutlined\", \"secondary\"),\n upload: item(\"FileUploadOutlined\", \"success\"),\n import: item(\"ImportContacts\", \"warning\"),\n export: item(\"ImportExport\", \"secondary\"),\n edit: item(\"EditOutlined\"),\n delete: item(\"DeleteOutline\", \"error\"),\n withdraw: item(\"DeleteForeverOutlined\", \"secondary\"),\n view: item(\"Visibility\"),\n viewDetails: item(\"Visibility\"),\n preview: item(\"PreviewRounded\"),\n info: item(\"InfoOutlined\"),\n search: item(\"Search\"),\n save: item(\"AssignmentTurnedIn\", \"success\"),\n send: item(\"Send\"),\n email: item(\"Email\", \"success\"),\n refresh: item(\"Refresh\", \"error\"),\n close: item(\"Close\", \"error\"),\n cancel: item(\"Cancel\", \"error\"),\n history: item(\"History\", \"warning\"),\n reschedule: item(\"HistoryOutlined\", \"secondary\"),\n attachment: item(\"Attachment\"),\n comment: item(\"Comment\", \"secondary\"),\n mom: item(\"Comment\", \"success\"),\n favourite: item(\"Star\", \"warning\"),\n unFavourite: item(\"StarBorder\", \"warning\"),\n success: item(\"ThumbUpOutlined\", \"success\"),\n error: item(\"ThumbDownOutlined\", \"error\"),\n warning: item(\"ErrorOutlineOutlined\", \"warning\"),\n compare: item(\"Compare\", \"secondary\"),\n compareArrows: item(\"CompareArrows\", \"secondary\"),\n showChanges: item(\"Difference\", \"secondary\"),\n validate: item(\"PublishedWithChanges\", \"warning\"),\n validateUser: item(\"VerifiedUser\", \"secondary\"),\n protect: item(\"VerifiedUser\", \"success\"),\n unProtect: item(\"VerifiedUserOutlined\"),\n resend: item(\"Repeat\", \"secondary\"),\n restart: item(\"RestartAlt\", \"warning\"),\n cached: item(\"Cached\", \"secondary\"),\n regenerate: item(\"Cached\", \"secondary\"),\n sync: item(\"Sync\", \"secondary\"),\n modifyAccounting: item(\"SyncAlt\", \"warning\"),\n config: item(\"Settings\"),\n details: item(\"ArticleOutlined\"),\n list: item(\"AssignmentOutlined\"),\n folder: item(\"FolderOpen\"),\n more: item(\"MoreVert\", \"inherit\"),\n share: item(\"IosShareOutlined\", \"warning\"),\n shareFilters: item(\"Share\", \"success\"),\n filterLists: item(\"List\"),\n filterOptions: item(\"Sort\"),\n addToFilterList: item(\"FilterList\"),\n removeFromFilterList: item(\"FilterListOff\", \"error\"),\n advanceFilter: item(\"FilterList\"),\n run: item(\"PlayCircleOutlined\"),\n play: item(\"PlayCircle\"),\n pause: item(\"PauseCircleOutline\", \"secondary\"),\n stop: item(\"Stop\", \"error\"),\n publish: item(\"Publish\", \"warning\"),\n generate: item(\"PostAddOutlined\"),\n generateTemplate: item(\"SimCardDownload\", \"secondary\"),\n viewTable: item(\"BackupTable\"),\n viewLogs: item(\"BackupTable\"),\n dashboard: item(\"SpaceDashboardOutlined\", \"secondary\"),\n chart: item(\"AssessmentOutlined\", \"secondary\"),\n viewDashboard: item(\"InsertChartOutlined\", \"secondary\"),\n rule: item(\"Rule\"),\n businessRuleGroups: item(\"RuleOutlined\"),\n ruleParameters: item(\"Menu\"),\n accounttree: item(\"AccountTree\"),\n collapse: item(\"AccountTree\"),\n expand: item(\"AccountTreeOutlined\"),\n user: item(\"Group\"),\n attendees: item(\"PeopleAltOutlined\"),\n goToUsers: item(\"GroupAdd\"),\n planningUsers: item(\"GroupAddOutlined\"),\n inquiryUsers: item(\"ManageAccounts\"),\n roles: item(\"AccessibilityNew\", \"secondary\"),\n administrator: item(\"AdminPanelSettings\"),\n divisions: item(\"CorporateFare\"),\n organization: item(\"NextWeek\"),\n businessOwner: item(\"BusinessCenterOutlined\"),\n pointOfContact: item(\"ContactEmergency\"),\n goToDivision: item(\"SafetyDivider\"),\n goToFunding: item(\"AttachMoney\"),\n goToTarget: item(\"Speed\"),\n goToRequest: item(\"HowToVote\"),\n goToBusiness: item(\"PlaylistAddCheck\"),\n goToDistribution: item(\"MailOutline\"),\n fund: item(\"Settings\", \"info\"),\n funds: item(\"Tag\", \"secondary\"),\n fundCodes: item(\"AssignmentOutlined\"),\n fundType: item(\"AssignmentOutlined\"),\n budgetApprover: item(\"CurrencyExchange\", \"error\"),\n budgetFacilitators: item(\"MonetizationOn\"),\n fmdDivisionDirector: item(\"SupervisedUserCircleOutlined\", \"secondary\"),\n cfo: item(\"SupervisorAccountOutlined\"),\n dcfo: item(\"SupervisorAccountOutlined\", \"secondary\"),\n submitPrism: item(\"TornadoOutlined\", \"secondary\"),\n showCostElement: item(\"RequestQuoteOutlined\"),\n connect: item(\"CableOutlined\", \"secondary\"),\n httpRequests: item(\"HttpOutlined\"),\n handshakeView: item(\"Handshake\", \"secondary\"),\n copyTemplate: item(\"FileCopyOutlined\"),\n fileCopy: item(\"FileCopy\"),\n templateMapping: item(\"Link\", \"secondary\"),\n template: item(\"Nfc\"),\n templateSection: item(\"EventSeat\"),\n sectionField: item(\"Toc\"),\n value: item(\"SettingsEthernet\"),\n processSuccess: item(\"CheckCircleOutline\", \"success\"),\n processError: item(\"ErrorOutlineOutlined\", \"error\"),\n processProcessing: item(\"HourglassEmpty\", \"secondary\"),\n terminated: item(\"WarningOutlined\", \"warning\"),\n terminate: item(\"PanToolOutlined\"),\n recommend: item(\"RecommendOutlined\", \"success\"),\n checkStatus: item(\"CheckCircle\", \"success\"),\n archive: item(\"Archive\", \"warning\"),\n acquisition: item(\"AssignmentOutlined\"),\n acquisitionUser: item(\"Group\"),\n acquisitionVehicles: item(\"CorporateFare\"),\n addAdvancedFilter: item(\"Add\"),\n addFavorite: item(\"PostAddOutlined\", \"secondary\"),\n additionalDetails: item(\"ViewComfy\"),\n addReminder: item(\"AddCircleOutline\", \"warning\"),\n addToFavorites: item(\"FlagOutlined\", \"warning\"),\n adminpanelsettings: item(\"AdminPanelSettings\", \"success\"),\n allocations: item(\"TrackChanges\", \"secondary\"),\n articleoutlined: item(\"ArticleOutlined\"),\n assignFundTypes: item(\"AutoModeOutlined\", \"secondary\"),\n assignmentoutlined: item(\"AssignmentOutlined\"),\n assingFundTypes: item(\"AutoModeOutlined\", \"secondary\"),\n automode: item(\"AutoModeOutlined\", \"secondary\"),\n backuptable: item(\"BackupTable\"),\n baselineChanges: item(\"Compare\", \"secondary\"),\n bmsCompPlan: item(\"DescriptionOutlined\", \"secondary\"),\n budgetAdministrator: item(\"AdminPanelSettings\", \"success\"),\n budgetLiaisons: item(\"Person\"),\n budgetReview: item(\"CurrencyExchange\", \"error\"),\n businessLines: item(\"AssignmentOutlined\"),\n BusinessRule: item(\"SwapCalls\"),\n businessRules: item(\"AssignmentOutlined\"),\n calColumn: item(\"Functions\"),\n changeOwner: item(\"PersonOutlineOutlined\", \"secondary\"),\n completeGovernce: item(\"AssignmentTurnedIn\", \"success\"),\n configDetails: item(\"Settings\", \"secondary\"),\n configRequestType: item(\"Settings\", \"secondary\"),\n copyFundType: item(\"FileCopyOutlined\"),\n copyRequestDetails: item(\"ContentCopy\", \"secondary\"),\n copySettings: item(\"Print\"),\n corporatefare: item(\"CorporateFare\"),\n currencyexchange: item(\"CurrencyExchange\", \"error\"),\n defer: item(\"ThumbDownOutlined\", \"error\"),\n deleteforever: item(\"DeleteForever\", \"secondary\"),\n deleteforeveroutlined: item(\"DeleteForeverOutlined\", \"secondary\"),\n deleteoutline: item(\"DeleteOutline\", \"error\"),\n descriptionoutlined: item(\"DescriptionOutlined\", \"secondary\"),\n difference: item(\"Difference\", \"secondary\"),\n distributionGroup: item(\"SwapCalls\"),\n downloadBaseline: item(\"DescriptionOutlined\", \"secondary\"),\n downloadBaselineMonthly: item(\"SimCardDownload\"),\n downloadDocument: item(\"Download\", \"secondary\"),\n downloadLogs: item(\"DescriptionOutlined\"),\n downloadMonthlyDetails: item(\"TableChartOutlined\"),\n downloadSpendLines: item(\"SimCardDownload\"),\n editoutlined: item(\"EditOutlined\"),\n equalizer: item(\"Equalizer\"),\n executive: item(\"Group\"),\n executivesApprover: item(\"Group\"),\n executiveUser: item(\"ManageAccounts\", \"secondary\"),\n executiveUsers: item(\"ManageAccounts\", \"secondary\"),\n filecopyoutlined: item(\"FileCopyOutlined\"),\n filter: item(\"FilterAlt\"),\n filterlist: item(\"FilterList\"),\n filterListValue: item(\"List\"),\n finalize: item(\"DoneAllOutlined\", \"success\"),\n finalizePublish: item(\"Publish\", \"success\"),\n financialAgents: item(\"Group\"),\n fundDetail: item(\"AssignmentOutlined\"),\n fundGroup: item(\"Group\"),\n getapp: item(\"GetApp\"),\n goToAttendess: item(\"PeopleAltOutlined\"),\n goToReminders: item(\"TimerOutlined\"),\n goToTag: item(\"AssignmentOutlined\"),\n goToUser: item(\"BrightnessAuto\", \"info\"),\n group: item(\"Group\"),\n groupadd: item(\"GroupAdd\"),\n groupaddoutlined: item(\"GroupAddOutlined\"),\n groupDetails: item(\"RecentActorsOutlined\"),\n groupEntities: item(\"List\"),\n infooutlined: item(\"InfoOutlined\"),\n initiateReview: item(\"BookmarkAdded\"),\n keyProjects: item(\"AssignmentOutlined\"),\n lookUps: item(\"AssignmentOutlined\"),\n manageaccounts: item(\"ManageAccounts\", \"secondary\"),\n menu: item(\"Menu\"),\n message: item(\"SwapCalls\"),\n monetizationon: item(\"MonetizationOn\"),\n moreDetails: item(\"GroupWorkOutlined\"),\n notificationEvent: item(\"SwapCalls\"),\n outYearsForecast: item(\"PriceChangeOutlined\"),\n pastSubmissions: item(\"ReorderOutlined\"),\n peoplealtoutlined: item(\"PeopleAltOutlined\"),\n pinDocument: item(\"FlagOutlined\", \"warning\"),\n planningApprovers: item(\"TaskAlt\"),\n planningFacilitators: item(\"PeopleAltOutlined\"),\n planningLiaisons: item(\"Group\"),\n playcircle: item(\"PlayCircle\"),\n previousLog: item(\"Archive\", \"warning\"),\n price: item(\"PriceChangeOutlined\"),\n privilege: item(\"PeopleAltOutlined\"),\n profileValue: item(\"Group\"),\n programs: item(\"AssignmentOutlined\"),\n publishedwithchanges: item(\"PublishedWithChanges\", \"warning\"),\n publishReview: item(\"Publish\"),\n recallDivision: item(\"AssignmentTurnedIn\", \"warning\"),\n recommendoutlined: item(\"RecommendOutlined\", \"success\"),\n removeFromFavorites: item(\"Flag\", \"warning\"),\n repeat: item(\"Repeat\", \"secondary\"),\n report: item(\"DescriptionOutlined\"),\n reportSet: item(\"HorizontalSplitOutlined\"),\n requestType: item(\"AssignmentOutlined\"),\n resendReview: item(\"Repeat\", \"secondary\"),\n resubmit: item(\"SlowMotionVideoOutlined\"),\n reviewApprove: item(\"AssignmentTurnedIn\", \"success\"),\n reviewComplete: item(\"AssignmentTurnedIn\"),\n reviewResend: item(\"AssignmentTurnedIn\", \"error\"),\n ruleoutlined: item(\"RuleOutlined\"),\n RuleOutlinedIcon: item(\"Group\"),\n saveDetail: item(\"Check\", \"success\"),\n scheduleApproval: item(\"RecommendOutlined\", \"success\"),\n selectDivisions: item(\"Business\", \"secondary\"),\n selectProgramOffice: item(\"Business\", \"secondary\"),\n settings: item(\"Settings\"),\n sharedRequest: item(\"VerticalSplit\"),\n shareSecurity: item(\"Security\", \"secondary\"),\n simcarddownload: item(\"SimCardDownload\", \"secondary\"),\n star: item(\"Star\", \"warning\"),\n starborder: item(\"StarBorder\", \"warning\"),\n subActivities: item(\"Group\"),\n tablechartoutlined: item(\"TableChartOutlined\"),\n tag: item(\"Tag\", \"secondary\"),\n target: item(\"TrackChanges\", \"secondary\"),\n taskalt: item(\"TaskAlt\"),\n terminateSession: item(\"Settings\"),\n thumbdownoutlined: item(\"ThumbDownOutlined\", \"error\"),\n thumbupoutlined: item(\"ThumbUpOutlined\", \"success\"),\n timeroutlined: item(\"TimerOutlined\"),\n tornadooutlined: item(\"TornadoOutlined\", \"secondary\"),\n unpinDocument: item(\"Flag\", \"warning\"),\n updateLog: item(\"Check\", \"success\"),\n uploadFile: item(\"FileUpload\"),\n userApplication: item(\"Settings\", \"success\"),\n usersAC: item(\"Business\", \"info\"),\n usersProgramOffices: item(\"Business\"),\n usersRoles: item(\"BrightnessAuto\"),\n validateConnection: item(\"DoneOutline\"),\n validationGroups: item(\"PlaylistAddCheck\"),\n validationRule: item(\"SwapCalls\"),\n validationRules: item(\"AssignmentOutlined\"),\n viewAdjustments: item(\"Equalizer\"),\n viewBudgetFacilitator: item(\"Group\"),\n viewBudgetLiaisons: item(\"Group\"),\n viewcomfy: item(\"ViewComfy\"),\n viewDocument: item(\"MenuBook\", \"disabled\"),\n viewheadline: item(\"ViewHeadline\", \"secondary\"),\n viewPrism: item(\"BackupTable\"),\n ViewSuppliers: item(\"DescriptionOutlined\", \"secondary\"),\n visibility: item(\"Visibility\"),\n} as const satisfies Record<string, ActionIconDefinition>;\n\nexport type ActionPurpose = keyof typeof ActionIconData;\nexport const actionIconRegistry = MuiIcons as Record<\n ActionIconName,\n ComponentType<SvgIconProps>\n>;\n\nexport const ActionIconButtonData = ActionIconData;\n\nexport default ActionIconData;\n","import Badge, { type BadgeProps } from \"@mui/material/Badge\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport IconButton, { type IconButtonProps } from \"@mui/material/IconButton\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport type { ComponentType } from \"react\";\nimport type { SvgIconProps } from \"@mui/material/SvgIcon\";\nimport {\n ActionIconData,\n actionIconRegistry,\n type ActionPurpose,\n} from \"./actionIconData\";\n\nexport interface ActionIconProps\n extends Omit<IconButtonProps, \"color\" | \"size\" | \"title\" | \"type\"> {\n purpose?: ActionPurpose;\n type?: ActionPurpose;\n title?: string;\n icon?: ComponentType<SvgIconProps>;\n iconSize?: number | string;\n color?: SvgIconProps[\"color\"];\n loading?: boolean;\n count?: BadgeProps[\"badgeContent\"];\n showBadge?: boolean;\n countColor?: BadgeProps[\"color\"];\n}\n\nexport function ActionIcon({\n purpose = \"default\",\n type,\n title,\n icon,\n iconSize = 18,\n color,\n loading = false,\n count,\n showBadge = false,\n countColor = \"secondary\",\n ...props\n}: ActionIconProps) {\n const action = ActionIconData[type ?? purpose] ?? ActionIconData.default;\n const Icon = icon ?? actionIconRegistry[action.icon];\n const label = title || `${type ?? purpose} action`;\n const renderedIcon = (\n <Icon color={color ?? action.defaultColor} sx={{ fontSize: iconSize }} />\n );\n\n return (\n <Tooltip title={label}>\n <span>\n <IconButton\n aria-label={label}\n disabled={loading || props.disabled}\n {...props}\n >\n {showBadge ? (\n <Badge badgeContent={count} color={countColor} showZero>\n {renderedIcon}\n </Badge>\n ) : (\n renderedIcon\n )}\n {loading ? (\n <CircularProgress\n color=\"inherit\"\n size={20}\n sx={{ position: \"absolute\" }}\n />\n ) : null}\n </IconButton>\n </span>\n </Tooltip>\n );\n}\n\nexport default ActionIcon;\n","import CircularProgress from \"@mui/material/CircularProgress\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport type { ReactNode } from \"react\";\nimport { SharedButton, type SharedButtonProps } from \"../buttons/SharedButton\";\nimport {\n ActionIconData,\n actionIconRegistry,\n type ActionPurpose,\n} from \"./actionIconData\";\n\nexport interface ActionIconButtonProps extends Omit<SharedButtonProps, \"type\"> {\n purpose?: ActionPurpose;\n type?: ActionPurpose;\n title?: string;\n icon?: ReactNode;\n loading?: boolean;\n}\n\nexport function ActionIconButton({\n purpose = \"default\",\n type,\n title,\n icon,\n loading = false,\n children,\n ...props\n}: ActionIconButtonProps) {\n const action = ActionIconData[type ?? purpose] ?? ActionIconData.default;\n const Icon = actionIconRegistry[action.icon];\n const label = title || `${type ?? purpose} action`;\n const buttonColor =\n action.defaultColor === \"action\" || action.defaultColor === \"disabled\"\n ? \"inherit\"\n : action.defaultColor;\n return (\n <Tooltip title={label} placement=\"bottom\">\n <span>\n <SharedButton\n aria-label={label}\n color={buttonColor}\n variant=\"outlined\"\n disabled={loading || props.disabled}\n {...props}\n >\n {loading ? <CircularProgress color=\"inherit\" size={20} /> : null}\n {icon ?? <Icon sx={{ fontSize: 20 }} />}\n {children}\n </SharedButton>\n </span>\n </Tooltip>\n );\n}\n\nexport default ActionIconButton;\n","import Stack, { type StackProps } from \"@mui/material/Stack\";\n\nexport function ActionsContainer(props: StackProps) {\n return <Stack direction=\"row\" spacing={0.5} alignItems=\"center\" {...props} />;\n}\n\nexport default ActionsContainer;\n","export interface ControlNameOptions {\n label?: unknown;\n ariaLabel?: unknown;\n name?: string;\n id?: string;\n backupName: string;\n}\n\n/** Turns common field identifiers into a readable last-resort accessible name. */\nexport function humanizeControlName(value?: string) {\n const normalized = value\n ?.replace(/[_-]+/g, \" \")\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/\\s+/g, \" \")\n .trim();\n return normalized ? normalized.charAt(0).toUpperCase() + normalized.slice(1) : undefined;\n}\n\n/**\n * A visible string label is associated by the component and therefore wins.\n * Otherwise prefer an explicit aria-label, then a readable name/id, then the\n * component's documented backup name.\n */\nexport function resolveControlName({\n label,\n ariaLabel,\n name,\n id,\n backupName,\n}: ControlNameOptions) {\n if (typeof label === \"string\" && label.trim()) return label.trim();\n if (typeof ariaLabel === \"string\" && ariaLabel.trim()) return ariaLabel.trim();\n return humanizeControlName(name) ?? humanizeControlName(id) ?? backupName;\n}\n","import TextField, { type TextFieldProps } from \"@mui/material/TextField\";\nimport { useId } from \"react\";\nimport { resolveControlName } from \"../accessibility/controlNames\";\n\nexport type SharedTextFieldProps = TextFieldProps & {\n /** Accessible name used only when label, aria-label, name and id are absent. */\n backupName?: string;\n};\n\n/** A full-width text field with the legacy library's compact defaults. */\nexport function SharedTextField({\n size = \"small\",\n variant = \"outlined\",\n InputLabelProps,\n inputProps,\n id,\n name,\n label,\n backupName = \"Text input\",\n ...props\n}: SharedTextFieldProps) {\n const generatedId = useId().replace(/:/g, \"\");\n const controlId = id ?? `shared-text-field-${generatedId}`;\n const accessibleName = resolveControlName({\n label,\n ariaLabel: inputProps?.[\"aria-label\"],\n name,\n id,\n backupName,\n });\n return (\n <TextField\n fullWidth\n size={size}\n variant={variant}\n id={controlId}\n name={name}\n label={label}\n InputLabelProps={{ shrink: true, ...InputLabelProps }}\n inputProps={{\n autoComplete: \"off\",\n \"data-gramm\": \"false\",\n ...(!label && !inputProps?.[\"aria-labelledby\"] ? { \"aria-label\": accessibleName } : {}),\n ...inputProps,\n }}\n {...props}\n />\n );\n}\n\nexport default SharedTextField;\n","import InputAdornment from \"@mui/material/InputAdornment\";\nimport SearchIcon from \"@mui/icons-material/Search\";\nimport { useEffect, useRef, type MutableRefObject } from \"react\";\nimport { SharedIconButton } from \"../buttons/SharedIconButton\";\nimport { SharedTextField, type SharedTextFieldProps } from \"./SharedTextField\";\n\nexport interface SearchInputProps\n extends Omit<SharedTextFieldProps, \"type\" | \"onChange\"> {\n onChange?: SharedTextFieldProps[\"onChange\"];\n onSearch?: (value: string) => void;\n shortcut?: boolean;\n}\n\n/** Search input with submit affordance and optional Shift+S focus shortcut. */\nexport function SearchInput({\n label = \"Search\",\n onSearch,\n shortcut = true,\n InputProps,\n inputRef,\n ...props\n}: SearchInputProps) {\n const localRef = useRef<HTMLInputElement | null>(null);\n\n useEffect(() => {\n if (!shortcut) return undefined;\n const focusSearch = (event: KeyboardEvent) => {\n const target = event.target as HTMLElement | null;\n const isEditing =\n target?.tagName === \"INPUT\" ||\n target?.tagName === \"TEXTAREA\" ||\n target?.isContentEditable;\n if (event.shiftKey && event.key.toLowerCase() === \"s\" && !isEditing) {\n event.preventDefault();\n localRef.current?.focus();\n }\n };\n document.addEventListener(\"keydown\", focusSearch);\n return () => document.removeEventListener(\"keydown\", focusSearch);\n }, [shortcut]);\n\n const submit = () => onSearch?.(String(localRef.current?.value ?? \"\"));\n\n return (\n <SharedTextField\n {...props}\n label={label}\n type=\"search\"\n inputRef={(element) => {\n localRef.current = element;\n if (typeof inputRef === \"function\") inputRef(element);\n else if (inputRef) (inputRef as MutableRefObject<HTMLInputElement | null>).current = element;\n }}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") submit();\n props.onKeyDown?.(event);\n }}\n InputProps={{\n ...InputProps,\n endAdornment: (\n <InputAdornment position=\"end\">\n <SharedIconButton aria-label=\"Search\" size=\"small\" onClick={submit}>\n <SearchIcon fontSize=\"small\" />\n </SharedIconButton>\n </InputAdornment>\n ),\n }}\n />\n );\n}\n\nexport default SearchInput;\n","import FormControl, { type FormControlProps } from \"@mui/material/FormControl\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport Select, { type SelectProps } from \"@mui/material/Select\";\nimport { useId, type ReactNode } from \"react\";\nimport { resolveControlName } from \"../accessibility/controlNames\";\n\nexport interface SelectOption<T extends string | number = string> {\n value: T;\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SelectInputProps<T extends string | number = string>\n extends Omit<SelectProps<T>, \"label\"> {\n label?: string;\n backupName?: string;\n options: readonly SelectOption<T>[];\n helperText?: ReactNode;\n formControlProps?: Omit<FormControlProps, \"children\">;\n}\n\nexport function SelectInput<T extends string | number = string>({\n label,\n options,\n helperText,\n formControlProps,\n inputProps,\n backupName = \"Select option\",\n ...props\n}: SelectInputProps<T>) {\n const generatedId = useId();\n const controlId = props.id ?? `shared-select-${generatedId.replace(/:/g, \"\")}`;\n const labelId = `${controlId}-label`;\n const helperId = `${controlId}-helper-text`;\n const accessibleName = resolveControlName({\n label,\n ariaLabel: inputProps?.[\"aria-label\"],\n name: props.name,\n id: props.id,\n backupName,\n });\n return (\n <FormControl fullWidth size=\"small\" {...formControlProps}>\n {label ? <InputLabel id={labelId}>{label}</InputLabel> : null}\n <Select\n id={controlId}\n labelId={label ? labelId : undefined}\n label={label}\n inputProps={{\n ...inputProps,\n ...(!label ? { \"aria-label\": accessibleName } : {}),\n ...(helperText ? { \"aria-describedby\": helperId } : {}),\n }}\n {...props}\n >\n {options.map((option) => (\n <MenuItem\n key={String(option.value)}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </MenuItem>\n ))}\n </Select>\n {helperText ? <FormHelperText id={helperId}>{helperText}</FormHelperText> : null}\n </FormControl>\n );\n}\n\nexport default SelectInput;\n","import { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\nimport { DatePicker, type DatePickerProps } from \"@mui/x-date-pickers/DatePicker\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport TextField from \"@mui/material/TextField\";\nimport type { Dayjs } from \"dayjs\";\nimport { useId } from \"react\";\nimport { resolveControlName } from \"../accessibility/controlNames\";\n\ntype MuiDatePickerProps = DatePickerProps<Dayjs, Dayjs>;\nexport type DateInputProps = Omit<MuiDatePickerProps, \"renderInput\"> & {\n renderInput?: MuiDatePickerProps[\"renderInput\"];\n id?: string;\n name?: string;\n backupName?: string;\n};\n\n/** Dayjs-backed date input. Consumers that already provide localization may use MUI directly. */\nexport function DateInput({ renderInput, id, name, label, backupName = \"Choose date\", ...props }: DateInputProps) {\n const generatedId = useId().replace(/:/g, \"\");\n const controlId = id ?? `shared-date-${generatedId}`;\n const accessibleName = resolveControlName({ label, name, id, backupName });\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DatePicker\n {...props}\n label={label}\n renderInput={(params) => {\n const enhancedParams = {\n ...params,\n id: controlId,\n name,\n inputProps: {\n ...params.inputProps,\n id: controlId,\n name,\n \"aria-label\": accessibleName,\n },\n };\n return renderInput\n ? renderInput(enhancedParams)\n : <TextField {...enhancedParams} fullWidth size=\"small\" />;\n }}\n />\n </LocalizationProvider>\n );\n}\n\nexport default DateInput;\n","import { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\nimport {\n DateTimePicker as MuiDateTimePicker,\n type DateTimePickerProps,\n} from \"@mui/x-date-pickers/DateTimePicker\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport TextField from \"@mui/material/TextField\";\nimport type { Dayjs } from \"dayjs\";\nimport { useId } from \"react\";\nimport { resolveControlName } from \"../accessibility/controlNames\";\n\ntype MuiDateTimePickerProps = DateTimePickerProps<Dayjs, Dayjs>;\nexport type DateTimeInputProps = Omit<MuiDateTimePickerProps, \"renderInput\"> & {\n renderInput?: MuiDateTimePickerProps[\"renderInput\"];\n id?: string;\n name?: string;\n backupName?: string;\n};\n\nexport function DateTimeInput({ renderInput, id, name, label, backupName = \"Choose date and time\", ...props }: DateTimeInputProps) {\n const generatedId = useId().replace(/:/g, \"\");\n const controlId = id ?? `shared-date-time-${generatedId}`;\n const accessibleName = resolveControlName({ label, name, id, backupName });\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MuiDateTimePicker\n {...props}\n label={label}\n renderInput={(params) => {\n const enhancedParams = {\n ...params,\n id: controlId,\n name,\n inputProps: {\n ...params.inputProps,\n id: controlId,\n name,\n \"aria-label\": accessibleName,\n },\n };\n return renderInput\n ? renderInput(enhancedParams)\n : <TextField {...enhancedParams} fullWidth size=\"small\" />;\n }}\n />\n </LocalizationProvider>\n );\n}\n\nexport const DateTimePicker = DateTimeInput;\nexport default DateTimeInput;\n","import Autocomplete, { type AutocompleteProps } from \"@mui/material/Autocomplete\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TextField from \"@mui/material/TextField\";\nimport { useId, useMemo } from \"react\";\nimport { resolveControlName } from \"../accessibility/controlNames\";\n\nexport interface DropDownOption<Id extends string | number = string | number> {\n id: Id;\n value: string;\n label?: string;\n disabled?: boolean;\n [key: string]: unknown;\n}\n\nexport interface LegacySelectChange<Id extends string | number = string | number> {\n target: { name: string; value: Id | \"\" };\n}\n\nexport interface AdvancedDropDownListProps<\n Id extends string | number = string | number,\n> {\n id?: string;\n name?: string;\n label?: string;\n backupName?: string;\n value?: Id | null;\n onChange?: (event: LegacySelectChange<Id>) => void;\n options?: readonly DropDownOption<Id>[];\n errorMessage?: string | null;\n disableClearable?: boolean;\n disabled?: boolean;\n loading?: boolean;\n required?: boolean;\n defaultSorting?: boolean;\n noDataMsg?: string;\n size?: \"small\" | \"medium\";\n variant?: \"outlined\" | \"filled\" | \"standard\";\n renderOption?: AutocompleteProps<\n DropDownOption<Id>,\n false,\n boolean,\n false\n >[\"renderOption\"];\n getOptionDisabled?: (option: DropDownOption<Id>) => boolean;\n}\n\n/** Searchable ID/value dropdown compatible with the legacy change-event shape. */\nexport function AdvancedDropDownList<\n Id extends string | number = string | number,\n>({\n id,\n name,\n label = \"\",\n backupName = \"Select option\",\n value,\n onChange,\n options = [],\n errorMessage,\n disableClearable = false,\n disabled = false,\n loading = false,\n required = false,\n defaultSorting = true,\n noDataMsg = \"No options\",\n size = \"small\",\n variant = \"outlined\",\n renderOption,\n getOptionDisabled,\n}: AdvancedDropDownListProps<Id>) {\n const generatedId = useId();\n const controlId = id ?? `shared-dropdown-${generatedId.replace(/:/g, \"\")}`;\n const accessibleName = resolveControlName({ label, name, id, backupName });\n const sortedOptions = useMemo(\n () =>\n defaultSorting\n ? [...options].sort((a, b) =>\n a.value.localeCompare(b.value, undefined, {\n numeric: true,\n sensitivity: \"base\",\n }),\n )\n : [...options],\n [defaultSorting, options],\n );\n const selected = options.find((option) => option.id === value) ?? null;\n\n return (\n <Autocomplete\n id={controlId}\n fullWidth\n size={size}\n options={sortedOptions}\n value={selected}\n disabled={disabled || loading}\n loading={loading}\n disableClearable={disableClearable}\n noOptionsText={noDataMsg}\n getOptionLabel={(option) => option.value || option.label || \"\"}\n getOptionDisabled={getOptionDisabled ?? ((option) => Boolean(option.disabled))}\n isOptionEqualToValue={(option, selectedOption) =>\n option.id === selectedOption.id\n }\n renderOption={renderOption}\n onChange={(_, nextValue) =>\n onChange?.({ target: { name: name ?? id ?? controlId, value: nextValue?.id ?? \"\" } })\n }\n popupIcon={\n loading ? <CircularProgress color=\"inherit\" size={18} /> : undefined\n }\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n required={required}\n variant={variant}\n size={size}\n error={Boolean(errorMessage)}\n helperText={errorMessage}\n InputLabelProps={{ shrink: true }}\n inputProps={{\n ...params.inputProps,\n autoComplete: \"new-password\",\n \"aria-label\": accessibleName,\n name,\n }}\n />\n )}\n />\n );\n}\n\nexport const MuiAdvancedDropDownList = AdvancedDropDownList;\nexport const StyledAdvanceDropDownList = AdvancedDropDownList;\nexport const CustomMuiAdvancedDropDownList = AdvancedDropDownList;\nexport const GenericAdvanceDropDownList = AdvancedDropDownList;\nexport const GenericAdvancedSelect = AdvancedDropDownList;\nexport const GenericStyledAdvancedDropdown = AdvancedDropDownList;\nexport const NormalAdvancedDropDownList = AdvancedDropDownList;\nexport const FloatingAdvanceDropDownList = AdvancedDropDownList;\nexport const AdvancedDropDownWithMsg = AdvancedDropDownList;\n\nexport default AdvancedDropDownList;\n","import Autocomplete from \"@mui/material/Autocomplete\";\nimport Chip from \"@mui/material/Chip\";\nimport TextField from \"@mui/material/TextField\";\nimport { useId } from \"react\";\nimport type { DropDownOption } from \"./AdvancedDropDownList\";\nimport { resolveControlName } from \"../accessibility/controlNames\";\n\nexport interface MultiSelectChange<\n Id extends string | number = string | number,\n> {\n target: { name: string; value: DropDownOption<Id>[] };\n}\n\nexport interface MultiSelectDropDownListProps<\n Id extends string | number = string | number,\n> {\n id?: string;\n name?: string;\n label?: string;\n backupName?: string;\n value?: readonly DropDownOption<Id>[];\n options?: readonly DropDownOption<Id>[];\n onChange?: (event: MultiSelectChange<Id>) => void;\n errorMessage?: string | null;\n disabled?: boolean;\n disableChip?: boolean;\n loading?: boolean;\n groupBy?: (option: DropDownOption<Id>) => string;\n highlightedOptionIds?: readonly Id[];\n highlightedChipTitle?: string;\n getOptionDisabled?: (option: DropDownOption<Id>) => boolean;\n variant?: \"outlined\" | \"filled\" | \"standard\";\n size?: \"small\" | \"medium\";\n}\n\nexport function MultiSelectDropDownList<\n Id extends string | number = string | number,\n>({\n id,\n name,\n label,\n backupName = \"Select options\",\n value = [],\n options = [],\n onChange,\n errorMessage,\n disabled = false,\n disableChip = false,\n loading = false,\n groupBy,\n highlightedOptionIds = [],\n highlightedChipTitle,\n getOptionDisabled,\n variant = \"outlined\",\n size = \"small\",\n}: MultiSelectDropDownListProps<Id>) {\n const generatedId = useId();\n const controlId = id ?? `shared-multi-select-${generatedId.replace(/:/g, \"\")}`;\n const accessibleName = resolveControlName({ label, name, id, backupName });\n const highlighted = new Set(highlightedOptionIds);\n return (\n <Autocomplete\n multiple\n id={controlId}\n fullWidth\n size={size}\n disabled={disabled}\n loading={loading}\n options={[...options]}\n value={[...value]}\n groupBy={groupBy}\n filterSelectedOptions\n getOptionLabel={(option) => option.value || option.label || \"\"}\n getOptionDisabled={getOptionDisabled ?? ((option) => Boolean(option.disabled))}\n isOptionEqualToValue={(option, selected) => option.id === selected.id}\n onChange={(_, nextValue) => {\n const unique = Array.from(\n new Map(nextValue.map((option) => [option.id, option])).values(),\n );\n onChange?.({ target: { name: name ?? id ?? controlId, value: unique } });\n }}\n renderTags={(tagValue, getTagProps) =>\n tagValue.map((option, index) => {\n const tagProps = getTagProps({ index });\n return (\n <Chip\n {...tagProps}\n key={String(option.id)}\n label={option.value}\n title={highlighted.has(option.id) ? highlightedChipTitle : undefined}\n onDelete={disableChip ? undefined : tagProps.onDelete}\n sx={\n highlighted.has(option.id)\n ? { bgcolor: \"error.50\", border: 1, borderColor: \"error.main\" }\n : undefined\n }\n />\n );\n })\n }\n renderInput={(params) => (\n <TextField\n {...params}\n label={label}\n variant={variant}\n error={Boolean(errorMessage)}\n helperText={errorMessage}\n InputLabelProps={{ shrink: true }}\n inputProps={{\n ...params.inputProps,\n name,\n \"aria-label\": accessibleName,\n }}\n />\n )}\n />\n );\n}\n\nexport const GroupedMultiSelectDropDown = MultiSelectDropDownList;\nexport const MuiGroupedMultiSelectDropDown = MultiSelectDropDownList;\nexport const FloatingMultiSelectDropDownList = MultiSelectDropDownList;\n\nexport default MultiSelectDropDownList;\n","import MenuItem from \"@mui/material/MenuItem\";\nimport type { TextFieldProps } from \"@mui/material/TextField\";\nimport { SharedTextField } from \"./SharedTextField\";\nimport type { DropDownOption } from \"./AdvancedDropDownList\";\n\nexport interface DropDownListProps<Id extends string | number = string | number>\n extends Omit<TextFieldProps, \"children\" | \"select\" | \"value\"> {\n value?: Id | \"\";\n options?: readonly DropDownOption<Id>[];\n errorMessage?: string | null;\n noDataMsg?: string;\n}\n\nexport function DropDownList<Id extends string | number = string | number>({\n value = \"\",\n options = [],\n errorMessage,\n noDataMsg = \"No options\",\n ...props\n}: DropDownListProps<Id>) {\n return (\n <SharedTextField\n select\n value={value}\n error={Boolean(errorMessage)}\n helperText={errorMessage}\n {...props}\n >\n {options.length ? (\n options.map((option) => (\n <MenuItem key={String(option.id)} value={option.id} disabled={option.disabled}>\n {option.value || option.label}\n </MenuItem>\n ))\n ) : (\n <MenuItem disabled value=\"\">\n {noDataMsg}\n </MenuItem>\n )}\n </SharedTextField>\n );\n}\n\nexport const DropDownWithMessage = DropDownList;\nexport const DropDownListWithMessage = DropDownList;\n\nexport default DropDownList;\n","import InputAdornment from \"@mui/material/InputAdornment\";\nimport type { ReactNode } from \"react\";\nimport { SharedTextField, type SharedTextFieldProps } from \"./SharedTextField\";\n\nexport type TextFieldWithIconProps = SharedTextFieldProps & {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n};\n\nexport function TextFieldWithIcon({\n startIcon,\n endIcon,\n InputProps,\n ...props\n}: TextFieldWithIconProps) {\n return (\n <SharedTextField\n InputProps={{\n ...InputProps,\n ...(startIcon\n ? {\n startAdornment: (\n <InputAdornment position=\"start\">{startIcon}</InputAdornment>\n ),\n }\n : {}),\n ...(endIcon\n ? {\n endAdornment: (\n <InputAdornment position=\"end\">{endIcon}</InputAdornment>\n ),\n }\n : {}),\n }}\n {...props}\n />\n );\n}\n\nexport type CurrencyInputProps = Omit<\n TextFieldWithIconProps,\n \"type\" | \"startIcon\"\n> & {\n currencySymbol?: ReactNode;\n};\n\n/** Locale-neutral decimal input; formatting/storage remain application concerns. */\nexport function CurrencyInput({\n currencySymbol = \"$\",\n inputProps,\n ...props\n}: CurrencyInputProps) {\n return (\n <TextFieldWithIcon\n startIcon={currencySymbol}\n inputProps={{\n inputMode: \"decimal\",\n pattern: \"^-?[0-9]*[.,]?[0-9]*$\",\n ...inputProps,\n }}\n {...props}\n />\n );\n}\n\nexport const CurrencyTextField = CurrencyInput;\nexport const GenericCurrencyTextBox = CurrencyInput;\nexport const GenericStyledCurrencyTextField = CurrencyInput;\nexport const TextfieldWithIcon = TextFieldWithIcon;\n\nexport interface StyledReadOnlyTextFieldProps\n extends Omit<SharedTextFieldProps, \"type\"> {\n type?: SharedTextFieldProps[\"type\"] | \"amount\";\n currencySymbol?: ReactNode;\n}\n\nexport function StyledReadOnlyTextField({\n type,\n value,\n currencySymbol = \"$\",\n InputProps,\n inputProps,\n ...props\n}: StyledReadOnlyTextFieldProps) {\n const amount = type === \"amount\";\n const numericValue = Number(value);\n const displayValue =\n amount && value !== \"\" && value != null && Number.isFinite(numericValue)\n ? numericValue.toLocaleString(\"en-US\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n : value;\n return (\n <SharedTextField\n value={displayValue}\n type={amount ? \"text\" : type}\n InputProps={{\n readOnly: true,\n ...(amount\n ? {\n startAdornment: (\n <InputAdornment position=\"start\">{currencySymbol}</InputAdornment>\n ),\n }\n : {}),\n ...InputProps,\n }}\n inputProps={{\n tabIndex: -1,\n ...inputProps,\n }}\n {...props}\n />\n );\n}\n","import UploadFileIcon from \"@mui/icons-material/UploadFile\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport { useId, useRef, useState, type ChangeEvent } from \"react\";\nimport { SharedButton } from \"../buttons/SharedButton\";\n\nexport interface FileInputProps {\n id?: string;\n label?: string;\n accept?: string;\n multiple?: boolean;\n disabled?: boolean;\n required?: boolean;\n helperText?: string;\n errorMessage?: string;\n onFiles: (files: File[]) => void;\n}\n\n/** Native keyboard-accessible file input with a consistently styled trigger. */\nexport function FileInput({\n id,\n label = \"Choose file\",\n accept,\n multiple,\n disabled,\n required,\n helperText,\n errorMessage,\n onFiles,\n}: FileInputProps) {\n const generatedId = useId();\n const inputRef = useRef<HTMLInputElement>(null);\n const [selection, setSelection] = useState(\"\");\n const controlId = id ?? `shared-file-${generatedId.replace(/:/g, \"\")}`;\n const descriptionId = `${controlId}-description`;\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(event.target.files ?? []);\n setSelection(files.map((file) => file.name).join(\", \"));\n onFiles(files);\n };\n\n return (\n <Stack spacing={0.5} alignItems=\"flex-start\">\n <SharedButton\n variant=\"outlined\"\n disabled={disabled}\n startIcon={<UploadFileIcon />}\n onClick={() => inputRef.current?.click()}\n aria-describedby={helperText || errorMessage ? descriptionId : undefined}\n >\n {label}{required ? \" (required)\" : \"\"}\n </SharedButton>\n <input\n ref={inputRef}\n id={controlId}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n required={required}\n hidden\n onChange={handleChange}\n />\n {helperText || errorMessage ? (\n <FormHelperText\n id={descriptionId}\n error={Boolean(errorMessage)}\n role={errorMessage ? \"alert\" : undefined}\n >\n {errorMessage ?? helperText}\n </FormHelperText>\n ) : null}\n {accept ? (\n <Typography variant=\"caption\" color=\"text.secondary\">\n Accepted file types: {accept}\n </Typography>\n ) : null}\n <Typography variant=\"caption\" aria-live=\"polite\">\n {selection ? `Selected: ${selection}` : \"\"}\n </Typography>\n </Stack>\n );\n}\n\nexport default FileInput;\n","import Autocomplete, { type AutocompleteProps } from \"@mui/material/Autocomplete\";\nimport Avatar from \"@mui/material/Avatar\";\nimport Chip from \"@mui/material/Chip\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport Stack from \"@mui/material/Stack\";\nimport TextField, { type TextFieldProps } from \"@mui/material/TextField\";\nimport { useId, useState, type KeyboardEvent, type ReactNode } from \"react\";\nimport { resolveControlName } from \"../accessibility/controlNames\";\nimport { SharedTextField, type SharedTextFieldProps } from \"./SharedTextField\";\n\nexport interface ImageSelectOption<T extends string | number = string> {\n id: T;\n value: ReactNode;\n image: string;\n imageAlt?: string;\n disabled?: boolean;\n}\n\nexport interface DropDownListWithImageProps<T extends string | number = string>\n extends Omit<SharedTextFieldProps, \"children\" | \"onChange\" | \"select\"> {\n options: readonly ImageSelectOption<T>[];\n onChange?: SharedTextFieldProps[\"onChange\"];\n errorMessage?: ReactNode;\n}\n\nexport function DropDownListWithImage<T extends string | number = string>({\n options,\n errorMessage,\n onChange,\n size = \"small\",\n variant = \"outlined\",\n ...props\n}: DropDownListWithImageProps<T>) {\n return (\n <SharedTextField\n select\n size={size}\n variant={variant}\n error={Boolean(errorMessage)}\n helperText={errorMessage}\n onChange={onChange}\n InputLabelProps={{ shrink: true, ...props.InputLabelProps }}\n {...props}\n >\n {options.map((option) => (\n <MenuItem key={String(option.id)} value={option.id} disabled={option.disabled}>\n <Stack direction=\"row\" spacing={1} alignItems=\"center\">\n <Avatar src={option.image} alt={option.imageAlt ?? \"\"} variant=\"rounded\" sx={{ width: 20, height: 20 }} />\n <span>{option.value}</span>\n </Stack>\n </MenuItem>\n ))}\n </SharedTextField>\n );\n}\n\nconst emailPattern = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\nexport interface EmailSuggestionInputProps\n extends Omit<AutocompleteProps<string, true, false, true>, \"inputValue\" | \"onInputChange\" | \"options\" | \"renderInput\" | \"onChange\"> {\n label?: string;\n backupName?: string;\n options?: readonly string[];\n helperText?: ReactNode;\n onChange: (emails: string[]) => void;\n inputValue?: string;\n setInputValue?: (value: string) => void;\n textFieldProps?: Omit<TextFieldProps, \"label\" | \"helperText\">;\n}\n\nexport function EmailSuggestionInput({\n label,\n backupName = \"Email addresses\",\n options = [],\n helperText,\n onChange,\n value = [],\n inputValue,\n setInputValue,\n textFieldProps,\n ...props\n}: EmailSuggestionInputProps) {\n const generatedId = useId().replace(/:/g, \"\");\n const controlId = props.id ?? `email-suggestions-${generatedId}`;\n const accessibleName = resolveControlName({\n label,\n ariaLabel: textFieldProps?.inputProps?.[\"aria-label\"],\n name: textFieldProps?.name,\n id: props.id,\n backupName,\n });\n const [draft, setDraft] = useState(\"\");\n const activeDraft = inputValue ?? draft;\n const updateDraft = (nextDraft: string) => {\n setDraft(nextDraft);\n setInputValue?.(nextDraft);\n };\n const commitDraft = () => {\n const email = activeDraft.trim().replace(/,$/, \"\");\n if (email && !value.includes(email)) onChange([...value, email]);\n updateDraft(\"\");\n };\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if ([\"Enter\", \",\", \" \"].includes(event.key) && activeDraft.trim()) {\n event.preventDefault();\n commitDraft();\n }\n };\n\n return (\n <Autocomplete\n multiple\n freeSolo\n filterSelectedOptions\n id={controlId}\n options={[...options]}\n value={value}\n inputValue={activeDraft}\n onInputChange={(_, nextDraft) => updateDraft(nextDraft)}\n onChange={(_, emails) => onChange(emails)}\n onBlur={commitDraft}\n onKeyDown={handleKeyDown}\n renderTags={(emails, getTagProps) => emails.map((email, index) => (\n <Chip\n label={email}\n color={emailPattern.test(email) ? \"primary\" : \"error\"}\n variant=\"outlined\"\n {...getTagProps({ index })}\n key={email}\n />\n ))}\n renderInput={(params) => (\n <TextField\n {...params}\n {...textFieldProps}\n label={label}\n helperText={helperText}\n size={textFieldProps?.size ?? \"small\"}\n inputProps={{\n ...params.inputProps,\n ...textFieldProps?.inputProps,\n ...(!label ? { \"aria-label\": accessibleName } : {}),\n }}\n />\n )}\n {...props}\n />\n );\n}\n\nexport const EmailSuggestionMuiTextBox = EmailSuggestionInput;\nexport const EmailSuggestionTextBox = EmailSuggestionInput;\n","import AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport DeleteOutlineIcon from \"@mui/icons-material/DeleteOutline\";\nimport Box from \"@mui/material/Box\";\nimport List from \"@mui/material/List\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Typography from \"@mui/material/Typography\";\nimport { useId, useRef, useState, type ChangeEvent, type DragEvent } from \"react\";\nimport { SharedButton } from \"../buttons/SharedButton\";\nimport { SharedIconButton } from \"../buttons/SharedIconButton\";\n\nexport interface CustomDropZoneProps {\n id?: string;\n files: readonly File[];\n setFiles: (files: File[]) => void;\n onSave?: (files: File[]) => void;\n acceptedFileTypes?: string;\n multiple?: boolean;\n maxFiles?: number;\n /** Maximum size per file in megabytes. */\n maxFileSize?: number;\n label?: string;\n disabled?: boolean;\n}\n\nexport function CustomDropZone({ id, files, setFiles, onSave, acceptedFileTypes, multiple = false, maxFiles, maxFileSize, label = \"Upload files\", disabled = false }: CustomDropZoneProps) {\n const generatedId = useId().replace(/:/g, \"\");\n const inputId = id ?? `drop-zone-${generatedId}`;\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [error, setError] = useState(\"\");\n const applyFiles = (incoming: readonly File[]) => {\n setError(\"\");\n const accepted = acceptedFileTypes?.split(\",\").map((item) => item.trim().toLowerCase()).filter(Boolean) ?? [];\n const valid = incoming.filter((file) => {\n if (!file.size) { setError(`File is empty: ${file.name}`); return false; }\n if (maxFileSize && file.size > maxFileSize * 1024 * 1024) { setError(`File is too large: ${file.name}`); return false; }\n if (accepted.length) {\n const extension = `.${file.name.split(\".\").pop()?.toLowerCase()}`;\n if (!accepted.some((type) => type === extension || type === file.type.toLowerCase() || (type.endsWith(\"/*\") && file.type.startsWith(type.slice(0, -1))))) { setError(`File type is not allowed: ${file.name}`); return false; }\n }\n return true;\n });\n let next = multiple ? [...files, ...valid] : valid.slice(0, 1);\n if (maxFiles) next = next.slice(0, maxFiles);\n setFiles(next);\n onSave?.(next);\n };\n const handleInput = (event: ChangeEvent<HTMLInputElement>) => { applyFiles(Array.from(event.target.files ?? [])); event.target.value = \"\"; };\n const handleDrop = (event: DragEvent<HTMLDivElement>) => { event.preventDefault(); if (!disabled) applyFiles(Array.from(event.dataTransfer.files)); };\n const remove = (index: number) => { const next = files.filter((_, fileIndex) => fileIndex !== index); setFiles(next); onSave?.(next); };\n return (\n <Box>\n <Box onDragOver={(event) => event.preventDefault()} onDrop={handleDrop} sx={{ border: \"2px dashed\", borderColor: error ? \"error.main\" : \"divider\", borderRadius: 1, p: 2, textAlign: \"center\" }}>\n <input ref={inputRef} id={inputId} type=\"file\" hidden multiple={multiple} accept={acceptedFileTypes} disabled={disabled} onChange={handleInput} />\n <SharedButton startIcon={<AttachFileIcon />} disabled={disabled} onClick={() => inputRef.current?.click()}>{label}</SharedButton>\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mt: 1 }}>Drag and drop files here, or use the upload button.</Typography>\n {error ? <Typography role=\"alert\" color=\"error.main\" variant=\"body2\">{error}</Typography> : null}\n </Box>\n {files.length ? <List dense aria-label=\"Selected files\">{files.map((file, index) => <ListItem key={`${file.name}-${file.lastModified}`} secondaryAction={<SharedIconButton aria-label={`Remove ${file.name}`} onClick={() => remove(index)}><DeleteOutlineIcon /></SharedIconButton>}><ListItemIcon><AttachFileIcon /></ListItemIcon><ListItemText primary={file.name} secondary={`${Math.ceil(file.size / 1024)} KB`} /></ListItem>)}</List> : null}\n </Box>\n );\n}\n","import Box from \"@mui/material/Box\";\nimport Checkbox from \"@mui/material/Checkbox\";\nimport Paper from \"@mui/material/Paper\";\nimport Skeleton from \"@mui/material/Skeleton\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell, { type TableCellProps } from \"@mui/material/TableCell\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TablePagination from \"@mui/material/TablePagination\";\nimport TableRow from \"@mui/material/TableRow\";\nimport TableSortLabel from \"@mui/material/TableSortLabel\";\nimport Typography from \"@mui/material/Typography\";\nimport type { SxProps, Theme } from \"@mui/material/styles\";\nimport { useMemo, useState, type Key, type ReactNode } from \"react\";\n\nexport type SortDirection = \"asc\" | \"desc\";\n\nexport interface DataTableColumn<Row> {\n field: keyof Row & string;\n header?: ReactNode;\n /** Legacy alias for header. */\n title?: ReactNode;\n align?: TableCellProps[\"align\"];\n sortable?: boolean;\n width?: number | string;\n minWidth?: number | string;\n maxWidth?: number | string;\n hidden?: boolean;\n noWrapHeader?: boolean;\n noWrapBody?: boolean;\n disablePadding?: boolean;\n render?: (value: Row[keyof Row], row: Row, rowIndex: number) => ReactNode;\n compare?: (left: Row, right: Row) => number;\n}\n\nexport interface DataTablePagination {\n /** Total number of records across all server pages. */\n count: number;\n page: number;\n rowsPerPage: number;\n onPageChange: (page: number) => void;\n onRowsPerPageChange?: (rowsPerPage: number) => void;\n}\n\nexport interface DataTableProps<Row> {\n columns: readonly DataTableColumn<Row>[];\n rows: readonly Row[];\n getRowKey?: (row: Row, index: number) => Key;\n loading?: boolean;\n emptyMessage?: ReactNode;\n initialSort?: { field: keyof Row & string; direction?: SortDirection };\n initialRowsPerPage?: number;\n rowsPerPageOptions?: readonly number[];\n maxHeight?: number | string;\n stickyHeader?: boolean;\n onRowClick?: (row: Row) => void;\n getRowAriaLabel?: (row: Row, index: number) => string;\n getRowSx?: (row: Row, index: number) => SxProps<Theme>;\n selectedRowKeys?: readonly Key[];\n onSelectedRowKeysChange?: (keys: Key[]) => void;\n isRowSelectable?: (row: Row) => boolean;\n selectionLabel?: string;\n pagination?: DataTablePagination;\n showPagination?: boolean;\n caption?: ReactNode;\n \"aria-label\"?: string;\n}\n\nfunction defaultCompare(left: unknown, right: unknown): number {\n if (left == null && right == null) return 0;\n if (left == null) return -1;\n if (right == null) return 1;\n if (typeof left === \"number\" && typeof right === \"number\") return left - right;\n return String(left).localeCompare(String(right), undefined, {\n numeric: true,\n sensitivity: \"base\",\n });\n}\n\n/** Client-side, API-agnostic table with sorting, pagination and custom cells. */\nexport function DataTable<Row>({\n columns,\n rows,\n getRowKey = (row, index) =>\n ((row as Record<string, unknown>)[\"id\"] as Key | undefined) ?? index,\n loading = false,\n emptyMessage = \"No records found\",\n initialSort,\n initialRowsPerPage = 10,\n rowsPerPageOptions = [5, 10, 25, 50],\n maxHeight,\n stickyHeader = true,\n onRowClick,\n getRowAriaLabel,\n getRowSx,\n selectedRowKeys,\n onSelectedRowKeysChange,\n isRowSelectable = () => true,\n selectionLabel = \"Select rows\",\n pagination,\n showPagination = true,\n caption,\n \"aria-label\": ariaLabel = \"Data table\",\n}: DataTableProps<Row>) {\n const [sortField, setSortField] = useState<string | undefined>(initialSort?.field);\n const [direction, setDirection] = useState<SortDirection>(\n initialSort?.direction ?? \"asc\",\n );\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(initialRowsPerPage);\n const visibleColumns = useMemo(\n () => columns.filter((column) => !column.hidden),\n [columns],\n );\n const selectable = Boolean(selectedRowKeys && onSelectedRowKeysChange);\n\n const sortedRows = useMemo(() => {\n if (!sortField) return [...rows];\n const column = visibleColumns.find((item) => item.field === sortField);\n if (!column) return [...rows];\n return rows\n .map((row, index) => ({ row, index }))\n .sort((left, right) => {\n const result = column.compare\n ? column.compare(left.row, right.row)\n : defaultCompare(left.row[column.field], right.row[column.field]);\n const stableResult = result || left.index - right.index;\n return direction === \"asc\" ? stableResult : -stableResult;\n })\n .map(({ row }) => row);\n }, [direction, rows, sortField, visibleColumns]);\n\n const activeRowsPerPage = pagination?.rowsPerPage ?? rowsPerPage;\n const activePage = pagination?.page ?? page;\n const effectivePage = Math.min(\n activePage,\n Math.max(\n 0,\n Math.ceil((pagination?.count ?? rows.length) / activeRowsPerPage) - 1,\n ),\n );\n const visibleRows = pagination\n ? sortedRows\n : sortedRows.slice(\n effectivePage * activeRowsPerPage,\n effectivePage * activeRowsPerPage + activeRowsPerPage,\n );\n const selectedKeySet = new Set(selectedRowKeys ?? []);\n const selectableKeys = rows\n .map((row, index) => ({ row, key: getRowKey(row, index) }))\n .filter(({ row }) => isRowSelectable(row))\n .map(({ key }) => key);\n const allSelected =\n selectableKeys.length > 0 &&\n selectableKeys.every((key) => selectedKeySet.has(key));\n const someSelected =\n selectableKeys.some((key) => selectedKeySet.has(key)) && !allSelected;\n\n const requestSort = (field: string) => {\n setDirection(sortField === field && direction === \"asc\" ? \"desc\" : \"asc\");\n setSortField(field);\n setPage(0);\n };\n\n return (\n <Paper variant=\"outlined\">\n <TableContainer sx={{ maxHeight }}>\n <Table size=\"small\" stickyHeader={stickyHeader} aria-label={ariaLabel}>\n {caption ? <caption>{caption}</caption> : null}\n <TableHead>\n <TableRow>\n {selectable ? (\n <TableCell padding=\"checkbox\">\n <Checkbox\n inputProps={{ \"aria-label\": `${selectionLabel}: select all` }}\n checked={allSelected}\n indeterminate={someSelected}\n onChange={(_, checked) =>\n onSelectedRowKeysChange?.(checked ? selectableKeys : [])\n }\n />\n </TableCell>\n ) : null}\n {visibleColumns.map((column) => (\n <TableCell\n key={column.field}\n align={column.align}\n sortDirection={sortField === column.field ? direction : false}\n padding={column.disablePadding ? \"none\" : \"normal\"}\n sx={{\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n whiteSpace: column.noWrapHeader ? \"nowrap\" : undefined,\n fontWeight: 600,\n }}\n >\n {column.sortable === false ? (\n column.header ?? column.title\n ) : (\n <TableSortLabel\n active={sortField === column.field}\n direction={sortField === column.field ? direction : \"asc\"}\n onClick={() => requestSort(column.field)}\n >\n {column.header ?? column.title}\n </TableSortLabel>\n )}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {loading\n ? Array.from({ length: Math.min(activeRowsPerPage, 5) }, (_, rowIndex) => (\n <TableRow key={`skeleton-${rowIndex}`}>\n {selectable ? (\n <TableCell padding=\"checkbox\"><Skeleton variant=\"circular\" width={24} height={24} /></TableCell>\n ) : null}\n {visibleColumns.map((column) => (\n <TableCell key={column.field}>\n <Skeleton animation=\"wave\" />\n </TableCell>\n ))}\n </TableRow>\n ))\n : visibleRows.map((row, rowIndex) => {\n const absoluteIndex = pagination\n ? effectivePage * activeRowsPerPage + rowIndex\n : effectivePage * activeRowsPerPage + rowIndex;\n const rowKey = getRowKey(row, absoluteIndex);\n const rowSelected = selectedKeySet.has(rowKey);\n const rowSelectable = isRowSelectable(row);\n return (\n <TableRow\n hover={Boolean(onRowClick)}\n key={rowKey}\n selected={rowSelected}\n onClick={() => onRowClick?.(row)}\n onKeyDown={(event) => {\n if (\n onRowClick &&\n (event.key === \"Enter\" || event.key === \" \")\n ) {\n event.preventDefault();\n onRowClick(row);\n }\n }}\n tabIndex={onRowClick ? 0 : undefined}\n aria-label={\n onRowClick\n ? getRowAriaLabel?.(\n row,\n absoluteIndex,\n ) ?? \"Open row\"\n : undefined\n }\n sx={{\n ...(onRowClick ? { cursor: \"pointer\" } : {}),\n ...getRowSx?.(row, absoluteIndex),\n }}\n >\n {selectable ? (\n <TableCell padding=\"checkbox\">\n <Checkbox\n checked={rowSelected}\n disabled={!rowSelectable}\n inputProps={{\n \"aria-label\": `${selectionLabel}: ${getRowAriaLabel?.(row, absoluteIndex) ?? String(rowKey)}`,\n }}\n onClick={(event) => event.stopPropagation()}\n onChange={(_, checked) => {\n const next = checked\n ? [...selectedKeySet, rowKey]\n : [...selectedKeySet].filter((key) => key !== rowKey);\n onSelectedRowKeysChange?.(next);\n }}\n />\n </TableCell>\n ) : null}\n {visibleColumns.map((column) => {\n const value = row[column.field];\n return (\n <TableCell\n key={column.field}\n align={column.align}\n padding={column.disablePadding ? \"none\" : \"normal\"}\n sx={{\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n whiteSpace: column.noWrapBody ? \"nowrap\" : undefined,\n }}\n >\n {column.render\n ? column.render(value, row, rowIndex)\n : (value as ReactNode)}\n </TableCell>\n );\n })}\n </TableRow>\n );\n })}\n {!loading && rows.length === 0 ? (\n <TableRow>\n <TableCell colSpan={Math.max(visibleColumns.length + (selectable ? 1 : 0), 1)}>\n <Box sx={{ py: 4, textAlign: \"center\" }}>\n <Typography color=\"text.secondary\">{emptyMessage}</Typography>\n </Box>\n </TableCell>\n </TableRow>\n ) : null}\n </TableBody>\n </Table>\n </TableContainer>\n {showPagination ? <TablePagination\n component=\"div\"\n count={pagination?.count ?? rows.length}\n page={effectivePage}\n rowsPerPage={activeRowsPerPage}\n rowsPerPageOptions={[...rowsPerPageOptions]}\n onPageChange={(_, nextPage) =>\n pagination ? pagination.onPageChange(nextPage) : setPage(nextPage)\n }\n onRowsPerPageChange={(event) => {\n const next = Number(event.target.value);\n if (pagination) {\n pagination.onRowsPerPageChange?.(next);\n } else {\n setRowsPerPage(next);\n setPage(0);\n }\n }}\n /> : null}\n </Paper>\n );\n}\n\nexport default DataTable;\n","import Alert, { type AlertProps } from \"@mui/material/Alert\";\nimport Box from \"@mui/material/Box\";\nimport CircularProgress, { type CircularProgressProps } from \"@mui/material/CircularProgress\";\nimport Tooltip, { type TooltipProps } from \"@mui/material/Tooltip\";\nimport { styled } from \"@mui/material/styles\";\n\nexport const LightTooltip = styled(({ className, ...props }: TooltipProps) => (\n <Tooltip {...props} classes={className ? { popper: className } : undefined} />\n))(({ theme }) => ({\n [`& .MuiTooltip-tooltip`]: {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n boxShadow: theme.shadows[2],\n border: `1px solid ${theme.palette.divider}`,\n },\n}));\n\nexport interface SpinnerProps extends CircularProgressProps {\n centered?: boolean;\n label?: string;\n}\n\nexport function Spinner({\n centered = true,\n label = \"Loading\",\n ...props\n}: SpinnerProps) {\n const spinner = (\n <>\n <CircularProgress size={28} aria-label={label} {...props} />\n <Box\n component=\"span\"\n sx={{\n position: \"absolute\",\n width: 1,\n height: 1,\n p: 0,\n m: -1,\n overflow: \"hidden\",\n clip: \"rect(0 0 0 0)\",\n whiteSpace: \"nowrap\",\n border: 0,\n }}\n >\n {label}\n </Box>\n </>\n );\n return centered ? (\n <Box role=\"status\" sx={{ display: \"grid\", placeItems: \"center\", p: 2 }}>\n {spinner}\n </Box>\n ) : (\n spinner\n );\n}\n\nexport function SuccessAlert(props: Omit<AlertProps, \"severity\">) {\n return <Alert severity=\"success\" {...props} />;\n}\n\nexport function ErrorAlert(props: Omit<AlertProps, \"severity\">) {\n return <Alert severity=\"error\" {...props} />;\n}\n\nexport const SharedTooltip = LightTooltip;\n","import InfoOutlined from \"@mui/icons-material/InfoOutlined\";\nimport ConfirmationNumberOutlinedIcon from \"@mui/icons-material/ConfirmationNumberOutlined\";\nimport DescriptionOutlinedIcon from \"@mui/icons-material/DescriptionOutlined\";\nimport Box from \"@mui/material/Box\";\nimport Popover from \"@mui/material/Popover\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport { useId, useState, type MouseEvent, type ReactNode } from \"react\";\nimport { SharedIconButton, type SharedIconButtonProps } from \"../buttons/SharedIconButton\";\nimport { LightTooltip } from \"./FeedbackPrimitives\";\n\nexport interface InfoTooltipProps\n extends Omit<SharedIconButtonProps, \"aria-label\" | \"children\" | \"title\"> {\n title: ReactNode;\n label?: string;\n}\n\n/** Keyboard and pointer accessible informational tooltip trigger. */\nexport function InfoTooltip({\n title,\n label = \"More information\",\n ...props\n}: InfoTooltipProps) {\n return (\n <LightTooltip title={title} arrow>\n <SharedIconButton aria-label={label} size=\"small\" {...props}>\n <InfoOutlined fontSize=\"small\" />\n </SharedIconButton>\n </LightTooltip>\n );\n}\n\nexport const InformationIcon = InfoTooltip;\nexport const InfoLabelIcon = InfoTooltip;\nexport const TicketLabelInfoIcon = InfoTooltip;\n\nexport interface LabelsIconsProps {\n title: ReactNode;\n mandatory?: boolean;\n onClick?: () => void;\n onCreateTicket?: () => void;\n onClickDocument?: () => void;\n}\n\nexport function LabelsIcons({\n title,\n mandatory = false,\n onClick,\n onCreateTicket,\n onClickDocument,\n}: LabelsIconsProps) {\n const [anchor, setAnchor] = useState<HTMLElement | null>(null);\n const dialogId = useId();\n const titleId = `${dialogId}-title`;\n const open = (event: MouseEvent<HTMLButtonElement>) => setAnchor(event.currentTarget);\n return (\n <Stack component=\"span\" direction=\"row\" spacing={0.25} alignItems=\"center\">\n <SharedIconButton\n aria-label=\"More information\"\n aria-haspopup=\"dialog\"\n aria-expanded={Boolean(anchor)}\n aria-controls={anchor ? dialogId : undefined}\n size=\"small\"\n onClick={open}\n >\n <InfoOutlined fontSize=\"small\" />\n </SharedIconButton>\n {mandatory ? <Typography component=\"span\" color=\"error.main\" aria-label=\"required\">*</Typography> : null}\n <Popover\n open={Boolean(anchor)}\n anchorEl={anchor}\n onClose={() => setAnchor(null)}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n slotProps={{ paper: { id: dialogId, role: \"dialog\", \"aria-labelledby\": titleId } }}\n >\n <Box sx={{ maxWidth: 320, p: 1.5, borderLeft: 5, borderColor: \"primary.main\" }}>\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\">\n <Typography id={titleId} fontWeight={700}>More information</Typography>\n <span>\n {onClick || onCreateTicket ? (\n <SharedIconButton aria-label=\"Create ticket\" size=\"small\" onClick={onCreateTicket ?? onClick}>\n <ConfirmationNumberOutlinedIcon />\n </SharedIconButton>\n ) : null}\n {onClickDocument ? (\n <SharedIconButton aria-label=\"Open documentation\" size=\"small\" onClick={onClickDocument}>\n <DescriptionOutlinedIcon />\n </SharedIconButton>\n ) : null}\n </span>\n </Stack>\n <Typography variant=\"body2\">{title}</Typography>\n </Box>\n </Popover>\n </Stack>\n );\n}\n\nexport const TicketLabelInfoIcons = LabelsIcons;\n","import FunctionsIcon from \"@mui/icons-material/Functions\";\nimport Skeleton from \"@mui/material/Skeleton\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell, {\n tableCellClasses,\n type TableCellProps,\n} from \"@mui/material/TableCell\";\nimport TableRow from \"@mui/material/TableRow\";\nimport TableSortLabel from \"@mui/material/TableSortLabel\";\nimport { styled } from \"@mui/material/styles\";\nimport type { ReactNode } from \"react\";\nimport { SharedIconButton } from \"../buttons/SharedIconButton\";\nimport { LightTooltip } from \"../feedback/FeedbackPrimitives\";\nimport { InfoTooltip } from \"../feedback/InfoTooltip\";\n\nexport const StyledTableCell = styled(TableCell)(({ theme }) => ({\n [`&.${tableCellClasses.head}`]: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n fontWeight: 600,\n },\n}));\n\nexport const StyledBorderedTableCell = styled(StyledTableCell)(({ theme }) => ({\n border: `1px solid ${theme.palette.divider}`,\n}));\n\nexport const StyledLinesBorderedTableCell = styled(TableCell)(({ theme }) => ({\n borderBottom: `1px solid ${theme.palette.divider}`,\n borderRight: `1px solid ${theme.palette.divider}`,\n}));\n\nexport const StyledTableSortLabel = styled(TableSortLabel)(({ theme }) => ({\n color: theme.palette.primary.contrastText,\n \"&:hover, &.Mui-active\": {\n color: theme.palette.primary.contrastText,\n },\n \"&.Mui-active .MuiTableSortLabel-icon\": {\n color: theme.palette.primary.contrastText,\n },\n}));\n\nexport interface StickyTableCellProps {\n stickyLeft?: number | string;\n stickyTop?: number | string;\n noWrap?: boolean;\n compact?: boolean;\n}\n\n/** Sticky table cell for frozen headers or columns without leaking style props to the DOM. */\nexport const StickyTableCell = styled(TableCell, {\n shouldForwardProp: (property) =>\n ![\"stickyLeft\", \"stickyTop\", \"noWrap\", \"compact\"].includes(\n property as string,\n ),\n})<StickyTableCellProps>(\n ({ theme, stickyLeft, stickyTop, noWrap, compact }) => ({\n position: \"sticky\",\n left: stickyLeft,\n top: stickyTop,\n zIndex: stickyTop !== undefined && stickyLeft !== undefined ? 3 : 2,\n backgroundColor: theme.palette.background.paper,\n whiteSpace: noWrap ? \"nowrap\" : undefined,\n padding: compact ? theme.spacing(0.5, 1) : undefined,\n [`&.${tableCellClasses.head}`]: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n fontWeight: 600,\n },\n }),\n);\n\nexport const StickyFooterTableCell = styled(StickyTableCell)(({ theme }) => ({\n fontWeight: 700,\n textAlign: \"right\",\n border: `1px solid ${theme.palette.divider}`,\n backgroundColor: theme.palette.background.paper,\n}));\n\n/** Theme-aware highlighted cell; retained as YellowTableCell for legacy imports. */\nexport const HighlightedTableCell = styled(TableCell)(({ theme }) => ({\n padding: theme.spacing(0.5, 1),\n border: `1px solid ${theme.palette.background.paper}`,\n [`&.${tableCellClasses.head}, &.${tableCellClasses.footer}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.info.main,\n fontWeight: 700,\n },\n}));\n\nexport const YellowTableCell = HighlightedTableCell;\n\nexport const StyledTableRow = styled(TableRow)(({ theme }) => ({\n \"&:nth-of-type(even)\": { backgroundColor: theme.palette.action.hover },\n \"&:last-child td, &:last-child th\": { borderBottom: 0 },\n}));\n\nexport const StyledBorderedTableRow = styled(StyledTableRow)({\n \"& td, & th\": { borderCollapse: \"collapse\" },\n});\n\nexport interface TableCellWithInfoProps\n extends Omit<TableCellProps, \"title\"> {\n title: ReactNode;\n info?: ReactNode;\n infoLabel?: string;\n formula?: ReactNode;\n formulaLabel?: string;\n bordered?: boolean;\n}\n\n/** Header/data cell with keyboard-accessible information and formula tooltips. */\nexport function TableCellWithInfo({\n title,\n info,\n infoLabel = \"More information\",\n formula,\n formulaLabel = \"View formula\",\n bordered = false,\n ...cellProps\n}: TableCellWithInfoProps) {\n const Cell = bordered ? StyledBorderedTableCell : StyledTableCell;\n return (\n <Cell {...cellProps}>\n {info ? <InfoTooltip title={info} label={infoLabel} /> : null}\n {title}\n {formula ? (\n <LightTooltip title={formula} arrow>\n <SharedIconButton aria-label={formulaLabel} size=\"small\">\n <FunctionsIcon fontSize=\"small\" />\n </SharedIconButton>\n </LightTooltip>\n ) : null}\n </Cell>\n );\n}\n\nexport const CustomTableCellWithInfo = TableCellWithInfo;\n\nexport function StyledBorderedTableCellWithInfo(\n props: Omit<TableCellWithInfoProps, \"bordered\">,\n) {\n return <TableCellWithInfo {...props} bordered />;\n}\n\nexport interface SkeletonTableBodyProps {\n columns?: number;\n rows?: number;\n bordered?: boolean;\n}\n\nexport function SkeletonTableBody({\n columns = 1,\n rows = 4,\n bordered = false,\n}: SkeletonTableBodyProps) {\n const Cell = bordered ? StyledBorderedTableCell : TableCell;\n return (\n <TableBody>\n {Array.from({ length: rows }, (_, row) => (\n <TableRow key={row}>\n {Array.from({ length: columns }, (__, column) => (\n <Cell key={column}>\n <Skeleton animation=\"wave\" />\n </Cell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n );\n}\n\nexport function SkeletonBorderedTableBody(props: SkeletonTableBodyProps) {\n return <SkeletonTableBody {...props} bordered />;\n}\n","import Checkbox, { type CheckboxProps } from \"@mui/material/Checkbox\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography, { type TypographyProps } from \"@mui/material/Typography\";\nimport type { ReactNode } from \"react\";\nimport { resolveControlName } from \"../accessibility/controlNames\";\nimport { SharedTextField, type SharedTextFieldProps } from \"../inputs/SharedTextField\";\n\nexport interface GenericLabelProps extends TypographyProps {\n required?: boolean;\n htmlFor?: string;\n children: ReactNode;\n}\n\nexport function MandatoryIndicator() {\n return (\n <Typography component=\"span\" color=\"error.main\" aria-hidden=\"true\">\n *\n </Typography>\n );\n}\n\nexport function GenericLabel({ required, children, ...props }: GenericLabelProps) {\n return (\n <Typography component=\"label\" variant=\"body2\" {...props}>\n {children} {required ? <MandatoryIndicator /> : null}\n </Typography>\n );\n}\n\nexport interface GenericCheckBoxProps extends CheckboxProps {\n label?: ReactNode;\n errorMessage?: ReactNode;\n backupName?: string;\n}\n\nexport function GenericCheckBox({\n label,\n errorMessage,\n backupName = \"Select option\",\n inputProps,\n ...props\n}: GenericCheckBoxProps) {\n const accessibleName = resolveControlName({\n label,\n ariaLabel: inputProps?.[\"aria-label\"],\n name: props.name,\n id: props.id,\n backupName,\n });\n const checkbox = (\n <Checkbox\n {...props}\n inputProps={{\n ...(!label ? { \"aria-label\": accessibleName } : {}),\n ...inputProps,\n }}\n />\n );\n return (\n <Stack>\n {label ? <FormControlLabel control={checkbox} label={label} /> : checkbox}\n {errorMessage ? <FormHelperText error>{errorMessage}</FormHelperText> : null}\n </Stack>\n );\n}\n\nexport function GenericTextBox(props: SharedTextFieldProps) {\n return <SharedTextField {...props} />;\n}\n\nexport function GenericTextArea(props: SharedTextFieldProps) {\n return <SharedTextField multiline minRows={3} {...props} />;\n}\n\nexport interface ReadOnlyLabelProps extends TypographyProps {\n label?: ReactNode;\n value?: ReactNode;\n emptyValue?: ReactNode;\n}\n\nexport function ReadOnlyLabel({\n label,\n value,\n emptyValue = \"—\",\n ...props\n}: ReadOnlyLabelProps) {\n return (\n <Stack spacing={0.25}>\n {label ? (\n <Typography variant=\"caption\" color=\"text.secondary\">\n {label}\n </Typography>\n ) : null}\n <Typography variant=\"body2\" {...props}>\n {value === null || value === undefined || value === \"\" ? emptyValue : value}\n </Typography>\n </Stack>\n );\n}\n\nexport const GenericOutlinedCheckBox = GenericCheckBox;\nexport const MuiTextBox = GenericTextBox;\nexport const CustomMuiTextBox = GenericTextBox;\nexport const NormalMuiTextBox = GenericTextBox;\nexport const TextBox = GenericTextBox;\n","import Box, { type BoxProps } from \"@mui/material/Box\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport Paper, { type PaperProps } from \"@mui/material/Paper\";\nimport Typography, { type TypographyProps } from \"@mui/material/Typography\";\nimport { useId, type ReactNode } from \"react\";\nimport { SharedTextField, type SharedTextFieldProps } from \"../inputs/SharedTextField\";\nimport { CurrencyInput, type CurrencyInputProps } from \"../inputs/InputAddons\";\nimport { InfoTooltip } from \"../feedback/InfoTooltip\";\n\nexport function BlueHeaderText(props: TypographyProps) {\n return <Typography component=\"span\" color=\"primary.dark\" {...props} />;\n}\n\nexport function BoldText(props: TypographyProps) {\n return <Typography component=\"strong\" fontWeight={700} {...props} />;\n}\n\nexport interface ContentWrapperProps extends PaperProps {\n status?: \"error\" | \"success\" | \"c\";\n}\n\nexport function ContentWrapper({ status, ...props }: ContentWrapperProps) {\n return (\n <Paper\n variant=\"outlined\"\n {...props}\n sx={{\n width: \"100%\",\n overflow: \"hidden\",\n borderWidth: 2,\n borderColor: status === \"error\" ? \"error.main\" : status === \"success\" || status === \"c\" ? \"success.main\" : \"divider\",\n boxShadow: 2,\n ...props.sx,\n }}\n />\n );\n}\n\nexport function QuestionTextWrapper(props: TypographyProps) {\n return <Typography component=\"p\" variant=\"body1\" {...props} />;\n}\n\nexport interface PercentageInputProps extends Omit<SharedTextFieldProps, \"value\"> {\n value?: string | number | null;\n}\n\nexport function PercentageInput({ value, label, ...props }: PercentageInputProps) {\n return (\n <SharedTextField\n type=\"number\"\n label={label}\n value={value ?? \"\"}\n InputProps={{ startAdornment: <InputAdornment position=\"start\">%</InputAdornment>, ...props.InputProps }}\n {...props}\n />\n );\n}\n\nexport type TextInputWithLabelProps = SharedTextFieldProps & {\n label: ReactNode;\n containerProps?: BoxProps;\n};\n\nexport function TextInputWithLabel({ label, containerProps, id, ...props }: TextInputWithLabelProps) {\n const generatedId = useId().replace(/:/g, \"\");\n const controlId = id ?? `text-input-with-label-${generatedId}`;\n const labelId = `${controlId}-label`;\n return (\n <Box {...containerProps} sx={{ display: \"grid\", gridTemplateColumns: { sm: \"minmax(8rem, 1fr) 2fr\" }, gap: 1, alignItems: \"center\", ...containerProps?.sx }}>\n <Typography id={labelId} component=\"label\" htmlFor={controlId} variant=\"body2\" fontWeight={700}>{label}</Typography>\n <SharedTextField\n id={controlId}\n {...props}\n inputProps={{ \"aria-labelledby\": labelId, ...props.inputProps }}\n />\n </Box>\n );\n}\n\nexport const TextInput = SharedTextField;\n\nexport function MandatoryIndicatorWithText({ children }: { children: ReactNode }) {\n return <Typography component=\"span\">{children}<Typography component=\"span\" color=\"error.main\" aria-label=\"required\"> *</Typography></Typography>;\n}\n\nexport function RequestModalGridItem(props: BoxProps) {\n return <Box {...props} sx={{ px: { xs: 2, md: 6 }, py: 1, ...props.sx }} />;\n}\n\nexport type TextInputWithLabelIconProps = SharedTextFieldProps & {\n helperTitle?: ReactNode;\n icon?: ReactNode;\n};\n\nexport function TextInputWithLabelIcon({ helperTitle, icon, label, InputProps, ...props }: TextInputWithLabelIconProps) {\n return <SharedTextField label={label} InputProps={{ startAdornment: icon, endAdornment: helperTitle ? <InfoTooltip title={helperTitle} /> : undefined, ...InputProps }} {...props} />;\n}\n\nexport type CurrencyInputWithLabelIconProps = CurrencyInputProps & {\n helperTitle?: ReactNode;\n icon?: ReactNode;\n};\n\nexport function CurrencyInputWithLabelIcon({ helperTitle, icon, label, InputProps, ...props }: CurrencyInputWithLabelIconProps) {\n return <CurrencyInput label={label} InputProps={{ startAdornment: icon, endAdornment: helperTitle ? <InfoTooltip title={helperTitle} /> : undefined, ...InputProps }} {...props} />;\n}\n","import FunctionsIcon from \"@mui/icons-material/Functions\";\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\nimport Checkbox from \"@mui/material/Checkbox\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Stack from \"@mui/material/Stack\";\nimport { LightTooltip } from \"../feedback/FeedbackPrimitives\";\n\nexport interface HeaderTogglesProps {\n showInfo: boolean;\n setShowInfo: (show: boolean) => void;\n showFormula?: boolean;\n setShowFormula?: (show: boolean) => void;\n}\n\nexport function HeaderToggles({ showInfo, setShowInfo, showFormula = false, setShowFormula }: HeaderTogglesProps) {\n return (\n <Stack direction=\"row\" justifyContent=\"flex-end\">\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={showInfo} onChange={(_, checked) => setShowInfo(checked)} />}\n label={<Stack component=\"span\" direction=\"row\" spacing={0.5} alignItems=\"center\">Show information<LightTooltip title=\"Show additional information\"><InfoOutlinedIcon color=\"primary\" fontSize=\"small\" /></LightTooltip></Stack>}\n />\n {setShowFormula ? (\n <FormControlLabel\n control={<Checkbox size=\"small\" checked={showFormula} onChange={(_, checked) => setShowFormula(checked)} />}\n label={<Stack component=\"span\" direction=\"row\" spacing={0.5} alignItems=\"center\">Show formulas<LightTooltip title=\"Show formula details\"><FunctionsIcon color=\"primary\" fontSize=\"small\" /></LightTooltip></Stack>}\n />\n ) : null}\n </Stack>\n );\n}\n","import Box from \"@mui/material/Box\";\nimport Skeleton from \"@mui/material/Skeleton\";\nimport ToggleButton from \"@mui/material/ToggleButton\";\nimport ToggleButtonGroup from \"@mui/material/ToggleButtonGroup\";\nimport Typography from \"@mui/material/Typography\";\nimport type { ReactNode } from \"react\";\nimport { InfoTooltip } from \"../feedback/InfoTooltip\";\n\nexport interface ChoiceOption<Id extends string | number = string | number> {\n id: Id;\n value: ReactNode;\n disabled?: boolean;\n isAdjusting?: \"Y\" | \"N\";\n}\n\ninterface ChoiceGroupBaseProps<Id extends string | number> {\n label: ReactNode;\n helperLabel?: string;\n helperInfo?: ReactNode;\n options?: readonly ChoiceOption<Id>[];\n disabled?: boolean;\n isMandatory?: boolean;\n loading?: boolean;\n}\n\nfunction ChoiceGroupLabel({ label, helperLabel, helperInfo, required }: { label: ReactNode; helperLabel?: string; helperInfo?: ReactNode; required?: boolean }) {\n return (\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 0.5, mb: 1 }}>\n <Typography component=\"span\" fontWeight={600}>{label}{required ? <Typography component=\"span\" color=\"error.main\"> *</Typography> : null}</Typography>\n {helperInfo || helperLabel ? <InfoTooltip title={helperInfo ?? `Help selecting ${helperLabel}`} /> : null}\n </Box>\n );\n}\n\nexport interface OptionSelectorWithLabelProps<Id extends string | number = string | number> extends ChoiceGroupBaseProps<Id> {\n value?: Id | null;\n onChange: (value: Id) => void;\n}\n\nexport function OptionSelectorWithLabel<Id extends string | number = string | number>({ label, helperLabel, helperInfo, options = [], value, onChange, disabled = false, isMandatory, loading = false }: OptionSelectorWithLabelProps<Id>) {\n return (\n <Box component=\"fieldset\" sx={{ border: 0, m: 0, p: 1.5 }} disabled={disabled}>\n <ChoiceGroupLabel label={label} helperLabel={helperLabel} helperInfo={helperInfo} required={isMandatory} />\n {loading ? <Skeleton variant=\"rectangular\" height={40} /> : (\n <ToggleButtonGroup exclusive value={value ?? null} onChange={(_, next: Id | null) => { if (next != null) onChange(next); }} aria-label={typeof label === \"string\" ? label : \"Options\"} sx={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(9rem, 1fr))\", gap: 1 }}>\n {options.map((option) => <ToggleButton key={String(option.id)} value={option.id} disabled={disabled || option.disabled || option.isAdjusting === \"Y\"}>{option.value}</ToggleButton>)}\n </ToggleButtonGroup>\n )}\n </Box>\n );\n}\n\nexport interface OptionMultiSelectorWithLabelProps<Id extends string | number = string | number> extends ChoiceGroupBaseProps<Id> {\n value?: readonly Id[];\n onChange: (value: Id[]) => void;\n}\n\nexport function OptionMultiSelectorWithLabel<Id extends string | number = string | number>({ label, helperLabel, helperInfo, options = [], value = [], onChange, disabled = false, isMandatory, loading = false }: OptionMultiSelectorWithLabelProps<Id>) {\n return (\n <Box component=\"fieldset\" sx={{ border: 0, m: 0, p: 1.5 }} disabled={disabled}>\n <ChoiceGroupLabel label={label} helperLabel={helperLabel} helperInfo={helperInfo} required={isMandatory} />\n {loading ? <Skeleton variant=\"rectangular\" height={40} /> : (\n <ToggleButtonGroup value={[...value]} onChange={(_, next: Id[]) => onChange(next)} aria-label={typeof label === \"string\" ? label : \"Options\"} sx={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(9rem, 1fr))\", gap: 1 }}>\n {options.map((option) => <ToggleButton key={String(option.id)} value={option.id} disabled={disabled || option.disabled}>{option.value}</ToggleButton>)}\n </ToggleButtonGroup>\n )}\n </Box>\n );\n}\n","import Chip, { type ChipProps } from \"@mui/material/Chip\";\n\nexport type StatusTone = \"default\" | \"success\" | \"error\" | \"warning\" | \"info\";\n\nexport interface StatusIndicatorProps extends Omit<ChipProps, \"color\" | \"label\"> {\n label: string;\n tone?: StatusTone;\n}\n\nexport function StatusIndicator({\n label,\n tone = \"default\",\n ...props\n}: StatusIndicatorProps) {\n return <Chip size=\"small\" label={label} color={tone} {...props} />;\n}\n\nexport const StatusIcon = StatusIndicator;\nexport const BudgetStatusIcon = StatusIndicator;\n","import Box, { type BoxProps } from \"@mui/material/Box\";\nimport Typography from \"@mui/material/Typography\";\nimport type { ReactNode } from \"react\";\n\nexport interface EmptyStateProps extends Omit<BoxProps, \"title\"> {\n title: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n action?: ReactNode;\n}\n\nexport function EmptyState({\n title,\n description,\n icon,\n action,\n ...props\n}: EmptyStateProps) {\n return (\n <Box role=\"status\" textAlign=\"center\" p={4} {...props}>\n {icon ? <Box aria-hidden=\"true\">{icon}</Box> : null}\n <Typography component=\"h2\" variant=\"h6\">\n {title}\n </Typography>\n {description ? (\n <Typography color=\"text.secondary\">{description}</Typography>\n ) : null}\n {action ? <Box mt={2}>{action}</Box> : null}\n </Box>\n );\n}\n\nexport interface ErrorStateProps extends EmptyStateProps {\n announce?: boolean;\n}\n\nexport function ErrorState({ announce = true, ...props }: ErrorStateProps) {\n return <EmptyState role={announce ? \"alert\" : \"status\"} {...props} />;\n}\n","import ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport Paper from \"@mui/material/Paper\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport type { ReactNode } from \"react\";\nimport { Spinner } from \"./FeedbackPrimitives\";\n\nexport interface AccessErrorProps {\n error?: ReactNode;\n errorType?: string;\n title?: ReactNode;\n}\n\nexport function AccessError({ error, errorType, title = \"Unable to load this content\" }: AccessErrorProps) {\n return (\n <Paper role=\"alert\" variant=\"outlined\" sx={{ maxWidth: 560, mx: \"auto\", my: 4, p: 3 }}>\n <Stack spacing={1.5} alignItems=\"center\" textAlign=\"center\">\n <ErrorOutlineIcon color=\"error\" fontSize=\"large\" aria-hidden=\"true\" />\n <Typography component=\"h1\" variant=\"h5\">{title}</Typography>\n {errorType ? <Typography variant=\"overline\">{errorType}</Typography> : null}\n {error ? <Typography>{error}</Typography> : null}\n </Stack>\n </Paper>\n );\n}\n\nexport interface AccessLoaderProps {\n title?: ReactNode;\n message?: ReactNode;\n}\n\nexport function AccessLoader({ title = \"Please wait…\", message = \"Getting data ready.\" }: AccessLoaderProps) {\n return (\n <Stack role=\"status\" spacing={1} alignItems=\"center\" justifyContent=\"center\" sx={{ minHeight: 240 }}>\n <Spinner centered={false} label=\"Loading\" />\n <Typography component=\"h2\" variant=\"h6\">{title}</Typography>\n <Typography color=\"text.secondary\">{message}</Typography>\n </Stack>\n );\n}\n","import Paper from \"@mui/material/Paper\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport type { ReactNode } from \"react\";\nimport { SharedButton } from \"../buttons/SharedButton\";\n\nexport interface ErrorPageProps {\n code: number | string;\n title: ReactNode;\n message: ReactNode;\n onBack?: () => void;\n onHome?: () => void;\n backLabel?: string;\n homeLabel?: string;\n footer?: ReactNode;\n}\n\n/** Router-independent full-page error state. Navigation is injected by the host. */\nexport function ErrorPage({\n code,\n title,\n message,\n onBack,\n onHome,\n backLabel = \"Go back\",\n homeLabel = \"Return home\",\n footer,\n}: ErrorPageProps) {\n return (\n <Stack component=\"main\" alignItems=\"center\" justifyContent=\"center\" spacing={2} sx={{ minHeight: \"60vh\", p: 2 }}>\n <Paper variant=\"outlined\" sx={{ width: \"100%\", maxWidth: 480, p: 4, textAlign: \"center\", borderTop: 6, borderTopColor: \"primary.main\" }}>\n <Stack spacing={2} alignItems=\"center\">\n <Typography aria-hidden=\"true\" variant=\"h2\" color=\"primary.main\" fontWeight={700}>{code}</Typography>\n <Typography component=\"h1\" variant=\"h5\">{title}</Typography>\n <Typography color=\"text.secondary\">{message}</Typography>\n {onBack || onHome ? (\n <Stack direction={{ xs: \"column\", sm: \"row\" }} spacing={1}>\n {onBack ? <SharedButton variant=\"outlined\" onClick={onBack}>{backLabel}</SharedButton> : null}\n {onHome ? <SharedButton onClick={onHome}>{homeLabel}</SharedButton> : null}\n </Stack>\n ) : null}\n </Stack>\n </Paper>\n {footer}\n </Stack>\n );\n}\n\ntype PresetErrorPageProps = Omit<Partial<ErrorPageProps>, \"code\">;\n\nexport function PageNotFound(props: PresetErrorPageProps) {\n return <ErrorPage code={404} title=\"Page not found\" message=\"The requested page is unavailable.\" {...props} />;\n}\nexport function MenuNotFoundPage(props: PresetErrorPageProps) {\n return <ErrorPage code={404} title=\"Menu not found\" message=\"The requested menu is unavailable.\" {...props} />;\n}\nexport function ForbiddenPage(props: PresetErrorPageProps) {\n return <ErrorPage code={403} title=\"Access forbidden\" message=\"You do not have permission to access this resource.\" {...props} />;\n}\nexport function UnauthorizedPage(props: PresetErrorPageProps) {\n return <ErrorPage code={401} title=\"Authentication required\" message=\"Sign in to access this resource.\" {...props} />;\n}\nexport function ServerErrorPage(props: PresetErrorPageProps) {\n return <ErrorPage code={500} title=\"Something went wrong\" message=\"The server could not complete the request.\" {...props} />;\n}\n","import Box from \"@mui/material/Box\";\nimport Switch, { type SwitchProps } from \"@mui/material/Switch\";\nimport Tab, { type TabProps } from \"@mui/material/Tab\";\nimport Tabs, { type TabsProps } from \"@mui/material/Tabs\";\nimport ToggleButton, { type ToggleButtonProps } from \"@mui/material/ToggleButton\";\nimport { styled } from \"@mui/material/styles\";\nimport type { ReactNode } from \"react\";\n\nexport const StyledTabs = styled((props: TabsProps) => <Tabs {...props} />)({\n minHeight: 40,\n \"& .MuiTabs-indicator\": { height: 3 },\n});\n\nexport const StyledTab = styled((props: TabProps) => <Tab {...props} />)({\n minHeight: 40,\n textTransform: \"none\",\n});\n\nexport const WhiteStyledTab = styled(StyledTab)(({ theme }) => ({\n color: theme.palette.common.white,\n \"&.Mui-selected\": { color: theme.palette.common.white },\n}));\n\nexport interface TabPanelProps {\n value: string | number;\n index: string | number;\n children?: ReactNode;\n keepMounted?: boolean;\n id?: string;\n \"aria-labelledby\"?: string;\n tabIndex?: number;\n}\n\nexport function TabPanel({\n value,\n index,\n children,\n keepMounted,\n id,\n \"aria-labelledby\": ariaLabelledBy,\n tabIndex = 0,\n}: TabPanelProps) {\n const active = value === index;\n if (!active && !keepMounted) return null;\n return (\n <Box\n role=\"tabpanel\"\n hidden={!active}\n id={id}\n aria-labelledby={ariaLabelledBy}\n tabIndex={active ? tabIndex : undefined}\n sx={{ p: 2 }}\n >\n {children}\n </Box>\n );\n}\n\nexport function SharedToggleButton(props: ToggleButtonProps) {\n return <ToggleButton size=\"small\" {...props} />;\n}\n\nexport function CustomSwitch(props: SwitchProps) {\n return <Switch size=\"small\" {...props} />;\n}\n\nexport const StyledSwitch = CustomSwitch;\n\nexport function tabA11yProps(baseId: string, index: string | number) {\n return {\n id: `${baseId}-tab-${index}`,\n \"aria-controls\": `${baseId}-panel-${index}`,\n } as const;\n}\n\nexport function tabPanelA11yProps(baseId: string, index: string | number) {\n return {\n id: `${baseId}-panel-${index}`,\n \"aria-labelledby\": `${baseId}-tab-${index}`,\n } as const;\n}\n","import Dialog, { type DialogProps } from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogContentText from \"@mui/material/DialogContentText\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport type { ReactNode } from \"react\";\nimport { SharedButton } from \"../buttons/SharedButton\";\n\nexport interface ConfirmDialogProps extends Omit<DialogProps, \"onClose\" | \"title\"> {\n title: ReactNode;\n message?: ReactNode;\n confirmLabel?: ReactNode;\n cancelLabel?: ReactNode;\n onConfirm: () => void;\n onClose: () => void;\n confirmDisabled?: boolean;\n}\n\nexport function ConfirmDialog({\n title,\n message,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n onConfirm,\n onClose,\n confirmDisabled,\n children,\n ...props\n}: ConfirmDialogProps) {\n return (\n <Dialog onClose={onClose} {...props}>\n <DialogTitle>{title}</DialogTitle>\n <DialogContent>\n {message ? <DialogContentText>{message}</DialogContentText> : null}\n {children}\n </DialogContent>\n <DialogActions>\n <SharedButton onClick={onClose}>{cancelLabel}</SharedButton>\n <SharedButton\n variant=\"contained\"\n onClick={onConfirm}\n disabled={confirmDisabled}\n >\n {confirmLabel}\n </SharedButton>\n </DialogActions>\n </Dialog>\n );\n}\n\nexport default ConfirmDialog;\n","import CloseIcon from \"@mui/icons-material/Close\";\nimport Dialog, { type DialogProps } from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport Stack from \"@mui/material/Stack\";\nimport { useId, type ReactNode } from \"react\";\nimport { SharedIconButton } from \"../buttons/SharedIconButton\";\n\nexport interface ModalProps extends Omit<DialogProps, \"onClose\" | \"title\"> {\n title: ReactNode;\n onClose: () => void;\n closeLabel?: string;\n closeOnBackdrop?: boolean;\n}\n\nexport function Modal({\n title,\n onClose,\n closeLabel = \"Close dialog\",\n closeOnBackdrop = true,\n children,\n ...props\n}: ModalProps) {\n const generatedId = useId();\n const titleId = `shared-modal-title-${generatedId.replace(/:/g, \"\")}`;\n return (\n <Dialog\n aria-labelledby={titleId}\n onClose={(_, reason) => {\n if (reason !== \"backdropClick\" || closeOnBackdrop) onClose();\n }}\n {...props}\n >\n <DialogTitle id={titleId} component=\"div\">\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\">\n <span>{title}</span>\n <SharedIconButton aria-label={closeLabel} onClick={onClose} size=\"small\">\n <CloseIcon />\n </SharedIconButton>\n </Stack>\n </DialogTitle>\n <DialogContent>{children}</DialogContent>\n </Dialog>\n );\n}\n\nexport const ContentModal = Modal;\nexport const PreviewContentModal = Modal;\nexport default Modal;\n","import CheckCircleOutlineIcon from \"@mui/icons-material/CheckCircleOutline\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport WarningAmberIcon from \"@mui/icons-material/WarningAmber\";\nimport Box from \"@mui/material/Box\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport Dialog, { type DialogProps } from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogContentText from \"@mui/material/DialogContentText\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport { useId, type ReactNode } from \"react\";\nimport { SharedButton } from \"../buttons/SharedButton\";\n\nexport type StatusDialogSeverity = \"processing\" | \"success\" | \"error\" | \"warning\";\n\nexport interface StatusDialogProps\n extends Omit<DialogProps, \"children\" | \"content\" | \"onClose\" | \"open\" | \"title\"> {\n severity: StatusDialogSeverity;\n open?: boolean;\n label?: ReactNode;\n title?: ReactNode;\n message?: ReactNode;\n content?: ReactNode;\n icon?: string;\n htmlIcon?: ReactNode;\n buttonText?: string;\n onClose?: () => void;\n onCancel?: () => void;\n}\n\nconst statusDefaults = {\n processing: { label: \"Processing\", color: \"primary.main\", icon: <CircularProgress /> },\n success: { label: \"Success\", color: \"success.main\", icon: <CheckCircleOutlineIcon /> },\n error: { label: \"Error\", color: \"error.main\", icon: <ErrorOutlineIcon /> },\n warning: { label: \"Warning\", color: \"warning.main\", icon: <WarningAmberIcon /> },\n} as const;\n\n/** Accessible replacement for the legacy status overlays. */\nexport function StatusDialog({\n severity,\n label,\n title,\n message,\n content,\n icon,\n htmlIcon,\n buttonText,\n onClose,\n onCancel,\n open = true,\n ...props\n}: StatusDialogProps) {\n const generatedId = useId().replace(/:/g, \"\");\n const titleId = `status-dialog-title-${generatedId}`;\n const descriptionId = `status-dialog-description-${generatedId}`;\n const defaults = statusDefaults[severity];\n const canDismiss = severity !== \"processing\" && Boolean(onClose || onCancel);\n\n return (\n <Dialog\n open={open}\n aria-labelledby={titleId}\n aria-describedby={message || title ? descriptionId : undefined}\n onClose={(_, reason) => {\n if (canDismiss && reason !== \"backdropClick\") (onCancel ?? onClose)?.();\n }}\n disableEscapeKeyDown={!canDismiss}\n {...props}\n >\n <DialogContent sx={{ minWidth: { sm: 360 }, textAlign: \"center\", pt: 4 }}>\n <Stack spacing={2} alignItems=\"center\">\n {htmlIcon ?? (icon ? <Box component=\"img\" src={icon} alt=\"\" sx={{ maxWidth: 192, maxHeight: 128 }} /> : (\n <Box aria-hidden=\"true\" sx={{ color: defaults.color, display: \"grid\", placeItems: \"center\", \"& svg\": { fontSize: 56 } }}>\n {defaults.icon}\n </Box>\n ))}\n <Typography id={titleId} component=\"h2\" variant=\"h6\">\n {label ?? defaults.label}\n </Typography>\n {title || message ? (\n <DialogContentText id={descriptionId} component=\"div\">\n {title ? <Typography component=\"p\" fontWeight={600}>{title}</Typography> : null}\n {message ? <Typography component=\"p\" variant=\"body2\">{message}</Typography> : null}\n </DialogContentText>\n ) : null}\n {content}\n </Stack>\n </DialogContent>\n {severity !== \"processing\" && onClose ? (\n <DialogActions sx={{ justifyContent: \"center\", pb: 3 }}>\n <SharedButton color={severity === \"error\" ? \"error\" : severity === \"warning\" ? \"warning\" : \"success\"} onClick={onClose}>\n {buttonText ?? (severity === \"warning\" ? \"Close\" : \"Continue\")}\n </SharedButton>\n </DialogActions>\n ) : null}\n </Dialog>\n );\n}\n\nexport type LegacyStatusModalProps = Omit<StatusDialogProps, \"severity\">;\nexport function ProcessingModal(props: LegacyStatusModalProps) { return <StatusDialog severity=\"processing\" {...props} />; }\nexport function SuccessModal(props: LegacyStatusModalProps) { return <StatusDialog severity=\"success\" {...props} />; }\nexport function ErrorModal(props: LegacyStatusModalProps) { return <StatusDialog severity=\"error\" {...props} />; }\nexport function WarningModal(props: LegacyStatusModalProps) { return <StatusDialog severity=\"warning\" {...props} />; }\n","import DialogActions, { type DialogActionsProps } from \"@mui/material/DialogActions\";\nimport Slide, { type SlideProps } from \"@mui/material/Slide\";\nimport { forwardRef, type ReactElement, type Ref } from \"react\";\n\nexport const CustomTransition = forwardRef(function CustomTransition(\n props: SlideProps,\n ref: Ref<unknown>,\n) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n}) as (props: SlideProps & { ref?: Ref<unknown> }) => ReactElement;\n\nexport function DialogAction(props: DialogActionsProps) {\n return (\n <DialogActions\n {...props}\n sx={{\n position: \"relative\",\n boxShadow: (theme) => `0 -6px 12px -10px ${theme.palette.text.primary}`,\n ...props.sx,\n }}\n />\n );\n}\n\nexport const Transition = CustomTransition;\nexport const StyledDialogActions = DialogAction;\n","import Box, { type BoxProps } from \"@mui/material/Box\";\nimport Container, { type ContainerProps } from \"@mui/material/Container\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport type { ReactNode } from \"react\";\n\nexport interface PageProps extends Omit<BoxProps, \"title\" | \"maxWidth\"> {\n title?: ReactNode;\n subtitle?: ReactNode;\n actions?: ReactNode;\n maxWidth?: ContainerProps[\"maxWidth\"];\n}\n\nexport function Page({\n title,\n subtitle,\n actions,\n maxWidth = false,\n children,\n ...props\n}: PageProps) {\n return (\n <Box component=\"main\" {...props}>\n <Container maxWidth={maxWidth}>\n {title || subtitle || actions ? (\n <Stack\n direction={{ xs: \"column\", sm: \"row\" }}\n justifyContent=\"space-between\"\n alignItems={{ xs: \"stretch\", sm: \"center\" }}\n gap={2}\n mb={2}\n >\n <Box>\n {title ? (\n <Typography component=\"h1\" variant=\"h5\">\n {title}\n </Typography>\n ) : null}\n {subtitle ? (\n <Typography color=\"text.secondary\">{subtitle}</Typography>\n ) : null}\n </Box>\n {actions}\n </Stack>\n ) : null}\n {children}\n </Container>\n </Box>\n );\n}\n\nexport interface PanelWrapperProps extends BoxProps {\n label?: string;\n}\n\nexport function PanelWrapper({ label, children, ...props }: PanelWrapperProps) {\n return (\n <Box component=\"section\" aria-label={label} {...props}>\n {children}\n </Box>\n );\n}\n\nexport default Page;\n","import ArrowForwardIosSharpIcon from \"@mui/icons-material/ArrowForwardIosSharp\";\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\nimport OpenInNewIcon from \"@mui/icons-material/OpenInNew\";\nimport Accordion, { type AccordionProps } from \"@mui/material/Accordion\";\nimport AccordionDetails from \"@mui/material/AccordionDetails\";\nimport AccordionSummary, { type AccordionSummaryProps } from \"@mui/material/AccordionSummary\";\nimport Card, { type CardProps } from \"@mui/material/Card\";\nimport CardContent from \"@mui/material/CardContent\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport Divider, { type DividerProps } from \"@mui/material/Divider\";\nimport { styled } from \"@mui/material/styles\";\nimport type { ReactNode } from \"react\";\nimport { SharedIconButton } from \"../buttons/SharedIconButton\";\n\nexport const StyledCard = styled(Card)(({ theme }) => ({\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: 2,\n boxShadow: theme.shadows[1],\n transition: theme.transitions.create(\"box-shadow\"),\n \"&:hover\": { boxShadow: theme.shadows[3] },\n}));\n\nexport interface StyledKpiCardProps extends Omit<CardProps, \"title\"> {\n title: ReactNode;\n description?: ReactNode;\n count?: ReactNode;\n onInfo?: () => void;\n /** Legacy alias for onInfo. */\n onClick?: () => void;\n onRedirect?: () => void;\n infoLabel?: string;\n redirectLabel?: string;\n}\n\nexport function StyledKpiCard({\n title,\n description,\n count = 0,\n onInfo,\n onClick,\n onRedirect,\n infoLabel = \"More information\",\n redirectLabel = \"Open details\",\n ...props\n}: StyledKpiCardProps) {\n const infoAction = onInfo ?? onClick;\n return (\n <StyledCard {...props}>\n <CardContent>\n <Stack spacing={2}>\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\">\n <Typography component=\"h2\" variant=\"h6\">{title}</Typography>\n {infoAction ? (\n <SharedIconButton aria-label={infoLabel} onClick={infoAction}>\n <InfoOutlinedIcon />\n </SharedIconButton>\n ) : null}\n </Stack>\n {description ? (\n <Typography color=\"text.secondary\">{description}</Typography>\n ) : null}\n <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\">\n <Typography component=\"p\" variant=\"h3\">{count}</Typography>\n {onRedirect ? (\n <SharedIconButton aria-label={redirectLabel} onClick={onRedirect}>\n <OpenInNewIcon />\n </SharedIconButton>\n ) : null}\n </Stack>\n </Stack>\n </CardContent>\n </StyledCard>\n );\n}\n\nexport const CustomAccordion = styled((props: AccordionProps) => (\n <Accordion disableGutters elevation={0} {...props} />\n))(({ theme }) => ({\n border: `1px solid ${theme.palette.divider}`,\n \"&:before\": { display: \"none\" },\n}));\n\nexport const CustomAccordionSummary = styled(\n (props: AccordionSummaryProps) => (\n <AccordionSummary\n expandIcon={<ArrowForwardIosSharpIcon fontSize=\"small\" />}\n {...props}\n />\n ),\n)(({ theme }) => ({\n flexDirection: \"row-reverse\",\n \"& .MuiAccordionSummary-expandIconWrapper.Mui-expanded\": {\n transform: \"rotate(90deg)\",\n },\n \"& .MuiAccordionSummary-content\": { marginLeft: theme.spacing(1) },\n}));\n\nexport const CustomAccordionDetails = styled(AccordionDetails)(({ theme }) => ({\n padding: theme.spacing(2),\n borderTop: `1px solid ${theme.palette.divider}`,\n}));\n\nexport function Pipe(props: DividerProps) {\n return <Divider orientation=\"vertical\" flexItem {...props} />;\n}\n","import CallMadeIcon from \"@mui/icons-material/CallMade\";\nimport Card from \"@mui/material/Card\";\nimport CardActions from \"@mui/material/CardActions\";\nimport CardContent from \"@mui/material/CardContent\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport type { ReactNode } from \"react\";\nimport { SharedButton } from \"../buttons/SharedButton\";\nimport { SharedIconButton } from \"../buttons/SharedIconButton\";\n\nexport interface ExecutionKpiCardProps { title: ReactNode; body: ReactNode; primaryAction?: () => void; footer?: ReactNode; accentColors?: readonly string[]; }\nexport function ExecutionKpiCard({ title, body, primaryAction, footer }: ExecutionKpiCardProps) { return <Card variant=\"outlined\"><CardContent><Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\"><Typography component=\"h2\" variant=\"h6\">{title}</Typography>{primaryAction ? <SharedIconButton aria-label=\"Open KPI details\" onClick={primaryAction}><CallMadeIcon /></SharedIconButton> : null}</Stack><Typography component=\"div\" variant=\"h4\">{body}</Typography>{footer}</CardContent></Card>; }\n\nexport interface ReportRunKPICardProps { title: ReactNode; body: ReactNode; primaryAction: () => void; secondaryAction?: () => void; }\nexport function ReportRunKPICard({ title, body, primaryAction, secondaryAction }: ReportRunKPICardProps) { return <Card variant=\"outlined\"><CardContent><Typography component=\"h2\" variant=\"h6\">{title}</Typography></CardContent><CardActions><SharedButton onClick={primaryAction}>{body}</SharedButton>{secondaryAction ? <SharedIconButton aria-label=\"Open KPI details\" onClick={secondaryAction}><CallMadeIcon /></SharedIconButton> : null}</CardActions></Card>; }\n","import ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\nimport Breadcrumbs from \"@mui/material/Breadcrumbs\";\nimport Link from \"@mui/material/Link\";\nimport Typography from \"@mui/material/Typography\";\nimport type { Key, ReactNode } from \"react\";\nimport { SharedButton } from \"../buttons/SharedButton\";\n\nexport interface BackButtonProps {\n onClick: () => void;\n label?: string;\n disabled?: boolean;\n}\n\nexport function BackButton({\n onClick,\n label = \"Back\",\n disabled,\n}: BackButtonProps) {\n return (\n <SharedButton onClick={onClick} disabled={disabled} startIcon={<ArrowBackIcon />}>\n {label}\n </SharedButton>\n );\n}\n\nexport interface BreadcrumbItem {\n id?: Key;\n label: ReactNode;\n href?: string;\n onClick?: () => void;\n}\n\nexport interface BreadcrumbNavigationProps {\n items: readonly BreadcrumbItem[];\n label?: string;\n}\n\nexport function BreadcrumbNavigation({\n items,\n label = \"Breadcrumb\",\n}: BreadcrumbNavigationProps) {\n return (\n <Breadcrumbs component=\"nav\" aria-label={label}>\n {items.map((item, index) => {\n const current = index === items.length - 1;\n const itemKey = item.id ?? item.href ?? (typeof item.label === \"string\" ? item.label : index);\n return current ? (\n <Typography key={itemKey} color=\"text.primary\" aria-current=\"page\">\n {item.label}\n </Typography>\n ) : (\n <Link\n key={itemKey}\n href={item.href ?? \"#\"}\n onClick={(event) => {\n if (item.onClick) {\n event.preventDefault();\n item.onClick();\n }\n }}\n >\n {item.label}\n </Link>\n );\n })}\n </Breadcrumbs>\n );\n}\n\nexport const BreadCrumbList = BreadcrumbNavigation;\n","import ArrowDropDownIcon from \"@mui/icons-material/ArrowDropDown\";\nimport Button from \"@mui/material/Button\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport { useId, useState } from \"react\";\n\nexport interface MainSelectorOption<T = unknown> { label: string; value: T; disabled?: boolean; }\nexport interface MainSelectorProps<T = unknown> { label: string; options?: readonly MainSelectorOption<T>[]; onSelect: (option: MainSelectorOption<T>) => void; }\n\nexport function MainSelector<T = unknown>({ label, options = [], onSelect }: MainSelectorProps<T>) {\n const [anchor, setAnchor] = useState<HTMLElement | null>(null);\n const [selected, setSelected] = useState<MainSelectorOption<T> | null>(null);\n const menuId = `main-selector-${useId().replace(/:/g, \"\")}`;\n return <><Button aria-haspopup=\"menu\" aria-expanded={Boolean(anchor)} aria-controls={anchor ? menuId : undefined} endIcon={<ArrowDropDownIcon />} onClick={(event) => setAnchor(event.currentTarget)}>{selected?.label ?? label}</Button><Menu id={menuId} anchorEl={anchor} open={Boolean(anchor)} onClose={() => setAnchor(null)}>{options.map((option) => <MenuItem key={`${option.label}-${String(option.value)}`} disabled={option.disabled} onClick={() => { setSelected(option); setAnchor(null); onSelect(option); }}>{option.label}</MenuItem>)}</Menu></>;\n}\n","import KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport KeyboardArrowUpIcon from \"@mui/icons-material/KeyboardArrowUp\";\nimport Box from \"@mui/material/Box\";\nimport Slider from \"@mui/material/Slider\";\nimport { useEffect, useState, type RefObject } from \"react\";\nimport { SharedIconButton } from \"../buttons/SharedIconButton\";\n\nexport interface TeslaStyleScrollIndicatorProps { scrollRef: RefObject<HTMLElement>; onUpClick?: () => void; onDownClick?: () => void; currentPage?: number; totalPages?: number; rows?: number; columns?: number; label?: string; }\nexport function TeslaStyleScrollIndicator({ scrollRef, onUpClick, onDownClick, currentPage = 1, totalPages = 1, label = \"Scroll position\" }: TeslaStyleScrollIndicatorProps) {\n const [progress, setProgress] = useState(0);\n useEffect(() => { const element = scrollRef.current; if (!element) return undefined; const update = () => { const max = element.scrollHeight - element.clientHeight; setProgress(max > 0 ? Math.round((element.scrollTop / max) * 100) : 0); }; update(); element.addEventListener(\"scroll\", update, { passive: true }); return () => element.removeEventListener(\"scroll\", update); }, [scrollRef]);\n const move = (next: number) => { const element = scrollRef.current; if (element) element.scrollTop = ((element.scrollHeight - element.clientHeight) * next) / 100; setProgress(next); };\n return <Box sx={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: 0.5 }}><SharedIconButton aria-label=\"Scroll up\" onClick={() => { onUpClick?.(); move(Math.max(0, progress - 10)); }}><KeyboardArrowUpIcon /></SharedIconButton><Slider orientation=\"vertical\" value={progress} onChange={(_, value) => move(value as number)} aria-label={label} valueLabelDisplay=\"auto\" sx={{ minHeight: 120 }} /><SharedIconButton aria-label=\"Scroll down\" onClick={() => { onDownClick?.(); move(Math.min(100, progress + 10)); }}><KeyboardArrowDownIcon /></SharedIconButton><Box component=\"span\" sx={{ typography: \"caption\" }}>{currentPage}/{Math.max(totalPages, 1)}</Box></Box>;\n}\n","import Paper, { type PaperProps } from \"@mui/material/Paper\";\nimport Stack from \"@mui/material/Stack\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport Typography from \"@mui/material/Typography\";\nimport type { ReactNode } from \"react\";\n\nexport interface TableWrapperProps extends Omit<PaperProps, \"title\"> {\n title?: ReactNode;\n actions?: ReactNode;\n maxHeight?: number | string;\n}\n\nexport function TableWrapper({\n title,\n actions,\n maxHeight,\n children,\n ...props\n}: TableWrapperProps) {\n return (\n <Paper variant=\"outlined\" {...props}>\n {title || actions ? (\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" p={2}>\n {title ? (\n <Typography component=\"h2\" variant=\"h6\">\n {title}\n </Typography>\n ) : null}\n {actions}\n </Stack>\n ) : null}\n <TableContainer sx={{ maxHeight }}>{children}</TableContainer>\n </Paper>\n );\n}\n\nexport const CustomGridTableWrapper = TableWrapper;\nexport default TableWrapper;\n","import Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport { useMemo, useState } from \"react\";\nimport { SearchInput } from \"../inputs/SearchInput\";\nimport { DataTable, type DataTableProps } from \"./DataTable\";\n\nexport interface SearchableDataTableProps<Row> extends DataTableProps<Row> {\n searchLabel?: string;\n searchFields?: readonly (keyof Row & string)[];\n getSearchText?: (row: Row) => string;\n}\n\nexport function SearchableDataTable<Row>({\n searchLabel = \"Search table\",\n searchFields,\n getSearchText,\n rows,\n ...props\n}: SearchableDataTableProps<Row>) {\n const [query, setQuery] = useState(\"\");\n const filteredRows = useMemo(() => {\n const normalized = query.trim().toLocaleLowerCase();\n if (!normalized) return rows;\n return rows.filter((row) => {\n const text = getSearchText\n ? getSearchText(row)\n : (searchFields ?? Object.keys(row as object)).\n map((field) => String(row[field as keyof Row] ?? \"\"))\n .join(\" \");\n return text.toLocaleLowerCase().includes(normalized);\n });\n }, [getSearchText, query, rows, searchFields]);\n\n return (\n <Stack spacing={1.5}>\n <SearchInput\n label={searchLabel}\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n />\n <Typography component=\"p\" variant=\"caption\" aria-live=\"polite\">\n {filteredRows.length} {filteredRows.length === 1 ? \"result\" : \"results\"}\n </Typography>\n <DataTable rows={filteredRows} {...props} />\n </Stack>\n );\n}\n\nexport default SearchableDataTable;\n","import TableCell, { type TableCellProps } from \"@mui/material/TableCell\";\nimport Stack from \"@mui/material/Stack\";\nimport type { Key, ReactNode } from \"react\";\nimport {\n DataTable,\n type DataTableColumn,\n type DataTableProps,\n} from \"./DataTable\";\nimport { SearchableDataTable } from \"./SearchableDataTable\";\nimport { StyledBorderedTableCell } from \"./TablePrimitives\";\n\n/** Column contract accepted by the former shared-base common tables. */\nexport interface LegacyTableColumn<Row> {\n field: keyof Row & string;\n title?: ReactNode;\n header?: ReactNode;\n align?: TableCellProps[\"align\"];\n sorting?: boolean;\n hidden?: boolean;\n width?: number | string;\n minWidth?: number | string;\n maxWidth?: number | string;\n disablePadding?: boolean;\n noWrapHeader?: boolean;\n noWrapBody?: boolean;\n render?: (row: Row) => ReactNode;\n compare?: (left: Row, right: Row) => number;\n}\n\nfunction normalizeColumns<Row>(\n columns: readonly LegacyTableColumn<Row>[],\n): DataTableColumn<Row>[] {\n return columns.map((column) => ({\n field: column.field,\n header: column.header ?? column.title,\n ...(column.align !== undefined ? { align: column.align } : {}),\n ...(column.sorting !== undefined ? { sortable: column.sorting } : {}),\n ...(column.hidden !== undefined ? { hidden: column.hidden } : {}),\n ...(column.width !== undefined ? { width: column.width } : {}),\n ...(column.minWidth !== undefined ? { minWidth: column.minWidth } : {}),\n ...(column.maxWidth !== undefined ? { maxWidth: column.maxWidth } : {}),\n ...(column.disablePadding !== undefined\n ? { disablePadding: column.disablePadding }\n : {}),\n ...(column.noWrapHeader !== undefined\n ? { noWrapHeader: column.noWrapHeader }\n : {}),\n ...(column.noWrapBody !== undefined\n ? { noWrapBody: column.noWrapBody }\n : {}),\n ...(column.compare ? { compare: column.compare } : {}),\n ...(column.render\n ? { render: (_value: Row[keyof Row], row: Row) => column.render?.(row) }\n : {}),\n }));\n}\n\nexport interface CommonTableProps<Row>\n extends Omit<\n DataTableProps<Row>,\n \"rows\" | \"columns\" | \"initialRowsPerPage\" | \"caption\"\n > {\n data: readonly Row[];\n columns: readonly LegacyTableColumn<Row>[];\n title?: ReactNode;\n rowsInPage?: number;\n /** Legacy loading aliases retained for migration. */\n skeletonColumns?: number;\n skeletonRows?: number;\n height?: number | string;\n minHeight?: number | string;\n}\n\n/** Backwards-compatible, API-free common table. */\nexport function CommonTable<Row>({\n data,\n columns,\n title,\n rowsInPage = 10,\n height,\n minHeight: _minHeight,\n skeletonColumns: _skeletonColumns,\n skeletonRows: _skeletonRows,\n maxHeight,\n ...props\n}: CommonTableProps<Row>) {\n return (\n <DataTable\n rows={data}\n columns={normalizeColumns(columns)}\n caption={title}\n initialRowsPerPage={rowsInPage}\n {...((maxHeight ?? height) !== undefined\n ? { maxHeight: maxHeight ?? height }\n : {})}\n {...props}\n />\n );\n}\n\nexport const CustomTable = CommonTable;\nexport const CustomStickyTable = CommonTable;\n\nexport interface CommonSearchTableProps<Row> extends CommonTableProps<Row> {\n searchLabel?: string;\n searchFields?: readonly (keyof Row & string)[];\n getSearchText?: (row: Row) => string;\n}\n\nexport function CommonSearchTable<Row>({\n data,\n columns,\n title,\n rowsInPage = 10,\n searchLabel,\n searchFields,\n getSearchText,\n height,\n minHeight: _minHeight,\n skeletonColumns: _skeletonColumns,\n skeletonRows: _skeletonRows,\n maxHeight,\n ...props\n}: CommonSearchTableProps<Row>) {\n return (\n <SearchableDataTable\n rows={data}\n columns={normalizeColumns(columns)}\n caption={title}\n initialRowsPerPage={rowsInPage}\n {...(searchLabel !== undefined ? { searchLabel } : {})}\n {...(searchFields !== undefined ? { searchFields } : {})}\n {...(getSearchText !== undefined ? { getSearchText } : {})}\n {...((maxHeight ?? height) !== undefined\n ? { maxHeight: maxHeight ?? height }\n : {})}\n {...props}\n />\n );\n}\n\nexport interface PaginationTableProps<Row> extends CommonTableProps<Row> {\n totalRecords: number;\n currentPageNumber: number;\n setCurrentPageNumber?: (page: number) => void;\n handlePageChange?: (event: unknown, page: number) => void;\n handleChangeRows?: (rowsPerPage: number) => void;\n}\n\n/** Controlled/server-pagination compatibility table. Page numbers remain one-based. */\nexport function PaginationTable<Row>({\n totalRecords,\n currentPageNumber,\n setCurrentPageNumber,\n handlePageChange,\n handleChangeRows,\n rowsInPage = 10,\n ...props\n}: PaginationTableProps<Row>) {\n return (\n <CommonTable\n {...props}\n rowsInPage={rowsInPage}\n pagination={{\n count: totalRecords,\n page: Math.max(0, currentPageNumber - 1),\n rowsPerPage: rowsInPage,\n onPageChange: (page) => {\n setCurrentPageNumber?.(page + 1);\n handlePageChange?.(undefined, page + 1);\n },\n onRowsPerPageChange: (next) => {\n setCurrentPageNumber?.(1);\n handleChangeRows?.(next);\n },\n }}\n />\n );\n}\n\nexport interface CommonSelectionTableProps<Row> extends CommonTableProps<Row> {\n primaryColId: keyof Row & string;\n selected: readonly Key[];\n setSelected: (keys: Key[]) => void;\n hideCheckBoxes?: boolean;\n isRowSelectable?: (row: Row) => boolean;\n getSelectionLabel?: (row: Row) => string;\n}\n\nexport function CommonSelectionTable<Row>({\n primaryColId,\n selected,\n setSelected,\n hideCheckBoxes,\n isRowSelectable,\n getSelectionLabel,\n ...props\n}: CommonSelectionTableProps<Row>) {\n return (\n <CommonTable\n {...props}\n getRowKey={(row) => row[primaryColId] as Key}\n getRowAriaLabel={(row) =>\n getSelectionLabel?.(row) ?? String(row[primaryColId])\n }\n {...(hideCheckBoxes\n ? {}\n : { selectedRowKeys: selected, onSelectedRowKeysChange: setSelected })}\n {...(isRowSelectable ? { isRowSelectable } : {})}\n />\n );\n}\n\nexport interface CommonSelectionValidateTableProps<Row>\n extends CommonSelectionTableProps<Row> {\n validationError?: readonly { requestId?: Key }[];\n isRowInvalid?: (row: Row) => boolean;\n}\n\nexport function CommonSelectionValidateTable<Row>({\n validationError = [],\n isRowInvalid,\n ...props\n}: CommonSelectionValidateTableProps<Row>) {\n const errorKeys = new Set(validationError.map((error) => error.requestId));\n return (\n <CommonSelectionTable\n {...props}\n getRowSx={(row) => {\n const invalid = isRowInvalid\n ? isRowInvalid(row)\n : errorKeys.has((row as Record<string, unknown>).requestId as Key);\n return invalid\n ? { backgroundColor: \"error.light\", \"& td\": { color: \"error.contrastText\" } }\n : {};\n }}\n />\n );\n}\n\nexport const CommonSelectionStickyTable = CommonSelectionTable;\n\nexport interface LegacyAdvancedTableColumn<Row> extends LegacyTableColumn<Row> {\n columns?: readonly LegacyAdvancedTableColumn<Row>[];\n}\n\nfunction flattenAdvancedColumns<Row>(\n columns: readonly LegacyAdvancedTableColumn<Row>[],\n): LegacyTableColumn<Row>[] {\n return columns.flatMap((column) =>\n column.columns?.length ? flattenAdvancedColumns(column.columns) : [column],\n );\n}\n\nexport interface GenericCustomTableProps<Row> extends CommonTableProps<Row> {\n advancedColumns?: readonly LegacyAdvancedTableColumn<Row>[];\n selection?: boolean;\n primaryColId?: keyof Row & string;\n selected?: readonly Key[];\n setSelected?: (keys: Key[]) => void;\n disableCheckBox?: boolean;\n showPagination?: boolean;\n renderTableActions?: false | (() => ReactNode);\n}\n\n/**\n * API-free replacement for the legacy generic table's common modes. Nested\n * column definitions are flattened into accessible leaf headers.\n */\nexport function GenericCustomTable<Row>({\n advancedColumns = [],\n selection,\n primaryColId,\n selected = [],\n setSelected,\n disableCheckBox,\n showPagination = true,\n renderTableActions,\n columns,\n ...props\n}: GenericCustomTableProps<Row>) {\n const activeColumns = advancedColumns.length\n ? flattenAdvancedColumns(advancedColumns)\n : columns;\n const table =\n selection && primaryColId && setSelected ? (\n <CommonSelectionTable\n {...props}\n columns={activeColumns}\n primaryColId={primaryColId}\n selected={selected}\n setSelected={setSelected}\n {...(disableCheckBox !== undefined\n ? { hideCheckBoxes: disableCheckBox }\n : {})}\n showPagination={showPagination}\n />\n ) : (\n <CommonTable\n {...props}\n columns={activeColumns}\n showPagination={showPagination}\n />\n );\n\n return renderTableActions ? (\n <Stack spacing={1}>\n <Stack direction=\"row\" justifyContent=\"flex-end\">\n {renderTableActions()}\n </Stack>\n {table}\n </Stack>\n ) : table;\n}\n\nexport interface CustomTableCellProps<Row>\n extends Omit<TableCellProps, \"children\"> {\n rowData: Row;\n columnObject: LegacyTableColumn<Row>;\n bordered?: boolean;\n}\n\nexport function CustomTableCell<Row>({\n rowData,\n columnObject,\n bordered = true,\n ...props\n}: CustomTableCellProps<Row>) {\n const Cell = bordered ? StyledBorderedTableCell : TableCell;\n return (\n <Cell {...props}>\n {columnObject.render\n ? columnObject.render(rowData)\n : (rowData[columnObject.field] as ReactNode)}\n </Cell>\n );\n}\n","import Radio from \"@mui/material/Radio\";\nimport Skeleton from \"@mui/material/Skeleton\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport type { Key, ReactNode } from \"react\";\n\nexport interface SelectWithTableColumn<Row> { field: keyof Row & string; title: ReactNode; render?: (row: Row) => ReactNode; }\nexport interface SelectWithTableProps<Row extends { id: Key }> { columns: readonly SelectWithTableColumn<Row>[]; data?: readonly Row[]; onChange: (id: Row[\"id\"]) => void; id?: Row[\"id\"] | null; setOpenDetails?: (open: boolean) => void; loading?: boolean; label?: string; }\n\nexport function SelectWithTable<Row extends { id: Key }>({ columns, data = [], onChange, id, setOpenDetails, loading = false, label = \"Select a row\" }: SelectWithTableProps<Row>) {\n return <Table size=\"small\" aria-label={label}><TableHead><TableRow><TableCell padding=\"checkbox\">Select</TableCell>{columns.map((column) => <TableCell key={column.field}>{column.title}</TableCell>)}</TableRow></TableHead><TableBody>{loading ? <TableRow><TableCell colSpan={columns.length + 1}><Skeleton /></TableCell></TableRow> : data.length ? data.map((row) => <TableRow hover key={row.id} selected={row.id === id} onClick={() => onChange(row.id)} onDoubleClick={() => setOpenDetails?.(false)}><TableCell padding=\"checkbox\"><Radio checked={row.id === id} onChange={() => onChange(row.id)} inputProps={{ \"aria-label\": `Select row ${String(row.id)}` }} /></TableCell>{columns.map((column) => <TableCell key={column.field}>{column.render ? column.render(row) : row[column.field] as ReactNode}</TableCell>)}</TableRow>) : <TableRow><TableCell colSpan={columns.length + 1}>No data found.</TableCell></TableRow>}</TableBody></Table>;\n}\n","import type { CSSProperties, HTMLAttributes, ReactNode } from \"react\";\n\nexport interface DateDisplayProps extends Omit<HTMLAttributes<HTMLElement>, \"children\"> {\n value: Date | string | number | null | undefined;\n locale?: string;\n emptyValue?: ReactNode;\n options?: Intl.DateTimeFormatOptions;\n}\n\nexport function DateDisplay({\n value,\n locale,\n emptyValue = \"—\",\n options = { dateStyle: \"medium\" },\n ...props\n}: DateDisplayProps) {\n const date = value == null || value === \"\" ? null : new Date(value);\n const valid = date && !Number.isNaN(date.getTime());\n return (\n <time dateTime={valid ? date.toISOString() : undefined} {...props}>\n {valid ? new Intl.DateTimeFormat(locale, options).format(date) : emptyValue}\n </time>\n );\n}\n\nexport function DateTimeDisplay(props: DateDisplayProps) {\n return <DateDisplay options={{ dateStyle: \"medium\", timeStyle: \"medium\" }} {...props} />;\n}\n\nexport interface SignedValueProps extends Omit<HTMLAttributes<HTMLDataElement>, \"children\"> {\n value: number | string | null | undefined;\n locale?: string;\n decimals?: number;\n zeroAsDash?: boolean;\n kind?: \"number\" | \"currency\" | \"percent\";\n currency?: string;\n}\n\nexport function SignedValue({\n value,\n locale,\n decimals = 2,\n zeroAsDash = false,\n kind = \"number\",\n currency = \"USD\",\n style,\n ...props\n}: SignedValueProps) {\n const numeric = value === \"\" || value == null ? Number.NaN : Number(value);\n if (Number.isNaN(numeric) || (zeroAsDash && numeric === 0)) {\n return <span {...props}>—</span>;\n }\n const formatter = new Intl.NumberFormat(locale, {\n style: kind === \"currency\" ? \"currency\" : kind === \"percent\" ? \"percent\" : \"decimal\",\n ...(kind === \"currency\" ? { currency } : {}),\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n });\n const formatted = formatter.format(kind === \"percent\" ? Math.abs(numeric) / 100 : Math.abs(numeric));\n return (\n <data\n value={numeric}\n aria-label={`${numeric < 0 ? \"Negative \" : \"\"}${formatted}`}\n style={{ color: numeric < 0 ? \"#a30000\" : \"inherit\", ...style }}\n {...props}\n >\n {numeric < 0 ? `(${formatted})` : formatted}\n </data>\n );\n}\n\nexport function SignedAmountValue(props: Omit<SignedValueProps, \"kind\">) {\n return <SignedValue kind=\"currency\" zeroAsDash {...props} />;\n}\n\nexport function SignedAmountWithZero(props: Omit<SignedValueProps, \"kind\">) {\n return <SignedValue kind=\"currency\" {...props} />;\n}\n\nexport function SignedPercentage(props: Omit<SignedValueProps, \"kind\">) {\n return <SignedValue kind=\"percent\" zeroAsDash {...props} />;\n}\n\nexport function SignedPercentageWithZero(props: Omit<SignedValueProps, \"kind\">) {\n return <SignedValue kind=\"percent\" {...props} />;\n}\n\nexport interface ProfitDirectionIconProps extends HTMLAttributes<HTMLSpanElement> {\n value: number | null | undefined;\n}\n\nexport function ProfitDirectionIcon({ value, style, ...props }: ProfitDirectionIconProps) {\n const label = value == null || value === 0 ? \"No change\" : value > 0 ? \"Increase\" : \"Decrease\";\n const symbol = value == null || value === 0 ? \"—\" : value > 0 ? \"↑\" : \"↓\";\n return (\n <span\n role=\"img\"\n aria-label={label}\n style={{\n color: value != null && value < 0 ? \"#a30000\" : value ? \"#2e7d32\" : \"inherit\",\n ...style,\n } satisfies CSSProperties}\n {...props}\n >\n <span aria-hidden=\"true\">{symbol}</span>\n </span>\n );\n}\n","import FunctionsIcon from \"@mui/icons-material/Functions\";\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\nimport OpenInFullOutlinedIcon from \"@mui/icons-material/OpenInFullOutlined\";\nimport Box from \"@mui/material/Box\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport Popover from \"@mui/material/Popover\";\nimport Stack from \"@mui/material/Stack\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Typography from \"@mui/material/Typography\";\nimport { useId, useState, type ReactNode } from \"react\";\nimport { SharedButton } from \"../buttons/SharedButton\";\nimport { SharedIconButton } from \"../buttons/SharedIconButton\";\nimport { Modal } from \"../dialogs/Modal\";\nimport { SharedTextField } from \"../inputs/SharedTextField\";\nimport { LightTooltip } from \"../feedback/FeedbackPrimitives\";\n\nexport interface FormulaIconProps {\n formula: ReactNode;\n label?: string;\n color?: string;\n fontSize?: string | number;\n}\n\nexport function FormulaIcon({ formula, label = \"View formula\", color = \"primary.main\", fontSize = 18 }: FormulaIconProps) {\n const [anchor, setAnchor] = useState<HTMLElement | null>(null);\n const id = useId().replace(/:/g, \"\");\n return (\n <>\n <LightTooltip title={label}>\n <SharedIconButton aria-label={label} size=\"small\" onClick={(event) => setAnchor(event.currentTarget)} sx={{ color }}>\n <FunctionsIcon sx={{ fontSize }} />\n </SharedIconButton>\n </LightTooltip>\n <Popover\n id={`formula-${id}`}\n open={Boolean(anchor)}\n anchorEl={anchor}\n onClose={() => setAnchor(null)}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n >\n <Typography component=\"pre\" sx={{ p: 2, m: 0, maxWidth: \"min(90vw, 40rem)\", whiteSpace: \"pre-wrap\" }}>\n {formula}\n </Typography>\n </Popover>\n </>\n );\n}\n\nexport interface FormulaInfoIconProps {\n formulaData: Readonly<Record<string, ReactNode>>;\n label?: string;\n}\n\nexport function FormulaInfoIcon({ formulaData, label = \"View formula details\" }: FormulaInfoIconProps) {\n const [anchor, setAnchor] = useState<HTMLElement | null>(null);\n return (\n <>\n <SharedIconButton aria-label={label} size=\"small\" onClick={(event) => setAnchor(event.currentTarget)}>\n <InfoOutlinedIcon fontSize=\"small\" />\n </SharedIconButton>\n <Popover open={Boolean(anchor)} anchorEl={anchor} onClose={() => setAnchor(null)} anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}>\n <Table size=\"small\" aria-label=\"Formula details\">\n <TableHead><TableRow><TableCell>Formula name</TableCell><TableCell>Formula description</TableCell></TableRow></TableHead>\n <TableBody>\n {Object.entries(formulaData).map(([name, description]) => (\n <TableRow key={name}><TableCell component=\"th\" scope=\"row\">{name}</TableCell><TableCell>{description}</TableCell></TableRow>\n ))}\n </TableBody>\n </Table>\n </Popover>\n </>\n );\n}\n\nexport interface NameDescriptionPopoverProps {\n value?: ReactNode;\n name?: ReactNode;\n description?: ReactNode;\n label?: string;\n}\n\nexport function NameDescriptionPopover({ value, name, description, label = \"More information\" }: NameDescriptionPopoverProps) {\n const [anchor, setAnchor] = useState<HTMLElement | null>(null);\n return (\n <Stack component=\"span\" direction=\"row\" spacing={0.5} alignItems=\"center\">\n <span>{value}</span>\n <SharedIconButton aria-label={label} size=\"small\" onClick={(event) => setAnchor(event.currentTarget)}><InfoOutlinedIcon fontSize=\"small\" /></SharedIconButton>\n <Popover open={Boolean(anchor)} anchorEl={anchor} onClose={() => setAnchor(null)} anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}>\n <Box sx={{ p: 1.5, maxWidth: 360 }}>\n {name ? <Typography fontWeight={700}>{name}</Typography> : null}\n {description ? <Typography variant=\"body2\">{description}</Typography> : null}\n </Box>\n </Popover>\n </Stack>\n );\n}\n\nexport const NameDescPopover = NameDescriptionPopover;\n\nexport interface ExpandableCommentProps {\n title?: string;\n value?: string;\n handleChange?: (value: string) => void;\n disabled?: boolean;\n label?: string;\n}\n\nexport function ExpandableComment({ title = \"Comment\", value = \"\", handleChange, disabled = false, label = \"Expand comment\" }: ExpandableCommentProps) {\n const [open, setOpen] = useState(false);\n const field = (rows: number) => (\n <SharedTextField multiline minRows={rows} label={title} value={value} disabled={disabled} onChange={(event) => handleChange?.(event.target.value)} />\n );\n return (\n <Stack spacing={0.5}>\n <Stack direction=\"row\" justifyContent=\"flex-end\">\n <SharedIconButton aria-label={label} size=\"small\" onClick={() => setOpen(true)}><OpenInFullOutlinedIcon fontSize=\"small\" /></SharedIconButton>\n </Stack>\n {field(4)}\n <Modal open={open} title={title} onClose={() => setOpen(false)} fullWidth maxWidth=\"md\">\n {field(16)}\n <DialogActions><SharedButton variant=\"outlined\" onClick={() => setOpen(false)}>Close</SharedButton></DialogActions>\n </Modal>\n </Stack>\n );\n}\n\nexport const CommentExpand = ExpandableComment;\n\nexport interface StatusBlinkerProps {\n status?: \"success\" | \"error\" | \"warning\" | \"info\";\n label?: string;\n}\n\nexport function StatusBlinker({ status = \"info\", label = status }: StatusBlinkerProps) {\n return (\n <Box component=\"span\" role=\"status\" aria-label={label} sx={{ display: \"inline-block\", width: 12, height: 12, borderRadius: \"50%\", bgcolor: `${status}.main` }} />\n );\n}\n\nexport function ErrorBlinker(props: Omit<StatusBlinkerProps, \"status\">) {\n return <StatusBlinker status=\"error\" label=\"Error\" {...props} />;\n}\n\nexport function SuccessBlinker(props: Omit<StatusBlinkerProps, \"status\">) {\n return <StatusBlinker status=\"success\" label=\"Success\" {...props} />;\n}\n\nexport const FormulaInfoWithIcon = FormulaInfoIcon;\n","import ArrowForwardIosIcon from \"@mui/icons-material/ArrowForwardIos\";\nimport DescriptionOutlinedIcon from \"@mui/icons-material/DescriptionOutlined\";\nimport Box from \"@mui/material/Box\";\nimport Card from \"@mui/material/Card\";\nimport CardActions from \"@mui/material/CardActions\";\nimport CardContent from \"@mui/material/CardContent\";\nimport CardHeader from \"@mui/material/CardHeader\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport Typography from \"@mui/material/Typography\";\nimport { SharedButton } from \"../buttons/SharedButton\";\n\nexport interface DocumentationItem { helpDocumentId: string | number; name?: string; description?: string; startFileName?: string; }\nexport interface DocumentationCardProps { data: DocumentationItem; openDocument: (id: DocumentationItem[\"helpDocumentId\"], startFileName?: string) => void; viewLoading?: boolean; setViewDocumentLoadingId?: (id: DocumentationItem[\"helpDocumentId\"]) => void; }\n\nexport function DocumentationCard({ data, openDocument, viewLoading = false, setViewDocumentLoadingId }: DocumentationCardProps) {\n const open = () => { setViewDocumentLoadingId?.(data.helpDocumentId); openDocument(data.helpDocumentId, data.startFileName); };\n return <Card variant=\"outlined\"><CardHeader avatar={<DescriptionOutlinedIcon color=\"primary\" />} title={data.name ?? \"Documentation guide\"} subheader=\"Training resource\" /><CardContent><Typography color=\"text.secondary\">{data.description ?? \"Documentation and training materials.\"}</Typography></CardContent><CardActions><SharedButton fullWidth disabled={viewLoading} endIcon={viewLoading ? <CircularProgress size={18} /> : <ArrowForwardIosIcon />} onClick={open}>{viewLoading ? \"Loading…\" : \"Read documentation\"}</SharedButton></CardActions></Card>;\n}\n\nexport interface AppHelpProps { documentData?: readonly DocumentationItem[]; openDocument: DocumentationCardProps[\"openDocument\"]; viewLoading?: boolean; viewDocumentLoadingId?: DocumentationItem[\"helpDocumentId\"] | null; setViewDocumentLoadingId?: DocumentationCardProps[\"setViewDocumentLoadingId\"]; }\nexport function AppHelp({ documentData = [], openDocument, viewLoading = false, viewDocumentLoadingId, setViewDocumentLoadingId }: AppHelpProps) {\n return <Box sx={{ display: \"grid\", gridTemplateColumns: \"repeat(auto-fit, minmax(min(100%, 18rem), 1fr))\", gap: 2 }}>{documentData.map((data) => <DocumentationCard key={data.helpDocumentId} data={data} openDocument={openDocument} viewLoading={viewLoading && data.helpDocumentId === viewDocumentLoadingId} setViewDocumentLoadingId={setViewDocumentLoadingId} />)}</Box>;\n}\n","import Box from \"@mui/material/Box\";\nimport Card from \"@mui/material/Card\";\nimport CardActionArea from \"@mui/material/CardActionArea\";\nimport CardActions from \"@mui/material/CardActions\";\nimport CardContent from \"@mui/material/CardContent\";\nimport Grid from \"@mui/material/Grid\";\nimport Stack from \"@mui/material/Stack\";\nimport TablePagination from \"@mui/material/TablePagination\";\nimport Typography from \"@mui/material/Typography\";\nimport { useId, useState, type Key, type MouseEvent, type ReactNode } from \"react\";\n\nexport interface CardComponentProps<Row = unknown> {\n data: Row;\n name: ReactNode;\n description?: ReactNode;\n owner?: ReactNode;\n type?: ReactNode;\n icon?: ReactNode;\n imageSrc?: string;\n imageAlt?: string;\n onClick?: (data: Row) => void;\n handleCardClick?: (event: MouseEvent<HTMLElement>, data: Row) => void;\n}\n\n/** Accessible replacement for the legacy clickable reporting summary card. */\nexport function CardComponent<Row>({\n data,\n name,\n description,\n owner,\n type,\n icon,\n imageSrc,\n imageAlt = \"\",\n onClick,\n handleCardClick,\n}: CardComponentProps<Row>) {\n const content = (\n <Stack direction=\"row\" alignItems=\"center\" spacing={2} sx={{ p: 2 }}>\n {imageSrc ? <Box component=\"img\" src={imageSrc} alt={imageAlt} sx={{ width: 64, height: 64, objectFit: \"contain\" }} /> : icon}\n <CardContent sx={{ minWidth: 0, p: 0, \"&:last-child\": { pb: 0 } }}>\n <Typography fontWeight={700} noWrap>{name}</Typography>\n {owner != null ? <Typography variant=\"body2\" noWrap>{owner}</Typography> : null}\n {description != null ? <Typography variant=\"body2\" color=\"text.secondary\" noWrap>{description}</Typography> : null}\n {type != null ? <Typography variant=\"caption\" color=\"text.secondary\">{type}</Typography> : null}\n </CardContent>\n </Stack>\n );\n const activate = (event: MouseEvent<HTMLElement>) => {\n handleCardClick?.(event, data);\n onClick?.(data);\n };\n\n return (\n <Card variant=\"outlined\" sx={{ height: \"100%\" }}>\n {onClick || handleCardClick ? <CardActionArea onClick={activate} sx={{ height: \"100%\" }}>{content}</CardActionArea> : content}\n </Card>\n );\n}\n\nexport interface CardGridColumn<Row> {\n field?: keyof Row & string;\n title: ReactNode;\n render?: (row: Row) => ReactNode;\n action?: boolean;\n}\n\nexport interface CardComponentWithActionsProps<Row> {\n data: readonly Row[];\n columns: readonly CardGridColumn<Row>[];\n getRowKey?: (row: Row, index: number) => Key;\n icon?: ReactNode | ((row: Row) => ReactNode);\n ariaLabel?: string;\n pageSizeOptions?: readonly number[];\n initialRowsPerPage?: number;\n maxHeight?: number | string;\n minHeight?: number | string;\n height?: number | string;\n}\n\n/** Generic paginated card grid. Action renderers are placed in semantic card actions. */\nexport function CardComponentWithActions<Row>({\n data,\n columns,\n getRowKey,\n icon,\n ariaLabel = \"Cards\",\n pageSizeOptions = [6, 12, 18],\n initialRowsPerPage = 6,\n maxHeight,\n minHeight,\n height,\n}: CardComponentWithActionsProps<Row>) {\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(initialRowsPerPage);\n const headingId = useId();\n const visibleRows = data.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage);\n const contentColumns = columns.filter((column) => !column.action && column.title !== \"Actions\");\n const actionColumns = columns.filter((column) => column.action || column.title === \"Actions\");\n const valueFor = (row: Row, column: CardGridColumn<Row>) => column.render?.(row) ?? (column.field ? row[column.field] as ReactNode : null);\n\n return (\n <Box component=\"section\" aria-labelledby={headingId}>\n <Typography id={headingId} sx={{ position: \"absolute\", width: 1, height: 1, overflow: \"hidden\", clip: \"rect(0 0 0 0)\" }}>{ariaLabel}</Typography>\n <Grid container spacing={2} sx={{ maxHeight, minHeight, height, overflow: maxHeight || height ? \"auto\" : undefined, p: 1 }}>\n {visibleRows.map((row, index) => (\n <Grid item xs={12} sm={6} md={4} key={getRowKey?.(row, page * rowsPerPage + index) ?? page * rowsPerPage + index}>\n <Card variant=\"outlined\" sx={{ height: \"100%\" }}>\n <Stack direction=\"row\" alignItems=\"center\">\n {icon ? <Box sx={{ display: \"grid\", placeItems: \"center\", minWidth: 88, p: 2 }}>{typeof icon === \"function\" ? icon(row) : icon}</Box> : null}\n <CardContent sx={{ minWidth: 0, flex: 1 }}>\n {contentColumns.map((column, columnIndex) => (\n <Box key={column.field ?? columnIndex} sx={{ mb: 0.5 }}>\n <Typography variant=\"caption\" color=\"text.secondary\">{column.title}</Typography>\n <Typography component=\"div\" variant={columnIndex === 0 ? \"subtitle1\" : \"body2\"}>{valueFor(row, column) ?? \"—\"}</Typography>\n </Box>\n ))}\n </CardContent>\n </Stack>\n {actionColumns.length ? <CardActions>{actionColumns.map((column, index) => <Box key={column.field ?? index}>{valueFor(row, column)}</Box>)}</CardActions> : null}\n </Card>\n </Grid>\n ))}\n </Grid>\n <TablePagination\n component=\"div\"\n count={data.length}\n page={Math.min(page, Math.max(0, Math.ceil(data.length / rowsPerPage) - 1))}\n rowsPerPage={rowsPerPage}\n rowsPerPageOptions={[...pageSizeOptions]}\n onPageChange={(_, nextPage) => setPage(nextPage)}\n onRowsPerPageChange={(event) => { setRowsPerPage(Number(event.target.value)); setPage(0); }}\n />\n </Box>\n );\n}\n","import CheckCircleOutlinedIcon from \"@mui/icons-material/CheckCircleOutlined\";\nimport SkipNextIcon from \"@mui/icons-material/SkipNext\";\nimport Box from \"@mui/material/Box\";\nimport Divider from \"@mui/material/Divider\";\nimport Popover from \"@mui/material/Popover\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport { useId, useState, type MouseEvent, type ReactNode } from \"react\";\nimport { SharedIconButton } from \"../buttons/SharedIconButton\";\nimport { LightTooltip } from \"../feedback/FeedbackPrimitives\";\n\nexport interface OperationsInfoProps<Row extends object = Record<string, unknown>> {\n data?: Row | null;\n title: string;\n reviewedBy: keyof Row;\n reviewedOn: keyof Row;\n disabled?: boolean;\n type?: string;\n formatDateTime?: (value: unknown) => ReactNode;\n}\n\nfunction defaultFormatDateTime(value: unknown) {\n const date = value instanceof Date ? value : new Date(String(value));\n return Number.isNaN(date.getTime()) ? String(value) : new Intl.DateTimeFormat(undefined, {\n dateStyle: \"medium\",\n timeStyle: \"short\",\n }).format(date);\n}\n\n/** API-free reviewer/status details. Field names and formatting are supplied by the host. */\nexport function OperationsInfo<Row extends object>({\n data,\n title,\n reviewedBy,\n reviewedOn,\n disabled = false,\n type = \"Reviewed\",\n formatDateTime = defaultFormatDateTime,\n}: OperationsInfoProps<Row>) {\n const [anchor, setAnchor] = useState<HTMLElement | null>(null);\n const dialogId = useId();\n const headingId = `${dialogId}-heading`;\n const reviewer = data?.[reviewedBy];\n const reviewDate = data?.[reviewedOn];\n const isSkipped = title.toLowerCase() === \"skipped\";\n const open = (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setAnchor(event.currentTarget);\n };\n\n return (\n <>\n <LightTooltip title={title}>\n <span>\n <SharedIconButton\n aria-label={title}\n aria-haspopup=\"dialog\"\n aria-expanded={Boolean(anchor)}\n aria-controls={anchor ? dialogId : undefined}\n disabled={disabled}\n color={isSkipped ? \"secondary\" : \"success\"}\n onClick={open}\n >\n {isSkipped ? <SkipNextIcon /> : <CheckCircleOutlinedIcon />}\n </SharedIconButton>\n </span>\n </LightTooltip>\n <Popover\n open={Boolean(anchor)}\n anchorEl={anchor}\n onClose={() => setAnchor(null)}\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n slotProps={{ paper: { id: dialogId, role: \"dialog\", \"aria-labelledby\": headingId } }}\n >\n <Box sx={{ minWidth: 250, p: 2 }}>\n <Typography id={headingId} fontWeight={700}>{title} details</Typography>\n <Stack spacing={0.5} sx={{ mt: 1 }}>\n <Typography variant=\"caption\" color=\"text.secondary\">{type} by</Typography>\n <Typography variant=\"body2\">{reviewer == null || reviewer === \"\" ? \"Not generated\" : String(reviewer)}</Typography>\n <Divider />\n <Typography variant=\"caption\" color=\"text.secondary\">{type} on</Typography>\n <Typography variant=\"body2\">{reviewDate == null || reviewDate === \"\" ? \"Not finalized\" : formatDateTime(reviewDate)}</Typography>\n </Stack>\n </Box>\n </Popover>\n </>\n );\n}\n","import Box from \"@mui/material/Box\";\nimport Link from \"@mui/material/Link\";\nimport type { ReactNode } from \"react\";\n\nexport interface VisuallyHiddenProps {\n children: ReactNode;\n}\n\nexport function VisuallyHidden({ children }: VisuallyHiddenProps) {\n return (\n <Box\n component=\"span\"\n sx={{\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: 1,\n margin: -1,\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n whiteSpace: \"nowrap\",\n width: 1,\n }}\n >\n {children}\n </Box>\n );\n}\n\nexport interface LiveRegionProps {\n children: ReactNode;\n priority?: \"polite\" | \"assertive\";\n atomic?: boolean;\n visuallyHidden?: boolean;\n}\n\nexport function LiveRegion({\n children,\n priority = \"polite\",\n atomic = true,\n visuallyHidden = true,\n}: LiveRegionProps) {\n const content = (\n <Box component=\"span\" role=\"status\" aria-live={priority} aria-atomic={atomic}>\n {children}\n </Box>\n );\n return visuallyHidden ? <VisuallyHidden>{content}</VisuallyHidden> : content;\n}\n\nexport interface SkipLinkProps {\n href?: string;\n children?: ReactNode;\n}\n\nexport function SkipLink({\n href = \"#main-content\",\n children = \"Skip to main content\",\n}: SkipLinkProps) {\n return (\n <Link\n href={href}\n sx={{\n position: \"fixed\",\n top: 8,\n left: 8,\n zIndex: \"tooltip\",\n transform: \"translateY(-200%)\",\n bgcolor: \"background.paper\",\n color: \"text.primary\",\n p: 1,\n \"&:focus\": { transform: \"translateY(0)\" },\n }}\n >\n {children}\n </Link>\n );\n}\n","export interface DisplayOrderOptions<Row extends Record<string, unknown>> {\n data?: readonly Row[];\n value: unknown;\n orderKey?: keyof Row;\n idKey?: keyof Row;\n currentId?: unknown;\n}\n\n/** Pure compatibility utility retained under the legacy hook name. */\nexport function useDisplayOrder<Row extends Record<string, unknown>>({\n data = [],\n value,\n orderKey = \"displayOrder\" as keyof Row,\n idKey = \"id\" as keyof Row,\n currentId = null,\n}: DisplayOrderOptions<Row>) {\n const highestDisplayOrder = data.reduce(\n (highest, item) => Math.max(highest, Number(item[orderKey]) || 0),\n 0,\n );\n const isDuplicate = data.some((item) =>\n Number(item[orderKey]) === Number(value)\n && (currentId == null || String(item[idKey]) !== String(currentId)),\n );\n return { isDuplicate, highestDisplayOrder };\n}\n"]}
|