npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, πŸ‘‹, I’m Ryan HefnerΒ  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you πŸ™

Β© 2026 – Pkg Stats / Ryan Hefner

bookez_package

v1.0.65

Published

````markdown # πŸ“š BookEz Software – Project Documentation

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.
  • 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.


πŸš€ Happy Building!