Skip to content

⬆️(dependencies) update js dependencies#2283

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/js-dependencies
Open

⬆️(dependencies) update js dependencies#2283
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/js-dependencies

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented May 11, 2026

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@ai-sdk/openai (source) 3.0.533.0.63 age confidence
@blocknote/code-block (source) 0.49.00.50.0 age confidence
@blocknote/core (source) 0.49.00.50.0 age confidence
@blocknote/mantine (source) 0.49.00.50.0 age confidence
@blocknote/react (source) 0.49.00.50.0 age confidence
@blocknote/server-util (source) 0.49.00.50.0 age confidence
@blocknote/xl-ai (source) 0.49.00.50.0 age confidence
@blocknote/xl-docx-exporter (source) 0.49.00.50.0 age confidence
@blocknote/xl-multi-column (source) 0.49.00.50.0 age confidence
@blocknote/xl-odt-exporter (source) 0.49.00.50.0 age confidence
@blocknote/xl-pdf-exporter (source) 0.49.00.50.0 age confidence
@fontsource-variable/material-symbols-outlined (source) 5.2.425.2.44 age confidence
@​gouvfr-lasuite/ui-kit 0.20.10.21.0 age confidence
@hocuspocus/provider (source) 3.4.44.0.0 age confidence
@hocuspocus/server (source) 3.4.44.0.0 age confidence
@html-to/text-cli 0.5.40.6.0 age confidence
@mantine/core (source) 9.0.29.1.1 age confidence
@mantine/hooks (source) 9.0.29.1.1 age confidence
@next/eslint-plugin-next (source) 16.2.416.2.6 age confidence
@sentry/nextjs (source) 10.49.010.52.0 age confidence
@sentry/node (source) 10.49.010.52.0 age confidence
@sentry/profiling-node (source) 10.49.010.52.0 age confidence
@tanstack/eslint-plugin-query (source) 5.99.25.100.9 age confidence
@tanstack/react-query (source) 5.99.25.100.9 age confidence
@tanstack/react-query-devtools (source) 5.99.25.100.9 age confidence
@tiptap/extensions (source) 3.22.43.23.1 age confidence
@types/node (source) 24.12.224.12.3 age confidence
@typescript-eslint/eslint-plugin (source) 8.59.08.59.2 age confidence
@typescript-eslint/parser (source) 8.59.08.59.2 age confidence
@typescript-eslint/utils (source) 8.59.08.59.2 age confidence
@vitest/eslint-plugin 1.6.161.6.17 age confidence
ai (source) 6.0.1686.0.177 age confidence
axios (source) 1.15.21.16.0 age confidence
crisp-sdk-web 1.1.11.1.2 age confidence
eslint (source) 10.2.110.3.0 age confidence
eslint-config-next (source) 16.2.416.2.6 age confidence
i18next (source) 26.0.626.0.10 age confidence
jest (source) 30.3.030.4.2 age confidence
jsdom 29.0.229.1.1 age confidence
minimatch 10.2.410.2.5 age confidence
mjml (source) 5.0.15.2.0 age confidence
pixelmatch 7.1.07.2.0 age confidence
postcss (source) 8.5.108.5.14 age confidence
posthog-js (source) 1.369.41.372.10 age confidence
react (source) 19.2.519.2.6 age confidence
react-dom (source) 19.2.519.2.6 age confidence
react-i18next 17.0.417.0.7 age confidence
styled-components (source) 6.4.06.4.1 age confidence
tsc-alias (source) 1.8.161.8.17 age confidence
vitest (source) 4.1.44.1.5 age confidence
zod (source) 4.3.64.4.3 age confidence
zustand 5.0.125.0.13 age confidence

Release Notes

vercel/ai (@​ai-sdk/openai)

v3.0.63

Compare Source

Patch Changes

v3.0.62

Compare Source

Patch Changes
  • 65edcca: feat: add allowedTools provider option for OpenAI Responses

v3.0.61

Compare Source

Patch Changes
  • b93f9b4: feat(provider/openai): forward imageDetail providerOptions on tool-result image content

v3.0.60

Compare Source

Patch Changes
  • 6dcd8e6: feat(openai): add GPT-5.5 chat model IDs

v3.0.59

Compare Source

Patch Changes
  • 38966ab: fix(openai, openai-compatible): only send null content for assistant messages with tool calls

v3.0.58

Compare Source

Patch Changes
  • 2370948: feat(openai): preserve namespace on function_call output items

v3.0.57

Compare Source

Patch Changes
  • d33e7cc: chore(provider/openai): add type for image model options for type-safe processing

v3.0.55

Compare Source

Patch Changes

v3.0.54

Compare Source

Patch Changes
TypeCellOS/BlockNote (@​blocknote/code-block)

v0.50.0

Compare Source

🚀 Features
  • Dark mode styling for file block wrapper component (BLO-866) (#​2680)
  • Drag hendle menu delete button removes all other blocks in selection (BLO-1007) (#​2683)
  • Enter moves selection to cell below in tables (BLO-1006) (#​2685)
  • additional heading top padding (BLO-1008) (#​2690)
  • Code mark input rule edge case (BLO-938) (#​2698)
  • mantine: upgrade @​mantine/core and @​mantine/hooks to v9.0.2 (#​2655)
🩹 Fixes
  • Hardcoded strings in comment components (BLO-1033) (#​2681)
  • Color naming & CSS (BLO-946) (#​2684)
  • link HTML attributes (BLO-915) (#​2687)
  • guard hideMenuIfNotFrozen against undefined view state (#​2694, #​2699)
  • Clicking comment overlapping link opens link (BLO-1091) (#​2696)
  • prevent table row drag from moving an extra adjacent row (#​2703)
  • clipboard: use ProseMirror selection state for Shadow DOM compatibility (#​2677)
❤️ Thank You
fontsource/font-files (@​fontsource-variable/material-symbols-outlined)

v5.2.44

Compare Source

v5.2.43

Compare Source

ueberdosis/hocuspocus (@​hocuspocus/provider)

v4.0.0

Compare Source

Note: Version bump only for package hocuspocus

mantinedev/mantine (@​mantine/core)

v9.1.1

Compare Source

What's Changed
  • [@mantine/spotlight] Fix error thrown when listId is empty (#​8863)
  • [@mantine/schedule] Fix onEventClick not being passed down to MoreEvents in DayView and MonthView components (#​8862)
  • [@mantine/core] Tree: Add dnd handle and dnd lock support
  • [@mantine/schedule] Fix labels not propagating to custom schedule header and more events lists
  • [@mantine/modals] Add ModalsSettings type export
  • [@mantine/schedule] Fix renderEvent not working in MoreEvents
  • [@mantine/mcp-server] Update displayed version
  • [@mantine/core] Combobox: Fix keyboard events not triggering in Safari after click on the inout (#​7386)
  • [@mantine/hooks] use-focus-return: Fix incorrect logic when used with nested focus traps (#​8857)
  • [@mantine/core] ScrollArea: Fix scrollbar never visible with offsetScrollbars="present" (#​8844)
  • [@mantine/core] Fix incorrect renderOption type in Combobox-based components (#​8858)
  • [@mantine/hooks] use-mask: Fix stale mask partial remaining as input value on blur after input field was cleared
  • [@mantine/hooks] use-mask: Fix incorrect cursor position handling
  • [@mantine/hooks] use-mask: Fix part of the mask remaining as input value on blur
  • [@mantine/core] Radio: Fix icon not being centered on some low-density screens (#​8845)
  • [@mantine/core] Highlight: Fix wholeWord matching for non-ASCII characters
  • [@mantine/core] Card: Fix Card.Section not being handled correctly during server-side rendering of server components (#​8846))
  • [@mantine/core] Fix clearButtonProps={{ size: lg }} not working when passed to Select and other similar components (#​8855)
  • [@mantine/core] Fix Styles API defined for Input not being applied to Select and MultiSelect components (#​8851)
New Contributors

Full Changelog: mantinedev/mantine@9.1.0...9.1.1

v9.1.0

Compare Source

View changelog with demos on mantine.dev website

Support Mantine development

You can now sponsor Mantine development with OpenCollective.
All funds are used to improve Mantine and create new features and components.

deduplicateInlineStyles

New deduplicateInlineStyles prop on MantineProvider enables
React 19 style tag deduplication for responsive style props.
When many components share the same responsive style prop values, only a single <style />
tag is generated and hoisted to <head /> instead of each component injecting its own:

import { MantineProvider } from '@&#8203;mantine/core';

function Demo() {
  return (
    <MantineProvider deduplicateInlineStyles>
      {/* Your app here */}
    </MantineProvider>
  );
}

This can significantly improve performance when rendering large lists of components
with identical responsive style props. See the
styles performance guide for more details.

use-mask hook

New use-mask hook attaches real-time input masking to any <input> element via
a ref callback. It formats user input against a defined pattern and exposes both the masked display
value and the raw unmasked value. The hook supports built-in and custom tokens, dynamic masks,
character transforms, optional segments, and regex array format:

import { TextInput, Text } from '@&#8203;mantine/core';
import { useMask } from '@&#8203;mantine/hooks';

function Demo() {
  const { ref, value, rawValue } = useMask({ mask: '(999) 999-9999' });

  return (
    <>
      <TextInput ref={ref} label="Phone number" placeholder="(___) ___-____" />
      <Text size="sm" mt="sm">Masked value: {value}</Text>
      <Text size="sm">Raw value: {rawValue}</Text>
    </>
  );
}
MaskInput component

New MaskInput component is a wrapper around use-mask hook
that provides all standard input props (label, description, error, etc.) and supports all mask options:

import { MaskInput } from '@&#8203;mantine/core';

function Demo() {
  return (
    <MaskInput
       variant="default" size="sm" radius="md" label="Input label" withAsterisk={false} description="Input description" error=""
      mask="(999) 999-9999"
      placeholder="(___) ___-____"
    />
  );
}
Treemap component

New Treemap component displays hierarchical data as a set of nested
rectangles. It is based on the Treemap recharts component:

// Demo.tsx
import { Treemap } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return <Treemap data={data} />;
}

// data.ts
export const data = [
  {
    name: 'Frontend',
    color: 'blue.8',
    children: [
      { name: 'React', value: 400 },
      { name: 'Vue', value: 200 },
      { name: 'Angular', value: 150 },
    ],
  },
  {
    name: 'Backend',
    color: 'teal.8',
    children: [
      { name: 'Node', value: 300 },
      { name: 'Python', value: 250 },
      { name: 'Go', value: 100 },
    ],
  },
  {
    name: 'Mobile',
    color: 'red.8',
    children: [
      { name: 'React Native', value: 200 },
      { name: 'Flutter', value: 180 },
    ],
  },
];
TimePicker duration type

TimePicker component now supports type="duration" prop that allows
entering durations that exceed 24 hours. In this mode, the hours field has no upper limit
and the input width adjusts dynamically based on the entered value:

import { TimePicker } from '@&#8203;mantine/dates';

function Demo() {
  return <TimePicker label="Enter duration" type="duration" withSeconds />;
}
Heatmap legend

Heatmap component now supports withLegend prop that displays
a color legend below the chart. Use legendLabels prop to customize labels
(default: ['Less', 'More']):

// Demo.tsx
import { Heatmap } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return (
    <Heatmap
      data={data}
      startDate="2024-02-16"
      endDate="2025-02-16"
      withMonthLabels
      withWeekdayLabels
      withLegend
    />
  );
}

// data.ts
export const data = ${JSON.stringify(data, null, 2)};
MonthPicker and YearPicker presets

MonthPicker and YearPicker components now support
presets prop that allows adding predefined values to pick from. Presets are also available
in MonthPickerInput and YearPickerInput
components:

import dayjs from 'dayjs';
import { MonthPicker } from '@&#8203;mantine/dates';

function Demo() {
  return (
    <MonthPicker
      presets={[
        { value: dayjs().startOf('month').format('YYYY-MM-DD'), label: 'This month' },
        { value: dayjs().add(1, 'month').startOf('month').format('YYYY-MM-DD'), label: 'Next month' },
        { value: dayjs().subtract(1, 'month').startOf('month').format('YYYY-MM-DD'), label: 'Last month' },
        { value: dayjs().add(6, 'month').startOf('month').format('YYYY-MM-DD'), label: 'In 6 months' },
        { value: dayjs().add(1, 'year').startOf('month').format('YYYY-MM-DD'), label: 'Next year' },
        { value: dayjs().subtract(1, 'year').startOf('month').format('YYYY-MM-DD'), label: 'Last year' },
      ]}
    />
  );
}
use-roving-index hook

New use-roving-index hook implements the
roving tabindex
keyboard navigation pattern. It manages tabIndex state for a group of focusable elements,
handles arrow key navigation with disabled item skipping, and supports both 1D lists and 2D grids:

import { Button, Group } from '@&#8203;mantine/core';
import { useRovingIndex } from '@&#8203;mantine/hooks';

const items = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'Code'];

function Demo() {
  const { getItemProps } = useRovingIndex({
    total: items.length,
    orientation: 'horizontal',
    loop: true,
  });

  return (
    <Group gap="xs">
      {items.map((item, index) => (
        <Button key={item} variant="default" {...getItemProps({ index })}>
          {item}
        </Button>
      ))}
    </Group>
  );
}
Tree drag and drop

Tree component now supports drag-and-drop reordering of nodes.
Provide onDragDrop callback to enable it, and use the moveTreeNode utility
to update data based on the result:

import { useState } from 'react';
import { CaretDownIcon } from '@&#8203;phosphor-icons/react';
import { Group, moveTreeNode, RenderTreeNodePayload, Tree, TreeNodeData } from '@&#8203;mantine/core';

const data: TreeNodeData[] = [
  {
    label: 'Pages',
    value: 'pages',
    children: [
      { label: 'index.tsx', value: 'pages/index.tsx' },
      { label: 'about.tsx', value: 'pages/about.tsx' },
      { label: 'contact.tsx', value: 'pages/contact.tsx' },
    ],
  },
  {
    label: 'Components',
    value: 'components',
    children: [
      { label: 'Header.tsx', value: 'components/Header.tsx' },
      { label: 'Footer.tsx', value: 'components/Footer.tsx' },
      { label: 'Sidebar.tsx', value: 'components/Sidebar.tsx' },
    ],
  },
  { label: 'package.json', value: 'package.json' },
  { label: 'tsconfig.json', value: 'tsconfig.json' },
];

function Leaf({ node, expanded, hasChildren, elementProps }: RenderTreeNodePayload) {
  return (
    <Group gap={5} {...elementProps}>
      {hasChildren && (
        <CaretDownIcon
          size={18}
          style={{ transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)' }}
        />
      )}
      <span>{node.label}</span>
    </Group>
  );
}

function Demo() {
  const [treeData, setTreeData] = useState(data);

  return (
    <Tree
      data={treeData}
      onDragDrop={(payload) =>
        setTreeData((current) => moveTreeNode(current, payload))
      }
      renderNode={(payload) => <Leaf {...payload} />}
    />
  );
}
Tree async loading

Tree now supports lazy loading of children. Set hasChildren: true
on a node without providing children – when the node is expanded for the first time,
onLoadChildren callback passed to useTree is called. Use mergeAsyncChildren
utility to splice loaded children into your data:

import { useState } from 'react';
import { CaretDownIcon, SpinnerIcon } from '@&#8203;phosphor-icons/react';
import {
  Group,
  mergeAsyncChildren,
  RenderTreeNodePayload,
  Tree,
  TreeNodeData,
  useTree,
} from '@&#8203;mantine/core';

const initialData: TreeNodeData[] = [
  { label: 'Documents', value: 'documents', hasChildren: true },
  { label: 'Photos', value: 'photos', hasChildren: true },
  { label: 'README.md', value: 'readme' },
];

// Simulates an API call to load children
async function fetchChildren(parentValue: string): Promise<TreeNodeData[]> {
  await new Promise((resolve) => setTimeout(resolve, 1000));
  return [
    { label: `${parentValue}/file-1.txt`, value: `${parentValue}/file-1.txt` },
    { label: `${parentValue}/file-2.txt`, value: `${parentValue}/file-2.txt` },
    {
      label: `${parentValue}/subfolder`,
      value: `${parentValue}/subfolder`,
      hasChildren: true,
    },
  ];
}

function Leaf({ node, expanded, hasChildren, elementProps, isLoading }: RenderTreeNodePayload) {
  return (
    <Group gap={5} wrap="nowrap" {...elementProps}>
      {isLoading ? (
        <SpinnerIcon size={18} style={{ animation: 'spin 1s linear infinite', flexShrink: 0 }} />
      ) : (
        hasChildren && (
          <CaretDownIcon
            size={18}
            style={{ transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)', flexShrink: 0 }}
          />
        )
      )}
      <span style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
        {node.label}
      </span>
    </Group>
  );
}

function Demo() {
  const [data, setData] = useState(initialData);
  const tree = useTree({
    onLoadChildren: async (value) => {
      const children = await fetchChildren(value);
      setData((prev) => mergeAsyncChildren(prev, value, children));
    },
  });

  return (
    <Tree
      data={data}
      tree={tree}
      renderNode={(payload) => <Leaf {...payload} />}
    />
  );
}
Tree search and filtering

Tree now includes filterTreeData utility to filter tree data based on
a search query. Matching nodes and their ancestors are preserved in the result. You can
provide a custom filter function for advanced matching (for example, fuzzy search with fuse.js):

import { useMemo, useState } from 'react';
import {
  filterTreeData,
  getTreeExpandedState,
  TextInput,
  Tree,
  TreeNodeData,
  useTree,
} from '@&#8203;mantine/core';

const data: TreeNodeData[] = [
  {
    label: 'src',
    value: 'src',
    children: [
      {
        label: 'components',
        value: 'src/components',
        children: [
          { label: 'Accordion.tsx', value: 'src/components/Accordion.tsx' },
          { label: 'Tree.tsx', value: 'src/components/Tree.tsx' },
          { label: 'Button.tsx', value: 'src/components/Button.tsx' },
          { label: 'Input.tsx', value: 'src/components/Input.tsx' },
        ],
      },
      {
        label: 'hooks',
        value: 'src/hooks',
        children: [
          { label: 'use-debounce.ts', value: 'src/hooks/use-debounce.ts' },
          { label: 'use-media-query.ts', value: 'src/hooks/use-media-query.ts' },
        ],
      },
    ],
  },
  {
    label: 'public',
    value: 'public',
    children: [
      { label: 'favicon.ico', value: 'public/favicon.ico' },
      { label: 'logo.svg', value: 'public/logo.svg' },
    ],
  },
  { label: 'package.json', value: 'package.json' },
  { label: 'tsconfig.json', value: 'tsconfig.json' },
];

function Demo() {
  const [search, setSearch] = useState('');
  const tree = useTree();

  const filteredData = useMemo(
    () => filterTreeData(data, search),
    [search]
  );

  const handleSearchChange = (value: string) => {
    setSearch(value);
    if (value.trim()) {
      const next = filterTreeData(data, value);
      tree.setExpandedState(getTreeExpandedState(next, '*'));
    } else {
      tree.collapseAllNodes();
    }
  };

  return (
    <div>
      <TextInput
        placeholder="Search..."
        mb="sm"
        value={search}
        onChange={(event) => handleSearchChange(event.currentTarget.value)}
      />
      <Tree data={filteredData} tree={tree} />
    </div>
  );
}
Tree connecting lines

Tree now supports withLines prop to display connecting lines
showing parent-child relationships. Lines adapt to levelOffset spacing automatically:

import { getTreeExpandedState, Tree, useTree } from '@&#8203;mantine/core';
import { data } from './data';

function Demo() {
  const tree = useTree({
    initialExpandedState: getTreeExpandedState(data, '*'),
  });

  return <Tree data={data} tree={tree} withLines />;
}
Tree virtualization

Tree now provides flattenTreeData utility and FlatTreeNode component
for virtualized rendering of large trees. The component does not depend on any
virtualization library – you supply one yourself (e.g., @tanstack/react-virtual):

import { useMemo, useRef } from 'react';
import { useVirtualizer } from '@&#8203;tanstack/react-virtual';
import {
  FlatTreeNode,
  flattenTreeData,
  getTreeExpandedState,
  TreeNodeData,
  useTree,
} from '@&#8203;mantine/core';

const ITEM_HEIGHT = 30;

function generateTreeData(count: number): TreeNodeData[] {
  const result: TreeNodeData[] = [];
  let id = 0;

  function addChildren(
    parent: TreeNodeData[],
    depth: number,
    remaining: { count: number }
  ) {
    const childCount = depth === 0 ? 20 : Math.floor(Math.random() * 8) + 2;

    for (let i = 0; i < childCount && remaining.count > 0; i++) {
      id++;
      remaining.count--;
      const hasChild =
        depth < 3 && remaining.count > 0 && Math.random() > 0.3;
      const node: TreeNodeData = {
        label: `${hasChild ? 'Folder' : 'File'} ${id}`,
        value: `node-${id}`,
        children: hasChild ? [] : undefined,
      };

      if (hasChild) {
        addChildren(node.children!, depth + 1, remaining);
      }

      parent.push(node);
    }
  }

  addChildren(result, 0, { count });
  return result;
}

const largeData = generateTreeData(2000);
const initialExpandedState = getTreeExpandedState(largeData, '*');

function Demo() {
  const tree = useTree({
    initialExpandedState,
  });

  const flatList = useMemo(
    () => flattenTreeData(largeData, tree.expandedState),
    [tree.expandedState]
  );

  const scrollParentRef = useRef<HTMLDivElement>(null);

  const virtualizer = useVirtualizer({
    count: flatList.length,
    getScrollElement: () => scrollParentRef.current,
    estimateSize: () => ITEM_HEIGHT,
    overscan: 20,
  });

  return (
    <div ref={scrollParentRef} style={{ height: 400, overflow: 'auto' }}>
      <div
        data-tree-root
        role="tree"
        style={{
          height: virtualizer.getTotalSize(),
          position: 'relative',
        }}
      >
        {virtualizer.getVirtualItems().map((virtualItem) => (
          <FlatTreeNode
            key={flatList[virtualItem.index].node.value}
            {...flatList[virtualItem.index]}
            tree={tree}
            expandOnClick
            selectOnClick
            tabIndex={virtualItem.index === 0 ? 0 : -1}
            style={{
              position: 'absolute',
              top: 0,
              left: 0,
              width: '100%',
              height: virtualItem.size,
              transform: `translateY(${virtualItem.start}px)`,
            }}
          />
        ))}
      </div>
    </div>
  );
}
Tree checkStrictly mode

useTree hook now supports checkStrictly option. When enabled, checking
a parent node does not affect children and vice versa – each node's checked state is
fully independent:

import { CaretDownIcon } from '@&#8203;phosphor-icons/react';
import { Checkbox, Group, RenderTreeNodePayload, Tree, useTree } from '@&#8203;mantine/core';
import { data } from './data';

const renderTreeNode = ({
  node,
  expanded,
  hasChildren,
  elementProps,
  tree,
}: RenderTreeNodePayload) => {
  const checked = tree.isNodeChecked(node.value);

  return (
    <Group gap="xs" {...elementProps}>
      <Checkbox.Indicator
        checked={checked}
        onClick={() =>
          checked
            ? tree.uncheckNode(node.value)
            : tree.checkNode(node.value)
        }
      />

      <Group gap={5} onClick={() => tree.toggleExpanded(node.value)}>
        <span>{node.label}</span>

        {hasChildren && (
          <CaretDownIcon
            size={14}
            style={{
              transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)',
            }}
          />
        )}
      </Group>
    </Group>
  );
};

function Demo() {
  const tree = useTree({ checkStrictly: true });
  return (
    <Tree
      data={data}
      tree={tree}
      levelOffset={23}
      expandOnClick={false}
      renderNode={renderTreeNode}
    />
  );
}
Slider startPointValue

Slider component now supports startPointValue prop that changes
the origin of the filled bar. When set, the bar extends from the given value toward the
current value – to the left for values below the start point and to the right for values above it:

import { Slider } from '@&#8203;mantine/core';

function Demo() {
  return (
    <Slider
      startPointValue={0}
      min={-100}
      max={100}
      defaultValue={40}
      marks={[
        { value: -100, label: '-100' },
        { value: -50, label: '-50' },
        { value: 0, label: '0' },
        { value: 50, label: '50' },
        { value: 100, label: '100' },
      ]}
    />
  );
}
WeekView forceCurrentTimeIndicator

WeekView component now supports forceCurrentTimeIndicator prop.
When set, the current time indicator is displayed on the same day of week even when viewing
a different week:

import { WeekView } from '@&#8203;mantine/schedule';
import { events } from './data';

function Demo() {
  return (
    <WeekView
      date="2030-06-10"
      events={events}
      withCurrentTimeIndicator
      forceCurrentTimeIndicator
    />
  );
}
New demo: MonthView events rendering

New MonthView demo shows how to use renderEvent to visually
differentiate all-day and timed events. All-day events render as regular colored bars,
while timed events display as a colored dot with the start time and title:

// Demo.tsx
import dayjs from 'dayjs';
import { Box, UnstyledButton } from '@&#8203;mantine/core';
import { MonthView, ScheduleEventData } from '@&#8203;mantine/schedule';

function isAllDayEvent(event: ScheduleEventData) {
  const start = dayjs(event.start);
  const end = dayjs(event.end);
  return start.isSame(start.startOf('day')) && end.isSame(end.startOf('day'));
}

const events: ScheduleEventData[] = [/* ...events */];

function Demo() {
  return (
    <MonthView
      date={new Date()}
      events={events}
      renderEvent={(event, props) => {
        if (isAllDayEvent(event)) {
          return <UnstyledButton {...props} />;
        }

        const { children, className, style, ...others } = props;
        return (
          <UnstyledButton
            {...others}
            style={{
              ...style,
              display: 'flex',
              alignItems: 'center',
              gap: 4,
              fontSize: 10,
              whiteSpace: 'nowrap',
              overflow: 'hidden',
              pointerEvents: 'all',
              cursor: 'pointer',
              paddingInline: 2,
            }}
          >
            <Box
              component="span"
              style={{
                width: 8,
                height: 8,
                borderRadius: '50%',
                backgroundColor: `var(--event-bg)`,
                flexShrink: 0,
              }}
            />
            <span style={{ width: 28, flexShrink: 0 }}>{dayjs(event.start).format('h:mm')}</span>
            <span style={{ overflow: 'hidden', textOverflow: 'ellipsis' }}>
              {event.title}
            </span>
          </UnstyledButton>
        );
      }}
    />
  );
}
Other changes
  • Tabs component now supports keepMountedMode prop that controls how inactive tab panels are hidden when keepMounted is true. Set keepMountedMode="display-none" to use display: none styles instead of the default Activity component.
  • useClickOutside hook now supports enabled parameter to dynamically enable/disable the listener. The hook also uses event.composedPath() in both ref and nodes branches for consistent Shadow DOM support and correctly ignores clicks on detached DOM nodes in the single-ref mode.
  • useCounter hook now supports step option to configure increment/decrement step size (default 1).
  • useDebouncedCallback hook now supports maxWait option to guarantee execution within a maximum time window during continuous calls, and isPending() method to check if a debounced call is waiting.
  • useDebouncedValue hook now returns a flush method to immediately apply the pending debounced value.
  • useScrollIntoView hook now supports onScrollCancel callback that fires when the scroll animation is interrupted by the user, and returns a scrolling boolean to indicate whether a scroll animation is in progress.
vercel/next.js (@​next/eslint-plugin-next)

v16.2.6

Compare Source

This release contains security fixes for the follow

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "before 7am on monday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added automated Pull request created automatically dependencies Pull requests that update a dependency file noChangeLog labels May 11, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Size Change: +4.51 kB (+0.11%)

Total Size: 4.25 MB

📦 View Changed
Filename Size Change
apps/impress/out/_next/static/3e84d670/_buildManifest.js 0 B -633 B (removed) 🏆
apps/impress/out/_next/static/0389ffbe/_buildManifest.js 637 B +637 B (new file) 🆕
apps/impress/out/_next/static/chunks/3503.js 0 B -68.2 kB (removed) 🏆
apps/impress/out/_next/static/chunks/5334.js 69 kB +69 kB (new file) 🆕
apps/impress/out/_next/static/chunks/pages/_app.js 571 kB +3.76 kB (+0.66%)
apps/impress/out/_next/static/css/00bb344e795e937b.css 11.3 kB +11.3 kB (new file) 🆕
apps/impress/out/_next/static/css/3ffa698eb42c8847.css 49.5 kB +49.5 kB (new file) 🆕
apps/impress/out/_next/static/css/c7ee403622d0bd49.css 0 B -11.3 kB (removed) 🏆
apps/impress/out/_next/static/css/df46308233918fee.css 0 B -49.5 kB (removed) 🏆

compressed-size-action

@AntoLC AntoLC self-assigned this May 13, 2026
@renovate renovate Bot force-pushed the renovate/js-dependencies branch from 6cafda6 to 5f25140 Compare May 18, 2026 00:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automated Pull request created automatically dependencies Pull requests that update a dependency file noChangeLog

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant