noorui-rtl 0.4.1 → 0.4.3

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/CHANGELOG.md CHANGED
@@ -5,6 +5,56 @@ All notable changes to Noor UI will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - **Website**: Added "Starters" link to main navigation (both desktop and mobile)
12
+ - **Website**: Added i18n translations for "Starters" menu item (English: "Starters", Arabic: "نماذج البداية")
13
+ - **Website**: Added /starters page to sitemap.ts for SEO (priority: 0.8, weekly updates)
14
+ - **SEO**: Added 3 OG images (bilingual, Arabic, English) at 1200×630px for social sharing
15
+ - **SEO**: Updated root layout metadata with comprehensive OpenGraph and Twitter Card metadata
16
+ - **Documentation**: Added OG image to main README.md for visual impact on GitHub
17
+ - **Documentation**: Added OG image to npm package README (packages/noorui/README.md)
18
+ - **Documentation**: Updated /starters page with Kitab Blog Starter information
19
+ - **Documentation**: Added Kitab live demo link (kitab.noorui.com) and GitHub repository
20
+ - **Documentation**: Updated README.md to include Starters page in documentation links
21
+ - **Documentation**: Updated ROADMAP.md to highlight Kitab as completed deliverable
22
+ - **Documentation**: Updated starters/README.md with full Kitab feature list
23
+
24
+ ### Changed
25
+ - **Website**: Improved visibility of /starters page through navigation integration
26
+ - **Starters Page**: Replaced placeholder "Blog Dashboard" with production-ready "Kitab - Blog Starter"
27
+ - **Starters Page**: Updated GitHub button to link to https://github.com/topics/noor-ui for broader project discovery
28
+ - **Roadmap**: Updated current status to "READY FOR PUBLIC LAUNCH" with technical pre-launch checklist completed
29
+ - **Roadmap**: Added Kitab to recent wins and next actions focused on marketing launch
30
+
31
+ ## [0.4.2] - 2025-11-29
32
+
33
+ ### Added
34
+ - **DataTable**: New `enableSorting` prop for automatic internal sort state management. No need to manage `sortBy` and `sortDirection` state yourself - perfect for simple tables
35
+ - **DataTable**: New `defaultSortBy` and `defaultSortDirection` props to set initial sort state when using `enableSorting`
36
+ - **DataTable**: New `mobileSorting` prop (default: true) to show/hide sort buttons on mobile card view
37
+ - **DataTable**: Full sorting support for mobile card view with dedicated sort buttons above cards
38
+ - **DataTable**: Pagination controls with Previous/Next buttons. Previously only showed "Page X of Y" text without navigation buttons
39
+ - **DataTable**: Automatic sorting logic handles strings (with `localeCompare`), numbers, dates, and null values
40
+ - **Documentation**: Added "Simple Sorting" example showing the new `enableSorting` feature with code samples
41
+
42
+ ### Fixed
43
+ - **DataTable**: Fixed search clear button (X icon) positioning in RTL mode. Changed from `me-1` to `end-1` for proper logical positioning
44
+ - **DataTable**: Fixed pagination chevron icons in RTL mode with `rtl:rotate-180` class so arrows point in correct reading direction
45
+ - **DataTable**: Fixed pagination not working correctly. Component now follows controlled pattern - parent slices data, DataTable displays it. Removed internal data slicing that was preventing page changes from updating content
46
+ - **DataTable Documentation**: Fixed "Complete Example" not paginating correctly by adding separate pagination state and properly slicing filtered data
47
+ - **PrayerTimes**: Fixed incorrect locale check (`locale === 'ar'`) to use direction check (`direction === 'rtl'`). Component now works with ALL RTL languages (Hebrew, Urdu, Farsi, etc.), not just Arabic
48
+ - **HijriDate**: Fixed incorrect locale check (`locale === 'ar'`) to use direction check (`direction === 'rtl'`). Component now works with ALL RTL languages (Hebrew, Urdu, Farsi, etc.), not just Arabic
49
+ - **RangeSlider**: Resolved RTL label formatting - simplified to use universal min-max format ("100 - 500") that works naturally across all languages. Numbers and ranges are international conventions that don't need language-specific formatting
50
+
51
+ ### Changed
52
+ - **DataTable**: Sorting state now cycles through: asc → desc → null (clears sort) instead of just toggling between asc/desc
53
+ - **DataTable**: Mobile table view now includes sort buttons in headers (previously desktop-only)
54
+ - **DataTable**: Documentation restructured to show simple internal sorting example before advanced external state management
55
+
56
+ ---
57
+
8
58
  ## [0.4.1] - 2025-11-29
9
59
 
10
60
  ### Added
package/CONTRIBUTING.md CHANGED
@@ -300,6 +300,7 @@ hooks/
300
300
 
301
301
  ## Questions?
302
302
 
303
+ - 💬 Discord: [Join our community](https://discord.gg/gvrqU2WG)
303
304
  - 💬 Open an issue for questions
304
305
  - 📧 Email: info@ositaka.com
305
306
  - 🐛 Report bugs via GitHub issues
package/README.md CHANGED
@@ -5,6 +5,8 @@
5
5
  [![npm version](https://badge.fury.io/js/noorui-rtl.svg)](https://www.npmjs.com/package/noorui-rtl)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
7
7
 
8
+ ![Noor UI - Beautiful RTL-first React components for bilingual applications](https://raw.githubusercontent.com/ositaka/noor-ui/main/public/noorui--og-image--bilingual.png)
9
+
8
10
  Beautiful RTL-first React components for bilingual applications. Built with Radix UI, Tailwind CSS, and full Arabic/English support.
9
11
 
10
12
  **[Documentation](https://noorui.com)** · **[Examples](https://noorui.com/examples)** · **[npm](https://www.npmjs.com/package/noorui-rtl)**
@@ -298,6 +300,7 @@ Full documentation, examples, and guides available at **[noorui.com](https://noo
298
300
  - [Components](https://noorui.com/components)
299
301
  - [RTL Guide](https://noorui.com/rtl-guide)
300
302
  - [Examples](https://noorui.com/examples)
303
+ - [Starters](https://noorui.com/starters)
301
304
  - [Design Tokens](https://noorui.com/tokens)
302
305
 
303
306
  ## 🤝 Contributing
@@ -318,6 +321,7 @@ Built with:
318
321
 
319
322
  ## 💬 Support
320
323
 
324
+ - 💬 Discord: [Join our community](https://discord.gg/gvrqU2WG)
321
325
  - 📧 Email: info@ositaka.com
322
326
  - 🐛 Issues: [GitHub Issues](https://github.com/ositaka/noor-ui/issues)
323
327
  - 💬 Discussions: [GitHub Discussions](https://github.com/ositaka/noor-ui/discussions)
package/dist/index.d.mts CHANGED
@@ -656,6 +656,12 @@ interface DataTableProps<T> {
656
656
  sortBy?: string;
657
657
  sortDirection?: SortDirection;
658
658
  onSort?: (columnId: string) => void;
659
+ /** Enable internal sorting (auto-manages sort state) */
660
+ enableSorting?: boolean;
661
+ /** Default column to sort by */
662
+ defaultSortBy?: string;
663
+ /** Default sort direction */
664
+ defaultSortDirection?: SortDirection;
659
665
  searchable?: boolean;
660
666
  searchPlaceholder?: string;
661
667
  searchPlaceholderAr?: string;
@@ -667,7 +673,12 @@ interface DataTableProps<T> {
667
673
  totalPages?: number;
668
674
  pageSize?: number;
669
675
  onPageChange?: (page: number) => void;
676
+ nextLabel?: string;
677
+ previousLabel?: string;
678
+ pageLabel?: string;
670
679
  mobileView?: 'table' | 'cards';
680
+ /** Show sort buttons on mobile cards */
681
+ mobileSorting?: boolean;
671
682
  emptyMessage?: string;
672
683
  emptyMessageAr?: string;
673
684
  className?: string;
@@ -675,7 +686,7 @@ interface DataTableProps<T> {
675
686
  hoverable?: boolean;
676
687
  compact?: boolean;
677
688
  }
678
- declare function DataTable<T>({ data, columns, isLoading, sortBy, sortDirection, onSort, searchable, searchPlaceholder, searchPlaceholderAr, searchValue, onSearchChange, pagination, currentPage, totalPages, pageSize, onPageChange, mobileView, emptyMessage, emptyMessageAr, className, striped, hoverable, compact, }: DataTableProps<T>): React$1.JSX.Element;
689
+ declare function DataTable<T>({ data, columns, isLoading, sortBy: externalSortBy, sortDirection: externalSortDirection, onSort: externalOnSort, enableSorting, defaultSortBy, defaultSortDirection, searchable, searchPlaceholder, searchPlaceholderAr, searchValue, onSearchChange, pagination, currentPage, totalPages, pageSize, onPageChange, nextLabel, previousLabel, pageLabel, mobileView, mobileSorting, emptyMessage, emptyMessageAr, className, striped, hoverable, compact, }: DataTableProps<T>): React$1.JSX.Element;
679
690
 
680
691
  interface DatePickerProps {
681
692
  date?: Date;
@@ -1423,6 +1434,34 @@ declare const Skeleton: React$1.ForwardRefExoticComponent<SkeletonProps & React$
1423
1434
 
1424
1435
  declare const Slider: React$1.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
1425
1436
 
1437
+ interface RangeSliderProps {
1438
+ /** Minimum value of the range */
1439
+ min?: number;
1440
+ /** Maximum value of the range */
1441
+ max?: number;
1442
+ /** Step increment */
1443
+ step?: number;
1444
+ /** Current range value [min, max] */
1445
+ value?: [number, number];
1446
+ /** Default range value [min, max] */
1447
+ defaultValue?: [number, number];
1448
+ /** Callback when range changes */
1449
+ onValueChange?: (value: [number, number]) => void;
1450
+ /** Format function for labels (e.g., price formatting) */
1451
+ formatLabel?: (value: number) => string;
1452
+ /** Show labels above thumbs */
1453
+ showLabels?: boolean;
1454
+ /** Show min/max labels */
1455
+ showMinMax?: boolean;
1456
+ /** Disabled state */
1457
+ disabled?: boolean;
1458
+ /** Additional className */
1459
+ className?: string;
1460
+ /** Direction override */
1461
+ dir?: 'ltr' | 'rtl';
1462
+ }
1463
+ declare const RangeSlider: React$1.ForwardRefExoticComponent<RangeSliderProps & React$1.RefAttributes<HTMLDivElement>>;
1464
+
1426
1465
  interface StatsCardProps {
1427
1466
  icon: React.ReactNode;
1428
1467
  label: string;
@@ -1862,4 +1901,4 @@ declare function useRelativeTime(date: Date | string, locale?: string, options?:
1862
1901
  */
1863
1902
  declare function cn(...inputs: ClassValue[]): string;
1864
1903
 
1865
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, ArabicNumber, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Blockquote, type BlockquoteProps, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonArrow, type ButtonArrowProps, type ButtonProps, Calendar, Callout, type CalloutProps, type CalloutType, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatMessage, Checkbox, ClientProviders, Collapsible, CollapsibleContent, CollapsibleTrigger, type ColumnDef, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContentRenderer, type ContentRendererProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ConversationHistory, DashboardShell, DataTable, type DataTableProps, DatePicker, DesignSystemProvider, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectionProvider, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, ErrorCallout, FeatureCard, FileUpload, Form, FormDescription, FormField, FormItem, FormLabel, FormMessage, type FormProps, HijriDate, InfoCallout, Input, type InputProps, Kbd, type KbdProps, Label, ListingCard, LoadingSpinner, MessageActions, ModelSelector, NotificationCenter, NumberInput, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, ParameterSlider, Popover, PopoverContent, PopoverTrigger, PrayerTimes, Progress, PromptInput, PullQuote, type PullQuoteProps, RadioGroup, RadioGroupItem, type Reaction, ReactionPicker, type ReactionPickerProps, RichTextEditor, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, type SortDirection, StatsCard, type StatsCardProps, type Step, Stepper, type StepperProps, StreamingText, SuccessCallout, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThinkingIndicator, TimePicker, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, TokenCounter, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserBadge, type UserBadgeProps, type UserBadgeVariant, UserMenu, WarningCallout, WorkflowCanvas, WorkflowNode, ZakatCalculator, badgeVariants, buttonVariants, cn, useDesignSystem, useDirection, useRelativeTime, workflowNodeTypes };
1904
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, ArabicNumber, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Blockquote, type BlockquoteProps, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonArrow, type ButtonArrowProps, type ButtonProps, Calendar, Callout, type CalloutProps, type CalloutType, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatMessage, Checkbox, ClientProviders, Collapsible, CollapsibleContent, CollapsibleTrigger, type ColumnDef, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContentRenderer, type ContentRendererProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ConversationHistory, DashboardShell, DataTable, type DataTableProps, DatePicker, DesignSystemProvider, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectionProvider, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, ErrorCallout, FeatureCard, FileUpload, Form, FormDescription, FormField, FormItem, FormLabel, FormMessage, type FormProps, HijriDate, InfoCallout, Input, type InputProps, Kbd, type KbdProps, Label, ListingCard, LoadingSpinner, MessageActions, ModelSelector, NotificationCenter, NumberInput, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, ParameterSlider, Popover, PopoverContent, PopoverTrigger, PrayerTimes, Progress, PromptInput, PullQuote, type PullQuoteProps, RadioGroup, RadioGroupItem, RangeSlider, type Reaction, ReactionPicker, type ReactionPickerProps, RichTextEditor, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, type SortDirection, StatsCard, type StatsCardProps, type Step, Stepper, type StepperProps, StreamingText, SuccessCallout, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThinkingIndicator, TimePicker, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, TokenCounter, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserBadge, type UserBadgeProps, type UserBadgeVariant, UserMenu, WarningCallout, WorkflowCanvas, WorkflowNode, ZakatCalculator, badgeVariants, buttonVariants, cn, useDesignSystem, useDirection, useRelativeTime, workflowNodeTypes };
package/dist/index.d.ts CHANGED
@@ -656,6 +656,12 @@ interface DataTableProps<T> {
656
656
  sortBy?: string;
657
657
  sortDirection?: SortDirection;
658
658
  onSort?: (columnId: string) => void;
659
+ /** Enable internal sorting (auto-manages sort state) */
660
+ enableSorting?: boolean;
661
+ /** Default column to sort by */
662
+ defaultSortBy?: string;
663
+ /** Default sort direction */
664
+ defaultSortDirection?: SortDirection;
659
665
  searchable?: boolean;
660
666
  searchPlaceholder?: string;
661
667
  searchPlaceholderAr?: string;
@@ -667,7 +673,12 @@ interface DataTableProps<T> {
667
673
  totalPages?: number;
668
674
  pageSize?: number;
669
675
  onPageChange?: (page: number) => void;
676
+ nextLabel?: string;
677
+ previousLabel?: string;
678
+ pageLabel?: string;
670
679
  mobileView?: 'table' | 'cards';
680
+ /** Show sort buttons on mobile cards */
681
+ mobileSorting?: boolean;
671
682
  emptyMessage?: string;
672
683
  emptyMessageAr?: string;
673
684
  className?: string;
@@ -675,7 +686,7 @@ interface DataTableProps<T> {
675
686
  hoverable?: boolean;
676
687
  compact?: boolean;
677
688
  }
678
- declare function DataTable<T>({ data, columns, isLoading, sortBy, sortDirection, onSort, searchable, searchPlaceholder, searchPlaceholderAr, searchValue, onSearchChange, pagination, currentPage, totalPages, pageSize, onPageChange, mobileView, emptyMessage, emptyMessageAr, className, striped, hoverable, compact, }: DataTableProps<T>): React$1.JSX.Element;
689
+ declare function DataTable<T>({ data, columns, isLoading, sortBy: externalSortBy, sortDirection: externalSortDirection, onSort: externalOnSort, enableSorting, defaultSortBy, defaultSortDirection, searchable, searchPlaceholder, searchPlaceholderAr, searchValue, onSearchChange, pagination, currentPage, totalPages, pageSize, onPageChange, nextLabel, previousLabel, pageLabel, mobileView, mobileSorting, emptyMessage, emptyMessageAr, className, striped, hoverable, compact, }: DataTableProps<T>): React$1.JSX.Element;
679
690
 
680
691
  interface DatePickerProps {
681
692
  date?: Date;
@@ -1423,6 +1434,34 @@ declare const Skeleton: React$1.ForwardRefExoticComponent<SkeletonProps & React$
1423
1434
 
1424
1435
  declare const Slider: React$1.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
1425
1436
 
1437
+ interface RangeSliderProps {
1438
+ /** Minimum value of the range */
1439
+ min?: number;
1440
+ /** Maximum value of the range */
1441
+ max?: number;
1442
+ /** Step increment */
1443
+ step?: number;
1444
+ /** Current range value [min, max] */
1445
+ value?: [number, number];
1446
+ /** Default range value [min, max] */
1447
+ defaultValue?: [number, number];
1448
+ /** Callback when range changes */
1449
+ onValueChange?: (value: [number, number]) => void;
1450
+ /** Format function for labels (e.g., price formatting) */
1451
+ formatLabel?: (value: number) => string;
1452
+ /** Show labels above thumbs */
1453
+ showLabels?: boolean;
1454
+ /** Show min/max labels */
1455
+ showMinMax?: boolean;
1456
+ /** Disabled state */
1457
+ disabled?: boolean;
1458
+ /** Additional className */
1459
+ className?: string;
1460
+ /** Direction override */
1461
+ dir?: 'ltr' | 'rtl';
1462
+ }
1463
+ declare const RangeSlider: React$1.ForwardRefExoticComponent<RangeSliderProps & React$1.RefAttributes<HTMLDivElement>>;
1464
+
1426
1465
  interface StatsCardProps {
1427
1466
  icon: React.ReactNode;
1428
1467
  label: string;
@@ -1862,4 +1901,4 @@ declare function useRelativeTime(date: Date | string, locale?: string, options?:
1862
1901
  */
1863
1902
  declare function cn(...inputs: ClassValue[]): string;
1864
1903
 
1865
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, ArabicNumber, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Blockquote, type BlockquoteProps, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonArrow, type ButtonArrowProps, type ButtonProps, Calendar, Callout, type CalloutProps, type CalloutType, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatMessage, Checkbox, ClientProviders, Collapsible, CollapsibleContent, CollapsibleTrigger, type ColumnDef, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContentRenderer, type ContentRendererProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ConversationHistory, DashboardShell, DataTable, type DataTableProps, DatePicker, DesignSystemProvider, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectionProvider, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, ErrorCallout, FeatureCard, FileUpload, Form, FormDescription, FormField, FormItem, FormLabel, FormMessage, type FormProps, HijriDate, InfoCallout, Input, type InputProps, Kbd, type KbdProps, Label, ListingCard, LoadingSpinner, MessageActions, ModelSelector, NotificationCenter, NumberInput, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, ParameterSlider, Popover, PopoverContent, PopoverTrigger, PrayerTimes, Progress, PromptInput, PullQuote, type PullQuoteProps, RadioGroup, RadioGroupItem, type Reaction, ReactionPicker, type ReactionPickerProps, RichTextEditor, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, type SortDirection, StatsCard, type StatsCardProps, type Step, Stepper, type StepperProps, StreamingText, SuccessCallout, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThinkingIndicator, TimePicker, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, TokenCounter, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserBadge, type UserBadgeProps, type UserBadgeVariant, UserMenu, WarningCallout, WorkflowCanvas, WorkflowNode, ZakatCalculator, badgeVariants, buttonVariants, cn, useDesignSystem, useDirection, useRelativeTime, workflowNodeTypes };
1904
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, ArabicNumber, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Blockquote, type BlockquoteProps, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonArrow, type ButtonArrowProps, type ButtonProps, Calendar, Callout, type CalloutProps, type CalloutType, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatMessage, Checkbox, ClientProviders, Collapsible, CollapsibleContent, CollapsibleTrigger, type ColumnDef, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContentRenderer, type ContentRendererProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ConversationHistory, DashboardShell, DataTable, type DataTableProps, DatePicker, DesignSystemProvider, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DirectionProvider, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, ErrorCallout, FeatureCard, FileUpload, Form, FormDescription, FormField, FormItem, FormLabel, FormMessage, type FormProps, HijriDate, InfoCallout, Input, type InputProps, Kbd, type KbdProps, Label, ListingCard, LoadingSpinner, MessageActions, ModelSelector, NotificationCenter, NumberInput, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, ParameterSlider, Popover, PopoverContent, PopoverTrigger, PrayerTimes, Progress, PromptInput, PullQuote, type PullQuoteProps, RadioGroup, RadioGroupItem, RangeSlider, type Reaction, ReactionPicker, type ReactionPickerProps, RichTextEditor, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, type SortDirection, StatsCard, type StatsCardProps, type Step, Stepper, type StepperProps, StreamingText, SuccessCallout, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThinkingIndicator, TimePicker, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, TokenCounter, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserBadge, type UserBadgeProps, type UserBadgeVariant, UserMenu, WarningCallout, WorkflowCanvas, WorkflowNode, ZakatCalculator, badgeVariants, buttonVariants, cn, useDesignSystem, useDirection, useRelativeTime, workflowNodeTypes };