diff --git a/docs/package.json b/docs/package.json index f1df7b7817fdd9..0e8e0d69a9d19c 100644 --- a/docs/package.json +++ b/docs/package.json @@ -26,8 +26,8 @@ "@emotion/react": "catalog:docs", "@emotion/server": "catalog:docs", "@emotion/styled": "catalog:docs", - "@mui/internal-core-docs": "workspace:^", "@mui/icons-material": "workspace:^", + "@mui/internal-core-docs": "workspace:^", "@mui/internal-markdown": "workspace:^", "@mui/lab": "workspace:*", "@mui/material": "workspace:^", @@ -38,6 +38,7 @@ "@mui/types": "workspace:^", "@mui/utils": "workspace:^", "@mui/x-charts": "9.5.0", + "@mui/x-chat": "9.0.0-alpha.10", "@mui/x-data-grid": "9.5.0", "@mui/x-data-grid-generator": "9.5.0", "@mui/x-data-grid-premium": "9.5.0", @@ -45,6 +46,8 @@ "@mui/x-date-pickers": "9.5.0", "@mui/x-date-pickers-pro": "9.5.0", "@mui/x-license": "9.4.0", + "@mui/x-scheduler": "9.0.0-beta.2", + "@mui/x-scheduler-premium": "9.0.0-beta.2", "@mui/x-tree-view": "9.4.0", "@popperjs/core": "^2.11.8", "@react-spring/web": "^10.0.3", diff --git a/docs/src/components/productX/XChatDemo.tsx b/docs/src/components/productX/XChatDemo.tsx new file mode 100644 index 00000000000000..6d7a567bcf4935 --- /dev/null +++ b/docs/src/components/productX/XChatDemo.tsx @@ -0,0 +1,104 @@ +import * as React from 'react'; +import { ChatBox, createEchoAdapter } from '@mui/x-chat'; +import type { ChatConversation, ChatMessage, ChatUser } from '@mui/x-chat/types'; +import { HighlightedCode } from '@mui/internal-core-docs/HighlightedCode'; +import { Frame } from '@mui/internal-core-docs/AppLayout'; + +const members: ChatUser[] = [ + { id: 'user', displayName: 'Alex', role: 'user' }, + { id: 'assistant', displayName: 'Product assistant', role: 'assistant' }, +]; + +const initialConversations: ChatConversation[] = [ + { + id: 'renewals', + title: 'Renewal analysis', + subtitle: 'Product assistant', + participants: members, + lastMessageAt: '2026-01-12T10:02:00Z', + }, +]; + +const initialMessages: ChatMessage[] = [ + { + id: 'message-1', + conversationId: 'renewals', + role: 'user', + author: members[0], + createdAt: '2026-01-12T10:00:00Z', + status: 'read', + parts: [{ type: 'text', text: 'Compare renewal risk by segment.' }], + }, + { + id: 'message-2', + conversationId: 'renewals', + role: 'assistant', + author: members[1], + createdAt: '2026-01-12T10:01:00Z', + status: 'read', + parts: [ + { + type: 'text', + text: 'I found three segments with elevated churn risk and can attach the rows used for the summary.', + }, + ], + }, +]; + +const code = ` +`; + +export default function XChatDemo() { + const adapter = React.useMemo( + () => + createEchoAdapter({ + respond: () => 'I can summarize that dashboard and suggest the next chart to inspect.', + delayMs: 450, + }), + [], + ); + + return ( + + + ({ + height: 360, + maxWidth: 420, + mx: 'auto', + borderRadius: '8px', + border: '1px solid', + borderColor: 'divider', + overflow: 'hidden', + bgcolor: '#FFF', + ...theme.applyDarkStyles({ + bgcolor: 'primaryDark.900', + }), + })} + /> + + + + + + ); +} diff --git a/docs/src/components/productX/XComponents.tsx b/docs/src/components/productX/XComponents.tsx index 21d3e130b70a4b..ce70d4b462d87d 100644 --- a/docs/src/components/productX/XComponents.tsx +++ b/docs/src/components/productX/XComponents.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +import dynamic from 'next/dynamic'; import Grid from '@mui/material/Grid'; import Typography from '@mui/material/Typography'; import Section from 'docs/src/layouts/Section'; @@ -10,6 +11,17 @@ import XDateRangeDemo from 'docs/src/components/productX/XDateRangeDemo'; import XTreeViewDemo from 'docs/src/components/productX/XTreeViewDemo'; import XChartsDemo from 'docs/src/components/productX/XChartsDemo'; +const XEventCalendarDemo = dynamic(() => import('docs/src/components/productX/XSchedulerDemo'), { + ssr: false, +}); +const XEventTimelineDemo = dynamic( + () => + import('docs/src/components/productX/XSchedulerDemo').then( + (module) => module.XEventTimelineDemo, + ), + { ssr: false }, +); + export default function XComponents() { const [componentIndex, setComponentIndex] = React.useState(0); return ( @@ -36,9 +48,11 @@ export default function XComponents() { > {componentIndex === 0 && } - {componentIndex === 1 && } - {componentIndex === 2 && } - {componentIndex === 3 && } + {componentIndex === 1 && } + {componentIndex === 2 && } + {componentIndex === 3 && } + {componentIndex === 4 && } + {componentIndex === 5 && } diff --git a/docs/src/components/productX/XComponentsSwitcher.tsx b/docs/src/components/productX/XComponentsSwitcher.tsx index 65c61137c5ac8f..8f1cbe8047f899 100644 --- a/docs/src/components/productX/XComponentsSwitcher.tsx +++ b/docs/src/components/productX/XComponentsSwitcher.tsx @@ -1,20 +1,18 @@ import * as React from 'react'; -import dynamic from 'next/dynamic'; import Box from '@mui/material/Box'; -import Stack from '@mui/material/Stack'; import Typography from '@mui/material/Typography'; import KeyboardArrowRightRounded from '@mui/icons-material/KeyboardArrowRightRounded'; import PivotTableChartRoundedIcon from '@mui/icons-material/PivotTableChartRounded'; import CalendarMonthRoundedIcon from '@mui/icons-material/CalendarMonthRounded'; import AccountTreeRounded from '@mui/icons-material/AccountTreeRounded'; import BarChartRoundedIcon from '@mui/icons-material/BarChartRounded'; +import EventAvailableRoundedIcon from '@mui/icons-material/EventAvailableRounded'; +import ViewTimelineRoundedIcon from '@mui/icons-material/ViewTimelineRounded'; import { visuallyHidden } from '@mui/utils'; import { Highlighter } from '@mui/internal-core-docs/AppLayout'; import { Link } from '@mui/internal-core-docs/Link'; import { ROUTES } from '@mui/internal-core-docs/constants'; -const SwipeableViews = dynamic(() => import('react-swipeable-views'), { ssr: false }); - function ComponentItem({ label, icon, @@ -28,6 +26,24 @@ function ComponentItem({ description?: React.ReactNode; href: string; }) { + const viewDocsContent = ( + + View the docs{' '} + + {label} + + + + ); + const viewDocsSx = { + color: 'primary', + display: 'inline-flex', + alignItems: 'center', + fontWeight: 'semiBold', + '& > svg': { transition: '0.2s' }, + '&:hover > svg': { transform: 'translateX(2px)' }, + }; + return ( {icon} -
+ ) => { event.stopPropagation(); }} - sx={{ - color: 'primary', - display: 'inline-flex', - alignItems: 'center', - fontWeight: 'semiBold', - '& > svg': { transition: '0.2s' }, - '&:hover > svg': { transform: 'translateX(2px)' }, - }} + sx={viewDocsSx} > - View the docs{' '} - - {label} - - + {viewDocsContent} -
+
); } @@ -90,76 +96,95 @@ export default function XComponentsSwitcher(props: { setComponentIndex: React.Dispatch>; }) { const { componentIndex, setComponentIndex } = props; - const componentElement = [ - } - href={ROUTES.dataGridOverview} - />, - } - href={ROUTES.datePickersOverview} - />, - } - href={ROUTES.chartsOverview} - />, - } - href={ROUTES.treeViewOverview} - />, + const componentElements = [ + { + element: ( + } + href={ROUTES.dataGridOverview} + /> + ), + }, + { + element: ( + } + href={ROUTES.chartsOverview} + /> + ), + }, + { + element: ( + } + href="/x/react-scheduler/event-calendar/views/" + /> + ), + }, + { + element: ( + } + href="/x/react-scheduler/event-timeline/views/" + /> + ), + }, + { + element: ( + } + href={ROUTES.treeViewOverview} + /> + ), + }, + { + element: ( + } + href={ROUTES.datePickersOverview} + /> + ), + }, ]; + return ( - - div': { pr: '32%' } }} - > - setComponentIndex(index)} + + {componentElements.map(({ element }, index) => ( + setComponentIndex(index)} + selected={componentIndex === index} + sx={{ minWidth: 0, height: 'auto', alignItems: 'flex-start' }} > - {componentElement.map((element, index) => ( - setComponentIndex(index)} - selected={componentIndex === index} - sx={{ - width: '100%', - transition: '0.3s', - transform: componentIndex !== index ? 'scale(0.9)' : 'scale(1)', - }} - > - {element} - - ))} - - - - {componentElement.map((element, index) => ( - setComponentIndex(index)} - selected={componentIndex === index} - > - {element} - - ))} - - + {element} + + ))} + ); } diff --git a/docs/src/components/productX/XDataGrid.tsx b/docs/src/components/productX/XDataGrid.tsx index f04732d798666a..f27a652e240c6a 100644 --- a/docs/src/components/productX/XDataGrid.tsx +++ b/docs/src/components/productX/XDataGrid.tsx @@ -1,6 +1,25 @@ import * as React from 'react'; -import { DataGridPro, useGridApiRef } from '@mui/x-data-grid-pro'; +import { + DataGridPremium, + GridAiAssistantPanel, + GridChartsIntegrationContextProvider, + GridChartsPanel, + GridChartsRendererProxy, + GridPreferencePanelsValue, + useGridApiRef, +} from '@mui/x-data-grid-premium'; +import type { + Conversation, + GridCellSelectionModel, + GridColDef, + GridInitialState, + GridPivotModel, + GridRowId, + GridValidRowModel, + PromptResponse, +} from '@mui/x-data-grid-premium'; import { useDemoData } from '@mui/x-data-grid-generator'; +import type { GridDemoData } from '@mui/x-data-grid-generator'; import Grid from '@mui/material/Grid'; import Typography from '@mui/material/Typography'; import Paper from '@mui/material/Paper'; @@ -9,6 +28,10 @@ import LibraryAddCheckRounded from '@mui/icons-material/LibraryAddCheckRounded'; import SortByAlphaRounded from '@mui/icons-material/SortByAlphaRounded'; import AutoStoriesOutlined from '@mui/icons-material/AutoStoriesOutlined'; import FilterAltRounded from '@mui/icons-material/FilterAltRounded'; +import PivotTableChartRoundedIcon from '@mui/icons-material/PivotTableChartRounded'; +import BarChartRoundedIcon from '@mui/icons-material/BarChartRounded'; +import AutoAwesomeRoundedIcon from '@mui/icons-material/AutoAwesomeRounded'; +import { BarChart } from '@mui/x-charts/BarChart'; import { HighlightedCode } from '@mui/internal-core-docs/HighlightedCode'; import { Link } from '@mui/internal-core-docs/Link'; import Section from 'docs/src/layouts/Section'; @@ -28,9 +51,126 @@ import XGridGlobalStyles from 'docs/src/components/home/XGridGlobalStyles'; import { ROUTES } from '@mui/internal-core-docs/constants'; -const DEMOS = ['Editing', 'Selection', 'Sorting', 'Pagination', 'Filtering'] as const; +const DEMOS = [ + 'Editing', + 'Filtering', + 'Sorting', + 'Pagination', + 'Cell range selection', + 'Pivoting', + 'Charts Integration', + 'AI Assistant', +] as const; + +const aiAssistantPrompt = 'Order companies by amount of people'; +const chartsIntegrationChartId = 'landing-page-chart'; +const chartsIntegrationColumnOrder = ['rating', 'name', 'avatar', 'company']; +const cellRangeSelectionFields = ['name', 'website', 'rating'] as const; +const pivotRevenueRegions = ['North America', 'Europe', 'APAC', 'LATAM'] as const; +const pivotRevenueQuarters = ['Q1', 'Q2', 'Q3', 'Q4'] as const; + +interface PivotRevenueRow extends GridValidRowModel { + region: (typeof pivotRevenueRegions)[number]; + quarter: (typeof pivotRevenueQuarters)[number]; + revenue: number; +} + +const pivotDemoModel: GridPivotModel = { + rows: [{ field: 'region' }], + columns: [{ field: 'quarter' }], + values: [{ field: 'revenue', aggFunc: 'sum' }], +}; + +const pivotRevenueColumns: GridColDef[] = [ + { + field: 'region', + headerName: 'Region', + width: 150, + aggregable: false, + }, + { + field: 'quarter', + headerName: 'Quarter', + width: 100, + type: 'singleSelect', + valueOptions: [...pivotRevenueQuarters], + aggregable: false, + }, + { + field: 'revenue', + headerName: 'Revenue', + width: 130, + type: 'number', + availableAggregationFunctions: ['sum', 'avg', 'min', 'max'], + valueFormatter: (value) => { + const revenue = Number(value); + + return Number.isFinite(revenue) ? `$${Math.round(revenue / 1000)}k` : ''; + }, + }, +]; + +const pivotGroupingColDef = { width: 146 }; +const pivotingColDef = () => ({ width: 90 }); + +const aiAssistantResponse: PromptResponse = { + conversationId: 'landing-page-ai-assistant', + select: -1, + filters: [], + aggregation: { + id: 'size', + }, + sorting: [ + { + column: 'id', + direction: 'desc', + }, + ], + grouping: [ + { + column: 'company', + }, + ], + pivoting: {}, + chart: null, +}; + +const aiAssistantConversations: Conversation[] = [ + { + id: aiAssistantResponse.conversationId, + title: aiAssistantPrompt, + prompts: [ + { + value: aiAssistantPrompt, + createdAt: new Date('2026-01-12T10:00:00Z'), + response: aiAssistantResponse, + variant: 'success', + helperText: '', + }, + ], + }, +]; -const code = ``; + +const cellRangeSelectionCode = ``; + +const pivotingCode = ``; -const startLine = { +const chartsIntegrationCode = ` + + +`; + +const aiAssistantCode = ``; + +const codeByDemo: Record<(typeof DEMOS)[number], string> = { + [DEMOS[0]]: communityCode, + [DEMOS[1]]: communityCode, + [DEMOS[2]]: communityCode, + [DEMOS[3]]: communityCode, + [DEMOS[4]]: cellRangeSelectionCode, + [DEMOS[5]]: pivotingCode, + [DEMOS[6]]: chartsIntegrationCode, + [DEMOS[7]]: aiAssistantCode, +}; + +const startLine: Partial> = { [DEMOS[0]]: 6, - [DEMOS[1]]: 11, + [DEMOS[1]]: 8, [DEMOS[2]]: 7, [DEMOS[3]]: 13, - [DEMOS[4]]: 8, + [DEMOS[4]]: 4, + [DEMOS[5]]: 5, + [DEMOS[6]]: 6, + [DEMOS[7]]: 5, +}; + +const toolbarFeatureSelector: Partial> = { + [DEMOS[1]]: '[aria-label="Filters"]', + [DEMOS[5]]: '[aria-label="Pivot"]', + [DEMOS[6]]: '[aria-label="Charts"]', + [DEMOS[7]]: '[aria-label="AI Assistant"]', }; const dataGridStyleOverrides = ; +const filterPanelPopperSx = { + '&.MuiDataGrid-panel': { + width: 'min(560px, calc(100vw - 32px))', + }, + '& .MuiDataGrid-paper': { + maxWidth: '100%', + overflow: 'hidden', + }, + '& .MuiDataGrid-panelWrapper': { + width: '100%', + }, + '& .MuiDataGrid-panelContent': { + p: '14px 16px 12px 12px', + }, + '& .MuiDataGrid-filterForm': { + width: '100%', + alignItems: 'center', + gap: 1.25, + }, + '& .MuiDataGrid-filterFormDeleteIcon': { + flex: '0 0 32px', + justifyContent: 'flex-start', + }, + '& .MuiDataGrid-filterFormColumnInput': { + width: 128, + }, + '& .MuiDataGrid-filterFormOperatorInput': { + width: 128, + }, + '& .MuiDataGrid-filterFormValueInput': { + flex: '1 1 168px', + minWidth: 0, + }, + '& .MuiDataGrid-filterFormValueInput .MuiFormControl-root': { + width: '100%', + }, + '& .MuiDataGrid-panelFooter': { + px: 2, + py: 1.25, + }, +} as const; +const aiAssistantPanelPopperSx = { + '& .MuiDataGrid-aiAssistantPanel': { + display: 'flex', + boxSizing: 'border-box', + width: 'min(360px, calc(100vw - 16px))', + height: 276, + }, + '& .MuiDataGrid-aiAssistantPanelBody': { + alignItems: 'stretch', + flex: '1 1 auto', + height: 'auto', + minHeight: 0, + }, + '& .MuiDataGrid-aiAssistantPanelConversation': { + height: '100%', + }, +} as const; -export default function XDataGrid() { - const [demo, setDemo] = React.useState<(typeof DEMOS)[number] | null>(null); +interface DataGridChartsRendererProps { + dimensions: Array<{ + data?: Array; + label?: string; + }>; + values: Array<{ + data?: Array; + label?: string; + }>; + visible?: boolean; +} + +function getShortChartLabel(value: string | number | null) { + const label = `${value ?? ''}`; + + return label.length > 10 ? `${label.slice(0, 10)}...` : label; +} + +function DataGridChartsRenderer({ dimensions, values, visible }: DataGridChartsRendererProps) { + const dimension = dimensions[0]; + const value = values[0]; + const labels = (dimension?.data ?? []).slice(0, 6).map(getShortChartLabel); + const seriesData = (value?.data ?? []).slice(0, labels.length); + + if (!visible || labels.length === 0 || seriesData.length === 0) { + return null; + } + + return ( + + `0 20px 40px ${theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.46)' : 'rgba(15, 23, 42, 0.18)'}`, + }} + > + + {value?.label ?? 'Rating'} by {dimension?.label ?? 'company'} + + + + ); +} + +interface XDataGridDemoProps { + cellRangeFocusId: GridRowId | undefined; + cellRangeSelectionModel: GridCellSelectionModel; + data: GridDemoData; + demo: (typeof DEMOS)[number] | null; + gridColumns: GridColDef[]; + gridRows: PivotRevenueRow[]; + loading: boolean; +} + +function XDataGridDemo({ + cellRangeFocusId, + cellRangeSelectionModel, + data, + demo, + gridColumns, + gridRows, + loading, +}: XDataGridDemoProps) { + const [filterPanelTarget, setFilterPanelTarget] = React.useState(null); const gridApiRef = useGridApiRef(); - const icons = { - [DEMOS[0]]: , - [DEMOS[1]]: , - [DEMOS[2]]: , - [DEMOS[3]]: , - [DEMOS[4]]: , - }; - const { loading, data } = useDemoData({ - dataSet: 'Employee', - rowLength: 1000, - maxColumns: 5, - editable: true, - }); - const firstRowId = data.rows[0]?.id; + const handlePrompt = React.useCallback(async () => aiAssistantResponse, []); + const firstRowId = gridRows[0]?.id; + React.useEffect(() => { - if (gridApiRef && gridApiRef.current && !loading) { - if (demo) { - gridApiRef.current.scroll({ top: 0, left: 0 }); - } - if (demo === DEMOS[0]) { - document.body.focus(); - setTimeout(() => { - const cell = document.querySelector( - '#data-grid-demo div[role="cell"][data-field="name"]', - ); - if (cell) { - const clickEvent = document.createEvent('MouseEvents'); - clickEvent.initEvent('dblclick', true, true); - cell.dispatchEvent(clickEvent); - } - }, 120); - } - if (demo === DEMOS[1]) { - const checkbox = document.querySelector( - '#data-grid-demo div[data-field="__check__"] input', - ) as HTMLInputElement | null; - if (checkbox && !checkbox.checked) { - checkbox.click(); + const panelAnchor = document.querySelector( + '#data-grid-demo [data-id="gridPanelAnchor"]', + ); + + setFilterPanelTarget(panelAnchor); + }, [loading]); + + React.useEffect(() => { + if (!gridApiRef || !gridApiRef.current || loading) { + return undefined; + } + + const timeoutIds: Array> = []; + const scheduleDemoAction = (callback: () => void, delay = 120) => { + timeoutIds.push(setTimeout(callback, delay)); + }; + const isCellRangeSelectionDemo = demo === DEMOS[4]; + const isPivotingDemo = demo === DEMOS[5]; + const isChartsIntegrationDemo = demo === DEMOS[6]; + const isAiAssistantDemo = demo === DEMOS[7]; + + if (demo) { + gridApiRef.current.scroll({ top: 0, left: 0 }); + } + if (!isCellRangeSelectionDemo) { + gridApiRef.current.setCellSelectionModel({}); + } + if (!isAiAssistantDemo) { + gridApiRef.current.hidePreferences(); + gridApiRef.current.setRowGroupingModel([]); + gridApiRef.current.setAggregationModel({}); + gridApiRef.current.setSortModel([]); + } + if (!isChartsIntegrationDemo) { + gridApiRef.current.hideSidebar(); + } + if (demo === DEMOS[0]) { + document.body.focus(); + scheduleDemoAction(() => { + const cell = document.querySelector('#data-grid-demo div[role="cell"][data-field="name"]'); + if (cell) { + const clickEvent = document.createEvent('MouseEvents'); + clickEvent.initEvent('dblclick', true, true); + cell.dispatchEvent(clickEvent); } + }); + } + if (isCellRangeSelectionDemo) { + document.body.focus(); + gridApiRef.current.setCellSelectionModel(cellRangeSelectionModel); + if (cellRangeFocusId) { + gridApiRef.current.setCellFocus(cellRangeFocusId, 'website'); } - if (demo === DEMOS[2]) { + } + if (demo === DEMOS[2]) { + scheduleDemoAction(() => { const sorter = document.querySelector( '#data-grid-demo button[aria-label="Sort"]', ) as HTMLButtonElement | null; if (sorter) { sorter.click(); } - } - if (demo === DEMOS[3]) { + }); + } + if (demo === DEMOS[3]) { + scheduleDemoAction(() => { const nextPage = document.querySelector( '#data-grid-demo button[aria-label="Go to next page"]', ) as HTMLButtonElement | null; if (nextPage) { nextPage.click(); } - } - if (demo === DEMOS[4]) { - document.body.focus(); - gridApiRef.current.showFilterPanel('name'); - } + }); + } + if (demo === DEMOS[1]) { + document.body.focus(); + gridApiRef.current.showFilterPanel('name'); + } + if (isPivotingDemo) { + document.body.focus(); + gridApiRef.current.hidePreferences(); + gridApiRef.current.hideSidebar(); + } + if (isChartsIntegrationDemo) { + document.body.focus(); + gridApiRef.current.hidePreferences(); + gridApiRef.current.setActiveChartId(chartsIntegrationChartId); + gridApiRef.current.updateChartDimensionsData(chartsIntegrationChartId, [ + { field: 'company' }, + ]); + gridApiRef.current.updateChartValuesData(chartsIntegrationChartId, [{ field: 'rating' }]); + gridApiRef.current.hideSidebar(); + scheduleDemoAction(() => { + gridApiRef.current?.setChartType(chartsIntegrationChartId, 'bar'); + gridApiRef.current?.hideSidebar(); + }, 0); } - }, [demo, loading, firstRowId, gridApiRef]); + if (isAiAssistantDemo) { + document.body.focus(); + gridApiRef.current.setRowGroupingModel( + aiAssistantResponse.grouping.map((group) => group.column), + ); + gridApiRef.current.setAggregationModel(aiAssistantResponse.aggregation); + gridApiRef.current.setSortModel( + aiAssistantResponse.sorting.map((sort) => ({ + field: sort.column, + sort: sort.direction, + })), + ); + gridApiRef.current.showPreferences(GridPreferencePanelsValue.aiAssistant); + } + + return () => { + timeoutIds.forEach(clearTimeout); + }; + }, [demo, loading, firstRowId, gridApiRef, cellRangeSelectionModel, cellRangeFocusId]); + + return ( + + + } + /> + + ); +} + +export default function XDataGrid() { + const [demo, setDemo] = React.useState<(typeof DEMOS)[number] | null>(null); + const gridStateKey = demo ?? 'overview'; + const activeCode = demo ? codeByDemo[demo] : communityCode; + const activeToolbarFeatureSelector = demo ? toolbarFeatureSelector[demo] : undefined; + const icons = { + [DEMOS[0]]: , + [DEMOS[1]]: , + [DEMOS[2]]: , + [DEMOS[3]]: , + [DEMOS[4]]: , + [DEMOS[5]]: , + [DEMOS[6]]: , + [DEMOS[7]]: , + }; + const { loading, data } = useDemoData({ + dataSet: 'Employee', + rowLength: 1000, + maxColumns: 12, + editable: true, + }); + const gridRows = React.useMemo( + () => + data.rows.map((row, index) => { + const regionIndex = index % pivotRevenueRegions.length; + const quarterIndex = + Math.floor(index / pivotRevenueRegions.length) % pivotRevenueQuarters.length; + const region = pivotRevenueRegions[regionIndex]; + const quarter = pivotRevenueQuarters[quarterIndex]; + const revenue = 42000 + regionIndex * 18000 + quarterIndex * 12000 + (index % 7) * 3500; + + return { + ...row, + region, + quarter, + revenue, + }; + }), + [data.rows], + ); + const gridColumns = React.useMemo(() => { + const columns = [...data.columns, ...pivotRevenueColumns]; + + if (demo !== DEMOS[6]) { + return columns; + } + + const orderedColumns = chartsIntegrationColumnOrder + .map((field) => columns.find((column) => column.field === field)) + .filter((column): column is GridColDef => Boolean(column)); + + return [ + ...orderedColumns, + ...columns.filter((column) => !chartsIntegrationColumnOrder.includes(column.field)), + ]; + }, [data.columns, demo]); + const cellRangeSelectionModel = React.useMemo(() => { + const selectedCells: GridCellSelectionModel = {}; + gridRows.slice(3, 6).forEach((row) => { + selectedCells[row.id] = {}; + cellRangeSelectionFields.forEach((field) => { + selectedCells[row.id][field] = true; + }); + }); + return selectedCells; + }, [gridRows]); + const cellRangeFocusId = gridRows[4]?.id; return (
@@ -129,8 +682,8 @@ export default function XDataGrid() { overline="Data Grid" title={ - A level of performance and quality that hasn't - been seen before + Support data management and analysis with{' '} + performance and quality } description="The MUI X Data Grid is a data table powerhouse. It is packed with exclusive features that will enrich the experience of dealing with and maintaining lots of data." @@ -152,8 +705,18 @@ export default function XDataGrid() { { position: 'relative', zIndex: 1, - height: 240, + height: 320, borderRadius: '10px 10px 0 0', + '&#data-grid-demo .MuiDataGrid-root .MuiDataGrid-toolbar .MuiIconButton-root:not(.Mui-disabled)': + { + color: 'grey.600', + borderColor: 'divider', + }, + '&#data-grid-demo .MuiDataGrid-root .MuiDataGrid-toolbar .MuiIconButton-root:not(.Mui-disabled):hover': + { + color: 'primary.main', + bgcolor: 'action.hover', + }, '& .MuiDataGrid-root': { '& .MuiAvatar-root': { width: 24, height: 24, fontSize: 14, fontWeight: 'bold' }, '& .MuiDataGrid-footerContainer': { @@ -175,37 +738,82 @@ export default function XDataGrid() { (theme) => theme.applyDarkStyles({ borderColor: 'divider', + '&#data-grid-demo .MuiDataGrid-root .MuiDataGrid-toolbar .MuiIconButton-root:not(.Mui-disabled)': + { + color: 'grey.300', + borderColor: 'primaryDark.600', + }, + '&#data-grid-demo .MuiDataGrid-root .MuiDataGrid-toolbar .MuiIconButton-root:not(.Mui-disabled):hover': + { + color: 'primary.300', + bgcolor: 'primaryDark.700', + }, '& .MuiDataGrid-root': { '& .MuiDataGrid-footerContainer': { borderColor: 'primaryDark.600', }, }, }), + activeToolbarFeatureSelector + ? (theme) => ({ + [`&#data-grid-demo .MuiDataGrid-root .MuiDataGrid-toolbar .MuiIconButton-root${activeToolbarFeatureSelector}:not(.Mui-disabled)`]: + { + color: 'primary.main', + borderColor: 'primary.200', + bgcolor: 'primary.50', + }, + [`&#data-grid-demo .MuiDataGrid-root .MuiDataGrid-toolbar .MuiIconButton-root${activeToolbarFeatureSelector}:not(.Mui-disabled):hover`]: + { + color: 'primary.main', + borderColor: 'primary.300', + bgcolor: 'primary.100', + }, + ...theme.applyDarkStyles({ + [`&#data-grid-demo .MuiDataGrid-root .MuiDataGrid-toolbar .MuiIconButton-root${activeToolbarFeatureSelector}:not(.Mui-disabled)`]: + { + color: 'primary.300', + borderColor: 'primary.700', + bgcolor: 'primaryDark.700', + }, + [`&#data-grid-demo .MuiDataGrid-root .MuiDataGrid-toolbar .MuiIconButton-root${activeToolbarFeatureSelector}:not(.Mui-disabled):hover`]: + { + color: 'primary.200', + borderColor: 'primary.600', + bgcolor: 'primaryDark.600', + }, + }), + }) + : {}, ]} > {dataGridStyleOverrides} - - - - {demo && } - + + + {demo && startLine[demo] && } + {demo === DEMOS[3] && 'Pagination > 100 rows per page is a paid feature!'} - {demo === DEMOS[4] && 'Multi-column filtering is a paid feature!'} + {demo === DEMOS[1] && 'Multi-column filtering is a paid feature!'} + {demo === DEMOS[7] && + 'The AI Assistant helps users apply structured grid changes in natural language.'} The Data Grid and all other MUI X components are available on free and paid diff --git a/docs/src/components/productX/XSchedulerDemo.tsx b/docs/src/components/productX/XSchedulerDemo.tsx new file mode 100644 index 00000000000000..7a819ec22a8169 --- /dev/null +++ b/docs/src/components/productX/XSchedulerDemo.tsx @@ -0,0 +1,122 @@ +import { EventCalendar } from '@mui/x-scheduler/event-calendar'; +import type { SchedulerEvent, SchedulerResource } from '@mui/x-scheduler/models'; +import { EventTimelinePremium } from '@mui/x-scheduler-premium/event-timeline-premium'; +import { HighlightedCode } from '@mui/internal-core-docs/HighlightedCode'; +import { Frame } from '@mui/internal-core-docs/AppLayout'; + +const events: SchedulerEvent[] = [ + { + id: 'launch-plan', + title: 'Launch plan', + start: '2026-01-12T08:00:00Z', + end: '2026-01-12T12:00:00Z', + resource: 'product', + }, + { + id: 'fulfillment-window', + title: 'Fulfillment window', + start: '2026-01-12T13:00:00Z', + end: '2026-01-14T10:00:00Z', + resource: 'operations', + }, + { + id: 'customer-briefings', + title: 'Customer briefings', + start: '2026-01-13T09:00:00Z', + end: '2026-01-15T15:00:00Z', + resource: 'success', + }, + { + id: 'quality-review', + title: 'Quality review', + start: '2026-01-15T08:00:00Z', + end: '2026-01-15T14:00:00Z', + resource: 'operations', + }, +]; + +const resources: SchedulerResource[] = [ + { id: 'product', title: 'Product', eventColor: 'blue' }, + { id: 'operations', title: 'Operations', eventColor: 'teal' }, + { id: 'success', title: 'Success', eventColor: 'amber' }, +]; + +const frameDemoSx = { p: 2, overflow: 'auto' }; + +const schedulerSx = { + height: 360, + minWidth: 520, + border: '1px solid', + borderColor: 'divider', + borderRadius: 1, + bgcolor: 'background.paper', + overflow: 'hidden', +}; + +const eventCalendarCode = ` +`; + +const eventTimelineCode = ` +`; + +export default function XEventCalendarDemo() { + return ( + + + + + + + + + ); +} + +export function XEventTimelineDemo() { + return ( + + + + + + + + + ); +} diff --git a/docs/src/components/productX/XTheming.tsx b/docs/src/components/productX/XTheming.tsx index 476f061fb2a87b..e009867339065e 100644 --- a/docs/src/components/productX/XTheming.tsx +++ b/docs/src/components/productX/XTheming.tsx @@ -1,97 +1,1649 @@ import * as React from 'react'; -import { - DataGridPro, - GridColDef, - GridCellParams, - GridRenderEditCellParams, -} from '@mui/x-data-grid-pro'; -import { useDemoData } from '@mui/x-data-grid-generator'; -import { CssVarsProvider } from '@mui/material/styles'; -import { red } from '@mui/material/colors'; +import dynamic from 'next/dynamic'; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; import Grid from '@mui/material/Grid'; +import IconButton from '@mui/material/IconButton'; import Typography from '@mui/material/Typography'; import Paper from '@mui/material/Paper'; +import KeyboardArrowLeftRoundedIcon from '@mui/icons-material/KeyboardArrowLeftRounded'; +import KeyboardArrowRightRoundedIcon from '@mui/icons-material/KeyboardArrowRightRounded'; +import { alpha, createTheme, CssVarsProvider, ThemeProvider } from '@mui/material/styles'; +import { BarPlot, barClasses } from '@mui/x-charts/BarChart'; +import { ChartsContainer } from '@mui/x-charts/ChartsContainer'; +import { axisClasses } from '@mui/x-charts/ChartsAxis'; +import { ChartsGrid, chartsGridClasses } from '@mui/x-charts/ChartsGrid'; +import { ChartsXAxis } from '@mui/x-charts/ChartsXAxis'; +import { ChartsYAxis } from '@mui/x-charts/ChartsYAxis'; +import { LinePlot, lineClasses, MarkPlot } from '@mui/x-charts/LineChart'; +import { DataGrid, type GridColDef } from '@mui/x-data-grid'; import Section from 'docs/src/layouts/Section'; import SectionHeadline from '@mui/internal-core-docs/SectionHeadline'; import GradientText from 'docs/src/components/typography/GradientText'; import { Item, Group, Highlighter } from '@mui/internal-core-docs/AppLayout'; +import { HighlightedCode } from '@mui/internal-core-docs/HighlightedCode'; import { TwinkleIcon, SvgMaterialDesignIcon } from '@mui/internal-core-docs/svgIcons'; -import XGridGlobalStyles from 'docs/src/components/home/XGridGlobalStyles'; -import ProgressBar from 'docs/src/components/x-grid/ProgressBar'; -import EditProgress from 'docs/src/components/x-grid/EditProgress'; -import Status from 'docs/src/components/x-grid/Status'; -import EditStatus from 'docs/src/components/x-grid/EditStatus'; -const dataGridStyleOverrides = ; +const ThemedSchedulerPreview = dynamic( + () => import('docs/src/components/productX/XThemingSchedulerPreview'), + { + ssr: false, + loading: () => ( + + ), + }, +); -export default function XTheming() { - const [customized, setCustomized] = React.useState(true); - const { loading, data } = useDemoData({ - dataSet: 'Commodity', - rowLength: 1000, - maxColumns: 40, - editable: true, - }); - const baseFilledQuantityCol = data.columns.find(({ field }) => field === 'filledQuantity'); - const baseStatusCol = data.columns.find(({ field }) => field === 'status'); - function getColumns() { - const columns: Array = [ - { - field: 'desk', - headerName: 'Desk', - width: customized ? 72 : 100, - sortable: false, - editable: true, +const customThemeTokens = { + ink: '#101322', + muted: '#5D667A', + canvas: '#F8FAFF', + surface: '#FFFFFF', + surfaceTint: '#F2F6FF', + border: '#E2E8F6', + accent: 'hsl(210, 100%, 45%)', + accentLight: 'hsl(210, 100%, 90%)', + accentBright: 'hsl(210, 100%, 60%)', + accentDark: 'hsl(210, 100%, 30%)', + violet: '#7C3AED', + violetLight: '#EDE9FE', +}; + +const customGlassPanelSx = { + position: 'relative', + borderRadius: '16px', + borderColor: alpha(customThemeTokens.accentBright, 0.3), + background: `linear-gradient(135deg, ${alpha('#FFFFFF', 0.9)} 0%, ${alpha( + '#FFFFFF', + 0.62, + )} 100%), linear-gradient(145deg, ${alpha(customThemeTokens.accentLight, 0.56)} 0%, ${alpha( + customThemeTokens.violetLight, + 0.48, + )} 100%)`, + backdropFilter: 'blur(18px) saturate(180%)', + boxShadow: `0 0 0 1px ${alpha(customThemeTokens.accentBright, 0.14)}, 0 18px 44px ${alpha( + customThemeTokens.accentDark, + 0.08, + )}, 0 1px 0 ${alpha('#FFFFFF', 0.88)} inset, inset 0 0 0 1px ${alpha('#FFFFFF', 0.5)}`, + '&::before': { + content: '""', + position: 'absolute', + inset: -1, + zIndex: 1, + border: '1px solid transparent', + borderRadius: 'inherit', + pointerEvents: 'none', + background: `linear-gradient(135deg, ${alpha(customThemeTokens.accentBright, 0.92)} 0%, ${alpha( + '#FFFFFF', + 0.72, + )} 28%, ${alpha(customThemeTokens.violet, 0.38)} 68%, ${alpha( + customThemeTokens.accentBright, + 0.2, + )} 100%) border-box`, + WebkitMask: 'linear-gradient(#000 0 0) padding-box, linear-gradient(#000 0 0)', + WebkitMaskComposite: 'xor', + maskComposite: 'exclude', + }, + '&::after': { + content: '""', + position: 'absolute', + inset: 0, + zIndex: 1, + borderRadius: 'inherit', + pointerEvents: 'none', + boxShadow: `inset 0 0 22px ${alpha(customThemeTokens.accentBright, 0.1)}`, + }, + '& > *': { + position: 'relative', + zIndex: 2, + }, + '[data-mui-color-scheme="dark"] &': { + color: '#F8FBFF', + borderColor: alpha(customThemeTokens.accentBright, 0.72), + background: `linear-gradient(135deg, ${alpha('#07122E', 0.86)} 0%, ${alpha( + '#030712', + 0.76, + )} 100%), radial-gradient(circle at 12% 0%, ${alpha( + customThemeTokens.accentBright, + 0.28, + )} 0, transparent 34%), radial-gradient(circle at 92% 12%, ${alpha( + customThemeTokens.violet, + 0.24, + )} 0, transparent 38%)`, + boxShadow: `0 0 0 1px ${alpha(customThemeTokens.accentBright, 0.48)}, 0 0 24px ${alpha( + customThemeTokens.accentBright, + 0.54, + )}, 0 0 58px ${alpha(customThemeTokens.accent, 0.34)}, 0 26px 70px ${alpha( + '#000000', + 0.52, + )}, inset 0 1px 0 ${alpha('#FFFFFF', 0.18)}`, + '&::before': { + background: `linear-gradient(135deg, ${alpha( + customThemeTokens.accentBright, + 1, + )} 0%, ${alpha('#FFFFFF', 0.72)} 22%, ${alpha(customThemeTokens.violet, 0.58)} 62%, ${alpha( + customThemeTokens.accentBright, + 0.28, + )} 100%) border-box`, + }, + '&::after': { + boxShadow: `inset 0 0 34px ${alpha(customThemeTokens.accentBright, 0.24)}`, + }, + '& .MuiTypography-root': { + color: '#F8FBFF', + }, + '& .MuiTypography-subtitle2': { + color: '#F8FBFF', + }, + '& .MuiTypography-body2, & .MuiTypography-caption': { + color: alpha('#DDEBFF', 0.74), + }, + }, +}; + +const customChartsTheme = createTheme({ + palette: { + mode: 'light', + primary: { + main: customThemeTokens.accent, + light: customThemeTokens.accentLight, + dark: customThemeTokens.accentDark, + }, + secondary: { + main: customThemeTokens.ink, + light: '#E4E8F4', + dark: '#020617', + }, + warning: { + main: customThemeTokens.violet, + light: customThemeTokens.violetLight, + dark: '#4C1D95', + }, + success: { + main: customThemeTokens.accent, + light: customThemeTokens.accentLight, + dark: customThemeTokens.accentDark, + }, + text: { + primary: customThemeTokens.ink, + secondary: customThemeTokens.muted, + }, + background: { + paper: customThemeTokens.surface, + default: customThemeTokens.canvas, + }, + divider: customThemeTokens.border, + }, + typography: { + fontFamily: '"Inter", "Roboto", "Helvetica", "Arial", sans-serif', + subtitle2: { + fontSize: 16, + fontWeight: 700, + letterSpacing: 0, + }, + caption: { + fontSize: 12, + letterSpacing: 0, + }, + }, + shape: { + borderRadius: 14, + }, + components: { + MuiChartsAxis: { + styleOverrides: { + root: { + [`& .${axisClasses.line}`]: { + stroke: alpha(customThemeTokens.ink, 0.1), + }, + [`& .${axisClasses.tick}`]: { + stroke: alpha(customThemeTokens.ink, 0.1), + }, + [`& .${axisClasses.tickLabel}`]: { + fill: customThemeTokens.muted, + fontSize: 12, + fontWeight: 600, + }, + }, }, - { - field: 'commodity', - headerName: 'Commodity', - width: customized ? 132 : 160, - editable: true, + }, + MuiChartsGrid: { + styleOverrides: { + root: { + [`& .${chartsGridClasses.line}`]: { + stroke: alpha(customThemeTokens.ink, 0.07), + strokeDasharray: '2 8', + strokeWidth: 0.9, + }, + }, }, - { - field: 'traderName', - headerName: 'Trader Name', - width: customized ? 148 : 172, - editable: true, + }, + }, +}); + +const materialPreviewTheme = createTheme({ + cssVariables: { + colorSchemeSelector: 'data-mui-color-scheme', + }, + colorSchemes: { + light: true, + dark: true, + }, +}); + +const chartMonths = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug']; +const subscriptionsData = [38, 44, 42, 48, 52, 59, 63, 68]; +const expansionData = [18, 22, 24, 21, 29, 32, 35, 39]; +const runRateData = [52, 60, 64, 66, 76, 84, 91, 99]; + +type MiniGridSegment = 'Enterprise' | 'Commercial' | 'Scale-up'; +type MiniGridStatus = 'Healthy' | 'Expansion' | 'Watch'; + +interface MiniGridRow { + id: number; + account: string; + region: string; + initials: string; + segment: MiniGridSegment; + arr: number; + growth: number; + health: number; + status: MiniGridStatus; +} + +const miniGridRows: MiniGridRow[] = [ + { + id: 1, + account: 'Northwind', + region: 'North America', + initials: 'NW', + segment: 'Enterprise', + arr: 420, + growth: 18.4, + health: 98, + status: 'Healthy', + }, + { + id: 2, + account: 'Contoso', + region: 'EMEA', + initials: 'CO', + segment: 'Commercial', + arr: 318, + growth: 9.2, + health: 92, + status: 'Expansion', + }, + { + id: 3, + account: 'Tailspin', + region: 'APAC', + initials: 'TS', + segment: 'Enterprise', + arr: 286, + growth: -2.1, + health: 76, + status: 'Watch', + }, + { + id: 4, + account: 'Fabrikam', + region: 'Latin America', + initials: 'FB', + segment: 'Scale-up', + arr: 164, + growth: 14.7, + health: 81, + status: 'Expansion', + }, +]; + +const miniGridMaxArr = Math.max(...miniGridRows.map((row) => row.arr)); + +const miniSegmentStyles: Record = { + Enterprise: { + color: customThemeTokens.accentDark, + background: `linear-gradient(135deg, ${alpha(customThemeTokens.accentLight, 0.82)} 0%, ${alpha( + '#FFFFFF', + 0.66, + )} 100%)`, + }, + Commercial: { + color: '#4C1D95', + background: `linear-gradient(135deg, ${alpha(customThemeTokens.violetLight, 0.9)} 0%, ${alpha( + '#FFFFFF', + 0.7, + )} 100%)`, + }, + 'Scale-up': { + color: '#0F766E', + background: `linear-gradient(135deg, ${alpha('#CCFBF1', 0.86)} 0%, ${alpha( + '#FFFFFF', + 0.72, + )} 100%)`, + }, +}; + +const miniStatusStyles: Record< + MiniGridStatus, + { color: string; background: string; progress: string } +> = { + Healthy: { + color: customThemeTokens.accentDark, + background: alpha(customThemeTokens.accentLight, 0.78), + progress: customThemeTokens.accent, + }, + Expansion: { + color: '#4C1D95', + background: alpha(customThemeTokens.violetLight, 0.82), + progress: customThemeTokens.violet, + }, + Watch: { + color: '#92400E', + background: alpha('#FEF3C7', 0.9), + progress: '#F59E0B', + }, +}; + +const miniGridColumns: GridColDef[] = [ + { + field: 'account', + headerName: 'Account', + flex: 1, + minWidth: 164, + renderCell: (params) => ( + + + + + {params.row.account} + + + {params.row.region} + + + + ), + }, + { + field: 'segment', + headerName: 'Segment', + width: 108, + renderCell: (params) => { + const segmentStyle = miniSegmentStyles[params.row.segment]; + + return ( + + {params.row.segment} + + ); + }, + }, + { + field: 'arr', + headerName: 'ARR', + width: 104, + renderCell: (params) => { + const arrProgress = Math.round((params.row.arr / miniGridMaxArr) * 100); + const positiveGrowth = params.row.growth >= 0; + + return ( + + + + ${params.row.arr}K + + + {positiveGrowth ? '+' : ''} + {params.row.growth}% + + + + ); + }, + }, + { + field: 'health', + headerName: 'Health', + width: 112, + renderCell: (params) => { + const statusStyle = miniStatusStyles[params.row.status]; + + return ( + + + + {params.row.status} + + + {params.row.health}% + + + + ); + }, + }, +]; + +const previewItems = [ + { id: 'charts', label: 'Charts' }, + { id: 'dataGrid', label: 'Data Grid' }, + { id: 'scheduler', label: 'Scheduler' }, +] as const; + +type PreviewItemId = (typeof previewItems)[number]['id']; + +interface ThemedPreviewCarouselProps { + custom: boolean; + previewId: PreviewItemId; + setPreviewId: React.Dispatch>; +} + +const customGradientIds = { + subscriptions: 'x-theming-subscriptions-gradient', + expansion: 'x-theming-expansion-gradient', + runRate: 'x-theming-run-rate-gradient', +}; + +const customChartColors = { + subscriptions: `url(#${customGradientIds.subscriptions})`, + expansion: `url(#${customGradientIds.expansion})`, + runRate: `url(#${customGradientIds.runRate})`, +}; + +const materialChartColors = { + subscriptions: '#1976d2', + expansion: '#9c27b0', + runRate: '#2e7d32', +}; + +const customLegendColors = { + subscriptions: + 'linear-gradient(180deg, hsl(210, 100%, 30%) 0%, hsl(210, 100%, 45%) 55%, hsl(210, 100%, 60%) 100%)', + expansion: 'linear-gradient(180deg, #7C3AED 0%, #A78BFA 100%)', + runRate: 'linear-gradient(90deg, #101322 0%, hsl(210, 100%, 45%) 52%, #7C3AED 100%)', +}; + +const legendItems = [ + { label: 'Subscriptions', key: 'subscriptions' }, + { label: 'Expansion', key: 'expansion' }, + { label: 'Run rate', key: 'runRate' }, +] as const; + +const customThemeCode = ` +const theme = createTheme({ + palette: { + primary: { + main: 'hsl(210, 100%, 45%)', + light: 'hsl(210, 100%, 90%)', + dark: 'hsl(210, 100%, 30%)', + }, + secondary: { + main: '#101322', + light: '#E4E8F4', + dark: '#020617', + }, + warning: { + main: '#7C3AED', + light: '#EDE9FE', + dark: '#4C1D95', + }, + success: { + main: 'hsl(210, 100%, 45%)', + light: 'hsl(210, 100%, 90%)', + dark: 'hsl(210, 100%, 30%)', + }, + text: { + primary: '#101322', + secondary: '#5D667A', + }, + background: { + paper: '#FFFFFF', + default: '#F8FAFF', + }, + divider: '#E2E8F6', + }, + typography: { + fontFamily: '"Inter", "Roboto", "Helvetica", "Arial", sans-serif', + subtitle2: { + fontSize: 16, + fontWeight: 700, + }, + caption: { + fontSize: 12, + }, + }, + shape: { + borderRadius: 14, + }, + components: { + MuiChartsAxis: { + styleOverrides: { + root: { + [\`& .\${axisClasses.line}, & .\${axisClasses.tick}\`]: { + stroke: alpha('#101322', 0.1), + }, + [\`& .\${axisClasses.tickLabel}\`]: { + fill: '#5D667A', + fontSize: 12, + fontWeight: 600, + }, + }, }, - { - field: 'filledQuantity', - headerName: 'Filled', - ...baseFilledQuantityCol, - width: customized ? 130 : 150, - sortable: false, - editable: true, - ...(customized && { + }, + MuiChartsGrid: { + styleOverrides: { + root: { + [\`& .\${chartsGridClasses.line}\`]: { + stroke: alpha('#101322', 0.07), + strokeDasharray: '2 8', + strokeWidth: 0.9, + }, + }, + }, + }, + }, +}); + + + + {/* alpha gradients */} + + + + + +`; + +const materialThemeCode = ` +const theme = createTheme({ + cssVariables: { + colorSchemeSelector: 'data-mui-color-scheme', + }, + colorSchemes: { + light: true, + dark: true, + }, +}); + + + + + + + + + +`; + +function CustomChartGradients() { + return ( + + + + + + + + + + + + + + + + + + ); +} + +function ThemedComposedChart({ custom }: { custom: boolean }) { + const [codeOpen, setCodeOpen] = React.useState(false); + const chartColors = custom ? customChartColors : materialChartColors; + const legendColors = custom ? customLegendColors : materialChartColors; + const code = custom ? customThemeCode : materialThemeCode; + const chartSeries = [ + { + id: 'subscriptions', + type: 'bar' as const, + label: 'Subscriptions', + data: subscriptionsData, + color: chartColors.subscriptions, + }, + { + id: 'expansion', + type: 'bar' as const, + label: 'Expansion', + data: expansionData, + color: chartColors.expansion, + }, + { + id: 'runRate', + type: 'line' as const, + label: 'Run rate', + data: runRateData, + color: chartColors.runRate, + curve: 'monotoneX' as const, + showMark: custom, + }, + ]; + + return ( + { - return ; + flexDirection: 'column', + bgcolor: 'background.paper', + borderColor: 'divider', + }, + custom && customGlassPanelSx, + ]} + > + { - return ; + custom && { + py: 2, + background: `linear-gradient(90deg, ${alpha( + customThemeTokens.accentLight, + 0.46, + )} 0%, ${alpha('#FFFFFF', 0.42)} 52%, ${alpha( + customThemeTokens.violetLight, + 0.4, + )} 100%)`, + '[data-mui-color-scheme="dark"] &': { + borderColor: alpha(customThemeTokens.accentBright, 0.18), + background: `linear-gradient(90deg, ${alpha( + customThemeTokens.accent, + 0.16, + )} 0%, ${alpha('#FFFFFF', 0.04)} 52%, ${alpha(customThemeTokens.violet, 0.12)} 100%)`, + }, }, - }), - }, - { - field: 'status', - headerName: 'Status', - ...baseStatusCol, - width: 150, - sortable: false, - editable: true, - ...(customized && { + ]} + > + + + Revenue composition + + + Monthly subscriptions, expansion, and run-rate trend. + + + setCodeOpen((open) => !open)} + sx={[ + { + font: 'inherit', + flexShrink: 0, + display: { xs: 'none', sm: 'inline-flex' }, + alignItems: 'center', + px: 1.25, + py: 0.75, + border: '1px solid', + borderColor: 'divider', + borderRadius: 1, + color: 'text.secondary', + fontSize: 13, + fontWeight: 500, + lineHeight: 1, + cursor: 'pointer', + backgroundColor: 'background.paper', + '&:hover': { + borderColor: 'text.secondary', + }, + }, + custom && { + color: customThemeTokens.ink, + background: alpha('#FFFFFF', 0.58), + borderColor: alpha(customThemeTokens.accent, 0.16), + backdropFilter: 'blur(12px)', + boxShadow: `0 8px 18px ${alpha(customThemeTokens.accentDark, 0.08)}`, + '[data-mui-color-scheme="dark"] &': { + color: '#F8FBFF', + background: alpha('#06183B', 0.56), + borderColor: alpha(customThemeTokens.accentBright, 0.34), + boxShadow: `0 0 16px ${alpha(customThemeTokens.accentBright, 0.22)}`, + }, + }, + ]} + > + {codeOpen ? 'View Chart' : 'View Code'} + + + + {codeOpen ? ( + + + + ) : ( + + + +
+ + $1.84M + + + Annualized run rate + +
+ + +18.4% + +
+ + + + {custom ? : null} + + + + + index % 2 === 0} + /> + + + +
+ + + + {legendItems.map((item) => ( + + + ))} + + +
+ )} +
+ ); +} + +function ThemedMiniDataGrid({ custom }: { custom: boolean }) { + return ( + { - return ; + flexDirection: 'column', + bgcolor: 'background.paper', + borderColor: 'divider', + }, + custom && customGlassPanelSx, + ]} + > + { - return ; + custom && { + py: 2, + background: `linear-gradient(90deg, ${alpha( + customThemeTokens.accentLight, + 0.46, + )} 0%, ${alpha('#FFFFFF', 0.42)} 52%, ${alpha( + customThemeTokens.violetLight, + 0.4, + )} 100%)`, + '[data-mui-color-scheme="dark"] &': { + borderColor: alpha(customThemeTokens.accentBright, 0.18), + background: `linear-gradient(90deg, ${alpha( + customThemeTokens.accent, + 0.16, + )} 0%, ${alpha('#FFFFFF', 0.04)} 52%, ${alpha(customThemeTokens.violet, 0.12)} 100%)`, + }, }, - }), - }, - ]; - return columns; + ]} + > + + + Account health + + + A compact Data Grid preview with custom cell renderers. + + + + + + + + + ); +} + +function ThemedPreviewCarousel({ custom, previewId, setPreviewId }: ThemedPreviewCarouselProps) { + const selectedPreviewIndex = previewItems.findIndex((item) => item.id === previewId); + + const handlePrevious = () => { + setPreviewId( + previewItems[(selectedPreviewIndex - 1 + previewItems.length) % previewItems.length].id, + ); + }; + + const handleNext = () => { + setPreviewId(previewItems[(selectedPreviewIndex + 1) % previewItems.length].id); + }; + + let preview = ; + + if (previewId === 'dataGrid') { + preview = ; } + + if (previewId === 'scheduler') { + preview = ; + } + + return ( +
+ + + {previewItems.map((item) => { + const selected = item.id === previewId; + + return ( + setPreviewId(item.id)} + sx={[ + { + font: 'inherit', + border: 0, + borderRadius: 999, + px: 1.25, + py: 0.625, + color: selected ? 'primary.main' : 'text.secondary', + bgcolor: selected ? 'action.selected' : 'transparent', + fontSize: 13, + fontWeight: 700, + lineHeight: 1, + cursor: 'pointer', + whiteSpace: 'nowrap', + outline: 0, + '&:focus-visible': { + boxShadow: `0 0 0 3px ${alpha('#1976d2', 0.18)}`, + }, + }, + custom && { + '&:focus-visible': { + boxShadow: `0 0 0 3px ${alpha(customThemeTokens.accent, 0.16)}`, + }, + '[data-mui-color-scheme="dark"] &': { + color: alpha('#DDEBFF', 0.72), + }, + }, + custom && + selected && { + color: customThemeTokens.accentDark, + background: `linear-gradient(135deg, ${alpha( + customThemeTokens.accentLight, + 0.68, + )} 0%, ${alpha('#FFFFFF', 0.56)} 48%, ${alpha( + customThemeTokens.violetLight, + 0.58, + )} 100%)`, + boxShadow: `0 8px 18px ${alpha( + customThemeTokens.accent, + 0.14, + )}, inset 0 0 0 1px ${alpha(customThemeTokens.accent, 0.16)}`, + '[data-mui-color-scheme="dark"] &': { + color: '#F8FBFF', + background: `linear-gradient(135deg, ${alpha( + customThemeTokens.accent, + 0.34, + )} 0%, ${alpha('#FFFFFF', 0.08)} 48%, ${alpha( + customThemeTokens.violet, + 0.24, + )} 100%)`, + boxShadow: `0 0 18px ${alpha( + customThemeTokens.accentBright, + 0.32, + )}, inset 0 0 0 1px ${alpha(customThemeTokens.accentBright, 0.28)}`, + }, + '&:focus-visible': { + boxShadow: `0 0 0 3px ${alpha( + customThemeTokens.accent, + 0.16, + )}, 0 8px 18px ${alpha( + customThemeTokens.accent, + 0.14, + )}, inset 0 0 0 1px ${alpha(customThemeTokens.accent, 0.16)}`, + }, + }, + ]} + > + {item.label} + + ); + })} + + + + + + + + + + + + {preview} +
+ ); +} + +function CustomThemePreview({ + previewId, + setPreviewId, +}: Pick) { + return ( + + + + ); +} + +function MaterialThemePreview({ + previewId, + setPreviewId, +}: Pick) { + return ( + + + + ); +} + +export default function XTheming() { + const [customized, setCustomized] = React.useState(true); + const [previewId, setPreviewId] = React.useState('charts'); + return (
@@ -103,7 +1655,7 @@ export default function XTheming() { Advanced and beautiful } - description="Use sophisticated theming features to make the MUI X components look exactly how you want. Take this Data Grid as an example." + description="Use sophisticated theming features to make your components look exactly how you want." /> setCustomized(true)}> @@ -124,56 +1676,9 @@ export default function XTheming() { {customized ? ( - - {dataGridStyleOverrides} - - + ) : ( - - - theme.applyDarkStyles({ - '& .MuiDataGrid-cell[data-field="status"][data-value="Rejected"]': { - '& .MuiChip-root': { - color: red[300], - }, - }, - }), - ]} - > - - - + )} diff --git a/docs/src/components/productX/XThemingSchedulerPreview.tsx b/docs/src/components/productX/XThemingSchedulerPreview.tsx new file mode 100644 index 00000000000000..8755c52cac80be --- /dev/null +++ b/docs/src/components/productX/XThemingSchedulerPreview.tsx @@ -0,0 +1,380 @@ +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Typography from '@mui/material/Typography'; +import Paper from '@mui/material/Paper'; +import { alpha } from '@mui/material/styles'; +import { StandaloneCompactWeekView } from '@mui/x-scheduler/compact-week-view'; +import type { SchedulerEvent, SchedulerResource } from '@mui/x-scheduler/models'; + +interface XThemingSchedulerPreviewProps { + custom: boolean; +} + +const customThemeTokens = { + ink: '#101322', + canvas: '#F8FAFF', + surfaceTint: '#F2F6FF', + accent: 'hsl(210, 100%, 45%)', + accentLight: 'hsl(210, 100%, 90%)', + accentBright: 'hsl(210, 100%, 60%)', + accentDark: 'hsl(210, 100%, 30%)', + violet: '#7C3AED', + violetLight: '#EDE9FE', +}; + +const customGlassPanelSx = { + position: 'relative', + borderRadius: '16px', + borderColor: alpha(customThemeTokens.accentBright, 0.3), + background: `linear-gradient(135deg, ${alpha('#FFFFFF', 0.9)} 0%, ${alpha( + '#FFFFFF', + 0.62, + )} 100%), linear-gradient(145deg, ${alpha(customThemeTokens.accentLight, 0.56)} 0%, ${alpha( + customThemeTokens.violetLight, + 0.48, + )} 100%)`, + backdropFilter: 'blur(18px) saturate(180%)', + boxShadow: `0 0 0 1px ${alpha(customThemeTokens.accentBright, 0.14)}, 0 18px 44px ${alpha( + customThemeTokens.accentDark, + 0.08, + )}, 0 1px 0 ${alpha('#FFFFFF', 0.88)} inset, inset 0 0 0 1px ${alpha('#FFFFFF', 0.5)}`, + '&::before': { + content: '""', + position: 'absolute', + inset: -1, + zIndex: 1, + border: '1px solid transparent', + borderRadius: 'inherit', + pointerEvents: 'none', + background: `linear-gradient(135deg, ${alpha(customThemeTokens.accentBright, 0.92)} 0%, ${alpha( + '#FFFFFF', + 0.72, + )} 28%, ${alpha(customThemeTokens.violet, 0.38)} 68%, ${alpha( + customThemeTokens.accentBright, + 0.2, + )} 100%) border-box`, + WebkitMask: 'linear-gradient(#000 0 0) padding-box, linear-gradient(#000 0 0)', + WebkitMaskComposite: 'xor', + maskComposite: 'exclude', + }, + '&::after': { + content: '""', + position: 'absolute', + inset: 0, + zIndex: 1, + borderRadius: 'inherit', + pointerEvents: 'none', + boxShadow: `inset 0 0 22px ${alpha(customThemeTokens.accentBright, 0.1)}`, + }, + '& > *': { + position: 'relative', + zIndex: 2, + }, + '[data-mui-color-scheme="dark"] &': { + color: '#F8FBFF', + borderColor: alpha(customThemeTokens.accentBright, 0.72), + background: `linear-gradient(135deg, ${alpha('#07122E', 0.86)} 0%, ${alpha( + '#030712', + 0.76, + )} 100%), radial-gradient(circle at 12% 0%, ${alpha( + customThemeTokens.accentBright, + 0.28, + )} 0, transparent 34%), radial-gradient(circle at 92% 12%, ${alpha( + customThemeTokens.violet, + 0.24, + )} 0, transparent 38%)`, + boxShadow: `0 0 0 1px ${alpha(customThemeTokens.accentBright, 0.48)}, 0 0 24px ${alpha( + customThemeTokens.accentBright, + 0.54, + )}, 0 0 58px ${alpha(customThemeTokens.accent, 0.34)}, 0 26px 70px ${alpha( + '#000000', + 0.52, + )}, inset 0 1px 0 ${alpha('#FFFFFF', 0.18)}`, + '&::before': { + background: `linear-gradient(135deg, ${alpha( + customThemeTokens.accentBright, + 1, + )} 0%, ${alpha('#FFFFFF', 0.72)} 22%, ${alpha(customThemeTokens.violet, 0.58)} 62%, ${alpha( + customThemeTokens.accentBright, + 0.28, + )} 100%) border-box`, + }, + '&::after': { + boxShadow: `inset 0 0 34px ${alpha(customThemeTokens.accentBright, 0.24)}`, + }, + '& .MuiTypography-root': { + color: '#F8FBFF', + }, + '& .MuiTypography-subtitle2': { + color: '#F8FBFF', + }, + '& .MuiTypography-body2': { + color: alpha('#DDEBFF', 0.74), + }, + }, +}; + +const schedulerPreviewEvents: SchedulerEvent[] = [ + { + id: 'design-review', + title: 'Design review', + start: '2026-01-12T01:00:00Z', + end: '2026-01-12T02:45:00Z', + resource: 'design', + }, + { + id: 'pricing-sync', + title: 'Pricing sync', + start: '2026-01-13T02:00:00Z', + end: '2026-01-13T03:30:00Z', + resource: 'growth', + }, + { + id: 'migration-window', + title: 'Migration window', + start: '2026-01-14T01:30:00Z', + end: '2026-01-14T04:00:00Z', + resource: 'platform', + }, + { + id: 'launch-readout', + title: 'Launch readout', + start: '2026-01-15T02:30:00Z', + end: '2026-01-15T04:30:00Z', + resource: 'growth', + }, +]; + +const schedulerPreviewResources: SchedulerResource[] = [ + { id: 'design', title: 'Design', eventColor: 'blue' }, + { id: 'growth', title: 'Growth', eventColor: 'amber' }, + { id: 'platform', title: 'Platform', eventColor: 'teal' }, +]; + +export default function XThemingSchedulerPreview({ custom }: XThemingSchedulerPreviewProps) { + return ( + + + + + Team schedule + + + A compact Scheduler preview using the selected theme. + + + + + + *': { + borderInlineStart: `1px solid ${alpha(customThemeTokens.accentBright, 0.09)}`, + }, + '& .MuiEventCalendar-dayTimeGridAllDayEventsCell': { + color: '#F8FBFF', + borderColor: alpha(customThemeTokens.accentBright, 0.09), + background: `linear-gradient(180deg, ${alpha( + '#071D46', + 0.74, + )} 0%, ${alpha('#061226', 0.62)} 100%)`, + }, + '& .MuiEventCalendar-dayTimeGridColumn': { + background: alpha('#061226', 0.26), + }, + '& .MuiEventCalendar-dayTimeGridTimeAxisCell:not(:first-of-type)::after': { + borderBlockEnd: `1px solid ${alpha(customThemeTokens.accentBright, 0.12)}`, + }, + '& .MuiEventCalendar-timeGridEvent': { + color: '#F8FBFF', + borderColor: alpha('#FFFFFF', 0.28), + boxShadow: `0 0 18px ${alpha( + customThemeTokens.accentBright, + 0.2, + )}, inset 0 1px 0 ${alpha('#FFFFFF', 0.28)}`, + }, + '& .MuiEventCalendar-timeGridEvent[data-palette="blue"]': { + background: `linear-gradient(135deg, ${alpha( + customThemeTokens.accentBright, + 0.58, + )} 0%, ${alpha(customThemeTokens.accent, 0.52)} 44%, ${alpha( + '#07122E', + 0.94, + )} 100%)`, + }, + '& .MuiEventCalendar-timeGridEvent[data-palette="amber"]': { + background: `linear-gradient(135deg, ${alpha('#F59E0B', 0.72)} 0%, ${alpha( + customThemeTokens.violet, + 0.56, + )} 48%, ${alpha('#07122E', 0.94)} 100%)`, + }, + '& .MuiEventCalendar-timeGridEvent[data-palette="teal"]': { + background: `linear-gradient(135deg, ${alpha('#22D3EE', 0.58)} 0%, ${alpha( + customThemeTokens.accent, + 0.48, + )} 46%, ${alpha('#07122E', 0.94)} 100%)`, + }, + }, + }, + ]} + /> + + + ); +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d7e7c7dfd6852d..4e31062e377eb4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -256,7 +256,7 @@ importers: version: 7.29.2 '@base-ui/react': specifier: catalog:docs - version: 1.4.1(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 1.4.1(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@docsearch/react': specifier: ^3.9.0 version: 3.9.0(@algolia/client-search@5.18.0)(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(search-insights@2.13.0) @@ -308,6 +308,9 @@ importers: '@mui/x-charts': specifier: 9.5.0 version: 9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-chat': + specifier: 9.0.0-alpha.10 + version: 9.0.0-alpha.10(@date-fns/tz@1.5.0)(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@mui/x-data-grid': specifier: 9.5.0 version: 9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -322,13 +325,19 @@ importers: version: 9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@mui/x-date-pickers': specifier: 9.5.0 - version: 9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(dayjs@1.11.20)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(date-fns@4.4.0)(dayjs@1.11.20)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@mui/x-date-pickers-pro': specifier: 9.5.0 - version: 9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(dayjs@1.11.20)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(date-fns@4.4.0)(dayjs@1.11.20)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@mui/x-license': specifier: 9.4.0 version: 9.4.0(@types/react@19.2.14)(react@19.2.6) + '@mui/x-scheduler': + specifier: 9.0.0-beta.2 + version: 9.0.0-beta.2(@date-fns/tz@1.5.0)(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-scheduler-premium': + specifier: 9.0.0-beta.2 + version: 9.0.0-beta.2(@date-fns/tz@1.5.0)(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@mui/x-tree-view': specifier: 9.4.0 version: 9.4.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -698,7 +707,7 @@ importers: version: 7.29.2 '@base-ui/react': specifier: ^1 - version: 1.4.1(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 1.4.1(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@docsearch/react': specifier: catalog:docs version: 3.9.0(@algolia/client-search@5.18.0)(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(search-insights@2.13.0) @@ -1767,6 +1776,12 @@ packages: '@asamuzakjp/css-color@2.8.3': resolution: {integrity: sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==} + '@atlaskit/pragmatic-drag-and-drop-auto-scroll@2.1.5': + resolution: {integrity: sha512-InLvVhZAHPBfv3CxuG4AfOQuhNJjaFy69YBfodPMWtRFQNQAKa9Yb3vL9Ho6qsD9qKUBuJa4A5k7QddaXQ4Eyw==} + + '@atlaskit/pragmatic-drag-and-drop@1.8.1': + resolution: {integrity: sha512-uXWNPpL8n4OmTVbduH7nq8pk8htqGo/prR5cYEE8sVCPJGAUMWn6lzvWTfI+4VCeQvHiDRODVz4YzH06OVAxhw==} + '@babel/cli@7.28.6': resolution: {integrity: sha512-6EUNcuBbNkj08Oj4gAZ+BUU8yLCgKzgVX4gaTh09Ya2C8ICM4P+G30g4m3akRxSYAp3A/gnWchrNst7px4/nUQ==} engines: {node: '>=6.9.0'} @@ -2424,6 +2439,23 @@ packages: date-fns: optional: true + '@base-ui/react@1.6.0': + resolution: {integrity: sha512-/jzjTWJYXhRFO45Bev9lc3cHbmjzCMpUqbMZ2AgKy/z25mY9B6shGSNcXcjQar9n5doM0KYW1W8fcFv2jZBuMw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@date-fns/tz': ^1.2.0 + '@types/react': ^17 || ^18 || ^19 + date-fns: ^4.0.0 + react: ^17 || ^18 || ^19 + react-dom: ^17 || ^18 || ^19 + peerDependenciesMeta: + '@date-fns/tz': + optional: true + '@types/react': + optional: true + date-fns: + optional: true + '@base-ui/utils@0.2.8': resolution: {integrity: sha512-jvOi+c+ftGlGotNcKnzPVg2IhCaDTB6/6R3JeqdjdXktuAJi3wKH9T7+svuaKh1mmfVU11UWzUZVH74JDfi/wQ==} peerDependencies: @@ -2444,6 +2476,16 @@ packages: '@types/react': optional: true + '@base-ui/utils@0.3.1': + resolution: {integrity: sha512-gFFiltORVmW/N6IILTGxizP3PBpVpysqML1ALY5Vk0mH+7faVkCknOU31goYHN5Aoek2dkjxva1XOD2Ce9WuIg==} + peerDependencies: + '@types/react': ^17 || ^18 || ^19 + react: ^17 || ^18 || ^19 + react-dom: ^17 || ^18 || ^19 + peerDependenciesMeta: + '@types/react': + optional: true + '@bcoe/v8-coverage@1.0.2': resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} @@ -2536,6 +2578,9 @@ packages: peerDependencies: postcss-selector-parser: ^7.1.1 + '@date-fns/tz@1.5.0': + resolution: {integrity: sha512-lwYN/vDPeNRULcepoE/LO2Pgx+7/RV+S9ARfbc9lr2DtGkOD7pAiruHvbR1RX3Qyf6ja47EWJDMsNK5vK08DJg==} + '@discoveryjs/json-ext@0.6.3': resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} @@ -2895,6 +2940,12 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' + '@floating-ui/react@0.27.19': + resolution: {integrity: sha512-31B8h5mm8YxotlE7/AU/PhNAl8eWxAmjL/v2QOxroDNkTFLk3Uu82u63N3b6TXa4EGJeeZLVcd/9AlNlVqzeog==} + peerDependencies: + react: '>=17.0.0' + react-dom: '>=17.0.0' + '@floating-ui/utils@0.2.11': resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} @@ -3700,6 +3751,32 @@ packages: '@emotion/styled': optional: true + '@mui/x-chat-headless@9.0.0-alpha.10': + resolution: {integrity: sha512-76naaD3BRgiB6IHbC+UhXyeGqT9hTLtLjciP2EJhdRkHHQVZJt6MQ39Z8vVvb++/xCAfB1QDhLEYprTMq/b5SA==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@mui/x-chat@9.0.0-alpha.10': + resolution: {integrity: sha512-lM/nR0pUci002iOMytSsU/H+CpuZAqCGc3Lk4rHfmHTRInRe0lfFyNus0Rs4makS/2s/EqZBjOi5C+MC6IydyA==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.9.0 + '@emotion/styled': ^11.8.1 + '@mui/icons-material': '*' + '@mui/material': ^7.3.0 || ^9.0.0-beta.0 || ^9.0.0 + '@mui/system': ^7.3.0 || ^9.0.0-beta.1 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@mui/icons-material': + optional: true + '@mui/x-data-grid-generator@9.5.0': resolution: {integrity: sha512-0WDaL44rvOttVR+HU/xUZxqP+WCjTIcWtt8kzmPIa4RnJwryIOq7AbilPZUx1A0bJkIx0Wv/DoA1FOAVM3tJBg==} engines: {node: '>=14.0.0'} @@ -3850,12 +3927,72 @@ packages: peerDependencies: react: ^17.0.0 || ^18.0.0 || ^19.0.0 + '@mui/x-internals@9.6.0': + resolution: {integrity: sha512-lBh+4P2CRyspoFbBwCemTFIYmAAX8esznDsYYDGgV0+Id9z7Xi5pRZUAFY33XodYgTnMPiN4TJyfd8bfJbPNzg==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + '@mui/x-license@9.4.0': resolution: {integrity: sha512-5paggIl3CE0j2acqPsZaT1dOm4DAA3cW1/qKRAnABwVosnixnu8bscIEwJ9toAZXdFK6W34qw1E8Vfw9J7C6Zg==} engines: {node: '>=14.0.0'} peerDependencies: react: ^17.0.0 || ^18.0.0 || ^19.0.0 + '@mui/x-license@9.6.0': + resolution: {integrity: sha512-E+laPXwX/MtgAza+X8VTnyfl6r3yLw8nPvQWyrZIzjCOGQAG2xTYi0Wl7l0Sgg+bbCCJsglN80abjRV1XM3BIg==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@mui/x-scheduler-internals-premium@9.0.0-beta.2': + resolution: {integrity: sha512-txeY+b35PRnTaTpaHqjtEqcI1xEhy596/h1kiJ5BYEwDpKoy7d0GT3sbT/urpQHHIdcst3giFCHFLduH/VcH7w==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@mui/x-scheduler-internals@9.0.0-beta.2': + resolution: {integrity: sha512-sGmu6pwiDQNF4Fpcaensnpu6qwVAcONx0CpHzFxGxLg2V5L8VrHDaJmvsgjohxMJxAZ/U52R1ci5oc3lLSrczQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@mui/x-scheduler-premium@9.0.0-beta.2': + resolution: {integrity: sha512-3AOQB+XcjH0cJ46GngDHea7EviM9AtAgJG84OrY0aK+IVgBIakx+2r3jRmGaLgVmRpBaQR8bXGnB9lb/1yNRDQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.9.0 + '@emotion/styled': ^11.8.1 + '@mui/icons-material': ^7.3.0 || ^9.0.0 + '@mui/material': ^7.3.0 || ^9.0.0 + '@mui/system': ^7.3.0 || ^9.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + + '@mui/x-scheduler@9.0.0-beta.2': + resolution: {integrity: sha512-WxmHa2tR49D0+IJ4ir1RIH+4fvZzlUhACbxqNJnVV1LKGIaqDBdqLQBFtUCuhi86SLxlvG0Dk7/fT3TJ3Jik3Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.9.0 + '@emotion/styled': ^11.8.1 + '@mui/icons-material': ^7.3.0 || ^9.0.0 + '@mui/material': ^7.3.0 || ^9.0.0 + '@mui/system': ^7.3.0 || ^9.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@mui/x-telemetry@9.2.0': resolution: {integrity: sha512-nHsTbsmPs8s+Cz8+Bu80/T8EXUzbURFOduX9t34WeByKywpJNf1Fh20jzSYAPkmCsN9TbrabZ3Q3Hq8o+W6c+A==} engines: {node: '>=14.0.0'} @@ -3876,6 +4013,29 @@ packages: '@emotion/styled': optional: true + '@mui/x-tree-view@9.6.0': + resolution: {integrity: sha512-CZ7G2iuOiKMRZjaBd5wGiRhBZYdAmycguWkkSlOqrkqs7r79zbQYBZh97sZWYBesd+a4rAAJI23oDV3mf2IRYg==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.9.0 + '@emotion/styled': ^11.8.1 + '@mui/material': ^7.3.0 || ^9.0.0 + '@mui/system': ^7.3.0 || ^9.0.0 + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + + '@mui/x-virtualizer@9.0.0-alpha.10': + resolution: {integrity: sha512-Et1wloXfxD/z037Wk6H0lGFcFzH4o/+5VL+faLgkE1IZHzV64PEg7Z4OLoi9vwSMsfOB35OBVNjBajiepD8L+w==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 + '@mui/x-virtualizer@9.0.0-alpha.8': resolution: {integrity: sha512-Bfvj2Zhi68rkJ/p99UAWqqTgRWvyTOIyzglagtfSaibrNwDmwN2cwfwLmSd2XrWmpirNY39kCxzqoURmacMutA==} engines: {node: '>=14.0.0'} @@ -6117,6 +6277,9 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + bind-event-listener@3.0.0: + resolution: {integrity: sha512-PJvH288AWQhKs2v9zyfYdPzlPqf5bXbGMmhmUIY9x4dAUGIWgomO771oBQNwJnMQSnUIXhKu6sgzpBRXTlvb8Q==} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -6554,6 +6717,9 @@ packages: core-js-pure@3.45.1: resolution: {integrity: sha512-OHnWFKgTUshEU8MK+lOs1H8kC8GkTi9Z1tvNkxrCcw9wl3MJIO7q2ld77wjWn4/xuGrVu2X+nME1iIIPBSdyEQ==} + core-js-pure@3.49.0: + resolution: {integrity: sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==} + core-js@3.48.0: resolution: {integrity: sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==} @@ -6735,6 +6901,9 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} + date-fns@4.4.0: + resolution: {integrity: sha512-+1UMbeh68lH1SegH83CGWwpb6OHHbpSgr3+s5Eww5M4CAgswBpoWS0AjTOfEJ33HiYKz1hdj/KTFprzXHmq/6w==} + dateformat@3.0.3: resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} @@ -8740,6 +8909,24 @@ packages: vue: optional: true + markdown-to-jsx@9.8.2: + resolution: {integrity: sha512-rWUuxKB5NsuJmSfUOuXkQ0O5qk0J/Lr3Lk6dzxKoKQI/jeHYlsVfz3zJdMLAhI46hHoXDYERWhtBOiqtWDZ4LA==} + engines: {node: '>= 18'} + peerDependencies: + react: '>= 16.0.0' + react-native: '*' + solid-js: '>=1.0.0' + vue: '>=3.0.0' + peerDependenciesMeta: + react: + optional: true + react-native: + optional: true + solid-js: + optional: true + vue: + optional: true + marked-terminal@7.3.0: resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} engines: {node: '>=16.0.0'} @@ -9955,6 +10142,9 @@ packages: quotation@2.0.3: resolution: {integrity: sha512-yEc24TEgCFLXx7D4JHJJkK4JFVtatO8fziwUxY4nB/Jbea9o9CVS3gt22mA0W7rPYAGW2fWzYDSOtD94PwOyqA==} + raf-schd@4.0.3: + resolution: {integrity: sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==} + range-parser@1.2.0: resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} engines: {node: '>= 0.6'} @@ -10276,6 +10466,9 @@ packages: remark@15.0.1: resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} + remend@1.3.0: + resolution: {integrity: sha512-iIhggPkhW3hFImKtB10w0dz4EZbs28mV/dmbcYVonWEJ6UGHHpP+bFZnTh6GNWJONg5m+U56JrL+8IxZRdgWjw==} + remove-accents@0.4.2: resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==} @@ -10899,6 +11092,9 @@ packages: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} + tabbable@6.4.0: + resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} + table@6.9.0: resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} @@ -11935,6 +12131,17 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 + '@atlaskit/pragmatic-drag-and-drop-auto-scroll@2.1.5': + dependencies: + '@atlaskit/pragmatic-drag-and-drop': 1.8.1 + '@babel/runtime': 7.29.2 + + '@atlaskit/pragmatic-drag-and-drop@1.8.1': + dependencies: + '@babel/runtime': 7.29.2 + bind-event-listener: 3.0.0 + raf-schd: 4.0.3 + '@babel/cli@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -12772,7 +12979,7 @@ snapshots: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@base-ui/react@1.4.1(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@base-ui/react@1.4.1(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@babel/runtime': 7.29.2 '@base-ui/utils': 0.2.8(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) @@ -12782,7 +12989,23 @@ snapshots: react-dom: 19.2.6(react@19.2.6) use-sync-external-store: 1.6.0(react@19.2.6) optionalDependencies: + '@date-fns/tz': 1.5.0 + '@types/react': 19.2.14 + date-fns: 4.4.0 + + '@base-ui/react@1.6.0(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@babel/runtime': 7.29.2 + '@base-ui/utils': 0.3.1(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@floating-ui/utils': 0.2.11 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + use-sync-external-store: 1.6.0(react@19.2.6) + optionalDependencies: + '@date-fns/tz': 1.5.0 '@types/react': 19.2.14 + date-fns: 4.4.0 '@base-ui/utils@0.2.8(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: @@ -12806,6 +13029,17 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 + '@base-ui/utils@0.3.1(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@babel/runtime': 7.29.2 + '@floating-ui/utils': 0.2.11 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + reselect: 5.2.0 + use-sync-external-store: 1.6.0(react@19.2.6) + optionalDependencies: + '@types/react': 19.2.14 + '@bcoe/v8-coverage@1.0.2': {} '@blazediff/core@1.9.1': {} @@ -12875,6 +13109,8 @@ snapshots: dependencies: postcss-selector-parser: 7.1.1 + '@date-fns/tz@1.5.0': {} + '@discoveryjs/json-ext@0.6.3': {} '@docsearch/css@3.9.0': {} @@ -13200,6 +13436,14 @@ snapshots: react: 19.2.6 react-dom: 19.2.6(react@19.2.6) + '@floating-ui/react@0.27.19(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@floating-ui/utils': 0.2.11 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + tabbable: 6.4.0 + '@floating-ui/utils@0.2.11': {} '@html-validate/stylish@5.2.0': {} @@ -13703,8 +13947,8 @@ snapshots: es-toolkit: 1.46.1 eslint: 10.3.0(jiti@2.6.1) eslint-config-prettier: 10.1.8(eslint@10.3.0(jiti@2.6.1)) - eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.3.0(jiti@2.6.1)) - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.3.0(jiti@2.6.1)) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)))(eslint@10.3.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)))(eslint@10.3.0(jiti@2.6.1)))(eslint@10.3.0(jiti@2.6.1)) eslint-plugin-compat: 7.0.2(eslint@10.3.0(jiti@2.6.1)) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.3.0(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@10.3.0(jiti@2.6.1)) @@ -14108,6 +14352,45 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@mui/x-chat-headless@9.0.0-alpha.10(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@babel/runtime': 7.29.7 + '@base-ui/react': 1.6.0(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/utils': 9.1.1(@types/react@19.2.14)(react@19.2.6) + '@mui/x-internals': 9.6.0(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + transitivePeerDependencies: + - '@date-fns/tz' + - '@types/react' + - date-fns + + '@mui/x-chat@9.0.0-alpha.10(@date-fns/tz@1.5.0)(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@babel/runtime': 7.29.7 + '@mui/material': link:packages/mui-material/build + '@mui/system': link:packages/mui-system/build + '@mui/utils': 9.1.1(@types/react@19.2.14)(react@19.2.6) + '@mui/x-chat-headless': 9.0.0-alpha.10(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-internals': 9.6.0(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + clsx: 2.1.1 + markdown-to-jsx: 9.8.2(react@19.2.6) + prop-types: 15.8.1 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + remend: 1.3.0 + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.6) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6) + '@mui/icons-material': link:packages/mui-icons-material/build + transitivePeerDependencies: + - '@date-fns/tz' + - '@types/react' + - date-fns + - react-native + - solid-js + - vue + '@mui/x-data-grid-generator@9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@babel/runtime': 7.29.7 @@ -14188,13 +14471,13 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mui/x-date-pickers-pro@9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(dayjs@1.11.20)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@mui/x-date-pickers-pro@9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(date-fns@4.4.0)(dayjs@1.11.20)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@babel/runtime': 7.29.7 '@mui/material': link:packages/mui-material/build '@mui/system': link:packages/mui-system/build '@mui/utils': 9.0.1(@types/react@19.2.14)(react@19.2.6) - '@mui/x-date-pickers': 9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(dayjs@1.11.20)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-date-pickers': 9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(date-fns@4.4.0)(dayjs@1.11.20)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) '@mui/x-internals': 9.1.0(@types/react@19.2.14)(react@19.2.6) '@mui/x-license': 9.4.0(@types/react@19.2.14)(react@19.2.6) clsx: 2.1.1 @@ -14205,11 +14488,12 @@ snapshots: optionalDependencies: '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.6) '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6) + date-fns: 4.4.0 dayjs: 1.11.20 transitivePeerDependencies: - '@types/react' - '@mui/x-date-pickers@9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(dayjs@1.11.20)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@mui/x-date-pickers@9.5.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(date-fns@4.4.0)(dayjs@1.11.20)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@babel/runtime': 7.29.7 '@mui/material': link:packages/mui-material/build @@ -14225,6 +14509,7 @@ snapshots: optionalDependencies: '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.6) '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6) + date-fns: 4.4.0 dayjs: 1.11.20 transitivePeerDependencies: - '@types/react' @@ -14252,6 +14537,19 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@mui/x-internals@9.6.0(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@babel/runtime': 7.29.7 + '@base-ui/utils': 0.2.9(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/utils': 9.1.1(@types/react@19.2.14)(react@19.2.6) + core-js-pure: 3.49.0 + react: 19.2.6 + reselect: 5.2.0 + use-sync-external-store: 1.6.0(react@19.2.6) + transitivePeerDependencies: + - '@types/react' + - react-dom + '@mui/x-license@9.4.0(@types/react@19.2.14)(react@19.2.6)': dependencies: '@babel/runtime': 7.29.7 @@ -14262,6 +14560,103 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@mui/x-license@9.6.0(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@babel/runtime': 7.29.7 + '@mui/utils': 9.1.1(@types/react@19.2.14)(react@19.2.6) + '@mui/x-internals': 9.6.0(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-telemetry': 9.2.0 + react: 19.2.6 + transitivePeerDependencies: + - '@types/react' + - react-dom + + '@mui/x-scheduler-internals-premium@9.0.0-beta.2(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@babel/runtime': 7.29.7 + '@base-ui/react': 1.6.0(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@base-ui/utils': 0.2.9(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-internals': 9.6.0(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-scheduler-internals': 9.0.0-beta.2(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + prop-types: 15.8.1 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + transitivePeerDependencies: + - '@date-fns/tz' + - '@types/react' + - date-fns + + '@mui/x-scheduler-internals@9.0.0-beta.2(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@atlaskit/pragmatic-drag-and-drop': 1.8.1 + '@atlaskit/pragmatic-drag-and-drop-auto-scroll': 2.1.5 + '@babel/runtime': 7.29.7 + '@base-ui/react': 1.6.0(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@base-ui/utils': 0.2.9(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@date-fns/tz': 1.5.0 + '@floating-ui/react': 0.27.19(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@floating-ui/utils': 0.2.11 + '@mui/x-internals': 9.6.0(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + date-fns: 4.4.0 + prop-types: 15.8.1 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + use-sync-external-store: 1.6.0(react@19.2.6) + transitivePeerDependencies: + - '@types/react' + + '@mui/x-scheduler-premium@9.0.0-beta.2(@date-fns/tz@1.5.0)(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@babel/runtime': 7.29.7 + '@base-ui/react': 1.6.0(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@base-ui/utils': 0.2.9(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/icons-material': link:packages/mui-icons-material/build + '@mui/material': link:packages/mui-material/build + '@mui/system': link:packages/mui-system/build + '@mui/utils': 9.1.1(@types/react@19.2.14)(react@19.2.6) + '@mui/x-internals': 9.6.0(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-license': 9.6.0(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-scheduler': 9.0.0-beta.2(@date-fns/tz@1.5.0)(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-scheduler-internals': 9.0.0-beta.2(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-scheduler-internals-premium': 9.0.0-beta.2(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-virtualizer': 9.0.0-alpha.10(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + clsx: 2.1.1 + prop-types: 15.8.1 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.6) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6) + transitivePeerDependencies: + - '@date-fns/tz' + - '@types/react' + - date-fns + + '@mui/x-scheduler@9.0.0-beta.2(@date-fns/tz@1.5.0)(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/icons-material@packages+mui-icons-material+build)(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@babel/runtime': 7.29.7 + '@base-ui/react': 1.6.0(@date-fns/tz@1.5.0)(@types/react@19.2.14)(date-fns@4.4.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@base-ui/utils': 0.2.9(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/icons-material': link:packages/mui-icons-material/build + '@mui/material': link:packages/mui-material/build + '@mui/system': link:packages/mui-system/build + '@mui/utils': 9.1.1(@types/react@19.2.14)(react@19.2.6) + '@mui/x-internals': 9.6.0(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-scheduler-internals': 9.0.0-beta.2(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/x-tree-view': 9.6.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + clsx: 2.1.1 + prop-types: 15.8.1 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.6) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6) + transitivePeerDependencies: + - '@date-fns/tz' + - '@types/react' + - date-fns + '@mui/x-telemetry@9.2.0': dependencies: '@babel/runtime': 7.29.2 @@ -14290,6 +14685,36 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@mui/x-tree-view@9.6.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6))(@mui/material@packages+mui-material+build)(@mui/system@packages+mui-system+build)(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@babel/runtime': 7.29.7 + '@base-ui/utils': 0.2.9(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@mui/material': link:packages/mui-material/build + '@mui/system': link:packages/mui-system/build + '@mui/utils': 9.1.1(@types/react@19.2.14)(react@19.2.6) + '@mui/x-internals': 9.6.0(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@types/react-transition-group': 4.4.12(@types/react@19.2.14) + clsx: 2.1.1 + prop-types: 15.8.1 + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + react-transition-group: 4.4.5(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + optionalDependencies: + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.6) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.6))(@types/react@19.2.14)(react@19.2.6) + transitivePeerDependencies: + - '@types/react' + + '@mui/x-virtualizer@9.0.0-alpha.10(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + dependencies: + '@babel/runtime': 7.29.7 + '@mui/utils': 9.1.1(@types/react@19.2.14)(react@19.2.6) + '@mui/x-internals': 9.6.0(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.6) + transitivePeerDependencies: + - '@types/react' + '@mui/x-virtualizer@9.0.0-alpha.8(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': dependencies: '@babel/runtime': 7.29.7 @@ -16491,6 +16916,8 @@ snapshots: binary-extensions@2.2.0: {} + bind-event-listener@3.0.0: {} + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -16949,6 +17376,8 @@ snapshots: core-js-pure@3.45.1: {} + core-js-pure@3.49.0: {} + core-js@3.48.0: {} core-util-is@1.0.3: {} @@ -17145,6 +17574,8 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 + date-fns@4.4.0: {} + dateformat@3.0.3: {} dayjs@1.11.20: {} @@ -17516,7 +17947,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@10.3.0(jiti@2.6.1)): + eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)))(eslint@10.3.0(jiti@2.6.1)): dependencies: debug: 4.4.3 eslint: 10.3.0(jiti@2.6.1) @@ -17550,14 +17981,14 @@ snapshots: - bluebird - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.3.0(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)))(eslint@10.3.0(jiti@2.6.1)))(eslint@10.3.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) eslint: 10.3.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@10.3.0(jiti@2.6.1)) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)))(eslint@10.3.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -17588,7 +18019,7 @@ snapshots: doctrine: 2.1.0 eslint: 10.3.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.3.0(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)))(eslint@10.3.0(jiti@2.6.1)))(eslint@10.3.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -19398,6 +19829,10 @@ snapshots: optionalDependencies: react: 19.2.6 + markdown-to-jsx@9.8.2(react@19.2.6): + optionalDependencies: + react: 19.2.6 + marked-terminal@7.3.0(marked@9.1.6): dependencies: ansi-escapes: 7.0.0 @@ -21039,6 +21474,8 @@ snapshots: quotation@2.0.3: {} + raf-schd@4.0.3: {} + range-parser@1.2.0: {} range-parser@1.2.1: {} @@ -21545,6 +21982,8 @@ snapshots: transitivePeerDependencies: - supports-color + remend@1.3.0: {} + remove-accents@0.4.2: {} require-directory@2.1.1: {} @@ -22309,6 +22748,8 @@ snapshots: system-architecture@0.1.0: {} + tabbable@6.4.0: {} + table@6.9.0: dependencies: ajv: 8.20.0