@mantine/core 9.0.2 → 9.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/components/Blockquote/Blockquote.cjs +5 -6
- package/cjs/components/Blockquote/Blockquote.cjs.map +1 -1
- package/cjs/components/Flex/Flex.cjs +7 -2
- package/cjs/components/Flex/Flex.cjs.map +1 -1
- package/cjs/components/FloatingIndicator/FloatingIndicator.cjs +1 -2
- package/cjs/components/FloatingIndicator/FloatingIndicator.cjs.map +1 -1
- package/cjs/components/MaskInput/MaskInput.cjs +24 -0
- package/cjs/components/MaskInput/MaskInput.cjs.map +1 -0
- package/cjs/components/MaskInput/use-mask-input-props.cjs +29 -0
- package/cjs/components/MaskInput/use-mask-input-props.cjs.map +1 -0
- package/cjs/components/Rating/Rating.cjs +1 -2
- package/cjs/components/Rating/Rating.cjs.map +1 -1
- package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs +2 -0
- package/cjs/components/SemiCircleProgress/SemiCircleProgress.cjs.map +1 -1
- package/cjs/components/Slider/Marks/Marks.cjs +3 -2
- package/cjs/components/Slider/Marks/Marks.cjs.map +1 -1
- package/cjs/components/Slider/Marks/is-mark-filled.cjs +2 -1
- package/cjs/components/Slider/Marks/is-mark-filled.cjs.map +1 -1
- package/cjs/components/Slider/Slider/Slider.cjs +12 -3
- package/cjs/components/Slider/Slider/Slider.cjs.map +1 -1
- package/cjs/components/Slider/Track/Track.cjs +3 -2
- package/cjs/components/Slider/Track/Track.cjs.map +1 -1
- package/cjs/components/Tabs/Tabs.cjs +3 -1
- package/cjs/components/Tabs/Tabs.cjs.map +1 -1
- package/cjs/components/Tabs/Tabs.context.cjs.map +1 -1
- package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs +2 -1
- package/cjs/components/Tabs/TabsPanel/TabsPanel.cjs.map +1 -1
- package/cjs/components/Tree/FlatTreeNode.cjs +102 -0
- package/cjs/components/Tree/FlatTreeNode.cjs.map +1 -0
- package/cjs/components/Tree/Tree.cjs +10 -2
- package/cjs/components/Tree/Tree.cjs.map +1 -1
- package/cjs/components/Tree/Tree.module.cjs.map +1 -1
- package/cjs/components/Tree/TreeNode.cjs +65 -27
- package/cjs/components/Tree/TreeNode.cjs.map +1 -1
- package/cjs/components/Tree/filter-tree-data/filter-tree-data.cjs +23 -0
- package/cjs/components/Tree/filter-tree-data/filter-tree-data.cjs.map +1 -0
- package/cjs/components/Tree/flatten-tree-data/flatten-tree-data.cjs +28 -0
- package/cjs/components/Tree/flatten-tree-data/flatten-tree-data.cjs.map +1 -0
- package/cjs/components/Tree/get-children-nodes-values/get-children-nodes-values.cjs +1 -0
- package/cjs/components/Tree/merge-async-children/merge-async-children.cjs +32 -0
- package/cjs/components/Tree/merge-async-children/merge-async-children.cjs.map +1 -0
- package/cjs/components/Tree/move-tree-node/move-tree-node.cjs +78 -0
- package/cjs/components/Tree/move-tree-node/move-tree-node.cjs.map +1 -0
- package/cjs/components/Tree/use-tree-node-drag-drop.cjs +96 -0
- package/cjs/components/Tree/use-tree-node-drag-drop.cjs.map +1 -0
- package/cjs/components/Tree/use-tree.cjs +176 -26
- package/cjs/components/Tree/use-tree.cjs.map +1 -1
- package/cjs/core/Box/Box.cjs +6 -2
- package/cjs/core/Box/Box.cjs.map +1 -1
- package/cjs/core/InlineStyles/InlineStyles.cjs +14 -2
- package/cjs/core/InlineStyles/InlineStyles.cjs.map +1 -1
- package/cjs/core/InlineStyles/hash-styles.cjs +15 -0
- package/cjs/core/InlineStyles/hash-styles.cjs.map +1 -0
- package/cjs/core/MantineProvider/Mantine.context.cjs +4 -0
- package/cjs/core/MantineProvider/Mantine.context.cjs.map +1 -1
- package/cjs/core/MantineProvider/MantineProvider.cjs +3 -2
- package/cjs/core/MantineProvider/MantineProvider.cjs.map +1 -1
- package/cjs/index.cjs +16 -0
- package/esm/components/Blockquote/Blockquote.mjs +5 -6
- package/esm/components/Blockquote/Blockquote.mjs.map +1 -1
- package/esm/components/Flex/Flex.mjs +7 -2
- package/esm/components/Flex/Flex.mjs.map +1 -1
- package/esm/components/FloatingIndicator/FloatingIndicator.mjs +1 -2
- package/esm/components/FloatingIndicator/FloatingIndicator.mjs.map +1 -1
- package/esm/components/MaskInput/MaskInput.mjs +23 -0
- package/esm/components/MaskInput/MaskInput.mjs.map +1 -0
- package/esm/components/MaskInput/use-mask-input-props.mjs +28 -0
- package/esm/components/MaskInput/use-mask-input-props.mjs.map +1 -0
- package/esm/components/Rating/Rating.mjs +1 -2
- package/esm/components/Rating/Rating.mjs.map +1 -1
- package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs +2 -0
- package/esm/components/SemiCircleProgress/SemiCircleProgress.mjs.map +1 -1
- package/esm/components/Slider/Marks/Marks.mjs +3 -2
- package/esm/components/Slider/Marks/Marks.mjs.map +1 -1
- package/esm/components/Slider/Marks/is-mark-filled.mjs +2 -1
- package/esm/components/Slider/Marks/is-mark-filled.mjs.map +1 -1
- package/esm/components/Slider/Slider/Slider.mjs +12 -3
- package/esm/components/Slider/Slider/Slider.mjs.map +1 -1
- package/esm/components/Slider/Track/Track.mjs +3 -2
- package/esm/components/Slider/Track/Track.mjs.map +1 -1
- package/esm/components/Tabs/Tabs.context.mjs.map +1 -1
- package/esm/components/Tabs/Tabs.mjs +3 -1
- package/esm/components/Tabs/Tabs.mjs.map +1 -1
- package/esm/components/Tabs/TabsPanel/TabsPanel.mjs +2 -1
- package/esm/components/Tabs/TabsPanel/TabsPanel.mjs.map +1 -1
- package/esm/components/Tree/FlatTreeNode.mjs +101 -0
- package/esm/components/Tree/FlatTreeNode.mjs.map +1 -0
- package/esm/components/Tree/Tree.mjs +11 -3
- package/esm/components/Tree/Tree.mjs.map +1 -1
- package/esm/components/Tree/Tree.module.mjs.map +1 -1
- package/esm/components/Tree/TreeNode.mjs +65 -27
- package/esm/components/Tree/TreeNode.mjs.map +1 -1
- package/esm/components/Tree/filter-tree-data/filter-tree-data.mjs +22 -0
- package/esm/components/Tree/filter-tree-data/filter-tree-data.mjs.map +1 -0
- package/esm/components/Tree/flatten-tree-data/flatten-tree-data.mjs +28 -0
- package/esm/components/Tree/flatten-tree-data/flatten-tree-data.mjs.map +1 -0
- package/esm/components/Tree/get-children-nodes-values/get-children-nodes-values.mjs +1 -1
- package/esm/components/Tree/merge-async-children/merge-async-children.mjs +32 -0
- package/esm/components/Tree/merge-async-children/merge-async-children.mjs.map +1 -0
- package/esm/components/Tree/move-tree-node/move-tree-node.mjs +78 -0
- package/esm/components/Tree/move-tree-node/move-tree-node.mjs.map +1 -0
- package/esm/components/Tree/use-tree-node-drag-drop.mjs +96 -0
- package/esm/components/Tree/use-tree-node-drag-drop.mjs.map +1 -0
- package/esm/components/Tree/use-tree.mjs +177 -27
- package/esm/components/Tree/use-tree.mjs.map +1 -1
- package/esm/core/Box/Box.mjs +7 -3
- package/esm/core/Box/Box.mjs.map +1 -1
- package/esm/core/InlineStyles/InlineStyles.mjs +14 -2
- package/esm/core/InlineStyles/InlineStyles.mjs.map +1 -1
- package/esm/core/InlineStyles/hash-styles.mjs +15 -0
- package/esm/core/InlineStyles/hash-styles.mjs.map +1 -0
- package/esm/core/MantineProvider/Mantine.context.mjs +4 -1
- package/esm/core/MantineProvider/Mantine.context.mjs.map +1 -1
- package/esm/core/MantineProvider/MantineProvider.mjs +3 -2
- package/esm/core/MantineProvider/MantineProvider.mjs.map +1 -1
- package/esm/index.mjs +9 -2
- package/lib/components/MaskInput/MaskInput.d.ts +68 -0
- package/lib/components/MaskInput/index.d.ts +7 -0
- package/lib/components/MaskInput/use-mask-input-props.d.ts +428 -0
- package/lib/components/Slider/Marks/Marks.d.ts +2 -1
- package/lib/components/Slider/Marks/is-mark-filled.d.ts +2 -1
- package/lib/components/Slider/Slider/Slider.d.ts +2 -0
- package/lib/components/Slider/Track/Track.d.ts +2 -1
- package/lib/components/Tabs/Tabs.context.d.ts +1 -0
- package/lib/components/Tabs/Tabs.d.ts +2 -0
- package/lib/components/Tree/FlatTreeNode.d.ts +31 -0
- package/lib/components/Tree/Tree.d.ts +21 -1
- package/lib/components/Tree/TreeNode.d.ts +6 -2
- package/lib/components/Tree/filter-tree-data/filter-tree-data.d.ts +4 -0
- package/lib/components/Tree/flatten-tree-data/flatten-tree-data.d.ts +15 -0
- package/lib/components/Tree/index.d.ts +9 -0
- package/lib/components/Tree/merge-async-children/merge-async-children.d.ts +2 -0
- package/lib/components/Tree/move-tree-node/move-tree-node.d.ts +11 -0
- package/lib/components/Tree/use-tree-node-drag-drop.d.ts +18 -0
- package/lib/components/Tree/use-tree.d.ts +19 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/core/InlineStyles/InlineStyles.d.ts +2 -1
- package/lib/core/InlineStyles/hash-styles.d.ts +2 -0
- package/lib/core/InlineStyles/index.d.ts +1 -0
- package/lib/core/MantineProvider/Mantine.context.d.ts +2 -0
- package/lib/core/MantineProvider/MantineProvider.d.ts +3 -1
- package/lib/core/MantineProvider/index.d.ts +1 -1
- package/package.json +5 -5
- package/styles/Tree.css +66 -0
- package/styles/Tree.layer.css +66 -0
- package/styles.css +66 -0
- package/styles.layer.css +66 -0
|
@@ -15,6 +15,7 @@ export interface TabsContextValue {
|
|
|
15
15
|
radius: string | number | undefined;
|
|
16
16
|
inverted: boolean | undefined;
|
|
17
17
|
keepMounted: boolean | undefined;
|
|
18
|
+
keepMountedMode: 'activity' | 'display-none' | undefined;
|
|
18
19
|
placement: 'right' | 'left' | undefined;
|
|
19
20
|
unstyled: boolean | undefined;
|
|
20
21
|
getStyles: GetStylesApi<TabsFactory>;
|
|
@@ -37,6 +37,8 @@ export interface TabsProps extends BoxProps, StylesApiProps<TabsFactory>, Elemen
|
|
|
37
37
|
inverted?: boolean;
|
|
38
38
|
/** If set to `false`, `Tabs.Panel` content will be unmounted when the associated tab is not active @default true */
|
|
39
39
|
keepMounted?: boolean;
|
|
40
|
+
/** Controls how inactive tabs content is hidden when `keepMounted` is `true`, `'activity'` – hidden with `Activity` component, `'display-none'` – hidden with `display: none` styles @default 'activity' */
|
|
41
|
+
keepMountedMode?: 'activity' | 'display-none';
|
|
40
42
|
/** If set, adjusts text color based on background color for `pills` variant */
|
|
41
43
|
autoContrast?: boolean;
|
|
42
44
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { RenderNode, TreeNodeData } from './Tree';
|
|
2
|
+
import type { TreeController } from './use-tree';
|
|
3
|
+
export interface FlatTreeNodeProps {
|
|
4
|
+
/** Node data from tree data */
|
|
5
|
+
node: TreeNodeData;
|
|
6
|
+
/** Nesting level of the node, starts at 1 */
|
|
7
|
+
level: number;
|
|
8
|
+
/** Value of the parent node, `null` for root nodes */
|
|
9
|
+
parent: string | null;
|
|
10
|
+
/** Whether the node has children */
|
|
11
|
+
hasChildren: boolean;
|
|
12
|
+
/** Whether the node is expanded */
|
|
13
|
+
expanded: boolean;
|
|
14
|
+
/** Tree controller instance, return value of `useTree` hook */
|
|
15
|
+
tree: TreeController;
|
|
16
|
+
/** If set, tree node with children is expanded on click @default true */
|
|
17
|
+
expandOnClick?: boolean;
|
|
18
|
+
/** If set, tree node is selected on click @default false */
|
|
19
|
+
selectOnClick?: boolean;
|
|
20
|
+
/** If set, tree node with children is expanded on space key press @default true */
|
|
21
|
+
expandOnSpace?: boolean;
|
|
22
|
+
/** If set, tree node is checked on space key press @default false */
|
|
23
|
+
checkOnSpace?: boolean;
|
|
24
|
+
/** A function to render tree node label */
|
|
25
|
+
renderNode?: RenderNode;
|
|
26
|
+
/** Style to apply to the root element, used for virtualizer positioning */
|
|
27
|
+
style?: React.CSSProperties;
|
|
28
|
+
/** Tab index for the node */
|
|
29
|
+
tabIndex?: number;
|
|
30
|
+
}
|
|
31
|
+
export declare const FlatTreeNode: import("react").MemoExoticComponent<({ node, level, parent, hasChildren, expanded, tree, expandOnClick, selectOnClick, expandOnSpace, checkOnSpace, renderNode, style, tabIndex, }: FlatTreeNodeProps) => import("react/jsx-runtime").JSX.Element>;
|
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
import { BoxProps, ElementProps, Factory, MantineSpacing, StylesApiProps } from '../../core';
|
|
2
|
+
import type { TreeDragDropPayload } from './move-tree-node/move-tree-node';
|
|
2
3
|
import { TreeController } from './use-tree';
|
|
3
4
|
export interface TreeNodeData {
|
|
4
5
|
label: React.ReactNode;
|
|
5
6
|
value: string;
|
|
6
7
|
nodeProps?: Record<string, any>;
|
|
7
8
|
children?: TreeNodeData[];
|
|
9
|
+
hasChildren?: boolean;
|
|
8
10
|
}
|
|
9
11
|
export interface RenderTreeNodePayload {
|
|
10
12
|
/** Node level in the tree */
|
|
11
13
|
level: number;
|
|
12
14
|
/** `true` if the node is expanded, applicable only for nodes with `children` */
|
|
13
15
|
expanded: boolean;
|
|
14
|
-
/** `true` if the node has non-empty `children` array */
|
|
16
|
+
/** `true` if the node has non-empty `children` array or `hasChildren` is set to `true` in the data */
|
|
15
17
|
hasChildren: boolean;
|
|
16
18
|
/** `true` if the node is selected */
|
|
17
19
|
selected: boolean;
|
|
20
|
+
/** `true` if the node's children are currently being loaded */
|
|
21
|
+
isLoading: boolean;
|
|
22
|
+
/** Error from the last failed load attempt, or `null` */
|
|
23
|
+
loadError: Error | null;
|
|
18
24
|
/** Node data from the `data` prop of `Tree` */
|
|
19
25
|
node: TreeNodeData;
|
|
20
26
|
/** Tree controller instance, return value of `useTree` hook */
|
|
@@ -26,6 +32,12 @@ export interface RenderTreeNodePayload {
|
|
|
26
32
|
onClick: (event: React.MouseEvent) => void;
|
|
27
33
|
'data-selected': boolean | undefined;
|
|
28
34
|
'data-value': string;
|
|
35
|
+
draggable?: boolean;
|
|
36
|
+
onDragStart?: (event: React.DragEvent) => void;
|
|
37
|
+
onDragOver?: (event: React.DragEvent) => void;
|
|
38
|
+
onDragLeave?: (event: React.DragEvent) => void;
|
|
39
|
+
onDrop?: (event: React.DragEvent) => void;
|
|
40
|
+
onDragEnd?: (event: React.DragEvent) => void;
|
|
29
41
|
};
|
|
30
42
|
}
|
|
31
43
|
export type RenderNode = (payload: RenderTreeNodePayload) => React.ReactNode;
|
|
@@ -33,6 +45,10 @@ export type TreeStylesNames = 'root' | 'node' | 'subtree' | 'label';
|
|
|
33
45
|
export type TreeCssVariables = {
|
|
34
46
|
root: '--level-offset';
|
|
35
47
|
};
|
|
48
|
+
export interface TreeDragState {
|
|
49
|
+
draggedValue: string | null;
|
|
50
|
+
currentDropTarget: HTMLElement | null;
|
|
51
|
+
}
|
|
36
52
|
export interface TreeProps extends BoxProps, StylesApiProps<TreeFactory>, ElementProps<'ul'> {
|
|
37
53
|
/** Data used to render nodes */
|
|
38
54
|
data: TreeNodeData[];
|
|
@@ -56,6 +72,10 @@ export interface TreeProps extends BoxProps, StylesApiProps<TreeFactory>, Elemen
|
|
|
56
72
|
allowRangeSelection?: boolean;
|
|
57
73
|
/** If set, subtree content is kept mounted when collapsed. React 19 `Activity` is used to preserve state. @default false */
|
|
58
74
|
keepMounted?: boolean;
|
|
75
|
+
/** Called when a node is dropped on another node, enables drag-and-drop when provided */
|
|
76
|
+
onDragDrop?: (payload: TreeDragDropPayload) => void;
|
|
77
|
+
/** If set, connecting lines are rendered showing parent-child relationships @default false */
|
|
78
|
+
withLines?: boolean;
|
|
59
79
|
}
|
|
60
80
|
export type TreeFactory = Factory<{
|
|
61
81
|
props: TreeProps;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { GetStylesApi } from '../../core';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TreeDragDropPayload } from './move-tree-node/move-tree-node';
|
|
3
|
+
import type { RenderNode, TreeDragState, TreeFactory, TreeNodeData } from './Tree';
|
|
3
4
|
import type { TreeController } from './use-tree';
|
|
4
5
|
interface TreeNodeProps {
|
|
5
6
|
node: TreeNodeData;
|
|
@@ -16,8 +17,11 @@ interface TreeNodeProps {
|
|
|
16
17
|
expandOnSpace: boolean | undefined;
|
|
17
18
|
checkOnSpace: boolean | undefined;
|
|
18
19
|
keepMounted: boolean | undefined;
|
|
20
|
+
onDragDrop: ((payload: TreeDragDropPayload) => void) | undefined;
|
|
21
|
+
dragStateRef: React.RefObject<TreeDragState>;
|
|
22
|
+
data: TreeNodeData[];
|
|
19
23
|
}
|
|
20
|
-
export declare function TreeNode({ node, getStyles, rootIndex, controller, expandOnClick, selectOnClick, isSubtree, level, renderNode, flatValues, allowRangeSelection, expandOnSpace, checkOnSpace, keepMounted, }: TreeNodeProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export declare function TreeNode({ node, getStyles, rootIndex, controller, expandOnClick, selectOnClick, isSubtree, level, renderNode, flatValues, allowRangeSelection, expandOnSpace, checkOnSpace, keepMounted, onDragDrop, dragStateRef, data, }: TreeNodeProps): import("react/jsx-runtime").JSX.Element;
|
|
21
25
|
export declare namespace TreeNode {
|
|
22
26
|
var displayName: string;
|
|
23
27
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TreeNodeData } from '../Tree';
|
|
2
|
+
export type TreeNodeFilter = (query: string, node: TreeNodeData) => boolean;
|
|
3
|
+
export declare function defaultTreeNodeFilter(query: string, node: TreeNodeData): boolean;
|
|
4
|
+
export declare function filterTreeData(data: TreeNodeData[], query: string, filter?: TreeNodeFilter): TreeNodeData[];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TreeNodeData } from '../Tree';
|
|
2
|
+
import type { TreeExpandedState } from '../use-tree';
|
|
3
|
+
export interface FlattenedTreeNodeData {
|
|
4
|
+
/** Node data from tree data */
|
|
5
|
+
node: TreeNodeData;
|
|
6
|
+
/** Nesting level of the node, starts at 1 */
|
|
7
|
+
level: number;
|
|
8
|
+
/** Value of the parent node, `null` for root nodes */
|
|
9
|
+
parent: string | null;
|
|
10
|
+
/** Whether the node has children */
|
|
11
|
+
hasChildren: boolean;
|
|
12
|
+
/** Whether the node is expanded */
|
|
13
|
+
expanded: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function flattenTreeData(data: TreeNodeData[], expandedState: TreeExpandedState): FlattenedTreeNodeData[];
|
|
@@ -3,4 +3,13 @@ import type { RenderTreeNodePayload, TreeCssVariables, TreeFactory, TreeNodeData
|
|
|
3
3
|
import type { UseTreeInput, UseTreeReturnType } from './use-tree';
|
|
4
4
|
export { Tree } from './Tree';
|
|
5
5
|
export { useTree, getTreeExpandedState } from './use-tree';
|
|
6
|
+
export { mergeAsyncChildren } from './merge-async-children/merge-async-children';
|
|
7
|
+
export { moveTreeNode } from './move-tree-node/move-tree-node';
|
|
8
|
+
export { filterTreeData, defaultTreeNodeFilter } from './filter-tree-data/filter-tree-data';
|
|
9
|
+
export { flattenTreeData } from './flatten-tree-data/flatten-tree-data';
|
|
10
|
+
export { FlatTreeNode } from './FlatTreeNode';
|
|
6
11
|
export type { TreeProps, TreeStylesNames, TreeFactory, TreeCssVariables, TreeNodeData, RenderTreeNodePayload, UseTreeInput, UseTreeReturnType, CheckedNodeStatus, };
|
|
12
|
+
export type { TreeNodeFilter } from './filter-tree-data/filter-tree-data';
|
|
13
|
+
export type { TreeDragDropPosition, TreeDragDropPayload } from './move-tree-node/move-tree-node';
|
|
14
|
+
export type { FlattenedTreeNodeData } from './flatten-tree-data/flatten-tree-data';
|
|
15
|
+
export type { FlatTreeNodeProps } from './FlatTreeNode';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { TreeNodeData } from '../Tree';
|
|
2
|
+
export type TreeDragDropPosition = 'before' | 'after' | 'inside';
|
|
3
|
+
export interface TreeDragDropPayload {
|
|
4
|
+
/** Value of the dragged node */
|
|
5
|
+
draggedNode: string;
|
|
6
|
+
/** Value of the target node */
|
|
7
|
+
targetNode: string;
|
|
8
|
+
/** Position relative to the target node */
|
|
9
|
+
position: TreeDragDropPosition;
|
|
10
|
+
}
|
|
11
|
+
export declare function moveTreeNode(data: TreeNodeData[], payload: TreeDragDropPayload): TreeNodeData[];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TreeDragDropPayload } from './move-tree-node/move-tree-node';
|
|
2
|
+
import type { TreeDragState, TreeNodeData } from './Tree';
|
|
3
|
+
interface UseTreeNodeDragDropInput {
|
|
4
|
+
nodeValue: string;
|
|
5
|
+
hasChildren: boolean;
|
|
6
|
+
data: TreeNodeData[];
|
|
7
|
+
onDragDrop: ((payload: TreeDragDropPayload) => void) | undefined;
|
|
8
|
+
dragStateRef: React.RefObject<TreeDragState>;
|
|
9
|
+
}
|
|
10
|
+
export declare function useTreeNodeDragDrop({ nodeValue, hasChildren, data, onDragDrop, dragStateRef, }: UseTreeNodeDragDropInput): Record<string, never> | {
|
|
11
|
+
draggable: true;
|
|
12
|
+
onDragStart: (event: React.DragEvent) => void;
|
|
13
|
+
onDragOver: (event: React.DragEvent) => void;
|
|
14
|
+
onDragLeave: (event: React.DragEvent) => void;
|
|
15
|
+
onDrop: (event: React.DragEvent) => void;
|
|
16
|
+
onDragEnd: (event: React.DragEvent) => void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -27,8 +27,18 @@ export interface UseTreeInput {
|
|
|
27
27
|
onNodeExpand?: (value: string) => void;
|
|
28
28
|
/** Called with the node value when it is collapsed */
|
|
29
29
|
onNodeCollapse?: (value: string) => void;
|
|
30
|
+
/** Called when a node with `hasChildren: true` is expanded for the first time.
|
|
31
|
+
* The callback should update the tree data with loaded children.
|
|
32
|
+
*/
|
|
33
|
+
onLoadChildren?: (nodeValue: string) => Promise<void>;
|
|
34
|
+
/** When `true`, checking a parent does not affect children and vice versa.
|
|
35
|
+
* Each node's checked state is fully independent. @default false
|
|
36
|
+
*/
|
|
37
|
+
checkStrictly?: boolean;
|
|
30
38
|
}
|
|
31
39
|
export interface UseTreeReturnType {
|
|
40
|
+
/** When `true`, each node's checked state is independent (no parent-child cascading) */
|
|
41
|
+
checkStrictly: boolean;
|
|
32
42
|
/** Determines whether multiple node can be selected at a time */
|
|
33
43
|
multiple: boolean;
|
|
34
44
|
/** A record of `node.value` and boolean values that represent nodes expanded state */
|
|
@@ -81,6 +91,14 @@ export interface UseTreeReturnType {
|
|
|
81
91
|
isNodeChecked: (value: string) => boolean;
|
|
82
92
|
/** Returns `true` if node with provided value is indeterminate */
|
|
83
93
|
isNodeIndeterminate: (value: string) => boolean;
|
|
94
|
+
/** Returns `true` if the node's children are currently being loaded */
|
|
95
|
+
isNodeLoading: (value: string) => boolean;
|
|
96
|
+
/** Returns the error from the last failed load attempt for the given node, or `null` */
|
|
97
|
+
getNodeLoadError: (value: string) => Error | null;
|
|
98
|
+
/** Programmatically triggers loading of a node's children */
|
|
99
|
+
loadNode: (value: string) => Promise<void>;
|
|
100
|
+
/** Clears the loaded cache for a node, causing it to re-fetch on next expand */
|
|
101
|
+
invalidateNode: (value: string) => void;
|
|
84
102
|
}
|
|
85
|
-
export declare function useTree({ initialSelectedState, expandedState, initialCheckedState, checkedState, initialExpandedState, selectedState, multiple, onNodeCollapse, onNodeExpand, onCheckedStateChange, onSelectedStateChange, onExpandedStateChange, }?: UseTreeInput): UseTreeReturnType;
|
|
103
|
+
export declare function useTree({ initialSelectedState, expandedState, initialCheckedState, checkedState, initialExpandedState, selectedState, multiple, onNodeCollapse, onNodeExpand, onCheckedStateChange, onSelectedStateChange, onExpandedStateChange, onLoadChildren, checkStrictly, }?: UseTreeInput): UseTreeReturnType;
|
|
86
104
|
export type TreeController = ReturnType<typeof useTree>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { InlineStylesInput } from './styles-to-string/styles-to-string';
|
|
2
2
|
export interface InlineStylesProps extends InlineStylesInput, Omit<React.ComponentProps<'style'>, keyof InlineStylesInput> {
|
|
3
|
+
deduplicate?: boolean;
|
|
3
4
|
}
|
|
4
|
-
export declare function InlineStyles(props:
|
|
5
|
+
export declare function InlineStyles({ deduplicate, ...props }: InlineStylesProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { InlineStyles } from './InlineStyles';
|
|
2
|
+
export { hashStyleProps } from './hash-styles';
|
|
2
3
|
export { stylesToString } from './styles-to-string/styles-to-string';
|
|
3
4
|
export type { InlineStylesInput, InlineStylesMediaQuery, } from './styles-to-string/styles-to-string';
|
|
4
5
|
export type { InlineStylesProps } from './InlineStyles';
|
|
@@ -17,6 +17,7 @@ interface MantineContextValue {
|
|
|
17
17
|
headless?: boolean;
|
|
18
18
|
stylesTransform?: MantineStylesTransform;
|
|
19
19
|
env?: 'default' | 'test';
|
|
20
|
+
deduplicateInlineStyles?: boolean;
|
|
20
21
|
}
|
|
21
22
|
export declare const MantineContext: import("react").Context<MantineContextValue | null>;
|
|
22
23
|
export declare function useMantineContext(): MantineContextValue;
|
|
@@ -28,4 +29,5 @@ export declare function useMantineIsHeadless(): boolean | undefined;
|
|
|
28
29
|
export declare function useMantineSxTransform(): (() => (sx: any) => string) | undefined;
|
|
29
30
|
export declare function useMantineStylesTransform(): (() => (styles: any, payload: any) => Record<string, string>) | undefined;
|
|
30
31
|
export declare function useMantineEnv(): "default" | "test";
|
|
32
|
+
export declare function useMantineDeduplicateInlineStyles(): boolean | undefined;
|
|
31
33
|
export {};
|
|
@@ -34,12 +34,14 @@ export interface MantineProviderProps {
|
|
|
34
34
|
withGlobalClasses?: boolean;
|
|
35
35
|
/** An object to transform `styles` and `sx` props into css classes, can be used with CSS-in-JS libraries */
|
|
36
36
|
stylesTransform?: MantineStylesTransform;
|
|
37
|
+
/** Determines whether inline styles with identical content should be deduplicated using React 19 style hoisting. When enabled, components with the same responsive style props share a single `<style />` tag instead of each generating their own. @default false */
|
|
38
|
+
deduplicateInlineStyles?: boolean;
|
|
37
39
|
/** Your application */
|
|
38
40
|
children?: React.ReactNode;
|
|
39
41
|
/** Environment at which the provider is used, `'test'` environment disables all transitions and portals */
|
|
40
42
|
env?: 'default' | 'test';
|
|
41
43
|
}
|
|
42
|
-
export declare function MantineProvider({ theme, children, getStyleNonce, withStaticClasses, withGlobalClasses, deduplicateCssVariables, withCssVariables, cssVariablesSelector, classNamesPrefix, colorSchemeManager, defaultColorScheme, getRootElement, cssVariablesResolver, forceColorScheme, stylesTransform, env, }: MantineProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
export declare function MantineProvider({ theme, children, getStyleNonce, withStaticClasses, withGlobalClasses, deduplicateCssVariables, withCssVariables, cssVariablesSelector, classNamesPrefix, colorSchemeManager, defaultColorScheme, getRootElement, cssVariablesResolver, forceColorScheme, stylesTransform, env, deduplicateInlineStyles, }: MantineProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
43
45
|
export declare namespace MantineProvider {
|
|
44
46
|
var displayName: string;
|
|
45
47
|
}
|
|
@@ -6,7 +6,7 @@ export * from './ColorSchemeScript';
|
|
|
6
6
|
export { DEFAULT_THEME } from './default-theme';
|
|
7
7
|
export { validateMantineTheme, mergeMantineTheme } from './merge-mantine-theme';
|
|
8
8
|
export { MantineProvider, HeadlessMantineProvider } from './MantineProvider';
|
|
9
|
-
export { MantineContext, useMantineContext, useMantineClassNamesPrefix, useMantineStyleNonce, useMantineCssVariablesResolver, useMantineWithStaticClasses, useMantineIsHeadless, useMantineSxTransform, useMantineStylesTransform, useMantineEnv, } from './Mantine.context';
|
|
9
|
+
export { MantineContext, useMantineContext, useMantineClassNamesPrefix, useMantineStyleNonce, useMantineCssVariablesResolver, useMantineWithStaticClasses, useMantineIsHeadless, useMantineSxTransform, useMantineStylesTransform, useMantineEnv, useMantineDeduplicateInlineStyles, } from './Mantine.context';
|
|
10
10
|
export { useMantineTheme, useSafeMantineTheme, MantineThemeContext, MantineThemeProvider, } from './MantineThemeProvider';
|
|
11
11
|
export type { MantineThemeProviderProps } from './MantineThemeProvider';
|
|
12
12
|
export type { MantineProviderProps, HeadlessMantineProviderProps } from './MantineProvider';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mantine/core",
|
|
3
|
-
"version": "9.0
|
|
3
|
+
"version": "9.1.0",
|
|
4
4
|
"description": "React components library focused on usability, accessibility and developer experience",
|
|
5
5
|
"homepage": "https://mantine.dev/",
|
|
6
6
|
"license": "MIT",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"directory": "packages/@mantine/core"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"@mantine/hooks": "9.0
|
|
46
|
+
"@mantine/hooks": "9.1.0",
|
|
47
47
|
"react": "^19.2.0",
|
|
48
48
|
"react-dom": "^19.2.0"
|
|
49
49
|
},
|
|
@@ -52,12 +52,12 @@
|
|
|
52
52
|
"clsx": "^2.1.1",
|
|
53
53
|
"react-number-format": "^5.4.5",
|
|
54
54
|
"react-remove-scroll": "^2.7.2",
|
|
55
|
-
"type-fest": "^5.
|
|
55
|
+
"type-fest": "^5.6.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@mantine-tests/core": "workspace:*",
|
|
59
59
|
"@mantine/hooks": "workspace:*",
|
|
60
|
-
"react": "19.2.
|
|
61
|
-
"react-dom": "19.2.
|
|
60
|
+
"react": "19.2.5",
|
|
61
|
+
"react-dom": "19.2.5"
|
|
62
62
|
}
|
|
63
63
|
}
|
package/styles/Tree.css
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
.m_f698e191 {
|
|
2
2
|
--level-offset: var(--mantine-spacing-lg);
|
|
3
|
+
--tree-line-width: calc(0.0625rem * var(--mantine-scale));
|
|
4
|
+
--tree-line-color: var(--mantine-color-default-border);
|
|
3
5
|
margin: 0;
|
|
4
6
|
padding: 0;
|
|
5
7
|
user-select: none;
|
|
@@ -24,6 +26,7 @@
|
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
.m_dc283425 {
|
|
29
|
+
position: relative;
|
|
27
30
|
padding-inline-start: var(--label-offset);
|
|
28
31
|
}
|
|
29
32
|
|
|
@@ -34,3 +37,66 @@
|
|
|
34
37
|
:where([data-mantine-color-scheme='dark']) .m_dc283425:where([data-selected]) {
|
|
35
38
|
background-color: var(--mantine-color-dark-5);
|
|
36
39
|
}
|
|
40
|
+
|
|
41
|
+
.m_dc283425:where([data-dragging]) {
|
|
42
|
+
opacity: 0.4;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.m_dc283425:where([data-drag-over='before'])::before {
|
|
46
|
+
content: '';
|
|
47
|
+
position: absolute;
|
|
48
|
+
top: -1px;
|
|
49
|
+
inset-inline-start: var(--label-offset, 0);
|
|
50
|
+
inset-inline-end: 0;
|
|
51
|
+
height: 2px;
|
|
52
|
+
background-color: var(--mantine-primary-color-filled);
|
|
53
|
+
pointer-events: none;
|
|
54
|
+
z-index: 1;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.m_dc283425:where([data-drag-over='after'])::after {
|
|
58
|
+
content: '';
|
|
59
|
+
position: absolute;
|
|
60
|
+
bottom: -1px;
|
|
61
|
+
inset-inline-start: var(--label-offset, 0);
|
|
62
|
+
inset-inline-end: 0;
|
|
63
|
+
height: 2px;
|
|
64
|
+
background-color: var(--mantine-primary-color-filled);
|
|
65
|
+
pointer-events: none;
|
|
66
|
+
z-index: 1;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.m_dc283425:where([data-drag-over='inside']) {
|
|
70
|
+
background-color: var(--mantine-primary-color-light);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
:where([data-with-lines]) .m_f6970eb1 {
|
|
74
|
+
position: relative;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
:where([data-with-lines]) .m_75f3ecf > .m_f6970eb1::before {
|
|
78
|
+
content: '';
|
|
79
|
+
position: absolute;
|
|
80
|
+
top: calc(0.75rem * var(--mantine-scale));
|
|
81
|
+
inset-inline-start: calc(var(--label-offset) - var(--level-offset) / 2);
|
|
82
|
+
width: calc(var(--level-offset) / 2);
|
|
83
|
+
height: 0;
|
|
84
|
+
border-top: var(--tree-line-width) solid var(--tree-line-color);
|
|
85
|
+
pointer-events: none;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:where([data-with-lines]) .m_75f3ecf > .m_f6970eb1::after {
|
|
89
|
+
content: '';
|
|
90
|
+
position: absolute;
|
|
91
|
+
top: 0;
|
|
92
|
+
bottom: 0;
|
|
93
|
+
inset-inline-start: calc(var(--label-offset) - var(--level-offset) / 2);
|
|
94
|
+
width: 0;
|
|
95
|
+
border-inline-start: var(--tree-line-width) solid var(--tree-line-color);
|
|
96
|
+
pointer-events: none;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
:where([data-with-lines]) .m_75f3ecf > .m_f6970eb1:last-child::after {
|
|
100
|
+
bottom: auto;
|
|
101
|
+
height: calc(0.75rem * var(--mantine-scale));
|
|
102
|
+
}
|
package/styles/Tree.layer.css
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
@layer mantine {.m_f698e191 {
|
|
2
2
|
--level-offset: var(--mantine-spacing-lg);
|
|
3
|
+
--tree-line-width: calc(0.0625rem * var(--mantine-scale));
|
|
4
|
+
--tree-line-color: var(--mantine-color-default-border);
|
|
3
5
|
margin: 0;
|
|
4
6
|
padding: 0;
|
|
5
7
|
user-select: none;
|
|
@@ -24,6 +26,7 @@
|
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
.m_dc283425 {
|
|
29
|
+
position: relative;
|
|
27
30
|
padding-inline-start: var(--label-offset);
|
|
28
31
|
}
|
|
29
32
|
|
|
@@ -34,4 +37,67 @@
|
|
|
34
37
|
:where([data-mantine-color-scheme='dark']) .m_dc283425:where([data-selected]) {
|
|
35
38
|
background-color: var(--mantine-color-dark-5);
|
|
36
39
|
}
|
|
40
|
+
|
|
41
|
+
.m_dc283425:where([data-dragging]) {
|
|
42
|
+
opacity: 0.4;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.m_dc283425:where([data-drag-over='before'])::before {
|
|
46
|
+
content: '';
|
|
47
|
+
position: absolute;
|
|
48
|
+
top: -1px;
|
|
49
|
+
inset-inline-start: var(--label-offset, 0);
|
|
50
|
+
inset-inline-end: 0;
|
|
51
|
+
height: 2px;
|
|
52
|
+
background-color: var(--mantine-primary-color-filled);
|
|
53
|
+
pointer-events: none;
|
|
54
|
+
z-index: 1;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.m_dc283425:where([data-drag-over='after'])::after {
|
|
58
|
+
content: '';
|
|
59
|
+
position: absolute;
|
|
60
|
+
bottom: -1px;
|
|
61
|
+
inset-inline-start: var(--label-offset, 0);
|
|
62
|
+
inset-inline-end: 0;
|
|
63
|
+
height: 2px;
|
|
64
|
+
background-color: var(--mantine-primary-color-filled);
|
|
65
|
+
pointer-events: none;
|
|
66
|
+
z-index: 1;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.m_dc283425:where([data-drag-over='inside']) {
|
|
70
|
+
background-color: var(--mantine-primary-color-light);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
:where([data-with-lines]) .m_f6970eb1 {
|
|
74
|
+
position: relative;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
:where([data-with-lines]) .m_75f3ecf > .m_f6970eb1::before {
|
|
78
|
+
content: '';
|
|
79
|
+
position: absolute;
|
|
80
|
+
top: calc(0.75rem * var(--mantine-scale));
|
|
81
|
+
inset-inline-start: calc(var(--label-offset) - var(--level-offset) / 2);
|
|
82
|
+
width: calc(var(--level-offset) / 2);
|
|
83
|
+
height: 0;
|
|
84
|
+
border-top: var(--tree-line-width) solid var(--tree-line-color);
|
|
85
|
+
pointer-events: none;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:where([data-with-lines]) .m_75f3ecf > .m_f6970eb1::after {
|
|
89
|
+
content: '';
|
|
90
|
+
position: absolute;
|
|
91
|
+
top: 0;
|
|
92
|
+
bottom: 0;
|
|
93
|
+
inset-inline-start: calc(var(--label-offset) - var(--level-offset) / 2);
|
|
94
|
+
width: 0;
|
|
95
|
+
border-inline-start: var(--tree-line-width) solid var(--tree-line-color);
|
|
96
|
+
pointer-events: none;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
:where([data-with-lines]) .m_75f3ecf > .m_f6970eb1:last-child::after {
|
|
100
|
+
bottom: auto;
|
|
101
|
+
height: calc(0.75rem * var(--mantine-scale));
|
|
102
|
+
}
|
|
37
103
|
}
|
package/styles.css
CHANGED
|
@@ -7972,6 +7972,8 @@ fieldset:disabled .m_38aeed47:where(:not([data-inverted])),
|
|
|
7972
7972
|
|
|
7973
7973
|
.m_f698e191 {
|
|
7974
7974
|
--level-offset: var(--mantine-spacing-lg);
|
|
7975
|
+
--tree-line-width: calc(0.0625rem * var(--mantine-scale));
|
|
7976
|
+
--tree-line-color: var(--mantine-color-default-border);
|
|
7975
7977
|
margin: 0;
|
|
7976
7978
|
padding: 0;
|
|
7977
7979
|
user-select: none;
|
|
@@ -7996,6 +7998,7 @@ fieldset:disabled .m_38aeed47:where(:not([data-inverted])),
|
|
|
7996
7998
|
}
|
|
7997
7999
|
|
|
7998
8000
|
.m_dc283425 {
|
|
8001
|
+
position: relative;
|
|
7999
8002
|
padding-inline-start: var(--label-offset);
|
|
8000
8003
|
}
|
|
8001
8004
|
|
|
@@ -8007,6 +8010,69 @@ fieldset:disabled .m_38aeed47:where(:not([data-inverted])),
|
|
|
8007
8010
|
background-color: var(--mantine-color-dark-5);
|
|
8008
8011
|
}
|
|
8009
8012
|
|
|
8013
|
+
.m_dc283425:where([data-dragging]) {
|
|
8014
|
+
opacity: 0.4;
|
|
8015
|
+
}
|
|
8016
|
+
|
|
8017
|
+
.m_dc283425:where([data-drag-over='before'])::before {
|
|
8018
|
+
content: '';
|
|
8019
|
+
position: absolute;
|
|
8020
|
+
top: calc(-0.0625rem * var(--mantine-scale));
|
|
8021
|
+
inset-inline-start: var(--label-offset, 0);
|
|
8022
|
+
inset-inline-end: 0;
|
|
8023
|
+
height: calc(0.125rem * var(--mantine-scale));
|
|
8024
|
+
background-color: var(--mantine-primary-color-filled);
|
|
8025
|
+
pointer-events: none;
|
|
8026
|
+
z-index: 1;
|
|
8027
|
+
}
|
|
8028
|
+
|
|
8029
|
+
.m_dc283425:where([data-drag-over='after'])::after {
|
|
8030
|
+
content: '';
|
|
8031
|
+
position: absolute;
|
|
8032
|
+
bottom: calc(-0.0625rem * var(--mantine-scale));
|
|
8033
|
+
inset-inline-start: var(--label-offset, 0);
|
|
8034
|
+
inset-inline-end: 0;
|
|
8035
|
+
height: calc(0.125rem * var(--mantine-scale));
|
|
8036
|
+
background-color: var(--mantine-primary-color-filled);
|
|
8037
|
+
pointer-events: none;
|
|
8038
|
+
z-index: 1;
|
|
8039
|
+
}
|
|
8040
|
+
|
|
8041
|
+
.m_dc283425:where([data-drag-over='inside']) {
|
|
8042
|
+
background-color: var(--mantine-primary-color-light);
|
|
8043
|
+
}
|
|
8044
|
+
|
|
8045
|
+
:where([data-with-lines]) .m_f6970eb1 {
|
|
8046
|
+
position: relative;
|
|
8047
|
+
}
|
|
8048
|
+
|
|
8049
|
+
:where([data-with-lines]) .m_75f3ecf > .m_f6970eb1::before {
|
|
8050
|
+
content: '';
|
|
8051
|
+
position: absolute;
|
|
8052
|
+
top: calc(0.75rem * var(--mantine-scale));
|
|
8053
|
+
inset-inline-start: calc(var(--label-offset) - var(--level-offset) / 2);
|
|
8054
|
+
width: calc(var(--level-offset) / 2);
|
|
8055
|
+
height: 0;
|
|
8056
|
+
border-top: var(--tree-line-width) solid var(--tree-line-color);
|
|
8057
|
+
pointer-events: none;
|
|
8058
|
+
}
|
|
8059
|
+
|
|
8060
|
+
:where([data-with-lines]) .m_75f3ecf > .m_f6970eb1::after {
|
|
8061
|
+
content: '';
|
|
8062
|
+
position: absolute;
|
|
8063
|
+
top: 0;
|
|
8064
|
+
bottom: 0;
|
|
8065
|
+
inset-inline-start: calc(var(--label-offset) - var(--level-offset) / 2);
|
|
8066
|
+
width: 0;
|
|
8067
|
+
border-inline-start: var(--tree-line-width) solid var(--tree-line-color);
|
|
8068
|
+
pointer-events: none;
|
|
8069
|
+
}
|
|
8070
|
+
|
|
8071
|
+
:where([data-with-lines]) .m_75f3ecf > .m_f6970eb1:last-child::after {
|
|
8072
|
+
bottom: auto;
|
|
8073
|
+
height: calc(0.75rem * var(--mantine-scale));
|
|
8074
|
+
}
|
|
8075
|
+
|
|
8010
8076
|
.m_d08caa0 :first-child {
|
|
8011
8077
|
margin-top: 0;
|
|
8012
8078
|
}
|