@moderneinc/design-system-components 6.0.0-next.02da4a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -0
- package/dist/ActivityHeader/ActivityHeader.d.ts +58 -0
- package/dist/ActivityIndicatorCell/ActivityIndicatorCell.d.ts +65 -0
- package/dist/Alert/Alert.d.ts +54 -0
- package/dist/Badge/Badge.d.ts +40 -0
- package/dist/Banner/Banner.d.ts +52 -0
- package/dist/Breadcrumbs/Breadcrumbs.d.ts +53 -0
- package/dist/Button/Button.d.ts +56 -0
- package/dist/ButtonTab/ButtonTab.d.ts +16 -0
- package/dist/ButtonTabGroup/ButtonTabGroup.d.ts +31 -0
- package/dist/CanceledIcon/CanceledIcon.d.ts +11 -0
- package/dist/Card/Card.d.ts +32 -0
- package/dist/Checkbox/Checkbox.d.ts +78 -0
- package/dist/CheckboxWithText/CheckboxWithText.d.ts +32 -0
- package/dist/CodeSnippet/CodeSnippet.d.ts +38 -0
- package/dist/DataGrid/DataGrid.d.ts +58 -0
- package/dist/DataGrid/DataGrid.styles.d.ts +14 -0
- package/dist/DataGridCell/DataGridCell.d.ts +120 -0
- package/dist/DataGridColumnsButton/DataGridColumnsButton.d.ts +15 -0
- package/dist/DataGridColumnsPanel/DataGridColumnsPanel.d.ts +31 -0
- package/dist/DataGridFilterPanel/DataGridFilterPanel.d.ts +55 -0
- package/dist/DataGridFiltersButton/DataGridFiltersButton.d.ts +16 -0
- package/dist/DataGridHeaderCell/DataGridHeaderCell.d.ts +8 -0
- package/dist/DataGridHeaderLabel/DataGridHeaderLabel.d.ts +17 -0
- package/dist/DatePicker/DatePicker.d.ts +97 -0
- package/dist/DatePickerListItem/DatePickerListItem.d.ts +4 -0
- package/dist/DatePickerMenu/DatePickerMenu.d.ts +4 -0
- package/dist/DateTimeCell/DateTimeCell.d.ts +17 -0
- package/dist/Divider/Divider.d.ts +30 -0
- package/dist/Dot/Dot.d.ts +36 -0
- package/dist/DownloadToast/DownloadToast.d.ts +45 -0
- package/dist/DropdownInputField/DropdownInputField.d.ts +17 -0
- package/dist/EmptyState/EmptyState.d.ts +17 -0
- package/dist/FilledStatusIcons/FilledStatusIcons.d.ts +41 -0
- package/dist/FilterChip/FilterChip.d.ts +40 -0
- package/dist/Footer/Footer.d.ts +111 -0
- package/dist/GeneralAvatar/GeneralAvatar.d.ts +23 -0
- package/dist/IconButton/IconButton.d.ts +42 -0
- package/dist/IconWrapper/IconWrapper.d.ts +20 -0
- package/dist/InfiniteScrollGrid/InfiniteScrollGrid.d.ts +44 -0
- package/dist/InputField/InputField.d.ts +65 -0
- package/dist/LinkCell/LinkCell.d.ts +17 -0
- package/dist/ListItem/ListItem.d.ts +71 -0
- package/dist/ListItemButton/ListItemButton.d.ts +64 -0
- package/dist/LoadingSpinner/LoadingSpinner.d.ts +28 -0
- package/dist/Menu/Menu.d.ts +30 -0
- package/dist/MenuItem/MenuItem.d.ts +69 -0
- package/dist/ModActionsCell/ModActionsCell.d.ts +9 -0
- package/dist/ModAvatarCell/ModAvatarCell.d.ts +24 -0
- package/dist/ModIconCell/ModIconCell.d.ts +13 -0
- package/dist/ModLogoCell/ModLogoCell.d.ts +23 -0
- package/dist/ModProgressCell/ModProgressCell.d.ts +20 -0
- package/dist/ModStatusCell/ModStatusCell.d.ts +29 -0
- package/dist/Modal/Modal.d.ts +106 -0
- package/dist/NavIconButton/NavIconButton.d.ts +17 -0
- package/dist/NavigationAvatar/NavigationAvatar.d.ts +13 -0
- package/dist/NavigationItem/NavigationItem.d.ts +55 -0
- package/dist/PageContent/PageContent.d.ts +150 -0
- package/dist/PaginatedGrid/PaginatedGrid.d.ts +32 -0
- package/dist/ProgressSpinner/ProgressSpinner.d.ts +17 -0
- package/dist/Progressbar/Progressbar.d.ts +35 -0
- package/dist/QuickFilter/QuickFilter.d.ts +42 -0
- package/dist/Radio/Radio.d.ts +59 -0
- package/dist/RadioButtonWithText/RadioButtonWithText.d.ts +4 -0
- package/dist/RipplingDot/RipplingDot.d.ts +12 -0
- package/dist/SearchChip/SearchChip.d.ts +17 -0
- package/dist/Select/Select.d.ts +24 -0
- package/dist/SelectField/SelectField.d.ts +64 -0
- package/dist/SideNav/ModSideNavContext.d.ts +5 -0
- package/dist/SideNav/SideNav.d.ts +33 -0
- package/dist/Skeleton/Skeleton.d.ts +29 -0
- package/dist/TabPanel/TabPanel.d.ts +47 -0
- package/dist/Table/Table.d.ts +64 -0
- package/dist/Tabs/Tabs.d.ts +28 -0
- package/dist/Tag/Tag.d.ts +51 -0
- package/dist/Toast/Toast.d.ts +66 -0
- package/dist/Toggle/Toggle.d.ts +52 -0
- package/dist/ToggleButton/ToggleButton.d.ts +34 -0
- package/dist/ToggleButtonGroup/ToggleButtonGroup.d.ts +33 -0
- package/dist/ToggleButtonWithText/ToggleButtonWithText.d.ts +4 -0
- package/dist/Toolbar/Toolbar.d.ts +51 -0
- package/dist/Tooltip/Tooltip.d.ts +46 -0
- package/dist/TopNav/TopNav.d.ts +4 -0
- package/dist/TourModal/TourModal.d.ts +4 -0
- package/dist/Tree/Tree.d.ts +38 -0
- package/dist/TypologyControl/TypologyControl.d.ts +19 -0
- package/dist/VibratingDot/VibratingDot.d.ts +12 -0
- package/dist/index.d.ts +3147 -0
- package/dist/index.esm.js +7414 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +7527 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/colorHelpers.d.ts +7 -0
- package/dist/utils/focusRing.d.ts +10 -0
- package/dist/utils/muiProps.d.ts +1 -0
- package/package.json +100 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/utils/muiProps.ts","../src/Badge/Badge.tsx","../src/utils/colorHelpers.ts","../src/utils/focusRing.ts","../src/GeneralAvatar/GeneralAvatar.tsx","../src/DataGridCell/DataGridCell.tsx","../src/ActivityHeader/ActivityHeader.tsx","../src/ActivityIndicatorCell/ActivityIndicatorCell.tsx","../../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs","../../../node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs","../../../node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs","../../../node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs","../../../node_modules/lucide-react/dist/esm/defaultAttributes.mjs","../../../node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs","../../../node_modules/lucide-react/dist/esm/context.mjs","../../../node_modules/lucide-react/dist/esm/Icon.mjs","../../../node_modules/lucide-react/dist/esm/createLucideIcon.mjs","../../../node_modules/lucide-react/dist/esm/icons/arrow-down.mjs","../../../node_modules/lucide-react/dist/esm/icons/arrow-up.mjs","../../../node_modules/lucide-react/dist/esm/icons/badge-info.mjs","../../../node_modules/lucide-react/dist/esm/icons/calendar-days.mjs","../../../node_modules/lucide-react/dist/esm/icons/chevron-down.mjs","../../../node_modules/lucide-react/dist/esm/icons/chevron-left.mjs","../../../node_modules/lucide-react/dist/esm/icons/chevron-right.mjs","../../../node_modules/lucide-react/dist/esm/icons/chevron-up.mjs","../../../node_modules/lucide-react/dist/esm/icons/chevrons-up-down.mjs","../../../node_modules/lucide-react/dist/esm/icons/circle-alert.mjs","../../../node_modules/lucide-react/dist/esm/icons/circle-check-big.mjs","../../../node_modules/lucide-react/dist/esm/icons/circle-question-mark.mjs","../../../node_modules/lucide-react/dist/esm/icons/columns-3.mjs","../../../node_modules/lucide-react/dist/esm/icons/list-filter.mjs","../../../node_modules/lucide-react/dist/esm/icons/minus.mjs","../../../node_modules/lucide-react/dist/esm/icons/plus.mjs","../../../node_modules/lucide-react/dist/esm/icons/search.mjs","../../../node_modules/lucide-react/dist/esm/icons/square-check.mjs","../../../node_modules/lucide-react/dist/esm/icons/square-minus.mjs","../../../node_modules/lucide-react/dist/esm/icons/square.mjs","../../../node_modules/lucide-react/dist/esm/icons/trash-2.mjs","../../../node_modules/lucide-react/dist/esm/icons/triangle-alert.mjs","../../../node_modules/lucide-react/dist/esm/icons/wifi-off.mjs","../../../node_modules/lucide-react/dist/esm/icons/x.mjs","../src/Alert/Alert.tsx","../src/Banner/Banner.tsx","../src/Breadcrumbs/Breadcrumbs.tsx","../src/Button/Button.tsx","../src/ButtonTab/ButtonTab.tsx","../src/ButtonTabGroup/ButtonTabGroup.tsx","../src/CanceledIcon/CanceledIcon.tsx","../src/Card/Card.tsx","../src/Checkbox/Checkbox.tsx","../src/CheckboxWithText/CheckboxWithText.tsx","../src/CodeSnippet/CodeSnippet.tsx","../src/DataGrid/DataGrid.styles.ts","../src/DataGridColumnsPanel/DataGridColumnsPanel.tsx","../src/MenuItem/MenuItem.tsx","../src/Select/Select.tsx","../src/DataGridFilterPanel/DataGridFilterPanel.tsx","../src/DataGridHeaderCell/DataGridHeaderCell.tsx","../src/DataGrid/DataGrid.tsx","../src/DataGridColumnsButton/DataGridColumnsButton.tsx","../src/Tag/Tag.tsx","../src/DataGridFiltersButton/DataGridFiltersButton.tsx","../src/DataGridHeaderLabel/DataGridHeaderLabel.tsx","../../../node_modules/date-fns/constants.js","../../../node_modules/date-fns/constructFrom.js","../../../node_modules/date-fns/toDate.js","../../../node_modules/date-fns/addDays.js","../../../node_modules/date-fns/addMonths.js","../../../node_modules/date-fns/startOfDay.js","../../../node_modules/date-fns/endOfDay.js","../../../node_modules/date-fns/endOfMonth.js","../../../node_modules/date-fns/startOfMonth.js","../../../node_modules/date-fns/startOfYear.js","../../../node_modules/date-fns/subDays.js","../../../node_modules/date-fns/subMonths.js","../src/IconButton/IconButton.tsx","../src/DatePicker/DatePicker.tsx","../src/DatePickerListItem/DatePickerListItem.tsx","../src/DatePickerMenu/DatePickerMenu.tsx","../src/Divider/Divider.tsx","../src/Dot/Dot.tsx","../src/DownloadToast/DownloadToast.tsx","../src/FilledStatusIcons/FilledStatusIcons.tsx","../src/FilterChip/FilterChip.tsx","../src/LoadingSpinner/LoadingSpinner.tsx","../src/Footer/Footer.tsx","../src/IconWrapper/IconWrapper.tsx","../src/InfiniteScrollGrid/InfiniteScrollGrid.tsx","../src/InputField/InputField.tsx","../src/ListItem/ListItem.tsx","../src/ListItemButton/ListItemButton.tsx","../src/Menu/Menu.tsx","../src/ModActionsCell/ModActionsCell.tsx","../src/ModAvatarCell/ModAvatarCell.tsx","../src/Modal/Modal.tsx","../src/ModIconCell/ModIconCell.tsx","../src/ModLogoCell/ModLogoCell.tsx","../src/Progressbar/Progressbar.tsx","../src/ModProgressCell/ModProgressCell.tsx","../src/ModStatusCell/ModStatusCell.tsx","../src/NavigationAvatar/NavigationAvatar.tsx","../src/SideNav/ModSideNavContext.ts","../src/Tooltip/Tooltip.tsx","../src/NavigationItem/NavigationItem.tsx","../src/PageContent/PageContent.tsx","../src/PaginatedGrid/PaginatedGrid.tsx","../src/QuickFilter/QuickFilter.tsx","../src/Radio/Radio.tsx","../src/RadioButtonWithText/RadioButtonWithText.tsx","../src/RipplingDot/RipplingDot.tsx","../src/SearchChip/SearchChip.tsx","../src/SelectField/SelectField.tsx","../src/SideNav/SideNav.tsx","../src/Skeleton/Skeleton.tsx","../src/Table/Table.tsx","../src/TabPanel/TabPanel.tsx","../src/Tabs/Tabs.tsx","../src/Toast/Toast.tsx","../src/Toggle/Toggle.tsx","../src/ToggleButton/ToggleButton.tsx","../src/ToggleButtonGroup/ToggleButtonGroup.tsx","../src/ToggleButtonWithText/ToggleButtonWithText.tsx","../src/Toolbar/Toolbar.tsx","../src/TopNav/TopNav.tsx","../src/TourModal/TourModal.tsx","../src/Tree/Tree.tsx","../src/TypologyControl/TypologyControl.tsx","../src/VibratingDot/VibratingDot.tsx","../src/index.js"],"sourcesContent":["/**\n * Props MUI's default `shouldForwardProp` filters out for non-string tags.\n *\n * A custom `shouldForwardProp` replaces that default instead of extending it,\n * so components passing one must re-block these. Missing `sx` is the costly\n * case — it reaches the wrapped MUI component and is serialized twice.\n */\nconst MUI_INTERNAL_PROPS = ['ownerState', 'theme', 'sx', 'as']\n\nexport const isMuiInternalProp = (prop: PropertyKey) => MUI_INTERNAL_PROPS.includes(prop as string)\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport Chip, { type ChipProps, chipClasses } from '@mui/material/Chip'\nimport { styled } from '@mui/material/styles'\nimport { isMuiInternalProp } from '../utils/muiProps'\n\ntype BadgeSize = 'small' | 'medium'\ntype BadgeVariant = 'filled' | 'outlined'\ntype BadgeShape = 'square' | 'rounded'\n\ninterface StyledChipProps {\n badgeSize: BadgeSize\n badgeVariant: BadgeVariant\n badgeShape: BadgeShape\n}\n\nconst STATUS_COLOR_CLASSES = [\n [chipClasses.colorDefault, semanticColors.status.neutral],\n [chipClasses.colorError, semanticColors.status.error],\n [chipClasses.colorWarning, semanticColors.status.warning],\n [chipClasses.colorSuccess, semanticColors.status.success],\n [chipClasses.colorInfo, semanticColors.status.info],\n] as const\n\nconst outlinedColorOverrides = {\n backgroundColor: 'transparent',\n color: semanticColors.typography.bodySecondary,\n border: `1px solid ${semanticColors.border.secondary}`,\n [`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {\n color: semanticColors.typography.bodySecondary,\n },\n}\n\nconst filledColorRules = Object.fromEntries(\n STATUS_COLOR_CLASSES.map(([className, palette]) => [\n `&.${className}`,\n {\n backgroundColor: palette.light,\n color: palette.dark,\n border: `1px solid ${palette.transparent}`,\n [`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {\n color: palette.dark,\n },\n },\n ])\n)\n\nconst outlinedColorRules = Object.fromEntries(\n STATUS_COLOR_CLASSES.map(([className]) => [`&.${className}`, outlinedColorOverrides])\n)\n\nconst badgeOnlyProps = ['badgeSize', 'badgeVariant', 'badgeShape']\n\nconst StyledChip = styled(Chip, {\n shouldForwardProp: prop => !badgeOnlyProps.includes(prop as string) && !isMuiInternalProp(prop),\n})<StyledChipProps>(({ theme, badgeSize, badgeVariant, badgeShape }) => ({\n height: badgeSize === 'small' ? 20 : 24,\n paddingTop: spacing.spacing_1_4,\n paddingBottom: spacing.spacing_1_4,\n paddingLeft: spacing.spacing_1,\n paddingRight: spacing.spacing_1,\n borderRadius: badgeShape === 'rounded' ? borderRadius.full : borderRadius.xS,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n lineHeight: 1,\n // Figma tracks labels at 0. Digit legibility comes from tabular figures\n // instead, which leaves word labels alone (moderne-ui#8686).\n fontVariantNumeric: 'tabular-nums',\n fontWeight: typography.fontWeight.medium,\n gap: spacing.spacing_1_2,\n overflow: 'visible',\n\n [`& .${chipClasses.label}`]: {\n paddingLeft: 0,\n paddingRight: 0,\n overflow: 'visible',\n },\n\n [`& .${chipClasses.icon}`]: {\n marginLeft: 0,\n marginRight: 0,\n width: 12,\n height: 12,\n },\n\n [`& .${chipClasses.deleteIcon}`]: {\n marginLeft: 0,\n marginRight: 0,\n width: 12,\n height: 12,\n },\n\n ...(badgeVariant === 'outlined' ? outlinedColorRules : filledColorRules),\n}))\n\nexport interface ModBadgeProps extends Omit<ChipProps, 'variant' | 'size'> {\n /**\n * The color/state of the badge. Ignored when `variant=\"outlined\"`.\n * @default \"default\"\n */\n color?: 'default' | 'error' | 'warning' | 'success' | 'info'\n /**\n * Visual density of the badge. `small` is 20px tall, `medium` is 24px tall.\n * @default \"medium\"\n */\n size?: BadgeSize\n /**\n * Visual treatment. `filled` uses a per-color tinted background;\n * `outlined` uses a transparent background with a neutral secondary border.\n * @default \"filled\"\n */\n variant?: BadgeVariant\n /**\n * Corner treatment. `square` = borderRadius.xS, `rounded` = borderRadius.full.\n * Deliberately defaults to `square` even though Figma's Shape default differs —\n * this keeps existing consumers rendering unchanged. Don't \"fix\" it.\n * @default \"square\"\n */\n shape?: BadgeShape\n}\n\n/**\n * ModBadge - Status badge component based on MUI Chip\n *\n * `deleteIcon` still works via ChipProps — MUI renders it only when `onDelete`\n * is also set.\n */\nexport const ModBadge = ({\n size = 'medium',\n variant = 'filled',\n shape = 'square',\n ...props\n}: ModBadgeProps) => {\n return <StyledChip {...props} badgeSize={size} badgeVariant={variant} badgeShape={shape} />\n}\n\nModBadge.displayName = 'ModBadge'\n","export type AvatarColorIndex = 1 | 2 | 3 | 4 | 5 | 6 | 7\n\nconst djb2Hash = (str: string): number => {\n let hash = 5381\n for (let i = 0; i < str.length; i++) {\n hash = (hash * 33) ^ str.charCodeAt(i)\n }\n return hash >>> 0\n}\n\n/**\n * Deterministically derives an avatar color index (1-7) from a string seed,\n * selecting one of the avatar.initials semantic token triplets\n * (text/background/border) defined in Figma.\n */\nexport const avatarIndexFromSeed = (\n seed: string | null | undefined\n): AvatarColorIndex | undefined =>\n seed ? (((djb2Hash(seed) % 7) + 1) as AvatarColorIndex) : undefined\n","import { semanticColors } from '@moderneinc/design-system-tokens'\n\n/**\n * Outline-based focus ring styles derived from design system border tokens.\n * Uses CSS outline (not box-shadow) so focus rings are never clipped by overflow:hidden.\n *\n * Produces a double-ring effect: a white inner gap (via outline-offset) and a colored outer ring.\n */\nexport const focusRingStyles = {\n outline: `2px solid ${semanticColors.border.focus}`,\n outlineOffset: '2px',\n} as const\n","import { semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport MuiAvatar, { type AvatarProps } from '@mui/material/Avatar'\nimport { styled } from '@mui/material/styles'\nimport { type AvatarColorIndex, avatarIndexFromSeed } from '../utils/colorHelpers'\nimport { focusRingStyles } from '../utils/focusRing'\n\ntype AvatarSize = 'small' | 'medium'\n\nconst sizeConfig: Record<AvatarSize, { size: number; fontSize: number }> = {\n small: { size: spacing.spacing_2_1_2, fontSize: typography.fontSize.xs },\n medium: { size: spacing.spacing_4, fontSize: typography.fontSize.xs },\n}\n\nconst indexedColors = (colorIndex: AvatarColorIndex) => ({\n color: semanticColors.avatar.initials[`text${colorIndex}`],\n backgroundColor: semanticColors.avatar.initials[`background${colorIndex}`],\n borderColor: semanticColors.avatar.initials[`border${colorIndex}`],\n})\n\nconst StyledAvatar = styled(MuiAvatar, {\n shouldForwardProp: prop => prop !== 'avatarSize' && prop !== 'avatarColorIndex',\n})<{ avatarSize: AvatarSize; avatarColorIndex?: AvatarColorIndex }>(\n ({ theme, avatarSize, avatarColorIndex }) => {\n const size = sizeConfig[avatarSize]\n\n return {\n boxSizing: 'border-box' as const,\n width: size.size,\n height: size.size,\n fontSize: theme.typography.pxToRem(size.fontSize),\n fontFamily: typography.fontFamily.body,\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1,\n color: semanticColors.avatar.userDefaultText,\n backgroundColor: semanticColors.avatar.userDefaultBg,\n border: `1px solid ${semanticColors.border.primary}`,\n ...(avatarColorIndex && indexedColors(avatarColorIndex)),\n\n '&:focus-visible': {\n ...focusRingStyles,\n borderColor: semanticColors.border.focus,\n },\n }\n }\n)\n\nexport interface ModGeneralAvatarProps extends Omit<AvatarProps, 'variant'> {\n /**\n * The size of the avatar\n * @default \"medium\"\n */\n size?: AvatarSize\n /**\n * Explicit initials color index. When omitted, derived deterministically\n * from `alt`. Image avatars ignore it and use the default styling.\n */\n colorIndex?: AvatarColorIndex\n}\n\n/**\n * ModGeneralAvatar - Avatar with image or colored initials display\n */\nexport const ModGeneralAvatar = ({\n size = 'medium',\n colorIndex,\n alt,\n src,\n children,\n ...props\n}: ModGeneralAvatarProps) => {\n const resolvedIndex = src ? undefined : (colorIndex ?? avatarIndexFromSeed(alt))\n return (\n <StyledAvatar avatarSize={size} avatarColorIndex={resolvedIndex} alt={alt} src={src} {...props}>\n {children}\n </StyledAvatar>\n )\n}\n\nModGeneralAvatar.displayName = 'ModGeneralAvatar'\n","import { spacing } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport type { GridDensity } from '@mui/x-data-grid'\nimport type { HTMLAttributes, ReactNode } from 'react'\nimport { ModBadge } from '../Badge/Badge'\nimport { ModGeneralAvatar } from '../GeneralAvatar/GeneralAvatar'\n\n/**\n * Base styled container for DataGrid cell content that needs flex layout\n */\nconst CellContentContainer = styled('div')({\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_2,\n minWidth: 0, // Allow flex item to shrink below content size\n width: '100%',\n overflow: 'hidden', // Prevent content from overflowing cell boundaries\n})\n\nexport interface ModDataGridCellContentProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode\n}\n\n/**\n * ModDataGridCellContent - Layout helper for cells that need flex layout with gap spacing\n *\n * Use this for any cell content that needs horizontal flex layout with proper spacing:\n * - Multiple badges\n * - Avatar + text\n * - Action buttons/icons\n * - Any other horizontal layouts\n *\n * @example\n * // Badges\n * renderCell: (params) => (\n * <ModDataGridCellContent>\n * <ModBadge label=\"Active\" color=\"success\" />\n * <ModBadge label=\"New\" color=\"info\" />\n * </ModDataGridCellContent>\n * )\n *\n * @example\n * // Avatar with text\n * renderCell: (params) => (\n * <ModDataGridCellContent>\n * <ModGeneralAvatar src={params.row.avatarUrl} />\n * <span>{params.row.name}</span>\n * </ModDataGridCellContent>\n * )\n *\n * @example\n * // Action buttons\n * renderCell: () => (\n * <ModDataGridCellContent>\n * <ModIconButton size=\"small\"><Edit2 /></ModIconButton>\n * <ModIconButton size=\"small\"><Delete /></ModIconButton>\n * </ModDataGridCellContent>\n * )\n */\nexport const ModDataGridCellContent = ({ children, ...props }: ModDataGridCellContentProps) => {\n return <CellContentContainer {...props}>{children}</CellContentContainer>\n}\n\nModDataGridCellContent.displayName = 'ModDataGridCellContent'\n\n/**\n * Row height configuration for DataGrid size variants (from Figma specs)\n * - compact: 42px\n * - standard: 48px\n * - comfortable: 56px\n */\nexport const modRowHeights: Record<GridDensity, number> = {\n compact: spacing.spacing_5_1_4,\n standard: spacing.spacing_6,\n comfortable: spacing.spacing_7,\n}\n\n// =============================================================================\n// Precanned Cell Components\n// =============================================================================\n\n/**\n * StatusBadgeCell - Ready-to-use cell component for status badges\n *\n * @example\n * renderCell: (params) => (\n * <StatusBadgeCell\n * status={params.value}\n * colorMap={{\n * Active: 'success',\n * Pending: 'warning',\n * Inactive: 'default'\n * }}\n * />\n * )\n */\nexport interface ModStatusBadgeCellProps {\n status: string\n colorMap?: Record<string, 'default' | 'error' | 'info' | 'success' | 'warning'>\n}\n\nexport const ModStatusBadgeCell = ({ status, colorMap }: ModStatusBadgeCellProps) => {\n const color = colorMap?.[status] || 'default'\n\n return (\n <ModDataGridCellContent>\n <ModBadge label={status} color={color} />\n </ModDataGridCellContent>\n )\n}\n\nModStatusBadgeCell.displayName = 'ModStatusBadgeCell'\n\n/**\n * ModUserAvatarCell - Ready-to-use cell component for user avatar + name\n *\n * @example\n * renderCell: (params) => (\n * <ModUserAvatarCell\n * name={params.row.name}\n * avatarUrl={params.row.avatarUrl}\n * />\n * )\n */\nexport interface ModUserAvatarCellProps {\n name: string\n avatarUrl?: string\n size?: 'small' | 'medium'\n}\n\nexport const ModUserAvatarCell = ({ name, avatarUrl, size = 'small' }: ModUserAvatarCellProps) => {\n return (\n <ModDataGridCellContent>\n <ModGeneralAvatar size={size} alt={name} src={avatarUrl} />\n <span style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {name}\n </span>\n </ModDataGridCellContent>\n )\n}\n\nModUserAvatarCell.displayName = 'ModUserAvatarCell'\n\n/**\n * Container for multiple badges with tighter spacing than default ModDataGridCellContent\n */\nconst MultiBadgesContainer = styled('div')({\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_1, // 8px gap for badges (tighter than default 16px)\n})\n\n/**\n * ModMultiBadgesCell - Ready-to-use cell component for multiple badges\n *\n * Uses tighter spacing (8px) between badges compared to standard ModDataGridCellContent (16px).\n *\n * @example\n * renderCell: (params) => (\n * <ModMultiBadgesCell\n * badges={[\n * { label: 'Active', color: 'success' },\n * { label: 'New', color: 'info' }\n * ]}\n * />\n * )\n */\nexport interface ModMultiBadgesCellProps {\n badges: Array<{\n label: string\n color?: 'default' | 'error' | 'info' | 'success' | 'warning'\n }>\n}\n\nexport const ModMultiBadgesCell = ({ badges }: ModMultiBadgesCellProps) => {\n return (\n <MultiBadgesContainer>\n {badges.map((badge, index) => (\n <ModBadge\n // biome-ignore lint/suspicious/noArrayIndexKey: badges have no identity beyond position and labels may repeat\n key={`${badge.label}-${index}`}\n label={badge.label}\n color={badge.color || 'default'}\n />\n ))}\n </MultiBadgesContainer>\n )\n}\n\nModMultiBadgesCell.displayName = 'ModMultiBadgesCell'\n","import { semanticColors, spacing } from '@moderneinc/design-system-tokens'\nimport Box from '@mui/material/Box'\nimport { styled } from '@mui/material/styles'\nimport type { GridDensity } from '@mui/x-data-grid'\nimport { modRowHeights } from '../DataGridCell/DataGridCell'\n\n/**\n * Size variant for ActivityHeader (matches DataGrid size variants)\n * Alias for MUI's GridDensity type\n */\nexport type ActivityHeaderSize = GridDensity\n\n/**\n * Activity color type for ModActivityHeader\n */\nexport type ActivityColor = 'commitJob' | 'recipeRun' | 'visualization'\n\n/**\n * Props for ModActivityHeader component\n */\nexport interface ModActivityHeaderProps {\n /**\n * Size variant matching DataGrid row heights\n * @default 'compact'\n */\n size?: GridDensity\n /**\n * Activity type color to display\n * @default 'commitJob'\n */\n color?: ActivityColor\n}\n\n// Activity color mapping from design system tokens (shared with ActivityIndicatorCell)\nconst ACTIVITY_COLORS: Record<ActivityColor, string> = {\n commitJob: semanticColors.activity.commitJob,\n recipeRun: semanticColors.activity.recipeRun,\n visualization: semanticColors.activity.visualization,\n}\n\n/**\n * Container for the activity header\n * Fixed width: 34px to match ActivityIndicatorCell\n */\nconst HeaderContainer = styled(Box)<{ size: GridDensity }>(({ size }) => {\n // Use shared row heights from DataGridCell to ensure consistency\n // Figma specs: compact (42px), standard (48px), comfortable (56px)\n return {\n width: '34px',\n height: `${modRowHeights[size]}px`,\n borderBottom: `1px solid ${semanticColors.border.secondary}`,\n boxSizing: 'border-box',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }\n})\n\n/**\n * Colored dot representing an activity type\n */\nconst ActivityDot = styled('div')<{ color: string }>(({ color }) => ({\n width: spacing.spacing_1_1_2,\n height: spacing.spacing_1_1_2,\n borderRadius: '50%',\n backgroundColor: color,\n flexShrink: 0,\n}))\n\n/**\n * ModActivityHeader - Header cell showing activity type legend for DataGrid\n *\n * A header cell component that displays a visual legend of activity event types\n * using colored dots. Designed to be used as the column header for activity\n * timeline columns in DataGrid.\n *\n * **Design Tokens:**\n * - `semanticColors.activity.commitJob` - Blue dot for commit job events (#2F42FF)\n * - `semanticColors.activity.recipeRun` - Purple dot for recipe run events (#992FB9)\n * - `#27AA88` - Teal dot for visualization events (hardcoded - needs design token fix)\n * - `semanticColors.border.secondary` - Bottom border (#e5e7eb)\n * - `spacing.spacing_1_1_2` - Dot size (12px)\n *\n * @example\n * // In DataGrid column definition\n * {\n * field: 'activity',\n * headerName: '',\n * width: 34,\n * renderHeader: () => <ModActivityHeader size=\"condensed\" color=\"commitJob\" />,\n * renderCell: (params) => (\n * <ModActivityIndicatorCell\n * event={params.row.eventType}\n * scene={params.row.scene}\n * />\n * )\n * }\n */\nexport const ModActivityHeader = ({\n size = 'compact',\n color = 'commitJob',\n}: ModActivityHeaderProps) => {\n return (\n <HeaderContainer size={size}>\n <ActivityDot color={ACTIVITY_COLORS[color]} />\n </HeaderContainer>\n )\n}\n\nModActivityHeader.displayName = 'ModActivityHeader'\n","import { semanticColors } from '@moderneinc/design-system-tokens'\nimport SvgIcon from '@mui/material/SvgIcon'\nimport type { FunctionComponent } from 'react'\n\n// Constants - 6px radius = 12px diameter to match header dot size\nexport const CIRCLE_RADIUS = 6\nconst PATH_STROKE_WIDTH = 1.2\n\n// Activity colors from design system tokens\nconst ACTIVITY_COLORS = {\n 'commit-job': semanticColors.activity.commitJob,\n 'recipe-run': semanticColors.activity.recipeRun,\n visualization: semanticColors.activity.visualization,\n}\n\n/**\n * Event type for activity indicator\n */\nexport type ActivityEvent = 'commit-job' | 'recipe-run' | 'visualization' | 'none'\n\n/**\n * Scene types based on moderne-ui ActivityRowScenes\n */\nexport enum ActivityScene {\n BLANK = 'blank',\n CIRCLE = 'circle',\n CIRCLE_WITH_RIGHT_PATH = 'circle-with-right-path',\n CIRCLE_WITH_TOP_PATH = 'circle-with-top-path',\n CIRCLE_WITH_TOP_AND_BOTTOM_PATH = 'circle-with-top-and-bottom-path',\n PATH_CORNER = 'path-corner',\n PATH_CORNER_WITH_HORIZONTAL = 'path-corner-with-horizontal',\n PATH_VERTICAL = 'path-vertical',\n PATH_HORIZONTAL = 'path-horizontal',\n}\n\n/**\n * Props for ModActivityIndicatorCell component\n */\nexport interface ModActivityIndicatorCellProps {\n /**\n * Type of activity event (determines color for circle/dot)\n */\n event?: ActivityEvent\n\n /**\n * Secondary event type for path color (e.g., when a recipe-run connects to a commit-job)\n * If not specified, paths use the primary event color\n */\n secondaryEvent?: ActivityEvent\n\n /**\n * Scene to render (combines shapes and paths)\n */\n scene?: ActivityScene\n\n /**\n * Whether to show the event dot\n * @default true\n */\n showDot?: boolean\n}\n\n// SVG dimensions with overflow visible for connector lines, zIndex for hover states\nconst svgSx = { width: 35, height: 36, overflow: 'visible', zIndex: 1 } as const\n\n// Circle component (solid fill - different from moderne-ui which uses stroke)\nconst ActivitySceneCircle: FunctionComponent<{\n color: string\n paths?: {\n right?: string\n top?: string\n bottom?: string\n }\n}> = ({ color, paths }) => (\n <SvgIcon viewBox=\"-12 -12 35 36\" sx={svgSx}>\n {paths?.right && (\n <path d=\"M 11,5 H 35\" stroke={paths.right} strokeWidth={PATH_STROKE_WIDTH} fill=\"none\" />\n )}\n {paths?.top && (\n <path d=\"M 5,-1 V -12\" stroke={paths.top} strokeWidth={PATH_STROKE_WIDTH} fill=\"none\" />\n )}\n {paths?.bottom && (\n <path d=\"M 5,11 V 35\" stroke={paths.bottom} strokeWidth={PATH_STROKE_WIDTH} fill=\"none\" />\n )}\n <circle r={CIRCLE_RADIUS} cx={5} cy={5} fill={color} stroke=\"none\" />\n </SvgIcon>\n)\n\n// Path component (vertical or horizontal lines)\nconst ActivityScenePath: FunctionComponent<{\n color: string\n type: 'horizontal' | 'vertical'\n}> = ({ color, type }) => (\n <SvgIcon viewBox=\"-12 -12 35 36\" sx={svgSx}>\n {type === 'horizontal' && (\n <path d=\"M -12,5 H 35\" stroke={color} strokeWidth={PATH_STROKE_WIDTH} fill=\"none\" />\n )}\n {type === 'vertical' && (\n <path d=\"M 5,-12 V 35\" stroke={color} strokeWidth={PATH_STROKE_WIDTH} fill=\"none\" />\n )}\n </SvgIcon>\n)\n\n// Corner component\nconst ActivitySceneCorner: FunctionComponent<{\n color: string\n}> = ({ color }) => (\n <SvgIcon viewBox=\"-12 -12 35 36\" sx={svgSx}>\n <path\n d=\"M -12,5 H 0 Q 5 5.5, 5 12 V 35\"\n stroke={color}\n strokeWidth={PATH_STROKE_WIDTH}\n fill=\"none\"\n />\n </SvgIcon>\n)\n\n// Corner with horizontal passthrough - supports two colors\nconst ActivitySceneCornerWithHorizontal: FunctionComponent<{\n cornerColor: string\n horizontalColor: string\n}> = ({ cornerColor, horizontalColor }) => (\n <SvgIcon viewBox=\"-12 -12 35 36\" sx={svgSx}>\n <path d=\"M -12,5 H 35\" stroke={horizontalColor} strokeWidth={PATH_STROKE_WIDTH} fill=\"none\" />\n <path\n d=\"M -12,5 H 0 Q 5 5.5, 5 12 V 35\"\n stroke={cornerColor}\n strokeWidth={PATH_STROKE_WIDTH}\n fill=\"none\"\n />\n </SvgIcon>\n)\n\n/**\n * ModActivityIndicatorCell - Timeline activity indicator for DataGrid cells\n *\n * Based on moderne-ui's RecentActivitySceneSelector with solid filled circles.\n *\n * @example\n * // In DataGrid column definition\n * {\n * field: 'activity',\n * headerName: '',\n * width: 35,\n * renderCell: (params) => (\n * <ModActivityIndicatorCell\n * event=\"commit-job\"\n * scene={ActivityScene.CIRCLE_WITH_TOP_AND_BOTTOM_PATH}\n * />\n * )\n * }\n */\nexport const ModActivityIndicatorCell = ({\n event = 'commit-job',\n secondaryEvent,\n scene = ActivityScene.CIRCLE,\n showDot = true,\n}: ModActivityIndicatorCellProps) => {\n if (scene === ActivityScene.BLANK) {\n return null\n }\n\n const color = event !== 'none' ? ACTIVITY_COLORS[event] : semanticColors.border.secondary\n // Use secondary color for paths if specified, otherwise use primary color\n const pathColor =\n secondaryEvent && secondaryEvent !== 'none' ? ACTIVITY_COLORS[secondaryEvent] : color\n\n switch (scene) {\n case ActivityScene.CIRCLE:\n return showDot ? <ActivitySceneCircle color={color} /> : null\n\n case ActivityScene.CIRCLE_WITH_RIGHT_PATH:\n return <ActivitySceneCircle color={color} paths={{ right: pathColor }} />\n\n case ActivityScene.CIRCLE_WITH_TOP_PATH:\n return <ActivitySceneCircle color={color} paths={{ top: pathColor }} />\n\n case ActivityScene.CIRCLE_WITH_TOP_AND_BOTTOM_PATH:\n return <ActivitySceneCircle color={color} paths={{ top: pathColor, bottom: pathColor }} />\n\n case ActivityScene.PATH_CORNER:\n return <ActivitySceneCorner color={pathColor} />\n\n case ActivityScene.PATH_CORNER_WITH_HORIZONTAL:\n // Corner uses primary color, horizontal uses secondary (for commit corner + vis passthrough)\n return <ActivitySceneCornerWithHorizontal cornerColor={color} horizontalColor={pathColor} />\n\n case ActivityScene.PATH_VERTICAL:\n return <ActivityScenePath color={color} type=\"vertical\" />\n\n case ActivityScene.PATH_HORIZONTAL:\n return <ActivityScenePath color={color} type=\"horizontal\" />\n\n default:\n return null\n }\n}\n\nModActivityIndicatorCell.displayName = 'ModActivityIndicatorCell'\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses };\n//# sourceMappingURL=mergeClasses.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { toKebabCase };\n//# sourceMappingURL=toKebabCase.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\n\nexport { toCamelCase };\n//# sourceMappingURL=toCamelCase.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { toCamelCase } from './toCamelCase.mjs';\n\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\n\nexport { toPascalCase };\n//# sourceMappingURL=toPascalCase.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n return false;\n};\n\nexport { hasA11yProp };\n//# sourceMappingURL=hasA11yProp.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { createContext, useContext, useMemo, createElement } from 'react';\n\nconst LucideContext = createContext({});\nfunction LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className\n}) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, className]\n );\n return createElement(LucideContext.Provider, { value }, children);\n}\nconst useLucideContext = () => useContext(LucideContext);\n\nexport { LucideProvider, useLucideContext };\n//# sourceMappingURL=context.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.mjs';\nimport { hasA11yProp } from './shared/src/utils/hasA11yProp.mjs';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport { useLucideContext } from './context.mjs';\n\nconst Icon = forwardRef(\n ({ color, size, strokeWidth, absoluteStrokeWidth, className = \"\", children, iconNode, ...rest }, ref) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n color: contextColor = \"currentColor\",\n className: contextClass = \"\"\n } = useLucideContext() ?? {};\n const calculatedStrokeWidth = absoluteStrokeWidth ?? contextAbsoluteStrokeWidth ? Number(strokeWidth ?? contextStrokeWidth) * 24 / Number(size ?? contextSize) : strokeWidth ?? contextStrokeWidth;\n return createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size ?? contextSize ?? defaultAttributes.width,\n height: size ?? contextSize ?? defaultAttributes.height,\n stroke: color ?? contextColor,\n strokeWidth: calculatedStrokeWidth,\n className: mergeClasses(\"lucide\", contextClass, className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport { toKebabCase } from './shared/src/utils/toKebabCase.mjs';\nimport { toPascalCase } from './shared/src/utils/toPascalCase.mjs';\nimport Icon from './Icon.mjs';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }],\n [\"path\", { d: \"m19 12-7 7-7-7\", key: \"1idqje\" }]\n];\nconst ArrowDown = createLucideIcon(\"arrow-down\", __iconNode);\n\nexport { __iconNode, ArrowDown as default };\n//# sourceMappingURL=arrow-down.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m5 12 7-7 7 7\", key: \"hav0vg\" }],\n [\"path\", { d: \"M12 19V5\", key: \"x0mq9r\" }]\n];\nconst ArrowUp = createLucideIcon(\"arrow-up\", __iconNode);\n\nexport { __iconNode, ArrowUp as default };\n//# sourceMappingURL=arrow-up.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\",\n key: \"3c2336\"\n }\n ],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"16\", y2: \"12\", key: \"1y1yb1\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"8\", y2: \"8\", key: \"110wyk\" }]\n];\nconst BadgeInfo = createLucideIcon(\"badge-info\", __iconNode);\n\nexport { __iconNode, BadgeInfo as default };\n//# sourceMappingURL=badge-info.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 2v3\", key: \"1ioesn\" }],\n [\"path\", { d: \"M16 2v3\", key: \"otl347\" }],\n [\"rect\", { x: \"3\", y: \"3\", width: \"18\", height: \"18\", rx: \"2\", key: \"h1oib\" }],\n [\"path\", { d: \"M3 9h18\", key: \"1pudct\" }],\n [\"path\", { d: \"M8 13h.01\", key: \"1sbv64\" }],\n [\"path\", { d: \"M12 13h.01\", key: \"y0uutt\" }],\n [\"path\", { d: \"M16 13h.01\", key: \"wip0gl\" }],\n [\"path\", { d: \"M8 17h.01\", key: \"p3bg7i\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }],\n [\"path\", { d: \"M16 17h.01\", key: \"ql8jdd\" }]\n];\nconst CalendarDays = createLucideIcon(\"calendar-days\", __iconNode);\n\nexport { __iconNode, CalendarDays as default };\n//# sourceMappingURL=calendar-days.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]];\nconst ChevronLeft = createLucideIcon(\"chevron-left\", __iconNode);\n\nexport { __iconNode, ChevronLeft as default };\n//# sourceMappingURL=chevron-left.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]];\nconst ChevronRight = createLucideIcon(\"chevron-right\", __iconNode);\n\nexport { __iconNode, ChevronRight as default };\n//# sourceMappingURL=chevron-right.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]];\nconst ChevronUp = createLucideIcon(\"chevron-up\", __iconNode);\n\nexport { __iconNode, ChevronUp as default };\n//# sourceMappingURL=chevron-up.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m7 15 5 5 5-5\", key: \"1hf1tw\" }],\n [\"path\", { d: \"m7 9 5-5 5 5\", key: \"sgt6xg\" }]\n];\nconst ChevronsUpDown = createLucideIcon(\"chevrons-up-down\", __iconNode);\n\nexport { __iconNode, ChevronsUpDown as default };\n//# sourceMappingURL=chevrons-up-down.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n];\nconst CircleCheckBig = createLucideIcon(\"circle-check-big\", __iconNode);\n\nexport { __iconNode, CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\", key: \"1u773s\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst CircleQuestionMark = createLucideIcon(\"circle-question-mark\", __iconNode);\n\nexport { __iconNode, CircleQuestionMark as default };\n//# sourceMappingURL=circle-question-mark.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M9 3v18\", key: \"fh3hqa\" }],\n [\"path\", { d: \"M15 3v18\", key: \"14nvp0\" }]\n];\nconst Columns3 = createLucideIcon(\"columns-3\", __iconNode);\n\nexport { __iconNode, Columns3 as default };\n//# sourceMappingURL=columns-3.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M2 5h20\", key: \"1fs1ex\" }],\n [\"path\", { d: \"M6 12h12\", key: \"8npq4p\" }],\n [\"path\", { d: \"M9 19h6\", key: \"456am0\" }]\n];\nconst ListFilter = createLucideIcon(\"list-filter\", __iconNode);\n\nexport { __iconNode, ListFilter as default };\n//# sourceMappingURL=list-filter.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }]];\nconst Minus = createLucideIcon(\"minus\", __iconNode);\n\nexport { __iconNode, Minus as default };\n//# sourceMappingURL=minus.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }]\n];\nconst Plus = createLucideIcon(\"plus\", __iconNode);\n\nexport { __iconNode, Plus as default };\n//# sourceMappingURL=plus.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n];\nconst Search = createLucideIcon(\"search\", __iconNode);\n\nexport { __iconNode, Search as default };\n//# sourceMappingURL=search.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n];\nconst SquareCheck = createLucideIcon(\"square-check\", __iconNode);\n\nexport { __iconNode, SquareCheck as default };\n//# sourceMappingURL=square-check.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M8 12h8\", key: \"1wcyev\" }]\n];\nconst SquareMinus = createLucideIcon(\"square-minus\", __iconNode);\n\nexport { __iconNode, SquareMinus as default };\n//# sourceMappingURL=square-minus.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }]\n];\nconst Square = createLucideIcon(\"square\", __iconNode);\n\nexport { __iconNode, Square as default };\n//# sourceMappingURL=square.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M10 11v6\", key: \"nco0om\" }],\n [\"path\", { d: \"M14 11v6\", key: \"outv1u\" }],\n [\"path\", { d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\", key: \"miytrc\" }],\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\", key: \"e791ji\" }]\n];\nconst Trash2 = createLucideIcon(\"trash-2\", __iconNode);\n\nexport { __iconNode, Trash2 as default };\n//# sourceMappingURL=trash-2.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 20h.01\", key: \"zekei9\" }],\n [\"path\", { d: \"M8.5 16.429a5 5 0 0 1 7 0\", key: \"1bycff\" }],\n [\"path\", { d: \"M5 12.859a10 10 0 0 1 5.17-2.69\", key: \"1dl1wf\" }],\n [\"path\", { d: \"M19 12.859a10 10 0 0 0-2.007-1.523\", key: \"4k23kn\" }],\n [\"path\", { d: \"M2 8.82a15 15 0 0 1 4.177-2.643\", key: \"1grhjp\" }],\n [\"path\", { d: \"M22 8.82a15 15 0 0 0-11.288-3.764\", key: \"z3jwby\" }],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n];\nconst WifiOff = createLucideIcon(\"wifi-off\", __iconNode);\n\nexport { __iconNode, WifiOff as default };\n//# sourceMappingURL=wifi-off.mjs.map\n","/**\n * @license lucide-react v1.28.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.mjs.map\n","import {\n borderRadius,\n semanticColors,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/design-system-tokens'\nimport Alert, { type AlertProps, alertClasses } from '@mui/material/Alert'\nimport { buttonBaseClasses } from '@mui/material/ButtonBase'\nimport { styled } from '@mui/material/styles'\nimport { BadgeInfo, CircleAlert, CircleCheckBig, TriangleAlert, WifiOff } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\ntype Intent = 'success' | 'error' | 'warning' | 'offline' | 'info'\ntype AlertType = 'outlined' | 'filled'\ntype AlertSize = 'default' | 'compact'\n\ntype StyledAlertProps = Omit<AlertProps, 'variant'> & {\n intent?: Intent\n alertType?: AlertType\n alertSize?: AlertSize\n hasChildren?: boolean\n}\n\nconst neutralSmallShadow = `${shadows.neutral.small.x}px ${shadows.neutral.small.y}px ${shadows.neutral.small.blur}px ${shadows.neutral.small.spread}px ${shadows.neutral.small.shadow}`\n\nconst intentColors = {\n success: semanticColors.status.success,\n error: semanticColors.status.error,\n warning: semanticColors.status.warning,\n offline: semanticColors.status.neutral,\n info: semanticColors.status.info,\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Alert variant type without global augmentation\nconst StyledAlert = styled(Alert as any, {\n shouldForwardProp: prop =>\n prop !== 'intent' && prop !== 'alertType' && prop !== 'alertSize' && prop !== 'hasChildren',\n})<StyledAlertProps>(\n ({\n theme,\n intent = 'success',\n alertType = 'outlined',\n alertSize = 'default',\n hasChildren = false,\n }) => {\n const palette = intentColors[intent as Intent]\n\n const isFilled = alertType === 'filled'\n const isCompact = alertSize === 'compact'\n const iconColor = isFilled ? semanticColors.typography.tooltip.default : palette.default\n const messageColor = isFilled\n ? semanticColors.typography.tooltip.default\n : semanticColors.typography.body\n\n return {\n ...(isCompact\n ? { minHeight: spacing.spacing_5 }\n : hasChildren\n ? { minHeight: spacing.spacing_8, height: 'auto' }\n : { height: spacing.spacing_8 }),\n width: '100%',\n borderRadius: borderRadius.xS,\n alignItems: hasChildren ? 'flex-start' : 'center',\n fontFamily: typography.fontFamily.body,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n fontWeight: typography.fontWeight.semiBold,\n lineHeight: 1.5,\n padding: hasChildren\n ? `${spacing.spacing_1_1_2}px ${spacing.spacing_2}px`\n : `0 ${spacing.spacing_2}px`,\n\n backgroundColor: isFilled ? palette.dark : palette.light,\n border: isFilled ? 'none' : `1px solid ${palette.transparent}`,\n color: isFilled ? semanticColors.typography.tooltip.default : semanticColors.typography.body,\n boxShadow: isFilled ? neutralSmallShadow : undefined,\n\n [`& .${alertClasses.icon}`]: {\n color: iconColor,\n padding: 0,\n opacity: 1,\n marginRight: spacing.spacing_1_1_2,\n },\n\n [`& .${alertClasses.message}`]: {\n color: messageColor,\n padding: 0,\n flex: 1,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: hasChildren ? 'flex-start' : 'center',\n\n '& span:last-child': {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.medium,\n color: isFilled\n ? semanticColors.typography.tooltip.default\n : semanticColors.typography.bodySecondary,\n lineHeight: 1.4,\n },\n },\n\n [`& .${alertClasses.action}`]: {\n padding: 0,\n marginRight: 0,\n ...(isFilled && {\n color: semanticColors.typography.tooltip.default,\n [`& .${buttonBaseClasses.root}`]: { color: 'inherit' },\n }),\n },\n }\n }\n)\n\nexport interface ModAlertProps extends Omit<AlertProps, 'severity' | 'variant' | 'color'> {\n /**\n * The intent/purpose of the alert\n * @default \"success\"\n */\n intent?: Intent\n\n /**\n * Visual type: outlined (light bg) or filled (solid bg)\n * @default \"outlined\"\n */\n type?: AlertType\n\n /**\n * Vertical density. `default` is page-level (64px fixed height,\n * supports title + description). `compact` is inline-panel use\n * (auto height, 40px min, single-line optimized for terse messages).\n * @default \"default\"\n */\n size?: AlertSize\n\n /**\n * The title text displayed in the alert\n */\n title: string\n\n /**\n * Optional supporting description text\n */\n description?: string\n\n /**\n * Custom icon to display (defaults to intent-based icon)\n */\n icon?: ReactNode\n\n /**\n * Optional action element (typically a button) displayed on the right\n */\n action?: ReactNode\n\n /**\n * Optional content rendered below the title inside the alert container.\n * Use for rich content like stack traces or code blocks. When present,\n * the alert expands to auto height and top-aligns its icon and action.\n */\n children?: ReactNode\n}\n\nconst iconMap: Record<Intent, ReactNode> = {\n success: <CircleCheckBig size={24} />,\n error: <CircleAlert size={24} />,\n warning: <TriangleAlert size={24} />,\n offline: <WifiOff size={24} />,\n info: <BadgeInfo size={24} />,\n}\n\n/**\n * ModAlert - Alert component for displaying contextual status messages\n */\nexport const ModAlert = ({\n intent = 'success',\n type = 'outlined',\n size = 'default',\n title,\n description,\n icon,\n action,\n children,\n ...props\n}: ModAlertProps) => {\n const defaultIcon = iconMap[intent]\n\n return (\n <StyledAlert\n {...props}\n intent={intent}\n alertType={type}\n alertSize={size}\n hasChildren={Boolean(children)}\n icon={icon ?? defaultIcon}\n action={action}\n >\n <span>{title}</span>\n {description && <span>{description}</span>}\n {children}\n </StyledAlert>\n )\n}\n\nModAlert.displayName = 'ModAlert'\n","import { semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport Alert, { type AlertProps, alertClasses } from '@mui/material/Alert'\nimport IconButton from '@mui/material/IconButton'\nimport { styled } from '@mui/material/styles'\nimport { X } from 'lucide-react'\nimport { type ReactNode, useState } from 'react'\n\ntype Intent = 'info' | 'success' | 'error' | 'warning' | 'neutral'\ntype BannerType = 'outlined' | 'filled'\n\ntype StyledAlertProps = Omit<AlertProps, 'variant'> & {\n intent?: Intent\n bannerType?: BannerType\n messagePosition?: 'left' | 'center'\n}\n\nconst intentColors = {\n info: semanticColors.status.info,\n success: semanticColors.status.success,\n error: semanticColors.status.error,\n warning: semanticColors.status.warning,\n neutral: semanticColors.status.neutral,\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Alert variant type without global augmentation\nconst StyledAlert = styled(Alert as any, {\n shouldForwardProp: prop =>\n prop !== 'messagePosition' && prop !== 'intent' && prop !== 'bannerType',\n})<StyledAlertProps>(({ intent = 'info', bannerType = 'outlined', messagePosition = 'left' }) => {\n const palette = intentColors[intent as Intent]\n\n const typeStyles =\n bannerType === 'filled'\n ? {\n backgroundColor: palette.dark,\n color: semanticColors.surfaces.white,\n }\n : {\n backgroundColor: palette.light,\n color: semanticColors.typography.body,\n }\n\n return {\n width: '100%',\n // Include padding in the width so the full-width banner never overflows its\n // container (don't rely on a global border-box reset being present).\n boxSizing: 'border-box',\n // Square corners by default: banners are full-width and typically sit flush\n // against the top of the viewport, so rounded corners would break the seam.\n borderRadius: 0,\n minHeight: 32,\n paddingTop: spacing.spacing_1_2,\n paddingBottom: spacing.spacing_1_2,\n paddingLeft: spacing.spacing_2,\n paddingRight: spacing.spacing_2,\n gap: spacing.spacing_1,\n alignItems: 'center',\n justifyContent: messagePosition === 'center' ? 'center' : 'flex-start',\n ...(messagePosition === 'center' && { position: 'relative' }),\n fontSize: typography.fontSize.sm,\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1.5,\n ...typeStyles,\n\n [`& .${alertClasses.icon}`]: {\n padding: 0,\n opacity: 1,\n fontSize: typography.fontSize.default,\n color: 'inherit',\n },\n\n [`& .${alertClasses.message}`]: {\n padding: 0,\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_1,\n ...(messagePosition === 'left' && { flex: 1 }),\n },\n\n [`& .${alertClasses.action}`]: {\n padding: 0,\n ...(messagePosition === 'center' && {\n position: 'absolute',\n right: spacing.spacing_2,\n }),\n },\n }\n})\n\nconst LinkText = styled('span')<{ bannerType?: BannerType }>(({ bannerType = 'outlined' }) => ({\n marginLeft: 'auto',\n fontWeight: typography.fontWeight.semiBold,\n color:\n bannerType === 'filled'\n ? semanticColors.typography.link.white\n : semanticColors.typography.link.primary,\n cursor: 'pointer',\n whiteSpace: 'nowrap',\n '&:hover': {\n textDecoration: 'underline',\n },\n}))\n\nconst StyledIconButton = styled(IconButton, {\n shouldForwardProp: prop => prop !== 'closeIconColor',\n})<{ closeIconColor: string }>(({ closeIconColor }) => ({\n minWidth: 24,\n minHeight: 24,\n padding: 0,\n color: closeIconColor,\n '&:hover': {\n backgroundColor: 'transparent',\n },\n}))\n\nexport interface ModBannerProps extends Omit<AlertProps, 'variant' | 'severity' | 'color'> {\n /**\n * The intent/purpose of the banner\n * @default \"info\"\n */\n intent?: Intent\n\n /**\n * Visual type: outlined (light bg) or filled (solid bg)\n * @default \"outlined\"\n */\n type?: BannerType\n\n /**\n * The message text to display\n */\n message: string\n\n /**\n * Horizontal alignment of the message content\n * @default \"left\"\n */\n messagePosition?: 'left' | 'center'\n\n /**\n * Optional link text to display after the message\n */\n linkText?: string\n\n /**\n * Whether to show the close button\n * @default false\n */\n showClose?: boolean\n\n /**\n * Custom icon to display (optional)\n * If not provided, no icon will be shown\n */\n icon?: ReactNode\n\n /**\n * Callback when close button is clicked\n */\n onClose?: () => void\n\n /**\n * Callback when link text is clicked\n */\n onLinkClick?: () => void\n}\n\nexport const ModBanner = ({\n intent = 'info',\n type = 'outlined',\n message,\n messagePosition = 'left',\n linkText,\n showClose = false,\n icon,\n onClose,\n onLinkClick,\n ...props\n}: ModBannerProps) => {\n const [dismissed, setDismissed] = useState(false)\n\n const handleClose = () => {\n setDismissed(true)\n onClose?.()\n }\n\n if (dismissed) {\n return null\n }\n\n const closeIconColor =\n type === 'filled' ? semanticColors.surfaces.white : intentColors[intent].default\n\n return (\n <StyledAlert\n {...props}\n intent={intent}\n bannerType={type}\n messagePosition={messagePosition}\n icon={messagePosition === 'left' ? icon || false : false}\n action={\n showClose ? (\n <StyledIconButton size=\"small\" onClick={handleClose} closeIconColor={closeIconColor}>\n <X size={16} />\n </StyledIconButton>\n ) : undefined\n }\n >\n {messagePosition === 'center' ? (\n <>\n {icon}\n <span>{message}</span>\n {linkText && (\n <LinkText bannerType={type} onClick={onLinkClick}>\n {linkText}\n </LinkText>\n )}\n </>\n ) : (\n <>\n <span>{message}</span>\n {linkText && (\n <LinkText bannerType={type} onClick={onLinkClick}>\n {linkText}\n </LinkText>\n )}\n </>\n )}\n </StyledAlert>\n )\n}\n\nModBanner.displayName = 'ModBanner'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport Breadcrumbs, { breadcrumbsClasses } from '@mui/material/Breadcrumbs'\nimport Link, { type LinkProps } from '@mui/material/Link'\nimport { styled } from '@mui/material/styles'\nimport { ChevronRight } from 'lucide-react'\nimport type { ElementType, ReactNode } from 'react'\n\n/**\n * ModBreadcrumbs - Navigation breadcrumb component\n *\n * @see https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4563-122872\n */\n\nexport interface ModBreadcrumbsProps {\n /** Breadcrumb items as Link elements */\n children: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\nexport interface ModBreadcrumbLinkProps extends Omit<LinkProps, 'color'> {\n /** Marks this breadcrumb as the current page (sets aria-current=\"page\") */\n current?: boolean\n /** Link content */\n children: ReactNode\n /** Custom link component for client-side navigation (e.g., Next.js Link) */\n component?: ElementType\n}\n\nconst StyledBreadcrumbs = styled(Breadcrumbs)(() => ({\n [`& .${breadcrumbsClasses.separator}`]: {\n margin: 0,\n color: semanticColors.icons.utility,\n },\n [`& .${breadcrumbsClasses.ol}`]: {\n gap: spacing.spacing_1,\n },\n}))\n\nconst StyledBreadcrumbLink = styled(Link, {\n shouldForwardProp: prop => prop !== 'current',\n})<{ current?: boolean }>(({ current = false }) => ({\n fontSize: typography.fontSize.sm,\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1,\n textDecoration: 'none',\n color: current ? semanticColors.typography.bodySecondary : semanticColors.typography.link.primary,\n cursor: current ? 'default' : 'pointer',\n borderRadius: borderRadius.xS,\n transition: 'color 0.2s ease-in-out',\n\n '&:hover': {\n color: current ? semanticColors.icons.hover : semanticColors.buttons.tertiary.hover,\n },\n\n '&:focus-visible': {\n outline: `2px solid ${semanticColors.border.focus}`,\n outlineOffset: 2,\n },\n}))\n\n/**\n * ModBreadcrumbLink - Individual breadcrumb link\n *\n * Use this component as children of ModBreadcrumbs to create breadcrumb items.\n * Set `current` prop on the last item to indicate the current page.\n *\n * @example\n * ```tsx\n * <ModBreadcrumbs>\n * <ModBreadcrumbLink href=\"/settings\">Settings</ModBreadcrumbLink>\n * <ModBreadcrumbLink href=\"/team\">Team</ModBreadcrumbLink>\n * <ModBreadcrumbLink current>Team Details</ModBreadcrumbLink>\n * </ModBreadcrumbs>\n * ```\n */\nexport function ModBreadcrumbLink({\n current = false,\n children,\n component,\n ...props\n}: ModBreadcrumbLinkProps) {\n return (\n <StyledBreadcrumbLink\n {...(component && { component })}\n current={current}\n aria-current={current ? 'page' : undefined}\n underline=\"none\"\n {...props}\n >\n {children}\n </StyledBreadcrumbLink>\n )\n}\n\n/**\n * ModBreadcrumbs - Navigation breadcrumb component\n *\n * Provides hierarchical navigation with styled links and chevron separators.\n * Use ModBreadcrumbLink components as children to create breadcrumb items.\n *\n * @example\n * ```tsx\n * <ModBreadcrumbs>\n * <ModBreadcrumbLink href=\"/settings\">Settings</ModBreadcrumbLink>\n * <ModBreadcrumbLink href=\"/team\">Team</ModBreadcrumbLink>\n * <ModBreadcrumbLink current>Team Details</ModBreadcrumbLink>\n * </ModBreadcrumbs>\n * ```\n */\nexport function ModBreadcrumbs({ children, className }: ModBreadcrumbsProps) {\n return (\n <StyledBreadcrumbs\n separator={<ChevronRight size={10.67} color={semanticColors.icons.utility} />}\n className={className}\n aria-label=\"breadcrumb\"\n >\n {children}\n </StyledBreadcrumbs>\n )\n}\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport ButtonBase, { type ButtonBaseProps, buttonBaseClasses } from '@mui/material/ButtonBase'\nimport CircularProgress from '@mui/material/CircularProgress'\nimport { type CSSObject, styled } from '@mui/material/styles'\nimport React, { type ElementType, type ReactNode } from 'react'\n\n// Augment MUI types to add custom variant values\ndeclare module '@mui/material/ButtonBase' {\n interface ButtonBasePropsVariantOverrides {\n primary: true\n secondary: true\n destructive: true\n tertiary: true\n }\n}\n\ntype ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'tertiary'\ntype ButtonSize = 'small' | 'medium'\n\n// Props that should not be forwarded to ButtonBase (Button-specific props that ButtonBase doesn't support)\nconst buttonOnlyProps = [\n 'variant',\n 'size',\n 'loading',\n 'startIcon',\n 'endIcon',\n 'fullWidth',\n 'disableElevation',\n]\n\nconst StyledButtonBase = styled(ButtonBase, {\n shouldForwardProp: prop => !buttonOnlyProps.includes(prop as string),\n})<{\n variant?: ButtonVariant\n size?: ButtonSize\n loading?: boolean\n}>(({ theme, variant = 'primary', size = 'medium', loading = false }) => {\n // Size configurations\n const sizeConfig = {\n small: {\n height: 32,\n padding: `0 ${spacing.spacing_1_1_2}px`,\n fontSize: theme.typography.pxToRem(14),\n },\n medium: {\n height: spacing.spacing_5,\n padding: `0 ${spacing.spacing_2}px`,\n fontSize: theme.typography.pxToRem(14),\n },\n }\n\n const sizeStyles = sizeConfig[size]\n\n // Base styles shared by all variants\n const baseStyles: CSSObject = {\n height: sizeStyles.height,\n padding: sizeStyles.padding,\n fontSize: sizeStyles.fontSize,\n fontWeight: typography.fontWeight.semiBold,\n lineHeight: '1.25rem',\n borderRadius: borderRadius.button,\n textTransform: 'none',\n transition: theme.transitions.create(['background-color', 'border-color', 'color'], {\n duration: theme.transitions.duration.short,\n }),\n position: 'relative',\n minWidth: 'fit-content',\n gap: spacing.spacing_1,\n\n // Disabled state (always show cursor)\n [`&.${buttonBaseClasses.disabled}`]: {\n cursor: 'not-allowed',\n pointerEvents: 'auto',\n },\n\n // Focus visible for keyboard navigation\n [`&.${buttonBaseClasses.focusVisible}`]: {\n outline: `2px solid ${semanticColors.border.focus}`,\n outlineOffset: 2,\n },\n }\n\n // Variant-specific styles\n const variantStyles: Record<ButtonVariant, CSSObject> = {\n primary: {\n backgroundColor: semanticColors.buttons.primary.default,\n color: semanticColors.surfaces.white,\n border: 'none',\n\n '&:hover': {\n backgroundColor: semanticColors.buttons.primary.hover,\n },\n\n '&:active': {\n backgroundColor: semanticColors.buttons.primary.pressed,\n },\n\n ...(loading\n ? {}\n : {\n [`&.${buttonBaseClasses.disabled}`]: {\n backgroundColor: semanticColors.buttons.primary.disabled,\n color: semanticColors.typography.button.disabled,\n },\n }),\n },\n\n secondary: {\n backgroundColor: semanticColors.buttons.secondary.defaultBackground,\n color: semanticColors.buttons.secondary.default,\n border: `1px solid ${semanticColors.buttons.secondary.defaultBorder}`,\n\n '&:hover': {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n },\n\n '&:active': {\n backgroundColor: semanticColors.buttons.secondary.pressedBackground,\n },\n\n ...(loading\n ? {}\n : {\n [`&.${buttonBaseClasses.disabled}`]: {\n backgroundColor: semanticColors.buttons.secondary.disabledBackground,\n borderColor: semanticColors.border.secondary,\n color: semanticColors.typography.button.disabled,\n },\n }),\n },\n\n destructive: {\n backgroundColor: semanticColors.buttons.destructive,\n color: semanticColors.surfaces.white,\n border: 'none',\n\n '&:hover': {\n backgroundColor: semanticColors.status.error.dark,\n },\n\n '&:active': {\n backgroundColor: semanticColors.status.error.dark,\n filter: 'brightness(0.9)',\n },\n\n ...(loading\n ? {}\n : {\n [`&.${buttonBaseClasses.disabled}`]: {\n backgroundColor: semanticColors.buttons.primary.disabled,\n color: semanticColors.typography.button.disabled,\n },\n }),\n },\n\n tertiary: {\n backgroundColor: 'transparent',\n color: semanticColors.typography.input.default,\n border: 'none',\n padding: 0,\n lineHeight: 1,\n\n '&:hover': {\n backgroundColor: 'transparent',\n color: semanticColors.buttons.tertiary.hover,\n },\n\n '&:active': {\n color: semanticColors.buttons.tertiary.pressed,\n },\n\n ...(loading\n ? {}\n : {\n [`&.${buttonBaseClasses.disabled}`]: {\n backgroundColor: 'transparent',\n color: semanticColors.buttons.tertiary.disabled,\n },\n }),\n },\n }\n\n return {\n ...baseStyles,\n ...variantStyles[variant],\n }\n})\n\nconst LoadingSpinner = styled(CircularProgress, {\n shouldForwardProp: prop => prop !== '$variant',\n})<{ $variant: ButtonVariant }>(({ $variant }) => {\n // Use appropriate spinner color for each variant to ensure visibility\n const spinnerColors: Record<ButtonVariant, string> = {\n primary: semanticColors.surfaces.white,\n secondary: semanticColors.buttons.primary.default,\n destructive: semanticColors.surfaces.white,\n tertiary: semanticColors.buttons.tertiary.default,\n }\n\n return {\n color: spinnerColors[$variant],\n }\n})\n\ntype ModButtonOwnProps = {\n /**\n * The visual variant of the button\n * @default \"primary\"\n */\n variant?: ButtonVariant\n\n /**\n * The size of the button\n * @default \"medium\"\n */\n size?: ButtonSize\n\n /**\n * Show loading spinner instead of children\n * @default false\n */\n loading?: boolean\n\n /**\n * Button content\n */\n children?: ReactNode\n\n /**\n * URL to link to. When provided, the button renders as a link element.\n */\n href?: string\n\n /**\n * Icon placed before the button label\n */\n startIcon?: ReactNode\n\n /**\n * Icon placed after the button label\n */\n endIcon?: ReactNode\n}\n\nexport type ModButtonProps<C extends ElementType = typeof ButtonBase> = ModButtonOwnProps &\n Omit<React.ComponentPropsWithoutRef<C>, keyof ModButtonOwnProps> & {\n component?: C\n }\n\n/**\n * ModButton - Text button component based on MUI ButtonBase\n */\nexport function ModButton<C extends ElementType = typeof ButtonBase>({\n variant = 'primary',\n size = 'medium',\n loading = false,\n children,\n disabled,\n startIcon,\n endIcon,\n ...rest\n}: ModButtonProps<C>) {\n return (\n <StyledButtonBase\n variant={variant}\n size={size}\n loading={loading}\n disabled={disabled || loading}\n {...(rest as Omit<ButtonBaseProps, 'children'>)}\n >\n {loading ? (\n <LoadingSpinner $variant={variant} size={size === 'small' ? 16 : 20} />\n ) : (\n <React.Fragment>\n {startIcon}\n {children}\n {endIcon}\n </React.Fragment>\n )}\n </StyledButtonBase>\n )\n}\n\nModButton.displayName = 'ModButton'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport MuiToggleButton, {\n type ToggleButtonProps as MuiToggleButtonProps,\n} from '@mui/material/ToggleButton'\nimport { useCallback, useRef } from 'react'\n\nconst StyledButtonTab = styled(MuiToggleButton)(({ theme }) => ({\n fontFamily: typography.fontFamily.body,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n lineHeight: 1,\n color: semanticColors.typography.tab.inactive,\n backgroundColor: 'transparent',\n border: 'none',\n padding: `${spacing.spacing_1}px ${spacing.spacing_1_1_2}px`,\n cursor: 'pointer',\n textTransform: 'none',\n transition: theme.transitions.create(['color'], {\n duration: theme.transitions.duration.short,\n }),\n\n '&:hover': {\n color: semanticColors.typography.tab.active,\n },\n\n '&.Mui-focusVisible': {\n outline: `2px solid ${semanticColors.border.focus}`,\n outlineOffset: -2,\n borderRadius: borderRadius.xXS,\n },\n\n '&.Mui-disabled': {\n color: semanticColors.typography.button.disabled,\n cursor: 'default',\n pointerEvents: 'none',\n },\n}))\n\nexport interface ModButtonTabProps extends Omit<MuiToggleButtonProps, 'color'> {\n /**\n * Whether the tab is currently selected.\n * When used inside ModButtonGroup, this is computed automatically from the group's value.\n * @default false\n */\n selected?: boolean\n}\n\n/**\n * Syncs aria-selected with MUI's Mui-selected class via MutationObserver.\n * MUI ToggleButton computes selection internally from context and applies\n * the Mui-selected class — we mirror that to aria-selected for tab semantics.\n */\nfunction useTabAriaSync() {\n const observerRef = useRef<MutationObserver | null>(null)\n\n return useCallback((node: HTMLButtonElement | null) => {\n if (observerRef.current) {\n observerRef.current.disconnect()\n observerRef.current = null\n }\n if (!node) return\n\n const sync = () => {\n node.setAttribute('role', 'tab')\n node.setAttribute('aria-selected', String(node.classList.contains('Mui-selected')))\n }\n sync()\n\n observerRef.current = new MutationObserver(sync)\n observerRef.current.observe(node, { attributes: true, attributeFilter: ['class'] })\n }, [])\n}\n\n/**\n * ModButtonTab - A tab-style toggle button for use within ModButtonGroup\n */\nexport const ModButtonTab = ({ children, ...props }: ModButtonTabProps) => {\n const tabRef = useTabAriaSync()\n\n return (\n <StyledButtonTab ref={tabRef} {...props}>\n {children}\n </StyledButtonTab>\n )\n}\n\nModButtonTab.displayName = 'ModButtonTab'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport { toggleButtonClasses } from '@mui/material/ToggleButton'\nimport MuiToggleButtonGroup, {\n type ToggleButtonGroupProps as MuiToggleButtonGroupProps,\n toggleButtonGroupClasses,\n} from '@mui/material/ToggleButtonGroup'\n\ntype ButtonTabGroupSize = 'small' | 'medium'\n\n/**\n * Styled toggle button group that implements the Figma \"Button tab group\" design.\n *\n * Built on MUI ToggleButtonGroup which provides:\n * - Selection state management (value/onChange/exclusive)\n * - Size and disabled propagation via context\n * - Positional classes (firstButton/middleButton/lastButton)\n *\n * Custom styling:\n * - Rounded-rectangle border (borderRadius.button)\n * - Size variants (small=32px, medium=40px)\n * - Border colors using semantic tokens\n * - Selected state colors from design system tokens\n */\nconst StyledButtonTabGroup = styled(MuiToggleButtonGroup)<{\n size?: ButtonTabGroupSize\n}>(({ theme, size = 'medium' }) => {\n const sizeStyles = {\n small: {\n height: spacing.spacing_4,\n },\n medium: {\n height: spacing.spacing_5,\n },\n }\n\n return {\n borderRadius: borderRadius.button,\n border: `1px solid ${semanticColors.border.primary}`,\n overflow: 'hidden',\n\n // Style all grouped children\n [`& .${toggleButtonGroupClasses.grouped}`]: {\n flex: 1,\n minWidth: 'auto',\n height: sizeStyles[size].height,\n padding: `${spacing.spacing_1}px ${spacing.spacing_2}px`,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1,\n textTransform: 'none',\n border: 'none',\n borderRight: `1px solid ${semanticColors.border.primary}`,\n borderRadius: 0,\n color: semanticColors.typography.tab.inactive,\n backgroundColor: semanticColors.buttons.secondary.disabledBackground,\n transition: theme.transitions.create(['background-color', 'color', 'border-color'], {\n duration: theme.transitions.duration.short,\n }),\n\n // Selected state — double selector for specificity over MUI ToggleButton defaults\n [`&.${toggleButtonClasses.selected}.${toggleButtonClasses.selected}`]: {\n backgroundColor: semanticColors.surfaces.white,\n color: semanticColors.buttons.tertiary.default,\n fontWeight: typography.fontWeight.semiBold,\n },\n\n // Hover state\n [`&:hover, &.${toggleButtonClasses.selected}:hover`]: {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n },\n\n // Focus visible for keyboard navigation\n '&.Mui-focusVisible': {\n outline: `2px solid ${semanticColors.border.focus}`,\n outlineOffset: -2,\n zIndex: 1,\n },\n\n // First button: rounded left edge\n [`&.${toggleButtonGroupClasses.firstButton}`]: {\n borderTopLeftRadius: borderRadius.button,\n borderBottomLeftRadius: borderRadius.button,\n },\n\n // Last button: rounded right edge, no right border\n [`&.${toggleButtonGroupClasses.lastButton}`]: {\n borderTopRightRadius: borderRadius.button,\n borderBottomRightRadius: borderRadius.button,\n borderRight: 'none',\n },\n\n // Disabled state\n [`&.${toggleButtonClasses.disabled}`]: {\n backgroundColor: semanticColors.buttons.secondary.disabledBackground,\n color: semanticColors.typography.button.disabled,\n cursor: 'not-allowed',\n pointerEvents: 'auto',\n },\n },\n }\n})\n\nexport interface ModButtonTabGroupProps\n extends Omit<MuiToggleButtonGroupProps, 'orientation' | 'color' | 'fullWidth'> {\n /**\n * The size of the button tab group\n * @default \"medium\"\n */\n size?: ButtonTabGroupSize\n\n /**\n * Whether only one button can be selected at a time\n * @default true\n */\n exclusive?: boolean\n}\n\n/**\n * ModButtonTabGroup - Button tab group container\n *\n * Usage:\n * ```tsx\n * <ModButtonTabGroup value={selected} onChange={(_, val) => setSelected(val)} size=\"medium\">\n * <ModButtonTab value=\"tab1\">Tab 1</ModButtonTab>\n * <ModButtonTab value=\"tab2\">Tab 2</ModButtonTab>\n * <ModButtonTab value=\"tab3\">Tab 3</ModButtonTab>\n * </ModButtonTabGroup>\n * ```\n */\nexport const ModButtonTabGroup = ({\n size = 'medium',\n exclusive = true,\n ...props\n}: ModButtonTabGroupProps) => {\n return <StyledButtonTabGroup role=\"tablist\" size={size} exclusive={exclusive} {...props} />\n}\n\nModButtonTabGroup.displayName = 'ModButtonTabGroup'\n","import SvgIcon, { type SvgIconProps } from '@mui/material/SvgIcon'\n\n/**\n * ModCanceledIcon - Outlined circle struck through by a horizontal line.\n *\n * Marks a CANCELED state. Color comes entirely from `currentColor` (stroke plus\n * a 10% fill tint); set it via the `color`/`sx` prop or a parent.\n */\nexport const ModCanceledIcon = (props: SvgIconProps) => (\n <SvgIcon viewBox=\"0 0 24 24\" fill=\"none\" {...props}>\n <g stroke=\"currentColor\" strokeWidth=\"1.35\">\n <path\n fill=\"currentColor\"\n fillOpacity=\"0.1\"\n d=\"M2.55 11.95c0 2.405.918 4.812 2.753 6.647a9.4 9.4 0 0 0 6.647 2.753c2.489 0 4.877-.99 6.646-2.753a9.3 9.3 0 0 0 2.039-3.044 9.4 9.4 0 0 0 .715-3.602m-18.8-.001a9.37 9.37 0 0 1 2.753-6.647A9.4 9.4 0 0 1 11.95 2.55c2.489 0 4.877.99 6.646 2.753a9.3 9.3 0 0 1 2.039 3.045 9.4 9.4 0 0 1 .715 3.603\"\n />\n <path fill=\"none\" d=\"M3 11.825h18\" />\n </g>\n </SvgIcon>\n)\n\nModCanceledIcon.displayName = 'ModCanceledIcon'\n","import {\n borderRadius,\n colors,\n semanticColors,\n semanticColorsDark,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/design-system-tokens'\nimport MuiCard, { type CardProps } from '@mui/material/Card'\nimport { styled } from '@mui/material/styles'\nimport type { ReactNode } from 'react'\nimport { focusRingStyles } from '../utils/focusRing'\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\nexport type ModCardSize = 'small' | 'large'\n\nexport interface ModCardSmallProps extends Omit<CardProps, 'children' | 'title'> {\n size: 'small'\n logo: ReactNode\n recipeCount: string\n title: ReactNode | string\n description: string\n selected?: boolean\n disabled?: boolean\n onClick?: () => void\n}\n\nexport interface ModCardLargeProps extends Omit<CardProps, 'children' | 'title'> {\n size: 'large'\n disabled?: boolean\n cardTheme?: 'light' | 'dark'\n showIcon?: boolean\n showGel?: boolean\n showButtons?: boolean\n icon?: ReactNode\n gel?: ReactNode\n title?: ReactNode\n children?: ReactNode\n actions?: ReactNode\n onClick?: () => void\n}\n\nexport type ModCardProps = ModCardSmallProps | ModCardLargeProps\n\n// ─── Shared ──────────────────────────────────────────────────────────────────\n\nconst activeShadow = `${shadows.card.x}px ${shadows.card.y}px ${shadows.card.blur}px ${shadows.card.spread}px ${shadows.card.shadow}`\n\n// ─── Small card styled components ────────────────────────────────────────────\n\nconst SmallStyledCard = styled(MuiCard, {\n shouldForwardProp: prop => prop !== 'selected' && prop !== 'disabled',\n})<{ selected?: boolean; disabled?: boolean }>(({ theme, selected, disabled }) => ({\n width: 160,\n height: 160,\n padding: spacing.spacing_1_1_2, // 12px\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.spacing_2, // 16px\n backgroundColor: semanticColors.surfaces.card,\n border: `1px solid ${selected ? semanticColors.buttons.primary.default : semanticColors.border.primary}`,\n borderRadius: borderRadius.card,\n boxShadow: selected ? activeShadow : 'none',\n transition: theme.transitions.create(['border-color', 'background-color', 'box-shadow']),\n cursor: 'pointer',\n\n '&:hover': {\n borderColor: semanticColors.buttons.primary.default,\n boxShadow: activeShadow,\n },\n\n '&:focus-visible': {\n borderColor: semanticColors.buttons.primary.default,\n ...focusRingStyles,\n },\n\n ...(disabled && {\n opacity: 0.5,\n pointerEvents: 'none',\n cursor: 'not-allowed',\n }),\n}))\n\nconst SmallCardHeader = styled('div')({\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n width: '100%',\n})\n\nconst SmallLogoContainer = styled('div')({\n width: spacing.spacing_6,\n height: spacing.spacing_6,\n flexShrink: 0,\n})\n\nconst SmallRecipeCount = styled('p')(({ theme }) => ({\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.xxs), // 10px\n fontWeight: typography.fontWeight.semiBold, // 600\n lineHeight: 1.2,\n color: semanticColors.typography.body,\n whiteSpace: 'nowrap',\n}))\n\nconst SmallCardContent = styled('div')(() => ({\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.spacing_2, // 16px\n width: '100%',\n}))\n\nconst SmallTitle = styled('p')(({ theme }) => ({\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.h6), // 16px\n fontWeight: typography.fontWeight.semiBold, // 600\n lineHeight: 1.4,\n color: semanticColors.typography.body,\n width: '100%',\n}))\n\nconst SmallDescription = styled('p')(({ theme }) => ({\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs), // 12px\n fontWeight: typography.fontWeight.regular, // 400\n lineHeight: 1.5,\n color: semanticColors.typography.body,\n width: '100%',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n}))\n\n// ─── Large card styled components ────────────────────────────────────────────\n\ntype LargeCardTheme = 'light' | 'dark'\n\nconst LargeStyledCard = styled(MuiCard, {\n shouldForwardProp: prop => prop !== 'disabled' && prop !== 'cardTheme',\n})<{\n disabled?: boolean\n cardTheme?: LargeCardTheme\n}>(({ disabled = false, cardTheme = 'light' }) => {\n const isLight = cardTheme === 'light'\n\n // `cardTheme=\"dark\"` is a permanently dark card, not the app theme — it looks\n // the same under [data-theme=\"dark\"]. So every colour on it must be fixed:\n // sourcing one side from `semanticColors` (which flips) and the other from a\n // primitive (which doesn't) puts light-mode text on a dark surface in dark\n // mode. `semanticColorsDark` is the literal-hex escape hatch for exactly this.\n const activeBorderColor = isLight\n ? semanticColors.buttons.primary.default\n : colors.digitalGreen[300]\n\n const defaultBorderColor = isLight\n ? semanticColors.border.primary\n : semanticColorsDark.border.primary\n\n return {\n width: 340,\n height: 162,\n display: 'flex',\n flexDirection: 'column' as const,\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n padding: spacing.spacing_2,\n borderRadius: borderRadius.card,\n backgroundColor: isLight ? semanticColors.surfaces.card : semanticColorsDark.surfaces.card,\n border: `1px solid ${defaultBorderColor}`,\n boxShadow: 'none',\n overflow: 'hidden',\n cursor: 'pointer',\n transition: 'border-color 0.2s, box-shadow 0.2s',\n\n '&:hover': {\n borderColor: activeBorderColor,\n boxShadow: activeShadow,\n },\n\n '&:active': {\n borderColor: activeBorderColor,\n boxShadow: activeShadow,\n },\n\n '&:focus-visible': {\n borderColor: activeBorderColor,\n ...focusRingStyles,\n },\n\n ...(disabled && {\n opacity: 0.5,\n pointerEvents: 'none' as const,\n cursor: 'not-allowed',\n }),\n }\n})\n\nconst LargeTopSection = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.spacing_2,\n alignItems: 'flex-start',\n width: '100%',\n flexShrink: 0,\n})\n\nconst LargeHeaderRow = styled('div')({\n display: 'flex',\n gap: spacing.spacing_1,\n alignItems: 'center',\n flexShrink: 0,\n})\n\nconst LargeHeaderSlot = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n width: 20,\n height: 20,\n flexShrink: 0,\n})\n\nconst LargeHeaderTitle = styled('span', {\n shouldForwardProp: prop => prop !== 'cardTheme',\n})<{ cardTheme?: LargeCardTheme }>(({ cardTheme = 'light' }) => ({\n fontFamily: `${typography.fontFamily.heading}, sans-serif`,\n fontWeight: typography.fontWeight.semiBold,\n fontSize: typography.fontSize.h6,\n lineHeight: 1.4,\n color:\n cardTheme === 'light' ? semanticColors.typography.body : semanticColorsDark.typography.body,\n flexShrink: 0,\n}))\n\nconst LargeDescription = styled('p', {\n shouldForwardProp: prop => prop !== 'cardTheme',\n})<{ cardTheme?: LargeCardTheme }>(({ cardTheme = 'light' }) => ({\n fontFamily: `${typography.fontFamily.body}, sans-serif`,\n fontWeight: typography.fontWeight.regular,\n fontSize: typography.fontSize.xs,\n lineHeight: 1.5,\n color:\n cardTheme === 'light' ? semanticColors.typography.body : semanticColorsDark.typography.body,\n margin: 0,\n minWidth: '100%',\n wordWrap: 'break-word' as const,\n}))\n\nconst LargeButtonsRow = styled('div')({\n display: 'flex',\n gap: spacing.spacing_3,\n alignItems: 'flex-start',\n flexShrink: 0,\n})\n\n// ─── Internal implementations ────────────────────────────────────────────────\n\nconst SmallCardImpl = ({\n logo,\n recipeCount,\n title,\n description,\n selected = false,\n disabled = false,\n onClick,\n ...props\n}: Omit<ModCardSmallProps, 'size'>) => {\n return (\n <SmallStyledCard\n selected={selected}\n disabled={disabled}\n onClick={disabled ? undefined : onClick}\n tabIndex={disabled ? -1 : 0}\n role=\"button\"\n aria-disabled={disabled}\n aria-pressed={selected}\n {...props}\n >\n <SmallCardHeader>\n <SmallLogoContainer>{logo}</SmallLogoContainer>\n <SmallRecipeCount>{recipeCount}</SmallRecipeCount>\n </SmallCardHeader>\n <SmallCardContent>\n <SmallTitle>{title}</SmallTitle>\n <SmallDescription>{description}</SmallDescription>\n </SmallCardContent>\n </SmallStyledCard>\n )\n}\n\nconst LargeCardImpl = ({\n disabled = false,\n cardTheme = 'light',\n showIcon = true,\n showGel = true,\n showButtons = true,\n icon,\n gel,\n title,\n children,\n actions,\n onClick,\n ...props\n}: Omit<ModCardLargeProps, 'size'>) => {\n return (\n <LargeStyledCard\n disabled={disabled}\n cardTheme={cardTheme}\n onClick={disabled ? undefined : onClick}\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n {...props}\n >\n <LargeTopSection>\n <LargeHeaderRow>\n {showIcon && icon && <LargeHeaderSlot>{icon}</LargeHeaderSlot>}\n {showGel && gel && <LargeHeaderSlot>{gel}</LargeHeaderSlot>}\n {title && <LargeHeaderTitle cardTheme={cardTheme}>{title}</LargeHeaderTitle>}\n </LargeHeaderRow>\n {children && <LargeDescription cardTheme={cardTheme}>{children}</LargeDescription>}\n </LargeTopSection>\n {showButtons && actions && <LargeButtonsRow>{actions}</LargeButtonsRow>}\n </LargeStyledCard>\n )\n}\n\n// ─── Exported component ──────────────────────────────────────────────────────\n\nexport const ModCard = (props: ModCardProps) => {\n if (props.size === 'small') {\n const { size: _, ...rest } = props\n return <SmallCardImpl {...rest} />\n }\n\n const { size: _, ...rest } = props\n return <LargeCardImpl {...rest} />\n}\n\nModCard.displayName = 'ModCard'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport Checkbox, { type CheckboxProps, checkboxClasses } from '@mui/material/Checkbox'\nimport { styled } from '@mui/material/styles'\nimport { Square, SquareCheck, SquareMinus } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\n/**\n * ModCheckbox uses Lucide icons (square / square-check / square-minus): a rounded\n * outline drawn in `currentColor`, with the check/minus mark sharing that stroke —\n * so a single per-state `color` (set in StyledCheckbox) drives every variant.\n *\n * Checkbox sizes: xs=12x12, small=16x16, medium=20x20\n */\n\ntype CheckboxSize = 'xs' | 'small' | 'medium'\n\n// Augment MUI types to add custom size values\ndeclare module '@mui/material/Checkbox' {\n interface CheckboxPropsSizeOverrides {\n xs: true\n small: true\n medium: true\n }\n}\n\nconst CheckboxContainer = styled('label')<{ disabled?: boolean }>(({ disabled }) => ({\n display: 'inline-flex',\n alignItems: 'flex-start',\n gap: spacing.spacing_1,\n cursor: disabled ? 'not-allowed' : 'pointer',\n userSelect: 'none',\n}))\n\nconst LabelContainer = styled('div')<{ size?: CheckboxSize }>(({ size = 'medium' }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: size === 'medium' ? 2 : 0,\n}))\n\nconst Label = styled('span')<{ size?: CheckboxSize }>(({ theme, size = 'medium' }) => ({\n fontSize: theme.typography.pxToRem(\n size === 'xs'\n ? typography.fontSize.xs\n : size === 'small'\n ? typography.fontSize.sm\n : typography.fontSize.default\n ),\n fontWeight: typography.fontWeight.medium,\n lineHeight: size === 'xs' ? 1.5 : size === 'small' ? 1.4 : 1.5,\n color: semanticColors.typography.input.default,\n}))\n\nconst HelperText = styled('span')<{ size?: CheckboxSize }>(({ theme, size = 'medium' }) => ({\n fontSize: theme.typography.pxToRem(\n size === 'xs'\n ? typography.fontSize.xs\n : size === 'small'\n ? typography.fontSize.sm\n : typography.fontSize.default\n ),\n fontWeight: typography.fontWeight.regular,\n lineHeight: size === 'xs' ? 1.5 : size === 'small' ? 1.4 : 1.5,\n color: semanticColors.typography.bodySecondary,\n}))\n\n// xs focus-ring radius — no matching design token (box corner comes from the icon)\nconst FIGMA_XS_BORDER_RADIUS = 1\n\nconst StyledCheckbox = styled(Checkbox, {\n shouldForwardProp: prop => prop !== 'size',\n})<{\n size?: CheckboxSize\n disabled?: boolean\n}>(({ size = 'medium' }) => {\n // Size configurations\n const sizeConfig = {\n xs: {\n size: 12,\n borderRadius: FIGMA_XS_BORDER_RADIUS,\n },\n small: {\n size: 16,\n borderRadius: borderRadius.xXS, // focus-ring radius (small)\n },\n medium: {\n size: 20,\n borderRadius: borderRadius.xS, // focus-ring radius (medium)\n },\n }\n\n const config = sizeConfig[size]\n\n return {\n width: config.size,\n height: config.size,\n padding: 0,\n marginTop: size === 'xs' ? 3 : 2,\n color: semanticColors.border.strong,\n borderRadius: config.borderRadius,\n flexShrink: 0,\n\n // Suppress MUI's grey hover background\n '&:hover': {\n backgroundColor: 'transparent',\n },\n\n // Hover on the unchecked box — subtle blue outline affordance (enabled only)\n [`&:hover:not(.${checkboxClasses.checked}):not(.${checkboxClasses.indeterminate}):not(.${checkboxClasses.disabled})`]:\n {\n color: semanticColors.input.checkbox,\n },\n\n // Checked / Indeterminate — primary blue outline + mark\n [`&.${checkboxClasses.checked}`]: {\n color: semanticColors.input.checkbox,\n },\n [`&.${checkboxClasses.indeterminate}`]: {\n color: semanticColors.input.checkbox,\n },\n\n // Disabled — enabled colors dimmed to 40%. Checked/indeterminate keep\n // digitalBlue[600] via the rules above; re-assert the unchecked outline\n // token so it beats MUI's default `.Mui-disabled` color.\n [`&.${checkboxClasses.disabled}`]: {\n opacity: 0.4,\n cursor: 'not-allowed',\n },\n [`&.${checkboxClasses.disabled}:not(.${checkboxClasses.checked}):not(.${checkboxClasses.indeterminate})`]:\n {\n color: semanticColors.border.primary,\n },\n\n // Focus visible for keyboard navigation\n '&.Mui-focusVisible': {\n outline: `2px solid ${semanticColors.border.focus}`,\n outlineOffset: 2,\n borderRadius: config.borderRadius,\n },\n\n // Size the Lucide icon (color comes from `color` → currentColor → stroke)\n '& svg': {\n width: config.size,\n height: config.size,\n },\n }\n})\n\nexport interface ModCheckboxProps extends Omit<CheckboxProps, 'size'> {\n /**\n * The size of the checkbox\n * @default \"medium\"\n */\n size?: CheckboxSize\n\n /**\n * The label text displayed next to the checkbox\n */\n label?: ReactNode\n\n /**\n * The helper text displayed below the label\n */\n helperText?: ReactNode\n}\n\n/**\n * ModCheckbox - Checkbox component based on MUI Checkbox\n *\n * @example\n * // Basic checkbox\n * <ModCheckbox />\n *\n * @example\n * // With label\n * <ModCheckbox label=\"Remember me\" />\n *\n * @example\n * // With label and helper text\n * <ModCheckbox label=\"Remember me\" helperText=\"Save my login details for next time.\" />\n *\n * @example\n * // Small size\n * <ModCheckbox size=\"small\" label=\"Remember me\" />\n *\n * @example\n * // Extra small size\n * <ModCheckbox size=\"xs\" label=\"Remember me\" />\n *\n * @example\n * // Controlled\n * <ModCheckbox checked={isChecked} onChange={handleChange} label=\"Remember me\" />\n *\n * @example\n * // Indeterminate state (for \"select all\" checkboxes)\n * <ModCheckbox indeterminate={true} label=\"Select all\" />\n */\nexport const ModCheckbox = ({\n size = 'medium',\n label,\n helperText,\n disabled,\n icon,\n checkedIcon,\n indeterminateIcon,\n className,\n ...props\n}: ModCheckboxProps) => {\n // Identifies ModCheckbox instances to consumer stylesheets.\n //\n // `neo-checkbox` ships alongside for one major. Consumers select on these\n // names from their own CSS, where nothing type-checks the string — moderne-ui\n // has `'&:not(.neo-checkbox)'`, which on a bare rename would stop excluding\n // anything and silently start overriding every checkbox. Remove the legacy\n // name once consumers have migrated.\n const ownClassNames = 'mod-checkbox neo-checkbox'\n const combinedClassName = className ? `${ownClassNames} ${className}` : ownClassNames\n\n // Default icons (sized via CSS on the SVG); overridable per instance\n const defaultIcon = icon || <Square />\n const defaultCheckedIcon = checkedIcon || <SquareCheck />\n const defaultIndeterminateIcon = indeterminateIcon || <SquareMinus />\n\n // If no label, return just the checkbox\n if (!label && !helperText) {\n return (\n <StyledCheckbox\n size={size}\n disabled={disabled}\n icon={defaultIcon}\n checkedIcon={defaultCheckedIcon}\n indeterminateIcon={defaultIndeterminateIcon}\n className={combinedClassName}\n {...props}\n />\n )\n }\n\n // With label, wrap in container for proper layout\n return (\n <CheckboxContainer disabled={disabled}>\n <StyledCheckbox\n size={size}\n disabled={disabled}\n icon={defaultIcon}\n checkedIcon={defaultCheckedIcon}\n indeterminateIcon={defaultIndeterminateIcon}\n className={combinedClassName}\n {...props}\n />\n <LabelContainer size={size}>\n {label && <Label size={size}>{label}</Label>}\n {helperText && <HelperText size={size}>{helperText}</HelperText>}\n </LabelContainer>\n </CheckboxContainer>\n )\n}\n\nModCheckbox.displayName = 'ModCheckbox'\n\n/**\n * Base styled checkbox component without label wrapper\n * Used internally by ModCheckbox and directly in DataGrid\n *\n * @public\n */\nexport { StyledCheckbox as ModCheckboxBase }\n","import type { ReactNode } from 'react'\nimport { ModCheckbox, type ModCheckboxProps } from '../Checkbox/Checkbox'\n\ntype CheckboxWithTextSize = 'small' | 'medium'\n\n/**\n * Props for the ModCheckboxWithText component\n */\nexport interface ModCheckboxWithTextProps extends Omit<ModCheckboxProps, 'size'> {\n /**\n * The size of the checkbox with text\n * @default \"small\"\n */\n size?: CheckboxWithTextSize\n\n /**\n * The label text displayed next to the checkbox\n */\n label?: ReactNode\n\n /**\n * The helper text displayed below the label\n */\n helperText?: ReactNode\n}\n\n/**\n * ModCheckboxWithText - Checkbox with label and supporting text\n *\n * Thin wrapper around ModCheckbox that maps the Figma \"Checkbox with text\"\n * component to the existing ModCheckbox with label + helperText.\n */\nexport const ModCheckboxWithText = ({ size = 'small', ...props }: ModCheckboxWithTextProps) => {\n return <ModCheckbox size={size} {...props} />\n}\n\nModCheckboxWithText.displayName = 'ModCheckboxWithText'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport type { ButtonBaseProps } from '@mui/material/ButtonBase'\nimport ButtonBase, { buttonBaseClasses } from '@mui/material/ButtonBase'\nimport { type CSSObject, styled } from '@mui/material/styles'\nimport type { ReactNode } from 'react'\n\n// Augment MUI types to add custom variant values\ndeclare module '@mui/material/ButtonBase' {\n interface ButtonBasePropsVariantOverrides {\n outlined: true\n filled: true\n }\n}\n\ntype CodeSnippetVariant = 'outlined' | 'filled'\ntype CodeSnippetSize = 'xs' | 'small' | 'large' | 'inline'\n\nconst StyledButtonBase = styled(ButtonBase, {\n shouldForwardProp: prop => prop !== 'isMultiline' && prop !== 'variant' && prop !== 'size',\n})<{\n variant?: CodeSnippetVariant\n size?: CodeSnippetSize\n isMultiline?: boolean\n}>(({ theme, variant = 'outlined', size = 'small', isMultiline = false }) => {\n // Size configurations\n const sizeConfig = {\n xs: {\n height: 22,\n paddingSingleLine: `0 ${spacing.spacing_3_4}px`, // 6px horizontal\n paddingMultiline: spacing.spacing_3, // 24px all sides\n fontSize: theme.typography.pxToRem(typography.fontSize.xs), // 12px\n },\n small: {\n height: 24,\n paddingSingleLine: `0 ${spacing.spacing_3_4}px`, // 6px horizontal\n paddingMultiline: spacing.spacing_3, // 24px all sides\n fontSize: theme.typography.pxToRem(typography.fontSize.sm), // 14px\n },\n large: {\n height: 32,\n paddingSingleLine: `0 ${spacing.spacing_1}px`, // 8px horizontal\n paddingMultiline: spacing.spacing_3, // 24px all sides\n fontSize: theme.typography.pxToRem(typography.fontSize.sm), // 14px\n },\n inline: {\n height: 'auto',\n paddingSingleLine: `0 ${spacing.spacing_1_2}px`, // 4px horizontal\n fontSize: theme.typography.pxToRem(typography.fontSize.xs), // 12px\n },\n }\n\n const sizeStyles = sizeConfig[size]\n\n // Base styles shared by all variants\n const baseStyles: CSSObject = {\n position: 'relative',\n display: isMultiline ? 'block' : 'inline-flex',\n alignItems: isMultiline ? undefined : 'center',\n justifyContent: 'flex-start',\n height: isMultiline ? 'auto' : sizeStyles.height,\n minHeight: isMultiline ? 'auto' : sizeStyles.height,\n whiteSpace: isMultiline ? 'pre' : 'nowrap',\n width: isMultiline ? '100%' : 'fit-content',\n maxWidth: isMultiline ? '100%' : 'none',\n overflowX: isMultiline ? 'auto' : 'visible',\n padding:\n isMultiline && 'paddingMultiline' in sizeStyles\n ? sizeStyles.paddingMultiline\n : sizeStyles.paddingSingleLine,\n paddingRight: isMultiline ? spacing.spacing_7 : undefined, // Extra space for copy button in multiline only\n fontSize: sizeStyles.fontSize,\n fontFamily: typography.fontFamily.code,\n fontWeight: typography.fontWeight.regular,\n lineHeight: isMultiline ? 1.5 : size === 'xs' || size === 'inline' ? 1.2 : 'normal',\n borderRadius: borderRadius.xS,\n textAlign: 'left',\n textTransform: 'none',\n gap: isMultiline ? undefined : spacing.spacing_1_1_4, // 10px gap only for single-line\n minWidth: 'fit-content',\n cursor: 'text',\n\n // Focus visible for keyboard navigation\n [`&.${buttonBaseClasses.focusVisible}`]: {\n outline: `2px solid ${semanticColors.border.focus}`,\n outlineOffset: 2,\n },\n }\n\n // Variant-specific styles\n const variantStyles: Record<CodeSnippetVariant, CSSObject> = {\n outlined: {\n backgroundColor: semanticColors.code.background,\n color: semanticColors.typography.code.primary,\n border: 'none',\n },\n filled: {\n backgroundColor: semanticColors.surfaces.tooltip,\n color: semanticColors.typography.tooltip.default,\n border: 'none',\n },\n }\n\n return {\n ...baseStyles,\n ...variantStyles[variant],\n }\n})\n\nconst IconWrapper = styled('span')<{ isMultiline?: boolean }>(({ isMultiline }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 16,\n height: 16,\n flexShrink: 0,\n cursor: 'pointer',\n ...(isMultiline && {\n position: 'absolute',\n top: spacing.spacing_3, // 24px from top\n right: spacing.spacing_3, // 24px from right\n }),\n}))\n\nexport interface ModCodeSnippetProps extends Omit<ButtonBaseProps, 'children'> {\n /**\n * The visual variant of the code snippet\n * @default \"outlined\"\n */\n variant?: CodeSnippetVariant\n\n /**\n * The size of the code snippet\n * @default \"small\"\n */\n size?: CodeSnippetSize\n\n /**\n * Icon to display at the end (copy button position)\n */\n endIcon?: ReactNode\n\n /**\n * Code snippet content to display\n */\n children: ReactNode\n}\n\n/**\n * ModCodeSnippet - Inline code snippet component based on MUI ButtonBase\n */\nexport const ModCodeSnippet = ({\n variant = 'outlined',\n size = 'small',\n endIcon,\n children,\n ...props\n}: ModCodeSnippetProps) => {\n // Inline snippets are never multiline — they sit within a line of text\n const isMultiline = size !== 'inline' && String(children).includes('\\n')\n\n return (\n <StyledButtonBase variant={variant} size={size} isMultiline={isMultiline} {...props}>\n {isMultiline ? children : <span>{children}</span>}\n {endIcon && <IconWrapper isMultiline={isMultiline}>{endIcon}</IconWrapper>}\n </StyledButtonBase>\n )\n}\n\nModCodeSnippet.displayName = 'ModCodeSnippet'\n","import { semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport { checkboxClasses } from '@mui/material/Checkbox'\nimport type { SxProps, Theme } from '@mui/material/styles'\nimport { gridClasses } from '@mui/x-data-grid'\n\n/**\n * Surface for the filter and columns panels.\n *\n * MUI's panel Paper defaults to `theme.palette.background.paper` (#fff) and so\n * stays light under `[data-theme=\"dark\"]`. ModDataGrid themes that Paper via its\n * `panel` slot, but both panels are also usable with a plain MUI DataGrid, so\n * they carry this surface themselves.\n */\nexport const panelSurfaceStyles = {\n backgroundColor: semanticColors.surfaces.white,\n} as const\n\nexport const getDataGridHeaderStyles = (): SxProps<Theme> => {\n return {\n // Header cell container styles - from Figma: bg, border, padding\n // Height is set via density-specific selectors in DataGrid.tsx\n [`& .${gridClasses.columnHeader}`]: {\n backgroundColor: semanticColors.surfaces.dataGrid.header,\n borderBottom: `1px solid ${semanticColors.border.primary}`,\n paddingTop: `${spacing.spacing_1_1_2}px`,\n paddingBottom: `${spacing.spacing_1_1_2}px`,\n paddingLeft: `${spacing.spacing_2}px`,\n paddingRight: `${spacing.spacing_2}px`,\n boxSizing: 'border-box',\n },\n\n // Style the filler element to match header\n // Height is set via density-specific selectors in DataGrid.tsx\n [`& .${gridClasses.filler}`]: {\n backgroundColor: semanticColors.surfaces.dataGrid.header,\n borderBottom: `1px solid ${semanticColors.border.primary}`,\n boxSizing: 'border-box',\n },\n\n // Style the default MUI column header title text to match Figma\n [`& .${gridClasses.columnHeaderTitle}`]: {\n fontFamily: `${typography.fontFamily.body}, sans-serif`,\n fontSize: typography.fontSize.sm,\n fontWeight: typography.fontWeight.semiBold, // Always semiBold (600)\n lineHeight: 'normal',\n color: semanticColors.typography.bodySecondary, // #6b7280 by default\n transition: 'color 0.2s',\n textOverflow: 'clip',\n whiteSpace: 'break-spaces',\n },\n\n // Change text color on hover\n [`& .${gridClasses.columnHeader}:hover .${gridClasses.columnHeaderTitle}`]: {\n color: semanticColors.icons.default, // #1f2937 on hover\n },\n\n // Style the checkbox in header to match design system (16x16 from Figma)\n [`& .${gridClasses.columnHeaderCheckbox}`]: {\n padding: 0,\n [`& .${checkboxClasses.root}`]: {\n padding: 0,\n width: 16,\n height: 16,\n '& svg': {\n width: 16,\n height: 16,\n },\n },\n },\n\n // MUI clips this container when header vertical padding leaves < 16px of content\n // area (e.g. compact: 38px − 24px padding = 14px). overflow:visible lets the\n // sort icon render at full 16px without being cropped.\n [`& .${gridClasses.columnHeaderTitleContainer}`]: {\n overflow: 'visible',\n lineHeight: 1,\n },\n\n // Style MUI's sort icon to match design system (16x16)\n [`& .${gridClasses.iconButtonContainer}`]: {\n width: 16,\n height: 16,\n marginLeft: `${spacing.spacing_1_2}px`,\n '& button': {\n padding: 0,\n width: 16,\n height: 16,\n '& svg': {\n width: 16,\n height: 16,\n color: semanticColors.icons.utility,\n },\n },\n },\n }\n}\n\nexport const getDataGridRowStyles = (): SxProps<Theme> => ({\n [`& .${gridClasses.row}`]: {\n backgroundColor: semanticColors.surfaces.dataGrid.default,\n },\n [`& .${gridClasses.row}:hover`]: {\n backgroundColor: semanticColors.surfaces.dataGrid.hover,\n },\n [`& .${gridClasses.row}.Mui-selected`]: {\n backgroundColor: semanticColors.surfaces.dataGrid.selected,\n },\n [`& .${gridClasses.row}.Mui-selected:hover`]: {\n backgroundColor: semanticColors.surfaces.dataGrid.selectedHover,\n },\n})\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Divider from '@mui/material/Divider'\nimport InputAdornment, { inputAdornmentClasses } from '@mui/material/InputAdornment'\nimport { inputBaseClasses } from '@mui/material/InputBase'\nimport { styled } from '@mui/material/styles'\nimport TextField from '@mui/material/TextField'\nimport {\n gridColumnDefinitionsSelector,\n gridColumnVisibilityModelSelector,\n useGridApiContext,\n useGridSelector,\n} from '@mui/x-data-grid'\nimport type { GridColumnsPanelProps } from '@mui/x-data-grid-pro'\nimport { Search } from 'lucide-react'\nimport { useMemo, useState } from 'react'\nimport { ModCheckbox } from '../Checkbox/Checkbox'\nimport { panelSurfaceStyles } from '../DataGrid/DataGrid.styles'\n\n// PanelWrapper was removed from @mui/x-data-grid-pro public API in v8.28.2\nconst PanelWrapper = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n ...panelSurfaceStyles,\n '&:focus': { outline: 0 },\n})\n\nconst PanelContent = styled(Box)(() => ({\n display: 'flex',\n flexDirection: 'column',\n padding: spacing.spacing_1_2,\n paddingTop: spacing.spacing_1,\n}))\n\n/**\n * Search input styled to match ModQuickFilter\n */\nconst StyledSearchField = styled(TextField)(({ theme }) => ({\n marginLeft: spacing.spacing_1,\n marginRight: spacing.spacing_1,\n marginBottom: spacing.spacing_1_2,\n\n [`& .${inputBaseClasses.root}`]: {\n height: spacing.spacing_5,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n borderRadius: borderRadius.input,\n backgroundColor: semanticColors.input.background,\n border: `1px solid ${semanticColors.border.primary}`,\n paddingTop: spacing.spacing_1,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_2,\n paddingRight: spacing.spacing_1_1_2,\n gap: spacing.spacing_1_2,\n\n '&::before, &::after': {\n display: 'none',\n },\n\n [`& .${inputBaseClasses.input}`]: {\n padding: 0,\n color: semanticColors.typography.input.default,\n\n '&::placeholder': {\n color: semanticColors.typography.input.placeholder,\n opacity: 1,\n },\n },\n\n '&:hover': {\n backgroundColor: semanticColors.input.hoverBackground,\n },\n\n [`&.${inputBaseClasses.focused}`]: {\n backgroundColor: semanticColors.input.background,\n borderColor: semanticColors.buttons.primary.default,\n },\n },\n\n [`& .${inputAdornmentClasses.root}`]: {\n color: semanticColors.icons.placeholder,\n '& svg': {\n width: 20,\n height: 20,\n },\n },\n}))\n\nconst ColumnItemContainer = styled(Box)(({ theme }) => ({\n paddingTop: theme.spacing(0.125),\n paddingBottom: theme.spacing(0.125),\n paddingLeft: spacing.spacing_3_4,\n paddingRight: spacing.spacing_3_4,\n}))\n\n// Figma-exact border radius for menu items — no matching design token\nconst MENU_ITEM_BORDER_RADIUS = 6\n\nconst MenuItemContent = styled('div')(() => ({\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_1,\n padding: spacing.spacing_1,\n borderRadius: MENU_ITEM_BORDER_RADIUS,\n width: '100%',\n '&:hover': {\n backgroundColor: semanticColors.surfaces.listHover,\n },\n}))\n\nconst MenuItemLabel = styled('span')<{ fontWeight?: number }>(({ theme, fontWeight = 500 }) => ({\n fontSize: theme.typography.pxToRem(16),\n fontWeight,\n lineHeight: 1.5,\n color: semanticColors.typography.body,\n whiteSpace: 'nowrap',\n}))\n\nconst DividerContainer = styled('div')(() => ({\n paddingTop: spacing.spacing_1_2,\n paddingBottom: spacing.spacing_1_2,\n}))\n\nconst StyledDivider = styled(Divider)(() => ({\n borderColor: semanticColors.border.primary,\n}))\n\nconst FooterRow = styled(Box)(() => ({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingLeft: spacing.spacing_3_4,\n paddingRight: spacing.spacing_3_4,\n}))\n\nconst ResetButton = styled(Button)(({ theme }) => ({\n fontSize: theme.typography.pxToRem(16),\n fontWeight: typography.fontWeight.regular,\n color: semanticColors.buttons.primary.default,\n textTransform: 'none',\n padding: spacing.spacing_1,\n minWidth: 'auto',\n '&:hover': {\n backgroundColor: 'transparent',\n color: semanticColors.typography.bodySecondary,\n },\n '&:disabled': {\n color: semanticColors.typography.button.disabled,\n },\n}))\n\n/**\n * ModDataGridColumnsPanel - Custom columns panel for ModDataGrid matching Figma design\n *\n * A styled columns panel that integrates with MUI DataGrid's column visibility system.\n * Features:\n * - Search input with Lucide icon (matches ModQuickFilter)\n * - Checkbox list with design system styling (12px checkboxes)\n * - Show/Hide all toggle\n * - Reset button\n *\n * Design Tokens Used:\n * - surfaces.white - Background color\n * - surfaces.listHover - Item hover background (#f9fafb)\n * - input.background - Search input background\n * - border.input - Search input border\n * - buttons.primary.default - Search input focus border\n * - typography.body - Column label text\n * - border.primary - Divider color\n */\nexport interface ModDataGridColumnsPanelProps extends GridColumnsPanelProps {\n /**\n * If true, shows the search input field\n * @default false\n */\n showSearch?: boolean\n}\n\nexport const ModDataGridColumnsPanel = ({\n showSearch = false,\n // Strip MUI-specific props to avoid dual-module Theme type conflict between\n // @mui/x-data-grid-pro (CJS) and @mui/x-data-grid (ESM) declarations\n sx: _sx,\n theme: _theme,\n ...props\n}: ModDataGridColumnsPanelProps) => {\n const apiRef = useGridApiContext()\n const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector)\n const columnVisibilityModel = useGridSelector(apiRef, gridColumnVisibilityModelSelector)\n const [searchText, setSearchText] = useState('')\n\n // Filter columns based on search\n const filteredColumns = useMemo(() => {\n if (!searchText) return columns\n const search = searchText.toLowerCase()\n return columns.filter(col => {\n const headerName = col.headerName || col.field\n return headerName.toLowerCase().includes(search)\n })\n }, [columns, searchText])\n\n // Calculate if all visible columns are shown\n const visibleColumns = columns.filter(col => col.hideable !== false)\n const allVisible = visibleColumns.every(col => columnVisibilityModel[col.field] !== false)\n const someVisible =\n visibleColumns.some(col => columnVisibilityModel[col.field] !== false) && !allVisible\n\n const handleColumnToggle = (field: string) => {\n const isCurrentlyVisible = columnVisibilityModel[field] !== false\n apiRef.current.setColumnVisibility(field, !isCurrentlyVisible)\n }\n\n const handleToggleAll = () => {\n const newModel = { ...columnVisibilityModel }\n visibleColumns.forEach(col => {\n newModel[col.field] = !allVisible\n })\n apiRef.current.setColumnVisibilityModel(newModel)\n }\n\n const handleReset = () => {\n apiRef.current.setColumnVisibilityModel({})\n }\n\n // Check if current state differs from initial/default state\n const hasChanges = Object.keys(columnVisibilityModel).length > 0\n\n return (\n <PanelWrapper {...props}>\n <PanelContent sx={{ width: 320 }}>\n {showSearch && (\n <StyledSearchField\n placeholder=\"Search\"\n variant=\"standard\"\n value={searchText}\n onChange={e => setSearchText(e.target.value)}\n slotProps={{\n input: {\n startAdornment: (\n <InputAdornment position=\"start\">\n <Search />\n </InputAdornment>\n ),\n disableUnderline: true,\n },\n }}\n />\n )}\n\n {filteredColumns.map(column => {\n if (column.hideable === false) return null\n\n const isVisible = columnVisibilityModel[column.field] !== false\n const headerName = column.headerName || column.field\n\n return (\n <ColumnItemContainer\n key={column.field}\n onClick={() => handleColumnToggle(column.field)}\n >\n <MenuItemContent>\n <ModCheckbox checked={isVisible} size=\"small\" disableRipple />\n <MenuItemLabel>{headerName}</MenuItemLabel>\n </MenuItemContent>\n </ColumnItemContainer>\n )\n })}\n\n <DividerContainer>\n <StyledDivider />\n </DividerContainer>\n\n <FooterRow>\n <ColumnItemContainer\n onClick={handleToggleAll}\n sx={{ flex: 1, paddingLeft: 0, paddingRight: 0 }}\n >\n <MenuItemContent>\n <ModCheckbox\n checked={allVisible}\n indeterminate={someVisible}\n size=\"small\"\n disableRipple\n />\n <MenuItemLabel fontWeight={600}>Show/Hide all</MenuItemLabel>\n </MenuItemContent>\n </ColumnItemContainer>\n\n <ResetButton onClick={handleReset} disabled={!hasChanges}>\n Reset\n </ResetButton>\n </FooterRow>\n </PanelContent>\n </PanelWrapper>\n )\n}\n\nModDataGridColumnsPanel.displayName = 'ModDataGridColumnsPanel'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport MenuItem, { type MenuItemProps, menuItemClasses } from '@mui/material/MenuItem'\nimport { styled } from '@mui/material/styles'\nimport type { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react'\n\nconst StyledMenuItem = styled(MenuItem)(({ theme }) => ({\n paddingTop: spacing.spacing_1,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_2,\n paddingRight: spacing.spacing_2,\n minHeight: spacing.spacing_5,\n gap: spacing.spacing_2,\n borderRadius: 0,\n color: semanticColors.icons.default,\n textDecoration: 'none',\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n fontWeight: typography.fontWeight.regular,\n lineHeight: '20px',\n transition: theme.transitions.create(['background-color'], {\n duration: theme.transitions.duration.shortest,\n }),\n\n '&:hover': {\n backgroundColor: semanticColors.surfaces.listHover,\n },\n\n [`&.${menuItemClasses.selected}`]: {\n backgroundColor: semanticColors.surfaces.listHover,\n '&:hover': {\n backgroundColor: semanticColors.surfaces.listHover,\n },\n },\n\n [`&.${menuItemClasses.disabled}`]: {\n opacity: 0.5,\n },\n\n [`&.${menuItemClasses.focusVisible}`]: {\n backgroundColor: semanticColors.surfaces.listHover,\n },\n}))\n\nconst MenuItemContent = styled('div')({\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n gap: 'inherit',\n})\n\nconst IconWrapper = styled('span')(({ theme }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.h4),\n color: semanticColors.icons.default,\n}))\n\nconst LabelContainer = styled('div')({\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_1,\n minWidth: 0,\n})\n\nconst Label = styled('span')({\n color: semanticColors.icons.default,\n flexShrink: 0,\n})\n\nconst SecondaryLabel = styled('span')({\n color: semanticColors.typography.bodySecondary,\n fontWeight: typography.fontWeight.regular,\n flexShrink: 0,\n})\n\nconst Shortcut = styled('span')(({ theme }) => ({\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n fontWeight: typography.fontWeight.medium,\n color: semanticColors.typography.bodySecondary,\n marginLeft: 'auto',\n flexShrink: 0,\n border: `1px solid ${semanticColors.border.secondary}`,\n borderRadius: borderRadius.xS,\n padding: `${spacing.spacing_1_4}px ${spacing.spacing_3_4}px`,\n backgroundColor: semanticColors.surfaces.white,\n}))\n\ntype ModMenuItemOwnProps = {\n /**\n * Optional icon to display on the left side\n * Note: Cannot be directly mapped from Figma (ReactNode)\n */\n icon?: ReactNode\n\n /**\n * Optional keyboard shortcut to display on the right side\n * @example \"⌘+P\" or \"Ctrl+K\"\n * Note: Cannot be directly mapped from Figma (ReactNode/string)\n */\n shortcut?: string\n\n /**\n * Optional secondary text to display next to the primary label\n * @example \"@username\" or supporting text\n * Note: Cannot be directly mapped from Figma (ReactNode/string)\n */\n secondaryText?: string\n\n /**\n * URL to navigate to. When provided, the menu item renders as an anchor\n * element (via MUI ButtonBase) so users can middle-click or right-click\n * to open in a new tab. For client-side routing, also pass\n * `component={NextLink}` (or your router's link component).\n */\n href?: string\n\n /**\n * Menu item content (text label)\n */\n children?: ReactNode\n}\n\nexport type ModMenuItemProps<C extends ElementType = typeof MenuItem> = ModMenuItemOwnProps &\n Omit<ComponentPropsWithoutRef<C>, keyof ModMenuItemOwnProps> & {\n component?: C\n }\n\n/**\n * ModMenuItem - Menu item component based on MUI MenuItem\n *\n * @example\n * ```tsx\n * // With icon and shortcut\n * <ModMenuItem icon={<UserIcon />} shortcut=\"⌘+P\">\n * View profile\n * </ModMenuItem>\n *\n * // With secondary text (user list pattern from Figma node 4305:41844)\n * <ModMenuItem secondaryText=\"@phoenix\">Phoenix Baker</ModMenuItem>\n * <ModMenuItem secondaryText=\"@olivia\">Olivia Rhye</ModMenuItem>\n *\n * // Disabled state\n * <ModMenuItem disabled>Disabled item</ModMenuItem>\n *\n * // As an anchor — middle-click/right-click open in a new tab\n * <ModMenuItem href=\"/api-explorer\">API explorer</ModMenuItem>\n *\n * // External link\n * <ModMenuItem href=\"https://docs.example.com\" target=\"_blank\" rel=\"noopener noreferrer\">\n * Documentation\n * </ModMenuItem>\n *\n * // Client-side routing (Next.js)\n * <ModMenuItem component={NextLink} href=\"/api-explorer\">API explorer</ModMenuItem>\n * ```\n */\nexport function ModMenuItem<C extends ElementType = typeof MenuItem>({\n icon,\n shortcut,\n secondaryText,\n children,\n ...rest\n}: ModMenuItemProps<C>) {\n return (\n <StyledMenuItem {...(rest as MenuItemProps)}>\n <MenuItemContent>\n {icon && <IconWrapper>{icon}</IconWrapper>}\n <LabelContainer>\n <Label>{children}</Label>\n {secondaryText && <SecondaryLabel>{secondaryText}</SecondaryLabel>}\n </LabelContainer>\n {shortcut && <Shortcut>{shortcut}</Shortcut>}\n </MenuItemContent>\n </StyledMenuItem>\n )\n}\n\nModMenuItem.displayName = 'ModMenuItem'\n","import {\n borderRadius,\n semanticColors,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/design-system-tokens'\nimport MuiSelect, { type SelectProps as MuiSelectProps, selectClasses } from '@mui/material/Select'\nimport { styled } from '@mui/material/styles'\nimport { ChevronDown, type LucideProps } from 'lucide-react'\nimport { ModMenuItem } from '../MenuItem/MenuItem'\n\n/**\n * Custom chevron icon for select\n * Must accept props from MUI Select to work correctly\n */\nconst ChevronDownIcon = (props: LucideProps) => (\n <ChevronDown\n {...props}\n size={spacing.spacing_2_1_2}\n color={semanticColors.typography.input.default}\n style={{ ...props.style }}\n />\n)\n\n/**\n * Styled Select component with design system styling\n */\nconst StyledSelect = styled(MuiSelect)({\n minHeight: spacing.spacing_5,\n backgroundColor: semanticColors.input.background,\n border: `1px solid ${semanticColors.border.primary}`,\n borderRadius: `${borderRadius.input}px`,\n\n '&:hover': {\n backgroundColor: semanticColors.input.hoverBackground,\n borderColor: semanticColors.border.primary,\n },\n\n '&.Mui-focused': {\n backgroundColor: semanticColors.input.background,\n borderColor: semanticColors.buttons.primary.default,\n },\n\n '&::before': {\n display: 'none',\n },\n '&::after': {\n display: 'none',\n },\n\n [`& .${selectClasses.select}`]: {\n paddingTop: spacing.spacing_1_2,\n paddingBottom: spacing.spacing_1_2,\n paddingLeft: spacing.spacing_1_1_2,\n paddingRight: spacing.spacing_5,\n fontSize: typography.fontSize.sm,\n fontWeight: typography.fontWeight.regular,\n color: semanticColors.typography.input.default,\n },\n\n [`& .${selectClasses.icon}`]: {\n right: spacing.spacing_1_1_2,\n },\n})\n\nexport type ModSelectProps = MuiSelectProps\n\n/**\n * ModSelect - Select component with design system styling\n *\n * A styled version of MUI's Select that uses design system tokens, Lucide ChevronDown icon,\n * and ModMenu/ModMenuItem for the dropdown list.\n *\n * @example\n * ```tsx\n * import { ModSelect, ModSelectOption } from '@moderneinc/design-system-components'\n *\n * <ModSelect value={value} onChange={handleChange}>\n * <ModSelectOption value=\"option1\">Option 1</ModSelectOption>\n * <ModSelectOption value=\"option2\">Option 2</ModSelectOption>\n * </ModSelect>\n * ```\n */\nexport const ModSelect = (props: ModSelectProps) => {\n const paperSlotProps = props.MenuProps?.slotProps?.paper\n const incomingPaperSx = typeof paperSlotProps === 'function' ? undefined : paperSlotProps?.sx\n\n return (\n <StyledSelect\n {...props}\n IconComponent={ChevronDownIcon}\n variant=\"standard\"\n MenuProps={{\n ...props.MenuProps,\n slotProps: {\n ...props.MenuProps?.slotProps,\n paper: {\n sx: {\n backgroundColor: semanticColors.surfaces.white,\n borderRadius: `${borderRadius.s}px`,\n border: `1px solid ${semanticColors.border.primary}`,\n boxShadow: `${shadows.dropdown.x}px ${shadows.dropdown.y}px ${shadows.dropdown.blur}px ${shadows.dropdown.spread}px ${shadows.dropdown.shadow}`,\n marginTop: 1,\n ...incomingPaperSx,\n },\n },\n },\n }}\n />\n )\n}\n\nModSelect.displayName = 'ModSelect'\n\nexport { ModMenuItem as ModSelectOption }\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport { buttonClasses } from '@mui/material/Button'\nimport { formLabelClasses } from '@mui/material/FormLabel'\nimport { iconButtonClasses } from '@mui/material/IconButton'\nimport { inputBaseClasses } from '@mui/material/InputBase'\nimport { inputLabelClasses } from '@mui/material/InputLabel'\nimport { selectClasses } from '@mui/material/Select'\nimport { styled } from '@mui/material/styles'\nimport { gridClasses, GridFilterPanel as MuiGridFilterPanel } from '@mui/x-data-grid'\nimport { Plus, Trash2, X } from 'lucide-react'\nimport type React from 'react'\nimport { panelSurfaceStyles } from '../DataGrid/DataGrid.styles'\nimport { ModSelect } from '../Select/Select'\n\n// Export MUI types for convenience\nexport type {\n GridFilterItem as FilterItem,\n GridFilterOperator as FilterOperator,\n} from '@mui/x-data-grid'\n\n/**\n * Icon components for DataGrid filter panel slots\n * These must be passed to the DataGrid's slots prop\n */\nexport const ModDataGridFilterPanelAddIcon = () => (\n <Plus size={spacing.spacing_2} color={semanticColors.buttons.tertiary.default} />\n)\nModDataGridFilterPanelAddIcon.displayName = 'ModDataGridFilterPanelAddIcon'\n\nexport const ModDataGridFilterPanelDeleteIcon = () => (\n <X size={spacing.spacing_2_1_2} color={semanticColors.icons.default} />\n)\nModDataGridFilterPanelDeleteIcon.displayName = 'ModDataGridFilterPanelDeleteIcon'\n\nexport const ModDataGridFilterPanelRemoveAllIcon = () => (\n <Trash2 size={spacing.spacing_2} color={semanticColors.buttons.tertiary.default} />\n)\nModDataGridFilterPanelRemoveAllIcon.displayName = 'ModDataGridFilterPanelRemoveAllIcon'\n\n/**\n * Base styled GridFilterPanel with design system styling\n */\nconst StyledGridFilterPanel = styled(MuiGridFilterPanel)({\n ...panelSurfaceStyles,\n\n // Panel padding (12px top, 16px right/bottom/left)\n paddingTop: spacing.spacing_2,\n paddingRight: spacing.spacing_2,\n paddingBottom: spacing.spacing_2,\n paddingLeft: spacing.spacing_1_1_2,\n\n // Container styling\n [`& .${gridClasses.filterForm}`]: {\n padding: '0',\n gap: 0, // Remove default gap, apply margins individually\n display: 'flex',\n alignItems: 'flex-end',\n },\n\n // Add 16px margin to specific inputs (column, operator, value) after delete button\n [`& .${gridClasses.filterFormLogicOperatorInput}`]: {\n marginRight: spacing.spacing_2,\n marginBottom: 0,\n minWidth: 100,\n },\n\n // Yes this is gross but MUI doesn't provide a better way to target these specific inputs\n [`& .MuiFormControl-root:has(.${gridClasses.filterFormOperatorInput})`]: {\n marginLeft: spacing.spacing_2,\n },\n [`& .${gridClasses.filterFormValueInput}`]: {\n marginLeft: spacing.spacing_2,\n },\n [`& .${gridClasses.filterFormDeleteIcon}`]: {\n marginRight: spacing.spacing_1,\n },\n\n // Panel content - reduce gap between filter rows from 20px to 16px\n [`& .${gridClasses.panelContent}`]: {\n gap: spacing.spacing_2, // 16px gap between filter rows\n paddingTop: 0,\n },\n\n // Remove line between fields and bottom buttons\n [`& .${gridClasses.panelFooter}`]: {\n borderTop: 'none',\n padding: 0,\n },\n\n // Input fields and selects - design system styling\n [`& .${gridClasses.filterForm} .${inputBaseClasses.root}`]: {\n position: 'relative',\n minHeight: spacing.spacing_5,\n backgroundColor: semanticColors.input.background,\n border: `1px solid ${semanticColors.border.primary}`,\n borderRadius: `${borderRadius.input}px`,\n fontSize: typography.fontSize.default,\n fontWeight: typography.fontWeight.regular,\n color: semanticColors.typography.input.default,\n },\n [`& .${gridClasses.filterForm} .${inputBaseClasses.root}:hover`]: {\n backgroundColor: semanticColors.input.hoverBackground,\n borderColor: semanticColors.border.primary,\n },\n [`& .${gridClasses.filterForm} .${inputBaseClasses.root}.${inputBaseClasses.focused}`]: {\n backgroundColor: semanticColors.input.background,\n borderColor: semanticColors.border.primary,\n },\n [`& .${gridClasses.filterForm} .${inputBaseClasses.root}::before`]: {\n display: 'none',\n },\n [`& .${gridClasses.filterForm} .${inputBaseClasses.root}::after`]: {\n display: 'none',\n },\n\n [`& .${inputBaseClasses.input}`]: {\n paddingTop: spacing.spacing_1,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_2,\n paddingRight: spacing.spacing_1_1_2,\n fontSize: typography.fontSize.default,\n fontWeight: typography.fontWeight.regular,\n color: semanticColors.typography.input.default,\n '&::placeholder': {\n color: semanticColors.typography.input.placeholder,\n opacity: 1,\n },\n },\n\n // Select dropdown styling\n [`& .${selectClasses.icon}`]: {\n right: spacing.spacing_1_1_2,\n },\n\n [`& .${gridClasses.filterForm} .${selectClasses.select}`]: {\n paddingRight: spacing.spacing_5,\n },\n\n // Labels - inherit margin from their parent containers (Column/Operator inputs already have marginLeft)\n [`& .${gridClasses.filterForm} .${formLabelClasses.root}`]: {\n fontSize: typography.fontSize.sm,\n fontWeight: typography.fontWeight.medium,\n color: semanticColors.typography.input.label,\n marginBottom: spacing.spacing_1_2,\n position: 'static',\n transform: 'none',\n },\n [`& .${gridClasses.filterForm} .${inputLabelClasses.root}`]: {\n fontSize: typography.fontSize.sm,\n fontWeight: typography.fontWeight.medium,\n color: semanticColors.typography.input.label,\n marginBottom: spacing.spacing_1_2,\n position: 'static',\n transform: 'none',\n },\n [`& .${gridClasses.filterForm} .${formLabelClasses.root}.${formLabelClasses.focused}`]: {\n color: semanticColors.typography.input.label,\n },\n [`& .${gridClasses.filterForm} .${inputLabelClasses.root}.${inputLabelClasses.focused}`]: {\n color: semanticColors.typography.input.label,\n },\n\n // Remove fieldset/legend\n '& fieldset': {\n display: 'none',\n },\n '& legend': {\n display: 'none',\n },\n\n // Buttons - design system styling (matching Figma 4594-163847)\n // Add filter button (first button)\n [`& .${gridClasses.panelFooter} .${buttonClasses.root}:first-child`]: {\n textTransform: 'none',\n fontSize: typography.fontSize.sm,\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1,\n borderRadius: borderRadius.full,\n paddingTop: spacing.spacing_1_1_4,\n paddingBottom: spacing.spacing_1_1_4,\n paddingLeft: spacing.spacing_1_1_2,\n paddingRight: spacing.spacing_1_1_2,\n minHeight: 'auto',\n height: 'auto',\n gap: spacing.spacing_1_2,\n backgroundColor: semanticColors.buttons.secondary.defaultBackground,\n color: semanticColors.typography.input.default,\n border: `1px solid ${semanticColors.buttons.secondary.defaultBorder}`,\n },\n [`& .${gridClasses.panelFooter} .${buttonClasses.root}:first-child:hover`]: {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n borderColor: semanticColors.buttons.secondary.defaultBorder,\n },\n\n // Clear all button (second button) - styled to match ModButton link variant\n [`& .${gridClasses.panelFooter} .${buttonClasses.root}:nth-child(2)`]: {\n height: 32, // ModButton small size\n padding: `0 ${spacing.spacing_1}px`, // ModButton link variant padding\n fontSize: typography.fontSize.sm,\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1.5,\n textTransform: 'none',\n minHeight: 'auto',\n backgroundColor: 'transparent',\n color: semanticColors.buttons.tertiary.default,\n border: 'none',\n [`& .${buttonClasses.startIcon}`]: {\n display: 'none', // Hide the trash icon\n },\n '&:hover': {\n backgroundColor: 'transparent',\n color: semanticColors.buttons.tertiary.hover,\n },\n },\n\n // Icon buttons (delete/trash icon)\n [`& .${gridClasses.filterForm} .${iconButtonClasses.root}`]: {\n width: spacing.spacing_5_1_2,\n height: spacing.spacing_5_1_2,\n color: semanticColors.icons.default,\n },\n [`& .${gridClasses.filterForm} .${iconButtonClasses.root}:hover`]: {\n backgroundColor: semanticColors.input.hoverBackground,\n },\n})\n\nStyledGridFilterPanel.displayName = 'StyledGridFilterPanel'\n\n/**\n * ModDataGridFilterPanel - MUI GridFilterPanel with design system styling and Lucide icons\n *\n * A styled version of MUI's GridFilterPanel that applies design system tokens.\n * The per-row delete icon uses Lucide Trash2 internally.\n *\n * For footer button icons (\"Add filter\" and \"Remove all\"), you must also pass the icon components\n * to the DataGrid's slots prop.\n *\n * @example\n * ```tsx\n * import {\n * ModDataGridFilterPanel,\n * FilterPanelAddIcon,\n * FilterPanelDeleteIcon,\n * FilterPanelRemoveAllIcon\n * } from '@moderneinc/design-system-components'\n *\n * <DataGridPro\n * rows={rows}\n * columns={columns}\n * slots={{\n * filterPanel: ModDataGridFilterPanel,\n * filterPanelAddIcon: FilterPanelAddIcon,\n * filterPanelDeleteIcon: FilterPanelDeleteIcon,\n * filterPanelRemoveAllIcon: FilterPanelRemoveAllIcon,\n * }}\n * />\n * ```\n */\n// Re-export ModSelect for DataGrid baseSelect slot\nexport { ModSelect as ModDataGridSelect }\n\nexport const ModDataGridFilterPanel = (props: React.ComponentProps<typeof MuiGridFilterPanel>) => {\n return <StyledGridFilterPanel {...props} />\n}\n\nModDataGridFilterPanel.displayName = 'ModDataGridFilterPanel'\n","import { semanticColors } from '@moderneinc/design-system-tokens'\nimport { ArrowDown, ArrowUp, ChevronsUpDown } from 'lucide-react'\n\n/**\n * Sort icon components for MUI DataGrid slots\n *\n * Use these with DataGrid's slots API to replace default sort indicators.\n */\nexport function SortedDescendingIcon() {\n return <ArrowDown size={16} color={semanticColors.icons.utility} />\n}\n\nexport function SortedAscendingIcon() {\n return <ArrowUp size={16} color={semanticColors.icons.utility} />\n}\n\nexport function UnsortedIcon() {\n return <ChevronsUpDown size={16} color={semanticColors.icons.utility} />\n}\n","import { semanticColors, spacing } from '@moderneinc/design-system-tokens'\nimport { checkboxClasses } from '@mui/material/Checkbox'\nimport { type SxProps, styled, type Theme } from '@mui/material/styles'\nimport { GridPanel, gridClasses, gridPanelClasses } from '@mui/x-data-grid'\nimport {\n DataGridPro,\n type DataGridProProps,\n type GridDensity,\n type GridSlots,\n useGridApiRef,\n} from '@mui/x-data-grid-pro'\nimport type { ReactNode } from 'react'\nimport { ModCheckbox } from '../Checkbox/Checkbox'\nimport { ModDataGridColumnsPanel } from '../DataGridColumnsPanel/DataGridColumnsPanel'\nimport {\n ModDataGridFilterPanel,\n ModDataGridFilterPanelAddIcon,\n ModDataGridFilterPanelDeleteIcon,\n ModDataGridFilterPanelRemoveAllIcon,\n} from '../DataGridFilterPanel/DataGridFilterPanel'\nimport {\n SortedAscendingIcon,\n SortedDescendingIcon,\n UnsortedIcon,\n} from '../DataGridHeaderCell/DataGridHeaderCell'\nimport { getDataGridHeaderStyles, getDataGridRowStyles } from './DataGrid.styles'\n\n/**\n * The filter and columns panels render inside MUI's Paper, which defaults to\n * theme.palette.background.paper (#fff) and so stays light under\n * [data-theme=\"dark\"]. Both panel roots are transparent, so theming the Paper\n * here covers both. Mirrors how ModMenu themes its own paper.\n */\nconst ModGridPanel = styled(GridPanel)({\n [`& .${gridPanelClasses.paper}`]: {\n backgroundColor: semanticColors.surfaces.white,\n },\n})\n\n/**\n * Adapter to use ModCheckbox in DataGrid's baseCheckbox slot\n *\n * Maps DataGrid's `slotProps.htmlInput` to MUI Checkbox's `slotProps.input`\n * and sets size=\"small\" for DataGrid checkboxes.\n */\nconst DataGridCheckbox = ({\n slotProps,\n ...props\n}: {\n checked?: boolean\n indeterminate?: boolean\n onChange?: React.ChangeEventHandler\n disabled?: boolean\n slotProps?: { htmlInput?: React.InputHTMLAttributes<HTMLInputElement> }\n}) => (\n <ModCheckbox\n size=\"small\"\n {...props}\n slotProps={slotProps?.htmlInput ? { input: slotProps.htmlInput } : undefined}\n />\n)\n\nexport type DataGridSize = GridDensity\n\nexport interface ModDataGridProps extends Omit<DataGridProProps, 'slots'> {\n /**\n * Custom toolbar component to render above the grid\n * When provided, automatically enables the toolbar slot\n */\n toolbar?: ReactNode\n\n /**\n * Custom slots (merged with design system defaults)\n */\n slots?: Partial<GridSlots>\n}\n\n/**\n * ModDataGrid - Responsive base DataGrid component with design system styling\n *\n * This is the base component for all design system DataGrid variants. It provides:\n * - Responsive viewport-based height calculation\n * - Dynamic row heights (getRowHeight='auto') for text wrapping\n * - design system styling (colors, typography, spacing)\n * - Custom sort icons and filter panels\n *\n * For specific use cases, see:\n * - ModInfiniteScrollGrid: Infinite scroll with load-more button\n * - ModPaginatedGrid: Standard pagination with page numbers\n *\n * Features:\n * - Auto-calculated height from viewport (calc(100vh - (offset + autoHeightOffset)))\n * - Three size variants: compact, standard, comfortable (affects header height)\n * - Always uses dynamic row heights (matching moderne-ui ResponsiveDataGrid)\n * - Resize event handling\n * - Footer offset support\n *\n * Design tokens used:\n * - Colors: semanticColors.border.primary, semanticColors.surfaces.dataGrid.*, semanticColors.surfaces.white (panel Paper)\n * - Typography: typography.fontFamily.body, typography.fontSize.sm\n * - Spacing: spacing.spacing_*\n *\n * @example\n * // Basic usage with responsive height\n * <ModDataGrid\n * rows={rows}\n * columns={columns}\n * />\n *\n * @example\n * // With footer offset\n * <ModDataGrid\n * rows={rows}\n * columns={columns}\n * footerOffsetSelector=\"#page-footer\"\n * />\n */\nexport function ModDataGrid({\n autoHeight = false,\n toolbar,\n slots,\n sx,\n density = 'standard',\n slotProps: userSlotProps,\n ...props\n}: ModDataGridProps) {\n const defaultApiRef = useGridApiRef()\n const apiRef = props?.apiRef ? props.apiRef : defaultApiRef\n\n // Merge custom slots with design system defaults\n // If toolbar prop is provided, automatically add it to slots\n const mergedSlots: Partial<GridSlots> = {\n baseCheckbox: DataGridCheckbox,\n columnSortedDescendingIcon: SortedDescendingIcon,\n columnSortedAscendingIcon: SortedAscendingIcon,\n columnUnsortedIcon: UnsortedIcon,\n columnsPanel: ModDataGridColumnsPanel,\n panel: ModGridPanel,\n filterPanel: ModDataGridFilterPanel,\n filterPanelAddIcon: ModDataGridFilterPanelAddIcon,\n filterPanelDeleteIcon: ModDataGridFilterPanelDeleteIcon,\n filterPanelRemoveAllIcon: ModDataGridFilterPanelRemoveAllIcon,\n ...slots,\n // Add toolbar slot if toolbar prop is provided (overrides slots.toolbar if both exist)\n ...(toolbar ? { toolbar: () => toolbar } : {}),\n }\n\n // Base sx styles (cell and header styles come from utility functions)\n const baseSx: SxProps<Theme> = {\n // Fix for MUI X 8.15.0+ scroll shadow issue - backgroundColor must be on main, not root\n // See: https://github.com/mui/mui-x/issues/20107\n // This must be set to prevent scroll shadow artifacts\n [`& .${gridClasses.main}`]: {\n backgroundColor: semanticColors.surfaces.dataGrid.background,\n },\n // White background for empty/loading overlays\n [`& .${gridClasses.overlay}`]: {\n backgroundColor: semanticColors.surfaces.dataGrid.background,\n },\n // The root keeps MUI's background.paper (#fff), which the note above\n // requires us to leave alone. Everything outside `main` therefore showed\n // white under [data-theme=\"dark\"] — the footer, and the filler strips\n // beyond the last column and next to the scrollbar.\n [`& .${gridClasses.footerContainer}`]: {\n backgroundColor: semanticColors.surfaces.dataGrid.background,\n },\n // `&&` doubles specificity: MUI paints the filler strips itself, so a\n // single-class rule loses to its own.\n [`&& .${gridClasses.filler}, && .${gridClasses.scrollbarFiller}`]: {\n backgroundColor: semanticColors.surfaces.dataGrid.background,\n },\n\n ...getDataGridHeaderStyles(),\n ...getDataGridRowStyles(),\n border: `1px solid ${semanticColors.border.secondary}`,\n\n // Target `& svg` (not `.MuiSvgIcon-root`) to match the lucide icons\n // ModCheckbox renders, mirroring the header rule below.\n // flexShrink: 0 stops the icon collapsing to 0 width when the checkbox\n // column is narrower than the 32px box (16px icon + 16px padding) —\n // without it the checkbox becomes invisible but stays clickable.\n [`& .${gridClasses.cellCheckbox}`]: {\n [`& .${checkboxClasses.root}`]: {\n padding: `${spacing.spacing_1}px`,\n '& svg': {\n width: 16,\n height: 16,\n flexShrink: 0,\n },\n },\n },\n\n // Ensure cells are vertically centered\n [`& .${gridClasses.cell}`]: {\n minHeight: density === 'compact' ? 36 : density === 'comfortable' ? 52 : 44,\n paddingLeft: `${spacing.spacing_3}px`,\n paddingRight: `${spacing.spacing_3}px`,\n display: 'flex',\n alignItems: 'center',\n lineHeight: 'inherit',\n overflow: 'unset',\n textOverflow: 'unset',\n wordBreak: 'break-word',\n hyphens: 'auto',\n },\n ...sx,\n } as SxProps<Theme>\n\n return (\n <DataGridPro\n apiRef={apiRef}\n columnHeaderHeight={density === 'compact' ? 38 : density === 'comfortable' ? 52 : 44}\n autoHeight={autoHeight}\n autoPageSize={!autoHeight}\n getRowHeight={() => 'auto'}\n showToolbar={!!toolbar}\n slots={mergedSlots}\n slotProps={{\n basePopper: {\n placement: 'bottom-start',\n },\n ...userSlotProps,\n }}\n localeText={{\n filterPanelRemoveAll: 'Clear all',\n ...props.localeText,\n }}\n sx={baseSx as DataGridProProps['sx']}\n {...props}\n />\n )\n}\n\nModDataGrid.displayName = 'ModDataGrid'\n","import { semanticColors } from '@moderneinc/design-system-tokens'\nimport { ColumnsPanelTrigger, ToolbarButton } from '@mui/x-data-grid'\nimport { Columns3 } from 'lucide-react'\nimport { ModButton } from '../Button/Button'\n\n/**\n * ModDataGridColumnsButton - Button to open the columns panel in DataGrid\n *\n * Integrates with MUI DataGrid Pro's ColumnsPanelTrigger to show/hide columns.\n * Uses ModButton with Lucide Columns3 icon.\n *\n * @example\n * ```tsx\n * <ModDataGridColumnsButton />\n * ```\n */\nexport function ModDataGridColumnsButton() {\n return (\n <ColumnsPanelTrigger\n render={\n <ToolbarButton\n render={\n <ModButton variant=\"secondary\" size=\"small\">\n <Columns3 size={16} color={semanticColors.buttons.primary.default} />\n Columns\n </ModButton>\n }\n />\n }\n />\n )\n}\n\nModDataGridColumnsButton.displayName = 'ModDataGridColumnsButton'\n","import {\n borderRadius,\n semanticColors,\n semanticTypography,\n spacing,\n} from '@moderneinc/design-system-tokens'\nimport Chip, { type ChipProps, chipClasses } from '@mui/material/Chip'\nimport { styled } from '@mui/material/styles'\nimport type { ComponentPropsWithoutRef, ElementType } from 'react'\nimport { isMuiInternalProp } from '../utils/muiProps'\n\ndeclare module '@mui/material/Chip' {\n interface ChipPropsColorOverrides {\n violet: true\n beta: true\n }\n interface ChipPropsSizeOverrides {\n large: true\n }\n interface ChipPropsVariantOverrides {\n outlined: true\n filled: true\n }\n}\n\ntype TagShape = 'square' | 'rounded'\n\nconst sizeStyles = {\n small: {\n height: 16,\n minWidth: 16,\n paddingLeft: spacing.spacing_1_2, // 4px\n paddingRight: spacing.spacing_1_2, // 4px\n },\n medium: {\n height: 18,\n minWidth: 18,\n paddingLeft: spacing.spacing_3_4, // 6px\n paddingRight: spacing.spacing_3_4, // 6px\n },\n large: {\n height: 20,\n minWidth: 20,\n paddingLeft: spacing.spacing_1, // 8px\n paddingRight: spacing.spacing_1, // 8px\n },\n} as const\n\nconst outlinedColorStyles = {\n default: {\n backgroundColor: semanticColors.status.neutral.light,\n color: semanticColors.status.neutral.dark,\n borderColor: semanticColors.status.neutral.transparent,\n },\n error: {\n backgroundColor: semanticColors.status.error.light,\n color: semanticColors.status.error.dark,\n borderColor: semanticColors.status.error.transparent,\n },\n warning: {\n backgroundColor: semanticColors.status.warning.light,\n color: semanticColors.status.warning.dark,\n borderColor: semanticColors.status.warning.transparent,\n },\n success: {\n backgroundColor: semanticColors.status.success.light,\n color: semanticColors.status.success.dark,\n borderColor: semanticColors.status.success.transparent,\n },\n info: {\n backgroundColor: semanticColors.status.info.light,\n color: semanticColors.status.info.dark,\n borderColor: semanticColors.status.info.transparent,\n },\n violet: {\n backgroundColor: semanticColors.status.active.light,\n color: semanticColors.status.active.dark,\n borderColor: semanticColors.status.active.transparent,\n },\n beta: {\n backgroundColor: 'transparent',\n color: semanticColors.typography.bodySecondary,\n borderColor: 'transparent',\n },\n} as const\n\nconst filledColorStyles: Record<string, { backgroundColor: string; color?: string }> = {\n default: {\n backgroundColor: semanticColors.status.neutral.dark,\n color: semanticColors.status.neutral.light,\n },\n error: {\n backgroundColor: semanticColors.status.error.dark,\n color: semanticColors.status.error.light,\n },\n warning: {\n backgroundColor: semanticColors.status.warning.dark,\n color: semanticColors.status.warning.light,\n },\n success: {\n backgroundColor: semanticColors.status.success.dark,\n color: semanticColors.status.success.light,\n },\n info: {\n backgroundColor: semanticColors.status.info.dark,\n color: semanticColors.status.info.light,\n },\n violet: {\n backgroundColor: semanticColors.status.active.dark,\n color: semanticColors.status.active.light,\n },\n beta: {\n backgroundColor: 'transparent',\n color: semanticColors.typography.bodySecondary,\n },\n}\n\nconst StyledChip = styled(Chip, {\n shouldForwardProp: prop => prop !== 'tagShape' && !isMuiInternalProp(prop),\n})<{ tagShape: TagShape }>(({ theme, size, variant, color, tagShape }) => ({\n padding: 0,\n boxSizing: 'border-box',\n borderRadius: tagShape === 'rounded' ? borderRadius.full : borderRadius.xS,\n fontSize: theme.typography.pxToRem(semanticTypography.chip.fontSize),\n lineHeight: semanticTypography.chip.lineHeight,\n fontWeight: semanticTypography.chip.fontWeight,\n\n overflow: 'visible',\n\n ...(size && sizeStyles[size as keyof typeof sizeStyles]),\n\n [`& .${chipClasses.label}`]: {\n padding: 0,\n overflow: 'visible',\n },\n\n ...(variant === 'outlined' &&\n color &&\n outlinedColorStyles[color as keyof typeof outlinedColorStyles]),\n\n ...(variant === 'filled' &&\n color &&\n color in filledColorStyles && {\n backgroundColor: filledColorStyles[color].backgroundColor,\n color: filledColorStyles[color].color ?? theme.palette.common.white,\n border: 'none',\n }),\n}))\n\nexport type ModTagOwnProps = {\n /**\n * The size of the tag\n * @default \"small\"\n */\n size?: 'small' | 'medium' | 'large'\n\n /**\n * The variant style of the tag\n * @default \"outlined\"\n */\n variant?: 'outlined' | 'filled'\n\n /**\n * The intent/purpose of the tag\n * @default \"default\"\n */\n intent?: 'default' | 'error' | 'warning' | 'success' | 'info' | 'violet' | 'beta'\n\n /**\n * Corner treatment. `square` = borderRadius.xS, `rounded` = borderRadius.full.\n * Deliberately defaults to `square` even though Figma's Shape default differs —\n * this keeps existing consumers rendering unchanged. Don't \"fix\" it.\n * @default \"square\"\n */\n shape?: TagShape\n}\n\nexport type ModTagProps<C extends ElementType = typeof Chip> = ModTagOwnProps &\n Omit<ChipProps, keyof ModTagOwnProps | 'component' | 'color'> &\n Omit<ComponentPropsWithoutRef<C>, keyof ModTagOwnProps | keyof ChipProps> & {\n component?: C\n }\n\n/**\n * ModTag - Small label component based on MUI Chip\n */\nexport function ModTag<C extends ElementType = typeof Chip>({\n size = 'small',\n variant = 'outlined',\n intent = 'default',\n shape = 'square',\n ...props\n}: ModTagProps<C>) {\n return (\n <StyledChip\n {...(props as ChipProps)}\n size={size}\n variant={variant}\n color={intent}\n tagShape={shape}\n />\n )\n}\n\nModTag.displayName = 'ModTag'\n","import { semanticColors } from '@moderneinc/design-system-tokens'\nimport {\n FilterPanelTrigger,\n gridFilterModelSelector,\n ToolbarButton,\n useGridApiContext,\n useGridSelector,\n} from '@mui/x-data-grid'\nimport { ListFilter } from 'lucide-react'\nimport { ModButton } from '../Button/Button'\nimport { ModTag } from '../Tag/Tag'\n\n/**\n * ModDataGridFiltersButton - Button to open the filters panel in DataGrid\n *\n * Integrates with MUI DataGrid Pro's FilterPanelTrigger to manage column filters.\n * Uses ModButton with Lucide ListFilter icon and shows active filter count.\n * The count badge updates reactively when filters change.\n *\n * @example\n * ```tsx\n * <ModDataGridFiltersButton />\n * ```\n */\nexport function ModDataGridFiltersButton() {\n const apiRef = useGridApiContext()\n const filterModel = useGridSelector(apiRef, gridFilterModelSelector)\n const activeFilters = filterModel.items.filter(item => item.value != null && item.value !== '')\n const filterCount = activeFilters.length\n\n return (\n <FilterPanelTrigger\n render={\n <ToolbarButton\n render={\n <ModButton variant=\"secondary\" size=\"small\">\n <ListFilter size={16} color={semanticColors.buttons.primary.default} />\n Filters\n {filterCount > 0 && (\n <ModTag size=\"medium\" variant=\"filled\" intent=\"info\" label={String(filterCount)} />\n )}\n </ModButton>\n }\n />\n }\n />\n )\n}\n\nModDataGridFiltersButton.displayName = 'ModDataGridFiltersButton'\n","import { semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport Tooltip from '@mui/material/Tooltip'\nimport { HelpCircle } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\n/**\n * ModDataGridHeaderLabel - Header label for DataGrid columns with help icon support\n *\n * Design tokens used:\n * - Font: typography.fontWeight.semiBold (600)\n * - Font size: 14px (from Figma Table/header)\n * - Colors:\n * - Default: semanticColors.typography.bodySecondary (#6b7280)\n * - Hover: semanticColors.icons.default (#1f2937)\n * - Icons: semanticColors.icons.utility (#9ca3af)\n *\n * @example\n * // Basic usage (for custom header content)\n * <ModDataGridHeaderLabel>Company</ModDataGridHeaderLabel>\n *\n * @example\n * // With help icon and tooltip\n * <ModDataGridHeaderLabel helpTooltip=\"The current status of the company\">\n * Status\n * </ModDataGridHeaderLabel>\n */\n\nconst LabelContainer = styled('div')({\n display: 'flex',\n alignItems: 'center',\n gap: `${spacing.spacing_1_2}px`,\n})\n\nconst LabelText = styled('p')({\n fontFamily: `${typography.fontFamily.body}, sans-serif`,\n fontSize: typography.fontSize.sm,\n fontWeight: typography.fontWeight.semiBold, // Always semiBold (600)\n lineHeight: 'normal',\n color: semanticColors.typography.bodySecondary, // #6b7280 by default\n whiteSpace: 'nowrap',\n margin: 0,\n padding: 0,\n transition: 'color 0.2s',\n\n // Hover state - changes to primary text color\n '&:hover': {\n color: semanticColors.icons.default, // #1f2937 on hover\n },\n})\n\nconst IconWrapper = styled('div')({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 16,\n height: 16,\n flexShrink: 0,\n\n '& svg': {\n width: 16,\n height: 16,\n color: semanticColors.icons.utility,\n },\n})\n\nexport interface ModDataGridHeaderLabelProps {\n /**\n * The label text to display\n */\n children?: ReactNode\n\n /**\n * Tooltip text to show when hovering the help icon.\n * If provided, the help icon will be shown automatically.\n */\n helpTooltip?: string\n\n /**\n * Additional CSS class name\n */\n className?: string\n}\n\nexport function ModDataGridHeaderLabel({\n children,\n helpTooltip,\n className,\n}: ModDataGridHeaderLabelProps) {\n return (\n <LabelContainer className={className} data-mod-header-label>\n {children && <LabelText>{children}</LabelText>}\n {helpTooltip && (\n <Tooltip title={helpTooltip} placement=\"top\">\n <IconWrapper>\n <HelpCircle />\n </IconWrapper>\n </Tooltip>\n )}\n </LabelContainer>\n )\n}\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * **You don't need date-fns\\***:\n *\n * Temporal has a built-in `add` method on all its classes:\n *\n * - [`Temporal.Instant.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/Instant/add)\n * - [`Temporal.PlainDate.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainDate/add)\n * - [`Temporal.PlainDateTime.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainDateTime/add)\n * - [`Temporal.PlainTime.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainTime/add)\n * - [`Temporal.PlainYearMonth.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/PlainYearMonth/add)\n * - [`Temporal.ZonedDateTime.prototype.add()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/ZonedDateTime/add)\n *\n * \\* **Not really**, see: https://date-fns.org/you-dont-need-date-fns\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n *\n * @example\n * // Using Temporal:\n * // Add 10 days to 1 September 2014:\n * Temporal.PlainDate.from(\"2014-09-01\").add({ days: 10 }).toString();\n * //=> \"2014-09-11\"\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n _date.setDate(1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\n */\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import { borderRadius, semanticColors, spacing } from '@moderneinc/design-system-tokens'\nimport type { ButtonBaseProps } from '@mui/material/ButtonBase'\nimport IconButton, { iconButtonClasses } from '@mui/material/IconButton'\nimport { styled } from '@mui/material/styles'\nimport type React from 'react'\nimport type { ReactNode } from 'react'\nimport { ModButton } from '../Button/Button'\n\ntype IconButtonSize = 'small' | 'medium'\ntype IconButtonVariant = 'primary' | 'secondary' | 'destructive' | 'tertiary' | 'nav'\n\n// Cast ModButton to a simpler type for styled() compatibility (avoids generic inference issues)\nconst ModButtonBase = ModButton as React.FC<{\n variant?: 'primary' | 'secondary' | 'destructive' | 'tertiary'\n size?: 'small' | 'medium'\n loading?: boolean\n disabled?: boolean\n children?: ReactNode\n className?: string\n}>\n\n// Icon-only wrapper around ModButton for hierarchy variants\nconst StyledIconOnlyButton = styled(ModButtonBase)(({ size = 'medium' }) => {\n const dimension = size === 'small' ? 32 : spacing.spacing_5\n return {\n '&&': {\n minWidth: 'unset',\n padding: 0,\n width: dimension,\n },\n }\n})\n\n// Nav variant - standalone styled MUI IconButton (not backed by Figma)\nconst navOnlyProps = ['size', 'variant', 'active']\n\nconst StyledNavButton = styled(IconButton, {\n shouldForwardProp: prop => !navOnlyProps.includes(prop as string),\n})<{\n size?: IconButtonSize\n active?: boolean\n}>(({ theme, size = 'medium', active = false }) => {\n const sizeConfig = {\n small: {\n width: 32,\n height: 32,\n padding: spacing.spacing_1_2,\n },\n medium: {\n width: spacing.spacing_5_1_2,\n height: spacing.spacing_5_1_2,\n padding: spacing.spacing_1_1_4,\n },\n }\n\n const sizeStyles = sizeConfig[size]\n\n const activeNavStyles = {\n backgroundColor: semanticColors.icons.pressedBackground,\n borderColor: 'transparent',\n color: semanticColors.buttons.primary.pressed,\n }\n\n return {\n width: sizeStyles.width,\n height: sizeStyles.height,\n padding: sizeStyles.padding,\n borderRadius: borderRadius.button,\n transition: theme.transitions.create(['background-color', 'border-color', 'color'], {\n duration: theme.transitions.duration.short,\n }),\n\n '&:focus-visible': {\n outline: `2px solid ${semanticColors.border.focus}`,\n outlineOffset: 2,\n },\n\n // Nav styles\n backgroundColor: semanticColors.surfaces.white,\n color: semanticColors.icons.default,\n border: `1px solid ${semanticColors.border.secondary}`,\n\n '&:hover': {\n backgroundColor: semanticColors.input.hoverBackground,\n borderColor: semanticColors.border.primary,\n color: semanticColors.icons.default,\n },\n\n '&:active': activeNavStyles,\n\n [`&.${iconButtonClasses.disabled}`]: {\n cursor: 'not-allowed',\n pointerEvents: 'auto',\n backgroundColor: semanticColors.surfaces.white,\n borderColor: semanticColors.border.secondary,\n color: semanticColors.icons.disabled,\n opacity: 0.5,\n },\n\n ...(active ? activeNavStyles : {}),\n }\n})\n\nexport interface ModIconButtonProps extends Omit<ButtonBaseProps, 'children' | 'size'> {\n /**\n * The size of the icon button\n * @default \"medium\"\n */\n size?: IconButtonSize\n\n /**\n * The visual variant of the icon button.\n * - `primary`, `secondary`, `destructive`, `tertiary`: Uses ModButton's hierarchy styling\n * - `nav`: White background with border, used in global navigation\n * @default \"tertiary\"\n */\n variant?: IconButtonVariant\n\n /**\n * Whether the button is in an active/selected state (e.g., popover is open).\n * Only applies to the `nav` variant.\n * @default false\n */\n active?: boolean\n\n /**\n * Show loading spinner instead of icon.\n * Only applies to hierarchy variants (not `nav`).\n * @default false\n */\n loading?: boolean\n\n children?: ReactNode\n}\n\n/**\n * ModIconButton - Icon-only button component\n *\n * For hierarchy variants (primary/secondary/destructive/tertiary), wraps ModButton with\n * icon-only sizing. For the `nav` variant, uses a standalone MUI IconButton with custom styling.\n */\nexport const ModIconButton = ({\n size = 'medium',\n variant = 'tertiary',\n active = false,\n loading,\n children,\n ...props\n}: ModIconButtonProps) => {\n if (variant === 'nav') {\n const { color, ...navProps } = props as Omit<\n ModIconButtonProps,\n 'size' | 'variant' | 'active' | 'loading' | 'children'\n >\n return (\n <StyledNavButton size={size} active={active} disableRipple {...navProps}>\n {children}\n </StyledNavButton>\n )\n }\n\n return (\n <StyledIconOnlyButton\n variant={variant}\n size={size}\n loading={loading}\n {...(props as Omit<\n ModIconButtonProps,\n 'size' | 'variant' | 'active' | 'loading' | 'children'\n >)}\n >\n {children}\n </StyledIconOnlyButton>\n )\n}\n\nModIconButton.displayName = 'ModIconButton'\n","import {\n borderRadius,\n semanticColors,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/design-system-tokens'\nimport { chipClasses } from '@mui/material/Chip'\nimport { styled } from '@mui/material/styles'\nimport { dayCalendarClasses } from '@mui/x-date-pickers/DateCalendar'\nimport { DatePicker, type DatePickerProps } from '@mui/x-date-pickers/DatePicker'\nimport { pickerPopperClasses } from '@mui/x-date-pickers/internals'\nimport { pickerDayClasses } from '@mui/x-date-pickers/PickerDay'\nimport { pickersCalendarHeaderClasses } from '@mui/x-date-pickers/PickersCalendarHeader'\nimport { PickersShortcuts, type PickersShortcutsItem } from '@mui/x-date-pickers/PickersShortcuts'\nimport { DateRangePicker, type DateRangePickerProps } from '@mui/x-date-pickers-pro/DateRangePicker'\nimport { dateRangePickerDayClasses } from '@mui/x-date-pickers-pro/DateRangePickerDay'\nimport type { DateRange } from '@mui/x-date-pickers-pro/models'\nimport {\n endOfDay,\n endOfMonth,\n startOfDay,\n startOfMonth,\n startOfYear,\n subDays,\n subMonths,\n} from 'date-fns'\nimport { CalendarDays, X } from 'lucide-react'\nimport { ModIconButton } from '../IconButton/IconButton'\n\n// Default shortcuts for date range picker\nconst defaultRangeShortcuts: PickersShortcutsItem<DateRange<Date>>[] = [\n {\n label: 'Today',\n getValue: () => {\n const today = new Date()\n return [startOfDay(today), endOfDay(today)]\n },\n },\n {\n label: 'Last 7 days',\n getValue: () => {\n const today = new Date()\n return [startOfDay(subDays(today, 6)), endOfDay(today)]\n },\n },\n {\n label: 'Last 30 days',\n getValue: () => {\n const today = new Date()\n return [startOfDay(subDays(today, 29)), endOfDay(today)]\n },\n },\n {\n label: 'Last 60 days',\n getValue: () => {\n const today = new Date()\n return [startOfDay(subDays(today, 59)), endOfDay(today)]\n },\n },\n {\n label: 'Month to date',\n getValue: () => {\n const today = new Date()\n return [startOfMonth(today), endOfDay(today)]\n },\n },\n {\n label: 'Last month',\n getValue: () => {\n const today = new Date()\n const lastMonth = subMonths(today, 1)\n return [startOfMonth(lastMonth), endOfMonth(lastMonth)]\n },\n },\n {\n label: 'Year to date',\n getValue: () => {\n const today = new Date()\n return [startOfYear(today), endOfDay(today)]\n },\n },\n]\n\n// Styled DatePicker with design system tokens\nconst StyledDatePicker = styled(DatePicker)(({ theme }) => ({\n [`& .${pickerPopperClasses.paper}`]: {\n backgroundColor: semanticColors.surfaces.card,\n boxShadow: `${shadows.dropdown.x}px ${shadows.dropdown.y}px ${shadows.dropdown.blur}px ${shadows.dropdown.spread}px ${shadows.dropdown.shadow}`,\n borderRadius: `${borderRadius.s}px`,\n },\n [`& .${dayCalendarClasses.weekDayLabel}`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.medium,\n color: semanticColors.typography.bodySecondary,\n },\n [`& .${pickerDayClasses.root}`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n color: semanticColors.typography.bodySecondary,\n borderRadius: borderRadius.l,\n '&:hover': {\n backgroundColor: semanticColors.icons.hoverBackground,\n },\n '&.Mui-selected': {\n backgroundColor: semanticColors.icons.active,\n color: semanticColors.surfaces.white,\n '&:hover': {\n backgroundColor: semanticColors.icons.active,\n },\n },\n [`&.${pickerDayClasses.today}`]: {\n border: `2px solid ${semanticColors.border.strong}`,\n backgroundColor: 'transparent',\n },\n },\n [`& .${pickersCalendarHeaderClasses.label}`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.semiBold,\n color: semanticColors.typography.body,\n },\n})) as typeof DatePicker\n\n// Styled DateRangePicker with design system tokens\nconst StyledDateRangePicker = styled(DateRangePicker)(({ theme }) => ({\n [`& .${pickerPopperClasses.paper}`]: {\n backgroundColor: semanticColors.surfaces.card,\n boxShadow: `${shadows.dropdown.x}px ${shadows.dropdown.y}px ${shadows.dropdown.blur}px ${shadows.dropdown.spread}px ${shadows.dropdown.shadow}`,\n borderRadius: `${borderRadius.s}px`,\n },\n [`& .${dayCalendarClasses.weekDayLabel}`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.medium,\n color: semanticColors.typography.bodySecondary,\n },\n [`& .${dateRangePickerDayClasses.root}`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n color: semanticColors.typography.bodySecondary,\n borderRadius: borderRadius.l,\n '&:hover': {\n backgroundColor: semanticColors.icons.hoverBackground,\n },\n '&.Mui-selected': {\n backgroundColor: semanticColors.icons.active,\n color: semanticColors.surfaces.white,\n },\n },\n [`& .${dateRangePickerDayClasses.insideSelection}`]: {\n backgroundColor: semanticColors.icons.hoverBackground,\n color: semanticColors.typography.input.default,\n },\n [`& .${dateRangePickerDayClasses.selectionStart}, & .${dateRangePickerDayClasses.selectionEnd}`]:\n {\n backgroundColor: semanticColors.icons.active,\n },\n [`& .${pickersCalendarHeaderClasses.label}`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.semiBold,\n color: semanticColors.typography.body,\n },\n})) as typeof DateRangePicker\n\ntype DatePickerType = 'single' | 'range'\n\n/**\n * Props for the ModDatePicker component\n */\nexport interface ModDatePickerProps {\n /**\n * Type of date picker to render\n * @default \"single\"\n */\n type?: DatePickerType\n\n /**\n * Whether the picker is open\n * When not provided, the picker manages its own open state (uncontrolled mode)\n */\n open?: boolean\n\n /**\n * Label for the input field\n */\n label?: string\n\n /**\n * Current selected date value (for single date picker)\n */\n value?: Date | null\n\n /**\n * Current selected date range value (for range picker)\n */\n rangeValue?: DateRange<Date>\n\n /**\n * Callback fired when date changes (single picker)\n */\n onChange?: (date: Date | null) => void\n\n /**\n * Callback fired when date range changes (range picker)\n */\n onRangeChange?: (range: DateRange<Date>) => void\n\n /**\n * Callback fired when picker opens\n */\n onOpen?: () => void\n\n /**\n * Callback fired when picker closes\n */\n onClose?: () => void\n\n /**\n * Placeholder text for the input\n */\n placeholder?: string\n\n /**\n * Whether to show shortcuts\n * @default true for range, false for single\n */\n showShortcuts?: boolean\n\n /**\n * Custom shortcuts items for range picker\n */\n shortcuts?: PickersShortcutsItem<DateRange<Date>>[]\n\n /**\n * Custom shortcuts items for single date picker\n */\n singleShortcuts?: PickersShortcutsItem<Date>[]\n\n /**\n * Number of calendars to display (range picker only)\n * @default 2\n */\n calendars?: 1 | 2 | 3\n\n /**\n * Additional props passed to single DatePicker\n */\n datePickerProps?: Omit<\n Partial<DatePickerProps>,\n 'value' | 'onChange' | 'open' | 'onOpen' | 'onClose' | 'label'\n >\n\n /**\n * Additional props passed to DateRangePicker\n */\n dateRangePickerProps?: Omit<\n Partial<DateRangePickerProps>,\n 'value' | 'onChange' | 'open' | 'onOpen' | 'onClose' | 'label'\n >\n}\n\nconst ClearIcon = () => <X size={20} color={semanticColors.icons.placeholder} />\n\n// Custom calendar icon component\nconst CalendarIcon = () => <CalendarDays size={20} color={semanticColors.icons.placeholder} />\n\n// Shortcut styles to match Figma list item design (no borders, plain text)\nconst shortcutChipStyles = {\n // Container (MuiList) styles\n paddingY: `${spacing.spacing_1_1_2}px`,\n // Chip styles\n [`& .${chipClasses.root}`]: {\n fontSize: typography.fontSize.sm,\n fontWeight: typography.fontWeight.medium,\n color: semanticColors.typography.input.default,\n backgroundColor: 'transparent',\n borderRadius: `${spacing.spacing_3_4}px`,\n border: 'none',\n height: 'auto',\n paddingX: `${spacing.spacing_1_1_2}px`,\n paddingY: `${spacing.spacing_1}px`,\n justifyContent: 'flex-start',\n width: '100%',\n [`& .${chipClasses.label}`]: {\n padding: 0,\n },\n '&:hover': {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n },\n },\n}\n\n/**\n * ModDatePicker - Moderne design system date picker component\n *\n * A wrapper around MUI X DatePicker and DateRangePicker with design system tokens and\n * customization. Supports both single date selection and date range selection with\n * built-in shortcuts.\n *\n * Design Tokens Used:\n * - colors: semanticColors.border.strong, semanticColors.typography.body, semanticColors.surfaces.white, semanticColors.icons.hoverBackground\n * - typography: typography.fontSize.sm, typography.fontWeight.medium, typography.fontWeight.semiBold, semanticColors.typography.bodySecondary\n * - border: semanticColors.border.primary\n * - shadows: shadows.dropdown\n * - borderRadius: borderRadius.l (20px)\n */\nexport const ModDatePicker = ({\n type = 'single',\n open,\n label,\n value,\n rangeValue,\n onChange,\n onRangeChange,\n onOpen,\n onClose,\n placeholder,\n showShortcuts,\n shortcuts = defaultRangeShortcuts,\n singleShortcuts,\n calendars = 2,\n datePickerProps,\n dateRangePickerProps,\n}: ModDatePickerProps) => {\n // Default showShortcuts based on type and whether shortcuts are provided\n const shouldShowShortcuts =\n showShortcuts !== undefined\n ? showShortcuts\n : type === 'range'\n ? true\n : singleShortcuts !== undefined && singleShortcuts.length > 0\n // Check if there's a value to show clear button\n const hasValue =\n type === 'range' ? rangeValue?.[0] != null || rangeValue?.[1] != null : value != null\n\n const commonSlots = {\n previousIconButton: ModIconButton,\n nextIconButton: ModIconButton,\n openPickerIcon: CalendarIcon,\n clearIcon: ClearIcon,\n }\n\n const commonSlotProps = {\n textField: {\n size: 'small' as const,\n placeholder: placeholder || (type === 'range' ? 'MM/DD/YYYY - MM/DD/YYYY' : 'MM/DD/YYYY'),\n },\n previousIconButton: {\n size: 'small' as const,\n },\n nextIconButton: {\n size: 'small' as const,\n },\n openPickerButton: {\n size: 'small' as const,\n },\n clearButton: {\n size: 'small' as const,\n },\n }\n\n if (type === 'range') {\n const { slotProps: rangeSlotProps, ...restRangePickerProps } = dateRangePickerProps || {}\n return (\n <StyledDateRangePicker\n value={rangeValue || [null, null]}\n onChange={onRangeChange}\n open={open}\n onOpen={onOpen}\n onClose={onClose}\n label={label}\n calendars={calendars}\n slots={commonSlots}\n slotProps={{\n ...commonSlotProps,\n field: {\n clearable: hasValue,\n },\n shortcuts: shouldShowShortcuts\n ? {\n items: shortcuts,\n sx: {\n ...shortcutChipStyles,\n },\n }\n : undefined,\n ...rangeSlotProps,\n }}\n {...restRangePickerProps}\n />\n )\n }\n\n const { slotProps: singleSlotProps, ...restDatePickerProps } = datePickerProps || {}\n return (\n <StyledDatePicker\n value={value || null}\n onChange={onChange}\n open={open}\n onOpen={onOpen}\n onClose={onClose}\n label={label}\n slots={{\n ...commonSlots,\n ...(shouldShowShortcuts && singleShortcuts ? { shortcuts: PickersShortcuts } : {}),\n }}\n slotProps={{\n ...commonSlotProps,\n field: {\n clearable: hasValue,\n },\n ...(shouldShowShortcuts && singleShortcuts\n ? {\n shortcuts: {\n items: singleShortcuts,\n sx: {\n ...shortcutChipStyles,\n },\n },\n }\n : {}),\n ...singleSlotProps,\n }}\n {...restDatePickerProps}\n />\n )\n}\n\nModDatePicker.displayName = 'ModDatePicker'\n\nexport type { DatePickerType }\n","import { styled } from '@mui/material/styles'\n\n/**\n * ModDatePickerListItem\n */\nexport const ModDatePickerListItem = styled('div')({})\n","import { styled } from '@mui/material/styles'\n\n/**\n * ModDatePickerMenu\n */\nexport const ModDatePickerMenu = styled('div')({})\n","import { semanticColors, spacing } from '@moderneinc/design-system-tokens'\nimport Divider, { type DividerProps } from '@mui/material/Divider'\nimport { styled } from '@mui/material/styles'\n\nconst StyledDivider = styled(Divider)(() => ({\n borderColor: semanticColors.border.secondary,\n marginTop: spacing.spacing_1,\n marginBottom: spacing.spacing_1,\n}))\n\nexport interface ModDividerProps extends DividerProps {}\n\n/**\n * ModDivider - Horizontal divider for separating content\n *\n * Generic divider component that can be used in menus, lists, cards, or any layout\n * that needs visual separation between content sections.\n *\n * @example\n * ```tsx\n * // In a menu\n * <ModMenu>\n * <ModMenuItem>Settings</ModMenuItem>\n * <ModDivider />\n * <ModMenuItem>Sign out</ModMenuItem>\n * </ModMenu>\n *\n * // In a card\n * <Card>\n * <CardHeader>Title</CardHeader>\n * <ModDivider />\n * <CardContent>Content</CardContent>\n * </Card>\n * ```\n */\nexport const ModDivider = (props: ModDividerProps) => {\n return <StyledDivider {...props} />\n}\n\nModDivider.displayName = 'ModDivider'\n","import { semanticColors } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport type { HTMLAttributes, ReactNode } from 'react'\n\ntype DotSize = 'small' | 'medium' | 'large'\ntype DotVariant = 'solid' | 'outline'\ntype DotColor = 'success' | 'error' | 'warning' | 'info' | 'neutral'\n\nconst sizeMap: Record<DotSize, number> = {\n small: 8,\n medium: 10,\n large: 12,\n}\n\nconst StyledDot = styled('span', {\n shouldForwardProp: prop => prop !== 'ownerState',\n})<{\n ownerState: { size: DotSize; variant: DotVariant; color: DotColor }\n}>(({ ownerState }) => {\n const size = sizeMap[ownerState.size]\n const palette = semanticColors.status[ownerState.color]\n\n return {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: size,\n height: size,\n minWidth: size,\n borderRadius: '50%',\n flexShrink: 0,\n boxSizing: 'border-box',\n backgroundColor: palette.default,\n color: semanticColors.typography.tooltip.default,\n ...(ownerState.variant === 'outline' && {\n border: `3px solid ${palette.light}`,\n }),\n '& > svg': {\n width: '70%',\n height: '70%',\n },\n }\n})\n\nexport interface ModDotProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {\n /**\n * The size of the dot\n * @default \"medium\"\n */\n size?: DotSize\n /**\n * The variant of the dot\n * @default \"solid\"\n */\n variant?: DotVariant\n /**\n * The color/status of the dot\n * @default \"neutral\"\n */\n color?: DotColor\n /**\n * Optional icon rendered centered inside the dot. Use to indicate intent within\n * the dot itself (e.g., a minus icon on a disconnected error dot). SVG children\n * using `currentColor` inherit a white stroke/fill for contrast against the\n * colored background, and are scaled to 70% of the dot size.\n */\n children?: ReactNode\n}\n\n/**\n * ModDot - Status indicator dot.\n */\nexport const ModDot = ({\n size = 'medium',\n variant = 'solid',\n color = 'neutral',\n children,\n ...props\n}: ModDotProps) => {\n return (\n <StyledDot\n {...props}\n ownerState={{ size, variant, color }}\n role=\"img\"\n aria-label={props['aria-label'] ?? `${color} status indicator`}\n >\n {children}\n </StyledDot>\n )\n}\n\nModDot.displayName = 'ModDot'\n","import {\n borderRadius,\n semanticColors,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/design-system-tokens'\nimport IconButton from '@mui/material/IconButton'\nimport LinearProgress, { linearProgressClasses } from '@mui/material/LinearProgress'\nimport Paper, { type PaperProps } from '@mui/material/Paper'\nimport Stack from '@mui/material/Stack'\nimport { styled } from '@mui/material/styles'\nimport { Minus, X } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\nconst StyledRoot = styled(Paper)({\n padding: spacing.spacing_2,\n borderRadius: borderRadius.s,\n backgroundColor: semanticColors.surfaces.card,\n color: semanticColors.typography.body,\n border: `1px solid ${semanticColors.border.primary}`,\n boxShadow: `${shadows.neutral.regular.x}px ${shadows.neutral.regular.y}px ${shadows.neutral.regular.blur}px ${shadows.neutral.regular.spread}px ${shadows.neutral.regular.shadow}`,\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.spacing_3,\n})\n\nconst Title = styled('p')(({ theme }) => ({\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.semiBold,\n lineHeight: 1.4,\n color: semanticColors.typography.bodySecondary,\n}))\n\nconst FileName = styled('p')(({ theme }) => ({\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1.5,\n color: semanticColors.typography.body,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n minWidth: 0,\n}))\n\nconst ProgressLabel = styled('p')(({ theme }) => ({\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1.5,\n color: semanticColors.typography.body,\n flexShrink: 0,\n}))\n\nconst StyledLinearProgress = styled(LinearProgress)({\n width: '100%',\n height: spacing.spacing_1,\n borderRadius: borderRadius.s,\n backgroundColor: semanticColors.border.secondary,\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: semanticColors.buttons.primary.default,\n borderRadius: `${borderRadius.xS}px 0 0 ${borderRadius.xS}px`,\n },\n})\n\nconst ActionButton = styled(IconButton)({\n padding: 0,\n width: spacing.spacing_2,\n height: spacing.spacing_2,\n color: semanticColors.icons.utility,\n '&:hover': {\n backgroundColor: 'transparent',\n },\n})\n\nexport interface ModDownloadToastProps extends Omit<PaperProps, 'title'> {\n /**\n * The header text\n */\n title?: string\n\n /**\n * The file name being downloaded\n */\n fileName?: string\n\n /**\n * Progress value (0-100)\n */\n progress?: number\n\n /**\n * Whether to show the close button\n * @default true\n */\n showClose?: boolean\n\n /**\n * Whether to show the pause button\n * @default true\n */\n showPause?: boolean\n\n /**\n * Callback when close button is clicked\n */\n onClose?: () => void\n\n /**\n * Callback when pause button is clicked\n */\n onPause?: () => void\n\n /**\n * Custom actions to override the default pause/close buttons\n */\n actions?: ReactNode\n}\n\n/**\n * ModDownloadToast - Standalone download progress toast notification\n */\nexport const ModDownloadToast = ({\n title,\n fileName,\n progress,\n showClose = true,\n showPause = true,\n onClose,\n onPause,\n actions,\n ...props\n}: ModDownloadToastProps) => {\n const renderActions = () => {\n if (actions) return actions\n\n const hasActions = showPause || showClose\n if (!hasActions) return null\n\n return (\n <Stack direction=\"row\" sx={{ alignItems: 'center', gap: `${spacing.spacing_2}px` }}>\n {showPause && (\n <ActionButton size=\"small\" onClick={onPause} aria-label=\"Pause download\">\n <Minus size={spacing.spacing_2} />\n </ActionButton>\n )}\n {showClose && (\n <ActionButton size=\"small\" onClick={onClose} aria-label=\"Close\">\n <X size={spacing.spacing_2} />\n </ActionButton>\n )}\n </Stack>\n )\n }\n\n return (\n <StyledRoot elevation={0} role=\"status\" {...props}>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n width: '100%',\n gap: `${spacing.spacing_4}px`,\n }}\n >\n {title && <Title>{title}</Title>}\n {renderActions()}\n </Stack>\n <Stack sx={{ width: '100%', gap: `${spacing.spacing_1}px` }}>\n <Stack\n direction=\"row\"\n sx={{\n alignItems: 'flex-end',\n justifyContent: 'space-between',\n width: '100%',\n gap: `${spacing.spacing_2}px`,\n }}\n >\n {fileName && <FileName>{fileName}</FileName>}\n {progress !== undefined && <ProgressLabel>{progress}%</ProgressLabel>}\n </Stack>\n <StyledLinearProgress variant=\"determinate\" value={progress ?? 0} />\n </Stack>\n </StyledRoot>\n )\n}\n\nModDownloadToast.displayName = 'ModDownloadToast'\n","import { semanticColors } from '@moderneinc/design-system-tokens'\nimport SvgIcon, { type SvgIconProps } from '@mui/material/SvgIcon'\nimport type { ReactNode } from 'react'\n\n/**\n * Filled status icons — sourced from the published Figma library components\n * Filled_Success / Filled_Queued / Filled_Info / Filled_Warning / Filled_Error /\n * Filled_Neutral / Filled_Canceled.\n *\n * Designed at 16px; size via `fontSize` like any MUI `SvgIcon`. Each ships its\n * intent's status color baked into the silhouette with a white inner glyph — the\n * fill is fixed, so `color`/`htmlColor` are omitted from the props. There is no\n * Filled_Active (the open-arc spinner cannot fill). Use below 18px; above that,\n * prefer the Lucide outline glyph.\n */\nexport type ModFilledStatusIconProps = Omit<SvgIconProps, 'color' | 'htmlColor'>\n\ninterface FilledIconConfig {\n displayName: string\n /** Canonical baked silhouette color (not named `fill`, to satisfy token lint). */\n fillColor: string\n body: ReactNode\n knockout: ReactNode\n}\n\nconst buildFilledIcon = ({ displayName, fillColor, body, knockout }: FilledIconConfig) => {\n const Component = (props: ModFilledStatusIconProps) => (\n <SvgIcon viewBox=\"0 0 16 16\" {...props}>\n <g fill={fillColor}>{body}</g>\n <g\n stroke={semanticColors.surfaces.white}\n strokeWidth={1.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n >\n {knockout}\n </g>\n </SvgIcon>\n )\n Component.displayName = displayName\n return Component\n}\n\nconst CIRCLE_BODY = (\n <path d=\"M8.00001 14.6666C11.6819 14.6666 14.6667 11.6818 14.6667 7.99992C14.6667 4.31802 11.6819 1.33325 8.00001 1.33325C4.31811 1.33325 1.33334 4.31802 1.33334 7.99992C1.33334 11.6818 4.31811 14.6666 8.00001 14.6666Z\" />\n)\n\nexport const ModFilledSuccess = buildFilledIcon({\n displayName: 'ModFilledSuccess',\n fillColor: semanticColors.status.success.default,\n body: CIRCLE_BODY,\n knockout: <path d=\"M6 8.00008L7.33333 9.33341L10 6.66675\" />,\n})\n\nexport const ModFilledQueued = buildFilledIcon({\n displayName: 'ModFilledQueued',\n fillColor: semanticColors.status.active.default,\n body: CIRCLE_BODY,\n knockout: <path d=\"M8 4V8L10.6667 9.33333\" />,\n})\n\nexport const ModFilledInfo = buildFilledIcon({\n displayName: 'ModFilledInfo',\n fillColor: semanticColors.status.info.default,\n body: CIRCLE_BODY,\n knockout: (\n <>\n <path d=\"M8 10.6667V8\" />\n <path d=\"M8 5.33325H8.00667\" />\n </>\n ),\n})\n\nexport const ModFilledWarning = buildFilledIcon({\n displayName: 'ModFilledWarning',\n fillColor: semanticColors.status.warning.default,\n body: (\n <path d=\"M14.4867 12L9.15335 2.66665C9.03706 2.46146 8.86842 2.29078 8.66463 2.17203C8.46084 2.05329 8.22921 1.99072 7.99335 1.99072C7.75749 1.99072 7.52585 2.05329 7.32206 2.17203C7.11828 2.29078 6.94964 2.46146 6.83335 2.66665L1.50001 12C1.38247 12.2036 1.32083 12.4346 1.32135 12.6697C1.32187 12.9047 1.38453 13.1355 1.50298 13.3385C1.62142 13.5416 1.79145 13.7097 1.99581 13.8259C2.20018 13.942 2.43162 14.0021 2.66668 14H13.3333C13.5673 13.9997 13.797 13.938 13.9995 13.8208C14.202 13.7037 14.3702 13.5354 14.487 13.3327C14.6039 13.1301 14.6654 12.9002 14.6653 12.6663C14.6653 12.4324 14.6036 12.2026 14.4867 12Z\" />\n ),\n knockout: (\n <>\n <path d=\"M8 6V8.66667\" />\n <path d=\"M8 11.3333H8.00667\" />\n </>\n ),\n})\n\nexport const ModFilledError = buildFilledIcon({\n displayName: 'ModFilledError',\n fillColor: semanticColors.status.error.default,\n body: (\n <path d=\"M10.208 1.33325C10.5616 1.33333 10.9007 1.47385 11.1507 1.72392L14.276 4.84925C14.5261 5.09924 14.6666 5.43832 14.6667 5.79192V10.2079C14.6666 10.5615 14.5261 10.9006 14.276 11.1506L11.1507 14.2759C10.9007 14.526 10.5616 14.6665 10.208 14.6666H5.79201C5.43842 14.6665 5.09933 14.526 4.84934 14.2759L1.72401 11.1506C1.47394 10.9006 1.33342 10.5615 1.33334 10.2079V5.79192C1.33342 5.43832 1.47394 5.09924 1.72401 4.84925L4.84934 1.72392C5.09933 1.47385 5.43842 1.33333 5.79201 1.33325H10.208Z\" />\n ),\n knockout: (\n <>\n <path d=\"M8 5.33325V7.99992\" />\n <path d=\"M8 10.6667H8.00667\" />\n </>\n ),\n})\n\nexport const ModFilledNeutral = buildFilledIcon({\n displayName: 'ModFilledNeutral',\n fillColor: semanticColors.status.neutral.default,\n body: CIRCLE_BODY,\n knockout: <path d=\"M5.33334 8H10.6667\" />,\n})\n\nexport const ModFilledCanceled = buildFilledIcon({\n displayName: 'ModFilledCanceled',\n fillColor: semanticColors.status.canceled.default,\n body: CIRCLE_BODY,\n knockout: (\n <>\n <path d=\"M10 6L6 10\" />\n <path d=\"M6 6L10 10\" />\n </>\n ),\n})\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport Chip, { type ChipProps, chipClasses } from '@mui/material/Chip'\nimport { styled } from '@mui/material/styles'\nimport { X } from 'lucide-react'\nimport { focusRingStyles } from '../utils/focusRing'\n\nconst filterChipOnlyProps = ['selected', 'expanded', 'selectedLabel', 'count', 'onClear']\n\nconst StyledChip = styled(Chip, {\n shouldForwardProp: prop => !filterChipOnlyProps.includes(prop as string),\n})<{ selected?: boolean }>(({ theme, selected }) => ({\n borderRadius: borderRadius.full,\n border: `1px solid ${semanticColors.buttons.secondary.defaultBorder}`,\n backgroundColor: selected\n ? semanticColors.buttons.secondary.pressedBackground\n : semanticColors.surfaces.white,\n minHeight: 40,\n padding: `${spacing.spacing_3_4}px ${spacing.spacing_1_1_2}px`,\n gap: spacing.spacing_1,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1,\n color: semanticColors.typography.body,\n\n [`& .${chipClasses.label}`]: {\n padding: 0,\n overflow: 'visible',\n display: 'flex',\n alignItems: 'center',\n },\n\n [`& .${chipClasses.deleteIcon}`]: {\n color: semanticColors.icons.default,\n width: 24,\n height: 24,\n margin: 0,\n flexShrink: 0,\n '&:hover': {\n color: semanticColors.icons.default,\n },\n },\n\n '&:hover': {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n },\n\n [`&.${chipClasses.focusVisible}`]: {\n ...focusRingStyles,\n backgroundColor: selected\n ? semanticColors.buttons.secondary.pressedBackground\n : semanticColors.surfaces.white,\n },\n}))\n\nconst LabelContent = styled('span')({\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.spacing_1,\n})\n\nconst TextStack = styled('span')({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'center',\n gap: spacing.spacing_1_4,\n})\n\nconst HeaderLabel = styled('span')(({ theme }) => ({\n fontSize: theme.typography.pxToRem(typography.fontSize.xxs),\n fontWeight: typography.fontWeight.regular,\n lineHeight: '120%',\n color: semanticColors.typography.bodySecondary,\n}))\n\nconst SelectedLabel = styled('span')(({ theme }) => ({\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1,\n color: semanticColors.buttons.secondary.default,\n}))\n\nconst CountBadge = styled('span')(({ theme }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: 16,\n height: 16,\n padding: `0 ${spacing.spacing_1_2}px`,\n borderRadius: borderRadius.full,\n backgroundColor: semanticColors.brand,\n color: semanticColors.surfaces.white,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1,\n boxSizing: 'border-box',\n}))\n\nexport interface ModFilterChipProps extends Omit<ChipProps, 'variant' | 'color' | 'label'> {\n /**\n * The filter label text\n */\n label: string\n\n /**\n * Whether the filter has active selections\n * @default false\n */\n selected?: boolean\n\n /**\n * Whether the filter dropdown is expanded\n * @default false\n */\n expanded?: boolean\n\n /**\n * Value text shown when selected (e.g. \"Filter 1, Filter 2\")\n */\n selectedLabel?: string\n\n /**\n * Number of active filter selections (shown as badge when selected)\n * @default 0\n */\n count?: number\n\n /**\n * Handler for clearing the filter (shows X icon when provided and selected)\n */\n onClear?: (e: React.MouseEvent) => void\n}\n\n/**\n * ModFilterChip - Filter chip for filtering data, based on MUI Chip.\n *\n * @example\n * <ModFilterChip label=\"Status\" selected selectedLabel=\"Active, Pending\" count={2} onClear={handleClear} />\n */\nexport const ModFilterChip = ({\n label,\n selected = false,\n expanded,\n selectedLabel,\n count = 0,\n onClear,\n onClick,\n ...props\n}: ModFilterChipProps) => {\n const chipLabel = selected ? (\n <LabelContent>\n <TextStack>\n <HeaderLabel>{label}</HeaderLabel>\n <SelectedLabel>{selectedLabel ?? label}</SelectedLabel>\n </TextStack>\n {count > 0 && <CountBadge>{count}</CountBadge>}\n </LabelContent>\n ) : (\n label\n )\n\n return (\n <StyledChip\n label={chipLabel}\n selected={selected}\n clickable\n onClick={onClick}\n onDelete={selected && onClear ? onClear : undefined}\n deleteIcon={<X size={24} />}\n aria-expanded={expanded}\n {...props}\n />\n )\n}\n\nModFilterChip.displayName = 'ModFilterChip'\n","import { semanticColors } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\n\nconst SpinnerWrapper = styled('div')({\n width: 24,\n height: 24,\n display: 'inline-flex',\n animation: 'spin 1s linear infinite',\n\n '@keyframes spin': {\n from: {\n transform: 'rotate(0deg)',\n },\n to: {\n transform: 'rotate(360deg)',\n },\n },\n})\n\nexport interface ModLoadingSpinnerProps {\n /**\n * Size of the spinner in pixels\n * @default 24\n */\n size?: number\n\n /**\n * Color of the spinner\n * @default semanticColors.buttons.primary.default\n */\n color?: string\n}\n\n/**\n * ModLoadingSpinner - Animated loading spinner component\n *\n * A circular loading spinner with a partial arc that rotates continuously.\n * Based on the Figma design system button loading icon.\n *\n * @example\n * <ModLoadingSpinner />\n *\n * @example\n * <ModLoadingSpinner size={32} color=\"#ff0000\" />\n */\nexport const ModLoadingSpinner = ({\n size = 24,\n color = semanticColors.buttons.primary.default,\n}: ModLoadingSpinnerProps) => {\n return (\n <SpinnerWrapper style={{ width: size, height: size }}>\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <title>Loading Spinner</title>\n <g opacity=\"0.2\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke={color} strokeWidth=\"2.1\" />\n </g>\n <path\n d=\"M12 2C6.477 2 2 6.477 2 12\"\n stroke={color}\n strokeWidth=\"2.1\"\n strokeLinecap=\"round\"\n />\n </svg>\n </SpinnerWrapper>\n )\n}\n\nModLoadingSpinner.displayName = 'ModLoadingSpinner'\n","import {\n borderRadius,\n semanticColors,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/design-system-tokens'\nimport Box from '@mui/material/Box'\nimport IconButton from '@mui/material/IconButton'\nimport { styled } from '@mui/material/styles'\nimport {\n gridPaginationModelSelector,\n gridRowCountSelector,\n gridRowSelectionCountSelector,\n useGridApiContext,\n useGridSelector,\n} from '@mui/x-data-grid'\nimport { ChevronLeft, ChevronRight } from 'lucide-react'\nimport type { ReactNode } from 'react'\nimport { ModLoadingSpinner } from '../LoadingSpinner/LoadingSpinner'\n\nconst StyledFooter = styled(Box, {\n shouldForwardProp: prop => prop !== 'showShadow',\n})<{ showShadow?: boolean }>(({ theme, showShadow = false }) => ({\n backgroundColor: semanticColors.surfaces.white,\n borderTop: `1px solid ${semanticColors.border.primary}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: spacing.spacing_7,\n paddingLeft: spacing.spacing_3,\n paddingRight: spacing.spacing_3,\n gap: spacing.spacing_2,\n position: 'relative',\n\n '&::before': {\n content: showShadow ? '\"\"' : 'none',\n position: 'absolute',\n top: `-${shadows.neutral.regular.blur}px`, // -4px\n left: 0,\n right: 0,\n height: `${shadows.neutral.regular.blur}px`, // 4px\n background: `linear-gradient(to top, ${shadows.neutral.regular.shadow}, transparent)`, // rgba(31, 41, 55, 0.1)\n pointerEvents: 'none',\n },\n\n [theme.breakpoints.down('sm')]: {\n flexWrap: 'wrap',\n },\n}))\n\nconst ResultText = styled('p')(({ theme }) => ({\n fontFamily: typography.fontFamily.body,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n color: semanticColors.typography.body, // typography/body: #232342\n margin: 0,\n whiteSpace: 'pre',\n}))\n\nconst LoadMoreButton = styled('button')(({ theme }) => ({\n fontFamily: typography.fontFamily.body,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 'normal',\n color: semanticColors.typography.link.primary,\n background: 'none',\n border: 'none',\n padding: 0,\n cursor: 'pointer',\n whiteSpace: 'pre',\n\n '&:hover': {\n textDecoration: 'underline',\n },\n\n '&:disabled': {\n color: semanticColors.typography.button.disabled,\n cursor: 'not-allowed',\n },\n}))\n\nconst SelectedText = styled('p')(({ theme }) => ({\n fontFamily: typography.fontFamily.body,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n color: semanticColors.typography.body,\n margin: 0,\n whiteSpace: 'pre',\n}))\n\nconst PaginationContainer = styled(Box)({\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_2,\n marginLeft: 'auto',\n})\n\nconst PaginationButton = styled(IconButton)(({ disabled }) => ({\n width: spacing.spacing_5_1_2,\n height: spacing.spacing_5_1_2,\n padding: spacing.spacing_1,\n backgroundColor: semanticColors.surfaces.white,\n borderRadius: borderRadius.full,\n\n '&:hover': {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n },\n\n '& svg': {\n width: 24,\n height: 24,\n color: disabled ? semanticColors.icons.disabled : semanticColors.icons.default,\n },\n}))\n\nconst PaginationText = styled('p')(({ theme }) => ({\n fontFamily: typography.fontFamily.body,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n color: semanticColors.typography.body, // typography/body: #232342\n margin: 0,\n whiteSpace: 'pre',\n}))\n\nexport interface ModFooterProps {\n /**\n * Footer variant\n * - \"loading\": Shows result count with loading indicator and \"Load more\" button\n * - \"pagination\": Shows pagination controls with page range and navigation buttons\n * @default \"pagination\"\n */\n variant?: 'loading' | 'pagination'\n\n /**\n * Whether to show the drop shadow on top of footer (for scrolling effect)\n * @default false\n */\n showShadow?: boolean\n\n /**\n * Whether to show the loading indicator (only for \"loading\" variant)\n * @default false\n */\n loading?: boolean\n\n /**\n * Total number of results (for \"loading\" variant)\n */\n resultCount?: number\n\n /**\n * Callback when \"Load more\" is clicked (for \"loading\" variant)\n */\n onLoadMore?: () => void\n\n /**\n * Whether there are more results to load (for \"loading\" variant)\n * @default true\n */\n hasMore?: boolean\n\n /**\n * Custom pagination info text (for \"pagination\" variant)\n * If not provided, will attempt to use DataGrid's pagination state\n * @example \"1-80 of 120\"\n */\n paginationInfo?: string\n\n /**\n * Callback when previous page button is clicked (for \"pagination\" variant)\n */\n onPreviousPage?: () => void\n\n /**\n * Callback when next page button is clicked (for \"pagination\" variant)\n */\n onNextPage?: () => void\n\n /**\n * Whether the previous page button is disabled (for \"pagination\" variant)\n * If not provided, will attempt to use DataGrid's pagination state\n */\n hasPreviousPage?: boolean\n\n /**\n * Whether the next page button is disabled (for \"pagination\" variant)\n * If not provided, will attempt to use DataGrid's pagination state\n */\n hasNextPage?: boolean\n\n /**\n * Whether to show the selected row count on the left side (pagination variant)\n * @default true\n */\n showSelected?: boolean\n\n /**\n * Custom content to render in the footer\n */\n children?: ReactNode\n}\n\n/**\n * ModFooter - Footer component for data grids\n *\n * Provides two variants:\n * - \"loading\": Shows result count with loading indicator and \"Load more\" button for infinite scroll\n * - \"pagination\": Shows pagination controls with page range and navigation buttons\n *\n * @example\n * // Loading variant with load more\n * <ModFooter\n * variant=\"loading\"\n * loading={isLoading}\n * resultCount={40}\n * hasMore={true}\n * onLoadMore={() => loadMore()}\n * />\n *\n * @example\n * // Pagination variant\n * <ModFooter\n * variant=\"pagination\"\n * paginationInfo=\"1-80 of 120\"\n * hasPreviousPage={false}\n * hasNextPage={true}\n * onPreviousPage={() => goToPrevious()}\n * onNextPage={() => goToNext()}\n * />\n *\n * @example\n * // Used with DataGrid (automatically reads pagination state)\n * <DataGrid\n * rows={rows}\n * columns={columns}\n * slots={{ footer: ModFooter }}\n * slotProps={{\n * footer: {\n * variant: 'pagination',\n * },\n * }}\n * />\n */\nexport const ModFooter = ({\n variant = 'pagination',\n showShadow = false,\n loading = false,\n resultCount,\n onLoadMore,\n hasMore = true,\n paginationInfo,\n onPreviousPage,\n onNextPage,\n hasPreviousPage,\n hasNextPage,\n showSelected = true,\n children,\n}: ModFooterProps) => {\n const apiRef = useGridApiContext()\n\n // Use selectors to reactively subscribe to pagination state changes\n const paginationModel = useGridSelector(apiRef, gridPaginationModelSelector)\n const rowCount = useGridSelector(apiRef, gridRowCountSelector)\n const selectedCount = useGridSelector(apiRef, gridRowSelectionCountSelector)\n\n // For pagination variant, try to derive info from DataGrid if not provided\n const derivePaginationInfo = () => {\n if (paginationInfo) {\n return paginationInfo\n }\n\n if (paginationModel && rowCount > 0) {\n const { page, pageSize } = paginationModel\n const start = page * pageSize + 1\n const end = Math.min((page + 1) * pageSize, rowCount)\n return `${start}-${end} of ${rowCount}`\n }\n\n return '0-0 of 0'\n }\n\n const deriveHasPreviousPage = () => {\n if (hasPreviousPage !== undefined) {\n return hasPreviousPage\n }\n if (paginationModel) {\n return paginationModel.page > 0\n }\n\n return false\n }\n\n const deriveHasNextPage = () => {\n if (hasNextPage !== undefined) {\n return hasNextPage\n }\n\n if (paginationModel) {\n const { page, pageSize } = paginationModel\n return (page + 1) * pageSize < rowCount\n }\n\n return false\n }\n\n const handlePreviousPage = () => {\n if (onPreviousPage) {\n onPreviousPage()\n } else if (apiRef?.current && paginationModel) {\n if (paginationModel.page > 0) {\n apiRef.current.setPage(paginationModel.page - 1)\n }\n }\n }\n\n const handleNextPage = () => {\n if (onNextPage) {\n onNextPage()\n } else if (apiRef?.current && paginationModel) {\n apiRef.current.setPage(paginationModel.page + 1)\n }\n }\n\n // Custom children override everything\n if (children) {\n return <StyledFooter showShadow={showShadow}>{children}</StyledFooter>\n }\n\n // Loading variant\n if (variant === 'loading') {\n const rowCount = resultCount ?? apiRef?.current?.getRowsCount() ?? 0\n\n return (\n <StyledFooter showShadow={showShadow} sx={{ justifyContent: 'center' }}>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: theme => theme.typography.pxToRem(spacing.spacing_1_2),\n }}\n >\n <Box\n sx={{\n width: spacing.spacing_5_1_2,\n height: spacing.spacing_5_1_2,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n visibility: loading ? 'visible' : 'hidden',\n }}\n >\n <ModLoadingSpinner />\n </Box>\n <ResultText>{rowCount} results </ResultText>\n </Box>\n <LoadMoreButton onClick={onLoadMore} disabled={!hasMore}>\n Load more\n </LoadMoreButton>\n </StyledFooter>\n )\n }\n\n // Pagination variant\n return (\n <StyledFooter showShadow={showShadow} sx={{ justifyContent: 'space-between' }}>\n {showSelected ? <SelectedText>{selectedCount} selected</SelectedText> : <Box />}\n <PaginationContainer>\n <PaginationText>{derivePaginationInfo()}</PaginationText>\n <Box sx={{ display: 'flex', gap: `${spacing.spacing_1_4}px` }}>\n <PaginationButton\n onClick={handlePreviousPage}\n disabled={!deriveHasPreviousPage()}\n aria-label=\"Previous page\"\n >\n <ChevronLeft />\n </PaginationButton>\n <PaginationButton\n onClick={handleNextPage}\n disabled={!deriveHasNextPage()}\n aria-label=\"Next page\"\n >\n <ChevronRight />\n </PaginationButton>\n </Box>\n </PaginationContainer>\n </StyledFooter>\n )\n}\n\nModFooter.displayName = 'ModFooter'\n","import { styled } from '@mui/material/styles'\nimport type { HTMLAttributes, ReactNode } from 'react'\n\nexport type IconWrapperSize =\n | 8\n | 12\n | 16\n | 20\n | 24\n | 28\n | 32\n | 36\n | 40\n | 44\n | 48\n | 52\n | 56\n | 60\n | 64\n | 72\n | 80\n | 96\n | 128\n | 160\n | 192\n\nconst customProps = ['iconSize']\n\nconst StyledIconWrapper = styled('div', {\n shouldForwardProp: prop => !customProps.includes(prop as string),\n})<{ iconSize: number }>(({ iconSize }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: iconSize,\n height: iconSize,\n flexShrink: 0,\n '& svg': {\n width: iconSize,\n height: iconSize,\n },\n}))\n\nexport interface ModIconWrapperProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {\n /**\n * The size of the icon wrapper in pixels\n * @default 20\n */\n size?: IconWrapperSize\n /**\n * Icon element to render inside the wrapper\n */\n children?: ReactNode\n}\n\n/**\n * ModIconWrapper - Flex-centered container that sizes icons\n */\nexport const ModIconWrapper = ({ size = 20, children, ...props }: ModIconWrapperProps) => {\n return (\n <StyledIconWrapper iconSize={size} {...props}>\n {children}\n </StyledIconWrapper>\n )\n}\n\nModIconWrapper.displayName = 'ModIconWrapper'\n","import { gridClasses } from '@mui/x-data-grid'\nimport type { GridScrollParams, GridSlots } from '@mui/x-data-grid-pro'\nimport { useGridApiRef } from '@mui/x-data-grid-pro'\nimport { useEffect, useRef, useState } from 'react'\nimport { ModDataGrid, type ModDataGridProps } from '../DataGrid/DataGrid'\nimport { ModFooter } from '../Footer/Footer'\n\nexport interface ModInfiniteScrollGridProps extends Omit<ModDataGridProps, 'slots'> {\n /**\n * Callback when load more is triggered - either by scrolling or clicking button\n */\n onLoadMore: () => void\n\n /**\n * Whether there are more rows to load\n * @default true\n */\n hasNextPage?: boolean\n\n /**\n * Scroll threshold (0-1) to trigger auto-load. 0.85 = 85% scrolled\n * @default 0.85\n */\n loadMoreAtScrollPercent?: number\n\n /**\n * Custom slots (merged with design system defaults)\n */\n slots?: Partial<GridSlots>\n}\n\n/**\n * ModInfiniteScrollGrid - DataGrid with infinite scroll and load-more functionality\n *\n * Features:\n * - Auto-loads more data when scrolled to 85% (configurable)\n * - Manual \"Load more\" button in footer\n * - Shows row count and loading state\n * - Inherits all responsive features from ModDataGrid\n *\n * @example\n * <ModInfiniteScrollGrid\n * rows={rows}\n * columns={columns}\n * onLoadMore={loadMoreData}\n * hasNextPage={hasMore}\n * loading={isLoading}\n * />\n */\nexport function ModInfiniteScrollGrid({\n onLoadMore,\n hasNextPage = true,\n loadMoreAtScrollPercent = 0.85,\n slots,\n slotProps: userSlotProps,\n sx: userSx,\n ...props\n}: ModInfiniteScrollGridProps) {\n const defaultApiRef = useGridApiRef()\n const apiRef = props?.apiRef ? props.apiRef : defaultApiRef\n const scrollerRef = useRef<HTMLElement | null>(null)\n const isLoadingRef = useRef(false)\n const [isScrolling, setIsScrolling] = useState(false)\n const scrollTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n // Infinite scroll handler\n // Based on moderne-ui implementation\n useEffect(() => {\n if (!onLoadMore) {\n return\n }\n\n const unsubscribe = apiRef.current?.subscribeEvent?.(\n 'scrollPositionChange',\n (e: GridScrollParams) => {\n if (!scrollerRef.current) {\n const elem = document.querySelector(`.${gridClasses.virtualScroller}`)\n if (elem) {\n scrollerRef.current = elem as HTMLElement\n }\n }\n\n // Show shadow while actively scrolling, hide after 150ms\n setIsScrolling(true)\n if (scrollTimeoutRef.current) {\n clearTimeout(scrollTimeoutRef.current)\n }\n scrollTimeoutRef.current = setTimeout(() => {\n setIsScrolling(false)\n }, 150)\n\n const totalHeight = apiRef?.current?.state?.rowsMeta?.currentPageTotalHeight\n const clientHeight = scrollerRef.current?.clientHeight\n const threshold =\n totalHeight && clientHeight ? (totalHeight - clientHeight) * loadMoreAtScrollPercent : 0\n\n if (\n !props.loading &&\n !isLoadingRef.current &&\n e.top > 0 &&\n hasNextPage &&\n totalHeight &&\n clientHeight &&\n threshold < e.top\n ) {\n isLoadingRef.current = true\n onLoadMore()\n setTimeout(() => {\n isLoadingRef.current = false\n }, 100)\n }\n },\n { isFirst: true }\n )\n\n return unsubscribe\n }, [apiRef, hasNextPage, onLoadMore, props.loading, loadMoreAtScrollPercent])\n\n const hasRows = (props.rows?.length ?? 0) > 0\n\n // Merge custom slots with infinite scroll defaults\n // Hide footer when no rows\n const mergedSlots: Partial<GridSlots> = {\n footer: hasRows ? ModFooter : () => null,\n ...slots,\n }\n\n return (\n <ModDataGrid\n apiRef={apiRef}\n slots={mergedSlots}\n slotProps={{\n ...userSlotProps,\n basePopper: {\n placement: 'bottom-start',\n },\n footer: {\n variant: 'loading',\n loading: props.loading,\n onLoadMore,\n hasMore: hasNextPage,\n showShadow: isScrolling,\n ...userSlotProps?.footer,\n },\n }}\n sx={userSx}\n pagination={false}\n {...props}\n // Only show loading overlay when loading AND no rows exist yet\n // This keeps existing rows visible while loading more data (footer shows loading spinner)\n loading={props.loading && !hasRows}\n />\n )\n}\n\nModInfiniteScrollGrid.displayName = 'ModInfiniteScrollGrid'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport FormControl from '@mui/material/FormControl'\nimport FormHelperText, { formHelperTextClasses } from '@mui/material/FormHelperText'\nimport InputAdornment, { inputAdornmentClasses } from '@mui/material/InputAdornment'\nimport InputBase, { type InputBaseProps, inputBaseClasses } from '@mui/material/InputBase'\nimport InputLabel, { inputLabelClasses } from '@mui/material/InputLabel'\nimport { styled } from '@mui/material/styles'\nimport { AlertCircle } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\ntype InputFieldSize = 'small' | 'medium'\n\n// Internal: form-chrome styled components shared with ModSelectField. Exported\n// so sibling files can reuse the exact same chrome styling without duplication.\n// Not part of the public package API (not re-exported from index.js).\nexport type { InputFieldSize as ModInputFieldSize }\n\nexport const StyledFormControl = styled(FormControl, {\n shouldForwardProp: prop => prop !== 'size',\n})<{ size?: InputFieldSize }>(({ size = 'medium' }) => {\n const sizeConfig: Record<InputFieldSize, { gap: number }> = {\n small: {\n gap: spacing.spacing_3_4,\n },\n medium: {\n gap: spacing.spacing_1,\n },\n }\n\n return {\n display: 'flex',\n flexDirection: 'column',\n gap: sizeConfig[size as InputFieldSize].gap,\n width: '100%',\n }\n})\n\nexport const StyledInputLabel = styled(InputLabel, {\n shouldForwardProp: prop => prop !== 'size' && prop !== 'infoIcon',\n})<{ size?: InputFieldSize; infoIcon?: boolean }>(({ theme }) => ({\n position: 'static',\n transform: 'none',\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.medium,\n color: semanticColors.typography.input.label,\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_1_4,\n\n [`&.${inputLabelClasses.focused}`]: {\n color: semanticColors.typography.input.label,\n },\n\n [`&.${inputLabelClasses.disabled}`]: {\n color: semanticColors.typography.button.disabled,\n },\n\n [`&.${inputLabelClasses.error}`]: {\n color: semanticColors.typography.input.label,\n },\n}))\n\nexport const InfoIconWrapper = styled('span')({\n display: 'inline-flex',\n alignItems: 'center',\n color: semanticColors.icons.placeholder,\n})\n\nconst StyledInputBase = styled(InputBase, {\n shouldForwardProp: prop => prop !== 'size' && prop !== 'destructive',\n})<{ size?: InputFieldSize; destructive?: boolean }>(\n ({ theme, size = 'medium', destructive, startAdornment, multiline }) => {\n const sizeConfig: Record<\n InputFieldSize,\n { height: number; padding: string; fontSize: string; borderRadius: number }\n > = {\n small: {\n height: spacing.spacing_5,\n padding: `${spacing.spacing_1}px ${spacing.spacing_1_1_2}px ${spacing.spacing_1}px ${startAdornment ? 0 : spacing.spacing_1_1_2}px`,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n borderRadius: borderRadius.input,\n },\n medium: {\n height: spacing.spacing_5_1_2,\n padding: `${spacing.spacing_1_1_4}px ${spacing.spacing_2}px ${spacing.spacing_1_1_4}px ${startAdornment ? 0 : spacing.spacing_2}px`,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n borderRadius: borderRadius.input,\n },\n }\n\n const sizeStyles = sizeConfig[size as InputFieldSize]\n\n return {\n height: multiline ? 'auto' : sizeStyles.height,\n fontSize: sizeStyles.fontSize,\n borderRadius: sizeStyles.borderRadius,\n backgroundColor: semanticColors.input.background,\n border: `1px solid ${destructive ? semanticColors.status.error.default : semanticColors.border.primary}`,\n transition: theme.transitions.create(['border-color', 'background-color'], {\n duration: theme.transitions.duration.short,\n }),\n\n [`& .${inputBaseClasses.input}`]: {\n padding: sizeStyles.padding,\n color: semanticColors.typography.input.default,\n // Tabular figures, no tracking — see Badge.tsx.\n fontVariantNumeric: 'tabular-nums',\n\n '&::placeholder': {\n color: semanticColors.typography.input.placeholder,\n },\n },\n\n // Hover state\n '&:hover': {\n backgroundColor: semanticColors.input.hoverBackground,\n borderColor: destructive\n ? semanticColors.status.error.default\n : semanticColors.border.primary,\n },\n\n // Focused state\n [`&.${inputBaseClasses.focused}`]: {\n backgroundColor: semanticColors.input.background,\n borderColor: destructive\n ? semanticColors.status.error.default\n : semanticColors.buttons.primary.default,\n },\n\n // Disabled state\n [`&.${inputBaseClasses.disabled}`]: {\n backgroundColor: semanticColors.input.disabledBackground,\n borderColor: semanticColors.border.primary,\n color: semanticColors.typography.button.disabled,\n\n [`& .${inputBaseClasses.input}`]: {\n WebkitTextFillColor: semanticColors.typography.button.disabled,\n },\n },\n\n // Error state\n [`&.${inputBaseClasses.error}`]: {\n borderColor: semanticColors.status.error.default,\n },\n\n // Adornment styling\n [`& .${inputAdornmentClasses.root}`]: {\n color: destructive ? semanticColors.status.error.default : semanticColors.icons.placeholder,\n },\n }\n }\n)\n\nexport const StyledFormHelperText = styled(FormHelperText, {\n shouldForwardProp: prop => prop !== 'size',\n})<{ size?: InputFieldSize }>(({ theme }) => {\n return {\n marginLeft: 0,\n marginRight: 0,\n // Figma specifies 14px for helper text\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n color: semanticColors.typography.input.helper,\n\n [`&.${formHelperTextClasses.error}`]: {\n color: semanticColors.status.error.default,\n },\n\n [`&.${formHelperTextClasses.disabled}`]: {\n color: semanticColors.typography.button.disabled,\n },\n }\n})\n\nexport interface ModInputFieldProps extends Omit<InputBaseProps, 'size'> {\n /**\n * The size of the input field\n * @default \"medium\"\n */\n size?: InputFieldSize\n\n /**\n * Show error/destructive state with red styling\n * @default false\n */\n destructive?: boolean\n\n /**\n * Label text for the input\n */\n label?: string\n\n /**\n * Show required indicator (asterisk)\n * @default false\n */\n required?: boolean\n\n /**\n * Info icon to display next to the label\n */\n infoIcon?: ReactNode\n\n /**\n * Helper text displayed below the input (normal state)\n */\n helperText?: string\n\n /**\n * Error message displayed below the input (destructive state)\n * Takes precedence over helperText when destructive is true\n */\n errorMessage?: string\n\n /**\n * Icon to display at the start of the input\n */\n startIcon?: ReactNode\n\n /**\n * Icon to display at the end of the input\n * In destructive state, an error icon is automatically shown\n */\n endIcon?: ReactNode\n}\n\n/**\n * ModInputField - Form input field component using MUI FormControl composition\n */\nexport const ModInputField = ({\n size = 'medium',\n destructive = false,\n label,\n required = false,\n infoIcon,\n helperText,\n errorMessage,\n startIcon,\n endIcon,\n disabled,\n id,\n ...props\n}: ModInputFieldProps) => {\n const inputId = id || `mod-input-${Math.random().toString(36).substring(7)}`\n const helperTextId = helperText || errorMessage ? `${inputId}-helper-text` : undefined\n\n return (\n <StyledFormControl size={size} error={destructive} disabled={disabled}>\n {label && (\n <StyledInputLabel\n htmlFor={inputId}\n size={size}\n infoIcon={!!infoIcon}\n disabled={disabled}\n error={destructive}\n shrink={true}\n >\n {label}\n {required && <span aria-hidden=\"true\">*</span>}\n {infoIcon && <InfoIconWrapper>{infoIcon}</InfoIconWrapper>}\n </StyledInputLabel>\n )}\n\n <StyledInputBase\n id={inputId}\n size={size}\n destructive={destructive}\n disabled={disabled}\n error={destructive}\n aria-describedby={helperTextId}\n startAdornment={\n startIcon ? (\n <InputAdornment\n position=\"start\"\n style={{ paddingLeft: size === 'small' ? spacing.spacing_1_1_2 : spacing.spacing_2 }}\n >\n {startIcon}\n </InputAdornment>\n ) : undefined\n }\n endAdornment={\n destructive ? (\n <InputAdornment position=\"end\" style={{ paddingRight: spacing.spacing_1_1_2 }}>\n <AlertCircle size={20} />\n </InputAdornment>\n ) : endIcon ? (\n <InputAdornment position=\"end\" style={{ paddingRight: spacing.spacing_1_1_2 }}>\n {endIcon}\n </InputAdornment>\n ) : undefined\n }\n {...props}\n />\n\n {(helperText || errorMessage) && (\n <StyledFormHelperText id={helperTextId} error={destructive} disabled={disabled}>\n {destructive ? errorMessage : helperText}\n </StyledFormHelperText>\n )}\n </StyledFormControl>\n )\n}\n\nModInputField.displayName = 'ModInputField'\n","import { semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport Box from '@mui/material/Box'\nimport ListItemButton, {\n type ListItemButtonProps,\n listItemButtonClasses,\n} from '@mui/material/ListItemButton'\nimport ListItemIcon, { listItemIconClasses } from '@mui/material/ListItemIcon'\nimport ListItemText from '@mui/material/ListItemText'\nimport { styled } from '@mui/material/styles'\nimport Typography from '@mui/material/Typography'\nimport type { ReactNode } from 'react'\n\n// TypeScript module augmentation for custom size prop\ndeclare module '@mui/material/ListItemButton' {\n interface ListItemButtonPropsVariantOverrides {\n size?: 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge' | 'xxxlarge'\n }\n}\n\n// Size configuration for consistent styling\nconst sizeConfig = {\n small: {\n height: spacing.spacing_3_1_2,\n paddingTop: 1,\n paddingRight: spacing.spacing_3_4,\n paddingBottom: 1,\n paddingLeft: spacing.spacing_3_4,\n gap: spacing.spacing_1,\n iconSize: typography.fontSize.h4,\n fontSize: typography.fontSize.sm,\n lineHeight: 1.4,\n },\n medium: {\n height: spacing.spacing_5,\n paddingTop: 1,\n paddingRight: spacing.spacing_3_4,\n paddingBottom: 1,\n paddingLeft: spacing.spacing_3_4,\n gap: spacing.spacing_1,\n iconSize: typography.fontSize.h4,\n fontSize: typography.fontSize.default,\n lineHeight: 1.5,\n },\n large: {\n height: spacing.spacing_6,\n paddingTop: 1,\n paddingRight: spacing.spacing_3_4,\n paddingBottom: 1,\n paddingLeft: spacing.spacing_3_4,\n gap: spacing.spacing_1_1_2,\n iconSize: typography.fontSize.h2,\n fontSize: typography.fontSize.default,\n secondaryFontSize: typography.fontSize.xs,\n lineHeight: 1.5,\n },\n xlarge: {\n height: spacing.spacing_8,\n paddingTop: 1,\n paddingRight: spacing.spacing_3_4,\n paddingBottom: 1,\n paddingLeft: spacing.spacing_3_4,\n gap: spacing.spacing_2,\n iconSize: typography.fontSize.h2,\n fontSize: typography.fontSize.default,\n secondaryFontSize: typography.fontSize.sm,\n lineHeight: 1.5,\n },\n xxlarge: {\n height: spacing.spacing_10,\n paddingTop: 1,\n paddingRight: spacing.spacing_3_4,\n paddingBottom: 1,\n paddingLeft: spacing.spacing_3_4,\n gap: spacing.spacing_2,\n iconSize: spacing.spacing_5,\n fontSize: typography.fontSize.h5,\n secondaryFontSize: typography.fontSize.sm,\n badgeFontSize: typography.fontSize.xs,\n lineHeight: 1.5,\n },\n xxxlarge: {\n height: spacing.spacing_10,\n paddingTop: 1,\n paddingRight: spacing.spacing_3_4,\n paddingBottom: 1,\n paddingLeft: spacing.spacing_3_4,\n gap: spacing.spacing_2,\n iconSize: spacing.spacing_6,\n fontSize: typography.fontSize.h5,\n secondaryFontSize: typography.fontSize.sm,\n badgeFontSize: typography.fontSize.xs,\n lineHeight: 1.5,\n },\n}\n\nconst StyledListItemButton = styled(ListItemButton, {\n shouldForwardProp: prop =>\n prop !== 'size' &&\n prop !== 'primaryText' &&\n prop !== 'secondaryText' &&\n prop !== 'badge' &&\n prop !== 'icon' &&\n prop !== 'isLink' &&\n prop !== 'hasSecondaryText' &&\n prop !== 'trailingElement',\n})<{\n size?: 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge' | 'xxxlarge'\n isLink?: boolean\n hasSecondaryText?: boolean\n}>(({ theme, size = 'medium', isLink, hasSecondaryText }) => {\n const config = sizeConfig[size]\n\n return {\n minHeight: config.height,\n height: hasSecondaryText ? 'auto' : config.height,\n paddingTop: config.paddingTop,\n paddingRight: config.paddingRight,\n paddingBottom: config.paddingBottom,\n paddingLeft: config.paddingLeft,\n borderRadius: spacing.spacing_3_4, // 6px\n backgroundColor: semanticColors.input.background,\n gap: config.gap,\n // Icon is always centered vertically per Figma design\n alignItems: 'center',\n transition: theme.transitions.create(['background-color'], {\n duration: theme.transitions.duration.short,\n }),\n\n // Icon container styling (using MUI ListItemIcon)\n [`& .${listItemIconClasses.root}`]: {\n minWidth: config.iconSize, // Override MUI's default 56px\n width: config.iconSize,\n height: config.iconSize,\n color: semanticColors.icons.placeholder,\n transition: theme.transitions.create(['color'], {\n duration: theme.transitions.duration.short,\n }),\n },\n\n // Primary text styling\n // Font weight varies by size per Figma:\n // - Default: small/medium use 400, large/xlarge/xxlarge use 500\n // - Link: xxlarge uses 600, others use their default weight\n '& .list-item-primary': {\n fontSize: theme.typography.pxToRem(config.fontSize),\n lineHeight: config.lineHeight,\n fontWeight:\n isLink && (size === 'xxlarge' || size === 'xxxlarge')\n ? typography.fontWeight.semiBold\n : size === 'small' || size === 'medium'\n ? typography.fontWeight.regular\n : typography.fontWeight.medium,\n color: isLink\n ? semanticColors.typography.link.primary\n : semanticColors.typography.navigation.default,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n ...(isLink && (size === 'xxlarge' || size === 'xxxlarge') && { textDecoration: 'none' }),\n },\n\n // Link hover styling (underline on hover for xxlarge/xxxlarge)\n ...(isLink &&\n (size === 'xxlarge' || size === 'xxxlarge') && {\n '&:hover .list-item-primary': {\n textDecoration: 'underline',\n },\n }),\n\n // Badge styling (for xxlarge/xxxlarge link variant)\n '& .list-item-badge': {\n fontSize: theme.typography.pxToRem(\n size === 'xxlarge' || size === 'xxxlarge'\n ? (config as typeof sizeConfig.xxlarge).badgeFontSize || 12\n : 12\n ),\n lineHeight: 1.5,\n fontWeight: typography.fontWeight.regular,\n color: semanticColors.typography.bodySecondary,\n },\n\n // Secondary text styling - wraps with word break\n '& .list-item-secondary': {\n fontSize: theme.typography.pxToRem(\n 'secondaryFontSize' in config ? config.secondaryFontSize : config.fontSize\n ),\n lineHeight: size === 'large' ? 1.5 : 1.4,\n fontWeight: typography.fontWeight.regular,\n color: semanticColors.typography.bodySecondary,\n wordBreak: 'break-word',\n whiteSpace: 'normal',\n ...(size === 'large' && {\n marginBottom: -2,\n }),\n },\n\n // Trailing element styling (e.g., chevron icon)\n '& .list-item-trailing': {\n display: 'flex',\n alignItems: 'center',\n flexShrink: 0,\n marginLeft: spacing.spacing_1,\n color: semanticColors.icons.default,\n },\n\n // Hover state\n '&:hover': {\n backgroundColor: semanticColors.input.background,\n },\n\n // Selected/Active state\n // Font weights per Figma:\n // - Primary: small/medium/xxlarge use 500, large/xlarge use 600\n // - Secondary: large/xlarge use 500, xxlarge uses 400\n [`&.${listItemButtonClasses.selected}`]: {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n\n '&:hover': {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n },\n\n [`& .${listItemIconClasses.root}`]: {\n color: semanticColors.icons.pressed,\n },\n\n '& .list-item-primary': {\n fontWeight:\n size === 'large' || size === 'xlarge'\n ? typography.fontWeight.semiBold\n : typography.fontWeight.medium,\n color: semanticColors.typography.navigation.default,\n },\n\n '& .list-item-secondary': {\n fontWeight:\n size === 'large' || size === 'xlarge'\n ? typography.fontWeight.medium\n : typography.fontWeight.regular,\n },\n },\n\n // Disabled state\n [`&.${listItemButtonClasses.disabled}`]: {\n backgroundColor: semanticColors.input.disabledBackground,\n opacity: 1,\n\n [`& .${listItemIconClasses.root}`]: {\n color: semanticColors.icons.disabled,\n },\n\n '& .list-item-primary': {\n color: semanticColors.buttons.tertiary.disabled,\n },\n\n '& .list-item-secondary': {\n color: semanticColors.buttons.tertiary.disabled,\n },\n\n '& .list-item-badge': {\n color: semanticColors.buttons.tertiary.disabled,\n },\n\n '& .list-item-trailing': {\n color: semanticColors.icons.disabled,\n },\n },\n }\n})\n\n/**\n * Props for the ModListItem component\n */\nexport interface ModListItemProps extends Omit<ListItemButtonProps, 'children' | 'size' | 'color'> {\n /**\n * The size variant of the list item\n * @default \"medium\"\n */\n size?: 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge' | 'xxxlarge'\n\n /**\n * Primary text content (required)\n */\n primaryText: ReactNode\n\n /**\n * Secondary/supporting text content (optional, shown in large/xlarge/xxlarge/xxxlarge)\n */\n secondaryText?: ReactNode\n\n /**\n * Badge content for count display (optional, for xxlarge/xxxlarge link variant)\n */\n badge?: ReactNode\n\n /**\n * Icon or logo element (optional, scales based on size)\n */\n icon?: ReactNode\n\n /**\n * The component used for the root node (for polymorphic behavior)\n * @default 'button'\n */\n component?: React.ElementType\n\n /**\n * Whether this is a link variant (applies link styling)\n * @default false\n */\n isLink?: boolean\n\n /**\n * Trailing element (optional, e.g., chevron icon for navigation)\n * Renders at the end of the list item, typically used for navigation indicators.\n */\n trailingElement?: ReactNode\n}\n\n/**\n * ModListItem - Flexible list item component with multiple size variants and states\n *\n * A versatile list item component built on MUI's ListItemButton that supports six size variants\n * (small to xxxlarge), interactive states (default, selected, disabled, link), and optional\n * icons/logos, secondary text, and badges.\n *\n * Design Tokens Used:\n * - semanticColors.typography.body (default text)\n * - semanticColors.typography.body-secondary (secondary text)\n * - semanticColors.typography.link.primary (link text)\n * - semanticColors.icon.placeholder (default icon color)\n * - semanticColors.icon.pressed (active icon color)\n * - semanticColors.icon.disabled (disabled icon color)\n * - semanticColors.buttons.secondary.hover-background (active background)\n * - semanticColors.surface.input.background (default background)\n * - semanticColors.surface.input.disabled-background (disabled background)\n * - semanticColors.buttons.tertiary.disabled (disabled text color)\n */\nexport const ModListItem = ({\n size = 'medium',\n primaryText,\n secondaryText,\n badge,\n icon,\n isLink = false,\n trailingElement,\n component,\n ...props\n}: ModListItemProps) => {\n // Determine if secondary text should be shown based on size\n const showSecondaryText =\n secondaryText &&\n (size === 'large' || size === 'xlarge' || size === 'xxlarge' || size === 'xxxlarge')\n\n // Determine if badge should be shown (for xxlarge/xxxlarge)\n const showBadge = badge && (size === 'xxlarge' || size === 'xxxlarge')\n\n // Prepare primary text with badge if needed\n const primaryContent = showBadge ? (\n <>\n {primaryText}{' '}\n <Typography component=\"span\" className=\"list-item-badge\">\n {badge}\n </Typography>\n </>\n ) : (\n primaryText\n )\n\n return (\n <StyledListItemButton\n size={size}\n isLink={isLink}\n hasSecondaryText={!!showSecondaryText}\n {...(component && { component })}\n {...props}\n >\n {icon && <ListItemIcon>{icon}</ListItemIcon>}\n <ListItemText\n primary={primaryContent}\n secondary={showSecondaryText ? secondaryText : undefined}\n sx={{ minWidth: 0, flex: 1 }}\n slotProps={{\n primary: { className: 'list-item-primary' },\n secondary: { className: 'list-item-secondary' },\n }}\n />\n {trailingElement && <Box className=\"list-item-trailing\">{trailingElement}</Box>}\n </StyledListItemButton>\n )\n}\n\nModListItem.displayName = 'ModListItem'\n","import { borderRadius, semanticColors, spacing } from '@moderneinc/design-system-tokens'\nimport type { ListItemButtonProps } from '@mui/material/ListItemButton'\nimport MuiListItemButton, { listItemButtonClasses } from '@mui/material/ListItemButton'\nimport { listItemIconClasses } from '@mui/material/ListItemIcon'\nimport { listItemTextClasses } from '@mui/material/ListItemText'\nimport { styled, type Theme } from '@mui/material/styles'\n\ntype ListItemButtonVariant = 'card' | 'nav'\n\nconst StyledListItemButton = styled(MuiListItemButton, {\n shouldForwardProp: prop => prop !== 'listVariant',\n})<{ listVariant?: ListItemButtonVariant }>(({ theme, listVariant = 'card' }) =>\n listVariant === 'nav' ? navVariantStyles(theme) : cardVariantStyles(theme)\n)\n\n// Nav variant — sidebar list item: no border, compact, subtle highlights.\n// Renders children inline; no ListItemIcon/ListItemText wrappers required.\nfunction navVariantStyles(theme: Theme) {\n return {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_2,\n borderRadius: borderRadius.s,\n paddingTop: spacing.spacing_1,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_2,\n paddingRight: spacing.spacing_2,\n border: 'none',\n color: semanticColors.typography.bodySecondary,\n backgroundColor: 'transparent',\n transition: theme.transitions.create(['background-color', 'color']),\n\n [`&.${listItemButtonClasses.selected}`]: {\n backgroundColor: semanticColors.surfaces.activeHighlight,\n color: semanticColors.typography.body,\n '&:hover': {\n backgroundColor: semanticColors.surfaces.activeHighlight,\n },\n },\n\n [`&:not(.${listItemButtonClasses.selected}):not(.${listItemButtonClasses.disabled})`]: {\n '&:hover': {\n backgroundColor: semanticColors.surfaces.listHover,\n color: semanticColors.typography.body,\n },\n },\n\n [`&.${listItemButtonClasses.focusVisible}`]: {\n outline: `2px solid ${semanticColors.border.focus}`,\n outlineOffset: -2,\n },\n\n [`&.${listItemButtonClasses.disabled}`]: {\n color: semanticColors.typography.button.disabled,\n opacity: 1,\n },\n }\n}\n\nfunction cardVariantStyles(theme: Theme) {\n return {\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_2,\n borderRadius: borderRadius.m,\n paddingTop: spacing.spacing_1,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_3_4,\n paddingRight: spacing.spacing_3_4,\n border: `1px solid ${semanticColors.border.primary}`,\n backgroundColor: semanticColors.surfaces.white,\n transition: theme.transitions.create(['border', 'background-color']),\n\n // Active (selected) state\n [`&.${listItemButtonClasses.selected}`]: {\n border: `2px solid ${semanticColors.buttons.primary.default}`,\n backgroundColor: semanticColors.surfaces.white,\n\n '&:hover': {\n backgroundColor: semanticColors.surfaces.white,\n },\n\n // Icon color in selected state\n [`& .${listItemIconClasses.root}`]: {\n color: semanticColors.icons.default,\n },\n\n // Text colors in selected state\n [`& .${listItemTextClasses.primary}`]: {\n color: semanticColors.typography.body,\n },\n\n [`& .${listItemTextClasses.secondary}`]: {\n color: semanticColors.typography.bodySecondary,\n },\n },\n\n // Deselected (default) state\n [`&:not(.${listItemButtonClasses.selected}):not(.${listItemButtonClasses.disabled})`]: {\n '&:hover': {\n backgroundColor: semanticColors.surfaces.listHover,\n },\n\n [`& .${listItemIconClasses.root}`]: {\n color: semanticColors.icons.disabled,\n },\n\n [`& .${listItemTextClasses.primary}`]: {\n color: semanticColors.buttons.tertiary.disabled,\n },\n\n [`& .${listItemTextClasses.secondary}`]: {\n color: semanticColors.typography.button.disabled,\n },\n },\n\n // Focus state\n [`&.${listItemButtonClasses.focusVisible}`]: {\n outline: `2px solid ${semanticColors.buttons.primary.default}`,\n outlineOffset: 2,\n border: `2px solid ${semanticColors.buttons.primary.default}`,\n backgroundColor: semanticColors.surfaces.white,\n\n [`& .${listItemIconClasses.root}`]: {\n color: semanticColors.icons.default,\n },\n\n [`& .${listItemTextClasses.primary}`]: {\n color: semanticColors.typography.body,\n },\n\n [`& .${listItemTextClasses.secondary}`]: {\n color: semanticColors.typography.bodySecondary,\n },\n },\n\n // Disabled state\n [`&.${listItemButtonClasses.disabled}`]: {\n backgroundColor: semanticColors.surface.sunken,\n opacity: 1, // Override MUI default opacity\n\n [`& .${listItemIconClasses.root}`]: {\n color: semanticColors.icons.disabled,\n },\n\n [`& .${listItemTextClasses.primary}`]: {\n color: semanticColors.typography.button.disabled,\n },\n\n [`& .${listItemTextClasses.secondary}`]: {\n color: semanticColors.typography.button.disabled,\n },\n },\n } as const\n}\n\n/**\n * Props for the ModListItemButton component\n */\nexport interface ModListItemButtonProps extends ListItemButtonProps {\n /**\n * Whether the list item is selected\n * @default false\n */\n selected?: boolean\n\n /**\n * Whether the list item is disabled\n * @default false\n */\n disabled?: boolean\n\n /**\n * Visual treatment.\n * - `card` (default): bordered card-style for settings/radio-list patterns.\n * Expects ListItemIcon + ListItemText children for full styling support.\n * - `nav`: borderless sidebar nav style with subtle hover/selected\n * highlights. Renders children inline; works with plain text.\n * @default 'card'\n */\n variant?: ListItemButtonVariant\n}\n\n/**\n * ModListItemButton - Selectable list item with icon and text\n *\n * A selectable list item component that displays an optional icon with primary\n * and secondary text. Supports active (selected), deselected, focus, and disabled states.\n *\n * Uses MUI's ListItemButton as base for proper accessibility and interaction.\n * Compose with ListItemIcon and ListItemText for proper structure.\n *\n * @example\n * ```tsx\n * <ModListItemButton selected>\n * <ListItemIcon>\n * <PanelLeft size={36} />\n * </ListItemIcon>\n * <ListItemText\n * primary=\"Always pin recipe list to the LEFT\"\n * secondary=\"This will display the recipe topology in a small box to the left of the recipe list\"\n * />\n * </ModListItemButton>\n * ```\n *\n * Design Tokens Used (hex values omitted — they are generated from Figma and drift):\n * - semanticColors.buttons.primary.default - Active border\n * - semanticColors.border.primary - Default/disabled border\n * - semanticColors.icons.default - Active icon color\n * - semanticColors.icons.disabled - Deselected/disabled icon fill (not a text color)\n * - semanticColors.buttons.tertiary.disabled - Deselected text color\n * - semanticColors.typography.bodySecondary - Active secondary text\n * - semanticColors.typography.button.disabled - Disabled text (button-scoped)\n * - typography.body - Active primary text\n * - semanticColors.surface.sunken - Disabled background\n */\nexport const ModListItemButton = ({\n children,\n selected = false,\n disabled = false,\n variant = 'card',\n ...props\n}: ModListItemButtonProps) => {\n return (\n <StyledListItemButton selected={selected} disabled={disabled} listVariant={variant} {...props}>\n {children}\n </StyledListItemButton>\n )\n}\n\nModListItemButton.displayName = 'ModListItemButton'\n","import { borderRadius, semanticColors, shadows, spacing } from '@moderneinc/design-system-tokens'\nimport { listClasses } from '@mui/material/List'\nimport Menu, { type MenuProps } from '@mui/material/Menu'\nimport { paperClasses } from '@mui/material/Paper'\nimport { styled } from '@mui/material/styles'\n\nconst StyledMenu = styled(Menu)(() => ({\n [`& .${paperClasses.root}`]: {\n backgroundColor: semanticColors.surfaces.white,\n borderRadius: borderRadius.s,\n border: `1px solid ${semanticColors.border.primary}`,\n boxShadow: `${shadows.dropdown.x}px ${shadows.dropdown.y}px ${shadows.dropdown.blur}px ${shadows.dropdown.spread}px ${shadows.dropdown.shadow}`,\n marginTop: spacing.spacing_1,\n paddingTop: spacing.spacing_1,\n paddingBottom: spacing.spacing_1,\n },\n [`& .${listClasses.root}`]: {\n padding: 0,\n },\n}))\n\nexport interface ModMenuProps extends MenuProps {\n /**\n * Menu content (typically ModMenuItem components)\n */\n children?: React.ReactNode\n}\n\n/**\n * ModMenu - Menu component based on MUI Menu\n *\n * @example\n * ```tsx\n * const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n * const open = Boolean(anchorEl);\n *\n * <Button onClick={(e) => setAnchorEl(e.currentTarget)}>Open Menu</Button>\n * <ModMenu\n * open={open}\n * anchorEl={anchorEl}\n * onClose={() => setAnchorEl(null)}\n * >\n * <ModMenuItem icon={<Icon />} shortcut=\"⌘+P\">View profile</ModMenuItem>\n * <ModMenuItem>Settings</ModMenuItem>\n * </ModMenu>\n * ```\n */\nexport const ModMenu = ({ children, ...props }: ModMenuProps) => {\n return <StyledMenu {...props}>{children}</StyledMenu>\n}\n\nModMenu.displayName = 'ModMenu'\n","import { spacing } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport type { GridRenderCellParams } from '@mui/x-data-grid'\nimport { GridActionsCell } from '@mui/x-data-grid'\nimport type { ReactNode } from 'react'\n\nconst StyledActionsCell = styled(GridActionsCell)({\n gap: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_2,\n paddingRight: spacing.spacing_1_1_2,\n})\n\nexport interface ModActionsCellProps extends Omit<GridRenderCellParams, 'api'> {\n api?: GridRenderCellParams['api']\n children: ReactNode\n position?: 'bottom-end' | 'bottom-start' | 'top-end' | 'top-start'\n suppressChildrenValidation?: boolean\n}\n\nexport function ModActionsCell(props: ModActionsCellProps) {\n return <StyledActionsCell {...props} />\n}\n","import { semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport { ModGeneralAvatar } from '../GeneralAvatar/GeneralAvatar'\n\nconst StyledCell = styled('div', {\n shouldForwardProp: prop => prop !== 'disabled',\n})<{ disabled: boolean }>(({ disabled }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_1, // 8px between avatar and label\n width: '100%',\n height: '100%',\n paddingLeft: spacing.spacing_1_1_2, // 12px — input-horizontal\n paddingRight: spacing.spacing_1_1_2,\n paddingTop: spacing.spacing_1_2, // 4px — input-vertical\n paddingBottom: spacing.spacing_1_2,\n backgroundColor: disabled\n ? semanticColors.surfaces.dataGrid.disabled\n : semanticColors.surfaces.dataGrid.default,\n boxSizing: 'border-box',\n}))\n\nconst LabelText = styled('span', {\n shouldForwardProp: prop => prop !== 'disabled',\n})<{ disabled: boolean }>(({ disabled }) => ({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n fontFamily: typography.fontFamily.body,\n fontSize: typography.fontSize.xs,\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n color: disabled ? semanticColors.typography.bodySecondary : semanticColors.typography.body,\n}))\n\ntype ModAvatarCellBase = {\n disabled?: boolean\n}\n\ntype ModAvatarCellEmpty = ModAvatarCellBase & {\n empty: true\n name?: never\n src?: never\n label?: never\n}\n\ntype ModAvatarCellContent = ModAvatarCellBase & {\n empty?: false\n name?: string\n src?: string\n label?: string\n}\n\nexport type ModAvatarCellProps = ModAvatarCellEmpty | ModAvatarCellContent\n\n/**\n * ModAvatarCell — DataGrid cell displaying a user avatar with optional label.\n */\nexport const ModAvatarCell = ({\n name,\n src,\n label,\n disabled = false,\n empty = false,\n}: ModAvatarCellProps) => {\n if (empty) {\n return <StyledCell disabled={disabled} />\n }\n\n return (\n <StyledCell disabled={disabled}>\n <ModGeneralAvatar size=\"small\" src={src} alt={name}>\n {!src && name ? name.charAt(0).toUpperCase() : undefined}\n </ModGeneralAvatar>\n {label && <LabelText disabled={disabled}>{label}</LabelText>}\n </StyledCell>\n )\n}\n\nModAvatarCell.displayName = 'ModAvatarCell'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport Dialog, { type DialogProps, dialogClasses } from '@mui/material/Dialog'\nimport DialogActions, { dialogActionsClasses } from '@mui/material/DialogActions'\nimport DialogContent, { dialogContentClasses } from '@mui/material/DialogContent'\nimport IconButton from '@mui/material/IconButton'\nimport Link from '@mui/material/Link'\nimport type { SxProps, Theme } from '@mui/material/styles'\nimport { styled } from '@mui/material/styles'\nimport { X } from 'lucide-react'\nimport type { ComponentType, ReactNode } from 'react'\n\n// ============================================================================\n// ModModal - Main Dialog Container\n// ============================================================================\n\nconst StyledDialog = styled(Dialog)({\n [`& .${dialogClasses.paper}`]: {\n backgroundColor: semanticColors.surfaces.white,\n borderRadius: borderRadius.card,\n border: `1px solid ${semanticColors.border.primary}`,\n boxShadow: 'none',\n },\n\n [`& .${dialogClasses.container}`]: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n})\n\nexport interface ModModalProps extends Omit<DialogProps, 'children'> {\n /**\n * Dialog content\n */\n children?: ReactNode\n}\n\n/**\n * ModModal - Main modal dialog container based on MUI Dialog\n *\n * This is a composition component. Use with ModModalHeader, ModModalContent, and ModModalFooter:\n *\n * @example\n * <ModModal open={open} onClose={handleClose}>\n * <ModModalHeader\n * title=\"Title\"\n * subtitle=\"Subtitle\"\n * onClose={handleClose}\n * />\n * <ModModalContent>\n * Content goes here\n * </ModModalContent>\n * <ModModalFooter>\n * <ModButton onClick={handleClose}>Action</ModButton>\n * </ModModalFooter>\n * </ModModal>\n */\nexport const ModModal = ({ children, ...props }: ModModalProps) => {\n return <StyledDialog {...props}>{children}</StyledDialog>\n}\n\nModModal.displayName = 'ModModal'\n\n// ============================================================================\n// ModModalHeader - Title, Subtitle, and Close Button\n// ============================================================================\n\nconst ModalHeaderRoot = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n})\n\nconst ModalHeaderTitleRow = styled('div')({\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n paddingTop: spacing.spacing_3,\n paddingRight: spacing.spacing_4,\n paddingBottom: spacing.spacing_3,\n paddingLeft: spacing.spacing_4,\n})\n\nconst ModalHeaderTextContainer = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n minWidth: 0,\n})\n\nconst ModalHeaderTitle = styled('h2')(({ theme }) => ({\n margin: 0,\n fontFamily: typography.fontFamily.heading,\n fontWeight: typography.fontWeight.medium,\n fontSize: theme.typography.pxToRem(typography.fontSize.h3),\n lineHeight: 1.4,\n color: semanticColors.typography.navigation.default,\n}))\n\nconst modalHeaderTitleLinkStyles = {\n margin: 0,\n fontFamily: typography.fontFamily.heading,\n fontWeight: typography.fontWeight.medium,\n fontSize: typography.fontSize.h3,\n lineHeight: 1.4,\n color: semanticColors.typography.link.primary,\n textDecoration: 'none',\n '&:hover': {\n color: semanticColors.buttons.tertiary.hover,\n textDecoration: 'underline',\n },\n} as const\n\nconst ModalHeaderSubtitle = styled('p')(({ theme }) => ({\n margin: 0,\n fontFamily: typography.fontFamily.body,\n fontWeight: typography.fontWeight.regular,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n lineHeight: 1.4,\n color: semanticColors.typography.bodySecondary,\n}))\n\nconst StyledCloseButton = styled(IconButton)({\n color: semanticColors.icons.utility,\n paddingTop: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n width: 24,\n height: 24,\n flexShrink: 0,\n\n '&:hover': {\n backgroundColor: 'transparent',\n color: semanticColors.icons.utility,\n },\n})\n\nexport interface ModModalHeaderProps {\n /**\n * Main title text\n */\n title?: string\n\n /**\n * Optional subtitle text or element\n */\n subtitle?: ReactNode\n\n /**\n * URL to link the title to. When provided, title renders as a link.\n */\n href?: string\n\n /**\n * Custom Link component to use for the title link.\n * Required when href is provided to support framework-specific routing (e.g., Next.js Link).\n */\n LinkComponent?: ComponentType<{ href: string; children: ReactNode; sx?: SxProps<Theme> }>\n\n /**\n * Close button handler\n */\n onClose?: () => void\n\n /**\n * Hide the close button\n * @default false\n */\n hideCloseButton?: boolean\n\n /**\n * Additional content to render below title/subtitle (e.g., tabs)\n */\n children?: ReactNode\n}\n\n/**\n * ModModalHeader - Header section with title, optional subtitle, and close button\n */\nexport const ModModalHeader = ({\n title,\n subtitle,\n href,\n LinkComponent,\n onClose,\n hideCloseButton = false,\n children,\n}: ModModalHeaderProps) => {\n const renderTitle = () => {\n if (!title) {\n return null\n }\n\n if (href && LinkComponent) {\n return (\n <ModalHeaderTitle as=\"h2\">\n <LinkComponent href={href} sx={modalHeaderTitleLinkStyles}>\n {title}\n </LinkComponent>\n </ModalHeaderTitle>\n )\n }\n\n if (href) {\n return (\n <ModalHeaderTitle as=\"h2\">\n <Link href={href} sx={modalHeaderTitleLinkStyles}>\n {title}\n </Link>\n </ModalHeaderTitle>\n )\n }\n\n return <ModalHeaderTitle>{title}</ModalHeaderTitle>\n }\n\n return (\n <ModalHeaderRoot>\n <ModalHeaderTitleRow>\n <ModalHeaderTextContainer>\n {renderTitle()}\n {subtitle && <ModalHeaderSubtitle>{subtitle}</ModalHeaderSubtitle>}\n </ModalHeaderTextContainer>\n {!hideCloseButton && onClose && (\n <StyledCloseButton onClick={onClose} aria-label=\"Close\">\n <X size={24} />\n </StyledCloseButton>\n )}\n </ModalHeaderTitleRow>\n {children}\n </ModalHeaderRoot>\n )\n}\n\nModModalHeader.displayName = 'ModModalHeader'\n\n// ============================================================================\n// ModModalContent - Main Content Area\n// ============================================================================\n\nconst StyledDialogContent = styled(DialogContent)(({ theme }) => ({\n paddingTop: 0,\n paddingRight: spacing.spacing_4,\n paddingBottom: spacing.spacing_3,\n paddingLeft: spacing.spacing_4,\n fontFamily: typography.fontFamily.body,\n fontWeight: typography.fontWeight.regular,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n lineHeight: 1.5,\n color: semanticColors.typography.navigation.default,\n\n [`&.${dialogContentClasses.root}`]: {\n paddingTop: 0,\n paddingRight: spacing.spacing_4,\n paddingBottom: spacing.spacing_4,\n paddingLeft: spacing.spacing_4,\n },\n}))\n\nexport interface ModModalContentProps {\n /**\n * Content to display in the modal body\n */\n children?: ReactNode\n}\n\n/**\n * ModModalContent - Main content area of the modal\n */\nexport const ModModalContent = ({ children }: ModModalContentProps) => {\n return <StyledDialogContent dividers={false}>{children}</StyledDialogContent>\n}\n\nModModalContent.displayName = 'ModModalContent'\n\n// ============================================================================\n// ModModalFooter - Action Buttons Area\n// ============================================================================\n\nconst StyledDialogActions = styled(DialogActions)({\n paddingTop: 0,\n paddingRight: spacing.spacing_4,\n paddingBottom: spacing.spacing_4,\n paddingLeft: spacing.spacing_4,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n\n [`&.${dialogActionsClasses.root}`]: {\n paddingTop: 0,\n paddingRight: spacing.spacing_4,\n paddingBottom: spacing.spacing_4,\n paddingLeft: spacing.spacing_4,\n },\n})\n\nconst FooterActionsGroup = styled('div')({\n display: 'flex',\n gap: spacing.spacing_2,\n alignItems: 'center',\n marginLeft: 'auto',\n})\n\nexport interface ModModalFooterProps {\n /**\n * Optional leading icon or content (e.g., settings icon)\n */\n leadingContent?: ReactNode\n\n /**\n * Action buttons (typically ModButton components)\n */\n children?: ReactNode\n}\n\n/**\n * ModModalFooter - Footer section with optional leading content and action buttons\n */\nexport const ModModalFooter = ({ leadingContent, children }: ModModalFooterProps) => {\n return (\n <StyledDialogActions>\n {leadingContent}\n <FooterActionsGroup>{children}</FooterActionsGroup>\n </StyledDialogActions>\n )\n}\n\nModModalFooter.displayName = 'ModModalFooter'\n","import { semanticColors } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport type { ReactNode } from 'react'\nimport { ModIconWrapper } from '../IconWrapper/IconWrapper'\n\nconst CellRoot = styled('div', {\n shouldForwardProp: prop => prop !== 'disabled',\n})<{ disabled?: boolean }>(({ disabled }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n height: '100%',\n color: disabled ? semanticColors.icons.disabled : semanticColors.icons.default,\n}))\n\nexport interface ModIconCellProps {\n icon?: ReactNode\n ariaLabel?: string\n disabled?: boolean\n}\n\n/**\n * ModIconCell — Icon cell for DataGrid. Renders an icon centered in the cell.\n */\nexport const ModIconCell = ({ icon, ariaLabel, disabled = false }: ModIconCellProps) => {\n if (!icon) return null\n return (\n <CellRoot disabled={disabled} aria-label={ariaLabel}>\n <ModIconWrapper size={16}>{icon}</ModIconWrapper>\n </CellRoot>\n )\n}\n\nModIconCell.displayName = 'ModIconCell'\n","import { semanticColors, spacing } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport { ModIconWrapper } from '../IconWrapper/IconWrapper'\n\nconst CellWrapper = styled('div', {\n shouldForwardProp: prop => prop !== 'disabled',\n})<{ disabled?: boolean }>(({ disabled }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n width: '100%',\n height: '100%',\n paddingLeft: spacing.spacing_1,\n paddingRight: spacing.spacing_1,\n backgroundColor: disabled\n ? semanticColors.surfaces.dataGrid.disabled\n : semanticColors.surfaces.dataGrid.default,\n '& img': {\n display: 'block',\n maxHeight: 32,\n width: 'auto',\n maxWidth: '100%',\n objectFit: 'contain' as const,\n opacity: disabled ? 0.4 : 1,\n },\n}))\n\ntype ModLogoCellNoSrc = {\n src?: undefined\n alt?: string\n disabled?: boolean\n}\n\ntype ModLogoCellWithSrc = {\n src: string\n alt: string\n disabled?: boolean\n}\n\nexport type ModLogoCellProps = ModLogoCellNoSrc | ModLogoCellWithSrc\n\n/**\n * ModLogoCell — DataGrid cell displaying a raster or SVG logo image.\n *\n * Kept separate from ModIconCell to match the design system Icon/Logo component split:\n * - ModIconCell: MUI SvgIcon components\n * - ModLogoCell: raster or SVG image URLs (img tag)\n */\nexport const ModLogoCell = ({ src, alt = '', disabled = false }: ModLogoCellProps) => {\n if (!src) {\n return <CellWrapper disabled={disabled} />\n }\n\n return (\n <CellWrapper disabled={disabled}>\n <ModIconWrapper size={32}>\n <img src={src} alt={alt} />\n </ModIconWrapper>\n </CellWrapper>\n )\n}\n\nModLogoCell.displayName = 'ModLogoCell'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport LinearProgress, {\n type LinearProgressProps,\n linearProgressClasses,\n} from '@mui/material/LinearProgress'\nimport { styled } from '@mui/material/styles'\nimport Typography from '@mui/material/Typography'\n\nconst StyledLinearProgress = styled(LinearProgress, {\n shouldForwardProp: prop => prop !== 'labelPosition',\n})<{ labelPosition?: 'none' | 'right' | 'top' | 'bottom' }>(() => ({\n height: 8,\n borderRadius: borderRadius.xS,\n backgroundColor: semanticColors.progress.track,\n\n [`& .${linearProgressClasses.bar}`]: {\n borderRadius: borderRadius.xS,\n backgroundColor: semanticColors.progress.fill,\n },\n\n [`&.${linearProgressClasses.colorPrimary}`]: {\n backgroundColor: semanticColors.progress.track,\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: semanticColors.status.active.default,\n },\n },\n\n // Cancelled variant uses warning color\n '&[data-variant=\"cancelled\"]': {\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: semanticColors.status.warning.default,\n },\n },\n}))\n\nconst ProgressWrapper = styled('div')<{ labelPosition: 'none' | 'right' | 'top' | 'bottom' }>(\n ({ labelPosition }) => ({\n display: 'flex',\n width: '100%',\n ...(labelPosition === 'right' && {\n flexDirection: 'row',\n alignItems: 'center',\n gap: spacing.spacing_3,\n }),\n ...(labelPosition === 'top' && {\n flexDirection: 'column-reverse',\n alignItems: 'flex-end',\n gap: spacing.spacing_2,\n }),\n ...(labelPosition === 'bottom' && {\n flexDirection: 'column',\n alignItems: 'flex-end',\n gap: spacing.spacing_2,\n }),\n ...(labelPosition === 'none' && {\n flexDirection: 'row',\n }),\n })\n)\n\nconst ProgressLabel = styled(Typography)(({ theme }) => ({\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.medium,\n color: semanticColors.typography.body,\n lineHeight: 1.4,\n whiteSpace: 'nowrap',\n flexShrink: 0,\n}))\n\nconst ProgressBarContainer = styled('div')<{ labelPosition: 'none' | 'right' | 'top' | 'bottom' }>(\n ({ labelPosition }) => ({\n flexGrow: labelPosition === 'right' ? 1 : 0,\n width: labelPosition === 'right' ? 'auto' : '100%',\n })\n)\n\nexport interface ModProgressbarProps extends Omit<LinearProgressProps, 'variant'> {\n /**\n * The value of the progress indicator for the determinate variant.\n * Value between 0 and 100.\n * @default 0\n */\n value?: number\n\n /**\n * Position of the label showing the progress percentage\n * @default \"none\"\n */\n labelPosition?: 'none' | 'right' | 'top' | 'bottom'\n\n /**\n * The variant of the progress indicator\n * @default \"default\"\n */\n variant?: 'default' | 'cancelled'\n\n /**\n * Custom label text to display instead of the percentage\n */\n labelText?: string\n}\n\n/**\n * ModProgressbar - Linear progress indicator based on MUI LinearProgress\n *\n * Design Decisions (from Issue #75):\n * - MUI Base Component: LinearProgress (provides accessibility, animations, progress tracking)\n * - Label Positioning: Single labelPosition prop with values 'none', 'right', 'top', 'bottom'\n * - Cancelled State: Separate variant prop (variant='cancelled') alongside value prop\n */\nexport const ModProgressbar = ({\n value = 0,\n labelPosition = 'none',\n variant = 'default',\n labelText,\n ...props\n}: ModProgressbarProps) => {\n const showLabel = labelPosition !== 'none'\n const displayLabel = labelText || (variant === 'cancelled' ? 'Canceled' : `${Math.round(value)}%`)\n\n return (\n <ProgressWrapper labelPosition={labelPosition}>\n <ProgressBarContainer labelPosition={labelPosition}>\n <StyledLinearProgress\n variant=\"determinate\"\n value={variant === 'cancelled' ? 100 : value}\n data-variant={variant}\n labelPosition={labelPosition}\n {...props}\n />\n </ProgressBarContainer>\n {showLabel && <ProgressLabel>{displayLabel}</ProgressLabel>}\n </ProgressWrapper>\n )\n}\n\nModProgressbar.displayName = 'ModProgressbar'\n","import { semanticColors, spacing } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport { ModProgressbar } from '../Progressbar/Progressbar'\n\nconst StyledCell = styled('div', {\n shouldForwardProp: prop => prop !== 'disabled',\n})<{ disabled: boolean }>(({ disabled }) => ({\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n height: '100%',\n paddingLeft: spacing.spacing_1_1_2, // 12px input-horizontal\n paddingRight: spacing.spacing_1_1_2,\n backgroundColor: disabled\n ? semanticColors.surfaces.dataGrid.disabled\n : semanticColors.surfaces.dataGrid.default,\n boxSizing: 'border-box',\n}))\n\ntype ModProgressCellBase = {\n disabled?: boolean\n}\n\ntype ModProgressCellEmpty = ModProgressCellBase & {\n empty: true\n value?: never\n}\n\ntype ModProgressCellContent = ModProgressCellBase & {\n empty?: false\n value?: number\n}\n\nexport type ModProgressCellProps = ModProgressCellEmpty | ModProgressCellContent\n\n/**\n * ModProgressCell — DataGrid cell displaying a linear progress indicator.\n */\nexport const ModProgressCell = ({\n value = 0,\n disabled = false,\n empty = false,\n}: ModProgressCellProps) => {\n const clampedValue = Math.min(100, Math.max(0, value))\n return (\n <StyledCell disabled={disabled}>\n {!empty && <ModProgressbar value={clampedValue} labelPosition=\"none\" />}\n </StyledCell>\n )\n}\n\nModProgressCell.displayName = 'ModProgressCell'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport Box from '@mui/material/Box'\nimport { styled } from '@mui/material/styles'\nimport Tooltip, { tooltipClasses } from '@mui/material/Tooltip'\nimport type { ReactNode } from 'react'\n\nexport type ModStatusCellVariant = 'success' | 'error' | 'warning' | 'info' | 'neutral'\n\nconst variantColors = (variant: ModStatusCellVariant) => ({\n bg: semanticColors.status[variant].light,\n fg: semanticColors.status[variant].dark,\n border: semanticColors.status[variant].transparent,\n})\n\nconst StyledChip = styled('div', {\n shouldForwardProp: prop => prop !== 'disabled' && prop !== 'variant',\n})<{ disabled: boolean; variant: ModStatusCellVariant }>(({ disabled, variant }) => {\n const colors = variantColors(variant)\n return {\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.spacing_3_4,\n paddingTop: spacing.spacing_1_2,\n paddingBottom: spacing.spacing_1_2,\n paddingLeft: spacing.spacing_1_1_2,\n paddingRight: spacing.spacing_1_1_2,\n borderRadius: borderRadius.full,\n border: `1px solid ${disabled ? semanticColors.border.secondary : colors.border}`,\n backgroundColor: disabled ? semanticColors.surfaces.dataGrid.disabled : colors.bg,\n color: disabled ? semanticColors.icons.disabled : colors.fg,\n fontFamily: typography.fontFamily.body,\n fontSize: typography.fontSize.xs,\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1,\n // Tabular figures, no tracking — see Badge.tsx.\n fontVariantNumeric: 'tabular-nums',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n maxWidth: '100%',\n '& svg': {\n flexShrink: 0,\n width: '1em',\n height: '1em',\n fontSize: typography.fontSize.xs,\n },\n }\n})\n\nconst TooltipErrorPre = styled('pre')({\n margin: 0,\n padding: 0,\n fontFamily: typography.fontFamily.code,\n fontSize: typography.fontSize.sm,\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n color: semanticColors.typography.tooltip.default,\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-all',\n maxHeight: 200,\n overflowY: 'auto',\n})\n\nconst StyledTooltip = styled(Tooltip)({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: semanticColors.surfaces.tooltip,\n maxWidth: 400,\n padding: `${spacing.spacing_1}px ${spacing.spacing_1_1_2}px`,\n },\n [`& .${tooltipClasses.arrow}`]: {\n color: semanticColors.surfaces.tooltip,\n },\n})\n\ntype ModStatusCellBase = { disabled?: boolean }\n\ntype ModStatusCellEmpty = ModStatusCellBase & {\n empty: true\n label?: never\n icon?: never\n variant?: never\n details?: never\n}\n\ntype ModStatusCellContent = ModStatusCellBase & {\n empty?: false\n label: string\n icon?: ReactNode\n variant?: ModStatusCellVariant\n /** Error details shown in a hover tooltip. Clipboard actions should be handled by the consuming app. */\n details?: string\n}\n\nexport type ModStatusCellProps = ModStatusCellEmpty | ModStatusCellContent\n\n/**\n * ModStatusCell — DataGrid cell displaying an icon + label chip with optional error tooltip.\n */\nexport const ModStatusCell = ({\n icon,\n label,\n details,\n disabled = false,\n variant = 'success',\n empty = false,\n}: ModStatusCellProps) => {\n if (empty) {\n return (\n <Box\n component=\"span\"\n sx={{\n color: semanticColors.typography.body,\n fontSize: typography.fontSize.sm,\n lineHeight: 1,\n }}\n >\n {'—'}\n </Box>\n )\n }\n\n const chip = (\n <StyledChip disabled={disabled} variant={variant}>\n {icon}\n {label}\n </StyledChip>\n )\n\n if (details) {\n return (\n <StyledTooltip\n title={<TooltipErrorPre>{details}</TooltipErrorPre>}\n arrow\n placement=\"bottom-start\"\n >\n <Box component=\"span\" sx={{ display: 'inline-flex' }}>\n {chip}\n </Box>\n </StyledTooltip>\n )\n }\n\n return chip\n}\n\nModStatusCell.displayName = 'ModStatusCell'\n","import { semanticColors, spacing } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport { ModGeneralAvatar, type ModGeneralAvatarProps } from '../GeneralAvatar/GeneralAvatar'\n\nconst NavigationAvatarContainer = styled('div')({\n display: 'flex',\n boxSizing: 'border-box',\n width: spacing.spacing_5,\n height: spacing.spacing_5,\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '50%',\n border: `1px solid ${semanticColors.border.secondary}`,\n backgroundColor: semanticColors.buttons.secondary.defaultBackground,\n\n '&:focus-within': {\n borderColor: semanticColors.border.focus,\n },\n})\n\nexport interface ModNavigationAvatarProps extends Omit<ModGeneralAvatarProps, 'size'> {}\n\n/**\n * ModNavigationAvatar - Compact avatar for navigation contexts\n *\n * Wraps ModGeneralAvatar (size=\"medium\") in a 40px container,\n * providing an interactive area for navigation UI.\n */\nexport const ModNavigationAvatar = ({ children, ...props }: ModNavigationAvatarProps) => {\n return (\n <NavigationAvatarContainer>\n <ModGeneralAvatar size=\"medium\" {...props}>\n {children}\n </ModGeneralAvatar>\n </NavigationAvatarContainer>\n )\n}\n\nModNavigationAvatar.displayName = 'ModNavigationAvatar'\n","import { createContext, useContext } from 'react'\n\nexport type ModSideNavContextValue = {\n collapsed: boolean\n}\n\nexport const ModSideNavContext = createContext<ModSideNavContextValue>({\n collapsed: false,\n})\n\nexport const useModSideNav = (): ModSideNavContextValue => useContext(ModSideNavContext)\n","import {\n borderRadius,\n semanticColors,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/design-system-tokens'\nimport Stack from '@mui/material/Stack'\nimport { styled } from '@mui/material/styles'\nimport Tooltip, { type TooltipProps, tooltipClasses } from '@mui/material/Tooltip'\nimport Typography from '@mui/material/Typography'\nimport type { ReactNode } from 'react'\n\n/**\n * Variant type for ModTooltip\n */\ntype TooltipVariant = 'light' | 'dark' | 'brand'\n\n/**\n * Variant color configuration\n */\nconst variantConfig: Record<TooltipVariant, { backgroundColor: string; color: string }> = {\n light: {\n backgroundColor: semanticColors.surfaces.tooltip, // #4b5563 - medium gray\n color: semanticColors.typography.tooltip.default, // #ffffff - white\n },\n dark: {\n backgroundColor: semanticColors.surfaces.white,\n color: semanticColors.typography.body,\n },\n brand: {\n // snackbarBrand is one of the few tokens Figma fixes across both modes, so\n // its foreground must be fixed too. typography.tooltip.default flips\n // (#ffffff -> #232342), which would put dark navy on dark blue in dark mode.\n backgroundColor: semanticColors.surfaces.snackbarBrand,\n color: semanticColors.typography.linkWhite,\n },\n}\n\n/**\n * Styled MUI Tooltip with design system tokens\n */\n// Route the generated className to the popper slot so the descendant\n// `.MuiTooltip-tooltip` selectors below actually reach the portaled tooltip\n// (styled(Tooltip) alone applies to the anchor, not the popped content).\nconst StyledTooltip = styled(\n ({ className, ...props }: TooltipProps) => <Tooltip {...props} classes={{ popper: className }} />,\n {\n shouldForwardProp: prop => prop !== 'variant' && prop !== 'description',\n }\n)<{ variant?: TooltipVariant; description?: string }>(({ variant = 'light', description }) => {\n const hasDescription = Boolean(description)\n const variantStyles = variantConfig[variant]\n\n return {\n // Style the tooltip content\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: variantStyles.backgroundColor,\n color: variantStyles.color,\n fontSize: typography.fontSize.xs,\n fontWeight: typography.fontWeight.medium,\n lineHeight: hasDescription ? 1.5 : 1,\n borderRadius: hasDescription ? borderRadius.s : borderRadius.xS,\n padding: hasDescription ? spacing.spacing_1_1_2 : `0 ${spacing.spacing_1}px`,\n ...(hasDescription && {\n maxWidth: 296,\n }),\n ...(!hasDescription && {\n height: spacing.spacing_3_1_4,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }),\n boxShadow: `${shadows.neutral.medium.x}px ${shadows.neutral.medium.y}px ${shadows.neutral.medium.blur}px ${shadows.neutral.medium.spread}px ${shadows.neutral.medium.shadow}`,\n },\n\n // Style the arrow\n [`& .${tooltipClasses.arrow}`]: {\n color: variantStyles.backgroundColor,\n },\n }\n})\n\n/**\n * Props for the ModTooltip component\n */\nexport interface ModTooltipProps extends Omit<TooltipProps, 'title' | 'variant'> {\n /**\n * The visual style variant\n * @default \"light\"\n */\n variant?: TooltipVariant\n\n /**\n * The main tooltip content. Accepts a string or any ReactNode, so callers can\n * compose richer content when the `description` variant isn't enough.\n */\n title: ReactNode\n\n /**\n * Optional supporting description text. When provided, shows a larger tooltip\n * with a heading + body hierarchy: title (13px semibold) above a muted\n * description (12px medium).\n * @default undefined\n */\n description?: string\n\n // children is inherited from TooltipProps: ReactElement<unknown, any>\n}\n\n/**\n * ModTooltip - Tooltip component following design system\n *\n * Provides contextual information when users hover over or focus on an element.\n * Supports three visual variants (light, dark, brand) and optional supporting text.\n *\n * Design Tokens Used:\n * - Light: surfaces.tooltip, typography.tooltip.default\n * - Dark: surfaces.white, typography.body\n * - Brand: surfaces.snackbarBrand, typography.linkWhite (both fixed across modes)\n * - Shadow: neutralMedium (0px 8px 15px 0px rgba(31,41,55,0.1))\n * - Typography: fontSize.xs (12), fontSize.caption (13), fontWeight.medium (500), fontWeight.semiBold (600)\n */\nexport const ModTooltip = ({\n variant = 'light',\n title,\n description,\n children,\n arrow = false,\n placement,\n ...props\n}: ModTooltipProps) => {\n // Build the title content\n // If description is provided, create a structured layout with title + description\n // Otherwise, just show the title text\n const titleContent = description ? (\n <Stack sx={{ gap: 0.5 }}>\n <Typography\n sx={{ fontSize: typography.fontSize.caption, fontWeight: typography.fontWeight.semiBold }}\n >\n {title}\n </Typography>\n <Typography\n sx={{\n fontSize: typography.fontSize.xs,\n fontWeight: typography.fontWeight.medium,\n opacity: 0.75,\n }}\n >\n {description}\n </Typography>\n </Stack>\n ) : (\n title\n )\n\n return (\n <StyledTooltip\n variant={variant}\n description={description}\n title={titleContent}\n arrow={arrow}\n placement={placement}\n {...props}\n >\n {children}\n </StyledTooltip>\n )\n}\n\nModTooltip.displayName = 'ModTooltip'\n","import {\n borderRadius,\n semanticColors,\n semanticTypography,\n spacing,\n typography,\n} from '@moderneinc/design-system-tokens'\nimport ButtonBase, { type ButtonBaseProps } from '@mui/material/ButtonBase'\nimport { chipClasses } from '@mui/material/Chip'\nimport { styled } from '@mui/material/styles'\nimport type { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react'\nimport { useModSideNav } from '../SideNav/ModSideNavContext'\nimport type { ModTagOwnProps } from '../Tag/Tag'\nimport { ModTag } from '../Tag/Tag'\nimport { ModTooltip } from '../Tooltip/Tooltip'\nimport { focusRingStyles } from '../utils/focusRing'\n\nconst customProps = ['selected']\n\nconst StyledRoot = styled(ButtonBase, {\n shouldForwardProp: prop => !customProps.includes(prop as string),\n})<{ selected?: boolean }>(({ selected }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.spacing_1_2, // 4px\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.spacing_1, // 8px\n paddingBottom: spacing.spacing_1, // 8px\n paddingLeft: spacing.spacing_1_2, // 4px\n paddingRight: spacing.spacing_1_2, // 4px\n borderRadius: borderRadius.s, // 8px\n cursor: 'pointer',\n textDecoration: 'none',\n\n '&:hover .mod-nav-icon-padding': {\n backgroundColor: semanticColors.accent.tint,\n borderColor: semanticColors.accent.border,\n },\n '&:hover .mod-nav-label': {\n color: semanticColors.text.primary,\n fontWeight: typography.fontWeight.semiBold,\n },\n\n [`& .${chipClasses.root}`]: {\n flexShrink: 0,\n },\n\n '&:focus-visible': {\n ...focusRingStyles,\n },\n\n ...(selected && {\n '& .mod-nav-icon-padding': {\n backgroundColor: semanticColors.accent.tint,\n borderColor: semanticColors.accent.border,\n color: semanticColors.accent.deep,\n },\n '& .mod-nav-label': {\n color: semanticColors.accent.deep,\n fontWeight: typography.fontWeight.semiBold,\n },\n '&:hover .mod-nav-label': {\n color: semanticColors.accent.deep,\n },\n }),\n}))\n\nconst IconPadding = styled('span')({\n display: 'flex',\n alignItems: 'center',\n padding: spacing.spacing_1, // 8px\n borderRadius: borderRadius.xS, // 4px\n border: '1px solid transparent',\n color: semanticColors.icons.default,\n transition: 'background-color 150ms, border-color 150ms, color 150ms',\n})\n\nconst navLabel = semanticTypography.navigationLabel.default\n\nconst Label = styled('span')(({ theme }) => ({\n fontFamily: navLabel.fontFamily,\n fontWeight: navLabel.fontWeight,\n fontSize: theme.typography.pxToRem(navLabel.fontSize),\n lineHeight: navLabel.lineHeight,\n textAlign: 'center',\n color: semanticColors.text.primary,\n width: '100%',\n transition: 'color 150ms',\n}))\n\ntype ModNavigationItemOwnProps = {\n /**\n * Icon element to display\n */\n icon?: ReactNode\n /**\n * Text label below the icon\n */\n label?: string\n /**\n * Whether the item is selected/active\n * @default false\n */\n selected?: boolean\n /**\n * Optional tag badge content (e.g., \"Beta\")\n */\n tag?: string\n /**\n * Hover tooltip shown only when the surrounding ModSideNav is collapsed\n * (and the label is therefore hidden).\n */\n tooltip?: ReactNode\n /**\n * Slot props for internal sub-components.\n */\n slotProps?: {\n /**\n * Props forwarded to the ModTag badge rendered when `tag` is set.\n * Override `intent`, `variant`, or `size` to change appearance — e.g.\n * `{ variant: 'outlined', intent: 'default' }` for a calmer grey badge.\n */\n badge?: ModTagOwnProps & { sx?: Record<string, unknown> }\n }\n /**\n * Additional content\n */\n children?: ReactNode\n}\n\nexport type ModNavigationItemProps<C extends ElementType = typeof ButtonBase> =\n ModNavigationItemOwnProps &\n Omit<ButtonBaseProps, keyof ModNavigationItemOwnProps | 'component'> &\n Omit<ComponentPropsWithoutRef<C>, keyof ModNavigationItemOwnProps | keyof ButtonBaseProps> & {\n component?: C\n }\n\n/**\n * ModNavigationItem - Vertical navigation item with icon, label, and optional tag\n */\nexport function ModNavigationItem<C extends ElementType = typeof ButtonBase>({\n icon,\n label,\n selected = false,\n tag,\n tooltip,\n slotProps,\n children,\n ...props\n}: ModNavigationItemProps<C>) {\n const { collapsed } = useModSideNav()\n // When collapsed the label is hidden, so fall back to it for the tooltip and\n // accessible name — otherwise an icon-only button has no name (WCAG 4.1.2).\n const collapsedTooltip = tooltip ?? label\n\n const item = (\n <StyledRoot\n selected={selected}\n aria-label={collapsed && typeof label === 'string' ? label : undefined}\n disableRipple\n {...(props as ButtonBaseProps)}\n >\n {/* Legacy `neo-*` names ship alongside for one major — consumers select on\n them from their own CSS, where a rename fails silently. */}\n <IconPadding className=\"mod-nav-icon-padding neo-nav-icon-padding\">{icon}</IconPadding>\n {!collapsed && label && <Label className=\"mod-nav-label neo-nav-label\">{label}</Label>}\n {!collapsed && tag && (\n <ModTag\n size=\"medium\"\n variant=\"filled\"\n intent=\"beta\"\n shape=\"rounded\"\n label={tag}\n {...slotProps?.badge}\n />\n )}\n {children}\n </StyledRoot>\n )\n\n if (collapsed && collapsedTooltip) {\n return (\n <ModTooltip title={collapsedTooltip} placement=\"right\" arrow>\n {item}\n </ModTooltip>\n )\n }\n\n return item\n}\n\nModNavigationItem.displayName = 'ModNavigationItem'\n","import {\n borderRadius,\n semanticColors,\n semanticTypography,\n spacing,\n typography,\n} from '@moderneinc/design-system-tokens'\nimport type { BoxProps } from '@mui/material/Box'\nimport Box from '@mui/material/Box'\nimport Fab from '@mui/material/Fab'\nimport Fade from '@mui/material/Fade'\nimport Stack from '@mui/material/Stack'\nimport type { Breakpoint } from '@mui/material/styles'\nimport { styled } from '@mui/material/styles'\nimport Typography from '@mui/material/Typography'\nimport { ChevronUp } from 'lucide-react'\nimport type { ElementType, ReactNode } from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { ModBreadcrumbLink, ModBreadcrumbs } from '../Breadcrumbs/Breadcrumbs'\nimport { ModLoadingSpinner } from '../LoadingSpinner/LoadingSpinner'\n\n/**\n * Breadcrumb item configuration\n */\nexport interface BreadcrumbItem {\n /** Link label */\n label: ReactNode\n /** Link href (omit for current/last item) */\n href?: string\n}\n\n/**\n * Breadcrumb configuration with link component and items\n */\nexport interface BreadcrumbConfig {\n /** Custom link component for client-side navigation (e.g., Next.js Link) */\n linkComponent?: ElementType\n /** Breadcrumb items */\n items: BreadcrumbItem[]\n}\n\nexport interface ModPageContentProps extends BoxProps {\n /**\n * Main heading displayed on the page\n */\n pageTitle: ReactNode | string\n\n /**\n * Optional subtitle displayed below the page title\n */\n subtitle?: ReactNode | string\n\n /**\n * Optional breadcrumbs navigation displayed above the page title.\n * Last item is automatically marked as current.\n *\n * @example\n * ```tsx\n * breadcrumbs={{\n * linkComponent: NextLink,\n * items: [\n * { label: 'Settings', href: '/settings' },\n * { label: 'Team', href: '/team' },\n * { label: 'Team Details' },\n * ]\n * }}\n * ```\n */\n breadcrumbs?: BreadcrumbConfig\n\n /**\n * Action button displayed in the top-right corner\n */\n action?: ReactNode\n\n /**\n * Make header sticky on scroll\n * @default false\n */\n sticky?: boolean\n\n /**\n * Maximum width constraint for content\n * @default false\n */\n contentMaxWidth?: Breakpoint | false\n\n /**\n * Center content when using contentMaxWidth\n * @default true\n */\n centerContent?: boolean\n\n /**\n * Disable gutters/padding\n * @default false\n */\n disableGutters?: boolean\n\n /**\n * Page layout mode.\n * - `default`: standard centered/max-width-constrained content with\n * gutters. Best for content-driven pages (settings, forms, lists).\n * - `fullBleed`: removes max-width and horizontal/bottom padding, lets\n * the content area flex-fill the viewport. Best for full-height\n * layouts (sidebar + panel canvases, builders, explorers). Title\n * and breadcrumbs still render — they sit at the leading edge.\n * @default 'default'\n */\n layout?: 'default' | 'fullBleed'\n\n /**\n * Loading state - shows spinner while content loads\n * @default false\n */\n isLoading?: boolean\n\n /**\n * Enable back to top button when scrolling\n * @default true\n */\n showBackToTop?: boolean\n\n /**\n * Content to display in the main area\n */\n children: ReactNode\n}\n\n/**\n * Sticky header wrapper - sticks to top when scrolling\n */\nconst StickyHeader = styled(Box)(({ theme }) => ({\n position: 'sticky',\n top: 0,\n zIndex: theme.zIndex.appBar,\n backgroundColor: semanticColors.surface.canvasContent,\n flexShrink: 0,\n}))\n\n/**\n * Page title typography\n */\nconst PageTitle = styled(Typography)<{ component?: ElementType }>(() => ({\n ...semanticTypography.titles.pageHeader,\n lineHeight: 1.4,\n color: semanticColors.typography.body,\n}))\n\n/**\n * Subtitle typography\n */\nconst Subtitle = styled(Typography)(() => ({\n fontSize: typography.fontSize.sm,\n color: semanticColors.typography.bodySecondary,\n}))\n\n/**\n * ModPageContent - Page content surface from the Moderne Design System\n *\n * Represents the main white card/surface that contains page content:\n * - Page title with optional subtitle and action button\n * - Content area where tabs and page content should be rendered\n *\n * ## Design Tokens\n * - Background: `semanticColors.surface.canvasContent` — the page content\n * canvas (#fbfaf6 light / #1b1b21 dark), not a raised card surface\n\n * - Border: `semanticColors.border.primary` (#D1D5DB)\n * - Border radius: `borderRadius.input` (8px)\n * - Padding: `spacing.spacing_2_1_2` (20px) horizontal, `spacing.spacing_2` (16px) vertical\n * - Gap: `spacing.spacing_1` (8px)\n * - Title typography: `typography.fontSize.h3` (21px), `typography.fontWeight.medium`\n *\n * @example\n * ```tsx\n * <ModPageContent\n * pageTitle=\"Users\"\n * action={<IconButton>...</IconButton>}\n * >\n * <ModDataGrid ... />\n * </ModPageContent>\n * ```\n *\n * @example\n * ```tsx\n * // With subtitle\n * <ModPageContent\n * pageTitle=\"Settings\"\n * subtitle=\"Manage your account preferences\"\n * >\n * <SettingsContent />\n * </ModPageContent>\n * ```\n *\n * @example\n * ```tsx\n * // With sticky header\n * <ModPageContent\n * pageTitle=\"Long Content\"\n * sticky\n * >\n * <VeryLongContent />\n * </ModPageContent>\n * ```\n */\nexport function ModPageContent({\n pageTitle,\n subtitle,\n breadcrumbs,\n action,\n sticky = false,\n contentMaxWidth: contentMaxWidthProp = false,\n centerContent = true,\n disableGutters: disableGuttersProp = false,\n isLoading = false,\n showBackToTop = true,\n layout = 'default',\n children,\n sx,\n ...boxProps\n}: ModPageContentProps) {\n // fullBleed forces no max-width, no gutters, and zero bottom padding\n // so children can fill the viewport edge-to-edge.\n const isFullBleed = layout === 'fullBleed'\n const contentMaxWidth = isFullBleed ? false : contentMaxWidthProp\n const disableGutters = isFullBleed || disableGuttersProp\n const [showBackToTopButton, setShowBackToTopButton] = useState(false)\n const headerRef = useRef<HTMLDivElement>(null)\n const containerRef = useRef<HTMLDivElement>(null)\n\n // Intersection observer for back to top button\n useEffect(() => {\n if (!showBackToTop || !headerRef.current) return\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n setShowBackToTopButton(!entry.isIntersecting)\n },\n {\n threshold: 0.1,\n rootMargin: '0px',\n }\n )\n\n observer.observe(headerRef.current)\n\n return () => {\n observer.disconnect()\n }\n }, [showBackToTop])\n const handleScrollToTop = () => {\n // Try to find the scrollable container\n const scrollContainer = containerRef.current\n\n if (scrollContainer) {\n // Scroll the content wrapper\n scrollContainer.scrollTop = 0\n scrollContainer.scrollTo({ top: 0, behavior: 'smooth' })\n }\n\n // Also try to scroll window in case component is in a different context\n window.scrollTo({ top: 0, behavior: 'smooth' })\n }\n\n const headerContent = (\n <Stack ref={headerRef} sx={{ flexShrink: 0, gap: '0.5rem' }}>\n {/* Breadcrumbs on own row */}\n {breadcrumbs && breadcrumbs.items.length > 0 && (\n <ModBreadcrumbs>\n {breadcrumbs.items.map((item, index) => (\n <ModBreadcrumbLink\n key={item.href ?? index}\n href={item.href}\n component={\n item.href && breadcrumbs.linkComponent ? breadcrumbs.linkComponent : undefined\n }\n current={index === breadcrumbs.items.length - 1}\n >\n {item.label}\n </ModBreadcrumbLink>\n ))}\n </ModBreadcrumbs>\n )}\n {/* Title + Action row */}\n <Stack\n direction=\"row\"\n sx={{ justifyContent: 'space-between', alignItems: 'flex-start', gap: '1rem' }}\n >\n <Stack sx={{ gap: '0.5rem', flexGrow: 1 }}>\n {typeof pageTitle === 'string' ? (\n <PageTitle component=\"h1\">{pageTitle}</PageTitle>\n ) : (\n pageTitle\n )}\n {subtitle &&\n (typeof subtitle === 'string' ? (\n <Subtitle variant=\"caption\">{subtitle}</Subtitle>\n ) : (\n subtitle\n ))}\n </Stack>\n {action}\n </Stack>\n </Stack>\n )\n\n const content = isLoading ? (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '50vh',\n }}\n >\n <ModLoadingSpinner />\n </Box>\n ) : (\n children\n )\n\n return (\n <>\n <Box\n sx={{\n backgroundColor: semanticColors.surface.canvasContent,\n border: `1px solid ${semanticColors.border.primary}`,\n borderRadius: `${borderRadius.input}px`,\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n ...sx,\n }}\n {...boxProps}\n >\n {/* Content wrapper with padding - this is the scroll container */}\n <Box\n ref={containerRef}\n sx={{\n display: 'flex',\n flexDirection: 'column',\n px: disableGutters ? 0 : `${spacing.spacing_2_1_2}px`,\n pt: sticky ? 0 : `${spacing.spacing_2}px`,\n pb: isFullBleed ? 0 : `${spacing.spacing_2_1_2}px`,\n height: '100%',\n overflow: 'auto',\n }}\n >\n {/* Header section - sticky or static */}\n {sticky ? (\n <StickyHeader\n ref={headerRef}\n sx={{\n pt: `${spacing.spacing_2}px`,\n ...(contentMaxWidth !== false && {\n maxWidth: theme => theme.breakpoints.values[contentMaxWidth as Breakpoint],\n width: '100%',\n }),\n }}\n >\n {headerContent}\n </StickyHeader>\n ) : (\n <Box\n ref={headerRef}\n sx={{\n mb: `${spacing.spacing_1}px`,\n ...(contentMaxWidth !== false && {\n maxWidth: theme => theme.breakpoints.values[contentMaxWidth as Breakpoint],\n width: '100%',\n }),\n }}\n >\n {headerContent}\n </Box>\n )}\n\n {/* Content area */}\n <Box\n sx={{\n flexGrow: 1,\n minHeight: 0,\n display: 'flex',\n flexDirection: 'column',\n ...(contentMaxWidth !== false && {\n maxWidth: theme => theme.breakpoints.values[contentMaxWidth as Breakpoint],\n width: '100%',\n ...(centerContent ? { mx: 'auto' } : { alignSelf: 'flex-start' }),\n }),\n }}\n >\n {content}\n </Box>\n </Box>\n </Box>\n\n {/* Back to top button */}\n {showBackToTop && (\n <Fade in={showBackToTopButton}>\n <Box\n sx={{\n position: 'fixed',\n bottom: spacing.spacing_2,\n right: spacing.spacing_4,\n zIndex: 1000,\n }}\n >\n <Fab\n sx={{\n backgroundColor: `color-mix(in srgb, ${semanticColors.buttons.primary.default} 12.5%, transparent)`,\n color: semanticColors.buttons.primary.default,\n '&:hover': {\n backgroundColor: `color-mix(in srgb, ${semanticColors.buttons.primary.default} 18.8%, transparent)`,\n },\n }}\n title=\"Back to top\"\n size=\"small\"\n onClick={handleScrollToTop}\n >\n <ChevronUp size={20} />\n </Fab>\n </Box>\n </Fade>\n )}\n </>\n )\n}\n\nModPageContent.displayName = 'ModPageContent'\n","import type { GridSlots } from '@mui/x-data-grid-pro'\nimport { ModDataGrid, type ModDataGridProps } from '../DataGrid/DataGrid'\nimport { ModFooter } from '../Footer/Footer'\n\nexport interface ModPaginatedGridProps extends Omit<ModDataGridProps, 'slots'> {\n /**\n * Custom slots (merged with design system defaults)\n */\n slots?: Partial<GridSlots>\n}\n\n/**\n * ModPaginatedGrid - DataGrid with standard pagination controls\n *\n * Features:\n * - Standard MUI pagination with page numbers\n * - Shows \"1-10 of 100\" format in footer\n * - Previous/Next navigation buttons\n * - Auto-calculates page size to fit viewport (autoPageSize)\n * - No vertical scrollbar within pages - use pagination to navigate\n * - Inherits all responsive features from ModDataGrid\n *\n * @example\n * <ModPaginatedGrid\n * rows={rows}\n * columns={columns}\n * paginationModel={{ page: 0, pageSize: 10 }}\n * onPaginationModelChange={handlePaginationChange}\n * rowCount={100}\n * />\n */\nexport function ModPaginatedGrid({\n slots,\n pageSizeOptions,\n slotProps: userSlotProps,\n ...props\n}: ModPaginatedGridProps) {\n // Merge custom slots with pagination defaults\n const mergedSlots: Partial<GridSlots> = {\n footer: ModFooter,\n ...slots,\n }\n\n return (\n <ModDataGrid\n // Explicitly enable pagination (matching moderne-ui ModerneDataGrid defaults)\n // Set defaults first, then spread props to allow overrides\n pagination={true}\n paginationMode=\"client\"\n pageSizeOptions={pageSizeOptions ?? [25, 50, 100]}\n autoHeight={false}\n // DO NOT override autoPageSize - let ModDataGrid set it to !autoHeight (true)\n // This allows the grid to automatically calculate how many rows fit in the viewport\n {...props}\n // Merge slots after props to ensure footer is set\n slots={mergedSlots}\n slotProps={{\n basePopper: {\n placement: 'bottom-start',\n },\n footer: {\n variant: 'pagination',\n },\n ...userSlotProps,\n }}\n />\n )\n}\n\nModPaginatedGrid.displayName = 'ModPaginatedGrid'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport { iconButtonClasses } from '@mui/material/IconButton'\nimport InputAdornment, { inputAdornmentClasses } from '@mui/material/InputAdornment'\nimport { inputBaseClasses } from '@mui/material/InputBase'\nimport { styled } from '@mui/material/styles'\nimport TextField from '@mui/material/TextField'\nimport { QuickFilter, QuickFilterClear, QuickFilterControl } from '@mui/x-data-grid'\nimport { Search, X } from 'lucide-react'\n\nconst StyledTextField = styled(TextField)(({ theme }) => ({\n [`& .${inputBaseClasses.root}`]: {\n height: spacing.spacing_5,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n borderRadius: borderRadius.input,\n backgroundColor: semanticColors.input.background,\n border: `1px solid ${semanticColors.border.primary}`,\n paddingTop: spacing.spacing_1,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_2,\n paddingRight: spacing.spacing_1_1_2,\n gap: spacing.spacing_1_2,\n\n '&::before, &::after': {\n display: 'none',\n },\n\n [`& .${inputBaseClasses.input}`]: {\n padding: 0,\n color: semanticColors.typography.input.default,\n\n '&::placeholder': {\n color: semanticColors.typography.input.placeholder,\n opacity: 1,\n },\n },\n\n '&:hover': {\n backgroundColor: semanticColors.input.hoverBackground,\n },\n\n [`&.${inputBaseClasses.focused}`]: {\n backgroundColor: semanticColors.input.background,\n borderColor: semanticColors.buttons.primary.default,\n },\n\n [`&.${inputBaseClasses.disabled}`]: {\n backgroundColor: semanticColors.input.disabledBackground,\n color: semanticColors.typography.button.disabled,\n },\n },\n\n [`& .${inputAdornmentClasses.root}`]: {\n color: semanticColors.icons.placeholder,\n\n '& svg': {\n width: 14,\n height: 14,\n },\n },\n\n [`& .${inputAdornmentClasses.positionStart}`]: {\n marginRight: 0,\n },\n\n [`& .${iconButtonClasses.root}`]: {\n color: semanticColors.icons.placeholder,\n\n '&:hover': {\n backgroundColor: semanticColors.icons.hoverBackground,\n color: semanticColors.icons.utility,\n },\n\n '& svg': {\n width: 16,\n height: 16,\n },\n },\n}))\n\nexport interface ModQuickFilterProps {\n /**\n * Placeholder text for the search input\n * @default \"Search...\"\n */\n placeholder?: string\n\n /**\n * Callback fired when a key is pressed\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>\n\n /**\n * If true, the input will be focused on mount\n * @default false\n */\n autoFocus?: boolean\n}\n\n/**\n * ModQuickFilter - Quick search/filter input component for data grids\n *\n * Uses MUI X DataGrid's QuickFilterControl with Moderne design system styling.\n * Styled to match the Figma design with search icon, clear button, and proper spacing.\n *\n * **Note:** This component must be used within a DataGrid context (inside a DataGrid component's toolbar).\n *\n * @example\n * // Basic usage in DataGrid toolbar\n * <DataGrid\n * rows={rows}\n * columns={columns}\n * slots={{\n * toolbar: () => (\n * <ModToolbar>\n * <ModQuickFilter placeholder=\"Search users...\" />\n * </ModToolbar>\n * ),\n * }}\n * />\n */\nexport const ModQuickFilter = ({\n placeholder = 'Search...',\n onKeyDown,\n autoFocus = false,\n}: ModQuickFilterProps) => {\n return (\n <QuickFilter>\n <QuickFilterControl\n onKeyDown={onKeyDown}\n render={({ ref, slotProps: controlSlotProps, ...props }) => (\n <StyledTextField\n {...props}\n inputRef={ref}\n placeholder={placeholder}\n autoFocus={autoFocus}\n variant=\"standard\"\n slotProps={{\n ...controlSlotProps,\n input: {\n ...controlSlotProps?.input,\n startAdornment: (\n <InputAdornment position=\"start\">\n <Search />\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment\n position=\"end\"\n sx={{ visibility: props.value ? 'visible' : 'hidden' }}\n >\n <QuickFilterClear size=\"small\" edge=\"end\" aria-label=\"Clear search\">\n <X size={16} />\n </QuickFilterClear>\n </InputAdornment>\n ),\n disableUnderline: true,\n },\n }}\n />\n )}\n />\n </QuickFilter>\n )\n}\n\nModQuickFilter.displayName = 'ModQuickFilter'\n","import { semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport { buttonBaseClasses } from '@mui/material/ButtonBase'\nimport type { RadioProps } from '@mui/material/Radio'\nimport Radio, { radioClasses } from '@mui/material/Radio'\nimport { styled } from '@mui/material/styles'\nimport type { ReactNode } from 'react'\n\n// Custom radio icons to match Figma design\nconst UncheckedIcon = ({ size, disabled }: { size: 'small' | 'medium'; disabled?: boolean }) => {\n const dimensions = size === 'small' ? 16 : 20\n const radius = size === 'small' ? 8 : 10\n\n return (\n <svg\n width={dimensions}\n height={dimensions}\n viewBox={`0 0 ${dimensions} ${dimensions}`}\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <title>Unchecked radio button</title>\n <circle\n cx={dimensions / 2}\n cy={dimensions / 2}\n r={radius - 0.5}\n stroke={semanticColors.border.strong}\n strokeWidth=\"1\"\n fill={disabled ? semanticColors.buttons.primary.disabled : 'transparent'}\n />\n </svg>\n )\n}\n\nconst CheckedIcon = ({ size, disabled }: { size: 'small' | 'medium'; disabled?: boolean }) => {\n const dimensions = size === 'small' ? 16 : 20\n const radius = size === 'small' ? 8 : 10\n const inset = size === 'small' ? 0.3125 : 0.3 // 31.25% or 30%\n const innerRadius = radius * (1 - 2 * inset)\n\n return (\n <svg\n width={dimensions}\n height={dimensions}\n viewBox={`0 0 ${dimensions} ${dimensions}`}\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <title>Checked radio button</title>\n {/* Outer circle with background and border */}\n <circle\n cx={dimensions / 2}\n cy={dimensions / 2}\n r={radius - 0.5}\n fill={disabled ? semanticColors.buttons.primary.disabled : semanticColors.icons.active}\n stroke={disabled ? semanticColors.border.primary : semanticColors.icons.active}\n strokeWidth=\"1\"\n />\n {/* Inner dot */}\n <circle\n cx={dimensions / 2}\n cy={dimensions / 2}\n r={innerRadius}\n fill={disabled ? semanticColors.icons.disabled : semanticColors.surfaces.white}\n />\n </svg>\n )\n}\n\n// Augment MUI types to add custom size values\ndeclare module '@mui/material/Radio' {\n interface RadioPropsSizeOverrides {\n small: true\n medium: true\n }\n}\n\ntype RadioSize = 'small' | 'medium'\n\nconst RadioContainer = styled('label')<{ disabled?: boolean }>(({ disabled }) => ({\n display: 'inline-flex',\n alignItems: 'flex-start',\n gap: spacing.spacing_1,\n cursor: disabled ? 'not-allowed' : 'pointer',\n userSelect: 'none',\n}))\n\nconst RadioInputWrapper = styled('div')({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingTop: spacing.spacing_1_4,\n})\n\nconst LabelContainer = styled('div')<{ size?: RadioSize }>(({ size = 'medium' }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: size === 'medium' ? spacing.spacing_1_4 : 0,\n flexGrow: 1,\n minWidth: 0,\n}))\n\nconst Label = styled('span')<{ size?: RadioSize }>(({ theme, size = 'medium' }) => ({\n fontSize: theme.typography.pxToRem(\n size === 'small' ? typography.fontSize.sm : typography.fontSize.default\n ),\n fontWeight: typography.fontWeight.medium,\n lineHeight: size === 'small' ? 1.4 : 1.5,\n color: semanticColors.typography.input.default,\n}))\n\nconst HelperText = styled('span')<{ size?: RadioSize }>(({ theme, size = 'medium' }) => ({\n fontSize: theme.typography.pxToRem(\n size === 'small' ? typography.fontSize.sm : typography.fontSize.default\n ),\n fontWeight: typography.fontWeight.regular,\n lineHeight: size === 'small' ? 1.4 : 1.5,\n color: semanticColors.typography.bodySecondary,\n}))\n\nconst StyledRadio = styled(Radio, {\n shouldForwardProp: prop => prop !== 'size',\n})<{\n size?: RadioSize\n}>(({ size = 'medium' }) => {\n const dimensions = size === 'small' ? 16 : 20\n const radius = size === 'small' ? 8 : 10\n\n return {\n padding: 0,\n width: dimensions,\n height: dimensions,\n flexShrink: 0,\n borderRadius: radius,\n color: semanticColors.border.strong,\n\n [`&.${radioClasses.checked}`]: {\n color: semanticColors.icons.active,\n },\n\n '&:hover': {\n backgroundColor: 'transparent',\n },\n\n // Ensure SVG fills the space\n '& svg': {\n width: dimensions,\n height: dimensions,\n },\n\n // Focus state for keyboard navigation\n [`&.${buttonBaseClasses.focusVisible}`]: {\n // Unchecked focus state: white background\n backgroundColor: semanticColors.surfaces.white,\n\n // Checked focus state: keep the blue circle visible\n [`&.${radioClasses.checked}`]: {\n backgroundColor: 'transparent',\n },\n },\n\n // Disabled state — icons handle their own disabled colors\n [`&.${radioClasses.disabled}`]: {\n color: semanticColors.border.primary,\n\n [`&.${radioClasses.checked}`]: {\n color: semanticColors.border.primary,\n },\n },\n }\n})\n\nexport interface ModRadioProps extends Omit<RadioProps, 'size'> {\n /**\n * The size of the radio button\n * @default \"medium\"\n */\n size?: RadioSize\n\n /**\n * The label text displayed next to the radio button\n */\n label?: ReactNode\n\n /**\n * The helper text displayed below the label\n */\n helperText?: ReactNode\n}\n\n/**\n * ModRadio - Radio button component based on MUI Radio\n *\n * @example\n * // Basic radio button (just the icon)\n * <ModRadio />\n *\n * @example\n * // With label\n * <ModRadio label=\"Remember me\" />\n *\n * @example\n * // With label and helper text\n * <ModRadio label=\"Remember me\" helperText=\"Save my login details for next time.\" />\n *\n * @example\n * // Small size\n * <ModRadio size=\"small\" label=\"Remember me\" />\n *\n * @example\n * // Controlled\n * <ModRadio checked={value === 'option1'} onChange={handleChange} value=\"option1\" label=\"Option 1\" />\n *\n * @example\n * // Radio group\n * <RadioGroup value={value} onChange={handleChange}>\n * <ModRadio value=\"option1\" label=\"Option 1\" helperText=\"First option\" />\n * <ModRadio value=\"option2\" label=\"Option 2\" helperText=\"Second option\" />\n * </RadioGroup>\n */\nexport const ModRadio = ({\n size = 'medium',\n label,\n helperText,\n disabled,\n ...props\n}: ModRadioProps) => {\n // Custom icons based on size and disabled state\n const uncheckedIcon = <UncheckedIcon size={size} disabled={disabled} />\n const checkedIcon = <CheckedIcon size={size} disabled={disabled} />\n\n // If no label, return just the radio button\n if (!label && !helperText) {\n return (\n <StyledRadio\n size={size}\n disabled={disabled}\n icon={uncheckedIcon}\n checkedIcon={checkedIcon}\n {...props}\n />\n )\n }\n\n // With label, wrap in container for proper layout\n // Adjust gap based on size\n const containerGap = size === 'small' ? spacing.spacing_1 : spacing.spacing_1_1_2\n\n return (\n <RadioContainer disabled={disabled} style={{ gap: containerGap }}>\n <RadioInputWrapper>\n <StyledRadio\n size={size}\n disabled={disabled}\n icon={uncheckedIcon}\n checkedIcon={checkedIcon}\n {...props}\n />\n </RadioInputWrapper>\n <LabelContainer size={size}>\n {label && <Label size={size}>{label}</Label>}\n {helperText && <HelperText size={size}>{helperText}</HelperText>}\n </LabelContainer>\n </RadioContainer>\n )\n}\n\nModRadio.displayName = 'ModRadio'\n","import { styled } from '@mui/material/styles'\n\n/**\n * ModRadioButtonWithText\n */\nexport const ModRadioButtonWithText = styled('div')({})\n","import { spacing } from '@moderneinc/design-system-tokens'\nimport { Box, type BoxProps, keyframes } from '@mui/material'\nimport type { FunctionComponent } from 'react'\n\n// Box-breathing rhythm: appear (inhale) → hold → expand+fade (exhale) → rest.\n// Max scale is capped so the ring fits within a parent row's line-height.\nconst ripple = keyframes`\n 0% { opacity: 0; transform: scale(0.7); }\n 20% { opacity: 0.9; transform: scale(0.7); }\n 35% { opacity: 0.9; transform: scale(0.7); }\n 80% { opacity: 0; transform: scale(1.7); }\n 100% { opacity: 0; transform: scale(0.7); }\n`\n\nexport interface ModRipplingDotProps extends BoxProps {}\n\n/**\n * ModRipplingDot - Animated status dot with an expanding ripple ring.\n *\n * Indicates an in-progress, indeterminate state (RUNNING / SYNCING / PROCESSING).\n * Color is inherited from `currentColor`; set it via the `color`/`sx` prop or a\n * parent. Sized to the lowercase-letter height regardless of parent fontSize.\n */\nexport const ModRipplingDot: FunctionComponent<ModRipplingDotProps> = props => (\n <Box\n aria-hidden=\"true\"\n {...props}\n style={{\n width: spacing.spacing_1,\n height: spacing.spacing_1,\n ...props.style,\n }}\n sx={{\n position: 'relative',\n display: 'inline-block',\n borderRadius: '50%',\n backgroundColor: 'currentColor',\n verticalAlign: 'middle',\n flexShrink: 0,\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n inset: '-25%',\n borderRadius: '50%',\n border: '1px solid currentColor',\n animation: `${ripple} 5.6s ease-in-out infinite`,\n '@media (prefers-reduced-motion: reduce)': {\n display: 'none',\n },\n },\n ...props.sx,\n }}\n />\n)\n\nModRipplingDot.displayName = 'ModRipplingDot'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport ButtonBase from '@mui/material/ButtonBase'\nimport InputBase, { type InputBaseProps, inputBaseClasses } from '@mui/material/InputBase'\nimport { styled } from '@mui/material/styles'\nimport { Search, X } from 'lucide-react'\n\nconst StyledSearchChip = styled(InputBase)(({ theme }) => ({\n borderRadius: borderRadius.button,\n border: `1px solid ${semanticColors.border.primary}`,\n backgroundColor: semanticColors.surfaces.white,\n height: 40,\n padding: `0 ${spacing.spacing_1_1_2}px`,\n gap: spacing.spacing_1_2,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1,\n color: semanticColors.typography.input.default,\n cursor: 'text',\n boxSizing: 'border-box',\n transition: theme.transitions.create(['border-color', 'background-color'], {\n duration: theme.transitions.duration.short,\n }),\n\n [`& .${inputBaseClasses.input}`]: {\n padding: '0 2px',\n height: 'auto',\n lineHeight: 1,\n '&::placeholder': {\n color: semanticColors.typography.input.placeholder,\n opacity: 1,\n },\n // Hide native browser clear button for type=\"search\" (we provide our own)\n '&::-webkit-search-cancel-button': {\n WebkitAppearance: 'none',\n },\n },\n\n '&:hover': {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n borderColor: semanticColors.accent.border,\n },\n\n // After `&:hover` so a disabled chip takes no hover feedback -- MUI leaves pointer-events\n // live on the disabled root, so `&:hover` matches it too.\n [`&.${inputBaseClasses.disabled}`]: {\n backgroundColor: semanticColors.surfaces.white,\n borderColor: semanticColors.border.primary,\n },\n\n // A tint hugging the border, not focusRingStyles' detached ring: even :focus-visible matches a\n // clicked text input, so this has to stay calm. Keep below `&:hover` -- equal specificity, so\n // source order is what keeps a hovered+focused chip white.\n [`&.${inputBaseClasses.focused}`]: {\n backgroundColor: semanticColors.surfaces.white,\n borderColor: semanticColors.border.focus,\n outline: `3px solid ${semanticColors.accent.tint}`,\n },\n}))\n\nconst ClearButton = styled(ButtonBase)({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 16,\n height: 16,\n padding: 0,\n border: 'none',\n backgroundColor: 'transparent',\n cursor: 'pointer',\n color: semanticColors.icons.default,\n flexShrink: 0,\n borderRadius: borderRadius.button,\n\n '&:hover': {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n },\n})\n\nexport interface ModSearchChipProps\n extends Omit<InputBaseProps, 'startAdornment' | 'endAdornment' | 'type'> {\n /**\n * Handler for clearing the search value (shows X icon when provided and value is non-empty)\n */\n onClear?: () => void\n}\n\n/**\n * ModSearchChip - Pill-shaped search input for inline search functionality.\n *\n * @example\n * <ModSearchChip placeholder=\"Search titles\" value={query} onChange={handleChange} onClear={handleClear} />\n */\nexport const ModSearchChip = ({ onClear, value, ...props }: ModSearchChipProps) => {\n const hasValue = Boolean(value && String(value).length > 0)\n\n return (\n <StyledSearchChip\n type=\"search\"\n value={value}\n startAdornment={\n <Search size={16} color={semanticColors.icons.placeholder} style={{ flexShrink: 0 }} />\n }\n endAdornment={\n hasValue && onClear ? (\n <ClearButton type=\"button\" onClick={onClear} aria-label=\"Clear search\">\n <X size={16} />\n </ClearButton>\n ) : undefined\n }\n {...props}\n />\n )\n}\n\nModSearchChip.displayName = 'ModSearchChip'\n","import { spacing } from '@moderneinc/design-system-tokens'\nimport type { SelectChangeEvent, SelectProps } from '@mui/material/Select'\nimport type { ReactNode } from 'react'\nimport {\n InfoIconWrapper,\n type ModInputFieldSize,\n StyledFormControl,\n StyledFormHelperText,\n StyledInputLabel,\n} from '../InputField/InputField'\nimport { ModSelect, ModSelectOption } from '../Select/Select'\n\nexport interface ModSelectFieldOption {\n value: string | number\n label: ReactNode\n disabled?: boolean\n}\n\nexport interface ModSelectFieldProps\n extends Omit<SelectProps, 'size' | 'variant' | 'error' | 'children'> {\n /**\n * Form-control size.\n * @default 'medium'\n */\n size?: ModInputFieldSize\n\n /**\n * Show error/destructive state with red label + helper text styling.\n * @default false\n */\n destructive?: boolean\n\n /** Label text rendered above the select. */\n label?: string\n\n /** Show required indicator (asterisk) next to the label. @default false */\n required?: boolean\n\n /** Optional info icon rendered next to the label. */\n infoIcon?: ReactNode\n\n /** Helper text rendered below the select (normal state). */\n helperText?: string\n\n /**\n * Error message rendered below the select when `destructive` is true.\n * Takes precedence over helperText when destructive.\n */\n errorMessage?: string\n\n /**\n * Convenience option list. Each entry becomes a ModSelectOption.\n * Use `children` instead for custom option content.\n */\n options?: ModSelectFieldOption[]\n\n /** Custom option content. Overrides `options` if both are provided. */\n children?: ReactNode\n}\n\n/**\n * ModSelectField — composite of ModInputField's form chrome (label,\n * helper text, error state) wrapped around ModSelect. Mirrors the\n * MUI `<TextField select>` ergonomics with design system tokens, so\n * consumers don't have to compose the two manually.\n *\n * @example\n * <ModSelectField\n * label=\"Response format\"\n * value={format}\n * onChange={e => setFormat(e.target.value)}\n * options={[\n * { value: 'json', label: 'JSON' },\n * { value: 'plain', label: 'Plain text' },\n * ]}\n * />\n */\nexport const ModSelectField = ({\n size = 'medium',\n destructive = false,\n label,\n required = false,\n infoIcon,\n helperText,\n errorMessage,\n options,\n children,\n disabled,\n id,\n ...selectProps\n}: ModSelectFieldProps) => {\n const inputId = id || `mod-select-${Math.random().toString(36).substring(7)}`\n const helperTextId = helperText || errorMessage ? `${inputId}-helper-text` : undefined\n\n return (\n <StyledFormControl size={size} error={destructive} disabled={disabled}>\n {label && (\n <StyledInputLabel\n htmlFor={inputId}\n size={size}\n infoIcon={!!infoIcon}\n disabled={disabled}\n error={destructive}\n shrink\n >\n {label}\n {required && <span aria-hidden=\"true\">*</span>}\n {infoIcon && <InfoIconWrapper>{infoIcon}</InfoIconWrapper>}\n </StyledInputLabel>\n )}\n\n <ModSelect\n id={inputId}\n disabled={disabled}\n error={destructive}\n aria-describedby={helperTextId}\n {...(selectProps as SelectProps)}\n >\n {children ??\n options?.map(opt => (\n <ModSelectOption key={String(opt.value)} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </ModSelectOption>\n ))}\n </ModSelect>\n\n {(helperText || errorMessage) && (\n <StyledFormHelperText\n id={helperTextId}\n error={destructive}\n disabled={disabled}\n sx={{ marginTop: `${spacing.spacing_3_4}px` }}\n >\n {destructive ? errorMessage : helperText}\n </StyledFormHelperText>\n )}\n </StyledFormControl>\n )\n}\n\nModSelectField.displayName = 'ModSelectField'\n\n// Re-export for consumers who want to provide custom option content via children.\nexport { ModSelectOption }\n\n// Convenience type for consumers who need to type onChange handlers.\nexport type ModSelectFieldChangeEvent<T = unknown> = SelectChangeEvent<T>\n","import { borderRadius, semanticColors, spacing } from '@moderneinc/design-system-tokens'\nimport ButtonBase from '@mui/material/ButtonBase'\nimport Stack from '@mui/material/Stack'\nimport { styled } from '@mui/material/styles'\nimport { ChevronLeft, ChevronRight } from 'lucide-react'\nimport {\n type ComponentPropsWithoutRef,\n type ReactNode,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { ModSideNavContext } from './ModSideNavContext'\n\n// Measure before paint so the fades don't flash; useEffect on the server.\nconst useIsomorphicLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect\n\nconst EXPANDED_WIDTH = 98\nconst COLLAPSED_WIDTH = 68\n// The fade overlay must end on the same color as the rail to blend cleanly.\nconst RAIL_BACKGROUND = semanticColors.surfaces.page\n\nexport type ModSideNavProps = {\n /** Controlled collapsed state. */\n collapsed: boolean\n /** Called with the next collapsed value when the edge-handle is activated. */\n onCollapsedChange: (next: boolean) => void\n /** Fixed top slot (e.g. product logo). */\n header?: ReactNode\n /** Fixed bottom slot (e.g. tenant branding). */\n footer?: ReactNode\n /** Scrolling content slot — the nav items. */\n children?: ReactNode\n} & Pick<ComponentPropsWithoutRef<'nav'>, 'className' | 'id' | 'aria-label'>\n\n// Unclipped positioning context so the edge handle can straddle the rail's\n// trailing edge (Root itself clips its overflow during the width transition).\nconst Frame = styled('div', {\n shouldForwardProp: prop => prop !== 'collapsed',\n})<{ collapsed: boolean }>(({ collapsed, theme }) => ({\n position: 'relative',\n display: 'flex',\n height: '100%',\n width: collapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH,\n minWidth: collapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH,\n transition: theme.transitions.create(['width', 'min-width'], {\n duration: theme.transitions.duration.shorter,\n }),\n}))\n\nconst Root = styled('nav', {\n shouldForwardProp: prop => prop !== 'collapsed',\n})<{ collapsed: boolean }>(({ collapsed, theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n width: collapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH,\n minWidth: collapsed ? COLLAPSED_WIDTH : EXPANDED_WIDTH,\n backgroundColor: RAIL_BACKGROUND,\n transition: theme.transitions.create(['width', 'min-width'], {\n duration: theme.transitions.duration.shorter,\n }),\n overflow: 'hidden',\n}))\n\nconst HeaderRegion = styled('div')({\n // Containing block for the fade. No z-index: that lives on the fade, so the\n // consumer's header slot doesn't become a stacking context.\n position: 'relative',\n flexShrink: 0,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n})\n\nconst Scroll = styled('div')({\n flex: 1,\n minHeight: 0,\n overflowY: 'auto',\n overflowX: 'hidden',\n // Hide the scrollbar so the OS \"always show scrollbars\" setting can't reserve\n // a one-sided gutter that shifts the centered nav items off-axis at short\n // heights. The rail still scrolls via wheel/trackpad. (scrollbar-gutter only\n // centers where the property is supported, and still eats width on this\n // narrow rail — hiding is the more robust fix here.)\n scrollbarWidth: 'none',\n // Keeps Tab from parking an item under a fade, which hides its focus ring.\n scrollPaddingBlock: spacing.spacing_3,\n paddingInline: spacing.spacing_1,\n '&::-webkit-scrollbar': { display: 'none' },\n})\n\nconst FooterRegion = styled('div')({\n position: 'relative',\n flexShrink: 0,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: spacing.spacing_1_2,\n paddingInline: spacing.spacing_1,\n paddingBottom: spacing.spacing_1,\n})\n\n// Gradient fades so scrolling items dissolve into the fixed header/footer\n// instead of butting against them. Each sits just outside its region, bleeding\n// into the scroll area.\nconst Fade = styled('div', {\n shouldForwardProp: prop => prop !== 'edge' && prop !== 'visible',\n})<{ edge: 'header' | 'footer'; visible: boolean }>(({ edge, visible, theme }) => ({\n position: 'absolute',\n left: 0,\n right: 0,\n height: spacing.spacing_3,\n pointerEvents: 'none',\n // Nav items are positioned (ButtonBase) and come later in DOM order, so the\n // header fade needs this to paint above them.\n zIndex: 1,\n opacity: visible ? 1 : 0,\n transition: theme.transitions.create('opacity', {\n duration: theme.transitions.duration.shorter,\n }),\n '@media (prefers-reduced-motion: reduce)': {\n transition: 'none',\n },\n ...(edge === 'header'\n ? {\n bottom: -spacing.spacing_3,\n background: `linear-gradient(to top, transparent, ${RAIL_BACKGROUND})`,\n }\n : {\n top: -spacing.spacing_3,\n background: `linear-gradient(to bottom, transparent, ${RAIL_BACKGROUND})`,\n }),\n}))\n\n// A small rectangular tab that straddles the rail's trailing edge, pinned down\n// beside the tenant-logo row (not floating at the rail's vertical center) so\n// it reads as attached to the panel.\nconst Handle = styled(ButtonBase)(({ theme }) => ({\n position: 'absolute',\n right: 0,\n bottom: spacing.spacing_1,\n transform: 'translateX(50%)',\n zIndex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: spacing.spacing_1_1_2,\n height: spacing.spacing_5,\n borderRadius: borderRadius.s,\n backgroundColor: RAIL_BACKGROUND,\n border: `1px solid ${semanticColors.border.secondary}`,\n color: semanticColors.typography.bodySecondary,\n transition: theme.transitions.create(['color', 'border-color']),\n '&:hover': {\n color: semanticColors.typography.body,\n borderColor: semanticColors.border.primary,\n },\n}))\n\n/**\n * Tracks whether the scroll area can still scroll toward each edge. A fade over\n * an already-flush edge would veil the item resting against it.\n *\n * Attach both `ref` and `onScroll` to the scroll element.\n */\nfunction useScrollEdges() {\n const ref = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n // Both start hidden; the layout effect corrects them before first paint.\n const [edges, setEdges] = useState({\n canScrollUp: false,\n canScrollDown: false,\n })\n\n const measure = useCallback(() => {\n const el = ref.current\n if (!el) {\n return\n }\n const canScrollUp = el.scrollTop > 0\n // clientHeight/scrollHeight are rounded, scrollTop is not, so the bottom\n // needs slack. The top doesn't: scrollTop clamps to exactly 0.\n const canScrollDown = el.scrollTop + el.clientHeight < el.scrollHeight - 1\n // Runs on every scroll event; bail out when nothing changed.\n setEdges(prev =>\n prev.canScrollUp === canScrollUp && prev.canScrollDown === canScrollDown\n ? prev\n : { canScrollUp, canScrollDown }\n )\n }, [])\n\n // Mount only; later changes come via the observer or onScroll.\n useIsomorphicLayoutEffect(measure, [measure])\n\n // Resizes fire no scroll event: watch the viewport box and the content box.\n useEffect(() => {\n const el = ref.current\n // Absent in jsdom; without it only resize tracking is lost.\n if (!el || typeof ResizeObserver === 'undefined') {\n return\n }\n const observer = new ResizeObserver(measure)\n // Observed regardless of the content node: this effect never re-runs.\n observer.observe(el)\n if (contentRef.current) {\n observer.observe(contentRef.current)\n }\n return () => observer.disconnect()\n }, [measure])\n\n return { ref, contentRef, onScroll: measure, ...edges }\n}\n\n/**\n * ModSideNav\n *\n * Collapsible vertical navigation rail with fixed `header`/`footer` slots and a\n * scrolling content area. Controlled via `collapsed` + `onCollapsedChange`;\n * broadcasts collapsed state to descendant `ModNavigationItem`s through context.\n *\n * The scroll area's top and bottom edges fade into the fixed slots, each fade\n * appearing only while there is content to scroll toward in that direction.\n *\n * A chevron handle on the rail's trailing edge (beside the tenant-logo row)\n * toggles the controlled state. Consumers that want the rail to auto-collapse\n * on viewport changes compute `collapsed` themselves (e.g. via `useMediaQuery`)\n * and pass it in — see the `AutoCollapseOnResize` Storybook story for the\n * pattern.\n */\nexport function ModSideNav({\n collapsed,\n onCollapsedChange,\n header,\n footer,\n children,\n className,\n id,\n 'aria-label': ariaLabel,\n}: ModSideNavProps) {\n const contextValue = useMemo(() => ({ collapsed }), [collapsed])\n const { ref: scrollRef, contentRef, onScroll, canScrollUp, canScrollDown } = useScrollEdges()\n\n const HandleIcon = collapsed ? ChevronRight : ChevronLeft\n\n return (\n <ModSideNavContext.Provider value={contextValue}>\n <Frame collapsed={collapsed}>\n <Root collapsed={collapsed} aria-label={ariaLabel} className={className} id={id}>\n {/* Unconditional like FooterRegion: content scrolls under the top\n edge whether or not a header was passed. */}\n <HeaderRegion>\n {header}\n <Fade edge=\"header\" visible={canScrollUp} />\n </HeaderRegion>\n <Scroll ref={scrollRef} onScroll={onScroll} data-testid=\"mod-side-nav-scroll\">\n {/* Gives the observer one element that grows with the content —\n it reports a box, never scrollHeight. */}\n <Stack\n ref={contentRef}\n sx={{\n alignItems: 'center',\n gap: `${spacing.spacing_1_2}px`,\n // Keeps `flex: 1` / `margin-block-start: auto` working on\n // children, as when Scroll was the flex container.\n minHeight: '100%',\n }}\n >\n {children}\n </Stack>\n </Scroll>\n <FooterRegion>\n <Fade edge=\"footer\" visible={canScrollDown} />\n {footer}\n </FooterRegion>\n </Root>\n <Handle\n data-testid=\"mod-side-nav-handle\"\n aria-label={collapsed ? 'Expand navigation' : 'Collapse navigation'}\n disableRipple\n onClick={() => onCollapsedChange(!collapsed)}\n >\n <HandleIcon size={14} />\n </Handle>\n </Frame>\n </ModSideNavContext.Provider>\n )\n}\n\nModSideNav.displayName = 'ModSideNav'\n","import { borderRadius, semanticColors } from '@moderneinc/design-system-tokens'\nimport type { SkeletonProps } from '@mui/material/Skeleton'\nimport Skeleton from '@mui/material/Skeleton'\nimport { alpha, styled } from '@mui/material/styles'\n\n/**\n * Extended props for ModSkeleton component\n */\nexport interface ModSkeletonProps extends Omit<SkeletonProps, 'variant' | 'animation'> {\n /**\n * Color theme variant for the skeleton\n * @default \"light\"\n */\n colorTheme?: 'light' | 'dark'\n /**\n * Animation position (direction)\n * @default \"start\"\n */\n position?: 'start' | 'end'\n}\n\nconst StyledSkeleton = styled(Skeleton, {\n shouldForwardProp: prop => prop !== 'colorTheme' && prop !== 'position',\n})<ModSkeletonProps>(({ theme, colorTheme = 'light', position = 'start' }) => ({\n borderRadius: borderRadius.xS,\n transform: 'none',\n\n // Light theme colors\n ...(colorTheme === 'light' && {\n backgroundColor: semanticColors.skeleton.background,\n\n '&::after': {\n background: `linear-gradient(90deg, transparent, ${semanticColors.skeleton.wave}, transparent)`,\n },\n }),\n\n // Dark theme colors\n ...(colorTheme === 'dark' && {\n backgroundColor: alpha(theme.palette.common.white, 0.08),\n\n '&::after': {\n background: `linear-gradient(90deg, transparent, ${alpha(theme.palette.common.white, 0.08)}, transparent)`,\n },\n }),\n\n // Animation direction based on position\n ...(position === 'end' && {\n '&::after': {\n animationDirection: 'reverse',\n },\n }),\n}))\n\n/**\n * ModSkeleton - Loading skeleton component based on MUI Skeleton\n *\n * Usage:\n * ```tsx\n * <ModSkeleton width={200} height={32} />\n * <ModSkeleton colorTheme=\"dark\" position=\"end\" width={200} height={32} />\n * ```\n */\nexport const ModSkeleton = ({\n colorTheme = 'light',\n position = 'start',\n ...props\n}: ModSkeletonProps) => {\n return (\n <StyledSkeleton\n animation=\"wave\"\n variant=\"rectangular\"\n colorTheme={colorTheme}\n position={position}\n {...props}\n />\n )\n}\n\nModSkeleton.displayName = 'ModSkeleton'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport MuiTable, { type TableProps } from '@mui/material/Table'\nimport TableBody from '@mui/material/TableBody'\nimport TableCell, { tableCellClasses } from '@mui/material/TableCell'\nimport TableContainer from '@mui/material/TableContainer'\nimport TableHead from '@mui/material/TableHead'\nimport TableRow from '@mui/material/TableRow'\nimport type { ReactNode } from 'react'\n\ntype TableSize = 'small' | 'medium'\ntype TableVariant = 'bordered' | 'plain'\ntype CellAlign = 'left' | 'center' | 'right'\n\nexport interface ModTableColumn {\n /** Unique key — looked up against each row to find the cell value. */\n key: string\n /** Header label rendered in the thead. */\n header: ReactNode\n /** Cell text alignment. @default 'left' */\n align?: CellAlign\n /** Column width — any CSS length (e.g. '120px', '20%'). */\n width?: string\n}\n\nexport interface ModTableProps extends Omit<TableProps, 'size'> {\n /** Column definitions. Order in the array determines render order. */\n columns: ModTableColumn[]\n\n /**\n * Row data. Each row is a record keyed by `column.key`. Cell values\n * may be any ReactNode (strings, badges, icons, etc.).\n */\n rows: Array<Record<string, ReactNode>>\n\n /**\n * Cell density.\n * - 'small': tight padding for dense lists.\n * - 'medium': comfortable padding for read-heavy tables.\n * @default 'small'\n */\n size?: TableSize\n\n /**\n * Container chrome.\n * - 'bordered': container border + borderRadius.card.\n * - 'plain': no container chrome — for embedding inside an existing surface.\n * @default 'bordered'\n */\n variant?: TableVariant\n\n /** Optional accessible label for the table. */\n ariaLabel?: string\n}\n\nconst sizePadding: Record<TableSize, string> = {\n small: `${spacing.spacing_3_4}px ${spacing.spacing_1_1_2}px`,\n medium: `${spacing.spacing_1_1_2}px ${spacing.spacing_2}px`,\n}\n\nconst sizeFontSize: Record<TableSize, number> = {\n small: typography.fontSize.xs,\n medium: typography.fontSize.sm,\n}\n\nconst StyledTable = styled(MuiTable, {\n shouldForwardProp: prop => prop !== 'tableSize',\n})<{ tableSize?: TableSize }>(({ theme, tableSize = 'small' }) => ({\n borderCollapse: 'separate',\n borderSpacing: 0,\n\n [`& .${tableCellClasses.head}`]: {\n backgroundColor: semanticColors.surfaces.dataGrid.header,\n color: semanticColors.typography.body,\n fontFamily: typography.fontFamily.body,\n fontSize: theme.typography.pxToRem(sizeFontSize[tableSize]),\n fontWeight: typography.fontWeight.semiBold,\n lineHeight: 1.4,\n padding: sizePadding[tableSize],\n borderBottom: `1px solid ${semanticColors.border.secondary}`,\n },\n\n [`& .${tableCellClasses.body}`]: {\n color: semanticColors.typography.body,\n fontFamily: typography.fontFamily.body,\n fontSize: theme.typography.pxToRem(sizeFontSize[tableSize]),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.4,\n padding: sizePadding[tableSize],\n borderBottom: `1px solid ${semanticColors.border.secondary}`,\n },\n\n // Drop the trailing row's bottom border so the container border (if\n // any) is the visual edge.\n [`& tbody tr:last-of-type .${tableCellClasses.body}`]: {\n borderBottom: 'none',\n },\n}))\n\nconst StyledContainer = styled('div', {\n shouldForwardProp: prop => prop !== 'tableVariant',\n})<{ tableVariant?: TableVariant }>(({ tableVariant = 'bordered' }) =>\n tableVariant === 'bordered'\n ? {\n border: `1px solid ${semanticColors.border.secondary}`,\n borderRadius: borderRadius.card,\n overflow: 'hidden',\n backgroundColor: semanticColors.surfaces.white,\n }\n : { backgroundColor: 'transparent' }\n)\n\n/**\n * ModTable — lightweight read-only table for static data (schema rows,\n * key/value summaries, response metadata). For interactive grids with\n * sorting / filtering / pagination, use ModDataGrid instead.\n *\n * @example\n * <ModTable\n * columns={[\n * { key: 'name', header: 'Property' },\n * { key: 'type', header: 'Type', align: 'center', width: '120px' },\n * { key: 'description', header: 'Description' },\n * ]}\n * rows={[\n * { name: 'id', type: 'string', description: 'Resource identifier' },\n * { name: 'count', type: 'number', description: 'Item count' },\n * ]}\n * size=\"small\"\n * />\n */\nexport const ModTable = ({\n columns,\n rows,\n size = 'small',\n variant = 'bordered',\n ariaLabel,\n ...tableProps\n}: ModTableProps) => (\n <StyledContainer tableVariant={variant}>\n <TableContainer>\n <StyledTable tableSize={size} aria-label={ariaLabel} {...tableProps}>\n <TableHead>\n <TableRow>\n {columns.map(col => (\n <TableCell\n key={col.key}\n align={col.align ?? 'left'}\n style={col.width ? { width: col.width } : undefined}\n >\n {col.header}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {rows.map((row, i) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: row data has no stable id; index is intentional fallback for pure read-only display\n <TableRow key={i}>\n {columns.map(col => (\n <TableCell key={col.key} align={col.align ?? 'left'}>\n {row[col.key] ?? ''}\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </StyledTable>\n </TableContainer>\n </StyledContainer>\n)\n\nModTable.displayName = 'ModTable'\n","import { semanticColors, spacing } from '@moderneinc/design-system-tokens'\nimport Box, { type BoxProps } from '@mui/material/Box'\nimport { styled } from '@mui/material/styles'\nimport type { ReactNode } from 'react'\n\ntype TabPanelVariant = 'default' | 'flush'\n\nconst StyledTabPanel = styled(Box, {\n shouldForwardProp: prop => prop !== 'tabPanelVariant',\n})<{ tabPanelVariant?: TabPanelVariant }>(({ tabPanelVariant = 'default' }) => ({\n backgroundColor: semanticColors.surfaces.white,\n // default: 16px top padding for content-driven pages.\n // flush: zero padding so content sits directly against the tab bar's\n // bottom border (sidebars, panels, builders, canvases).\n padding: 0,\n ...(tabPanelVariant === 'flush' ? {} : { paddingTop: spacing.spacing_2 }),\n}))\n\nexport interface ModTabPanelProps extends Omit<BoxProps, 'role'> {\n /** This panel's identity — must match `currentValue` for the panel to render. */\n value: string | number\n\n /**\n * The currently selected tab value. When equal to `value`, this panel\n * renders its children. Otherwise the panel is hidden (and removed from\n * the accessibility tree via `hidden`).\n */\n currentValue: string | number\n\n /**\n * Layout density.\n * - `default`: 16px top padding — for standard content tabs.\n * - `flush`: zero padding — for full-bleed sidebar/panel/canvas layouts\n * where content must sit flush against the tab bar's bottom border.\n * @default 'default'\n */\n variant?: TabPanelVariant\n\n /** Panel content. */\n children?: ReactNode\n}\n\n/**\n * ModTabPanel — completes the ModTabs + ModTab + ModTabPanel set.\n *\n * Lightweight ARIA-compliant tab panel that renders children when its\n * `value` matches `currentValue`. No MUI Lab / TabContext dependency.\n *\n * @example\n * const [tab, setTab] = useState('overview')\n * return (\n * <>\n * <ModTabs value={tab} onChange={(_, v) => setTab(v)}>\n * <ModTab value=\"overview\" label=\"Overview\" />\n * <ModTab value=\"details\" label=\"Details\" />\n * </ModTabs>\n * <ModTabPanel value=\"overview\" currentValue={tab}>...</ModTabPanel>\n * <ModTabPanel value=\"details\" currentValue={tab} variant=\"flush\">...</ModTabPanel>\n * </>\n * )\n */\nexport const ModTabPanel = ({\n value,\n currentValue,\n variant = 'default',\n children,\n ...boxProps\n}: ModTabPanelProps) => {\n const selected = value === currentValue\n return (\n <StyledTabPanel\n role=\"tabpanel\"\n hidden={!selected}\n tabPanelVariant={variant}\n id={`tabpanel-${value}`}\n aria-labelledby={`tab-${value}`}\n {...boxProps}\n >\n {selected ? children : null}\n </StyledTabPanel>\n )\n}\n\nModTabPanel.displayName = 'ModTabPanel'\n","import { semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport { buttonBaseClasses } from '@mui/material/ButtonBase'\nimport { styled } from '@mui/material/styles'\nimport MuiTab, { type TabProps, tabClasses } from '@mui/material/Tab'\nimport MuiTabs, { tabsClasses } from '@mui/material/Tabs'\nimport type { ReactNode } from 'react'\nimport { ModTag } from '../Tag/Tag'\n\n/**\n * ModTabs - Tabs container component based on MUI Tabs\n */\nexport const ModTabs = styled(MuiTabs)(() => ({\n minHeight: spacing.spacing_5,\n\n [`& .${tabsClasses.indicator}`]: {\n backgroundColor: semanticColors.buttons.navigation.activeBorder,\n height: 2,\n },\n\n [`& .${tabsClasses.list}`]: {\n gap: 0,\n },\n}))\n\nModTabs.displayName = 'ModTabs'\n\nconst StyledTab = styled(MuiTab)(({ theme }) => ({\n minHeight: spacing.spacing_5,\n padding: `${spacing.spacing_1}px ${spacing.spacing_2}px`,\n textTransform: 'none',\n fontWeight: typography.fontWeight.regular,\n fontSize: theme.typography.pxToRem(14),\n lineHeight: '1.5rem',\n color: semanticColors.typography.tab.inactive,\n transition: 'none', // Remove animation\n\n [`&.${tabClasses.selected}`]: {\n color: semanticColors.typography.tab.active,\n fontWeight: typography.fontWeight.semiBold,\n },\n\n '&:hover': {\n color: semanticColors.typography.tab.active,\n\n [`&.${tabClasses.selected}::after`]: {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: 2,\n backgroundColor: semanticColors.buttons.navigation.activeBorder,\n },\n },\n\n [`&.${buttonBaseClasses.focusVisible}`]: {\n color: semanticColors.typography.tab.active,\n outline: `2px solid ${semanticColors.border.focus}`,\n outlineOffset: -2,\n },\n\n [`&.${tabClasses.disabled}`]: {\n color: semanticColors.typography.button.disabled,\n cursor: 'not-allowed',\n pointerEvents: 'auto',\n\n '&:hover': {\n backgroundColor: 'transparent',\n },\n\n [`&.${tabClasses.selected}`]: {\n color: semanticColors.typography.button.disabled,\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: 2,\n backgroundColor: semanticColors.buttons.tertiary.disabled,\n },\n },\n },\n}))\n\nconst TabLabelContainer = styled('span')(() => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: spacing.spacing_1,\n}))\n\nexport interface ModTabProps extends Omit<TabProps, 'label'> {\n /**\n * The label for the tab\n */\n label: ReactNode\n\n /**\n * Optional count to display in a tag next to the label\n * @default undefined\n */\n count?: number | string\n\n /**\n * Tab value identifier\n */\n value: string | number\n}\n\n/**\n * ModTab - Individual tab button component based on MUI Tab\n */\nexport const ModTab = ({ label, count, ...props }: ModTabProps) => {\n const tabLabel =\n count !== undefined ? (\n <TabLabelContainer>\n {label}\n <ModTag label={String(count)} size=\"large\" variant=\"outlined\" intent=\"default\" />\n </TabLabelContainer>\n ) : (\n label\n )\n\n return <StyledTab label={tabLabel} {...props} />\n}\n\nModTab.displayName = 'ModTab'\n","import {\n borderRadius,\n semanticColors,\n semanticTypography,\n shadows,\n spacing,\n} from '@moderneinc/design-system-tokens'\nimport Alert, { type AlertProps, alertClasses } from '@mui/material/Alert'\nimport Button from '@mui/material/Button'\nimport IconButton from '@mui/material/IconButton'\nimport Stack from '@mui/material/Stack'\nimport { styled } from '@mui/material/styles'\nimport { X } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\ntype Intent = 'neutral' | 'info' | 'success' | 'error' | 'warning'\n\n/**\n * @deprecated The Figma design no longer has Filled/Outlined styles. Retained for API\n * compatibility only; all toasts render the single tinted style.\n */\ntype ToastType = 'outlined' | 'filled'\n\nconst intentStyles = {\n neutral: {\n background: semanticColors.status.neutral.light,\n border: semanticColors.border.primary,\n text: semanticColors.status.neutral.dark,\n action: semanticColors.typography.link.default,\n },\n info: {\n background: semanticColors.toast.infoBg,\n border: semanticColors.toast.infoBorder,\n text: semanticColors.toast.infoText,\n action: semanticColors.toast.infoText,\n },\n success: {\n background: semanticColors.toast.successBg,\n border: semanticColors.toast.successBorder,\n text: semanticColors.toast.successText,\n action: semanticColors.toast.successText,\n },\n error: {\n background: semanticColors.toast.errorBg,\n border: semanticColors.toast.errorBorder,\n text: semanticColors.toast.errorText,\n action: semanticColors.toast.errorText,\n },\n warning: {\n background: semanticColors.toast.warningBg,\n border: semanticColors.toast.warningBorder,\n text: semanticColors.toast.warningText,\n action: semanticColors.toast.warningText,\n },\n}\n\nconst shadowRegular = shadows.neutral.regular\nconst toastShadow = `${shadowRegular.x}px ${shadowRegular.y}px ${shadowRegular.blur}px ${shadowRegular.spread}px ${shadowRegular.shadow}`\n\ntype StyledAlertProps = Omit<AlertProps, 'variant'> & {\n intent?: Intent\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Alert variant type without global augmentation\nconst StyledAlert = styled(Alert as any, {\n shouldForwardProp: prop => prop !== 'intent',\n})<StyledAlertProps>(({ theme, intent = 'neutral' }) => {\n const palette = intentStyles[intent as Intent]\n\n return {\n padding: spacing.spacing_2,\n borderRadius: borderRadius.s,\n gap: spacing.spacing_4,\n alignItems: 'flex-start',\n fontSize: theme.typography.pxToRem(semanticTypography.body.small.medium.fontSize),\n lineHeight: semanticTypography.body.small.medium.lineHeight,\n backgroundColor: palette.background,\n color: palette.text,\n border: `1px solid ${palette.border}`,\n boxShadow: toastShadow,\n\n [`& .${alertClasses.icon}`]: {\n display: 'none',\n },\n\n [`& .${alertClasses.message}`]: {\n padding: 0,\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n gap: spacing.spacing_3,\n },\n\n [`& .${alertClasses.action}`]: {\n padding: 0,\n marginRight: 0,\n },\n }\n})\n\nconst ToastTitle = styled('p')<{ intent?: Intent }>(({ theme, intent = 'neutral' }) => ({\n margin: 0,\n fontSize: theme.typography.pxToRem(semanticTypography.body.small.semiBold.fontSize),\n fontWeight: semanticTypography.body.small.semiBold.fontWeight,\n lineHeight: semanticTypography.body.small.semiBold.lineHeight,\n color: intentStyles[intent as Intent].text,\n}))\n\nconst ToastMessage = styled('p')<{ intent?: Intent }>(({ theme, intent = 'neutral' }) => ({\n margin: 0,\n fontSize: theme.typography.pxToRem(semanticTypography.body.small.medium.fontSize),\n fontWeight: semanticTypography.body.small.medium.fontWeight,\n lineHeight: semanticTypography.body.small.medium.lineHeight,\n color: intentStyles[intent as Intent].text,\n}))\n\nconst ToastActions = styled(Stack)({\n gap: spacing.spacing_3,\n alignItems: 'flex-start',\n justifyContent: 'flex-start',\n})\n\nconst ToastButton = styled(Button, {\n shouldForwardProp: prop => prop !== 'toastIntent' && prop !== 'primary',\n})<{ toastIntent?: Intent; primary?: boolean }>(({ theme, toastIntent = 'neutral' }) => ({\n padding: 0,\n minWidth: 'auto',\n fontSize: theme.typography.pxToRem(semanticTypography.link.small.fontSize),\n fontWeight: semanticTypography.link.small.fontWeight,\n lineHeight: semanticTypography.link.small.lineHeight,\n textTransform: 'none',\n color: intentStyles[toastIntent as Intent].action,\n '&:hover': {\n backgroundColor: 'transparent',\n textDecoration: 'underline',\n },\n}))\n\nexport interface ModToastProps extends Omit<AlertProps, 'variant' | 'severity' | 'color'> {\n /**\n * The intent/purpose of the toast\n * @default \"neutral\"\n */\n intent?: Intent\n\n /**\n * @deprecated The Figma design no longer has Filled/Outlined styles. Ignored; all\n * toasts render the single tinted style.\n */\n type?: ToastType\n\n /**\n * The title/header text\n */\n title?: string\n\n /**\n * The body/supporting text\n */\n message?: string\n\n /**\n * Whether to show the close button\n * @default false\n */\n showClose?: boolean\n\n /**\n * Custom action buttons (for default toast types)\n * Pass action buttons as children of this prop\n */\n actions?: ReactNode\n\n /**\n * Callback when close button is clicked\n */\n onClose?: () => void\n}\n\n/**\n * ModToast - Notification/Toast component based on MUI Alert\n */\nexport const ModToast = ({\n intent = 'neutral',\n type: _type,\n title,\n message,\n showClose = false,\n actions,\n onClose,\n ...props\n}: ModToastProps) => {\n return (\n <StyledAlert\n {...props}\n intent={intent}\n action={\n showClose ? (\n <IconButton size=\"small\" onClick={onClose} sx={{ color: semanticColors.icons.utility }}>\n <X size={16} />\n </IconButton>\n ) : undefined\n }\n >\n <Stack sx={{ gap: `${spacing.spacing_1}px`, width: '100%' }}>\n {title && <ToastTitle intent={intent}>{title}</ToastTitle>}\n {message && <ToastMessage intent={intent}>{message}</ToastMessage>}\n </Stack>\n {actions && <ToastActions direction=\"row\">{actions}</ToastActions>}\n </StyledAlert>\n )\n}\n\n/**\n * Helper component for creating toast action buttons with proper styling\n */\nexport const ModToastButton = ({\n primary,\n intent = 'neutral',\n type: _type,\n children,\n ...props\n}: {\n primary?: boolean\n intent?: Intent\n /**\n * @deprecated The Figma design no longer has Filled/Outlined styles. Ignored.\n */\n type?: ToastType\n children: ReactNode\n} & Omit<React.ComponentProps<typeof Button>, 'variant' | 'type'>) => {\n return (\n <ToastButton variant=\"text\" toastIntent={intent} primary={primary} {...props}>\n {children}\n </ToastButton>\n )\n}\n\nModToast.displayName = 'ModToast'\nModToastButton.displayName = 'ModToastButton'\n","import { semanticColors, shadows, spacing, typography } from '@moderneinc/design-system-tokens'\nimport Switch, { type SwitchProps, switchClasses } from '@mui/material/Switch'\nimport { styled } from '@mui/material/styles'\nimport type { ReactNode } from 'react'\n\n// Augment MUI types to add custom size values\ndeclare module '@mui/material/Switch' {\n interface SwitchPropsSizeOverrides {\n small: true\n medium: true\n }\n}\n\ntype ToggleSize = 'small' | 'medium'\n\nconst ToggleContainer = styled('label')<{ disabled?: boolean; size: ToggleSize }>(\n ({ disabled, size = 'medium' }) => ({\n display: 'inline-flex',\n alignItems: 'flex-start',\n gap: size === 'small' ? 8 : 12,\n cursor: disabled ? 'not-allowed' : 'pointer',\n userSelect: 'none',\n })\n)\n\nconst LabelContainer = styled('div')({\n display: 'flex',\n flexDirection: 'column',\n gap: 0,\n})\n\nconst Label = styled('span')<{ size?: ToggleSize }>(({ theme, size = 'medium' }) => ({\n fontSize: theme.typography.pxToRem(\n size === 'small' ? typography.fontSize.sm : typography.fontSize.default\n ),\n fontWeight: typography.fontWeight.medium,\n lineHeight: size === 'small' ? 1.4 : 1.5,\n color: semanticColors.typography.input.default,\n}))\n\nconst HelperText = styled('span')<{ size?: ToggleSize }>(({ theme, size = 'medium' }) => ({\n fontSize: theme.typography.pxToRem(\n size === 'small' ? typography.fontSize.sm : typography.fontSize.default\n ),\n fontWeight: typography.fontWeight.regular,\n lineHeight: size === 'small' ? 1.4 : 1.5,\n color: semanticColors.typography.bodySecondary,\n}))\n\nconst StyledSwitch = styled(Switch, {\n shouldForwardProp: prop => prop !== 'size',\n})<{\n size?: ToggleSize\n disabled?: boolean\n}>(({ theme, size = 'medium', disabled }) => {\n // Size configurations\n const sizeConfig = {\n small: {\n width: 34,\n height: 20,\n thumbSize: 14,\n trackPadding: 3,\n },\n medium: {\n width: spacing.spacing_5_1_2,\n height: 24,\n thumbSize: 20,\n trackPadding: 2,\n },\n }\n\n const config = sizeConfig[size]\n const thumbTranslate = config.width - config.thumbSize - config.trackPadding * 2\n\n return {\n width: config.width,\n height: config.height,\n padding: 0,\n overflow: 'visible',\n flexShrink: 0,\n cursor: disabled ? 'not-allowed' : 'pointer',\n pointerEvents: disabled ? 'auto' : undefined,\n\n // Root element\n [`& .${switchClasses.switchBase}`]: {\n padding: config.trackPadding,\n color: semanticColors.surfaces.toggleKnob,\n transition: theme.transitions.create(['transform'], {\n duration: theme.transitions.duration.shortest,\n }),\n\n // Focus visible for keyboard navigation\n '&.Mui-focusVisible': {\n [`& + .${switchClasses.track}`]: {\n outline: `2px solid ${semanticColors.border.focus}`,\n outlineOffset: 2,\n },\n },\n\n // Checked state\n [`&.${switchClasses.checked}`]: {\n transform: `translateX(${thumbTranslate}px)`,\n color: semanticColors.surfaces.toggleKnob,\n\n [`& + .${switchClasses.track}`]: {\n backgroundColor: semanticColors.buttons.primary.default,\n opacity: 1,\n border: 'none',\n },\n },\n\n // Disabled state\n [`&.${switchClasses.disabled}`]: {\n // Thumb changes to disabled background color for both checked and unchecked\n color: semanticColors.input.disabledBackground,\n cursor: 'not-allowed',\n\n // Both checked and unchecked use the same grey track when disabled\n [`& + .${switchClasses.track}`]: {\n backgroundColor: semanticColors.border.secondary,\n opacity: 1,\n border: 'none',\n },\n },\n\n // More specific selector for disabled+checked to override checked color\n [`&.${switchClasses.disabled}.${switchClasses.checked}`]: {\n color: semanticColors.input.disabledBackground,\n },\n },\n\n // Thumb\n [`& .${switchClasses.thumb}`]: {\n width: config.thumbSize,\n height: config.thumbSize,\n boxShadow: `${shadows.neutral.small.x}px ${shadows.neutral.small.y}px ${shadows.neutral.small.blur}px ${shadows.neutral.small.spread}px ${shadows.neutral.small.shadow}`,\n transition: theme.transitions.create(['width'], {\n duration: theme.transitions.duration.shortest,\n }),\n },\n\n // Track\n [`& .${switchClasses.track}`]: {\n width: config.width,\n height: config.height,\n borderRadius: config.height / 2,\n backgroundColor: semanticColors.surface.sunken2,\n opacity: 1,\n // Off track carries a border; box-sizing keeps the 1px inside the\n // configured width/height. Checked/disabled states reset it below.\n boxSizing: 'border-box',\n border: `1px solid ${semanticColors.border.strong}`,\n transition: theme.transitions.create(['background-color'], {\n duration: theme.transitions.duration.short,\n }),\n },\n }\n})\n\nexport interface ModToggleProps extends Omit<SwitchProps, 'size'> {\n /**\n * The size of the toggle\n * @default \"medium\"\n */\n size?: ToggleSize\n\n /**\n * The label text displayed next to the toggle\n */\n label?: ReactNode\n\n /**\n * The helper text displayed below the label\n */\n helperText?: ReactNode\n}\n\n/**\n * ModToggle - Binary on/off switch component based on MUI Switch\n *\n * @example\n * // Basic toggle\n * <ModToggle />\n *\n * @example\n * // With label\n * <ModToggle label=\"Remember me\" />\n *\n * @example\n * // With label and helper text\n * <ModToggle label=\"Remember me\" helperText=\"Save my login details for next time.\" />\n *\n * @example\n * // Small size\n * <ModToggle size=\"small\" label=\"Remember me\" />\n *\n * @example\n * // Controlled\n * <ModToggle checked={isChecked} onChange={handleChange} label=\"Remember me\" />\n */\nexport const ModToggle = ({\n size = 'medium',\n label,\n helperText,\n disabled,\n ...props\n}: ModToggleProps) => {\n // If no label, return just the switch\n if (!label && !helperText) {\n return <StyledSwitch size={size} disabled={disabled} {...props} />\n }\n\n // With label, wrap in container for proper layout\n return (\n <ToggleContainer disabled={disabled} size={size}>\n <StyledSwitch size={size} disabled={disabled} {...props} />\n <LabelContainer>\n {label && <Label size={size}>{label}</Label>}\n {helperText && <HelperText size={size}>{helperText}</HelperText>}\n </LabelContainer>\n </ToggleContainer>\n )\n}\n\nModToggle.displayName = 'ModToggle'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport MuiToggleButton, {\n type ToggleButtonProps as MuiToggleButtonProps,\n} from '@mui/material/ToggleButton'\n\ntype ToggleButtonSize = 'small' | 'medium'\n\n/**\n * Visual style of the toggle. Set automatically by ModToggleButtonGroup.\n * - `default`: buttons fill a bordered pill; selected is a tinted band.\n * - `segmented`: buttons are raised pills on a sunken track; selected lifts to\n * the card surface in accent text (the Morpheus segmented control).\n */\nexport type ToggleButtonVariant = 'default' | 'segmented'\n\nconst sizeStyles = {\n small: {\n height: 24,\n fontSize: typography.fontSize.xs,\n },\n medium: {\n height: 32,\n fontSize: typography.fontSize.sm,\n },\n} as const\n\nconst StyledToggleButton = styled(MuiToggleButton, {\n shouldForwardProp: prop => prop !== 'toggleSize' && prop !== 'toggleVariant',\n})<{ toggleSize?: ToggleButtonSize; toggleVariant?: ToggleButtonVariant }>(\n ({ theme, toggleSize = 'medium', toggleVariant = 'default' }) => {\n const segmented = toggleVariant === 'segmented'\n return {\n height: sizeStyles[toggleSize].height,\n padding: `0 ${spacing.spacing_1_1_2}px`,\n fontFamily: typography.fontFamily.body,\n fontSize: theme.typography.pxToRem(sizeStyles[toggleSize].fontSize),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1,\n color: segmented ? semanticColors.typography.body : semanticColors.typography.bodySecondary,\n backgroundColor: 'transparent',\n border: 'none',\n // Segmented buttons are independent rounded pills on the group's track.\n ...(segmented && { borderRadius: borderRadius.s }),\n textTransform: 'none',\n transition: theme.transitions.create(['background-color', 'color'], {\n duration: theme.transitions.duration.short,\n }),\n\n '&:hover': {\n backgroundColor: segmented ? 'transparent' : semanticColors.surfaces.tabActive,\n color: semanticColors.typography.body,\n },\n\n '&.Mui-selected, &.Mui-selected:hover': {\n backgroundColor: segmented\n ? semanticColors.surfaces.card\n : semanticColors.surfaces.tabActive,\n color: segmented ? semanticColors.accent.default : semanticColors.typography.body,\n fontWeight: typography.fontWeight.semiBold,\n },\n\n '&.Mui-focusVisible': {\n outline: `2px solid ${semanticColors.border.focus}`,\n outlineOffset: -2,\n },\n\n '&.Mui-disabled': {\n color: semanticColors.typography.button.disabled,\n cursor: 'default',\n pointerEvents: 'none',\n },\n }\n }\n)\n\nexport interface ModToggleButtonProps extends Omit<MuiToggleButtonProps, 'color' | 'size'> {\n /**\n * Size of the toggle button. Set automatically by ModToggleButtonGroup\n * when used as a child; set explicitly only for standalone use.\n * @default 'medium'\n */\n size?: ToggleButtonSize\n /**\n * Visual style. Set automatically by ModToggleButtonGroup; set explicitly\n * only for standalone use.\n * @default 'default'\n */\n variant?: ToggleButtonVariant\n}\n\n/**\n * ModToggleButton — a single button in a segmented control. Use inside\n * ModToggleButtonGroup; the group manages selection state and forwards\n * size and variant to its children. Suitable for inline toolbar mode switches\n * (\"Table\" / \"Raw\"). For page-level tabs, prefer ModButtonTab.\n */\nexport const ModToggleButton = ({\n children,\n size = 'medium',\n variant = 'default',\n ...props\n}: ModToggleButtonProps) => (\n <StyledToggleButton toggleSize={size} toggleVariant={variant} {...props}>\n {children}\n </StyledToggleButton>\n)\n\nModToggleButton.displayName = 'ModToggleButton'\n","import { borderRadius, semanticColors, spacing } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport { toggleButtonClasses } from '@mui/material/ToggleButton'\nimport MuiToggleButtonGroup, {\n type ToggleButtonGroupProps as MuiToggleButtonGroupProps,\n} from '@mui/material/ToggleButtonGroup'\nimport { Children, cloneElement, isValidElement } from 'react'\nimport {\n ModToggleButton,\n type ModToggleButtonProps,\n type ToggleButtonVariant,\n} from '../ToggleButton/ToggleButton'\n\ntype ToggleButtonGroupSize = 'small' | 'medium'\n\nconst StyledToggleButtonGroup = styled(MuiToggleButtonGroup, {\n shouldForwardProp: prop => prop !== 'groupVariant',\n})<{ groupVariant?: ToggleButtonVariant }>(({ groupVariant = 'default' }) => {\n const segmented = groupVariant === 'segmented'\n return {\n display: 'inline-flex',\n ...(segmented\n ? {\n // Sunken track holding raised pills (the Morpheus `.seg` control).\n backgroundColor: semanticColors.surface.sunken2,\n borderRadius: borderRadius.input,\n border: 'none',\n padding: spacing.spacing_1_2,\n gap: spacing.spacing_1_2,\n }\n : {\n borderRadius: borderRadius.button,\n border: `1px solid ${semanticColors.border.secondary}`,\n overflow: 'hidden',\n }),\n\n // Default fuses the children (square inner corners, no gap); segmented\n // keeps each button as its own rounded pill.\n [`& .${toggleButtonClasses.root}`]: {\n borderRadius: segmented ? borderRadius.s : 0,\n ...(segmented && { margin: 0 }),\n },\n }\n})\n\nexport interface ModToggleButtonGroupProps\n extends Omit<MuiToggleButtonGroupProps, 'orientation' | 'color' | 'size' | 'fullWidth'> {\n /**\n * Size of the buttons in the group. Forwarded to each ModToggleButton child.\n * @default 'medium'\n */\n size?: ToggleButtonGroupSize\n /**\n * Visual style, forwarded to each child. `segmented` renders raised pills on\n * a sunken track with the selected pill lifted to the card surface in accent\n * text (Morpheus). `default` is a bordered pill with a tinted selection.\n * @default 'default'\n */\n variant?: ToggleButtonVariant\n}\n\n/**\n * ModToggleButtonGroup — segmented control wrapping MUI ToggleButtonGroup with\n * design system tokens. Use for inline toolbar mode switches (e.g. \"Table\" / \"Raw\" in a\n * panel header). For page-level tab navigation, prefer ModButtonTabGroup.\n *\n * @example\n * <ModToggleButtonGroup value={mode} exclusive onChange={(_, v) => v && setMode(v)} variant=\"segmented\" size=\"small\">\n * <ModToggleButton value=\"table\">Table</ModToggleButton>\n * <ModToggleButton value=\"raw\">Raw</ModToggleButton>\n * </ModToggleButtonGroup>\n */\nexport const ModToggleButtonGroup = ({\n size = 'medium',\n variant = 'default',\n children,\n ...props\n}: ModToggleButtonGroupProps) => {\n // Forward size and variant to each ModToggleButton child so consumers don't\n // have to set them on every button. MUI's group already does this via\n // context for its own size prop, but our shapes don't pass through unchanged.\n const sized = Children.map(children, child =>\n isValidElement<ModToggleButtonProps>(child) && child.type === ModToggleButton\n ? cloneElement(child, { size, variant })\n : child\n )\n\n return (\n <StyledToggleButtonGroup groupVariant={variant} {...props}>\n {sized}\n </StyledToggleButtonGroup>\n )\n}\n\nModToggleButtonGroup.displayName = 'ModToggleButtonGroup'\n","import { styled } from '@mui/material/styles'\n\n/**\n * ModToggleButtonWithText\n */\nexport const ModToggleButtonWithText = styled('div')({})\n","import { semanticColors, spacing } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport { Toolbar, type ToolbarProps } from '@mui/x-data-grid'\nimport type { ReactNode } from 'react'\n\nconst StyledToolbar = styled(Toolbar)(({ theme }) => ({\n backgroundColor: semanticColors.surfaces.white,\n minHeight: 'auto',\n justifyContent: 'space-between',\n // Apply padding directly to match Figma design (16px horizontal, 12px vertical)\n paddingTop: spacing.spacing_1_1_2, // 12px\n paddingBottom: spacing.spacing_1_1_2, // 12px\n paddingLeft: spacing.spacing_2, // 16px\n paddingRight: spacing.spacing_2, // 16px\n\n [theme.breakpoints.down('sm')]: {\n flexWrap: 'wrap',\n },\n}))\n\nexport interface ModToolbarProps extends ToolbarProps {\n /**\n * Toolbar content (typically ModQuickFilter, ModButton, ModToggle, etc.)\n */\n children?: ReactNode\n}\n\n/**\n * ModToolbar - Styled toolbar component for data grid controls\n *\n * A composable toolbar component that provides consistent styling for data grid toolbars.\n * Uses justify-space-between layout. Wrap left-side controls in a Box with gap, and right-side\n * controls in another Box.\n *\n * @example\n * // Basic toolbar with search\n * <ModToolbar>\n * <Box sx={{ display: 'flex', gap: 2, alignItems: 'center' }}>\n * <ModQuickFilter placeholder=\"Search...\" />\n * </Box>\n * </ModToolbar>\n *\n * @example\n * // Full toolbar with left controls and right actions\n * <ModToolbar>\n * <Box sx={{ display: 'flex', gap: 2, alignItems: 'center' }}>\n * <ModQuickFilter placeholder=\"Search...\" />\n * <ModButton variant=\"secondary\" size=\"small\">\n * <SlidersHorizontal size={20} />\n * Filters\n * <ModTag label=\"4\" variant=\"filled\" color=\"info\" />\n * </ModButton>\n * <ModButton variant=\"secondary\" size=\"small\">\n * <Columns3 size={16} />\n * Columns\n * </ModButton>\n * <ModToggle size=\"small\" label=\"Toggle option\" checked={true} />\n * </Box>\n * <Box sx={{ display: 'flex', gap: 2, alignItems: 'center', height: 40 }}>\n * <ModButton variant=\"secondary\" size=\"small\">\n * Actions\n * <ChevronDown size={16} />\n * </ModButton>\n * </Box>\n * </ModToolbar>\n */\nexport const ModToolbar = ({ children, ...props }: ModToolbarProps) => {\n return <StyledToolbar {...props}>{children}</StyledToolbar>\n}\n\nModToolbar.displayName = 'ModToolbar'\n","import { styled } from '@mui/material/styles'\n\n/**\n * ModTopNav\n */\nexport const ModTopNav = styled('div')({})\n","import { styled } from '@mui/material/styles'\n\n/**\n * ModTourModal\n */\nexport const ModTourModal = styled('div')({})\n","import { semanticColors, spacing, typography } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport { useTreeItemModel } from '@mui/x-tree-view/hooks'\nimport { TreeItem, type TreeItemProps, treeItemClasses } from '@mui/x-tree-view/TreeItem'\nimport { RichTreeViewPro, type RichTreeViewProProps } from '@mui/x-tree-view-pro/RichTreeViewPro'\nimport { ChevronDown, ChevronRight } from 'lucide-react'\nimport { forwardRef, type ReactNode } from 'react'\n\n/**\n * Extended item data that ModTreeItem can read from the items array.\n * Consumers pass these via the `items` prop on ModTreeView.\n */\nexport interface ModTreeItemData {\n id: string\n label: string\n icon?: ReactNode\n checkbox?: ReactNode\n secondaryLabel?: ReactNode\n endAction?: ReactNode\n statusIcon?: ReactNode\n children?: ModTreeItemData[]\n}\n\nexport type ModTreeItemProps = TreeItemProps\n\n/**\n * Custom label component that reads extra slot data from the item model.\n * Used as `slots.label` on the TreeItem.\n */\nconst ModTreeItemLabel = (props: { children: ReactNode; itemId?: string }) => {\n const { children, itemId, ...rest } = props\n const item = useTreeItemModel<ModTreeItemData>(itemId!)\n\n return (\n <ItemContentRow {...rest}>\n {item?.checkbox}\n {(item?.statusIcon ?? item?.icon) && <ItemIcon>{item?.statusIcon ?? item?.icon}</ItemIcon>}\n <ItemLabel>{children}</ItemLabel>\n {item?.secondaryLabel && <ItemSecondaryLabel>{item.secondaryLabel}</ItemSecondaryLabel>}\n {item?.endAction && <ItemEndAction>{item.endAction}</ItemEndAction>}\n </ItemContentRow>\n )\n}\n\n/**\n * ModTreeItem - Styled tree item row with optional icon, checkbox,\n * secondaryLabel, endAction, and statusIcon slots.\n *\n * Slot data is read from the item model (passed via `items` on ModTreeView).\n */\nexport const ModTreeItem = forwardRef<HTMLLIElement, ModTreeItemProps>(function ModTreeItem(\n { slots, slotProps, ...props },\n ref\n) {\n return (\n <TreeItem\n ref={ref}\n slots={{ label: ModTreeItemLabel, ...slots }}\n // itemId is not in MUI's label slot type but ModTreeItemLabel needs it for useTreeItemModel\n slotProps={{\n ...slotProps,\n label: { ...slotProps?.label, itemId: props.itemId } as never,\n }}\n {...props}\n />\n )\n})\n\nconst ItemContentRow = styled('div')({\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_1_2,\n flex: 1,\n minWidth: 0,\n})\n\nconst ItemIcon = styled('span')({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 16,\n height: 16,\n flexShrink: 0,\n color: semanticColors.icons.default,\n '& svg': {\n width: 16,\n height: 16,\n },\n})\n\nconst ItemLabel = styled('span')({\n flex: 1,\n minWidth: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n})\n\nconst ItemSecondaryLabel = styled('span')({\n flexShrink: 0,\n fontSize: typography.fontSize.xs,\n fontWeight: typography.fontWeight.regular,\n fontFamily: typography.fontFamily.body,\n color: semanticColors.typography.link.primary,\n})\n\nconst ItemEndAction = styled('span')({\n display: 'inline-flex',\n alignItems: 'center',\n flexShrink: 0,\n color: semanticColors.icons.utility,\n '& svg': {\n width: 16,\n height: 16,\n },\n})\n\nexport interface ModTreeViewProps\n extends Omit<RichTreeViewProProps<ModTreeItemData, false>, 'slots'> {\n slots?: RichTreeViewProProps<ModTreeItemData, false>['slots']\n}\n\n/**\n * ModTreeView - Styled tree container wrapping MUI RichTreeViewPro.\n *\n * Provides design-system token styling, default expand/collapse icons,\n * and ModTreeItem as the default item slot.\n */\nexport const ModTreeView = ({ slots, ...props }: ModTreeViewProps) => {\n return (\n <StyledTreeView\n // v9 enables virtualization by default; disabled to preserve current layout behavior\n disableVirtualization\n slots={{\n item: ModTreeItem,\n collapseIcon: CollapseIcon,\n expandIcon: ExpandIcon,\n ...slots,\n }}\n itemChildrenIndentation={spacing.spacing_2_1_2}\n {...props}\n />\n )\n}\n\nModTreeView.displayName = 'ModTreeView'\n\nconst CollapseIcon = () => <ChevronDown size={16} />\nconst ExpandIcon = () => <ChevronRight size={16} />\n\nconst StyledTreeView = styled(RichTreeViewPro)({\n [`& .${treeItemClasses.content}`]: {\n height: 28,\n gap: spacing.spacing_1_2,\n paddingLeft: spacing.spacing_1,\n paddingRight: spacing.spacing_1,\n borderRadius: 0,\n },\n [`& .${treeItemClasses.content}:hover`]: {\n backgroundColor: semanticColors.surfaces.listHover,\n },\n [`& .${treeItemClasses.content}[data-focused]`]: {\n boxShadow: `inset 0 0 0 2px ${semanticColors.border.focus}`,\n backgroundColor: 'transparent',\n },\n [`& .${treeItemClasses.content}[data-selected]`]: {\n backgroundColor: semanticColors.surfaces.listHover,\n },\n [`& .${treeItemClasses.content}[data-selected][data-focused]`]: {\n backgroundColor: semanticColors.surfaces.listHover,\n boxShadow: `inset 0 0 0 2px ${semanticColors.border.focus}`,\n },\n [`& .${treeItemClasses.label}`]: {\n fontSize: typography.fontSize.xs,\n fontWeight: typography.fontWeight.regular,\n fontFamily: typography.fontFamily.body,\n color: semanticColors.typography.body,\n padding: 0,\n },\n [`& .${treeItemClasses.iconContainer}`]: {\n width: 16,\n color: semanticColors.icons.default,\n '& svg': {\n width: 16,\n height: 16,\n },\n },\n [`& .${treeItemClasses.groupTransition}`]: {\n borderLeft: `1px solid ${semanticColors.border.primary}`,\n marginLeft: spacing.spacing_1_1_4,\n },\n}) as typeof RichTreeViewPro\n","import { borderRadius, semanticColors } from '@moderneinc/design-system-tokens'\nimport { styled } from '@mui/material/styles'\nimport ToggleButton, { toggleButtonClasses } from '@mui/material/ToggleButton'\nimport ToggleButtonGroup, {\n type ToggleButtonGroupProps,\n toggleButtonGroupClasses,\n} from '@mui/material/ToggleButtonGroup'\n\n// Figma-exact border radius for toggle buttons — no matching design token\nconst TOGGLE_BUTTON_BORDER_RADIUS = 14\n\nconst StyledToggleButtonGroup = styled(ToggleButtonGroup)(({ theme }) => ({\n backgroundColor: semanticColors.surfaces.card,\n padding: theme.spacing(0.625, 0.875),\n borderRadius: borderRadius.m,\n gap: 0,\n\n [`& .${toggleButtonGroupClasses.grouped}`]: {\n border: 'none',\n borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,\n margin: 0,\n\n '&:not(:first-of-type)': {\n borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,\n marginLeft: 0,\n },\n\n '&:not(:last-of-type)': {\n borderRadius: TOGGLE_BUTTON_BORDER_RADIUS,\n },\n },\n}))\n\nconst StyledToggleButton = styled(ToggleButton)(({ theme }) => ({\n padding: theme.spacing(0.625),\n minWidth: 'auto',\n color: semanticColors.icons.default,\n border: 'none',\n\n '& svg': {\n width: 20,\n height: 20,\n },\n\n '&:hover': {\n backgroundColor: 'transparent',\n },\n\n [`&.${toggleButtonClasses.selected}`]: {\n backgroundColor: semanticColors.buttons.navigation.pressedBackground,\n color: semanticColors.icons.active,\n\n '&:hover': {\n backgroundColor: semanticColors.buttons.navigation.pressedBackground,\n },\n },\n}))\n\nexport interface ModTypologyControlProps extends Omit<ToggleButtonGroupProps, 'orientation'> {}\n\n/**\n * ModTypologyControl - A vertical toggle button group for switching between different typology views\n *\n * Design Tokens Used:\n * - semanticColors.surfaces.card - background color\n * - semanticColors.icons.default - default icon color\n * - semanticColors.icons.active - selected icon color\n * - semanticColors.buttons.navigation.pressedBackground - selected button background\n * - borderRadius.m - container border radius\n */\nexport const ModTypologyControl = ({ children, ...props }: ModTypologyControlProps) => {\n return (\n <StyledToggleButtonGroup orientation=\"vertical\" exclusive {...props}>\n {children}\n </StyledToggleButtonGroup>\n )\n}\n\nModTypologyControl.displayName = 'ModTypologyControl'\n\nexport { StyledToggleButton as ModTypologyButton }\n","import { spacing } from '@moderneinc/design-system-tokens'\nimport { Box, type BoxProps, keyframes } from '@mui/material'\nimport type { FunctionComponent } from 'react'\n\n// Box-breathing rhythm: inhale (grow) → hold → exhale (shadow expand+fade) → rest.\nconst vibrate = keyframes`\n 0% { transform: scale(0.9); box-shadow: 0 0 0 0 transparent; }\n 25% { transform: scale(1); box-shadow: 0 0 0 0 currentColor; }\n 50% { transform: scale(1); box-shadow: 0 0 0 0 currentColor; }\n 75% { transform: scale(0.9); box-shadow: 0 0 0 ${spacing.spacing_3_4}px transparent; }\n 100% { transform: scale(0.9); box-shadow: 0 0 0 0 transparent; }\n`\n\nexport interface ModVibratingDotProps extends BoxProps {}\n\n/**\n * ModVibratingDot - Animated status dot with a breathing pulse halo.\n *\n * Indicates a waiting/pending state (QUEUED / CREATED). Color is inherited from\n * `currentColor`; set it via the `color`/`sx` prop or a parent. Sized to the\n * lowercase-letter height regardless of parent fontSize.\n */\nexport const ModVibratingDot: FunctionComponent<ModVibratingDotProps> = props => (\n <Box\n aria-hidden=\"true\"\n {...props}\n style={{\n width: spacing.spacing_1,\n height: spacing.spacing_1,\n ...props.style,\n }}\n sx={{\n display: 'inline-block',\n borderRadius: '50%',\n backgroundColor: 'currentColor',\n verticalAlign: 'middle',\n flexShrink: 0,\n animation: `${vibrate} 5.6s ease-in-out infinite`,\n '@media (prefers-reduced-motion: reduce)': {\n animation: 'none',\n },\n ...props.sx,\n }}\n />\n)\n\nModVibratingDot.displayName = 'ModVibratingDot'\n","/**\n * @moderneinc/design-system-components\n *\n * Styled MUI components using Moderne design tokens\n */\n\nexport const version = '0.0.0-development'\n\n// Components\nexport { ModActivityHeader } from './ActivityHeader/ActivityHeader'\nexport {\n ActivityScene,\n CIRCLE_RADIUS,\n ModActivityIndicatorCell,\n} from './ActivityIndicatorCell/ActivityIndicatorCell'\nexport { ModAlert } from './Alert/Alert'\nexport { ModBadge } from './Badge/Badge'\nexport { ModBanner } from './Banner/Banner'\nexport { ModBreadcrumbLink, ModBreadcrumbs } from './Breadcrumbs/Breadcrumbs'\nexport { ModButton } from './Button/Button'\nexport { ModButtonTab } from './ButtonTab/ButtonTab'\nexport { ModButtonTabGroup } from './ButtonTabGroup/ButtonTabGroup'\nexport { ModCanceledIcon } from './CanceledIcon/CanceledIcon'\nexport * from './Card/Card'\nexport { ModCheckbox } from './Checkbox/Checkbox'\nexport { ModCheckboxWithText } from './CheckboxWithText/CheckboxWithText'\nexport { ModCodeSnippet } from './CodeSnippet/CodeSnippet'\nexport { ModDataGrid } from './DataGrid/DataGrid'\nexport { getDataGridHeaderStyles, getDataGridRowStyles } from './DataGrid/DataGrid.styles'\nexport {\n ModDataGridCellContent,\n ModMultiBadgesCell,\n ModStatusBadgeCell,\n ModUserAvatarCell,\n modRowHeights,\n} from './DataGridCell/DataGridCell'\nexport { ModDataGridColumnsButton } from './DataGridColumnsButton/DataGridColumnsButton'\nexport { ModDataGridColumnsPanel } from './DataGridColumnsPanel/DataGridColumnsPanel'\nexport {\n ModDataGridFilterPanel,\n ModDataGridFilterPanelAddIcon,\n ModDataGridFilterPanelDeleteIcon,\n ModDataGridFilterPanelRemoveAllIcon,\n ModDataGridSelect,\n} from './DataGridFilterPanel/DataGridFilterPanel'\nexport { ModDataGridFiltersButton } from './DataGridFiltersButton/DataGridFiltersButton'\nexport {\n SortedAscendingIcon,\n SortedDescendingIcon,\n UnsortedIcon,\n} from './DataGridHeaderCell/DataGridHeaderCell'\nexport { ModDataGridHeaderLabel } from './DataGridHeaderLabel/DataGridHeaderLabel'\nexport * from './DatePicker/DatePicker'\nexport { ModDatePickerListItem } from './DatePickerListItem/DatePickerListItem'\nexport { ModDatePickerMenu } from './DatePickerMenu/DatePickerMenu'\nexport { ModDivider } from './Divider/Divider'\nexport { ModDot } from './Dot/Dot'\nexport { ModDownloadToast } from './DownloadToast/DownloadToast'\nexport {\n ModFilledCanceled,\n ModFilledError,\n ModFilledInfo,\n ModFilledNeutral,\n ModFilledQueued,\n ModFilledSuccess,\n ModFilledWarning,\n} from './FilledStatusIcons/FilledStatusIcons'\nexport { ModFilterChip } from './FilterChip/FilterChip'\nexport { ModFooter } from './Footer/Footer'\nexport { ModGeneralAvatar } from './GeneralAvatar/GeneralAvatar'\nexport { ModIconButton } from './IconButton/IconButton'\nexport { ModIconWrapper } from './IconWrapper/IconWrapper'\nexport { ModInfiniteScrollGrid } from './InfiniteScrollGrid/InfiniteScrollGrid'\nexport { ModInputField } from './InputField/InputField'\nexport * from './ListItem/ListItem'\nexport * from './ListItemButton/ListItemButton'\nexport { ModLoadingSpinner } from './LoadingSpinner/LoadingSpinner'\n/** @deprecated Use ModMenu instead */\nexport { ModMenu, ModMenu as ModDropdownMenu } from './Menu/Menu'\n/** @deprecated Use ModMenuItem instead */\nexport { ModMenuItem, ModMenuItem as ModDropdownMenuItem } from './MenuItem/MenuItem'\nexport { ModActionsCell } from './ModActionsCell/ModActionsCell'\nexport { ModAvatarCell } from './ModAvatarCell/ModAvatarCell'\nexport { ModModal, ModModalContent, ModModalFooter, ModModalHeader } from './Modal/Modal'\nexport { ModIconCell } from './ModIconCell/ModIconCell'\nexport { ModLogoCell } from './ModLogoCell/ModLogoCell'\nexport { ModProgressCell } from './ModProgressCell/ModProgressCell'\nexport { ModStatusCell } from './ModStatusCell/ModStatusCell'\nexport { ModNavigationAvatar } from './NavigationAvatar/NavigationAvatar'\nexport { ModNavigationItem } from './NavigationItem/NavigationItem'\nexport { ModPageContent } from './PageContent/PageContent'\nexport { ModPaginatedGrid } from './PaginatedGrid/PaginatedGrid'\nexport { ModProgressbar } from './Progressbar/Progressbar'\nexport { ModQuickFilter } from './QuickFilter/QuickFilter'\nexport { ModRadio } from './Radio/Radio'\nexport { ModRadioButtonWithText } from './RadioButtonWithText/RadioButtonWithText'\n\nexport { ModRipplingDot } from './RipplingDot/RipplingDot'\n\nexport { ModSearchChip } from './SearchChip/SearchChip'\n// Backwards compatibility — deprecated, use Mod{Select,Menu,MenuItem} names\n/** @deprecated Use ModSelect instead */\n/** @deprecated Use ModSelectOption instead */\nexport {\n ModSelect,\n ModSelect as ModDropdown,\n ModSelectOption,\n ModSelectOption as ModDropdownOption,\n} from './Select/Select'\nexport { ModSelectField } from './SelectField/SelectField'\nexport { ModSideNav } from './SideNav/SideNav'\nexport { ModSkeleton } from './Skeleton/Skeleton'\nexport { ModTable } from './Table/Table'\nexport { ModTabPanel } from './TabPanel/TabPanel'\nexport { ModTab, ModTabs } from './Tabs/Tabs'\nexport { ModTag } from './Tag/Tag'\nexport { ModToast, ModToastButton } from './Toast/Toast'\nexport { ModToggle } from './Toggle/Toggle'\nexport { ModToggleButton } from './ToggleButton/ToggleButton'\nexport { ModToggleButtonGroup } from './ToggleButtonGroup/ToggleButtonGroup'\nexport { ModToggleButtonWithText } from './ToggleButtonWithText/ToggleButtonWithText'\nexport { ModToolbar } from './Toolbar/Toolbar'\nexport * from './Tooltip/Tooltip'\nexport { ModTopNav } from './TopNav/TopNav'\nexport { ModTourModal } from './TourModal/TourModal'\nexport { ModTreeItem, ModTreeView } from './Tree/Tree'\nexport * from './TypologyControl/TypologyControl'\n// Utilities\nexport { focusRingStyles } from './utils/focusRing'\nexport { ModVibratingDot } from './VibratingDot/VibratingDot'\n"],"names":["StyledChip","_jsx","sizeConfig","_jsxs","ACTIVITY_COLORS","__iconNode","intentColors","StyledAlert","_Fragment","StyledButtonBase","LabelContainer","Label","HelperText","IconWrapper","MenuItemContent","StyledDivider","MuiGridFilterPanel","sizeStyles","LabelText","HelpCircle","StyledRoot","ProgressLabel","StyledLinearProgress","customProps","AlertCircle","StyledListItemButton","MuiListItemButton","StyledCell","StyledTooltip","Fade","Box","ModSelectOption","StyledToggleButton","StyledToggleButtonGroup","ToggleButtonGroup","ToggleButton"],"mappings":"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I,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,mBAAmB,IAAI,IAAI;AACrE,IAAI,OAAO,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC;;AAE3C,EAAE,IAAI,IAAI,YAAY,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;AAE9D,EAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC;AACxB;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC1C;AACA,EAAE,OAAO,aAAa,CAAY,QAAQ,EAAE,QAAQ,CAAC;AACrD;;ACxCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;AAC/C,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAiB,CAAC;AACzC,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,aAAa,CAAgB,IAAI,EAAE,GAAG,CAAC;;AAEnE;AACA,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK;;AAE3B,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC;AACzC,EAAE,OAAO,KAAK;AACd;;ACtDA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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","x_google_ignoreList":[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,63,64,65,66,67,68,69,70,71,72,73,74]}
|