@gfazioli/mantine-split-pane
Version:
A Mantine 9 React component for resizable split pane layouts with 7 resizer variants, context-based prop inheritance, responsive orientation, and dynamic pane generation.
57 lines (56 loc) • 2.15 kB
TypeScript
import { BoxProps, Factory, StylesApiProps } from '@mantine/core';
import React from 'react';
import { SplitDynamic } from './Dynamic';
import { SplitPane } from './Pane/SplitPane';
import { SplitResizer, type SplitResizerContextProps, type SplitResizerVariant } from './Resizer/SplitResizer';
export type SplitStylesNames = 'root';
/** Variant type for `Split`, mirrors `SplitResizerVariant` */
export type SplitVariant = SplitResizerVariant;
export type SplitCssVariables = {
root: '--split-inline';
};
/**
* Base props for the `Split` container. Extends `SplitResizerContextProps` so
* that resizer configuration (variant, color, knob, etc.) set on `<Split>` is
* automatically cascaded to all child `<Split.Resizer>` components via context.
*/
export interface SplitBaseProps extends SplitResizerContextProps {
/** Render the split container as `inline-flex` instead of `flex` */
inline?: boolean;
/**
* When `true`, `Split.Resizer` components are automatically inserted between
* consecutive `Split.Pane` children, removing the need to add them manually.
* Auto-inserted resizers inherit all resizer props from the parent `Split`.
*/
autoResizers?: boolean;
/** Split children — typically `Split.Pane` and `Split.Resizer` elements */
children: React.ReactNode;
}
export interface SplitProps extends BoxProps, SplitBaseProps, StylesApiProps<SplitFactory> {
}
export type SplitFactory = Factory<{
props: SplitProps;
defaultComponent: 'div';
ref: HTMLDivElement;
stylesNames: SplitStylesNames;
vars: SplitCssVariables;
variant: SplitVariant;
staticComponents: {
Pane: typeof SplitPane;
Resizer: typeof SplitResizer;
Dynamic: typeof SplitDynamic;
};
}>;
export declare const Split: import("@mantine/core").MantineComponent<{
props: SplitProps;
defaultComponent: "div";
ref: HTMLDivElement;
stylesNames: SplitStylesNames;
vars: SplitCssVariables;
variant: SplitVariant;
staticComponents: {
Pane: typeof SplitPane;
Resizer: typeof SplitResizer;
Dynamic: typeof SplitDynamic;
};
}>;