There are three fundamental parts to Bamboo Atoms
- Dependency Injection
- Performant cross-platform low-level components/hooks
- Theming
Other available libraries implement an API that is complicated and often deviate from the react native implementation. You should only need to read react-native documentation to write your components.
Case in point, libraries implementing _textStyle, _containerStyle props that would be passed down from one component to the other
Complex theming: You should have to write your styles once, while still enabling customising styles for certain special sections.
eg. Build custom styles for text and buttons in modals or headers Complex component composition; time and again, and especially in react native, you need to import a specifically styled component through out your component tree to ensure a consistent UI.
Be a minimal, un-opinionated dependency (styles and components) injection library.
Be a performant, thoroughly (automation) tested, and highly theme-able repository of building block components to create quality cross-platform production grade complex components.
Export a barely styled set of low-level components that are a drop in replacement for react-native components.
Provide an efficient way to compose complex elements using dependency injection principals. Bamboo Atoms provides an easily configurable component store and a neat useComponent hook that gives you the component specific for the current context.
Provide a simplified and elegant way to create and inject themes. Shoot has light/dark modes built-in and also enables custom component theming at a component specific level. An efficient useTheme hook is available to deliver a refined experience.
Though it enables complex theming, it is not a design library.
A high level component library that would otherwise actually create a product.
// TODO: Add design patterns
# install dependencies
yarn
# install dependencies for the library and examples
yarn bootstrap
# setup husky
yarn prepare:husky
# bundling
yarn prepare
# release to npm
yarn release
# run expo example app
yarn run:example
# run storybook
yarn run:storybook