@promptliano/ui
v0.9.4
Published
React component library for Promptliano with shadcn/ui components
Maintainers
Readme
@promptliano/ui
Shared UI component library for Promptliano applications, built on top of shadcn/ui.
Installation
# Using bun
bun add @promptliano/ui
# Using npm
npm install @promptliano/ui
# Using yarn
yarn add @promptliano/uiUsage
Basic Component Usage
import { Button, Badge, Card, CardContent, CardHeader, CardTitle } from '@promptliano/ui'
function MyComponent() {
return (
<Card>
<CardHeader>
<CardTitle>Example Component</CardTitle>
</CardHeader>
<CardContent>
<div className='flex gap-2'>
<Button>Default Button</Button>
<Button variant='gradient'>Gradient Button</Button>
<Badge>New Feature</Badge>
</div>
</CardContent>
</Card>
)
}Logo Component
import { Logo } from '@promptliano/ui'
// Compact variant (default for client)
<Logo size="md" />
// Expanded variant (for website)
<Logo size="lg" variant="expanded" showGlow />
// Custom logo source
<Logo src="/custom-logo.png" alt="Custom Logo" />Utility Functions
import { cn, formatDate } from '@promptliano/ui'
// Merge class names
const className = cn('base-class', condition && 'conditional-class', 'final-class')
// Format dates consistently
const formatted = formatDate(new Date()) // "Jan 15, 2024, 14:30:45"Styling
Importing Global Styles
Add this to your app's main CSS file:
@import '@promptliano/ui/dist/styles/globals.css';Tailwind Configuration
Extend your tailwind.config.js with the UI package configuration:
const uiConfig = require('@promptliano/ui/tailwind.config.js')
module.exports = {
...uiConfig,
content: [...uiConfig.content, './src/**/*.{js,ts,jsx,tsx}', './node_modules/@promptliano/ui/dist/**/*.js']
// Your custom configuration
}Available Components
Core Components
Alert,AlertTitle,AlertDescription- Display important messagesBadge- Small status indicators with variantsButton- Interactive buttons with multiple variants including gradientCard,CardHeader,CardFooter,CardTitle,CardDescription,CardContent- Container componentsDialog- Modal dialogs with all sub-componentsDropdownMenu- Dropdown menus with all sub-componentsInput- Form input fieldsLabel- Form labelsSeparator- Visual dividersTabs,TabsList,TabsTrigger,TabsContent- Tab navigationTextarea- Multi-line text inputsTooltip,TooltipProvider,TooltipTrigger,TooltipContent- Hover tooltips
Brand Components
Logo- Promptliano logo with size and variant options
Component Variants
Button Variants
default- Primary action buttonsecondary- Secondary action buttondestructive- Dangerous actionsoutline- Bordered buttonghost- Minimal buttonlink- Text link stylegradient- Special gradient button
Badge Variants
default- Standard badgesecondary- Secondary badgedestructive- Error/danger badgeoutline- Bordered badgecount- Numeric count badgewarning- Warning badgehigh- High priority badge
Development
Building the Package
# Build for production
bun run build
# Build in watch mode
bun run dev
# Type check
bun run typecheckPeer Dependencies
This package requires the following peer dependencies:
react>= 18.0.0react-dom>= 18.0.0class-variance-authority>= 0.7.0clsx>= 2.1.0tailwind-merge>= 2.2.0- Various
@radix-uicomponents
Migration Guide
From Local Components
Remove local UI components from
src/components/uiUpdate imports:
// Before import { Button } from '@/components/ui/button' // After import { Button } from '@promptliano/ui'Remove local
lib/utils.tsand use the package versionUpdate your Tailwind config to extend the UI package config
Contributing
When adding new components:
- Follow the existing component structure
- Export from appropriate barrel files
- Include TypeScript types
- Follow shadcn/ui patterns
- Test in both client and website contexts
Publishing
The package is automatically published to npm when a tag is created:
# Update version in package.json first
# Then create and push a tag
git tag ui-v0.1.0
git push origin ui-v0.1.0The GitHub Actions workflow will automatically:
- Run type checks
- Build the package
- Generate TypeScript declarations
- Publish to npm with proper versioning
License
Internal Promptliano package - see root LICENSE file
