UNPKG

@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
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; }; }>;