Interchain UI for React
Interchain UI is a foundation library for UI elements used in cosmos-kit and other packages. It provides developers with pre-built components and a foundation for creating user interfaces across different frameworks, such as VueJS, React, Angular, Svelte, SolidJS, and Web Components, enabling developers to customize UI elements and themes. This gives us the ability to code a component once, and it will compile to all framework targets.
# If you use react
yarn add @interchain-ui/react
# If you use vue
yarn add @interchain-ui/vue
-
yarn && yarn bootstrap
to bootstrap the repo -
yarn dev
to watch the repo for changes and then recompile -
yarn compile
to compile from mitosis components to other packages, you can give it a flag-p
or--platforms
.ieyarn compile -p react vue
-
yarn c:react
oryarn c:vue
to compile specifically to react or vue -
yarn clean
to clean.node_modules
oryarn clean:assets
to clean build/compile output
We create components inside a single source of truth folder
<root>/src
with Mitosis lite JSX format, then through our compiler, it's going to compile our components and build it in sub packages' src
and dist
.
When we publish packages, we are actually publishing the sub packages generated from <root>/src
, which are packages/react
and packages/vue
, not the <root>/src
itself.
The compiler is a wrapper over @builder.io/mitosis
CLI with some extra source code handling logic and some nice CLI add-ons like arguments handling...etc.
There are some rules of thumbs and some tips for creating Mitosis components:
- File names must end with
*.lite.tsx
- Style sheets must be in
*.css.ts
files, this is because we use a styling solution calledvanilla-extract
to have a CSS-in-JS API across all frameworks. - For a component, you must use default export, not named export. This is a limitation of Mitosis
- There are more rules and limitations, please read more about Mitosis here
- To quickly test to see the compilation result from one Mitosis to any framework source code, please use mitosis sandbox. It's similar to TS playground but for Mitosis testing purpose.
Check Icon guide to know how to add more icons
⚛️ https://cosmology.zone/products/interchain-ui
Checkout these related projects:
- @cosmology/telescope Your Frontend Companion for Building with TypeScript with Cosmos SDK Modules.
- @cosmwasm/ts-codegen Convert your CosmWasm smart contracts into dev-friendly TypeScript classes.
- chain-registry Everything from token symbols, logos, and IBC denominations for all assets you want to support in your application.
- cosmos-kit Experience the convenience of connecting with a variety of web3 wallets through a single, streamlined interface.
- create-cosmos-app Set up a modern Cosmos app by running one command.
- interchain-ui The Interchain Design System, empowering developers with a flexible, easy-to-use UI kit.
- starship Unified Testing and Development for the Interchain.
Checkout mitosis
from BuilderIO to compile lite JSX.
🛠 Built by Cosmology — if you like our tools, please consider delegating to our validator ⚛️