Package Exports
- bookez_package
Readme
# 📚 BookEz Software – Project Documentation
A comprehensive documentation for your BookEz npm package, which includes React component libraries and utilities for book-keeping, accounting, banking, and finance applications.
---
## 📋 Index
1. [Overview](#overview)
2. [File & Configuration Summary](#file--configuration-summary)
1. [.gitattributes](#gitattributes)
2. [.gitignore](#gitignore)
3. [postcss.config.mjs](#postcssconfigmjs)
4. [package.json](#packagejson)
5. [package-lock.json](#package-lockjson)
6. [tsconfig.json](#tsconfigjson)
7. [tsup.config.ts](#tsupconfigts)
8. [readme.md](#readmemd)
3. [Core Architecture](#core-architecture)
- [Component Structure](#component-structure)
- [Build & TypeScript Pipeline](#build--typescript-pipeline)
- [UI Theming & Customization](#ui-theming--customization)
4. [Dependency Management](#dependency-management)
5. [Development Workflow](#development-workflow)
6. [Appendix: Diagrams](#appendix-diagrams)
---
## Overview
**BookEz Software** is a modular npm package providing reusable React UI components and utilities for building accounting, banking, and finance apps — with special support for transaction tables, Plaid bank integrations, state/context management, and highly customizable theming.
---
## File & Configuration Summary
Below you'll find a description and explanation for every key configuration and documentation file.
### `.gitattributes`
| Setting | Purpose |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `* text=auto` | **Automatically normalizes line endings** to LF (Unix style) during git checkout/commit, ensuring cross-platform consistency. |
**Example:**
```plaintext
# Auto detect text files and perform LF normalization
* text=auto
```
.gitignore
Pattern | What it Does |
---|---|
node_modules |
Ignores the local dependencies folder (auto-generated by npm/yarn/pnpm) |
dist |
Prevents build artifacts from being committed to source control |
Example:
node_modules
dist
postcss.config.mjs
This file configures PostCSS plugins used in your CSS processing pipeline.
Content:
export default { plugins: { "@tailwindcss/postcss": {} } };
- Enables: Tailwind CSS via PostCSS for advanced utility-first CSS support.
- Extensible: Add other PostCSS plugins as needed.
package.json
Your main npm manifest, describing the package, dependencies, scripts, and build definitions.
Key | Description |
---|---|
name |
Package name (bookez_software ) |
version |
Current version (1.0.1) |
keywords |
Useful for npm search & discoverability (book-keeping, finance, plaid, etc.) |
license |
MIT |
main/module/types |
Entrypoints for CJS, ESM, and TypeScript types |
scripts |
Build, Dev, and Lint commands |
peerDependencies |
Ensures compatibility with React 18/19 (and ReactDOM) |
dependencies |
UI, state, form, API, and chart utilities (see table below) |
devDependencies |
Build, type, and style tooling |
exports |
Dual ESM/CJS support |
Notable Dependencies
Dependency | Purpose |
---|---|
@radix-ui/* |
Accessible, headless React UI Primitives |
@tailwindcss/postcss , tailwindcss , postcss |
Utility-first CSS framework, processed via PostCSS |
@tanstack/react-table |
Advanced data grid and table rendering |
axios |
HTTP client for API requests |
chart.js , react-chartjs-2 , recharts |
Data visualization and charting libraries |
class-variance-authority , clsx |
Conditional CSS class management |
cmdk |
Command palette UI |
date-fns , moment |
Date/time processing utilities |
framer-motion |
Animation and transition library |
lucide-react |
Icon library |
next-themes |
Theme switching for Next.js/React |
react-day-picker |
Calendar and date-picker components |
react-hook-form |
Form management and validation |
react-plaid-link |
Plaid API integration for banking |
react-select |
Select/Combobox UI component |
xlsx |
Excel/CSV import and export |
package-lock.json
- Purpose: Locks the entire dependency tree for deterministic installs.
- Ensures: Same working set for every developer/CI run.
- Auto-generated: Do not edit manually.
readme.md
Your primary documentation and onboarding guide. Key sections:
- Project Summary: Overview, feature list.
- Getting Started: Prerequisites, installation steps, version requirements.
- Usage:
- How to store tokens & settings in
localStorage
. - Provider/component usage in React tree.
- Theme customization instructions (with property list).
- Error/success callback handling.
- How to store tokens & settings in
- Scripts: Dev/build scripts for contributors.
- Project Structure: Directory layout and content purpose.
- License: MIT.
Core Architecture
Component Structure
Your library is composed of:
- Reusable UI Components: (Dropdowns, dialogs, skeleton loaders, checkboxes, etc.)
- Banking Data Table: Categorization, review, and management of bank transactions.
- Plaid Integration: Components and utilities for securely connecting bank accounts.
- Form Integration: Seamless integration with
react-hook-form
for validation. - Providers: React context providers for global banking/account state.
Component Directory Tree (from README):
src/
components/ # Reusable UI components
pages/Banking/ # Banking-related pages and logic
providers/ # React context providers
axios/ # API utilities
lib/ # Utility functions
Build & TypeScript Pipeline
Build Pipeline Flow
graph TD
A["src/index.ts"] --> B["tsup (tsup.config.ts)"]
B --> C["Transpile TypeScript to JS"]
C --> D["Bundle (CJS + ESM)"]
C --> E["Emit type declarations"]
D & E --> F["dist/"]
- Entry:
src/index.ts
- Bundler: tsup
- Outputs: CJS (
index.js
), ESM (index.mjs
), types (index.d.ts
), and sourcemaps.
Usage
UI Theming & Customization
The theme system is highly customizable via a BookEZTheme
object. Both light and dark themes are supported, with granular controls for UI element colors, radii, borders, font weights, etc.
Example Theme Object Structure:
const BookEZTheme = {
light: {
btn_filled_bg: "",
btn_filled_text_color: "",
btn_filled_hover_bg: "",
btn_filled_hover_color: "",
btn_ghost_border_color: "",
btn_ghost_hover_bg_color: "",
btn_outlined_border_color: "",
btn_outlined_font_color: "",
btn_outlined_bg_color: "",
btn_outlined_hover_bg_color: "",
btn_outlined_hover_font_color: "",
card_border_color: "",
card_bg_color: "",
card_bg_color_secondary: "",
card_bg_color_secondary_light: "",
card_bg_green: "",
card_bg_blue: "",
font_color_gray_1: "",
font_color_gray_2: "",
font_color_gray_3: "",
font_color_header: "",
font_color_green: "",
font_color_green_light: "",
font_color_blue: "",
font_color_blue_dark: "",
font_color_blue_light: "",
font_color_yellow: "",
font_color_yellow_light: "",
font_color_filter_tab: "",
font_applied_filter: "",
table_header_text_color: "",
table_text_color: "",
table_header_bg_color: "",
table_bg_stripe_color: "",
table_bg_odd_stripe_color: "",
table_border_color: "",
revenue_bg: "",
revenue_font_color: "",
revenue_bg_light: "",
expanse_bg: "",
expanse_font_color: "",
expanse_bg_light: "",
net_profit_bg: "",
net_profit_font_color: "",
net_profit_bg_light: "",
tab_bg_color_light: "",
tab_active_bg_color: "",
tab_active_font_color: "",
select_bg: "",
calender_hover_light: "",
calender_selected_bg_color: "",
calender_selected_color: "",
calender_border_color: "",
input_checked_color: "",
error_text: "",
error_transparent: "",
error_border: "",
accordion_bg: "",
accordion_bg_active: "",
accordion_hover: "",
accordion_border_color: "",
accordion_header_color: "",
accordion_header_text_color: "",
accordion_gross_profit_bg: "",
accordion_gross_profit_text_color: "",
accordion_net_profit_bg: "",
accordion_net_profit_text_color: "",
skeleton_bg: "",
transaction_header_bg: "",
transaction_card_bg: "",
month_picker_font_color: "",
month_picker_bg_hover: "",
month_picker_border_color: "",
},
dark: {
btn_filled_bg: "", // Dark blue for button background in dark mode
btn_filled_color: "", // Light color for button text in dark mode
// Add more properties as needed
},
globals: {
card_radius: "12px",
btn_border_radius: "8px",
font_body_small: "12px",
font_body_size: "14px",
font_body_size_large: "16px",
font_body_large: "20px",
font_heading: "28px",
font_body_bold: 600,
font_body_bold_light: 400,
font_body_bold_medium: 500,
table_border_radius: "12px",
tab_border_radius: "8px",
input_border_radius: "8px",
},
};
Store token, theme and currencyCode in localStorage
localStorage.setItem("BookezToken", "your-token-here");
localStorage.setItem("currencyCode", "your-currency-code");
Error and Success Handling
const handleError = (error) => {
console.log("Error: ", error.message);
};
const handleSuccess = (
apiType: "GET" | "POST" | "DOWNLOAD" | "OPTIONS",
apiName: string,
message: string
) => {
console.log("Success: ", message);
};
Import and use components in your React app in order to use it:
import React from "react";
import { BookezUIProvider, BookezThemeProvider } from "bookez_software";
import App from "./App";
const Root = () => {
const businessId = "your-business-id";
const token = "your-token";
return (
<BookezUIProvider
businessId={businessId}
BookezToken={token}
theme={"dark" | "light"}
plaidClientUserName={ClientName}
plaidClientUserId={ClientUserId}
onError={handleError}
onSuccess={handleSuccess}
>
<BookezThemeProvider theme={BookEZTheme}>
<App />
</BookezThemeProvider>
</BookezUIProvider>
);
};
TypeScript Project Settings
- Compile strictly with modern JS/DOM features.
- Only code in
src/
is compiled. - Outputs are placed in
dist/
.
Dependency Management
Peer Dependencies
- Ensures host app provides React & ReactDOM (v18 or v19).
- Prevents version conflicts in consumer projects.
Core Dependencies
- UI Primitives: @radix-ui
- State/Table: @tanstack/react-table, react-hook-form
- Styling: Tailwind CSS, PostCSS
- API/HTTP: axios
- Date/Time: date-fns, moment
- Charts: chart.js, react-chartjs-2, recharts
- Icons: lucide-react
- Utilities: class-variance-authority, clsx, xlsx, cmdk, framer-motion
Development Workflow
Command | Description |
---|---|
npm run dev |
Starts tsup in watch mode for rapid development |
npm run build |
Builds and bundles for production |
Recommended Prerequisites:
- Node.js
20.19.0
- npm
9+
- React
18+
Conclusion
BookEz Software provides a robust, modern, and highly customizable set of banking/accounting UI components for React. With strong TypeScript support, seamless theming, and a modern build pipeline, it's ready for integration into financial SaaS applications and dashboards.
License: MIT
For more details and usage examples, see the readme.md section above.