@olwiba/ui 0.2.23 → 0.2.24
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/dist/index.d.ts +53 -9
- package/dist/index.js +191 -68
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/app/AppFooter.tsx +4 -3
- package/src/app/AppShell.tsx +72 -26
- package/src/app/EmptyState.tsx +63 -12
- package/src/blog/PostList.tsx +19 -6
- package/src/components/LoadMore.tsx +80 -0
- package/src/index.ts +3 -0
package/dist/index.d.ts
CHANGED
|
@@ -226,6 +226,8 @@ interface AppShellUser {
|
|
|
226
226
|
email: string;
|
|
227
227
|
name?: string;
|
|
228
228
|
avatar?: string;
|
|
229
|
+
/** Product-owned artwork shown when no avatar image exists. Defaults to the Olwiba bird. */
|
|
230
|
+
avatarFallback?: ReactNode;
|
|
229
231
|
/** Displayed as a sub-label (e.g. plan tier). */
|
|
230
232
|
plan?: string;
|
|
231
233
|
onSignOut?: () => void;
|
|
@@ -256,6 +258,11 @@ type AppShellBreadcrumb = string | {
|
|
|
256
258
|
label: string;
|
|
257
259
|
href?: string;
|
|
258
260
|
};
|
|
261
|
+
interface AppShellHeaderControls {
|
|
262
|
+
/** Expands the desktop sidebar or opens its native mobile presentation. */
|
|
263
|
+
expandSidebar: () => void;
|
|
264
|
+
}
|
|
265
|
+
type AppShellHeaderStart = ReactNode | ((controls: AppShellHeaderControls) => ReactNode);
|
|
259
266
|
interface AppShellProps {
|
|
260
267
|
brand?: AppShellBrand;
|
|
261
268
|
navItems?: AppNavItem[];
|
|
@@ -274,10 +281,16 @@ interface AppShellProps {
|
|
|
274
281
|
* and preferred over `pageTitle` when supplied.
|
|
275
282
|
*/
|
|
276
283
|
breadcrumbs?: AppShellBreadcrumb[];
|
|
277
|
-
/**
|
|
278
|
-
|
|
284
|
+
/**
|
|
285
|
+
* Slot rendered at the start of the top header bar, after the sidebar trigger.
|
|
286
|
+
* Use the render form when a custom control needs to expand the shell's own
|
|
287
|
+
* sidebar without importing its private provider context.
|
|
288
|
+
*/
|
|
289
|
+
headerStart?: AppShellHeaderStart;
|
|
279
290
|
/** Slot rendered at the end of the top header bar. */
|
|
280
291
|
headerEnd?: ReactNode;
|
|
292
|
+
/** Product chrome rendered above the user menu in the sidebar footer. */
|
|
293
|
+
sidebarFooterStart?: ReactNode;
|
|
281
294
|
/**
|
|
282
295
|
* App chrome rendered after the page outlet — normally an `AppFooter`. This
|
|
283
296
|
* belongs to the shell, not to a page pattern: otherwise every route
|
|
@@ -300,6 +313,10 @@ interface AppShellProps {
|
|
|
300
313
|
* - `"contained"` — fills its parent container; use in docs sandboxes, modals, or embedded previews.
|
|
301
314
|
*/
|
|
302
315
|
sidebarPosition?: 'viewport' | 'contained';
|
|
316
|
+
/** Remount key for an animated sidebar identity or navigation-mode change. */
|
|
317
|
+
sidebarContentKey?: string;
|
|
318
|
+
/** Classes applied to the sidebar header, content, and footer. */
|
|
319
|
+
sidebarContentClassName?: string;
|
|
303
320
|
/** Which side the sidebar sits on. @default "left" */
|
|
304
321
|
side?: 'left' | 'right';
|
|
305
322
|
/**
|
|
@@ -312,7 +329,7 @@ interface AppShellProps {
|
|
|
312
329
|
*/
|
|
313
330
|
contentClassName?: string;
|
|
314
331
|
}
|
|
315
|
-
declare function AppShell({ brand, navItems, action, user, pageTitle, breadcrumbs, footer, headerStart, headerEnd, renderLink, collapsible, sidebarPosition, side, contentClassName, children, }?: AppShellProps): react_jsx_runtime.JSX.Element;
|
|
332
|
+
declare function AppShell({ brand, navItems, action, user, pageTitle, breadcrumbs, footer, headerStart, headerEnd, renderLink, collapsible, sidebarPosition, sidebarContentKey, sidebarContentClassName, sidebarFooterStart, side, contentClassName, children, }?: AppShellProps): react_jsx_runtime.JSX.Element;
|
|
316
333
|
|
|
317
334
|
interface AppPageHeroProps {
|
|
318
335
|
eyebrow?: ReactNode;
|
|
@@ -354,8 +371,9 @@ interface AppFooterProps extends HTMLAttributes<HTMLElement> {
|
|
|
354
371
|
* the page outlet rather than inside a page pattern. Public marketing pages use
|
|
355
372
|
* the full `Footer` instead — this exists so long app pages do not end abruptly.
|
|
356
373
|
*
|
|
357
|
-
* The row owns
|
|
358
|
-
*
|
|
374
|
+
* The row owns its solid chrome surface and geometry so page ambience cannot
|
|
375
|
+
* bleed through it. What the slots contain — live status, version, links,
|
|
376
|
+
* product copy — stays with the product.
|
|
359
377
|
*/
|
|
360
378
|
declare function AppFooter({ start, end, children, className, ...props }: AppFooterProps): react_jsx_runtime.JSX.Element;
|
|
361
379
|
|
|
@@ -527,10 +545,18 @@ declare function OnboardingWizard({ steps, onComplete, onStepChange, step: stepP
|
|
|
527
545
|
interface EmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
528
546
|
icon?: LucideIcon;
|
|
529
547
|
title: string;
|
|
530
|
-
description?:
|
|
548
|
+
description?: React.ReactNode;
|
|
549
|
+
eyebrow?: React.ReactNode;
|
|
531
550
|
action?: React.ReactNode;
|
|
551
|
+
secondaryAction?: React.ReactNode;
|
|
552
|
+
/** Adds the application-card surface used for route-level empty states. */
|
|
553
|
+
variant?: 'plain' | 'card';
|
|
554
|
+
/** Reduces the card presentation's minimum height and padding. */
|
|
555
|
+
compact?: boolean;
|
|
556
|
+
/** Fills a flex-sized parent rather than using a fixed minimum height. */
|
|
557
|
+
fill?: boolean;
|
|
532
558
|
}
|
|
533
|
-
declare function EmptyState({ icon: Icon, title, description, action, className, ...props }: EmptyStateProps): react_jsx_runtime.JSX.Element;
|
|
559
|
+
declare function EmptyState({ icon: Icon, title, description, eyebrow, action, secondaryAction, variant, compact, fill, className, ...props }: EmptyStateProps): react_jsx_runtime.JSX.Element;
|
|
534
560
|
|
|
535
561
|
interface ErrorPageLink {
|
|
536
562
|
label: string;
|
|
@@ -1500,6 +1526,20 @@ interface DataTableProps<TData> {
|
|
|
1500
1526
|
*/
|
|
1501
1527
|
declare function DataTable<TData>({ columns, data, searchKey, searchPlaceholder, selectable, onSelectionChange, pageSize, toolbar, onRowClick, emptyMessage, className, }: DataTableProps<TData>): react_jsx_runtime.JSX.Element;
|
|
1502
1528
|
|
|
1529
|
+
interface LoadMoreProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1530
|
+
hasNextPage: boolean;
|
|
1531
|
+
isFetchingNextPage: boolean;
|
|
1532
|
+
fetchNextPage: () => void | Promise<unknown>;
|
|
1533
|
+
/** Watches the sentinel instead of showing a manual button. */
|
|
1534
|
+
auto?: boolean;
|
|
1535
|
+
/** Plural noun used by the manual button, for example `properties`. */
|
|
1536
|
+
label?: string;
|
|
1537
|
+
/** Starts loading before the sentinel reaches the viewport. */
|
|
1538
|
+
rootMargin?: string;
|
|
1539
|
+
}
|
|
1540
|
+
/** Cursor-pagination footer with either guarded infinite scroll or a manual fallback. */
|
|
1541
|
+
declare function LoadMore({ hasNextPage, isFetchingNextPage, fetchNextPage, auto, label, rootMargin, className, ...props }: LoadMoreProps): react_jsx_runtime.JSX.Element | null;
|
|
1542
|
+
|
|
1503
1543
|
type ViewMode = 'cards' | 'list';
|
|
1504
1544
|
interface UseViewModeReturn {
|
|
1505
1545
|
view: ViewMode;
|
|
@@ -2060,7 +2100,11 @@ interface PostListProps {
|
|
|
2060
2100
|
posts: PostCardProps[];
|
|
2061
2101
|
renderLink?: AppShellRenderLink;
|
|
2062
2102
|
emptyMessage?: string;
|
|
2063
|
-
/**
|
|
2103
|
+
/**
|
|
2104
|
+
* Max columns at the widest breakpoint. When omitted, one- and two-post
|
|
2105
|
+
* collections are balanced automatically instead of leaving an empty third
|
|
2106
|
+
* column.
|
|
2107
|
+
*/
|
|
2064
2108
|
columns?: 2 | 3;
|
|
2065
2109
|
className?: string;
|
|
2066
2110
|
}
|
|
@@ -2148,4 +2192,4 @@ interface UsePaginationReturn {
|
|
|
2148
2192
|
}
|
|
2149
2193
|
declare function usePagination(total: number, pageSize: number): UsePaginationReturn;
|
|
2150
2194
|
|
|
2151
|
-
export { ActivityFeed, type ActivityFeedItem, type ActivityFeedProps, AnimatedPill, type AnimatedPillProps, AnimatedSwap, type AnimatedSwapEffect, type AnimatedSwapProps, type AnimatedSwapSpec, AppContent, type AppContentProps, AppFooter, type AppFooterProps, AppGrid, AppGridCell, type AppGridCellProps, type AppGridColumns, type AppGridProps, type AppNavItem, AppPageHero, type AppPageHeroProps, AppScreen, AppShell, type AppShellAction, type AppShellBrand, type AppShellBreadcrumb, type AppShellProps, type AppShellRenderLink, type AppShellUser, type AuthFormProps, AuthSection, type AuthSectionProps, Badge, type BadgeProps, type BillingInvoice, BillingPanel, type BillingPanelProps, type BillingPaymentMethod, type BillingUsageMetric, BrandColorSwitchMinimal, Button, type ButtonProps, Card, type CardProps, Carousel, type CarouselProps, ChangelogCard, type ChangelogCardProps, type ChangelogHighlight, ChangelogList, type ChangelogListProps, type ChangelogReleaseType, Chart, type ChartProps, type ChartSeries, Checkbox, type CheckboxProps, CommandMenu, type CommandMenuGroup, type CommandMenuItem, type CommandMenuProps, type ComparisonColumn, ComparisonSection, type ComparisonSectionProps, ConfirmDialog, type ConfirmDialogProps, type ConfirmOptions, type ContactInfoItem, ContactSection, type ContactSectionProps, ContextMenu, type ContextMenuDef, type ContextMenuProps, CountUp, type CountUpProps, CountdownTimer, type CountdownTimerProps, CtaSection, type CtaSectionProps, DataTable, type DataTableProps, DataView, type DataViewProps, DevBanner, type DevBannerProps, Dock, type DockItem, type DockProps, EmptyState, type EmptyStateProps, ErrorPage, type ErrorPageProps, FadeIn, type FadeInProps, FaqSection, type FaqSectionProps, FeatureCard, type FeatureCardProps, type FeatureMarqueeItem, type FeatureMarqueeRow, FeatureMarqueeSection, type FeatureMarqueeSectionProps, FeaturesSection, type FeaturesSectionProps, FileUpload, type FileUploadEntry, type FileUploadProps, FlowBracket, type FlowBracketProps, FlowConnector, type FlowConnectorProps, Footer, type FooterProps, FullPageSpinner, GlassCard, type GlassCardProps, Grid, GridItem, type GridItemProps, type GridProps, type GroupedFeatureGroup, GroupedFeaturesSection, type GroupedFeaturesSectionProps, HeroSection, type HeroSectionProps, type Hotkey, ImageCard, type ImageCardProps, Input, type InputProps, LogoStrip, type LogoStripProps, type MarketingSectionSpacing, type MarketingSurface, MarketingSurfaceProvider, MediaCard, type MediaCardProps, ModeSwitchMinimal, Navbar, type NavbarProps, NewsletterSection, type NewsletterSectionProps, type NotificationItem, NotificationToast, type NotificationToastProps, NotificationsPopover, type NotificationsPopoverProps, type NotifyAction, type NotifyOptions, OlwibaUIProvider, type OlwibaUIProviderProps, type OnboardingStep, OnboardingWizard, type OnboardingWizardProps, Overlay, type OverlayProps, type OverlayVariant, PageHeader, type PageHeaderBackButton, type PageHeaderBreadcrumb, type PageHeaderProps, PageTransition, type PageTransitionProps, PhoneFrame, type PhoneFrameProps, type PostAuthor, PostCard, type PostCardProps, PostList, type PostListProps, PricingCard, type PricingCardProps, type PricingFeature, type PricingPlan, PricingSection, type PricingSectionProps, PublicPageFrame, type PublicPageFrameProps, type QualificationColumn, QualificationSection, type QualificationSectionProps, RegisterHotkeys, RootErrorFallback, Section, type SectionProps, SectionTitle, type SectionTitleProps, SettingsSection, type SettingsSectionProps, Sortable, type SortableProps, Spotlight, type SpotlightGroup, type SpotlightItem, type SpotlightProps, Stack, type StackProps, StaggerChildren, type StaggerChildrenProps, StatCard, type StatCardProps, StatsSection, type StatsSectionProps, type StepGroup, type StepItem, StepsSection, type StepsSectionProps, Suspensed, Switch, type SwitchProps, type TeamMember, type TeamMemberRecord, TeamMembersPanel, type TeamMembersPanelProps, TeamSection, type TeamSectionProps, type TechStackItem, TechStackSection, type TechStackSectionProps, TestimonialCard, type TestimonialCardProps, TestimonialsSection, type TestimonialsSectionProps, Textarea, type TextareaProps, ThemeColorUpdater, ThemeSwitchMinimal, type UIMode, Underlay, type UnderlayProps, type UnderlayVariant, UpdateBanner, type UpdateBannerProps, type UpgradeComparisonRow, UpgradePrompt, type UpgradePromptProps, type UseConfirmReturn, type UseControlledOpenReturn, type UsePaginationReturn, type UseViewModeReturn, VersionBanner, type ViewMode, ViewToggle, type ViewToggleProps, cn, marketingSectionSpacing, notify, useConfirm, useControlledOpen, useCopyToClipboard, useDebounce, useIntersectionObserver, useLocalStorage, useMarketingSurface, useMediaQuery, useMounted, useOlwibaUI, usePagination, useScrolledPast, useSectionSurface, useUIMode, useViewMode };
|
|
2195
|
+
export { ActivityFeed, type ActivityFeedItem, type ActivityFeedProps, AnimatedPill, type AnimatedPillProps, AnimatedSwap, type AnimatedSwapEffect, type AnimatedSwapProps, type AnimatedSwapSpec, AppContent, type AppContentProps, AppFooter, type AppFooterProps, AppGrid, AppGridCell, type AppGridCellProps, type AppGridColumns, type AppGridProps, type AppNavItem, AppPageHero, type AppPageHeroProps, AppScreen, AppShell, type AppShellAction, type AppShellBrand, type AppShellBreadcrumb, type AppShellHeaderControls, type AppShellHeaderStart, type AppShellProps, type AppShellRenderLink, type AppShellUser, type AuthFormProps, AuthSection, type AuthSectionProps, Badge, type BadgeProps, type BillingInvoice, BillingPanel, type BillingPanelProps, type BillingPaymentMethod, type BillingUsageMetric, BrandColorSwitchMinimal, Button, type ButtonProps, Card, type CardProps, Carousel, type CarouselProps, ChangelogCard, type ChangelogCardProps, type ChangelogHighlight, ChangelogList, type ChangelogListProps, type ChangelogReleaseType, Chart, type ChartProps, type ChartSeries, Checkbox, type CheckboxProps, CommandMenu, type CommandMenuGroup, type CommandMenuItem, type CommandMenuProps, type ComparisonColumn, ComparisonSection, type ComparisonSectionProps, ConfirmDialog, type ConfirmDialogProps, type ConfirmOptions, type ContactInfoItem, ContactSection, type ContactSectionProps, ContextMenu, type ContextMenuDef, type ContextMenuProps, CountUp, type CountUpProps, CountdownTimer, type CountdownTimerProps, CtaSection, type CtaSectionProps, DataTable, type DataTableProps, DataView, type DataViewProps, DevBanner, type DevBannerProps, Dock, type DockItem, type DockProps, EmptyState, type EmptyStateProps, ErrorPage, type ErrorPageProps, FadeIn, type FadeInProps, FaqSection, type FaqSectionProps, FeatureCard, type FeatureCardProps, type FeatureMarqueeItem, type FeatureMarqueeRow, FeatureMarqueeSection, type FeatureMarqueeSectionProps, FeaturesSection, type FeaturesSectionProps, FileUpload, type FileUploadEntry, type FileUploadProps, FlowBracket, type FlowBracketProps, FlowConnector, type FlowConnectorProps, Footer, type FooterProps, FullPageSpinner, GlassCard, type GlassCardProps, Grid, GridItem, type GridItemProps, type GridProps, type GroupedFeatureGroup, GroupedFeaturesSection, type GroupedFeaturesSectionProps, HeroSection, type HeroSectionProps, type Hotkey, ImageCard, type ImageCardProps, Input, type InputProps, LoadMore, type LoadMoreProps, LogoStrip, type LogoStripProps, type MarketingSectionSpacing, type MarketingSurface, MarketingSurfaceProvider, MediaCard, type MediaCardProps, ModeSwitchMinimal, Navbar, type NavbarProps, NewsletterSection, type NewsletterSectionProps, type NotificationItem, NotificationToast, type NotificationToastProps, NotificationsPopover, type NotificationsPopoverProps, type NotifyAction, type NotifyOptions, OlwibaUIProvider, type OlwibaUIProviderProps, type OnboardingStep, OnboardingWizard, type OnboardingWizardProps, Overlay, type OverlayProps, type OverlayVariant, PageHeader, type PageHeaderBackButton, type PageHeaderBreadcrumb, type PageHeaderProps, PageTransition, type PageTransitionProps, PhoneFrame, type PhoneFrameProps, type PostAuthor, PostCard, type PostCardProps, PostList, type PostListProps, PricingCard, type PricingCardProps, type PricingFeature, type PricingPlan, PricingSection, type PricingSectionProps, PublicPageFrame, type PublicPageFrameProps, type QualificationColumn, QualificationSection, type QualificationSectionProps, RegisterHotkeys, RootErrorFallback, Section, type SectionProps, SectionTitle, type SectionTitleProps, SettingsSection, type SettingsSectionProps, Sortable, type SortableProps, Spotlight, type SpotlightGroup, type SpotlightItem, type SpotlightProps, Stack, type StackProps, StaggerChildren, type StaggerChildrenProps, StatCard, type StatCardProps, StatsSection, type StatsSectionProps, type StepGroup, type StepItem, StepsSection, type StepsSectionProps, Suspensed, Switch, type SwitchProps, type TeamMember, type TeamMemberRecord, TeamMembersPanel, type TeamMembersPanelProps, TeamSection, type TeamSectionProps, type TechStackItem, TechStackSection, type TechStackSectionProps, TestimonialCard, type TestimonialCardProps, TestimonialsSection, type TestimonialsSectionProps, Textarea, type TextareaProps, ThemeColorUpdater, ThemeSwitchMinimal, type UIMode, Underlay, type UnderlayProps, type UnderlayVariant, UpdateBanner, type UpdateBannerProps, type UpgradeComparisonRow, UpgradePrompt, type UpgradePromptProps, type UseConfirmReturn, type UseControlledOpenReturn, type UsePaginationReturn, type UseViewModeReturn, VersionBanner, type ViewMode, ViewToggle, type ViewToggleProps, cn, marketingSectionSpacing, notify, useConfirm, useControlledOpen, useCopyToClipboard, useDebounce, useIntersectionObserver, useLocalStorage, useMarketingSurface, useMediaQuery, useMounted, useOlwibaUI, usePagination, useScrolledPast, useSectionSurface, useUIMode, useViewMode };
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { cn } from './chunk-AMWLSHD6.js';
|
|
|
2
2
|
export { MdxContent, cn } from './chunk-AMWLSHD6.js';
|
|
3
3
|
import * as React21 from 'react';
|
|
4
4
|
import { useRef, useEffect, useState, useCallback } from 'react';
|
|
5
|
-
import { Button as Button$1, Card as Card$1, Input as Input$1, Textarea as Textarea$1, Checkbox as Checkbox$1, Switch as Switch$1, useIsMobile, UIVariantProvider, Badge as Badge$1, SidebarProvider, SidebarInset, cn as cn$1, Table, TableHeader, TableRow, TableHead, TableBody, TableCell, Avatar, AvatarImage, AvatarFallback, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, Dialog, DialogTrigger, Progress, useUIVariant, Separator, Accordion, AccordionItem, AccordionTrigger, AccordionContent, Label, Sheet, SheetTrigger, SheetContent, StatusIndicator, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandSeparator, CommandGroup, CommandItem, TooltipProvider, Tooltip, TooltipTrigger, TooltipContent, ContextMenu as ContextMenu$1, ContextMenuTrigger, ContextMenuContent, AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction, CommandShortcut, Popover, PopoverTrigger, PopoverContent,
|
|
5
|
+
import { Button as Button$1, Card as Card$1, Input as Input$1, Textarea as Textarea$1, Checkbox as Checkbox$1, Switch as Switch$1, useIsMobile, UIVariantProvider, Badge as Badge$1, SidebarProvider, SidebarInset, cn as cn$1, Table, TableHeader, TableRow, TableHead, TableBody, TableCell, Avatar, AvatarImage, AvatarFallback, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, Dialog, DialogTrigger, Progress, useUIVariant, Separator, Accordion, AccordionItem, AccordionTrigger, AccordionContent, Label, Sheet, SheetTrigger, SheetContent, StatusIndicator, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandSeparator, CommandGroup, CommandItem, TooltipProvider, Tooltip, TooltipTrigger, TooltipContent, ContextMenu as ContextMenu$1, ContextMenuTrigger, ContextMenuContent, AlertDialog, AlertDialogContent, AlertDialogHeader, AlertDialogTitle, AlertDialogDescription, AlertDialogFooter, AlertDialogCancel, AlertDialogAction, CommandShortcut, Spinner, Popover, PopoverTrigger, PopoverContent, useSidebar, Sidebar, SidebarHeader, SidebarMenu, SidebarMenuItem, SidebarContent, SidebarGroup, SidebarGroupContent, SidebarMenuButton, SidebarFooter, SidebarTrigger, CardHeader, CardTitle, CardDescription, CardContent, InputOTP, InputOTPGroup, InputOTPSlot, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, DialogClose, ContextMenuSeparator, ContextMenuLabel, ContextMenuSub, ContextMenuSubTrigger, ContextMenuSubContent, ContextMenuItem, ContextMenuShortcut, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuGroup } from '@olwiba/cn';
|
|
6
6
|
export { CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Enchanted } from '@olwiba/cn';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
import { Search, ArrowUp, ArrowDown, ArrowUpDown, ChevronLeft, ChevronRight, MoreHorizontal, UserPlus, Download, CreditCard, Check, Loader2, ArrowLeft, ArrowUpRight, X, Sparkles, RefreshCw, ArrowRight, Minus, Quote, Star, Twitter, Github, Linkedin, Mail, MessageSquare, ChevronDown, Send, Menu, UploadCloud, File, CheckCircle2, AlertCircle, Bell, Inbox, Activity, TrendingUp, TrendingDown, LayoutGrid, List, Sun, Moon, Palette, AlertTriangle, Rocket, Info, Layers, BirdIcon, MoreVerticalIcon, CreditCardIcon, BellIcon, SettingsIcon, LogOutIcon, ShieldCheck, Building2 } from 'lucide-react';
|
|
@@ -302,7 +302,7 @@ function NavUser({ user }) {
|
|
|
302
302
|
children: [
|
|
303
303
|
/* @__PURE__ */ jsxs(Avatar, { mode: avatarMode, size: "sm", children: [
|
|
304
304
|
user.avatar && /* @__PURE__ */ jsx(AvatarImage, { src: user.avatar, alt: user.name }),
|
|
305
|
-
/* @__PURE__ */ jsx(AvatarFallback, { className: "text-white", style: identityTint, children: /* @__PURE__ */ jsx(
|
|
305
|
+
/* @__PURE__ */ jsx(AvatarFallback, { className: "text-white", style: identityTint, children: user.avatarFallback ?? /* @__PURE__ */ jsx(
|
|
306
306
|
BirdIcon,
|
|
307
307
|
{
|
|
308
308
|
"aria-hidden": true,
|
|
@@ -329,7 +329,7 @@ function NavUser({ user }) {
|
|
|
329
329
|
/* @__PURE__ */ jsx(DropdownMenuLabel, { className: "p-0 font-normal", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-1 py-1.5 text-left text-sm", children: [
|
|
330
330
|
/* @__PURE__ */ jsxs(Avatar, { mode: avatarMode, size: "sm", children: [
|
|
331
331
|
user.avatar && /* @__PURE__ */ jsx(AvatarImage, { src: user.avatar, alt: user.name }),
|
|
332
|
-
/* @__PURE__ */ jsx(AvatarFallback, { className: "text-white", style: identityTint, children: /* @__PURE__ */ jsx(
|
|
332
|
+
/* @__PURE__ */ jsx(AvatarFallback, { className: "text-white", style: identityTint, children: user.avatarFallback ?? /* @__PURE__ */ jsx(
|
|
333
333
|
BirdIcon,
|
|
334
334
|
{
|
|
335
335
|
"aria-hidden": true,
|
|
@@ -379,7 +379,10 @@ function ShellSidebar({
|
|
|
379
379
|
renderLink,
|
|
380
380
|
collapsible,
|
|
381
381
|
side,
|
|
382
|
-
sidebarPosition
|
|
382
|
+
sidebarPosition,
|
|
383
|
+
sidebarContentKey,
|
|
384
|
+
sidebarContentClassName,
|
|
385
|
+
sidebarFooterStart
|
|
383
386
|
}) {
|
|
384
387
|
const fallbackLogo = typeof brand.name === "string" ? brand.name.slice(0, 1).toUpperCase() : null;
|
|
385
388
|
const { isMobile, setOpenMobile } = useSidebar();
|
|
@@ -387,59 +390,83 @@ function ShellSidebar({
|
|
|
387
390
|
if (isMobile) setOpenMobile(false);
|
|
388
391
|
}, [isMobile, setOpenMobile]);
|
|
389
392
|
return /* @__PURE__ */ jsxs(Sidebar, { side, collapsible, sidebarPosition, children: [
|
|
390
|
-
/* @__PURE__ */ jsx(
|
|
391
|
-
|
|
393
|
+
/* @__PURE__ */ jsx(
|
|
394
|
+
SidebarHeader,
|
|
392
395
|
{
|
|
393
|
-
className: cn$1(
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
396
|
+
className: cn$1("py-3", sidebarContentClassName),
|
|
397
|
+
children: /* @__PURE__ */ jsx(SidebarMenu, { children: /* @__PURE__ */ jsx(SidebarMenuItem, { onClickCapture: closeMobileMenu, children: /* @__PURE__ */ jsxs(
|
|
398
|
+
"div",
|
|
399
|
+
{
|
|
400
|
+
className: cn$1(
|
|
401
|
+
"flex items-center gap-2 overflow-hidden rounded-md p-2 text-left",
|
|
402
|
+
RAIL_SQUARE
|
|
403
|
+
),
|
|
404
|
+
children: [
|
|
405
|
+
brand.logo ? (
|
|
406
|
+
// Neutral slot: the consumer's logo owns its own chrome
|
|
407
|
+
// (background, radius). Sized to fill the collapsed icon rail.
|
|
408
|
+
/* @__PURE__ */ jsx("span", { className: "flex size-8 shrink-0 items-center justify-center [&>svg]:size-5", children: brand.logo })
|
|
409
|
+
) : /* @__PURE__ */ jsx("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-lg bg-primary text-sm font-semibold text-primary-foreground", children: fallbackLogo }),
|
|
410
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 whitespace-nowrap text-base font-semibold leading-none [text-box-edge:ex_alphabetic] [text-box-trim:trim-both] group-data-[collapsible=icon]:hidden", children: brand.name })
|
|
411
|
+
]
|
|
412
|
+
}
|
|
413
|
+
) }) })
|
|
414
|
+
},
|
|
415
|
+
`${sidebarContentKey ?? "default"}-header`
|
|
416
|
+
),
|
|
417
|
+
/* @__PURE__ */ jsx(
|
|
418
|
+
SidebarContent,
|
|
419
|
+
{
|
|
420
|
+
className: sidebarContentClassName,
|
|
421
|
+
children: /* @__PURE__ */ jsx(SidebarGroup, { children: /* @__PURE__ */ jsxs(SidebarGroupContent, { className: "flex flex-col gap-2", children: [
|
|
422
|
+
action && /* @__PURE__ */ jsx(SidebarMenu, { children: /* @__PURE__ */ jsx(SidebarMenuItem, { onClickCapture: closeMobileMenu, children: action.href ? /* @__PURE__ */ jsx(
|
|
423
|
+
SidebarMenuButton,
|
|
424
|
+
{
|
|
425
|
+
asChild: true,
|
|
426
|
+
tooltip: action.label,
|
|
427
|
+
className: "min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground",
|
|
428
|
+
children: renderLink({
|
|
429
|
+
href: action.href,
|
|
430
|
+
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
431
|
+
action.icon && /* @__PURE__ */ jsx(action.icon, {}),
|
|
432
|
+
/* @__PURE__ */ jsx("span", { children: action.label })
|
|
433
|
+
] })
|
|
434
|
+
})
|
|
435
|
+
}
|
|
436
|
+
) : /* @__PURE__ */ jsxs(
|
|
437
|
+
SidebarMenuButton,
|
|
438
|
+
{
|
|
439
|
+
tooltip: action.label,
|
|
440
|
+
onClick: action.onClick,
|
|
441
|
+
className: "min-w-8 bg-primary text-primary-foreground duration-200 ease-linear hover:bg-primary/90 hover:text-primary-foreground active:bg-primary/90 active:text-primary-foreground",
|
|
442
|
+
children: [
|
|
443
|
+
action.icon && /* @__PURE__ */ jsx(action.icon, {}),
|
|
444
|
+
/* @__PURE__ */ jsx("span", { children: action.label })
|
|
445
|
+
]
|
|
446
|
+
}
|
|
447
|
+
) }) }),
|
|
448
|
+
/* @__PURE__ */ jsx(SidebarMenu, { children: navItems.map((item) => /* @__PURE__ */ jsx(SidebarMenuItem, { onClickCapture: closeMobileMenu, children: /* @__PURE__ */ jsx(SidebarMenuButton, { asChild: true, tooltip: item.label, isActive: item.isActive, children: renderLink({
|
|
449
|
+
href: item.href,
|
|
416
450
|
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
417
|
-
|
|
418
|
-
/* @__PURE__ */ jsx("span", { children:
|
|
451
|
+
/* @__PURE__ */ jsx(item.icon, {}),
|
|
452
|
+
/* @__PURE__ */ jsx("span", { children: item.label })
|
|
419
453
|
] })
|
|
420
|
-
})
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
437
|
-
/* @__PURE__ */ jsx(item.icon, {}),
|
|
438
|
-
/* @__PURE__ */ jsx("span", { children: item.label })
|
|
439
|
-
] })
|
|
440
|
-
}) }) }, item.label)) })
|
|
441
|
-
] }) }) }),
|
|
442
|
-
/* @__PURE__ */ jsx(SidebarFooter, { children: /* @__PURE__ */ jsx(NavUser, { user }) })
|
|
454
|
+
}) }) }, item.label)) })
|
|
455
|
+
] }) })
|
|
456
|
+
},
|
|
457
|
+
`${sidebarContentKey ?? "default"}-content`
|
|
458
|
+
),
|
|
459
|
+
/* @__PURE__ */ jsxs(
|
|
460
|
+
SidebarFooter,
|
|
461
|
+
{
|
|
462
|
+
className: sidebarContentClassName,
|
|
463
|
+
children: [
|
|
464
|
+
sidebarFooterStart,
|
|
465
|
+
/* @__PURE__ */ jsx(NavUser, { user })
|
|
466
|
+
]
|
|
467
|
+
},
|
|
468
|
+
`${sidebarContentKey ?? "default"}-footer`
|
|
469
|
+
)
|
|
443
470
|
] });
|
|
444
471
|
}
|
|
445
472
|
function ShellHeader({
|
|
@@ -449,13 +476,19 @@ function ShellHeader({
|
|
|
449
476
|
headerEnd,
|
|
450
477
|
renderLink
|
|
451
478
|
}) {
|
|
479
|
+
const { isMobile, setOpen, setOpenMobile } = useSidebar();
|
|
480
|
+
const expandSidebar = useCallback(() => {
|
|
481
|
+
if (isMobile) setOpenMobile(true);
|
|
482
|
+
else setOpen(true);
|
|
483
|
+
}, [isMobile, setOpen, setOpenMobile]);
|
|
484
|
+
const headerStartContent = typeof headerStart === "function" ? headerStart({ expandSidebar }) : headerStart;
|
|
452
485
|
const source = breadcrumbs?.length ? breadcrumbs : pageTitle ? [pageTitle] : [];
|
|
453
486
|
const trail = source.map(
|
|
454
487
|
(crumb) => typeof crumb === "string" ? { label: crumb, href: void 0 } : crumb
|
|
455
488
|
);
|
|
456
489
|
return /* @__PURE__ */ jsx("header", { className: "flex h-12 shrink-0 items-center gap-2 border-b transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12", children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center gap-1 px-4 lg:gap-2 lg:px-6", children: [
|
|
457
490
|
/* @__PURE__ */ jsx(SidebarTrigger, { className: "-ml-1" }),
|
|
458
|
-
|
|
491
|
+
headerStartContent && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: headerStartContent }),
|
|
459
492
|
trail.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
460
493
|
/* @__PURE__ */ jsx(Separator, { orientation: "vertical", className: "mx-2 data-[orientation=vertical]:h-4" }),
|
|
461
494
|
/* @__PURE__ */ jsx("nav", { "aria-label": "Breadcrumb", className: "flex min-w-0 items-center gap-1.5 text-sm", children: trail.map((crumb, index) => {
|
|
@@ -513,6 +546,9 @@ function AppShell({
|
|
|
513
546
|
renderLink = defaultRenderLink,
|
|
514
547
|
collapsible = "icon",
|
|
515
548
|
sidebarPosition = "viewport",
|
|
549
|
+
sidebarContentKey,
|
|
550
|
+
sidebarContentClassName,
|
|
551
|
+
sidebarFooterStart,
|
|
516
552
|
side = "left",
|
|
517
553
|
contentClassName = "p-6",
|
|
518
554
|
children
|
|
@@ -534,7 +570,10 @@ function AppShell({
|
|
|
534
570
|
renderLink,
|
|
535
571
|
collapsible,
|
|
536
572
|
side,
|
|
537
|
-
sidebarPosition
|
|
573
|
+
sidebarPosition,
|
|
574
|
+
sidebarContentKey,
|
|
575
|
+
sidebarContentClassName,
|
|
576
|
+
sidebarFooterStart
|
|
538
577
|
}
|
|
539
578
|
),
|
|
540
579
|
/* @__PURE__ */ jsxs(SidebarInset, { className: "overflow-y-auto", children: [
|
|
@@ -667,7 +706,7 @@ function AppFooter({ start, end, children, className, ...props }) {
|
|
|
667
706
|
{
|
|
668
707
|
...props,
|
|
669
708
|
className: cn(
|
|
670
|
-
"border-t px-4 py-3 text-xs text-muted-foreground sm:px-6",
|
|
709
|
+
"border-t bg-background px-4 py-3 text-xs text-muted-foreground sm:px-6",
|
|
671
710
|
className
|
|
672
711
|
),
|
|
673
712
|
children: /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center justify-between gap-3", children: [
|
|
@@ -1314,19 +1353,55 @@ function OnboardingWizard({
|
|
|
1314
1353
|
] })
|
|
1315
1354
|
] });
|
|
1316
1355
|
}
|
|
1317
|
-
function EmptyState({
|
|
1356
|
+
function EmptyState({
|
|
1357
|
+
icon: Icon,
|
|
1358
|
+
title,
|
|
1359
|
+
description,
|
|
1360
|
+
eyebrow,
|
|
1361
|
+
action,
|
|
1362
|
+
secondaryAction,
|
|
1363
|
+
variant = "plain",
|
|
1364
|
+
compact = false,
|
|
1365
|
+
fill = false,
|
|
1366
|
+
className,
|
|
1367
|
+
...props
|
|
1368
|
+
}) {
|
|
1369
|
+
const card = variant === "card";
|
|
1318
1370
|
return /* @__PURE__ */ jsxs(
|
|
1319
1371
|
"div",
|
|
1320
1372
|
{
|
|
1321
|
-
className: cn$1(
|
|
1373
|
+
className: cn$1(
|
|
1374
|
+
"relative flex flex-col items-center justify-center overflow-hidden text-center",
|
|
1375
|
+
!card && "gap-3 py-12",
|
|
1376
|
+
card && "min-h-72 rounded-xl border border-dashed bg-card/80 p-8 shadow-sm sm:p-10",
|
|
1377
|
+
card && compact && "min-h-0 p-5 sm:p-6",
|
|
1378
|
+
fill && "min-h-0 w-full flex-1",
|
|
1379
|
+
className
|
|
1380
|
+
),
|
|
1322
1381
|
...props,
|
|
1323
1382
|
children: [
|
|
1324
|
-
|
|
1325
|
-
/* @__PURE__ */ jsxs("div", { className: "
|
|
1326
|
-
/* @__PURE__ */ jsx(
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1383
|
+
card && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-x-10 top-0 h-24 rounded-full bg-primary/10 blur-3xl" }),
|
|
1384
|
+
/* @__PURE__ */ jsxs("div", { className: cn$1("relative flex flex-col items-center", card ? "gap-4" : "gap-3"), children: [
|
|
1385
|
+
Icon && /* @__PURE__ */ jsx(
|
|
1386
|
+
"div",
|
|
1387
|
+
{
|
|
1388
|
+
className: cn$1(
|
|
1389
|
+
"flex size-12 items-center justify-center rounded-2xl border",
|
|
1390
|
+
card ? "bg-background text-primary shadow-sm" : "bg-muted text-muted-foreground"
|
|
1391
|
+
),
|
|
1392
|
+
children: /* @__PURE__ */ jsx(Icon, { className: card ? "size-5" : "size-6" })
|
|
1393
|
+
}
|
|
1394
|
+
),
|
|
1395
|
+
/* @__PURE__ */ jsxs("div", { className: cn$1(card ? "max-w-md space-y-2" : "max-w-xs space-y-1"), children: [
|
|
1396
|
+
eyebrow && /* @__PURE__ */ jsx("p", { className: "text-xs font-medium uppercase tracking-[0.2em] text-muted-foreground", children: eyebrow }),
|
|
1397
|
+
/* @__PURE__ */ jsx("h3", { className: cn$1("font-semibold", card && "text-xl tracking-tight"), children: title }),
|
|
1398
|
+
description && /* @__PURE__ */ jsx("div", { className: cn$1("text-sm text-muted-foreground", card && "leading-6"), children: description })
|
|
1399
|
+
] }),
|
|
1400
|
+
(action || secondaryAction) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-3 sm:flex-row", children: [
|
|
1401
|
+
action,
|
|
1402
|
+
secondaryAction
|
|
1403
|
+
] })
|
|
1404
|
+
] })
|
|
1330
1405
|
]
|
|
1331
1406
|
}
|
|
1332
1407
|
);
|
|
@@ -4126,6 +4201,51 @@ function CommandMenu({
|
|
|
4126
4201
|
] })
|
|
4127
4202
|
] });
|
|
4128
4203
|
}
|
|
4204
|
+
function LoadMore({
|
|
4205
|
+
hasNextPage,
|
|
4206
|
+
isFetchingNextPage,
|
|
4207
|
+
fetchNextPage,
|
|
4208
|
+
auto = true,
|
|
4209
|
+
label = "more",
|
|
4210
|
+
rootMargin = "400px",
|
|
4211
|
+
className,
|
|
4212
|
+
...props
|
|
4213
|
+
}) {
|
|
4214
|
+
const sentinelRef = React21.useRef(null);
|
|
4215
|
+
const stateRef = React21.useRef({ hasNextPage, isFetchingNextPage, fetchNextPage });
|
|
4216
|
+
stateRef.current = { hasNextPage, isFetchingNextPage, fetchNextPage };
|
|
4217
|
+
React21.useEffect(() => {
|
|
4218
|
+
if (!auto) return;
|
|
4219
|
+
const node = sentinelRef.current;
|
|
4220
|
+
if (!node) return;
|
|
4221
|
+
const observer = new IntersectionObserver(
|
|
4222
|
+
([entry]) => {
|
|
4223
|
+
if (!entry?.isIntersecting) return;
|
|
4224
|
+
const state = stateRef.current;
|
|
4225
|
+
if (state.hasNextPage && !state.isFetchingNextPage) void state.fetchNextPage();
|
|
4226
|
+
},
|
|
4227
|
+
{ rootMargin }
|
|
4228
|
+
);
|
|
4229
|
+
observer.observe(node);
|
|
4230
|
+
return () => observer.disconnect();
|
|
4231
|
+
}, [auto, rootMargin]);
|
|
4232
|
+
if (!hasNextPage) return null;
|
|
4233
|
+
return /* @__PURE__ */ jsx("div", { ref: sentinelRef, className: cn$1("flex justify-center py-4", className), ...props, children: auto ? /* @__PURE__ */ jsx("span", { className: "flex h-9 items-center text-sm text-muted-foreground", "aria-live": "polite", children: isFetchingNextPage && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4234
|
+
/* @__PURE__ */ jsx(Spinner, { className: "mr-2 size-4" }),
|
|
4235
|
+
" Loading more\u2026"
|
|
4236
|
+
] }) }) : /* @__PURE__ */ jsx(
|
|
4237
|
+
Button$1,
|
|
4238
|
+
{
|
|
4239
|
+
variant: "outline",
|
|
4240
|
+
onClick: () => void fetchNextPage(),
|
|
4241
|
+
disabled: isFetchingNextPage,
|
|
4242
|
+
children: isFetchingNextPage ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
4243
|
+
/* @__PURE__ */ jsx(Spinner, { className: "mr-2 size-4" }),
|
|
4244
|
+
" Loading\u2026"
|
|
4245
|
+
] }) : `Load more ${label}`
|
|
4246
|
+
}
|
|
4247
|
+
) });
|
|
4248
|
+
}
|
|
4129
4249
|
function DataView({
|
|
4130
4250
|
items,
|
|
4131
4251
|
getRowId,
|
|
@@ -5455,18 +5575,21 @@ function PostList({
|
|
|
5455
5575
|
posts,
|
|
5456
5576
|
renderLink,
|
|
5457
5577
|
emptyMessage = "No posts published yet.",
|
|
5458
|
-
columns
|
|
5578
|
+
columns,
|
|
5459
5579
|
className
|
|
5460
5580
|
}) {
|
|
5461
5581
|
if (posts.length === 0) {
|
|
5462
5582
|
return /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground italic", children: emptyMessage });
|
|
5463
5583
|
}
|
|
5584
|
+
const resolvedColumns = columns ?? (posts.length < 3 ? 2 : 3);
|
|
5585
|
+
const balancedShortListClassName = columns === void 0 ? posts.length === 1 ? "mx-auto w-full max-w-md sm:grid-cols-1" : posts.length === 2 ? "mx-auto w-full max-w-3xl" : void 0 : void 0;
|
|
5464
5586
|
return /* @__PURE__ */ jsx(
|
|
5465
5587
|
"div",
|
|
5466
5588
|
{
|
|
5467
5589
|
className: cn$1(
|
|
5468
5590
|
"grid grid-cols-1 gap-x-8 gap-y-14 sm:grid-cols-2",
|
|
5469
|
-
|
|
5591
|
+
resolvedColumns === 3 && "lg:grid-cols-3",
|
|
5592
|
+
balancedShortListClassName,
|
|
5470
5593
|
className
|
|
5471
5594
|
),
|
|
5472
5595
|
children: posts.map((post) => /* @__PURE__ */ jsx(PostCard, { ...post, renderLink }, post.slug))
|
|
@@ -5684,6 +5807,6 @@ function usePagination(total, pageSize) {
|
|
|
5684
5807
|
return { page, pageSize, totalPages, offset, hasPrev: page > 1, hasNext: page < totalPages, goTo, next, prev };
|
|
5685
5808
|
}
|
|
5686
5809
|
|
|
5687
|
-
export { ActivityFeed, AnimatedPill, AnimatedSwap, AppContent, AppFooter, AppGrid, AppGridCell, AppPageHero, AppScreen, AppShell, AuthSection, Badge, BillingPanel, BrandColorSwitchMinimal, Button, Card, Carousel, ChangelogCard, ChangelogList, Chart, Checkbox, CommandMenu, ComparisonSection, ConfirmDialog, ContactSection, ContextMenu, CountUp, CountdownTimer, CtaSection, DataTable, DataView, DevBanner, Dock, EmptyState, ErrorPage, FadeIn, FaqSection, FeatureCard, FeatureMarqueeSection, FeaturesSection, FileUpload, FlowBracket, FlowConnector, Footer, FullPageSpinner, GlassCard, Grid, GridItem, GroupedFeaturesSection, HeroSection, ImageCard, Input, LogoStrip, MarketingSurfaceProvider, MediaCard, ModeSwitchMinimal, Navbar, NewsletterSection, NotificationToast, NotificationsPopover, OlwibaUIProvider, OnboardingWizard, Overlay, PageHeader, PageTransition, PhoneFrame, PostCard, PostList, PricingCard, PricingSection, PublicPageFrame, QualificationSection, RegisterHotkeys, RootErrorFallback, Section, SectionTitle, SettingsSection, Sortable, Spotlight, Stack, StaggerChildren, StatCard, StatsSection, StepsSection, Suspensed, Switch, TeamMembersPanel, TeamSection, TechStackSection, TestimonialCard, TestimonialsSection, Textarea, ThemeColorUpdater, ThemeSwitchMinimal, Underlay, UpdateBanner, UpgradePrompt, VersionBanner, ViewToggle, marketingSectionSpacing, notify, useConfirm, useControlledOpen, useCopyToClipboard, useDebounce, useIntersectionObserver, useLocalStorage, useMarketingSurface, useMediaQuery, useMounted, useOlwibaUI, usePagination, useScrolledPast, useSectionSurface, useUIMode, useViewMode };
|
|
5810
|
+
export { ActivityFeed, AnimatedPill, AnimatedSwap, AppContent, AppFooter, AppGrid, AppGridCell, AppPageHero, AppScreen, AppShell, AuthSection, Badge, BillingPanel, BrandColorSwitchMinimal, Button, Card, Carousel, ChangelogCard, ChangelogList, Chart, Checkbox, CommandMenu, ComparisonSection, ConfirmDialog, ContactSection, ContextMenu, CountUp, CountdownTimer, CtaSection, DataTable, DataView, DevBanner, Dock, EmptyState, ErrorPage, FadeIn, FaqSection, FeatureCard, FeatureMarqueeSection, FeaturesSection, FileUpload, FlowBracket, FlowConnector, Footer, FullPageSpinner, GlassCard, Grid, GridItem, GroupedFeaturesSection, HeroSection, ImageCard, Input, LoadMore, LogoStrip, MarketingSurfaceProvider, MediaCard, ModeSwitchMinimal, Navbar, NewsletterSection, NotificationToast, NotificationsPopover, OlwibaUIProvider, OnboardingWizard, Overlay, PageHeader, PageTransition, PhoneFrame, PostCard, PostList, PricingCard, PricingSection, PublicPageFrame, QualificationSection, RegisterHotkeys, RootErrorFallback, Section, SectionTitle, SettingsSection, Sortable, Spotlight, Stack, StaggerChildren, StatCard, StatsSection, StepsSection, Suspensed, Switch, TeamMembersPanel, TeamSection, TechStackSection, TestimonialCard, TestimonialsSection, Textarea, ThemeColorUpdater, ThemeSwitchMinimal, Underlay, UpdateBanner, UpgradePrompt, VersionBanner, ViewToggle, marketingSectionSpacing, notify, useConfirm, useControlledOpen, useCopyToClipboard, useDebounce, useIntersectionObserver, useLocalStorage, useMarketingSurface, useMediaQuery, useMounted, useOlwibaUI, usePagination, useScrolledPast, useSectionSurface, useUIMode, useViewMode };
|
|
5688
5811
|
//# sourceMappingURL=index.js.map
|
|
5689
5812
|
//# sourceMappingURL=index.js.map
|