JSPM

  • Created
  • Published
  • Downloads 132
  • Score
    100M100P100Q105240F
  • License MIT

Devalok Design System — tokens, components, and patterns for Next.js

Package Exports

  • @devalok/shilp-sutra
  • @devalok/shilp-sutra/ai
  • @devalok/shilp-sutra/ai/ai-command-provider
  • @devalok/shilp-sutra/ai/block-renderer
  • @devalok/shilp-sutra/ai/blocks
  • @devalok/shilp-sutra/ai/command-bar
  • @devalok/shilp-sutra/ai/conversation
  • @devalok/shilp-sutra/composed
  • @devalok/shilp-sutra/composed/activity-feed
  • @devalok/shilp-sutra/composed/avatar-group
  • @devalok/shilp-sutra/composed/bulk-action-bar
  • @devalok/shilp-sutra/composed/command-palette
  • @devalok/shilp-sutra/composed/confirm-dialog
  • @devalok/shilp-sutra/composed/content-card
  • @devalok/shilp-sutra/composed/date-picker
  • @devalok/shilp-sutra/composed/deadline-indicator
  • @devalok/shilp-sutra/composed/emoji-picker
  • @devalok/shilp-sutra/composed/empty-state
  • @devalok/shilp-sutra/composed/error-boundary
  • @devalok/shilp-sutra/composed/file-preview
  • @devalok/shilp-sutra/composed/filter-bar
  • @devalok/shilp-sutra/composed/form-section
  • @devalok/shilp-sutra/composed/global-loading
  • @devalok/shilp-sutra/composed/inline-edit
  • @devalok/shilp-sutra/composed/lib/string-utils
  • @devalok/shilp-sutra/composed/loading-skeleton
  • @devalok/shilp-sutra/composed/markdown-viewer
  • @devalok/shilp-sutra/composed/master-detail
  • @devalok/shilp-sutra/composed/member-picker
  • @devalok/shilp-sutra/composed/multi-select-popover
  • @devalok/shilp-sutra/composed/page-header
  • @devalok/shilp-sutra/composed/page-skeletons
  • @devalok/shilp-sutra/composed/priority-indicator
  • @devalok/shilp-sutra/composed/responsive-overlay
  • @devalok/shilp-sutra/composed/rich-text-editor
  • @devalok/shilp-sutra/composed/schedule-view
  • @devalok/shilp-sutra/composed/simple-tooltip
  • @devalok/shilp-sutra/composed/status-badge
  • @devalok/shilp-sutra/docs/_header.md
  • @devalok/shilp-sutra/docs/composed/activity-feed.md
  • @devalok/shilp-sutra/docs/composed/avatar-group.md
  • @devalok/shilp-sutra/docs/composed/bulk-action-bar.md
  • @devalok/shilp-sutra/docs/composed/command-palette.md
  • @devalok/shilp-sutra/docs/composed/confirm-dialog.md
  • @devalok/shilp-sutra/docs/composed/content-card.md
  • @devalok/shilp-sutra/docs/composed/date-picker.md
  • @devalok/shilp-sutra/docs/composed/deadline-indicator.md
  • @devalok/shilp-sutra/docs/composed/emoji-picker.md
  • @devalok/shilp-sutra/docs/composed/empty-state.md
  • @devalok/shilp-sutra/docs/composed/error-boundary.md
  • @devalok/shilp-sutra/docs/composed/file-preview.md
  • @devalok/shilp-sutra/docs/composed/filter-bar.md
  • @devalok/shilp-sutra/docs/composed/form-section.md
  • @devalok/shilp-sutra/docs/composed/global-loading.md
  • @devalok/shilp-sutra/docs/composed/inline-edit.md
  • @devalok/shilp-sutra/docs/composed/loading-skeleton.md
  • @devalok/shilp-sutra/docs/composed/markdown-viewer.md
  • @devalok/shilp-sutra/docs/composed/master-detail.md
  • @devalok/shilp-sutra/docs/composed/member-picker.md
  • @devalok/shilp-sutra/docs/composed/multi-select-popover.md
  • @devalok/shilp-sutra/docs/composed/page-header.md
  • @devalok/shilp-sutra/docs/composed/page-skeletons.md
  • @devalok/shilp-sutra/docs/composed/priority-indicator.md
  • @devalok/shilp-sutra/docs/composed/responsive-overlay.md
  • @devalok/shilp-sutra/docs/composed/rich-text-editor.md
  • @devalok/shilp-sutra/docs/composed/schedule-view.md
  • @devalok/shilp-sutra/docs/composed/simple-tooltip.md
  • @devalok/shilp-sutra/docs/composed/status-badge.md
  • @devalok/shilp-sutra/docs/shell/app-command-palette.md
  • @devalok/shilp-sutra/docs/shell/bottom-navbar.md
  • @devalok/shilp-sutra/docs/shell/command-registry.md
  • @devalok/shilp-sutra/docs/shell/link-context.md
  • @devalok/shilp-sutra/docs/shell/notification-center.md
  • @devalok/shilp-sutra/docs/shell/notification-preferences.md
  • @devalok/shilp-sutra/docs/shell/sidebar.md
  • @devalok/shilp-sutra/docs/shell/top-bar.md
  • @devalok/shilp-sutra/docs/ui/accordion.md
  • @devalok/shilp-sutra/docs/ui/alert-dialog.md
  • @devalok/shilp-sutra/docs/ui/alert.md
  • @devalok/shilp-sutra/docs/ui/aspect-ratio.md
  • @devalok/shilp-sutra/docs/ui/autocomplete.md
  • @devalok/shilp-sutra/docs/ui/avatar.md
  • @devalok/shilp-sutra/docs/ui/badge.md
  • @devalok/shilp-sutra/docs/ui/banner.md
  • @devalok/shilp-sutra/docs/ui/breadcrumb.md
  • @devalok/shilp-sutra/docs/ui/button-group.md
  • @devalok/shilp-sutra/docs/ui/button.md
  • @devalok/shilp-sutra/docs/ui/card.md
  • @devalok/shilp-sutra/docs/ui/charts.md
  • @devalok/shilp-sutra/docs/ui/checkbox.md
  • @devalok/shilp-sutra/docs/ui/chip.md
  • @devalok/shilp-sutra/docs/ui/code.md
  • @devalok/shilp-sutra/docs/ui/collapsible.md
  • @devalok/shilp-sutra/docs/ui/color-input.md
  • @devalok/shilp-sutra/docs/ui/color-swatch.md
  • @devalok/shilp-sutra/docs/ui/combobox.md
  • @devalok/shilp-sutra/docs/ui/container.md
  • @devalok/shilp-sutra/docs/ui/context-menu.md
  • @devalok/shilp-sutra/docs/ui/data-table-toolbar.md
  • @devalok/shilp-sutra/docs/ui/data-table.md
  • @devalok/shilp-sutra/docs/ui/dialog.md
  • @devalok/shilp-sutra/docs/ui/dropdown-menu.md
  • @devalok/shilp-sutra/docs/ui/file-upload.md
  • @devalok/shilp-sutra/docs/ui/form.md
  • @devalok/shilp-sutra/docs/ui/hover-card.md
  • @devalok/shilp-sutra/docs/ui/icon-button.md
  • @devalok/shilp-sutra/docs/ui/input-otp.md
  • @devalok/shilp-sutra/docs/ui/input.md
  • @devalok/shilp-sutra/docs/ui/label.md
  • @devalok/shilp-sutra/docs/ui/link.md
  • @devalok/shilp-sutra/docs/ui/menubar.md
  • @devalok/shilp-sutra/docs/ui/navigation-menu.md
  • @devalok/shilp-sutra/docs/ui/number-input.md
  • @devalok/shilp-sutra/docs/ui/pagination.md
  • @devalok/shilp-sutra/docs/ui/popover.md
  • @devalok/shilp-sutra/docs/ui/progress-ring.md
  • @devalok/shilp-sutra/docs/ui/progress.md
  • @devalok/shilp-sutra/docs/ui/radio.md
  • @devalok/shilp-sutra/docs/ui/search-input.md
  • @devalok/shilp-sutra/docs/ui/segmented-control.md
  • @devalok/shilp-sutra/docs/ui/select.md
  • @devalok/shilp-sutra/docs/ui/separator.md
  • @devalok/shilp-sutra/docs/ui/sheet.md
  • @devalok/shilp-sutra/docs/ui/sidebar.md
  • @devalok/shilp-sutra/docs/ui/skeleton.md
  • @devalok/shilp-sutra/docs/ui/slider.md
  • @devalok/shilp-sutra/docs/ui/spinner.md
  • @devalok/shilp-sutra/docs/ui/stack.md
  • @devalok/shilp-sutra/docs/ui/stat-card.md
  • @devalok/shilp-sutra/docs/ui/status-dot.md
  • @devalok/shilp-sutra/docs/ui/stepper.md
  • @devalok/shilp-sutra/docs/ui/switch.md
  • @devalok/shilp-sutra/docs/ui/table.md
  • @devalok/shilp-sutra/docs/ui/tabs.md
  • @devalok/shilp-sutra/docs/ui/text.md
  • @devalok/shilp-sutra/docs/ui/textarea.md
  • @devalok/shilp-sutra/docs/ui/toast.md
  • @devalok/shilp-sutra/docs/ui/toaster.md
  • @devalok/shilp-sutra/docs/ui/toggle-group.md
  • @devalok/shilp-sutra/docs/ui/toggle.md
  • @devalok/shilp-sutra/docs/ui/tooltip.md
  • @devalok/shilp-sutra/docs/ui/tree-view.md
  • @devalok/shilp-sutra/docs/ui/visually-hidden.md
  • @devalok/shilp-sutra/fonts/Inter-Italic-Variable.woff2
  • @devalok/shilp-sutra/fonts/Inter-Variable.woff2
  • @devalok/shilp-sutra/fonts/Ranade-Variable.woff2
  • @devalok/shilp-sutra/fonts/Ranade-VariableItalic.woff2
  • @devalok/shilp-sutra/hooks
  • @devalok/shilp-sutra/hooks/use-color-mode
  • @devalok/shilp-sutra/hooks/use-mobile
  • @devalok/shilp-sutra/hooks/use-toast
  • @devalok/shilp-sutra/motion
  • @devalok/shilp-sutra/motion/primitives
  • @devalok/shilp-sutra/shell
  • @devalok/shilp-sutra/shell/app-command-palette
  • @devalok/shilp-sutra/shell/bottom-navbar
  • @devalok/shilp-sutra/shell/command-registry
  • @devalok/shilp-sutra/shell/link-context
  • @devalok/shilp-sutra/shell/notification-center
  • @devalok/shilp-sutra/shell/notification-preferences
  • @devalok/shilp-sutra/shell/sidebar
  • @devalok/shilp-sutra/shell/top-bar
  • @devalok/shilp-sutra/tailwind
  • @devalok/shilp-sutra/tailwind/preset
  • @devalok/shilp-sutra/tokens
  • @devalok/shilp-sutra/ui
  • @devalok/shilp-sutra/ui/accordion
  • @devalok/shilp-sutra/ui/alert
  • @devalok/shilp-sutra/ui/alert-dialog
  • @devalok/shilp-sutra/ui/aspect-ratio
  • @devalok/shilp-sutra/ui/autocomplete
  • @devalok/shilp-sutra/ui/avatar
  • @devalok/shilp-sutra/ui/badge
  • @devalok/shilp-sutra/ui/banner
  • @devalok/shilp-sutra/ui/breadcrumb
  • @devalok/shilp-sutra/ui/button
  • @devalok/shilp-sutra/ui/button-group
  • @devalok/shilp-sutra/ui/card
  • @devalok/shilp-sutra/ui/charts
  • @devalok/shilp-sutra/ui/checkbox
  • @devalok/shilp-sutra/ui/chip
  • @devalok/shilp-sutra/ui/code
  • @devalok/shilp-sutra/ui/collapsible
  • @devalok/shilp-sutra/ui/color-input
  • @devalok/shilp-sutra/ui/color-swatch
  • @devalok/shilp-sutra/ui/combobox
  • @devalok/shilp-sutra/ui/container
  • @devalok/shilp-sutra/ui/context-menu
  • @devalok/shilp-sutra/ui/data-table
  • @devalok/shilp-sutra/ui/data-table-toolbar
  • @devalok/shilp-sutra/ui/dialog
  • @devalok/shilp-sutra/ui/dropdown-menu
  • @devalok/shilp-sutra/ui/file-upload
  • @devalok/shilp-sutra/ui/form
  • @devalok/shilp-sutra/ui/hover-card
  • @devalok/shilp-sutra/ui/icon-button
  • @devalok/shilp-sutra/ui/input
  • @devalok/shilp-sutra/ui/input-otp
  • @devalok/shilp-sutra/ui/label
  • @devalok/shilp-sutra/ui/lib/date-utils
  • @devalok/shilp-sutra/ui/lib/motion
  • @devalok/shilp-sutra/ui/lib/utils
  • @devalok/shilp-sutra/ui/link
  • @devalok/shilp-sutra/ui/menubar
  • @devalok/shilp-sutra/ui/navigation-menu
  • @devalok/shilp-sutra/ui/number-input
  • @devalok/shilp-sutra/ui/pagination
  • @devalok/shilp-sutra/ui/popover
  • @devalok/shilp-sutra/ui/progress
  • @devalok/shilp-sutra/ui/progress-ring
  • @devalok/shilp-sutra/ui/radio
  • @devalok/shilp-sutra/ui/search-input
  • @devalok/shilp-sutra/ui/segmented-control
  • @devalok/shilp-sutra/ui/select
  • @devalok/shilp-sutra/ui/separator
  • @devalok/shilp-sutra/ui/sheet
  • @devalok/shilp-sutra/ui/sidebar
  • @devalok/shilp-sutra/ui/skeleton
  • @devalok/shilp-sutra/ui/slider
  • @devalok/shilp-sutra/ui/spinner
  • @devalok/shilp-sutra/ui/stack
  • @devalok/shilp-sutra/ui/stat-card
  • @devalok/shilp-sutra/ui/status-dot
  • @devalok/shilp-sutra/ui/stepper
  • @devalok/shilp-sutra/ui/switch
  • @devalok/shilp-sutra/ui/table
  • @devalok/shilp-sutra/ui/tabs
  • @devalok/shilp-sutra/ui/text
  • @devalok/shilp-sutra/ui/textarea
  • @devalok/shilp-sutra/ui/toast
  • @devalok/shilp-sutra/ui/toast-types
  • @devalok/shilp-sutra/ui/toaster
  • @devalok/shilp-sutra/ui/toggle
  • @devalok/shilp-sutra/ui/toggle-group
  • @devalok/shilp-sutra/ui/tooltip
  • @devalok/shilp-sutra/ui/tree-view
  • @devalok/shilp-sutra/ui/visually-hidden
  • @devalok/shilp-sutra/utils

Readme

@devalok/shilp-sutra

Devalok Design System -- tokens, components, and patterns for React & Next.js.

npm Storybook License: MIT


Quick Setup

1. Install

pnpm add @devalok/shilp-sutra

2. Add Tailwind Preset

// tailwind.config.ts
import shilpSutra from '@devalok/shilp-sutra/tailwind'

export default {
  presets: [shilpSutra],
  content: [
    './app/**/*.{ts,tsx}',
    './node_modules/@devalok/shilp-sutra/dist/**/*.js',
  ],
}

3. Import Tokens

// app/layout.tsx (Next.js) or main entry point
import '@devalok/shilp-sutra/tokens'
import './globals.css'

Done. Start using components.


Import Patterns

Best for tree-shaking, Server Components, and fast builds:

import { Button } from '@devalok/shilp-sutra/ui/button'
import { Dialog } from '@devalok/shilp-sutra/ui/dialog'
import { DatePicker } from '@devalok/shilp-sutra/composed/date-picker'
import { TopBar } from '@devalok/shilp-sutra/shell/top-bar'

Barrel import

Convenient for client components that use many primitives:

import { Button, Dialog, Input, Badge } from '@devalok/shilp-sutra/ui'
import { PageHeader, DatePicker } from '@devalok/shilp-sutra/composed'
import { AppSidebar, TopBar } from '@devalok/shilp-sutra/shell'

Root import

Shorthand for UI components only:

import { Button, Input } from '@devalok/shilp-sutra'

Mental Model

The design system is organized into three tiers:

Layer Import What it contains
ui @devalok/shilp-sutra/ui 60+ atomic primitives -- buttons, inputs, dialogs, cards, tables, badges, charts, navigation menus
composed @devalok/shilp-sutra/composed 14 multi-component patterns -- date picker, rich text editor, command palette, page header, skeletons
shell @devalok/shilp-sutra/shell 7 app-level layout components -- sidebar, top bar, bottom navbar, notification center, command palette

Additional exports:

Import Contents
@devalok/shilp-sutra/tokens CSS custom properties (primitives, semantic, typography)
@devalok/shilp-sutra/tailwind Tailwind CSS preset with all design tokens
@devalok/shilp-sutra/hooks useToast, useColorMode, useIsMobile
@devalok/shilp-sutra/fonts/* Inter and Ranade variable fonts (WOFF2)

Peer Dependencies

Required

Package Version
react ^18 || ^19
react-dom ^18 || ^19

Optional

Install only what you use:

Feature Packages
Charts (./ui/charts) d3-array, d3-axis, d3-format, d3-interpolate, d3-scale, d3-selection, d3-shape, d3-time-format, d3-transition
Rich Text Editor (./composed/rich-text-editor) @tiptap/react, @tiptap/starter-kit, @tiptap/extension-placeholder
DataTable (./ui/data-table) @tanstack/react-table, @tanstack/react-virtual
Icons (various components) @tabler/icons-react
Date components (./composed/date-picker) date-fns
OTP Input (./ui/input-otp) input-otp
Markdown rendering react-markdown

Example -- install only charts deps:

pnpm add d3-array d3-axis d3-format d3-interpolate d3-scale d3-selection d3-shape d3-time-format d3-transition

Server-Safe Components

These components work in React Server Components when imported via their per-component path. They do not include "use client" directives:

ui

Component Import
Text @devalok/shilp-sutra/ui/text
Skeleton @devalok/shilp-sutra/ui/skeleton
Spinner @devalok/shilp-sutra/ui/spinner
Stack @devalok/shilp-sutra/ui/stack
Container @devalok/shilp-sutra/ui/container
Table @devalok/shilp-sutra/ui/table
Code @devalok/shilp-sutra/ui/code
VisuallyHidden @devalok/shilp-sutra/ui/visually-hidden

composed

Component Import
ContentCard @devalok/shilp-sutra/composed/content-card
EmptyState @devalok/shilp-sutra/composed/empty-state
PageHeader @devalok/shilp-sutra/composed/page-header
LoadingSkeleton @devalok/shilp-sutra/composed/loading-skeleton
PageSkeletons @devalok/shilp-sutra/composed/page-skeletons
PriorityIndicator @devalok/shilp-sutra/composed/priority-indicator
StatusBadge @devalok/shilp-sutra/composed/status-badge

All other components require client-side React and include "use client".


Dark Mode

The design system uses CSS custom properties with a .dark class toggle. All semantic tokens have dark mode overrides built in.

Setup

Add the .dark class to your <html> or a parent element:

<html class="dark">

Next.js with next-themes

// app/layout.tsx
import { ThemeProvider } from 'next-themes'

export default function RootLayout({ children }) {
  return (
    <html suppressHydrationWarning>
      <body>
        <ThemeProvider attribute="class" defaultTheme="system">
          {children}
        </ThemeProvider>
      </body>
    </html>
  )
}

Programmatic toggle

import { useColorMode } from '@devalok/shilp-sutra/hooks'

function ThemeToggle() {
  const { mode, toggle } = useColorMode()
  return <button onClick={toggle}>{mode === 'dark' ? 'Light' : 'Dark'}</button>
}

TypeScript

Full TypeScript support works out of the box. No special tsconfig.json settings required.

All component props are exported as named types:

import { type ButtonProps } from '@devalok/shilp-sutra/ui/button'
import { type DatePickerProps } from '@devalok/shilp-sutra/composed/date-picker'

Token Architecture

Three-tier CSS custom property system:

  1. Primitives (primitives.css) -- Raw palette values (50-950 scales). Never used directly in components.
  2. Semantic (semantic.css) -- Intent-based tokens (--color-interactive, --color-text-primary). Includes dark mode via .dark class.
  3. Typography (typography.css) -- Font-face declarations, type scale (T1-T7, B1-B8, L1-L6, P1-P7).

License

MIT -- Copyright 2026 Devalok Design & Strategy Studios