UI Components

Pre-built TypeScript components for your Noundry.ts projects. No React, just clean, modern TypeScript.

Getting Started

Add components to your project with a single command

1

Install CLI

bunx @noundryfx/ndts-cli init
2

Add Components

ndts add input datatable
3

Use in Code

import { Input } from './ui'

Interactive Component Selection

Run ndts add without arguments to see an interactive list of all available components.

# Interactive mode with checkboxes
ndts add

# Add specific components
ndts add input multiselect datatable

# Add all components
ndts add --all

# Filter by category
ndts add --all --category noundry

Live Component Demos

See all components in action with three different styling approaches:

Styling Guide: shadcn/ui vs. Noundry →

Learn how to choose between component classes and utility classes

✨ NEW FEATURE

🔗 URL State Binding

Make your components shareable, bookmarkable, and browser-history-aware with one simple prop

What You Get

  • Shareable URLs Copy URL to share exact component state
  • Bookmarkable States Save specific configurations for later
  • Browser Back/Forward Works automatically with browser navigation
  • Deep Linking Direct links to specific application states
  • No Page Reloads Uses History API for seamless updates

How It Works

Just add bindToUrl: true to any component:

const searchInput = Input.create({
  name: 'query',
  bindToUrl: true  // ← Enable URL sync
});

// User types "laptop"
// URL becomes: ?query=laptop

Example URLs:

?search=laptop
?date=2025-01-15
?tags=["react","typescript"]
?users-page=2&users-search=john
8/10
Components Supported
Input
DatePicker, etc.
DataTable
Full state in URL
Modals
With data passing

Available Components

12 production-ready components for your TypeScript projects

Form Components

Input

ndts add input
Form

Flexible input field with optional icon support (left or right positioning)

  • ✓ Multiple input types
  • ✓ Optional icons with positioning
  • ✓ Built-in heroicons support
  • ✓ Event callbacks
const input = Input.create({
  name: 'email',
  type: 'email',
  icon: 'envelope',
  iconPosition: 'left'
});

Select

ndts add select
Form

Simple single-select dropdown with static or API data

  • ✓ Single selection
  • ✓ Static or API data
  • ✓ Placeholder support
  • ✓ Event callbacks
const select = Select.create({
  name: 'status',
  options: [
    { value: 'active', label: 'Active' },
    { value: 'inactive', label: 'Inactive' }
  ]
});

SearchSelect

ndts add searchselect
Premium

Single-select dropdown with built-in search and API support

  • ✓ Real-time search filtering
  • ✓ API data loading
  • ✓ Keyboard navigation
  • ✓ Loading states
const searchSelect = SearchSelect.create({
  name: 'country',
  apiEndpoint: '/api/countries',
  placeholder: 'Search countries...',
  searchDelay: 300
});

MultiSelect

ndts add multiselect
Form

Multi-select dropdown with API support and tag display

  • ✓ API data loading
  • ✓ Search and filter
  • ✓ Tag display
  • ✓ Keyboard navigation
const select = MultiSelect.create({
  name: 'users[]',
  apiEndpoint: '/api/users',
  placeholder: 'Select users...'
});

DatePicker

ndts add datepicker
Form

Date picker with calendar interface

  • ✓ Calendar interface
  • ✓ Multiple date formats
  • ✓ Min/max date constraints

DateRangePicker

ndts add daterangepicker
Form

Date range selection for start and end dates

  • ✓ Range selection
  • ✓ Multiple formats
  • ✓ Date constraints

Data Display

DataTable

ndts add datatable
Premium

Enterprise-grade data table with premium pagination, sorting, and search

  • ✓ API data binding
  • ✓ Premium pagination with page numbers
  • ✓ First/Previous/Next/Last buttons
  • ✓ Per-page selector (5/10/25/50)
  • ✓ Column sorting (asc/desc)
  • ✓ Search and filtering
  • ✓ Loading states & spinners
  • ✓ Custom cell rendering
const table = DataTable.create({
  columns: [
    { key: 'id', label: 'ID', sortable: true },
    { key: 'name', label: 'Name', sortable: true },
    { key: 'email', label: 'Email' }
  ],
  apiEndpoint: '/api/users',
  pagination: true,
  pageSize: 10
});
View in Kitchen Sink

Layout & Navigation

Modal

ndts add modal
Layout

Full-screen modal overlay

  • ✓ Full-screen overlay
  • ✓ ESC key support
  • ✓ Click outside to close

SlideOver

ndts add slideover
Layout

Slide-over panel (left or right)

  • ✓ Left/right positioning
  • ✓ Configurable width
  • ✓ Smooth animations

NavigationMenu

ndts add navigationmenu
Layout

Navigation menu with nested items

  • ✓ Hierarchical structure
  • ✓ Unlimited nesting
  • ✓ Keyboard navigation

Pacer

ndts add pacer
Feedback

Top-of-page loading bar for fetch/AJAX calls (like YouTube or NProgress)

  • ✓ Fixed canvas at top of page
  • ✓ Auto-progress animation
  • ✓ Customizable colors & styling
  • ✓ Perfect for API calls

Why Noundry.ts Components?

Built for modern TypeScript development

🚀

No React Required

Pure TypeScript components with zero framework overhead. Lightweight and fast.

🎯

Type-Safe

Full TypeScript support with complete type definitions and IntelliSense.

💅

Tailwind Styled

Pre-styled with Tailwind CSS. Customize with utility classes or override styles.

📦

Composable

Mix and match components. Each component is self-contained and independent.

🔌

API Ready

Built-in API support for DataTable, MultiSelect, and other data-driven components.

Accessible

ARIA attributes, keyboard navigation, and screen reader support built-in.

Ready to build with Noundry.ts?

Start using components in your project today