@ninna-ui/feedback
v0.6.0
Published
8 feedback React components for Ninna UI - Alert, Toast, Progress, CircularProgress, Loading, Skeleton, Status, EmptyState. Accessible, themeable, Tailwind CSS v4.
Maintainers
Readme
@ninna-ui/feedback
9 React user feedback components - alerts, toasts with promise support, progress bars, loading spinners, skeletons, and empty states. Accessible, themeable, and fully integrated with the Ninna UI design system.
📖 Full Documentation → | 📦 npm → | 🐙 GitHub →
The complete feedback toolkit for Ninna UI - everything you need to communicate state, progress, and notifications to users. Includes an imperative toast API with promise support, dismissible alerts, animated progress indicators, and content placeholders. All components are accessible, themeable across 5 presets, and support data-slot CSS targeting for precise style overrides.
Installation
pnpm add @ninna-ui/feedback @ninna-ui/coreCSS Setup
@import "tailwindcss";
@import "@ninna-ui/core/theme/presets/default.css";
@variant dark (&:is(.dark *));HTML Setup
Add the data-theme attribute to your <html> element:
<html data-theme="default">Components
| Component | Description | Variants | Colors |
|-----------|-------------|----------|--------|
| Alert | Contextual feedback messages with optional dismiss | solid, soft, outline | 8 |
| Toast / Toaster | Ephemeral notifications with promise support | solid, soft, outline | 8 |
| Loading | Spinner loading indicator | - | 8 |
| Progress | Linear progress bar with optional label | solid, soft | 8 |
| CircularProgress | Circular/radial progress indicator | - | 8 |
| Status | Dot indicator for online/offline/busy states | - | 8 |
| Skeleton | Content placeholder during loading | - | - |
| EmptyState | Placeholder for empty data states | - | - |
Skeletonalso exportsSkeletonCircleandSkeletonTextfor common placeholder shapes.
Quick Start
import { Alert, Toaster, toast, Loading, Progress } from "@ninna-ui/feedback";
function App() {
return (
<>
<Alert color="success" variant="soft">
Changes saved successfully!
</Alert>
<Progress value={65} color="primary" />
<Loading size="lg" color="primary" />
<button onClick={() => toast.create({ title: "Saved!", color: "success" })}>
Save
</button>
<Toaster />
</>
);
}All Exports
import {
Alert, type AlertProps,
Toast, Toaster, ToastProvider, toast, useToast,
type ToastProps, type ToasterProps, type ToastData,
Loading, type LoadingProps,
Progress, type ProgressProps,
CircularProgress, type CircularProgressProps,
Status, type StatusProps,
Skeleton, SkeletonCircle, SkeletonText,
type SkeletonProps, type SkeletonCircleProps, type SkeletonTextProps,
EmptyState, type EmptyStateProps,
} from "@ninna-ui/feedback";Related Packages
@ninna-ui/core- Design tokens and theme presets (required)@ninna-ui/primitives- Base components (Button, Badge, Text)@ninna-ui/overlays- Overlay components (Modal, Drawer, Tooltip)- All packages - Complete package list
