Repository: JetBrains/compose-multiplatform
File: components/SplitPane/library/src/commonMain/kotlin/org/jetbrains/compose/splitpane/SplitPaneDSL.kt (Kotlin)

Code before:
        minSize: Dp = 0.dp,
        content: @Composable () -> Unit
    )

    /**
     * Set up second composable item if SplitPane.
     * For [HorizontalSplitPane] it will be Right part, for [VerticalSplitPane] it will be Bottom part
     * @param minSize a minimal size of composable item.
     * For [HorizontalSplitPane] it will be minimal width, for [VerticalSplitPane] it wil be minimal Heights.
     * In this context minimal mean that this composable item could not be smaller than specified value.
     * @param content composable item content.
     * */
    fun second(
        minSize: Dp = 0.dp,
        content: @Composable () -> Unit
    )

    fun splitter(block: SplitterScope.() -> Unit)

}

/** Receiver scope which is used by [SplitterScope] */
@ExperimentalSplitPaneApi
interface HandleScope {
    /** allow mark composable as movable handle */
    @Composable
    fun Modifier.markAsHandle(): Modifier
}

/** Receiver scope which is used by [SplitPaneScope] */
@ExperimentalSplitPaneApi
interface SplitterScope {
    /**
     * Set up visible part of splitter. This part will be measured and placed between split pane
     * parts (first and second)
     *
     * @param content composable item content
     * */
    fun visiblePart(content: @Composable () -> Unit)

    /**
     * Set up handle part, this part of splitter would be measured and placed above [visiblePart] content.
     * Size of handle will have no effect on split pane parts (first and second) sizes.
     *
     * @param alignment alignment of handle according to [visiblePart] could be:
     * * [SplitterHandleAlignment.BEFORE] if you place handle before [visiblePart],
     * * [SplitterHandleAlignment.ABOVE] if you place handle above [visiblePart] (will be centered)
     * * and [SplitterHandleAlignment.AFTER] if you place handle after [visiblePart].
     *
     * @param content composable item content provider. Uses [HandleScope] to allow mark any provided composable part
     * as handle.

Review comment (suggestion):
```suggestion
```
One of the rules of creating Modifier's is to not make them Composable.

Code after:
    fun first(
        minSize: Dp = 0.dp,
        content: @Composable () -> Unit
    )

    /**
     * Set up second composable item if SplitPane.
     * For [HorizontalSplitPane] it will be Right part, for [VerticalSplitPane] it will be Bottom part
     * @param minSize a minimal size of composable item.
     * For [HorizontalSplitPane] it will be minimal width, for [VerticalSplitPane] it wil be minimal Heights.
     * In this context minimal mean that this composable item could not be smaller than specified value.
     * @param content composable item content.
     * */
    fun second(
        minSize: Dp = 0.dp,
        content: @Composable () -> Unit
    )

    fun splitter(block: SplitterScope.() -> Unit)

}

/** Receiver scope which is used by [SplitterScope] */
@ExperimentalSplitPaneApi
interface HandleScope {
    /** allow mark composable as movable handle */
    fun Modifier.markAsHandle(): Modifier
}

/** Receiver scope which is used by [SplitPaneScope] */
@ExperimentalSplitPaneApi
interface SplitterScope {
    /**
     * Set up visible part of splitter. This part will be measured and placed between split pane
     * parts (first and second)
     *
     * @param content composable item content
     * */
    fun visiblePart(content: @Composable () -> Unit)

    /**
     * Set up handle part, this part of splitter would be measured and placed above [visiblePart] content.
     * Size of handle will have no effect on split pane parts (first and second) sizes.
     *
     * @param alignment alignment of handle according to [visiblePart] could be:
     * * [SplitterHandleAlignment.BEFORE] if you place handle before [visiblePart],
     * * [SplitterHandleAlignment.ABOVE] if you place handle above [visiblePart] (will be centered)
     * * and [SplitterHandleAlignment.AFTER] if you place handle after [visiblePart].
     *
     * @param content composable item content provider. Uses [HandleScope] to allow mark any provided composable part
     * as handle.