@beyondcorp/beyond-ui 1.2.85 → 1.2.89

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.
Files changed (52) hide show
  1. package/dist/components/Alert/Alert.js +5 -5
  2. package/dist/components/Alert/Alert.js.map +1 -1
  3. package/dist/components/Avatar/Avatar.js +1 -1
  4. package/dist/components/Avatar/Avatar.js.map +1 -1
  5. package/dist/components/Badge/Badge.js +6 -6
  6. package/dist/components/Badge/Badge.js.map +1 -1
  7. package/dist/components/Button/Button.js +9 -9
  8. package/dist/components/Button/Button.js.map +1 -1
  9. package/dist/components/Card/Card.js +5 -5
  10. package/dist/components/Card/Card.js.map +1 -1
  11. package/dist/components/Checkbox/Checkbox.js +1 -1
  12. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  13. package/dist/components/DashboardHeader/DashboardHeader.js +5 -5
  14. package/dist/components/DashboardHeader/DashboardHeader.js.map +1 -1
  15. package/dist/components/DashboardLayout/DashboardLayout.js +1 -1
  16. package/dist/components/DashboardLayout/DashboardLayout.js.map +1 -1
  17. package/dist/components/DataTable/DataTable.js +13 -13
  18. package/dist/components/DataTable/DataTable.js.map +1 -1
  19. package/dist/components/Input/Input.js +4 -4
  20. package/dist/components/Input/Input.js.map +1 -1
  21. package/dist/components/Modal/Modal.js +3 -3
  22. package/dist/components/Modal/Modal.js.map +1 -1
  23. package/dist/components/Navbar/Navbar.js +5 -5
  24. package/dist/components/Navbar/Navbar.js.map +1 -1
  25. package/dist/components/PageLayout/PageLayout.js +8 -8
  26. package/dist/components/PageLayout/PageLayout.js.map +1 -1
  27. package/dist/components/ProfileManagement/ProfileCard.js +1 -1
  28. package/dist/components/ProfileManagement/ProfileCard.js.map +1 -1
  29. package/dist/components/Radio/Radio.js +2 -2
  30. package/dist/components/Radio/Radio.js.map +1 -1
  31. package/dist/components/Select/Select.js +4 -4
  32. package/dist/components/Select/Select.js.map +1 -1
  33. package/dist/components/Sidebar/Sidebar.js +5 -5
  34. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  35. package/dist/components/Sidebar/SidebarHeader.js +1 -1
  36. package/dist/components/Sidebar/SidebarHeader.js.map +1 -1
  37. package/dist/components/Skeleton/Skeleton.js +3 -3
  38. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  39. package/dist/components/Spinner/Spinner.js +2 -2
  40. package/dist/components/Spinner/Spinner.js.map +1 -1
  41. package/dist/components/StatsCard/StatsCard.js +4 -4
  42. package/dist/components/StatsCard/StatsCard.js.map +1 -1
  43. package/dist/components/Switch/Switch.js +2 -2
  44. package/dist/components/Switch/Switch.js.map +1 -1
  45. package/dist/components/Tabs/Tabs.js +6 -6
  46. package/dist/components/Tabs/Tabs.js.map +1 -1
  47. package/dist/components/Textarea/Textarea.js +4 -4
  48. package/dist/components/Textarea/Textarea.js.map +1 -1
  49. package/dist/components/Toast/Toast.js +6 -6
  50. package/dist/components/Toast/Toast.js.map +1 -1
  51. package/dist/styles.css +1 -1
  52. package/package.json +1 -1
@@ -9,7 +9,7 @@ import { ProfileButton } from './ProfileButton.js';
9
9
  import { LogoutButton } from './LogoutButton.js';
10
10
  import { SidebarHeader } from './SidebarHeader.js';
11
11
 
12
- const sidebarVariants = cva("fixed left-0 top-0 z-40 h-screen bg-white border-r border-gray-200 transition-all duration-300 ease-in-out", {
12
+ const sidebarVariants = cva("fixed left-0 top-0 z-40 h-screen bg-white dark:bg-gray-900 border-r border-gray-200 dark:border-gray-800 transition-all duration-300 ease-in-out", {
13
13
  variants: {
14
14
  collapsed: {
15
15
  false: "w-72",
@@ -23,8 +23,8 @@ const sidebarVariants = cva("fixed left-0 top-0 z-40 h-screen bg-white border-r
23
23
  const menuItemVariants = cva("flex items-center w-full px-3 py-2.5 text-sm font-medium rounded-lg transition-all duration-200 group", {
24
24
  variants: {
25
25
  active: {
26
- true: "bg-primary-50 text-primary-700 border-r-2 border-primary-600",
27
- false: "text-gray-700 hover:bg-gray-50 hover:text-gray-900",
26
+ true: "bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-400 border-r-2 border-primary-600",
27
+ false: "text-gray-700 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800/50 hover:text-gray-900 dark:hover:text-white",
28
28
  },
29
29
  collapsed: {
30
30
  true: "justify-center px-2",
@@ -114,9 +114,9 @@ const Sidebar = React.forwardRef(({ className, collapsed = false, onToggle, menu
114
114
  };
115
115
  // Profile section props with fallbacks
116
116
  const { avatarUrl = "https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=64", name = "John Doe", email = "john@company.com", avatarFallback = "JD", collapsedAvatarSize = "sm", expandedAvatarSize = "sm", onClick } = profileSectionProps || {};
117
- return (jsxs("div", { ref: ref, className: cn("flex flex-col h-screen", sidebarVariants({ collapsed }), className), style: props.style, ...props, children: [jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [!collapsed && (jsx(SidebarHeader, { title: title, letter: titleLetter, className: headerClassName })), jsx("button", { onClick: onToggle, className: "p-1.5 rounded-lg hover:bg-gray-100 transition-colors", children: collapsed ? (jsx(ChevronRight, { className: "h-4 w-4 text-gray-600" })) : (jsx(ChevronLeft, { className: "h-4 w-4 text-gray-600" })) })] }), jsx("nav", { className: "flex-1 px-4 py-6 space-y-2 overflow-y-auto", children: menuItems.map(item => renderMenuItem(item)) }), jsx("div", { className: "border-t border-gray-200 p-4", children: collapsed ? (jsx("div", { className: "flex justify-center", children: jsx("div", { className: cn("rounded-lg transition-colors", onClick && "cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300"), tabIndex: onClick ? 0 : undefined, role: onClick ? "button" : undefined, "aria-label": onClick ? "View profile" : undefined, onClick: onClick, onKeyDown: onClick ? (e) => { if (e.key === "Enter" || e.key === " ")
117
+ return (jsxs("div", { ref: ref, className: cn("flex flex-col h-screen", sidebarVariants({ collapsed }), className), style: props.style, ...props, children: [jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-800", children: [!collapsed && (jsx(SidebarHeader, { title: title, letter: titleLetter, className: headerClassName })), jsx("button", { onClick: onToggle, className: "p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors", children: collapsed ? (jsx(ChevronRight, { className: "h-4 w-4 text-gray-600 dark:text-gray-400" })) : (jsx(ChevronLeft, { className: "h-4 w-4 text-gray-600 dark:text-gray-400" })) })] }), jsx("nav", { className: "flex-1 px-4 py-6 space-y-2 overflow-y-auto", children: menuItems.map(item => renderMenuItem(item)) }), jsx("div", { className: "border-t border-gray-200 dark:border-gray-800 p-4", children: collapsed ? (jsx("div", { className: "flex justify-center", children: jsx("div", { className: cn("rounded-lg transition-colors", onClick && "cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300"), tabIndex: onClick ? 0 : undefined, role: onClick ? "button" : undefined, "aria-label": onClick ? "View profile" : undefined, onClick: onClick, onKeyDown: onClick ? (e) => { if (e.key === "Enter" || e.key === " ")
118
118
  onClick(e); } : undefined, children: jsxs(Avatar, { size: collapsedAvatarSize, children: [jsx(AvatarImage, { src: avatarUrl }), jsx(AvatarFallback, { children: avatarFallback })] }) }) })) : (jsxs("div", { className: "space-y-3", children: [jsxs("div", { className: cn("flex items-center space-x-3 rounded-lg transition-colors", onClick && "cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300"), tabIndex: onClick ? 0 : undefined, role: onClick ? "button" : undefined, "aria-label": onClick ? "View profile" : undefined, onClick: onClick, onKeyDown: onClick ? (e) => { if (e.key === "Enter" || e.key === " ")
119
- onClick(e); } : undefined, children: [jsxs(Avatar, { size: expandedAvatarSize, children: [jsx(AvatarImage, { src: avatarUrl }), jsx(AvatarFallback, { children: avatarFallback })] }), jsxs("div", { className: "flex-1 min-w-0", children: [jsx("p", { className: "text-sm font-medium text-gray-900 truncate", children: name }), jsx("p", { className: "text-xs text-gray-500 truncate", children: email })] })] }), jsxs("div", { className: "flex space-x-2", children: [jsx(ProfileButton, { className: "flex-1", ...profileButtonProps }), jsx(LogoutButton, { className: "flex-1", ...logoutButtonProps })] })] })) })] }));
119
+ onClick(e); } : undefined, children: [jsxs(Avatar, { size: expandedAvatarSize, children: [jsx(AvatarImage, { src: avatarUrl }), jsx(AvatarFallback, { children: avatarFallback })] }), jsxs("div", { className: "flex-1 min-w-0", children: [jsx("p", { className: "text-sm font-medium text-gray-900 dark:text-white truncate", children: name }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400 truncate", children: email })] })] }), jsxs("div", { className: "flex space-x-2", children: [jsx(ProfileButton, { className: "flex-1", ...profileButtonProps }), jsx(LogoutButton, { className: "flex-1", ...logoutButtonProps })] })] })) })] }));
120
120
  });
121
121
  Sidebar.displayName = "Sidebar";
122
122
 
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.js","sources":["../../../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { \n ChevronLeft, \n ChevronRight, \n ChevronDown, \n Home, \n BarChart3, \n Users, \n Settings, \n FileText, \n Calendar, \n Mail, \n Bell,\n LogOut,\n User\n} from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../Avatar\";\nimport { Badge } from \"../Badge\";\nimport { ProfileButton } from \"./ProfileButton\";\nimport { LogoutButton } from \"./LogoutButton\";\n\nconst sidebarVariants = cva(\n \"fixed left-0 top-0 z-40 h-screen bg-white border-r border-gray-200 transition-all duration-300 ease-in-out\",\n {\n variants: {\n collapsed: {\n false: \"w-72\",\n true: \"w-16\",\n },\n },\n defaultVariants: {\n collapsed: false,\n },\n }\n);\n\nconst menuItemVariants = cva(\n \"flex items-center w-full px-3 py-2.5 text-sm font-medium rounded-lg transition-all duration-200 group\",\n {\n variants: {\n active: {\n true: \"bg-primary-50 text-primary-700 border-r-2 border-primary-600\",\n false: \"text-gray-700 hover:bg-gray-50 hover:text-gray-900\",\n },\n collapsed: {\n true: \"justify-center px-2\",\n false: \"justify-start\",\n },\n },\n defaultVariants: {\n active: false,\n collapsed: false,\n },\n }\n);\n\ninterface MenuItem {\n id: string;\n label: string;\n icon: React.ReactNode;\n href?: string;\n badge?: string;\n children?: MenuItem[];\n}\n\nimport { SidebarHeader } from \"./SidebarHeader\";\n\nexport interface SidebarProfileSectionProps {\n avatarUrl?: string;\n name?: string;\n email?: string;\n avatarFallback?: string;\n collapsedAvatarSize?: \"sm\" | \"md\" | \"lg\";\n expandedAvatarSize?: \"sm\" | \"md\" | \"lg\";\n onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\n}\n\ninterface SidebarProps extends VariantProps<typeof sidebarVariants> {\n className?: string;\n onToggle?: () => void;\n menuItems?: MenuItem[];\n activeItem?: string;\n onItemClick?: (itemId: string) => void;\n /** Sidebar header title (default: \"Beyond\") */\n title?: string;\n /** Sidebar header letter (default: \"B\") */\n titleLetter?: string;\n /** Optional className for SidebarHeader */\n headerClassName?: string;\n style?: React.CSSProperties;\n /** Props for ProfileButton (stateless usage) */\n profileButtonProps?: import(\"./ProfileButton\").ProfileButtonProps;\n /** Props for LogoutButton (stateless usage) */\n logoutButtonProps?: import(\"./LogoutButton\").LogoutButtonProps;\n /** Dynamic profile section props */\n profileSectionProps?: SidebarProfileSectionProps;\n}\n\nconst defaultMenuItems: MenuItem[] = [\n {\n id: \"dashboard\",\n label: \"Dashboard\",\n icon: <Home className=\"h-5 w-5\" />,\n href: \"/dashboard\",\n },\n {\n id: \"analytics\",\n label: \"Analytics\",\n icon: <BarChart3 className=\"h-5 w-5\" />,\n href: \"/analytics\",\n badge: \"New\",\n },\n {\n id: \"users\",\n label: \"Users\",\n icon: <Users className=\"h-5 w-5\" />,\n children: [\n { id: \"all-users\", label: \"All Users\", icon: <Users className=\"h-4 w-4\" /> },\n { id: \"user-roles\", label: \"User Roles\", icon: <Settings className=\"h-4 w-4\" /> },\n ],\n },\n {\n id: \"reports\",\n label: \"Reports\",\n icon: <FileText className=\"h-5 w-5\" />,\n href: \"/reports\",\n },\n {\n id: \"calendar\",\n label: \"Calendar\",\n icon: <Calendar className=\"h-5 w-5\" />,\n href: \"/calendar\",\n },\n {\n id: \"messages\",\n label: \"Messages\",\n icon: <Mail className=\"h-5 w-5\" />,\n href: \"/messages\",\n badge: \"3\",\n },\n {\n id: \"notifications\",\n label: \"Notifications\",\n icon: <Bell className=\"h-5 w-5\" />,\n href: \"/notifications\",\n },\n {\n id: \"settings\",\n label: \"Settings\",\n icon: <Settings className=\"h-5 w-5\" />,\n href: \"/settings\",\n },\n];\n\nconst Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>(\n ({\n className,\n collapsed = false,\n onToggle,\n menuItems = defaultMenuItems,\n activeItem = \"dashboard\",\n onItemClick,\n title = \"Beyond\",\n titleLetter = \"B\",\n headerClassName,\n profileButtonProps,\n logoutButtonProps,\n profileSectionProps,\n ...props\n }, ref) => {\n const [expandedItems, setExpandedItems] = React.useState<string[]>([]);\n\n const toggleExpanded = (itemId: string) => {\n setExpandedItems(prev => \n prev.includes(itemId) \n ? prev.filter(id => id !== itemId)\n : [...prev, itemId]\n );\n };\n\n const handleItemClick = (item: MenuItem) => {\n if (item.children) {\n toggleExpanded(item.id);\n } else {\n onItemClick?.(item.id);\n }\n };\n\n const renderMenuItem = (item: MenuItem, level = 0) => {\n const isActive = activeItem === item.id;\n const isExpanded = expandedItems.includes(item.id);\n const hasChildren = item.children && item.children.length > 0;\n\n return (\n <div key={item.id}>\n <button\n onClick={() => handleItemClick(item)}\n className={cn(\n menuItemVariants({ active: isActive, collapsed }),\n level > 0 && \"ml-4 pl-8\",\n \"relative\"\n )}\n >\n <div className=\"flex items-center min-w-0 flex-1\">\n <div className=\"flex-shrink-0\">\n {item.icon}\n </div>\n {!collapsed && (\n <>\n <span className=\"ml-3 truncate\">{item.label}</span>\n {item.badge && (\n <Badge variant=\"danger\" className=\"ml-auto text-xs\">\n {item.badge}\n </Badge>\n )}\n {hasChildren && (\n <ChevronDown \n className={cn(\n \"ml-auto h-4 w-4 transition-transform duration-200\",\n isExpanded && \"rotate-180\"\n )}\n />\n )}\n </>\n )}\n </div>\n </button>\n \n {hasChildren && !collapsed && isExpanded && (\n <div className=\"mt-1 space-y-1\">\n {item.children?.map(child => renderMenuItem(child, level + 1))}\n </div>\n )}\n </div>\n );\n };\n\n // Profile section props with fallbacks\n const {\n avatarUrl = \"https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=64\",\n name = \"John Doe\",\n email = \"john@company.com\",\n avatarFallback = \"JD\",\n collapsedAvatarSize = \"sm\",\n expandedAvatarSize = \"sm\",\n onClick\n } = profileSectionProps || {};\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col h-screen\",\n sidebarVariants({ collapsed }),\n className\n )}\n style={props.style}\n {...props}\n >\n {/* Sidebar Header */}\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n {!collapsed && (\n <SidebarHeader\n title={title}\n letter={titleLetter}\n className={headerClassName}\n />\n )}\n <button\n onClick={onToggle}\n className=\"p-1.5 rounded-lg hover:bg-gray-100 transition-colors\"\n >\n {collapsed ? (\n <ChevronRight className=\"h-4 w-4 text-gray-600\" />\n ) : (\n <ChevronLeft className=\"h-4 w-4 text-gray-600\" />\n )}\n </button>\n </div>\n\n {/* Navigation Menu */}\n <nav className=\"flex-1 px-4 py-6 space-y-2 overflow-y-auto\">\n {menuItems.map(item => renderMenuItem(item))}\n </nav>\n\n {/* User Profile Section */}\n <div className=\"border-t border-gray-200 p-4\">\n {collapsed ? (\n <div className=\"flex justify-center\">\n <div\n className={cn(\n \"rounded-lg transition-colors\",\n onClick && \"cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300\"\n )}\n tabIndex={onClick ? 0 : undefined}\n role={onClick ? \"button\" : undefined}\n aria-label={onClick ? \"View profile\" : undefined}\n onClick={onClick}\n onKeyDown={onClick ? (e) => { if (e.key === \"Enter\" || e.key === \" \") onClick(e as any); } : undefined}\n >\n <Avatar size={collapsedAvatarSize}>\n <AvatarImage src={avatarUrl} />\n <AvatarFallback>{avatarFallback}</AvatarFallback>\n </Avatar>\n </div>\n </div>\n ) : (\n <div className=\"space-y-3\">\n <div\n className={cn(\n \"flex items-center space-x-3 rounded-lg transition-colors\",\n onClick && \"cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300\"\n )}\n tabIndex={onClick ? 0 : undefined}\n role={onClick ? \"button\" : undefined}\n aria-label={onClick ? \"View profile\" : undefined}\n onClick={onClick}\n onKeyDown={onClick ? (e) => { if (e.key === \"Enter\" || e.key === \" \") onClick(e as any); } : undefined}\n >\n <Avatar size={expandedAvatarSize}>\n <AvatarImage src={avatarUrl} />\n <AvatarFallback>{avatarFallback}</AvatarFallback>\n </Avatar>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-gray-900 truncate\">\n {name}\n </p>\n <p className=\"text-xs text-gray-500 truncate\">\n {email}\n </p>\n </div>\n </div>\n <div className=\"flex space-x-2\">\n {/* Reusable, theme-agnostic profile/logout buttons */}\n <ProfileButton className=\"flex-1\" {...profileButtonProps} />\n <LogoutButton className=\"flex-1\" {...logoutButtonProps} />\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nSidebar.displayName = \"Sidebar\";\n\nexport { Sidebar, sidebarVariants, type MenuItem };"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Sidebar.js","sources":["../../../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { \n ChevronLeft, \n ChevronRight, \n ChevronDown, \n Home, \n BarChart3, \n Users, \n Settings, \n FileText, \n Calendar, \n Mail, \n Bell,\n LogOut,\n User\n} from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../Avatar\";\nimport { Badge } from \"../Badge\";\nimport { ProfileButton } from \"./ProfileButton\";\nimport { LogoutButton } from \"./LogoutButton\";\n\nconst sidebarVariants = cva(\n \"fixed left-0 top-0 z-40 h-screen bg-white dark:bg-gray-900 border-r border-gray-200 dark:border-gray-800 transition-all duration-300 ease-in-out\",\n {\n variants: {\n collapsed: {\n false: \"w-72\",\n true: \"w-16\",\n },\n },\n defaultVariants: {\n collapsed: false,\n },\n }\n);\n\nconst menuItemVariants = cva(\n \"flex items-center w-full px-3 py-2.5 text-sm font-medium rounded-lg transition-all duration-200 group\",\n {\n variants: {\n active: {\n true: \"bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-400 border-r-2 border-primary-600\",\n false: \"text-gray-700 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800/50 hover:text-gray-900 dark:hover:text-white\",\n },\n collapsed: {\n true: \"justify-center px-2\",\n false: \"justify-start\",\n },\n },\n defaultVariants: {\n active: false,\n collapsed: false,\n },\n }\n);\n\ninterface MenuItem {\n id: string;\n label: string;\n icon: React.ReactNode;\n href?: string;\n badge?: string;\n children?: MenuItem[];\n}\n\nimport { SidebarHeader } from \"./SidebarHeader\";\n\nexport interface SidebarProfileSectionProps {\n avatarUrl?: string;\n name?: string;\n email?: string;\n avatarFallback?: string;\n collapsedAvatarSize?: \"sm\" | \"md\" | \"lg\";\n expandedAvatarSize?: \"sm\" | \"md\" | \"lg\";\n onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\n}\n\ninterface SidebarProps extends VariantProps<typeof sidebarVariants> {\n className?: string;\n onToggle?: () => void;\n menuItems?: MenuItem[];\n activeItem?: string;\n onItemClick?: (itemId: string) => void;\n /** Sidebar header title (default: \"Beyond\") */\n title?: string;\n /** Sidebar header letter (default: \"B\") */\n titleLetter?: string;\n /** Optional className for SidebarHeader */\n headerClassName?: string;\n style?: React.CSSProperties;\n /** Props for ProfileButton (stateless usage) */\n profileButtonProps?: import(\"./ProfileButton\").ProfileButtonProps;\n /** Props for LogoutButton (stateless usage) */\n logoutButtonProps?: import(\"./LogoutButton\").LogoutButtonProps;\n /** Dynamic profile section props */\n profileSectionProps?: SidebarProfileSectionProps;\n}\n\nconst defaultMenuItems: MenuItem[] = [\n {\n id: \"dashboard\",\n label: \"Dashboard\",\n icon: <Home className=\"h-5 w-5\" />,\n href: \"/dashboard\",\n },\n {\n id: \"analytics\",\n label: \"Analytics\",\n icon: <BarChart3 className=\"h-5 w-5\" />,\n href: \"/analytics\",\n badge: \"New\",\n },\n {\n id: \"users\",\n label: \"Users\",\n icon: <Users className=\"h-5 w-5\" />,\n children: [\n { id: \"all-users\", label: \"All Users\", icon: <Users className=\"h-4 w-4\" /> },\n { id: \"user-roles\", label: \"User Roles\", icon: <Settings className=\"h-4 w-4\" /> },\n ],\n },\n {\n id: \"reports\",\n label: \"Reports\",\n icon: <FileText className=\"h-5 w-5\" />,\n href: \"/reports\",\n },\n {\n id: \"calendar\",\n label: \"Calendar\",\n icon: <Calendar className=\"h-5 w-5\" />,\n href: \"/calendar\",\n },\n {\n id: \"messages\",\n label: \"Messages\",\n icon: <Mail className=\"h-5 w-5\" />,\n href: \"/messages\",\n badge: \"3\",\n },\n {\n id: \"notifications\",\n label: \"Notifications\",\n icon: <Bell className=\"h-5 w-5\" />,\n href: \"/notifications\",\n },\n {\n id: \"settings\",\n label: \"Settings\",\n icon: <Settings className=\"h-5 w-5\" />,\n href: \"/settings\",\n },\n];\n\nconst Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>(\n ({\n className,\n collapsed = false,\n onToggle,\n menuItems = defaultMenuItems,\n activeItem = \"dashboard\",\n onItemClick,\n title = \"Beyond\",\n titleLetter = \"B\",\n headerClassName,\n profileButtonProps,\n logoutButtonProps,\n profileSectionProps,\n ...props\n }, ref) => {\n const [expandedItems, setExpandedItems] = React.useState<string[]>([]);\n\n const toggleExpanded = (itemId: string) => {\n setExpandedItems(prev => \n prev.includes(itemId) \n ? prev.filter(id => id !== itemId)\n : [...prev, itemId]\n );\n };\n\n const handleItemClick = (item: MenuItem) => {\n if (item.children) {\n toggleExpanded(item.id);\n } else {\n onItemClick?.(item.id);\n }\n };\n\n const renderMenuItem = (item: MenuItem, level = 0) => {\n const isActive = activeItem === item.id;\n const isExpanded = expandedItems.includes(item.id);\n const hasChildren = item.children && item.children.length > 0;\n\n return (\n <div key={item.id}>\n <button\n onClick={() => handleItemClick(item)}\n className={cn(\n menuItemVariants({ active: isActive, collapsed }),\n level > 0 && \"ml-4 pl-8\",\n \"relative\"\n )}\n >\n <div className=\"flex items-center min-w-0 flex-1\">\n <div className=\"flex-shrink-0\">\n {item.icon}\n </div>\n {!collapsed && (\n <>\n <span className=\"ml-3 truncate\">{item.label}</span>\n {item.badge && (\n <Badge variant=\"danger\" className=\"ml-auto text-xs\">\n {item.badge}\n </Badge>\n )}\n {hasChildren && (\n <ChevronDown \n className={cn(\n \"ml-auto h-4 w-4 transition-transform duration-200\",\n isExpanded && \"rotate-180\"\n )}\n />\n )}\n </>\n )}\n </div>\n </button>\n \n {hasChildren && !collapsed && isExpanded && (\n <div className=\"mt-1 space-y-1\">\n {item.children?.map(child => renderMenuItem(child, level + 1))}\n </div>\n )}\n </div>\n );\n };\n\n // Profile section props with fallbacks\n const {\n avatarUrl = \"https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=64\",\n name = \"John Doe\",\n email = \"john@company.com\",\n avatarFallback = \"JD\",\n collapsedAvatarSize = \"sm\",\n expandedAvatarSize = \"sm\",\n onClick\n } = profileSectionProps || {};\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col h-screen\",\n sidebarVariants({ collapsed }),\n className\n )}\n style={props.style}\n {...props}\n >\n {/* Sidebar Header */}\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-800\">\n {!collapsed && (\n <SidebarHeader\n title={title}\n letter={titleLetter}\n className={headerClassName}\n />\n )}\n <button\n onClick={onToggle}\n className=\"p-1.5 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors\"\n >\n {collapsed ? (\n <ChevronRight className=\"h-4 w-4 text-gray-600 dark:text-gray-400\" />\n ) : (\n <ChevronLeft className=\"h-4 w-4 text-gray-600 dark:text-gray-400\" />\n )}\n </button>\n </div>\n\n {/* Navigation Menu */}\n <nav className=\"flex-1 px-4 py-6 space-y-2 overflow-y-auto\">\n {menuItems.map(item => renderMenuItem(item))}\n </nav>\n\n {/* User Profile Section */}\n <div className=\"border-t border-gray-200 dark:border-gray-800 p-4\">\n {collapsed ? (\n <div className=\"flex justify-center\">\n <div\n className={cn(\n \"rounded-lg transition-colors\",\n onClick && \"cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300\"\n )}\n tabIndex={onClick ? 0 : undefined}\n role={onClick ? \"button\" : undefined}\n aria-label={onClick ? \"View profile\" : undefined}\n onClick={onClick}\n onKeyDown={onClick ? (e) => { if (e.key === \"Enter\" || e.key === \" \") onClick(e as any); } : undefined}\n >\n <Avatar size={collapsedAvatarSize}>\n <AvatarImage src={avatarUrl} />\n <AvatarFallback>{avatarFallback}</AvatarFallback>\n </Avatar>\n </div>\n </div>\n ) : (\n <div className=\"space-y-3\">\n <div\n className={cn(\n \"flex items-center space-x-3 rounded-lg transition-colors\",\n onClick && \"cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300\"\n )}\n tabIndex={onClick ? 0 : undefined}\n role={onClick ? \"button\" : undefined}\n aria-label={onClick ? \"View profile\" : undefined}\n onClick={onClick}\n onKeyDown={onClick ? (e) => { if (e.key === \"Enter\" || e.key === \" \") onClick(e as any); } : undefined}\n >\n <Avatar size={expandedAvatarSize}>\n <AvatarImage src={avatarUrl} />\n <AvatarFallback>{avatarFallback}</AvatarFallback>\n </Avatar>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-gray-900 dark:text-white truncate\">\n {name}\n </p>\n <p className=\"text-xs text-gray-500 dark:text-gray-400 truncate\">\n {email}\n </p>\n </div>\n </div>\n <div className=\"flex space-x-2\">\n {/* Reusable, theme-agnostic profile/logout buttons */}\n <ProfileButton className=\"flex-1\" {...profileButtonProps} />\n <LogoutButton className=\"flex-1\" {...logoutButtonProps} />\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nSidebar.displayName = \"Sidebar\";\n\nexport { Sidebar, sidebarVariants, type MenuItem };"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { cn } from '../../utils/cn.js';
3
3
 
4
- const SidebarHeader = ({ title = "Beyond", letter = "B", className, }) => (jsxs("div", { className: cn("flex items-center space-x-2", className), children: [jsx("div", { className: "w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center", children: jsx("span", { className: "text-white font-bold text-sm", children: letter }) }), jsx("span", { className: "font-bold text-xl text-gray-900", children: title })] }));
4
+ const SidebarHeader = ({ title = "Beyond", letter = "B", className, }) => (jsxs("div", { className: cn("flex items-center space-x-2", className), children: [jsx("div", { className: "w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center", children: jsx("span", { className: "text-white font-bold text-sm", children: letter }) }), jsx("span", { className: "font-bold text-xl text-gray-900 dark:text-white", children: title })] }));
5
5
  SidebarHeader.displayName = "SidebarHeader";
6
6
 
7
7
  export { SidebarHeader };
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarHeader.js","sources":["../../../src/components/Sidebar/SidebarHeader.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n/**\n * SidebarHeader\n * - Reusable header for Sidebar and other layouts.\n * - Accepts dynamic title and letter for branding.\n * - Uses theme tokens (bg-primary-600, text-white, etc.) for theme-agnostic design.\n * - Allows className override for further customization.\n *\n * @example\n * <SidebarHeader title=\"Admin Panel\" letter=\"A\" />\n */\nexport interface SidebarHeaderProps {\n /** Main title text (default: \"Beyond\") */\n title?: string;\n /** Letter/initial in colored box (default: \"B\") */\n letter?: string;\n /** Optional className for root element */\n className?: string;\n}\n\nexport const SidebarHeader: React.FC<SidebarHeaderProps> = ({\n title = \"Beyond\",\n letter = \"B\",\n className,\n}) => (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <div className=\"w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center\">\n <span className=\"text-white font-bold text-sm\">{letter}</span>\n </div>\n <span className=\"font-bold text-xl text-gray-900\">{title}</span>\n </div>\n);\n\nSidebarHeader.displayName = \"SidebarHeader\";"],"names":["_jsxs","_jsx"],"mappings":";;;AAsBO,MAAM,aAAa,GAAiC,CAAC,EAC1D,KAAK,GAAG,QAAQ,EAChB,MAAM,GAAG,GAAG,EACZ,SAAS,GACV,MACCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,CAC1DC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oEAAoE,EAAA,QAAA,EACjFA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,8BAA8B,EAAA,QAAA,EAAE,MAAM,EAAA,CAAQ,EAAA,CAC1D,EACNA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAAE,KAAK,EAAA,CAAQ,CAAA,EAAA,CAC5D;AAGR,aAAa,CAAC,WAAW,GAAG,eAAe;;;;"}
1
+ {"version":3,"file":"SidebarHeader.js","sources":["../../../src/components/Sidebar/SidebarHeader.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n/**\n * SidebarHeader\n * - Reusable header for Sidebar and other layouts.\n * - Accepts dynamic title and letter for branding.\n * - Uses theme tokens (bg-primary-600, text-white, etc.) for theme-agnostic design.\n * - Allows className override for further customization.\n *\n * @example\n * <SidebarHeader title=\"Admin Panel\" letter=\"A\" />\n */\nexport interface SidebarHeaderProps {\n /** Main title text (default: \"Beyond\") */\n title?: string;\n /** Letter/initial in colored box (default: \"B\") */\n letter?: string;\n /** Optional className for root element */\n className?: string;\n}\n\nexport const SidebarHeader: React.FC<SidebarHeaderProps> = ({\n title = \"Beyond\",\n letter = \"B\",\n className,\n}) => (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <div className=\"w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center\">\n <span className=\"text-white font-bold text-sm\">{letter}</span>\n </div>\n <span className=\"font-bold text-xl text-gray-900 dark:text-white\">{title}</span>\n </div>\n);\n\nSidebarHeader.displayName = \"SidebarHeader\";"],"names":["_jsxs","_jsx"],"mappings":";;;AAsBO,MAAM,aAAa,GAAiC,CAAC,EAC1D,KAAK,GAAG,QAAQ,EAChB,MAAM,GAAG,GAAG,EACZ,SAAS,GACV,MACCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,CAC1DC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oEAAoE,EAAA,QAAA,EACjFA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,8BAA8B,EAAA,QAAA,EAAE,MAAM,EAAA,CAAQ,EAAA,CAC1D,EACNA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,iDAAiD,EAAA,QAAA,EAAE,KAAK,EAAA,CAAQ,CAAA,EAAA,CAC5E;AAGR,aAAa,CAAC,WAAW,GAAG,eAAe;;;;"}
@@ -3,11 +3,11 @@ import * as React from 'react';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { cn } from '../../utils/cn.js';
5
5
 
6
- const skeletonVariants = cva("animate-pulse rounded-md bg-gray-200", {
6
+ const skeletonVariants = cva("animate-pulse rounded-md bg-gray-200 dark:bg-gray-800", {
7
7
  variants: {
8
8
  variant: {
9
- default: "bg-gray-200",
10
- darker: "bg-gray-300",
9
+ default: "bg-gray-200 dark:bg-gray-800",
10
+ darker: "bg-gray-300 dark:bg-gray-700",
11
11
  },
12
12
  },
13
13
  defaultVariants: {
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.js","sources":["../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst skeletonVariants = cva(\n \"animate-pulse rounded-md bg-gray-200\",\n {\n variants: {\n variant: {\n default: \"bg-gray-200\",\n darker: \"bg-gray-300\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface SkeletonProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof skeletonVariants> {}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(skeletonVariants({ variant }), className)}\n {...props}\n />\n );\n }\n);\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton, skeletonVariants };"],"names":["_jsx"],"mappings":";;;;;AAIA,MAAM,gBAAgB,GAAG,GAAG,CAC1B,sCAAsC,EACtC;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,MAAM,EAAE,aAAa;AACtB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAOH,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAC/B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IACxC,QACEA,aACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,EAAA,GACnD,KAAK,EAAA,CACT;AAEN,CAAC;AAEH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
1
+ {"version":3,"file":"Skeleton.js","sources":["../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst skeletonVariants = cva(\n \"animate-pulse rounded-md bg-gray-200 dark:bg-gray-800\",\n {\n variants: {\n variant: {\n default: \"bg-gray-200 dark:bg-gray-800\",\n darker: \"bg-gray-300 dark:bg-gray-700\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface SkeletonProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof skeletonVariants> {}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(skeletonVariants({ variant }), className)}\n {...props}\n />\n );\n }\n);\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton, skeletonVariants };"],"names":["_jsx"],"mappings":";;;;;AAIA,MAAM,gBAAgB,GAAG,GAAG,CAC1B,uDAAuD,EACvD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,8BAA8B;AACvC,YAAA,MAAM,EAAE,8BAA8B;AACvC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAOH,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAC/B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IACxC,QACEA,aACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,EAAA,GACnD,KAAK,EAAA,CACT;AAEN,CAAC;AAEH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
@@ -12,8 +12,8 @@ const spinnerVariants = cva("animate-spin rounded-full border-2 border-current b
12
12
  xl: "h-12 w-12",
13
13
  },
14
14
  variant: {
15
- primary: "text-primary-600",
16
- secondary: "text-secondary-600",
15
+ primary: "text-primary-600 dark:text-primary-400",
16
+ secondary: "text-secondary-600 dark:text-secondary-400",
17
17
  white: "text-white",
18
18
  current: "text-current",
19
19
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.js","sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst spinnerVariants = cva(\n \"animate-spin rounded-full border-2 border-current border-t-transparent\",\n {\n variants: {\n size: {\n sm: \"h-4 w-4\",\n md: \"h-6 w-6\",\n lg: \"h-8 w-8\",\n xl: \"h-12 w-12\",\n },\n variant: {\n primary: \"text-primary-600\",\n secondary: \"text-secondary-600\",\n white: \"text-white\",\n current: \"text-current\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"primary\",\n },\n }\n);\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof spinnerVariants> {}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size, variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(spinnerVariants({ size, variant }), className)}\n {...props}\n />\n );\n }\n);\nSpinner.displayName = \"Spinner\";\n\nexport { Spinner, spinnerVariants };"],"names":["_jsx"],"mappings":";;;;;AAIA,MAAM,eAAe,GAAG,GAAG,CACzB,wEAAwE,EACxE;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,WAAW;AAChB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,OAAO,EAAE,cAAc;AACxB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAOH,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAC9B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IAC9C,QACEA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,EAAA,GACxD,KAAK,EAAA,CACT;AAEN,CAAC;AAEH,OAAO,CAAC,WAAW,GAAG,SAAS;;;;"}
1
+ {"version":3,"file":"Spinner.js","sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst spinnerVariants = cva(\n \"animate-spin rounded-full border-2 border-current border-t-transparent\",\n {\n variants: {\n size: {\n sm: \"h-4 w-4\",\n md: \"h-6 w-6\",\n lg: \"h-8 w-8\",\n xl: \"h-12 w-12\",\n },\n variant: {\n primary: \"text-primary-600 dark:text-primary-400\",\n secondary: \"text-secondary-600 dark:text-secondary-400\",\n white: \"text-white\",\n current: \"text-current\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"primary\",\n },\n }\n);\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof spinnerVariants> {}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size, variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(spinnerVariants({ size, variant }), className)}\n {...props}\n />\n );\n }\n);\nSpinner.displayName = \"Spinner\";\n\nexport { Spinner, spinnerVariants };"],"names":["_jsx"],"mappings":";;;;;AAIA,MAAM,eAAe,GAAG,GAAG,CACzB,wEAAwE,EACxE;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,WAAW;AAChB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,wCAAwC;AACjD,YAAA,SAAS,EAAE,4CAA4C;AACvD,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,OAAO,EAAE,cAAc;AACxB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAOH,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAC9B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IAC9C,QACEA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,EAAA,GACxD,KAAK,EAAA,CACT;AAEN,CAAC;AAEH,OAAO,CAAC,WAAW,GAAG,SAAS;;;;"}
@@ -39,14 +39,14 @@ const StatsCard = React.forwardRef(({ className, variant, color, title, value, t
39
39
  return "text-white/80";
40
40
  switch (direction) {
41
41
  case "up":
42
- return "text-success-600";
42
+ return "text-success-600 dark:text-success-400";
43
43
  case "down":
44
- return "text-danger-600";
44
+ return "text-danger-600 dark:text-danger-400";
45
45
  default:
46
- return "text-gray-600";
46
+ return "text-gray-600 dark:text-gray-400";
47
47
  }
48
48
  };
49
- return (jsx(Card, { ref: ref, className: cn(statsCardVariants({ variant, color }), className), padding: "none", ...props, children: jsx(CardContent, { className: "p-6", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { className: "flex-1", children: [jsx("p", { className: cn("text-sm font-medium", variant === "gradient" ? "text-white/80" : "text-gray-600"), children: title }), jsxs("div", { className: "mt-2", children: [jsx("p", { className: cn("text-3xl font-bold", variant === "gradient" ? "text-white" : "text-gray-900"), children: value }), trend && (jsxs("div", { className: cn("flex items-center gap-1 mt-1 text-sm", getTrendColor(trend.direction)), children: [getTrendIcon(trend.direction), jsx("span", { children: trend.value }), trend.label && (jsx("span", { className: cn(variant === "gradient" ? "text-white/60" : "text-gray-500"), children: trend.label }))] }))] })] }), icon && (jsx("div", { className: cn("p-3 rounded-full", variant === "gradient" ? "bg-white/20" : "bg-gray-100"), children: icon }))] }) }) }));
49
+ return (jsx(Card, { ref: ref, className: cn(statsCardVariants({ variant, color }), className), padding: "none", ...props, children: jsx(CardContent, { className: "p-6", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { className: "flex-1", children: [jsx("p", { className: cn("text-sm font-medium", variant === "gradient" ? "text-white/80" : "text-gray-600 dark:text-gray-400"), children: title }), jsxs("div", { className: "mt-2", children: [jsx("p", { className: cn("text-3xl font-bold", variant === "gradient" ? "text-white" : "text-gray-900 dark:text-white"), children: value }), trend && (jsxs("div", { className: cn("flex items-center gap-1 mt-1 text-sm", getTrendColor(trend.direction)), children: [getTrendIcon(trend.direction), jsx("span", { children: trend.value }), trend.label && (jsx("span", { className: cn(variant === "gradient" ? "text-white/60" : "text-gray-500 dark:text-gray-400"), children: trend.label }))] }))] })] }), icon && (jsx("div", { className: cn("p-3 rounded-full", variant === "gradient" ? "bg-white/20" : "bg-gray-100 dark:bg-gray-800"), children: icon }))] }) }) }));
50
50
  });
51
51
  StatsCard.displayName = "StatsCard";
52
52
 
@@ -1 +1 @@
1
- {"version":3,"file":"StatsCard.js","sources":["../../../src/components/StatsCard/StatsCard.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { TrendingUp, TrendingDown, Minus } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\nimport { Card, CardContent } from \"../Card\";\n\nconst statsCardVariants = cva(\n \"relative overflow-hidden\",\n {\n variants: {\n variant: {\n default: \"\",\n gradient: \"bg-gradient-to-br\",\n },\n color: {\n primary: \"from-primary-500 to-primary-600 text-white\",\n secondary: \"from-secondary-500 to-secondary-600 text-white\",\n success: \"from-success-500 to-success-600 text-white\",\n warning: \"from-warning-500 to-warning-600 text-white\",\n danger: \"from-danger-500 to-danger-600 text-white\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ntype TrendDirection = \"up\" | \"down\" | \"neutral\";\n\nexport interface StatsCardProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\">,\n VariantProps<typeof statsCardVariants> {\n title: string;\n value: string | number;\n trend?: {\n direction: TrendDirection;\n value: string | number;\n label?: string;\n };\n icon?: React.ReactNode;\n}\n\nconst StatsCard = React.forwardRef<HTMLDivElement, StatsCardProps>(\n ({ className, variant, color, title, value, trend, icon, ...props }, ref) => {\n const getTrendIcon = (direction: TrendDirection) => {\n switch (direction) {\n case \"up\":\n return <TrendingUp className=\"h-4 w-4\" />;\n case \"down\":\n return <TrendingDown className=\"h-4 w-4\" />;\n default:\n return <Minus className=\"h-4 w-4\" />;\n }\n };\n\n const getTrendColor = (direction: TrendDirection) => {\n if (variant === \"gradient\") return \"text-white/80\";\n \n switch (direction) {\n case \"up\":\n return \"text-success-600\";\n case \"down\":\n return \"text-danger-600\";\n default:\n return \"text-gray-600\";\n }\n };\n\n return (\n <Card\n ref={ref}\n className={cn(statsCardVariants({ variant, color }), className)}\n padding=\"none\"\n {...props}\n >\n <CardContent className=\"p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex-1\">\n <p className={cn(\n \"text-sm font-medium\",\n variant === \"gradient\" ? \"text-white/80\" : \"text-gray-600\"\n )}>\n {title}\n </p>\n <div className=\"mt-2\">\n <p className={cn(\n \"text-3xl font-bold\",\n variant === \"gradient\" ? \"text-white\" : \"text-gray-900\"\n )}>\n {value}\n </p>\n {trend && (\n <div className={cn(\n \"flex items-center gap-1 mt-1 text-sm\",\n getTrendColor(trend.direction)\n )}>\n {getTrendIcon(trend.direction)}\n <span>{trend.value}</span>\n {trend.label && (\n <span className={cn(\n variant === \"gradient\" ? \"text-white/60\" : \"text-gray-500\"\n )}>\n {trend.label}\n </span>\n )}\n </div>\n )}\n </div>\n </div>\n {icon && (\n <div className={cn(\n \"p-3 rounded-full\",\n variant === \"gradient\" ? \"bg-white/20\" : \"bg-gray-100\"\n )}>\n {icon}\n </div>\n )}\n </div>\n </CardContent>\n </Card>\n );\n }\n);\nStatsCard.displayName = \"StatsCard\";\n\nexport { StatsCard, statsCardVariants };"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"StatsCard.js","sources":["../../../src/components/StatsCard/StatsCard.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { TrendingUp, TrendingDown, Minus } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\nimport { Card, CardContent } from \"../Card\";\n\nconst statsCardVariants = cva(\n \"relative overflow-hidden\",\n {\n variants: {\n variant: {\n default: \"\",\n gradient: \"bg-gradient-to-br\",\n },\n color: {\n primary: \"from-primary-500 to-primary-600 text-white\",\n secondary: \"from-secondary-500 to-secondary-600 text-white\",\n success: \"from-success-500 to-success-600 text-white\",\n warning: \"from-warning-500 to-warning-600 text-white\",\n danger: \"from-danger-500 to-danger-600 text-white\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ntype TrendDirection = \"up\" | \"down\" | \"neutral\";\n\nexport interface StatsCardProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\">,\n VariantProps<typeof statsCardVariants> {\n title: string;\n value: string | number;\n trend?: {\n direction: TrendDirection;\n value: string | number;\n label?: string;\n };\n icon?: React.ReactNode;\n}\n\nconst StatsCard = React.forwardRef<HTMLDivElement, StatsCardProps>(\n ({ className, variant, color, title, value, trend, icon, ...props }, ref) => {\n const getTrendIcon = (direction: TrendDirection) => {\n switch (direction) {\n case \"up\":\n return <TrendingUp className=\"h-4 w-4\" />;\n case \"down\":\n return <TrendingDown className=\"h-4 w-4\" />;\n default:\n return <Minus className=\"h-4 w-4\" />;\n }\n };\n\n const getTrendColor = (direction: TrendDirection) => {\n if (variant === \"gradient\") return \"text-white/80\";\n \n switch (direction) {\n case \"up\":\n return \"text-success-600 dark:text-success-400\";\n case \"down\":\n return \"text-danger-600 dark:text-danger-400\";\n default:\n return \"text-gray-600 dark:text-gray-400\";\n }\n };\n\n return (\n <Card\n ref={ref}\n className={cn(statsCardVariants({ variant, color }), className)}\n padding=\"none\"\n {...props}\n >\n <CardContent className=\"p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex-1\">\n <p className={cn(\n \"text-sm font-medium\",\n variant === \"gradient\" ? \"text-white/80\" : \"text-gray-600 dark:text-gray-400\"\n )}>\n {title}\n </p>\n <div className=\"mt-2\">\n <p className={cn(\n \"text-3xl font-bold\",\n variant === \"gradient\" ? \"text-white\" : \"text-gray-900 dark:text-white\"\n )}>\n {value}\n </p>\n {trend && (\n <div className={cn(\n \"flex items-center gap-1 mt-1 text-sm\",\n getTrendColor(trend.direction)\n )}>\n {getTrendIcon(trend.direction)}\n <span>{trend.value}</span>\n {trend.label && (\n <span className={cn(\n variant === \"gradient\" ? \"text-white/60\" : \"text-gray-500 dark:text-gray-400\"\n )}>\n {trend.label}\n </span>\n )}\n </div>\n )}\n </div>\n </div>\n {icon && (\n <div className={cn(\n \"p-3 rounded-full\",\n variant === \"gradient\" ? \"bg-white/20\" : \"bg-gray-100 dark:bg-gray-800\"\n )}>\n {icon}\n </div>\n )}\n </div>\n </CardContent>\n </Card>\n );\n }\n);\nStatsCard.displayName = \"StatsCard\";\n\nexport { StatsCard, statsCardVariants };"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;AAMA,MAAM,iBAAiB,GAAG,GAAG,CAC3B,0BAA0B,EAC1B;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,mBAAmB;AAC9B,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,4CAA4C;AACrD,YAAA,SAAS,EAAE,gDAAgD;AAC3D,YAAA,OAAO,EAAE,4CAA4C;AACrD,YAAA,OAAO,EAAE,4CAA4C;AACrD,YAAA,MAAM,EAAE,0CAA0C;AACnD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAkBH,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAChC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;AAC1E,IAAA,MAAM,YAAY,GAAG,CAAC,SAAyB,KAAI;QACjD,QAAQ,SAAS;AACf,YAAA,KAAK,IAAI;AACP,gBAAA,OAAOA,IAAC,UAAU,EAAA,EAAC,SAAS,EAAC,SAAS,GAAG;AAC3C,YAAA,KAAK,MAAM;AACT,gBAAA,OAAOA,IAAC,YAAY,EAAA,EAAC,SAAS,EAAC,SAAS,GAAG;AAC7C,YAAA;AACE,gBAAA,OAAOA,IAAC,KAAK,EAAA,EAAC,SAAS,EAAC,SAAS,GAAG;;AAE1C,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,SAAyB,KAAI;QAClD,IAAI,OAAO,KAAK,UAAU;AAAE,YAAA,OAAO,eAAe;QAElD,QAAQ,SAAS;AACf,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,wCAAwC;AACjD,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,sCAAsC;AAC/C,YAAA;AACE,gBAAA,OAAO,kCAAkC;;AAE/C,IAAA,CAAC;IAED,QACEA,IAAC,IAAI,EAAA,EACH,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAC/D,OAAO,EAAC,MAAM,EAAA,GACV,KAAK,EAAA,QAAA,EAETA,GAAA,CAAC,WAAW,EAAA,EAAC,SAAS,EAAC,KAAK,EAAA,QAAA,EAC1BC,cAAK,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAA,CAChDA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAA,CACrBD,WAAG,SAAS,EAAE,EAAE,CACd,qBAAqB,EACrB,OAAO,KAAK,UAAU,GAAG,eAAe,GAAG,kCAAkC,CAC9E,EAAA,QAAA,EACE,KAAK,GACJ,EACJC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,MAAM,aACnBD,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAE,EAAE,CACd,oBAAoB,EACpB,OAAO,KAAK,UAAU,GAAG,YAAY,GAAG,+BAA+B,CACxE,EAAA,QAAA,EACE,KAAK,GACJ,EACH,KAAK,KACJC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAChB,sCAAsC,EACtC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAC/B,EAAA,QAAA,EAAA,CACE,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,EAC9BD,wBAAO,KAAK,CAAC,KAAK,EAAA,CAAQ,EACzB,KAAK,CAAC,KAAK,KACVA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,EAAE,CACjB,OAAO,KAAK,UAAU,GAAG,eAAe,GAAG,kCAAkC,CAC9E,YACE,KAAK,CAAC,KAAK,EAAA,CACP,CACR,IACG,CACP,CAAA,EAAA,CACG,IACF,EACL,IAAI,KACHA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAChB,kBAAkB,EAClB,OAAO,KAAK,UAAU,GAAG,aAAa,GAAG,8BAA8B,CACxE,YACE,IAAI,EAAA,CACD,CACP,CAAA,EAAA,CACG,EAAA,CACM,EAAA,CACT;AAEX,CAAC;AAEH,SAAS,CAAC,WAAW,GAAG,WAAW;;;;"}
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { cn } from '../../utils/cn.js';
5
5
 
6
- const switchVariants = cva("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 focus-visible:ring-offset-white disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary-600 data-[state=unchecked]:bg-gray-200", {
6
+ const switchVariants = cva("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-900 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary-600 dark:data-[state=checked]:bg-primary-500 data-[state=unchecked]:bg-gray-200 dark:data-[state=unchecked]:bg-gray-700", {
7
7
  variants: {
8
8
  size: {
9
9
  sm: "h-5 w-9",
@@ -15,7 +15,7 @@ const switchVariants = cva("peer inline-flex h-6 w-11 shrink-0 cursor-pointer it
15
15
  size: "md",
16
16
  },
17
17
  });
18
- const switchThumbVariants = cva("pointer-events-none block rounded-full bg-white shadow-lg ring-0 transition-transform", {
18
+ const switchThumbVariants = cva("pointer-events-none block rounded-full bg-white dark:bg-gray-100 shadow-lg ring-0 transition-transform", {
19
19
  variants: {
20
20
  size: {
21
21
  sm: "h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0",
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","sources":["../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst switchVariants = cva(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 focus-visible:ring-offset-white disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary-600 data-[state=unchecked]:bg-gray-200\",\n {\n variants: {\n size: {\n sm: \"h-5 w-9\",\n md: \"h-6 w-11\",\n lg: \"h-7 w-13\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nconst switchThumbVariants = cva(\n \"pointer-events-none block rounded-full bg-white shadow-lg ring-0 transition-transform\",\n {\n variants: {\n size: {\n sm: \"h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\",\n md: \"h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n lg: \"h-6 w-6 data-[state=checked]:translate-x-6 data-[state=unchecked]:translate-x-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nexport interface SwitchProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'>,\n VariantProps<typeof switchVariants> {\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nconst Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n ({ className, size, checked = false, onCheckedChange, ...props }, ref) => {\n const handleClick = () => {\n onCheckedChange?.(!checked);\n };\n\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n data-state={checked ? \"checked\" : \"unchecked\"}\n className={cn(switchVariants({ size }), className)}\n onClick={handleClick}\n ref={ref}\n {...props}\n >\n <span\n data-state={checked ? \"checked\" : \"unchecked\"}\n className={cn(switchThumbVariants({ size }))}\n />\n </button>\n );\n }\n);\nSwitch.displayName = \"Switch\";\n\nexport { Switch, switchVariants };"],"names":["_jsx"],"mappings":";;;;;AAIA,MAAM,cAAc,GAAG,GAAG,CACxB,6XAA6X,EAC7X;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACf,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGH,MAAM,mBAAmB,GAAG,GAAG,CAC7B,uFAAuF,EACvF;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,iFAAiF;AACrF,YAAA,EAAE,EAAE,iFAAiF;AACrF,YAAA,EAAE,EAAE,iFAAiF;AACtF,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA,CACF;AASD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IACvE,MAAM,WAAW,GAAG,MAAK;AACvB,QAAA,eAAe,GAAG,CAAC,OAAO,CAAC;AAC7B,IAAA,CAAC;AAED,IAAA,QACEA,GAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,EAAA,cAAA,EACC,OAAO,EAAA,YAAA,EACT,OAAO,GAAG,SAAS,GAAG,WAAW,EAC7C,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAClD,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,EAAA,QAAA,EAETA,4BACc,OAAO,GAAG,SAAS,GAAG,WAAW,EAC7C,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAA,CAC5C,EAAA,CACK;AAEb,CAAC;AAEH,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;"}
1
+ {"version":3,"file":"Switch.js","sources":["../../../src/components/Switch/Switch.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst switchVariants = cva(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-900 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary-600 dark:data-[state=checked]:bg-primary-500 data-[state=unchecked]:bg-gray-200 dark:data-[state=unchecked]:bg-gray-700\",\n {\n variants: {\n size: {\n sm: \"h-5 w-9\",\n md: \"h-6 w-11\",\n lg: \"h-7 w-13\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nconst switchThumbVariants = cva(\n \"pointer-events-none block rounded-full bg-white dark:bg-gray-100 shadow-lg ring-0 transition-transform\",\n {\n variants: {\n size: {\n sm: \"h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0\",\n md: \"h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n lg: \"h-6 w-6 data-[state=checked]:translate-x-6 data-[state=unchecked]:translate-x-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nexport interface SwitchProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'>,\n VariantProps<typeof switchVariants> {\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n}\n\nconst Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n ({ className, size, checked = false, onCheckedChange, ...props }, ref) => {\n const handleClick = () => {\n onCheckedChange?.(!checked);\n };\n\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n data-state={checked ? \"checked\" : \"unchecked\"}\n className={cn(switchVariants({ size }), className)}\n onClick={handleClick}\n ref={ref}\n {...props}\n >\n <span\n data-state={checked ? \"checked\" : \"unchecked\"}\n className={cn(switchThumbVariants({ size }))}\n />\n </button>\n );\n }\n);\nSwitch.displayName = \"Switch\";\n\nexport { Switch, switchVariants };"],"names":["_jsx"],"mappings":";;;;;AAIA,MAAM,cAAc,GAAG,GAAG,CACxB,0hBAA0hB,EAC1hB;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACf,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGH,MAAM,mBAAmB,GAAG,GAAG,CAC7B,wGAAwG,EACxG;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,iFAAiF;AACrF,YAAA,EAAE,EAAE,iFAAiF;AACrF,YAAA,EAAE,EAAE,iFAAiF;AACtF,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA,CACF;AASD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IACvE,MAAM,WAAW,GAAG,MAAK;AACvB,QAAA,eAAe,GAAG,CAAC,OAAO,CAAC;AAC7B,IAAA,CAAC;AAED,IAAA,QACEA,GAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,EAAA,cAAA,EACC,OAAO,EAAA,YAAA,EACT,OAAO,GAAG,SAAS,GAAG,WAAW,EAC7C,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAClD,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,EAAA,QAAA,EAETA,4BACc,OAAO,GAAG,SAAS,GAAG,WAAW,EAC7C,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAA,CAC5C,EAAA,CACK;AAEb,CAAC;AAEH,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;"}
@@ -3,12 +3,12 @@ import * as React from 'react';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { cn } from '../../utils/cn.js';
5
5
 
6
- const tabsListVariants = cva("inline-flex h-10 items-center justify-center rounded-md bg-gray-100 p-1 text-gray-500", {
6
+ const tabsListVariants = cva("inline-flex h-10 items-center justify-center rounded-md bg-gray-100 dark:bg-gray-800 p-1 text-gray-500 dark:text-gray-400", {
7
7
  variants: {
8
8
  variant: {
9
- default: "bg-gray-100",
9
+ default: "bg-gray-100 dark:bg-gray-800",
10
10
  pills: "bg-transparent gap-2",
11
- underline: "bg-transparent border-b border-gray-200",
11
+ underline: "bg-transparent border-b border-gray-200 dark:border-gray-800",
12
12
  },
13
13
  },
14
14
  defaultVariants: {
@@ -18,9 +18,9 @@ const tabsListVariants = cva("inline-flex h-10 items-center justify-center round
18
18
  const tabsTriggerVariants = cva("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-white transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", {
19
19
  variants: {
20
20
  variant: {
21
- default: "data-[state=active]:bg-white data-[state=active]:text-gray-950 data-[state=active]:shadow-sm",
22
- pills: "data-[state=active]:bg-primary-100 data-[state=active]:text-primary-700 hover:bg-gray-100",
23
- underline: "data-[state=active]:border-b-2 data-[state=active]:border-primary-600 data-[state=active]:text-primary-600 hover:text-gray-900 rounded-none border-b-2 border-transparent",
21
+ default: "data-[state=active]:bg-white dark:data-[state=active]:bg-gray-700 data-[state=active]:text-gray-950 dark:data-[state=active]:text-white data-[state=active]:shadow-sm",
22
+ pills: "data-[state=active]:bg-primary-100 dark:data-[state=active]:bg-primary-900/30 data-[state=active]:text-primary-700 dark:data-[state=active]:text-primary-400 hover:bg-gray-100 dark:hover:bg-gray-800",
23
+ underline: "data-[state=active]:border-b-2 data-[state=active]:border-primary-600 dark:data-[state=active]:border-primary-500 data-[state=active]:text-primary-600 dark:data-[state=active]:text-primary-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-none border-b-2 border-transparent",
24
24
  },
25
25
  },
26
26
  defaultVariants: {
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst tabsListVariants = cva(\n \"inline-flex h-10 items-center justify-center rounded-md bg-gray-100 p-1 text-gray-500\",\n {\n variants: {\n variant: {\n default: \"bg-gray-100\",\n pills: \"bg-transparent gap-2\",\n underline: \"bg-transparent border-b border-gray-200\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nconst tabsTriggerVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-white transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"data-[state=active]:bg-white data-[state=active]:text-gray-950 data-[state=active]:shadow-sm\",\n pills: \"data-[state=active]:bg-primary-100 data-[state=active]:text-primary-700 hover:bg-gray-100\",\n underline: \"data-[state=active]:border-b-2 data-[state=active]:border-primary-600 data-[state=active]:text-primary-600 hover:text-gray-900 rounded-none border-b-2 border-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ninterface TabsContextValue {\n value: string;\n onValueChange: (value: string) => void;\n variant?: VariantProps<typeof tabsListVariants>[\"variant\"];\n}\n\nconst TabsContext = React.createContext<TabsContextValue | undefined>(undefined);\n\ninterface TabsProps extends VariantProps<typeof tabsListVariants> {\n value: string;\n onValueChange: (value: string) => void;\n children: React.ReactNode;\n className?: string;\n}\n\nconst Tabs: React.FC<TabsProps> = ({ value, onValueChange, variant, children, className }) => {\n return (\n <TabsContext.Provider value={{ value, onValueChange, variant }}>\n <div className={cn(\"w-full\", className)}>{children}</div>\n </TabsContext.Provider>\n );\n};\n\nconst TabsList = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const context = React.useContext(TabsContext);\n if (!context) throw new Error(\"TabsList must be used within Tabs\");\n\n return (\n <div\n ref={ref}\n className={cn(tabsListVariants({ variant: context.variant }), className)}\n {...props}\n />\n );\n});\nTabsList.displayName = \"TabsList\";\n\ninterface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({ className, value, ...props }, ref) => {\n const context = React.useContext(TabsContext);\n if (!context) throw new Error(\"TabsTrigger must be used within Tabs\");\n\n const isActive = context.value === value;\n\n return (\n <button\n ref={ref}\n className={cn(\n tabsTriggerVariants({ variant: context.variant }),\n className\n )}\n data-state={isActive ? \"active\" : \"inactive\"}\n onClick={() => context.onValueChange(value)}\n {...props}\n />\n );\n }\n);\nTabsTrigger.displayName = \"TabsTrigger\";\n\ninterface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nconst TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n ({ className, value, ...props }, ref) => {\n const context = React.useContext(TabsContext);\n if (!context) throw new Error(\"TabsContent must be used within Tabs\");\n\n if (context.value !== value) return null;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n );\n }\n);\nTabsContent.displayName = \"TabsContent\";\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants, tabsTriggerVariants };"],"names":["_jsx"],"mappings":";;;;;AAIA,MAAM,gBAAgB,GAAG,GAAG,CAC1B,uFAAuF,EACvF;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,KAAK,EAAE,sBAAsB;AAC7B,YAAA,SAAS,EAAE,yCAAyC;AACrD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAGH,MAAM,mBAAmB,GAAG,GAAG,CAC7B,mSAAmS,EACnS;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,8FAA8F;AACvG,YAAA,KAAK,EAAE,2FAA2F;AAClG,YAAA,SAAS,EAAE,2KAA2K;AACvL,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AASH,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAA+B,SAAS,CAAC;AAShF,MAAM,IAAI,GAAwB,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAI;AAC3F,IAAA,QACEA,GAAA,CAAC,WAAW,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,EAAA,QAAA,EAC5DA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAO,EAAA,CACpC;AAE3B;AAEA,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAG/B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC;AAC7C,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC;IAElE,QACEA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,EAAA,GACpE,KAAK,EAAA,CACT;AAEN,CAAC;AACD,QAAQ,CAAC,WAAW,GAAG,UAAU;AAMjC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAClC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC;AAC7C,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AAErE,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,KAAK;IAExC,QACEA,gBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,EACjD,SAAS,CACV,EAAA,YAAA,EACW,QAAQ,GAAG,QAAQ,GAAG,UAAU,EAC5C,OAAO,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAA,GACvC,KAAK,EAAA,CACT;AAEN,CAAC;AAEH,WAAW,CAAC,WAAW,GAAG,aAAa;AAMvC,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAClC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC;AAC7C,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC;AAErE,IAAA,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;AAAE,QAAA,OAAO,IAAI;AAExC,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,mIAAmI,EACnI,SAAS,CACV,KACG,KAAK,EAAA,CACT;AAEN,CAAC;AAEH,WAAW,CAAC,WAAW,GAAG,aAAa;;;;"}
1
+ {"version":3,"file":"Tabs.js","sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst tabsListVariants = cva(\n \"inline-flex h-10 items-center justify-center rounded-md bg-gray-100 dark:bg-gray-800 p-1 text-gray-500 dark:text-gray-400\",\n {\n variants: {\n variant: {\n default: \"bg-gray-100 dark:bg-gray-800\",\n pills: \"bg-transparent gap-2\",\n underline: \"bg-transparent border-b border-gray-200 dark:border-gray-800\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nconst tabsTriggerVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-white transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"data-[state=active]:bg-white dark:data-[state=active]:bg-gray-700 data-[state=active]:text-gray-950 dark:data-[state=active]:text-white data-[state=active]:shadow-sm\",\n pills: \"data-[state=active]:bg-primary-100 dark:data-[state=active]:bg-primary-900/30 data-[state=active]:text-primary-700 dark:data-[state=active]:text-primary-400 hover:bg-gray-100 dark:hover:bg-gray-800\",\n underline: \"data-[state=active]:border-b-2 data-[state=active]:border-primary-600 dark:data-[state=active]:border-primary-500 data-[state=active]:text-primary-600 dark:data-[state=active]:text-primary-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-none border-b-2 border-transparent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ninterface TabsContextValue {\n value: string;\n onValueChange: (value: string) => void;\n variant?: VariantProps<typeof tabsListVariants>[\"variant\"];\n}\n\nconst TabsContext = React.createContext<TabsContextValue | undefined>(undefined);\n\ninterface TabsProps extends VariantProps<typeof tabsListVariants> {\n value: string;\n onValueChange: (value: string) => void;\n children: React.ReactNode;\n className?: string;\n}\n\nconst Tabs: React.FC<TabsProps> = ({ value, onValueChange, variant, children, className }) => {\n return (\n <TabsContext.Provider value={{ value, onValueChange, variant }}>\n <div className={cn(\"w-full\", className)}>{children}</div>\n </TabsContext.Provider>\n );\n};\n\nconst TabsList = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const context = React.useContext(TabsContext);\n if (!context) throw new Error(\"TabsList must be used within Tabs\");\n\n return (\n <div\n ref={ref}\n className={cn(tabsListVariants({ variant: context.variant }), className)}\n {...props}\n />\n );\n});\nTabsList.displayName = \"TabsList\";\n\ninterface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n ({ className, value, ...props }, ref) => {\n const context = React.useContext(TabsContext);\n if (!context) throw new Error(\"TabsTrigger must be used within Tabs\");\n\n const isActive = context.value === value;\n\n return (\n <button\n ref={ref}\n className={cn(\n tabsTriggerVariants({ variant: context.variant }),\n className\n )}\n data-state={isActive ? \"active\" : \"inactive\"}\n onClick={() => context.onValueChange(value)}\n {...props}\n />\n );\n }\n);\nTabsTrigger.displayName = \"TabsTrigger\";\n\ninterface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string;\n}\n\nconst TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n ({ className, value, ...props }, ref) => {\n const context = React.useContext(TabsContext);\n if (!context) throw new Error(\"TabsContent must be used within Tabs\");\n\n if (context.value !== value) return null;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n );\n }\n);\nTabsContent.displayName = \"TabsContent\";\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants, tabsTriggerVariants };"],"names":["_jsx"],"mappings":"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"}
@@ -3,12 +3,12 @@ import * as React from 'react';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { cn } from '../../utils/cn.js';
5
5
 
6
- const textareaVariants = cva("flex min-h-[80px] w-full rounded-md border bg-white px-3 py-2 text-sm ring-offset-white placeholder:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", {
6
+ const textareaVariants = cva("flex min-h-[80px] w-full rounded-md border bg-white dark:bg-gray-900 dark:text-white px-3 py-2 text-sm ring-offset-white dark:ring-offset-gray-900 placeholder:text-gray-500 dark:placeholder:text-gray-400 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", {
7
7
  variants: {
8
8
  variant: {
9
- default: "border-gray-300",
10
- error: "border-danger-500 focus-visible:ring-danger-500",
11
- success: "border-success-500 focus-visible:ring-success-500",
9
+ default: "border-gray-300 dark:border-gray-700",
10
+ error: "border-danger-500 dark:border-danger-500 focus-visible:ring-danger-500",
11
+ success: "border-success-500 dark:border-success-500 focus-visible:ring-success-500",
12
12
  },
13
13
  },
14
14
  defaultVariants: {
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.js","sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst textareaVariants = cva(\n \"flex min-h-[80px] w-full rounded-md border bg-white px-3 py-2 text-sm ring-offset-white placeholder:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border-gray-300\",\n error: \"border-danger-500 focus-visible:ring-danger-500\",\n success: \"border-success-500 focus-visible:ring-success-500\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n VariantProps<typeof textareaVariants> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, variant, ...props }, ref) => {\n return (\n <textarea\n className={cn(textareaVariants({ variant, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea, textareaVariants };"],"names":["_jsx"],"mappings":";;;;;AAIA,MAAM,gBAAgB,GAAG,GAAG,CAC1B,8QAA8Q,EAC9Q;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,KAAK,EAAE,iDAAiD;AACxD,YAAA,OAAO,EAAE,mDAAmD;AAC7D,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAOH,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAC/B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IACxC,QACEA,kBACE,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,EACvD,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,EAAA,CACT;AAEN,CAAC;AAEH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
1
+ {"version":3,"file":"Textarea.js","sources":["../../../src/components/Textarea/Textarea.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst textareaVariants = cva(\n \"flex min-h-[80px] w-full rounded-md border bg-white dark:bg-gray-900 dark:text-white px-3 py-2 text-sm ring-offset-white dark:ring-offset-gray-900 placeholder:text-gray-500 dark:placeholder:text-gray-400 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border-gray-300 dark:border-gray-700\",\n error: \"border-danger-500 dark:border-danger-500 focus-visible:ring-danger-500\",\n success: \"border-success-500 dark:border-success-500 focus-visible:ring-success-500\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n VariantProps<typeof textareaVariants> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, variant, ...props }, ref) => {\n return (\n <textarea\n className={cn(textareaVariants({ variant, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea, textareaVariants };"],"names":["_jsx"],"mappings":";;;;;AAIA,MAAM,gBAAgB,GAAG,GAAG,CAC1B,4YAA4Y,EAC5Y;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,sCAAsC;AAC/C,YAAA,KAAK,EAAE,wEAAwE;AAC/E,YAAA,OAAO,EAAE,2EAA2E;AACrF,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAOH,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAC/B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;IACxC,QACEA,kBACE,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,EACvD,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,EAAA,CACT;AAEN,CAAC;AAEH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
@@ -7,11 +7,11 @@ import { cn } from '../../utils/cn.js';
7
7
  const toastVariants = cva("flex items-center gap-2 p-4 rounded-lg shadow-lg border max-w-md", {
8
8
  variants: {
9
9
  variant: {
10
- default: "bg-white border-gray-200 text-gray-900",
11
- success: "bg-success-50 border-success-200 text-success-800",
12
- error: "bg-danger-50 border-danger-200 text-danger-800",
13
- warning: "bg-warning-50 border-warning-200 text-warning-800",
14
- info: "bg-primary-50 border-primary-200 text-primary-800",
10
+ default: "bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-800 text-gray-900 dark:text-white",
11
+ success: "bg-success-50 dark:bg-success-900/30 border-success-200 dark:border-success-800 text-success-800 dark:text-success-400",
12
+ error: "bg-danger-50 dark:bg-danger-900/30 border-danger-200 dark:border-danger-800 text-danger-800 dark:text-danger-400",
13
+ warning: "bg-warning-50 dark:bg-warning-900/30 border-warning-200 dark:border-warning-800 text-warning-800 dark:text-warning-400",
14
+ info: "bg-primary-50 dark:bg-primary-900/30 border-primary-200 dark:border-primary-800 text-primary-800 dark:text-primary-400",
15
15
  },
16
16
  },
17
17
  defaultVariants: {
@@ -64,7 +64,7 @@ const Toast = () => {
64
64
  variant: t.type === "success" ? "success" :
65
65
  t.type === "error" ? "error" : "default"
66
66
  })), children: [getIcon(t.type === "success" ? "success" :
67
- t.type === "error" ? "error" : "default") || icon, jsx("div", { className: "flex-1 text-sm font-medium", children: message }), jsx("button", { onClick: () => toast.dismiss(t.id), className: "inline-flex h-5 w-5 items-center justify-center rounded-full hover:bg-black/10", children: jsx(X, { className: "h-3 w-3" }) })] })) })) }));
67
+ t.type === "error" ? "error" : "default") || icon, jsx("div", { className: "flex-1 text-sm font-medium", children: message }), jsx("button", { onClick: () => toast.dismiss(t.id), className: "inline-flex h-5 w-5 items-center justify-center rounded-full hover:bg-black/10 dark:hover:bg-white/10 transition-colors", children: jsx(X, { className: "h-3 w-3" }) })] })) })) }));
68
68
  };
69
69
 
70
70
  export { Toast, showToast, toastVariants };
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sources":["../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import * as React from \"react\";\nimport toast, { Toaster, ToastBar } from \"react-hot-toast\";\nimport { X, CheckCircle, AlertCircle, Info, AlertTriangle } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst toastVariants = cva(\n \"flex items-center gap-2 p-4 rounded-lg shadow-lg border max-w-md\",\n {\n variants: {\n variant: {\n default: \"bg-white border-gray-200 text-gray-900\",\n success: \"bg-success-50 border-success-200 text-success-800\",\n error: \"bg-danger-50 border-danger-200 text-danger-800\",\n warning: \"bg-warning-50 border-warning-200 text-warning-800\",\n info: \"bg-primary-50 border-primary-200 text-primary-800\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ninterface ToastOptions {\n variant?: VariantProps<typeof toastVariants>[\"variant\"];\n duration?: number;\n}\n\nconst getIcon = (variant: string) => {\n switch (variant) {\n case \"success\":\n return <CheckCircle className=\"h-5 w-5 text-success-600\" />;\n case \"error\":\n return <AlertCircle className=\"h-5 w-5 text-danger-600\" />;\n case \"warning\":\n return <AlertTriangle className=\"h-5 w-5 text-warning-600\" />;\n case \"info\":\n return <Info className=\"h-5 w-5 text-primary-600\" />;\n default:\n return null;\n }\n};\n\nconst showToast = {\n success: (message: string, options?: ToastOptions) =>\n toast.success(message, {\n duration: options?.duration || 4000,\n }),\n error: (message: string, options?: ToastOptions) =>\n toast.error(message, {\n duration: options?.duration || 5000,\n }),\n warning: (message: string, options?: ToastOptions) =>\n toast(message, {\n icon: \"⚠️\",\n duration: options?.duration || 4000,\n }),\n info: (message: string, options?: ToastOptions) =>\n toast(message, {\n icon: \"ℹ️\",\n duration: options?.duration || 4000,\n }),\n default: (message: string, options?: ToastOptions) =>\n toast(message, {\n duration: options?.duration || 4000,\n }),\n};\n\nconst Toast: React.FC = () => {\n return (\n <Toaster\n position=\"top-right\"\n toastOptions={{\n duration: 4000,\n className: \"\",\n style: {\n background: \"transparent\",\n boxShadow: \"none\",\n padding: 0,\n },\n }}\n >\n {(t) => (\n <ToastBar toast={t}>\n {({ icon, message }) => (\n <div\n className={cn(\n toastVariants({\n variant: t.type === \"success\" ? \"success\" : \n t.type === \"error\" ? \"error\" : \"default\"\n })\n )}\n >\n {getIcon(t.type === \"success\" ? \"success\" : \n t.type === \"error\" ? \"error\" : \"default\") || icon}\n <div className=\"flex-1 text-sm font-medium\">{message}</div>\n <button\n onClick={() => toast.dismiss(t.id)}\n className=\"inline-flex h-5 w-5 items-center justify-center rounded-full hover:bg-black/10\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </div>\n )}\n </ToastBar>\n )}\n </Toaster>\n );\n};\n\nexport { Toast, showToast, toastVariants };"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"Toast.js","sources":["../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import * as React from \"react\";\nimport toast, { Toaster, ToastBar } from \"react-hot-toast\";\nimport { X, CheckCircle, AlertCircle, Info, AlertTriangle } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst toastVariants = cva(\n \"flex items-center gap-2 p-4 rounded-lg shadow-lg border max-w-md\",\n {\n variants: {\n variant: {\n default: \"bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-800 text-gray-900 dark:text-white\",\n success: \"bg-success-50 dark:bg-success-900/30 border-success-200 dark:border-success-800 text-success-800 dark:text-success-400\",\n error: \"bg-danger-50 dark:bg-danger-900/30 border-danger-200 dark:border-danger-800 text-danger-800 dark:text-danger-400\",\n warning: \"bg-warning-50 dark:bg-warning-900/30 border-warning-200 dark:border-warning-800 text-warning-800 dark:text-warning-400\",\n info: \"bg-primary-50 dark:bg-primary-900/30 border-primary-200 dark:border-primary-800 text-primary-800 dark:text-primary-400\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ninterface ToastOptions {\n variant?: VariantProps<typeof toastVariants>[\"variant\"];\n duration?: number;\n}\n\nconst getIcon = (variant: string) => {\n switch (variant) {\n case \"success\":\n return <CheckCircle className=\"h-5 w-5 text-success-600\" />;\n case \"error\":\n return <AlertCircle className=\"h-5 w-5 text-danger-600\" />;\n case \"warning\":\n return <AlertTriangle className=\"h-5 w-5 text-warning-600\" />;\n case \"info\":\n return <Info className=\"h-5 w-5 text-primary-600\" />;\n default:\n return null;\n }\n};\n\nconst showToast = {\n success: (message: string, options?: ToastOptions) =>\n toast.success(message, {\n duration: options?.duration || 4000,\n }),\n error: (message: string, options?: ToastOptions) =>\n toast.error(message, {\n duration: options?.duration || 5000,\n }),\n warning: (message: string, options?: ToastOptions) =>\n toast(message, {\n icon: \"⚠️\",\n duration: options?.duration || 4000,\n }),\n info: (message: string, options?: ToastOptions) =>\n toast(message, {\n icon: \"ℹ️\",\n duration: options?.duration || 4000,\n }),\n default: (message: string, options?: ToastOptions) =>\n toast(message, {\n duration: options?.duration || 4000,\n }),\n};\n\nconst Toast: React.FC = () => {\n return (\n <Toaster\n position=\"top-right\"\n toastOptions={{\n duration: 4000,\n className: \"\",\n style: {\n background: \"transparent\",\n boxShadow: \"none\",\n padding: 0,\n },\n }}\n >\n {(t) => (\n <ToastBar toast={t}>\n {({ icon, message }) => (\n <div\n className={cn(\n toastVariants({\n variant: t.type === \"success\" ? \"success\" : \n t.type === \"error\" ? \"error\" : \"default\"\n })\n )}\n >\n {getIcon(t.type === \"success\" ? \"success\" : \n t.type === \"error\" ? \"error\" : \"default\") || icon}\n <div className=\"flex-1 text-sm font-medium\">{message}</div>\n <button\n onClick={() => toast.dismiss(t.id)}\n className=\"inline-flex h-5 w-5 items-center justify-center rounded-full hover:bg-black/10 dark:hover:bg-white/10 transition-colors\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </div>\n )}\n </ToastBar>\n )}\n </Toaster>\n );\n};\n\nexport { Toast, showToast, toastVariants };"],"names":["_jsx","_jsxs"],"mappings":"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"}