Q1 budget, final numbers
Paula Lima · 12 Mar 2025, 16:40Hi team, the final Q1 numbers are in the shared folder. Revenue closed at $482,300, 6% above plan. Please review your area before Thursday so we can send it to the board.
Two panels with a handle between them that people drag, or move with the keyboard, to share the space. Use it in work-heavy screens like a mail client, an editor with a preview or a query tool.
This release brings faster exports and a new invoice view.
Track what was billed, what is paid and what is late. Filter by customer or by month.
Set up Camaleo once (Installation), then import what you need. It renders on the client.
import { Splitter, SplitterPanel, SplitterHandle } from "@camaleo/react";The value is the size of the first panel, in percent; the second takes the rest. Give the splitter a height. Panels clip their content, so put a ScrollArea inside the ones that can grow.
Every example is a real file you can copy. They all wear the skin, mode and brand from the bar above. Drag a handle, or press Tab until one has a focus ring and use the arrow keys.
Put a second splitter inside the second panel. Each handle gets its own name, so people know which border they are moving.
orientation="vertical" puts one panel above the other, like an editor over its terminal. ↑ and ↓ move the handle.
Click "Hide filters", or press Enter on the handle. Both collapse the panel to 0 and bring it back at the size it had; a collapsed panel is hidden, so its controls leave the Tab order.
Drag the handle, then reset it. With value and onValueChange, the size is yours to save in the user's profile.
The chart stays between 30% and 70%.
min and max keep both sides usable. Home and End jump straight to them.
Track what was billed, what is paid and what is late. Filter by customer or by month.
The handle is a focusable separator. Name it after what it resizes, and add aria-valuetext so a screen reader says "Sidebar 30% wide" instead of "30".
These are whole pieces of UI you can copy, in the skin you picked.
Track what was billed, what is paid and what is late. Filter by customer or by month.
Set min so the narrow side always shows whole words.
Track what was billed, what is paid and what is late. Filter by customer or by month.
A 5% sidebar cuts every name off. People have to drag it open again before they can read anything.
Filters
INV-2025-118 · Padaria Estrela · $1,240.00
Show and hide the panel with a labelled button, so people who don't drag can still reach it.
Filters
INV-2025-118 · Padaria Estrela · $1,240.00
A panel at 0% with no button looks like it doesn't exist. Essential content needs a visible way in.
horizontal puts the panels side by side; vertical stacks them.onValueChange to control it.0 when Enter collapses the first panel.Home jumps here.End jumps here.SplitterPanel takes panel ("first" or "second"). SplitterHandle takes aria-label (default "Resize panel"; pass it in the page's language) and aria-valuetext. Other props go to the elements.
Restyle it without forking: target the attributes, or set the tokens on a parent, a skin or the splitter itself.
Color
Shape & size
This component only
/* a thin line instead of a bar, without the grip */
.editor [data-slot="splitter"] {
--cml-splitter-handle-size: 0.375rem;
--cml-splitter-handle-bg: transparent;
}
.editor [data-slot="splitter-grip"] { display: none; }