Casey Baggz
Cerberus Admin
This release adds new features, packages, and improvements to our entire ecosystem.
Welcome to Cerberus v1! This is a massive release and we have a lot to cover, so here is a brief overview of what's new:
When we first launched Cerberus, the goal was to provide a low-level API that would give complete control to our users. Since then, we've learned that most of the teams using Cerberus prefer a more opinionated approach that is more baked into the framework like a UI library.
Thus, we have simiplified the installation dramatically by adding Carbon Icons as the default icon library.
This means you no longer need to setup a custom config for the CerberusProvider
unless you want to customize the icon set.
The result is a more streamlined installation experience that gets you up and running faster than ever before.
View the new installation guide for more details.
In this release, we have quite a few improvements and additions to our React library.
Let's start with a bang...
We have had some deprecated APIs hanging around for close to a year now. In this release, we have removed and/or replaced them with more modern APIs.
Changes
@dnd-kit has been removed as a dependency as a wholeThis shouldn't affect anyone unless you have been ignoring the deprecation warnings for a very long time. 👀
Now let's get to the good stuff...
Sometimes you want to group elements together in different ways. We've added the
Group component to help with this.
From different orientations to gap options, we've got you covered. Here is an example of using it to attach elements together:
Checkout the Group documentation for more details.
We've added a Pagination component to help streamline pagination in your app.
Fully accessible and customizable, it provides the flexibility you need regardless
of your chosen pagination strategy.
In this demo, we show how you can use the Pagination API to manage and slice
your data efficiently.
Checkout the Pagination documentation for more details.
EnforceNoProperties typeSometimes you need a type that should strictly enforce the usage of some properties and not others depending on the context. We do this often with our component APIs.
Thus, we have added a EnforceNoProperties type that allows you easily achieve this.
This type will convert the Record passed into it to have a values of never. The
result is a more strict and reliable type environment.
focus outlinesButton and Text autocomplete style props correctlyMenuSelectionDetails typeReactNode descriptions for destructive Prompt modalsOur core preset plugin got a little boost as well with a new button recipe and conditions.
Buttons now include a outlined-subtle variant that provides a less prominent
stroke style.
Checkout the Button documentation for more details.
Along with our new Data Grid API, we have added some new conditions to help with conditional styling:
| Condition | Value |
|---|---|
_pinned | '&:is([data-pinned], [data-state=pinned])' |
_leftPinned | '&:is([data-pinned=left])' |
_rightPinned | '&:is([data-pinned=right])' |
Cerberus has always aimed for the long-term goal of creating an entire platform of high performant components and tools that help streamline web development.
In our first year, we focused on the foundation: a plugin-based architecture that worked seamlessly with React components.
This year we are building on that foundation to create a landmark powerhouse that is more than just a collection of components.
We will achieve that by adding two more players in the ecosystem:
This release, introduces our first compositional component: The Data Grid
The Data Grid is a React component built to provide a drop-in solution for displaying data-heavy tables with features like filtering, sorting, pagination, and more. Our execution is inspired by the ideaology of MUI's DataGrid component with the performance enhancements of TanStack Table.
The concept is simple:
Supported Features:
Dependencies:
The Data Grid is a "pure" Cerberus component that only uses two dependencies:
Checkout the Data Grid documentation for more details.
The Data Grid "soft launches" a new signal-based state management system for React. This is the state management that React should have had from the beginning and still doesn't provide.
We will dive deeper into signals in our next release when we launch it publicly.
If you are interested in an early preview of signals, you can install it today:
npm install @cerberus/signals@npm:@cerberus-design/signalspnpm add @cerberus/signals@npm:@cerberus-design/signalsdeno add npm:@cerberus/signals@npm:@cerberus-design/signalsbun add @cerberus/signals@npm:@cerberus-design/signalsThis is a monumental release and one of the most significant updates to Cerberus since its inception.
A special thanks to everyone who has helped validate and shape the APIs and docs for this release.
To upgrade to this release, you can install the latest version of Cerberus React:
npm run up:cerberuspnpm run up:cerberusdeno run npm:up:cerberusbun run up:cerberus