@neynar/ui 0.2.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{llm-docs → .llm}/a.llm.md +2 -16
- package/{llm-docs → .llm}/badge.llm.md +16 -21
- package/{llm-docs → .llm}/blockquote.llm.md +1 -6
- package/.llm/button-group-separator.llm.md +53 -0
- package/.llm/button-group-text.llm.md +56 -0
- package/.llm/button-group.llm.md +81 -0
- package/{llm-docs → .llm}/button.llm.md +1 -1
- package/{llm-docs → .llm}/code.llm.md +1 -6
- package/.llm/empty-content.llm.md +103 -0
- package/.llm/empty-description.llm.md +70 -0
- package/.llm/empty-header.llm.md +64 -0
- package/.llm/empty-media.llm.md +81 -0
- package/.llm/empty-title.llm.md +54 -0
- package/.llm/empty.llm.md +158 -0
- package/.llm/field-content.llm.md +28 -0
- package/.llm/field-description.llm.md +28 -0
- package/.llm/field-error.llm.md +41 -0
- package/.llm/field-group.llm.md +84 -0
- package/.llm/field-label.llm.md +28 -0
- package/.llm/field-legend.llm.md +77 -0
- package/.llm/field-separator.llm.md +35 -0
- package/.llm/field-set.llm.md +80 -0
- package/.llm/field-title.llm.md +28 -0
- package/.llm/field.llm.md +35 -0
- package/{llm-docs → .llm}/h1.llm.md +2 -7
- package/{llm-docs → .llm}/h2.llm.md +2 -7
- package/{llm-docs → .llm}/h3.llm.md +2 -7
- package/{llm-docs → .llm}/h4.llm.md +2 -7
- package/{llm-docs → .llm}/h5.llm.md +2 -7
- package/{llm-docs → .llm}/h6.llm.md +1 -6
- package/.llm/input-group-addon.llm.md +91 -0
- package/.llm/input-group-button.llm.md +120 -0
- package/.llm/input-group-input.llm.md +145 -0
- package/.llm/input-group-text.llm.md +75 -0
- package/.llm/input-group-textarea.llm.md +157 -0
- package/.llm/input-group.llm.md +108 -0
- package/.llm/item-actions.llm.md +77 -0
- package/.llm/item-content.llm.md +73 -0
- package/.llm/item-description.llm.md +61 -0
- package/.llm/item-footer.llm.md +68 -0
- package/.llm/item-group.llm.md +73 -0
- package/.llm/item-header.llm.md +66 -0
- package/.llm/item-media.llm.md +75 -0
- package/.llm/item-separator.llm.md +80 -0
- package/.llm/item-title.llm.md +59 -0
- package/.llm/item.llm.md +115 -0
- package/.llm/kbd-group.llm.md +71 -0
- package/.llm/kbd.llm.md +71 -0
- package/{llm-docs → .llm}/lead.llm.md +1 -6
- package/{llm-docs → .llm}/p.llm.md +1 -6
- package/{llm-docs → .llm}/sdk-items-registry.json +390 -6
- package/{llm-docs → .llm}/small.llm.md +1 -6
- package/{llm-docs → .llm}/span.llm.md +2 -16
- package/.llm/spinner.llm.md +182 -0
- package/{llm-docs → .llm}/strong.llm.md +1 -6
- package/{llm-docs → .llm}/typography.llm.md +2 -16
- package/dist/components/ui/button-group.d.ts +448 -0
- package/dist/components/ui/button-group.d.ts.map +1 -0
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/empty-state.d.ts +1 -0
- package/dist/components/ui/empty-state.d.ts.map +1 -1
- package/dist/components/ui/empty.d.ts +630 -0
- package/dist/components/ui/empty.d.ts.map +1 -0
- package/dist/components/ui/field.d.ts +238 -0
- package/dist/components/ui/field.d.ts.map +1 -0
- package/dist/components/ui/input-group.d.ts +636 -0
- package/dist/components/ui/input-group.d.ts.map +1 -0
- package/dist/components/ui/item.d.ts +766 -0
- package/dist/components/ui/item.d.ts.map +1 -0
- package/dist/components/ui/kbd.d.ts +149 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.d.ts +5 -5
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/spinner.d.ts +194 -0
- package/dist/components/ui/spinner.d.ts.map +1 -0
- package/dist/components/ui/stack.d.ts.map +1 -1
- package/dist/components/ui/stories/accordion.stories.d.ts +0 -1
- package/dist/components/ui/stories/accordion.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/alert-dialog.stories.d.ts +0 -1
- package/dist/components/ui/stories/alert-dialog.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/alert.stories.d.ts +0 -1
- package/dist/components/ui/stories/alert.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/aspect-ratio.stories.d.ts +0 -1
- package/dist/components/ui/stories/aspect-ratio.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/avatar.stories.d.ts +0 -1
- package/dist/components/ui/stories/avatar.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/badge.stories.d.ts +0 -1
- package/dist/components/ui/stories/badge.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/breadcrumb.stories.d.ts +0 -1
- package/dist/components/ui/stories/breadcrumb.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/button-group.stories.d.ts +48 -0
- package/dist/components/ui/stories/button-group.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/button.stories.d.ts +0 -1
- package/dist/components/ui/stories/button.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/calendar.stories.d.ts +0 -1
- package/dist/components/ui/stories/calendar.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/card.stories.d.ts +0 -1
- package/dist/components/ui/stories/card.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/carousel.stories.d.ts +0 -1
- package/dist/components/ui/stories/carousel.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/chart.stories.d.ts +0 -1
- package/dist/components/ui/stories/chart.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/checkbox.stories.d.ts +0 -1
- package/dist/components/ui/stories/checkbox.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/cn.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/collapsible.stories.d.ts +0 -1
- package/dist/components/ui/stories/collapsible.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/colors.stories.d.ts +0 -1
- package/dist/components/ui/stories/colors.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/combobox.stories.d.ts +0 -1
- package/dist/components/ui/stories/combobox.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/command.stories.d.ts +0 -1
- package/dist/components/ui/stories/command.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/container.stories.d.ts +0 -1
- package/dist/components/ui/stories/container.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/context-menu.stories.d.ts +0 -1
- package/dist/components/ui/stories/context-menu.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/date-picker.stories.d.ts +0 -1
- package/dist/components/ui/stories/date-picker.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/dialog.stories.d.ts +0 -1
- package/dist/components/ui/stories/dialog.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/drawer.stories.d.ts +0 -1
- package/dist/components/ui/stories/drawer.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/dropdown-menu.stories.d.ts +0 -1
- package/dist/components/ui/stories/dropdown-menu.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/empty-state.stories.d.ts +0 -1
- package/dist/components/ui/stories/empty-state.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/empty.stories.d.ts +38 -0
- package/dist/components/ui/stories/empty.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/field.stories.d.ts +48 -0
- package/dist/components/ui/stories/field.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/hover-card.stories.d.ts +0 -1
- package/dist/components/ui/stories/hover-card.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/input-group.stories.d.ts +37 -0
- package/dist/components/ui/stories/input-group.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/input.stories.d.ts +0 -1
- package/dist/components/ui/stories/input.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/item.stories.d.ts +61 -0
- package/dist/components/ui/stories/item.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/kbd.stories.d.ts +37 -0
- package/dist/components/ui/stories/kbd.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/label.stories.d.ts +0 -1
- package/dist/components/ui/stories/label.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/menubar.stories.d.ts +0 -1
- package/dist/components/ui/stories/menubar.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/navigation-menu.stories.d.ts +0 -1
- package/dist/components/ui/stories/navigation-menu.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/pagination.stories.d.ts +0 -1
- package/dist/components/ui/stories/pagination.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/popover.stories.d.ts +0 -1
- package/dist/components/ui/stories/popover.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/progress.stories.d.ts +0 -1
- package/dist/components/ui/stories/progress.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/radio-group.stories.d.ts +0 -1
- package/dist/components/ui/stories/radio-group.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/resizable.stories.d.ts +0 -1
- package/dist/components/ui/stories/resizable.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -2
- package/dist/components/ui/stories/scroll-area.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/select.stories.d.ts +0 -1
- package/dist/components/ui/stories/select.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/separator.stories.d.ts +0 -1
- package/dist/components/ui/stories/separator.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/sheet.stories.d.ts +0 -1
- package/dist/components/ui/stories/sheet.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/sidebar.stories.d.ts +0 -1
- package/dist/components/ui/stories/sidebar.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/skeleton.stories.d.ts +0 -1
- package/dist/components/ui/stories/skeleton.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/slider.stories.d.ts +0 -1
- package/dist/components/ui/stories/slider.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/sonner.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/spinner.stories.d.ts +37 -0
- package/dist/components/ui/stories/spinner.stories.d.ts.map +1 -0
- package/dist/components/ui/stories/stack.stories.d.ts +0 -1
- package/dist/components/ui/stories/stack.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/switch.stories.d.ts +0 -1
- package/dist/components/ui/stories/switch.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/table.stories.d.ts +0 -1
- package/dist/components/ui/stories/table.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/tabs.stories.d.ts +0 -1
- package/dist/components/ui/stories/tabs.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/text-field.stories.d.ts +0 -1
- package/dist/components/ui/stories/text-field.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/textarea.stories.d.ts +0 -1
- package/dist/components/ui/stories/textarea.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/theme-toggle.stories.d.ts +0 -1
- package/dist/components/ui/stories/theme-toggle.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/theme.stories.d.ts +0 -1
- package/dist/components/ui/stories/theme.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/toggle-group.stories.d.ts +0 -1
- package/dist/components/ui/stories/toggle-group.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/toggle.stories.d.ts +0 -1
- package/dist/components/ui/stories/toggle.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/tooltip.stories.d.ts +0 -1
- package/dist/components/ui/stories/tooltip.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/typography.stories.d.ts +0 -1
- package/dist/components/ui/stories/typography.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/use-mobile.stories.d.ts.map +1 -1
- package/dist/components/ui/stories/use-theme.stories.d.ts.map +1 -1
- package/dist/components/ui/theme-toggle.d.ts +0 -3
- package/dist/components/ui/theme-toggle.d.ts.map +1 -1
- package/dist/components/ui/theme.d.ts.map +1 -1
- package/dist/components/ui/typography.d.ts +12 -11
- package/dist/components/ui/typography.d.ts.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4973 -2353
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/llm/components/display.md +125 -0
- package/docs/llm/components/feedback.md +0 -14
- package/docs/llm/components/forms.md +94 -0
- package/docs/llm/components/layout.md +169 -0
- package/llms.txt +18 -12
- package/package.json +7 -6
- package/src/components/ui/button-group.tsx +525 -0
- package/src/components/ui/button.tsx +9 -12
- package/src/components/ui/empty-state.tsx +1 -0
- package/src/components/ui/empty.tsx +793 -0
- package/src/components/ui/field.tsx +494 -0
- package/src/components/ui/input-group.tsx +801 -0
- package/src/components/ui/item.tsx +955 -0
- package/src/components/ui/kbd.tsx +175 -0
- package/src/components/ui/skeleton.tsx +1 -1
- package/src/components/ui/spinner.tsx +211 -0
- package/src/components/ui/stack.tsx +3 -1
- package/src/components/ui/stories/accordion.stories.tsx +0 -1
- package/src/components/ui/stories/alert-dialog.stories.tsx +0 -1
- package/src/components/ui/stories/alert.stories.tsx +0 -1
- package/src/components/ui/stories/aspect-ratio.stories.tsx +0 -1
- package/src/components/ui/stories/avatar.stories.tsx +0 -1
- package/src/components/ui/stories/badge.stories.tsx +0 -1
- package/src/components/ui/stories/breadcrumb.stories.tsx +0 -1
- package/src/components/ui/stories/button-group.stories.tsx +300 -0
- package/src/components/ui/stories/button.stories.tsx +0 -1
- package/src/components/ui/stories/calendar.stories.tsx +0 -1
- package/src/components/ui/stories/card.stories.tsx +0 -1
- package/src/components/ui/stories/carousel.stories.tsx +0 -1
- package/src/components/ui/stories/chart.stories.tsx +0 -1
- package/src/components/ui/stories/checkbox.stories.tsx +0 -1
- package/src/components/ui/stories/cn.stories.tsx +0 -1
- package/src/components/ui/stories/collapsible.stories.tsx +0 -1
- package/src/components/ui/stories/colors.stories.tsx +0 -1
- package/src/components/ui/stories/combobox.stories.tsx +0 -1
- package/src/components/ui/stories/command.stories.tsx +0 -1
- package/src/components/ui/stories/container.stories.tsx +0 -1
- package/src/components/ui/stories/context-menu.stories.tsx +0 -1
- package/src/components/ui/stories/date-picker.stories.tsx +0 -1
- package/src/components/ui/stories/dialog.stories.tsx +0 -1
- package/src/components/ui/stories/drawer.stories.tsx +0 -1
- package/src/components/ui/stories/dropdown-menu.stories.tsx +0 -1
- package/src/components/ui/stories/empty-state.stories.tsx +0 -1
- package/src/components/ui/stories/empty.stories.tsx +293 -0
- package/src/components/ui/stories/field.stories.tsx +470 -0
- package/src/components/ui/stories/hover-card.stories.tsx +0 -1
- package/src/components/ui/stories/input-group.stories.tsx +444 -0
- package/src/components/ui/stories/input.stories.tsx +0 -1
- package/src/components/ui/stories/item.stories.tsx +601 -0
- package/src/components/ui/stories/kbd.stories.tsx +462 -0
- package/src/components/ui/stories/label.stories.tsx +0 -1
- package/src/components/ui/stories/menubar.stories.tsx +0 -1
- package/src/components/ui/stories/navigation-menu.stories.tsx +0 -1
- package/src/components/ui/stories/pagination.stories.tsx +0 -1
- package/src/components/ui/stories/popover.stories.tsx +0 -1
- package/src/components/ui/stories/progress.stories.tsx +0 -1
- package/src/components/ui/stories/radio-group.stories.tsx +0 -1
- package/src/components/ui/stories/resizable.stories.tsx +0 -1
- package/src/components/ui/stories/scroll-area.stories.tsx +0 -1
- package/src/components/ui/stories/select.stories.tsx +0 -1
- package/src/components/ui/stories/separator.stories.tsx +0 -1
- package/src/components/ui/stories/sheet.stories.tsx +0 -1
- package/src/components/ui/stories/sidebar.stories.tsx +0 -1
- package/src/components/ui/stories/skeleton.stories.tsx +0 -1
- package/src/components/ui/stories/slider.stories.tsx +0 -1
- package/src/components/ui/stories/sonner.stories.tsx +0 -1
- package/src/components/ui/stories/spinner.stories.tsx +356 -0
- package/src/components/ui/stories/stack.stories.tsx +0 -1
- package/src/components/ui/stories/switch.stories.tsx +0 -1
- package/src/components/ui/stories/table.stories.tsx +0 -1
- package/src/components/ui/stories/tabs.stories.tsx +0 -1
- package/src/components/ui/stories/text-field.stories.tsx +0 -1
- package/src/components/ui/stories/textarea.stories.tsx +0 -1
- package/src/components/ui/stories/theme-toggle.stories.tsx +0 -1
- package/src/components/ui/stories/theme.stories.tsx +0 -1
- package/src/components/ui/stories/toggle-group.stories.tsx +0 -1
- package/src/components/ui/stories/toggle.stories.tsx +0 -1
- package/src/components/ui/stories/tooltip.stories.tsx +0 -1
- package/src/components/ui/stories/typography.stories.tsx +5 -2
- package/src/components/ui/stories/use-mobile.stories.tsx +0 -1
- package/src/components/ui/stories/use-theme.stories.tsx +0 -1
- package/src/components/ui/tabs.tsx +1 -1
- package/src/components/ui/theme-toggle.tsx +1 -3
- package/src/components/ui/theme.tsx +6 -1
- package/src/components/ui/typography.tsx +29 -129
- package/src/index.ts +7 -0
- package/src/styles/globals.css +82 -94
- /package/{llm-docs → .llm}/accordion-content.llm.md +0 -0
- /package/{llm-docs → .llm}/accordion-item.llm.md +0 -0
- /package/{llm-docs → .llm}/accordion-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/accordion.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-description.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-dialog-action.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-dialog-cancel.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-dialog-content.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-dialog-description.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-dialog-footer.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-dialog-header.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-dialog-overlay.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-dialog-portal.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-dialog-title.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-dialog-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-dialog.llm.md +0 -0
- /package/{llm-docs → .llm}/alert-title.llm.md +0 -0
- /package/{llm-docs → .llm}/alert.llm.md +0 -0
- /package/{llm-docs → .llm}/aspect-ratio.llm.md +0 -0
- /package/{llm-docs → .llm}/avatar-fallback.llm.md +0 -0
- /package/{llm-docs → .llm}/avatar-image.llm.md +0 -0
- /package/{llm-docs → .llm}/avatar.llm.md +0 -0
- /package/{llm-docs → .llm}/breadcrumb-ellipsis.llm.md +0 -0
- /package/{llm-docs → .llm}/breadcrumb-item.llm.md +0 -0
- /package/{llm-docs → .llm}/breadcrumb-link.llm.md +0 -0
- /package/{llm-docs → .llm}/breadcrumb-list.llm.md +0 -0
- /package/{llm-docs → .llm}/breadcrumb-page.llm.md +0 -0
- /package/{llm-docs → .llm}/breadcrumb-separator.llm.md +0 -0
- /package/{llm-docs → .llm}/breadcrumb.llm.md +0 -0
- /package/{llm-docs → .llm}/calendar-day-button.llm.md +0 -0
- /package/{llm-docs → .llm}/calendar.llm.md +0 -0
- /package/{llm-docs → .llm}/card-action.llm.md +0 -0
- /package/{llm-docs → .llm}/card-content.llm.md +0 -0
- /package/{llm-docs → .llm}/card-description.llm.md +0 -0
- /package/{llm-docs → .llm}/card-footer.llm.md +0 -0
- /package/{llm-docs → .llm}/card-header.llm.md +0 -0
- /package/{llm-docs → .llm}/card-title.llm.md +0 -0
- /package/{llm-docs → .llm}/card.llm.md +0 -0
- /package/{llm-docs → .llm}/carousel-content.llm.md +0 -0
- /package/{llm-docs → .llm}/carousel-item.llm.md +0 -0
- /package/{llm-docs → .llm}/carousel-next.llm.md +0 -0
- /package/{llm-docs → .llm}/carousel-previous.llm.md +0 -0
- /package/{llm-docs → .llm}/carousel.llm.md +0 -0
- /package/{llm-docs → .llm}/chart-config.llm.md +0 -0
- /package/{llm-docs → .llm}/chart-container.llm.md +0 -0
- /package/{llm-docs → .llm}/chart-legend-content.llm.md +0 -0
- /package/{llm-docs → .llm}/chart-legend.llm.md +0 -0
- /package/{llm-docs → .llm}/chart-style.llm.md +0 -0
- /package/{llm-docs → .llm}/chart-tooltip-content.llm.md +0 -0
- /package/{llm-docs → .llm}/chart-tooltip.llm.md +0 -0
- /package/{llm-docs → .llm}/checkbox.llm.md +0 -0
- /package/{llm-docs → .llm}/cn.llm.md +0 -0
- /package/{llm-docs → .llm}/collapsible-content.llm.md +0 -0
- /package/{llm-docs → .llm}/collapsible-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/collapsible.llm.md +0 -0
- /package/{llm-docs → .llm}/combobox-option.llm.md +0 -0
- /package/{llm-docs → .llm}/combobox.llm.md +0 -0
- /package/{llm-docs → .llm}/command-dialog.llm.md +0 -0
- /package/{llm-docs → .llm}/command-empty.llm.md +0 -0
- /package/{llm-docs → .llm}/command-group.llm.md +0 -0
- /package/{llm-docs → .llm}/command-input.llm.md +0 -0
- /package/{llm-docs → .llm}/command-item.llm.md +0 -0
- /package/{llm-docs → .llm}/command-list.llm.md +0 -0
- /package/{llm-docs → .llm}/command-loading.llm.md +0 -0
- /package/{llm-docs → .llm}/command-separator.llm.md +0 -0
- /package/{llm-docs → .llm}/command-shortcut.llm.md +0 -0
- /package/{llm-docs → .llm}/command.llm.md +0 -0
- /package/{llm-docs → .llm}/container.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-checkbox-item.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-content.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-group.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-item.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-label.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-portal.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-radio-group.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-radio-item.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-separator.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-shortcut.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-sub-content.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-sub-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-sub.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/context-menu.llm.md +0 -0
- /package/{llm-docs → .llm}/date-picker.llm.md +0 -0
- /package/{llm-docs → .llm}/dialog-close.llm.md +0 -0
- /package/{llm-docs → .llm}/dialog-content.llm.md +0 -0
- /package/{llm-docs → .llm}/dialog-description.llm.md +0 -0
- /package/{llm-docs → .llm}/dialog-footer.llm.md +0 -0
- /package/{llm-docs → .llm}/dialog-header.llm.md +0 -0
- /package/{llm-docs → .llm}/dialog-overlay.llm.md +0 -0
- /package/{llm-docs → .llm}/dialog-portal.llm.md +0 -0
- /package/{llm-docs → .llm}/dialog-title.llm.md +0 -0
- /package/{llm-docs → .llm}/dialog-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/dialog.llm.md +0 -0
- /package/{llm-docs → .llm}/drawer-close.llm.md +0 -0
- /package/{llm-docs → .llm}/drawer-content.llm.md +0 -0
- /package/{llm-docs → .llm}/drawer-description.llm.md +0 -0
- /package/{llm-docs → .llm}/drawer-footer.llm.md +0 -0
- /package/{llm-docs → .llm}/drawer-header.llm.md +0 -0
- /package/{llm-docs → .llm}/drawer-overlay.llm.md +0 -0
- /package/{llm-docs → .llm}/drawer-portal.llm.md +0 -0
- /package/{llm-docs → .llm}/drawer-title.llm.md +0 -0
- /package/{llm-docs → .llm}/drawer-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/drawer.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-checkbox-item.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-content.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-group.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-item.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-label.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-portal.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-radio-group.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-radio-item.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-separator.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-shortcut.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-sub-content.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-sub-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-sub.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/dropdown-menu.llm.md +0 -0
- /package/{llm-docs → .llm}/empty-state.llm.md +0 -0
- /package/{llm-docs → .llm}/hover-card-content.llm.md +0 -0
- /package/{llm-docs → .llm}/hover-card-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/hover-card.llm.md +0 -0
- /package/{llm-docs → .llm}/input.llm.md +0 -0
- /package/{llm-docs → .llm}/label.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-checkbox-item.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-content.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-group.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-item.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-label.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-menu.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-portal.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-radio-group.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-radio-item.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-separator.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-shortcut.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-sub-content.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-sub-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-sub.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/menubar.llm.md +0 -0
- /package/{llm-docs → .llm}/navigation-menu-content.llm.md +0 -0
- /package/{llm-docs → .llm}/navigation-menu-indicator.llm.md +0 -0
- /package/{llm-docs → .llm}/navigation-menu-item.llm.md +0 -0
- /package/{llm-docs → .llm}/navigation-menu-link.llm.md +0 -0
- /package/{llm-docs → .llm}/navigation-menu-list.llm.md +0 -0
- /package/{llm-docs → .llm}/navigation-menu-trigger-style.llm.md +0 -0
- /package/{llm-docs → .llm}/navigation-menu-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/navigation-menu-viewport.llm.md +0 -0
- /package/{llm-docs → .llm}/navigation-menu.llm.md +0 -0
- /package/{llm-docs → .llm}/pagination-content.llm.md +0 -0
- /package/{llm-docs → .llm}/pagination-ellipsis.llm.md +0 -0
- /package/{llm-docs → .llm}/pagination-item.llm.md +0 -0
- /package/{llm-docs → .llm}/pagination-link.llm.md +0 -0
- /package/{llm-docs → .llm}/pagination-next.llm.md +0 -0
- /package/{llm-docs → .llm}/pagination-previous.llm.md +0 -0
- /package/{llm-docs → .llm}/pagination.llm.md +0 -0
- /package/{llm-docs → .llm}/popover-anchor.llm.md +0 -0
- /package/{llm-docs → .llm}/popover-content.llm.md +0 -0
- /package/{llm-docs → .llm}/popover-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/popover.llm.md +0 -0
- /package/{llm-docs → .llm}/progress.llm.md +0 -0
- /package/{llm-docs → .llm}/radio-group-indicator.llm.md +0 -0
- /package/{llm-docs → .llm}/radio-group-item.llm.md +0 -0
- /package/{llm-docs → .llm}/radio-group.llm.md +0 -0
- /package/{llm-docs → .llm}/resizable-handle.llm.md +0 -0
- /package/{llm-docs → .llm}/resizable-panel-group.llm.md +0 -0
- /package/{llm-docs → .llm}/resizable-panel.llm.md +0 -0
- /package/{llm-docs → .llm}/scroll-area-corner.llm.md +0 -0
- /package/{llm-docs → .llm}/scroll-area-thumb.llm.md +0 -0
- /package/{llm-docs → .llm}/scroll-area-viewport.llm.md +0 -0
- /package/{llm-docs → .llm}/scroll-area.llm.md +0 -0
- /package/{llm-docs → .llm}/scroll-bar.llm.md +0 -0
- /package/{llm-docs → .llm}/select-content.llm.md +0 -0
- /package/{llm-docs → .llm}/select-group.llm.md +0 -0
- /package/{llm-docs → .llm}/select-item.llm.md +0 -0
- /package/{llm-docs → .llm}/select-label.llm.md +0 -0
- /package/{llm-docs → .llm}/select-scroll-down-button.llm.md +0 -0
- /package/{llm-docs → .llm}/select-scroll-up-button.llm.md +0 -0
- /package/{llm-docs → .llm}/select-separator.llm.md +0 -0
- /package/{llm-docs → .llm}/select-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/select-value.llm.md +0 -0
- /package/{llm-docs → .llm}/select.llm.md +0 -0
- /package/{llm-docs → .llm}/separator.llm.md +0 -0
- /package/{llm-docs → .llm}/sheet-close.llm.md +0 -0
- /package/{llm-docs → .llm}/sheet-content.llm.md +0 -0
- /package/{llm-docs → .llm}/sheet-description.llm.md +0 -0
- /package/{llm-docs → .llm}/sheet-footer.llm.md +0 -0
- /package/{llm-docs → .llm}/sheet-header.llm.md +0 -0
- /package/{llm-docs → .llm}/sheet-title.llm.md +0 -0
- /package/{llm-docs → .llm}/sheet-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/sheet.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-content.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-footer.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-group-action.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-group-content.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-group-label.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-group.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-header.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-input.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-inset.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-menu-action.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-menu-badge.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-menu-button.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-menu-item.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-menu-skeleton.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-menu-sub-button.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-menu-sub-item.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-menu-sub.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-menu.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-provider.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-rail.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-separator.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/sidebar.llm.md +0 -0
- /package/{llm-docs → .llm}/skeleton.llm.md +0 -0
- /package/{llm-docs → .llm}/slider.llm.md +0 -0
- /package/{llm-docs → .llm}/stack.llm.md +0 -0
- /package/{llm-docs → .llm}/switch.llm.md +0 -0
- /package/{llm-docs → .llm}/table-body.llm.md +0 -0
- /package/{llm-docs → .llm}/table-caption.llm.md +0 -0
- /package/{llm-docs → .llm}/table-cell.llm.md +0 -0
- /package/{llm-docs → .llm}/table-footer.llm.md +0 -0
- /package/{llm-docs → .llm}/table-head.llm.md +0 -0
- /package/{llm-docs → .llm}/table-header.llm.md +0 -0
- /package/{llm-docs → .llm}/table-row.llm.md +0 -0
- /package/{llm-docs → .llm}/table.llm.md +0 -0
- /package/{llm-docs → .llm}/tabs-content.llm.md +0 -0
- /package/{llm-docs → .llm}/tabs-list.llm.md +0 -0
- /package/{llm-docs → .llm}/tabs-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/tabs.llm.md +0 -0
- /package/{llm-docs → .llm}/text-field.llm.md +0 -0
- /package/{llm-docs → .llm}/textarea.llm.md +0 -0
- /package/{llm-docs → .llm}/theme-preference.llm.md +0 -0
- /package/{llm-docs → .llm}/theme-toggle.llm.md +0 -0
- /package/{llm-docs → .llm}/theme.llm.md +0 -0
- /package/{llm-docs → .llm}/toast.llm.md +0 -0
- /package/{llm-docs → .llm}/toaster.llm.md +0 -0
- /package/{llm-docs → .llm}/toggle-group-item.llm.md +0 -0
- /package/{llm-docs → .llm}/toggle-group.llm.md +0 -0
- /package/{llm-docs → .llm}/toggle.llm.md +0 -0
- /package/{llm-docs → .llm}/tooltip-content.llm.md +0 -0
- /package/{llm-docs → .llm}/tooltip-provider.llm.md +0 -0
- /package/{llm-docs → .llm}/tooltip-trigger.llm.md +0 -0
- /package/{llm-docs → .llm}/tooltip.llm.md +0 -0
- /package/{llm-docs → .llm}/use-carousel.llm.md +0 -0
- /package/{llm-docs → .llm}/use-command-state.llm.md +0 -0
- /package/{llm-docs → .llm}/use-is-mobile.llm.md +0 -0
- /package/{llm-docs → .llm}/use-sidebar.llm.md +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,QAAA,MAAM,cAAc;;;
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,QAAA,MAAM,cAAc;;;8EA0BnB,CAAC;AAEF;;;GAGG;AAEH,KAAK,eAAe,GAAG;IACrB,wFAAwF;IACxF,OAAO,CAAC,EACJ,SAAS,GACT,aAAa,GACb,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,CAAC;IACX,qEAAqE;IACrE,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACxC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,iEAAiE;IACjE,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACrD,0DAA0D;IAC1D,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACrD,sDAAsD;IACtD,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACpD,iDAAiD;IACjD,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC1D,iDAAiD;IACjD,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC1D,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kDAAkD;IAClD,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IACrE,sDAAsD;IACtD,eAAe,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IACxD,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACtD,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CACjD,GAAG,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IAChD,uCAAuC;IACvC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;CACpC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsIG;AAEH,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,GAAG,KAAK,EACT,EAAE,eAAe,2CAUjB;kBAhBQ,MAAM;;;AAoBf,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -191,6 +191,7 @@ import * as React from "react";
|
|
|
191
191
|
* @see {@link https://ui.patterns.build/empty-states} Empty state design patterns
|
|
192
192
|
* @see {@link https://www.nngroup.com/articles/empty-state-interface-design/} Nielsen Norman Group empty state guidelines
|
|
193
193
|
* @since 1.0.0
|
|
194
|
+
* @deprecated Use @neynar/ui Empty component instead
|
|
194
195
|
*/
|
|
195
196
|
declare const EmptyState: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
|
|
196
197
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../../src/components/ui/empty-state.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA6E/B
|
|
1
|
+
{"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../../src/components/ui/empty-state.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA6E/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiMG;AACH,QAAA,MAAM,UAAU;WAGL,MAAM;kBACC,MAAM;WACb,KAAK,CAAC,SAAS;aACb;QACP,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB;gDAoBH,CAAC;AAIH,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,630 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
/**
|
|
3
|
+
* Empty - Flexible container for displaying empty states with consistent layout
|
|
4
|
+
*
|
|
5
|
+
* A foundational empty state component that provides a centered, vertically-aligned
|
|
6
|
+
* container optimized for displaying empty or no-data states. Uses a composable
|
|
7
|
+
* architecture similar to Alert and Card components, allowing fine-grained control
|
|
8
|
+
* over layout and content through sub-components.
|
|
9
|
+
*
|
|
10
|
+
* ## Key Features
|
|
11
|
+
* - Composable sub-components for flexible layouts (header, media, title, description, content)
|
|
12
|
+
* - Responsive padding that adapts from mobile to desktop (p-6 to md:p-12)
|
|
13
|
+
* - Built-in flex layout with automatic centering and gap spacing
|
|
14
|
+
* - Border-dashed styling hint for visual differentiation
|
|
15
|
+
* - Maximum content width constraints for optimal readability
|
|
16
|
+
* - Text balance for improved typography on multi-line content
|
|
17
|
+
* - Fully accessible with semantic HTML structure
|
|
18
|
+
*
|
|
19
|
+
* ## When to Use
|
|
20
|
+
* - Search results with no matches
|
|
21
|
+
* - Empty data tables, lists, or dashboards
|
|
22
|
+
* - Onboarding states for new users
|
|
23
|
+
* - File uploads or content creation areas
|
|
24
|
+
* - Inbox or notification centers with no items
|
|
25
|
+
* - Error recovery or loading failure scenarios
|
|
26
|
+
*
|
|
27
|
+
* ## Component Architecture
|
|
28
|
+
* - **Empty**: Root container with flex layout, padding, and centering
|
|
29
|
+
* - **EmptyHeader**: Groups media and title with constrained width (max-w-sm)
|
|
30
|
+
* - **EmptyMedia**: Icon or illustration display with two variants
|
|
31
|
+
* - **EmptyTitle**: Prominent heading text with medium font weight
|
|
32
|
+
* - **EmptyDescription**: Muted description text with link styling
|
|
33
|
+
* - **EmptyContent**: Additional content area for buttons or secondary info
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* // Basic empty state with icon, title, and description
|
|
38
|
+
* import { Inbox } from 'lucide-react';
|
|
39
|
+
*
|
|
40
|
+
* <Empty>
|
|
41
|
+
* <EmptyHeader>
|
|
42
|
+
* <EmptyMedia variant="icon">
|
|
43
|
+
* <Inbox />
|
|
44
|
+
* </EmptyMedia>
|
|
45
|
+
* <EmptyTitle>No messages yet</EmptyTitle>
|
|
46
|
+
* </EmptyHeader>
|
|
47
|
+
* <EmptyDescription>
|
|
48
|
+
* New messages will appear here when you receive them.
|
|
49
|
+
* </EmptyDescription>
|
|
50
|
+
* </Empty>
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```tsx
|
|
55
|
+
* // Search results empty state with action button
|
|
56
|
+
* import { Search } from 'lucide-react';
|
|
57
|
+
* import { Button } from './button';
|
|
58
|
+
*
|
|
59
|
+
* <Empty>
|
|
60
|
+
* <EmptyHeader>
|
|
61
|
+
* <EmptyMedia variant="icon">
|
|
62
|
+
* <Search />
|
|
63
|
+
* </EmptyMedia>
|
|
64
|
+
* <EmptyTitle>No results found</EmptyTitle>
|
|
65
|
+
* </EmptyHeader>
|
|
66
|
+
* <EmptyDescription>
|
|
67
|
+
* Try adjusting your search or filters to find what you're looking for.
|
|
68
|
+
* </EmptyDescription>
|
|
69
|
+
* <EmptyContent>
|
|
70
|
+
* <Button variant="outline" onClick={clearFilters}>
|
|
71
|
+
* Clear filters
|
|
72
|
+
* </Button>
|
|
73
|
+
* </EmptyContent>
|
|
74
|
+
* </Empty>
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```tsx
|
|
79
|
+
* // File upload empty state with custom illustration
|
|
80
|
+
* import { Upload } from 'lucide-react';
|
|
81
|
+
* import { Button } from './button';
|
|
82
|
+
*
|
|
83
|
+
* <Empty className="min-h-[400px] border-2 border-dashed">
|
|
84
|
+
* <EmptyHeader>
|
|
85
|
+
* <EmptyMedia>
|
|
86
|
+
* <Upload className="w-16 h-16 text-muted-foreground" />
|
|
87
|
+
* </EmptyMedia>
|
|
88
|
+
* <EmptyTitle>Drop files here</EmptyTitle>
|
|
89
|
+
* </EmptyHeader>
|
|
90
|
+
* <EmptyDescription>
|
|
91
|
+
* Drag and drop files to upload, or click the button below.
|
|
92
|
+
* </EmptyDescription>
|
|
93
|
+
* <EmptyContent>
|
|
94
|
+
* <Button onClick={openFilePicker}>
|
|
95
|
+
* Choose files
|
|
96
|
+
* </Button>
|
|
97
|
+
* </EmptyContent>
|
|
98
|
+
* </Empty>
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```tsx
|
|
103
|
+
* // Complex empty state with multiple actions
|
|
104
|
+
* import { Users, UserPlus, Upload } from 'lucide-react';
|
|
105
|
+
* import { Button } from './button';
|
|
106
|
+
*
|
|
107
|
+
* <Empty>
|
|
108
|
+
* <EmptyHeader>
|
|
109
|
+
* <EmptyMedia variant="icon">
|
|
110
|
+
* <Users />
|
|
111
|
+
* </EmptyMedia>
|
|
112
|
+
* <EmptyTitle>No team members</EmptyTitle>
|
|
113
|
+
* </EmptyHeader>
|
|
114
|
+
* <EmptyDescription>
|
|
115
|
+
* Get started by <a href="/invite">inviting your first team member</a> or
|
|
116
|
+
* importing from a CSV file.
|
|
117
|
+
* </EmptyDescription>
|
|
118
|
+
* <EmptyContent>
|
|
119
|
+
* <div className="flex gap-2">
|
|
120
|
+
* <Button onClick={openInviteModal}>
|
|
121
|
+
* <UserPlus className="w-4 h-4 mr-2" />
|
|
122
|
+
* Invite member
|
|
123
|
+
* </Button>
|
|
124
|
+
* <Button variant="outline" onClick={importFromCsv}>
|
|
125
|
+
* <Upload className="w-4 h-4 mr-2" />
|
|
126
|
+
* Import CSV
|
|
127
|
+
* </Button>
|
|
128
|
+
* </div>
|
|
129
|
+
* </EmptyContent>
|
|
130
|
+
* </Empty>
|
|
131
|
+
* ```
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```tsx
|
|
135
|
+
* // Minimal empty state without header grouping
|
|
136
|
+
* import { Sparkles } from 'lucide-react';
|
|
137
|
+
*
|
|
138
|
+
* <Empty>
|
|
139
|
+
* <EmptyMedia>
|
|
140
|
+
* <Sparkles className="w-12 h-12 text-primary" />
|
|
141
|
+
* </EmptyMedia>
|
|
142
|
+
* <EmptyTitle>All caught up!</EmptyTitle>
|
|
143
|
+
* <EmptyDescription>
|
|
144
|
+
* You've reviewed all pending items.
|
|
145
|
+
* </EmptyDescription>
|
|
146
|
+
* </Empty>
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```tsx
|
|
151
|
+
* // Error state with custom styling
|
|
152
|
+
* import { AlertCircle } from 'lucide-react';
|
|
153
|
+
* import { Button } from './button';
|
|
154
|
+
*
|
|
155
|
+
* <Empty className="border-destructive/50 bg-destructive/5">
|
|
156
|
+
* <EmptyHeader>
|
|
157
|
+
* <EmptyMedia>
|
|
158
|
+
* <AlertCircle className="w-12 h-12 text-destructive" />
|
|
159
|
+
* </EmptyMedia>
|
|
160
|
+
* <EmptyTitle>Failed to load data</EmptyTitle>
|
|
161
|
+
* </EmptyHeader>
|
|
162
|
+
* <EmptyDescription className="text-destructive/90">
|
|
163
|
+
* There was an error loading your content. Please try again.
|
|
164
|
+
* </EmptyDescription>
|
|
165
|
+
* <EmptyContent>
|
|
166
|
+
* <Button variant="destructive" onClick={retry}>
|
|
167
|
+
* Retry
|
|
168
|
+
* </Button>
|
|
169
|
+
* </EmptyContent>
|
|
170
|
+
* </Empty>
|
|
171
|
+
* ```
|
|
172
|
+
*
|
|
173
|
+
* @accessibility
|
|
174
|
+
* - Semantic HTML structure with proper div hierarchy
|
|
175
|
+
* - Center-aligned content aids screen reader comprehension
|
|
176
|
+
* - Text balance improves readability for dyslexic users
|
|
177
|
+
* - Sufficient color contrast for text elements (muted-foreground meets WCAG AA)
|
|
178
|
+
* - Responsive padding ensures adequate touch targets on mobile
|
|
179
|
+
* - Interactive elements (buttons, links) remain keyboard accessible
|
|
180
|
+
* - Icons are decorative and don't interfere with screen reader navigation
|
|
181
|
+
* - Supports reduced motion preferences through CSS transitions
|
|
182
|
+
*
|
|
183
|
+
* @see {@link EmptyHeader} - Groups media and title with constrained width
|
|
184
|
+
* @see {@link EmptyMedia} - Icon or illustration display with variants
|
|
185
|
+
* @see {@link EmptyTitle} - Prominent heading for the empty state
|
|
186
|
+
* @see {@link EmptyDescription} - Descriptive text with link support
|
|
187
|
+
* @see {@link EmptyContent} - Additional content area for actions
|
|
188
|
+
* @see {@link https://ui.shadcn.com/docs/components/empty-state} - shadcn/ui empty state patterns
|
|
189
|
+
* @since 1.0.0
|
|
190
|
+
*/
|
|
191
|
+
declare function Empty({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
192
|
+
/**
|
|
193
|
+
* EmptyHeader - Groups media and title elements with constrained width
|
|
194
|
+
*
|
|
195
|
+
* A container component that groups the EmptyMedia and EmptyTitle elements together,
|
|
196
|
+
* applying a maximum width constraint (max-w-sm / 24rem) for optimal visual hierarchy
|
|
197
|
+
* and readability. Typically used to create a cohesive header unit within the empty state.
|
|
198
|
+
*
|
|
199
|
+
* ## Features
|
|
200
|
+
* - Maximum width of 24rem (384px) for visual balance
|
|
201
|
+
* - Flex column layout with 0.5rem (8px) gap between children
|
|
202
|
+
* - Center-aligned items and text
|
|
203
|
+
* - Maintains semantic grouping for screen readers
|
|
204
|
+
*
|
|
205
|
+
* ## Usage Patterns
|
|
206
|
+
* - Group EmptyMedia and EmptyTitle together
|
|
207
|
+
* - Create visual separation from description and content
|
|
208
|
+
* - Constrain width of title for better readability
|
|
209
|
+
* - Optional - components can be used without header grouping
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* ```tsx
|
|
213
|
+
* // Standard header with icon and title
|
|
214
|
+
* import { Package } from 'lucide-react';
|
|
215
|
+
*
|
|
216
|
+
* <EmptyHeader>
|
|
217
|
+
* <EmptyMedia variant="icon">
|
|
218
|
+
* <Package />
|
|
219
|
+
* </EmptyMedia>
|
|
220
|
+
* <EmptyTitle>No packages found</EmptyTitle>
|
|
221
|
+
* </EmptyHeader>
|
|
222
|
+
* ```
|
|
223
|
+
*
|
|
224
|
+
* @example
|
|
225
|
+
* ```tsx
|
|
226
|
+
* // Header with large illustration
|
|
227
|
+
* import { Rocket } from 'lucide-react';
|
|
228
|
+
*
|
|
229
|
+
* <EmptyHeader>
|
|
230
|
+
* <EmptyMedia>
|
|
231
|
+
* <Rocket className="w-20 h-20 text-primary" />
|
|
232
|
+
* </EmptyMedia>
|
|
233
|
+
* <EmptyTitle>Ready to launch!</EmptyTitle>
|
|
234
|
+
* </EmptyHeader>
|
|
235
|
+
* ```
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* ```tsx
|
|
239
|
+
* // Custom styled header
|
|
240
|
+
* <EmptyHeader className="max-w-md gap-4">
|
|
241
|
+
* <EmptyMedia variant="icon">
|
|
242
|
+
* <Star />
|
|
243
|
+
* </EmptyMedia>
|
|
244
|
+
* <EmptyTitle>Custom spacing and width</EmptyTitle>
|
|
245
|
+
* </EmptyHeader>
|
|
246
|
+
* ```
|
|
247
|
+
*
|
|
248
|
+
* @accessibility
|
|
249
|
+
* - Semantic grouping improves screen reader context
|
|
250
|
+
* - Maintains proper reading order (media → title)
|
|
251
|
+
* - Width constraint enhances readability for all users
|
|
252
|
+
* - Center alignment provides clear visual focus
|
|
253
|
+
*
|
|
254
|
+
* @see {@link EmptyMedia} - Icon or illustration component typically used within header
|
|
255
|
+
* @see {@link EmptyTitle} - Title component typically used within header
|
|
256
|
+
* @see {@link Empty} - Parent container component
|
|
257
|
+
*/
|
|
258
|
+
declare function EmptyHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
259
|
+
/**
|
|
260
|
+
* EmptyMedia variant styles configuration
|
|
261
|
+
*
|
|
262
|
+
* @variant default - Transparent background for custom illustrations or large icons
|
|
263
|
+
* @variant icon - Muted background with rounded corners and constrained sizing for standard icons (40px container, 24px icon)
|
|
264
|
+
*/
|
|
265
|
+
declare const emptyMediaVariants: (props?: ({
|
|
266
|
+
variant?: "default" | "icon" | null | undefined;
|
|
267
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
268
|
+
/**
|
|
269
|
+
* EmptyMedia - Icon or illustration display component with styling variants
|
|
270
|
+
*
|
|
271
|
+
* Displays icons, illustrations, or other visual elements in an empty state. Offers
|
|
272
|
+
* two variants: a transparent default for custom-sized graphics and an "icon" variant
|
|
273
|
+
* with consistent sizing and background styling. Automatically handles SVG pointer
|
|
274
|
+
* events and shrinking behavior.
|
|
275
|
+
*
|
|
276
|
+
* ## Variants
|
|
277
|
+
*
|
|
278
|
+
* ### default
|
|
279
|
+
* - Transparent background (bg-transparent)
|
|
280
|
+
* - No size constraints - use for custom-sized illustrations
|
|
281
|
+
* - Full control over icon/illustration dimensions
|
|
282
|
+
* - Best for large decorative graphics (48px+)
|
|
283
|
+
*
|
|
284
|
+
* ### icon
|
|
285
|
+
* - Muted background (bg-muted) with rounded corners (rounded-lg)
|
|
286
|
+
* - Fixed 40px × 40px container (size-10)
|
|
287
|
+
* - Automatically sizes child SVGs to 24px (size-6) unless explicitly sized
|
|
288
|
+
* - Text color set to foreground for proper contrast
|
|
289
|
+
* - Best for standard icon sizes (16-24px)
|
|
290
|
+
* - Provides visual emphasis through background contrast
|
|
291
|
+
*
|
|
292
|
+
* ## Features
|
|
293
|
+
* - SVG pointer events disabled to prevent interaction issues
|
|
294
|
+
* - Shrink prevention for consistent sizing
|
|
295
|
+
* - Bottom margin (mb-2 / 8px) for spacing from subsequent elements
|
|
296
|
+
* - Flex layout with centered content
|
|
297
|
+
* - Compatible with all icon libraries (lucide-react, heroicons, etc.)
|
|
298
|
+
*
|
|
299
|
+
* @example
|
|
300
|
+
* ```tsx
|
|
301
|
+
* // Standard icon variant with auto-sizing
|
|
302
|
+
* import { Inbox } from 'lucide-react';
|
|
303
|
+
*
|
|
304
|
+
* <EmptyMedia variant="icon">
|
|
305
|
+
* <Inbox />
|
|
306
|
+
* </EmptyMedia>
|
|
307
|
+
* ```
|
|
308
|
+
*
|
|
309
|
+
* @example
|
|
310
|
+
* ```tsx
|
|
311
|
+
* // Default variant with custom-sized illustration
|
|
312
|
+
* import { Package } from 'lucide-react';
|
|
313
|
+
*
|
|
314
|
+
* <EmptyMedia>
|
|
315
|
+
* <Package className="w-16 h-16 text-primary" />
|
|
316
|
+
* </EmptyMedia>
|
|
317
|
+
* ```
|
|
318
|
+
*
|
|
319
|
+
* @example
|
|
320
|
+
* ```tsx
|
|
321
|
+
* // Icon variant with explicitly sized SVG (overrides auto-sizing)
|
|
322
|
+
* import { Search } from 'lucide-react';
|
|
323
|
+
*
|
|
324
|
+
* <EmptyMedia variant="icon">
|
|
325
|
+
* <Search className="size-5" />
|
|
326
|
+
* </EmptyMedia>
|
|
327
|
+
* ```
|
|
328
|
+
*
|
|
329
|
+
* @example
|
|
330
|
+
* ```tsx
|
|
331
|
+
* // Custom styled media container
|
|
332
|
+
* import { Sparkles } from 'lucide-react';
|
|
333
|
+
*
|
|
334
|
+
* <EmptyMedia className="bg-primary/10 rounded-full p-4">
|
|
335
|
+
* <Sparkles className="w-8 h-8 text-primary" />
|
|
336
|
+
* </EmptyMedia>
|
|
337
|
+
* ```
|
|
338
|
+
*
|
|
339
|
+
* @example
|
|
340
|
+
* ```tsx
|
|
341
|
+
* // Multiple icons or complex graphics
|
|
342
|
+
* import { Users, Plus } from 'lucide-react';
|
|
343
|
+
*
|
|
344
|
+
* <EmptyMedia>
|
|
345
|
+
* <div className="relative">
|
|
346
|
+
* <Users className="w-12 h-12 text-muted-foreground" />
|
|
347
|
+
* <Plus className="w-6 h-6 text-primary absolute -bottom-1 -right-1" />
|
|
348
|
+
* </div>
|
|
349
|
+
* </EmptyMedia>
|
|
350
|
+
* ```
|
|
351
|
+
*
|
|
352
|
+
* @accessibility
|
|
353
|
+
* - Icons are decorative and don't require alt text
|
|
354
|
+
* - SVG pointer events disabled prevents accidental interactions
|
|
355
|
+
* - Sufficient size for visibility and recognition
|
|
356
|
+
* - Color contrast maintained through foreground/muted colors
|
|
357
|
+
* - Responsive to theme changes (light/dark mode)
|
|
358
|
+
*
|
|
359
|
+
* @see {@link EmptyHeader} - Often used within header for visual grouping
|
|
360
|
+
* @see {@link Empty} - Parent container component
|
|
361
|
+
*/
|
|
362
|
+
declare function EmptyMedia({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof emptyMediaVariants>): import("react/jsx-runtime").JSX.Element;
|
|
363
|
+
/**
|
|
364
|
+
* EmptyTitle - Prominent heading text for empty state messages
|
|
365
|
+
*
|
|
366
|
+
* Displays the primary heading or title for an empty state, styled with medium font
|
|
367
|
+
* weight and tight character spacing for visual hierarchy. Typically describes what
|
|
368
|
+
* is missing or the current state in a concise, user-friendly way.
|
|
369
|
+
*
|
|
370
|
+
* ## Features
|
|
371
|
+
* - Large text size (text-lg / 1.125rem / 18px)
|
|
372
|
+
* - Medium font weight (font-medium / 500) for emphasis
|
|
373
|
+
* - Tight character spacing (tracking-tight / -0.025em) for readability
|
|
374
|
+
* - Foreground color for maximum contrast
|
|
375
|
+
* - Center-aligned within empty state layout
|
|
376
|
+
*
|
|
377
|
+
* ## Best Practices
|
|
378
|
+
* - Keep titles short and descriptive (2-6 words)
|
|
379
|
+
* - Focus on the current state rather than what's wrong
|
|
380
|
+
* - Use positive language when possible
|
|
381
|
+
* - Be specific rather than generic ("No projects" vs "Empty")
|
|
382
|
+
* - Avoid technical jargon or error codes
|
|
383
|
+
*
|
|
384
|
+
* @example
|
|
385
|
+
* ```tsx
|
|
386
|
+
* // Simple descriptive title
|
|
387
|
+
* <EmptyTitle>No results found</EmptyTitle>
|
|
388
|
+
* ```
|
|
389
|
+
*
|
|
390
|
+
* @example
|
|
391
|
+
* ```tsx
|
|
392
|
+
* // Positive framing for empty inbox
|
|
393
|
+
* <EmptyTitle>You're all caught up!</EmptyTitle>
|
|
394
|
+
* ```
|
|
395
|
+
*
|
|
396
|
+
* @example
|
|
397
|
+
* ```tsx
|
|
398
|
+
* // Specific empty list title
|
|
399
|
+
* <EmptyTitle>No team members yet</EmptyTitle>
|
|
400
|
+
* ```
|
|
401
|
+
*
|
|
402
|
+
* @example
|
|
403
|
+
* ```tsx
|
|
404
|
+
* // Custom styled title
|
|
405
|
+
* <EmptyTitle className="text-xl font-semibold text-primary">
|
|
406
|
+
* Welcome to your dashboard
|
|
407
|
+
* </EmptyTitle>
|
|
408
|
+
* ```
|
|
409
|
+
*
|
|
410
|
+
* @accessibility
|
|
411
|
+
* - Provides clear, descriptive content for screen readers
|
|
412
|
+
* - Font size and weight ensure readability
|
|
413
|
+
* - High contrast color (foreground) meets WCAG AA standards
|
|
414
|
+
* - Center alignment aids comprehension
|
|
415
|
+
* - Can be enhanced with heading tags via className if needed for semantic structure
|
|
416
|
+
*
|
|
417
|
+
* @see {@link EmptyHeader} - Often grouped within header with EmptyMedia
|
|
418
|
+
* @see {@link EmptyDescription} - Complementary description text component
|
|
419
|
+
* @see {@link Empty} - Parent container component
|
|
420
|
+
*/
|
|
421
|
+
declare function EmptyTitle({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
422
|
+
/**
|
|
423
|
+
* EmptyDescription - Descriptive text with link styling for empty states
|
|
424
|
+
*
|
|
425
|
+
* Provides supplementary information, guidance, or context below the empty state title.
|
|
426
|
+
* Automatically styles inline links with underlines and hover effects, making it easy
|
|
427
|
+
* to include helpful links or documentation references within the description text.
|
|
428
|
+
*
|
|
429
|
+
* ## Features
|
|
430
|
+
* - Muted foreground color for visual hierarchy below title
|
|
431
|
+
* - Small text size (text-sm) with relaxed line height for readability
|
|
432
|
+
* - Automatic link styling with underlines and offset
|
|
433
|
+
* - Hover state for links changes color to primary
|
|
434
|
+
* - Supports rich content including paragraphs and inline elements
|
|
435
|
+
* - Center-aligned text within empty state layout
|
|
436
|
+
*
|
|
437
|
+
* ## Link Styling
|
|
438
|
+
* - Default: underline with 4px offset, muted-foreground color
|
|
439
|
+
* - Hover: primary color while maintaining underline
|
|
440
|
+
* - Provides clear visual affordance for interactive elements
|
|
441
|
+
*
|
|
442
|
+
* ## Best Practices
|
|
443
|
+
* - Provide helpful context or next steps
|
|
444
|
+
* - Keep descriptions concise (1-2 sentences)
|
|
445
|
+
* - Include actionable guidance when possible
|
|
446
|
+
* - Use links to documentation, help, or related features
|
|
447
|
+
* - Avoid overwhelming users with too much information
|
|
448
|
+
*
|
|
449
|
+
* @example
|
|
450
|
+
* ```tsx
|
|
451
|
+
* // Simple description text
|
|
452
|
+
* <EmptyDescription>
|
|
453
|
+
* Try adjusting your search or filters to find what you're looking for.
|
|
454
|
+
* </EmptyDescription>
|
|
455
|
+
* ```
|
|
456
|
+
*
|
|
457
|
+
* @example
|
|
458
|
+
* ```tsx
|
|
459
|
+
* // Description with inline link
|
|
460
|
+
* <EmptyDescription>
|
|
461
|
+
* Get started by <a href="/docs/setup">reading our setup guide</a> or
|
|
462
|
+
* watching the tutorial video.
|
|
463
|
+
* </EmptyDescription>
|
|
464
|
+
* ```
|
|
465
|
+
*
|
|
466
|
+
* @example
|
|
467
|
+
* ```tsx
|
|
468
|
+
* // Multi-line description
|
|
469
|
+
* <EmptyDescription>
|
|
470
|
+
* Your inbox is empty. New messages and notifications will appear here
|
|
471
|
+
* when you receive them.
|
|
472
|
+
* </EmptyDescription>
|
|
473
|
+
* ```
|
|
474
|
+
*
|
|
475
|
+
* @example
|
|
476
|
+
* ```tsx
|
|
477
|
+
* // Description with multiple links
|
|
478
|
+
* <EmptyDescription>
|
|
479
|
+
* Need help? Check out our <a href="/docs">documentation</a> or
|
|
480
|
+
* <a href="/support">contact support</a>.
|
|
481
|
+
* </EmptyDescription>
|
|
482
|
+
* ```
|
|
483
|
+
*
|
|
484
|
+
* @example
|
|
485
|
+
* ```tsx
|
|
486
|
+
* // Custom styled description
|
|
487
|
+
* <EmptyDescription className="text-base text-foreground max-w-md">
|
|
488
|
+
* Override default styling for custom appearance and width.
|
|
489
|
+
* </EmptyDescription>
|
|
490
|
+
* ```
|
|
491
|
+
*
|
|
492
|
+
* @accessibility
|
|
493
|
+
* - Links are keyboard accessible (Tab navigation)
|
|
494
|
+
* - Underlines provide visual affordance independent of color
|
|
495
|
+
* - Hover state provides additional interactive feedback
|
|
496
|
+
* - Muted color still meets WCAG AA contrast requirements
|
|
497
|
+
* - Relaxed line height (text-sm/relaxed) improves readability
|
|
498
|
+
* - Screen readers properly announce links and their purpose
|
|
499
|
+
*
|
|
500
|
+
* @see {@link EmptyTitle} - Title component that precedes description
|
|
501
|
+
* @see {@link EmptyContent} - Additional content area for buttons and actions
|
|
502
|
+
* @see {@link Empty} - Parent container component
|
|
503
|
+
*/
|
|
504
|
+
declare function EmptyDescription({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element;
|
|
505
|
+
/**
|
|
506
|
+
* EmptyContent - Additional content area for buttons, actions, or secondary information
|
|
507
|
+
*
|
|
508
|
+
* A flexible container for additional content within an empty state, typically used for
|
|
509
|
+
* action buttons, links, or secondary information. Provides consistent width constraints,
|
|
510
|
+
* gap spacing, and alignment for optimal layout of calls-to-action and supplementary content.
|
|
511
|
+
*
|
|
512
|
+
* ## Features
|
|
513
|
+
* - Maximum width of 24rem (384px) for visual balance
|
|
514
|
+
* - Minimum width of 0 to prevent overflow issues
|
|
515
|
+
* - Flex column layout with 1rem (16px) gap between children
|
|
516
|
+
* - Center-aligned items for button grouping
|
|
517
|
+
* - Small text size (text-sm) for secondary content
|
|
518
|
+
* - Text balance for improved multi-line typography
|
|
519
|
+
* - Full width within constraints (w-full)
|
|
520
|
+
*
|
|
521
|
+
* ## Common Use Cases
|
|
522
|
+
* - Primary and secondary action buttons
|
|
523
|
+
* - Button groups with multiple actions
|
|
524
|
+
* - Secondary links or navigation
|
|
525
|
+
* - Additional context or instructions
|
|
526
|
+
* - Step indicators or progress information
|
|
527
|
+
*
|
|
528
|
+
* ## Layout Patterns
|
|
529
|
+
* - Single button: automatically centered
|
|
530
|
+
* - Multiple buttons: stack vertically with gap spacing
|
|
531
|
+
* - Button groups: use flex-row with gap within content
|
|
532
|
+
* - Text content: maintains readability with text-balance
|
|
533
|
+
*
|
|
534
|
+
* @example
|
|
535
|
+
* ```tsx
|
|
536
|
+
* // Single action button
|
|
537
|
+
* import { Button } from './button';
|
|
538
|
+
*
|
|
539
|
+
* <EmptyContent>
|
|
540
|
+
* <Button onClick={handleCreate}>Create new project</Button>
|
|
541
|
+
* </EmptyContent>
|
|
542
|
+
* ```
|
|
543
|
+
*
|
|
544
|
+
* @example
|
|
545
|
+
* ```tsx
|
|
546
|
+
* // Multiple vertically stacked buttons
|
|
547
|
+
* import { Button } from './button';
|
|
548
|
+
*
|
|
549
|
+
* <EmptyContent>
|
|
550
|
+
* <Button onClick={handleCreate}>Create project</Button>
|
|
551
|
+
* <Button variant="outline" onClick={handleImport}>Import project</Button>
|
|
552
|
+
* </EmptyContent>
|
|
553
|
+
* ```
|
|
554
|
+
*
|
|
555
|
+
* @example
|
|
556
|
+
* ```tsx
|
|
557
|
+
* // Horizontal button group
|
|
558
|
+
* import { Button } from './button';
|
|
559
|
+
* import { Plus, Upload } from 'lucide-react';
|
|
560
|
+
*
|
|
561
|
+
* <EmptyContent>
|
|
562
|
+
* <div className="flex gap-2">
|
|
563
|
+
* <Button onClick={handleCreate}>
|
|
564
|
+
* <Plus className="w-4 h-4 mr-2" />
|
|
565
|
+
* Create
|
|
566
|
+
* </Button>
|
|
567
|
+
* <Button variant="outline" onClick={handleUpload}>
|
|
568
|
+
* <Upload className="w-4 h-4 mr-2" />
|
|
569
|
+
* Upload
|
|
570
|
+
* </Button>
|
|
571
|
+
* </div>
|
|
572
|
+
* </EmptyContent>
|
|
573
|
+
* ```
|
|
574
|
+
*
|
|
575
|
+
* @example
|
|
576
|
+
* ```tsx
|
|
577
|
+
* // Button with additional text
|
|
578
|
+
* import { Button } from './button';
|
|
579
|
+
*
|
|
580
|
+
* <EmptyContent>
|
|
581
|
+
* <Button onClick={handleInvite}>Invite team members</Button>
|
|
582
|
+
* <p className="text-xs text-muted-foreground">
|
|
583
|
+
* or <a href="/import" className="underline">import from CSV</a>
|
|
584
|
+
* </p>
|
|
585
|
+
* </EmptyContent>
|
|
586
|
+
* ```
|
|
587
|
+
*
|
|
588
|
+
* @example
|
|
589
|
+
* ```tsx
|
|
590
|
+
* // Secondary links only
|
|
591
|
+
* <EmptyContent>
|
|
592
|
+
* <a href="/docs" className="text-sm underline underline-offset-4">
|
|
593
|
+
* View documentation
|
|
594
|
+
* </a>
|
|
595
|
+
* <a href="/examples" className="text-sm underline underline-offset-4">
|
|
596
|
+
* Browse examples
|
|
597
|
+
* </a>
|
|
598
|
+
* </EmptyContent>
|
|
599
|
+
* ```
|
|
600
|
+
*
|
|
601
|
+
* @example
|
|
602
|
+
* ```tsx
|
|
603
|
+
* // Custom styled content area
|
|
604
|
+
* import { Button } from './button';
|
|
605
|
+
*
|
|
606
|
+
* <EmptyContent className="max-w-md gap-2">
|
|
607
|
+
* <Button className="w-full" onClick={handleAction}>
|
|
608
|
+
* Full width button
|
|
609
|
+
* </Button>
|
|
610
|
+
* <p className="text-center">
|
|
611
|
+
* Tighter gap and wider max width
|
|
612
|
+
* </p>
|
|
613
|
+
* </EmptyContent>
|
|
614
|
+
* ```
|
|
615
|
+
*
|
|
616
|
+
* @accessibility
|
|
617
|
+
* - Maintains focus order for keyboard navigation
|
|
618
|
+
* - Buttons and links remain fully keyboard accessible
|
|
619
|
+
* - Adequate spacing between interactive elements for touch targets
|
|
620
|
+
* - Text content maintains readability with text-balance
|
|
621
|
+
* - Center alignment provides clear visual hierarchy
|
|
622
|
+
* - Supports reduced motion preferences through CSS
|
|
623
|
+
*
|
|
624
|
+
* @see {@link EmptyDescription} - Description component that typically precedes content
|
|
625
|
+
* @see {@link Empty} - Parent container component
|
|
626
|
+
* @see {@link Button} - Common component used within EmptyContent for actions
|
|
627
|
+
*/
|
|
628
|
+
declare function EmptyContent({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
629
|
+
export { Empty, EmptyHeader, EmptyTitle, EmptyDescription, EmptyContent, EmptyMedia, };
|
|
630
|
+
//# sourceMappingURL=empty.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty.d.ts","sourceRoot":"","sources":["../../../src/components/ui/empty.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAyEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4LG;AACH,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWlE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWxE;AAED;;;;;GAKG;AACH,QAAA,MAAM,kBAAkB;;8EAevB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AACH,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,2CASvE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQvE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFG;AACH,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAW3E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0HG;AACH,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWzE;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,GACX,CAAA"}
|