We have been developing Reshaped for the past 3 years, and it has been a paid product since its inception. However, we have always had a desire to contribute more to the community. Finding a way to achieve this was challenging, as we needed to maintain a sustainable business model. Recently, we have made a shift in our paid assets and services, placing a stronger emphasis on serving teams that create their own design systems. As a result, we are now able to offer more of our content for free, allowing individual developers to try out Reshaped.
In version 2.2, we have released our React package on npm, making it freely available to everyone. We believe this step will assist indie hackers in developing their new projects and fulfill the requests we have received from individuals interested in using Reshaped in their open-source projects.
Now that the Reshaped React package is free to use, let's discuss its core principles, the problems it addresses, and its position in the market amidst numerous UI libraries and design systems.
Our main goal is to provide best-in-class UI components for the 90% of the web products.
This mission can be decomposed into multiple principles:
The core ingredient of any design system that makes it a system is how all parts of it work together and how they combine to create an amazing user experience for the product. During the development of Reshaped, we dedicated a significant amount of time to researching component APIs that will remain relevant for years to come, and transforming them into visually appealing user interactions. One of our most popular demos is the Toast component, and we apply the same level of attention to detail even for the most basic utilities.
function Example() { const toast = useToast(); return ( <Button onClick={() => { const id = toast.show({ title: "Done!", text: "You can start using the dashboard now.", icon: IconZap, actionsSlot: <Button onClick={() => toast.hide(id)}>Undo</Button>, }); }} > Grant access </Button> ); }
Reshaped offers a TailwindCSS theme configuration that allows you to utilize all of our design tokens through Tailwind classes. What sets it apart is that you won't need the dark: variant to enable dark mode implementation. The colors are resolved automatically, just like when you use our components.
const { getTheme } = require("reshaped/tailwind"); module.exports = { ... theme: getTheme(), };
Reshaped offers a comprehensive set of flexible layout utilities that are utilized for composing components. These utilities allow you to effortlessly implement complex layouts without having to build everything from scratch, while still leveraging the design system.
<View width="300px"> <Card padding={0}> <MenuItem startSlot={<Avatar src="/img/landing/author.webp" size={8} />} endSlot={ <Badge size="small" color="critical" rounded> 27 </Badge> } > Open profile </MenuItem> <Divider /> <MenuItem>Manage account</MenuItem> <MenuItem>Add another account</MenuItem> <MenuItem>Sign out</MenuItem> <Divider /> <View padding={1} align="center" direction="row" gap={2}> <Button size="small" variant="ghost"> Privacy Policy </Button> <Button size="small" variant="ghost"> Terms of Service </Button> </View> </Card> </View>
Most of the components in Reshaped have layout properties that can be adjusted based on the current viewport size. This functionality is achieved through native CSS media queries, enabling it to work seamlessly with server-side rendering and eliminating the need for any runtime CSS-in-JS library.
<Modal position={{ s: "bottom", m: "end" }}>Responsive sheet content</Modal>
Reshaped components are designed to meet the needs of products targeting a diverse user base. We ensure that all components adhere to WCAG AA standards and meet the WAI-ARIA requirements. Additionally, products utilizing Reshaped can be easily translated into any language, including those that utilize right-to-left (RTL) scripts.
<Dismissible closeAriaLabel="メニューを閉じる" />
Reshaped React package is currently not open-sourced on GitHub, despite being freely available on NPM. There are several reasons for this:
npm install reshaped
We hope that our principles and features got you excited enough to try out Reshaped. We are always happy to hear back from you about what you like about it or things you would like to see improved. You can always drop us a message at @getReshaped / @blvdmitry or create an issue at our public GitHub repository.
We can't to see what you're going to build with Reshaped and see you in the next release notes 🚀