"use client";
import {mergeProps} from "@base-ui/react/merge-props";
import {Toolbar as BaseToolbar} from "@base-ui/react/toolbar";
import {useRender} from "@base-ui/react/use-render";
import * as React from "react";
import {cn} from "@/lib/utilities";
import styles from "./toolbar.module.css";
/**
* Arranges related actions into a keyboard-accessible toolbar.
*
* @remarks
* - Renders a `
` element by default
* - Built on Base UI Toolbar primitives
* - Supports roving focus and compound toolbar item composition
*
* @example
* ```tsx
*
* Bold
* Italic
*
* ```
*
* @see {@link https://base-ui.com/react/components/toolbar | Base UI Toolbar Docs}
*/
const Toolbar = React.forwardRef
((props, forwardedRef) => {
const {className, children, render, ...otherProps} = props;
return (
{children}
);
});
/**
* Renders an interactive button within a toolbar.
*
* @remarks
* - Renders a `` element by default
* - Built on Base UI Toolbar button behavior
* - Applies shared toolbar item spacing and focus styling
*
* @example
* ```tsx
* B
* ```
*
* @see {@link https://base-ui.com/react/components/toolbar | Base UI Toolbar Docs}
*/
const ToolbarButton = React.forwardRef((props, forwardedRef) => {
const {className, children, render, ...otherProps} = props;
return (
{children}
);
});
/**
* Groups related toolbar controls into a single visual cluster.
*
* @remarks
* - Renders a `` element by default
* - Built on Base UI Toolbar grouping primitives
*
* @example
* ```tsx
*
* Left
* Center
*
* ```
*
* @see {@link https://base-ui.com/react/components/toolbar | Base UI Toolbar Docs}
*/
const ToolbarGroup = React.forwardRef
((props, forwardedRef) => {
const {className, children, render, ...otherProps} = props;
return (
{children}
);
});
/**
* Renders a visual separator between toolbar items or groups.
*
* @remarks
* - Renders a `` element by default
* - Built on Base UI Toolbar separator primitives
*
* @example
* ```tsx
*
* ```
*
* @see {@link https://base-ui.com/react/components/toolbar | Base UI Toolbar Docs}
*/
const ToolbarSeparator = React.forwardRef
((props, forwardedRef) => {
const {className, render, ...otherProps} = props;
return (
);
});
/**
* Renders a link that visually matches toolbar buttons.
*
* @remarks
* - Renders an `` element by default
* - Built on Base UI Toolbar link primitives
*
* @example
* ```tsx
* Docs
* ```
*
* @see {@link https://base-ui.com/react/components/toolbar | Base UI Toolbar Docs}
*/
const ToolbarLink = React.forwardRef((props, forwardedRef) => {
const {className, children, render, ...otherProps} = props;
return (
{children}
);
});
// eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API
namespace Toolbar {
export type Props = React.ComponentPropsWithRef;
export type State = BaseToolbar.Root.State;
}
// eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API
namespace ToolbarButton {
export type Props = React.ComponentPropsWithRef;
export type State = BaseToolbar.Button.State;
}
// eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API
namespace ToolbarGroup {
export type Props = React.ComponentPropsWithRef;
export type State = BaseToolbar.Group.State;
}
// eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API
namespace ToolbarSeparator {
export type Props = React.ComponentPropsWithRef;
export type State = BaseToolbar.Separator.State;
}
// eslint-disable-next-line no-redeclare -- required for the canonical component namespace typing API
namespace ToolbarLink {
export type Props = React.ComponentPropsWithRef;
export type State = BaseToolbar.Link.State;
}
Toolbar.displayName = "Toolbar";
ToolbarButton.displayName = "ToolbarButton";
ToolbarGroup.displayName = "ToolbarGroup";
ToolbarSeparator.displayName = "ToolbarSeparator";
ToolbarLink.displayName = "ToolbarLink";
export {Toolbar, ToolbarButton, ToolbarGroup, ToolbarLink, ToolbarSeparator};