Components for
Financial Applications
Pass an RxJS stream to any prop. No framework, no Shadow DOM, no wrappers — your observable in, reactive DOM out.
Building reactive UIs in vanilla TypeScript
used to mean accepting trade-offs.
Every component library forces a choice: bring a framework, fight Shadow DOM, or write adapters between your observables and the UI.
Reinventing state adapters
Your observable holds the data. The component wants a string. So you write glue. Again.
Fighting Shadow DOM boundaries
Your design tokens stop at the component edge. You reach for ::part() and pray it works in Safari.
Shipping a framework to use 3 components
You needed a button, a dropdown, and a table. You got React, a virtual DOM, and a reconciler.
Ora Components was built to eliminate all three.
Not a framework wrapper.
Not a Web Component.
Builder-pattern APIs, RxJS-native props, full Tailwind styling — and the DOM is yours. No encapsulation, no workarounds.
Your CSS works. Every time.
Direct DOM elements. No ::part(), no shadow-root, no encapsulation barriers. Your design tokens, your Tailwind classes, your overrides — they just reach in and work.
RxJS Reactive
Every component speaks RxJS natively. Declarative state streams, real-time updates, zero unnecessary re-renders.
Tailwind CSS
Utility-first styling that scales with your project. Full Tailwind v3 support with custom Material 3 tokens baked in.
Material 3
Adheres to Google's latest design language. Dynamic color, expressive motion, and accessible typography built in.
Type Safe
Fully typed with strict TypeScript. Builder pattern APIs that are impossible to misuse. IDE autocomplete everywhere.
Zero Bundle Bloat
Tree-shakeable exports. Import only what you use. Each component is self-contained with minimal runtime overhead.
See it in action
Four mini scenarios. Every input is a stream, every output is derived — no setup required.
Try it in 60 seconds
One install. Pass your first observable to a component. That's it.
$ npm install @tdq/ora-components rxjs
# or with yarn
$ yarn add @tdq/ora-components rxjs
# or with pnpm
$ pnpm add @tdq/ora-components rxjsnpm install @tdq/ora-components rxjs
— and you're done.
No config. No boilerplate. Pass your first observable to a component and watch it react.