@moderneinc/neo-styled-components 2.0.3-next.ba615c → 2.0.3-next.db03d1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +1 -13
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -13
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/Avatar/Avatar.tsx","../src/Badge/Badge.tsx","../src/DataGridCell/DataGridCell.tsx","../src/ActivityHeader/ActivityHeader.tsx","../src/ActivityIndicatorCell/ActivityIndicatorCell.tsx","../../../node_modules/lucide-react/dist/esm/shared/src/utils.js","../../../node_modules/lucide-react/dist/esm/defaultAttributes.js","../../../node_modules/lucide-react/dist/esm/Icon.js","../../../node_modules/lucide-react/dist/esm/createLucideIcon.js","../../../node_modules/lucide-react/dist/esm/icons/arrow-down.js","../../../node_modules/lucide-react/dist/esm/icons/arrow-up.js","../../../node_modules/lucide-react/dist/esm/icons/calendar-days.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-left.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-right.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-up.js","../../../node_modules/lucide-react/dist/esm/icons/chevrons-up-down.js","../../../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../../../node_modules/lucide-react/dist/esm/icons/circle-check.js","../../../node_modules/lucide-react/dist/esm/icons/circle-question-mark.js","../../../node_modules/lucide-react/dist/esm/icons/columns-3.js","../../../node_modules/lucide-react/dist/esm/icons/list-filter.js","../../../node_modules/lucide-react/dist/esm/icons/plus.js","../../../node_modules/lucide-react/dist/esm/icons/search.js","../../../node_modules/lucide-react/dist/esm/icons/trash-2.js","../../../node_modules/lucide-react/dist/esm/icons/wifi-off.js","../../../node_modules/lucide-react/dist/esm/icons/x.js","../src/Banner/Banner.tsx","../src/Breadcrumbs/Breadcrumbs.tsx","../src/Button/Button.tsx","../src/ButtonGroup/ButtonGroup.tsx","../src/Checkbox/Checkbox.tsx","../src/CodeSnippet/CodeSnippet.tsx","../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/Divider/Divider.tsx","../src/Dot/Dot.tsx","../src/LoadingSpinner/LoadingSpinner.tsx","../src/Footer/Footer.tsx","../src/InfiniteScrollGrid/InfiniteScrollGrid.tsx","../src/InputField/InputField.tsx","../src/ListItem/ListItem.tsx","../src/ListItemButton/ListItemButton.tsx","../src/MarketplaceCard/MarketplaceCard.tsx","../src/Menu/Menu.tsx","../src/Modal/Modal.tsx","../src/PageContent/PageContent.tsx","../src/PaginatedGrid/PaginatedGrid.tsx","../src/Progressbar/Progressbar.tsx","../src/QuickFilter/QuickFilter.tsx","../src/Radio/Radio.tsx","../src/Skeleton/Skeleton.tsx","../src/StatusBanner/StatusBanner.tsx","../src/Tabs/Tabs.tsx","../src/Toast/Toast.tsx","../src/Toggle/Toggle.tsx","../src/Toolbar/Toolbar.tsx","../src/Tooltip/Tooltip.tsx","../src/TypologyControl/TypologyControl.tsx","../src/index.js"],"sourcesContent":["import {\n borderRadius,\n colors,\n semanticColors,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/neo-design'\nimport Avatar, { type AvatarProps } from '@mui/material/Avatar'\nimport Box from '@mui/material/Box'\nimport { styled } from '@mui/material/styles'\n\ntype StyledAvatarProps = Omit<AvatarProps, 'variant' | 'size'> & {\n size?: 'small' | 'medium'\n variant?: 'circular' | 'initials'\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Avatar variant type without global augmentation\nconst StyledAvatar = styled(Avatar as any, {\n shouldForwardProp: prop => prop !== 'size' && prop !== 'variant',\n})<StyledAvatarProps>(({ theme, size = 'medium', variant = 'circular' }) => ({\n borderRadius: borderRadius.full,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n\n // Size variants\n ...(size === 'small' && {\n width: spacing.spacing_2_1_2,\n height: spacing.spacing_2_1_2,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n }),\n\n ...(size === 'medium' &&\n variant === 'initials' && {\n width: spacing.spacing_5_1_2,\n height: spacing.spacing_5_1_2,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n }),\n\n ...(size === 'medium' &&\n variant === 'circular' && {\n width: 36,\n height: 36,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n }),\n\n // Initials variant styling\n ...(variant === 'initials' && {\n backgroundColor: colors.violet[100],\n color: semanticColors.icons.default,\n border: `1px solid ${semanticColors.icons.default}`,\n }),\n\n // Circular variant (image) styling\n ...(variant === 'circular' && {\n backgroundColor: 'transparent',\n border: `2px solid ${semanticColors.surfaces.white}`,\n }),\n}))\n\nconst AvatarContainer = styled(Box)<{ size?: 'small' | 'medium' }>(({ size = 'medium' }) => ({\n ...(size === 'medium' && {\n width: spacing.spacing_5_1_2,\n height: spacing.spacing_5_1_2,\n backgroundColor: semanticColors.surfaces.white,\n borderRadius: borderRadius.full,\n padding: spacing.spacing_1_2,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n boxShadow: `${shadows.neutralSmall.x}px ${shadows.neutralSmall.y}px ${shadows.neutralSmall.blur}px ${shadows.neutralSmall.spread}px ${shadows.neutralSmall.shadow}`,\n }),\n}))\n\nexport interface NeoAvatarProps extends Omit<AvatarProps, 'variant'> {\n /**\n * The size of the avatar\n * @default \"medium\"\n */\n size?: 'small' | 'medium'\n /**\n * The variant of the avatar\n * - \"circular\": Image avatar with white surface container (medium only)\n * - \"initials\": Text/initials avatar with violet background (no container)\n * @default \"circular\"\n */\n variant?: 'circular' | 'initials'\n}\n\n/**\n * NeoAvatar - User avatar component based on MUI Avatar\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4214-58134\n *\n * Figma Props Mapping:\n * - Figma Type \"Initials\" → variant=\"initials\", size=\"small\" (20px)\n * - Figma Type \"Small\" → variant=\"circular\", size=\"small\" (20px with image)\n * - Figma Type \"Medium\" → variant=\"circular\", size=\"medium\" (44px white container with image)\n * - State: Hover (tooltip) → Wrap component with MUI Tooltip\n *\n * Usage:\n * ```tsx\n * // Medium image avatar (with white container)\n * <NeoAvatar variant=\"circular\" size=\"medium\" src=\"/avatar.jpg\" alt=\"User\" />\n *\n * // Small image avatar (no container)\n * <NeoAvatar variant=\"circular\" size=\"small\" src=\"/avatar.jpg\" alt=\"User\" />\n *\n * // Small initials avatar\n * <NeoAvatar variant=\"initials\" size=\"small\">A</NeoAvatar>\n *\n * // Medium initials avatar\n * <NeoAvatar variant=\"initials\" size=\"medium\">AB</NeoAvatar>\n *\n * // With tooltip (user wraps)\n * <Tooltip title=\"This is a tooltip\" arrow placement=\"top\">\n * <NeoAvatar variant=\"initials\">A</NeoAvatar>\n * </Tooltip>\n * ```\n */\nexport const NeoAvatar = ({ size = 'medium', variant = 'circular', ...props }: NeoAvatarProps) => {\n // shouldForwardProp filters out size and variant from being passed to the DOM\n const avatar = <StyledAvatar size={size} variant={variant} {...props} />\n\n // Medium size with circular variant (image) gets wrapped in white container\n if (size === 'medium' && variant === 'circular') {\n return <AvatarContainer size={size}>{avatar}</AvatarContainer>\n }\n\n return avatar\n}\n\nNeoAvatar.displayName = 'NeoAvatar'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport Chip, { type ChipProps, chipClasses } from '@mui/material/Chip'\nimport { styled } from '@mui/material/styles'\n\nconst StyledChip = styled(Chip)(({ theme }) => ({\n height: 24,\n padding: `${spacing.spacing_1_4}px ${spacing.spacing_1}px`,\n borderRadius: borderRadius.full,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n lineHeight: 1,\n gap: spacing.spacing_1_2,\n overflow: 'visible',\n\n [`& .${chipClasses.label}`]: {\n padding: 0,\n overflow: 'visible',\n },\n\n [`& .${chipClasses.icon}`]: {\n margin: 0,\n width: 12,\n height: 12,\n },\n\n [`& .${chipClasses.deleteIcon}`]: {\n margin: 0,\n width: 12,\n height: 12,\n },\n\n // Default (Neutral) state\n [`&.${chipClasses.colorDefault}`]: {\n backgroundColor: semanticColors.status.neutral.light,\n color: semanticColors.status.neutral.dark,\n border: `1px solid ${semanticColors.status.neutral.medium}80`,\n\n [`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {\n color: semanticColors.status.neutral.dark,\n },\n },\n\n // Error state\n [`&.${chipClasses.colorError}`]: {\n backgroundColor: semanticColors.status.error.light,\n color: semanticColors.status.error.dark,\n border: `1px solid ${semanticColors.status.error.medium}80`,\n\n [`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {\n color: semanticColors.status.error.dark,\n },\n },\n\n // Warning state\n [`&.${chipClasses.colorWarning}`]: {\n backgroundColor: semanticColors.status.warning.light,\n color: semanticColors.status.warning.dark,\n border: `1px solid ${semanticColors.status.warning.medium}80`,\n\n [`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {\n color: semanticColors.status.warning.dark,\n },\n },\n\n // Success state\n [`&.${chipClasses.colorSuccess}`]: {\n backgroundColor: semanticColors.status.success.light,\n color: semanticColors.status.success.dark,\n border: `1px solid ${semanticColors.status.success.medium}80`,\n\n [`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {\n color: semanticColors.status.success.dark,\n },\n },\n\n // Info state\n [`&.${chipClasses.colorInfo}`]: {\n backgroundColor: semanticColors.status.info.light,\n color: semanticColors.status.info.dark,\n border: `1px solid ${semanticColors.status.info.medium}80`,\n\n [`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {\n color: semanticColors.status.info.dark,\n },\n },\n}))\n\nexport interface NeoBadgeProps extends Omit<ChipProps, 'variant' | 'size'> {\n /**\n * The color/state of the badge\n * @default \"default\"\n */\n color?: 'default' | 'error' | 'warning' | 'success' | 'info'\n}\n\n/**\n * NeoBadge - Status badge component based on MUI Chip\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system-w--correct-set-of-tokens?node-id=4091-17230\n *\n * Figma Props Mapping:\n * - state (Neutral|Error|Warning|Success|Info) → color (default|error|warning|success|info)\n * - iconLeading → icon prop (pass React element)\n * - iconTrailing → deleteIcon prop (pass React element)\n * - Label → label prop\n */\nexport const NeoBadge = (props: NeoBadgeProps) => {\n return <StyledChip {...props} />\n}\n\nNeoBadge.displayName = 'NeoBadge'\n","import { spacing } from '@moderneinc/neo-design'\nimport { styled } from '@mui/material/styles'\nimport type { GridDensity } from '@mui/x-data-grid'\nimport type { HTMLAttributes, ReactNode } from 'react'\nimport { NeoAvatar } from '../Avatar/Avatar'\nimport { NeoBadge } from '../Badge/Badge'\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 NeoDataGridCellContentProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode\n}\n\n/**\n * NeoDataGridCellContent - Layout helper for cells that need flex layout with gap spacing\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4212-41631\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 * <NeoDataGridCellContent>\n * <NeoBadge label=\"Active\" color=\"success\" />\n * <NeoBadge label=\"New\" color=\"info\" />\n * </NeoDataGridCellContent>\n * )\n *\n * @example\n * // Avatar with text\n * renderCell: (params) => (\n * <NeoDataGridCellContent>\n * <NeoAvatar src={params.row.avatarUrl} />\n * <span>{params.row.name}</span>\n * </NeoDataGridCellContent>\n * )\n *\n * @example\n * // Action buttons\n * renderCell: () => (\n * <NeoDataGridCellContent>\n * <NeoIconButton size=\"small\"><Edit2 /></NeoIconButton>\n * <NeoIconButton size=\"small\"><Delete /></NeoIconButton>\n * </NeoDataGridCellContent>\n * )\n */\nexport const NeoDataGridCellContent = ({ children, ...props }: NeoDataGridCellContentProps) => {\n return <CellContentContainer {...props}>{children}</CellContentContainer>\n}\n\nNeoDataGridCellContent.displayName = 'NeoDataGridCellContent'\n\n/**\n * Utility function to get DataGrid sx styles for consistent cell appearance\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4212-41631\n *\n * Apply this to DataGrid's `sx` prop to ensure cells are properly aligned and styled.\n *\n * @param size - Row size variant (affects row height)\n * @returns SxProps for DataGrid\n *\n * @example\n * <DataGrid\n * rows={rows}\n * columns={columns}\n * />\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 neoRowHeights: 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 NeoStatusBadgeCellProps {\n status: string\n colorMap?: Record<string, 'default' | 'error' | 'info' | 'success' | 'warning'>\n}\n\nexport const NeoStatusBadgeCell = ({ status, colorMap }: NeoStatusBadgeCellProps) => {\n const color = colorMap?.[status] || 'default'\n\n return (\n <NeoDataGridCellContent>\n <NeoBadge label={status} color={color} />\n </NeoDataGridCellContent>\n )\n}\n\nNeoStatusBadgeCell.displayName = 'NeoStatusBadgeCell'\n\n/**\n * NeoUserAvatarCell - Ready-to-use cell component for user avatar + name\n *\n * @example\n * renderCell: (params) => (\n * <NeoUserAvatarCell\n * name={params.row.name}\n * avatarUrl={params.row.avatarUrl}\n * />\n * )\n */\nexport interface NeoUserAvatarCellProps {\n name: string\n avatarUrl?: string\n size?: 'small' | 'medium'\n}\n\nexport const NeoUserAvatarCell = ({ name, avatarUrl, size = 'small' }: NeoUserAvatarCellProps) => {\n return (\n <NeoDataGridCellContent>\n <NeoAvatar size={size} alt={name} src={avatarUrl} />\n <span style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {name}\n </span>\n </NeoDataGridCellContent>\n )\n}\n\nNeoUserAvatarCell.displayName = 'NeoUserAvatarCell'\n\n/**\n * Container for multiple badges with tighter spacing than default NeoDataGridCellContent\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 * NeoMultiBadgesCell - Ready-to-use cell component for multiple badges\n *\n * Uses tighter spacing (8px) between badges compared to standard NeoDataGridCellContent (16px).\n *\n * @example\n * renderCell: (params) => (\n * <NeoMultiBadgesCell\n * badges={[\n * { label: 'Active', color: 'success' },\n * { label: 'New', color: 'info' }\n * ]}\n * />\n * )\n */\nexport interface NeoMultiBadgesCellProps {\n badges: Array<{\n label: string\n color?: 'default' | 'error' | 'info' | 'success' | 'warning'\n }>\n}\n\nexport const NeoMultiBadgesCell = ({ badges }: NeoMultiBadgesCellProps) => {\n return (\n <MultiBadgesContainer>\n {badges.map(badge => (\n <NeoBadge key={badge.label} label={badge.label} color={badge.color || 'default'} />\n ))}\n </MultiBadgesContainer>\n )\n}\n\nNeoMultiBadgesCell.displayName = 'NeoMultiBadgesCell'\n","import { semanticColors, spacing } from '@moderneinc/neo-design'\nimport Box from '@mui/material/Box'\nimport { styled } from '@mui/material/styles'\nimport type { GridDensity } from '@mui/x-data-grid'\nimport { neoRowHeights } 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 NeoActivityHeader\n */\nexport type ActivityColor = 'commitJob' | 'recipeRun' | 'visualization'\n\n/**\n * Props for NeoActivityHeader component\n */\nexport interface NeoActivityHeaderProps {\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 Neo design 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: `${neoRowHeights[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 * NeoActivityHeader - Header cell showing activity type legend for DataGrid\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4261-3228\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 * **Figma Props Mapping:**\n * - `Size` (Figma) → `size` (React): Height variant matching DataGrid sizes\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: () => <NeoActivityHeader size=\"condensed\" color=\"commitJob\" />,\n * renderCell: (params) => (\n * <NeoActivityIndicatorCell\n * event={params.row.eventType}\n * scene={params.row.scene}\n * />\n * )\n * }\n */\nexport const NeoActivityHeader = ({\n size = 'compact',\n color = 'commitJob',\n}: NeoActivityHeaderProps) => {\n return (\n <HeaderContainer size={size}>\n <ActivityDot color={ACTIVITY_COLORS[color]} />\n </HeaderContainer>\n )\n}\n\nNeoActivityHeader.displayName = 'NeoActivityHeader'\n","import { semanticColors } from '@moderneinc/neo-design'\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 Neo design 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 NeoActivityIndicatorCell component\n */\nexport interface NeoActivityIndicatorCellProps {\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 * NeoActivityIndicatorCell - Timeline activity indicator for DataGrid cells\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4227-58669\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 * <NeoActivityIndicatorCell\n * event=\"commit-job\"\n * scene={ActivityScene.CIRCLE_WITH_TOP_AND_BOTTOM_PATH}\n * />\n * )\n * }\n */\nexport const NeoActivityIndicatorCell = ({\n event = 'commit-job',\n secondaryEvent,\n scene = ActivityScene.CIRCLE,\n showDot = true,\n}: NeoActivityIndicatorCellProps) => {\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\nNeoActivityIndicatorCell.displayName = 'NeoActivityIndicatorCell'\n","/**\n * @license lucide-react v0.562.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();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.562.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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", 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\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.562.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, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 2v4\", key: \"1cmpym\" }],\n [\"path\", { d: \"M16 2v4\", key: \"4m81vk\" }],\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"4\", rx: \"2\", key: \"1hopcy\" }],\n [\"path\", { d: \"M3 10h18\", key: \"8toen8\" }],\n [\"path\", { d: \"M8 14h.01\", key: \"6423bh\" }],\n [\"path\", { d: \"M12 14h.01\", key: \"1etili\" }],\n [\"path\", { d: \"M16 14h.01\", key: \"1gbofw\" }],\n [\"path\", { d: \"M8 18h.01\", key: \"lrp35t\" }],\n [\"path\", { d: \"M12 18h.01\", key: \"mhygvu\" }],\n [\"path\", { d: \"M16 18h.01\", key: \"kzsmim\" }]\n];\nconst CalendarDays = createLucideIcon(\"calendar-days\", __iconNode);\n\nexport { __iconNode, CalendarDays as default };\n//# sourceMappingURL=calendar-days.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n];\nconst CircleCheck = createLucideIcon(\"circle-check\", __iconNode);\n\nexport { __iconNode, CircleCheck as default };\n//# sourceMappingURL=circle-check.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","import { colors, semanticColors, shadows, spacing, typography } from '@moderneinc/neo-design'\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 } from 'react'\n\ntype StyledAlertProps = Omit<AlertProps, 'variant'> & {\n variant?: 'dark' | 'light' | 'success' | 'error' | 'warning'\n messagePosition?: 'left' | 'center'\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 !== 'messagePosition' && prop !== 'variant',\n})<StyledAlertProps>(({ variant = 'light', messagePosition = 'left' }) => {\n // Variant-specific styles\n const variantStyles: Record<string, object> = {\n dark: {\n backgroundColor: colors.digitalBlue['400'],\n color: semanticColors.surfaces.white,\n },\n light: {\n backgroundColor: semanticColors.status.info.light,\n color: colors.grey['800'],\n },\n success: {\n backgroundColor: semanticColors.status.success.light,\n color: colors.grey['800'],\n },\n error: {\n backgroundColor: semanticColors.status.error.light,\n color: colors.grey['800'],\n },\n warning: {\n backgroundColor: semanticColors.status.warning.light,\n color: colors.grey['800'],\n },\n }\n\n return {\n width: '100%',\n minHeight: 52,\n paddingTop: spacing.spacing_3_4,\n paddingBottom: spacing.spacing_3_4,\n paddingLeft: spacing.spacing_3,\n paddingRight: spacing.spacing_3,\n gap: spacing.spacing_2,\n alignItems: 'center',\n justifyContent: messagePosition === 'center' ? 'center' : 'flex-start',\n ...(messagePosition === 'center' && { position: 'relative' }),\n boxShadow: `${shadows.neutralSmall.x}px ${shadows.neutralSmall.y}px ${shadows.neutralSmall.blur}px ${shadows.neutralSmall.spread}px ${shadows.neutralSmall.shadow}`,\n fontSize: typography.fontSize.default,\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n ...variantStyles[variant],\n\n [`& .${alertClasses.icon}`]: {\n padding: 0,\n opacity: 1,\n fontSize: typography.fontSize.h2,\n color: 'inherit',\n },\n\n [`& .${alertClasses.message}`]: {\n padding: 0,\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_2,\n ...(messagePosition === 'left' && { flex: 1 }),\n },\n\n [`& .${alertClasses.action}`]: {\n padding: 0,\n ...(messagePosition === 'center' && {\n position: 'absolute',\n right: spacing.spacing_3,\n }),\n },\n }\n})\n\nconst LinkText = styled('span')<{ variant?: 'dark' | 'light' | 'success' | 'error' | 'warning' }>(\n ({ variant = 'light' }) => {\n const getLinkColor = () => {\n if (variant === 'dark') {\n return semanticColors.typography.link.default // #f9fafb (light gray/white)\n }\n if (variant === 'light') {\n return semanticColors.typography.link.primary // #2f42ff (blue)\n }\n // For success, error, warning - use dark body color #1f2937\n return colors.grey['800']\n }\n\n return {\n fontWeight: 600,\n color: getLinkColor(),\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline',\n },\n }\n }\n)\n\nconst StyledIconButton = styled(IconButton)<{ closeIconColor: string }>(({ closeIconColor }) => ({\n padding: 0,\n color: closeIconColor,\n '&:hover': {\n backgroundColor: 'transparent',\n },\n}))\n\nexport interface NeoBannerProps extends Omit<AlertProps, 'variant' | 'severity' | 'color'> {\n /**\n * The visual style variant of the banner\n * @default \"light\"\n *\n * @figmaPropMapping color (Dark|Light|Success|Error|Warning) → variant\n */\n variant?: 'dark' | 'light' | 'success' | 'error' | 'warning'\n\n /**\n * The message text to display\n *\n * @figmaPropMapping {Message} → message\n */\n message: string\n\n /**\n * Horizontal alignment of the message content\n * @default \"left\"\n *\n * @figmaPropMapping messagePosition (Left|Center) → messagePosition\n */\n messagePosition?: 'left' | 'center'\n\n /**\n * Optional link text to display after the message\n *\n * @figmaPropMapping link (boolean) → linkText (string)\n */\n linkText?: string\n\n /**\n * Whether to show the close button\n * @default true\n *\n * @figmaPropMapping closeIcon → showClose\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\n/**\n * NeoBanner - Inline banner/alert component based on MUI Alert\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4170-2158\n *\n * Figma Props Mapping:\n * - color (Dark|Light|Success|Error|Warning) → variant (dark|light|success|error|warning)\n * - messagePosition (Left|Center) → messagePosition (\"left\"|\"center\")\n * - closeIcon (boolean) → showClose (boolean)\n * - link (boolean) → linkText (string)\n * - {Message} → message (string)\n */\nexport const NeoBanner = ({\n variant = 'light',\n message,\n messagePosition = 'left',\n linkText,\n showClose = true,\n icon,\n onClose,\n onLinkClick,\n ...props\n}: NeoBannerProps) => {\n const getCloseIconColor = () => {\n if (variant === 'dark') {\n return semanticColors.surfaces.white\n }\n if (variant === 'success') {\n return semanticColors.status.success.medium\n }\n if (variant === 'error') {\n return semanticColors.status.error.medium\n }\n if (variant === 'warning') {\n return semanticColors.status.warning.medium\n }\n return colors.grey['800']\n }\n\n return (\n <StyledAlert\n {...props}\n variant={variant}\n messagePosition={messagePosition}\n icon={messagePosition === 'left' ? icon || false : false}\n action={\n showClose ? (\n <StyledIconButton size=\"small\" onClick={onClose} closeIconColor={getCloseIconColor()}>\n <X size={24} />\n </StyledIconButton>\n ) : undefined\n }\n >\n {messagePosition === 'center' ? (\n <>\n {icon}\n <span>{message}</span>\n {linkText && (\n <LinkText variant={variant} onClick={onLinkClick}>\n {linkText}\n </LinkText>\n )}\n </>\n ) : (\n <>\n <span>{message}</span>\n {linkText && (\n <LinkText variant={variant} onClick={onLinkClick}>\n {linkText}\n </LinkText>\n )}\n </>\n )}\n </StyledAlert>\n )\n}\n\nNeoBanner.displayName = 'NeoBanner'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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 { ReactNode } from 'react'\n\n/**\n * NeoBreadcrumbs - Navigation breadcrumb component\n *\n * Figma Mapping:\n * - Base component uses MuiBreadcrumbs with custom styled Links\n * - Uses chevron separator (ChevronRight from lucide-react)\n * - Typography: 14px Medium (500 weight)\n * - Colors:\n * - Non-current: semanticColors.typography.bodySecondary (#6b7280)\n * - Current: semanticColors.buttons.primary.default (#2f42ff)\n * - Hover: semanticColors.icons.hover (#1f2937) or buttons.tertiary.hover (#1e2ec2)\n * - Focus: 2px outline with buttons.primary.focus\n *\n * @see https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4563-122872\n */\n\nexport interface NeoBreadcrumbsProps {\n /** Breadcrumb items as Link elements */\n children: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\nexport interface NeoBreadcrumbLinkProps 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}\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.buttons.primary.default : semanticColors.typography.bodySecondary,\n cursor: current ? 'default' : 'pointer',\n borderRadius: borderRadius.xS,\n transition: 'color 0.2s ease-in-out',\n\n '&:hover': {\n color: current ? semanticColors.buttons.tertiary.hover : semanticColors.icons.hover,\n },\n\n '&:focus-visible': {\n outline: `2px solid ${semanticColors.buttons.primary.focus}`,\n outlineOffset: 2,\n },\n}))\n\n/**\n * NeoBreadcrumbLink - Individual breadcrumb link\n *\n * Use this component as children of NeoBreadcrumbs to create breadcrumb items.\n * Set `current` prop on the last item to indicate the current page.\n *\n * @example\n * ```tsx\n * <NeoBreadcrumbs>\n * <NeoBreadcrumbLink href=\"/settings\">Settings</NeoBreadcrumbLink>\n * <NeoBreadcrumbLink href=\"/team\">Team</NeoBreadcrumbLink>\n * <NeoBreadcrumbLink current>Team Details</NeoBreadcrumbLink>\n * </NeoBreadcrumbs>\n * ```\n */\nexport function NeoBreadcrumbLink({ current = false, children, ...props }: NeoBreadcrumbLinkProps) {\n return (\n <StyledBreadcrumbLink\n current={current}\n aria-current={current ? 'page' : undefined}\n underline=\"none\"\n {...props}\n >\n {children}\n </StyledBreadcrumbLink>\n )\n}\n\n/**\n * NeoBreadcrumbs - Navigation breadcrumb component\n *\n * Provides hierarchical navigation with styled links and chevron separators.\n * Use NeoBreadcrumbLink components as children to create breadcrumb items.\n *\n * @example\n * ```tsx\n * <NeoBreadcrumbs>\n * <NeoBreadcrumbLink href=\"/settings\">Settings</NeoBreadcrumbLink>\n * <NeoBreadcrumbLink href=\"/team\">Team</NeoBreadcrumbLink>\n * <NeoBreadcrumbLink current>Team Details</NeoBreadcrumbLink>\n * </NeoBreadcrumbs>\n * ```\n */\nexport function NeoBreadcrumbs({ children, className }: NeoBreadcrumbsProps) {\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 } from '@moderneinc/neo-design'\nimport ButtonBase, { type ButtonBaseProps, buttonBaseClasses } from '@mui/material/ButtonBase'\nimport CircularProgress from '@mui/material/CircularProgress'\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 primary: true\n secondary: true\n destructive: true\n link: true\n linkColor: true\n }\n}\n\ntype ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'link' | 'linkColor'\ntype ButtonSize = 'small' | 'medium'\n\nconst StyledButtonBase = styled(ButtonBase, {\n shouldForwardProp: prop => prop !== 'variant' && prop !== 'size' && prop !== 'loading',\n})<{\n variant?: ButtonVariant\n size?: ButtonSize\n loading?: boolean\n}>(({ theme, variant = 'primary', size = 'medium', loading = false }) => {\n // Size configurations using theme.spacing()\n const sizeConfig = {\n small: {\n height: 32,\n padding: `0 ${theme.spacing(2)}`,\n fontSize: theme.typography.pxToRem(14),\n },\n medium: {\n height: spacing.spacing_5,\n padding: `0 ${theme.spacing(3)}`,\n fontSize: theme.typography.pxToRem(16),\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: 500,\n lineHeight: 1.5,\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: theme.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.buttons.primary.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: theme.palette.common.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.buttons.secondary.disabledBorder,\n color: semanticColors.typography.button.disabled,\n },\n }),\n },\n\n destructive: {\n backgroundColor: semanticColors.buttons.destructive,\n color: theme.palette.common.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 link: {\n backgroundColor: 'transparent',\n color: semanticColors.buttons.tertiary.default,\n border: 'none',\n padding: `0 ${theme.spacing(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 linkColor: {\n backgroundColor: 'transparent',\n color: semanticColors.buttons.primary.default,\n border: 'none',\n padding: `0 ${theme.spacing(1)}`,\n\n '&:hover': {\n backgroundColor: 'transparent',\n color: semanticColors.buttons.primary.hover,\n },\n\n '&:active': {\n color: semanticColors.buttons.primary.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)<{ $variant: ButtonVariant }>(\n ({ theme, $variant }) => {\n // Use appropriate spinner color for each variant to ensure visibility\n const spinnerColors: Record<ButtonVariant, string> = {\n primary: theme.palette.common.white,\n secondary: semanticColors.buttons.primary.default,\n destructive: theme.palette.common.white,\n link: semanticColors.buttons.primary.default,\n linkColor: semanticColors.buttons.primary.default,\n }\n\n return {\n color: spinnerColors[$variant],\n }\n }\n)\n\nexport interface NeoButtonProps extends Omit<ButtonBaseProps, 'children'> {\n /**\n * The visual variant of the button\n * @default \"primary\"\n *\n * @figma Hierarchy\n */\n variant?: ButtonVariant\n\n /**\n * The size of the button\n * @default \"medium\"\n *\n * @figma Size\n */\n size?: ButtonSize\n\n /**\n * Show loading spinner instead of children\n * @default false\n *\n * @figma State=Loading\n */\n loading?: boolean\n\n /**\n * Button content\n */\n children?: ReactNode\n}\n\n/**\n * NeoButton - Text button component based on MUI ButtonBase\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4086-7590\n *\n * Figma Props Mapping:\n * - Hierarchy (Primary|Secondary|Destructive|Link|Link Color) → variant prop\n * - Size (Small|Medium) → size prop\n * - State=Disabled → disabled prop\n * - State=Loading → loading prop\n * - State=Hover → CSS :hover\n * - State=Pressed → CSS :active\n * - State=Focused → CSS :focus-visible\n */\nexport const NeoButton = ({\n variant = 'primary',\n size = 'medium',\n loading = false,\n children,\n disabled,\n ...props\n}: NeoButtonProps) => {\n return (\n <StyledButtonBase\n variant={variant}\n size={size}\n loading={loading}\n disabled={disabled || loading}\n {...props}\n >\n {loading ? <LoadingSpinner $variant={variant} size={size === 'small' ? 16 : 20} /> : children}\n </StyledButtonBase>\n )\n}\n\nNeoButton.displayName = 'NeoButton'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport { buttonBaseClasses } from '@mui/material/ButtonBase'\nimport MuiButtonGroup, {\n buttonGroupClasses,\n type ButtonGroupProps as MuiButtonGroupProps,\n} from '@mui/material/ButtonGroup'\nimport { styled } from '@mui/material/styles'\n\ntype ButtonGroupSize = 'small' | 'medium'\n\n/**\n * Styled ButtonGroup that implements Neo design system styling\n *\n * The ButtonGroup uses MUI's built-in functionality for:\n * - Button grouping and spacing\n * - Orientation handling\n * - Disabled state management\n *\n * Custom styling focuses on:\n * - Border radius (pill shape with borderRadius.full)\n * - Size variants (small=32px, medium=40px)\n * - Border colors using semantic tokens\n * - Active/inactive button states (handled by individual buttons)\n */\nconst StyledButtonGroup = styled(MuiButtonGroup)<{\n size?: ButtonGroupSize\n}>(({ theme, size = 'medium' }) => {\n const sizeStyles = {\n small: {\n height: 32,\n },\n medium: {\n height: spacing.spacing_5,\n },\n }\n\n return {\n // Apply pill-shaped border radius\n borderRadius: borderRadius.full,\n border: `1px solid ${semanticColors.border.primary}`,\n\n // Override MUI's default button group styles\n [`& .${buttonGroupClasses.grouped}`]: {\n minWidth: 'auto',\n height: sizeStyles[size].height,\n padding: `${theme.spacing(1)} ${theme.spacing(2)}`,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.semiBold,\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 // Active state (when button is selected/pressed)\n '&:active, &.active': {\n backgroundColor: semanticColors.surfaces.white,\n color: semanticColors.buttons.tertiary.default,\n fontWeight: typography.fontWeight.semiBold,\n },\n\n // Hover state\n '&:hover': {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n borderRight: `1px solid ${semanticColors.border.primary}`,\n },\n\n // Focus visible for keyboard navigation\n [`&.${buttonBaseClasses.focusVisible}`]: {\n outline: `2px solid ${semanticColors.buttons.primary.focus}`,\n outlineOffset: -2,\n zIndex: 1,\n },\n\n // First button: rounded left edge\n [`&.${buttonGroupClasses.firstButton}`]: {\n borderTopLeftRadius: borderRadius.full,\n borderBottomLeftRadius: borderRadius.full,\n },\n\n // Last button: rounded right edge, no right border\n [`&.${buttonGroupClasses.lastButton}`]: {\n borderTopRightRadius: borderRadius.full,\n borderBottomRightRadius: borderRadius.full,\n borderRight: 'none',\n },\n\n // Middle buttons: no border radius\n [`&.${buttonGroupClasses.middleButton}`]: {\n borderRadius: 0,\n },\n\n // Disabled state\n [`&.${buttonBaseClasses.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 NeoButtonGroupProps extends Omit<MuiButtonGroupProps, 'size' | 'variant'> {\n /**\n * The size of the button group\n * @default \"medium\"\n *\n * @figma Size=Sm → small, Size=Md → medium\n */\n size?: ButtonGroupSize\n\n /**\n * The visual variant of the buttons\n * ButtonGroup uses a fixed outlined style from the design\n */\n variant?: 'outlined'\n}\n\n/**\n * NeoButtonGroup - Button group component based on MUI ButtonGroup\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4106-11129\n *\n * Figma Props Mapping:\n * - Size (Sm|Md) → size prop (small|medium)\n * - Icon=False → Icon support not included in this implementation\n * - Active button state → Controlled externally via button props or classes\n *\n * Usage:\n * ```tsx\n * <NeoButtonGroup size=\"medium\">\n * <NeoButton>Button 1</NeoButton>\n * <NeoButton>Button 2</NeoButton>\n * <NeoButton>Button 3</NeoButton>\n * </NeoButtonGroup>\n * ```\n *\n * Note: To show active state, add 'active' class to the selected button\n */\nexport const NeoButtonGroup = ({\n size = 'medium',\n variant = 'outlined',\n ...props\n}: NeoButtonGroupProps) => {\n return <StyledButtonGroup size={size} variant={variant} {...props} />\n}\n\nNeoButtonGroup.displayName = 'NeoButtonGroup'\n","import { borderRadius, semanticColors, typography } from '@moderneinc/neo-design'\nimport Checkbox, { type CheckboxProps, checkboxClasses } from '@mui/material/Checkbox'\nimport SvgIcon from '@mui/material/SvgIcon'\nimport { styled } from '@mui/material/styles'\nimport type { ReactNode } from 'react'\n\n/**\n * Custom checkbox icons matching Figma design\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-39311\n *\n * Checkbox sizes: xs=12x12, small=16x16, medium=20x20\n * Check/minus paths scaled from Untitled UI (originally 24x24)\n */\n\ntype CheckboxSize = 'xs' | 'small' | 'medium'\n\n// Border radius per size (from Figma)\nconst borderRadiusConfig = {\n xs: 2,\n small: 3,\n medium: 4,\n}\n\n// Unchecked: Rounded square outline (20x20 viewBox)\nconst UncheckedIcon = ({ size = 'medium' }: { size?: CheckboxSize }) => (\n <SvgIcon viewBox=\"0 0 20 20\">\n <rect\n x=\"1\"\n y=\"1\"\n width=\"18\"\n height=\"18\"\n rx={borderRadiusConfig[size]}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </SvgIcon>\n)\n\n// Checked: Filled rounded square with white checkmark\n// Path scaled from Untitled UI 24x24 (M20 6L9 17L4 12) to 20x20\nconst CheckedIcon = ({ size = 'medium' }: { size?: CheckboxSize }) => (\n <SvgIcon viewBox=\"0 0 20 20\">\n <rect width=\"20\" height=\"20\" rx={borderRadiusConfig[size]} fill=\"currentColor\" />\n <path\n d=\"M15 6L8.5 13L5 9.5\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n </SvgIcon>\n)\n\n// Indeterminate: Filled rounded square with white minus\n// Path scaled from Untitled UI 24x24 (M5 12H19) to 20x20\nconst IndeterminateIcon = ({ size = 'medium' }: { size?: CheckboxSize }) => (\n <SvgIcon viewBox=\"0 0 20 20\">\n <rect width=\"20\" height=\"20\" rx={borderRadiusConfig[size]} fill=\"currentColor\" />\n <path d=\"M5 10H15\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" fill=\"none\" />\n </SvgIcon>\n)\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: 8,\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\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: 1, // From Figma: 1px for xs\n },\n small: {\n size: 16,\n borderRadius: borderRadius.xXS, // From Figma: 2px for small\n },\n medium: {\n size: 20,\n borderRadius: borderRadius.xS, // From Figma: 4px for 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.input,\n flexShrink: 0,\n\n // Root element\n [`&.${checkboxClasses.root}`]: {\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n\n // Checkbox icon (unchecked)\n [`& .${checkboxClasses.root}`]: {\n width: config.size,\n height: config.size,\n },\n\n // Checked state\n [`&.${checkboxClasses.checked}`]: {\n color: semanticColors.buttons.primary.default,\n },\n\n // Indeterminate state\n [`&.${checkboxClasses.indeterminate}`]: {\n color: semanticColors.buttons.primary.default,\n },\n\n // Disabled state\n [`&.${checkboxClasses.disabled}`]: {\n color: semanticColors.border.input,\n cursor: 'not-allowed',\n\n // When checked and disabled\n [`&.${checkboxClasses.checked}`]: {\n color: semanticColors.border.input,\n },\n\n // When indeterminate and disabled\n [`&.${checkboxClasses.indeterminate}`]: {\n color: semanticColors.border.input,\n },\n },\n\n // Focus visible for keyboard navigation\n '&.Mui-focusVisible': {\n outline: `2px solid ${semanticColors.buttons.primary.focus}`,\n outlineOffset: 2,\n borderRadius: config.borderRadius,\n },\n\n // Custom SVG icons\n '& svg': {\n width: config.size,\n height: config.size,\n fill: 'currentColor',\n },\n }\n})\n\nexport interface NeoCheckboxProps extends Omit<CheckboxProps, 'size'> {\n /**\n * The size of the checkbox\n * @default \"medium\"\n *\n * @figma Size\n */\n size?: CheckboxSize\n\n /**\n * The label text displayed next to the checkbox\n *\n * @figma Text (label)\n */\n label?: ReactNode\n\n /**\n * The helper text displayed below the label\n *\n * @figma Text (supporting text)\n */\n helperText?: ReactNode\n}\n\n/**\n * NeoCheckbox - Checkbox component based on MUI Checkbox\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-39311\n *\n * Figma Props Mapping:\n * - Checked (True|False) → checked prop\n * - Indeterminate (True|False) → indeterminate prop\n * - Size (xs|sm|md) → size prop (xs|small|medium)\n * - State=Default → default state\n * - State=Hover → CSS :hover\n * - State=Focused → CSS :focus-visible\n * - State=Disabled → disabled prop\n * - Text (label) → label prop\n * - Text (supporting text) → helperText prop\n *\n * @example\n * // Basic checkbox\n * <NeoCheckbox />\n *\n * @example\n * // With label\n * <NeoCheckbox label=\"Remember me\" />\n *\n * @example\n * // With label and helper text\n * <NeoCheckbox label=\"Remember me\" helperText=\"Save my login details for next time.\" />\n *\n * @example\n * // Small size\n * <NeoCheckbox size=\"small\" label=\"Remember me\" />\n *\n * @example\n * // Extra small size\n * <NeoCheckbox size=\"xs\" label=\"Remember me\" />\n *\n * @example\n * // Controlled\n * <NeoCheckbox checked={isChecked} onChange={handleChange} label=\"Remember me\" />\n *\n * @example\n * // Indeterminate state (for \"select all\" checkboxes)\n * <NeoCheckbox indeterminate={true} label=\"Select all\" />\n */\nexport const NeoCheckbox = ({\n size = 'medium',\n label,\n helperText,\n disabled,\n icon,\n checkedIcon,\n indeterminateIcon,\n className,\n ...props\n}: NeoCheckboxProps) => {\n // Add custom class to identify NeoCheckbox instances\n const combinedClassName = className ? `neo-checkbox ${className}` : 'neo-checkbox'\n\n // Create size-specific icons\n const defaultIcon = icon || <UncheckedIcon size={size} />\n const defaultCheckedIcon = checkedIcon || <CheckedIcon size={size} />\n const defaultIndeterminateIcon = indeterminateIcon || <IndeterminateIcon size={size} />\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\nNeoCheckbox.displayName = 'NeoCheckbox'\n\n/**\n * Base styled checkbox component without label wrapper\n * Used internally by NeoCheckbox and directly in DataGrid\n *\n * @internal - Prefer using NeoCheckbox for most cases\n */\nexport { StyledCheckbox as NeoCheckboxBase }\n","import { semanticColors, typography } from '@moderneinc/neo-design'\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'\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 ${theme.spacing(0.75)}`, // 6px horizontal\n paddingMultiline: theme.spacing(3), // 24px all sides\n fontSize: theme.typography.pxToRem(typography.fontSize.xs), // 12px\n },\n small: {\n height: 24,\n paddingSingleLine: `0 ${theme.spacing(0.75)}`, // 6px horizontal\n paddingMultiline: theme.spacing(3), // 24px all sides\n fontSize: theme.typography.pxToRem(typography.fontSize.sm), // 14px\n },\n large: {\n height: 32,\n paddingSingleLine: `0 ${theme.spacing(1)}`, // 8px horizontal\n paddingMultiline: theme.spacing(3), // 24px all sides\n fontSize: theme.typography.pxToRem(typography.fontSize.sm), // 14px\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: isMultiline ? sizeStyles.paddingMultiline : sizeStyles.paddingSingleLine,\n paddingRight: isMultiline ? theme.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' ? 1.2 : 'normal',\n borderRadius: 4,\n textAlign: 'left',\n textTransform: 'none',\n gap: isMultiline ? undefined : theme.spacing(1.25), // 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.buttons.primary.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: theme.palette.common.white,\n border: 'none',\n },\n }\n\n return {\n ...baseStyles,\n ...variantStyles[variant],\n }\n})\n\nconst IconWrapper = styled('span')<{ isMultiline?: boolean }>(({ theme, isMultiline }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 16,\n height: 16,\n flexShrink: 0,\n ...(isMultiline && {\n position: 'absolute',\n top: theme.spacing(3), // 24px from top\n right: theme.spacing(3), // 24px from right\n }),\n}))\n\nexport interface NeoCodeSnippetProps extends Omit<ButtonBaseProps, 'children'> {\n /**\n * The visual variant of the code snippet\n * @default \"outlined\"\n *\n * @figma Color (Light|Dark)\n */\n variant?: CodeSnippetVariant\n\n /**\n * The size of the code snippet\n * @default \"small\"\n *\n * @figma size (xs|small|large)\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 * NeoCodeSnippet - Inline code snippet component based on MUI ButtonBase\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30353\n *\n * Figma Props Mapping:\n * - Color (Light|Dark) → variant (outlined|filled)\n * - size (Single line|multiline) → auto-detected from children\n * - Copy button → endIcon (ReactNode)\n * - Text content → children prop\n */\nexport const NeoCodeSnippet = ({\n variant = 'outlined',\n size = 'small',\n endIcon,\n children,\n ...props\n}: NeoCodeSnippetProps) => {\n const isMultiline = 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\nNeoCodeSnippet.displayName = 'NeoCodeSnippet'\n","import { borderRadius, colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Divider from '@mui/material/Divider'\nimport InputAdornment from '@mui/material/InputAdornment'\nimport { inputBaseClasses } from '@mui/material/InputBase'\nimport { styled } from '@mui/material/styles'\nimport TextField from '@mui/material/TextField'\nimport type { GridColumnsPanelProps } from '@mui/x-data-grid-pro'\nimport {\n GridPanelWrapper,\n gridColumnDefinitionsSelector,\n gridColumnVisibilityModelSelector,\n useGridApiContext,\n useGridSelector,\n} from '@mui/x-data-grid-pro'\nimport { Search } from 'lucide-react'\nimport { useMemo, useState } from 'react'\nimport { NeoCheckbox } from '../Checkbox/Checkbox'\n\nconst PanelContent = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n padding: theme.spacing(0.5),\n paddingTop: theme.spacing(1),\n}))\n\n/**\n * Search input styled to match NeoQuickFilter\n */\nconst StyledSearchField = styled(TextField)(({ theme }) => ({\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n marginBottom: theme.spacing(0.5),\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.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 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 '& .MuiInputAdornment-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: theme.spacing(0.75),\n paddingRight: theme.spacing(0.75),\n}))\n\nconst MenuItemContent = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n padding: theme.spacing(1),\n borderRadius: 6,\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: colors.grey['800'],\n whiteSpace: 'nowrap',\n}))\n\nconst DividerContainer = styled('div')(({ theme }) => ({\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n}))\n\nconst StyledDivider = styled(Divider)(() => ({\n borderColor: colors.grey['200'],\n}))\n\nconst FooterRow = styled(Box)(({ theme }) => ({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingLeft: theme.spacing(0.75),\n paddingRight: theme.spacing(0.75),\n}))\n\nconst ResetButton = styled(Button)(({ theme }) => ({\n fontSize: theme.typography.pxToRem(16),\n fontWeight: 400,\n color: semanticColors.buttons.primary.default,\n textTransform: 'none',\n padding: theme.spacing(1),\n minWidth: 'auto',\n '&:hover': {\n backgroundColor: 'transparent',\n color: colors.grey['600'],\n },\n '&:disabled': {\n color: colors.grey['400'],\n },\n}))\n\n/**\n * NeoDataGridColumnsPanel - Custom columns panel for NeoDataGrid matching Figma design\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=5022-3243\n *\n * A styled columns panel that integrates with MUI DataGrid's column visibility system.\n * Features:\n * - Search input with Lucide icon (matches NeoQuickFilter)\n * - Checkbox list with Neo 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 * - grey['800'] - Text color (#1f2937)\n * - grey['200'] - Divider color (#e5e7eb)\n */\nexport interface NeoDataGridColumnsPanelProps extends GridColumnsPanelProps {\n /**\n * If true, shows the search input field\n * @default false\n */\n showSearch?: boolean\n}\n\nexport const NeoDataGridColumnsPanel = ({\n showSearch = false,\n ...props\n}: NeoDataGridColumnsPanelProps) => {\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 <GridPanelWrapper {...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 <NeoCheckbox 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 <NeoCheckbox\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 </GridPanelWrapper>\n )\n}\n\nNeoDataGridColumnsPanel.displayName = 'NeoDataGridColumnsPanel'\n","import { semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport MenuItem, { type MenuItemProps, menuItemClasses } from '@mui/material/MenuItem'\nimport { styled } from '@mui/material/styles'\nimport type { ReactNode } from 'react'\n\nconst StyledMenuItem = styled(MenuItem)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n minHeight: spacing.spacing_5,\n gap: theme.spacing(2),\n borderRadius: 0,\n color: semanticColors.icons.default,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.regular,\n lineHeight: `${typography.lineHeight.s}px`,\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: 8,\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: 4,\n padding: `${theme.spacing(0.25)} ${theme.spacing(0.75)}`,\n backgroundColor: semanticColors.surfaces.white,\n}))\n\nexport interface NeoMenuItemProps extends MenuItemProps {\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 * Menu item content (text label)\n * @figma children mapped from Figma layer content\n */\n children?: ReactNode\n}\n\n/**\n * NeoMenuItem - Menu item component based on MUI MenuItem\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4159-8649\n *\n * Figma Props Mapping:\n * - Text label → children prop (mapped via figma.children)\n * - State=Selected → selected prop (mapped via figma.enum)\n * - State=Disabled → disabled prop (mapped via figma.enum)\n * - Hover state → CSS :hover (not mapped)\n * - Icon slot → icon prop (not mappable - ReactNode)\n * - Secondary text → secondaryText prop (not mappable - ReactNode/string)\n * - Keyboard shortcut → shortcut prop (not mappable - ReactNode/string)\n *\n * @example\n * ```tsx\n * // With icon and shortcut\n * <NeoMenuItem icon={<UserIcon />} shortcut=\"⌘+P\">\n * View profile\n * </NeoMenuItem>\n *\n * // With secondary text (user list pattern from Figma node 4305:41844)\n * <NeoMenuItem secondaryText=\"@phoenix\">Phoenix Baker</NeoMenuItem>\n * <NeoMenuItem secondaryText=\"@olivia\">Olivia Rhye</NeoMenuItem>\n *\n * // Disabled state\n * <NeoMenuItem disabled>Disabled item</NeoMenuItem>\n * ```\n */\nexport const NeoMenuItem = ({\n icon,\n shortcut,\n secondaryText,\n children,\n ...props\n}: NeoMenuItemProps) => {\n return (\n <StyledMenuItem {...props}>\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\nNeoMenuItem.displayName = 'NeoMenuItem'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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 { NeoMenuItem } from '../MenuItem/MenuItem'\n\n/**\n * Custom chevron icon for select dropdown\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 Neo design system styling\n */\nconst StyledSelect = styled(MuiSelect)({\n minHeight: spacing.spacing_5,\n backgroundColor: semanticColors.input.background,\n border: `1px solid ${semanticColors.border.input}`,\n borderRadius: `${borderRadius.input}px`,\n\n '&:hover': {\n backgroundColor: semanticColors.input.hoverBackground,\n borderColor: semanticColors.border.input,\n },\n\n '&.Mui-focused': {\n backgroundColor: semanticColors.input.background,\n borderColor: semanticColors.border.input,\n },\n\n '&::before': {\n display: 'none',\n },\n '&::after': {\n display: 'none',\n },\n\n [`& .${selectClasses.select}`]: {\n paddingTop: spacing.spacing_1,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_2,\n paddingRight: spacing.spacing_5,\n fontSize: typography.fontSize.default,\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 NeoSelectProps = MuiSelectProps\n\n/**\n * NeoSelect - Select dropdown component with Neo design system styling\n *\n * A styled version of MUI's Select that uses Neo design tokens, Lucide ChevronDown icon,\n * and NeoMenu/NeoMenuItem for the dropdown list.\n *\n * @example\n * ```tsx\n * import { NeoSelect, NeoSelectOption } from '@moderneinc/neo-styled-components'\n *\n * <NeoSelect value={value} onChange={handleChange}>\n * <NeoSelectOption value=\"option1\">Option 1</NeoSelectOption>\n * <NeoSelectOption value=\"option2\">Option 2</NeoSelectOption>\n * </NeoSelect>\n * ```\n */\nexport const NeoSelect = (props: NeoSelectProps) => {\n return (\n <StyledSelect\n {...props}\n IconComponent={ChevronDownIcon}\n variant=\"standard\"\n MenuProps={{\n ...props.MenuProps,\n // Apply NeoMenu styling to the dropdown\n PaperProps: {\n sx: {\n backgroundColor: semanticColors.surfaces.white,\n borderRadius: `${borderRadius.s}px`,\n border: `1px solid ${semanticColors.border.primary}`,\n boxShadow: '0px 4px 12px rgba(0, 0, 0, 0.1)',\n marginTop: 1,\n ...props.MenuProps?.PaperProps?.sx,\n },\n },\n }}\n />\n )\n}\n\nNeoSelect.displayName = 'NeoSelect'\n\n// Export NeoMenuItem as NeoSelectOption for convenience\nexport { NeoMenuItem as NeoSelectOption }\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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 { NeoSelect } 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 NeoDataGridFilterPanelAddIcon = () => (\n <Plus size={spacing.spacing_2} color={semanticColors.buttons.tertiary.default} />\n)\nNeoDataGridFilterPanelAddIcon.displayName = 'NeoDataGridFilterPanelAddIcon'\n\nexport const NeoDataGridFilterPanelDeleteIcon = () => (\n <X size={spacing.spacing_2_1_2} color={semanticColors.icons.default} />\n)\nNeoDataGridFilterPanelDeleteIcon.displayName = 'NeoDataGridFilterPanelDeleteIcon'\n\nexport const NeoDataGridFilterPanelRemoveAllIcon = () => (\n <Trash2 size={spacing.spacing_2} color={semanticColors.buttons.tertiary.default} />\n)\nNeoDataGridFilterPanelRemoveAllIcon.displayName = 'NeoDataGridFilterPanelRemoveAllIcon'\n\n/**\n * Base styled GridFilterPanel with Neo design system styling\n */\nconst StyledGridFilterPanel = styled(MuiGridFilterPanel)({\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 - Neo 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.input}`,\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.input,\n },\n [`& .${gridClasses.filterForm} .${inputBaseClasses.root}.${inputBaseClasses.focused}`]: {\n backgroundColor: semanticColors.input.background,\n borderColor: semanticColors.border.input,\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 - Neo 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 NeoButton link variant\n [`& .${gridClasses.panelFooter} .${buttonClasses.root}:nth-child(2)`]: {\n height: 32, // NeoButton small size\n padding: `0 ${spacing.spacing_1}px`, // NeoButton link variant padding\n fontSize: typography.fontSize.sm,\n fontWeight: 500,\n lineHeight: 1.5,\n textTransform: 'none',\n minHeight: 'auto',\n backgroundColor: 'transparent',\n color: semanticColors.buttons.tertiary.default,\n border: 'none',\n '& .MuiButton-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 * NeoDataGridFilterPanel - MUI GridFilterPanel with Neo design system styling and Lucide icons\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4594-163847\n *\n * A styled version of MUI's GridFilterPanel that applies Neo design 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 * NeoDataGridFilterPanel,\n * FilterPanelAddIcon,\n * FilterPanelDeleteIcon,\n * FilterPanelRemoveAllIcon\n * } from '@moderneinc/neo-styled-components'\n *\n * <DataGridPro\n * rows={rows}\n * columns={columns}\n * slots={{\n * filterPanel: NeoDataGridFilterPanel,\n * filterPanelAddIcon: FilterPanelAddIcon,\n * filterPanelDeleteIcon: FilterPanelDeleteIcon,\n * filterPanelRemoveAllIcon: FilterPanelRemoveAllIcon,\n * }}\n * />\n * ```\n */\n// Re-export NeoSelect for DataGrid baseSelect slot\nexport { NeoSelect as NeoDataGridSelect }\n\nexport const NeoDataGridFilterPanel = (props: React.ComponentProps<typeof MuiGridFilterPanel>) => {\n return <StyledGridFilterPanel {...props} />\n}\n\nNeoDataGridFilterPanel.displayName = 'NeoDataGridFilterPanel'\n","import { colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport { checkboxClasses } from '@mui/material/Checkbox'\nimport type { SxProps, Theme } from '@mui/material/styles'\nimport { gridClasses } from '@mui/x-data-grid'\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\n/**\n * Utility function to get DataGrid sx styles for header cells\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4212-41618\n *\n * Figma prop mappings:\n * - `size` → `size`: Figma \"condensed\" → MUI 'compact', Figma \"default\" → MUI 'standard', Figma \"relaxed\" → MUI 'comfortable'\n *\n * Design tokens used:\n * - Background: colors.grey[50] (#f9fafb)\n * - Border: semanticColors.border.primary\n * - Padding: 12px vertical, 24px horizontal\n * - Gap: 12px\n *\n *\n * @param size - Header row size variant (affects header cell height)\n * @returns SxProps for DataGrid header cells\n *\n * @example\n * import { getDataGridHeaderStyles, SortedDescendingIcon, SortedAscendingIcon, UnsortedIcon } from './DataGridHeaderCell'\n *\n * <DataGrid\n * columnHeaderHeight={38} // for compact (Figma: condensed)\n * sx={{\n * ...getDataGridHeaderStyles(),\n * }}\n * slots={{\n * columnSortedDescendingIcon: SortedDescendingIcon,\n * columnSortedAscendingIcon: SortedAscendingIcon,\n * columnUnsortedIcon: UnsortedIcon,\n * }}\n * rows={rows}\n * columns={columns}\n * />\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: colors.grey[50],\n borderBottom: `1px solid ${semanticColors.border.primary}`,\n paddingLeft: `${spacing.spacing_3}px`,\n paddingRight: `${spacing.spacing_3}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: colors.grey[50],\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 Neo design (16x16 from Figma)\n [`& .${gridClasses.columnHeaderCheckbox}`]: {\n padding: 0,\n '& .MuiCheckbox-root': {\n padding: 0,\n width: 16,\n height: 16,\n '& svg': {\n width: 16,\n height: 16,\n },\n },\n },\n\n // Style MUI's sort icon to match Neo design (16x16)\n [`& .${gridClasses.iconButtonContainer}`]: {\n width: 16,\n height: 16,\n marginLeft: `${spacing.spacing_1_2}px`,\n [`& .${checkboxClasses.root}`]: {\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","import { semanticColors, spacing } from '@moderneinc/neo-design'\nimport type { SxProps, Theme } from '@mui/material/styles'\nimport {\n DataGridPro,\n type DataGridProProps,\n type GridDensity,\n type GridSlots,\n gridClasses,\n useGridApiRef,\n} from '@mui/x-data-grid-pro'\nimport type { ReactNode } from 'react'\nimport { NeoCheckbox } from '../Checkbox/Checkbox'\nimport { NeoDataGridColumnsPanel } from '../DataGridColumnsPanel/DataGridColumnsPanel'\nimport {\n NeoDataGridFilterPanel,\n NeoDataGridFilterPanelAddIcon,\n NeoDataGridFilterPanelDeleteIcon,\n NeoDataGridFilterPanelRemoveAllIcon,\n} from '../DataGridFilterPanel/DataGridFilterPanel'\nimport {\n getDataGridHeaderStyles,\n SortedAscendingIcon,\n SortedDescendingIcon,\n UnsortedIcon,\n} from '../DataGridHeaderCell/DataGridHeaderCell'\n\n/**\n * Adapter to use NeoCheckbox 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 <NeoCheckbox\n size=\"small\"\n {...props}\n slotProps={slotProps?.htmlInput ? { input: slotProps.htmlInput } : undefined}\n />\n)\n\nexport type DataGridSize = GridDensity\n\nexport interface NeoDataGridProps 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 Neo defaults)\n */\n slots?: Partial<GridSlots>\n}\n\n/**\n * NeoDataGrid - Responsive base DataGrid component with Neo design system styling\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4260-72484\n *\n * This is the base component for all Neo DataGrid variants. It provides:\n * - Responsive viewport-based height calculation\n * - Dynamic row heights (getRowHeight='auto') for text wrapping\n * - Neo design system styling (colors, typography, spacing)\n * - Custom sort icons and filter panels\n *\n * For specific use cases, see:\n * - NeoInfiniteScrollGrid: Infinite scroll with load-more button\n * - NeoPaginatedGrid: 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 * Figma prop mappings:\n * - `size` → Row heights (compact: 42px, standard: 48px, comfortable: 56px) and header heights (compact: 38px, standard: 44px, comfortable: 52px)\n *\n * Design tokens used:\n * - Colors: semanticColors.border.primary, semanticColors.background.*\n * - Typography: typography.fontFamily.body, typography.fontSize.sm\n * - Spacing: spacing.spacing_*\n *\n * @example\n * // Basic usage with responsive height\n * <NeoDataGrid\n * rows={rows}\n * columns={columns}\n * />\n *\n * @example\n * // With footer offset\n * <NeoDataGrid\n * rows={rows}\n * columns={columns}\n * footerOffsetSelector=\"#page-footer\"\n * />\n */\nexport function NeoDataGrid({\n autoHeight = false,\n toolbar,\n slots,\n sx,\n density = 'standard',\n slotProps: userSlotProps,\n ...props\n}: NeoDataGridProps) {\n const defaultApiRef = useGridApiRef()\n const apiRef = props?.apiRef ? props.apiRef : defaultApiRef\n\n // Merge custom slots with Neo 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: NeoDataGridColumnsPanel,\n filterPanel: NeoDataGridFilterPanel,\n filterPanelAddIcon: NeoDataGridFilterPanelAddIcon,\n filterPanelDeleteIcon: NeoDataGridFilterPanelDeleteIcon,\n filterPanelRemoveAllIcon: NeoDataGridFilterPanelRemoveAllIcon,\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 '& .MuiDataGrid-main': {\n backgroundColor: semanticColors.surfaces.white,\n },\n // White background for empty/loading overlays\n [`& .${gridClasses.overlay}`]: {\n backgroundColor: semanticColors.surfaces.white,\n },\n\n ...getDataGridHeaderStyles(),\n border: `1px solid ${semanticColors.border.primary}`,\n\n // Style row selection checkboxes to match header (16px, proper spacing)\n [`& .${gridClasses.cellCheckbox}`]: {\n '& .MuiCheckbox-root': {\n padding: `${spacing.spacing_1}px`,\n '& .MuiSvgIcon-root': {\n width: 16,\n height: 16,\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}\n {...props}\n />\n )\n}\n\nNeoDataGrid.displayName = 'NeoDataGrid'\n","import { semanticColors } from '@moderneinc/neo-design'\nimport { ColumnsPanelTrigger, ToolbarButton } from '@mui/x-data-grid-pro'\nimport { Columns3 } from 'lucide-react'\nimport { NeoButton } from '../Button/Button'\n\n/**\n * NeoDataGridColumnsButton - Button to open the columns panel in DataGrid\n *\n * Integrates with MUI DataGrid Pro's ColumnsPanelTrigger to show/hide columns.\n * Uses NeoButton with Lucide Columns3 icon.\n *\n * @example\n * ```tsx\n * <NeoDataGridColumnsButton />\n * ```\n */\nexport function NeoDataGridColumnsButton() {\n return (\n <ColumnsPanelTrigger\n render={\n <ToolbarButton\n render={\n <NeoButton variant=\"secondary\" size=\"small\">\n <Columns3 size={16} color={semanticColors.buttons.primary.default} />\n Columns\n </NeoButton>\n }\n />\n }\n />\n )\n}\n\nNeoDataGridColumnsButton.displayName = 'NeoDataGridColumnsButton'\n","import { borderRadius, colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport Chip, { type ChipProps, chipClasses } from '@mui/material/Chip'\nimport { styled } from '@mui/material/styles'\n\ndeclare module '@mui/material/Chip' {\n interface ChipPropsColorOverrides {\n violet: true\n }\n interface ChipPropsSizeOverrides {\n large: true\n }\n interface ChipPropsVariantOverrides {\n outlined: true\n filled: true\n }\n}\n\nconst StyledChip = styled(Chip)(({ theme, size, variant, color }) => ({\n padding: 0,\n borderRadius: borderRadius.full,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n fontWeight: typography.fontWeight.medium,\n\n // Size variants\n ...(size === 'small' && {\n height: 16,\n paddingLeft: spacing.spacing_1_2, // 4px\n paddingRight: spacing.spacing_1_2, // 4px\n }),\n ...(size === 'medium' && {\n height: 18,\n paddingLeft: spacing.spacing_3_4, // 6px\n paddingRight: spacing.spacing_3_4, // 6px\n }),\n ...(size === 'large' && {\n height: 20,\n paddingLeft: spacing.spacing_3_4, // 6px\n paddingRight: spacing.spacing_3_4, // 6px\n }),\n\n [`& .${chipClasses.label}`]: {\n padding: 0,\n },\n\n // Outlined variant (light type in Figma) - Neutral/Default\n ...(variant === 'outlined' &&\n color === 'default' && {\n backgroundColor: semanticColors.status.neutral.light,\n color: semanticColors.status.neutral.dark,\n borderColor: colors.grey[200], // base/grey/200\n }),\n\n // Outlined variant - Error\n ...(variant === 'outlined' &&\n color === 'error' && {\n backgroundColor: semanticColors.status.error.light,\n color: semanticColors.status.error.dark,\n borderColor: colors.red[100], // base/red/100\n }),\n\n // Outlined variant - Warning\n ...(variant === 'outlined' &&\n color === 'warning' && {\n backgroundColor: semanticColors.status.warning.light,\n color: semanticColors.status.warning.dark,\n borderColor: colors.orange[100], // base/orange/100\n }),\n\n // Outlined variant - Success\n ...(variant === 'outlined' &&\n color === 'success' && {\n backgroundColor: semanticColors.status.success.light,\n color: semanticColors.status.success.dark,\n borderColor: 'rgba(94, 196, 111, 0.24)', // rgba from Figma\n }),\n\n // Outlined variant - Info\n ...(variant === 'outlined' &&\n color === 'info' && {\n backgroundColor: semanticColors.status.info.light,\n color: semanticColors.status.info.dark,\n borderColor: colors.digitalBlue[100], // base/digital-blue/100\n }),\n\n // Outlined variant - Violet\n ...(variant === 'outlined' &&\n color === 'violet' && {\n backgroundColor: `${colors.violet[100]}66`, // rgba(235,213,241,0.4)\n color: colors.violet[600],\n borderColor: colors.violet[100], // base/violet/100\n }),\n\n // Filled variant (dark type in Figma) - Neutral/Default\n ...(variant === 'filled' &&\n color === 'default' && {\n backgroundColor: semanticColors.status.neutral.medium,\n color: theme.palette.common.white,\n border: 'none',\n }),\n\n // Filled variant - Error\n ...(variant === 'filled' &&\n color === 'error' && {\n backgroundColor: semanticColors.status.error.medium,\n color: theme.palette.common.white,\n border: 'none',\n }),\n\n // Filled variant - Warning\n ...(variant === 'filled' &&\n color === 'warning' && {\n backgroundColor: semanticColors.status.warning.medium,\n color: theme.palette.common.white,\n border: 'none',\n }),\n\n // Filled variant - Success\n ...(variant === 'filled' &&\n color === 'success' && {\n backgroundColor: semanticColors.status.success.medium,\n color: theme.palette.common.white,\n border: 'none',\n }),\n\n // Filled variant - Info\n ...(variant === 'filled' &&\n color === 'info' && {\n backgroundColor: semanticColors.status.info.medium,\n color: theme.palette.common.white,\n border: 'none',\n }),\n\n // Filled variant - Violet\n ...(variant === 'filled' &&\n color === 'violet' && {\n backgroundColor: colors.violet[500],\n color: theme.palette.common.white,\n border: 'none',\n }),\n}))\n\nexport interface NeoTagProps extends Omit<ChipProps, 'variant' | 'size'> {\n /**\n * The size of the tag\n * @figma m (sm|md|lg)\n * @default \"small\"\n */\n size?: 'small' | 'medium' | 'large'\n\n /**\n * The variant style of the tag\n * @figma type (light|dark)\n * @default \"outlined\"\n */\n variant?: 'outlined' | 'filled'\n\n /**\n * The color/state of the tag\n * @figma state (Neutral|Error|Warning|Success|Info|Violet)\n * @default \"default\"\n */\n color?: 'default' | 'error' | 'warning' | 'success' | 'info' | 'violet'\n}\n\n/**\n * NeoTag - Small pill-shaped label component based on MUI Chip\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4120-34533\n *\n * Figma Props Mapping:\n * - m (sm|md|lg) → size (small|medium|large)\n * - type (light|dark) → variant (outlined|filled)\n * - state (Neutral|Error|Warning|Success|Info|Violet) → color (default|error|warning|success|info|violet)\n * - Label text → label prop\n */\nexport const NeoTag = ({ size = 'small', variant = 'outlined', ...props }: NeoTagProps) => {\n return <StyledChip size={size} variant={variant} {...props} />\n}\n\nNeoTag.displayName = 'NeoTag'\n","import { semanticColors } from '@moderneinc/neo-design'\nimport {\n FilterPanelTrigger,\n gridFilterModelSelector,\n ToolbarButton,\n useGridApiContext,\n useGridSelector,\n} from '@mui/x-data-grid-pro'\nimport { ListFilter } from 'lucide-react'\nimport { NeoButton } from '../Button/Button'\nimport { NeoTag } from '../Tag/Tag'\n\n/**\n * NeoDataGridFiltersButton - Button to open the filters panel in DataGrid\n *\n * Integrates with MUI DataGrid Pro's FilterPanelTrigger to manage column filters.\n * Uses NeoButton with Lucide ListFilter icon and shows active filter count.\n * The count badge updates reactively when filters change.\n *\n * @example\n * ```tsx\n * <NeoDataGridFiltersButton />\n * ```\n */\nexport function NeoDataGridFiltersButton() {\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 <NeoButton variant=\"secondary\" size=\"small\">\n <ListFilter size={16} color={semanticColors.buttons.primary.default} />\n Filters\n {filterCount > 0 && (\n <NeoTag size=\"medium\" variant=\"filled\" color=\"info\" label={String(filterCount)} />\n )}\n </NeoButton>\n }\n />\n }\n />\n )\n}\n\nNeoDataGridFiltersButton.displayName = 'NeoDataGridFiltersButton'\n","import { semanticColors, spacing, typography } from '@moderneinc/neo-design'\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 * NeoDataGridHeaderLabel - Header label for DataGrid columns with help icon support\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4212-41565\n *\n * Figma prop mappings:\n * - `helpIcon` → `helpTooltip`: \"True\" → provide tooltip text, \"False\" → undefined\n * - `state` → handled via CSS :hover (not a prop)\n * - `text` → `children` (ReactNode)\n * - `arrow` → handled by MUI DataGrid slots (not a prop)\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 * <NeoDataGridHeaderLabel>Company</NeoDataGridHeaderLabel>\n *\n * @example\n * // With help icon and tooltip\n * <NeoDataGridHeaderLabel helpTooltip=\"The current status of the company\">\n * Status\n * </NeoDataGridHeaderLabel>\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 NeoDataGridHeaderLabelProps {\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 NeoDataGridHeaderLabel({\n children,\n helpTooltip,\n className,\n}: NeoDataGridHeaderLabelProps) {\n return (\n <LabelContainer className={className} data-neo-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 * @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 */\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/neo-design'\nimport IconButton, { type IconButtonProps, iconButtonClasses } from '@mui/material/IconButton'\nimport { styled } from '@mui/material/styles'\n\ntype IconButtonSize = 'small' | 'medium'\n\nconst StyledIconButton = styled(IconButton, {\n shouldForwardProp: prop => prop !== 'size',\n})<{\n size?: IconButtonSize\n}>(({ theme, size = 'medium' }) => {\n // Size configurations using theme.spacing()\n const sizeConfig = {\n small: {\n width: 32,\n height: 32,\n padding: theme.spacing(0.5),\n },\n medium: {\n width: spacing.spacing_5_1_2,\n height: spacing.spacing_5_1_2,\n padding: theme.spacing(1.25),\n },\n }\n\n const sizeStyles = sizeConfig[size]\n\n // Base styles shared by all variants\n const baseStyles = {\n width: sizeStyles.width,\n height: sizeStyles.height,\n padding: sizeStyles.padding,\n borderRadius: borderRadius.button, // Fully rounded/circular\n transition: theme.transitions.create(['background-color', 'border-color', 'color'], {\n duration: theme.transitions.duration.short,\n }),\n\n // Disabled state\n [`&.${iconButtonClasses.disabled}`]: {\n cursor: 'not-allowed',\n pointerEvents: 'auto',\n },\n\n // Focus visible for keyboard navigation\n '&:focus-visible': {\n outline: `2px solid ${semanticColors.buttons.primary.focus}`,\n outlineOffset: 2,\n },\n }\n\n // Icon button styling - single neutral style\n const iconButtonStyles = {\n backgroundColor: 'transparent',\n color: semanticColors.icons.default,\n border: 'none',\n\n '&:hover': {\n backgroundColor: semanticColors.icons.hoverBackground,\n color: semanticColors.icons.hover,\n },\n\n '&:active': {\n color: semanticColors.icons.pressed,\n },\n\n [`&.${iconButtonClasses.disabled}`]: {\n backgroundColor: 'transparent',\n color: semanticColors.icons.disabled,\n },\n }\n\n return {\n ...baseStyles,\n ...iconButtonStyles,\n }\n})\n\nexport interface NeoIconButtonProps extends Omit<IconButtonProps, 'color' | 'size'> {\n /**\n * The size of the icon button\n * @default \"medium\"\n *\n * @figma Size\n */\n size?: IconButtonSize\n}\n\n/**\n * NeoIconButton - Icon-only button component based on MUI IconButton\n *\n * Simple, neutral icon button with transparent background and icon color states.\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4086-7590\n *\n * Figma Props Mapping:\n * - Hierarchy=Icon → Single default style (no variant prop)\n * - Size (Small|Medium) → size prop\n * - State=Disabled → disabled prop\n * - State=Hover → CSS :hover\n * - State=Pressed → CSS :active\n * - State=Focused → CSS :focus-visible\n */\nexport const NeoIconButton = ({ size = 'medium', ...props }: NeoIconButtonProps) => {\n return <StyledIconButton size={size} {...props} />\n}\n\nNeoIconButton.displayName = 'NeoIconButton'\n","import {\n borderRadius,\n colors,\n semanticColors,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/neo-design'\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 { pickersCalendarHeaderClasses } from '@mui/x-date-pickers/PickersCalendarHeader'\nimport { pickersDayClasses } from '@mui/x-date-pickers/PickersDay'\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 { NeoIconButton } 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 Neo design tokens\nconst StyledDatePicker = styled(DatePicker)(({ theme }) => ({\n [`& .${pickerPopperClasses.paper}`]: {\n boxShadow: `${shadows.dropdown.x}px ${shadows.dropdown.y}px ${shadows.dropdown.blur}px ${shadows.dropdown.spread}px ${shadows.dropdown.shadow}`,\n borderRadius: theme.spacing(2),\n },\n [`& .${dayCalendarClasses.weekDayLabel}`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.medium,\n color: semanticColors.typography.bodySecondary,\n },\n [`& .${pickersDayClasses.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: colors.grey[800],\n color: semanticColors.surfaces.white,\n '&:hover': {\n backgroundColor: colors.grey[800],\n },\n },\n [`&.${pickersDayClasses.today}`]: {\n border: `2px solid ${colors.grey[800]}`,\n backgroundColor: 'transparent',\n },\n },\n [`& .${pickersCalendarHeaderClasses.label}`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.semiBold,\n color: colors.grey[700],\n },\n})) as typeof DatePicker\n\n// Styled DateRangePicker with Neo design tokens\nconst StyledDateRangePicker = styled(DateRangePicker)(({ theme }) => ({\n [`& .${pickerPopperClasses.paper}`]: {\n boxShadow: `${shadows.dropdown.x}px ${shadows.dropdown.y}px ${shadows.dropdown.blur}px ${shadows.dropdown.spread}px ${shadows.dropdown.shadow}`,\n borderRadius: theme.spacing(2),\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 },\n [`& .${dateRangePickerDayClasses.day}`]: {\n '&:hover': {\n backgroundColor: semanticColors.icons.hoverBackground,\n },\n '&.Mui-selected': {\n backgroundColor: colors.grey[800],\n color: semanticColors.surfaces.white,\n },\n },\n [`& .${dateRangePickerDayClasses.rangeIntervalDayHighlight}`]: {\n backgroundColor: semanticColors.icons.hoverBackground,\n },\n [`& .${dateRangePickerDayClasses.rangeIntervalDayHighlightStart}, & .${dateRangePickerDayClasses.rangeIntervalDayHighlightEnd}`]:\n {\n backgroundColor: colors.grey[800],\n },\n [`& .${dateRangePickerDayClasses.dayInsideRangeInterval}`]: {\n color: semanticColors.typography.input.default,\n },\n [`& .${pickersCalendarHeaderClasses.label}`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.semiBold,\n color: colors.grey[700],\n },\n})) as typeof DateRangePicker\n\ntype DatePickerType = 'single' | 'range'\n\n/**\n * Props for the NeoDatePicker component\n */\nexport interface NeoDatePickerProps {\n /**\n * Type of date picker to render\n * @default \"single\"\n * @figma type\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 * @figma opened\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<false>>,\n 'value' | 'onChange' | 'open' | 'onOpen' | 'onClose' | 'label'\n >\n\n /**\n * Additional props passed to DateRangePicker\n */\n dateRangePickerProps?: Omit<\n Partial<DateRangePickerProps<false>>,\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 '& .MuiChip-label': {\n padding: 0,\n },\n '&:hover': {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n },\n },\n}\n\n/**\n * NeoDatePicker - Moderne design system date picker component\n *\n * A wrapper around MUI X DatePicker and DateRangePicker with Neo design tokens and\n * customization. Supports both single date selection and date range selection with\n * built-in shortcuts.\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4176-3700\n *\n * Figma Props Mapping:\n * - opened → open (boolean)\n * - type ('Single date'|'Dual dates') → type ('single'|'range')\n *\n * Design Tokens Used:\n * - colors: semanticColors.grey[800], semanticColors.grey[700], 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 NeoDatePicker = ({\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}: NeoDatePickerProps) => {\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: NeoIconButton,\n nextIconButton: NeoIconButton,\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\nNeoDatePicker.displayName = 'NeoDatePicker'\n\nexport type { DatePickerType }\n","import { semanticColors } from '@moderneinc/neo-design'\nimport Divider, { type DividerProps } from '@mui/material/Divider'\nimport { styled } from '@mui/material/styles'\n\nconst StyledDivider = styled(Divider)(({ theme }) => ({\n borderColor: semanticColors.border.secondary,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n}))\n\nexport interface NeoDividerProps extends DividerProps {}\n\n/**\n * NeoDivider - 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 * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4159-8649\n *\n * @example\n * ```tsx\n * // In a menu\n * <NeoMenu>\n * <NeoMenuItem>Settings</NeoMenuItem>\n * <NeoDivider />\n * <NeoMenuItem>Sign out</NeoMenuItem>\n * </NeoMenu>\n *\n * // In a card\n * <Card>\n * <CardHeader>Title</CardHeader>\n * <NeoDivider />\n * <CardContent>Content</CardContent>\n * </Card>\n * ```\n */\nexport const NeoDivider = (props: NeoDividerProps) => {\n return <StyledDivider {...props} />\n}\n\nNeoDivider.displayName = 'NeoDivider'\n","import { semanticColors } from '@moderneinc/neo-design'\nimport Badge, { type BadgeProps, badgeClasses } from '@mui/material/Badge'\nimport { styled } from '@mui/material/styles'\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 StyledBadge = styled(Badge)<{\n ownerState: { size: DotSize; variant: DotVariant; color: DotColor }\n}>(({ ownerState }) => {\n const size = sizeMap[ownerState.size]\n const color = semanticColors.status[ownerState.color].medium\n\n return {\n [`& .${badgeClasses.badge}`]: {\n width: size,\n height: size,\n minWidth: size,\n borderRadius: ownerState.variant === 'solid' ? '50%' : 0,\n padding: 0,\n backgroundColor: ownerState.variant === 'solid' ? color : 'transparent',\n // Remove default badge positioning - make it standalone\n position: 'static',\n transform: 'none',\n overflow: 'visible',\n },\n }\n})\n\nexport interface NeoDotProps\n extends Omit<BadgeProps, 'variant' | 'color' | 'badgeContent' | '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\n/**\n * NeoDot - Status indicator dot component based on MUI Badge\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4163-3577\n *\n * Figma Props Mapping:\n * - size (sm|md|lg) → size prop (small|medium|large)\n * - outline (False|True) → variant prop (solid|outline)\n * - Color is configurable via color prop (success|error|warning|info|neutral)\n */\nexport const NeoDot = ({\n size = 'medium',\n variant = 'solid',\n color = 'neutral',\n ...props\n}: NeoDotProps) => {\n const dotSize = sizeMap[size]\n const mediumColor = semanticColors.status[color].medium\n const lightColor = semanticColors.status[color].light\n\n // For outline variant, use SVG for precise control\n const renderDot = () => {\n if (variant === 'outline') {\n // SVG approach: outer circle with light fill, inner circle with medium fill\n // Stroke width of ~3px creates the ring effect\n const strokeWidth = 3\n const radius = dotSize / 2\n const innerRadius = radius - strokeWidth\n\n return (\n <svg\n width={dotSize}\n height={dotSize}\n viewBox={`0 0 ${dotSize} ${dotSize}`}\n style={{\n display: 'block',\n borderRadius: '50%',\n }}\n role=\"img\"\n aria-label={`${color} status indicator`}\n >\n <title>{`${color} status indicator`}</title>\n <circle cx={radius} cy={radius} r={radius} fill={lightColor} />\n <circle cx={radius} cy={radius} r={innerRadius} fill={mediumColor} />\n </svg>\n )\n }\n return <span style={{ display: 'inline-block', width: 0, height: 0 }} />\n }\n\n return (\n <StyledBadge {...props} ownerState={{ size, variant, color }} variant=\"dot\">\n {renderDot()}\n </StyledBadge>\n )\n}\n\nNeoDot.displayName = 'NeoDot'\n","import { semanticColors } from '@moderneinc/neo-design'\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 NeoLoadingSpinnerProps {\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 * NeoLoadingSpinner - 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 * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4180-14713\n *\n * @example\n * <NeoLoadingSpinner />\n *\n * @example\n * <NeoLoadingSpinner size={32} color=\"#ff0000\" />\n */\nexport const NeoLoadingSpinner = ({\n size = 24,\n color = semanticColors.buttons.primary.default,\n}: NeoLoadingSpinnerProps) => {\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\nNeoLoadingSpinner.displayName = 'NeoLoadingSpinner'\n","import {\n borderRadius,\n colors,\n semanticColors,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/neo-design'\nimport Box from '@mui/material/Box'\nimport IconButton from '@mui/material/IconButton'\nimport { styled } from '@mui/material/styles'\nimport {\n gridPaginationModelSelector,\n gridRowCountSelector,\n useGridApiContext,\n useGridSelector,\n} from '@mui/x-data-grid'\nimport { ChevronLeft, ChevronRight } from 'lucide-react'\nimport type { ReactNode } from 'react'\nimport { NeoLoadingSpinner } 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 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.neutralRegular.blur}px`, // -4px\n left: 0,\n right: 0,\n height: `${shadows.neutralRegular.blur}px`, // 4px\n background: `linear-gradient(to top, ${shadows.neutralRegular.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: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n color: colors.grey['800'], // typography/body: #1F2937\n margin: 0,\n whiteSpace: 'pre',\n}))\n\nconst LoadMoreButton = styled('button')(({ theme }) => ({\n fontFamily: theme.typography.fontFamily,\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.icons.disabled,\n cursor: 'not-allowed',\n },\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: 20,\n height: 20,\n color: disabled ? semanticColors.icons.disabled : semanticColors.icons.default,\n },\n}))\n\nconst PaginationText = styled('p')(({ theme }) => ({\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n color: colors.grey['800'], // typography/body: #1F2937\n margin: 0,\n whiteSpace: 'pre',\n}))\n\nexport interface NeoFooterProps {\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 * Custom content to render in the footer\n */\n children?: ReactNode\n}\n\n/**\n * NeoFooter - 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 * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4261-3133\n *\n * @example\n * // Loading variant with load more\n * <NeoFooter\n * variant=\"loading\"\n * loading={isLoading}\n * resultCount={40}\n * hasMore={true}\n * onLoadMore={() => loadMore()}\n * />\n *\n * @example\n * // Pagination variant\n * <NeoFooter\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: NeoFooter }}\n * slotProps={{\n * footer: {\n * variant: 'pagination',\n * },\n * }}\n * />\n */\nexport const NeoFooter = ({\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 children,\n}: NeoFooterProps) => {\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\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 <NeoLoadingSpinner />\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: 'flex-end' }}>\n <PaginationContainer>\n <PaginationText>{derivePaginationInfo()}</PaginationText>\n <Box sx={{ display: 'flex', gap: spacing.spacing_1_4 }}>\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\nNeoFooter.displayName = 'NeoFooter'\n","import { semanticColors } from '@moderneinc/neo-design'\nimport type { GridScrollParams, GridSlots } from '@mui/x-data-grid-pro'\nimport { gridClasses, useGridApiRef } from '@mui/x-data-grid-pro'\nimport { useEffect, useRef, useState } from 'react'\nimport { NeoDataGrid, type NeoDataGridProps } from '../DataGrid/DataGrid'\nimport { NeoFooter } from '../Footer/Footer'\n\nexport interface NeoInfiniteScrollGridProps extends Omit<NeoDataGridProps, '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 Neo defaults)\n */\n slots?: Partial<GridSlots>\n}\n\n/**\n * NeoInfiniteScrollGrid - DataGrid with infinite scroll and load-more functionality\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4260-72484\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 NeoDataGrid\n *\n * @example\n * <NeoInfiniteScrollGrid\n * rows={rows}\n * columns={columns}\n * onLoadMore={loadMoreData}\n * hasNextPage={hasMore}\n * loading={isLoading}\n * />\n */\nexport function NeoInfiniteScrollGrid({\n onLoadMore,\n hasNextPage = true,\n loadMoreAtScrollPercent = 0.85,\n slots,\n slotProps: userSlotProps,\n sx: userSx,\n ...props\n}: NeoInfiniteScrollGridProps) {\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<NodeJS.Timeout | 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 ? NeoFooter : () => null,\n ...slots,\n }\n\n return (\n <NeoDataGrid\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={{\n // Add border at bottom of rows section (above footer)\n [`& .${gridClasses.virtualScrollerContent}`]: {\n borderBottom: `1px solid ${semanticColors.border.primary}`,\n },\n ...userSx,\n }}\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\nNeoInfiniteScrollGrid.displayName = 'NeoInfiniteScrollGrid'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport FormControl from '@mui/material/FormControl'\nimport FormHelperText, { formHelperTextClasses } from '@mui/material/FormHelperText'\nimport InputAdornment 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\nconst 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\nconst 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: 500,\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.icons.disabled,\n },\n\n [`&.${inputLabelClasses.error}`]: {\n color: semanticColors.typography.input.label,\n },\n}))\n\nconst 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 }) => {\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_2}px ${spacing.spacing_3}px ${spacing.spacing_2}px ${startAdornment ? 0 : spacing.spacing_2}px`,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n borderRadius: borderRadius.full,\n },\n }\n\n const sizeStyles = sizeConfig[size as InputFieldSize]\n\n return {\n height: sizeStyles.height,\n fontSize: sizeStyles.fontSize,\n borderRadius: sizeStyles.borderRadius,\n backgroundColor: semanticColors.input.background,\n border: `1px solid ${destructive ? semanticColors.status.error.medium : semanticColors.border.input}`,\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\n '&::placeholder': {\n color: semanticColors.typography.input.placeholder,\n },\n },\n\n // Hover state\n '&:hover': {\n backgroundColor: semanticColors.input.hoverBackground,\n borderColor: destructive ? semanticColors.status.error.medium : semanticColors.border.input,\n },\n\n // Focused state\n [`&.${inputBaseClasses.focused}`]: {\n backgroundColor: semanticColors.input.background,\n borderColor: destructive\n ? semanticColors.status.error.medium\n : semanticColors.buttons.primary.default,\n },\n\n // Disabled state\n [`&.${inputBaseClasses.disabled}`]: {\n backgroundColor: semanticColors.input.disabledBackground,\n borderColor: semanticColors.border.input,\n color: semanticColors.icons.disabled,\n\n [`& .${inputBaseClasses.input}`]: {\n WebkitTextFillColor: semanticColors.icons.disabled,\n },\n },\n\n // Error state\n [`&.${inputBaseClasses.error}`]: {\n borderColor: semanticColors.status.error.medium,\n },\n\n // Adornment styling\n '& .MuiInputAdornment-root': {\n color: destructive ? semanticColors.status.error.medium : semanticColors.icons.placeholder,\n },\n }\n }\n)\n\nconst 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.medium,\n },\n\n [`&.${formHelperTextClasses.disabled}`]: {\n color: semanticColors.icons.disabled,\n },\n }\n})\n\nexport interface NeoInputFieldProps extends Omit<InputBaseProps, 'size'> {\n /**\n * The size of the input field\n * @default \"medium\"\n *\n * @figma Size\n */\n size?: InputFieldSize\n\n /**\n * Show error/destructive state with red styling\n * @default false\n *\n * @figma Destructive\n */\n destructive?: boolean\n\n /**\n * Label text for the input\n *\n * @figma Label\n */\n label?: string\n\n /**\n * Show required indicator (asterisk)\n * @default false\n *\n * @figma Required indicator\n */\n required?: boolean\n\n /**\n * Info icon to display next to the label\n *\n * @figma Info icon\n */\n infoIcon?: ReactNode\n\n /**\n * Helper text displayed below the input (normal state)\n *\n * @figma Helper text\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 * @figma Error message\n */\n errorMessage?: string\n\n /**\n * Icon to display at the start of the input\n *\n * @figma Left icon\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 * @figma Right icon\n */\n endIcon?: ReactNode\n}\n\n/**\n * NeoInputField - Form input field component using MUI FormControl composition\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4091-23373\n *\n * Figma Props Mapping:\n * - Size (small|medium) → size prop\n * - Destructive (false|true) → destructive prop\n * - State=Placeholder → empty value with placeholder text\n * - State=Hover → CSS :hover\n * - State=Filled → value prop with text\n * - State=Focused → CSS :focus\n * - State=Disabled → disabled prop\n * - Label → label prop\n * - Required indicator (*) → required prop\n * - Info icon → infoIcon prop\n * - Helper text → helperText prop\n * - Error message → errorMessage prop (shown when destructive=true)\n * - Left icon → startIcon prop\n * - Right icon → endIcon prop (auto error icon when destructive=true)\n */\nexport const NeoInputField = ({\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}: NeoInputFieldProps) => {\n const inputId = id || `neo-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 >\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\nNeoInputField.displayName = 'NeoInputField'\n","import { semanticColors, spacing, typography } from '@moderneinc/neo-design'\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'\n }\n}\n\n// Size configuration for consistent styling\nconst sizeConfig = {\n small: {\n height: 36,\n paddingTop: spacing.spacing_1,\n paddingRight: spacing.spacing_1_1_4,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_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: spacing.spacing_1,\n paddingRight: spacing.spacing_1_1_4,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1,\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: spacing.spacing_1,\n paddingRight: spacing.spacing_1_1_4,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_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: spacing.spacing_1,\n paddingRight: spacing.spacing_1_1_4,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_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: spacing.spacing_1,\n paddingRight: spacing.spacing_1_1_2,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_2,\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,\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})<{\n size?: 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge'\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 '& .list-item-primary': {\n fontSize: theme.typography.pxToRem(config.fontSize),\n lineHeight: config.lineHeight,\n fontWeight: 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 },\n\n // Badge styling (for xxlarge link variant)\n '& .list-item-badge': {\n fontSize: theme.typography.pxToRem(\n size === 'xxlarge' ? (config as typeof sizeConfig.xxlarge).badgeFontSize || 12 : 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 // Hover state\n '&:hover': {\n backgroundColor: semanticColors.input.background,\n },\n\n // Selected/Active state\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: typography.fontWeight.semiBold,\n color: semanticColors.typography.navigation.default,\n },\n\n '& .list-item-secondary': {\n fontWeight: typography.fontWeight.medium,\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\n // Link-specific styling (underline on hover for xxlarge)\n ...(isLink &&\n size === 'xxlarge' && {\n '& .list-item-primary': {\n textDecoration: 'none',\n },\n '&:hover .list-item-primary': {\n textDecoration: 'underline',\n },\n }),\n }\n})\n\n/**\n * Props for the NeoListItem component\n */\nexport interface NeoListItemProps extends Omit<ListItemButtonProps, 'children' | 'size' | 'color'> {\n /**\n * The size variant of the list item\n * @default \"medium\"\n * @figma size\n */\n size?: 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge'\n\n /**\n * Primary text content (required)\n * @figma Placeholder (primary text)\n */\n primaryText: ReactNode\n\n /**\n * Secondary/supporting text content (optional, shown in large/xlarge/xxlarge)\n * @figma Recipe name (secondary text)\n */\n secondaryText?: ReactNode\n\n /**\n * Badge content for count display (optional, for xxlarge link variant)\n * @figma (# recipes)\n */\n badge?: ReactNode\n\n /**\n * Icon or logo element (optional, scales based on size)\n * @figma Icon base / Marketplace Logo\n */\n icon?: ReactNode\n\n /**\n * The component used for the root node (for polymorphic behavior)\n * @default 'button'\n * @figma Use 'a' for state=\"link\"\n */\n component?: React.ElementType\n\n /**\n * Whether this is a link variant (applies link styling)\n * @default false\n * @figma state=\"link\"\n */\n isLink?: boolean\n}\n\n/**\n * NeoListItem - Flexible list item component with multiple size variants and states\n *\n * A versatile list item component built on MUI's ListItemButton that supports five size variants\n * (small to xxlarge), interactive states (default, selected, disabled, link), and optional\n * icons/logos, secondary text, and badges.\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4205-36442\n *\n * Figma Props Mapping:\n * - size (small|medium|large|xlarge|XXL) → size (small|medium|large|xlarge|xxlarge)\n * - state (default|active|disabled|link) → selected, disabled, isLink props\n * - showIcon → icon prop (pass ReactNode)\n * - showSupportingText → secondaryText prop (pass ReactNode)\n * - Placeholder → primaryText prop\n * - Recipe name → secondaryText prop\n * - (# recipes) → badge prop\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 NeoListItem = ({\n size = 'medium',\n primaryText,\n secondaryText,\n badge,\n icon,\n isLink = false,\n component,\n ...props\n}: NeoListItemProps) => {\n // Determine if secondary text should be shown based on size\n const showSecondaryText =\n secondaryText && (size === 'large' || size === 'xlarge' || size === 'xxlarge')\n\n // Determine if badge should be shown (only for xxlarge)\n const showBadge = badge && size === 'xxlarge'\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 </StyledListItemButton>\n )\n}\n\nNeoListItem.displayName = 'NeoListItem'\n","import { colors, semanticColors, spacing } from '@moderneinc/neo-design'\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 } from '@mui/material/styles'\n\n/**\n * Styled ListItemButton with Neo design tokens\n * Uses MUI's ListItemButton as base for proper accessibility and interaction\n */\nconst StyledListItemButton = styled(MuiListItemButton)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_2,\n borderRadius: theme.typography.pxToRem(12),\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: theme.palette.common.white,\n transition: theme.transitions.create(['border', 'background-color']),\n\n // Active (selected) state\n [`&.${listItemButtonClasses.selected}`]: {\n border: `2px solid ${semanticColors.border.tabActive}`,\n backgroundColor: theme.palette.common.white,\n\n '&:hover': {\n backgroundColor: theme.palette.common.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: colors.grey[800],\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: colors.grey[50],\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 // Disabled state\n [`&.${listItemButtonClasses.disabled}`]: {\n backgroundColor: colors.grey[50],\n opacity: 1, // Override MUI default opacity\n\n [`& .${listItemIconClasses.root}`]: {\n color: semanticColors.icons.disabled,\n },\n\n [`& .${listItemTextClasses.primary}`]: {\n color: colors.grey[300],\n },\n\n [`& .${listItemTextClasses.secondary}`]: {\n color: colors.grey[300],\n },\n },\n}))\n\n/**\n * Props for the NeoListItemButton component\n */\nexport interface NeoListItemButtonProps extends ListItemButtonProps {\n /**\n * Whether the list item is selected\n * @default false\n * @figma property1=\"Active\"\n */\n selected?: boolean\n\n /**\n * Whether the list item is disabled\n * @default false\n * @figma property1=\"Disabled\"\n */\n disabled?: boolean\n}\n\n/**\n * NeoListItemButton - 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, 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 * <NeoListItemButton 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 * </NeoListItemButton>\n * ```\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4925-3764\n *\n * Figma Props Mapping:\n * - property1=\"Active\" → selected={true}\n * - property1=\"Deselected\" → selected={false}\n * - property1=\"Disabled\" → disabled={true}\n * - showIcon → Conditional rendering of ListItemIcon child\n *\n * Design Tokens Used:\n * - semanticColors.border.tabActive (#2f42ff) - Active border\n * - semanticColors.border.primary (#d1d5db) - Default/disabled border\n * - semanticColors.icons.default (#1f2937) - Active icon color\n * - semanticColors.icons.disabled (#d1d5db) - Deselected/disabled icon color\n * - semanticColors.buttons.tertiary.disabled (#9ca3af) - Deselected text color\n * - semanticColors.typography.bodySecondary (#6b7280) - Active secondary text\n * - semanticColors.typography.button.disabled (#9ca3af) - Deselected secondary text\n * - colors.grey[800] (#1f2937) - Active primary text\n * - colors.grey[300] (#d1d5db) - Disabled text\n * - colors.grey[50] (#f9fafb) - Disabled background\n */\nexport const NeoListItemButton = ({\n children,\n selected = false,\n disabled = false,\n ...props\n}: NeoListItemButtonProps) => {\n return (\n <StyledListItemButton selected={selected} disabled={disabled} {...props}>\n {children}\n </StyledListItemButton>\n )\n}\n\nNeoListItemButton.displayName = 'NeoListItemButton'\n","import { colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport MuiCard, { type CardProps } from '@mui/material/Card'\nimport { styled } from '@mui/material/styles'\nimport type { ReactNode } from 'react'\n\n/**\n * Styled Card component with Neo design tokens\n */\nconst StyledCard = styled(MuiCard, {\n shouldForwardProp: prop => prop !== 'selected' && prop !== 'disabled',\n})<{ selected?: boolean; disabled?: boolean }>(({ theme, selected, disabled }) => ({\n width: theme.typography.pxToRem(160),\n height: theme.typography.pxToRem(160),\n padding: theme.spacing(1.5), // 12px\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2), // 16px\n backgroundColor: semanticColors.surfaces.card,\n border: `1px solid ${selected ? semanticColors.border.tabActive : semanticColors.border.card}`,\n borderRadius: theme.typography.pxToRem(4),\n boxShadow: 'none',\n transition: theme.transitions.create(['border-color']),\n cursor: 'pointer',\n\n '&:hover': {\n borderColor: selected ? semanticColors.border.tabActive : semanticColors.border.card,\n },\n\n '&:focus-visible': {\n outline: `2px solid ${semanticColors.border.tabActive}`,\n outlineOffset: '2px',\n borderColor: semanticColors.border.tabActive,\n },\n\n ...(disabled && {\n opacity: 0.5,\n pointerEvents: 'none',\n cursor: 'not-allowed',\n }),\n}))\n\n/**\n * Header section containing logo and recipe count\n */\nconst CardHeader = styled('div')({\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n width: '100%',\n})\n\n/**\n * Logo container\n */\nconst LogoContainer = styled('div')(({ theme }) => ({\n width: theme.typography.pxToRem(spacing.spacing_6),\n height: theme.typography.pxToRem(spacing.spacing_6),\n flexShrink: 0,\n}))\n\n/**\n * Recipe count badge\n */\nconst RecipeCount = 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: colors.grey[800],\n whiteSpace: 'nowrap',\n}))\n\n/**\n * Content section containing title and description\n */\nconst CardContent = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2), // 16px\n width: '100%',\n}))\n\n/**\n * Title text\n */\nconst Title = 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: colors.grey[800],\n width: '100%',\n}))\n\n/**\n * Description text\n */\nconst Description = 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: colors.grey[800],\n width: '100%',\n}))\n\n/**\n * Props for the NeoMarketplaceCard component\n */\nexport interface NeoMarketplaceCardProps extends Omit<CardProps, 'children'> {\n /**\n * The logo to display (48x48px ReactNode)\n */\n logo: ReactNode\n\n /**\n * The recipe count text (e.g., \"1,260 recipes\")\n */\n recipeCount: string\n\n /**\n * The title text\n */\n title: string\n\n /**\n * The description text\n */\n description: string\n\n /**\n * Whether the card is in selected/active state\n * @default false\n * @figma Property 1 (Active)\n */\n selected?: boolean\n\n /**\n * Whether the card is disabled\n * @default false\n * @figma Property 1 (Disabled)\n */\n disabled?: boolean\n\n /**\n * Click handler for the card\n */\n onClick?: () => void\n}\n\n/**\n * NeoMarketplaceCard - Selectable card component for marketplace items\n *\n * A fixed-size card (160x160px) displaying a logo, recipe count, title, and description.\n * Supports selected (active), disabled, and focused states.\n *\n * @example\n * ```tsx\n * <NeoMarketplaceCard\n * logo={<JavaLogo />}\n * recipeCount=\"1,260 recipes\"\n * title=\"Java\"\n * description=\"Basic building blocks for transforming Java...\"\n * selected={false}\n * disabled={false}\n * onClick={() => console.log('clicked')}\n * />\n * ```\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4286-1635&t=Bo58EpFmg6ILJtmv-11\n *\n * Figma Props Mapping:\n * - Property 1=\"Active\" → selected={true}\n * - Property 1=\"Disabled\" → disabled={true}\n * - Property 1=\"Focused\" → CSS :focus-visible state (not a prop)\n * - Property 1=\"Default\" → Base state (no props)\n *\n * Design Tokens Used:\n * - semanticColors.surfaces.card (#FFFFFF) - Card background\n * - semanticColors.border.card (#d1d5db) - Default border\n * - semanticColors.border.tabActive (#2f42ff) - Active/focused border\n * - colors.grey[800] (#1F2937) - Text color\n * - typography.fontSize.xxs (10px) - Recipe count\n * - typography.fontSize.xs (12px) - Description\n * - typography.fontSize.h6 (16px) - Title\n * - typography.fontWeight.semiBold (600) - Title and recipe count\n * - typography.fontWeight.regular (400) - Description\n */\nexport const NeoMarketplaceCard = ({\n logo,\n recipeCount,\n title,\n description,\n selected = false,\n disabled = false,\n onClick,\n ...props\n}: NeoMarketplaceCardProps) => {\n return (\n <StyledCard\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 <CardHeader>\n <LogoContainer>{logo}</LogoContainer>\n <RecipeCount>{recipeCount}</RecipeCount>\n </CardHeader>\n <CardContent>\n <Title>{title}</Title>\n <Description>{description}</Description>\n </CardContent>\n </StyledCard>\n )\n}\n\nNeoMarketplaceCard.displayName = 'NeoMarketplaceCard'\n","import { borderRadius, semanticColors, shadows } from '@moderneinc/neo-design'\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)(({ theme }) => ({\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 minWidth: 200,\n marginTop: theme.spacing(1),\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n },\n [`& .${listClasses.root}`]: {\n padding: 0,\n },\n}))\n\nexport interface NeoMenuProps extends MenuProps {\n /**\n * Menu content (typically NeoMenuItem components)\n */\n children?: React.ReactNode\n}\n\n/**\n * NeoMenu - Dropdown menu component based on MUI Menu\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4159-8649\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4305-41844 (Dropdown list pattern)\n *\n * Figma Props Mapping:\n * - Container shown in Figma is the Menu Paper component\n * - Menu items are styled separately via NeoMenuItem\n * - Any trigger component (Button, IconButton, etc.) can open the menu\n *\n * @example\n * ```tsx\n * const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n * const open = Boolean(anchorEl);\n *\n * // Standard menu with icons and shortcuts\n * <Button onClick={(e) => setAnchorEl(e.currentTarget)}>Open Menu</Button>\n * <NeoMenu\n * open={open}\n * anchorEl={anchorEl}\n * onClose={() => setAnchorEl(null)}\n * >\n * <NeoMenuItem icon={<Icon />} shortcut=\"⌘+P\">View profile</NeoMenuItem>\n * <NeoMenuItem>Settings</NeoMenuItem>\n * </NeoMenu>\n *\n * // Dropdown list with secondary text (user list pattern)\n * <NeoMenu open={open} anchorEl={anchorEl} onClose={() => setAnchorEl(null)}>\n * <NeoMenuItem secondaryText=\"@phoenix\">Phoenix Baker</NeoMenuItem>\n * <NeoMenuItem secondaryText=\"@olivia\" selected>Olivia Rhye</NeoMenuItem>\n * </NeoMenu>\n * ```\n */\nexport const NeoMenu = ({ children, ...props }: NeoMenuProps) => {\n return <StyledMenu {...props}>{children}</StyledMenu>\n}\n\nNeoMenu.displayName = 'NeoMenu'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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// NeoModal - Main Dialog Container\n// ============================================================================\n\nconst StyledDialog = styled(Dialog)({\n [`& .${dialogClasses.paper}`]: {\n borderRadius: borderRadius.card,\n border: `1px solid ${semanticColors.border.card}`,\n boxShadow: 'none',\n },\n\n [`& .${dialogClasses.container}`]: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n})\n\nexport interface NeoModalProps extends Omit<DialogProps, 'children'> {\n /**\n * Dialog content\n */\n children?: ReactNode\n}\n\n/**\n * NeoModal - Main modal dialog container based on MUI Dialog\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30337\n *\n * This is a composition component. Use with NeoModalHeader, NeoModalContent, and NeoModalFooter:\n *\n * @example\n * <NeoModal open={open} onClose={handleClose}>\n * <NeoModalHeader\n * title=\"Title\"\n * subtitle=\"Subtitle\"\n * onClose={handleClose}\n * />\n * <NeoModalContent>\n * Content goes here\n * </NeoModalContent>\n * <NeoModalFooter>\n * <NeoButton onClick={handleClose}>Action</NeoButton>\n * </NeoModalFooter>\n * </NeoModal>\n */\nexport const NeoModal = ({ children, ...props }: NeoModalProps) => {\n return <StyledDialog {...props}>{children}</StyledDialog>\n}\n\nNeoModal.displayName = 'NeoModal'\n\n// ============================================================================\n// NeoModalHeader - 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 NeoModalHeaderProps {\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 * NeoModalHeader - Header section with title, optional subtitle, and close button\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30337\n */\nexport const NeoModalHeader = ({\n title,\n subtitle,\n href,\n LinkComponent,\n onClose,\n hideCloseButton = false,\n children,\n}: NeoModalHeaderProps) => {\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\nNeoModalHeader.displayName = 'NeoModalHeader'\n\n// ============================================================================\n// NeoModalContent - 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 NeoModalContentProps {\n /**\n * Content to display in the modal body\n */\n children?: ReactNode\n}\n\n/**\n * NeoModalContent - Main content area of the modal\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30337\n */\nexport const NeoModalContent = ({ children }: NeoModalContentProps) => {\n return <StyledDialogContent dividers={false}>{children}</StyledDialogContent>\n}\n\nNeoModalContent.displayName = 'NeoModalContent'\n\n// ============================================================================\n// NeoModalFooter - 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 NeoModalFooterProps {\n /**\n * Optional leading icon or content (e.g., settings icon)\n */\n leadingContent?: ReactNode\n\n /**\n * Action buttons (typically NeoButton components)\n */\n children?: ReactNode\n}\n\n/**\n * NeoModalFooter - Footer section with optional leading content and action buttons\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30337\n */\nexport const NeoModalFooter = ({ leadingContent, children }: NeoModalFooterProps) => {\n return (\n <StyledDialogActions>\n {leadingContent}\n <FooterActionsGroup>{children}</FooterActionsGroup>\n </StyledDialogActions>\n )\n}\n\nNeoModalFooter.displayName = 'NeoModalFooter'\n","import { borderRadius, colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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 ReactNode, useEffect, useRef, useState } from 'react'\nimport { NeoBreadcrumbLink, NeoBreadcrumbs } from '../Breadcrumbs/Breadcrumbs'\nimport { NeoLoadingSpinner } 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\nexport interface NeoPageContentProps extends BoxProps {\n /**\n * Main heading displayed on the page\n *\n * @figma Title text in header (node-id:5-6407)\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 * { label: 'Settings', href: '/settings' },\n * { label: 'Team', href: '/team' },\n * { label: 'Team Details' },\n * ]}\n * ```\n */\n breadcrumbs?: BreadcrumbItem[]\n\n /**\n * Action button displayed in the top-right corner\n *\n * @figma Button in top-right (node-id:5-6408)\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 * 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.surfaces.white,\n flexShrink: 0,\n}))\n\n/**\n * Page title typography\n */\nconst PageTitle = styled(Typography)(() => ({\n fontSize: typography.fontSize.h3,\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1.4,\n color: colors.grey['900'], // #111827 - matches Figma typography/page-header\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 * NeoPageContent - Page content surface from the Moderne Design System\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=5066-3274\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 * ## Figma Props Mapping\n * - `pageTitle` → Title text in header (node-id:4756-11109)\n * - `subtitle` → Subtitle text (optional)\n * - `action` → Button in top-right corner (node-id:4756-11111)\n * - `children` → Content area (node-id:4756-11104)\n *\n * ## Design Tokens\n * - Background: `semanticColors.surfaces.white` (#FFFFFF)\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 * <NeoPageContent\n * pageTitle=\"Users\"\n * action={<IconButton>...</IconButton>}\n * >\n * <NeoDataGrid ... />\n * </NeoPageContent>\n * ```\n *\n * @example\n * ```tsx\n * // With subtitle\n * <NeoPageContent\n * pageTitle=\"Settings\"\n * subtitle=\"Manage your account preferences\"\n * >\n * <SettingsContent />\n * </NeoPageContent>\n * ```\n *\n * @example\n * ```tsx\n * // With sticky header\n * <NeoPageContent\n * pageTitle=\"Long Content\"\n * sticky\n * >\n * <VeryLongContent />\n * </NeoPageContent>\n * ```\n */\nexport function NeoPageContent({\n pageTitle,\n subtitle,\n breadcrumbs,\n action,\n sticky = false,\n contentMaxWidth = false,\n centerContent = true,\n disableGutters = false,\n isLoading = false,\n showBackToTop = true,\n children,\n sx,\n ...boxProps\n}: NeoPageContentProps) {\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.length > 0 && (\n <NeoBreadcrumbs>\n {breadcrumbs.map((item, index) => (\n <NeoBreadcrumbLink\n key={item.href ?? index}\n href={item.href}\n current={index === breadcrumbs.length - 1}\n >\n {item.label}\n </NeoBreadcrumbLink>\n ))}\n </NeoBreadcrumbs>\n )}\n {/* Title + Action row */}\n <Stack\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"flex-start\"\n sx={{ gap: '1rem' }}\n >\n <Stack sx={{ gap: '0.5rem', flexGrow: 1 }}>\n <PageTitle>{pageTitle}</PageTitle>\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 <NeoLoadingSpinner />\n </Box>\n ) : (\n children\n )\n\n return (\n <>\n <Box\n sx={{\n backgroundColor: semanticColors.surfaces.white,\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: `${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: `${semanticColors.buttons.primary.default}20`,\n color: semanticColors.buttons.primary.default,\n '&:hover': {\n backgroundColor: `${semanticColors.buttons.primary.default}30`,\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\nNeoPageContent.displayName = 'NeoPageContent'\n","import type { GridSlots } from '@mui/x-data-grid-pro'\nimport { NeoDataGrid, type NeoDataGridProps } from '../DataGrid/DataGrid'\nimport { NeoFooter } from '../Footer/Footer'\n\nexport interface NeoPaginatedGridProps extends Omit<NeoDataGridProps, 'slots'> {\n /**\n * Custom slots (merged with Neo defaults)\n */\n slots?: Partial<GridSlots>\n}\n\n/**\n * NeoPaginatedGrid - DataGrid with standard pagination controls\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4260-72484\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 NeoDataGrid\n *\n * @example\n * <NeoPaginatedGrid\n * rows={rows}\n * columns={columns}\n * paginationModel={{ page: 0, pageSize: 10 }}\n * onPaginationModelChange={handlePaginationChange}\n * rowCount={100}\n * />\n */\nexport function NeoPaginatedGrid({\n slots,\n pageSizeOptions,\n slotProps: userSlotProps,\n ...props\n}: NeoPaginatedGridProps) {\n // Merge custom slots with pagination defaults\n const mergedSlots: Partial<GridSlots> = {\n footer: NeoFooter,\n ...slots,\n }\n\n return (\n <NeoDataGrid\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 NeoDataGrid 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\nNeoPaginatedGrid.displayName = 'NeoPaginatedGrid'\n","import { borderRadius, colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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: colors.grey[200],\n\n [`& .${linearProgressClasses.bar}`]: {\n borderRadius: borderRadius.xS,\n backgroundColor: colors.digitalBlue[500],\n },\n\n [`&.${linearProgressClasses.colorPrimary}`]: {\n backgroundColor: colors.grey[200],\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: colors.digitalBlue[500],\n },\n },\n\n // Cancelled variant uses warning color\n '&[data-variant=\"cancelled\"]': {\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: semanticColors.status.warning.medium,\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: colors.grey[800],\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 NeoProgressbarProps 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 * NeoProgressbar - Linear progress indicator based on MUI LinearProgress\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4120-36679\n *\n * Figma Props Mapping:\n * - progress (0%-100% | Cancelled) → value (0-100) + variant (default|cancelled)\n * - label (False|Right|Top|Bottom) → labelPosition (none|right|top|bottom)\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 NeoProgressbar = ({\n value = 0,\n labelPosition = 'none',\n variant = 'default',\n labelText,\n ...props\n}: NeoProgressbarProps) => {\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\nNeoProgressbar.displayName = 'NeoProgressbar'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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.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 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.icons.disabled,\n },\n },\n\n [`& .${inputAdornmentClasses.root}`]: {\n color: semanticColors.icons.placeholder,\n\n '& svg': {\n width: 20,\n height: 20,\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 NeoQuickFilterProps {\n /**\n * Placeholder text for the search input\n * @default \"Search...\"\n *\n * @figma Search placeholder\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 * NeoQuickFilter - 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 * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4257-66953\n *\n * Figma Props Mapping:\n * - Search placeholder → placeholder prop\n * - Search icon → Start adornment with Search icon\n * - Clear button → QuickFilterClear component\n *\n * @example\n * // Basic usage in DataGrid toolbar\n * <DataGrid\n * rows={rows}\n * columns={columns}\n * slots={{\n * toolbar: () => (\n * <NeoToolbar>\n * <NeoQuickFilter placeholder=\"Search users...\" />\n * </NeoToolbar>\n * ),\n * }}\n * />\n */\nexport const NeoQuickFilter = ({\n placeholder = 'Search...',\n onKeyDown,\n autoFocus = false,\n}: NeoQuickFilterProps) => {\n return (\n <QuickFilter>\n <QuickFilterControl\n onKeyDown={onKeyDown}\n render={({ ref, ...props }) => (\n <StyledTextField\n {...props}\n inputRef={ref}\n placeholder={placeholder}\n autoFocus={autoFocus}\n variant=\"standard\"\n slotProps={{\n 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\nNeoQuickFilter.displayName = 'NeoQuickFilter'\n","import { semanticColors, spacing, typography } from '@moderneinc/neo-design'\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 }: { size: 'small' | 'medium' }) => {\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.input}\n strokeWidth=\"1\"\n fill=\"transparent\"\n />\n </svg>\n )\n}\n\nconst CheckedIcon = ({ size }: { size: 'small' | 'medium' }) => {\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 blue background and border */}\n <circle\n cx={dimensions / 2}\n cy={dimensions / 2}\n r={radius - 0.5}\n fill={semanticColors.buttons.primary.default}\n stroke={semanticColors.buttons.primary.default}\n strokeWidth=\"1\"\n />\n {/* Inner white dot */}\n <circle\n cx={dimensions / 2}\n cy={dimensions / 2}\n r={innerRadius}\n fill={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\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\n [`&.${radioClasses.disabled}`]: {\n opacity: 0.5,\n },\n }\n})\n\nexport interface NeoRadioProps extends Omit<RadioProps, 'size'> {\n /**\n * The size of the radio button\n * @default \"medium\"\n *\n * @figma Size\n */\n size?: RadioSize\n\n /**\n * The label text displayed next to the radio button\n *\n * @figma Text (label)\n */\n label?: ReactNode\n\n /**\n * The helper text displayed below the label\n *\n * @figma Supporting Text\n */\n helperText?: ReactNode\n}\n\n/**\n * NeoRadio - Radio button component based on MUI Radio\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-40039\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-40150\n *\n * Figma Props Mapping:\n * - Checked (True|False) → checked prop\n * - Size (sm|md) → size prop (small|medium)\n * - State=Disabled → disabled prop\n * - State=Hover → CSS :hover\n * - State=Focused → CSS :focus-visible\n * - State=Default → default state\n * - Text (label) → label prop\n * - Supporting Text → helperText prop\n *\n * @example\n * // Basic radio button (just the icon)\n * <NeoRadio />\n *\n * @example\n * // With label\n * <NeoRadio label=\"Remember me\" />\n *\n * @example\n * // With label and helper text\n * <NeoRadio label=\"Remember me\" helperText=\"Save my login details for next time.\" />\n *\n * @example\n * // Small size\n * <NeoRadio size=\"small\" label=\"Remember me\" />\n *\n * @example\n * // Controlled\n * <NeoRadio checked={value === 'option1'} onChange={handleChange} value=\"option1\" label=\"Option 1\" />\n *\n * @example\n * // Radio group\n * <RadioGroup value={value} onChange={handleChange}>\n * <NeoRadio value=\"option1\" label=\"Option 1\" helperText=\"First option\" />\n * <NeoRadio value=\"option2\" label=\"Option 2\" helperText=\"Second option\" />\n * </RadioGroup>\n */\nexport const NeoRadio = ({\n size = 'medium',\n label,\n helperText,\n disabled,\n ...props\n}: NeoRadioProps) => {\n // Custom icons based on size\n const uncheckedIcon = <UncheckedIcon size={size} />\n const checkedIcon = <CheckedIcon size={size} />\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\nNeoRadio.displayName = 'NeoRadio'\n","import { borderRadius, colors } from '@moderneinc/neo-design'\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 NeoSkeleton component\n */\nexport interface NeoSkeletonProps 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})<NeoSkeletonProps>(({ theme, colorTheme = 'light', position = 'start' }) => ({\n borderRadius: borderRadius.xS,\n transform: 'none',\n\n // Light theme colors\n ...(colorTheme === 'light' && {\n backgroundColor: alpha(colors.grey[900], 0.08),\n\n '&::after': {\n background: `linear-gradient(90deg, transparent, ${alpha(colors.grey[900], 0.08)}, 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 * NeoSkeleton - Loading skeleton component based on MUI Skeleton\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4286-5809\n *\n * Figma Props Mapping:\n * - Position (Start|End) → position (start|end) - controls wave animation direction\n * - Theme (Light|Dark) → colorTheme (light|dark) - controls background and wave colors\n * - Animation (Wave) → Built-in MUI wave animation (always enabled)\n *\n * Usage:\n * ```tsx\n * <NeoSkeleton width={200} height={32} />\n * <NeoSkeleton colorTheme=\"dark\" position=\"end\" width={200} height={32} />\n * ```\n */\nexport const NeoSkeleton = ({\n colorTheme = 'light',\n position = 'start',\n ...props\n}: NeoSkeletonProps) => {\n return (\n <StyledSkeleton\n animation=\"wave\"\n variant=\"rectangular\"\n colorTheme={colorTheme}\n position={position}\n {...props}\n />\n )\n}\n\nNeoSkeleton.displayName = 'NeoSkeleton'\n","import { borderRadius, colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport Alert, { type AlertProps, alertClasses } from '@mui/material/Alert'\nimport { styled } from '@mui/material/styles'\nimport { CircleAlert, CircleCheck, WifiOff } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\n// Type for custom styled props\ntype StyledAlertProps = {\n severity?: 'success' | 'error' | 'neutral'\n variant?: 'outlined' | 'filled'\n}\n\n/**\n * Styled Alert component with custom severity and variant styling\n * Uses Custom Variants Pattern to add 'neutral' severity\n */\nconst StyledAlert = styled(Alert, {\n shouldForwardProp: prop => prop !== 'severity' && prop !== 'variant',\n})<StyledAlertProps>(({ theme, severity = 'success', variant = 'outlined' }) => {\n // Color mapping for different severities\n const colorMap = {\n success: {\n light: semanticColors.status.success.light,\n medium: semanticColors.status.success.medium,\n },\n error: {\n light: semanticColors.status.error.light,\n medium: semanticColors.status.error.medium,\n },\n neutral: {\n light: semanticColors.status.neutral.light,\n medium: semanticColors.status.neutral.medium,\n },\n }\n\n const severityColors = colorMap[severity]\n\n // Variant-specific styles based on Phase 1.1 analysis\n const variantStyles = (() => {\n if (variant === 'filled') {\n // Dark mode: solid background with white text\n return {\n backgroundColor: severityColors.medium,\n border: 'none',\n color: semanticColors.typography.tooltip,\n padding: theme.spacing(0.75, 3),\n boxShadow: `0px 1px 3px ${semanticColors.surfaces.shadowNeutral}1a`, // 1a = 10% opacity\n\n [`& .${alertClasses.icon}`]: {\n color: semanticColors.typography.tooltip,\n },\n\n [`& .${alertClasses.message}`]: {\n color: semanticColors.typography.tooltip,\n },\n }\n }\n\n // Light mode: light background with border\n return {\n backgroundColor: severityColors.light,\n border: `1px solid ${severityColors.medium}`,\n color: colors.grey[800],\n padding: theme.spacing(0.125, 2),\n\n [`& .${alertClasses.icon}`]: {\n color: severityColors.medium,\n },\n\n [`& .${alertClasses.message}`]: {\n color: colors.grey[800],\n },\n }\n })()\n\n return {\n height: spacing.spacing_8,\n width: '100%',\n borderRadius: borderRadius.xS,\n alignItems: 'center',\n fontFamily: typography.fontFamily.body,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1.5,\n\n ...variantStyles,\n\n // Supporting text styling\n [`& .${alertClasses.message} > *:not(:first-child)`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.regular,\n color:\n variant === 'filled'\n ? semanticColors.typography.tooltip\n : semanticColors.typography.bodySecondary,\n lineHeight: 1.4,\n marginTop: theme.spacing(0.25),\n },\n }\n})\n\n/**\n * Props for the NeoStatusBanner component\n */\nexport interface NeoStatusBannerProps extends Omit<AlertProps, 'severity' | 'variant'> {\n /**\n * The severity level of the status banner\n * @default \"success\"\n * @figma Status\n */\n severity?: 'success' | 'error' | 'neutral'\n\n /**\n * The visual variant style\n * @default \"outlined\"\n * @figma Mode\n */\n variant?: 'outlined' | 'filled'\n\n /**\n * The content to display inside the banner\n */\n children?: ReactNode\n\n /**\n * Custom icon to display (defaults to severity-based icon)\n */\n icon?: ReactNode\n}\n\n/**\n * NeoStatusBanner - Status banner component for displaying system status messages\n *\n * Displays status information with different severity levels (success, error, neutral) and\n * visual modes (outlined for light backgrounds, filled for emphasis).\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4921-3427\n *\n * Figma Props Mapping:\n * - Status (Success|Error|Offline) → severity ('success'|'error'|'neutral')\n * - Mode (Light|Dark) → variant ('outlined'|'filled')\n *\n * Design Tokens Used:\n * - status.success.light, status.success.medium\n * - status.error.light, status.error.medium\n * - status.neutral.light, status.neutral.medium\n * - typography.tooltip, typography.bodySecondary\n * - grey[800]\n * - fontSize.default, fontSize.sm\n * - fontWeight.medium, fontWeight.regular\n * - fontFamily.body\n * - surfaces.shadowNeutral\n */\nexport const NeoStatusBanner = ({\n severity = 'success',\n variant = 'outlined',\n icon,\n children,\n ...props\n}: NeoStatusBannerProps) => {\n // Icon mapping for different severities\n const iconMap = {\n success: <CircleCheck size={24} />,\n error: <CircleAlert size={24} />,\n neutral: <WifiOff size={24} />,\n }\n\n const defaultIcon = iconMap[severity]\n\n // Type assertion needed: severity and variant are custom props filtered by shouldForwardProp\n // biome-ignore lint/suspicious/noExplicitAny: Custom props pattern requires any cast\n const StyledAlertAny = StyledAlert as any\n\n return (\n <StyledAlertAny {...props} severity={severity} variant={variant} icon={icon ?? defaultIcon}>\n {children}\n </StyledAlertAny>\n )\n}\n\nNeoStatusBanner.displayName = 'NeoStatusBanner'\n","import { semanticColors, spacing } from '@moderneinc/neo-design'\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 { NeoTag } from '../Tag/Tag'\n\n/**\n * NeoTabs - Tabs container component based on MUI Tabs\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=3368-26152\n *\n * Figma Props Mapping:\n * - Horizontal tab bar → default layout\n * - Tab selection → value prop + onChange\n * - Active indicator → styled via indicator slot\n */\nexport const NeoTabs = styled(MuiTabs)(() => ({\n minHeight: spacing.spacing_5,\n\n [`& .${tabsClasses.indicator}`]: {\n backgroundColor: semanticColors.border.tabActive,\n height: 2,\n },\n\n [`& .${tabsClasses.flexContainer}`]: {\n gap: 0,\n },\n}))\n\nNeoTabs.displayName = 'NeoTabs'\n\nconst StyledTab = styled(MuiTab)(({ theme }) => ({\n minHeight: spacing.spacing_5,\n padding: `${theme.spacing(1)} ${theme.spacing(2)}`,\n textTransform: 'none',\n fontWeight: 500,\n fontSize: theme.typography.pxToRem(14),\n lineHeight: 1.5,\n color: semanticColors.typography.tab.inactive,\n transition: 'none', // Remove animation\n\n [`&.${tabClasses.selected}`]: {\n color: semanticColors.typography.tab.active,\n fontWeight: 600,\n },\n\n [`&.${buttonBaseClasses.focusVisible}`]: {\n outline: `2px solid ${semanticColors.buttons.primary.focus}`,\n outlineOffset: -2,\n },\n\n [`&.${tabClasses.disabled}`]: {\n color: semanticColors.typography.button.disabled,\n cursor: 'not-allowed',\n pointerEvents: 'auto',\n },\n}))\n\nconst TabLabelContainer = styled('span')(({ theme }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n}))\n\nexport interface NeoTabProps extends Omit<TabProps, 'label'> {\n /**\n * The label for the tab\n *\n * @figma Text layer in tab\n */\n label: ReactNode\n\n /**\n * Optional count to display in a tag next to the label\n * @default undefined\n *\n * @figma Tag with number (999)\n */\n count?: number | string\n\n /**\n * Tab value identifier\n *\n * @figma Used for Current=True/False state\n */\n value: string | number\n}\n\n/**\n * NeoTab - Individual tab button component based on MUI Tab\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=3368-26152\n *\n * Figma Props Mapping:\n * - Current=True/False → Controlled by parent NeoTabs value\n * - State=Default → default styling\n * - State=Hover → CSS :hover\n * - State=Focus → CSS :focus-visible\n * - Tag count → count prop (renders NeoTag)\n * - Text label → label prop\n */\nexport const NeoTab = ({ label, count, ...props }: NeoTabProps) => {\n const tabLabel =\n count !== undefined ? (\n <TabLabelContainer>\n {label}\n <NeoTag label={String(count)} size=\"large\" variant=\"outlined\" color=\"default\" />\n </TabLabelContainer>\n ) : (\n label\n )\n\n return <StyledTab label={tabLabel} {...props} />\n}\n\nNeoTab.displayName = 'NeoTab'\n","import { borderRadius, colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport Alert, { type AlertProps, alertClasses } from '@mui/material/Alert'\nimport Button from '@mui/material/Button'\nimport IconButton from '@mui/material/IconButton'\nimport LinearProgress, { linearProgressClasses } from '@mui/material/LinearProgress'\nimport Stack from '@mui/material/Stack'\nimport { styled } from '@mui/material/styles'\nimport { X } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\ntype StyledAlertProps = Omit<AlertProps, 'variant'> & {\n variant?: NeoToastProps['variant']\n showProgress?: boolean\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 !== 'variant' && prop !== 'showProgress',\n})<StyledAlertProps>(({ theme, variant = 'default' }) => {\n // Base styles\n const baseStyles = {\n padding: spacing.spacing_2,\n borderRadius: borderRadius.s,\n gap: spacing.spacing_4,\n alignItems: 'flex-start',\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n lineHeight: 1.4,\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 // Variant-specific styles\n const variantStyles: Record<string, object> = {\n default: {\n backgroundColor: semanticColors.surfaces.snackbarDarkMode,\n color: colors.grey['800'],\n border: `1px solid ${semanticColors.border.primary}`,\n },\n dark: {\n backgroundColor: semanticColors.surfaces.snackbarLightMode,\n color: semanticColors.surfaces.white,\n border: `1px solid ${semanticColors.surfaces.snackbarLightMode}`,\n },\n brand: {\n backgroundColor: semanticColors.surfaces.snackbarBrand,\n color: semanticColors.surfaces.white,\n border: `1px solid ${semanticColors.surfaces.snackbarBrand}`,\n },\n error: {\n backgroundColor: semanticColors.status.error.light,\n color: semanticColors.status.error.dark,\n border: `1px solid ${semanticColors.status.error.medium}`,\n },\n success: {\n backgroundColor: semanticColors.status.success.light,\n color: semanticColors.status.success.dark,\n border: `1px solid ${semanticColors.status.success.medium}`,\n },\n info: {\n backgroundColor: semanticColors.status.info.light,\n color: semanticColors.status.info.dark,\n border: `1px solid ${semanticColors.status.info.medium}`,\n },\n download: {\n backgroundColor: semanticColors.surfaces.snackbarDarkMode,\n color: colors.grey['800'],\n border: `1px solid ${semanticColors.border.primary}`,\n },\n }\n\n return {\n ...baseStyles,\n ...variantStyles[variant],\n }\n})\n\nconst ToastTitle = styled('p')<{ variant?: NeoToastProps['variant'] }>(\n ({ theme, variant = 'default' }) => {\n const colorMap: Record<string, string> = {\n default: colors.grey['700'],\n dark: semanticColors.surfaces.white,\n brand: semanticColors.surfaces.white,\n error: semanticColors.status.error.dark,\n success: semanticColors.status.success.dark,\n info: semanticColors.status.info.dark,\n download: colors.grey['700'],\n }\n\n return {\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: 600,\n lineHeight: 1.4,\n color: colorMap[variant],\n }\n }\n)\n\nconst ToastMessage = styled('p')<{ variant?: NeoToastProps['variant'] }>(\n ({ theme, variant = 'default' }) => {\n const colorMap: Record<string, string> = {\n default: semanticColors.typography.bodySecondary,\n dark: colors.grey['200'],\n brand: colors.grey['200'],\n error: semanticColors.status.error.dark,\n success: semanticColors.status.success.dark,\n info: semanticColors.status.info.dark,\n download: colors.grey['800'],\n }\n\n return {\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: 400,\n lineHeight: 1.4,\n color: colorMap[variant],\n }\n }\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 !== 'toastVariant' && prop !== 'primary',\n})<{ toastVariant?: NeoToastProps['variant']; primary?: boolean }>(\n ({ toastVariant = 'default', primary }) => {\n const getColor = () => {\n if (primary) {\n if (toastVariant === 'dark' || toastVariant === 'brand') {\n return colors.digitalBlue['200']\n }\n return semanticColors.typography.link.primary\n }\n\n // Non-primary button colors\n if (toastVariant === 'dark' || toastVariant === 'brand') {\n return semanticColors.surfaces.white\n }\n if (toastVariant === 'error') {\n return semanticColors.status.error.dark\n }\n if (toastVariant === 'success') {\n return semanticColors.status.success.dark\n }\n if (toastVariant === 'info') {\n return semanticColors.status.info.dark\n }\n // default and download variants use icon placeholder color\n return semanticColors.icons.placeholder\n }\n\n return {\n padding: 0,\n minWidth: 'auto',\n fontSize: typography.fontSize.sm,\n fontWeight: 500,\n lineHeight: 'normal',\n textTransform: 'none',\n color: getColor(),\n '&:hover': {\n backgroundColor: 'transparent',\n textDecoration: 'underline',\n },\n }\n }\n)\n\nconst ProgressSection = styled(Stack)({\n gap: spacing.spacing_1,\n width: '100%',\n})\n\nconst FileName = styled('p')(({ theme }) => ({\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n fontWeight: 500,\n lineHeight: 1.5,\n color: colors.grey['800'],\n}))\n\nconst ProgressLabel = styled('p')(({ theme }) => ({\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n fontWeight: 500,\n lineHeight: 1.5,\n color: colors.grey['800'],\n}))\n\nconst StyledLinearProgress = styled(LinearProgress)({\n width: '100%',\n height: spacing.spacing_2,\n borderRadius: borderRadius.s,\n backgroundColor: colors.grey['200'],\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: semanticColors.buttons.primary.default,\n borderRadius: `${borderRadius.xS}px 0 0 ${borderRadius.xS}px`,\n },\n})\n\nconst DownloadActions = styled(Stack)({\n gap: `${spacing.spacing_4}px`,\n alignItems: 'center',\n})\n\nconst DownloadIconButton = styled(IconButton)({\n padding: 0,\n width: 16,\n height: 16,\n color: colors.grey['800'],\n '&:hover': {\n backgroundColor: 'transparent',\n },\n})\n\nexport interface NeoToastProps extends Omit<AlertProps, 'variant' | 'severity' | 'color'> {\n /**\n * The visual style variant of the toast\n * @default \"default\"\n */\n variant?: 'default' | 'dark' | 'brand' | 'error' | 'success' | 'info' | 'download'\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 true\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 * Progress value (0-100) for download variant\n */\n progress?: number\n\n /**\n * File name for download variant\n */\n fileName?: string\n\n /**\n * Callback when close button is clicked\n */\n onClose?: () => void\n}\n\n/**\n * NeoToast - Notification/Toast component based on MUI Alert\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-37223\n *\n * Figma Props Mapping:\n * - type (Light mode|Dark mode|Brand color|Error|Success|Info|Download) → variant (default|dark|brand|error|success|info|download)\n * - header → title (string)\n * - supportingText → message (string)\n * - xCloseButton → showClose (boolean)\n * - actions → actions (ReactNode)\n * - Progress bar → progress (number 0-100)\n */\nexport const NeoToast = ({\n variant = 'default',\n title,\n message,\n showClose = true,\n actions,\n progress,\n fileName,\n onClose,\n ...props\n}: NeoToastProps) => {\n const isDownloadVariant = variant === 'download'\n\n return (\n <StyledAlert\n {...props}\n variant={variant}\n showProgress={isDownloadVariant}\n action={\n showClose && !isDownloadVariant ? (\n <IconButton\n size=\"small\"\n onClick={onClose}\n sx={{ color: semanticColors.icons.placeholder }}\n >\n <X size={16} />\n </IconButton>\n ) : undefined\n }\n >\n {isDownloadVariant ? (\n <>\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 && <ToastTitle variant={variant}>{title}</ToastTitle>}\n {showClose && (\n <DownloadActions direction=\"row\">\n <DownloadIconButton size=\"small\">\n {/* Pause icon placeholder */}\n <Stack sx={{ width: 16, height: 16 }} />\n </DownloadIconButton>\n <DownloadIconButton size=\"small\" onClick={onClose}>\n <X size={16} />\n </DownloadIconButton>\n </DownloadActions>\n )}\n </Stack>\n <ProgressSection>\n <Stack\n direction=\"row\"\n sx={{ alignItems: 'flex-end', justifyContent: 'space-between', width: '100%' }}\n >\n {fileName && <FileName>{fileName}</FileName>}\n {progress !== undefined && <ProgressLabel>{progress}%</ProgressLabel>}\n </Stack>\n <StyledLinearProgress variant=\"determinate\" value={progress ?? 0} />\n </ProgressSection>\n </>\n ) : (\n <>\n <Stack sx={{ gap: `${spacing.spacing_1}px`, width: '100%' }}>\n {title && <ToastTitle variant={variant}>{title}</ToastTitle>}\n {message && <ToastMessage variant={variant}>{message}</ToastMessage>}\n </Stack>\n {actions && <ToastActions direction=\"row\">{actions}</ToastActions>}\n </>\n )}\n </StyledAlert>\n )\n}\n\n/**\n * Helper component for creating toast action buttons with proper styling\n */\nexport const NeoToastButton = ({\n primary,\n variant = 'default',\n children,\n ...props\n}: {\n primary?: boolean\n variant?: NeoToastProps['variant']\n children: ReactNode\n} & Omit<React.ComponentProps<typeof Button>, 'variant'>) => {\n return (\n <ToastButton variant=\"text\" toastVariant={variant} primary={primary} {...props}>\n {children}\n </ToastButton>\n )\n}\n\nNeoToast.displayName = 'NeoToast'\nNeoToastButton.displayName = 'NeoToastButton'\n","import { semanticColors, shadows, spacing, typography } from '@moderneinc/neo-design'\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 }>(({ disabled }) => ({\n display: 'inline-flex',\n alignItems: 'flex-start',\n gap: 12,\n cursor: disabled ? 'not-allowed' : 'pointer',\n userSelect: 'none',\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: 500,\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: 400,\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: 36,\n height: 20,\n thumbSize: 16,\n trackPadding: 2,\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: theme.palette.common.white,\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.buttons.primary.focus}`,\n outlineOffset: 2,\n },\n },\n\n // Checked state\n [`&.${switchClasses.checked}`]: {\n transform: `translateX(${thumbTranslate}px)`,\n color: theme.palette.common.white,\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 },\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.neutralSmall.x}px ${shadows.neutralSmall.y}px ${shadows.neutralSmall.blur}px ${shadows.neutralSmall.spread}px ${shadows.neutralSmall.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.border.secondary,\n opacity: 1,\n border: 'none',\n transition: theme.transitions.create(['background-color'], {\n duration: theme.transitions.duration.short,\n }),\n },\n }\n})\n\nexport interface NeoToggleProps extends Omit<SwitchProps, 'size'> {\n /**\n * The size of the toggle\n * @default \"medium\"\n *\n * @figma Size\n */\n size?: ToggleSize\n\n /**\n * The label text displayed next to the toggle\n *\n * @figma Text (label)\n */\n label?: ReactNode\n\n /**\n * The helper text displayed below the label\n *\n * @figma Text (supporting text)\n */\n helperText?: ReactNode\n}\n\n/**\n * NeoToggle - Binary on/off switch component based on MUI Switch\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4045-26221\n *\n * Figma Props Mapping:\n * - Pressed (True|False) → checked prop\n * - Size (sm|md) → size prop (small|medium)\n * - State=Disabled → disabled prop\n * - State=Hover → CSS :hover\n * - State=Focus → CSS :focus-visible\n * - Text (label) → label prop\n * - Text (supporting text) → helperText prop\n *\n * @example\n * // Basic toggle\n * <NeoToggle />\n *\n * @example\n * // With label\n * <NeoToggle label=\"Remember me\" />\n *\n * @example\n * // With label and helper text\n * <NeoToggle label=\"Remember me\" helperText=\"Save my login details for next time.\" />\n *\n * @example\n * // Small size\n * <NeoToggle size=\"small\" label=\"Remember me\" />\n *\n * @example\n * // Controlled\n * <NeoToggle checked={isChecked} onChange={handleChange} label=\"Remember me\" />\n */\nexport const NeoToggle = ({\n size = 'medium',\n label,\n helperText,\n disabled,\n ...props\n}: NeoToggleProps) => {\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}>\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\nNeoToggle.displayName = 'NeoToggle'\n","import { semanticColors, spacing } from '@moderneinc/neo-design'\nimport { styled } from '@mui/material/styles'\nimport { Toolbar, type ToolbarProps } from '@mui/x-data-grid-pro'\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 NeoToolbarProps extends ToolbarProps {\n /**\n * Toolbar content (typically NeoQuickFilter, NeoButton, NeoToggle, etc.)\n */\n children?: ReactNode\n}\n\n/**\n * NeoToolbar - 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 * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4257-66919\n *\n * @example\n * // Basic toolbar with search\n * <NeoToolbar>\n * <Box sx={{ display: 'flex', gap: 2, alignItems: 'center' }}>\n * <NeoQuickFilter placeholder=\"Search...\" />\n * </Box>\n * </NeoToolbar>\n *\n * @example\n * // Full toolbar with left controls and right actions\n * <NeoToolbar>\n * <Box sx={{ display: 'flex', gap: 2, alignItems: 'center' }}>\n * <NeoQuickFilter placeholder=\"Search...\" />\n * <NeoButton variant=\"secondary\" size=\"small\">\n * <SlidersHorizontal size={20} />\n * Filters\n * <NeoTag label=\"4\" variant=\"filled\" color=\"info\" />\n * </NeoButton>\n * <NeoButton variant=\"secondary\" size=\"small\">\n * <Columns3 size={16} />\n * Columns\n * </NeoButton>\n * <NeoToggle size=\"small\" label=\"Toggle option\" checked={true} />\n * </Box>\n * <Box sx={{ display: 'flex', gap: 2, alignItems: 'center', height: 40 }}>\n * <NeoButton variant=\"secondary\" size=\"small\">\n * Actions\n * <ChevronDown size={16} />\n * </NeoButton>\n * </Box>\n * </NeoToolbar>\n */\nexport const NeoToolbar = ({ children, ...props }: NeoToolbarProps) => {\n return <StyledToolbar {...props}>{children}</StyledToolbar>\n}\n\nNeoToolbar.displayName = 'NeoToolbar'\n","import { colors, semanticColors, shadows, typography } from '@moderneinc/neo-design'\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'\n\n/**\n * Variant type for NeoTooltip\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, // #ffffff - white\n },\n dark: {\n backgroundColor: colors.grey[50], // #f9fafb - very light gray\n color: colors.grey[800], // #1f2937 - dark gray\n },\n brand: {\n backgroundColor: colors.digitalBlue[800], // #131e7a - dark blue\n color: semanticColors.typography.tooltip, // #ffffff - white\n },\n}\n\n/**\n * Styled MUI Tooltip with Neo design system tokens\n */\nconst StyledTooltip = styled(Tooltip, {\n shouldForwardProp: prop => prop !== 'variant' && prop !== 'description',\n})<{ variant?: TooltipVariant; description?: string }>(\n ({ theme, 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: theme.typography.pxToRem(typography.fontSize.xs), // 12px\n fontWeight: hasDescription ? typography.fontWeight.medium : typography.fontWeight.medium,\n lineHeight: hasDescription ? 1.5 : 1, // 18px for description, tight for simple\n borderRadius: hasDescription ? theme.spacing(1) : theme.spacing(0.5), // 8px : 4px\n padding: hasDescription\n ? theme.spacing(1.5) // 12px all sides\n : theme.spacing(0, 1), // 0 vertical, 8px horizontal\n ...(hasDescription && {\n maxWidth: 296,\n }),\n ...(!hasDescription && {\n height: 26,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }),\n // Apply shadow\n boxShadow: `${shadows.neutralMedium.x}px ${shadows.neutralMedium.y}px ${shadows.neutralMedium.blur}px ${shadows.neutralMedium.spread}px ${shadows.neutralMedium.shadow}`,\n },\n\n // Style the arrow\n [`& .${tooltipClasses.arrow}`]: {\n color: variantStyles.backgroundColor,\n },\n }\n }\n)\n\n/**\n * Props for the NeoTooltip component\n */\nexport interface NeoTooltipProps extends Omit<TooltipProps, 'title' | 'variant'> {\n /**\n * The visual style variant\n * @default \"light\"\n * @figma Type\n */\n variant?: TooltipVariant\n\n /**\n * The main tooltip text\n * @figma text (literal content, not a variant property)\n */\n title: string\n\n /**\n * Optional supporting description text\n * When provided, shows a larger tooltip with title (semibold) + description (medium)\n * @default undefined\n * @figma Supporting text\n */\n description?: string\n\n // children is inherited from TooltipProps: ReactElement<unknown, any>\n}\n\n/**\n * NeoTooltip - Tooltip component following Neo 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 * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4091-26557&t=Bo58EpFmg6ILJtmv-11\n *\n * Figma Props Mapping:\n * - Type (Light mode|Dark mode|Brand color) → variant ('light'|'dark'|'brand')\n * - Arrow → arrow (boolean) + placement (top/bottom/left/right/etc)\n * - Supporting text (True|False) → description (string|undefined)\n * - text → title (string, literal content)\n *\n * Design Tokens Used:\n * - Light: surfaces.tooltip (#4b5563), typography.tooltip (#ffffff)\n * - Dark: grey[50] (#f9fafb), grey[800] (#1f2937)\n * - Brand: digitalBlue[800] (#131e7a), typography.tooltip (#ffffff)\n * - Shadow: neutralMedium (0px 8px 15px 0px rgba(31,41,55,0.1))\n * - Typography: fontSize.xs (12), fontWeight.medium (500), fontWeight.semiBold (600)\n */\nexport const NeoTooltip = ({\n variant = 'light',\n title,\n description,\n children,\n arrow = false,\n placement,\n ...props\n}: NeoTooltipProps) => {\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 gap={0.25}>\n <Typography fontWeight={typography.fontWeight.semiBold}>{title}</Typography>\n <Typography fontWeight={typography.fontWeight.medium}>{description}</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\nNeoTooltip.displayName = 'NeoTooltip'\n","import { borderRadius, colors, semanticColors } from '@moderneinc/neo-design'\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\nconst StyledToggleButtonGroup = styled(ToggleButtonGroup)(({ theme }) => ({\n backgroundColor: colors.grey[50],\n padding: theme.spacing(0.625, 0.875),\n borderRadius: borderRadius.full,\n gap: 0,\n\n [`& .${toggleButtonGroupClasses.grouped}`]: {\n border: 'none',\n borderRadius: 14,\n margin: 0,\n\n '&:not(:first-of-type)': {\n borderRadius: 14,\n marginLeft: 0,\n },\n\n '&:not(:last-of-type)': {\n borderRadius: 14,\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 NeoTypologyControlProps extends Omit<ToggleButtonGroupProps, 'orientation'> {}\n\n/**\n * NeoTypologyControl - A vertical toggle button group for switching between different typology views\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4264-2376&t=Bo58EpFmg6ILJtmv-11\n *\n * Figma Props Mapping:\n * - No component set properties (static design)\n * - Children (icon buttons) are provided as ReactNode\n *\n * Design Tokens Used:\n * - colors.grey[50] - 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 * - borderRadiusFull - pill shape border radius\n */\nexport const NeoTypologyControl = ({ children, ...props }: NeoTypologyControlProps) => {\n return (\n <StyledToggleButtonGroup orientation=\"vertical\" exclusive {...props}>\n {children}\n </StyledToggleButtonGroup>\n )\n}\n\nNeoTypologyControl.displayName = 'NeoTypologyControl'\n\nexport { StyledToggleButton as NeoTypologyButton }\n","/**\n * @moderneinc/neo-styled-components\n *\n * Styled MUI components using Moderne design tokens\n */\n\nexport const version = '0.0.0-development'\n\n// Components\nexport { NeoActivityHeader } from './ActivityHeader/ActivityHeader'\nexport {\n ActivityScene,\n CIRCLE_RADIUS,\n NeoActivityIndicatorCell,\n} from './ActivityIndicatorCell/ActivityIndicatorCell'\nexport { NeoAvatar } from './Avatar/Avatar'\nexport { NeoBadge } from './Badge/Badge'\nexport { NeoBanner } from './Banner/Banner'\nexport { NeoBreadcrumbLink, NeoBreadcrumbs } from './Breadcrumbs/Breadcrumbs'\nexport { NeoButton } from './Button/Button'\nexport { NeoButtonGroup } from './ButtonGroup/ButtonGroup'\nexport { NeoCheckbox } from './Checkbox/Checkbox'\nexport { NeoCodeSnippet } from './CodeSnippet/CodeSnippet'\nexport { NeoDataGrid } from './DataGrid/DataGrid'\nexport {\n NeoDataGridCellContent,\n NeoMultiBadgesCell,\n NeoStatusBadgeCell,\n NeoUserAvatarCell,\n neoRowHeights,\n} from './DataGridCell/DataGridCell'\nexport { NeoDataGridColumnsButton } from './DataGridColumnsButton/DataGridColumnsButton'\nexport { NeoDataGridColumnsPanel } from './DataGridColumnsPanel/DataGridColumnsPanel'\nexport {\n NeoDataGridFilterPanel,\n NeoDataGridFilterPanelAddIcon,\n NeoDataGridFilterPanelDeleteIcon,\n NeoDataGridFilterPanelRemoveAllIcon,\n NeoDataGridSelect,\n} from './DataGridFilterPanel/DataGridFilterPanel'\nexport { NeoDataGridFiltersButton } from './DataGridFiltersButton/DataGridFiltersButton'\nexport {\n getDataGridHeaderStyles,\n SortedAscendingIcon,\n SortedDescendingIcon,\n UnsortedIcon,\n} from './DataGridHeaderCell/DataGridHeaderCell'\nexport { NeoDataGridHeaderLabel } from './DataGridHeaderLabel/DataGridHeaderLabel'\nexport * from './DatePicker/DatePicker'\nexport { NeoDivider } from './Divider/Divider'\nexport { NeoDot } from './Dot/Dot'\nexport { NeoFooter } from './Footer/Footer'\nexport { NeoIconButton } from './IconButton/IconButton'\nexport { NeoInfiniteScrollGrid } from './InfiniteScrollGrid/InfiniteScrollGrid'\nexport { NeoInputField } from './InputField/InputField'\nexport * from './ListItem/ListItem'\nexport * from './ListItemButton/ListItemButton'\nexport { NeoLoadingSpinner } from './LoadingSpinner/LoadingSpinner'\nexport * from './MarketplaceCard/MarketplaceCard'\nexport { NeoMenu } from './Menu/Menu'\nexport { NeoMenuItem } from './MenuItem/MenuItem'\nexport { NeoModal, NeoModalContent, NeoModalFooter, NeoModalHeader } from './Modal/Modal'\nexport { NeoPageContent } from './PageContent/PageContent'\nexport { NeoPaginatedGrid } from './PaginatedGrid/PaginatedGrid'\nexport { NeoProgressbar } from './Progressbar/Progressbar'\nexport { NeoQuickFilter } from './QuickFilter/QuickFilter'\nexport { NeoRadio } from './Radio/Radio'\nexport { NeoSelect, NeoSelectOption } from './Select/Select'\nexport { NeoSkeleton } from './Skeleton/Skeleton'\nexport * from './StatusBanner/StatusBanner'\nexport { NeoTab, NeoTabs } from './Tabs/Tabs'\nexport { NeoTag } from './Tag/Tag'\nexport { NeoToast, NeoToastButton } from './Toast/Toast'\nexport { NeoToggle } from './Toggle/Toggle'\nexport { NeoToolbar } from './Toolbar/Toolbar'\nexport * from './Tooltip/Tooltip'\nexport * from './TypologyControl/TypologyControl'\n"],"names":["_jsx","StyledChip","_jsxs","ACTIVITY_COLORS","__iconNode","StyledAlert","StyledIconButton","_Fragment","StyledButtonBase","UncheckedIcon","CheckedIcon","LabelContainer","Label","HelperText","IconWrapper","MenuItemContent","StyledDivider","MuiGridFilterPanel","gridClasses","HelpCircle","useGridApiContext","useGridSelector","AlertCircle","StyledListItemButton","MuiListItemButton","StyledLinearProgress","ProgressLabel"],"mappings":"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","x_google_ignoreList":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,43,44,45,46,47,48,49,50,51,52,53,54]}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/Avatar/Avatar.tsx","../src/Badge/Badge.tsx","../src/DataGridCell/DataGridCell.tsx","../src/ActivityHeader/ActivityHeader.tsx","../src/ActivityIndicatorCell/ActivityIndicatorCell.tsx","../../../node_modules/lucide-react/dist/esm/shared/src/utils.js","../../../node_modules/lucide-react/dist/esm/defaultAttributes.js","../../../node_modules/lucide-react/dist/esm/Icon.js","../../../node_modules/lucide-react/dist/esm/createLucideIcon.js","../../../node_modules/lucide-react/dist/esm/icons/arrow-down.js","../../../node_modules/lucide-react/dist/esm/icons/arrow-up.js","../../../node_modules/lucide-react/dist/esm/icons/calendar-days.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-left.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-right.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-up.js","../../../node_modules/lucide-react/dist/esm/icons/chevrons-up-down.js","../../../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../../../node_modules/lucide-react/dist/esm/icons/circle-check.js","../../../node_modules/lucide-react/dist/esm/icons/circle-question-mark.js","../../../node_modules/lucide-react/dist/esm/icons/columns-3.js","../../../node_modules/lucide-react/dist/esm/icons/list-filter.js","../../../node_modules/lucide-react/dist/esm/icons/plus.js","../../../node_modules/lucide-react/dist/esm/icons/search.js","../../../node_modules/lucide-react/dist/esm/icons/trash-2.js","../../../node_modules/lucide-react/dist/esm/icons/wifi-off.js","../../../node_modules/lucide-react/dist/esm/icons/x.js","../src/Banner/Banner.tsx","../src/Breadcrumbs/Breadcrumbs.tsx","../src/Button/Button.tsx","../src/ButtonGroup/ButtonGroup.tsx","../src/Checkbox/Checkbox.tsx","../src/CodeSnippet/CodeSnippet.tsx","../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/Divider/Divider.tsx","../src/Dot/Dot.tsx","../src/LoadingSpinner/LoadingSpinner.tsx","../src/Footer/Footer.tsx","../src/InfiniteScrollGrid/InfiniteScrollGrid.tsx","../src/InputField/InputField.tsx","../src/ListItem/ListItem.tsx","../src/ListItemButton/ListItemButton.tsx","../src/MarketplaceCard/MarketplaceCard.tsx","../src/Menu/Menu.tsx","../src/Modal/Modal.tsx","../src/PageContent/PageContent.tsx","../src/PaginatedGrid/PaginatedGrid.tsx","../src/Progressbar/Progressbar.tsx","../src/QuickFilter/QuickFilter.tsx","../src/Radio/Radio.tsx","../src/Skeleton/Skeleton.tsx","../src/StatusBanner/StatusBanner.tsx","../src/Tabs/Tabs.tsx","../src/Toast/Toast.tsx","../src/Toggle/Toggle.tsx","../src/Toolbar/Toolbar.tsx","../src/Tooltip/Tooltip.tsx","../src/TypologyControl/TypologyControl.tsx","../src/index.js"],"sourcesContent":["import {\n borderRadius,\n colors,\n semanticColors,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/neo-design'\nimport Avatar, { type AvatarProps } from '@mui/material/Avatar'\nimport Box from '@mui/material/Box'\nimport { styled } from '@mui/material/styles'\n\ntype StyledAvatarProps = Omit<AvatarProps, 'variant' | 'size'> & {\n size?: 'small' | 'medium'\n variant?: 'circular' | 'initials'\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: Type cast required to override MUI Avatar variant type without global augmentation\nconst StyledAvatar = styled(Avatar as any, {\n shouldForwardProp: prop => prop !== 'size' && prop !== 'variant',\n})<StyledAvatarProps>(({ theme, size = 'medium', variant = 'circular' }) => ({\n borderRadius: borderRadius.full,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n\n // Size variants\n ...(size === 'small' && {\n width: spacing.spacing_2_1_2,\n height: spacing.spacing_2_1_2,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n }),\n\n ...(size === 'medium' &&\n variant === 'initials' && {\n width: spacing.spacing_5_1_2,\n height: spacing.spacing_5_1_2,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n }),\n\n ...(size === 'medium' &&\n variant === 'circular' && {\n width: 36,\n height: 36,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n }),\n\n // Initials variant styling\n ...(variant === 'initials' && {\n backgroundColor: colors.violet[100],\n color: semanticColors.icons.default,\n border: `1px solid ${semanticColors.icons.default}`,\n }),\n\n // Circular variant (image) styling\n ...(variant === 'circular' && {\n backgroundColor: 'transparent',\n border: `2px solid ${semanticColors.surfaces.white}`,\n }),\n}))\n\nconst AvatarContainer = styled(Box)<{ size?: 'small' | 'medium' }>(({ size = 'medium' }) => ({\n ...(size === 'medium' && {\n width: spacing.spacing_5_1_2,\n height: spacing.spacing_5_1_2,\n backgroundColor: semanticColors.surfaces.white,\n borderRadius: borderRadius.full,\n padding: spacing.spacing_1_2,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n boxShadow: `${shadows.neutralSmall.x}px ${shadows.neutralSmall.y}px ${shadows.neutralSmall.blur}px ${shadows.neutralSmall.spread}px ${shadows.neutralSmall.shadow}`,\n }),\n}))\n\nexport interface NeoAvatarProps extends Omit<AvatarProps, 'variant'> {\n /**\n * The size of the avatar\n * @default \"medium\"\n */\n size?: 'small' | 'medium'\n /**\n * The variant of the avatar\n * - \"circular\": Image avatar with white surface container (medium only)\n * - \"initials\": Text/initials avatar with violet background (no container)\n * @default \"circular\"\n */\n variant?: 'circular' | 'initials'\n}\n\n/**\n * NeoAvatar - User avatar component based on MUI Avatar\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4214-58134\n *\n * Figma Props Mapping:\n * - Figma Type \"Initials\" → variant=\"initials\", size=\"small\" (20px)\n * - Figma Type \"Small\" → variant=\"circular\", size=\"small\" (20px with image)\n * - Figma Type \"Medium\" → variant=\"circular\", size=\"medium\" (44px white container with image)\n * - State: Hover (tooltip) → Wrap component with MUI Tooltip\n *\n * Usage:\n * ```tsx\n * // Medium image avatar (with white container)\n * <NeoAvatar variant=\"circular\" size=\"medium\" src=\"/avatar.jpg\" alt=\"User\" />\n *\n * // Small image avatar (no container)\n * <NeoAvatar variant=\"circular\" size=\"small\" src=\"/avatar.jpg\" alt=\"User\" />\n *\n * // Small initials avatar\n * <NeoAvatar variant=\"initials\" size=\"small\">A</NeoAvatar>\n *\n * // Medium initials avatar\n * <NeoAvatar variant=\"initials\" size=\"medium\">AB</NeoAvatar>\n *\n * // With tooltip (user wraps)\n * <Tooltip title=\"This is a tooltip\" arrow placement=\"top\">\n * <NeoAvatar variant=\"initials\">A</NeoAvatar>\n * </Tooltip>\n * ```\n */\nexport const NeoAvatar = ({ size = 'medium', variant = 'circular', ...props }: NeoAvatarProps) => {\n // shouldForwardProp filters out size and variant from being passed to the DOM\n const avatar = <StyledAvatar size={size} variant={variant} {...props} />\n\n // Medium size with circular variant (image) gets wrapped in white container\n if (size === 'medium' && variant === 'circular') {\n return <AvatarContainer size={size}>{avatar}</AvatarContainer>\n }\n\n return avatar\n}\n\nNeoAvatar.displayName = 'NeoAvatar'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport Chip, { type ChipProps, chipClasses } from '@mui/material/Chip'\nimport { styled } from '@mui/material/styles'\n\nconst StyledChip = styled(Chip)(({ theme }) => ({\n height: 24,\n padding: `${spacing.spacing_1_4}px ${spacing.spacing_1}px`,\n borderRadius: borderRadius.full,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n lineHeight: 1,\n gap: spacing.spacing_1_2,\n overflow: 'visible',\n\n [`& .${chipClasses.label}`]: {\n padding: 0,\n overflow: 'visible',\n },\n\n [`& .${chipClasses.icon}`]: {\n margin: 0,\n width: 12,\n height: 12,\n },\n\n [`& .${chipClasses.deleteIcon}`]: {\n margin: 0,\n width: 12,\n height: 12,\n },\n\n // Default (Neutral) state\n [`&.${chipClasses.colorDefault}`]: {\n backgroundColor: semanticColors.status.neutral.light,\n color: semanticColors.status.neutral.dark,\n border: `1px solid ${semanticColors.status.neutral.medium}80`,\n\n [`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {\n color: semanticColors.status.neutral.dark,\n },\n },\n\n // Error state\n [`&.${chipClasses.colorError}`]: {\n backgroundColor: semanticColors.status.error.light,\n color: semanticColors.status.error.dark,\n border: `1px solid ${semanticColors.status.error.medium}80`,\n\n [`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {\n color: semanticColors.status.error.dark,\n },\n },\n\n // Warning state\n [`&.${chipClasses.colorWarning}`]: {\n backgroundColor: semanticColors.status.warning.light,\n color: semanticColors.status.warning.dark,\n border: `1px solid ${semanticColors.status.warning.medium}80`,\n\n [`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {\n color: semanticColors.status.warning.dark,\n },\n },\n\n // Success state\n [`&.${chipClasses.colorSuccess}`]: {\n backgroundColor: semanticColors.status.success.light,\n color: semanticColors.status.success.dark,\n border: `1px solid ${semanticColors.status.success.medium}80`,\n\n [`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {\n color: semanticColors.status.success.dark,\n },\n },\n\n // Info state\n [`&.${chipClasses.colorInfo}`]: {\n backgroundColor: semanticColors.status.info.light,\n color: semanticColors.status.info.dark,\n border: `1px solid ${semanticColors.status.info.medium}80`,\n\n [`& .${chipClasses.icon}, & .${chipClasses.deleteIcon}`]: {\n color: semanticColors.status.info.dark,\n },\n },\n}))\n\nexport interface NeoBadgeProps extends Omit<ChipProps, 'variant' | 'size'> {\n /**\n * The color/state of the badge\n * @default \"default\"\n */\n color?: 'default' | 'error' | 'warning' | 'success' | 'info'\n}\n\n/**\n * NeoBadge - Status badge component based on MUI Chip\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system-w--correct-set-of-tokens?node-id=4091-17230\n *\n * Figma Props Mapping:\n * - state (Neutral|Error|Warning|Success|Info) → color (default|error|warning|success|info)\n * - iconLeading → icon prop (pass React element)\n * - iconTrailing → deleteIcon prop (pass React element)\n * - Label → label prop\n */\nexport const NeoBadge = (props: NeoBadgeProps) => {\n return <StyledChip {...props} />\n}\n\nNeoBadge.displayName = 'NeoBadge'\n","import { spacing } from '@moderneinc/neo-design'\nimport { styled } from '@mui/material/styles'\nimport type { GridDensity } from '@mui/x-data-grid'\nimport type { HTMLAttributes, ReactNode } from 'react'\nimport { NeoAvatar } from '../Avatar/Avatar'\nimport { NeoBadge } from '../Badge/Badge'\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 NeoDataGridCellContentProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode\n}\n\n/**\n * NeoDataGridCellContent - Layout helper for cells that need flex layout with gap spacing\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4212-41631\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 * <NeoDataGridCellContent>\n * <NeoBadge label=\"Active\" color=\"success\" />\n * <NeoBadge label=\"New\" color=\"info\" />\n * </NeoDataGridCellContent>\n * )\n *\n * @example\n * // Avatar with text\n * renderCell: (params) => (\n * <NeoDataGridCellContent>\n * <NeoAvatar src={params.row.avatarUrl} />\n * <span>{params.row.name}</span>\n * </NeoDataGridCellContent>\n * )\n *\n * @example\n * // Action buttons\n * renderCell: () => (\n * <NeoDataGridCellContent>\n * <NeoIconButton size=\"small\"><Edit2 /></NeoIconButton>\n * <NeoIconButton size=\"small\"><Delete /></NeoIconButton>\n * </NeoDataGridCellContent>\n * )\n */\nexport const NeoDataGridCellContent = ({ children, ...props }: NeoDataGridCellContentProps) => {\n return <CellContentContainer {...props}>{children}</CellContentContainer>\n}\n\nNeoDataGridCellContent.displayName = 'NeoDataGridCellContent'\n\n/**\n * Utility function to get DataGrid sx styles for consistent cell appearance\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4212-41631\n *\n * Apply this to DataGrid's `sx` prop to ensure cells are properly aligned and styled.\n *\n * @param size - Row size variant (affects row height)\n * @returns SxProps for DataGrid\n *\n * @example\n * <DataGrid\n * rows={rows}\n * columns={columns}\n * />\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 neoRowHeights: 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 NeoStatusBadgeCellProps {\n status: string\n colorMap?: Record<string, 'default' | 'error' | 'info' | 'success' | 'warning'>\n}\n\nexport const NeoStatusBadgeCell = ({ status, colorMap }: NeoStatusBadgeCellProps) => {\n const color = colorMap?.[status] || 'default'\n\n return (\n <NeoDataGridCellContent>\n <NeoBadge label={status} color={color} />\n </NeoDataGridCellContent>\n )\n}\n\nNeoStatusBadgeCell.displayName = 'NeoStatusBadgeCell'\n\n/**\n * NeoUserAvatarCell - Ready-to-use cell component for user avatar + name\n *\n * @example\n * renderCell: (params) => (\n * <NeoUserAvatarCell\n * name={params.row.name}\n * avatarUrl={params.row.avatarUrl}\n * />\n * )\n */\nexport interface NeoUserAvatarCellProps {\n name: string\n avatarUrl?: string\n size?: 'small' | 'medium'\n}\n\nexport const NeoUserAvatarCell = ({ name, avatarUrl, size = 'small' }: NeoUserAvatarCellProps) => {\n return (\n <NeoDataGridCellContent>\n <NeoAvatar size={size} alt={name} src={avatarUrl} />\n <span style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {name}\n </span>\n </NeoDataGridCellContent>\n )\n}\n\nNeoUserAvatarCell.displayName = 'NeoUserAvatarCell'\n\n/**\n * Container for multiple badges with tighter spacing than default NeoDataGridCellContent\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 * NeoMultiBadgesCell - Ready-to-use cell component for multiple badges\n *\n * Uses tighter spacing (8px) between badges compared to standard NeoDataGridCellContent (16px).\n *\n * @example\n * renderCell: (params) => (\n * <NeoMultiBadgesCell\n * badges={[\n * { label: 'Active', color: 'success' },\n * { label: 'New', color: 'info' }\n * ]}\n * />\n * )\n */\nexport interface NeoMultiBadgesCellProps {\n badges: Array<{\n label: string\n color?: 'default' | 'error' | 'info' | 'success' | 'warning'\n }>\n}\n\nexport const NeoMultiBadgesCell = ({ badges }: NeoMultiBadgesCellProps) => {\n return (\n <MultiBadgesContainer>\n {badges.map(badge => (\n <NeoBadge key={badge.label} label={badge.label} color={badge.color || 'default'} />\n ))}\n </MultiBadgesContainer>\n )\n}\n\nNeoMultiBadgesCell.displayName = 'NeoMultiBadgesCell'\n","import { semanticColors, spacing } from '@moderneinc/neo-design'\nimport Box from '@mui/material/Box'\nimport { styled } from '@mui/material/styles'\nimport type { GridDensity } from '@mui/x-data-grid'\nimport { neoRowHeights } 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 NeoActivityHeader\n */\nexport type ActivityColor = 'commitJob' | 'recipeRun' | 'visualization'\n\n/**\n * Props for NeoActivityHeader component\n */\nexport interface NeoActivityHeaderProps {\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 Neo design 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: `${neoRowHeights[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 * NeoActivityHeader - Header cell showing activity type legend for DataGrid\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4261-3228\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 * **Figma Props Mapping:**\n * - `Size` (Figma) → `size` (React): Height variant matching DataGrid sizes\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: () => <NeoActivityHeader size=\"condensed\" color=\"commitJob\" />,\n * renderCell: (params) => (\n * <NeoActivityIndicatorCell\n * event={params.row.eventType}\n * scene={params.row.scene}\n * />\n * )\n * }\n */\nexport const NeoActivityHeader = ({\n size = 'compact',\n color = 'commitJob',\n}: NeoActivityHeaderProps) => {\n return (\n <HeaderContainer size={size}>\n <ActivityDot color={ACTIVITY_COLORS[color]} />\n </HeaderContainer>\n )\n}\n\nNeoActivityHeader.displayName = 'NeoActivityHeader'\n","import { semanticColors } from '@moderneinc/neo-design'\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 Neo design 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 NeoActivityIndicatorCell component\n */\nexport interface NeoActivityIndicatorCellProps {\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 * NeoActivityIndicatorCell - Timeline activity indicator for DataGrid cells\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4227-58669\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 * <NeoActivityIndicatorCell\n * event=\"commit-job\"\n * scene={ActivityScene.CIRCLE_WITH_TOP_AND_BOTTOM_PATH}\n * />\n * )\n * }\n */\nexport const NeoActivityIndicatorCell = ({\n event = 'commit-job',\n secondaryEvent,\n scene = ActivityScene.CIRCLE,\n showDot = true,\n}: NeoActivityIndicatorCellProps) => {\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\nNeoActivityIndicatorCell.displayName = 'NeoActivityIndicatorCell'\n","/**\n * @license lucide-react v0.562.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();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.562.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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", 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\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.562.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, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 2v4\", key: \"1cmpym\" }],\n [\"path\", { d: \"M16 2v4\", key: \"4m81vk\" }],\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"4\", rx: \"2\", key: \"1hopcy\" }],\n [\"path\", { d: \"M3 10h18\", key: \"8toen8\" }],\n [\"path\", { d: \"M8 14h.01\", key: \"6423bh\" }],\n [\"path\", { d: \"M12 14h.01\", key: \"1etili\" }],\n [\"path\", { d: \"M16 14h.01\", key: \"1gbofw\" }],\n [\"path\", { d: \"M8 18h.01\", key: \"lrp35t\" }],\n [\"path\", { d: \"M12 18h.01\", key: \"mhygvu\" }],\n [\"path\", { d: \"M16 18h.01\", key: \"kzsmim\" }]\n];\nconst CalendarDays = createLucideIcon(\"calendar-days\", __iconNode);\n\nexport { __iconNode, CalendarDays as default };\n//# sourceMappingURL=calendar-days.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n];\nconst CircleCheck = createLucideIcon(\"circle-check\", __iconNode);\n\nexport { __iconNode, CircleCheck as default };\n//# sourceMappingURL=circle-check.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","/**\n * @license lucide-react v0.562.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.js';\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.js.map\n","import { colors, semanticColors, shadows, spacing, typography } from '@moderneinc/neo-design'\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 } from 'react'\n\ntype StyledAlertProps = Omit<AlertProps, 'variant'> & {\n variant?: 'dark' | 'light' | 'success' | 'error' | 'warning'\n messagePosition?: 'left' | 'center'\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 !== 'messagePosition' && prop !== 'variant',\n})<StyledAlertProps>(({ variant = 'light', messagePosition = 'left' }) => {\n // Variant-specific styles\n const variantStyles: Record<string, object> = {\n dark: {\n backgroundColor: colors.digitalBlue['400'],\n color: semanticColors.surfaces.white,\n },\n light: {\n backgroundColor: semanticColors.status.info.light,\n color: colors.grey['800'],\n },\n success: {\n backgroundColor: semanticColors.status.success.light,\n color: colors.grey['800'],\n },\n error: {\n backgroundColor: semanticColors.status.error.light,\n color: colors.grey['800'],\n },\n warning: {\n backgroundColor: semanticColors.status.warning.light,\n color: colors.grey['800'],\n },\n }\n\n return {\n width: '100%',\n minHeight: 52,\n paddingTop: spacing.spacing_3_4,\n paddingBottom: spacing.spacing_3_4,\n paddingLeft: spacing.spacing_3,\n paddingRight: spacing.spacing_3,\n gap: spacing.spacing_2,\n alignItems: 'center',\n justifyContent: messagePosition === 'center' ? 'center' : 'flex-start',\n ...(messagePosition === 'center' && { position: 'relative' }),\n boxShadow: `${shadows.neutralSmall.x}px ${shadows.neutralSmall.y}px ${shadows.neutralSmall.blur}px ${shadows.neutralSmall.spread}px ${shadows.neutralSmall.shadow}`,\n fontSize: typography.fontSize.default,\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n ...variantStyles[variant],\n\n [`& .${alertClasses.icon}`]: {\n padding: 0,\n opacity: 1,\n fontSize: typography.fontSize.h2,\n color: 'inherit',\n },\n\n [`& .${alertClasses.message}`]: {\n padding: 0,\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_2,\n ...(messagePosition === 'left' && { flex: 1 }),\n },\n\n [`& .${alertClasses.action}`]: {\n padding: 0,\n ...(messagePosition === 'center' && {\n position: 'absolute',\n right: spacing.spacing_3,\n }),\n },\n }\n})\n\nconst LinkText = styled('span')<{ variant?: 'dark' | 'light' | 'success' | 'error' | 'warning' }>(\n ({ variant = 'light' }) => {\n const getLinkColor = () => {\n if (variant === 'dark') {\n return semanticColors.typography.link.default // #f9fafb (light gray/white)\n }\n if (variant === 'light') {\n return semanticColors.typography.link.primary // #2f42ff (blue)\n }\n // For success, error, warning - use dark body color #1f2937\n return colors.grey['800']\n }\n\n return {\n fontWeight: 600,\n color: getLinkColor(),\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline',\n },\n }\n }\n)\n\nconst StyledIconButton = styled(IconButton)<{ closeIconColor: string }>(({ closeIconColor }) => ({\n padding: 0,\n color: closeIconColor,\n '&:hover': {\n backgroundColor: 'transparent',\n },\n}))\n\nexport interface NeoBannerProps extends Omit<AlertProps, 'variant' | 'severity' | 'color'> {\n /**\n * The visual style variant of the banner\n * @default \"light\"\n *\n * @figmaPropMapping color (Dark|Light|Success|Error|Warning) → variant\n */\n variant?: 'dark' | 'light' | 'success' | 'error' | 'warning'\n\n /**\n * The message text to display\n *\n * @figmaPropMapping {Message} → message\n */\n message: string\n\n /**\n * Horizontal alignment of the message content\n * @default \"left\"\n *\n * @figmaPropMapping messagePosition (Left|Center) → messagePosition\n */\n messagePosition?: 'left' | 'center'\n\n /**\n * Optional link text to display after the message\n *\n * @figmaPropMapping link (boolean) → linkText (string)\n */\n linkText?: string\n\n /**\n * Whether to show the close button\n * @default true\n *\n * @figmaPropMapping closeIcon → showClose\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\n/**\n * NeoBanner - Inline banner/alert component based on MUI Alert\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4170-2158\n *\n * Figma Props Mapping:\n * - color (Dark|Light|Success|Error|Warning) → variant (dark|light|success|error|warning)\n * - messagePosition (Left|Center) → messagePosition (\"left\"|\"center\")\n * - closeIcon (boolean) → showClose (boolean)\n * - link (boolean) → linkText (string)\n * - {Message} → message (string)\n */\nexport const NeoBanner = ({\n variant = 'light',\n message,\n messagePosition = 'left',\n linkText,\n showClose = true,\n icon,\n onClose,\n onLinkClick,\n ...props\n}: NeoBannerProps) => {\n const getCloseIconColor = () => {\n if (variant === 'dark') {\n return semanticColors.surfaces.white\n }\n if (variant === 'success') {\n return semanticColors.status.success.medium\n }\n if (variant === 'error') {\n return semanticColors.status.error.medium\n }\n if (variant === 'warning') {\n return semanticColors.status.warning.medium\n }\n return colors.grey['800']\n }\n\n return (\n <StyledAlert\n {...props}\n variant={variant}\n messagePosition={messagePosition}\n icon={messagePosition === 'left' ? icon || false : false}\n action={\n showClose ? (\n <StyledIconButton size=\"small\" onClick={onClose} closeIconColor={getCloseIconColor()}>\n <X size={24} />\n </StyledIconButton>\n ) : undefined\n }\n >\n {messagePosition === 'center' ? (\n <>\n {icon}\n <span>{message}</span>\n {linkText && (\n <LinkText variant={variant} onClick={onLinkClick}>\n {linkText}\n </LinkText>\n )}\n </>\n ) : (\n <>\n <span>{message}</span>\n {linkText && (\n <LinkText variant={variant} onClick={onLinkClick}>\n {linkText}\n </LinkText>\n )}\n </>\n )}\n </StyledAlert>\n )\n}\n\nNeoBanner.displayName = 'NeoBanner'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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 { ReactNode } from 'react'\n\n/**\n * NeoBreadcrumbs - Navigation breadcrumb component\n *\n * Figma Mapping:\n * - Base component uses MuiBreadcrumbs with custom styled Links\n * - Uses chevron separator (ChevronRight from lucide-react)\n * - Typography: 14px Medium (500 weight)\n * - Colors:\n * - Non-current: semanticColors.typography.bodySecondary (#6b7280)\n * - Current: semanticColors.buttons.primary.default (#2f42ff)\n * - Hover: semanticColors.icons.hover (#1f2937) or buttons.tertiary.hover (#1e2ec2)\n * - Focus: 2px outline with buttons.primary.focus\n *\n * @see https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4563-122872\n */\n\nexport interface NeoBreadcrumbsProps {\n /** Breadcrumb items as Link elements */\n children: ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\nexport interface NeoBreadcrumbLinkProps 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}\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.buttons.primary.default : semanticColors.typography.bodySecondary,\n cursor: current ? 'default' : 'pointer',\n borderRadius: borderRadius.xS,\n transition: 'color 0.2s ease-in-out',\n\n '&:hover': {\n color: current ? semanticColors.buttons.tertiary.hover : semanticColors.icons.hover,\n },\n\n '&:focus-visible': {\n outline: `2px solid ${semanticColors.buttons.primary.focus}`,\n outlineOffset: 2,\n },\n}))\n\n/**\n * NeoBreadcrumbLink - Individual breadcrumb link\n *\n * Use this component as children of NeoBreadcrumbs to create breadcrumb items.\n * Set `current` prop on the last item to indicate the current page.\n *\n * @example\n * ```tsx\n * <NeoBreadcrumbs>\n * <NeoBreadcrumbLink href=\"/settings\">Settings</NeoBreadcrumbLink>\n * <NeoBreadcrumbLink href=\"/team\">Team</NeoBreadcrumbLink>\n * <NeoBreadcrumbLink current>Team Details</NeoBreadcrumbLink>\n * </NeoBreadcrumbs>\n * ```\n */\nexport function NeoBreadcrumbLink({ current = false, children, ...props }: NeoBreadcrumbLinkProps) {\n return (\n <StyledBreadcrumbLink\n current={current}\n aria-current={current ? 'page' : undefined}\n underline=\"none\"\n {...props}\n >\n {children}\n </StyledBreadcrumbLink>\n )\n}\n\n/**\n * NeoBreadcrumbs - Navigation breadcrumb component\n *\n * Provides hierarchical navigation with styled links and chevron separators.\n * Use NeoBreadcrumbLink components as children to create breadcrumb items.\n *\n * @example\n * ```tsx\n * <NeoBreadcrumbs>\n * <NeoBreadcrumbLink href=\"/settings\">Settings</NeoBreadcrumbLink>\n * <NeoBreadcrumbLink href=\"/team\">Team</NeoBreadcrumbLink>\n * <NeoBreadcrumbLink current>Team Details</NeoBreadcrumbLink>\n * </NeoBreadcrumbs>\n * ```\n */\nexport function NeoBreadcrumbs({ children, className }: NeoBreadcrumbsProps) {\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 } from '@moderneinc/neo-design'\nimport ButtonBase, { type ButtonBaseProps, buttonBaseClasses } from '@mui/material/ButtonBase'\nimport CircularProgress from '@mui/material/CircularProgress'\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 primary: true\n secondary: true\n destructive: true\n link: true\n linkColor: true\n }\n}\n\ntype ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'link' | 'linkColor'\ntype ButtonSize = 'small' | 'medium'\n\nconst StyledButtonBase = styled(ButtonBase, {\n shouldForwardProp: prop => prop !== 'variant' && prop !== 'size' && prop !== 'loading',\n})<{\n variant?: ButtonVariant\n size?: ButtonSize\n loading?: boolean\n}>(({ theme, variant = 'primary', size = 'medium', loading = false }) => {\n // Size configurations using theme.spacing()\n const sizeConfig = {\n small: {\n height: 32,\n padding: `0 ${theme.spacing(2)}`,\n fontSize: theme.typography.pxToRem(14),\n },\n medium: {\n height: spacing.spacing_5,\n padding: `0 ${theme.spacing(3)}`,\n fontSize: theme.typography.pxToRem(16),\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: 500,\n lineHeight: 1.5,\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: theme.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.buttons.primary.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: theme.palette.common.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.buttons.secondary.disabledBorder,\n color: semanticColors.typography.button.disabled,\n },\n }),\n },\n\n destructive: {\n backgroundColor: semanticColors.buttons.destructive,\n color: theme.palette.common.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 link: {\n backgroundColor: 'transparent',\n color: semanticColors.buttons.tertiary.default,\n border: 'none',\n padding: `0 ${theme.spacing(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 linkColor: {\n backgroundColor: 'transparent',\n color: semanticColors.buttons.primary.default,\n border: 'none',\n padding: `0 ${theme.spacing(1)}`,\n\n '&:hover': {\n backgroundColor: 'transparent',\n color: semanticColors.buttons.primary.hover,\n },\n\n '&:active': {\n color: semanticColors.buttons.primary.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)<{ $variant: ButtonVariant }>(\n ({ theme, $variant }) => {\n // Use appropriate spinner color for each variant to ensure visibility\n const spinnerColors: Record<ButtonVariant, string> = {\n primary: theme.palette.common.white,\n secondary: semanticColors.buttons.primary.default,\n destructive: theme.palette.common.white,\n link: semanticColors.buttons.primary.default,\n linkColor: semanticColors.buttons.primary.default,\n }\n\n return {\n color: spinnerColors[$variant],\n }\n }\n)\n\nexport interface NeoButtonProps extends Omit<ButtonBaseProps, 'children'> {\n /**\n * The visual variant of the button\n * @default \"primary\"\n *\n * @figma Hierarchy\n */\n variant?: ButtonVariant\n\n /**\n * The size of the button\n * @default \"medium\"\n *\n * @figma Size\n */\n size?: ButtonSize\n\n /**\n * Show loading spinner instead of children\n * @default false\n *\n * @figma State=Loading\n */\n loading?: boolean\n\n /**\n * Button content\n */\n children?: ReactNode\n}\n\n/**\n * NeoButton - Text button component based on MUI ButtonBase\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4086-7590\n *\n * Figma Props Mapping:\n * - Hierarchy (Primary|Secondary|Destructive|Link|Link Color) → variant prop\n * - Size (Small|Medium) → size prop\n * - State=Disabled → disabled prop\n * - State=Loading → loading prop\n * - State=Hover → CSS :hover\n * - State=Pressed → CSS :active\n * - State=Focused → CSS :focus-visible\n */\nexport const NeoButton = ({\n variant = 'primary',\n size = 'medium',\n loading = false,\n children,\n disabled,\n ...props\n}: NeoButtonProps) => {\n return (\n <StyledButtonBase\n variant={variant}\n size={size}\n loading={loading}\n disabled={disabled || loading}\n {...props}\n >\n {loading ? <LoadingSpinner $variant={variant} size={size === 'small' ? 16 : 20} /> : children}\n </StyledButtonBase>\n )\n}\n\nNeoButton.displayName = 'NeoButton'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport { buttonBaseClasses } from '@mui/material/ButtonBase'\nimport MuiButtonGroup, {\n buttonGroupClasses,\n type ButtonGroupProps as MuiButtonGroupProps,\n} from '@mui/material/ButtonGroup'\nimport { styled } from '@mui/material/styles'\n\ntype ButtonGroupSize = 'small' | 'medium'\n\n/**\n * Styled ButtonGroup that implements Neo design system styling\n *\n * The ButtonGroup uses MUI's built-in functionality for:\n * - Button grouping and spacing\n * - Orientation handling\n * - Disabled state management\n *\n * Custom styling focuses on:\n * - Border radius (pill shape with borderRadius.full)\n * - Size variants (small=32px, medium=40px)\n * - Border colors using semantic tokens\n * - Active/inactive button states (handled by individual buttons)\n */\nconst StyledButtonGroup = styled(MuiButtonGroup)<{\n size?: ButtonGroupSize\n}>(({ theme, size = 'medium' }) => {\n const sizeStyles = {\n small: {\n height: 32,\n },\n medium: {\n height: spacing.spacing_5,\n },\n }\n\n return {\n // Apply pill-shaped border radius\n borderRadius: borderRadius.full,\n border: `1px solid ${semanticColors.border.primary}`,\n\n // Override MUI's default button group styles\n [`& .${buttonGroupClasses.grouped}`]: {\n minWidth: 'auto',\n height: sizeStyles[size].height,\n padding: `${theme.spacing(1)} ${theme.spacing(2)}`,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.semiBold,\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 // Active state (when button is selected/pressed)\n '&:active, &.active': {\n backgroundColor: semanticColors.surfaces.white,\n color: semanticColors.buttons.tertiary.default,\n fontWeight: typography.fontWeight.semiBold,\n },\n\n // Hover state\n '&:hover': {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n borderRight: `1px solid ${semanticColors.border.primary}`,\n },\n\n // Focus visible for keyboard navigation\n [`&.${buttonBaseClasses.focusVisible}`]: {\n outline: `2px solid ${semanticColors.buttons.primary.focus}`,\n outlineOffset: -2,\n zIndex: 1,\n },\n\n // First button: rounded left edge\n [`&.${buttonGroupClasses.firstButton}`]: {\n borderTopLeftRadius: borderRadius.full,\n borderBottomLeftRadius: borderRadius.full,\n },\n\n // Last button: rounded right edge, no right border\n [`&.${buttonGroupClasses.lastButton}`]: {\n borderTopRightRadius: borderRadius.full,\n borderBottomRightRadius: borderRadius.full,\n borderRight: 'none',\n },\n\n // Middle buttons: no border radius\n [`&.${buttonGroupClasses.middleButton}`]: {\n borderRadius: 0,\n },\n\n // Disabled state\n [`&.${buttonBaseClasses.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 NeoButtonGroupProps extends Omit<MuiButtonGroupProps, 'size' | 'variant'> {\n /**\n * The size of the button group\n * @default \"medium\"\n *\n * @figma Size=Sm → small, Size=Md → medium\n */\n size?: ButtonGroupSize\n\n /**\n * The visual variant of the buttons\n * ButtonGroup uses a fixed outlined style from the design\n */\n variant?: 'outlined'\n}\n\n/**\n * NeoButtonGroup - Button group component based on MUI ButtonGroup\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4106-11129\n *\n * Figma Props Mapping:\n * - Size (Sm|Md) → size prop (small|medium)\n * - Icon=False → Icon support not included in this implementation\n * - Active button state → Controlled externally via button props or classes\n *\n * Usage:\n * ```tsx\n * <NeoButtonGroup size=\"medium\">\n * <NeoButton>Button 1</NeoButton>\n * <NeoButton>Button 2</NeoButton>\n * <NeoButton>Button 3</NeoButton>\n * </NeoButtonGroup>\n * ```\n *\n * Note: To show active state, add 'active' class to the selected button\n */\nexport const NeoButtonGroup = ({\n size = 'medium',\n variant = 'outlined',\n ...props\n}: NeoButtonGroupProps) => {\n return <StyledButtonGroup size={size} variant={variant} {...props} />\n}\n\nNeoButtonGroup.displayName = 'NeoButtonGroup'\n","import { borderRadius, semanticColors, typography } from '@moderneinc/neo-design'\nimport Checkbox, { type CheckboxProps, checkboxClasses } from '@mui/material/Checkbox'\nimport SvgIcon from '@mui/material/SvgIcon'\nimport { styled } from '@mui/material/styles'\nimport type { ReactNode } from 'react'\n\n/**\n * Custom checkbox icons matching Figma design\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-39311\n *\n * Checkbox sizes: xs=12x12, small=16x16, medium=20x20\n * Check/minus paths scaled from Untitled UI (originally 24x24)\n */\n\ntype CheckboxSize = 'xs' | 'small' | 'medium'\n\n// Border radius per size (from Figma)\nconst borderRadiusConfig = {\n xs: 2,\n small: 3,\n medium: 4,\n}\n\n// Unchecked: Rounded square outline (20x20 viewBox)\nconst UncheckedIcon = ({ size = 'medium' }: { size?: CheckboxSize }) => (\n <SvgIcon viewBox=\"0 0 20 20\">\n <rect\n x=\"1\"\n y=\"1\"\n width=\"18\"\n height=\"18\"\n rx={borderRadiusConfig[size]}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </SvgIcon>\n)\n\n// Checked: Filled rounded square with white checkmark\n// Path scaled from Untitled UI 24x24 (M20 6L9 17L4 12) to 20x20\nconst CheckedIcon = ({ size = 'medium' }: { size?: CheckboxSize }) => (\n <SvgIcon viewBox=\"0 0 20 20\">\n <rect width=\"20\" height=\"20\" rx={borderRadiusConfig[size]} fill=\"currentColor\" />\n <path\n d=\"M15 6L8.5 13L5 9.5\"\n stroke=\"white\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n </SvgIcon>\n)\n\n// Indeterminate: Filled rounded square with white minus\n// Path scaled from Untitled UI 24x24 (M5 12H19) to 20x20\nconst IndeterminateIcon = ({ size = 'medium' }: { size?: CheckboxSize }) => (\n <SvgIcon viewBox=\"0 0 20 20\">\n <rect width=\"20\" height=\"20\" rx={borderRadiusConfig[size]} fill=\"currentColor\" />\n <path d=\"M5 10H15\" stroke=\"white\" strokeWidth=\"1.5\" strokeLinecap=\"round\" fill=\"none\" />\n </SvgIcon>\n)\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: 8,\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\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: 1, // From Figma: 1px for xs\n },\n small: {\n size: 16,\n borderRadius: borderRadius.xXS, // From Figma: 2px for small\n },\n medium: {\n size: 20,\n borderRadius: borderRadius.xS, // From Figma: 4px for 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.input,\n flexShrink: 0,\n\n // Root element\n [`&.${checkboxClasses.root}`]: {\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n\n // Checkbox icon (unchecked)\n [`& .${checkboxClasses.root}`]: {\n width: config.size,\n height: config.size,\n },\n\n // Checked state\n [`&.${checkboxClasses.checked}`]: {\n color: semanticColors.buttons.primary.default,\n },\n\n // Indeterminate state\n [`&.${checkboxClasses.indeterminate}`]: {\n color: semanticColors.buttons.primary.default,\n },\n\n // Disabled state\n [`&.${checkboxClasses.disabled}`]: {\n color: semanticColors.border.input,\n cursor: 'not-allowed',\n\n // When checked and disabled\n [`&.${checkboxClasses.checked}`]: {\n color: semanticColors.border.input,\n },\n\n // When indeterminate and disabled\n [`&.${checkboxClasses.indeterminate}`]: {\n color: semanticColors.border.input,\n },\n },\n\n // Focus visible for keyboard navigation\n '&.Mui-focusVisible': {\n outline: `2px solid ${semanticColors.buttons.primary.focus}`,\n outlineOffset: 2,\n borderRadius: config.borderRadius,\n },\n\n // Custom SVG icons\n '& svg': {\n width: config.size,\n height: config.size,\n fill: 'currentColor',\n },\n }\n})\n\nexport interface NeoCheckboxProps extends Omit<CheckboxProps, 'size'> {\n /**\n * The size of the checkbox\n * @default \"medium\"\n *\n * @figma Size\n */\n size?: CheckboxSize\n\n /**\n * The label text displayed next to the checkbox\n *\n * @figma Text (label)\n */\n label?: ReactNode\n\n /**\n * The helper text displayed below the label\n *\n * @figma Text (supporting text)\n */\n helperText?: ReactNode\n}\n\n/**\n * NeoCheckbox - Checkbox component based on MUI Checkbox\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-39311\n *\n * Figma Props Mapping:\n * - Checked (True|False) → checked prop\n * - Indeterminate (True|False) → indeterminate prop\n * - Size (xs|sm|md) → size prop (xs|small|medium)\n * - State=Default → default state\n * - State=Hover → CSS :hover\n * - State=Focused → CSS :focus-visible\n * - State=Disabled → disabled prop\n * - Text (label) → label prop\n * - Text (supporting text) → helperText prop\n *\n * @example\n * // Basic checkbox\n * <NeoCheckbox />\n *\n * @example\n * // With label\n * <NeoCheckbox label=\"Remember me\" />\n *\n * @example\n * // With label and helper text\n * <NeoCheckbox label=\"Remember me\" helperText=\"Save my login details for next time.\" />\n *\n * @example\n * // Small size\n * <NeoCheckbox size=\"small\" label=\"Remember me\" />\n *\n * @example\n * // Extra small size\n * <NeoCheckbox size=\"xs\" label=\"Remember me\" />\n *\n * @example\n * // Controlled\n * <NeoCheckbox checked={isChecked} onChange={handleChange} label=\"Remember me\" />\n *\n * @example\n * // Indeterminate state (for \"select all\" checkboxes)\n * <NeoCheckbox indeterminate={true} label=\"Select all\" />\n */\nexport const NeoCheckbox = ({\n size = 'medium',\n label,\n helperText,\n disabled,\n icon,\n checkedIcon,\n indeterminateIcon,\n className,\n ...props\n}: NeoCheckboxProps) => {\n // Add custom class to identify NeoCheckbox instances\n const combinedClassName = className ? `neo-checkbox ${className}` : 'neo-checkbox'\n\n // Create size-specific icons\n const defaultIcon = icon || <UncheckedIcon size={size} />\n const defaultCheckedIcon = checkedIcon || <CheckedIcon size={size} />\n const defaultIndeterminateIcon = indeterminateIcon || <IndeterminateIcon size={size} />\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\nNeoCheckbox.displayName = 'NeoCheckbox'\n\n/**\n * Base styled checkbox component without label wrapper\n * Used internally by NeoCheckbox and directly in DataGrid\n *\n * @internal - Prefer using NeoCheckbox for most cases\n */\nexport { StyledCheckbox as NeoCheckboxBase }\n","import { semanticColors, typography } from '@moderneinc/neo-design'\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'\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 ${theme.spacing(0.75)}`, // 6px horizontal\n paddingMultiline: theme.spacing(3), // 24px all sides\n fontSize: theme.typography.pxToRem(typography.fontSize.xs), // 12px\n },\n small: {\n height: 24,\n paddingSingleLine: `0 ${theme.spacing(0.75)}`, // 6px horizontal\n paddingMultiline: theme.spacing(3), // 24px all sides\n fontSize: theme.typography.pxToRem(typography.fontSize.sm), // 14px\n },\n large: {\n height: 32,\n paddingSingleLine: `0 ${theme.spacing(1)}`, // 8px horizontal\n paddingMultiline: theme.spacing(3), // 24px all sides\n fontSize: theme.typography.pxToRem(typography.fontSize.sm), // 14px\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: isMultiline ? sizeStyles.paddingMultiline : sizeStyles.paddingSingleLine,\n paddingRight: isMultiline ? theme.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' ? 1.2 : 'normal',\n borderRadius: 4,\n textAlign: 'left',\n textTransform: 'none',\n gap: isMultiline ? undefined : theme.spacing(1.25), // 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.buttons.primary.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: theme.palette.common.white,\n border: 'none',\n },\n }\n\n return {\n ...baseStyles,\n ...variantStyles[variant],\n }\n})\n\nconst IconWrapper = styled('span')<{ isMultiline?: boolean }>(({ theme, isMultiline }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 16,\n height: 16,\n flexShrink: 0,\n ...(isMultiline && {\n position: 'absolute',\n top: theme.spacing(3), // 24px from top\n right: theme.spacing(3), // 24px from right\n }),\n}))\n\nexport interface NeoCodeSnippetProps extends Omit<ButtonBaseProps, 'children'> {\n /**\n * The visual variant of the code snippet\n * @default \"outlined\"\n *\n * @figma Color (Light|Dark)\n */\n variant?: CodeSnippetVariant\n\n /**\n * The size of the code snippet\n * @default \"small\"\n *\n * @figma size (xs|small|large)\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 * NeoCodeSnippet - Inline code snippet component based on MUI ButtonBase\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30353\n *\n * Figma Props Mapping:\n * - Color (Light|Dark) → variant (outlined|filled)\n * - size (Single line|multiline) → auto-detected from children\n * - Copy button → endIcon (ReactNode)\n * - Text content → children prop\n */\nexport const NeoCodeSnippet = ({\n variant = 'outlined',\n size = 'small',\n endIcon,\n children,\n ...props\n}: NeoCodeSnippetProps) => {\n const isMultiline = 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\nNeoCodeSnippet.displayName = 'NeoCodeSnippet'\n","import { borderRadius, colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport Box from '@mui/material/Box'\nimport Button from '@mui/material/Button'\nimport Divider from '@mui/material/Divider'\nimport InputAdornment from '@mui/material/InputAdornment'\nimport { inputBaseClasses } from '@mui/material/InputBase'\nimport { styled } from '@mui/material/styles'\nimport TextField from '@mui/material/TextField'\nimport type { GridColumnsPanelProps } from '@mui/x-data-grid-pro'\nimport {\n GridPanelWrapper,\n gridColumnDefinitionsSelector,\n gridColumnVisibilityModelSelector,\n useGridApiContext,\n useGridSelector,\n} from '@mui/x-data-grid-pro'\nimport { Search } from 'lucide-react'\nimport { useMemo, useState } from 'react'\nimport { NeoCheckbox } from '../Checkbox/Checkbox'\n\nconst PanelContent = styled(Box)(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n padding: theme.spacing(0.5),\n paddingTop: theme.spacing(1),\n}))\n\n/**\n * Search input styled to match NeoQuickFilter\n */\nconst StyledSearchField = styled(TextField)(({ theme }) => ({\n marginLeft: theme.spacing(1),\n marginRight: theme.spacing(1),\n marginBottom: theme.spacing(0.5),\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.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 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 '& .MuiInputAdornment-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: theme.spacing(0.75),\n paddingRight: theme.spacing(0.75),\n}))\n\nconst MenuItemContent = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n padding: theme.spacing(1),\n borderRadius: 6,\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: colors.grey['800'],\n whiteSpace: 'nowrap',\n}))\n\nconst DividerContainer = styled('div')(({ theme }) => ({\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n}))\n\nconst StyledDivider = styled(Divider)(() => ({\n borderColor: colors.grey['200'],\n}))\n\nconst FooterRow = styled(Box)(({ theme }) => ({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingLeft: theme.spacing(0.75),\n paddingRight: theme.spacing(0.75),\n}))\n\nconst ResetButton = styled(Button)(({ theme }) => ({\n fontSize: theme.typography.pxToRem(16),\n fontWeight: 400,\n color: semanticColors.buttons.primary.default,\n textTransform: 'none',\n padding: theme.spacing(1),\n minWidth: 'auto',\n '&:hover': {\n backgroundColor: 'transparent',\n color: colors.grey['600'],\n },\n '&:disabled': {\n color: colors.grey['400'],\n },\n}))\n\n/**\n * NeoDataGridColumnsPanel - Custom columns panel for NeoDataGrid matching Figma design\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=5022-3243\n *\n * A styled columns panel that integrates with MUI DataGrid's column visibility system.\n * Features:\n * - Search input with Lucide icon (matches NeoQuickFilter)\n * - Checkbox list with Neo 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 * - grey['800'] - Text color (#1f2937)\n * - grey['200'] - Divider color (#e5e7eb)\n */\nexport interface NeoDataGridColumnsPanelProps extends GridColumnsPanelProps {\n /**\n * If true, shows the search input field\n * @default false\n */\n showSearch?: boolean\n}\n\nexport const NeoDataGridColumnsPanel = ({\n showSearch = false,\n ...props\n}: NeoDataGridColumnsPanelProps) => {\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 <GridPanelWrapper {...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 <NeoCheckbox 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 <NeoCheckbox\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 </GridPanelWrapper>\n )\n}\n\nNeoDataGridColumnsPanel.displayName = 'NeoDataGridColumnsPanel'\n","import { semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport MenuItem, { type MenuItemProps, menuItemClasses } from '@mui/material/MenuItem'\nimport { styled } from '@mui/material/styles'\nimport type { ReactNode } from 'react'\n\nconst StyledMenuItem = styled(MenuItem)(({ theme }) => ({\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n minHeight: spacing.spacing_5,\n gap: theme.spacing(2),\n borderRadius: 0,\n color: semanticColors.icons.default,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.regular,\n lineHeight: `${typography.lineHeight.s}px`,\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: 8,\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: 4,\n padding: `${theme.spacing(0.25)} ${theme.spacing(0.75)}`,\n backgroundColor: semanticColors.surfaces.white,\n}))\n\nexport interface NeoMenuItemProps extends MenuItemProps {\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 * Menu item content (text label)\n * @figma children mapped from Figma layer content\n */\n children?: ReactNode\n}\n\n/**\n * NeoMenuItem - Menu item component based on MUI MenuItem\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4159-8649\n *\n * Figma Props Mapping:\n * - Text label → children prop (mapped via figma.children)\n * - State=Selected → selected prop (mapped via figma.enum)\n * - State=Disabled → disabled prop (mapped via figma.enum)\n * - Hover state → CSS :hover (not mapped)\n * - Icon slot → icon prop (not mappable - ReactNode)\n * - Secondary text → secondaryText prop (not mappable - ReactNode/string)\n * - Keyboard shortcut → shortcut prop (not mappable - ReactNode/string)\n *\n * @example\n * ```tsx\n * // With icon and shortcut\n * <NeoMenuItem icon={<UserIcon />} shortcut=\"⌘+P\">\n * View profile\n * </NeoMenuItem>\n *\n * // With secondary text (user list pattern from Figma node 4305:41844)\n * <NeoMenuItem secondaryText=\"@phoenix\">Phoenix Baker</NeoMenuItem>\n * <NeoMenuItem secondaryText=\"@olivia\">Olivia Rhye</NeoMenuItem>\n *\n * // Disabled state\n * <NeoMenuItem disabled>Disabled item</NeoMenuItem>\n * ```\n */\nexport const NeoMenuItem = ({\n icon,\n shortcut,\n secondaryText,\n children,\n ...props\n}: NeoMenuItemProps) => {\n return (\n <StyledMenuItem {...props}>\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\nNeoMenuItem.displayName = 'NeoMenuItem'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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 { NeoMenuItem } from '../MenuItem/MenuItem'\n\n/**\n * Custom chevron icon for select dropdown\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 Neo design system styling\n */\nconst StyledSelect = styled(MuiSelect)({\n minHeight: spacing.spacing_5,\n backgroundColor: semanticColors.input.background,\n border: `1px solid ${semanticColors.border.input}`,\n borderRadius: `${borderRadius.input}px`,\n\n '&:hover': {\n backgroundColor: semanticColors.input.hoverBackground,\n borderColor: semanticColors.border.input,\n },\n\n '&.Mui-focused': {\n backgroundColor: semanticColors.input.background,\n borderColor: semanticColors.border.input,\n },\n\n '&::before': {\n display: 'none',\n },\n '&::after': {\n display: 'none',\n },\n\n [`& .${selectClasses.select}`]: {\n paddingTop: spacing.spacing_1,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_2,\n paddingRight: spacing.spacing_5,\n fontSize: typography.fontSize.default,\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 NeoSelectProps = MuiSelectProps\n\n/**\n * NeoSelect - Select dropdown component with Neo design system styling\n *\n * A styled version of MUI's Select that uses Neo design tokens, Lucide ChevronDown icon,\n * and NeoMenu/NeoMenuItem for the dropdown list.\n *\n * @example\n * ```tsx\n * import { NeoSelect, NeoSelectOption } from '@moderneinc/neo-styled-components'\n *\n * <NeoSelect value={value} onChange={handleChange}>\n * <NeoSelectOption value=\"option1\">Option 1</NeoSelectOption>\n * <NeoSelectOption value=\"option2\">Option 2</NeoSelectOption>\n * </NeoSelect>\n * ```\n */\nexport const NeoSelect = (props: NeoSelectProps) => {\n return (\n <StyledSelect\n {...props}\n IconComponent={ChevronDownIcon}\n variant=\"standard\"\n MenuProps={{\n ...props.MenuProps,\n // Apply NeoMenu styling to the dropdown\n PaperProps: {\n sx: {\n backgroundColor: semanticColors.surfaces.white,\n borderRadius: `${borderRadius.s}px`,\n border: `1px solid ${semanticColors.border.primary}`,\n boxShadow: '0px 4px 12px rgba(0, 0, 0, 0.1)',\n marginTop: 1,\n ...props.MenuProps?.PaperProps?.sx,\n },\n },\n }}\n />\n )\n}\n\nNeoSelect.displayName = 'NeoSelect'\n\n// Export NeoMenuItem as NeoSelectOption for convenience\nexport { NeoMenuItem as NeoSelectOption }\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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 { NeoSelect } 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 NeoDataGridFilterPanelAddIcon = () => (\n <Plus size={spacing.spacing_2} color={semanticColors.buttons.tertiary.default} />\n)\nNeoDataGridFilterPanelAddIcon.displayName = 'NeoDataGridFilterPanelAddIcon'\n\nexport const NeoDataGridFilterPanelDeleteIcon = () => (\n <X size={spacing.spacing_2_1_2} color={semanticColors.icons.default} />\n)\nNeoDataGridFilterPanelDeleteIcon.displayName = 'NeoDataGridFilterPanelDeleteIcon'\n\nexport const NeoDataGridFilterPanelRemoveAllIcon = () => (\n <Trash2 size={spacing.spacing_2} color={semanticColors.buttons.tertiary.default} />\n)\nNeoDataGridFilterPanelRemoveAllIcon.displayName = 'NeoDataGridFilterPanelRemoveAllIcon'\n\n/**\n * Base styled GridFilterPanel with Neo design system styling\n */\nconst StyledGridFilterPanel = styled(MuiGridFilterPanel)({\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 - Neo 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.input}`,\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.input,\n },\n [`& .${gridClasses.filterForm} .${inputBaseClasses.root}.${inputBaseClasses.focused}`]: {\n backgroundColor: semanticColors.input.background,\n borderColor: semanticColors.border.input,\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 - Neo 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 NeoButton link variant\n [`& .${gridClasses.panelFooter} .${buttonClasses.root}:nth-child(2)`]: {\n height: 32, // NeoButton small size\n padding: `0 ${spacing.spacing_1}px`, // NeoButton link variant padding\n fontSize: typography.fontSize.sm,\n fontWeight: 500,\n lineHeight: 1.5,\n textTransform: 'none',\n minHeight: 'auto',\n backgroundColor: 'transparent',\n color: semanticColors.buttons.tertiary.default,\n border: 'none',\n '& .MuiButton-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 * NeoDataGridFilterPanel - MUI GridFilterPanel with Neo design system styling and Lucide icons\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4594-163847\n *\n * A styled version of MUI's GridFilterPanel that applies Neo design 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 * NeoDataGridFilterPanel,\n * FilterPanelAddIcon,\n * FilterPanelDeleteIcon,\n * FilterPanelRemoveAllIcon\n * } from '@moderneinc/neo-styled-components'\n *\n * <DataGridPro\n * rows={rows}\n * columns={columns}\n * slots={{\n * filterPanel: NeoDataGridFilterPanel,\n * filterPanelAddIcon: FilterPanelAddIcon,\n * filterPanelDeleteIcon: FilterPanelDeleteIcon,\n * filterPanelRemoveAllIcon: FilterPanelRemoveAllIcon,\n * }}\n * />\n * ```\n */\n// Re-export NeoSelect for DataGrid baseSelect slot\nexport { NeoSelect as NeoDataGridSelect }\n\nexport const NeoDataGridFilterPanel = (props: React.ComponentProps<typeof MuiGridFilterPanel>) => {\n return <StyledGridFilterPanel {...props} />\n}\n\nNeoDataGridFilterPanel.displayName = 'NeoDataGridFilterPanel'\n","import { colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport { checkboxClasses } from '@mui/material/Checkbox'\nimport type { SxProps, Theme } from '@mui/material/styles'\nimport { gridClasses } from '@mui/x-data-grid'\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\n/**\n * Utility function to get DataGrid sx styles for header cells\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4212-41618\n *\n * Figma prop mappings:\n * - `size` → `size`: Figma \"condensed\" → MUI 'compact', Figma \"default\" → MUI 'standard', Figma \"relaxed\" → MUI 'comfortable'\n *\n * Design tokens used:\n * - Background: colors.grey[50] (#f9fafb)\n * - Border: semanticColors.border.primary\n * - Padding: 12px vertical, 24px horizontal\n * - Gap: 12px\n *\n *\n * @param size - Header row size variant (affects header cell height)\n * @returns SxProps for DataGrid header cells\n *\n * @example\n * import { getDataGridHeaderStyles, SortedDescendingIcon, SortedAscendingIcon, UnsortedIcon } from './DataGridHeaderCell'\n *\n * <DataGrid\n * columnHeaderHeight={38} // for compact (Figma: condensed)\n * sx={{\n * ...getDataGridHeaderStyles(),\n * }}\n * slots={{\n * columnSortedDescendingIcon: SortedDescendingIcon,\n * columnSortedAscendingIcon: SortedAscendingIcon,\n * columnUnsortedIcon: UnsortedIcon,\n * }}\n * rows={rows}\n * columns={columns}\n * />\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: colors.grey[50],\n borderBottom: `1px solid ${semanticColors.border.primary}`,\n paddingLeft: `${spacing.spacing_3}px`,\n paddingRight: `${spacing.spacing_3}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: colors.grey[50],\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 Neo design (16x16 from Figma)\n [`& .${gridClasses.columnHeaderCheckbox}`]: {\n padding: 0,\n '& .MuiCheckbox-root': {\n padding: 0,\n width: 16,\n height: 16,\n '& svg': {\n width: 16,\n height: 16,\n },\n },\n },\n\n // Style MUI's sort icon to match Neo design (16x16)\n [`& .${gridClasses.iconButtonContainer}`]: {\n width: 16,\n height: 16,\n marginLeft: `${spacing.spacing_1_2}px`,\n [`& .${checkboxClasses.root}`]: {\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","import { semanticColors, spacing } from '@moderneinc/neo-design'\nimport type { SxProps, Theme } from '@mui/material/styles'\nimport {\n DataGridPro,\n type DataGridProProps,\n type GridDensity,\n type GridSlots,\n gridClasses,\n useGridApiRef,\n} from '@mui/x-data-grid-pro'\nimport type { ReactNode } from 'react'\nimport { NeoCheckbox } from '../Checkbox/Checkbox'\nimport { NeoDataGridColumnsPanel } from '../DataGridColumnsPanel/DataGridColumnsPanel'\nimport {\n NeoDataGridFilterPanel,\n NeoDataGridFilterPanelAddIcon,\n NeoDataGridFilterPanelDeleteIcon,\n NeoDataGridFilterPanelRemoveAllIcon,\n} from '../DataGridFilterPanel/DataGridFilterPanel'\nimport {\n getDataGridHeaderStyles,\n SortedAscendingIcon,\n SortedDescendingIcon,\n UnsortedIcon,\n} from '../DataGridHeaderCell/DataGridHeaderCell'\n\n/**\n * Adapter to use NeoCheckbox 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 <NeoCheckbox\n size=\"small\"\n {...props}\n slotProps={slotProps?.htmlInput ? { input: slotProps.htmlInput } : undefined}\n />\n)\n\nexport type DataGridSize = GridDensity\n\nexport interface NeoDataGridProps 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 Neo defaults)\n */\n slots?: Partial<GridSlots>\n}\n\n/**\n * NeoDataGrid - Responsive base DataGrid component with Neo design system styling\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4260-72484\n *\n * This is the base component for all Neo DataGrid variants. It provides:\n * - Responsive viewport-based height calculation\n * - Dynamic row heights (getRowHeight='auto') for text wrapping\n * - Neo design system styling (colors, typography, spacing)\n * - Custom sort icons and filter panels\n *\n * For specific use cases, see:\n * - NeoInfiniteScrollGrid: Infinite scroll with load-more button\n * - NeoPaginatedGrid: 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 * Figma prop mappings:\n * - `size` → Row heights (compact: 42px, standard: 48px, comfortable: 56px) and header heights (compact: 38px, standard: 44px, comfortable: 52px)\n *\n * Design tokens used:\n * - Colors: semanticColors.border.primary, semanticColors.background.*\n * - Typography: typography.fontFamily.body, typography.fontSize.sm\n * - Spacing: spacing.spacing_*\n *\n * @example\n * // Basic usage with responsive height\n * <NeoDataGrid\n * rows={rows}\n * columns={columns}\n * />\n *\n * @example\n * // With footer offset\n * <NeoDataGrid\n * rows={rows}\n * columns={columns}\n * footerOffsetSelector=\"#page-footer\"\n * />\n */\nexport function NeoDataGrid({\n autoHeight = false,\n toolbar,\n slots,\n sx,\n density = 'standard',\n slotProps: userSlotProps,\n ...props\n}: NeoDataGridProps) {\n const defaultApiRef = useGridApiRef()\n const apiRef = props?.apiRef ? props.apiRef : defaultApiRef\n\n // Merge custom slots with Neo 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: NeoDataGridColumnsPanel,\n filterPanel: NeoDataGridFilterPanel,\n filterPanelAddIcon: NeoDataGridFilterPanelAddIcon,\n filterPanelDeleteIcon: NeoDataGridFilterPanelDeleteIcon,\n filterPanelRemoveAllIcon: NeoDataGridFilterPanelRemoveAllIcon,\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 '& .MuiDataGrid-main': {\n backgroundColor: semanticColors.surfaces.white,\n },\n // White background for empty/loading overlays\n [`& .${gridClasses.overlay}`]: {\n backgroundColor: semanticColors.surfaces.white,\n },\n\n ...getDataGridHeaderStyles(),\n border: `1px solid ${semanticColors.border.primary}`,\n\n // Style row selection checkboxes to match header (16px, proper spacing)\n [`& .${gridClasses.cellCheckbox}`]: {\n '& .MuiCheckbox-root': {\n padding: `${spacing.spacing_1}px`,\n '& .MuiSvgIcon-root': {\n width: 16,\n height: 16,\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}\n {...props}\n />\n )\n}\n\nNeoDataGrid.displayName = 'NeoDataGrid'\n","import { semanticColors } from '@moderneinc/neo-design'\nimport { ColumnsPanelTrigger, ToolbarButton } from '@mui/x-data-grid-pro'\nimport { Columns3 } from 'lucide-react'\nimport { NeoButton } from '../Button/Button'\n\n/**\n * NeoDataGridColumnsButton - Button to open the columns panel in DataGrid\n *\n * Integrates with MUI DataGrid Pro's ColumnsPanelTrigger to show/hide columns.\n * Uses NeoButton with Lucide Columns3 icon.\n *\n * @example\n * ```tsx\n * <NeoDataGridColumnsButton />\n * ```\n */\nexport function NeoDataGridColumnsButton() {\n return (\n <ColumnsPanelTrigger\n render={\n <ToolbarButton\n render={\n <NeoButton variant=\"secondary\" size=\"small\">\n <Columns3 size={16} color={semanticColors.buttons.primary.default} />\n Columns\n </NeoButton>\n }\n />\n }\n />\n )\n}\n\nNeoDataGridColumnsButton.displayName = 'NeoDataGridColumnsButton'\n","import { borderRadius, colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport Chip, { type ChipProps, chipClasses } from '@mui/material/Chip'\nimport { styled } from '@mui/material/styles'\n\ndeclare module '@mui/material/Chip' {\n interface ChipPropsColorOverrides {\n violet: true\n }\n interface ChipPropsSizeOverrides {\n large: true\n }\n interface ChipPropsVariantOverrides {\n outlined: true\n filled: true\n }\n}\n\nconst StyledChip = styled(Chip)(({ theme, size, variant, color }) => ({\n padding: 0,\n borderRadius: borderRadius.full,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n fontWeight: typography.fontWeight.medium,\n\n // Size variants\n ...(size === 'small' && {\n height: 16,\n paddingLeft: spacing.spacing_1_2, // 4px\n paddingRight: spacing.spacing_1_2, // 4px\n }),\n ...(size === 'medium' && {\n height: 18,\n paddingLeft: spacing.spacing_3_4, // 6px\n paddingRight: spacing.spacing_3_4, // 6px\n }),\n ...(size === 'large' && {\n height: 20,\n paddingLeft: spacing.spacing_3_4, // 6px\n paddingRight: spacing.spacing_3_4, // 6px\n }),\n\n [`& .${chipClasses.label}`]: {\n padding: 0,\n },\n\n // Outlined variant (light type in Figma) - Neutral/Default\n ...(variant === 'outlined' &&\n color === 'default' && {\n backgroundColor: semanticColors.status.neutral.light,\n color: semanticColors.status.neutral.dark,\n borderColor: colors.grey[200], // base/grey/200\n }),\n\n // Outlined variant - Error\n ...(variant === 'outlined' &&\n color === 'error' && {\n backgroundColor: semanticColors.status.error.light,\n color: semanticColors.status.error.dark,\n borderColor: colors.red[100], // base/red/100\n }),\n\n // Outlined variant - Warning\n ...(variant === 'outlined' &&\n color === 'warning' && {\n backgroundColor: semanticColors.status.warning.light,\n color: semanticColors.status.warning.dark,\n borderColor: colors.orange[100], // base/orange/100\n }),\n\n // Outlined variant - Success\n ...(variant === 'outlined' &&\n color === 'success' && {\n backgroundColor: semanticColors.status.success.light,\n color: semanticColors.status.success.dark,\n borderColor: 'rgba(94, 196, 111, 0.24)', // rgba from Figma\n }),\n\n // Outlined variant - Info\n ...(variant === 'outlined' &&\n color === 'info' && {\n backgroundColor: semanticColors.status.info.light,\n color: semanticColors.status.info.dark,\n borderColor: colors.digitalBlue[100], // base/digital-blue/100\n }),\n\n // Outlined variant - Violet\n ...(variant === 'outlined' &&\n color === 'violet' && {\n backgroundColor: `${colors.violet[100]}66`, // rgba(235,213,241,0.4)\n color: colors.violet[600],\n borderColor: colors.violet[100], // base/violet/100\n }),\n\n // Filled variant (dark type in Figma) - Neutral/Default\n ...(variant === 'filled' &&\n color === 'default' && {\n backgroundColor: semanticColors.status.neutral.medium,\n color: theme.palette.common.white,\n border: 'none',\n }),\n\n // Filled variant - Error\n ...(variant === 'filled' &&\n color === 'error' && {\n backgroundColor: semanticColors.status.error.medium,\n color: theme.palette.common.white,\n border: 'none',\n }),\n\n // Filled variant - Warning\n ...(variant === 'filled' &&\n color === 'warning' && {\n backgroundColor: semanticColors.status.warning.medium,\n color: theme.palette.common.white,\n border: 'none',\n }),\n\n // Filled variant - Success\n ...(variant === 'filled' &&\n color === 'success' && {\n backgroundColor: semanticColors.status.success.medium,\n color: theme.palette.common.white,\n border: 'none',\n }),\n\n // Filled variant - Info\n ...(variant === 'filled' &&\n color === 'info' && {\n backgroundColor: semanticColors.status.info.medium,\n color: theme.palette.common.white,\n border: 'none',\n }),\n\n // Filled variant - Violet\n ...(variant === 'filled' &&\n color === 'violet' && {\n backgroundColor: colors.violet[500],\n color: theme.palette.common.white,\n border: 'none',\n }),\n}))\n\nexport interface NeoTagProps extends Omit<ChipProps, 'variant' | 'size'> {\n /**\n * The size of the tag\n * @figma m (sm|md|lg)\n * @default \"small\"\n */\n size?: 'small' | 'medium' | 'large'\n\n /**\n * The variant style of the tag\n * @figma type (light|dark)\n * @default \"outlined\"\n */\n variant?: 'outlined' | 'filled'\n\n /**\n * The color/state of the tag\n * @figma state (Neutral|Error|Warning|Success|Info|Violet)\n * @default \"default\"\n */\n color?: 'default' | 'error' | 'warning' | 'success' | 'info' | 'violet'\n}\n\n/**\n * NeoTag - Small pill-shaped label component based on MUI Chip\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4120-34533\n *\n * Figma Props Mapping:\n * - m (sm|md|lg) → size (small|medium|large)\n * - type (light|dark) → variant (outlined|filled)\n * - state (Neutral|Error|Warning|Success|Info|Violet) → color (default|error|warning|success|info|violet)\n * - Label text → label prop\n */\nexport const NeoTag = ({ size = 'small', variant = 'outlined', ...props }: NeoTagProps) => {\n return <StyledChip size={size} variant={variant} {...props} />\n}\n\nNeoTag.displayName = 'NeoTag'\n","import { semanticColors } from '@moderneinc/neo-design'\nimport {\n FilterPanelTrigger,\n gridFilterModelSelector,\n ToolbarButton,\n useGridApiContext,\n useGridSelector,\n} from '@mui/x-data-grid-pro'\nimport { ListFilter } from 'lucide-react'\nimport { NeoButton } from '../Button/Button'\nimport { NeoTag } from '../Tag/Tag'\n\n/**\n * NeoDataGridFiltersButton - Button to open the filters panel in DataGrid\n *\n * Integrates with MUI DataGrid Pro's FilterPanelTrigger to manage column filters.\n * Uses NeoButton with Lucide ListFilter icon and shows active filter count.\n * The count badge updates reactively when filters change.\n *\n * @example\n * ```tsx\n * <NeoDataGridFiltersButton />\n * ```\n */\nexport function NeoDataGridFiltersButton() {\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 <NeoButton variant=\"secondary\" size=\"small\">\n <ListFilter size={16} color={semanticColors.buttons.primary.default} />\n Filters\n {filterCount > 0 && (\n <NeoTag size=\"medium\" variant=\"filled\" color=\"info\" label={String(filterCount)} />\n )}\n </NeoButton>\n }\n />\n }\n />\n )\n}\n\nNeoDataGridFiltersButton.displayName = 'NeoDataGridFiltersButton'\n","import { semanticColors, spacing, typography } from '@moderneinc/neo-design'\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 * NeoDataGridHeaderLabel - Header label for DataGrid columns with help icon support\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4212-41565\n *\n * Figma prop mappings:\n * - `helpIcon` → `helpTooltip`: \"True\" → provide tooltip text, \"False\" → undefined\n * - `state` → handled via CSS :hover (not a prop)\n * - `text` → `children` (ReactNode)\n * - `arrow` → handled by MUI DataGrid slots (not a prop)\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 * <NeoDataGridHeaderLabel>Company</NeoDataGridHeaderLabel>\n *\n * @example\n * // With help icon and tooltip\n * <NeoDataGridHeaderLabel helpTooltip=\"The current status of the company\">\n * Status\n * </NeoDataGridHeaderLabel>\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 NeoDataGridHeaderLabelProps {\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 NeoDataGridHeaderLabel({\n children,\n helpTooltip,\n className,\n}: NeoDataGridHeaderLabelProps) {\n return (\n <LabelContainer className={className} data-neo-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 * @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 */\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/neo-design'\nimport IconButton, { type IconButtonProps, iconButtonClasses } from '@mui/material/IconButton'\nimport { styled } from '@mui/material/styles'\n\ntype IconButtonSize = 'small' | 'medium'\n\nconst StyledIconButton = styled(IconButton, {\n shouldForwardProp: prop => prop !== 'size',\n})<{\n size?: IconButtonSize\n}>(({ theme, size = 'medium' }) => {\n // Size configurations using theme.spacing()\n const sizeConfig = {\n small: {\n width: 32,\n height: 32,\n padding: theme.spacing(0.5),\n },\n medium: {\n width: spacing.spacing_5_1_2,\n height: spacing.spacing_5_1_2,\n padding: theme.spacing(1.25),\n },\n }\n\n const sizeStyles = sizeConfig[size]\n\n // Base styles shared by all variants\n const baseStyles = {\n width: sizeStyles.width,\n height: sizeStyles.height,\n padding: sizeStyles.padding,\n borderRadius: borderRadius.button, // Fully rounded/circular\n transition: theme.transitions.create(['background-color', 'border-color', 'color'], {\n duration: theme.transitions.duration.short,\n }),\n\n // Disabled state\n [`&.${iconButtonClasses.disabled}`]: {\n cursor: 'not-allowed',\n pointerEvents: 'auto',\n },\n\n // Focus visible for keyboard navigation\n '&:focus-visible': {\n outline: `2px solid ${semanticColors.buttons.primary.focus}`,\n outlineOffset: 2,\n },\n }\n\n // Icon button styling - single neutral style\n const iconButtonStyles = {\n backgroundColor: 'transparent',\n color: semanticColors.icons.default,\n border: 'none',\n\n '&:hover': {\n backgroundColor: semanticColors.icons.hoverBackground,\n color: semanticColors.icons.hover,\n },\n\n '&:active': {\n color: semanticColors.icons.pressed,\n },\n\n [`&.${iconButtonClasses.disabled}`]: {\n backgroundColor: 'transparent',\n color: semanticColors.icons.disabled,\n },\n }\n\n return {\n ...baseStyles,\n ...iconButtonStyles,\n }\n})\n\nexport interface NeoIconButtonProps extends Omit<IconButtonProps, 'color' | 'size'> {\n /**\n * The size of the icon button\n * @default \"medium\"\n *\n * @figma Size\n */\n size?: IconButtonSize\n}\n\n/**\n * NeoIconButton - Icon-only button component based on MUI IconButton\n *\n * Simple, neutral icon button with transparent background and icon color states.\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4086-7590\n *\n * Figma Props Mapping:\n * - Hierarchy=Icon → Single default style (no variant prop)\n * - Size (Small|Medium) → size prop\n * - State=Disabled → disabled prop\n * - State=Hover → CSS :hover\n * - State=Pressed → CSS :active\n * - State=Focused → CSS :focus-visible\n */\nexport const NeoIconButton = ({ size = 'medium', ...props }: NeoIconButtonProps) => {\n return <StyledIconButton size={size} {...props} />\n}\n\nNeoIconButton.displayName = 'NeoIconButton'\n","import {\n borderRadius,\n colors,\n semanticColors,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/neo-design'\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 { pickersCalendarHeaderClasses } from '@mui/x-date-pickers/PickersCalendarHeader'\nimport { pickersDayClasses } from '@mui/x-date-pickers/PickersDay'\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 { NeoIconButton } 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 Neo design tokens\nconst StyledDatePicker = styled(DatePicker)(({ theme }) => ({\n [`& .${pickerPopperClasses.paper}`]: {\n boxShadow: `${shadows.dropdown.x}px ${shadows.dropdown.y}px ${shadows.dropdown.blur}px ${shadows.dropdown.spread}px ${shadows.dropdown.shadow}`,\n borderRadius: theme.spacing(2),\n },\n [`& .${dayCalendarClasses.weekDayLabel}`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.medium,\n color: semanticColors.typography.bodySecondary,\n },\n [`& .${pickersDayClasses.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: colors.grey[800],\n color: semanticColors.surfaces.white,\n '&:hover': {\n backgroundColor: colors.grey[800],\n },\n },\n [`&.${pickersDayClasses.today}`]: {\n border: `2px solid ${colors.grey[800]}`,\n backgroundColor: 'transparent',\n },\n },\n [`& .${pickersCalendarHeaderClasses.label}`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.semiBold,\n color: colors.grey[700],\n },\n})) as typeof DatePicker\n\n// Styled DateRangePicker with Neo design tokens\nconst StyledDateRangePicker = styled(DateRangePicker)(({ theme }) => ({\n [`& .${pickerPopperClasses.paper}`]: {\n boxShadow: `${shadows.dropdown.x}px ${shadows.dropdown.y}px ${shadows.dropdown.blur}px ${shadows.dropdown.spread}px ${shadows.dropdown.shadow}`,\n borderRadius: theme.spacing(2),\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 },\n [`& .${dateRangePickerDayClasses.day}`]: {\n '&:hover': {\n backgroundColor: semanticColors.icons.hoverBackground,\n },\n '&.Mui-selected': {\n backgroundColor: colors.grey[800],\n color: semanticColors.surfaces.white,\n },\n },\n [`& .${dateRangePickerDayClasses.rangeIntervalDayHighlight}`]: {\n backgroundColor: semanticColors.icons.hoverBackground,\n },\n [`& .${dateRangePickerDayClasses.rangeIntervalDayHighlightStart}, & .${dateRangePickerDayClasses.rangeIntervalDayHighlightEnd}`]:\n {\n backgroundColor: colors.grey[800],\n },\n [`& .${dateRangePickerDayClasses.dayInsideRangeInterval}`]: {\n color: semanticColors.typography.input.default,\n },\n [`& .${pickersCalendarHeaderClasses.label}`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.semiBold,\n color: colors.grey[700],\n },\n})) as typeof DateRangePicker\n\ntype DatePickerType = 'single' | 'range'\n\n/**\n * Props for the NeoDatePicker component\n */\nexport interface NeoDatePickerProps {\n /**\n * Type of date picker to render\n * @default \"single\"\n * @figma type\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 * @figma opened\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<false>>,\n 'value' | 'onChange' | 'open' | 'onOpen' | 'onClose' | 'label'\n >\n\n /**\n * Additional props passed to DateRangePicker\n */\n dateRangePickerProps?: Omit<\n Partial<DateRangePickerProps<false>>,\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 '& .MuiChip-label': {\n padding: 0,\n },\n '&:hover': {\n backgroundColor: semanticColors.buttons.secondary.hoverBackground,\n },\n },\n}\n\n/**\n * NeoDatePicker - Moderne design system date picker component\n *\n * A wrapper around MUI X DatePicker and DateRangePicker with Neo design tokens and\n * customization. Supports both single date selection and date range selection with\n * built-in shortcuts.\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4176-3700\n *\n * Figma Props Mapping:\n * - opened → open (boolean)\n * - type ('Single date'|'Dual dates') → type ('single'|'range')\n *\n * Design Tokens Used:\n * - colors: semanticColors.grey[800], semanticColors.grey[700], 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 NeoDatePicker = ({\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}: NeoDatePickerProps) => {\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: NeoIconButton,\n nextIconButton: NeoIconButton,\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\nNeoDatePicker.displayName = 'NeoDatePicker'\n\nexport type { DatePickerType }\n","import { semanticColors } from '@moderneinc/neo-design'\nimport Divider, { type DividerProps } from '@mui/material/Divider'\nimport { styled } from '@mui/material/styles'\n\nconst StyledDivider = styled(Divider)(({ theme }) => ({\n borderColor: semanticColors.border.secondary,\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n}))\n\nexport interface NeoDividerProps extends DividerProps {}\n\n/**\n * NeoDivider - 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 * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4159-8649\n *\n * @example\n * ```tsx\n * // In a menu\n * <NeoMenu>\n * <NeoMenuItem>Settings</NeoMenuItem>\n * <NeoDivider />\n * <NeoMenuItem>Sign out</NeoMenuItem>\n * </NeoMenu>\n *\n * // In a card\n * <Card>\n * <CardHeader>Title</CardHeader>\n * <NeoDivider />\n * <CardContent>Content</CardContent>\n * </Card>\n * ```\n */\nexport const NeoDivider = (props: NeoDividerProps) => {\n return <StyledDivider {...props} />\n}\n\nNeoDivider.displayName = 'NeoDivider'\n","import { semanticColors } from '@moderneinc/neo-design'\nimport Badge, { type BadgeProps, badgeClasses } from '@mui/material/Badge'\nimport { styled } from '@mui/material/styles'\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 StyledBadge = styled(Badge)<{\n ownerState: { size: DotSize; variant: DotVariant; color: DotColor }\n}>(({ ownerState }) => {\n const size = sizeMap[ownerState.size]\n const color = semanticColors.status[ownerState.color].medium\n\n return {\n [`& .${badgeClasses.badge}`]: {\n width: size,\n height: size,\n minWidth: size,\n borderRadius: ownerState.variant === 'solid' ? '50%' : 0,\n padding: 0,\n backgroundColor: ownerState.variant === 'solid' ? color : 'transparent',\n // Remove default badge positioning - make it standalone\n position: 'static',\n transform: 'none',\n overflow: 'visible',\n },\n }\n})\n\nexport interface NeoDotProps\n extends Omit<BadgeProps, 'variant' | 'color' | 'badgeContent' | '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\n/**\n * NeoDot - Status indicator dot component based on MUI Badge\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4163-3577\n *\n * Figma Props Mapping:\n * - size (sm|md|lg) → size prop (small|medium|large)\n * - outline (False|True) → variant prop (solid|outline)\n * - Color is configurable via color prop (success|error|warning|info|neutral)\n */\nexport const NeoDot = ({\n size = 'medium',\n variant = 'solid',\n color = 'neutral',\n ...props\n}: NeoDotProps) => {\n const dotSize = sizeMap[size]\n const mediumColor = semanticColors.status[color].medium\n const lightColor = semanticColors.status[color].light\n\n // For outline variant, use SVG for precise control\n const renderDot = () => {\n if (variant === 'outline') {\n // SVG approach: outer circle with light fill, inner circle with medium fill\n // Stroke width of ~3px creates the ring effect\n const strokeWidth = 3\n const radius = dotSize / 2\n const innerRadius = radius - strokeWidth\n\n return (\n <svg\n width={dotSize}\n height={dotSize}\n viewBox={`0 0 ${dotSize} ${dotSize}`}\n style={{\n display: 'block',\n borderRadius: '50%',\n }}\n role=\"img\"\n aria-label={`${color} status indicator`}\n >\n <title>{`${color} status indicator`}</title>\n <circle cx={radius} cy={radius} r={radius} fill={lightColor} />\n <circle cx={radius} cy={radius} r={innerRadius} fill={mediumColor} />\n </svg>\n )\n }\n return <span style={{ display: 'inline-block', width: 0, height: 0 }} />\n }\n\n return (\n <StyledBadge {...props} ownerState={{ size, variant, color }} variant=\"dot\">\n {renderDot()}\n </StyledBadge>\n )\n}\n\nNeoDot.displayName = 'NeoDot'\n","import { semanticColors } from '@moderneinc/neo-design'\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 NeoLoadingSpinnerProps {\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 * NeoLoadingSpinner - 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 * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4180-14713\n *\n * @example\n * <NeoLoadingSpinner />\n *\n * @example\n * <NeoLoadingSpinner size={32} color=\"#ff0000\" />\n */\nexport const NeoLoadingSpinner = ({\n size = 24,\n color = semanticColors.buttons.primary.default,\n}: NeoLoadingSpinnerProps) => {\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\nNeoLoadingSpinner.displayName = 'NeoLoadingSpinner'\n","import {\n borderRadius,\n colors,\n semanticColors,\n shadows,\n spacing,\n typography,\n} from '@moderneinc/neo-design'\nimport Box from '@mui/material/Box'\nimport IconButton from '@mui/material/IconButton'\nimport { styled } from '@mui/material/styles'\nimport {\n gridPaginationModelSelector,\n gridRowCountSelector,\n useGridApiContext,\n useGridSelector,\n} from '@mui/x-data-grid'\nimport { ChevronLeft, ChevronRight } from 'lucide-react'\nimport type { ReactNode } from 'react'\nimport { NeoLoadingSpinner } 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 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.neutralRegular.blur}px`, // -4px\n left: 0,\n right: 0,\n height: `${shadows.neutralRegular.blur}px`, // 4px\n background: `linear-gradient(to top, ${shadows.neutralRegular.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: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n color: colors.grey['800'], // typography/body: #1F2937\n margin: 0,\n whiteSpace: 'pre',\n}))\n\nconst LoadMoreButton = styled('button')(({ theme }) => ({\n fontFamily: theme.typography.fontFamily,\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.icons.disabled,\n cursor: 'not-allowed',\n },\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: 20,\n height: 20,\n color: disabled ? semanticColors.icons.disabled : semanticColors.icons.default,\n },\n}))\n\nconst PaginationText = styled('p')(({ theme }) => ({\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n fontWeight: typography.fontWeight.regular,\n lineHeight: 1.5,\n color: colors.grey['800'], // typography/body: #1F2937\n margin: 0,\n whiteSpace: 'pre',\n}))\n\nexport interface NeoFooterProps {\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 * Custom content to render in the footer\n */\n children?: ReactNode\n}\n\n/**\n * NeoFooter - 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 * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4261-3133\n *\n * @example\n * // Loading variant with load more\n * <NeoFooter\n * variant=\"loading\"\n * loading={isLoading}\n * resultCount={40}\n * hasMore={true}\n * onLoadMore={() => loadMore()}\n * />\n *\n * @example\n * // Pagination variant\n * <NeoFooter\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: NeoFooter }}\n * slotProps={{\n * footer: {\n * variant: 'pagination',\n * },\n * }}\n * />\n */\nexport const NeoFooter = ({\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 children,\n}: NeoFooterProps) => {\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\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 <NeoLoadingSpinner />\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: 'flex-end' }}>\n <PaginationContainer>\n <PaginationText>{derivePaginationInfo()}</PaginationText>\n <Box sx={{ display: 'flex', gap: spacing.spacing_1_4 }}>\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\nNeoFooter.displayName = 'NeoFooter'\n","import { semanticColors } from '@moderneinc/neo-design'\nimport type { GridScrollParams, GridSlots } from '@mui/x-data-grid-pro'\nimport { gridClasses, useGridApiRef } from '@mui/x-data-grid-pro'\nimport { useEffect, useRef, useState } from 'react'\nimport { NeoDataGrid, type NeoDataGridProps } from '../DataGrid/DataGrid'\nimport { NeoFooter } from '../Footer/Footer'\n\nexport interface NeoInfiniteScrollGridProps extends Omit<NeoDataGridProps, '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 Neo defaults)\n */\n slots?: Partial<GridSlots>\n}\n\n/**\n * NeoInfiniteScrollGrid - DataGrid with infinite scroll and load-more functionality\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4260-72484\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 NeoDataGrid\n *\n * @example\n * <NeoInfiniteScrollGrid\n * rows={rows}\n * columns={columns}\n * onLoadMore={loadMoreData}\n * hasNextPage={hasMore}\n * loading={isLoading}\n * />\n */\nexport function NeoInfiniteScrollGrid({\n onLoadMore,\n hasNextPage = true,\n loadMoreAtScrollPercent = 0.85,\n slots,\n slotProps: userSlotProps,\n sx: userSx,\n ...props\n}: NeoInfiniteScrollGridProps) {\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<NodeJS.Timeout | 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 ? NeoFooter : () => null,\n ...slots,\n }\n\n return (\n <NeoDataGrid\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={{\n // Add border at bottom of rows section (above footer)\n [`& .${gridClasses.virtualScrollerContent}`]: {\n borderBottom: `1px solid ${semanticColors.border.primary}`,\n },\n ...userSx,\n }}\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\nNeoInfiniteScrollGrid.displayName = 'NeoInfiniteScrollGrid'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport FormControl from '@mui/material/FormControl'\nimport FormHelperText, { formHelperTextClasses } from '@mui/material/FormHelperText'\nimport InputAdornment 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\nconst 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\nconst 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: 500,\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.icons.disabled,\n },\n\n [`&.${inputLabelClasses.error}`]: {\n color: semanticColors.typography.input.label,\n },\n}))\n\nconst 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 }) => {\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_2}px ${spacing.spacing_3}px ${spacing.spacing_2}px ${startAdornment ? 0 : spacing.spacing_2}px`,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n borderRadius: borderRadius.full,\n },\n }\n\n const sizeStyles = sizeConfig[size as InputFieldSize]\n\n return {\n height: sizeStyles.height,\n fontSize: sizeStyles.fontSize,\n borderRadius: sizeStyles.borderRadius,\n backgroundColor: semanticColors.input.background,\n border: `1px solid ${destructive ? semanticColors.status.error.medium : semanticColors.border.input}`,\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\n '&::placeholder': {\n color: semanticColors.typography.input.placeholder,\n },\n },\n\n // Hover state\n '&:hover': {\n backgroundColor: semanticColors.input.hoverBackground,\n borderColor: destructive ? semanticColors.status.error.medium : semanticColors.border.input,\n },\n\n // Focused state\n [`&.${inputBaseClasses.focused}`]: {\n backgroundColor: semanticColors.input.background,\n borderColor: destructive\n ? semanticColors.status.error.medium\n : semanticColors.buttons.primary.default,\n },\n\n // Disabled state\n [`&.${inputBaseClasses.disabled}`]: {\n backgroundColor: semanticColors.input.disabledBackground,\n borderColor: semanticColors.border.input,\n color: semanticColors.icons.disabled,\n\n [`& .${inputBaseClasses.input}`]: {\n WebkitTextFillColor: semanticColors.icons.disabled,\n },\n },\n\n // Error state\n [`&.${inputBaseClasses.error}`]: {\n borderColor: semanticColors.status.error.medium,\n },\n\n // Adornment styling\n '& .MuiInputAdornment-root': {\n color: destructive ? semanticColors.status.error.medium : semanticColors.icons.placeholder,\n },\n }\n }\n)\n\nconst 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.medium,\n },\n\n [`&.${formHelperTextClasses.disabled}`]: {\n color: semanticColors.icons.disabled,\n },\n }\n})\n\nexport interface NeoInputFieldProps extends Omit<InputBaseProps, 'size'> {\n /**\n * The size of the input field\n * @default \"medium\"\n *\n * @figma Size\n */\n size?: InputFieldSize\n\n /**\n * Show error/destructive state with red styling\n * @default false\n *\n * @figma Destructive\n */\n destructive?: boolean\n\n /**\n * Label text for the input\n *\n * @figma Label\n */\n label?: string\n\n /**\n * Show required indicator (asterisk)\n * @default false\n *\n * @figma Required indicator\n */\n required?: boolean\n\n /**\n * Info icon to display next to the label\n *\n * @figma Info icon\n */\n infoIcon?: ReactNode\n\n /**\n * Helper text displayed below the input (normal state)\n *\n * @figma Helper text\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 * @figma Error message\n */\n errorMessage?: string\n\n /**\n * Icon to display at the start of the input\n *\n * @figma Left icon\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 * @figma Right icon\n */\n endIcon?: ReactNode\n}\n\n/**\n * NeoInputField - Form input field component using MUI FormControl composition\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4091-23373\n *\n * Figma Props Mapping:\n * - Size (small|medium) → size prop\n * - Destructive (false|true) → destructive prop\n * - State=Placeholder → empty value with placeholder text\n * - State=Hover → CSS :hover\n * - State=Filled → value prop with text\n * - State=Focused → CSS :focus\n * - State=Disabled → disabled prop\n * - Label → label prop\n * - Required indicator (*) → required prop\n * - Info icon → infoIcon prop\n * - Helper text → helperText prop\n * - Error message → errorMessage prop (shown when destructive=true)\n * - Left icon → startIcon prop\n * - Right icon → endIcon prop (auto error icon when destructive=true)\n */\nexport const NeoInputField = ({\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}: NeoInputFieldProps) => {\n const inputId = id || `neo-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 >\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\nNeoInputField.displayName = 'NeoInputField'\n","import { semanticColors, spacing, typography } from '@moderneinc/neo-design'\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'\n }\n}\n\n// Size configuration for consistent styling\nconst sizeConfig = {\n small: {\n height: 36,\n paddingTop: spacing.spacing_1,\n paddingRight: spacing.spacing_1_1_4,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_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: spacing.spacing_1,\n paddingRight: spacing.spacing_1_1_4,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1,\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: spacing.spacing_1,\n paddingRight: spacing.spacing_1_1_4,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_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: spacing.spacing_1,\n paddingRight: spacing.spacing_1_1_4,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_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: spacing.spacing_1,\n paddingRight: spacing.spacing_1_1_2,\n paddingBottom: spacing.spacing_1,\n paddingLeft: spacing.spacing_1_1_2,\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,\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})<{\n size?: 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge'\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 '& .list-item-primary': {\n fontSize: theme.typography.pxToRem(config.fontSize),\n lineHeight: config.lineHeight,\n fontWeight: 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 },\n\n // Badge styling (for xxlarge link variant)\n '& .list-item-badge': {\n fontSize: theme.typography.pxToRem(\n size === 'xxlarge' ? (config as typeof sizeConfig.xxlarge).badgeFontSize || 12 : 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 // Hover state\n '&:hover': {\n backgroundColor: semanticColors.input.background,\n },\n\n // Selected/Active state\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: typography.fontWeight.semiBold,\n color: semanticColors.typography.navigation.default,\n },\n\n '& .list-item-secondary': {\n fontWeight: typography.fontWeight.medium,\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\n // Link-specific styling (underline on hover for xxlarge)\n ...(isLink &&\n size === 'xxlarge' && {\n '& .list-item-primary': {\n textDecoration: 'none',\n },\n '&:hover .list-item-primary': {\n textDecoration: 'underline',\n },\n }),\n }\n})\n\n/**\n * Props for the NeoListItem component\n */\nexport interface NeoListItemProps extends Omit<ListItemButtonProps, 'children' | 'size' | 'color'> {\n /**\n * The size variant of the list item\n * @default \"medium\"\n * @figma size\n */\n size?: 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge'\n\n /**\n * Primary text content (required)\n * @figma Placeholder (primary text)\n */\n primaryText: ReactNode\n\n /**\n * Secondary/supporting text content (optional, shown in large/xlarge/xxlarge)\n * @figma Recipe name (secondary text)\n */\n secondaryText?: ReactNode\n\n /**\n * Badge content for count display (optional, for xxlarge link variant)\n * @figma (# recipes)\n */\n badge?: ReactNode\n\n /**\n * Icon or logo element (optional, scales based on size)\n * @figma Icon base / Marketplace Logo\n */\n icon?: ReactNode\n\n /**\n * The component used for the root node (for polymorphic behavior)\n * @default 'button'\n * @figma Use 'a' for state=\"link\"\n */\n component?: React.ElementType\n\n /**\n * Whether this is a link variant (applies link styling)\n * @default false\n * @figma state=\"link\"\n */\n isLink?: boolean\n}\n\n/**\n * NeoListItem - Flexible list item component with multiple size variants and states\n *\n * A versatile list item component built on MUI's ListItemButton that supports five size variants\n * (small to xxlarge), interactive states (default, selected, disabled, link), and optional\n * icons/logos, secondary text, and badges.\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4205-36442\n *\n * Figma Props Mapping:\n * - size (small|medium|large|xlarge|XXL) → size (small|medium|large|xlarge|xxlarge)\n * - state (default|active|disabled|link) → selected, disabled, isLink props\n * - showIcon → icon prop (pass ReactNode)\n * - showSupportingText → secondaryText prop (pass ReactNode)\n * - Placeholder → primaryText prop\n * - Recipe name → secondaryText prop\n * - (# recipes) → badge prop\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 NeoListItem = ({\n size = 'medium',\n primaryText,\n secondaryText,\n badge,\n icon,\n isLink = false,\n component,\n ...props\n}: NeoListItemProps) => {\n // Determine if secondary text should be shown based on size\n const showSecondaryText =\n secondaryText && (size === 'large' || size === 'xlarge' || size === 'xxlarge')\n\n // Determine if badge should be shown (only for xxlarge)\n const showBadge = badge && size === 'xxlarge'\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 </StyledListItemButton>\n )\n}\n\nNeoListItem.displayName = 'NeoListItem'\n","import { colors, semanticColors, spacing } from '@moderneinc/neo-design'\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 } from '@mui/material/styles'\n\n/**\n * Styled ListItemButton with Neo design tokens\n * Uses MUI's ListItemButton as base for proper accessibility and interaction\n */\nconst StyledListItemButton = styled(MuiListItemButton)(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n gap: spacing.spacing_2,\n borderRadius: theme.typography.pxToRem(12),\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: theme.palette.common.white,\n transition: theme.transitions.create(['border', 'background-color']),\n\n // Active (selected) state\n [`&.${listItemButtonClasses.selected}`]: {\n border: `2px solid ${semanticColors.border.tabActive}`,\n backgroundColor: theme.palette.common.white,\n\n '&:hover': {\n backgroundColor: theme.palette.common.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: colors.grey[800],\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: colors.grey[50],\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 // Disabled state\n [`&.${listItemButtonClasses.disabled}`]: {\n backgroundColor: colors.grey[50],\n opacity: 1, // Override MUI default opacity\n\n [`& .${listItemIconClasses.root}`]: {\n color: semanticColors.icons.disabled,\n },\n\n [`& .${listItemTextClasses.primary}`]: {\n color: colors.grey[300],\n },\n\n [`& .${listItemTextClasses.secondary}`]: {\n color: colors.grey[300],\n },\n },\n}))\n\n/**\n * Props for the NeoListItemButton component\n */\nexport interface NeoListItemButtonProps extends ListItemButtonProps {\n /**\n * Whether the list item is selected\n * @default false\n * @figma property1=\"Active\"\n */\n selected?: boolean\n\n /**\n * Whether the list item is disabled\n * @default false\n * @figma property1=\"Disabled\"\n */\n disabled?: boolean\n}\n\n/**\n * NeoListItemButton - 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, 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 * <NeoListItemButton 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 * </NeoListItemButton>\n * ```\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4925-3764\n *\n * Figma Props Mapping:\n * - property1=\"Active\" → selected={true}\n * - property1=\"Deselected\" → selected={false}\n * - property1=\"Disabled\" → disabled={true}\n * - showIcon → Conditional rendering of ListItemIcon child\n *\n * Design Tokens Used:\n * - semanticColors.border.tabActive (#2f42ff) - Active border\n * - semanticColors.border.primary (#d1d5db) - Default/disabled border\n * - semanticColors.icons.default (#1f2937) - Active icon color\n * - semanticColors.icons.disabled (#d1d5db) - Deselected/disabled icon color\n * - semanticColors.buttons.tertiary.disabled (#9ca3af) - Deselected text color\n * - semanticColors.typography.bodySecondary (#6b7280) - Active secondary text\n * - semanticColors.typography.button.disabled (#9ca3af) - Deselected secondary text\n * - colors.grey[800] (#1f2937) - Active primary text\n * - colors.grey[300] (#d1d5db) - Disabled text\n * - colors.grey[50] (#f9fafb) - Disabled background\n */\nexport const NeoListItemButton = ({\n children,\n selected = false,\n disabled = false,\n ...props\n}: NeoListItemButtonProps) => {\n return (\n <StyledListItemButton selected={selected} disabled={disabled} {...props}>\n {children}\n </StyledListItemButton>\n )\n}\n\nNeoListItemButton.displayName = 'NeoListItemButton'\n","import { colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport MuiCard, { type CardProps } from '@mui/material/Card'\nimport { styled } from '@mui/material/styles'\nimport type { ReactNode } from 'react'\n\n/**\n * Styled Card component with Neo design tokens\n */\nconst StyledCard = styled(MuiCard, {\n shouldForwardProp: prop => prop !== 'selected' && prop !== 'disabled',\n})<{ selected?: boolean; disabled?: boolean }>(({ theme, selected, disabled }) => ({\n width: theme.typography.pxToRem(160),\n height: theme.typography.pxToRem(160),\n padding: theme.spacing(1.5), // 12px\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2), // 16px\n backgroundColor: semanticColors.surfaces.card,\n border: `1px solid ${selected ? semanticColors.border.tabActive : semanticColors.border.card}`,\n borderRadius: theme.typography.pxToRem(4),\n boxShadow: 'none',\n transition: theme.transitions.create(['border-color']),\n cursor: 'pointer',\n\n '&:hover': {\n borderColor: selected ? semanticColors.border.tabActive : semanticColors.border.card,\n },\n\n '&:focus-visible': {\n outline: `2px solid ${semanticColors.border.tabActive}`,\n outlineOffset: '2px',\n borderColor: semanticColors.border.tabActive,\n },\n\n ...(disabled && {\n opacity: 0.5,\n pointerEvents: 'none',\n cursor: 'not-allowed',\n }),\n}))\n\n/**\n * Header section containing logo and recipe count\n */\nconst CardHeader = styled('div')({\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n width: '100%',\n})\n\n/**\n * Logo container\n */\nconst LogoContainer = styled('div')(({ theme }) => ({\n width: theme.typography.pxToRem(spacing.spacing_6),\n height: theme.typography.pxToRem(spacing.spacing_6),\n flexShrink: 0,\n}))\n\n/**\n * Recipe count badge\n */\nconst RecipeCount = 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: colors.grey[800],\n whiteSpace: 'nowrap',\n}))\n\n/**\n * Content section containing title and description\n */\nconst CardContent = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2), // 16px\n width: '100%',\n}))\n\n/**\n * Title text\n */\nconst Title = 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: colors.grey[800],\n width: '100%',\n}))\n\n/**\n * Description text\n */\nconst Description = 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: colors.grey[800],\n width: '100%',\n}))\n\n/**\n * Props for the NeoMarketplaceCard component\n */\nexport interface NeoMarketplaceCardProps extends Omit<CardProps, 'children'> {\n /**\n * The logo to display (48x48px ReactNode)\n */\n logo: ReactNode\n\n /**\n * The recipe count text (e.g., \"1,260 recipes\")\n */\n recipeCount: string\n\n /**\n * The title text\n */\n title: string\n\n /**\n * The description text\n */\n description: string\n\n /**\n * Whether the card is in selected/active state\n * @default false\n * @figma Property 1 (Active)\n */\n selected?: boolean\n\n /**\n * Whether the card is disabled\n * @default false\n * @figma Property 1 (Disabled)\n */\n disabled?: boolean\n\n /**\n * Click handler for the card\n */\n onClick?: () => void\n}\n\n/**\n * NeoMarketplaceCard - Selectable card component for marketplace items\n *\n * A fixed-size card (160x160px) displaying a logo, recipe count, title, and description.\n * Supports selected (active), disabled, and focused states.\n *\n * @example\n * ```tsx\n * <NeoMarketplaceCard\n * logo={<JavaLogo />}\n * recipeCount=\"1,260 recipes\"\n * title=\"Java\"\n * description=\"Basic building blocks for transforming Java...\"\n * selected={false}\n * disabled={false}\n * onClick={() => console.log('clicked')}\n * />\n * ```\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4286-1635&t=Bo58EpFmg6ILJtmv-11\n *\n * Figma Props Mapping:\n * - Property 1=\"Active\" → selected={true}\n * - Property 1=\"Disabled\" → disabled={true}\n * - Property 1=\"Focused\" → CSS :focus-visible state (not a prop)\n * - Property 1=\"Default\" → Base state (no props)\n *\n * Design Tokens Used:\n * - semanticColors.surfaces.card (#FFFFFF) - Card background\n * - semanticColors.border.card (#d1d5db) - Default border\n * - semanticColors.border.tabActive (#2f42ff) - Active/focused border\n * - colors.grey[800] (#1F2937) - Text color\n * - typography.fontSize.xxs (10px) - Recipe count\n * - typography.fontSize.xs (12px) - Description\n * - typography.fontSize.h6 (16px) - Title\n * - typography.fontWeight.semiBold (600) - Title and recipe count\n * - typography.fontWeight.regular (400) - Description\n */\nexport const NeoMarketplaceCard = ({\n logo,\n recipeCount,\n title,\n description,\n selected = false,\n disabled = false,\n onClick,\n ...props\n}: NeoMarketplaceCardProps) => {\n return (\n <StyledCard\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 <CardHeader>\n <LogoContainer>{logo}</LogoContainer>\n <RecipeCount>{recipeCount}</RecipeCount>\n </CardHeader>\n <CardContent>\n <Title>{title}</Title>\n <Description>{description}</Description>\n </CardContent>\n </StyledCard>\n )\n}\n\nNeoMarketplaceCard.displayName = 'NeoMarketplaceCard'\n","import { borderRadius, semanticColors, shadows } from '@moderneinc/neo-design'\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)(({ theme }) => ({\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 minWidth: 200,\n marginTop: theme.spacing(1),\n paddingTop: theme.spacing(1),\n paddingBottom: theme.spacing(1),\n },\n [`& .${listClasses.root}`]: {\n padding: 0,\n },\n}))\n\nexport interface NeoMenuProps extends MenuProps {\n /**\n * Menu content (typically NeoMenuItem components)\n */\n children?: React.ReactNode\n}\n\n/**\n * NeoMenu - Dropdown menu component based on MUI Menu\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4159-8649\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4305-41844 (Dropdown list pattern)\n *\n * Figma Props Mapping:\n * - Container shown in Figma is the Menu Paper component\n * - Menu items are styled separately via NeoMenuItem\n * - Any trigger component (Button, IconButton, etc.) can open the menu\n *\n * @example\n * ```tsx\n * const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n * const open = Boolean(anchorEl);\n *\n * // Standard menu with icons and shortcuts\n * <Button onClick={(e) => setAnchorEl(e.currentTarget)}>Open Menu</Button>\n * <NeoMenu\n * open={open}\n * anchorEl={anchorEl}\n * onClose={() => setAnchorEl(null)}\n * >\n * <NeoMenuItem icon={<Icon />} shortcut=\"⌘+P\">View profile</NeoMenuItem>\n * <NeoMenuItem>Settings</NeoMenuItem>\n * </NeoMenu>\n *\n * // Dropdown list with secondary text (user list pattern)\n * <NeoMenu open={open} anchorEl={anchorEl} onClose={() => setAnchorEl(null)}>\n * <NeoMenuItem secondaryText=\"@phoenix\">Phoenix Baker</NeoMenuItem>\n * <NeoMenuItem secondaryText=\"@olivia\" selected>Olivia Rhye</NeoMenuItem>\n * </NeoMenu>\n * ```\n */\nexport const NeoMenu = ({ children, ...props }: NeoMenuProps) => {\n return <StyledMenu {...props}>{children}</StyledMenu>\n}\n\nNeoMenu.displayName = 'NeoMenu'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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// NeoModal - Main Dialog Container\n// ============================================================================\n\nconst StyledDialog = styled(Dialog)({\n [`& .${dialogClasses.paper}`]: {\n borderRadius: borderRadius.card,\n border: `1px solid ${semanticColors.border.card}`,\n boxShadow: 'none',\n },\n\n [`& .${dialogClasses.container}`]: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n})\n\nexport interface NeoModalProps extends Omit<DialogProps, 'children'> {\n /**\n * Dialog content\n */\n children?: ReactNode\n}\n\n/**\n * NeoModal - Main modal dialog container based on MUI Dialog\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30337\n *\n * This is a composition component. Use with NeoModalHeader, NeoModalContent, and NeoModalFooter:\n *\n * @example\n * <NeoModal open={open} onClose={handleClose}>\n * <NeoModalHeader\n * title=\"Title\"\n * subtitle=\"Subtitle\"\n * onClose={handleClose}\n * />\n * <NeoModalContent>\n * Content goes here\n * </NeoModalContent>\n * <NeoModalFooter>\n * <NeoButton onClick={handleClose}>Action</NeoButton>\n * </NeoModalFooter>\n * </NeoModal>\n */\nexport const NeoModal = ({ children, ...props }: NeoModalProps) => {\n return <StyledDialog {...props}>{children}</StyledDialog>\n}\n\nNeoModal.displayName = 'NeoModal'\n\n// ============================================================================\n// NeoModalHeader - 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 NeoModalHeaderProps {\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 * NeoModalHeader - Header section with title, optional subtitle, and close button\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30337\n */\nexport const NeoModalHeader = ({\n title,\n subtitle,\n href,\n LinkComponent,\n onClose,\n hideCloseButton = false,\n children,\n}: NeoModalHeaderProps) => {\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\nNeoModalHeader.displayName = 'NeoModalHeader'\n\n// ============================================================================\n// NeoModalContent - 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 NeoModalContentProps {\n /**\n * Content to display in the modal body\n */\n children?: ReactNode\n}\n\n/**\n * NeoModalContent - Main content area of the modal\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30337\n */\nexport const NeoModalContent = ({ children }: NeoModalContentProps) => {\n return <StyledDialogContent dividers={false}>{children}</StyledDialogContent>\n}\n\nNeoModalContent.displayName = 'NeoModalContent'\n\n// ============================================================================\n// NeoModalFooter - 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 NeoModalFooterProps {\n /**\n * Optional leading icon or content (e.g., settings icon)\n */\n leadingContent?: ReactNode\n\n /**\n * Action buttons (typically NeoButton components)\n */\n children?: ReactNode\n}\n\n/**\n * NeoModalFooter - Footer section with optional leading content and action buttons\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4187-30337\n */\nexport const NeoModalFooter = ({ leadingContent, children }: NeoModalFooterProps) => {\n return (\n <StyledDialogActions>\n {leadingContent}\n <FooterActionsGroup>{children}</FooterActionsGroup>\n </StyledDialogActions>\n )\n}\n\nNeoModalFooter.displayName = 'NeoModalFooter'\n","import { borderRadius, colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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 ReactNode, useEffect, useRef, useState } from 'react'\nimport { NeoBreadcrumbLink, NeoBreadcrumbs } from '../Breadcrumbs/Breadcrumbs'\nimport { NeoLoadingSpinner } 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\nexport interface NeoPageContentProps extends BoxProps {\n /**\n * Main heading displayed on the page\n *\n * @figma Title text in header (node-id:5-6407)\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 * { label: 'Settings', href: '/settings' },\n * { label: 'Team', href: '/team' },\n * { label: 'Team Details' },\n * ]}\n * ```\n */\n breadcrumbs?: BreadcrumbItem[]\n\n /**\n * Action button displayed in the top-right corner\n *\n * @figma Button in top-right (node-id:5-6408)\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 * 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.surfaces.white,\n flexShrink: 0,\n}))\n\n/**\n * Page title typography\n */\nconst PageTitle = styled(Typography)(() => ({\n fontSize: typography.fontSize.h3,\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1.4,\n color: colors.grey['900'], // #111827 - matches Figma typography/page-header\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 * NeoPageContent - Page content surface from the Moderne Design System\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=5066-3274\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 * ## Figma Props Mapping\n * - `pageTitle` → Title text in header (node-id:4756-11109)\n * - `subtitle` → Subtitle text (optional)\n * - `action` → Button in top-right corner (node-id:4756-11111)\n * - `children` → Content area (node-id:4756-11104)\n *\n * ## Design Tokens\n * - Background: `semanticColors.surfaces.white` (#FFFFFF)\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 * <NeoPageContent\n * pageTitle=\"Users\"\n * action={<IconButton>...</IconButton>}\n * >\n * <NeoDataGrid ... />\n * </NeoPageContent>\n * ```\n *\n * @example\n * ```tsx\n * // With subtitle\n * <NeoPageContent\n * pageTitle=\"Settings\"\n * subtitle=\"Manage your account preferences\"\n * >\n * <SettingsContent />\n * </NeoPageContent>\n * ```\n *\n * @example\n * ```tsx\n * // With sticky header\n * <NeoPageContent\n * pageTitle=\"Long Content\"\n * sticky\n * >\n * <VeryLongContent />\n * </NeoPageContent>\n * ```\n */\nexport function NeoPageContent({\n pageTitle,\n subtitle,\n breadcrumbs,\n action,\n sticky = false,\n contentMaxWidth = false,\n centerContent = true,\n disableGutters = false,\n isLoading = false,\n showBackToTop = true,\n children,\n sx,\n ...boxProps\n}: NeoPageContentProps) {\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.length > 0 && (\n <NeoBreadcrumbs>\n {breadcrumbs.map((item, index) => (\n <NeoBreadcrumbLink\n key={item.href ?? index}\n href={item.href}\n current={index === breadcrumbs.length - 1}\n >\n {item.label}\n </NeoBreadcrumbLink>\n ))}\n </NeoBreadcrumbs>\n )}\n {/* Title + Action row */}\n <Stack\n direction=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"flex-start\"\n sx={{ gap: '1rem' }}\n >\n <Stack sx={{ gap: '0.5rem', flexGrow: 1 }}>\n <PageTitle>{pageTitle}</PageTitle>\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 <NeoLoadingSpinner />\n </Box>\n ) : (\n children\n )\n\n return (\n <>\n <Box\n sx={{\n backgroundColor: semanticColors.surfaces.white,\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: `${spacing.spacing_2_1_2}px`,\n height: '100%',\n overflow: 'auto',\n }}\n >\n {/* Header section - sticky or static */}\n {sticky ? (\n <StickyHeader ref={headerRef} sx={{ pt: `${spacing.spacing_2}px` }}>\n {headerContent}\n </StickyHeader>\n ) : (\n <Box ref={headerRef} sx={{ mb: `${spacing.spacing_1}px` }}>\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: `${semanticColors.buttons.primary.default}20`,\n color: semanticColors.buttons.primary.default,\n '&:hover': {\n backgroundColor: `${semanticColors.buttons.primary.default}30`,\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\nNeoPageContent.displayName = 'NeoPageContent'\n","import type { GridSlots } from '@mui/x-data-grid-pro'\nimport { NeoDataGrid, type NeoDataGridProps } from '../DataGrid/DataGrid'\nimport { NeoFooter } from '../Footer/Footer'\n\nexport interface NeoPaginatedGridProps extends Omit<NeoDataGridProps, 'slots'> {\n /**\n * Custom slots (merged with Neo defaults)\n */\n slots?: Partial<GridSlots>\n}\n\n/**\n * NeoPaginatedGrid - DataGrid with standard pagination controls\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4260-72484\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 NeoDataGrid\n *\n * @example\n * <NeoPaginatedGrid\n * rows={rows}\n * columns={columns}\n * paginationModel={{ page: 0, pageSize: 10 }}\n * onPaginationModelChange={handlePaginationChange}\n * rowCount={100}\n * />\n */\nexport function NeoPaginatedGrid({\n slots,\n pageSizeOptions,\n slotProps: userSlotProps,\n ...props\n}: NeoPaginatedGridProps) {\n // Merge custom slots with pagination defaults\n const mergedSlots: Partial<GridSlots> = {\n footer: NeoFooter,\n ...slots,\n }\n\n return (\n <NeoDataGrid\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 NeoDataGrid 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\nNeoPaginatedGrid.displayName = 'NeoPaginatedGrid'\n","import { borderRadius, colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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: colors.grey[200],\n\n [`& .${linearProgressClasses.bar}`]: {\n borderRadius: borderRadius.xS,\n backgroundColor: colors.digitalBlue[500],\n },\n\n [`&.${linearProgressClasses.colorPrimary}`]: {\n backgroundColor: colors.grey[200],\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: colors.digitalBlue[500],\n },\n },\n\n // Cancelled variant uses warning color\n '&[data-variant=\"cancelled\"]': {\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: semanticColors.status.warning.medium,\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: colors.grey[800],\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 NeoProgressbarProps 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 * NeoProgressbar - Linear progress indicator based on MUI LinearProgress\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4120-36679\n *\n * Figma Props Mapping:\n * - progress (0%-100% | Cancelled) → value (0-100) + variant (default|cancelled)\n * - label (False|Right|Top|Bottom) → labelPosition (none|right|top|bottom)\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 NeoProgressbar = ({\n value = 0,\n labelPosition = 'none',\n variant = 'default',\n labelText,\n ...props\n}: NeoProgressbarProps) => {\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\nNeoProgressbar.displayName = 'NeoProgressbar'\n","import { borderRadius, semanticColors, spacing, typography } from '@moderneinc/neo-design'\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.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 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.icons.disabled,\n },\n },\n\n [`& .${inputAdornmentClasses.root}`]: {\n color: semanticColors.icons.placeholder,\n\n '& svg': {\n width: 20,\n height: 20,\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 NeoQuickFilterProps {\n /**\n * Placeholder text for the search input\n * @default \"Search...\"\n *\n * @figma Search placeholder\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 * NeoQuickFilter - 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 * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4257-66953\n *\n * Figma Props Mapping:\n * - Search placeholder → placeholder prop\n * - Search icon → Start adornment with Search icon\n * - Clear button → QuickFilterClear component\n *\n * @example\n * // Basic usage in DataGrid toolbar\n * <DataGrid\n * rows={rows}\n * columns={columns}\n * slots={{\n * toolbar: () => (\n * <NeoToolbar>\n * <NeoQuickFilter placeholder=\"Search users...\" />\n * </NeoToolbar>\n * ),\n * }}\n * />\n */\nexport const NeoQuickFilter = ({\n placeholder = 'Search...',\n onKeyDown,\n autoFocus = false,\n}: NeoQuickFilterProps) => {\n return (\n <QuickFilter>\n <QuickFilterControl\n onKeyDown={onKeyDown}\n render={({ ref, ...props }) => (\n <StyledTextField\n {...props}\n inputRef={ref}\n placeholder={placeholder}\n autoFocus={autoFocus}\n variant=\"standard\"\n slotProps={{\n 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\nNeoQuickFilter.displayName = 'NeoQuickFilter'\n","import { semanticColors, spacing, typography } from '@moderneinc/neo-design'\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 }: { size: 'small' | 'medium' }) => {\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.input}\n strokeWidth=\"1\"\n fill=\"transparent\"\n />\n </svg>\n )\n}\n\nconst CheckedIcon = ({ size }: { size: 'small' | 'medium' }) => {\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 blue background and border */}\n <circle\n cx={dimensions / 2}\n cy={dimensions / 2}\n r={radius - 0.5}\n fill={semanticColors.buttons.primary.default}\n stroke={semanticColors.buttons.primary.default}\n strokeWidth=\"1\"\n />\n {/* Inner white dot */}\n <circle\n cx={dimensions / 2}\n cy={dimensions / 2}\n r={innerRadius}\n fill={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\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\n [`&.${radioClasses.disabled}`]: {\n opacity: 0.5,\n },\n }\n})\n\nexport interface NeoRadioProps extends Omit<RadioProps, 'size'> {\n /**\n * The size of the radio button\n * @default \"medium\"\n *\n * @figma Size\n */\n size?: RadioSize\n\n /**\n * The label text displayed next to the radio button\n *\n * @figma Text (label)\n */\n label?: ReactNode\n\n /**\n * The helper text displayed below the label\n *\n * @figma Supporting Text\n */\n helperText?: ReactNode\n}\n\n/**\n * NeoRadio - Radio button component based on MUI Radio\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-40039\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-40150\n *\n * Figma Props Mapping:\n * - Checked (True|False) → checked prop\n * - Size (sm|md) → size prop (small|medium)\n * - State=Disabled → disabled prop\n * - State=Hover → CSS :hover\n * - State=Focused → CSS :focus-visible\n * - State=Default → default state\n * - Text (label) → label prop\n * - Supporting Text → helperText prop\n *\n * @example\n * // Basic radio button (just the icon)\n * <NeoRadio />\n *\n * @example\n * // With label\n * <NeoRadio label=\"Remember me\" />\n *\n * @example\n * // With label and helper text\n * <NeoRadio label=\"Remember me\" helperText=\"Save my login details for next time.\" />\n *\n * @example\n * // Small size\n * <NeoRadio size=\"small\" label=\"Remember me\" />\n *\n * @example\n * // Controlled\n * <NeoRadio checked={value === 'option1'} onChange={handleChange} value=\"option1\" label=\"Option 1\" />\n *\n * @example\n * // Radio group\n * <RadioGroup value={value} onChange={handleChange}>\n * <NeoRadio value=\"option1\" label=\"Option 1\" helperText=\"First option\" />\n * <NeoRadio value=\"option2\" label=\"Option 2\" helperText=\"Second option\" />\n * </RadioGroup>\n */\nexport const NeoRadio = ({\n size = 'medium',\n label,\n helperText,\n disabled,\n ...props\n}: NeoRadioProps) => {\n // Custom icons based on size\n const uncheckedIcon = <UncheckedIcon size={size} />\n const checkedIcon = <CheckedIcon size={size} />\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\nNeoRadio.displayName = 'NeoRadio'\n","import { borderRadius, colors } from '@moderneinc/neo-design'\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 NeoSkeleton component\n */\nexport interface NeoSkeletonProps 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})<NeoSkeletonProps>(({ theme, colorTheme = 'light', position = 'start' }) => ({\n borderRadius: borderRadius.xS,\n transform: 'none',\n\n // Light theme colors\n ...(colorTheme === 'light' && {\n backgroundColor: alpha(colors.grey[900], 0.08),\n\n '&::after': {\n background: `linear-gradient(90deg, transparent, ${alpha(colors.grey[900], 0.08)}, 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 * NeoSkeleton - Loading skeleton component based on MUI Skeleton\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4286-5809\n *\n * Figma Props Mapping:\n * - Position (Start|End) → position (start|end) - controls wave animation direction\n * - Theme (Light|Dark) → colorTheme (light|dark) - controls background and wave colors\n * - Animation (Wave) → Built-in MUI wave animation (always enabled)\n *\n * Usage:\n * ```tsx\n * <NeoSkeleton width={200} height={32} />\n * <NeoSkeleton colorTheme=\"dark\" position=\"end\" width={200} height={32} />\n * ```\n */\nexport const NeoSkeleton = ({\n colorTheme = 'light',\n position = 'start',\n ...props\n}: NeoSkeletonProps) => {\n return (\n <StyledSkeleton\n animation=\"wave\"\n variant=\"rectangular\"\n colorTheme={colorTheme}\n position={position}\n {...props}\n />\n )\n}\n\nNeoSkeleton.displayName = 'NeoSkeleton'\n","import { borderRadius, colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport Alert, { type AlertProps, alertClasses } from '@mui/material/Alert'\nimport { styled } from '@mui/material/styles'\nimport { CircleAlert, CircleCheck, WifiOff } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\n// Type for custom styled props\ntype StyledAlertProps = {\n severity?: 'success' | 'error' | 'neutral'\n variant?: 'outlined' | 'filled'\n}\n\n/**\n * Styled Alert component with custom severity and variant styling\n * Uses Custom Variants Pattern to add 'neutral' severity\n */\nconst StyledAlert = styled(Alert, {\n shouldForwardProp: prop => prop !== 'severity' && prop !== 'variant',\n})<StyledAlertProps>(({ theme, severity = 'success', variant = 'outlined' }) => {\n // Color mapping for different severities\n const colorMap = {\n success: {\n light: semanticColors.status.success.light,\n medium: semanticColors.status.success.medium,\n },\n error: {\n light: semanticColors.status.error.light,\n medium: semanticColors.status.error.medium,\n },\n neutral: {\n light: semanticColors.status.neutral.light,\n medium: semanticColors.status.neutral.medium,\n },\n }\n\n const severityColors = colorMap[severity]\n\n // Variant-specific styles based on Phase 1.1 analysis\n const variantStyles = (() => {\n if (variant === 'filled') {\n // Dark mode: solid background with white text\n return {\n backgroundColor: severityColors.medium,\n border: 'none',\n color: semanticColors.typography.tooltip,\n padding: theme.spacing(0.75, 3),\n boxShadow: `0px 1px 3px ${semanticColors.surfaces.shadowNeutral}1a`, // 1a = 10% opacity\n\n [`& .${alertClasses.icon}`]: {\n color: semanticColors.typography.tooltip,\n },\n\n [`& .${alertClasses.message}`]: {\n color: semanticColors.typography.tooltip,\n },\n }\n }\n\n // Light mode: light background with border\n return {\n backgroundColor: severityColors.light,\n border: `1px solid ${severityColors.medium}`,\n color: colors.grey[800],\n padding: theme.spacing(0.125, 2),\n\n [`& .${alertClasses.icon}`]: {\n color: severityColors.medium,\n },\n\n [`& .${alertClasses.message}`]: {\n color: colors.grey[800],\n },\n }\n })()\n\n return {\n height: spacing.spacing_8,\n width: '100%',\n borderRadius: borderRadius.xS,\n alignItems: 'center',\n fontFamily: typography.fontFamily.body,\n fontSize: theme.typography.pxToRem(typography.fontSize.default),\n fontWeight: typography.fontWeight.medium,\n lineHeight: 1.5,\n\n ...variantStyles,\n\n // Supporting text styling\n [`& .${alertClasses.message} > *:not(:first-child)`]: {\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: typography.fontWeight.regular,\n color:\n variant === 'filled'\n ? semanticColors.typography.tooltip\n : semanticColors.typography.bodySecondary,\n lineHeight: 1.4,\n marginTop: theme.spacing(0.25),\n },\n }\n})\n\n/**\n * Props for the NeoStatusBanner component\n */\nexport interface NeoStatusBannerProps extends Omit<AlertProps, 'severity' | 'variant'> {\n /**\n * The severity level of the status banner\n * @default \"success\"\n * @figma Status\n */\n severity?: 'success' | 'error' | 'neutral'\n\n /**\n * The visual variant style\n * @default \"outlined\"\n * @figma Mode\n */\n variant?: 'outlined' | 'filled'\n\n /**\n * The content to display inside the banner\n */\n children?: ReactNode\n\n /**\n * Custom icon to display (defaults to severity-based icon)\n */\n icon?: ReactNode\n}\n\n/**\n * NeoStatusBanner - Status banner component for displaying system status messages\n *\n * Displays status information with different severity levels (success, error, neutral) and\n * visual modes (outlined for light backgrounds, filled for emphasis).\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4921-3427\n *\n * Figma Props Mapping:\n * - Status (Success|Error|Offline) → severity ('success'|'error'|'neutral')\n * - Mode (Light|Dark) → variant ('outlined'|'filled')\n *\n * Design Tokens Used:\n * - status.success.light, status.success.medium\n * - status.error.light, status.error.medium\n * - status.neutral.light, status.neutral.medium\n * - typography.tooltip, typography.bodySecondary\n * - grey[800]\n * - fontSize.default, fontSize.sm\n * - fontWeight.medium, fontWeight.regular\n * - fontFamily.body\n * - surfaces.shadowNeutral\n */\nexport const NeoStatusBanner = ({\n severity = 'success',\n variant = 'outlined',\n icon,\n children,\n ...props\n}: NeoStatusBannerProps) => {\n // Icon mapping for different severities\n const iconMap = {\n success: <CircleCheck size={24} />,\n error: <CircleAlert size={24} />,\n neutral: <WifiOff size={24} />,\n }\n\n const defaultIcon = iconMap[severity]\n\n // Type assertion needed: severity and variant are custom props filtered by shouldForwardProp\n // biome-ignore lint/suspicious/noExplicitAny: Custom props pattern requires any cast\n const StyledAlertAny = StyledAlert as any\n\n return (\n <StyledAlertAny {...props} severity={severity} variant={variant} icon={icon ?? defaultIcon}>\n {children}\n </StyledAlertAny>\n )\n}\n\nNeoStatusBanner.displayName = 'NeoStatusBanner'\n","import { semanticColors, spacing } from '@moderneinc/neo-design'\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 { NeoTag } from '../Tag/Tag'\n\n/**\n * NeoTabs - Tabs container component based on MUI Tabs\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=3368-26152\n *\n * Figma Props Mapping:\n * - Horizontal tab bar → default layout\n * - Tab selection → value prop + onChange\n * - Active indicator → styled via indicator slot\n */\nexport const NeoTabs = styled(MuiTabs)(() => ({\n minHeight: spacing.spacing_5,\n\n [`& .${tabsClasses.indicator}`]: {\n backgroundColor: semanticColors.border.tabActive,\n height: 2,\n },\n\n [`& .${tabsClasses.flexContainer}`]: {\n gap: 0,\n },\n}))\n\nNeoTabs.displayName = 'NeoTabs'\n\nconst StyledTab = styled(MuiTab)(({ theme }) => ({\n minHeight: spacing.spacing_5,\n padding: `${theme.spacing(1)} ${theme.spacing(2)}`,\n textTransform: 'none',\n fontWeight: 500,\n fontSize: theme.typography.pxToRem(14),\n lineHeight: 1.5,\n color: semanticColors.typography.tab.inactive,\n transition: 'none', // Remove animation\n\n [`&.${tabClasses.selected}`]: {\n color: semanticColors.typography.tab.active,\n fontWeight: 600,\n },\n\n [`&.${buttonBaseClasses.focusVisible}`]: {\n outline: `2px solid ${semanticColors.buttons.primary.focus}`,\n outlineOffset: -2,\n },\n\n [`&.${tabClasses.disabled}`]: {\n color: semanticColors.typography.button.disabled,\n cursor: 'not-allowed',\n pointerEvents: 'auto',\n },\n}))\n\nconst TabLabelContainer = styled('span')(({ theme }) => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n}))\n\nexport interface NeoTabProps extends Omit<TabProps, 'label'> {\n /**\n * The label for the tab\n *\n * @figma Text layer in tab\n */\n label: ReactNode\n\n /**\n * Optional count to display in a tag next to the label\n * @default undefined\n *\n * @figma Tag with number (999)\n */\n count?: number | string\n\n /**\n * Tab value identifier\n *\n * @figma Used for Current=True/False state\n */\n value: string | number\n}\n\n/**\n * NeoTab - Individual tab button component based on MUI Tab\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=3368-26152\n *\n * Figma Props Mapping:\n * - Current=True/False → Controlled by parent NeoTabs value\n * - State=Default → default styling\n * - State=Hover → CSS :hover\n * - State=Focus → CSS :focus-visible\n * - Tag count → count prop (renders NeoTag)\n * - Text label → label prop\n */\nexport const NeoTab = ({ label, count, ...props }: NeoTabProps) => {\n const tabLabel =\n count !== undefined ? (\n <TabLabelContainer>\n {label}\n <NeoTag label={String(count)} size=\"large\" variant=\"outlined\" color=\"default\" />\n </TabLabelContainer>\n ) : (\n label\n )\n\n return <StyledTab label={tabLabel} {...props} />\n}\n\nNeoTab.displayName = 'NeoTab'\n","import { borderRadius, colors, semanticColors, spacing, typography } from '@moderneinc/neo-design'\nimport Alert, { type AlertProps, alertClasses } from '@mui/material/Alert'\nimport Button from '@mui/material/Button'\nimport IconButton from '@mui/material/IconButton'\nimport LinearProgress, { linearProgressClasses } from '@mui/material/LinearProgress'\nimport Stack from '@mui/material/Stack'\nimport { styled } from '@mui/material/styles'\nimport { X } from 'lucide-react'\nimport type { ReactNode } from 'react'\n\ntype StyledAlertProps = Omit<AlertProps, 'variant'> & {\n variant?: NeoToastProps['variant']\n showProgress?: boolean\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 !== 'variant' && prop !== 'showProgress',\n})<StyledAlertProps>(({ theme, variant = 'default' }) => {\n // Base styles\n const baseStyles = {\n padding: spacing.spacing_2,\n borderRadius: borderRadius.s,\n gap: spacing.spacing_4,\n alignItems: 'flex-start',\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n lineHeight: 1.4,\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 // Variant-specific styles\n const variantStyles: Record<string, object> = {\n default: {\n backgroundColor: semanticColors.surfaces.snackbarDarkMode,\n color: colors.grey['800'],\n border: `1px solid ${semanticColors.border.primary}`,\n },\n dark: {\n backgroundColor: semanticColors.surfaces.snackbarLightMode,\n color: semanticColors.surfaces.white,\n border: `1px solid ${semanticColors.surfaces.snackbarLightMode}`,\n },\n brand: {\n backgroundColor: semanticColors.surfaces.snackbarBrand,\n color: semanticColors.surfaces.white,\n border: `1px solid ${semanticColors.surfaces.snackbarBrand}`,\n },\n error: {\n backgroundColor: semanticColors.status.error.light,\n color: semanticColors.status.error.dark,\n border: `1px solid ${semanticColors.status.error.medium}`,\n },\n success: {\n backgroundColor: semanticColors.status.success.light,\n color: semanticColors.status.success.dark,\n border: `1px solid ${semanticColors.status.success.medium}`,\n },\n info: {\n backgroundColor: semanticColors.status.info.light,\n color: semanticColors.status.info.dark,\n border: `1px solid ${semanticColors.status.info.medium}`,\n },\n download: {\n backgroundColor: semanticColors.surfaces.snackbarDarkMode,\n color: colors.grey['800'],\n border: `1px solid ${semanticColors.border.primary}`,\n },\n }\n\n return {\n ...baseStyles,\n ...variantStyles[variant],\n }\n})\n\nconst ToastTitle = styled('p')<{ variant?: NeoToastProps['variant'] }>(\n ({ theme, variant = 'default' }) => {\n const colorMap: Record<string, string> = {\n default: colors.grey['700'],\n dark: semanticColors.surfaces.white,\n brand: semanticColors.surfaces.white,\n error: semanticColors.status.error.dark,\n success: semanticColors.status.success.dark,\n info: semanticColors.status.info.dark,\n download: colors.grey['700'],\n }\n\n return {\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: 600,\n lineHeight: 1.4,\n color: colorMap[variant],\n }\n }\n)\n\nconst ToastMessage = styled('p')<{ variant?: NeoToastProps['variant'] }>(\n ({ theme, variant = 'default' }) => {\n const colorMap: Record<string, string> = {\n default: semanticColors.typography.bodySecondary,\n dark: colors.grey['200'],\n brand: colors.grey['200'],\n error: semanticColors.status.error.dark,\n success: semanticColors.status.success.dark,\n info: semanticColors.status.info.dark,\n download: colors.grey['800'],\n }\n\n return {\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.sm),\n fontWeight: 400,\n lineHeight: 1.4,\n color: colorMap[variant],\n }\n }\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 !== 'toastVariant' && prop !== 'primary',\n})<{ toastVariant?: NeoToastProps['variant']; primary?: boolean }>(\n ({ toastVariant = 'default', primary }) => {\n const getColor = () => {\n if (primary) {\n if (toastVariant === 'dark' || toastVariant === 'brand') {\n return colors.digitalBlue['200']\n }\n return semanticColors.typography.link.primary\n }\n\n // Non-primary button colors\n if (toastVariant === 'dark' || toastVariant === 'brand') {\n return semanticColors.surfaces.white\n }\n if (toastVariant === 'error') {\n return semanticColors.status.error.dark\n }\n if (toastVariant === 'success') {\n return semanticColors.status.success.dark\n }\n if (toastVariant === 'info') {\n return semanticColors.status.info.dark\n }\n // default and download variants use icon placeholder color\n return semanticColors.icons.placeholder\n }\n\n return {\n padding: 0,\n minWidth: 'auto',\n fontSize: typography.fontSize.sm,\n fontWeight: 500,\n lineHeight: 'normal',\n textTransform: 'none',\n color: getColor(),\n '&:hover': {\n backgroundColor: 'transparent',\n textDecoration: 'underline',\n },\n }\n }\n)\n\nconst ProgressSection = styled(Stack)({\n gap: spacing.spacing_1,\n width: '100%',\n})\n\nconst FileName = styled('p')(({ theme }) => ({\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n fontWeight: 500,\n lineHeight: 1.5,\n color: colors.grey['800'],\n}))\n\nconst ProgressLabel = styled('p')(({ theme }) => ({\n margin: 0,\n fontSize: theme.typography.pxToRem(typography.fontSize.xs),\n fontWeight: 500,\n lineHeight: 1.5,\n color: colors.grey['800'],\n}))\n\nconst StyledLinearProgress = styled(LinearProgress)({\n width: '100%',\n height: spacing.spacing_2,\n borderRadius: borderRadius.s,\n backgroundColor: colors.grey['200'],\n [`& .${linearProgressClasses.bar}`]: {\n backgroundColor: semanticColors.buttons.primary.default,\n borderRadius: `${borderRadius.xS}px 0 0 ${borderRadius.xS}px`,\n },\n})\n\nconst DownloadActions = styled(Stack)({\n gap: `${spacing.spacing_4}px`,\n alignItems: 'center',\n})\n\nconst DownloadIconButton = styled(IconButton)({\n padding: 0,\n width: 16,\n height: 16,\n color: colors.grey['800'],\n '&:hover': {\n backgroundColor: 'transparent',\n },\n})\n\nexport interface NeoToastProps extends Omit<AlertProps, 'variant' | 'severity' | 'color'> {\n /**\n * The visual style variant of the toast\n * @default \"default\"\n */\n variant?: 'default' | 'dark' | 'brand' | 'error' | 'success' | 'info' | 'download'\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 true\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 * Progress value (0-100) for download variant\n */\n progress?: number\n\n /**\n * File name for download variant\n */\n fileName?: string\n\n /**\n * Callback when close button is clicked\n */\n onClose?: () => void\n}\n\n/**\n * NeoToast - Notification/Toast component based on MUI Alert\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4122-37223\n *\n * Figma Props Mapping:\n * - type (Light mode|Dark mode|Brand color|Error|Success|Info|Download) → variant (default|dark|brand|error|success|info|download)\n * - header → title (string)\n * - supportingText → message (string)\n * - xCloseButton → showClose (boolean)\n * - actions → actions (ReactNode)\n * - Progress bar → progress (number 0-100)\n */\nexport const NeoToast = ({\n variant = 'default',\n title,\n message,\n showClose = true,\n actions,\n progress,\n fileName,\n onClose,\n ...props\n}: NeoToastProps) => {\n const isDownloadVariant = variant === 'download'\n\n return (\n <StyledAlert\n {...props}\n variant={variant}\n showProgress={isDownloadVariant}\n action={\n showClose && !isDownloadVariant ? (\n <IconButton\n size=\"small\"\n onClick={onClose}\n sx={{ color: semanticColors.icons.placeholder }}\n >\n <X size={16} />\n </IconButton>\n ) : undefined\n }\n >\n {isDownloadVariant ? (\n <>\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 && <ToastTitle variant={variant}>{title}</ToastTitle>}\n {showClose && (\n <DownloadActions direction=\"row\">\n <DownloadIconButton size=\"small\">\n {/* Pause icon placeholder */}\n <Stack sx={{ width: 16, height: 16 }} />\n </DownloadIconButton>\n <DownloadIconButton size=\"small\" onClick={onClose}>\n <X size={16} />\n </DownloadIconButton>\n </DownloadActions>\n )}\n </Stack>\n <ProgressSection>\n <Stack\n direction=\"row\"\n sx={{ alignItems: 'flex-end', justifyContent: 'space-between', width: '100%' }}\n >\n {fileName && <FileName>{fileName}</FileName>}\n {progress !== undefined && <ProgressLabel>{progress}%</ProgressLabel>}\n </Stack>\n <StyledLinearProgress variant=\"determinate\" value={progress ?? 0} />\n </ProgressSection>\n </>\n ) : (\n <>\n <Stack sx={{ gap: `${spacing.spacing_1}px`, width: '100%' }}>\n {title && <ToastTitle variant={variant}>{title}</ToastTitle>}\n {message && <ToastMessage variant={variant}>{message}</ToastMessage>}\n </Stack>\n {actions && <ToastActions direction=\"row\">{actions}</ToastActions>}\n </>\n )}\n </StyledAlert>\n )\n}\n\n/**\n * Helper component for creating toast action buttons with proper styling\n */\nexport const NeoToastButton = ({\n primary,\n variant = 'default',\n children,\n ...props\n}: {\n primary?: boolean\n variant?: NeoToastProps['variant']\n children: ReactNode\n} & Omit<React.ComponentProps<typeof Button>, 'variant'>) => {\n return (\n <ToastButton variant=\"text\" toastVariant={variant} primary={primary} {...props}>\n {children}\n </ToastButton>\n )\n}\n\nNeoToast.displayName = 'NeoToast'\nNeoToastButton.displayName = 'NeoToastButton'\n","import { semanticColors, shadows, spacing, typography } from '@moderneinc/neo-design'\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 }>(({ disabled }) => ({\n display: 'inline-flex',\n alignItems: 'flex-start',\n gap: 12,\n cursor: disabled ? 'not-allowed' : 'pointer',\n userSelect: 'none',\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: 500,\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: 400,\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: 36,\n height: 20,\n thumbSize: 16,\n trackPadding: 2,\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: theme.palette.common.white,\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.buttons.primary.focus}`,\n outlineOffset: 2,\n },\n },\n\n // Checked state\n [`&.${switchClasses.checked}`]: {\n transform: `translateX(${thumbTranslate}px)`,\n color: theme.palette.common.white,\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 },\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.neutralSmall.x}px ${shadows.neutralSmall.y}px ${shadows.neutralSmall.blur}px ${shadows.neutralSmall.spread}px ${shadows.neutralSmall.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.border.secondary,\n opacity: 1,\n border: 'none',\n transition: theme.transitions.create(['background-color'], {\n duration: theme.transitions.duration.short,\n }),\n },\n }\n})\n\nexport interface NeoToggleProps extends Omit<SwitchProps, 'size'> {\n /**\n * The size of the toggle\n * @default \"medium\"\n *\n * @figma Size\n */\n size?: ToggleSize\n\n /**\n * The label text displayed next to the toggle\n *\n * @figma Text (label)\n */\n label?: ReactNode\n\n /**\n * The helper text displayed below the label\n *\n * @figma Text (supporting text)\n */\n helperText?: ReactNode\n}\n\n/**\n * NeoToggle - Binary on/off switch component based on MUI Switch\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4045-26221\n *\n * Figma Props Mapping:\n * - Pressed (True|False) → checked prop\n * - Size (sm|md) → size prop (small|medium)\n * - State=Disabled → disabled prop\n * - State=Hover → CSS :hover\n * - State=Focus → CSS :focus-visible\n * - Text (label) → label prop\n * - Text (supporting text) → helperText prop\n *\n * @example\n * // Basic toggle\n * <NeoToggle />\n *\n * @example\n * // With label\n * <NeoToggle label=\"Remember me\" />\n *\n * @example\n * // With label and helper text\n * <NeoToggle label=\"Remember me\" helperText=\"Save my login details for next time.\" />\n *\n * @example\n * // Small size\n * <NeoToggle size=\"small\" label=\"Remember me\" />\n *\n * @example\n * // Controlled\n * <NeoToggle checked={isChecked} onChange={handleChange} label=\"Remember me\" />\n */\nexport const NeoToggle = ({\n size = 'medium',\n label,\n helperText,\n disabled,\n ...props\n}: NeoToggleProps) => {\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}>\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\nNeoToggle.displayName = 'NeoToggle'\n","import { semanticColors, spacing } from '@moderneinc/neo-design'\nimport { styled } from '@mui/material/styles'\nimport { Toolbar, type ToolbarProps } from '@mui/x-data-grid-pro'\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 NeoToolbarProps extends ToolbarProps {\n /**\n * Toolbar content (typically NeoQuickFilter, NeoButton, NeoToggle, etc.)\n */\n children?: ReactNode\n}\n\n/**\n * NeoToolbar - 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 * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4257-66919\n *\n * @example\n * // Basic toolbar with search\n * <NeoToolbar>\n * <Box sx={{ display: 'flex', gap: 2, alignItems: 'center' }}>\n * <NeoQuickFilter placeholder=\"Search...\" />\n * </Box>\n * </NeoToolbar>\n *\n * @example\n * // Full toolbar with left controls and right actions\n * <NeoToolbar>\n * <Box sx={{ display: 'flex', gap: 2, alignItems: 'center' }}>\n * <NeoQuickFilter placeholder=\"Search...\" />\n * <NeoButton variant=\"secondary\" size=\"small\">\n * <SlidersHorizontal size={20} />\n * Filters\n * <NeoTag label=\"4\" variant=\"filled\" color=\"info\" />\n * </NeoButton>\n * <NeoButton variant=\"secondary\" size=\"small\">\n * <Columns3 size={16} />\n * Columns\n * </NeoButton>\n * <NeoToggle size=\"small\" label=\"Toggle option\" checked={true} />\n * </Box>\n * <Box sx={{ display: 'flex', gap: 2, alignItems: 'center', height: 40 }}>\n * <NeoButton variant=\"secondary\" size=\"small\">\n * Actions\n * <ChevronDown size={16} />\n * </NeoButton>\n * </Box>\n * </NeoToolbar>\n */\nexport const NeoToolbar = ({ children, ...props }: NeoToolbarProps) => {\n return <StyledToolbar {...props}>{children}</StyledToolbar>\n}\n\nNeoToolbar.displayName = 'NeoToolbar'\n","import { colors, semanticColors, shadows, typography } from '@moderneinc/neo-design'\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'\n\n/**\n * Variant type for NeoTooltip\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, // #ffffff - white\n },\n dark: {\n backgroundColor: colors.grey[50], // #f9fafb - very light gray\n color: colors.grey[800], // #1f2937 - dark gray\n },\n brand: {\n backgroundColor: colors.digitalBlue[800], // #131e7a - dark blue\n color: semanticColors.typography.tooltip, // #ffffff - white\n },\n}\n\n/**\n * Styled MUI Tooltip with Neo design system tokens\n */\nconst StyledTooltip = styled(Tooltip, {\n shouldForwardProp: prop => prop !== 'variant' && prop !== 'description',\n})<{ variant?: TooltipVariant; description?: string }>(\n ({ theme, 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: theme.typography.pxToRem(typography.fontSize.xs), // 12px\n fontWeight: hasDescription ? typography.fontWeight.medium : typography.fontWeight.medium,\n lineHeight: hasDescription ? 1.5 : 1, // 18px for description, tight for simple\n borderRadius: hasDescription ? theme.spacing(1) : theme.spacing(0.5), // 8px : 4px\n padding: hasDescription\n ? theme.spacing(1.5) // 12px all sides\n : theme.spacing(0, 1), // 0 vertical, 8px horizontal\n ...(hasDescription && {\n maxWidth: 296,\n }),\n ...(!hasDescription && {\n height: 26,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }),\n // Apply shadow\n boxShadow: `${shadows.neutralMedium.x}px ${shadows.neutralMedium.y}px ${shadows.neutralMedium.blur}px ${shadows.neutralMedium.spread}px ${shadows.neutralMedium.shadow}`,\n },\n\n // Style the arrow\n [`& .${tooltipClasses.arrow}`]: {\n color: variantStyles.backgroundColor,\n },\n }\n }\n)\n\n/**\n * Props for the NeoTooltip component\n */\nexport interface NeoTooltipProps extends Omit<TooltipProps, 'title' | 'variant'> {\n /**\n * The visual style variant\n * @default \"light\"\n * @figma Type\n */\n variant?: TooltipVariant\n\n /**\n * The main tooltip text\n * @figma text (literal content, not a variant property)\n */\n title: string\n\n /**\n * Optional supporting description text\n * When provided, shows a larger tooltip with title (semibold) + description (medium)\n * @default undefined\n * @figma Supporting text\n */\n description?: string\n\n // children is inherited from TooltipProps: ReactElement<unknown, any>\n}\n\n/**\n * NeoTooltip - Tooltip component following Neo 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 * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4091-26557&t=Bo58EpFmg6ILJtmv-11\n *\n * Figma Props Mapping:\n * - Type (Light mode|Dark mode|Brand color) → variant ('light'|'dark'|'brand')\n * - Arrow → arrow (boolean) + placement (top/bottom/left/right/etc)\n * - Supporting text (True|False) → description (string|undefined)\n * - text → title (string, literal content)\n *\n * Design Tokens Used:\n * - Light: surfaces.tooltip (#4b5563), typography.tooltip (#ffffff)\n * - Dark: grey[50] (#f9fafb), grey[800] (#1f2937)\n * - Brand: digitalBlue[800] (#131e7a), typography.tooltip (#ffffff)\n * - Shadow: neutralMedium (0px 8px 15px 0px rgba(31,41,55,0.1))\n * - Typography: fontSize.xs (12), fontWeight.medium (500), fontWeight.semiBold (600)\n */\nexport const NeoTooltip = ({\n variant = 'light',\n title,\n description,\n children,\n arrow = false,\n placement,\n ...props\n}: NeoTooltipProps) => {\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 gap={0.25}>\n <Typography fontWeight={typography.fontWeight.semiBold}>{title}</Typography>\n <Typography fontWeight={typography.fontWeight.medium}>{description}</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\nNeoTooltip.displayName = 'NeoTooltip'\n","import { borderRadius, colors, semanticColors } from '@moderneinc/neo-design'\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\nconst StyledToggleButtonGroup = styled(ToggleButtonGroup)(({ theme }) => ({\n backgroundColor: colors.grey[50],\n padding: theme.spacing(0.625, 0.875),\n borderRadius: borderRadius.full,\n gap: 0,\n\n [`& .${toggleButtonGroupClasses.grouped}`]: {\n border: 'none',\n borderRadius: 14,\n margin: 0,\n\n '&:not(:first-of-type)': {\n borderRadius: 14,\n marginLeft: 0,\n },\n\n '&:not(:last-of-type)': {\n borderRadius: 14,\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 NeoTypologyControlProps extends Omit<ToggleButtonGroupProps, 'orientation'> {}\n\n/**\n * NeoTypologyControl - A vertical toggle button group for switching between different typology views\n *\n * @figma https://www.figma.com/design/fQTkGSFbYyE7LiHuQJsENC/Neo---Moderne-Design-system---2025?node-id=4264-2376&t=Bo58EpFmg6ILJtmv-11\n *\n * Figma Props Mapping:\n * - No component set properties (static design)\n * - Children (icon buttons) are provided as ReactNode\n *\n * Design Tokens Used:\n * - colors.grey[50] - 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 * - borderRadiusFull - pill shape border radius\n */\nexport const NeoTypologyControl = ({ children, ...props }: NeoTypologyControlProps) => {\n return (\n <StyledToggleButtonGroup orientation=\"vertical\" exclusive {...props}>\n {children}\n </StyledToggleButtonGroup>\n )\n}\n\nNeoTypologyControl.displayName = 'NeoTypologyControl'\n\nexport { StyledToggleButton as NeoTypologyButton }\n","/**\n * @moderneinc/neo-styled-components\n *\n * Styled MUI components using Moderne design tokens\n */\n\nexport const version = '0.0.0-development'\n\n// Components\nexport { NeoActivityHeader } from './ActivityHeader/ActivityHeader'\nexport {\n ActivityScene,\n CIRCLE_RADIUS,\n NeoActivityIndicatorCell,\n} from './ActivityIndicatorCell/ActivityIndicatorCell'\nexport { NeoAvatar } from './Avatar/Avatar'\nexport { NeoBadge } from './Badge/Badge'\nexport { NeoBanner } from './Banner/Banner'\nexport { NeoBreadcrumbLink, NeoBreadcrumbs } from './Breadcrumbs/Breadcrumbs'\nexport { NeoButton } from './Button/Button'\nexport { NeoButtonGroup } from './ButtonGroup/ButtonGroup'\nexport { NeoCheckbox } from './Checkbox/Checkbox'\nexport { NeoCodeSnippet } from './CodeSnippet/CodeSnippet'\nexport { NeoDataGrid } from './DataGrid/DataGrid'\nexport {\n NeoDataGridCellContent,\n NeoMultiBadgesCell,\n NeoStatusBadgeCell,\n NeoUserAvatarCell,\n neoRowHeights,\n} from './DataGridCell/DataGridCell'\nexport { NeoDataGridColumnsButton } from './DataGridColumnsButton/DataGridColumnsButton'\nexport { NeoDataGridColumnsPanel } from './DataGridColumnsPanel/DataGridColumnsPanel'\nexport {\n NeoDataGridFilterPanel,\n NeoDataGridFilterPanelAddIcon,\n NeoDataGridFilterPanelDeleteIcon,\n NeoDataGridFilterPanelRemoveAllIcon,\n NeoDataGridSelect,\n} from './DataGridFilterPanel/DataGridFilterPanel'\nexport { NeoDataGridFiltersButton } from './DataGridFiltersButton/DataGridFiltersButton'\nexport {\n getDataGridHeaderStyles,\n SortedAscendingIcon,\n SortedDescendingIcon,\n UnsortedIcon,\n} from './DataGridHeaderCell/DataGridHeaderCell'\nexport { NeoDataGridHeaderLabel } from './DataGridHeaderLabel/DataGridHeaderLabel'\nexport * from './DatePicker/DatePicker'\nexport { NeoDivider } from './Divider/Divider'\nexport { NeoDot } from './Dot/Dot'\nexport { NeoFooter } from './Footer/Footer'\nexport { NeoIconButton } from './IconButton/IconButton'\nexport { NeoInfiniteScrollGrid } from './InfiniteScrollGrid/InfiniteScrollGrid'\nexport { NeoInputField } from './InputField/InputField'\nexport * from './ListItem/ListItem'\nexport * from './ListItemButton/ListItemButton'\nexport { NeoLoadingSpinner } from './LoadingSpinner/LoadingSpinner'\nexport * from './MarketplaceCard/MarketplaceCard'\nexport { NeoMenu } from './Menu/Menu'\nexport { NeoMenuItem } from './MenuItem/MenuItem'\nexport { NeoModal, NeoModalContent, NeoModalFooter, NeoModalHeader } from './Modal/Modal'\nexport { NeoPageContent } from './PageContent/PageContent'\nexport { NeoPaginatedGrid } from './PaginatedGrid/PaginatedGrid'\nexport { NeoProgressbar } from './Progressbar/Progressbar'\nexport { NeoQuickFilter } from './QuickFilter/QuickFilter'\nexport { NeoRadio } from './Radio/Radio'\nexport { NeoSelect, NeoSelectOption } from './Select/Select'\nexport { NeoSkeleton } from './Skeleton/Skeleton'\nexport * from './StatusBanner/StatusBanner'\nexport { NeoTab, NeoTabs } from './Tabs/Tabs'\nexport { NeoTag } from './Tag/Tag'\nexport { NeoToast, NeoToastButton } from './Toast/Toast'\nexport { NeoToggle } from './Toggle/Toggle'\nexport { NeoToolbar } from './Toolbar/Toolbar'\nexport * from './Tooltip/Tooltip'\nexport * from './TypologyControl/TypologyControl'\n"],"names":["_jsx","StyledChip","_jsxs","ACTIVITY_COLORS","__iconNode","StyledAlert","StyledIconButton","_Fragment","StyledButtonBase","UncheckedIcon","CheckedIcon","LabelContainer","Label","HelperText","IconWrapper","MenuItemContent","StyledDivider","MuiGridFilterPanel","gridClasses","HelpCircle","useGridApiContext","useGridSelector","AlertCircle","StyledListItemButton","MuiListItemButton","StyledLinearProgress","ProgressLabel"],"mappings":"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","x_google_ignoreList":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,43,44,45,46,47,48,49,50,51,52,53,54]}
|